diff --git a/gitConnectorAwsLabs.json b/gitConnectorAwsLabs.json new file mode 100644 index 0000000..1d5e0b1 --- /dev/null +++ b/gitConnectorAwsLabs.json @@ -0,0 +1,8 @@ +{ + "fileType": "structure", + "type": "filesystem", + "companyName": "prancer", + "gitProvider": "https://github.com/awslabs/aws-cloudformation-templates.git", + "branchName": "master", + "private": false +} \ No newline at end of file diff --git a/gitConnectorAwsTerraHashicorp.json b/gitConnectorAwsTerraHashicorp.json new file mode 100644 index 0000000..655a25c --- /dev/null +++ b/gitConnectorAwsTerraHashicorp.json @@ -0,0 +1,8 @@ +{ + "fileType": "structure", + "type": "filesystem", + "companyName": "prancer", + "gitProvider": "https://github.com/hashicorp/terraform-provider-aws.git", + "branchName": "main", + "private": false +} \ No newline at end of file diff --git a/gitConnectorAzureQuickStart.json b/gitConnectorAzureQuickStart.json new file mode 100644 index 0000000..7332339 --- /dev/null +++ b/gitConnectorAzureQuickStart.json @@ -0,0 +1,8 @@ +{ + "fileType": "structure", + "type": "filesystem", + "companyName": "prancer", + "gitProvider": "https://github.com/Azure/azure-quickstart-templates.git", + "branchName": "master", + "private": false +} \ No newline at end of file diff --git a/gitConnectorAzureTerraHashicorp.json b/gitConnectorAzureTerraHashicorp.json new file mode 100644 index 0000000..1acf307 --- /dev/null +++ b/gitConnectorAzureTerraHashicorp.json @@ -0,0 +1,8 @@ +{ + "fileType": "structure", + "type": "filesystem", + "companyName": "prancer", + "gitProvider": "https://github.com/hashicorp/terraform-provider-azurerm.git", + "branchName": "main", + "private": false +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/master-snapshot.json b/validation/scenario-aws-Labs/master-snapshot.json new file mode 100644 index 0000000..4dff344 --- /dev/null +++ b/validation/scenario-aws-Labs/master-snapshot.json @@ -0,0 +1,14 @@ +{ + "$schema": "", + "contentVersion": "1.0.0.0", + "fileType": "masterSnapshot", + "connector": "gitConnectorRemote", + "remoteFile": "aws/iac/master-snapshot.json", + "connectorUsers": [ + { + "id": "USER_1", + "testUser": "Shahin", + "source": "gitConnectorAwsLabs" + } + ] + } \ No newline at end of file diff --git a/validation/scenario-aws-Labs/master-snapshot_gen.json b/validation/scenario-aws-Labs/master-snapshot_gen.json new file mode 100644 index 0000000..578ec0d --- /dev/null +++ b/validation/scenario-aws-Labs/master-snapshot_gen.json @@ -0,0 +1,1852 @@ +{ + "$schema": "", + "contentVersion": "1.0.0.0", + "fileType": "snapshot", + "snapshots": [ + { + "type": "filesystem", + "connectorUser": "USER_1", + "nodes": [ + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/AutoScaling/AutoScalingMultiAZWithNotifications.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT1", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::autoscaling::scalingpolicy", + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::elasticloadbalancing::loadbalancer", + "aws::sns::topic", + "aws::cloudwatch::alarm" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/AutoScaling/AutoScalingRollingUpdates.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT2", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::instanceprofile", + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::elasticloadbalancing::loadbalancer" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/AutoScaling/AutoScalingScheduledAction.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT3", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::elasticloadbalancing::loadbalancer", + "aws::autoscaling::scheduledaction" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/Cloud9/C9.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT4", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::cloud9::environmentec2" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/Count/template.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT5", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::cloudformation::macro", + "aws::serverless::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/Count/test_2.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT6", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/ExecutionRoleBuilder/example.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT7", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/Public-and-Private-Subnet-per-AZ/Create-Macro.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT8", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::lambda::permission", + "aws::cloudformation::macro", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/Public-and-Private-Subnet-per-AZ/Create-Stack.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT9", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/PyPlate/python.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT10", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::lambda::permission", + "aws::cloudformation::macro", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/PyPlate/python_example.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT11", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/StringFunctions/string.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT12", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::lambda::permission", + "aws::cloudformation::macro", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/StringFunctions/string_example.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT13", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/Elasticache-snapshot.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT14", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::elasticache::replicationgroup", + "aws::lambda::permission", + "aws::lambda::function", + "aws::elasticache::parametergroup", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "custom::region", + "aws::elasticache::subnetgroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/FindInMap_Inside_Sub.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT15", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/HostnameChangeRHEL-Metadata.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT16", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/HostnameChangeRHEL-Userdata.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT17", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/Config/Config.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT18", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::config::configurationrecorder", + "aws::s3::bucket", + "aws::config::deliverychannel", + "aws::iam::role", + "aws::ec2::volume", + "aws::config::configrule", + "aws::lambda::permission", + "aws::lambda::function", + "aws::sns::topicpolicy", + "aws::sns::topic" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/DMS/DMSAuroraToS3FullLoadAndOngoingReplication.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT19", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbclusterparametergroup", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::rds::dbcluster", + "aws::ec2::routetable", + "aws::rds::dbsubnetgroup", + "aws::ec2::securitygroup", + "aws::s3::bucket", + "aws::iam::role", + "aws::ec2::route", + "aws::dms::replicationsubnetgroup", + "aws::ec2::internetgateway", + "aws::dms::endpoint", + "aws::rds::dbinstance", + "aws::ec2::subnetroutetableassociation", + "aws::dms::replicationinstance", + "aws::ec2::vpcgatewayattachment", + "aws::dms::replicationtask" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/DynamoDB/DynamoDB_Secondary_Indexes.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT20", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::dynamodb::table" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/DynamoDB/DynamoDB_Table.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT21", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::dynamodb::table" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EC2/EC2InstanceWithSecurityGroupSample.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT22", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EC2/EC2_Instance_With_Ephemeral_Drives.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT23", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EC2/EIP_With_Association.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT24", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup", + "aws::ec2::eipassociation", + "aws::ec2::eip" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EC2/SingleENIwithMultipleEIPs.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT25", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::eip", + "aws::ec2::eipassociation", + "aws::ec2::networkinterface" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ECS/ECS_Schedule_Example.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT26", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::elasticloadbalancingv2::listenerrule", + "aws::ecs::cluster", + "aws::ecs::service", + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::elasticloadbalancingv2::targetgroup", + "aws::events::rule", + "aws::logs::loggroup", + "aws::applicationautoscaling::scalingpolicy", + "aws::iam::role", + "aws::iam::instanceprofile", + "aws::ec2::securitygroupingress", + "aws::applicationautoscaling::scalabletarget", + "aws::ecs::taskdefinition", + "aws::elasticloadbalancingv2::loadbalancer", + "aws::elasticloadbalancingv2::listener", + "aws::cloudwatch::alarm" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBGuidedAutoScalingRollingUpgrade.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT27", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::instanceprofile", + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::elasticloadbalancing::loadbalancer" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBStickinessSample.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT28", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::elasticloadbalancing::loadbalancer", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBWithLockedDownAutoScaledInstances.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT29", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::elasticloadbalancing::loadbalancer", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELB_Access_Logs_And_Connection_Draining.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT30", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::autoscaling::launchconfiguration", + "aws::autoscaling::autoscalinggroup", + "aws::ec2::securitygroup", + "aws::elasticloadbalancing::loadbalancer", + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/NetworkLoadBalancerWithEIPs.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT31", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::elasticloadbalancingv2::targetgroup", + "aws::elasticloadbalancingv2::listener", + "aws::elasticloadbalancingv2::loadbalancer", + "aws::ec2::eip" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EMR/EMRCLusterGangliaWithSparkOrS3backedHbase.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT32", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::iam::instanceprofile", + "aws::emr::cluster" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EMR/EMRClusterWithAdditioanalSecurityGroups.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT33", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::iam::instanceprofile", + "aws::emr::cluster" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/IAM/IAM_Users_Groups_and_Policies.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT34", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::accesskey", + "aws::iam::usertogroupaddition", + "aws::iam::user", + "aws::iam::policy", + "aws::iam::group" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/NeptuneDB/Neptune.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT35", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::sns::subscription", + "aws::neptune::dbclusterparametergroup", + "aws::neptune::dbinstance", + "aws::neptune::dbparametergroup", + "aws::ec2::securitygroup", + "aws::neptune::dbsubnetgroup", + "aws::iam::role", + "aws::iam::managedpolicy", + "aws::neptune::dbcluster", + "aws::sns::topic", + "aws::cloudwatch::alarm" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/RDS/RDS_MySQL_With_Read_Replica.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT36", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbsecuritygroup", + "aws::ec2::securitygroup", + "aws::rds::dbinstance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/RDS/RDS_PIOPS.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT37", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbinstance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/RDS/RDS_Snapshot_On_Delete.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT38", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbinstance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/RDS/RDS_with_DBParameterGroup.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT39", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbparametergroup", + "aws::rds::dbinstance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-delete-retention-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT40", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-secure-transport-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT41", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-sse-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT42", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT43", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-versioning-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT44", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-policy-for-caa-secure-transport-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT45", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-policy-for-caa-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT46", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/S3_Website_Bucket_With_Retain_On_Delete.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT47", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/S3_Website_With_CloudFront_Distribution.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT48", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::route53::recordset", + "aws::cloudfront::distribution" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ServiceCatalog/Portfolio.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT49", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::servicecatalog::tagoption", + "aws::servicecatalog::portfolio", + "aws::servicecatalog::portfolioshare" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ServiceCatalog/Product.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT50", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::servicecatalog::cloudformationproduct", + "aws::servicecatalog::portfolioproductassociation", + "aws::servicecatalog::tagoptionassociation" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/SNS/SNSTopic.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT51", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::sns::subscription", + "aws::sns::topic" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/SQS/SQSFIFOQueue.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT52", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::sqs::queue" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/SQS/SQSStandardQueue.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT53", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::sqs::queue" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/ADConnector/templates/ADCONNECTOR.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT54", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::vpcdhcpoptionsassociation", + "aws::iam::instanceprofile", + "aws::ec2::securitygroup", + "aws::logs::loggroup", + "aws::iam::role", + "aws::secretsmanager::secret", + "aws::lambda::function", + "custom::adconnectorresource", + "aws::ec2::dhcpoptions" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/inline/amazon_linux.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT55", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/inline/centos.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT56", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/inline/debian.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT57", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/inline/redhat.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT58", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/inline/suse.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT59", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/inline/ubuntu.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT60", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/inline/windows.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT61", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/amazon_linux.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT62", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/centos.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT63", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/debian.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT64", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/redhat.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT65", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/suse.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT66", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/ubuntu.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT67", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/windows.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT68", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AutomateCreatingHanaBackupBucket/CFT/CreateHanaBackupSecureBackut.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT69", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::iam::managedpolicy", + "aws::iam::role", + "aws::kms::alias", + "aws::s3::bucketpolicy", + "aws::kms::key", + "custom::lambdatrig", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-creationpolicy-no-igw.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT70", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::ec2::subnetroutetableassociation" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-creationpolicy.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT71", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::iam::instanceprofile", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-waitcondition-no-igw.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT72", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::cloudformation::waitcondition", + "aws::ec2::subnetroutetableassociation", + "aws::cloudformation::waitconditionhandle" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-waitcondition.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT73", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::iam::instanceprofile", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::cloudformation::waitcondition", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "aws::cloudformation::waitconditionhandle" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFrontCustomOriginLambda@Edge/CloudFront.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT74", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::elasticloadbalancingv2::listenerrule", + "aws::cloudfront::distribution", + "aws::s3::bucket", + "aws::ec2::securitygroup", + "aws::elasticloadbalancingv2::targetgroup", + "aws::iam::role", + "aws::kms::alias", + "aws::ec2::securitygroupingress", + "aws::s3::bucketpolicy", + "aws::kms::key", + "aws::elasticloadbalancingv2::loadbalancer", + "custom::lambdaversion", + "aws::ec2::securitygroupegress", + "aws::elasticloadbalancingv2::listener", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/createVPCInterfaceEndpoint/lambda_vpce_interface.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT75", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "custom::vpceinterface", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/DirectoryADClients/templates/DIRECTORY-AD-CLIENTS.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT76", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ssm::association" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/DirectoryServiceSettings/templates/DIRECTORY_SETTINGS.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT77", + "status": "active", + "validate": true, + "resourceTypes": [ + "custom::directorysettingsresource", + "aws::logs::loggroup", + "aws::iam::role", + "aws::lambda::function", + "aws::sns::topic" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/EC2DomainJoin/EC2-Domain-Join.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT78", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::iam::instanceprofile", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ssm::document" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/HelperNonAmaznAmi/RHEL7_cfn-hup.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT79", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/HelperNonAmaznAmi/ubuntu16.04LTS_cfn-hup.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT80", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/LambaStaticIP/lambda-static.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT81", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::vpcgatewayattachment", + "aws::ec2::internetgateway", + "aws::lambda::function", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::natgateway", + "aws::ec2::eip" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/lambda-backed-cloudformation-custom-resources/get_vpc_main_route_table_id/RouteTable.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT82", + "status": "active", + "validate": true, + "resourceTypes": [ + "custom::routetablelambda", + "aws::ec2::vpc", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::lambda::function", + "aws::ec2::vpcgatewayattachment" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/ManagedAD/templates/MANAGEDAD.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT83", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::directoryservice::microsoftad", + "aws::ec2::vpcdhcpoptionsassociation", + "aws::iam::instanceprofile", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::secretsmanager::secret", + "aws::ec2::dhcpoptions" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/RHEL7_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT84", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/RHEL8_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT85", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu16.04LTS_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT86", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu18.04LTS_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT87", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu20.04LTS_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT88", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/PrefixListResource/Templates/cfn-endpoint-waitcondition.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT89", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::iam::instanceprofile", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "custom::getpl", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::cloudformation::waitcondition", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "aws::cloudformation::waitconditionhandle" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/PrefixListResource/Templates/function-template.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT90", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::logs::loggroup", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/S3AccessLogs/templates/S3AccessLogs.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT91", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/StackSetsResource/Templates/stack-set-template.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT92", + "status": "active", + "validate": true, + "resourceTypes": [ + "custom::stackset" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/StackSetsResource/Templates/stackset-function-template.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT93", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::logs::loggroup", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/StackSetsResource/TestResources/events.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT94", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::sqs::queue", + "aws::dynamodb::table" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/TaggingRootVolumesInEC2/Tagging_Root_volume.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT95", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::ec2::instance", + "aws::iam::instanceprofile" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogs-main.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT96", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::cloudformation::stack" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogsCloudWatch.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT97", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::ec2::flowlog", + "aws::logs::loggroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogsS3.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT98", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::ec2::flowlog", + "aws::s3::bucketpolicy" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/Elasticache-snapshot.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT99", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::elasticache::replicationgroup", + "aws::lambda::permission", + "aws::lambda::function", + "aws::elasticache::parametergroup", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "custom::region", + "aws::elasticache::subnetgroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/HostnameChangeRHEL-Metadata.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT100", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/HostnameChangeRHEL-Userdata.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT101", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/WordPress_Single_Instance.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT102", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/services/EC2/ec2_with_waitcondition_template.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT103", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup", + "aws::cloudformation::waitcondition", + "aws::cloudformation::waitconditionhandle" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/services/EFS/efs_with_automount_to_ec2.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT104", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::autoscaling::scalingpolicy", + "aws::iam::instanceprofile", + "aws::efs::mounttarget", + "aws::autoscaling::autoscalinggroup", + "aws::efs::filesystem", + "aws::ec2::securitygroup", + "aws::autoscaling::launchconfiguration", + "aws::iam::role", + "aws::elasticloadbalancing::loadbalancer", + "aws::cloudwatch::alarm" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/services/Lambda/LambdaSample.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT105", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::lambda::function" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/services/VPC/vpc_template.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT106", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::subnetnetworkaclassociation", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::ec2::networkaclentry", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::cloudformation::waitcondition", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "aws::cloudformation::waitconditionhandle", + "aws::ec2::networkacl", + "aws::ec2::eip" + ] + }, + { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/solutions/read_only_user/read_only_user.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT107", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::policy", + "aws::iam::user", + "aws::iam::managedpolicy" + ] + } + ], + "testUser": "Shahin", + "source": "gitConnectorAwsLabs" + } + ] +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/master-test.json b/validation/scenario-aws-Labs/master-test.json new file mode 100644 index 0000000..0fd2246 --- /dev/null +++ b/validation/scenario-aws-Labs/master-test.json @@ -0,0 +1,8 @@ +{ + "contentVersion": "1.0.0.0", + "notification": [], + "masterSnapshot": "master-snapshot", + "fileType": "mastertest", + "connector": "gitConnectorRemote", + "remoteFile": "aws/iac/master-compliance-test.json" +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT1 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT1 new file mode 100644 index 0000000..5ff402a --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT1 @@ -0,0 +1,939 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/AutoScaling/AutoScalingMultiAZWithNotifications.yaml" + ], + "timestamp": 1642972590271, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/AutoScaling/AutoScalingMultiAZWithNotifications.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT1", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::autoscaling::scalingpolicy", + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::elasticloadbalancing::loadbalancer", + "aws::sns::topic", + "aws::cloudwatch::alarm" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT1", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template AutoScalingMultiAZWithNotifications: Create a multi-az, load balanced and Auto Scaled sample web site running on an Apache Web Server. The application is configured to span all Availability Zones in the region and is Auto-Scaled based on the CPU utilization of the web servers. Notifications will be sent to the operator email address on scaling events. The instances are load balanced with a simple health check against the default web page. **WARNING** This template creates one or more Amazon EC2 instances and an Elastic Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "OperatorEMail": { + "Description": "EMail address to notify if there are any scaling operations", + "Type": "String", + "AllowedPattern": "([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)", + "ConstraintDescription": "must be a valid email address." + }, + "KeyName": { + "Description": "The EC2 Key Pair to allow SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": 9, + "MaxLength": 18, + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "Region2Examples": { + "us-east-1": { + "Examples": "https://s3.amazonaws.com/cloudformation-examples-us-east-1" + }, + "us-west-2": { + "Examples": "https://s3-us-west-2.amazonaws.com/cloudformation-examples-us-west-2" + }, + "us-west-1": { + "Examples": "https://s3-us-west-1.amazonaws.com/cloudformation-examples-us-west-1" + }, + "eu-west-1": { + "Examples": "https://s3-eu-west-1.amazonaws.com/cloudformation-examples-eu-west-1" + }, + "eu-central-1": { + "Examples": "https://s3-eu-central-1.amazonaws.com/cloudformation-examples-eu-central-1" + }, + "ap-southeast-1": { + "Examples": "https://s3-ap-southeast-1.amazonaws.com/cloudformation-examples-ap-southeast-1" + }, + "ap-northeast-1": { + "Examples": "https://s3-ap-northeast-1.amazonaws.com/cloudformation-examples-ap-northeast-1" + }, + "ap-northeast-2": { + "Examples": "https://s3-ap-northeast-2.amazonaws.com/cloudformation-examples-ap-northeast-2" + }, + "ap-southeast-2": { + "Examples": "https://s3-ap-southeast-2.amazonaws.com/cloudformation-examples-ap-southeast-2" + }, + "ap-south-1": { + "Examples": "https://s3-ap-south-1.amazonaws.com/cloudformation-examples-ap-south-1" + }, + "us-east-2": { + "Examples": "https://s3-us-east-2.amazonaws.com/cloudformation-examples-us-east-2" + }, + "sa-east-1": { + "Examples": "https://s3-sa-east-1.amazonaws.com/cloudformation-examples-sa-east-1" + }, + "cn-north-1": { + "Examples": "https://s3.cn-north-1.amazonaws.com.cn/cloudformation-examples-cn-north-1" + } + }, + "AWSInstanceType2Arch": { + "t1.micro": { + "Arch": "PV64" + }, + "t2.nano": { + "Arch": "HVM64" + }, + "t2.micro": { + "Arch": "HVM64" + }, + "t2.small": { + "Arch": "HVM64" + }, + "t2.medium": { + "Arch": "HVM64" + }, + "t2.large": { + "Arch": "HVM64" + }, + "m1.small": { + "Arch": "PV64" + }, + "m1.medium": { + "Arch": "PV64" + }, + "m1.large": { + "Arch": "PV64" + }, + "m1.xlarge": { + "Arch": "PV64" + }, + "m2.xlarge": { + "Arch": "PV64" + }, + "m2.2xlarge": { + "Arch": "PV64" + }, + "m2.4xlarge": { + "Arch": "PV64" + }, + "m3.medium": { + "Arch": "HVM64" + }, + "m3.large": { + "Arch": "HVM64" + }, + "m3.xlarge": { + "Arch": "HVM64" + }, + "m3.2xlarge": { + "Arch": "HVM64" + }, + "m4.large": { + "Arch": "HVM64" + }, + "m4.xlarge": { + "Arch": "HVM64" + }, + "m4.2xlarge": { + "Arch": "HVM64" + }, + "m4.4xlarge": { + "Arch": "HVM64" + }, + "m4.10xlarge": { + "Arch": "HVM64" + }, + "c1.medium": { + "Arch": "PV64" + }, + "c1.xlarge": { + "Arch": "PV64" + }, + "c3.large": { + "Arch": "HVM64" + }, + "c3.xlarge": { + "Arch": "HVM64" + }, + "c3.2xlarge": { + "Arch": "HVM64" + }, + "c3.4xlarge": { + "Arch": "HVM64" + }, + "c3.8xlarge": { + "Arch": "HVM64" + }, + "c4.large": { + "Arch": "HVM64" + }, + "c4.xlarge": { + "Arch": "HVM64" + }, + "c4.2xlarge": { + "Arch": "HVM64" + }, + "c4.4xlarge": { + "Arch": "HVM64" + }, + "c4.8xlarge": { + "Arch": "HVM64" + }, + "g2.2xlarge": { + "Arch": "HVMG2" + }, + "g2.8xlarge": { + "Arch": "HVMG2" + }, + "r3.large": { + "Arch": "HVM64" + }, + "r3.xlarge": { + "Arch": "HVM64" + }, + "r3.2xlarge": { + "Arch": "HVM64" + }, + "r3.4xlarge": { + "Arch": "HVM64" + }, + "r3.8xlarge": { + "Arch": "HVM64" + }, + "i2.xlarge": { + "Arch": "HVM64" + }, + "i2.2xlarge": { + "Arch": "HVM64" + }, + "i2.4xlarge": { + "Arch": "HVM64" + }, + "i2.8xlarge": { + "Arch": "HVM64" + }, + "d2.xlarge": { + "Arch": "HVM64" + }, + "d2.2xlarge": { + "Arch": "HVM64" + }, + "d2.4xlarge": { + "Arch": "HVM64" + }, + "d2.8xlarge": { + "Arch": "HVM64" + }, + "hi1.4xlarge": { + "Arch": "HVM64" + }, + "hs1.8xlarge": { + "Arch": "HVM64" + }, + "cr1.8xlarge": { + "Arch": "HVM64" + }, + "cc2.8xlarge": { + "Arch": "HVM64" + } + }, + "AWSInstanceType2NATArch": { + "t1.micro": { + "Arch": "NATPV64" + }, + "t2.nano": { + "Arch": "NATHVM64" + }, + "t2.micro": { + "Arch": "NATHVM64" + }, + "t2.small": { + "Arch": "NATHVM64" + }, + "t2.medium": { + "Arch": "NATHVM64" + }, + "t2.large": { + "Arch": "NATHVM64" + }, + "m1.small": { + "Arch": "NATPV64" + }, + "m1.medium": { + "Arch": "NATPV64" + }, + "m1.large": { + "Arch": "NATPV64" + }, + "m1.xlarge": { + "Arch": "NATPV64" + }, + "m2.xlarge": { + "Arch": "NATPV64" + }, + "m2.2xlarge": { + "Arch": "NATPV64" + }, + "m2.4xlarge": { + "Arch": "NATPV64" + }, + "m3.medium": { + "Arch": "NATHVM64" + }, + "m3.large": { + "Arch": "NATHVM64" + }, + "m3.xlarge": { + "Arch": "NATHVM64" + }, + "m3.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.large": { + "Arch": "NATHVM64" + }, + "m4.xlarge": { + "Arch": "NATHVM64" + }, + "m4.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.4xlarge": { + "Arch": "NATHVM64" + }, + "m4.10xlarge": { + "Arch": "NATHVM64" + }, + "c1.medium": { + "Arch": "NATPV64" + }, + "c1.xlarge": { + "Arch": "NATPV64" + }, + "c3.large": { + "Arch": "NATHVM64" + }, + "c3.xlarge": { + "Arch": "NATHVM64" + }, + "c3.2xlarge": { + "Arch": "NATHVM64" + }, + "c3.4xlarge": { + "Arch": "NATHVM64" + }, + "c3.8xlarge": { + "Arch": "NATHVM64" + }, + "c4.large": { + "Arch": "NATHVM64" + }, + "c4.xlarge": { + "Arch": "NATHVM64" + }, + "c4.2xlarge": { + "Arch": "NATHVM64" + }, + "c4.4xlarge": { + "Arch": "NATHVM64" + }, + "c4.8xlarge": { + "Arch": "NATHVM64" + }, + "g2.2xlarge": { + "Arch": "NATHVMG2" + }, + "g2.8xlarge": { + "Arch": "NATHVMG2" + }, + "r3.large": { + "Arch": "NATHVM64" + }, + "r3.xlarge": { + "Arch": "NATHVM64" + }, + "r3.2xlarge": { + "Arch": "NATHVM64" + }, + "r3.4xlarge": { + "Arch": "NATHVM64" + }, + "r3.8xlarge": { + "Arch": "NATHVM64" + }, + "i2.xlarge": { + "Arch": "NATHVM64" + }, + "i2.2xlarge": { + "Arch": "NATHVM64" + }, + "i2.4xlarge": { + "Arch": "NATHVM64" + }, + "i2.8xlarge": { + "Arch": "NATHVM64" + }, + "d2.xlarge": { + "Arch": "NATHVM64" + }, + "d2.2xlarge": { + "Arch": "NATHVM64" + }, + "d2.4xlarge": { + "Arch": "NATHVM64" + }, + "d2.8xlarge": { + "Arch": "NATHVM64" + }, + "hi1.4xlarge": { + "Arch": "NATHVM64" + }, + "hs1.8xlarge": { + "Arch": "NATHVM64" + }, + "cr1.8xlarge": { + "Arch": "NATHVM64" + }, + "cc2.8xlarge": { + "Arch": "NATHVM64" + } + }, + "AWSRegionArch2AMI": { + "us-east-1": { + "PV64": "ami-2a69aa47", + "HVM64": "ami-6869aa05", + "HVMG2": "ami-50b4f047" + }, + "us-west-2": { + "PV64": "ami-7f77b31f", + "HVM64": "ami-7172b611", + "HVMG2": "ami-002bf460" + }, + "us-west-1": { + "PV64": "ami-a2490dc2", + "HVM64": "ami-31490d51", + "HVMG2": "ami-699ad409" + }, + "eu-west-1": { + "PV64": "ami-4cdd453f", + "HVM64": "ami-f9dd458a", + "HVMG2": "ami-f0e0a483" + }, + "eu-central-1": { + "PV64": "ami-6527cf0a", + "HVM64": "ami-ea26ce85", + "HVMG2": "ami-d9d62ab6" + }, + "ap-northeast-1": { + "PV64": "ami-3e42b65f", + "HVM64": "ami-374db956", + "HVMG2": "ami-78ba6619" + }, + "ap-northeast-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-2b408b45", + "HVMG2": "NOT_SUPPORTED" + }, + "ap-southeast-1": { + "PV64": "ami-df9e4cbc", + "HVM64": "ami-a59b49c6", + "HVMG2": "ami-56e84c35" + }, + "ap-southeast-2": { + "PV64": "ami-63351d00", + "HVM64": "ami-dc361ebf", + "HVMG2": "ami-2589b946" + }, + "ap-south-1": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-ffbdd790", + "HVMG2": "ami-f7354198" + }, + "us-east-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-f6035893", + "HVMG2": "NOT_SUPPORTED" + }, + "sa-east-1": { + "PV64": "ami-1ad34676", + "HVM64": "ami-6dd04501", + "HVMG2": "NOT_SUPPORTED" + }, + "cn-north-1": { + "PV64": "ami-77559f1a", + "HVM64": "ami-8e6aa0e3", + "HVMG2": "NOT_SUPPORTED" + } + } + }, + "Resources": [ + { + "Type": "AWS::SNS::Topic", + "Properties": { + "Subscription": [ + { + "Endpoint": { + "Ref": "OperatorEMail" + }, + "Protocol": "email" + } + ] + }, + "Name": "NotificationTopic" + }, + { + "Type": "AWS::AutoScaling::AutoScalingGroup", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "LaunchConfigurationName": { + "Ref": "LaunchConfig" + }, + "MinSize": "1", + "MaxSize": "3", + "LoadBalancerNames": [ + { + "Ref": "ElasticLoadBalancer" + } + ], + "NotificationConfigurations": [ + { + "TopicARN": { + "Ref": "NotificationTopic" + }, + "NotificationTypes": [ + "autoscaling:EC2_INSTANCE_LAUNCH", + "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", + "autoscaling:EC2_INSTANCE_TERMINATE", + "autoscaling:EC2_INSTANCE_TERMINATE_ERROR" + ] + } + ] + }, + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M", + "Count": 1 + } + }, + "UpdatePolicy": { + "AutoScalingRollingUpdate": { + "MinInstancesInService": 1, + "MaxBatchSize": 1, + "PauseTime": "PT15M", + "WaitOnResourceSignals": true + } + }, + "Name": "WebServerGroup" + }, + { + "Type": "AWS::AutoScaling::LaunchConfiguration", + "Metadata": { + "Comment": "Install a simple application", + "AWS::CloudFormation::Init": { + "config": { + "packages": { + "yum": { + "httpd": [] + } + }, + "files": { + "/var/www/html/index.html": { + "content": { + "Fn::Join": [ + "\n", + [ + "\"AWS", + "

Congratulations, you have successfully launched the AWS CloudFormation sample.

" + ] + ] + }, + "mode": "000644", + "owner": "root", + "group": "root" + }, + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": true, + "ensureRunning": true + }, + "cfn-hup": { + "enabled": true, + "ensureRunning": true, + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + } + } + }, + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "InstanceType": "t2.small", + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y aws-cfn-bootstrap\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource WebServerGroup ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "LaunchConfig" + }, + { + "Type": "AWS::AutoScaling::ScalingPolicy", + "Properties": { + "AdjustmentType": "ChangeInCapacity", + "AutoScalingGroupName": { + "Ref": "WebServerGroup" + }, + "Cooldown": "60", + "ScalingAdjustment": 1 + }, + "Name": "WebServerScaleUpPolicy" + }, + { + "Type": "AWS::AutoScaling::ScalingPolicy", + "Properties": { + "AdjustmentType": "ChangeInCapacity", + "AutoScalingGroupName": { + "Ref": "WebServerGroup" + }, + "Cooldown": "60", + "ScalingAdjustment": -1 + }, + "Name": "WebServerScaleDownPolicy" + }, + { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "AlarmDescription": "Scale-up if CPU > 90% for 10 minutes", + "MetricName": "CPUUtilization", + "Namespace": "AWS/EC2", + "Statistic": "Average", + "Period": 300, + "EvaluationPeriods": 2, + "Threshold": 90, + "AlarmActions": [ + { + "Ref": "WebServerScaleUpPolicy" + } + ], + "Dimensions": [ + { + "Name": "AutoScalingGroupName", + "Value": { + "Ref": "WebServerGroup" + } + } + ], + "ComparisonOperator": "GreaterThanThreshold" + }, + "Name": "CPUAlarmHigh" + }, + { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "AlarmDescription": "Scale-down if CPU < 70% for 10 minutes", + "MetricName": "CPUUtilization", + "Namespace": "AWS/EC2", + "Statistic": "Average", + "Period": 300, + "EvaluationPeriods": 2, + "Threshold": 70, + "AlarmActions": [ + { + "Ref": "WebServerScaleDownPolicy" + } + ], + "Dimensions": [ + { + "Name": "AutoScalingGroupName", + "Value": { + "Ref": "WebServerGroup" + } + } + ], + "ComparisonOperator": "LessThanThreshold" + }, + "Name": "CPUAlarmLow" + }, + { + "Type": "AWS::ElasticLoadBalancing::LoadBalancer", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "CrossZone": true, + "Listeners": [ + { + "LoadBalancerPort": "80", + "InstancePort": "80", + "Protocol": "HTTP" + } + ], + "HealthCheck": { + "Target": "HTTP:80/", + "HealthyThreshold": "3", + "UnhealthyThreshold": "5", + "Interval": "30", + "Timeout": "5" + } + }, + "Name": "ElasticLoadBalancer" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access and HTTP from the load balancer only", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": 80, + "ToPort": 80, + "SourceSecurityGroupOwnerId": { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "SourceSecurityGroup.OwnerAlias" + ] + }, + "SourceSecurityGroupName": { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "SourceSecurityGroup.GroupName" + ] + } + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ], + "Outputs": { + "URL": { + "Description": "The URL of the website", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "DNSName" + ] + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT10 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT10 new file mode 100644 index 0000000..6829d36 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT10 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/PyPlate/python.yaml" + ], + "timestamp": 1642972590308, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/PyPlate/python.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT10", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::lambda::permission", + "aws::cloudformation::macro", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT10", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "logs:*" + ], + "Resource": "arn:aws:logs:*:*:*" + } + ] + } + } + ] + }, + "Name": "TransformExecutionRole" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "import traceback\nimport json\n\n\ndef obj_iterate(obj, params):\n if isinstance(obj, dict):\n for k in obj:\n obj[k] = obj_iterate(obj[k], params)\n elif isinstance(obj, list):\n for i, v in enumerate(obj):\n obj[i] = obj_iterate(v, params)\n elif isinstance(obj, str):\n if obj.startswith(\"#!PyPlate\"):\n params['output'] = None\n exec(obj, params)\n obj = params['output']\n return obj\n\n\ndef handler(event, context):\n\n print(json.dumps(event))\n\n macro_response = {\n \"requestId\": event[\"requestId\"],\n \"status\": \"success\"\n }\n try:\n params = {\n \"params\": event[\"templateParameterValues\"],\n \"template\": event[\"fragment\"],\n \"account_id\": event[\"accountId\"],\n \"region\": event[\"region\"]\n }\n response = event[\"fragment\"]\n macro_response[\"fragment\"] = obj_iterate(response, params)\n except Exception as e:\n traceback.print_exc()\n macro_response[\"status\"] = \"failure\"\n macro_response[\"errorMessage\"] = str(e)\n return macro_response\n" + }, + "Handler": "index.handler", + "Runtime": "python3.6", + "Role": { + "Fn::GetAtt": [ + "TransformExecutionRole", + "Arn" + ] + } + }, + "Name": "TransformFunction" + }, + { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "TransformFunction", + "Arn" + ] + }, + "Principal": "cloudformation.amazonaws.com" + }, + "Name": "TransformFunctionPermissions" + }, + { + "Type": "AWS::CloudFormation::Macro", + "Properties": { + "Name": { + "Fn::Sub": "PyPlate" + }, + "Description": "Processes inline python in templates", + "FunctionName": { + "Fn::GetAtt": [ + "TransformFunction", + "Arn" + ] + } + }, + "Name": "Transform" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT100 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT100 new file mode 100644 index 0000000..289740c --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT100 @@ -0,0 +1,288 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/HostnameChangeRHEL-Metadata.template" + ], + "timestamp": 1642972590700, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/HostnameChangeRHEL-Metadata.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT100", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT100", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Persistantly sets the hostname of a RHEL7 EC2 instance on start", + "Mappings": { + "RegionMap": { + "us-east-1": { + "32": "ami-6411e20d", + "64": "ami-7a11e213" + }, + "us-west-1": { + "32": "ami-c9c7978c", + "64": "ami-cfc7978a" + }, + "eu-west-1": { + "32": "ami-37c2f643", + "64": "ami-31c2f645" + }, + "ap-southeast-1": { + "32": "ami-66f28c34", + "64": "ami-60f28c32" + }, + "ap-northeast-1": { + "32": "ami-9c03a89d", + "64": "ami-a003a8a1" + } + } + }, + "Parameters": { + "SSHKey": { + "Description": "Select your SSH Keypair", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceTypeParameter": { + "Type": "String", + "Default": "m4.xlarge", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "Description": "Select your Instancetype. Default is m4.xlarge." + }, + "InstanceHostname": { + "Description": "Select your Instance Hostname", + "Type": "String", + "Default": "RedHatDevInstanceHostname" + }, + "InstanceDomainName": { + "Description": "Select your instance DomainName", + "Type": "String", + "Default": "redhat.domainname.org" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "mkscriptrunclean": [ + "mkscript", + "run", + "clean" + ] + }, + "mkscript": { + "files": { + "/tmp/changehostname.sh": { + "content": "#!/bin/bash\n# Replace this with your domain\nDOMAIN=redhat.domainname.org\nHOSTNAME=RedHatDevInstanceHostname\nIPV4=/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4\n# Set the host name\nhostname RedHatDevInstanceHostname\necho testing >> /tmp/testing\necho RedHatDevInstanceHostname> /etc/hostname\n# Add fqdn to hosts file\necho 'HOSTNAME=RedHatDevInstanceHostname'>> /etc/sysconfig/network\necho 'preserve_hostname: true' >> /etc/cloud/cloud.cfg\ncat< /etc/hosts\n127.0.0.1 localhost\n$IPV4 $HOSTNAME.$DOMAIN $HOSTNAME\nEOF", + "mode": "000777", + "owner": "root", + "group": "root" + }, + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource MyInstance ", + " --configsets mkscriptrunclean ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + }, + "run": { + "commands": { + "runtmp": { + "command": "sh changehostname.sh", + "cwd": "/tmp/" + } + } + }, + "clean": { + "commands": { + "cleanup": { + "command": "rm -rf *", + "cwd": "/tmp/" + } + } + } + } + }, + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionMap", + { + "Ref": "AWS::Region" + }, + "64" + ] + }, + "InstanceType": "m4.xlarge", + "KeyName": { + "Ref": "SSHKey" + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash\n", + "# Download wget\n", + "yum install wget -y\n", + "# Download PIP and easy_install\n", + "curl -o get-pip.py https://bootstrap.pypa.io/get-pip.py\n", + "curl -o ez_setup.py https://bootstrap.pypa.io/ez_setup.py\n", + "# Installing PIP and easy_instal;\n", + "python get-pip.py\n", + "python ez_setup.py\n", + "# Install CloudFormation Helpers\n", + "easy_install --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", + "cp -f `pip show aws-cfn-bootstrap 2>/dev/null|grep -E '^Location' |awk -F: '{print $2}'`/init/redhat/cfn-hup /etc/init.d/\n", + "chmod 755 /etc/init.d/cfn-hup\n", + "chkconfig --add cfn-hup\n", + "# Install the files and packages from the metadata\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource MyInstance ", + " --configsets mkscriptrunclean ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "MyInstance" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT101 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT101 new file mode 100644 index 0000000..bd1120f --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT101 @@ -0,0 +1,152 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/HostnameChangeRHEL-Userdata.template" + ], + "timestamp": 1642972590703, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/HostnameChangeRHEL-Userdata.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT101", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT101", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Persistantly sets the hostname of a RHEL7 EC2 instance on start", + "Mappings": { + "RegionMap": { + "us-east-1": { + "32": "ami-6411e20d", + "64": "ami-7a11e213" + }, + "us-west-1": { + "32": "ami-c9c7978c", + "64": "ami-cfc7978a" + }, + "eu-west-1": { + "32": "ami-37c2f643", + "64": "ami-31c2f645" + }, + "ap-southeast-1": { + "32": "ami-66f28c34", + "64": "ami-60f28c32" + }, + "ap-northeast-1": { + "32": "ami-9c03a89d", + "64": "ami-a003a8a1" + } + } + }, + "Parameters": { + "SSHKey": { + "Description": "Select your SSH Key", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceTypeParameter": { + "Type": "String", + "Default": "m4.xlarge", + "AllowedValues": [ + "t2.micro", + "m4.xlarge", + "m1.large" + ], + "Description": "Select Instancetype. Default is m4.xlarge." + }, + "InstanceHostname": { + "Description": "Select your you instance Hostname", + "Type": "String", + "Default": "RedHatDevInstance" + }, + "InstanceDomainName": { + "Description": "Select your instance DomainName", + "Type": "String", + "Default": "redhat1.org" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionMap", + { + "Ref": "AWS::Region" + }, + "64" + ] + }, + "InstanceType": "m4.xlarge", + "KeyName": { + "Ref": "SSHKey" + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash\n", + "# Replace this with your domain\n", + "DOMAIN=", + { + "Ref": "InstanceDomainName" + }, + "\n", + "HOSTNAME=", + { + "Ref": "InstanceHostname" + }, + "\n", + "IPV4=/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4", + "\n", + "# Set the host name\n", + "hostname", + " ", + { + "Ref": "InstanceHostname" + }, + "\n", + "echo", + " ", + { + "Ref": "InstanceHostname" + }, + "> /etc/hostname\n", + "# Add fqdn to hosts file\n", + "echo 'HOSTNAME=", + { + "Ref": "InstanceHostname" + }, + "'", + ">> /etc/sysconfig/network\n", + "echo 'preserve_hostname: true' >> /etc/cloud/cloud.cfg\n", + "cat< /etc/hosts\n", + "127.0.0.1 localhost\n", + "$IPV4 $HOSTNAME.$DOMAIN $HOSTNAME\n", + "EOF" + ] + ] + } + } + }, + "Name": "MyInstance" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT102 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT102 new file mode 100644 index 0000000..4371268 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT102 @@ -0,0 +1,540 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/WordPress_Single_Instance.yaml" + ], + "timestamp": 1642972590707, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/WordPress_Single_Instance.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT102", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT102", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0", + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "Database" + }, + "Parameters": [ + "DBName", + "DBUser", + "DBPassword", + "DBRootPassword" + ] + }, + { + "Label": { + "default": "Instance connection" + }, + "Parameters": [ + "InstanceType", + "KeyName", + "SSHLocation" + ] + } + ] + } + }, + "Description": "AWS CloudFormation Sample Template WordPress_Single_Instance: WordPress is web software you can use to create a beautiful website or blog. This template installs WordPress with a local MySQL database for storage. It demonstrates using the AWS CloudFormation bootstrap scripts to deploy WordPress. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "DBName": { + "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", + "ConstraintDescription": "must begin with a letter and contain only alphanumeric characters.", + "Default": "wordpressdb", + "Description": "The WordPress database name", + "MaxLength": "64", + "MinLength": "1", + "Type": "String" + }, + "DBPassword": { + "AllowedPattern": "[a-zA-Z0-9]+", + "ConstraintDescription": "must contain only alphanumeric characters.", + "Description": "The WordPress database admin account password", + "MaxLength": "41", + "MinLength": "8", + "NoEcho": "true", + "Type": "String" + }, + "DBRootPassword": { + "AllowedPattern": "[a-zA-Z0-9]+", + "ConstraintDescription": "must contain only alphanumeric characters.", + "Description": "MySQL root password", + "MaxLength": "41", + "MinLength": "8", + "NoEcho": "true", + "Type": "String" + }, + "DBUser": { + "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", + "ConstraintDescription": "must begin with a letter and contain only alphanumeric characters.", + "Description": "The WordPress database admin account username", + "MaxLength": "16", + "MinLength": "1", + "Type": "String" + }, + "InstanceType": { + "AllowedValues": [ + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type.", + "Default": "t2.nano", + "Description": "WebServer EC2 instance type", + "Type": "String" + }, + "KeyName": { + "ConstraintDescription": "must be the name of an existing EC2 KeyPair.", + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "SSHLocation": { + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x.", + "Default": "0.0.0.0/0", + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "MaxLength": "18", + "MinLength": "9", + "Type": "String" + } + }, + "Mappings": { + "AWSInstanceType2Arch": { + "c3.2xlarge": { + "Arch": "HVM64" + }, + "c3.4xlarge": { + "Arch": "HVM64" + }, + "c3.8xlarge": { + "Arch": "HVM64" + }, + "c3.large": { + "Arch": "HVM64" + }, + "c3.xlarge": { + "Arch": "HVM64" + }, + "c4.2xlarge": { + "Arch": "HVM64" + }, + "c4.4xlarge": { + "Arch": "HVM64" + }, + "c4.8xlarge": { + "Arch": "HVM64" + }, + "c4.large": { + "Arch": "HVM64" + }, + "c4.xlarge": { + "Arch": "HVM64" + }, + "cc2.8xlarge": { + "Arch": "HVM64" + }, + "cr1.8xlarge": { + "Arch": "HVM64" + }, + "d2.2xlarge": { + "Arch": "HVM64" + }, + "d2.4xlarge": { + "Arch": "HVM64" + }, + "d2.8xlarge": { + "Arch": "HVM64" + }, + "d2.xlarge": { + "Arch": "HVM64" + }, + "g2.2xlarge": { + "Arch": "HVMG2" + }, + "g2.8xlarge": { + "Arch": "HVMG2" + }, + "hi1.4xlarge": { + "Arch": "HVM64" + }, + "hs1.8xlarge": { + "Arch": "HVM64" + }, + "i2.2xlarge": { + "Arch": "HVM64" + }, + "i2.4xlarge": { + "Arch": "HVM64" + }, + "i2.8xlarge": { + "Arch": "HVM64" + }, + "i2.xlarge": { + "Arch": "HVM64" + }, + "m3.2xlarge": { + "Arch": "HVM64" + }, + "m3.large": { + "Arch": "HVM64" + }, + "m3.medium": { + "Arch": "HVM64" + }, + "m3.xlarge": { + "Arch": "HVM64" + }, + "m4.10xlarge": { + "Arch": "HVM64" + }, + "m4.2xlarge": { + "Arch": "HVM64" + }, + "m4.4xlarge": { + "Arch": "HVM64" + }, + "m4.large": { + "Arch": "HVM64" + }, + "m4.xlarge": { + "Arch": "HVM64" + }, + "r3.2xlarge": { + "Arch": "HVM64" + }, + "r3.4xlarge": { + "Arch": "HVM64" + }, + "r3.8xlarge": { + "Arch": "HVM64" + }, + "r3.large": { + "Arch": "HVM64" + }, + "r3.xlarge": { + "Arch": "HVM64" + }, + "t2.large": { + "Arch": "HVM64" + }, + "t2.medium": { + "Arch": "HVM64" + }, + "t2.micro": { + "Arch": "HVM64" + }, + "t2.nano": { + "Arch": "HVM64" + }, + "t2.small": { + "Arch": "HVM64" + } + }, + "AWSRegionArch2AMI": { + "ap-northeast-1": { + "HVM64": "ami-383c1956", + "HVMG2": "ami-08e5c166" + }, + "ap-northeast-2": { + "HVM64": "ami-249b554a", + "HVMG2": "NOT_SUPPORTED" + }, + "ap-southeast-1": { + "HVM64": "ami-c9b572aa", + "HVMG2": "ami-5a15d239" + }, + "ap-southeast-2": { + "HVM64": "ami-48d38c2b", + "HVMG2": "ami-0c1a446f" + }, + "cn-north-1": { + "HVM64": "ami-43a36a2e", + "HVMG2": "NOT_SUPPORTED" + }, + "eu-central-1": { + "HVM64": "ami-bc5b48d0", + "HVMG2": "ami-ba1a09d6" + }, + "eu-west-1": { + "HVM64": "ami-bff32ccc", + "HVMG2": "ami-83fd23f0" + }, + "sa-east-1": { + "HVM64": "ami-6817af04", + "HVMG2": "NOT_SUPPORTED" + }, + "us-east-1": { + "HVM64": "ami-60b6c60a", + "HVMG2": "ami-e998ea83" + }, + "us-west-1": { + "HVM64": "ami-d5ea86b5", + "HVMG2": "ami-943956f4" + }, + "us-west-2": { + "HVM64": "ami-f0091d91", + "HVMG2": "ami-315f4850" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M" + } + }, + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "wordpress_install": [ + "install_cfn", + "install_wordpress", + "configure_wordpress" + ] + }, + "configure_wordpress": { + "commands": { + "01_set_mysql_root_password": { + "command": { + "Fn::Sub": "mysqladmin -u root password '${DBRootPassword}'\n" + }, + "test": { + "Fn::Sub": "$(mysql ${DBName} -u root --password='${DBRootPassword}' >/dev/null 2>&1 /dev/null 2>&1 \n\n HTML Meta Tag\n \n \n

Redirect to WordPress.

\n \n \n" + } + }, + "packages": { + "yum": { + "httpd24": [], + "mysql": [], + "mysql-devel": [], + "mysql-libs": [], + "mysql-server": [], + "php73": [], + "php73-mysqlnd": [] + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": true, + "ensureRunning": true + }, + "mysqld": { + "enabled": true, + "ensureRunning": true + } + } + }, + "sources": { + "/var/www/html": "http://wordpress.org/latest.tar.gz" + } + } + } + }, + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "InstanceType": "t2.nano", + "KeyName": { + "Ref": "KeyName" + }, + "SecurityGroups": [ + { + "Ref": "WebServerSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Sub": "#!/bin/bash -xe\nyum update -y\nyum update -y aws-cfn-bootstrap\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource WebServer --configsets wordpress_install --region ${AWS::Region}\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource WebServer --region ${AWS::Region}\n" + } + } + }, + "Name": "WebServer" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable HTTP access via port 80 locked down to the load balancer + SSH access", + "SecurityGroupIngress": [ + { + "CidrIp": "0.0.0.0/0", + "FromPort": 80, + "IpProtocol": "tcp", + "ToPort": 80 + }, + { + "CidrIp": "0.0.0.0/0", + "FromPort": 22, + "IpProtocol": "tcp", + "ToPort": 22 + } + ] + }, + "Name": "WebServerSecurityGroup" + } + ], + "Outputs": { + "PublicIP": { + "Description": "EC2 public IP", + "Value": { + "Fn::GetAtt": [ + "WebServer", + "PublicIp" + ] + } + }, + "WebsiteURL": { + "Description": "WordPress Website", + "Value": { + "Fn::Sub": "http://${WebServer.PublicDnsName}/wordpress" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT103 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT103 new file mode 100644 index 0000000..c174de6 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT103 @@ -0,0 +1,372 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/community/services/EC2/ec2_with_waitcondition_template.json" + ], + "timestamp": 1642972590711, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/services/EC2/ec2_with_waitcondition_template.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT103", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup", + "aws::cloudformation::waitcondition", + "aws::cloudformation::waitconditionhandle" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT103", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Create a variable number of EC2 instance resources.", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "Default": "slinger_testing", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceName": { + "Description": "Name of EC2 instance", + "Type": "String", + "ConstraintDescription": "must be a valid EC2 instance string name." + }, + "InstanceType": { + "Description": "Basic EC2 instance type", + "Type": "String", + "Default": "c4.2xlarge", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "InstanceCount": { + "Description": "Basic EC2 instance count", + "Type": "String", + "Default": "1", + "ConstraintDescription": "must be a valid EC2 instance count." + }, + "ImageId": { + "Description": "Basic instance ami", + "Type": "String" + }, + "VpcId": { + "Type": "String", + "Description": "VpcId of your existing Virtual Private Cloud (VPC)" + }, + "SubnetId": { + "Type": "String", + "Description": "SubnetId of an existing subnet in your Virtual Private Cloud (VPC)" + }, + "SSHLocation": { + "Description": " The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + }, + "BudgetCode": { + "Description": " Budget code to save money", + "Type": "String", + "Default": "A019517", + "ConstraintDescription": "must be a valid budget code." + }, + "LaunchPlatform": { + "Description": " Mark current platform", + "Type": "String", + "Default": "bitstorm_dev", + "ConstraintDescription": "must be a valid platform like bitstorm_qc bitstorm_dev bitstorm_staggin bitstorm_live." + }, + "LaunchUser": { + "Description": " Mark current tester", + "Type": "String", + "Default": "null", + "ConstraintDescription": "must be a valid and existing tester." + }, + "TestID": { + "Description": " Mark current testcase", + "Type": "String", + "ConstraintDescription": "must be a valid and existing testcase id." + }, + "TestTarget": { + "Description": " Mark current test target", + "Type": "String", + "ConstraintDescription": "must be a valid and existing test target name." + }, + "AgentID": { + "Description": " Mark current agent", + "Type": "String" + }, + "IsMaster": { + "Description": "Mark master agent", + "Type": "String", + "Default": "False" + }, + "MasterID": { + "Description": "Mark master ID", + "Type": "String", + "Default": "null" + } + }, + "Mappings": {}, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": {} + }, + "Properties": { + "ImageId": { + "Ref": "ImageId" + }, + "InstanceType": "c4.2xlarge", + "SubnetId": { + "Ref": "SubnetId" + }, + "SecurityGroupIds": [ + { + "Ref": "KWOSSecurityGroup" + } + ], + "KeyName": "slinger_testing", + "Tags": [ + { + "Key": "LaunchPlatform", + "Value": "bitstorm_dev" + }, + { + "Key": "LaunchUser", + "Value": "null" + }, + { + "Key": "TestID", + "Value": { + "Ref": "TestID" + } + }, + { + "Key": "Name", + "Value": { + "Ref": "InstanceName" + } + }, + { + "Key": "BudgetCode", + "Value": "A019517" + }, + { + "Key": "TestTarget", + "Value": { + "Ref": "TestTarget" + } + }, + { + "Key": "AgentID", + "Value": { + "Ref": "AgentID" + } + }, + { + "Key": "IsMaster", + "Value": "False" + }, + { + "Key": "MasterID", + "Value": "null" + } + ], + "Monitoring": false, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash\n", + "apt-get -y install python-pip\n", + "pip install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", + "# Helper function\n", + "function error_exit\n", + "{\n", + " /usr/local/bin/cfn-signal -e 1 -r \"$1\" '", + { + "Ref": "KWOSWaitHandle" + }, + "'\n", + " exit 1\n", + "}\n", + "# Install the basic system configuration\n", + "/usr/local/bin/cfn-init -s ", + { + "Ref": "AWS::StackId" + }, + " -r KWOSInstance ", + " --region ", + { + "Ref": "AWS::Region" + }, + " || error_exit 'Failed to run cfn-init'\n", + "# All done so signal success\n", + "/usr/local/bin/cfn-signal -e 0 -r \"KWOS setup complete\" '", + { + "Ref": "KWOSWaitHandle" + }, + "'\n" + ] + ] + } + } + }, + "Name": "KWOSInstance" + }, + { + "Type": "AWS::CloudFormation::WaitConditionHandle", + "Name": "KWOSWaitHandle" + }, + { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Handle": { + "Ref": "KWOSWaitHandle" + }, + "Timeout": "300" + }, + "Name": "KWOSWaitCondition" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "VpcId": { + "Ref": "VpcId" + }, + "GroupDescription": "Enable HTTP access via port 80/22/443 and ICMP access via port *", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "8888", + "ToPort": "8888", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "443", + "ToPort": "443", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "icmp", + "FromPort": "8", + "ToPort": "-1", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "KWOSSecurityGroup" + } + ], + "Outputs": { + "WebsiteURL": { + "Description": "URL for newly created KWOS deploy stack", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "KWOSInstance", + "PublicDnsName" + ] + } + ] + ] + } + }, + "InstanceId": { + "Value": { + "Ref": "KWOSInstance" + }, + "Description": "Instance Id of newly created instance" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT104 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT104 new file mode 100644 index 0000000..5e9c148 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT104 @@ -0,0 +1,638 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/community/services/EFS/efs_with_automount_to_ec2.json" + ], + "timestamp": 1642972590715, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/services/EFS/efs_with_automount_to_ec2.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT104", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::autoscaling::scalingpolicy", + "aws::iam::instanceprofile", + "aws::efs::mounttarget", + "aws::autoscaling::autoscalinggroup", + "aws::efs::filesystem", + "aws::ec2::securitygroup", + "aws::autoscaling::launchconfiguration", + "aws::iam::role", + "aws::elasticloadbalancing::loadbalancer", + "aws::cloudwatch::alarm" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT104", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Multi-AZ EFS with automount EFS.", + "Mappings": { + "EC2RegionMap": { + "ap-northeast-1": { + "64": "ami-d85e7fbf" + }, + "ap-northeast-2": { + "64": "ami-15d5077b" + }, + "ap-south-1": { + "64": "ami-83a8dbec" + }, + "ap-southeast-1": { + "64": "ami-0a19a669" + }, + "ap-southeast-2": { + "64": "ami-807876e3" + }, + "ca-central-1": { + "64": "ami-beea56da" + }, + "eu-central-1": { + "64": "ami-25a97a4a" + }, + "eu-west-1": { + "64": "ami-09447c6f" + }, + "eu-west-2": { + "64": "ami-63342007" + }, + "sa-east-1": { + "64": "ami-8df695e1" + }, + "us-east-1": { + "64": "ami-772aa961" + }, + "us-east-2": { + "64": "ami-8fab8fea" + }, + "us-west-1": { + "64": "ami-1da8f27d" + }, + "us-west-2": { + "64": "ami-7c22b41c" + } + } + }, + "Outputs": { + "AutoScalingGroup": { + "Description": "AutoScaling Group Name", + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-AutoScalingGroup" + } + }, + "Value": { + "Ref": "AutoScalingGroup" + } + }, + "StackName": { + "Description": "Stack Name", + "Value": { + "Ref": "AWS::StackName" + } + }, + "URL": { + "Description": "The URL of the website", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "DNSName" + ] + } + ] + ] + } + } + }, + "Parameters": { + "InstanceType": { + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type.", + "Default": "t2.micro", + "Description": "EC2 instance type", + "Type": "String" + }, + "KeyName": { + "ConstraintDescription": "must be the name of an existing EC2 KeyPair.", + "Description": "The EC2 Key Pair to allow SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "Subnets": { + "Type": "CommaDelimitedList", + "Description": "The list of SubnetIds, for at least two Availability Zones in the region in your Virtual Private Cloud (VPC) Defaults: " + }, + "VPC": { + "Description": "VPC ID for EC2 and Elastic Load Balancer", + "Type": "AWS::EC2::VPC::Id" + } + }, + "Resources": [ + { + "Type": "AWS::EFS::FileSystem", + "Properties": { + "PerformanceMode": "generalPurpose" + }, + "Name": "EFSFileSystem" + }, + { + "Type": "AWS::EFS::MountTarget", + "Properties": { + "FileSystemId": { + "Ref": "EFSFileSystem" + }, + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "EFSSecurityGroup", + "GroupId" + ] + } + ], + "SubnetId": { + "Fn::Select": [ + 0, + { + "Ref": "Subnets" + } + ] + } + }, + "Name": "EFSMountTarget1" + }, + { + "Type": "AWS::EFS::MountTarget", + "Properties": { + "FileSystemId": { + "Ref": "EFSFileSystem" + }, + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "EFSSecurityGroup", + "GroupId" + ] + } + ], + "SubnetId": { + "Fn::Select": [ + 1, + { + "Ref": "Subnets" + } + ] + } + }, + "Name": "EFSMountTarget2" + }, + { + "Type": "AWS::EFS::MountTarget", + "Properties": { + "FileSystemId": { + "Ref": "EFSFileSystem" + }, + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "EFSSecurityGroup", + "GroupId" + ] + } + ], + "SubnetId": { + "Fn::Select": [ + 2, + { + "Ref": "Subnets" + } + ] + } + }, + "Name": "EFSMountTarget3" + }, + { + "Type": "AWS::EFS::MountTarget", + "Properties": { + "FileSystemId": { + "Ref": "EFSFileSystem" + }, + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "EFSSecurityGroup", + "GroupId" + ] + } + ], + "SubnetId": { + "Fn::Select": [ + 3, + { + "Ref": "Subnets" + } + ] + } + }, + "Name": "EFSMountTarget4" + }, + { + "Properties": { + "AlarmActions": [ + { + "Ref": "ScaleUpPolicy" + } + ], + "AlarmDescription": "Scale-up if CPU > 90% for 10 minutes", + "ComparisonOperator": "GreaterThanThreshold", + "Dimensions": [ + { + "Name": "AutoScalingGroupName", + "Value": { + "Ref": "AutoScalingGroup" + } + } + ], + "EvaluationPeriods": "2", + "MetricName": "CPUUtilization", + "Namespace": "AWS/EC2", + "Period": "300", + "Statistic": "Average", + "Threshold": "90" + }, + "Type": "AWS::CloudWatch::Alarm", + "Name": "CPUAlarmHigh" + }, + { + "Properties": { + "AlarmActions": [ + { + "Ref": "ScaleDownPolicy" + } + ], + "AlarmDescription": "Scale-down if CPU < 70% for 10 minutes", + "ComparisonOperator": "LessThanThreshold", + "Dimensions": [ + { + "Name": "AutoScalingGroupName", + "Value": { + "Ref": "AutoScalingGroup" + } + } + ], + "EvaluationPeriods": "2", + "MetricName": "CPUUtilization", + "Namespace": "AWS/EC2", + "Period": "300", + "Statistic": "Average", + "Threshold": "70" + }, + "Type": "AWS::CloudWatch::Alarm", + "Name": "CPUAlarmLow" + }, + { + "Properties": { + "LaunchConfigurationName": { + "Ref": "LaunchConfig" + }, + "LoadBalancerNames": [ + { + "Ref": "ElasticLoadBalancer" + } + ], + "MaxSize": "3", + "MinSize": "1", + "VPCZoneIdentifier": { + "Ref": "Subnets" + } + }, + "Type": "AWS::AutoScaling::AutoScalingGroup", + "Name": "AutoScalingGroup" + }, + { + "Properties": { + "InstanceProfileName": "IAM-InstanceProfile", + "Path": "/", + "Roles": [ + { + "Ref": "IAMAssumeInstanceRole" + } + ] + }, + "Type": "AWS::IAM::InstanceProfile", + "Name": "InstanceProfile" + }, + { + "Properties": { + "AdjustmentType": "ChangeInCapacity", + "AutoScalingGroupName": { + "Ref": "AutoScalingGroup" + }, + "Cooldown": "60", + "ScalingAdjustment": "-1" + }, + "Type": "AWS::AutoScaling::ScalingPolicy", + "Name": "ScaleDownPolicy" + }, + { + "Properties": { + "AdjustmentType": "ChangeInCapacity", + "AutoScalingGroupName": { + "Ref": "AutoScalingGroup" + }, + "Cooldown": "60", + "ScalingAdjustment": "1" + }, + "Type": "AWS::AutoScaling::ScalingPolicy", + "Name": "ScaleUpPolicy" + }, + { + "Properties": { + "SecurityGroups": [ + { + "Ref": "ELBSecurityGroup" + } + ], + "Subnets": { + "Ref": "Subnets" + }, + "CrossZone": "true", + "HealthCheck": { + "HealthyThreshold": "3", + "Interval": "30", + "Target": "HTTP:80/", + "Timeout": "5", + "UnhealthyThreshold": "5" + }, + "Listeners": [ + { + "InstancePort": "80", + "LoadBalancerPort": "80", + "Protocol": "HTTP" + } + ] + }, + "Type": "AWS::ElasticLoadBalancing::LoadBalancer", + "Name": "ElasticLoadBalancer" + }, + { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": [ + "sts:AssumeRole" + ], + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + } + } + ], + "Version": "2012-10-17" + }, + "Path": "/", + "Policies": [ + { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "ec2:DescribeTags" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "s3:Get*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": "logs:*", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "IAM-EC2-Policy" + } + ], + "RoleName": "IAM-EC2-Role" + }, + "Type": "AWS::IAM::Role", + "Name": "IAMAssumeInstanceRole" + }, + { + "Properties": { + "GroupDescription": "Enable SSH public access and HTTP from the load balancer only", + "SecurityGroupIngress": [ + { + "CidrIp": "0.0.0.0/0", + "FromPort": "22", + "IpProtocol": "tcp", + "ToPort": "22" + }, + { + "FromPort": "80", + "IpProtocol": "tcp", + "SourceSecurityGroupId": { + "Fn::GetAtt": [ + "ELBSecurityGroup", + "GroupId" + ] + }, + "ToPort": "80" + } + ], + "VpcId": { + "Ref": "VPC" + } + }, + "Type": "AWS::EC2::SecurityGroup", + "Name": "InstanceSecurityGroup" + }, + { + "Properties": { + "GroupDescription": "Enable public access HTTP and HTTPS", + "SecurityGroupIngress": [ + { + "CidrIp": "0.0.0.0/0", + "FromPort": "80", + "IpProtocol": "tcp", + "ToPort": "80" + }, + { + "CidrIp": "0.0.0.0/0", + "FromPort": "443", + "IpProtocol": "tcp", + "ToPort": "443" + } + ], + "VpcId": { + "Ref": "VPC" + } + }, + "Type": "AWS::EC2::SecurityGroup", + "Name": "ELBSecurityGroup" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable NFS access from EC2", + "SecurityGroupIngress": [ + { + "FromPort": "2049", + "IpProtocol": "tcp", + "ToPort": "2049", + "SourceSecurityGroupId": { + "Fn::GetAtt": [ + "InstanceSecurityGroup", + "GroupId" + ] + } + } + ], + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "EFSSecurityGroup" + }, + { + "Properties": { + "IamInstanceProfile": { + "Ref": "InstanceProfile" + }, + "ImageId": { + "Fn::FindInMap": [ + "EC2RegionMap", + { + "Ref": "AWS::Region" + }, + "64" + ] + }, + "InstanceType": "t2.micro", + "KeyName": { + "Ref": "KeyName" + }, + "SecurityGroups": [ + { + "Fn::GetAtt": [ + "InstanceSecurityGroup", + "GroupId" + ] + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -x\n", + "export LC_CTYPE=en_US.UTF-8\n", + "export LC_ALL=en_US.UTF-8\n", + "apt-get update\n", + "apt-get install -y curl nfs-common\n", + "EC2_REGION=", + { + "Ref": "AWS::Region" + }, + "\n", + "DIR_TGT=/mnt/efs/", + "\n", + "EFS_FILE_SYSTEM_ID=", + { + "Ref": "EFSFileSystem" + }, + "\n", + "mkdir -p $DIR_TGT\n", + "DIR_SRC=$EFS_FILE_SYSTEM_ID.efs.$EC2_REGION.amazonaws.com\n", + "mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $DIR_SRC:/ $DIR_TGT" + ] + ] + } + } + }, + "Type": "AWS::AutoScaling::LaunchConfiguration", + "Name": "LaunchConfig" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT105 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT105 new file mode 100644 index 0000000..a0c14c4 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT105 @@ -0,0 +1,148 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/community/services/Lambda/LambdaSample.yaml" + ], + "timestamp": 1642972590721, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/services/Lambda/LambdaSample.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT105", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT105", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template for Lambda Sample.", + "Parameters": { + "EnvName": { + "Type": "String", + "Description": "Name of an environment. 'dev', 'staging', 'prod' and any name.", + "AllowedPattern": "^.*[^0-9]$", + "ConstraintDescription": "Must end with non-numeric character." + }, + "LambdaHandlerPath": { + "Type": "String", + "Description": "Path of a Lambda Handler.", + "AllowedPattern": "^.*[^0-9]$", + "ConstraintDescription": "Must end with non-numeric character." + } + }, + "Outputs": { + "LambdaRoleARN": { + "Description": "Role for Lambda execution.", + "Value": { + "Fn::GetAtt": [ + "LambdaRole", + "Arn" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "LambdaRole" + } + } + }, + "LambdaFunctionName": { + "Value": { + "Ref": "LambdaFunction" + } + }, + "LambdaFunctionARN": { + "Description": "Lambda function ARN.", + "Value": { + "Fn::GetAtt": [ + "LambdaFunction", + "Arn" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "LambdaARN-${EnvName}" + } + } + } + }, + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Properties": { + "RoleName": { + "Fn::Sub": "lambda-role" + }, + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": [ + "sts:AssumeRole" + ], + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/AWSLambdaExecute", + "arn:aws:iam::aws:policy/AmazonS3FullAccess", + "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess", + "arn:aws:iam::aws:policy/AmazonKinesisFullAccess" + ], + "Path": "/" + }, + "Name": "LambdaRole" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "FunctionName": { + "Fn::Sub": "lambda-function-${EnvName}" + }, + "Description": "LambdaFunctioni of nodejs10.x.", + "Runtime": "nodejs10.x", + "Code": { + "ZipFile": "exports.handler = function(event, context){\n var sample = sample;" + }, + "Handler": "${LambdaHandlerPath}", + "MemorySize": 128, + "Timeout": 10, + "Role": { + "Fn::GetAtt": [ + "LambdaRole", + "Arn" + ] + }, + "Environment": { + "Variables": { + "ENV": { + "Fn::Sub": "${EnvName}" + }, + "TZ": "UTC" + } + } + }, + "Name": "LambdaFunction" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT106 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT106 new file mode 100644 index 0000000..16df8fb --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT106 @@ -0,0 +1,585 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/community/services/VPC/vpc_template.json" + ], + "timestamp": 1642972590726, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/services/VPC/vpc_template.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT106", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::subnetnetworkaclassociation", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::ec2::networkaclentry", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::cloudformation::waitcondition", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "aws::cloudformation::waitconditionhandle", + "aws::ec2::networkacl", + "aws::ec2::eip" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT106", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template vpc_single_instance_in_subnet.template: Sample template showing how to create a VPC and add an EC2 instance with an Elastic IP address and a security group. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "m1.small", + "AllowedValues": [ + "t1.micro", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.xlarge", + "m3.2xlarge", + "c1.medium", + "c1.xlarge", + "cc1.4xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "String", + "MinLength": "1", + "MaxLength": "255", + "AllowedPattern": "[\\x20-\\x7E]*", + "ConstraintDescription": "can contain only ASCII characters." + }, + "SSHLocation": { + "Description": " The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "RegionMap": { + "us-east-1": { + "AMI": "ami-7f418316" + }, + "us-west-1": { + "AMI": "ami-951945d0" + }, + "us-west-2": { + "AMI": "ami-16fd7026" + }, + "eu-west-1": { + "AMI": "ami-24506250" + }, + "sa-east-1": { + "AMI": "ami-3e3be423" + }, + "ap-southeast-1": { + "AMI": "ami-74dda626" + }, + "ap-southeast-2": { + "AMI": "ami-b3990e89" + }, + "ap-northeast-1": { + "AMI": "ami-dcfa4edd" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.16.0.0/16", + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "CidrBlock": "10.16.0.0/24", + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "Subnet" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "InternetGateway" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "InternetGatewayId": { + "Ref": "InternetGateway" + } + }, + "Name": "AttachGateway" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "RouteTable" + }, + { + "Type": "AWS::EC2::Route", + "DependsOn": "AttachGateway", + "Properties": { + "RouteTableId": { + "Ref": "RouteTable" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + } + }, + "Name": "Route" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "SubnetId": { + "Ref": "Subnet" + }, + "RouteTableId": { + "Ref": "RouteTable" + } + }, + "Name": "SubnetRouteTableAssociation" + }, + { + "Type": "AWS::EC2::NetworkAcl", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "NetworkAcl" + }, + { + "Type": "AWS::EC2::NetworkAclEntry", + "Properties": { + "NetworkAclId": { + "Ref": "NetworkAcl" + }, + "RuleNumber": "100", + "Protocol": "6", + "RuleAction": "allow", + "Egress": "false", + "CidrBlock": "0.0.0.0/0", + "PortRange": { + "From": "80", + "To": "80" + } + }, + "Name": "InboundHTTPNetworkAclEntry" + }, + { + "Type": "AWS::EC2::NetworkAclEntry", + "Properties": { + "NetworkAclId": { + "Ref": "NetworkAcl" + }, + "RuleNumber": "101", + "Protocol": "6", + "RuleAction": "allow", + "Egress": "false", + "CidrBlock": "0.0.0.0/0", + "PortRange": { + "From": "22", + "To": "22" + } + }, + "Name": "InboundSSHNetworkAclEntry" + }, + { + "Type": "AWS::EC2::NetworkAclEntry", + "Properties": { + "NetworkAclId": { + "Ref": "NetworkAcl" + }, + "RuleNumber": "102", + "Protocol": "6", + "RuleAction": "allow", + "Egress": "false", + "CidrBlock": "0.0.0.0/0", + "PortRange": { + "From": "1024", + "To": "65535" + } + }, + "Name": "InboundResponsePortsNetworkAclEntry" + }, + { + "Type": "AWS::EC2::NetworkAclEntry", + "Properties": { + "NetworkAclId": { + "Ref": "NetworkAcl" + }, + "RuleNumber": "100", + "Protocol": "6", + "RuleAction": "allow", + "Egress": "true", + "CidrBlock": "0.0.0.0/0", + "PortRange": { + "From": "80", + "To": "80" + } + }, + "Name": "OutBoundHTTPNetworkAclEntry" + }, + { + "Type": "AWS::EC2::NetworkAclEntry", + "Properties": { + "NetworkAclId": { + "Ref": "NetworkAcl" + }, + "RuleNumber": "101", + "Protocol": "6", + "RuleAction": "allow", + "Egress": "true", + "CidrBlock": "0.0.0.0/0", + "PortRange": { + "From": "443", + "To": "443" + } + }, + "Name": "OutBoundHTTPSNetworkAclEntry" + }, + { + "Type": "AWS::EC2::NetworkAclEntry", + "Properties": { + "NetworkAclId": { + "Ref": "NetworkAcl" + }, + "RuleNumber": "102", + "Protocol": "6", + "RuleAction": "allow", + "Egress": "true", + "CidrBlock": "0.0.0.0/0", + "PortRange": { + "From": "1024", + "To": "65535" + } + }, + "Name": "OutBoundResponsePortsNetworkAclEntry" + }, + { + "Type": "AWS::EC2::SubnetNetworkAclAssociation", + "Properties": { + "SubnetId": { + "Ref": "Subnet" + }, + "NetworkAclId": { + "Ref": "NetworkAcl" + } + }, + "Name": "SubnetNetworkAclAssociation" + }, + { + "Type": "AWS::EC2::EIP", + "DependsOn": "AttachGateway", + "Properties": { + "Domain": "vpc", + "InstanceId": { + "Ref": "WebServerInstance" + } + }, + "Name": "IPAddress" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "443", + "ToPort": "443", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "icmp", + "FromPort": "8", + "ToPort": "-1", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + }, + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "Comment": "Install a simple PHP application", + "AWS::CloudFormation::Init": { + "config": { + "packages": { + "yum": { + "httpd": [], + "php": [] + } + }, + "files": { + "/var/www/html/index.php": { + "content": "AWS CloudFormation sample PHP application';\n?>\n", + "mode": "000644", + "owner": "apache", + "group": "apache" + }, + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -s ", + { + "Ref": "AWS::StackId" + }, + " -r WebServerInstance ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": "true", + "ensureRunning": "true" + }, + "sendmail": { + "enabled": "false", + "ensureRunning": "false" + } + } + } + } + } + }, + "Properties": { + "ImageId": "ami-a4c7edb2", + "SecurityGroupIds": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "SubnetId": { + "Ref": "Subnet" + }, + "InstanceType": "m1.small", + "KeyName": { + "Ref": "KeyName" + }, + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash\n", + "yum update -y aws-cfn-bootstrap\n", + "# Helper function\n", + "function error_exit\n", + "{\n", + " /opt/aws/bin/cfn-signal -e 1 -r \"$1\" '", + { + "Ref": "WebServerWaitHandle" + }, + "'\n", + " exit 1\n", + "}\n", + "# Install the simple web page\n", + "/opt/aws/bin/cfn-init -s ", + { + "Ref": "AWS::StackId" + }, + " -r WebServerInstance ", + " --region ", + { + "Ref": "AWS::Region" + }, + " || error_exit 'Failed to run cfn-init'\n", + "# Start up the cfn-hup daemon to listen for changes to the Web Server metadata\n", + "/opt/aws/bin/cfn-hup || error_exit 'Failed to start cfn-hup'\n", + "# All done so signal success\n", + "/opt/aws/bin/cfn-signal -e 0 -r \"WebServer setup complete\" '", + { + "Ref": "WebServerWaitHandle" + }, + "'\n" + ] + ] + } + } + }, + "Name": "WebServerInstance" + }, + { + "Type": "AWS::CloudFormation::WaitConditionHandle", + "Name": "WebServerWaitHandle" + }, + { + "Type": "AWS::CloudFormation::WaitCondition", + "DependsOn": "WebServerInstance", + "Properties": { + "Handle": { + "Ref": "WebServerWaitHandle" + }, + "Timeout": "300" + }, + "Name": "WebServerWaitCondition" + } + ], + "Outputs": { + "URL": { + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "WebServerInstance", + "PublicIp" + ] + } + ] + ] + }, + "Description": "Newly created application URL" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT107 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT107 new file mode 100644 index 0000000..8ff22a9 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT107 @@ -0,0 +1,257 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/community/solutions/read_only_user/read_only_user.json" + ], + "timestamp": 1642972590733, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/community/solutions/read_only_user/read_only_user.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT107", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::policy", + "aws::iam::user", + "aws::iam::managedpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT107", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Creates a read only user, that has permission to controls it's own Access Keys and MFA device", + "Parameters": { + "Password": { + "NoEcho": "true", + "Description": "IAM user's console password, that follows accounts IAM password policy", + "Type": "String" + } + }, + "Resources": [ + { + "Type": "AWS::IAM::User", + "Properties": { + "Path": "/", + "LoginProfile": { + "Password": { + "Ref": "Password" + }, + "PasswordResetRequired": "True" + } + }, + "Name": "User" + }, + { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyName": "read_only_policy", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "autoscaling:Describe*", + "cloudformation:Describe*", + "cloudformation:GetTemplate", + "cloudformation:List*", + "ec2:Describe*", + "ec2:GetConsoleOutput", + "s3:List*", + "s3:GetBucketLocation", + "s3:GetBucketPolicy", + "s3:GetLifecycleConfiguration", + "tag:Get*" + ], + "Resource": "*" + } + ] + }, + "Users": [ + { + "Ref": "User" + } + ] + }, + "Name": "ReadPolicy" + }, + { + "Type": "AWS::IAM::ManagedPolicy", + "Properties": { + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "iam:CreateVirtualMFADevice", + "iam:EnableMFADevice", + "iam:ResyncMFADevice" + ], + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "AWS::AccountId" + }, + ":mfa/${aws:username}" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "AWS::AccountId" + }, + ":user/${aws:username}" + ] + ] + } + ] + }, + { + "Effect": "Allow", + "Action": [ + "iam:DeactivateMFADevice", + "iam:DeleteVirtualMFADevice" + ], + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "AWS::AccountId" + }, + ":mfa/${aws:username}" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "AWS::AccountId" + }, + ":user/${aws:username}" + ] + ] + } + ], + "Condition": { + "Bool": { + "aws:MultiFactorAuthPresent": true + } + } + }, + { + "Effect": "Allow", + "Action": [ + "iam:ListMFADevices", + "iam:ListVirtualMFADevices", + "iam:ListUsers" + ], + "Resource": "*" + } + ] + }, + "Users": [ + { + "Ref": "User" + } + ] + }, + "Name": "MFAPolicy" + }, + { + "Type": "AWS::IAM::ManagedPolicy", + "Properties": { + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "iam:*LoginProfile", + "iam:*AccessKey*" + ], + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "AWS::AccountId" + }, + ":user/${aws:username}" + ] + ] + } + ] + }, + { + "Effect": "Allow", + "Action": [ + "iam:ListAccount*", + "iam:GetAccount*", + "iam:ListUsers" + ], + "Resource": [ + "*" + ] + } + ] + }, + "Users": [ + { + "Ref": "User" + } + ] + }, + "Name": "AccessKeyPolicy" + } + ], + "Outputs": { + "User": { + "Value": { + "Ref": "User" + } + }, + "ConsoleAccess": { + "Value": { + "Fn::Join": [ + "", + [ + "https://", + { + "Ref": "AWS::AccountId" + }, + ".signin.aws.amazon.com/console" + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT11 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT11 new file mode 100644 index 0000000..1f04296 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT11 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/PyPlate/python_example.yaml" + ], + "timestamp": 1642972590312, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/PyPlate/python_example.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT11", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT11", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "tests String macro functions", + "Parameters": { + "Tags": { + "Default": "Env=Prod,Application=MyApp,BU=ModernisationTeam", + "Type": "CommaDelimitedList" + } + }, + "Resources": [ + { + "Type": "AWS::S3::Bucket", + "Properties": { + "Tags": "#!PyPlate\noutput = []\nfor tag in params['Tags']:\n key, value = tag.split('=')\n output.append({\"Key\": key, \"Value\": value})\n" + }, + "Name": "S3Bucket" + } + ], + "Transform": [ + "PyPlate" + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT12 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT12 new file mode 100644 index 0000000..8ec7a32 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT12 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/StringFunctions/string.yaml" + ], + "timestamp": 1642972590315, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/StringFunctions/string.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT12", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::lambda::permission", + "aws::cloudformation::macro", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT12", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "logs:*" + ], + "Resource": "arn:aws:logs:*:*:*" + } + ] + } + } + ] + }, + "Name": "TransformExecutionRole" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "import traceback\n\n\ndef handler(event, context):\n response = {\n \"requestId\": event[\"requestId\"],\n \"status\": \"success\"\n }\n try:\n operation = event[\"params\"][\"Operation\"]\n input = event[\"params\"][\"InputString\"]\n no_param_string_funcs = [\"Upper\", \"Lower\", \"Capitalize\", \"Title\", \"SwapCase\"]\n if operation in no_param_string_funcs:\n response[\"fragment\"] = getattr(input, operation.lower())()\n elif operation == \"Strip\":\n chars = None\n if \"Chars\" in event[\"params\"]:\n chars = event[\"params\"][\"Chars\"]\n response[\"fragment\"] = input.strip(chars)\n elif operation == \"Replace\":\n old = event[\"params\"][\"Old\"]\n new = event[\"params\"][\"New\"]\n response[\"fragment\"] = input.replace(old, new)\n elif operation == \"MaxLength\":\n length = int(event[\"params\"][\"Length\"])\n if len(input) <= length:\n response[\"fragment\"] = input\n elif \"StripFrom\" in event[\"params\"]:\n if event[\"params\"][\"StripFrom\"] == \"Left\":\n response[\"fragment\"] = input[len(input)-length:]\n elif event[\"params\"][\"StripFrom\"] != \"Right\":\n response[\"status\"] = \"failure\"\n else:\n response[\"fragment\"] = input[:length]\n else:\n response[\"status\"] = \"failure\"\n except Exception as e:\n traceback.print_exc()\n response[\"status\"] = \"failure\"\n response[\"errorMessage\"] = str(e)\n return response\n" + }, + "Handler": "index.handler", + "Runtime": "python3.6", + "Role": { + "Fn::GetAtt": [ + "TransformExecutionRole", + "Arn" + ] + } + }, + "Name": "TransformFunction" + }, + { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "TransformFunction", + "Arn" + ] + }, + "Principal": "cloudformation.amazonaws.com" + }, + "Name": "TransformFunctionPermissions" + }, + { + "Type": "AWS::CloudFormation::Macro", + "Properties": { + "Name": "String", + "Description": "Provides various string processing functions", + "FunctionName": { + "Fn::GetAtt": [ + "TransformFunction", + "Arn" + ] + } + }, + "Name": "Transform" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT13 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT13 new file mode 100644 index 0000000..bf02994 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT13 @@ -0,0 +1,183 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/StringFunctions/string_example.yaml" + ], + "timestamp": 1642972590319, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/StringFunctions/string_example.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT13", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT13", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "tests String macro functions", + "Parameters": { + "InputString": { + "Default": "This is a test input string", + "Type": "String" + } + }, + "Resources": [ + { + "Type": "AWS::S3::Bucket", + "Properties": { + "Tags": [ + { + "Key": "Upper", + "Value": { + "Fn::Transform": [ + { + "Name": "String", + "Parameters": { + "InputString": { + "Ref": "InputString" + }, + "Operation": "Upper" + } + } + ] + } + }, + { + "Key": "Lower", + "Value": { + "Fn::Transform": [ + { + "Name": "String", + "Parameters": { + "InputString": { + "Ref": "InputString" + }, + "Operation": "Lower" + } + } + ] + } + }, + { + "Key": "Capitalize", + "Value": { + "Fn::Transform": [ + { + "Name": "String", + "Parameters": { + "InputString": { + "Ref": "InputString" + }, + "Operation": "Capitalize" + } + } + ] + } + }, + { + "Key": "Title", + "Value": { + "Fn::Transform": [ + { + "Name": "String", + "Parameters": { + "InputString": { + "Ref": "InputString" + }, + "Operation": "Title" + } + } + ] + } + }, + { + "Key": "Replace", + "Value": { + "Fn::Transform": [ + { + "Name": "String", + "Parameters": { + "InputString": { + "Ref": "InputString" + }, + "Operation": "Replace", + "Old": " ", + "New": "_" + } + } + ] + } + }, + { + "Key": "Strip", + "Value": { + "Fn::Transform": [ + { + "Name": "String", + "Parameters": { + "InputString": { + "Ref": "InputString" + }, + "Operation": "Strip", + "Chars": "Tgif" + } + } + ] + } + }, + { + "Key": "ShortenLeft", + "Value": { + "Fn::Transform": [ + { + "Name": "String", + "Parameters": { + "InputString": { + "Ref": "InputString" + }, + "Operation": "MaxLength", + "Length": 4, + "StripFrom": "Left" + } + } + ] + } + }, + { + "Key": "ShortenRight", + "Value": { + "Fn::Transform": [ + { + "Name": "String", + "Parameters": { + "InputString": { + "Ref": "InputString" + }, + "Operation": "MaxLength", + "Length": 4 + } + } + ] + } + } + ] + }, + "Name": "S3Bucket" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT14 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT14 new file mode 100644 index 0000000..19b985c --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT14 @@ -0,0 +1,418 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/Elasticache-snapshot.template" + ], + "timestamp": 1642972590324, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/Elasticache-snapshot.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT14", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::elasticache::replicationgroup", + "aws::lambda::permission", + "aws::lambda::function", + "aws::elasticache::parametergroup", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "custom::region", + "aws::elasticache::subnetgroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT14", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Create a VPC containing two subnets and an auto scaling group containing instances with Internet access.", + "Parameters": { + "RedisNodeType": { + "Description": "elasticache Redis Node Instance Type", + "Type": "String", + "Default": "cache.m3.medium", + "AllowedValues": [ + "cache.m3.medium" + ], + "ConstraintDescription": "must be an m3.medium - the least costly machine that can use a Replication Group." + }, + "CacheClusters": { + "Description": "elasticache nodes", + "Type": "String", + "Default": "2" + }, + "EnableSnapshotting": { + "Description": "elasticache snapshot enable", + "Type": "String", + "Default": "True", + "AllowedValues": [ + "True", + "False" + ] + }, + "SnapshotRetentionLimit": { + "Description": "elasticache Snapshot Retention Limit", + "Type": "String", + "Default": "28" + }, + "SnapshotWindow": { + "Description": "Snapshot Window", + "Type": "String", + "Default": "02:00-03:00" + } + }, + "Conditions": { + "EnableBackups": { + "Fn::Equals": [ + { + "Ref": "EnableSnapshotting" + }, + "True" + ] + } + }, + "Mappings": { + "AWSRegion2AZ": { + "us-east-1": { + "A": "us-east-1b", + "B": "us-east-1c", + "C": "us-east-1c", + "D": "us-east-1d" + }, + "us-west-1": { + "A": "us-west-1b", + "B": "us-west-1c" + }, + "us-west-2": { + "A": "us-west-2a", + "B": "us-west-2b", + "C": "us-west-2c" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/24" + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Name": "InternetGateway" + }, + { + "Type": "AWS::EC2::Route", + "DependsOn": [ + "InternetGateway", + "PublicInternetRouteTable" + ], + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + }, + "RouteTableId": { + "Ref": "PublicInternetRouteTable" + } + }, + "Name": "PublicInternetRoute" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "InternetGatewayId": { + "Ref": "InternetGateway" + }, + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "VPCGatewayAttachment" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PublicInternetRouteTable" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::FindInMap": [ + "AWSRegion2AZ", + { + "Ref": "AWS::Region" + }, + "A" + ] + }, + "CidrBlock": "10.0.0.0/25", + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PublicSubnetA" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::FindInMap": [ + "AWSRegion2AZ", + { + "Ref": "AWS::Region" + }, + "B" + ] + }, + "CidrBlock": "10.0.0.128/25", + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PublicSubnetB" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicInternetRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnetA" + } + }, + "Name": "PublicSubnetARouteTableAssociation" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicInternetRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnetB" + } + }, + "Name": "PublicSubnetBRouteTableAssociation" + }, + { + "Type": "AWS::ElastiCache::ParameterGroup", + "Properties": { + "CacheParameterGroupFamily": "redis2.8", + "Description": "RedisParameterGroup" + }, + "Name": "RedisParameterGroup" + }, + { + "Type": "AWS::ElastiCache::SubnetGroup", + "Properties": { + "Description": "RedisSubnetGroup", + "SubnetIds": [ + { + "Ref": "PublicSubnetA" + }, + { + "Ref": "PublicSubnetB" + } + ] + }, + "Name": "RedisSubnetGroup" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "RedisSecurityGroup", + "VpcId": { + "Ref": "VPC" + }, + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "6379", + "ToPort": "6379" + } + ] + }, + "Name": "RedisSecurityGroup" + }, + { + "Type": "AWS::ElastiCache::ReplicationGroup", + "Properties": { + "AutomaticFailoverEnabled": "true", + "CacheNodeType": "cache.m3.medium", + "CacheParameterGroupName": { + "Ref": "RedisParameterGroup" + }, + "CacheSubnetGroupName": { + "Ref": "RedisSubnetGroup" + }, + "Engine": "redis", + "EngineVersion": "2.8.24", + "NumCacheClusters": "2", + "PreferredCacheClusterAZs": [ + { + "Fn::FindInMap": [ + "AWSRegion2AZ", + { + "Ref": "AWS::Region" + }, + "A" + ] + }, + { + "Fn::FindInMap": [ + "AWSRegion2AZ", + { + "Ref": "AWS::Region" + }, + "B" + ] + } + ], + "ReplicationGroupDescription": "RedisReplicationGroup", + "SecurityGroupIds": [ + { + "Ref": "RedisSecurityGroup" + } + ] + }, + "Name": "RedisReplicationGroup" + }, + { + "Condition": "EnableBackups", + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "*" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "*" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "IamRoleLambda" + }, + { + "Condition": "EnableBackups", + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "EnableShapshot", + "Arn" + ] + }, + "Principal": "*" + }, + "Name": "LambdaExecutePermission" + }, + { + "Condition": "EnableBackups", + "DependsOn": [ + "EnableShapshot", + "LambdaExecutePermission", + "RedisReplicationGroup" + ], + "Type": "Custom::Region", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "EnableShapshot", + "Arn" + ] + }, + "SSClusterId": { + "Ref": "RedisReplicationGroup" + }, + "SSWindow": "02:00-03:00", + "SSRetentionLimit": "28" + }, + "Name": "EnableShapshotTrigger" + }, + { + "Condition": "EnableBackups", + "Type": "AWS::Lambda::Function", + "DeletionPolicy": "Delete", + "DependsOn": [ + "IamRoleLambda" + ], + "Properties": { + "Code": { + "ZipFile": "var response = require('cfn-response');\nexports.handler = function(event, context) {\n console.log('REQUEST RECEIVED:\\n', JSON.stringify(event));\n if (event.RequestType == 'Delete') {\n response.send(event, context, response.SUCCESS);\n return;\n }\n var ssClusterId = event.ResourceProperties.SSClusterId;\n var ssWindow = event.ResourceProperties.SSWindow;\n var ssRetentionLimit = event.ResourceProperties.SSRetentionLimit;\n var responseData = {};\n var params = {\n ReplicationGroupId: ssClusterId,\n SnapshottingClusterId: ssClusterId + '-002',\n SnapshotWindow: ssWindow,\n SnapshotRetentionLimit: ssRetentionLimit\n };\n if (ssClusterId && ssWindow && ssRetentionLimit) {\n var aws = require('aws-sdk');\n var elasticache = new aws.ElastiCache({apiVersion: '2015-02-02'});\n elasticache.modifyReplicationGroup(params, function(err, data) {\n if (err) {\n responseData = {Error: 'Issue with creating backup'};\n console.log(responseData.Error + ':\\n', err);\n response.send(event, context, response.FAILED, responseData);\n }\n else {\n console.log('backup:', JSON.stringify(data, null, 2));\n responseData = data;\n console.log(data);\n response.send(event, context, response.SUCCESS, responseData);\n };\n });\n } else {\n responseData = {Error: 'Not all parameters specified'};\n console.log(responseData.Error);\n response.send(event, context, response.FAILED, responseData);\n }\n};" + }, + "Handler": "index.handler", + "MemorySize": 128, + "Role": { + "Fn::GetAtt": [ + "IamRoleLambda", + "Arn" + ] + }, + "Runtime": "nodejs", + "Timeout": 30 + }, + "Name": "EnableShapshot" + } + ], + "Outputs": {} + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT15 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT15 new file mode 100644 index 0000000..466ce50 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT15 @@ -0,0 +1,157 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/FindInMap_Inside_Sub.yaml" + ], + "timestamp": 1642972590331, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/FindInMap_Inside_Sub.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT15", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT15", + "collection": "cloudformationtemplate", + "json": { + "Metadata": { + "License": "Apache-2.0" + }, + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template FindInMap_Inside_Sub.yaml This template shows a working example of using the new Fn::Sub function with the Fn::FindInMap function embedded inside it.\nThis creates an EC2 instance with a customized UserData field. The instance itself is not the point of this example, just the UserData field.\nThis template outputs a AWS CLI command for viewing the UserData on Mac/Linux. You can also use the web console by going to the EC2 service, instances, select your instance, click \"actions\" above the list, Instance Settings, View/Change User Data.\n**WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "EnvNameParam": { + "Description": "Example 'dev' or 'test' switch, determines which settings are passed to userdata.", + "Type": "String", + "Default": "dev", + "AllowedValues": [ + "dev", + "test" + ] + }, + "AMIidParam": { + "Description": "Enter a valid AMI ID for your selected region, suggested to use latest Amazon Linux.", + "Type": "AWS::EC2::Image::Id", + "Default": "ami-5ec1673e" + }, + "InstanceTypeParam": { + "Description": "Enter a valid instance type for your selected region.", + "Type": "String", + "Default": "t2.micro" + } + }, + "Mappings": { + "EnvMap": { + "dev": { + "UserToCreate": "devuser", + "WebServer": "httpd" + }, + "test": { + "UserToCreate": "testuser", + "WebServer": "nginx" + } + } + }, + "Conditions": { + "ExampleConditionIfDev": { + "Fn::Equals": [ + { + "Ref": "EnvNameParam" + }, + "dev" + ] + } + }, + "Resources": [ + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "FindInMap-Inside-Sub-Example" + }, + "Name": "InstanceSecurityGroup" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": "ami-5ec1673e", + "InstanceType": "t2.micro", + "SecurityGroupIds": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Sub": [ + "#!/bin/bash\n\n# Examples of using Fn::FindInMap inside Fn::Sub\nuseradd ${LocalFindInMapVarUsername}\nyum install ${LocalFindInMapVarWebserver}\nservice ${LocalFindInMapVarWebserver} start\nchkconfig ${LocalFindInMapVarWebserver} on\n\n# Example of using Fn::If inside Fn::Sub\necho \"${LocalIfVar}\" > /etc/ssh/banner_text\n\n# Example of using Fn::GetAtt inside Fn::Sub\necho \"Security Group ID is ${InstanceSecurityGroup.GroupId}\" >> /etc/ssh/banner_text\n\n# Example of using Ref inside Fn::Sub\necho \"Instance type is ${InstanceTypeParam}\" >> /etc/ssh/banner_text\n\necho \"Banner /etc/ssh/banner_text\" >> /etc/ssh/sshd_config\nservice sshd restart\n", + { + "LocalFindInMapVarUsername": { + "Fn::FindInMap": [ + "EnvMap", + { + "Ref": "EnvNameParam" + }, + "UserToCreate" + ] + }, + "LocalFindInMapVarWebserver": { + "Fn::FindInMap": [ + "EnvMap", + { + "Ref": "EnvNameParam" + }, + "WebServer" + ] + }, + "LocalIfVar": { + "Fn::If": [ + "ExampleConditionIfDev", + "This box is development", + "This box is testing" + ] + } + } + ] + } + } + }, + "Name": "EC2Instance" + } + ], + "Outputs": { + "CLIcommand": { + "Description": "CLI command to view the user data on Mac/Linux.", + "Value": { + "Fn::Join": [ + "", + [ + "aws ec2 describe-instance-attribute --instance-id ", + { + "Ref": "EC2Instance" + }, + " --attribute userData | awk '{print $2}' | base64 --decode" + ] + ] + } + }, + "WebConsoleInstructions": { + "Description": "Instructions for using the web console to view userdata.", + "Value": "Log in to the web console, navigate to the EC2 service section, select instances on the left, select your instance from the list, click \"actions\" above the list, mouse over Instance Settings, click View/Change User Data." + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT16 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT16 new file mode 100644 index 0000000..20f741d --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT16 @@ -0,0 +1,288 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/HostnameChangeRHEL-Metadata.template" + ], + "timestamp": 1642972590334, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/HostnameChangeRHEL-Metadata.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT16", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT16", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Persistantly sets the hostname of a RHEL7 EC2 instance on start", + "Mappings": { + "RegionMap": { + "us-east-1": { + "32": "ami-6411e20d", + "64": "ami-7a11e213" + }, + "us-west-1": { + "32": "ami-c9c7978c", + "64": "ami-cfc7978a" + }, + "eu-west-1": { + "32": "ami-37c2f643", + "64": "ami-31c2f645" + }, + "ap-southeast-1": { + "32": "ami-66f28c34", + "64": "ami-60f28c32" + }, + "ap-northeast-1": { + "32": "ami-9c03a89d", + "64": "ami-a003a8a1" + } + } + }, + "Parameters": { + "SSHKey": { + "Description": "Select your SSH Keypair", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceTypeParameter": { + "Type": "String", + "Default": "m4.xlarge", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "Description": "Select your Instancetype. Default is m4.xlarge." + }, + "InstanceHostname": { + "Description": "Select your Instance Hostname", + "Type": "String", + "Default": "RedHatDevInstanceHostname" + }, + "InstanceDomainName": { + "Description": "Select your instance DomainName", + "Type": "String", + "Default": "redhat.domainname.org" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "mkscriptrunclean": [ + "mkscript", + "run", + "clean" + ] + }, + "mkscript": { + "files": { + "/tmp/changehostname.sh": { + "content": "#!/bin/bash\n# Replace this with your domain\nDOMAIN=redhat.domainname.org\nHOSTNAME=RedHatDevInstanceHostname\nIPV4=/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4\n# Set the host name\nhostname RedHatDevInstanceHostname\necho testing >> /tmp/testing\necho RedHatDevInstanceHostname> /etc/hostname\n# Add fqdn to hosts file\necho 'HOSTNAME=RedHatDevInstanceHostname'>> /etc/sysconfig/network\necho 'preserve_hostname: true' >> /etc/cloud/cloud.cfg\ncat< /etc/hosts\n127.0.0.1 localhost\n$IPV4 $HOSTNAME.$DOMAIN $HOSTNAME\nEOF", + "mode": "000777", + "owner": "root", + "group": "root" + }, + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource MyInstance ", + " --configsets mkscriptrunclean ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + }, + "run": { + "commands": { + "runtmp": { + "command": "sh changehostname.sh", + "cwd": "/tmp/" + } + } + }, + "clean": { + "commands": { + "cleanup": { + "command": "rm -rf *", + "cwd": "/tmp/" + } + } + } + } + }, + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionMap", + { + "Ref": "AWS::Region" + }, + "64" + ] + }, + "InstanceType": "m4.xlarge", + "KeyName": { + "Ref": "SSHKey" + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash\n", + "# Download wget\n", + "yum install wget -y\n", + "# Download PIP and easy_install\n", + "curl -o get-pip.py https://bootstrap.pypa.io/get-pip.py\n", + "curl -o ez_setup.py https://bootstrap.pypa.io/ez_setup.py\n", + "# Installing PIP and easy_instal;\n", + "python get-pip.py\n", + "python ez_setup.py\n", + "# Install CloudFormation Helpers\n", + "easy_install --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", + "cp -f `pip show aws-cfn-bootstrap 2>/dev/null|grep -E '^Location' |awk -F: '{print $2}'`/init/redhat/cfn-hup /etc/init.d/\n", + "chmod 755 /etc/init.d/cfn-hup\n", + "chkconfig --add cfn-hup\n", + "# Install the files and packages from the metadata\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource MyInstance ", + " --configsets mkscriptrunclean ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "MyInstance" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT17 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT17 new file mode 100644 index 0000000..e5ea300 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT17 @@ -0,0 +1,152 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/HostnameChangeRHEL-Userdata.template" + ], + "timestamp": 1642972590339, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/HostnameChangeRHEL-Userdata.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT17", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT17", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Persistantly sets the hostname of a RHEL7 EC2 instance on start", + "Mappings": { + "RegionMap": { + "us-east-1": { + "32": "ami-6411e20d", + "64": "ami-7a11e213" + }, + "us-west-1": { + "32": "ami-c9c7978c", + "64": "ami-cfc7978a" + }, + "eu-west-1": { + "32": "ami-37c2f643", + "64": "ami-31c2f645" + }, + "ap-southeast-1": { + "32": "ami-66f28c34", + "64": "ami-60f28c32" + }, + "ap-northeast-1": { + "32": "ami-9c03a89d", + "64": "ami-a003a8a1" + } + } + }, + "Parameters": { + "SSHKey": { + "Description": "Select your SSH Key", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceTypeParameter": { + "Type": "String", + "Default": "m4.xlarge", + "AllowedValues": [ + "t2.micro", + "m4.xlarge", + "m1.large" + ], + "Description": "Select Instancetype. Default is m4.xlarge." + }, + "InstanceHostname": { + "Description": "Select your you instance Hostname", + "Type": "String", + "Default": "RedHatDevInstance" + }, + "InstanceDomainName": { + "Description": "Select your instance DomainName", + "Type": "String", + "Default": "redhat1.org" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionMap", + { + "Ref": "AWS::Region" + }, + "64" + ] + }, + "InstanceType": "m4.xlarge", + "KeyName": { + "Ref": "SSHKey" + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash\n", + "# Replace this with your domain\n", + "DOMAIN=", + { + "Ref": "InstanceDomainName" + }, + "\n", + "HOSTNAME=", + { + "Ref": "InstanceHostname" + }, + "\n", + "IPV4=/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4", + "\n", + "# Set the host name\n", + "hostname", + " ", + { + "Ref": "InstanceHostname" + }, + "\n", + "echo", + " ", + { + "Ref": "InstanceHostname" + }, + "> /etc/hostname\n", + "# Add fqdn to hosts file\n", + "echo 'HOSTNAME=", + { + "Ref": "InstanceHostname" + }, + "'", + ">> /etc/sysconfig/network\n", + "echo 'preserve_hostname: true' >> /etc/cloud/cloud.cfg\n", + "cat< /etc/hosts\n", + "127.0.0.1 localhost\n", + "$IPV4 $HOSTNAME.$DOMAIN $HOSTNAME\n", + "EOF" + ] + ] + } + } + }, + "Name": "MyInstance" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT18 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT18 new file mode 100644 index 0000000..490983f --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT18 @@ -0,0 +1,403 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/Config/Config.yaml" + ], + "timestamp": 1642972590342, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/Config/Config.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT18", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::config::configurationrecorder", + "aws::s3::bucket", + "aws::config::deliverychannel", + "aws::iam::role", + "aws::ec2::volume", + "aws::config::configrule", + "aws::lambda::permission", + "aws::lambda::function", + "aws::sns::topicpolicy", + "aws::sns::topic" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT18", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template Config: This template demonstrates the usage of AWS Config resources. **WARNING** You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "DeliveryChannelExists": { + "Type": "String", + "Description": "Do you have an exisiting AWS Config delivery channel?", + "Default": "false", + "AllowedValues": [ + "false", + "true" + ] + }, + "Ec2VolumeAutoEnableIO": { + "Type": "String", + "Default": "false", + "AllowedValues": [ + "false", + "true" + ] + }, + "Ec2VolumeTagKey": { + "Type": "String", + "Default": "CostCenter" + } + }, + "Conditions": { + "CreateDeliveryChannel": { + "Fn::Equals": [ + { + "Ref": "DeliveryChannelExists" + }, + "false" + ] + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Volume", + "Properties": { + "AutoEnableIO": "false", + "Size": "5", + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "Tags": [ + { + "Key": "CostCenter", + "Value": "Ec2VolumeTagValue" + } + ] + }, + "Name": "Ec2Volume" + }, + { + "Type": "AWS::Config::ConfigurationRecorder", + "Properties": { + "Name": "default", + "RecordingGroup": { + "ResourceTypes": [ + "AWS::EC2::Volume" + ] + }, + "RoleARN": { + "Fn::GetAtt": [ + "ConfigRole", + "Arn" + ] + } + }, + "Name": "ConfigRecorder" + }, + { + "Condition": "CreateDeliveryChannel", + "Type": "AWS::Config::DeliveryChannel", + "Properties": { + "ConfigSnapshotDeliveryProperties": { + "DeliveryFrequency": "Six_Hours" + }, + "S3BucketName": { + "Ref": "ConfigBucket" + }, + "SnsTopicARN": { + "Ref": "ConfigTopic" + } + }, + "Name": "DeliveryChannel" + }, + { + "Type": "AWS::S3::Bucket", + "Name": "ConfigBucket" + }, + { + "Type": "AWS::SNS::Topic", + "Name": "ConfigTopic" + }, + { + "Type": "AWS::SNS::TopicPolicy", + "Properties": { + "PolicyDocument": { + "Id": "ConfigTopicPolicy", + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "config.amazonaws.com" + }, + "Action": "SNS:Publish", + "Resource": "*" + } + ] + }, + "Topics": [ + { + "Ref": "ConfigTopic" + } + ] + }, + "Name": "ConfigTopicPolicy" + }, + { + "Type": "AWS::Config::ConfigRule", + "Properties": { + "InputParameters": { + "tag1Key": "CostCenter" + }, + "Scope": { + "ComplianceResourceTypes": [ + "AWS::EC2::Volume" + ] + }, + "Source": { + "Owner": "AWS", + "SourceIdentifier": "REQUIRED_TAGS" + } + }, + "DependsOn": "ConfigRecorder", + "Name": "ConfigRuleForVolumeTags" + }, + { + "Type": "AWS::Config::ConfigRule", + "Properties": { + "ConfigRuleName": "ConfigRuleForVolumeAutoEnableIO", + "Scope": { + "ComplianceResourceId": { + "Ref": "Ec2Volume" + }, + "ComplianceResourceTypes": [ + "AWS::EC2::Volume" + ] + }, + "Source": { + "Owner": "CUSTOM_LAMBDA", + "SourceDetails": [ + { + "EventSource": "aws.config", + "MessageType": "ConfigurationItemChangeNotification" + } + ], + "SourceIdentifier": { + "Fn::GetAtt": [ + "VolumeAutoEnableIOComplianceCheck", + "Arn" + ] + } + } + }, + "DependsOn": [ + "ConfigPermissionToCallLambda", + "ConfigRecorder" + ], + "Name": "ConfigRuleForVolumeAutoEnableIO" + }, + { + "Type": "AWS::Lambda::Permission", + "Properties": { + "FunctionName": { + "Fn::GetAtt": [ + "VolumeAutoEnableIOComplianceCheck", + "Arn" + ] + }, + "Action": "lambda:InvokeFunction", + "Principal": "config.amazonaws.com" + }, + "Name": "ConfigPermissionToCallLambda" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": { + "Fn::Sub": "var aws = require('aws-sdk');\nvar config = new aws.ConfigService();\nvar ec2 = new aws.EC2();\nexports.handler = function(event, context) {\n compliance = evaluateCompliance(event, function(compliance, event) {\n var configurationItem = JSON.parse(event.invokingEvent).configurationItem;\n var putEvaluationsRequest = {\n Evaluations: [{\n ComplianceResourceType: configurationItem.resourceType,\n ComplianceResourceId: configurationItem.resourceId,\n ComplianceType: compliance,\n OrderingTimestamp: configurationItem.configurationItemCaptureTime\n }],\n ResultToken: event.resultToken\n };\n config.putEvaluations(putEvaluationsRequest, function(err, data) {\n if (err) context.fail(err);\n else context.succeed(data);\n });\n });\n};\nfunction evaluateCompliance(event, doReturn) {\n var configurationItem = JSON.parse(event.invokingEvent).configurationItem;\n var status = configurationItem.configurationItemStatus;\n if (configurationItem.resourceType !== 'AWS::EC2::Volume' || event.eventLeftScope || (status !== 'OK' && status !== 'ResourceDiscovered'))\n doReturn('NOT_APPLICABLE', event);\n else ec2.describeVolumeAttribute({VolumeId: configurationItem.resourceId, Attribute: 'autoEnableIO'}, function(err, data) {\n if (err) context.fail(err);\n else if (data.AutoEnableIO.Value) doReturn('COMPLIANT', event);\n else doReturn('NON_COMPLIANT', event);\n });\n}\n" + } + }, + "Handler": "index.handler", + "Runtime": "nodejs", + "Timeout": "30", + "Role": { + "Fn::GetAtt": [ + "LambdaExecutionRole", + "Arn" + ] + } + }, + "Name": "VolumeAutoEnableIOComplianceCheck" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "logs:*", + "config:PutEvaluations", + "ec2:DescribeVolumeAttribute" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "LambdaExecutionRole" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "config.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AWSConfigRole" + ], + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "s3:GetBucketAcl", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:aws:s3:::", + { + "Ref": "ConfigBucket" + } + ] + ] + } + }, + { + "Effect": "Allow", + "Action": "s3:PutObject", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:aws:s3:::", + { + "Ref": "ConfigBucket" + }, + "/AWSLogs/", + { + "Ref": "AWS::AccountId" + }, + "/*" + ] + ] + }, + "Condition": { + "StringEquals": { + "s3:x-amz-acl": "bucket-owner-full-control" + } + } + }, + { + "Effect": "Allow", + "Action": "config:Put*", + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "ConfigRole" + } + ], + "Outputs": { + "ConfigRuleForVolumeTagsArn": { + "Value": { + "Fn::GetAtt": [ + "ConfigRuleForVolumeTags", + "Arn" + ] + } + }, + "ConfigRuleForVolumeTagsConfigRuleId": { + "Value": { + "Fn::GetAtt": [ + "ConfigRuleForVolumeTags", + "ConfigRuleId" + ] + } + }, + "ConfigRuleForVolumeAutoEnableIOComplianceType": { + "Value": { + "Fn::GetAtt": [ + "ConfigRuleForVolumeAutoEnableIO", + "Compliance.Type" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT19 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT19 new file mode 100644 index 0000000..e502a32 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT19 @@ -0,0 +1,644 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/DMS/DMSAuroraToS3FullLoadAndOngoingReplication.json" + ], + "timestamp": 1642972590348, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/DMS/DMSAuroraToS3FullLoadAndOngoingReplication.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT19", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbclusterparametergroup", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::rds::dbcluster", + "aws::ec2::routetable", + "aws::rds::dbsubnetgroup", + "aws::ec2::securitygroup", + "aws::s3::bucket", + "aws::iam::role", + "aws::ec2::route", + "aws::dms::replicationsubnetgroup", + "aws::ec2::internetgateway", + "aws::dms::endpoint", + "aws::rds::dbinstance", + "aws::ec2::subnetroutetableassociation", + "aws::dms::replicationinstance", + "aws::ec2::vpcgatewayattachment", + "aws::dms::replicationtask" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT19", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This CloudFormation sample template DMSAuroraToS3FullLoadAndOngoingReplication creates an Aurora RDS instance and DMS instance in a VPC, and a S3 bucket. The Aurora RDS instance is configured as the DMS Source Endpoint and the S3 bucket is configured as the DMS Target Endpoint. A DMS task is created and configured to migrate existing data and replicate ongoing changes from the source endpoint to the target endpoint. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "ClientIP": { + "Description": "The IP address range that can be used to connect to the RDS instances from your local machine. It must be a valid IP CIDR range of the form x.x.x.x/x. Pls get your address using checkip.amazonaws.com or whatsmyip.org", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "It must be a valid IP CIDR range of the form x.x.x.x/x. Suggest to enable access to your IP address only. Pls get your address using checkip.amazonaws.com or whatsmyip.org." + }, + "ExistsDMSVPCRole": { + "Default": "N", + "Description": "If the dms-vpc-role exists in your account, please enter Y, else enter N", + "Type": "String", + "MinLength": "1", + "MaxLength": "1", + "AllowedPattern": "[YN]", + "ConstraintDescription": "Permitted value is Y or N." + }, + "ExistsDMSCloudwatchRole": { + "Default": "N", + "Description": "If the dms-cloudwatch-logs-role exists in your account, please enter Y, else enter N", + "Type": "String", + "MinLength": "1", + "MaxLength": "1", + "AllowedPattern": "[YN]", + "ConstraintDescription": "Permitted value is Y or N." + } + }, + "Conditions": { + "NotExistsDMSVPCRole": { + "Fn::Equals": [ + { + "Ref": "ExistsDMSVPCRole" + }, + "N" + ] + }, + "NotExistsDMSCloudwatchRole": { + "Fn::Equals": [ + { + "Ref": "ExistsDMSCloudwatchRole" + }, + "N" + ] + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/24", + "EnableDnsSupport": "true", + "EnableDnsHostnames": "true", + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + }, + { + "Key": "Name", + "Value": { + "Ref": "AWS::StackName" + } + } + ] + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "CidrBlock": "10.0.0.0/26", + "AvailabilityZone": { + "Fn::Select": [ + "0", + { + "Fn::GetAZs": "" + } + ] + }, + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "DBSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "CidrBlock": "10.0.0.64/26", + "AvailabilityZone": { + "Fn::Select": [ + "1", + { + "Fn::GetAZs": "" + } + ] + }, + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "DBSubnet2" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "InternetGateway" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "InternetGatewayId": { + "Ref": "InternetGateway" + } + }, + "Name": "AttachGateway" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "Name": "RouteTable" + }, + { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "RouteTable" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + } + }, + "DependsOn": [ + "AttachGateway" + ], + "Name": "Route" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "SubnetId": { + "Ref": "DBSubnet1" + }, + "RouteTableId": { + "Ref": "RouteTable" + } + }, + "Name": "SubnetRouteTableAssociation" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "SubnetId": { + "Ref": "DBSubnet2" + }, + "RouteTableId": { + "Ref": "RouteTable" + } + }, + "Name": "SubnetRouteTableAssociation1" + }, + { + "Type": "AWS::RDS::DBSubnetGroup", + "Properties": { + "DBSubnetGroupDescription": "Subnets available for the Aurora SampleDB DB Instance", + "SubnetIds": [ + { + "Ref": "DBSubnet1" + }, + { + "Ref": "DBSubnet2" + } + ] + }, + "Name": "AuroraDBSubnetGroup" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Security group for Aurora SampleDB DB Instance", + "GroupName": "Aurora SampleDB Security Group", + "VpcId": { + "Ref": "VPC" + }, + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "3306", + "ToPort": "3306", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "3306", + "ToPort": "3306", + "CidrIp": "10.0.0.0/24" + } + ] + }, + "Name": "AuroraSecurityGroup" + }, + { + "Type": "AWS::RDS::DBClusterParameterGroup", + "Properties": { + "Description": "Enables bin_log prerequisites", + "Family": "aurora5.6", + "Parameters": { + "binlog_format": "ROW", + "binlog_checksum": "NONE" + } + }, + "Name": "AuroraClusterParameterGroup" + }, + { + "Type": "AWS::RDS::DBCluster", + "Properties": { + "DatabaseName": "dms_sample", + "DBClusterParameterGroupName": { + "Ref": "AuroraClusterParameterGroup" + }, + "DBSubnetGroupName": { + "Ref": "AuroraDBSubnetGroup" + }, + "Engine": "aurora", + "SnapshotIdentifier": "arn:aws:rds:us-east-1:343299325021:cluster-snapshot:dms-sampledb-snapshot", + "VpcSecurityGroupIds": [ + { + "Ref": "AuroraSecurityGroup" + } + ] + }, + "Name": "AuroraCluster" + }, + { + "Type": "AWS::RDS::DBInstance", + "Properties": { + "DBClusterIdentifier": { + "Ref": "AuroraCluster" + }, + "DBInstanceClass": "db.t2.medium", + "DBInstanceIdentifier": "dms-sample", + "DBSubnetGroupName": { + "Ref": "AuroraDBSubnetGroup" + }, + "Engine": "aurora", + "MultiAZ": "false", + "PubliclyAccessible": "true", + "Tags": [ + { + "Key": "Application", + "Value": { + "Ref": "AWS::StackId" + } + } + ] + }, + "DependsOn": [ + "AuroraCluster" + ], + "Name": "AuroraDB" + }, + { + "Type": "AWS::S3::Bucket", + "Properties": { + "AccessControl": "Private" + }, + "Name": "S3Bucket" + }, + { + "Type": "AWS::IAM::Role", + "Condition": "NotExistsDMSCloudwatchRole", + "Properties": { + "RoleName": "dms-cloudwatch-logs-role", + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "dms.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole" + ], + "Path": "/" + }, + "Name": "DMSCloudwatchRole" + }, + { + "Type": "AWS::IAM::Role", + "Condition": "NotExistsDMSVPCRole", + "Properties": { + "RoleName": "dms-vpc-role", + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "dms.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole" + ], + "Path": "/" + }, + "Name": "DMSVpcRole" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "RoleName": "dms-s3-target-role", + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "dms.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "S3AccessForDMSPolicy", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "s3:PutObject", + "s3:DeleteObject" + ], + "Resource": [ + { + "Fn::GetAtt": [ + "S3Bucket", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "S3Bucket", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Effect": "Allow", + "Action": "s3:ListBucket", + "Resource": { + "Fn::GetAtt": [ + "S3Bucket", + "Arn" + ] + } + } + ] + } + } + ] + }, + "DependsOn": [ + "S3Bucket" + ], + "Name": "S3TargetDMSRole" + }, + { + "Type": "AWS::DMS::ReplicationSubnetGroup", + "Properties": { + "ReplicationSubnetGroupDescription": "Subnets available for DMS", + "SubnetIds": [ + { + "Ref": "DBSubnet1" + }, + { + "Ref": "DBSubnet2" + } + ] + }, + "Name": "DMSReplicationSubnetGroup" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Security group for DMS Instance", + "GroupName": "DMS Demo Security Group", + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "DMSSecurityGroup" + }, + { + "Type": "AWS::DMS::ReplicationInstance", + "Properties": { + "AvailabilityZone": { + "Fn::GetAtt": [ + "DBSubnet1", + "AvailabilityZone" + ] + }, + "PubliclyAccessible": false, + "ReplicationInstanceClass": "dms.t2.small", + "ReplicationInstanceIdentifier": "aurora-s3-repinstance-sampledb", + "ReplicationSubnetGroupIdentifier": { + "Ref": "DMSReplicationSubnetGroup" + }, + "VpcSecurityGroupIds": [ + { + "Ref": "DMSSecurityGroup" + } + ] + }, + "DependsOn": [ + "DMSReplicationSubnetGroup", + "DMSSecurityGroup" + ], + "Name": "DMSReplicationInstance" + }, + { + "Type": "AWS::DMS::Endpoint", + "Properties": { + "EndpointType": "source", + "EngineName": "AURORA", + "Password": "password", + "Port": 3306, + "ServerName": { + "Fn::GetAtt": [ + "AuroraCluster", + "Endpoint.Address" + ] + }, + "Username": "admin" + }, + "DependsOn": [ + "DMSReplicationInstance", + "AuroraCluster", + "AuroraDB" + ], + "Name": "AuroraSourceEndpoint" + }, + { + "Type": "AWS::DMS::Endpoint", + "Properties": { + "EndpointType": "target", + "EngineName": "S3", + "ExtraConnectionAttributes": "addColumnName=true", + "S3Settings": { + "BucketName": { + "Ref": "S3Bucket" + }, + "ServiceAccessRoleArn": { + "Fn::GetAtt": [ + "S3TargetDMSRole", + "Arn" + ] + } + } + }, + "DependsOn": [ + "DMSReplicationInstance", + "S3Bucket", + "S3TargetDMSRole" + ], + "Name": "S3TargetEndpoint" + }, + { + "Type": "AWS::DMS::ReplicationTask", + "Properties": { + "MigrationType": "full-load-and-cdc", + "ReplicationInstanceArn": { + "Ref": "DMSReplicationInstance" + }, + "ReplicationTaskSettings": "{ \"Logging\" : { \"EnableLogging\" : true, \"LogComponents\": [ { \"Id\" : \"SOURCE_UNLOAD\", \"Severity\" : \"LOGGER_SEVERITY_DEFAULT\" }, { \"Id\" : \"SOURCE_CAPTURE\", \"Severity\" : \"LOGGER_SEVERITY_DEFAULT\" }, { \"Id\" : \"TARGET_LOAD\", \"Severity\" : \"LOGGER_SEVERITY_DEFAULT\" }, { \"Id\" : \"TARGET_APPLY\", \"Severity\" : \"LOGGER_SEVERITY_DEFAULT\" } ] } }", + "SourceEndpointArn": { + "Ref": "AuroraSourceEndpoint" + }, + "TableMappings": "{ \"rules\": [ { \"rule-type\" : \"selection\", \"rule-id\" : \"1\", \"rule-name\" : \"1\", \"object-locator\" : { \"schema-name\" : \"dms_sample\", \"table-name\" : \"%\" }, \"rule-action\" : \"include\" } ] }", + "TargetEndpointArn": { + "Ref": "S3TargetEndpoint" + } + }, + "DependsOn": [ + "AuroraSourceEndpoint", + "S3TargetEndpoint", + "DMSReplicationInstance" + ], + "Name": "DMSReplicationTask" + } + ], + "Outputs": { + "StackName": { + "Value": { + "Ref": "AWS::StackName" + } + }, + "RegionName": { + "Value": { + "Ref": "AWS::Region" + } + }, + "S3BucketName": { + "Value": { + "Ref": "S3Bucket" + } + }, + "AuroraEndpoint": { + "Value": { + "Fn::GetAtt": [ + "AuroraCluster", + "Endpoint.Address" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT2 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT2 new file mode 100644 index 0000000..4502309 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT2 @@ -0,0 +1,781 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/AutoScaling/AutoScalingRollingUpdates.yaml" + ], + "timestamp": 1642972590275, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/AutoScaling/AutoScalingRollingUpdates.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT2", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::instanceprofile", + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::elasticloadbalancing::loadbalancer" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT2", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template ELBGuidedAutoScalingRollingUpdates: This example creates an auto scaling group behind a load balancer with a simple health check. The Auto Scaling launch configuration includes an update policy that will keep 2 instances running while doing an autoscaling rolling update. The update will roll forward only when the ELB health check detects an updated instance in-service. **WARNING** This template creates one or more Amazon EC2 instances and an Elastic Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "AWSInstanceType2Arch": { + "t1.micro": { + "Arch": "PV64" + }, + "t2.nano": { + "Arch": "HVM64" + }, + "t2.micro": { + "Arch": "HVM64" + }, + "t2.small": { + "Arch": "HVM64" + }, + "t2.medium": { + "Arch": "HVM64" + }, + "t2.large": { + "Arch": "HVM64" + }, + "m1.small": { + "Arch": "PV64" + }, + "m1.medium": { + "Arch": "PV64" + }, + "m1.large": { + "Arch": "PV64" + }, + "m1.xlarge": { + "Arch": "PV64" + }, + "m2.xlarge": { + "Arch": "PV64" + }, + "m2.2xlarge": { + "Arch": "PV64" + }, + "m2.4xlarge": { + "Arch": "PV64" + }, + "m3.medium": { + "Arch": "HVM64" + }, + "m3.large": { + "Arch": "HVM64" + }, + "m3.xlarge": { + "Arch": "HVM64" + }, + "m3.2xlarge": { + "Arch": "HVM64" + }, + "m4.large": { + "Arch": "HVM64" + }, + "m4.xlarge": { + "Arch": "HVM64" + }, + "m4.2xlarge": { + "Arch": "HVM64" + }, + "m4.4xlarge": { + "Arch": "HVM64" + }, + "m4.10xlarge": { + "Arch": "HVM64" + }, + "c1.medium": { + "Arch": "PV64" + }, + "c1.xlarge": { + "Arch": "PV64" + }, + "c3.large": { + "Arch": "HVM64" + }, + "c3.xlarge": { + "Arch": "HVM64" + }, + "c3.2xlarge": { + "Arch": "HVM64" + }, + "c3.4xlarge": { + "Arch": "HVM64" + }, + "c3.8xlarge": { + "Arch": "HVM64" + }, + "c4.large": { + "Arch": "HVM64" + }, + "c4.xlarge": { + "Arch": "HVM64" + }, + "c4.2xlarge": { + "Arch": "HVM64" + }, + "c4.4xlarge": { + "Arch": "HVM64" + }, + "c4.8xlarge": { + "Arch": "HVM64" + }, + "g2.2xlarge": { + "Arch": "HVMG2" + }, + "g2.8xlarge": { + "Arch": "HVMG2" + }, + "r3.large": { + "Arch": "HVM64" + }, + "r3.xlarge": { + "Arch": "HVM64" + }, + "r3.2xlarge": { + "Arch": "HVM64" + }, + "r3.4xlarge": { + "Arch": "HVM64" + }, + "r3.8xlarge": { + "Arch": "HVM64" + }, + "i2.xlarge": { + "Arch": "HVM64" + }, + "i2.2xlarge": { + "Arch": "HVM64" + }, + "i2.4xlarge": { + "Arch": "HVM64" + }, + "i2.8xlarge": { + "Arch": "HVM64" + }, + "d2.xlarge": { + "Arch": "HVM64" + }, + "d2.2xlarge": { + "Arch": "HVM64" + }, + "d2.4xlarge": { + "Arch": "HVM64" + }, + "d2.8xlarge": { + "Arch": "HVM64" + }, + "hi1.4xlarge": { + "Arch": "HVM64" + }, + "hs1.8xlarge": { + "Arch": "HVM64" + }, + "cr1.8xlarge": { + "Arch": "HVM64" + }, + "cc2.8xlarge": { + "Arch": "HVM64" + } + }, + "AWSInstanceType2NATArch": { + "t1.micro": { + "Arch": "NATPV64" + }, + "t2.nano": { + "Arch": "NATHVM64" + }, + "t2.micro": { + "Arch": "NATHVM64" + }, + "t2.small": { + "Arch": "NATHVM64" + }, + "t2.medium": { + "Arch": "NATHVM64" + }, + "t2.large": { + "Arch": "NATHVM64" + }, + "m1.small": { + "Arch": "NATPV64" + }, + "m1.medium": { + "Arch": "NATPV64" + }, + "m1.large": { + "Arch": "NATPV64" + }, + "m1.xlarge": { + "Arch": "NATPV64" + }, + "m2.xlarge": { + "Arch": "NATPV64" + }, + "m2.2xlarge": { + "Arch": "NATPV64" + }, + "m2.4xlarge": { + "Arch": "NATPV64" + }, + "m3.medium": { + "Arch": "NATHVM64" + }, + "m3.large": { + "Arch": "NATHVM64" + }, + "m3.xlarge": { + "Arch": "NATHVM64" + }, + "m3.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.large": { + "Arch": "NATHVM64" + }, + "m4.xlarge": { + "Arch": "NATHVM64" + }, + "m4.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.4xlarge": { + "Arch": "NATHVM64" + }, + "m4.10xlarge": { + "Arch": "NATHVM64" + }, + "c1.medium": { + "Arch": "NATPV64" + }, + "c1.xlarge": { + "Arch": "NATPV64" + }, + "c3.large": { + "Arch": "NATHVM64" + }, + "c3.xlarge": { + "Arch": "NATHVM64" + }, + "c3.2xlarge": { + "Arch": "NATHVM64" + }, + "c3.4xlarge": { + "Arch": "NATHVM64" + }, + "c3.8xlarge": { + "Arch": "NATHVM64" + }, + "c4.large": { + "Arch": "NATHVM64" + }, + "c4.xlarge": { + "Arch": "NATHVM64" + }, + "c4.2xlarge": { + "Arch": "NATHVM64" + }, + "c4.4xlarge": { + "Arch": "NATHVM64" + }, + "c4.8xlarge": { + "Arch": "NATHVM64" + }, + "g2.2xlarge": { + "Arch": "NATHVMG2" + }, + "g2.8xlarge": { + "Arch": "NATHVMG2" + }, + "r3.large": { + "Arch": "NATHVM64" + }, + "r3.xlarge": { + "Arch": "NATHVM64" + }, + "r3.2xlarge": { + "Arch": "NATHVM64" + }, + "r3.4xlarge": { + "Arch": "NATHVM64" + }, + "r3.8xlarge": { + "Arch": "NATHVM64" + }, + "i2.xlarge": { + "Arch": "NATHVM64" + }, + "i2.2xlarge": { + "Arch": "NATHVM64" + }, + "i2.4xlarge": { + "Arch": "NATHVM64" + }, + "i2.8xlarge": { + "Arch": "NATHVM64" + }, + "d2.xlarge": { + "Arch": "NATHVM64" + }, + "d2.2xlarge": { + "Arch": "NATHVM64" + }, + "d2.4xlarge": { + "Arch": "NATHVM64" + }, + "d2.8xlarge": { + "Arch": "NATHVM64" + }, + "hi1.4xlarge": { + "Arch": "NATHVM64" + }, + "hs1.8xlarge": { + "Arch": "NATHVM64" + }, + "cr1.8xlarge": { + "Arch": "NATHVM64" + }, + "cc2.8xlarge": { + "Arch": "NATHVM64" + } + }, + "AWSRegionArch2AMI": { + "us-east-1": { + "PV64": "ami-2a69aa47", + "HVM64": "ami-6869aa05", + "HVMG2": "ami-a41a3fb3" + }, + "us-west-2": { + "PV64": "ami-7f77b31f", + "HVM64": "ami-7172b611", + "HVMG2": "ami-caf253aa" + }, + "us-west-1": { + "PV64": "ami-a2490dc2", + "HVM64": "ami-31490d51", + "HVMG2": "ami-00347e60" + }, + "eu-west-1": { + "PV64": "ami-4cdd453f", + "HVM64": "ami-f9dd458a", + "HVMG2": "ami-e2f7bd91" + }, + "eu-west-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-886369ec", + "HVMG2": "NOT_SUPPORTED" + }, + "eu-central-1": { + "PV64": "ami-6527cf0a", + "HVM64": "ami-ea26ce85", + "HVMG2": "ami-d2ff04bd" + }, + "ap-northeast-1": { + "PV64": "ami-3e42b65f", + "HVM64": "ami-374db956", + "HVMG2": "ami-4c78d52d" + }, + "ap-northeast-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-2b408b45", + "HVMG2": "NOT_SUPPORTED" + }, + "ap-southeast-1": { + "PV64": "ami-df9e4cbc", + "HVM64": "ami-a59b49c6", + "HVMG2": "ami-f3f95990" + }, + "ap-southeast-2": { + "PV64": "ami-63351d00", + "HVM64": "ami-dc361ebf", + "HVMG2": "ami-3a122e59" + }, + "ap-south-1": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-ffbdd790", + "HVMG2": "ami-21a7d34e" + }, + "us-east-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-f6035893", + "HVMG2": "NOT_SUPPORTED" + }, + "ca-central-1": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-730ebd17", + "HVMG2": "NOT_SUPPORTED" + }, + "sa-east-1": { + "PV64": "ami-1ad34676", + "HVM64": "ami-6dd04501", + "HVMG2": "NOT_SUPPORTED" + }, + "cn-north-1": { + "PV64": "ami-77559f1a", + "HVM64": "ami-8e6aa0e3", + "HVMG2": "NOT_SUPPORTED" + } + } + }, + "Resources": [ + { + "Type": "AWS::AutoScaling::AutoScalingGroup", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M", + "Count": "2" + } + }, + "UpdatePolicy": { + "AutoScalingRollingUpdate": { + "MaxBatchSize": "1", + "MinInstancesInService": "1", + "PauseTime": "PT15M", + "WaitOnResourceSignals": "true" + } + }, + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "LaunchConfigurationName": { + "Ref": "LaunchConfig" + }, + "MinSize": "2", + "MaxSize": "4", + "LoadBalancerNames": [ + { + "Ref": "ElasticLoadBalancer" + } + ] + }, + "Name": "WebServerGroup" + }, + { + "Type": "AWS::AutoScaling::LaunchConfiguration", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_cfn", + "install_app", + "verify_instance_health" + ] + }, + "install_cfn": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Sub": "[main]\nstack=${AWS::StackId}\nregion=${AWS::Region}\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Sub": "[cfn-auto-reloader-hook]\ntriggers=post.update\npath=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\naction=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets full_install --region ${AWS::Region}\nrunas=root\n" + } + } + }, + "services": { + "sysvinit": { + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + }, + "install_app": { + "packages": { + "yum": { + "httpd": [] + } + }, + "files": { + "/var/www/html/index.html": { + "content": "

Congratulations, you have successfully launched the AWS CloudFormation sample.

Version: 1.0

", + "mode": "000644", + "owner": "root", + "group": "root" + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": "true", + "ensureRunning": "true" + } + } + } + }, + "verify_instance_health": { + "commands": { + "ELBHealthCheck": { + "command": { + "Fn::Sub": "until [ \"$state\" == \"\\\"InService\\\"\" ]; do state=$(aws --region ${AWS::Region} elb describe-instance-health --load-balancer-name ${ElasticLoadBalancer} --instances $(curl -s http://169.254.169.254/latest/meta-data/instance-id) --query InstanceStates[0].State); sleep 10; done" + } + } + } + } + } + }, + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "IamInstanceProfile": { + "Ref": "WebServerInstanceProfile" + }, + "UserData": { + "Fn::Base64": { + "Fn::Sub": "#!/bin/bash -xe\nyum install -y aws-cfn-bootstrap\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource LaunchConfig --configsets full_install --region ${AWS::Region}\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource WebServerGroup --region ${AWS::Region}\n" + } + } + }, + "Name": "LaunchConfig" + }, + { + "Type": "AWS::ElasticLoadBalancing::LoadBalancer", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "CrossZone": "true", + "Listeners": [ + { + "LoadBalancerPort": "80", + "InstancePort": "80", + "Protocol": "HTTP" + } + ], + "HealthCheck": { + "Target": "HTTP:80/", + "HealthyThreshold": "3", + "UnhealthyThreshold": "5", + "Interval": "30", + "Timeout": "5" + } + }, + "Name": "ElasticLoadBalancer" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access and HTTP access on the configured port", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "DescribeHealthRole" + } + ] + }, + "Name": "WebServerInstanceProfile" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "describe-instance-health-policy", + "PolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "elasticloadbalancing:DescribeInstanceHealth" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "DescribeHealthRole" + } + ], + "Outputs": { + "URL": { + "Description": "URL of the website", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "DNSName" + ] + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT20 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT20 new file mode 100644 index 0000000..3ae7366 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT20 @@ -0,0 +1,134 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/DynamoDB/DynamoDB_Secondary_Indexes.yaml" + ], + "timestamp": 1642972590352, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/DynamoDB/DynamoDB_Secondary_Indexes.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT20", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::dynamodb::table" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT20", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template DynamoDB_Secondary_Indexes: Create a DynamoDB table with local and global secondary indexes. **WARNING** This template creates an Amazon DynamoDB table. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "ReadCapacityUnits": { + "Description": "Provisioned read throughput", + "Type": "Number", + "Default": "5", + "MinValue": "5", + "MaxValue": "10000", + "ConstraintDescription": "must be between 5 and 10000" + }, + "WriteCapacityUnits": { + "Description": "Provisioned write throughput", + "Type": "Number", + "Default": "10", + "MinValue": "5", + "MaxValue": "10000", + "ConstraintDescription": "must be between 5 and 10000" + } + }, + "Resources": [ + { + "Type": "AWS::DynamoDB::Table", + "Properties": { + "AttributeDefinitions": [ + { + "AttributeName": "Title", + "AttributeType": "S" + }, + { + "AttributeName": "Category", + "AttributeType": "S" + }, + { + "AttributeName": "Language", + "AttributeType": "S" + } + ], + "KeySchema": [ + { + "AttributeName": "Category", + "KeyType": "HASH" + }, + { + "AttributeName": "Title", + "KeyType": "RANGE" + } + ], + "ProvisionedThroughput": { + "ReadCapacityUnits": "5", + "WriteCapacityUnits": "10" + }, + "LocalSecondaryIndexes": [ + { + "IndexName": "LanguageIndex", + "KeySchema": [ + { + "AttributeName": "Category", + "KeyType": "HASH" + }, + { + "AttributeName": "Language", + "KeyType": "RANGE" + } + ], + "Projection": { + "ProjectionType": "KEYS_ONLY" + } + } + ], + "GlobalSecondaryIndexes": [ + { + "IndexName": "TitleIndex", + "KeySchema": [ + { + "AttributeName": "Title", + "KeyType": "HASH" + } + ], + "Projection": { + "ProjectionType": "KEYS_ONLY" + }, + "ProvisionedThroughput": { + "ReadCapacityUnits": "5", + "WriteCapacityUnits": "10" + } + } + ] + }, + "Name": "TableOfBooks" + } + ], + "Outputs": { + "TableName": { + "Value": { + "Ref": "TableOfBooks" + }, + "Description": "Name of the newly created DynamoDB table" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT21 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT21 new file mode 100644 index 0000000..8c2d4e6 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT21 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/DynamoDB/DynamoDB_Table.yaml" + ], + "timestamp": 1642972590355, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/DynamoDB/DynamoDB_Table.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT21", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::dynamodb::table" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT21", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template DynamoDB_Table: This template demonstrates the creation of a DynamoDB table. **WARNING** This template creates an Amazon DynamoDB table. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "HashKeyElementName": { + "Description": "HashType PrimaryKey Name", + "Type": "String", + "AllowedPattern": "[a-zA-Z0-9]*", + "MinLength": "1", + "MaxLength": "2048", + "ConstraintDescription": "must contain only alphanumberic characters" + }, + "HashKeyElementType": { + "Description": "HashType PrimaryKey Type", + "Type": "String", + "Default": "S", + "AllowedPattern": "[S|N]", + "MinLength": "1", + "MaxLength": "1", + "ConstraintDescription": "must be either S or N" + }, + "ReadCapacityUnits": { + "Description": "Provisioned read throughput", + "Type": "Number", + "Default": "5", + "MinValue": "5", + "MaxValue": "10000", + "ConstraintDescription": "must be between 5 and 10000" + }, + "WriteCapacityUnits": { + "Description": "Provisioned write throughput", + "Type": "Number", + "Default": "10", + "MinValue": "5", + "MaxValue": "10000", + "ConstraintDescription": "must be between 5 and 10000" + } + }, + "Resources": [ + { + "Type": "AWS::DynamoDB::Table", + "Properties": { + "AttributeDefinitions": [ + { + "AttributeName": { + "Ref": "HashKeyElementName" + }, + "AttributeType": "S" + } + ], + "KeySchema": [ + { + "AttributeName": { + "Ref": "HashKeyElementName" + }, + "KeyType": "HASH" + } + ], + "ProvisionedThroughput": { + "ReadCapacityUnits": "5", + "WriteCapacityUnits": "10" + } + }, + "Name": "myDynamoDBTable" + } + ], + "Outputs": { + "TableName": { + "Value": { + "Ref": "myDynamoDBTable" + }, + "Description": "Table name of the newly created DynamoDB table" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT22 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT22 new file mode 100644 index 0000000..ed8eb1d --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT22 @@ -0,0 +1,175 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/EC2/EC2InstanceWithSecurityGroupSample.yaml" + ], + "timestamp": 1642972590360, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EC2/EC2InstanceWithSecurityGroupSample.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT22", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT22", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSample: Create an Amazon EC2 instance running the Amazon Linux AMI. The AMI is chosen based on the region in which the stack is run. This example creates an EC2 security group for the instance to give you SSH access. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t3.small", + "AllowedValues": [ + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "t2.xlarge", + "t2.2xlarge", + "t3.nano", + "t3.micro", + "t3.small", + "t3.medium", + "t3.large", + "t3.xlarge", + "t3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "m5.large", + "m5.xlarge", + "m5.2xlarge", + "m5.4xlarge", + "c5.large", + "c5.xlarge", + "c5.2xlarge", + "c5.4xlarge", + "c5.9xlarge", + "g3.8xlarge", + "r5.large", + "r5.xlarge", + "r5.2xlarge", + "r5.4xlarge", + "r3.12xlarge", + "i3.xlarge", + "i3.2xlarge", + "i3.4xlarge", + "i3.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": 9, + "MaxLength": 18, + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + }, + "LatestAmiId": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Properties": { + "InstanceType": "t3.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ], + "Outputs": { + "InstanceId": { + "Description": "InstanceId of the newly created EC2 instance", + "Value": { + "Ref": "EC2Instance" + } + }, + "AZ": { + "Description": "Availability Zone of the newly created EC2 instance", + "Value": { + "Fn::GetAtt": [ + "EC2Instance", + "AvailabilityZone" + ] + } + }, + "PublicDNS": { + "Description": "Public DNSName of the newly created EC2 instance", + "Value": { + "Fn::GetAtt": [ + "EC2Instance", + "PublicDnsName" + ] + } + }, + "PublicIP": { + "Description": "Public IP address of the newly created EC2 instance", + "Value": { + "Fn::GetAtt": [ + "EC2Instance", + "PublicIp" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT23 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT23 new file mode 100644 index 0000000..812f862 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT23 @@ -0,0 +1,157 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/EC2/EC2_Instance_With_Ephemeral_Drives.yaml" + ], + "timestamp": 1642972590365, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EC2/EC2_Instance_With_Ephemeral_Drives.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT23", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT23", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template EC2_Instance_With_Ephemeral_Drives: Example to show how to attach ephemeral drives using EC2 block device mappings. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the web server", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.nano", + "AllowedValues": [ + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "t2.xlarge", + "t2.2xlarge", + "t3.nano", + "t3.micro", + "t3.small", + "t3.medium", + "t3.large", + "t3.xlarge", + "t3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "m5.large", + "m5.xlarge", + "m5.2xlarge", + "m5.4xlarge", + "c5.large", + "c5.xlarge", + "c5.2xlarge", + "c5.4xlarge", + "c5.9xlarge", + "g3.8xlarge", + "r5.large", + "r5.xlarge", + "r5.2xlarge", + "r5.4xlarge", + "r3.12xlarge", + "i3.xlarge", + "i3.2xlarge", + "i3.4xlarge", + "i3.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "Lockdown SSH access to the bastion host (default can be accessed from anywhere)", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid CIDR range of the form x.x.x.x/x." + }, + "LatestAmiId": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Properties": { + "InstanceType": "t2.nano", + "SecurityGroups": [ + { + "Ref": "EC2SecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2", + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sdc", + "VirtualName": "ephemeral0" + } + ] + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "SSH access", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "EC2SecurityGroup" + } + ], + "Outputs": { + "Instance": { + "Value": { + "Fn::GetAtt": [ + "EC2Instance", + "PublicDnsName" + ] + }, + "Description": "DNS Name of the newly created EC2 instance" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT24 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT24 new file mode 100644 index 0000000..78dc8d9 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT24 @@ -0,0 +1,185 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/EC2/EIP_With_Association.yaml" + ], + "timestamp": 1642972590368, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EC2/EIP_With_Association.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT24", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup", + "aws::ec2::eipassociation", + "aws::ec2::eip" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT24", + "collection": "cloudformationtemplate", + "json": { + "Metadata": { + "License": "Apache-2.0" + }, + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template Sample template EIP_With_Association: This template shows how to associate an Elastic IP address with an Amazon EC2 instance - you can use this same technique to associate an EC2 instance with an Elastic IP Address that is not created inside the template by replacing the EIP reference in the AWS::EC2::EIPAssoication resource type with the IP address of the external EIP. **WARNING** This template creates an Amazon EC2 instance and an Elastic IP Address. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t3.small", + "AllowedValues": [ + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "t2.xlarge", + "t2.2xlarge", + "t3.nano", + "t3.micro", + "t3.small", + "t3.medium", + "t3.large", + "t3.xlarge", + "t3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "m5.large", + "m5.xlarge", + "m5.2xlarge", + "m5.4xlarge", + "c5.large", + "c5.xlarge", + "c5.2xlarge", + "c5.4xlarge", + "c5.9xlarge", + "g3.8xlarge", + "r5.large", + "r5.xlarge", + "r5.2xlarge", + "r5.4xlarge", + "r3.12xlarge", + "i3.xlarge", + "i3.2xlarge", + "i3.4xlarge", + "i3.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + }, + "LatestAmiId": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Properties": { + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "IPAddress=", + { + "Ref": "IPAddress" + } + ] + ] + } + }, + "InstanceType": "t3.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + }, + { + "Type": "AWS::EC2::EIP", + "Name": "IPAddress" + }, + { + "Type": "AWS::EC2::EIPAssociation", + "Properties": { + "InstanceId": { + "Ref": "EC2Instance" + }, + "EIP": { + "Ref": "IPAddress" + } + }, + "Name": "IPAssoc" + } + ], + "Outputs": { + "InstanceId": { + "Description": "InstanceId of the newly created EC2 instance", + "Value": { + "Ref": "EC2Instance" + } + }, + "InstanceIPAddress": { + "Description": "IP address of the newly created EC2 instance", + "Value": { + "Ref": "IPAddress" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT25 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT25 new file mode 100644 index 0000000..2626621 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT25 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/EC2/SingleENIwithMultipleEIPs.json" + ], + "timestamp": 1642972590372, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EC2/SingleENIwithMultipleEIPs.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT25", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::eip", + "aws::ec2::eipassociation", + "aws::ec2::networkinterface" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT25", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template Creates a single EC2 instance with a single ENI which has multiple private and public IPs", + "Parameters": { + "Subnet": { + "Description": "ID of the Subnet the instance should be launched in, this will link the instance to the same VPC.", + "Type": "List" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "VPC" + }, + "Name": "EIP1" + }, + { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "VPC" + }, + "Name": "EIP2" + }, + { + "Type": "AWS::EC2::EIPAssociation", + "DependsOn": [ + "ENI", + "EIP1" + ], + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "EIP1", + "AllocationId" + ] + }, + "NetworkInterfaceId": { + "Ref": "ENI" + }, + "PrivateIpAddress": { + "Fn::Select": [ + "0", + { + "Fn::GetAtt": [ + "ENI", + "SecondaryPrivateIpAddresses" + ] + } + ] + } + }, + "Name": "Association1" + }, + { + "Type": "AWS::EC2::EIPAssociation", + "DependsOn": [ + "ENI", + "EIP2" + ], + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "EIP2", + "AllocationId" + ] + }, + "NetworkInterfaceId": { + "Ref": "ENI" + }, + "PrivateIpAddress": { + "Fn::Select": [ + "1", + { + "Fn::GetAtt": [ + "ENI", + "SecondaryPrivateIpAddresses" + ] + } + ] + } + }, + "Name": "Association2" + }, + { + "Type": "AWS::EC2::NetworkInterface", + "Properties": { + "SecondaryPrivateIpAddressCount": 2, + "SourceDestCheck": true, + "SubnetId": { + "Fn::Select": [ + "0", + { + "Ref": "Subnet" + } + ] + } + }, + "Name": "ENI" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT26 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT26 new file mode 100644 index 0000000..4f13c18 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT26 @@ -0,0 +1,875 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/ECS/ECS_Schedule_Example.template" + ], + "timestamp": 1642972590376, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ECS/ECS_Schedule_Example.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT26", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::elasticloadbalancingv2::listenerrule", + "aws::ecs::cluster", + "aws::ecs::service", + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::elasticloadbalancingv2::targetgroup", + "aws::events::rule", + "aws::logs::loggroup", + "aws::applicationautoscaling::scalingpolicy", + "aws::iam::role", + "aws::iam::instanceprofile", + "aws::ec2::securitygroupingress", + "aws::applicationautoscaling::scalabletarget", + "aws::ecs::taskdefinition", + "aws::elasticloadbalancingv2::loadbalancer", + "aws::elasticloadbalancingv2::listener", + "aws::cloudwatch::alarm" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT26", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Amazon ECS Time and Event-Based Task Scheduling with CloudFormation. This will let you run tasks on a regular, scheduled basis and in response to CloudWatch Events. It easier to launch and stop container services that you need to run only at certain times. For example a backup/cleanup task.", + "Parameters": { + "KeyName": { + "Type": "AWS::EC2::KeyPair::KeyName", + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the ECS instances." + }, + "VpcId": { + "Type": "AWS::EC2::VPC::Id", + "Description": "Select a VPC that allows instances to access the Internet." + }, + "SubnetId": { + "Type": "List", + "Description": "Select at two subnets in your selected VPC." + }, + "DesiredCapacity": { + "Type": "Number", + "Default": "1", + "Description": "Number of instances to launch in your ECS cluster." + }, + "MaxSize": { + "Type": "Number", + "Default": "1", + "Description": "Maximum number of instances that can be launched in your ECS cluster." + }, + "SchedulerTasksCount": { + "Type": "Number", + "Default": "1", + "Description": "Maximum number of Tasks that you want to the Scheduler to run" + }, + "CronOrRate": { + "Type": "String", + "Default": "cron", + "AllowedValues": [ + "cron", + "rate" + ], + "Description": "Choose to use a cron expression or a rate expression you want to use." + }, + "CronSchedule": { + "Type": "String", + "Default": "cron(00 11 ? * * *)", + "Description": "This defines the Schedule at which to run the. Cron Expressions - http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions" + }, + "RateSchedule": { + "Type": "String", + "Default": "rate(1 day)", + "Description": "This defines the Schedule at which to run the. Rate Expressions - http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#RateExpressions" + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "t2.micro", + "AllowedValues": [ + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge" + ], + "ConstraintDescription": "Please choose a valid instance type." + } + }, + "Conditions": { + "CronRate": { + "Fn::Equals": [ + { + "Ref": "CronOrRate" + }, + "cron" + ] + } + }, + "Mappings": { + "AWSRegionToAMI": { + "amazon-ecs-optimized": { + "amznami": "2017.03.f" + }, + "us-east-1": { + "AMIID": "ami-9eb4b1e5" + }, + "us-east-2": { + "AMIID": "ami-1c002379" + }, + "us-west-1": { + "AMIID": "ami-4a2c192a" + }, + "us-west-2": { + "AMIID": "ami-1d668865" + }, + "eu-west-1": { + "AMIID": "ami-8fcc32f6" + }, + "eu-west-2": { + "AMIID": "ami-cb1101af" + }, + "eu-central-1": { + "AMIID": "ami-0460cb6b" + }, + "ap-northeast-1": { + "AMIID": "ami-b743bed1" + }, + "ap-southeast-1": { + "AMIID": "ami-9d1f7efe" + }, + "ap-southeast-2": { + "AMIID": "ami-c1a6bda2" + }, + "ca-central-1": { + "AMIID": "ami-b677c9d2" + } + } + }, + "Resources": [ + { + "Type": "AWS::ECS::Cluster", + "Name": "ECSCluster" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "ECS Security Group", + "VpcId": { + "Ref": "VpcId" + } + }, + "Name": "EcsSecurityGroup" + }, + { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "GroupId": { + "Ref": "EcsSecurityGroup" + }, + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "CidrIp": "0.0.0.0/0" + }, + "Name": "EcsSecurityGroupHTTPinbound" + }, + { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "GroupId": { + "Ref": "EcsSecurityGroup" + }, + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + }, + "Name": "EcsSecurityGroupSSHinbound" + }, + { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "GroupId": { + "Ref": "EcsSecurityGroup" + }, + "IpProtocol": "tcp", + "FromPort": "31000", + "ToPort": "61000", + "SourceSecurityGroupId": { + "Ref": "EcsSecurityGroup" + } + }, + "Name": "EcsSecurityGroupALBports" + }, + { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "-", + [ + "ECSLogGroup", + { + "Ref": "AWS::StackName" + } + ] + ] + }, + "RetentionInDays": 14 + }, + "Name": "CloudwatchLogsGroup" + }, + { + "Type": "AWS::ECS::TaskDefinition", + "Properties": { + "Family": { + "Fn::Join": [ + "", + [ + { + "Ref": "AWS::StackName" + }, + "-ecs-demo-app" + ] + ] + }, + "ContainerDefinitions": [ + { + "Name": "simple-app", + "Cpu": "10", + "Essential": "true", + "Image": "httpd:2.4", + "Memory": "300", + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "CloudwatchLogsGroup" + }, + "awslogs-region": { + "Ref": "AWS::Region" + }, + "awslogs-stream-prefix": "ecs-demo-app" + } + }, + "MountPoints": [ + { + "ContainerPath": "/usr/local/apache2/htdocs", + "SourceVolume": "my-vol" + } + ], + "PortMappings": [ + { + "ContainerPort": 80 + } + ] + }, + { + "Name": "busybox", + "Cpu": 10, + "Command": [ + "/bin/sh -c \"while true; do echo ' Amazon ECS Sample App

Amazon ECS Sample App

Congratulations!

Your application is now running on a container in Amazon ECS.

' > top; /bin/date > date ; echo '
' > bottom; cat top date bottom > /usr/local/apache2/htdocs/index.html ; sleep 1; done\"" + ], + "EntryPoint": [ + "sh", + "-c" + ], + "Essential": false, + "Image": "busybox", + "Memory": 200, + "LogConfiguration": { + "LogDriver": "awslogs", + "Options": { + "awslogs-group": { + "Ref": "CloudwatchLogsGroup" + }, + "awslogs-region": { + "Ref": "AWS::Region" + }, + "awslogs-stream-prefix": "ecs-demo-app" + } + }, + "VolumesFrom": [ + { + "SourceContainer": "simple-app" + } + ] + } + ], + "Volumes": [ + { + "Name": "my-vol" + } + ] + }, + "Name": "taskdefinition" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", + "Properties": { + "Name": "ECSALB", + "Scheme": "internet-facing", + "LoadBalancerAttributes": [ + { + "Key": "idle_timeout.timeout_seconds", + "Value": "30" + } + ], + "Subnets": { + "Ref": "SubnetId" + }, + "SecurityGroups": [ + { + "Ref": "EcsSecurityGroup" + } + ] + }, + "Name": "ECSALB" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::Listener", + "DependsOn": "ECSServiceRole", + "Properties": { + "DefaultActions": [ + { + "Type": "forward", + "TargetGroupArn": { + "Ref": "ECSTG" + } + } + ], + "LoadBalancerArn": { + "Ref": "ECSALB" + }, + "Port": "80", + "Protocol": "HTTP" + }, + "Name": "ALBListener" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::ListenerRule", + "DependsOn": "ALBListener", + "Properties": { + "Actions": [ + { + "Type": "forward", + "TargetGroupArn": { + "Ref": "ECSTG" + } + } + ], + "Conditions": [ + { + "Field": "path-pattern", + "Values": [ + "/" + ] + } + ], + "ListenerArn": { + "Ref": "ALBListener" + }, + "Priority": 1 + }, + "Name": "ECSALBListenerRule" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", + "DependsOn": "ECSALB", + "Properties": { + "HealthCheckIntervalSeconds": 10, + "HealthCheckPath": "/", + "HealthCheckProtocol": "HTTP", + "HealthCheckTimeoutSeconds": 5, + "HealthyThresholdCount": 2, + "Name": "ECSTG", + "Port": 80, + "Protocol": "HTTP", + "UnhealthyThresholdCount": 2, + "VpcId": { + "Ref": "VpcId" + } + }, + "Name": "ECSTG" + }, + { + "Type": "AWS::AutoScaling::AutoScalingGroup", + "Properties": { + "VPCZoneIdentifier": { + "Ref": "SubnetId" + }, + "LaunchConfigurationName": { + "Ref": "ContainerInstances" + }, + "MinSize": "1", + "MaxSize": "1", + "DesiredCapacity": "1" + }, + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M" + } + }, + "UpdatePolicy": { + "AutoScalingReplacingUpdate": { + "WillReplace": "true" + } + }, + "Name": "ECSAutoScalingGroup" + }, + { + "Type": "AWS::AutoScaling::LaunchConfiguration", + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionToAMI", + { + "Ref": "AWS::Region" + }, + "AMIID" + ] + }, + "SecurityGroups": [ + { + "Ref": "EcsSecurityGroup" + } + ], + "InstanceType": "t2.micro", + "IamInstanceProfile": { + "Ref": "EC2InstanceProfile" + }, + "KeyName": { + "Ref": "KeyName" + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "echo ECS_CLUSTER=", + { + "Ref": "ECSCluster" + }, + " >> /etc/ecs/ecs.config\n", + "yum install -y aws-cfn-bootstrap\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource ECSAutoScalingGroup ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "ContainerInstances" + }, + { + "Type": "AWS::ECS::Service", + "DependsOn": "ALBListener", + "Properties": { + "Cluster": { + "Ref": "ECSCluster" + }, + "DesiredCount": "1", + "LoadBalancers": [ + { + "ContainerName": "simple-app", + "ContainerPort": "80", + "TargetGroupArn": { + "Ref": "ECSTG" + } + } + ], + "Role": { + "Ref": "ECSServiceRole" + }, + "TaskDefinition": { + "Ref": "taskdefinition" + } + }, + "Name": "service" + }, + { + "DependsOn": "ECSEventRole", + "Type": "AWS::Events::Rule", + "Properties": { + "Description": "Creating a Schedule with CloudFormation as an example", + "ScheduleExpression": { + "Ref": "CronSchedule" + }, + "State": "ENABLED", + "Targets": [ + { + "Arn": { + "Fn::GetAtt": [ + "ECSCluster", + "Arn" + ] + }, + "Id": "Target1", + "RoleArn": { + "Fn::GetAtt": [ + "ECSEventRole", + "Arn" + ] + }, + "EcsParameters": { + "TaskCount": "1", + "TaskDefinitionArn": { + "Ref": "taskdefinition" + } + } + } + ] + }, + "Name": "ECSScheduledTask" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "events.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "ecs-service", + "PolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ecs:RunTask" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "ECSEventRole" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ecs.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "ecs-service", + "PolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", + "elasticloadbalancing:DeregisterTargets", + "elasticloadbalancing:Describe*", + "elasticloadbalancing:RegisterInstancesWithLoadBalancer", + "elasticloadbalancing:RegisterTargets", + "ec2:Describe*", + "ec2:AuthorizeSecurityGroupIngress" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "ECSServiceRole" + }, + { + "Type": "AWS::ApplicationAutoScaling::ScalableTarget", + "DependsOn": "service", + "Properties": { + "MaxCapacity": 2, + "MinCapacity": 1, + "ResourceId": { + "Fn::Join": [ + "", + [ + "service/", + { + "Ref": "ECSCluster" + }, + "/", + { + "Fn::GetAtt": [ + "service", + "Name" + ] + } + ] + ] + }, + "RoleARN": { + "Fn::GetAtt": [ + "AutoscalingRole", + "Arn" + ] + }, + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + }, + "Name": "ServiceScalingTarget" + }, + { + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + "Properties": { + "PolicyName": "AStepPolicy", + "PolicyType": "StepScaling", + "ScalingTargetId": { + "Ref": "ServiceScalingTarget" + }, + "StepScalingPolicyConfiguration": { + "AdjustmentType": "PercentChangeInCapacity", + "Cooldown": 60, + "MetricAggregationType": "Average", + "StepAdjustments": [ + { + "MetricIntervalLowerBound": 0, + "ScalingAdjustment": 200 + } + ] + } + }, + "Name": "ServiceScalingPolicy" + }, + { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "EvaluationPeriods": "1", + "Statistic": "Average", + "Threshold": "10", + "AlarmDescription": "Alarm if our ALB generates too many HTTP 500s.", + "Period": "60", + "AlarmActions": [ + { + "Ref": "ServiceScalingPolicy" + } + ], + "Namespace": "AWS/ApplicationELB", + "Dimensions": [ + { + "Name": "ECSService", + "Value": { + "Ref": "service" + } + } + ], + "ComparisonOperator": "GreaterThanThreshold", + "MetricName": "HTTPCode_ELB_5XX_Count" + }, + "Name": "ALB500sAlarmScaleUp" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "ecs-service", + "PolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ecs:CreateCluster", + "ecs:DeregisterContainerInstance", + "ecs:DiscoverPollEndpoint", + "ecs:Poll", + "ecs:RegisterContainerInstance", + "ecs:StartTelemetrySession", + "ecs:Submit*", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "EC2Role" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "application-autoscaling.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "service-autoscaling", + "PolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "application-autoscaling:*", + "cloudwatch:DescribeAlarms", + "cloudwatch:PutMetricAlarm", + "ecs:DescribeServices", + "ecs:UpdateService" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "AutoscalingRole" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "EC2Role" + } + ] + }, + "Name": "EC2InstanceProfile" + } + ], + "Outputs": { + "ecsservice": { + "Value": { + "Ref": "service" + } + }, + "ecscluster": { + "Value": { + "Ref": "ECSCluster" + } + }, + "ecstaskdef": { + "Value": { + "Ref": "taskdefinition" + } + }, + "ECSALB": { + "Description": "Your ALB DNS URL", + "Value": { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "ECSALB", + "DNSName" + ] + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT27 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT27 new file mode 100644 index 0000000..1c43a02 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT27 @@ -0,0 +1,912 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBGuidedAutoScalingRollingUpgrade.yaml" + ], + "timestamp": 1642972590382, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBGuidedAutoScalingRollingUpgrade.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT27", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::instanceprofile", + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::elasticloadbalancing::loadbalancer" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT27", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template ELBGuidedAutoScalingRollingUpdates: This example creates an auto scaling group behind a load balancer with a simple health check. The Auto Scaling launch configuration includes an update policy that will keep 2 instances running while doing an autoscaling rolling update. The update will roll forward only when the ELB health check detects an updated instance in-service. **WARNING** This template creates one or more Amazon EC2 instances and an Elastic Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "Region2Examples": { + "us-east-1": { + "Examples": "https://s3.amazonaws.com/cloudformation-examples-us-east-1" + }, + "us-west-2": { + "Examples": "https://s3-us-west-2.amazonaws.com/cloudformation-examples-us-west-2" + }, + "us-west-1": { + "Examples": "https://s3-us-west-1.amazonaws.com/cloudformation-examples-us-west-1" + }, + "eu-west-1": { + "Examples": "https://s3-eu-west-1.amazonaws.com/cloudformation-examples-eu-west-1" + }, + "eu-central-1": { + "Examples": "https://s3-eu-central-1.amazonaws.com/cloudformation-examples-eu-central-1" + }, + "ap-southeast-1": { + "Examples": "https://s3-ap-southeast-1.amazonaws.com/cloudformation-examples-ap-southeast-1" + }, + "ap-northeast-1": { + "Examples": "https://s3-ap-northeast-1.amazonaws.com/cloudformation-examples-ap-northeast-1" + }, + "ap-northeast-2": { + "Examples": "https://s3-ap-northeast-2.amazonaws.com/cloudformation-examples-ap-northeast-2" + }, + "ap-southeast-2": { + "Examples": "https://s3-ap-southeast-2.amazonaws.com/cloudformation-examples-ap-southeast-2" + }, + "ap-south-1": { + "Examples": "https://s3-ap-south-1.amazonaws.com/cloudformation-examples-ap-south-1" + }, + "us-east-2": { + "Examples": "https://s3-us-east-2.amazonaws.com/cloudformation-examples-us-east-2" + }, + "sa-east-1": { + "Examples": "https://s3-sa-east-1.amazonaws.com/cloudformation-examples-sa-east-1" + }, + "cn-north-1": { + "Examples": "https://s3.cn-north-1.amazonaws.com.cn/cloudformation-examples-cn-north-1" + } + }, + "AWSInstanceType2Arch": { + "t1.micro": { + "Arch": "PV64" + }, + "t2.nano": { + "Arch": "HVM64" + }, + "t2.micro": { + "Arch": "HVM64" + }, + "t2.small": { + "Arch": "HVM64" + }, + "t2.medium": { + "Arch": "HVM64" + }, + "t2.large": { + "Arch": "HVM64" + }, + "m1.small": { + "Arch": "PV64" + }, + "m1.medium": { + "Arch": "PV64" + }, + "m1.large": { + "Arch": "PV64" + }, + "m1.xlarge": { + "Arch": "PV64" + }, + "m2.xlarge": { + "Arch": "PV64" + }, + "m2.2xlarge": { + "Arch": "PV64" + }, + "m2.4xlarge": { + "Arch": "PV64" + }, + "m3.medium": { + "Arch": "HVM64" + }, + "m3.large": { + "Arch": "HVM64" + }, + "m3.xlarge": { + "Arch": "HVM64" + }, + "m3.2xlarge": { + "Arch": "HVM64" + }, + "m4.large": { + "Arch": "HVM64" + }, + "m4.xlarge": { + "Arch": "HVM64" + }, + "m4.2xlarge": { + "Arch": "HVM64" + }, + "m4.4xlarge": { + "Arch": "HVM64" + }, + "m4.10xlarge": { + "Arch": "HVM64" + }, + "c1.medium": { + "Arch": "PV64" + }, + "c1.xlarge": { + "Arch": "PV64" + }, + "c3.large": { + "Arch": "HVM64" + }, + "c3.xlarge": { + "Arch": "HVM64" + }, + "c3.2xlarge": { + "Arch": "HVM64" + }, + "c3.4xlarge": { + "Arch": "HVM64" + }, + "c3.8xlarge": { + "Arch": "HVM64" + }, + "c4.large": { + "Arch": "HVM64" + }, + "c4.xlarge": { + "Arch": "HVM64" + }, + "c4.2xlarge": { + "Arch": "HVM64" + }, + "c4.4xlarge": { + "Arch": "HVM64" + }, + "c4.8xlarge": { + "Arch": "HVM64" + }, + "g2.2xlarge": { + "Arch": "HVMG2" + }, + "g2.8xlarge": { + "Arch": "HVMG2" + }, + "r3.large": { + "Arch": "HVM64" + }, + "r3.xlarge": { + "Arch": "HVM64" + }, + "r3.2xlarge": { + "Arch": "HVM64" + }, + "r3.4xlarge": { + "Arch": "HVM64" + }, + "r3.8xlarge": { + "Arch": "HVM64" + }, + "i2.xlarge": { + "Arch": "HVM64" + }, + "i2.2xlarge": { + "Arch": "HVM64" + }, + "i2.4xlarge": { + "Arch": "HVM64" + }, + "i2.8xlarge": { + "Arch": "HVM64" + }, + "d2.xlarge": { + "Arch": "HVM64" + }, + "d2.2xlarge": { + "Arch": "HVM64" + }, + "d2.4xlarge": { + "Arch": "HVM64" + }, + "d2.8xlarge": { + "Arch": "HVM64" + }, + "hi1.4xlarge": { + "Arch": "HVM64" + }, + "hs1.8xlarge": { + "Arch": "HVM64" + }, + "cr1.8xlarge": { + "Arch": "HVM64" + }, + "cc2.8xlarge": { + "Arch": "HVM64" + } + }, + "AWSInstanceType2NATArch": { + "t1.micro": { + "Arch": "NATPV64" + }, + "t2.nano": { + "Arch": "NATHVM64" + }, + "t2.micro": { + "Arch": "NATHVM64" + }, + "t2.small": { + "Arch": "NATHVM64" + }, + "t2.medium": { + "Arch": "NATHVM64" + }, + "t2.large": { + "Arch": "NATHVM64" + }, + "m1.small": { + "Arch": "NATPV64" + }, + "m1.medium": { + "Arch": "NATPV64" + }, + "m1.large": { + "Arch": "NATPV64" + }, + "m1.xlarge": { + "Arch": "NATPV64" + }, + "m2.xlarge": { + "Arch": "NATPV64" + }, + "m2.2xlarge": { + "Arch": "NATPV64" + }, + "m2.4xlarge": { + "Arch": "NATPV64" + }, + "m3.medium": { + "Arch": "NATHVM64" + }, + "m3.large": { + "Arch": "NATHVM64" + }, + "m3.xlarge": { + "Arch": "NATHVM64" + }, + "m3.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.large": { + "Arch": "NATHVM64" + }, + "m4.xlarge": { + "Arch": "NATHVM64" + }, + "m4.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.4xlarge": { + "Arch": "NATHVM64" + }, + "m4.10xlarge": { + "Arch": "NATHVM64" + }, + "c1.medium": { + "Arch": "NATPV64" + }, + "c1.xlarge": { + "Arch": "NATPV64" + }, + "c3.large": { + "Arch": "NATHVM64" + }, + "c3.xlarge": { + "Arch": "NATHVM64" + }, + "c3.2xlarge": { + "Arch": "NATHVM64" + }, + "c3.4xlarge": { + "Arch": "NATHVM64" + }, + "c3.8xlarge": { + "Arch": "NATHVM64" + }, + "c4.large": { + "Arch": "NATHVM64" + }, + "c4.xlarge": { + "Arch": "NATHVM64" + }, + "c4.2xlarge": { + "Arch": "NATHVM64" + }, + "c4.4xlarge": { + "Arch": "NATHVM64" + }, + "c4.8xlarge": { + "Arch": "NATHVM64" + }, + "g2.2xlarge": { + "Arch": "NATHVMG2" + }, + "g2.8xlarge": { + "Arch": "NATHVMG2" + }, + "r3.large": { + "Arch": "NATHVM64" + }, + "r3.xlarge": { + "Arch": "NATHVM64" + }, + "r3.2xlarge": { + "Arch": "NATHVM64" + }, + "r3.4xlarge": { + "Arch": "NATHVM64" + }, + "r3.8xlarge": { + "Arch": "NATHVM64" + }, + "i2.xlarge": { + "Arch": "NATHVM64" + }, + "i2.2xlarge": { + "Arch": "NATHVM64" + }, + "i2.4xlarge": { + "Arch": "NATHVM64" + }, + "i2.8xlarge": { + "Arch": "NATHVM64" + }, + "d2.xlarge": { + "Arch": "NATHVM64" + }, + "d2.2xlarge": { + "Arch": "NATHVM64" + }, + "d2.4xlarge": { + "Arch": "NATHVM64" + }, + "d2.8xlarge": { + "Arch": "NATHVM64" + }, + "hi1.4xlarge": { + "Arch": "NATHVM64" + }, + "hs1.8xlarge": { + "Arch": "NATHVM64" + }, + "cr1.8xlarge": { + "Arch": "NATHVM64" + }, + "cc2.8xlarge": { + "Arch": "NATHVM64" + } + }, + "AWSRegionArch2AMI": { + "us-east-1": { + "PV64": "ami-2a69aa47", + "HVM64": "ami-6869aa05", + "HVMG2": "ami-50b4f047" + }, + "us-west-2": { + "PV64": "ami-7f77b31f", + "HVM64": "ami-7172b611", + "HVMG2": "ami-002bf460" + }, + "us-west-1": { + "PV64": "ami-a2490dc2", + "HVM64": "ami-31490d51", + "HVMG2": "ami-699ad409" + }, + "eu-west-1": { + "PV64": "ami-4cdd453f", + "HVM64": "ami-f9dd458a", + "HVMG2": "ami-f0e0a483" + }, + "eu-central-1": { + "PV64": "ami-6527cf0a", + "HVM64": "ami-ea26ce85", + "HVMG2": "ami-d9d62ab6" + }, + "ap-northeast-1": { + "PV64": "ami-3e42b65f", + "HVM64": "ami-374db956", + "HVMG2": "ami-78ba6619" + }, + "ap-northeast-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-2b408b45", + "HVMG2": "NOT_SUPPORTED" + }, + "ap-southeast-1": { + "PV64": "ami-df9e4cbc", + "HVM64": "ami-a59b49c6", + "HVMG2": "ami-56e84c35" + }, + "ap-southeast-2": { + "PV64": "ami-63351d00", + "HVM64": "ami-dc361ebf", + "HVMG2": "ami-2589b946" + }, + "ap-south-1": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-ffbdd790", + "HVMG2": "ami-f7354198" + }, + "us-east-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-f6035893", + "HVMG2": "NOT_SUPPORTED" + }, + "sa-east-1": { + "PV64": "ami-1ad34676", + "HVM64": "ami-6dd04501", + "HVMG2": "NOT_SUPPORTED" + }, + "cn-north-1": { + "PV64": "ami-77559f1a", + "HVM64": "ami-8e6aa0e3", + "HVMG2": "NOT_SUPPORTED" + } + } + }, + "Resources": [ + { + "Type": "AWS::AutoScaling::AutoScalingGroup", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M", + "Count": "2" + } + }, + "UpdatePolicy": { + "AutoScalingRollingUpdate": { + "MaxBatchSize": "1", + "MinInstancesInService": "1", + "PauseTime": "PT15M", + "WaitOnResourceSignals": "true" + } + }, + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "LaunchConfigurationName": { + "Ref": "LaunchConfig" + }, + "MinSize": "2", + "MaxSize": "4", + "LoadBalancerNames": [ + { + "Ref": "ElasticLoadBalancer" + } + ] + }, + "Name": "WebServerGroup" + }, + { + "Type": "AWS::AutoScaling::LaunchConfiguration", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_cfn", + "install_app", + "verify_instance_health" + ] + }, + "install_cfn": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource WebServerInstance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + }, + "install_app": { + "packages": { + "yum": { + "httpd": [] + } + }, + "files": { + "/var/www/html/index.html": { + "content": { + "Fn::Join": [ + "\n", + [ + "\"AWS", + "

Congratulations, you have successfully launched the AWS CloudFormation sample.

" + ] + ] + }, + "mode": "000644", + "owner": "root", + "group": "root" + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": "true", + "ensureRunning": "true" + } + } + } + }, + "verify_instance_health": { + "commands": { + "ELBHealthCheck": { + "command": { + "Fn::Join": [ + "", + [ + "until [ \"$state\" == \"\\\"InService\\\"\" ]; do ", + " state=$(aws --region ", + { + "Ref": "AWS::Region" + }, + " elb describe-instance-health ", + " --load-balancer-name ", + { + "Ref": "ElasticLoadBalancer" + }, + " --instances $(curl -s http://169.254.169.254/latest/meta-data/instance-id) ", + " --query InstanceStates[0].State); ", + " sleep 10; ", + "done" + ] + ] + } + } + } + } + } + }, + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "IamInstanceProfile": { + "Ref": "WebServerInstanceProfile" + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y aws-cfn-bootstrap\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource WebServerGroup ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "LaunchConfig" + }, + { + "Type": "AWS::ElasticLoadBalancing::LoadBalancer", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "CrossZone": "true", + "Listeners": [ + { + "LoadBalancerPort": "80", + "InstancePort": "80", + "Protocol": "HTTP" + } + ], + "HealthCheck": { + "Target": "HTTP:80/", + "HealthyThreshold": "3", + "UnhealthyThreshold": "5", + "Interval": "30", + "Timeout": "5" + } + }, + "Name": "ElasticLoadBalancer" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access and HTTP access on the configured port", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "DescribeHealthRole" + } + ] + }, + "Name": "WebServerInstanceProfile" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "describe-instance-health-policy", + "PolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "elasticloadbalancing:DescribeInstanceHealth" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "DescribeHealthRole" + } + ], + "Outputs": { + "URL": { + "Description": "URL of the website", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "DNSName" + ] + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT28 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT28 new file mode 100644 index 0000000..ddbaf6f --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT28 @@ -0,0 +1,872 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBStickinessSample.yaml" + ], + "timestamp": 1642972590388, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBStickinessSample.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT28", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::elasticloadbalancing::loadbalancer", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT28", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template ELBStickinessSample: Create a load balanced sample web site with ELB stickiness enabled. The AI is chosen based on the region in which the stack is run. This example creates 2 EC2 instances behind a load balancer with a simple health check. The ec2 instnces are untargeted and may be deployed in one or more availaiblity zones. The web site is available on port 80, however, the instances can be configured to listen on any port (8888 by default). **WARNING** This template creates one or more Amazon EC2 instances and an Elastic Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "Region2Examples": { + "us-east-1": { + "Examples": "https://s3.amazonaws.com/cloudformation-examples-us-east-1" + }, + "us-west-2": { + "Examples": "https://s3-us-west-2.amazonaws.com/cloudformation-examples-us-west-2" + }, + "us-west-1": { + "Examples": "https://s3-us-west-1.amazonaws.com/cloudformation-examples-us-west-1" + }, + "eu-west-1": { + "Examples": "https://s3-eu-west-1.amazonaws.com/cloudformation-examples-eu-west-1" + }, + "eu-central-1": { + "Examples": "https://s3-eu-central-1.amazonaws.com/cloudformation-examples-eu-central-1" + }, + "ap-southeast-1": { + "Examples": "https://s3-ap-southeast-1.amazonaws.com/cloudformation-examples-ap-southeast-1" + }, + "ap-northeast-1": { + "Examples": "https://s3-ap-northeast-1.amazonaws.com/cloudformation-examples-ap-northeast-1" + }, + "ap-northeast-2": { + "Examples": "https://s3-ap-northeast-2.amazonaws.com/cloudformation-examples-ap-northeast-2" + }, + "ap-southeast-2": { + "Examples": "https://s3-ap-southeast-2.amazonaws.com/cloudformation-examples-ap-southeast-2" + }, + "ap-south-1": { + "Examples": "https://s3-ap-south-1.amazonaws.com/cloudformation-examples-ap-south-1" + }, + "us-east-2": { + "Examples": "https://s3-us-east-2.amazonaws.com/cloudformation-examples-us-east-2" + }, + "sa-east-1": { + "Examples": "https://s3-sa-east-1.amazonaws.com/cloudformation-examples-sa-east-1" + }, + "cn-north-1": { + "Examples": "https://s3.cn-north-1.amazonaws.com.cn/cloudformation-examples-cn-north-1" + } + }, + "AWSInstanceType2Arch": { + "t1.micro": { + "Arch": "PV64" + }, + "t2.nano": { + "Arch": "HVM64" + }, + "t2.micro": { + "Arch": "HVM64" + }, + "t2.small": { + "Arch": "HVM64" + }, + "t2.medium": { + "Arch": "HVM64" + }, + "t2.large": { + "Arch": "HVM64" + }, + "m1.small": { + "Arch": "PV64" + }, + "m1.medium": { + "Arch": "PV64" + }, + "m1.large": { + "Arch": "PV64" + }, + "m1.xlarge": { + "Arch": "PV64" + }, + "m2.xlarge": { + "Arch": "PV64" + }, + "m2.2xlarge": { + "Arch": "PV64" + }, + "m2.4xlarge": { + "Arch": "PV64" + }, + "m3.medium": { + "Arch": "HVM64" + }, + "m3.large": { + "Arch": "HVM64" + }, + "m3.xlarge": { + "Arch": "HVM64" + }, + "m3.2xlarge": { + "Arch": "HVM64" + }, + "m4.large": { + "Arch": "HVM64" + }, + "m4.xlarge": { + "Arch": "HVM64" + }, + "m4.2xlarge": { + "Arch": "HVM64" + }, + "m4.4xlarge": { + "Arch": "HVM64" + }, + "m4.10xlarge": { + "Arch": "HVM64" + }, + "c1.medium": { + "Arch": "PV64" + }, + "c1.xlarge": { + "Arch": "PV64" + }, + "c3.large": { + "Arch": "HVM64" + }, + "c3.xlarge": { + "Arch": "HVM64" + }, + "c3.2xlarge": { + "Arch": "HVM64" + }, + "c3.4xlarge": { + "Arch": "HVM64" + }, + "c3.8xlarge": { + "Arch": "HVM64" + }, + "c4.large": { + "Arch": "HVM64" + }, + "c4.xlarge": { + "Arch": "HVM64" + }, + "c4.2xlarge": { + "Arch": "HVM64" + }, + "c4.4xlarge": { + "Arch": "HVM64" + }, + "c4.8xlarge": { + "Arch": "HVM64" + }, + "g2.2xlarge": { + "Arch": "HVMG2" + }, + "g2.8xlarge": { + "Arch": "HVMG2" + }, + "r3.large": { + "Arch": "HVM64" + }, + "r3.xlarge": { + "Arch": "HVM64" + }, + "r3.2xlarge": { + "Arch": "HVM64" + }, + "r3.4xlarge": { + "Arch": "HVM64" + }, + "r3.8xlarge": { + "Arch": "HVM64" + }, + "i2.xlarge": { + "Arch": "HVM64" + }, + "i2.2xlarge": { + "Arch": "HVM64" + }, + "i2.4xlarge": { + "Arch": "HVM64" + }, + "i2.8xlarge": { + "Arch": "HVM64" + }, + "d2.xlarge": { + "Arch": "HVM64" + }, + "d2.2xlarge": { + "Arch": "HVM64" + }, + "d2.4xlarge": { + "Arch": "HVM64" + }, + "d2.8xlarge": { + "Arch": "HVM64" + }, + "hi1.4xlarge": { + "Arch": "HVM64" + }, + "hs1.8xlarge": { + "Arch": "HVM64" + }, + "cr1.8xlarge": { + "Arch": "HVM64" + }, + "cc2.8xlarge": { + "Arch": "HVM64" + } + }, + "AWSInstanceType2NATArch": { + "t1.micro": { + "Arch": "NATPV64" + }, + "t2.nano": { + "Arch": "NATHVM64" + }, + "t2.micro": { + "Arch": "NATHVM64" + }, + "t2.small": { + "Arch": "NATHVM64" + }, + "t2.medium": { + "Arch": "NATHVM64" + }, + "t2.large": { + "Arch": "NATHVM64" + }, + "m1.small": { + "Arch": "NATPV64" + }, + "m1.medium": { + "Arch": "NATPV64" + }, + "m1.large": { + "Arch": "NATPV64" + }, + "m1.xlarge": { + "Arch": "NATPV64" + }, + "m2.xlarge": { + "Arch": "NATPV64" + }, + "m2.2xlarge": { + "Arch": "NATPV64" + }, + "m2.4xlarge": { + "Arch": "NATPV64" + }, + "m3.medium": { + "Arch": "NATHVM64" + }, + "m3.large": { + "Arch": "NATHVM64" + }, + "m3.xlarge": { + "Arch": "NATHVM64" + }, + "m3.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.large": { + "Arch": "NATHVM64" + }, + "m4.xlarge": { + "Arch": "NATHVM64" + }, + "m4.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.4xlarge": { + "Arch": "NATHVM64" + }, + "m4.10xlarge": { + "Arch": "NATHVM64" + }, + "c1.medium": { + "Arch": "NATPV64" + }, + "c1.xlarge": { + "Arch": "NATPV64" + }, + "c3.large": { + "Arch": "NATHVM64" + }, + "c3.xlarge": { + "Arch": "NATHVM64" + }, + "c3.2xlarge": { + "Arch": "NATHVM64" + }, + "c3.4xlarge": { + "Arch": "NATHVM64" + }, + "c3.8xlarge": { + "Arch": "NATHVM64" + }, + "c4.large": { + "Arch": "NATHVM64" + }, + "c4.xlarge": { + "Arch": "NATHVM64" + }, + "c4.2xlarge": { + "Arch": "NATHVM64" + }, + "c4.4xlarge": { + "Arch": "NATHVM64" + }, + "c4.8xlarge": { + "Arch": "NATHVM64" + }, + "g2.2xlarge": { + "Arch": "NATHVMG2" + }, + "g2.8xlarge": { + "Arch": "NATHVMG2" + }, + "r3.large": { + "Arch": "NATHVM64" + }, + "r3.xlarge": { + "Arch": "NATHVM64" + }, + "r3.2xlarge": { + "Arch": "NATHVM64" + }, + "r3.4xlarge": { + "Arch": "NATHVM64" + }, + "r3.8xlarge": { + "Arch": "NATHVM64" + }, + "i2.xlarge": { + "Arch": "NATHVM64" + }, + "i2.2xlarge": { + "Arch": "NATHVM64" + }, + "i2.4xlarge": { + "Arch": "NATHVM64" + }, + "i2.8xlarge": { + "Arch": "NATHVM64" + }, + "d2.xlarge": { + "Arch": "NATHVM64" + }, + "d2.2xlarge": { + "Arch": "NATHVM64" + }, + "d2.4xlarge": { + "Arch": "NATHVM64" + }, + "d2.8xlarge": { + "Arch": "NATHVM64" + }, + "hi1.4xlarge": { + "Arch": "NATHVM64" + }, + "hs1.8xlarge": { + "Arch": "NATHVM64" + }, + "cr1.8xlarge": { + "Arch": "NATHVM64" + }, + "cc2.8xlarge": { + "Arch": "NATHVM64" + } + }, + "AWSRegionArch2AMI": { + "us-east-1": { + "PV64": "ami-2a69aa47", + "HVM64": "ami-6869aa05", + "HVMG2": "ami-50b4f047" + }, + "us-west-2": { + "PV64": "ami-7f77b31f", + "HVM64": "ami-7172b611", + "HVMG2": "ami-002bf460" + }, + "us-west-1": { + "PV64": "ami-a2490dc2", + "HVM64": "ami-31490d51", + "HVMG2": "ami-699ad409" + }, + "eu-west-1": { + "PV64": "ami-4cdd453f", + "HVM64": "ami-f9dd458a", + "HVMG2": "ami-f0e0a483" + }, + "eu-central-1": { + "PV64": "ami-6527cf0a", + "HVM64": "ami-ea26ce85", + "HVMG2": "ami-d9d62ab6" + }, + "ap-northeast-1": { + "PV64": "ami-3e42b65f", + "HVM64": "ami-374db956", + "HVMG2": "ami-78ba6619" + }, + "ap-northeast-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-2b408b45", + "HVMG2": "NOT_SUPPORTED" + }, + "ap-southeast-1": { + "PV64": "ami-df9e4cbc", + "HVM64": "ami-a59b49c6", + "HVMG2": "ami-56e84c35" + }, + "ap-southeast-2": { + "PV64": "ami-63351d00", + "HVM64": "ami-dc361ebf", + "HVMG2": "ami-2589b946" + }, + "ap-south-1": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-ffbdd790", + "HVMG2": "ami-f7354198" + }, + "us-east-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-f6035893", + "HVMG2": "NOT_SUPPORTED" + }, + "sa-east-1": { + "PV64": "ami-1ad34676", + "HVM64": "ami-6dd04501", + "HVMG2": "NOT_SUPPORTED" + }, + "cn-north-1": { + "PV64": "ami-77559f1a", + "HVM64": "ami-8e6aa0e3", + "HVMG2": "NOT_SUPPORTED" + } + } + }, + "Resources": [ + { + "Type": "AWS::ElasticLoadBalancing::LoadBalancer", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "CrossZone": "true", + "Instances": [ + { + "Ref": "EC2Instance1" + }, + { + "Ref": "EC2Instance2" + } + ], + "LBCookieStickinessPolicy": [ + { + "PolicyName": "myLBPolicy", + "CookieExpirationPeriod": "180" + } + ], + "Listeners": [ + { + "LoadBalancerPort": "80", + "InstancePort": "80", + "Protocol": "HTTP", + "PolicyNames": [ + "myLBPolicy" + ] + } + ], + "HealthCheck": { + "Target": "HTTP:80/", + "HealthyThreshold": "3", + "UnhealthyThreshold": "5", + "Interval": "30", + "Timeout": "5" + } + }, + "Name": "ElasticLoadBalancer" + }, + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "Comment": "Install a simple application", + "AWS::CloudFormation::Init": { + "config": { + "packages": { + "yum": { + "httpd": [] + } + }, + "files": { + "/var/www/html/index.html": { + "content": { + "Fn::Join": [ + "\n", + [ + "\"AWS", + "

Congratulations, you have successfully launched the AWS CloudFormation sample.

" + ] + ] + }, + "mode": "000644", + "owner": "root", + "group": "root" + }, + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance1 ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": "true", + "ensureRunning": "true" + }, + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + } + } + }, + "Properties": { + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "InstanceType": "t2.small", + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y aws-cfn-bootstrap\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance1 ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance1 ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance1" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "InstanceType": "t2.small", + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y aws-cfn-bootstrap\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance1 ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance2 ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance2" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access and HTTP access on the inbound port", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ], + "Outputs": { + "URL": { + "Description": "URL of the sample website", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "DNSName" + ] + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT29 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT29 new file mode 100644 index 0000000..5f5df2a --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT29 @@ -0,0 +1,824 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBWithLockedDownAutoScaledInstances.yaml" + ], + "timestamp": 1642972590392, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELBWithLockedDownAutoScaledInstances.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT29", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::elasticloadbalancing::loadbalancer", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT29", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template ELBWithLockedDownAutoScaledInstances: Create a load balanced, Auto Scaled sample website where the instances are locked down to only accept traffic from the load balancer. This example creates an Auto Scaling group behind a load balancer with a simple health check. The web site is available on port 80, however, the instances can be configured to listen on any port (8888 by default). **WARNING** This template creates one or more Amazon EC2 instances and an Elastic Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "Region2Examples": { + "us-east-1": { + "Examples": "https://s3.amazonaws.com/cloudformation-examples-us-east-1" + }, + "us-west-2": { + "Examples": "https://s3-us-west-2.amazonaws.com/cloudformation-examples-us-west-2" + }, + "us-west-1": { + "Examples": "https://s3-us-west-1.amazonaws.com/cloudformation-examples-us-west-1" + }, + "eu-west-1": { + "Examples": "https://s3-eu-west-1.amazonaws.com/cloudformation-examples-eu-west-1" + }, + "eu-central-1": { + "Examples": "https://s3-eu-central-1.amazonaws.com/cloudformation-examples-eu-central-1" + }, + "ap-southeast-1": { + "Examples": "https://s3-ap-southeast-1.amazonaws.com/cloudformation-examples-ap-southeast-1" + }, + "ap-northeast-1": { + "Examples": "https://s3-ap-northeast-1.amazonaws.com/cloudformation-examples-ap-northeast-1" + }, + "ap-northeast-2": { + "Examples": "https://s3-ap-northeast-2.amazonaws.com/cloudformation-examples-ap-northeast-2" + }, + "ap-southeast-2": { + "Examples": "https://s3-ap-southeast-2.amazonaws.com/cloudformation-examples-ap-southeast-2" + }, + "ap-south-1": { + "Examples": "https://s3-ap-south-1.amazonaws.com/cloudformation-examples-ap-south-1" + }, + "us-east-2": { + "Examples": "https://s3-us-east-2.amazonaws.com/cloudformation-examples-us-east-2" + }, + "sa-east-1": { + "Examples": "https://s3-sa-east-1.amazonaws.com/cloudformation-examples-sa-east-1" + }, + "cn-north-1": { + "Examples": "https://s3.cn-north-1.amazonaws.com.cn/cloudformation-examples-cn-north-1" + } + }, + "AWSInstanceType2Arch": { + "t1.micro": { + "Arch": "PV64" + }, + "t2.nano": { + "Arch": "HVM64" + }, + "t2.micro": { + "Arch": "HVM64" + }, + "t2.small": { + "Arch": "HVM64" + }, + "t2.medium": { + "Arch": "HVM64" + }, + "t2.large": { + "Arch": "HVM64" + }, + "m1.small": { + "Arch": "PV64" + }, + "m1.medium": { + "Arch": "PV64" + }, + "m1.large": { + "Arch": "PV64" + }, + "m1.xlarge": { + "Arch": "PV64" + }, + "m2.xlarge": { + "Arch": "PV64" + }, + "m2.2xlarge": { + "Arch": "PV64" + }, + "m2.4xlarge": { + "Arch": "PV64" + }, + "m3.medium": { + "Arch": "HVM64" + }, + "m3.large": { + "Arch": "HVM64" + }, + "m3.xlarge": { + "Arch": "HVM64" + }, + "m3.2xlarge": { + "Arch": "HVM64" + }, + "m4.large": { + "Arch": "HVM64" + }, + "m4.xlarge": { + "Arch": "HVM64" + }, + "m4.2xlarge": { + "Arch": "HVM64" + }, + "m4.4xlarge": { + "Arch": "HVM64" + }, + "m4.10xlarge": { + "Arch": "HVM64" + }, + "c1.medium": { + "Arch": "PV64" + }, + "c1.xlarge": { + "Arch": "PV64" + }, + "c3.large": { + "Arch": "HVM64" + }, + "c3.xlarge": { + "Arch": "HVM64" + }, + "c3.2xlarge": { + "Arch": "HVM64" + }, + "c3.4xlarge": { + "Arch": "HVM64" + }, + "c3.8xlarge": { + "Arch": "HVM64" + }, + "c4.large": { + "Arch": "HVM64" + }, + "c4.xlarge": { + "Arch": "HVM64" + }, + "c4.2xlarge": { + "Arch": "HVM64" + }, + "c4.4xlarge": { + "Arch": "HVM64" + }, + "c4.8xlarge": { + "Arch": "HVM64" + }, + "g2.2xlarge": { + "Arch": "HVMG2" + }, + "g2.8xlarge": { + "Arch": "HVMG2" + }, + "r3.large": { + "Arch": "HVM64" + }, + "r3.xlarge": { + "Arch": "HVM64" + }, + "r3.2xlarge": { + "Arch": "HVM64" + }, + "r3.4xlarge": { + "Arch": "HVM64" + }, + "r3.8xlarge": { + "Arch": "HVM64" + }, + "i2.xlarge": { + "Arch": "HVM64" + }, + "i2.2xlarge": { + "Arch": "HVM64" + }, + "i2.4xlarge": { + "Arch": "HVM64" + }, + "i2.8xlarge": { + "Arch": "HVM64" + }, + "d2.xlarge": { + "Arch": "HVM64" + }, + "d2.2xlarge": { + "Arch": "HVM64" + }, + "d2.4xlarge": { + "Arch": "HVM64" + }, + "d2.8xlarge": { + "Arch": "HVM64" + }, + "hi1.4xlarge": { + "Arch": "HVM64" + }, + "hs1.8xlarge": { + "Arch": "HVM64" + }, + "cr1.8xlarge": { + "Arch": "HVM64" + }, + "cc2.8xlarge": { + "Arch": "HVM64" + } + }, + "AWSInstanceType2NATArch": { + "t1.micro": { + "Arch": "NATPV64" + }, + "t2.nano": { + "Arch": "NATHVM64" + }, + "t2.micro": { + "Arch": "NATHVM64" + }, + "t2.small": { + "Arch": "NATHVM64" + }, + "t2.medium": { + "Arch": "NATHVM64" + }, + "t2.large": { + "Arch": "NATHVM64" + }, + "m1.small": { + "Arch": "NATPV64" + }, + "m1.medium": { + "Arch": "NATPV64" + }, + "m1.large": { + "Arch": "NATPV64" + }, + "m1.xlarge": { + "Arch": "NATPV64" + }, + "m2.xlarge": { + "Arch": "NATPV64" + }, + "m2.2xlarge": { + "Arch": "NATPV64" + }, + "m2.4xlarge": { + "Arch": "NATPV64" + }, + "m3.medium": { + "Arch": "NATHVM64" + }, + "m3.large": { + "Arch": "NATHVM64" + }, + "m3.xlarge": { + "Arch": "NATHVM64" + }, + "m3.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.large": { + "Arch": "NATHVM64" + }, + "m4.xlarge": { + "Arch": "NATHVM64" + }, + "m4.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.4xlarge": { + "Arch": "NATHVM64" + }, + "m4.10xlarge": { + "Arch": "NATHVM64" + }, + "c1.medium": { + "Arch": "NATPV64" + }, + "c1.xlarge": { + "Arch": "NATPV64" + }, + "c3.large": { + "Arch": "NATHVM64" + }, + "c3.xlarge": { + "Arch": "NATHVM64" + }, + "c3.2xlarge": { + "Arch": "NATHVM64" + }, + "c3.4xlarge": { + "Arch": "NATHVM64" + }, + "c3.8xlarge": { + "Arch": "NATHVM64" + }, + "c4.large": { + "Arch": "NATHVM64" + }, + "c4.xlarge": { + "Arch": "NATHVM64" + }, + "c4.2xlarge": { + "Arch": "NATHVM64" + }, + "c4.4xlarge": { + "Arch": "NATHVM64" + }, + "c4.8xlarge": { + "Arch": "NATHVM64" + }, + "g2.2xlarge": { + "Arch": "NATHVMG2" + }, + "g2.8xlarge": { + "Arch": "NATHVMG2" + }, + "r3.large": { + "Arch": "NATHVM64" + }, + "r3.xlarge": { + "Arch": "NATHVM64" + }, + "r3.2xlarge": { + "Arch": "NATHVM64" + }, + "r3.4xlarge": { + "Arch": "NATHVM64" + }, + "r3.8xlarge": { + "Arch": "NATHVM64" + }, + "i2.xlarge": { + "Arch": "NATHVM64" + }, + "i2.2xlarge": { + "Arch": "NATHVM64" + }, + "i2.4xlarge": { + "Arch": "NATHVM64" + }, + "i2.8xlarge": { + "Arch": "NATHVM64" + }, + "d2.xlarge": { + "Arch": "NATHVM64" + }, + "d2.2xlarge": { + "Arch": "NATHVM64" + }, + "d2.4xlarge": { + "Arch": "NATHVM64" + }, + "d2.8xlarge": { + "Arch": "NATHVM64" + }, + "hi1.4xlarge": { + "Arch": "NATHVM64" + }, + "hs1.8xlarge": { + "Arch": "NATHVM64" + }, + "cr1.8xlarge": { + "Arch": "NATHVM64" + }, + "cc2.8xlarge": { + "Arch": "NATHVM64" + } + }, + "AWSRegionArch2AMI": { + "us-east-1": { + "PV64": "ami-2a69aa47", + "HVM64": "ami-6869aa05", + "HVMG2": "ami-50b4f047" + }, + "us-west-2": { + "PV64": "ami-7f77b31f", + "HVM64": "ami-7172b611", + "HVMG2": "ami-002bf460" + }, + "us-west-1": { + "PV64": "ami-a2490dc2", + "HVM64": "ami-31490d51", + "HVMG2": "ami-699ad409" + }, + "eu-west-1": { + "PV64": "ami-4cdd453f", + "HVM64": "ami-f9dd458a", + "HVMG2": "ami-f0e0a483" + }, + "eu-central-1": { + "PV64": "ami-6527cf0a", + "HVM64": "ami-ea26ce85", + "HVMG2": "ami-d9d62ab6" + }, + "ap-northeast-1": { + "PV64": "ami-3e42b65f", + "HVM64": "ami-374db956", + "HVMG2": "ami-78ba6619" + }, + "ap-northeast-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-2b408b45", + "HVMG2": "NOT_SUPPORTED" + }, + "ap-southeast-1": { + "PV64": "ami-df9e4cbc", + "HVM64": "ami-a59b49c6", + "HVMG2": "ami-56e84c35" + }, + "ap-southeast-2": { + "PV64": "ami-63351d00", + "HVM64": "ami-dc361ebf", + "HVMG2": "ami-2589b946" + }, + "ap-south-1": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-ffbdd790", + "HVMG2": "ami-f7354198" + }, + "us-east-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-f6035893", + "HVMG2": "NOT_SUPPORTED" + }, + "sa-east-1": { + "PV64": "ami-1ad34676", + "HVM64": "ami-6dd04501", + "HVMG2": "NOT_SUPPORTED" + }, + "cn-north-1": { + "PV64": "ami-77559f1a", + "HVM64": "ami-8e6aa0e3", + "HVMG2": "NOT_SUPPORTED" + } + } + }, + "Resources": [ + { + "Type": "AWS::AutoScaling::AutoScalingGroup", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "LaunchConfigurationName": { + "Ref": "LaunchConfig" + }, + "MinSize": "2", + "MaxSize": "2", + "LoadBalancerNames": [ + { + "Ref": "ElasticLoadBalancer" + } + ] + }, + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M" + } + }, + "UpdatePolicy": { + "AutoScalingRollingUpdate": { + "MinInstancesInService": "1", + "MaxBatchSize": "1", + "PauseTime": "PT15M", + "WaitOnResourceSignals": "true" + } + }, + "Name": "WebServerGroup" + }, + { + "Type": "AWS::AutoScaling::LaunchConfiguration", + "Metadata": { + "Comment": "Install a simple application", + "AWS::CloudFormation::Init": { + "config": { + "packages": { + "yum": { + "httpd": [] + } + }, + "files": { + "/var/www/html/index.html": { + "content": { + "Fn::Join": [ + "\n", + [ + "\"AWS", + "

Congratulations, you have successfully launched the AWS CloudFormation sample.

" + ] + ] + }, + "mode": "000644", + "owner": "root", + "group": "root" + }, + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": "true", + "ensureRunning": "true" + }, + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + } + } + }, + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "InstanceType": "t2.small", + "KeyName": { + "Ref": "KeyName" + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y aws-cfn-bootstrap\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource WebServerGroup ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "LaunchConfig" + }, + { + "Type": "AWS::ElasticLoadBalancing::LoadBalancer", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "CrossZone": "true", + "Listeners": [ + { + "LoadBalancerPort": "80", + "InstancePort": "80", + "Protocol": "HTTP" + } + ], + "HealthCheck": { + "Target": "HTTP:80/", + "HealthyThreshold": "3", + "UnhealthyThreshold": "5", + "Interval": "30", + "Timeout": "5" + } + }, + "Name": "ElasticLoadBalancer" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access and HTTP access on the inbound port", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "SourceSecurityGroupOwnerId": { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "SourceSecurityGroup.OwnerAlias" + ] + }, + "SourceSecurityGroupName": { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "SourceSecurityGroup.GroupName" + ] + } + }, + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ], + "Outputs": { + "URL": { + "Description": "URL of the website", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "DNSName" + ] + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT3 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT3 new file mode 100644 index 0000000..460b231 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT3 @@ -0,0 +1,838 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/AutoScaling/AutoScalingScheduledAction.yaml" + ], + "timestamp": 1642972590280, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/AutoScaling/AutoScalingScheduledAction.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT3", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::autoscaling::autoscalinggroup", + "aws::autoscaling::launchconfiguration", + "aws::ec2::securitygroup", + "aws::elasticloadbalancing::loadbalancer", + "aws::autoscaling::scheduledaction" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT3", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template AutoScalingScheduledAction: Create a load balanced, Auto Scaled sample website. This example creates an Auto Scaling group with time-based scheduled actions behind a load balancer with a simple health check. **WARNING** This template creates one or more Amazon EC2 instances and an Elastic Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "Region2Examples": { + "us-east-1": { + "Examples": "https://s3.amazonaws.com/cloudformation-examples-us-east-1" + }, + "us-west-2": { + "Examples": "https://s3-us-west-2.amazonaws.com/cloudformation-examples-us-west-2" + }, + "us-west-1": { + "Examples": "https://s3-us-west-1.amazonaws.com/cloudformation-examples-us-west-1" + }, + "eu-west-1": { + "Examples": "https://s3-eu-west-1.amazonaws.com/cloudformation-examples-eu-west-1" + }, + "eu-central-1": { + "Examples": "https://s3-eu-central-1.amazonaws.com/cloudformation-examples-eu-central-1" + }, + "ap-southeast-1": { + "Examples": "https://s3-ap-southeast-1.amazonaws.com/cloudformation-examples-ap-southeast-1" + }, + "ap-northeast-1": { + "Examples": "https://s3-ap-northeast-1.amazonaws.com/cloudformation-examples-ap-northeast-1" + }, + "ap-northeast-2": { + "Examples": "https://s3-ap-northeast-2.amazonaws.com/cloudformation-examples-ap-northeast-2" + }, + "ap-southeast-2": { + "Examples": "https://s3-ap-southeast-2.amazonaws.com/cloudformation-examples-ap-southeast-2" + }, + "ap-south-1": { + "Examples": "https://s3-ap-south-1.amazonaws.com/cloudformation-examples-ap-south-1" + }, + "us-east-2": { + "Examples": "https://s3-us-east-2.amazonaws.com/cloudformation-examples-us-east-2" + }, + "sa-east-1": { + "Examples": "https://s3-sa-east-1.amazonaws.com/cloudformation-examples-sa-east-1" + }, + "cn-north-1": { + "Examples": "https://s3.cn-north-1.amazonaws.com.cn/cloudformation-examples-cn-north-1" + } + }, + "AWSInstanceType2Arch": { + "t1.micro": { + "Arch": "PV64" + }, + "t2.nano": { + "Arch": "HVM64" + }, + "t2.micro": { + "Arch": "HVM64" + }, + "t2.small": { + "Arch": "HVM64" + }, + "t2.medium": { + "Arch": "HVM64" + }, + "t2.large": { + "Arch": "HVM64" + }, + "m1.small": { + "Arch": "PV64" + }, + "m1.medium": { + "Arch": "PV64" + }, + "m1.large": { + "Arch": "PV64" + }, + "m1.xlarge": { + "Arch": "PV64" + }, + "m2.xlarge": { + "Arch": "PV64" + }, + "m2.2xlarge": { + "Arch": "PV64" + }, + "m2.4xlarge": { + "Arch": "PV64" + }, + "m3.medium": { + "Arch": "HVM64" + }, + "m3.large": { + "Arch": "HVM64" + }, + "m3.xlarge": { + "Arch": "HVM64" + }, + "m3.2xlarge": { + "Arch": "HVM64" + }, + "m4.large": { + "Arch": "HVM64" + }, + "m4.xlarge": { + "Arch": "HVM64" + }, + "m4.2xlarge": { + "Arch": "HVM64" + }, + "m4.4xlarge": { + "Arch": "HVM64" + }, + "m4.10xlarge": { + "Arch": "HVM64" + }, + "c1.medium": { + "Arch": "PV64" + }, + "c1.xlarge": { + "Arch": "PV64" + }, + "c3.large": { + "Arch": "HVM64" + }, + "c3.xlarge": { + "Arch": "HVM64" + }, + "c3.2xlarge": { + "Arch": "HVM64" + }, + "c3.4xlarge": { + "Arch": "HVM64" + }, + "c3.8xlarge": { + "Arch": "HVM64" + }, + "c4.large": { + "Arch": "HVM64" + }, + "c4.xlarge": { + "Arch": "HVM64" + }, + "c4.2xlarge": { + "Arch": "HVM64" + }, + "c4.4xlarge": { + "Arch": "HVM64" + }, + "c4.8xlarge": { + "Arch": "HVM64" + }, + "g2.2xlarge": { + "Arch": "HVMG2" + }, + "g2.8xlarge": { + "Arch": "HVMG2" + }, + "r3.large": { + "Arch": "HVM64" + }, + "r3.xlarge": { + "Arch": "HVM64" + }, + "r3.2xlarge": { + "Arch": "HVM64" + }, + "r3.4xlarge": { + "Arch": "HVM64" + }, + "r3.8xlarge": { + "Arch": "HVM64" + }, + "i2.xlarge": { + "Arch": "HVM64" + }, + "i2.2xlarge": { + "Arch": "HVM64" + }, + "i2.4xlarge": { + "Arch": "HVM64" + }, + "i2.8xlarge": { + "Arch": "HVM64" + }, + "d2.xlarge": { + "Arch": "HVM64" + }, + "d2.2xlarge": { + "Arch": "HVM64" + }, + "d2.4xlarge": { + "Arch": "HVM64" + }, + "d2.8xlarge": { + "Arch": "HVM64" + }, + "hi1.4xlarge": { + "Arch": "HVM64" + }, + "hs1.8xlarge": { + "Arch": "HVM64" + }, + "cr1.8xlarge": { + "Arch": "HVM64" + }, + "cc2.8xlarge": { + "Arch": "HVM64" + } + }, + "AWSInstanceType2NATArch": { + "t1.micro": { + "Arch": "NATPV64" + }, + "t2.nano": { + "Arch": "NATHVM64" + }, + "t2.micro": { + "Arch": "NATHVM64" + }, + "t2.small": { + "Arch": "NATHVM64" + }, + "t2.medium": { + "Arch": "NATHVM64" + }, + "t2.large": { + "Arch": "NATHVM64" + }, + "m1.small": { + "Arch": "NATPV64" + }, + "m1.medium": { + "Arch": "NATPV64" + }, + "m1.large": { + "Arch": "NATPV64" + }, + "m1.xlarge": { + "Arch": "NATPV64" + }, + "m2.xlarge": { + "Arch": "NATPV64" + }, + "m2.2xlarge": { + "Arch": "NATPV64" + }, + "m2.4xlarge": { + "Arch": "NATPV64" + }, + "m3.medium": { + "Arch": "NATHVM64" + }, + "m3.large": { + "Arch": "NATHVM64" + }, + "m3.xlarge": { + "Arch": "NATHVM64" + }, + "m3.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.large": { + "Arch": "NATHVM64" + }, + "m4.xlarge": { + "Arch": "NATHVM64" + }, + "m4.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.4xlarge": { + "Arch": "NATHVM64" + }, + "m4.10xlarge": { + "Arch": "NATHVM64" + }, + "c1.medium": { + "Arch": "NATPV64" + }, + "c1.xlarge": { + "Arch": "NATPV64" + }, + "c3.large": { + "Arch": "NATHVM64" + }, + "c3.xlarge": { + "Arch": "NATHVM64" + }, + "c3.2xlarge": { + "Arch": "NATHVM64" + }, + "c3.4xlarge": { + "Arch": "NATHVM64" + }, + "c3.8xlarge": { + "Arch": "NATHVM64" + }, + "c4.large": { + "Arch": "NATHVM64" + }, + "c4.xlarge": { + "Arch": "NATHVM64" + }, + "c4.2xlarge": { + "Arch": "NATHVM64" + }, + "c4.4xlarge": { + "Arch": "NATHVM64" + }, + "c4.8xlarge": { + "Arch": "NATHVM64" + }, + "g2.2xlarge": { + "Arch": "NATHVMG2" + }, + "g2.8xlarge": { + "Arch": "NATHVMG2" + }, + "r3.large": { + "Arch": "NATHVM64" + }, + "r3.xlarge": { + "Arch": "NATHVM64" + }, + "r3.2xlarge": { + "Arch": "NATHVM64" + }, + "r3.4xlarge": { + "Arch": "NATHVM64" + }, + "r3.8xlarge": { + "Arch": "NATHVM64" + }, + "i2.xlarge": { + "Arch": "NATHVM64" + }, + "i2.2xlarge": { + "Arch": "NATHVM64" + }, + "i2.4xlarge": { + "Arch": "NATHVM64" + }, + "i2.8xlarge": { + "Arch": "NATHVM64" + }, + "d2.xlarge": { + "Arch": "NATHVM64" + }, + "d2.2xlarge": { + "Arch": "NATHVM64" + }, + "d2.4xlarge": { + "Arch": "NATHVM64" + }, + "d2.8xlarge": { + "Arch": "NATHVM64" + }, + "hi1.4xlarge": { + "Arch": "NATHVM64" + }, + "hs1.8xlarge": { + "Arch": "NATHVM64" + }, + "cr1.8xlarge": { + "Arch": "NATHVM64" + }, + "cc2.8xlarge": { + "Arch": "NATHVM64" + } + }, + "AWSRegionArch2AMI": { + "us-east-1": { + "PV64": "ami-2a69aa47", + "HVM64": "ami-6869aa05", + "HVMG2": "ami-50b4f047" + }, + "us-west-2": { + "PV64": "ami-7f77b31f", + "HVM64": "ami-7172b611", + "HVMG2": "ami-002bf460" + }, + "us-west-1": { + "PV64": "ami-a2490dc2", + "HVM64": "ami-31490d51", + "HVMG2": "ami-699ad409" + }, + "eu-west-1": { + "PV64": "ami-4cdd453f", + "HVM64": "ami-f9dd458a", + "HVMG2": "ami-f0e0a483" + }, + "eu-central-1": { + "PV64": "ami-6527cf0a", + "HVM64": "ami-ea26ce85", + "HVMG2": "ami-d9d62ab6" + }, + "ap-northeast-1": { + "PV64": "ami-3e42b65f", + "HVM64": "ami-374db956", + "HVMG2": "ami-78ba6619" + }, + "ap-northeast-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-2b408b45", + "HVMG2": "NOT_SUPPORTED" + }, + "ap-southeast-1": { + "PV64": "ami-df9e4cbc", + "HVM64": "ami-a59b49c6", + "HVMG2": "ami-56e84c35" + }, + "ap-southeast-2": { + "PV64": "ami-63351d00", + "HVM64": "ami-dc361ebf", + "HVMG2": "ami-2589b946" + }, + "ap-south-1": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-ffbdd790", + "HVMG2": "ami-f7354198" + }, + "us-east-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-f6035893", + "HVMG2": "NOT_SUPPORTED" + }, + "sa-east-1": { + "PV64": "ami-1ad34676", + "HVM64": "ami-6dd04501", + "HVMG2": "NOT_SUPPORTED" + }, + "cn-north-1": { + "PV64": "ami-77559f1a", + "HVM64": "ami-8e6aa0e3", + "HVMG2": "NOT_SUPPORTED" + } + } + }, + "Resources": [ + { + "Type": "AWS::AutoScaling::AutoScalingGroup", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "LaunchConfigurationName": { + "Ref": "LaunchConfig" + }, + "MinSize": "2", + "MaxSize": "5", + "LoadBalancerNames": [ + { + "Ref": "ElasticLoadBalancer" + } + ] + }, + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M" + } + }, + "UpdatePolicy": { + "AutoScalingRollingUpdate": { + "MinInstancesInService": "1", + "MaxBatchSize": "1", + "PauseTime": "PT15M", + "WaitOnResourceSignals": "true" + } + }, + "Name": "WebServerGroup" + }, + { + "Type": "AWS::AutoScaling::ScheduledAction", + "Properties": { + "AutoScalingGroupName": { + "Ref": "WebServerGroup" + }, + "MaxSize": "10", + "MinSize": "5", + "Recurrence": "0 7 * * *" + }, + "Name": "ScheduledActionUp" + }, + { + "Type": "AWS::AutoScaling::ScheduledAction", + "Properties": { + "AutoScalingGroupName": { + "Ref": "WebServerGroup" + }, + "MaxSize": "1", + "MinSize": "1", + "Recurrence": "0 19 * * *" + }, + "Name": "ScheduledActionDown" + }, + { + "Type": "AWS::AutoScaling::LaunchConfiguration", + "Metadata": { + "Comment": "Install a simple application", + "AWS::CloudFormation::Init": { + "config": { + "packages": { + "yum": { + "httpd": [] + } + }, + "files": { + "/var/www/html/index.html": { + "content": { + "Fn::Join": [ + "\n", + [ + "\"AWS", + "

Congratulations, you have successfully launched the AWS CloudFormation sample.

" + ] + ] + }, + "mode": "000644", + "owner": "root", + "group": "root" + }, + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": "true", + "ensureRunning": "true" + }, + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + } + } + }, + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "InstanceType": "t2.small", + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y aws-cfn-bootstrap\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource WebServerGroup ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "LaunchConfig" + }, + { + "Type": "AWS::ElasticLoadBalancing::LoadBalancer", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "CrossZone": "true", + "Listeners": [ + { + "LoadBalancerPort": "80", + "InstancePort": "80", + "Protocol": "HTTP" + } + ], + "HealthCheck": { + "Target": "HTTP:80/", + "HealthyThreshold": "3", + "UnhealthyThreshold": "5", + "Interval": "30", + "Timeout": "5" + } + }, + "Name": "ElasticLoadBalancer" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access and HTTP access on the configured port", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ], + "Outputs": { + "URL": { + "Description": "URL of the website", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "DNSName" + ] + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT30 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT30 new file mode 100644 index 0000000..13df3c6 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT30 @@ -0,0 +1,983 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELB_Access_Logs_And_Connection_Draining.yaml" + ], + "timestamp": 1642972590398, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/ELB_Access_Logs_And_Connection_Draining.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT30", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::autoscaling::launchconfiguration", + "aws::autoscaling::autoscalinggroup", + "aws::ec2::securitygroup", + "aws::elasticloadbalancing::loadbalancer", + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT30", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template ELB_Access_Logs_And_Connection_Draining: Creates a load balanced, scalable sample website using Elastic Load Balancer attached to an Auto Scaling group. The ELB has connection draining enabled and also puts access logs into an S3 bucket. ** This template creates one or more Amazon EC2 instances. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "Region2Examples": { + "us-east-1": { + "Examples": "https://s3.amazonaws.com/cloudformation-examples-us-east-1" + }, + "us-west-2": { + "Examples": "https://s3-us-west-2.amazonaws.com/cloudformation-examples-us-west-2" + }, + "us-west-1": { + "Examples": "https://s3-us-west-1.amazonaws.com/cloudformation-examples-us-west-1" + }, + "eu-west-1": { + "Examples": "https://s3-eu-west-1.amazonaws.com/cloudformation-examples-eu-west-1" + }, + "eu-central-1": { + "Examples": "https://s3-eu-central-1.amazonaws.com/cloudformation-examples-eu-central-1" + }, + "ap-southeast-1": { + "Examples": "https://s3-ap-southeast-1.amazonaws.com/cloudformation-examples-ap-southeast-1" + }, + "ap-northeast-1": { + "Examples": "https://s3-ap-northeast-1.amazonaws.com/cloudformation-examples-ap-northeast-1" + }, + "ap-northeast-2": { + "Examples": "https://s3-ap-northeast-2.amazonaws.com/cloudformation-examples-ap-northeast-2" + }, + "ap-southeast-2": { + "Examples": "https://s3-ap-southeast-2.amazonaws.com/cloudformation-examples-ap-southeast-2" + }, + "ap-south-1": { + "Examples": "https://s3-ap-south-1.amazonaws.com/cloudformation-examples-ap-south-1" + }, + "us-east-2": { + "Examples": "https://s3-us-east-2.amazonaws.com/cloudformation-examples-us-east-2" + }, + "sa-east-1": { + "Examples": "https://s3-sa-east-1.amazonaws.com/cloudformation-examples-sa-east-1" + }, + "cn-north-1": { + "Examples": "https://s3.cn-north-1.amazonaws.com.cn/cloudformation-examples-cn-north-1" + } + }, + "AWSInstanceType2Arch": { + "t1.micro": { + "Arch": "PV64" + }, + "t2.nano": { + "Arch": "HVM64" + }, + "t2.micro": { + "Arch": "HVM64" + }, + "t2.small": { + "Arch": "HVM64" + }, + "t2.medium": { + "Arch": "HVM64" + }, + "t2.large": { + "Arch": "HVM64" + }, + "m1.small": { + "Arch": "PV64" + }, + "m1.medium": { + "Arch": "PV64" + }, + "m1.large": { + "Arch": "PV64" + }, + "m1.xlarge": { + "Arch": "PV64" + }, + "m2.xlarge": { + "Arch": "PV64" + }, + "m2.2xlarge": { + "Arch": "PV64" + }, + "m2.4xlarge": { + "Arch": "PV64" + }, + "m3.medium": { + "Arch": "HVM64" + }, + "m3.large": { + "Arch": "HVM64" + }, + "m3.xlarge": { + "Arch": "HVM64" + }, + "m3.2xlarge": { + "Arch": "HVM64" + }, + "m4.large": { + "Arch": "HVM64" + }, + "m4.xlarge": { + "Arch": "HVM64" + }, + "m4.2xlarge": { + "Arch": "HVM64" + }, + "m4.4xlarge": { + "Arch": "HVM64" + }, + "m4.10xlarge": { + "Arch": "HVM64" + }, + "c1.medium": { + "Arch": "PV64" + }, + "c1.xlarge": { + "Arch": "PV64" + }, + "c3.large": { + "Arch": "HVM64" + }, + "c3.xlarge": { + "Arch": "HVM64" + }, + "c3.2xlarge": { + "Arch": "HVM64" + }, + "c3.4xlarge": { + "Arch": "HVM64" + }, + "c3.8xlarge": { + "Arch": "HVM64" + }, + "c4.large": { + "Arch": "HVM64" + }, + "c4.xlarge": { + "Arch": "HVM64" + }, + "c4.2xlarge": { + "Arch": "HVM64" + }, + "c4.4xlarge": { + "Arch": "HVM64" + }, + "c4.8xlarge": { + "Arch": "HVM64" + }, + "g2.2xlarge": { + "Arch": "HVMG2" + }, + "g2.8xlarge": { + "Arch": "HVMG2" + }, + "r3.large": { + "Arch": "HVM64" + }, + "r3.xlarge": { + "Arch": "HVM64" + }, + "r3.2xlarge": { + "Arch": "HVM64" + }, + "r3.4xlarge": { + "Arch": "HVM64" + }, + "r3.8xlarge": { + "Arch": "HVM64" + }, + "i2.xlarge": { + "Arch": "HVM64" + }, + "i2.2xlarge": { + "Arch": "HVM64" + }, + "i2.4xlarge": { + "Arch": "HVM64" + }, + "i2.8xlarge": { + "Arch": "HVM64" + }, + "d2.xlarge": { + "Arch": "HVM64" + }, + "d2.2xlarge": { + "Arch": "HVM64" + }, + "d2.4xlarge": { + "Arch": "HVM64" + }, + "d2.8xlarge": { + "Arch": "HVM64" + }, + "hi1.4xlarge": { + "Arch": "HVM64" + }, + "hs1.8xlarge": { + "Arch": "HVM64" + }, + "cr1.8xlarge": { + "Arch": "HVM64" + }, + "cc2.8xlarge": { + "Arch": "HVM64" + } + }, + "AWSInstanceType2NATArch": { + "t1.micro": { + "Arch": "NATPV64" + }, + "t2.nano": { + "Arch": "NATHVM64" + }, + "t2.micro": { + "Arch": "NATHVM64" + }, + "t2.small": { + "Arch": "NATHVM64" + }, + "t2.medium": { + "Arch": "NATHVM64" + }, + "t2.large": { + "Arch": "NATHVM64" + }, + "m1.small": { + "Arch": "NATPV64" + }, + "m1.medium": { + "Arch": "NATPV64" + }, + "m1.large": { + "Arch": "NATPV64" + }, + "m1.xlarge": { + "Arch": "NATPV64" + }, + "m2.xlarge": { + "Arch": "NATPV64" + }, + "m2.2xlarge": { + "Arch": "NATPV64" + }, + "m2.4xlarge": { + "Arch": "NATPV64" + }, + "m3.medium": { + "Arch": "NATHVM64" + }, + "m3.large": { + "Arch": "NATHVM64" + }, + "m3.xlarge": { + "Arch": "NATHVM64" + }, + "m3.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.large": { + "Arch": "NATHVM64" + }, + "m4.xlarge": { + "Arch": "NATHVM64" + }, + "m4.2xlarge": { + "Arch": "NATHVM64" + }, + "m4.4xlarge": { + "Arch": "NATHVM64" + }, + "m4.10xlarge": { + "Arch": "NATHVM64" + }, + "c1.medium": { + "Arch": "NATPV64" + }, + "c1.xlarge": { + "Arch": "NATPV64" + }, + "c3.large": { + "Arch": "NATHVM64" + }, + "c3.xlarge": { + "Arch": "NATHVM64" + }, + "c3.2xlarge": { + "Arch": "NATHVM64" + }, + "c3.4xlarge": { + "Arch": "NATHVM64" + }, + "c3.8xlarge": { + "Arch": "NATHVM64" + }, + "c4.large": { + "Arch": "NATHVM64" + }, + "c4.xlarge": { + "Arch": "NATHVM64" + }, + "c4.2xlarge": { + "Arch": "NATHVM64" + }, + "c4.4xlarge": { + "Arch": "NATHVM64" + }, + "c4.8xlarge": { + "Arch": "NATHVM64" + }, + "g2.2xlarge": { + "Arch": "NATHVMG2" + }, + "g2.8xlarge": { + "Arch": "NATHVMG2" + }, + "r3.large": { + "Arch": "NATHVM64" + }, + "r3.xlarge": { + "Arch": "NATHVM64" + }, + "r3.2xlarge": { + "Arch": "NATHVM64" + }, + "r3.4xlarge": { + "Arch": "NATHVM64" + }, + "r3.8xlarge": { + "Arch": "NATHVM64" + }, + "i2.xlarge": { + "Arch": "NATHVM64" + }, + "i2.2xlarge": { + "Arch": "NATHVM64" + }, + "i2.4xlarge": { + "Arch": "NATHVM64" + }, + "i2.8xlarge": { + "Arch": "NATHVM64" + }, + "d2.xlarge": { + "Arch": "NATHVM64" + }, + "d2.2xlarge": { + "Arch": "NATHVM64" + }, + "d2.4xlarge": { + "Arch": "NATHVM64" + }, + "d2.8xlarge": { + "Arch": "NATHVM64" + }, + "hi1.4xlarge": { + "Arch": "NATHVM64" + }, + "hs1.8xlarge": { + "Arch": "NATHVM64" + }, + "cr1.8xlarge": { + "Arch": "NATHVM64" + }, + "cc2.8xlarge": { + "Arch": "NATHVM64" + } + }, + "AWSRegionArch2AMI": { + "us-east-1": { + "PV64": "ami-2a69aa47", + "HVM64": "ami-6869aa05", + "HVMG2": "ami-50b4f047" + }, + "us-west-2": { + "PV64": "ami-7f77b31f", + "HVM64": "ami-7172b611", + "HVMG2": "ami-002bf460" + }, + "us-west-1": { + "PV64": "ami-a2490dc2", + "HVM64": "ami-31490d51", + "HVMG2": "ami-699ad409" + }, + "eu-west-1": { + "PV64": "ami-4cdd453f", + "HVM64": "ami-f9dd458a", + "HVMG2": "ami-f0e0a483" + }, + "eu-central-1": { + "PV64": "ami-6527cf0a", + "HVM64": "ami-ea26ce85", + "HVMG2": "ami-d9d62ab6" + }, + "ap-northeast-1": { + "PV64": "ami-3e42b65f", + "HVM64": "ami-374db956", + "HVMG2": "ami-78ba6619" + }, + "ap-northeast-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-2b408b45", + "HVMG2": "NOT_SUPPORTED" + }, + "ap-southeast-1": { + "PV64": "ami-df9e4cbc", + "HVM64": "ami-a59b49c6", + "HVMG2": "ami-56e84c35" + }, + "ap-southeast-2": { + "PV64": "ami-63351d00", + "HVM64": "ami-dc361ebf", + "HVMG2": "ami-2589b946" + }, + "ap-south-1": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-ffbdd790", + "HVMG2": "ami-f7354198" + }, + "us-east-2": { + "PV64": "NOT_SUPPORTED", + "HVM64": "ami-f6035893", + "HVMG2": "NOT_SUPPORTED" + }, + "sa-east-1": { + "PV64": "ami-1ad34676", + "HVM64": "ami-6dd04501", + "HVMG2": "NOT_SUPPORTED" + }, + "cn-north-1": { + "PV64": "ami-77559f1a", + "HVM64": "ami-8e6aa0e3", + "HVMG2": "NOT_SUPPORTED" + } + }, + "Region2ELBAccountId": { + "us-east-1": { + "AccountId": "127311923021" + }, + "us-west-1": { + "AccountId": "027434742980" + }, + "us-west-2": { + "AccountId": "797873946194" + }, + "eu-west-1": { + "AccountId": "156460612806" + }, + "ap-northeast-1": { + "AccountId": "582318560864" + }, + "ap-northeast-2": { + "AccountId": "600734575887" + }, + "ap-southeast-1": { + "AccountId": "114774131450" + }, + "ap-southeast-2": { + "AccountId": "783225319266" + }, + "ap-south-1": { + "AccountId": "718504428378" + }, + "us-east-2": { + "AccountId": "033677994240" + }, + "sa-east-1": { + "AccountId": "507241528517" + }, + "cn-north-1": { + "AccountId": "638102146993" + }, + "eu-central-1": { + "AccountId": "054676820928" + } + }, + "Region2ARNPrefix": { + "us-east-1": { + "ARNPrefix": "arn:aws:" + }, + "us-west-1": { + "ARNPrefix": "arn:aws:" + }, + "us-west-2": { + "ARNPrefix": "arn:aws:" + }, + "eu-west-1": { + "ARNPrefix": "arn:aws:" + }, + "ap-northeast-1": { + "ARNPrefix": "arn:aws:" + }, + "ap-northeast-2": { + "ARNPrefix": "arn:aws:" + }, + "ap-southeast-1": { + "ARNPrefix": "arn:aws:" + }, + "ap-southeast-2": { + "ARNPrefix": "arn:aws:" + }, + "ap-south-1": { + "ARNPrefix": "arn:aws:" + }, + "us-east-2": { + "ARNPrefix": "arn:aws:" + }, + "sa-east-1": { + "ARNPrefix": "arn:aws:" + }, + "cn-north-1": { + "ARNPrefix": "arn:aws-cn:" + }, + "eu-central-1": { + "ARNPrefix": "arn:aws:" + } + } + }, + "Resources": [ + { + "Type": "AWS::ElasticLoadBalancing::LoadBalancer", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "CrossZone": "true", + "Listeners": [ + { + "LoadBalancerPort": "80", + "InstancePort": "80", + "Protocol": "HTTP" + } + ], + "HealthCheck": { + "Target": "HTTP:80/", + "HealthyThreshold": "3", + "UnhealthyThreshold": "5", + "Interval": "30", + "Timeout": "5" + }, + "ConnectionDrainingPolicy": { + "Enabled": "true", + "Timeout": "300" + }, + "AccessLoggingPolicy": { + "S3BucketName": { + "Ref": "LogsBucket" + }, + "S3BucketPrefix": "Logs", + "Enabled": "true", + "EmitInterval": "60" + } + }, + "DependsOn": "LogsBucketPolicy", + "Name": "ElasticLoadBalancer" + }, + { + "Type": "AWS::S3::Bucket", + "DeletionPolicy": "Retain", + "Name": "LogsBucket" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "LogsBucket" + }, + "PolicyDocument": { + "Version": "2008-10-17", + "Statement": [ + { + "Sid": "ELBAccessLogs20130930", + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + { + "Fn::FindInMap": [ + "Region2ARNPrefix", + { + "Ref": "AWS::Region" + }, + "ARNPrefix" + ] + }, + "s3:::", + { + "Ref": "LogsBucket" + }, + "/", + "Logs", + "/AWSLogs/", + { + "Ref": "AWS::AccountId" + }, + "/*" + ] + ] + }, + "Principal": { + "AWS": { + "Fn::FindInMap": [ + "Region2ELBAccountId", + { + "Ref": "AWS::Region" + }, + "AccountId" + ] + } + }, + "Action": [ + "s3:PutObject" + ] + } + ] + } + }, + "Name": "LogsBucketPolicy" + }, + { + "Type": "AWS::AutoScaling::AutoScalingGroup", + "Properties": { + "AvailabilityZones": { + "Fn::GetAZs": "" + }, + "LaunchConfigurationName": { + "Ref": "LaunchConfig" + }, + "MinSize": "2", + "MaxSize": "2", + "LoadBalancerNames": [ + { + "Ref": "ElasticLoadBalancer" + } + ] + }, + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M" + } + }, + "UpdatePolicy": { + "AutoScalingRollingUpdate": { + "MinInstancesInService": "1", + "MaxBatchSize": "1", + "PauseTime": "PT15M", + "WaitOnResourceSignals": "true" + } + }, + "Name": "WebServerGroup" + }, + { + "Type": "AWS::AutoScaling::LaunchConfiguration", + "Metadata": { + "Comment": "Install a simple application", + "AWS::CloudFormation::Init": { + "config": { + "packages": { + "yum": { + "httpd": [] + } + }, + "files": { + "/var/www/html/index.html": { + "content": { + "Fn::Join": [ + "\n", + [ + "\"AWS", + "

Congratulations, you have successfully launched the AWS CloudFormation sample.

" + ] + ] + }, + "mode": "000644", + "owner": "root", + "group": "root" + }, + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + } + }, + "services": { + "sysvinit": { + "httpd": { + "enabled": "true", + "ensureRunning": "true" + }, + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "/etc/cfn/cfn-hup.conf", + "/etc/cfn/hooks.d/cfn-auto-reloader.conf" + ] + } + } + } + } + } + }, + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionArch2AMI", + { + "Ref": "AWS::Region" + }, + { + "Fn::FindInMap": [ + "AWSInstanceType2Arch", + { + "Ref": "InstanceType" + }, + "Arch" + ] + } + ] + }, + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "InstanceType": "t2.small", + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y aws-cfn-bootstrap\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource LaunchConfig ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource WebServerGroup ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "LaunchConfig" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access and HTTP access on the configured port", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": "80", + "ToPort": "80", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ], + "Outputs": { + "URL": { + "Description": "URL of the website", + "Value": { + "Fn::Join": [ + "", + [ + "http://", + { + "Fn::GetAtt": [ + "ElasticLoadBalancer", + "DNSName" + ] + } + ] + ] + } + }, + "ELBAccessLogsBucket": { + "Description": "DNS name of the S3 bucket storing ELB Access Logs", + "Value": { + "Fn::GetAtt": [ + "LogsBucket", + "DomainName" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT31 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT31 new file mode 100644 index 0000000..2e1bf58 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT31 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/ElasticLoadBalancing/NetworkLoadBalancerWithEIPs.json" + ], + "timestamp": 1642972590405, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/ElasticLoadBalancing/NetworkLoadBalancerWithEIPs.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT31", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::elasticloadbalancingv2::targetgroup", + "aws::elasticloadbalancingv2::listener", + "aws::elasticloadbalancingv2::loadbalancer", + "aws::ec2::eip" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT31", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template creates a Network Load Balancer in 2 AZs with EIPs listening on TCP port 80. There are no registered targets these would either be EC2 instance IDs added to the targets property of the target group or defined under the autoscaling group resources ", + "Parameters": { + "VPC": { + "Type": "List" + }, + "Subnet1": { + "Description": "ID of the Subnet the instance should be launched in, this will link the instance to the same VPC.", + "Type": "List" + }, + "Subnet2": { + "Description": "ID of the Subnet the instance should be launched in, this will link the instance to the same VPC.", + "Type": "List" + }, + "ELBType": { + "Type": "String", + "Default": "network" + }, + "ELBIpAddressType": { + "Type": "String", + "AllowedValues": [ + "ipv4", + "dualstack" + ], + "Default": "ipv4" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "VPC" + }, + "Name": "EIP1" + }, + { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "VPC" + }, + "Name": "EIP2" + }, + { + "DependsOn": [ + "EIP2", + "EIP1" + ], + "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", + "Properties": { + "SubnetMappings": [ + { + "AllocationId": { + "Fn::GetAtt": [ + "EIP1", + "AllocationId" + ] + }, + "SubnetId": { + "Fn::Select": [ + "0", + { + "Ref": "Subnet1" + } + ] + } + }, + { + "AllocationId": { + "Fn::GetAtt": [ + "EIP2", + "AllocationId" + ] + }, + "SubnetId": { + "Fn::Select": [ + "0", + { + "Ref": "Subnet2" + } + ] + } + } + ], + "Type": "network", + "IpAddressType": "ipv4" + }, + "Name": "loadBalancer" + }, + { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc" + }, + "Name": "FirstEIP" + }, + { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc" + }, + "Name": "SecondEIP" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", + "Properties": { + "Name": "MyTargets", + "Port": 10, + "Protocol": "TCP", + "TargetGroupAttributes": [ + { + "Key": "deregistration_delay.timeout_seconds", + "Value": "20" + } + ], + "VpcId": { + "Fn::Select": [ + "0", + { + "Ref": "VPC" + } + ] + } + }, + "Name": "TargetGroup" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::Listener", + "Properties": { + "DefaultActions": [ + { + "Type": "forward", + "TargetGroupArn": { + "Ref": "TargetGroup" + } + } + ], + "LoadBalancerArn": { + "Ref": "loadBalancer" + }, + "Port": "80", + "Protocol": "TCP" + }, + "Name": "Listener" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT32 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT32 new file mode 100644 index 0000000..21d525c --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT32 @@ -0,0 +1,241 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/EMR/EMRCLusterGangliaWithSparkOrS3backedHbase.json" + ], + "timestamp": 1642972590409, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EMR/EMRCLusterGangliaWithSparkOrS3backedHbase.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT32", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::iam::instanceprofile", + "aws::emr::cluster" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT32", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Best Practice EMR Cluster for Spark or S3 backed Hbase", + "Parameters": { + "EMRClusterName": { + "Description": "Name of the cluster", + "Type": "String", + "Default": "emrcluster" + }, + "KeyName": { + "Description": "Must be an existing Keyname", + "Type": "String" + }, + "MasterInstanceType": { + "Description": "Instance type to be used for the master instance.", + "Type": "String", + "Default": "m3.xlarge" + }, + "CoreInstanceType": { + "Description": "Instance type to be used for core instances.", + "Type": "String", + "Default": "m3.xlarge" + }, + "NumberOfCoreInstances": { + "Description": "Must be a valid number", + "Type": "Number", + "Default": 2 + }, + "SubnetID": { + "Description": "Must be Valid public subnet ID", + "Default": "subnet-dba430ad", + "Type": "String" + }, + "LogUri": { + "Description": "Must be a valid S3 URL", + "Default": "s3://emrclusterlogbucket/", + "Type": "String" + }, + "S3DataUri": { + "Description": "Must be a valid S3 bucket URL ", + "Default": "s3://emrclusterdatabucket/", + "Type": "String" + }, + "ReleaseLabel": { + "Description": "Must be a valid EMR release version", + "Default": "emr-5.7.0", + "Type": "String" + }, + "Applications": { + "Description": "Please select which application will be installed on the cluster this would be either Ganglia and spark, or Ganglia and s3 acked Hbase", + "Type": "String", + "AllowedValues": [ + "Spark", + "Hbase" + ] + } + }, + "Mappings": {}, + "Conditions": { + "Spark": { + "Fn::Equals": [ + { + "Ref": "Applications" + }, + "Spark" + ] + }, + "Hbase": { + "Fn::Equals": [ + { + "Ref": "Applications" + }, + "Hbase" + ] + } + }, + "Resources": [ + { + "DependsOn": [ + "EMRClusterServiceRole", + "EMRClusterinstanceProfileRole", + "EMRClusterinstanceProfile" + ], + "Type": "AWS::EMR::Cluster", + "Properties": { + "Applications": [ + { + "Name": "Ganglia" + }, + { + "Ref": "AWS::NoValue" + }, + { + "Ref": "AWS::NoValue" + } + ], + "Configurations": [ + { + "Classification": "hbase-site", + "ConfigurationProperties": { + "hbase.rootdir": "s3://emrclusterdatabucket/" + } + }, + { + "Classification": "hbase", + "ConfigurationProperties": { + "hbase.emr.storageMode": "s3" + } + } + ], + "Instances": { + "Ec2KeyName": { + "Ref": "KeyName" + }, + "Ec2SubnetId": "subnet-dba430ad", + "MasterInstanceGroup": { + "InstanceCount": 1, + "InstanceType": "m3.xlarge", + "Market": "ON_DEMAND", + "Name": "Master" + }, + "CoreInstanceGroup": { + "InstanceCount": 2, + "InstanceType": "m3.xlarge", + "Market": "ON_DEMAND", + "Name": "Core" + }, + "TerminationProtected": false + }, + "VisibleToAllUsers": true, + "JobFlowRole": { + "Ref": "EMRClusterinstanceProfile" + }, + "ReleaseLabel": "emr-5.7.0", + "LogUri": "s3://emrclusterlogbucket/", + "Name": "emrcluster", + "AutoScalingRole": "EMR_AutoScaling_DefaultRole", + "ServiceRole": { + "Ref": "EMRClusterServiceRole" + } + }, + "Name": "EMRCluster" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "elasticmapreduce.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole" + ], + "Path": "/" + }, + "Name": "EMRClusterServiceRole" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role" + ], + "Path": "/" + }, + "Name": "EMRClusterinstanceProfileRole" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "EMRClusterinstanceProfileRole" + } + ] + }, + "Name": "EMRClusterinstanceProfile" + } + ], + "Outputs": {} + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT33 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT33 new file mode 100644 index 0000000..9f76f24 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT33 @@ -0,0 +1,249 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/EMR/EMRClusterWithAdditioanalSecurityGroups.json" + ], + "timestamp": 1642972590413, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/EMR/EMRClusterWithAdditioanalSecurityGroups.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT33", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::iam::instanceprofile", + "aws::emr::cluster" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT33", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Best Practice EMR Cluster for Spark or S3 backed Hbase", + "Parameters": { + "EMRClusterName": { + "Description": "Name of the cluster", + "Type": "String", + "Default": "emrcluster" + }, + "KeyName": { + "Description": "Must be an existing Keyname", + "Type": "String" + }, + "MasterInstanceType": { + "Description": "Instance type to be used for the master instance.", + "Type": "String", + "Default": "m3.xlarge" + }, + "CoreInstanceType": { + "Description": "Instance type to be used for core instances.", + "Type": "String", + "Default": "m3.xlarge" + }, + "NumberOfCoreInstances": { + "Description": "Must be a valid number", + "Type": "Number", + "Default": 2 + }, + "SubnetID": { + "Description": "Must be a valid public subnet ID", + "Default": "subnet-dba430ad", + "Type": "String" + }, + "LogUri": { + "Description": "Must be a valid S3 URL", + "Default": "s3://emrclusterlogbucket/", + "Type": "String" + }, + "S3DataUri": { + "Description": "Must be a valid S3 bucket URL", + "Default": "s3://emrclusterdatabucket/", + "Type": "String" + }, + "ReleaseLabel": { + "Description": "Must be a valid EMR release version", + "Default": "emr-5.7.0", + "Type": "String" + }, + "Applications": { + "Description": "Please select which application will be installed on the cluster. This would be either Ganglia and spark, or Ganglia and s3 backed Hbase", + "Type": "String", + "AllowedValues": [ + "Spark", + "Hbase" + ] + } + }, + "Mappings": {}, + "Conditions": { + "Spark": { + "Fn::Equals": [ + { + "Ref": "Applications" + }, + "Spark" + ] + }, + "Hbase": { + "Fn::Equals": [ + { + "Ref": "Applications" + }, + "Hbase" + ] + } + }, + "Resources": [ + { + "DependsOn": [ + "EMRClusterServiceRole", + "EMRClusterinstanceProfileRole", + "EMRClusterinstanceProfile" + ], + "Type": "AWS::EMR::Cluster", + "Properties": { + "Applications": [ + { + "Name": "Ganglia" + }, + { + "Ref": "AWS::NoValue" + }, + { + "Ref": "AWS::NoValue" + } + ], + "Configurations": [ + { + "Classification": "hbase-site", + "ConfigurationProperties": { + "hbase.rootdir": "s3://emrclusterdatabucket/" + } + }, + { + "Classification": "hbase", + "ConfigurationProperties": { + "hbase.emr.storageMode": "s3" + } + } + ], + "Instances": { + "Ec2KeyName": { + "Ref": "KeyName" + }, + "Ec2SubnetId": "subnet-dba430ad", + "AdditionalMasterSecurityGroups": [ + "sg-9cb487fb", + "sg-9cb4876b" + ], + "AdditionalSlaveSecurityGroups": [ + "sg-9cb48144", + "sg-9cb48788" + ], + "MasterInstanceGroup": { + "InstanceCount": 1, + "InstanceType": "m3.xlarge", + "Market": "ON_DEMAND", + "Name": "Master" + }, + "CoreInstanceGroup": { + "InstanceCount": 2, + "InstanceType": "m3.xlarge", + "Market": "ON_DEMAND", + "Name": "Core" + }, + "TerminationProtected": false + }, + "VisibleToAllUsers": true, + "JobFlowRole": { + "Ref": "EMRClusterinstanceProfile" + }, + "ReleaseLabel": "emr-5.7.0", + "LogUri": "s3://emrclusterlogbucket/", + "Name": "emrcluster", + "AutoScalingRole": "EMR_AutoScaling_DefaultRole", + "ServiceRole": { + "Ref": "EMRClusterServiceRole" + } + }, + "Name": "EMRCluster" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "elasticmapreduce.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole" + ], + "Path": "/" + }, + "Name": "EMRClusterServiceRole" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role" + ], + "Path": "/" + }, + "Name": "EMRClusterinstanceProfileRole" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "EMRClusterinstanceProfileRole" + } + ] + }, + "Name": "EMRClusterinstanceProfile" + } + ], + "Outputs": {} + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT34 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT34 new file mode 100644 index 0000000..6c2a278 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT34 @@ -0,0 +1,171 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/IAM/IAM_Users_Groups_and_Policies.yaml" + ], + "timestamp": 1642972590416, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/IAM/IAM_Users_Groups_and_Policies.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT34", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::accesskey", + "aws::iam::usertogroupaddition", + "aws::iam::user", + "aws::iam::policy", + "aws::iam::group" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT34", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template IAM_Users_Groups_and_Policies: Sample template showing how to create IAM users, groups and policies. It creates a single user that is a member of a users group and an admin group. The groups each have different IAM policies associated with them. Note: This example also creates an AWSAccessKeyId/AWSSecretKey pair associated with the new user. The example is somewhat contrived since it creates all of the users and groups, typically you would be creating policies, users and/or groups that contain references to existing users or groups in your environment. Note that you will need to specify the CAPABILITY_IAM flag when you create the stack to allow this template to execute. You can do this through the AWS management console by clicking on the check box acknowledging that you understand this template creates IAM resources or by specifying the CAPABILITY_IAM flag to the cfn-create-stack command line tool or CreateStack API call.", + "Parameters": { + "Password": { + "NoEcho": "true", + "Type": "String", + "Description": "New account password", + "MinLength": "1", + "MaxLength": "41", + "ConstraintDescription": "the password must be between 1 and 41 characters" + } + }, + "Resources": [ + { + "Type": "AWS::IAM::User", + "Properties": { + "LoginProfile": { + "Password": { + "Ref": "Password" + } + } + }, + "Name": "CFNUser" + }, + { + "Type": "AWS::IAM::Group", + "Name": "CFNUserGroup" + }, + { + "Type": "AWS::IAM::Group", + "Name": "CFNAdminGroup" + }, + { + "Type": "AWS::IAM::UserToGroupAddition", + "Properties": { + "GroupName": { + "Ref": "CFNUserGroup" + }, + "Users": [ + { + "Ref": "CFNUser" + } + ] + }, + "Name": "Users" + }, + { + "Type": "AWS::IAM::UserToGroupAddition", + "Properties": { + "GroupName": { + "Ref": "CFNAdminGroup" + }, + "Users": [ + { + "Ref": "CFNUser" + } + ] + }, + "Name": "Admins" + }, + { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyName": "CFNUsers", + "PolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "cloudformation:Describe*", + "cloudformation:List*", + "cloudformation:Get*" + ], + "Resource": "*" + } + ] + }, + "Groups": [ + { + "Ref": "CFNUserGroup" + } + ] + }, + "Name": "CFNUserPolicies" + }, + { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyName": "CFNAdmins", + "PolicyDocument": { + "Statement": [ + { + "Effect": "Allow", + "Action": "cloudformation:*", + "Resource": "*" + } + ] + }, + "Groups": [ + { + "Ref": "CFNAdminGroup" + } + ] + }, + "Name": "CFNAdminPolicies" + }, + { + "Type": "AWS::IAM::AccessKey", + "Properties": { + "UserName": { + "Ref": "CFNUser" + } + }, + "Name": "CFNKeys" + } + ], + "Outputs": { + "AccessKey": { + "Value": { + "Ref": "CFNKeys" + }, + "Description": "AWSAccessKeyId of new user" + }, + "SecretKey": { + "Value": { + "Fn::GetAtt": [ + "CFNKeys", + "SecretAccessKey" + ] + }, + "Description": "AWSSecretAccessKey of new user" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT35 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT35 new file mode 100644 index 0000000..b2bc4a6 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT35 @@ -0,0 +1,1074 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/NeptuneDB/Neptune.yaml" + ], + "timestamp": 1642972590420, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/NeptuneDB/Neptune.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT35", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::sns::subscription", + "aws::neptune::dbclusterparametergroup", + "aws::neptune::dbinstance", + "aws::neptune::dbparametergroup", + "aws::ec2::securitygroup", + "aws::neptune::dbsubnetgroup", + "aws::iam::role", + "aws::iam::managedpolicy", + "aws::neptune::dbcluster", + "aws::sns::topic", + "aws::cloudwatch::alarm" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT35", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation template to automatically provision AWS Neptune Graph Database through optimized CI/CD method with AWS CloudWatch and AWS SNS.", + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "Tags" + }, + "Parameters": [ + "Env", + "AppName", + "AppEnv", + "Compliance", + "Dept", + "User", + "Owner", + "Tier", + "Version", + "Storage" + ] + }, + { + "Label": { + "default": "Neptune Database Parameters" + }, + "Parameters": [ + "DBInstanceClass", + "DBClusterIdentifier", + "MajorVersionUpgrade", + "MinorVersionUpgrade", + "NeptuneQueryTimeout", + "StorageEncrypted", + "NeptuneDBSubnetGroupName", + "GremlinRequestsPerSecThreshold", + "SparqlRequestsPerSecThreshold", + "IAMAuthEnabled", + "VPCStack" + ] + }, + { + "Label": { + "default": "Neptune Security Group Parameters" + }, + "Parameters": [ + "Port", + "AttributeType" + ] + }, + { + "Label": { + "default": "Neptune Backup and Monitoring Parameters" + }, + "Parameters": [ + "HighCpuAlarmThreshold", + "LowMemoryAlarmThreshold", + "UploadAuditLogs", + "NeptuneEnableAuditLog", + "BackupRetentionPeriod", + "NeptuneDBClusterPreferredMaintenanceWindow", + "NeptuneDBInstancePreferredMaintenanceWindow", + "NeptuneDBClusterPreferredBackupWindow" + ] + }, + { + "Label": { + "default": "Neptune Notifications Parameters" + }, + "Parameters": [ + "NeptuneSNSTopicArn", + "SNSEmailSubscription" + ] + } + ] + } + }, + "Parameters": { + "Env": { + "Description": "Please specify the target Environment. Used for tagging and resource names. Mandatory LOWER CASE.", + "Type": "String", + "Default": "dev", + "AllowedValues": [ + "test", + "dev", + "prod" + ] + }, + "AppName": { + "Description": "Please specify the Application Name. Used for tagging and resource names. Mandatory LOWER CASE.", + "Type": "String", + "Default": "appname" + }, + "Compliance": { + "Description": "Please specify the Compliance Type. Used for tagging", + "Type": "String", + "Default": "pci", + "AllowedValues": [ + "itar", + "pci" + ] + }, + "User": { + "Description": "Please specify the User. Used for tagging", + "Type": "String", + "Default": "test" + }, + "Owner": { + "Description": "Please specify the Owner. Used for tagging", + "Type": "String", + "Default": "" + }, + "Tier": { + "Description": "Please specify the Tier. Used for tagging", + "Type": "String", + "Default": "" + }, + "Version": { + "Description": "Please specify the Application Version. Used for tagging", + "Type": "String", + "Default": "" + }, + "Storage": { + "Description": "Please specify the Storage Type. Used for tagging", + "Type": "String", + "Default": "ebs", + "AllowedValues": [ + "ebs", + "efs", + "s3" + ] + }, + "VPCStack": { + "Description": "Please specify the VPC Stack Name.", + "Type": "String", + "Default": "vpc" + }, + "DBInstanceClass": { + "Description": "Neptune DB instance class that will be used for primary and all replicas", + "Type": "String", + "Default": "db.r4.large", + "AllowedValues": [ + "db.r4.large", + "db.r4.xlarge", + "db.r4.2xlarge", + "db.r4.4xlarge", + "db.r4.8xlarge" + ] + }, + "DBClusterIdentifier": { + "Description": "Neptune DB cluster identifier. Must contain from 1 to 63 alphanumeric characters or hyphens. First character must be a letter. Cannot end with a hyphen or contain two consecutive hyphens.", + "Type": "String" + }, + "Port": { + "Description": "Port used to connect to the Neptune cluster. Must be a valid port number between", + "Type": "String", + "Default": 8182 + }, + "NeptuneQueryTimeout": { + "Description": "Neptune DB parameters. Allowed values \"10-2147483647\"", + "Type": "String", + "Default": 120000 + }, + "StorageEncrypted": { + "Description": "Data-at-rest encryption", + "Type": "String", + "Default": false, + "AllowedValues": [ + true, + false + ] + }, + "NeptuneDBSubnetGroupName": { + "Description": "The name for the DB Subnet Group. This value is stored as a lowercase string. Constraints, Must contain no more than 255 letters, numbers, periods, underscores, spaces, or hyphens. Must not be default.", + "Type": "String" + }, + "NeptuneSNSTopicArn": { + "Description": "Custom SNS topic alarm. Optional. If not provided, an new SNS topic will be created for you", + "Type": "String" + }, + "SNSEmailSubscription": { + "Description": "SNS Email subscription. Optional. If not provided, no alarm subscriptions will be created", + "Type": "String", + "AllowedPattern": "^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$|^$" + }, + "HighCpuAlarmThreshold": { + "Description": "High CPU alarm threshold. Alert when CPU goes above this value. In percentage used", + "Type": "String", + "AllowedPattern": "(100|[1-9]?[0-9])$", + "Default": 80 + }, + "LowMemoryAlarmThreshold": { + "Description": "Low memory alarm threshold. Alert when memory falls below this value. In bytes", + "Type": "Number", + "Default": 700000000 + }, + "GremlinRequestsPerSecThreshold": { + "Description": "Gremlin Requests Per Sec alarm threshold. Alert when Gremlin Requests Per Sec goes above this value. In percentage used", + "Type": "String", + "Default": 10000 + }, + "SparqlRequestsPerSecThreshold": { + "Description": "Sparql Requests Per Sec alarm threshold. Alert when Sparql Requests Per Sec goes above this value. In percentage used", + "Type": "String", + "Default": 10000 + }, + "UploadAuditLogs": { + "Description": "Enable upload of audit logs?", + "Type": "String", + "Default": true, + "AllowedValues": [ + true, + false + ] + }, + "NeptuneEnableAuditLog": { + "Description": "Neptune DB parameters. Allowed values \"0, 1\"", + "Type": "String", + "Default": 0, + "AllowedValues": [ + 0, + 1 + ] + }, + "BackupRetentionPeriod": { + "Description": "Backup retention period (in days). Must be between 1 - 35", + "Type": "String", + "AllowedPattern": "([1-9]|[12][0-9]|3[0-5])", + "Default": 31 + }, + "NeptuneDBClusterPreferredMaintenanceWindow": { + "Description": "Neptune DB cluster preferred maintenance window. Format - ddd:hh24:mi-ddd:hh24:mi. Valid Days - Mon, Tue, Wed, Thu, Fri, Sat, Sun. Constraints - Minimum 30-minute window.", + "Type": "String", + "Default": "mon:03:00-mon:04:00" + }, + "NeptuneDBInstancePreferredMaintenanceWindow": { + "Description": "Neptune DB instance preferred maintenance window. Format - ddd:hh24:mi-ddd:hh24:mi. Valid Days - Mon, Tue, Wed, Thu, Fri, Sat, Sun. Constraints - Minimum 30-minute window.", + "Type": "String", + "Default": "mon:03:00-mon:04:00" + }, + "NeptuneDBClusterPreferredBackupWindow": { + "Description": "Neptune DB cluster preferred backup window. Constrains - Must be in the format hh24:mi-hh24:mi. Must be in Universal Coordinated Time (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes.", + "Type": "String", + "Default": "02:00-03:00" + }, + "MajorVersionUpgrade": { + "Description": "Neptune DB major version upgrade", + "Type": "String", + "Default": true, + "AllowedValues": [ + true, + false + ] + }, + "MinorVersionUpgrade": { + "Description": "Neptune DB minor version upgrade", + "Type": "String", + "Default": true, + "AllowedValues": [ + true, + false + ] + }, + "IAMAuthEnabled": { + "Description": "Neptune DB IAM authentication", + "Type": "String", + "Default": false, + "AllowedValues": [ + true, + false + ] + } + }, + "Conditions": { + "EnableAuditLogUpload": { + "Fn::Equals": [ + { + "Ref": "UploadAuditLogs" + }, + true + ] + }, + "CreateSnsTopic": { + "Fn::Equals": [ + { + "Ref": "NeptuneSNSTopicArn" + }, + "" + ] + }, + "CreateSnsSubscription": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "SNSEmailSubscription" + }, + "" + ] + } + ] + } + }, + "Resources": [ + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "SG of Neptune DB", + "VpcId": { + "Fn::ImportValue": { + "Fn::Sub": "${VPCStack}-VPCID" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${AWS::StackName}-neptune-sg" + } + } + ] + }, + "Name": "NeptuneDBSG" + }, + { + "Type": "AWS::Neptune::DBCluster", + "DependsOn": "NeptuneDBSG", + "Properties": { + "BackupRetentionPeriod": 31, + "DBClusterIdentifier": { + "Ref": "DBClusterIdentifier" + }, + "DBClusterParameterGroupName": { + "Ref": "NeptuneDBClusterParameterGroup" + }, + "DBSubnetGroupName": { + "Ref": "NeptuneDBSubnetGroup" + }, + "IamAuthEnabled": false, + "Port": 8182, + "PreferredBackupWindow": "02:00-03:00", + "PreferredMaintenanceWindow": "mon:03:00-mon:04:00", + "StorageEncrypted": false, + "VpcSecurityGroupIds": [ + { + "Ref": "NeptuneDBSG" + } + ], + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${Env}-${AppName}-Cluster" + } + }, + { + "Key": "App", + "Value": { + "Fn::Sub": "${AppName}" + } + }, + { + "Key": "Compliance", + "Value": { + "Fn::Sub": "Compliance" + } + }, + { + "Key": "Env", + "Value": { + "Fn::Sub": "${Env}" + } + }, + { + "Key": "User", + "Value": { + "Fn::Sub": "${User}" + } + }, + { + "Key": "Owner", + "Value": { + "Fn::Sub": "${Owner}" + } + }, + { + "Key": "Tier", + "Value": { + "Fn::Sub": "${Tier}" + } + }, + { + "Key": "Version", + "Value": { + "Fn::Sub": "${Version}" + } + }, + { + "Key": "Storage", + "Value": { + "Fn::Sub": "${Storage}" + } + } + ] + }, + "Name": "NeptuneDBCluster" + }, + { + "Type": "AWS::Neptune::DBInstance", + "Properties": { + "AllowMajorVersionUpgrade": true, + "AutoMinorVersionUpgrade": true, + "DBClusterIdentifier": { + "Ref": "NeptuneDBCluster" + }, + "DBInstanceClass": "db.r4.large", + "DBParameterGroupName": { + "Ref": "NeptuneDBParameterGroup" + }, + "DBSubnetGroupName": { + "Ref": "NeptuneDBSubnetGroup" + }, + "PreferredMaintenanceWindow": "mon:03:00-mon:04:00", + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${Env}-${AppName}-Instance" + } + }, + { + "Key": "App", + "Value": { + "Fn::Sub": "${AppName}" + } + }, + { + "Key": "Compliance", + "Value": { + "Fn::Sub": "Compliance" + } + }, + { + "Key": "Env", + "Value": { + "Fn::Sub": "${Env}" + } + }, + { + "Key": "User", + "Value": { + "Fn::Sub": "${User}" + } + }, + { + "Key": "Owner", + "Value": { + "Fn::Sub": "${Owner}" + } + }, + { + "Key": "Tier", + "Value": { + "Fn::Sub": "${Tier}" + } + }, + { + "Key": "Version", + "Value": { + "Fn::Sub": "${Version}" + } + }, + { + "Key": "Storage", + "Value": { + "Fn::Sub": "${Storage}" + } + } + ] + }, + "Name": "NeptuneDBInstance" + }, + { + "Type": "AWS::Neptune::DBClusterParameterGroup", + "Properties": { + "Description": { + "Fn::Sub": "CloudFormation managed Neptune DB Cluster Parameter Group - ${Env}-${AppName}-cluster-parameter-group" + }, + "Parameters": { + "neptune_enable_audit_log": 1 + }, + "Family": "neptune1", + "Name": { + "Fn::Sub": "${Env}-${AppName}-neptune-cluster-parameter-group" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${Env}-${AppName}-cluster-parameter-group" + } + }, + { + "Key": "App", + "Value": { + "Fn::Sub": "${AppName}" + } + }, + { + "Key": "Compliance", + "Value": { + "Fn::Sub": "Compliance" + } + }, + { + "Key": "Env", + "Value": { + "Fn::Sub": "${Env}" + } + }, + { + "Key": "User", + "Value": { + "Fn::Sub": "${User}" + } + }, + { + "Key": "Owner", + "Value": { + "Fn::Sub": "${Owner}" + } + }, + { + "Key": "Tier", + "Value": { + "Fn::Sub": "${Tier}" + } + }, + { + "Key": "Version", + "Value": { + "Fn::Sub": "${Version}" + } + }, + { + "Key": "Storage", + "Value": { + "Fn::Sub": "${Storage}" + } + } + ] + }, + "Name": "NeptuneDBClusterParameterGroup" + }, + { + "Type": "AWS::Neptune::DBParameterGroup", + "Properties": { + "Description": { + "Fn::Sub": "CloudFormation managed Neptune DB Parameter Group - ${Env}-${AppName}-parameter-group" + }, + "Parameters": { + "neptune_query_timeout": 120000 + }, + "Family": "neptune1", + "Name": { + "Fn::Sub": "${Env}-${AppName}-parameter-group" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${Env}-${AppName}-parameter-group" + } + }, + { + "Key": "App", + "Value": { + "Fn::Sub": "${AppName}" + } + }, + { + "Key": "Compliance", + "Value": { + "Fn::Sub": "Compliance" + } + }, + { + "Key": "Env", + "Value": { + "Fn::Sub": "${Env}" + } + }, + { + "Key": "User", + "Value": { + "Fn::Sub": "${User}" + } + }, + { + "Key": "Owner", + "Value": { + "Fn::Sub": "${Owner}" + } + }, + { + "Key": "Tier", + "Value": { + "Fn::Sub": "${Tier}" + } + }, + { + "Key": "Version", + "Value": { + "Fn::Sub": "${Version}" + } + }, + { + "Key": "Storage", + "Value": { + "Fn::Sub": "${Storage}" + } + } + ] + }, + "Name": "NeptuneDBParameterGroup" + }, + { + "Type": "AWS::Neptune::DBSubnetGroup", + "Properties": { + "DBSubnetGroupDescription": { + "Fn::Sub": "CloudFormation managed Neptune DB Subnet Group - ${Env}-${AppName}-subnet-group" + }, + "DBSubnetGroupName": { + "Ref": "NeptuneDBSubnetGroupName" + }, + "SubnetIds": [ + { + "Fn::ImportValue": { + "Fn::Sub": "${VPCStack}-PrivateSubnet1" + } + }, + { + "Fn::ImportValue": { + "Fn::Sub": "${VPCStack}-PrivateSubnet2" + } + } + ], + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${Env}-${AppName}-subnet-group" + } + }, + { + "Key": "App", + "Value": { + "Fn::Sub": "${AppName}" + } + }, + { + "Key": "Compliance", + "Value": { + "Fn::Sub": "Compliance" + } + }, + { + "Key": "Env", + "Value": { + "Fn::Sub": "${Env}" + } + }, + { + "Key": "User", + "Value": { + "Fn::Sub": "${User}" + } + }, + { + "Key": "Owner", + "Value": { + "Fn::Sub": "${Owner}" + } + }, + { + "Key": "Tier", + "Value": { + "Fn::Sub": "${Tier}" + } + }, + { + "Key": "Version", + "Value": { + "Fn::Sub": "${Version}" + } + }, + { + "Key": "Storage", + "Value": { + "Fn::Sub": "${Storage}" + } + } + ] + }, + "Name": "NeptuneDBSubnetGroup" + }, + { + "Type": "AWS::SNS::Topic", + "Condition": "CreateSnsTopic", + "Properties": { + "DisplayName": { + "Fn::Sub": "${AWS::StackName} alarm topic" + } + }, + "Name": "NeptuneAlarmTopic" + }, + { + "Type": "AWS::SNS::Subscription", + "Condition": "CreateSnsSubscription", + "Properties": { + "Endpoint": { + "Ref": "SNSEmailSubscription" + }, + "Protocol": "email", + "TopicArn": { + "Ref": "NeptuneSNSTopicArn" + } + }, + "Name": "NeptuneAlarmSubscription" + }, + { + "Type": "AWS::IAM::Role", + "Condition": "EnableAuditLogUpload", + "Properties": { + "RoleName": { + "Fn::Sub": "${Env}-${AppName}-neptune-iam-role-${AWS::Region}" + }, + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "monitoring.rds.amazonaws.com", + "rds.amazonaws.com" + ] + }, + "Action": "sts:AssumeRole" + } + ] + }, + "ManagedPolicyArns": [ + { + "Ref": "NeptuneCloudWatchPolicy" + }, + { + "Ref": "NeptuneS3Policy" + } + ] + }, + "Name": "NeptuneRole" + }, + { + "Type": "AWS::IAM::ManagedPolicy", + "Properties": { + "Description": "Default policy for CloudWatch logs", + "ManagedPolicyName": { + "Fn::Sub": "${Env}-${AppName}-neptune-cw-policy-${AWS::Region}" + }, + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "EnableLogGroups", + "Effect": "Allow", + "Action": [ + "logs:CreateLogGroup", + "logs:PutRetentionPolicy" + ], + "Resource": [ + { + "Fn::Sub": "arn:${AWS::Partition}:logs:*:*:log-group:/aws/neptune/*" + } + ] + }, + { + "Sid": "EnableLogStreams", + "Effect": "Allow", + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents", + "logs:DescriptLogStreams", + "logs:GetLogEvents" + ], + "Resource": [ + { + "Fn::Sub": "arn:${AWS::Partition}:logs:*:*:log-group:/aws/neptune/*:log-stream:*" + } + ] + } + ] + } + }, + "Name": "NeptuneCloudWatchPolicy" + }, + { + "Type": "AWS::IAM::ManagedPolicy", + "Properties": { + "Description": "Neptune default policy for S3 access for data load", + "ManagedPolicyName": { + "Fn::Sub": "${Env}-${AppName}-neptune-s3-policy-${AWS::Region}" + }, + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AllowNeptuneAccessToS3", + "Effect": "Allow", + "Action": [ + "s3:Get*", + "s3:List*" + ], + "Resource": [ + { + "Fn::Sub": "arn:aws:s3:::*" + } + ] + } + ] + } + }, + "Name": "NeptuneS3Policy" + }, + { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "AlarmDescription": { + "Fn::Sub": "${Env}-${AppName} primary DB CPU over ${HighCpuAlarmThreshold}%" + }, + "Namespace": "AWS/Neptune", + "MetricName": "CPUUtilization", + "Unit": "Percent", + "Statistic": "Average", + "Period": 300, + "EvaluationPeriods": 2, + "Threshold": 80, + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "Dimensions": [ + { + "Name": "DBClusterIdentifier", + "Value": { + "Ref": "NeptuneDBCluster" + } + } + ], + "AlarmActions": [ + { + "Ref": "NeptuneSNSTopicArn" + } + ], + "InsufficientDataActions": [ + { + "Ref": "NeptuneSNSTopicArn" + } + ] + }, + "Name": "NeptunePrimaryCpuAlarm" + }, + { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "AlarmDescription": { + "Fn::Sub": "${Env}-${AppName} primary DB memory under ${LowMemoryAlarmThreshold} bytes" + }, + "Namespace": "AWS/Neptune", + "MetricName": "FreeableMemory", + "Unit": "Bytes", + "Statistic": "Average", + "Period": 300, + "EvaluationPeriods": 2, + "Threshold": 700000000, + "ComparisonOperator": "LessThanOrEqualToThreshold", + "Dimensions": [ + { + "Name": "DBClusterIdentifier", + "Value": { + "Ref": "NeptuneDBCluster" + } + } + ], + "AlarmActions": [ + { + "Ref": "NeptuneSNSTopicArn" + } + ], + "InsufficientDataActions": [ + { + "Ref": "NeptuneSNSTopicArn" + } + ] + }, + "Name": "NeptunePrimaryMemoryAlarm" + }, + { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "AlarmDescription": { + "Fn::Sub": "${Env}-${AppName} primary DB Gremlin Requests Per Second" + }, + "Namespace": "AWS/Neptune", + "MetricName": "GremlinRequestsPerSec", + "Statistic": "Average", + "Period": 300, + "EvaluationPeriods": 2, + "Threshold": 10000, + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "Dimensions": [ + { + "Name": "DBClusterIdentifier", + "Value": "gremlin-cluster" + } + ], + "AlarmActions": [ + { + "Ref": "NeptuneSNSTopicArn" + } + ], + "InsufficientDataActions": [ + { + "Ref": "NeptuneSNSTopicArn" + } + ] + }, + "Name": "NeptunePrimaryGremlinRequestsPerSecAlarm" + }, + { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "AlarmDescription": { + "Fn::Sub": "${Env}-${AppName} primary DB Sparql Requests Per Second" + }, + "Namespace": "AWS/Neptune", + "MetricName": "SparqlRequestsPerSec", + "Statistic": "Average", + "Period": 300, + "EvaluationPeriods": 2, + "Threshold": 10000, + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "Dimensions": [ + { + "Name": "DBClusterIdentifier", + "Value": { + "Ref": "NeptuneDBCluster" + } + } + ], + "AlarmActions": [ + { + "Ref": "NeptuneSNSTopicArn" + } + ], + "InsufficientDataActions": [ + { + "Ref": "NeptuneSNSTopicArn" + } + ] + }, + "Name": "NeptunePrimarySparqlRequestsPerSecAlarm" + } + ], + "Outputs": { + "NeptuneEndpointAddress": { + "Description": "Neptune DB endpoint address", + "Value": { + "Fn::GetAtt": [ + "NeptuneDBCluster", + "Endpoint" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "${Env}-${AppName}-neptune-endpoint-address" + } + } + }, + "NeptuneReadEndpointAddress": { + "Description": "Neptune DB read-only endpoint address", + "Value": { + "Fn::GetAtt": [ + "NeptuneDBCluster", + "ReadEndpoint" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "${Env}-${AppName}-neptune-read-endpoint-address" + } + } + }, + "NeptuneSnsTopic": { + "Description": "Neptune SNS Topic for alarms", + "Value": { + "Fn::If": [ + "CreateSnsTopic", + { + "Ref": "NeptuneAlarmTopic" + }, + { + "Ref": "NeptuneSNSTopicArn" + } + ] + }, + "Export": { + "Name": { + "Fn::Sub": "${Env}-${AppName}-neptune-sns-topic" + } + } + }, + "NeptuneEndpointPort": { + "Description": "Endpoint port", + "Value": { + "Fn::GetAtt": [ + "NeptuneDBCluster", + "Port" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "${Env}-${AppName}-neptune-endpoint-port" + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT36 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT36 new file mode 100644 index 0000000..565be34 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT36 @@ -0,0 +1,312 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/RDS/RDS_MySQL_With_Read_Replica.yaml" + ], + "timestamp": 1642972590425, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/RDS/RDS_MySQL_With_Read_Replica.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT36", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbsecuritygroup", + "aws::ec2::securitygroup", + "aws::rds::dbinstance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT36", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template RDS_MySQL_With_Read_Replica: Sample template showing how to create a highly-available, RDS DBInstance with a read replica. **WARNING** This template creates an Amazon Relational Database Service database instance and Amazon CloudWatch alarms. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "DBName": { + "Default": "MyDatabase", + "Description": "The database name", + "Type": "String", + "MinLength": "1", + "MaxLength": "64", + "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", + "ConstraintDescription": "must begin with a letter and contain only alphanumeric characters." + }, + "DBUser": { + "NoEcho": "true", + "Description": "The database admin account username", + "Type": "String", + "MinLength": "1", + "MaxLength": "16", + "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", + "ConstraintDescription": "must begin with a letter and contain only alphanumeric characters." + }, + "DBPassword": { + "NoEcho": "true", + "Description": "The database admin account password", + "Type": "String", + "MinLength": "1", + "MaxLength": "41", + "AllowedPattern": "[a-zA-Z0-9]+", + "ConstraintDescription": "must contain only alphanumeric characters." + }, + "DBAllocatedStorage": { + "Default": "5", + "Description": "The size of the database (Gb)", + "Type": "Number", + "MinValue": "5", + "MaxValue": "1024", + "ConstraintDescription": "must be between 5 and 1024Gb." + }, + "DBInstanceClass": { + "Description": "The database instance type", + "Type": "String", + "Default": "db.t2.small", + "AllowedValues": [ + "db.t1.micro", + "db.m1.small", + "db.m1.medium", + "db.m1.large", + "db.m1.xlarge", + "db.m2.xlarge", + "db.m2.2xlarge", + "db.m2.4xlarge", + "db.m3.medium", + "db.m3.large", + "db.m3.xlarge", + "db.m3.2xlarge", + "db.m4.large", + "db.m4.xlarge", + "db.m4.2xlarge", + "db.m4.4xlarge", + "db.m4.10xlarge", + "db.r3.large", + "db.r3.xlarge", + "db.r3.2xlarge", + "db.r3.4xlarge", + "db.r3.8xlarge", + "db.m2.xlarge", + "db.m2.2xlarge", + "db.m2.4xlarge", + "db.cr1.8xlarge", + "db.t2.micro", + "db.t2.small", + "db.t2.medium", + "db.t2.large" + ], + "ConstraintDescription": "must select a valid database instance type." + }, + "EC2SecurityGroup": { + "Description": "The EC2 security group that contains instances that need access to the database", + "Default": "default", + "Type": "String", + "AllowedPattern": "[a-zA-Z0-9\\-]+", + "ConstraintDescription": "must be a valid security group name." + }, + "MultiAZ": { + "Description": "Multi-AZ master database", + "Type": "String", + "Default": "false", + "AllowedValues": [ + "true", + "false" + ], + "ConstraintDescription": "must be true or false." + } + }, + "Conditions": { + "Is-EC2-VPC": { + "Fn::Or": [ + { + "Fn::Equals": [ + { + "Ref": "AWS::Region" + }, + "eu-central-1" + ] + }, + { + "Fn::Equals": [ + { + "Ref": "AWS::Region" + }, + "cn-north-1" + ] + } + ] + }, + "Is-EC2-Classic": { + "Fn::Not": [ + { + "Condition": "Is-EC2-VPC" + } + ] + } + }, + "Resources": [ + { + "Type": "AWS::EC2::SecurityGroup", + "Condition": "Is-EC2-VPC", + "Properties": { + "GroupDescription": "Open database for access", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "3306", + "ToPort": "3306", + "SourceSecurityGroupName": "default" + } + ] + }, + "Name": "DBEC2SecurityGroup" + }, + { + "Type": "AWS::RDS::DBSecurityGroup", + "Condition": "Is-EC2-Classic", + "Properties": { + "DBSecurityGroupIngress": { + "EC2SecurityGroupName": "default" + }, + "GroupDescription": "database access" + }, + "Name": "DBSecurityGroup" + }, + { + "Type": "AWS::RDS::DBInstance", + "Properties": { + "DBName": "MyDatabase", + "AllocatedStorage": "5", + "DBInstanceClass": "db.t2.small", + "Engine": "MySQL", + "MasterUsername": { + "Ref": "DBUser" + }, + "MasterUserPassword": { + "Ref": "DBPassword" + }, + "MultiAZ": "false", + "Tags": [ + { + "Key": "Name", + "Value": "Master Database" + } + ], + "VPCSecurityGroups": { + "Ref": "AWS::NoValue" + }, + "DBSecurityGroups": { + "Fn::If": [ + "Is-EC2-Classic", + [ + { + "Ref": "DBSecurityGroup" + } + ], + { + "Ref": "AWS::NoValue" + } + ] + } + }, + "DeletionPolicy": "Snapshot", + "Name": "MasterDB" + }, + { + "Type": "AWS::RDS::DBInstance", + "Properties": { + "SourceDBInstanceIdentifier": { + "Ref": "MasterDB" + }, + "DBInstanceClass": "db.t2.small", + "Tags": [ + { + "Key": "Name", + "Value": "Read Replica Database" + } + ] + }, + "Name": "ReplicaDB" + } + ], + "Outputs": { + "EC2Platform": { + "Description": "Platform in which this stack is deployed", + "Value": { + "Fn::If": [ + "Is-EC2-VPC", + "EC2-VPC", + "EC2-Classic" + ] + } + }, + "MasterJDBCConnectionString": { + "Description": "JDBC connection string for the master database", + "Value": { + "Fn::Join": [ + "", + [ + "jdbc:mysql://", + { + "Fn::GetAtt": [ + "MasterDB", + "Endpoint.Address" + ] + }, + ":", + { + "Fn::GetAtt": [ + "MasterDB", + "Endpoint.Port" + ] + }, + "/", + { + "Ref": "DBName" + } + ] + ] + } + }, + "ReplicaJDBCConnectionString": { + "Description": "JDBC connection string for the replica database", + "Value": { + "Fn::Join": [ + "", + [ + "jdbc:mysql://", + { + "Fn::GetAtt": [ + "ReplicaDB", + "Endpoint.Address" + ] + }, + ":", + { + "Fn::GetAtt": [ + "ReplicaDB", + "Endpoint.Port" + ] + }, + "/", + { + "Ref": "DBName" + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT37 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT37 new file mode 100644 index 0000000..0103d8d --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT37 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/RDS/RDS_PIOPS.yaml" + ], + "timestamp": 1642972590430, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/RDS/RDS_PIOPS.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT37", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbinstance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT37", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template RDS_PIOPS: Sample template showing how to create an Amazon RDS Database Instance with provisioned IOPs.**WARNING** This template creates an Amazon Relational Database Service database instance. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "DBUser": { + "NoEcho": "true", + "Description": "The database admin account username", + "Type": "String", + "MinLength": "1", + "MaxLength": "16", + "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", + "ConstraintDescription": "must begin with a letter and contain only alphanumeric characters." + }, + "DBPassword": { + "NoEcho": "true", + "Description": "The database admin account password", + "Type": "String", + "MinLength": "8", + "MaxLength": "41", + "AllowedPattern": "[a-zA-Z0-9]*", + "ConstraintDescription": "must contain only alphanumeric characters." + } + }, + "Resources": [ + { + "Type": "AWS::RDS::DBInstance", + "Properties": { + "AllocatedStorage": "100", + "DBInstanceClass": "db.t2.small", + "Engine": "MySQL", + "Iops": "1000", + "MasterUsername": { + "Ref": "DBUser" + }, + "MasterUserPassword": { + "Ref": "DBPassword" + } + }, + "Name": "myDB" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT38 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT38 new file mode 100644 index 0000000..205dc77 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT38 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/RDS/RDS_Snapshot_On_Delete.yaml" + ], + "timestamp": 1642972590432, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/RDS/RDS_Snapshot_On_Delete.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT38", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbinstance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT38", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template RDS_Snapshot_On_Delete: Sample template showing how to create an RDS DBInstance that is snapshotted on stack deletion. **WARNING** This template creates an Amazon RDS database instance. When the stack is deleted a database snapshot will be left in your account. You will be billed for the AWS resources used if you create a stack from this template.", + "Resources": [ + { + "Type": "AWS::RDS::DBInstance", + "Properties": { + "DBName": "MyDatabase", + "AllocatedStorage": "5", + "DBInstanceClass": "db.t2.small", + "Engine": "MySQL", + "MasterUsername": "myName", + "MasterUserPassword": "myPassword" + }, + "DeletionPolicy": "Snapshot", + "Name": "MyDB" + } + ], + "Outputs": { + "JDBCConnectionString": { + "Description": "JDBC connection string for the database", + "Value": { + "Fn::Join": [ + "", + [ + "jdbc:mysql://", + { + "Fn::GetAtt": [ + "MyDB", + "Endpoint.Address" + ] + }, + ":", + { + "Fn::GetAtt": [ + "MyDB", + "Endpoint.Port" + ] + }, + "/MyDatabase" + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT39 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT39 new file mode 100644 index 0000000..081874b --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT39 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/RDS/RDS_with_DBParameterGroup.yaml" + ], + "timestamp": 1642972590436, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/RDS/RDS_with_DBParameterGroup.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT39", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::rds::dbparametergroup", + "aws::rds::dbinstance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT39", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template RDS_with_DBParameterGroup: Sample template showing how to create an Amazon RDS Database Instance with a DBParameterGroup.**WARNING** This template creates an Amazon Relational Database Service database instance. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "DBName": { + "Default": "MyDatabase", + "Description": "The database name", + "Type": "String", + "MinLength": "1", + "MaxLength": "64", + "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", + "ConstraintDescription": "must begin with a letter and contain only alphanumeric characters." + }, + "DBUser": { + "NoEcho": "true", + "Description": "The database admin account username", + "Type": "String", + "MinLength": "1", + "MaxLength": "16", + "AllowedPattern": "[a-zA-Z][a-zA-Z0-9]*", + "ConstraintDescription": "must begin with a letter and contain only alphanumeric characters." + }, + "DBPassword": { + "NoEcho": "true", + "Description": "The database admin account password", + "Type": "String", + "MinLength": "8", + "MaxLength": "41", + "AllowedPattern": "[a-zA-Z0-9]*", + "ConstraintDescription": "must contain only alphanumeric characters." + } + }, + "Resources": [ + { + "Type": "AWS::RDS::DBInstance", + "Properties": { + "DBName": "MyDatabase", + "AllocatedStorage": "5", + "DBInstanceClass": "db.t2.small", + "Engine": "MySQL", + "EngineVersion": "5.6.19", + "MasterUsername": { + "Ref": "DBUser" + }, + "MasterUserPassword": { + "Ref": "DBPassword" + }, + "DBParameterGroupName": { + "Ref": "MyRDSParamGroup" + } + }, + "Name": "MyDB" + }, + { + "Type": "AWS::RDS::DBParameterGroup", + "Properties": { + "Family": "MySQL5.6", + "Description": "CloudFormation Sample Database Parameter Group", + "Parameters": { + "autocommit": "1", + "general_log": "1", + "old_passwords": "0" + } + }, + "Name": "MyRDSParamGroup" + } + ], + "Outputs": { + "JDBCConnectionString": { + "Description": "JDBC connection string for the database", + "Value": { + "Fn::Join": [ + "", + [ + "jdbc:mysql://", + { + "Fn::GetAtt": [ + "MyDB", + "Endpoint.Address" + ] + }, + ":", + { + "Fn::GetAtt": [ + "MyDB", + "Endpoint.Port" + ] + }, + "/", + { + "Ref": "DBName" + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT4 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT4 new file mode 100644 index 0000000..f24a7f1 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT4 @@ -0,0 +1,156 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/Cloud9/C9.yaml" + ], + "timestamp": 1642972590285, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/Cloud9/C9.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT4", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::cloud9::environmentec2" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT4", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS Cloud9 Environment with AWS CodeCommit Repository", + "Parameters": { + "EC2InstanceType": { + "Description": "EC2 instance type on which IDE runs", + "Type": "String", + "Default": "t2.micro", + "AllowedValues": [ + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "t2.xlarge", + "t2.2xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "m4.16xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge" + ] + }, + "AutoHibernateTimeout": { + "Description": "How many minutes idle before shutting down the IDE. Options, 30min, 1hr, 4hr, 1day, 1week, Never (0)", + "Type": "Number", + "Default": 30, + "AllowedValues": [ + 30, + 60, + 240, + 1440, + 10080, + 0 + ] + }, + "Env": { + "Description": "Please specify the target Env. Used for tagging and resource names. Mandatory LOWER CASE.", + "Type": "String", + "Default": "poc", + "AllowedValues": [ + "poc", + "dev", + "prod" + ] + }, + "User": { + "Description": "Please specify the User.", + "Type": "String", + "Default": "test" + }, + "VPCStackName": { + "Description": "Name of an VPC Stack.", + "Type": "String", + "Default": "vpc" + }, + "RepositoryName": { + "Description": "CodeCommit Repository Name", + "Type": "String", + "Default": "CodeCommitRepoExample" + } + }, + "Resources": [ + { + "Type": "AWS::Cloud9::EnvironmentEC2", + "Properties": { + "Name": { + "Fn::Sub": "${User}-${Env}-Cloud9-IDE" + }, + "Description": { + "Fn::Sub": "${User} Cloud9 IDE" + }, + "AutomaticStopTimeMinutes": 30, + "SubnetId": { + "Fn::ImportValue": { + "Fn::Sub": "${VPCStackName}-PublicSubnet1" + } + }, + "InstanceType": "t2.micro", + "Repositories": [ + { + "RepositoryUrl": { + "Fn::Sub": "https://git-codecommit.${AWS::Region}.amazonaws.com/v1/repos/${RepositoryName}" + }, + "PathComponent": { + "Fn::Sub": "codecommit/${RepositoryName}" + } + } + ] + }, + "Name": "C9IDE" + } + ], + "Outputs": { + "Cloud9URL": { + "Description": "Cloud9 Environment", + "Value": { + "Fn::Join": [ + "", + [ + { + "Fn::Sub": "https://${AWS::Region}.console.aws.amazon.com/cloud9/ide/" + }, + { + "Ref": "C9IDE" + } + ] + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT40 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT40 new file mode 100644 index 0000000..151809b --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT40 @@ -0,0 +1,129 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-delete-retention-v1.yaml" + ], + "timestamp": 1642972590440, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-delete-retention-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT40", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT40", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template: Sample template which will create an s3 bucket with deletion retention enabled and a bucket policy to enable cross account acccess. The template requires you to provide an AWS account ID to provide cross account access to, and a globally unique name for an s3 bucket.", + "Parameters": { + "BucketName": { + "Type": "String", + "Description": "The name of the S3 Bucket to create, make this unique" + }, + "PublisherAccountID": { + "Type": "String", + "Description": "The AWS account ID with whom you are sharing access" + } + }, + "Resources": [ + { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketName": { + "Ref": "BucketName" + } + }, + "DeletionPolicy": "Retain", + "Name": "S3BUCKET" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "S3BUCKET" + }, + "PolicyDocument": { + "Id": "CrossAccessPolicy", + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:ListBucket", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:GetObject", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}/*" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + } + ] + } + }, + "Name": "S3BUCKETPOL" + } + ], + "Outputs": { + "Bucket": { + "Description": "S3 Bucket Name", + "Value": { + "Ref": "S3BUCKET" + } + }, + "BucketPolicy": { + "Description": "S3 Bucket Policy Name", + "Value": { + "Ref": "S3BUCKETPOL" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT41 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT41 new file mode 100644 index 0000000..d8e652f --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT41 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-secure-transport-v1.yaml" + ], + "timestamp": 1642972590442, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-secure-transport-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT41", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT41", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template: Sample template which will create an s3 bucket with a bucket policy enforcing secure transport and enabling cross account acccess. The template requires you to provide an AWS account ID to provide cross account access to, and a globally unique name for an s3 bucket.", + "Parameters": { + "BucketName": { + "Type": "String", + "Description": "The name of the S3 Bucket to create, make this unique" + }, + "PublisherAccountID": { + "Type": "String", + "Description": "The AWS account ID with whom you are sharing access" + } + }, + "Resources": [ + { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketName": { + "Ref": "BucketName" + } + }, + "Name": "S3BUCKET" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "S3BUCKET" + }, + "PolicyDocument": { + "Id": "CrossAccessPolicy", + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:ListBucket", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:GetObject", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}/*" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "HttpsOnly", + "Action": "*", + "Effect": "Deny", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${BucketName}/*" + }, + "Principal": "*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + } + } + ] + } + }, + "Name": "S3BUCKETPOL" + } + ], + "Outputs": { + "Bucket": { + "Description": "S3 Bucket Name", + "Value": { + "Ref": "S3BUCKET" + } + }, + "BucketPolicy": { + "Description": "S3 Bucket Policy Name", + "Value": { + "Ref": "S3BUCKETPOL" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT42 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT42 new file mode 100644 index 0000000..eb7919e --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT42 @@ -0,0 +1,137 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-sse-v1.yaml" + ], + "timestamp": 1642972590446, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-sse-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT42", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT42", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template: Sample template which will create an s3 bucket with server side encryption enabled and a bucket policy to enable cross account acccess. The template requires you to provide an AWS account ID to provide cross account access to, and a globally unique name for an s3 bucket.", + "Parameters": { + "BucketName": { + "Type": "String", + "Description": "The name of the S3 Bucket to create, make this unique" + }, + "PublisherAccountID": { + "Type": "String", + "Description": "The AWS account ID with whom you are sharing access" + } + }, + "Resources": [ + { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketName": { + "Ref": "BucketName" + }, + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "SSEAlgorithm": "AES256" + } + } + ] + } + }, + "Name": "S3BUCKET" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "S3BUCKET" + }, + "PolicyDocument": { + "Id": "CrossAccessPolicy", + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:ListBucket", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:GetObject", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}/*" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + } + ] + } + }, + "Name": "S3BUCKETPOL" + } + ], + "Outputs": { + "Bucket": { + "Description": "S3 Bucket Name", + "Value": { + "Ref": "S3BUCKET" + } + }, + "BucketPolicy": { + "Description": "S3 Bucket Policy Name", + "Value": { + "Ref": "S3BUCKETPOL" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT43 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT43 new file mode 100644 index 0000000..55fd0a7 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT43 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-v1.yaml" + ], + "timestamp": 1642972590450, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT43", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT43", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template: Sample template which will create an s3 bucket with a bucket policy to enable cross account acccess. The template requires you to provide an AWS account ID to provide cross account access to, and a globally unique name for an s3 bucket.", + "Parameters": { + "BucketName": { + "Type": "String", + "Description": "The name of the S3 Bucket to create, make this unique" + }, + "PublisherAccountID": { + "Type": "String", + "Description": "The AWS account ID with whom you are sharing access" + } + }, + "Resources": [ + { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketName": { + "Ref": "BucketName" + } + }, + "Name": "S3BUCKET" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "S3BUCKET" + }, + "PolicyDocument": { + "Id": "CrossAccessPolicy", + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:ListBucket", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:GetObject", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}/*" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + } + ] + } + }, + "Name": "S3BUCKETPOL" + } + ], + "Outputs": { + "Bucket": { + "Description": "S3 Bucket Name", + "Value": { + "Ref": "S3BUCKET" + } + }, + "BucketPolicy": { + "Description": "S3 Bucket Policy Name", + "Value": { + "Ref": "S3BUCKETPOL" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT44 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT44 new file mode 100644 index 0000000..efa7f85 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT44 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-versioning-v1.yaml" + ], + "timestamp": 1642972590453, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-and-policy-for-caa-versioning-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT44", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT44", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template: Sample template which will create an s3 bucket with versioning enabled and a bucket policy to enable cross account acccess. The template requires you to provide an AWS account ID to provide cross account access to, and a globally unique name for an s3 bucket.", + "Parameters": { + "BucketName": { + "Type": "String", + "Description": "The name of the S3 Bucket to create, make this unique" + }, + "PublisherAccountID": { + "Type": "String", + "Description": "The AWS account ID with whom you are sharing access" + } + }, + "Resources": [ + { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketName": { + "Ref": "BucketName" + }, + "VersioningConfiguration": { + "Status": "Enabled" + } + }, + "Name": "S3BUCKET" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "S3BUCKET" + }, + "PolicyDocument": { + "Id": "CrossAccessPolicy", + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:ListBucket", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:GetObject", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${S3BUCKET}/*" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + } + ] + } + }, + "Name": "S3BUCKETPOL" + } + ], + "Outputs": { + "Bucket": { + "Description": "S3 Bucket Name", + "Value": { + "Ref": "S3BUCKET" + } + }, + "BucketPolicy": { + "Description": "S3 Bucket Policy Name", + "Value": { + "Ref": "S3BUCKETPOL" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT45 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT45 new file mode 100644 index 0000000..be785d4 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT45 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/s3-bucket-policy-for-caa-secure-transport-v1.yaml" + ], + "timestamp": 1642972590457, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-policy-for-caa-secure-transport-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT45", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT45", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template: Sample template which will create a bucket policy to enable cross account acccess. The template requires you to provide an AWS account ID to provide cross account access to, and the name of the target bucket.", + "Parameters": { + "BucketName": { + "Type": "String", + "Description": "The existing S3 Bucket to create the policy for" + }, + "PublisherAccountID": { + "Type": "String", + "Description": "The AWS account ID with whom you are sharing access" + } + }, + "Resources": [ + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "BucketName" + }, + "PolicyDocument": { + "Id": "CrossAccessPolicy", + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:ListBucket", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${BucketName}" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:GetObject", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${BucketName}/*" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "HttpsOnly", + "Action": "*", + "Effect": "Deny", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${BucketName}/*" + }, + "Principal": "*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + } + } + ] + } + }, + "Name": "S3BUCKETPOL" + } + ], + "Outputs": { + "Bucket": { + "Description": "S3 Bucket Name", + "Value": { + "Ref": "BucketName" + } + }, + "BucketPolicy": { + "Description": "S3 Bucket Policy Name", + "Value": { + "Ref": "S3BUCKETPOL" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT46 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT46 new file mode 100644 index 0000000..434e626 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT46 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/s3-bucket-policy-for-caa-v1.yaml" + ], + "timestamp": 1642972590460, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/s3-bucket-policy-for-caa-v1.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT46", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT46", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template: Sample template which will create a bucket policy to enable cross account acccess. The template requires you to provide an AWS account ID to provide cross account access to, and the name of the target bucket.", + "Parameters": { + "BucketName": { + "Type": "String", + "Description": "The existing S3 Bucket to create the policy for" + }, + "PublisherAccountID": { + "Type": "String", + "Description": "The AWS account ID with whom you are sharing access" + } + }, + "Resources": [ + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "BucketName" + }, + "PolicyDocument": { + "Id": "CrossAccessPolicy", + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:ListBucket", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${BucketName}" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + }, + { + "Sid": "CrossAccPolicyDoc", + "Action": "s3:GetObject", + "Effect": "Allow", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${BucketName}/*" + }, + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "PublisherAccountID" + }, + ":root" + ] + ] + } + } + } + ] + } + }, + "Name": "S3BUCKETPOL" + } + ], + "Outputs": { + "Bucket": { + "Description": "S3 Bucket Name", + "Value": { + "Ref": "BucketName" + } + }, + "BucketPolicy": { + "Description": "S3 Bucket Policy Name", + "Value": { + "Ref": "S3BUCKETPOL" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT47 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT47 new file mode 100644 index 0000000..cf973ca --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT47 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/S3_Website_Bucket_With_Retain_On_Delete.yaml" + ], + "timestamp": 1642972590464, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/S3_Website_Bucket_With_Retain_On_Delete.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT47", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT47", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template S3_Website_Bucket_With_Retain_On_Delete: Sample template showing how to create a publicly accessible S3 bucket configured for website access with a deletion policy of retain on delete. **WARNING** This template creates an S3 bucket that will NOT be deleted when the stack is deleted. You will be billed for the AWS resources used if you create a stack from this template.", + "Resources": [ + { + "Type": "AWS::S3::Bucket", + "Properties": { + "AccessControl": "PublicRead", + "WebsiteConfiguration": { + "IndexDocument": "index.html", + "ErrorDocument": "error.html" + } + }, + "DeletionPolicy": "Retain", + "Name": "S3Bucket" + } + ], + "Outputs": { + "WebsiteURL": { + "Value": { + "Fn::GetAtt": [ + "S3Bucket", + "WebsiteURL" + ] + }, + "Description": "URL for website hosted on S3" + }, + "S3BucketSecureURL": { + "Value": { + "Fn::Join": [ + "", + [ + "https://", + { + "Fn::GetAtt": [ + "S3Bucket", + "DomainName" + ] + } + ] + ] + }, + "Description": "Name of S3 bucket to hold website content" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT48 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT48 new file mode 100644 index 0000000..8029288 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT48 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/S3/S3_Website_With_CloudFront_Distribution.yaml" + ], + "timestamp": 1642972590468, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/S3/S3_Website_With_CloudFront_Distribution.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT48", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::route53::recordset", + "aws::cloudfront::distribution" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT48", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Metadata": { + "License": "Apache-2.0" + }, + "Description": "AWS CloudFormation Sample Template S3_Website_With_CloudFront_Distribution: Sample template showing how to create a website with a custom DNS name, hosted on Amazon S3 and served via Amazone CloudFront. It assumes you already have a Hosted Zone registered with Amazon Route 53. **WARNING** This template creates an Amazon Route 53 DNS record, an S3 bucket and a CloudFront distribution. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "HostedZone": { + "Type": "String", + "Description": "The DNS name of an existing Amazon Route 53 hosted zone", + "AllowedPattern": "(?!-)[a-zA-Z0-9-.]{1,63}(?\nmkdir C:\\Downloads\\Amazon\\AmazonCloudWatchAgent\npowershell -Command \"(New-Object Net.WebClient).DownloadFile('https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi','C:\\Downloads\\Amazon\\AmazonCloudWatchAgent\\amazon-cloudwatch-agent.msi')\"\nC:\\Downloads\\Amazon\\AmazonCloudWatchAgent\\amazon-cloudwatch-agent.msi\ncfn-init.exe -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets default\ncfn-signal.exe -e %errorlevel% --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region}\n\n" + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT62 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT62 new file mode 100644 index 0000000..ca6ea1a --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT62 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/amazon_linux.template" + ], + "timestamp": 1642972590528, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/amazon_linux.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT62", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT62", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template to install CloudWatchAgent on amazon linux. It was validated on amazon linux 2", + "Parameters": { + "SSMKey": { + "Description": "Name of parameter store which contains the json configuration of CWAgent.", + "Type": "String", + "Default": "AmazonCloudWatch-DefaultLinuxConfigCloudFormationCreate" + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "m4.2xlarge", + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "InstanceAMI": { + "Description": "Managed AMI ID for EC2 Instance", + "Type": "String", + "Default": "ami-7707a10f" + }, + "IAMRole": { + "Description": "EC2 attached IAM role", + "Type": "String", + "Default": "CloudWatchAgentAdminRole", + "ConstraintDescription": "must be an existing IAM role which will be attached to EC2 instance." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "default": [ + "01_setupCfnHup", + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ], + "UpdateEnvironment": [ + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ] + }, + "02_config-amazon-cloudwatch-agent": { + "files": { + "/opt/aws/amazon-cloudwatch-agent/etc/dummy.version": { + "content": { + "Fn::Sub": "\"You can change the VERSION below to to simulate the update of metadata\"\n\"VERSION=1.0\"\n" + } + } + } + }, + "03_restart_amazon-cloudwatch-agent": { + "commands": { + "01_stop_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop" + }, + "02_start_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-DefaultLinuxConfigCloudFormationCreate -s\n" + } + } + }, + "01_setupCfnHup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Sub": "[main]\nstack=${AWS::StackId}\nregion=${AWS::Region}\ninterval=1\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/amazon-cloudwatch-agent-auto-reloader.conf": { + "content": { + "Fn::Sub": "[cfn-auto-reloader-hook]\ntriggers=post.update\npath=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init.02_config-amazon-cloudwatch-agent\naction=/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets UpdateEnvironment\nrunas=root\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/lib/systemd/system/cfn-hup.service": { + "content": { + "Fn::Sub": "[Unit]\nDescription=cfn-hup daemon\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n[Install]\nWantedBy=multi-user.target\n" + } + } + }, + "commands": { + "01enable_cfn_hup": { + "command": { + "Fn::Sub": "systemctl enable cfn-hup.service\n" + } + }, + "02start_cfn_hup": { + "command": { + "Fn::Sub": "systemctl start cfn-hup.service\n" + } + } + } + } + } + }, + "Properties": { + "InstanceType": "m4.2xlarge", + "IamInstanceProfile": "CloudWatchAgentAdminRole", + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "ami-7707a10f", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Sub": [ + "#!/bin/bash\nrpm -Uvh https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm\n/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:${ssmkey} -s\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets default\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region}\n", + { + "ssmkey": { + "Ref": "SSMKey" + } + } + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT63 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT63 new file mode 100644 index 0000000..e01f815 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT63 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/centos.template" + ], + "timestamp": 1642972590531, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/centos.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT63", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT63", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template to install CloudWatchAgent on centos. It was validated on centos 7", + "Parameters": { + "SSMKey": { + "Description": "Name of parameter store which contains the json configuration of CWAgent.", + "Type": "String", + "Default": "AmazonCloudWatch-DefaultLinuxConfigCloudFormation" + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "m4.2xlarge", + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "InstanceAMI": { + "Description": "Managed AMI ID for EC2 Instance", + "Type": "String", + "Default": "ami-28e07e50" + }, + "IAMRole": { + "Description": "EC2 attached IAM role", + "Type": "String", + "Default": "CloudWatchAgentAdminRole", + "ConstraintDescription": "must be an existing IAM role which will be attached to EC2 instance." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "default": [ + "01_setupCfnHup", + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ], + "UpdateEnvironment": [ + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ] + }, + "02_config-amazon-cloudwatch-agent": { + "files": { + "/opt/aws/amazon-cloudwatch-agent/etc/dummy.version": { + "content": { + "Fn::Sub": "\"You can change the VERSION below to to simulate the update of metadata\"\n\"VERSION=1.0\"\n" + } + } + } + }, + "03_restart_amazon-cloudwatch-agent": { + "commands": { + "01_stop_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop" + }, + "02_start_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-DefaultLinuxConfigCloudFormation -s\n" + } + } + }, + "01_setupCfnHup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Sub": "[main]\nstack=${AWS::StackId}\nregion=${AWS::Region}\ninterval=1\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/amazon-cloudwatch-agent-auto-reloader.conf": { + "content": { + "Fn::Sub": "[cfn-auto-reloader-hook]\ntriggers=post.update\npath=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init.02_config-amazon-cloudwatch-agent\naction=/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets UpdateEnvironment\nrunas=root\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/lib/systemd/system/cfn-hup.service": { + "content": { + "Fn::Sub": "[Unit]\nDescription=cfn-hup daemon\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n[Install]\nWantedBy=multi-user.target\n" + } + } + }, + "commands": { + "01enable_cfn_hup": { + "command": { + "Fn::Sub": "systemctl enable cfn-hup.service\n" + } + }, + "02start_cfn_hup": { + "command": { + "Fn::Sub": "systemctl start cfn-hup.service\n" + } + } + } + } + } + }, + "Properties": { + "InstanceType": "m4.2xlarge", + "IamInstanceProfile": "CloudWatchAgentAdminRole", + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "ami-28e07e50", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Sub": [ + "#!/bin/bash\nrpm -Uvh https://s3.amazonaws.com/amazoncloudwatch-agent/centos/amd64/latest/amazon-cloudwatch-agent.rpm\n/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:${ssmkey} -s\nyum update -y\neasy_install --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets default\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region}\n", + { + "ssmkey": { + "Ref": "SSMKey" + } + } + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT64 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT64 new file mode 100644 index 0000000..48fafd7 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT64 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/debian.template" + ], + "timestamp": 1642972590534, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/debian.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT64", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT64", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template to install CloudWatchAgent on debian. It was validated on debian 8", + "Parameters": { + "SSMKey": { + "Description": "Name of parameter store which contains the json configuration of CWAgent.", + "Type": "String", + "Default": "AmazonCloudWatch-DefaultLinuxConfigCloudFormation" + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "m4.2xlarge", + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "InstanceAMI": { + "Description": "Managed AMI ID for EC2 Instance", + "Type": "String", + "Default": "ami-6e1a0117" + }, + "IAMRole": { + "Description": "EC2 attached IAM role", + "Type": "String", + "Default": "CloudWatchAgentAdminRole", + "ConstraintDescription": "must be an existing IAM role which will be attached to EC2 instance." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "default": [ + "01_setupCfnHup", + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ], + "UpdateEnvironment": [ + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ] + }, + "02_config-amazon-cloudwatch-agent": { + "files": { + "/opt/aws/amazon-cloudwatch-agent/etc/dummy.version": { + "content": { + "Fn::Sub": "\"You can change the VERSION below to to simulate the update of metadata\"\n\"VERSION=1.0\"\n" + } + } + } + }, + "03_restart_amazon-cloudwatch-agent": { + "commands": { + "01_stop_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop" + }, + "02_start_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-DefaultLinuxConfigCloudFormation -s\n" + } + } + }, + "01_setupCfnHup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Sub": "[main]\nstack=${AWS::StackId}\nregion=${AWS::Region}\ninterval=1\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/amazon-cloudwatch-agent-auto-reloader.conf": { + "content": { + "Fn::Sub": "[cfn-auto-reloader-hook]\ntriggers=post.update\npath=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init.02_config-amazon-cloudwatch-agent\naction=/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets UpdateEnvironment\nrunas=root\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/lib/systemd/system/cfn-hup.service": { + "content": { + "Fn::Sub": "[Unit]\nDescription=cfn-hup daemon\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n[Install]\nWantedBy=multi-user.target\n" + } + } + }, + "commands": { + "01enable_cfn_hup": { + "command": { + "Fn::Sub": "systemctl enable cfn-hup.service\n" + } + }, + "02start_cfn_hup": { + "command": { + "Fn::Sub": "systemctl start cfn-hup.service\n" + } + } + } + } + } + }, + "Properties": { + "InstanceType": "m4.2xlarge", + "IamInstanceProfile": "CloudWatchAgentAdminRole", + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "ami-6e1a0117", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Sub": [ + "#!/bin/bash\nwget https://s3.amazonaws.com/amazoncloudwatch-agent/debian/amd64/latest/amazon-cloudwatch-agent.deb -O /tmp/amazon-cloudwatch-agent.deb\ndpkg -i /tmp/amazon-cloudwatch-agent.deb\n/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:${ssmkey} -s\napt-get update -y\napt-get install -y python-pip\neasy_install --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets default\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region}\n", + { + "ssmkey": { + "Ref": "SSMKey" + } + } + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT65 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT65 new file mode 100644 index 0000000..c55b98d --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT65 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/redhat.template" + ], + "timestamp": 1642972590537, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/redhat.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT65", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT65", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template to install CloudWatchAgent on redhat. It was validated on redhat 7.5", + "Parameters": { + "SSMKey": { + "Description": "Name of parameter store which contains the json configuration of CWAgent.", + "Type": "String", + "Default": "AmazonCloudWatch-DefaultLinuxConfigCloudFormation" + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "m4.2xlarge", + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "InstanceAMI": { + "Description": "Managed AMI ID for EC2 Instance", + "Type": "String", + "Default": "ami-28e07e50" + }, + "IAMRole": { + "Description": "EC2 attached IAM role", + "Type": "String", + "Default": "CloudWatchAgentAdminRole", + "ConstraintDescription": "must be an existing IAM role which will be attached to EC2 instance." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "default": [ + "01_setupCfnHup", + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ], + "UpdateEnvironment": [ + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ] + }, + "02_config-amazon-cloudwatch-agent": { + "files": { + "/opt/aws/amazon-cloudwatch-agent/etc/dummy.version": { + "content": { + "Fn::Sub": "\"You can change the VERSION below to to simulate the update of metadata\"\n\"VERSION=1.0\"\n" + } + } + } + }, + "03_restart_amazon-cloudwatch-agent": { + "commands": { + "01_stop_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop" + }, + "02_start_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-DefaultLinuxConfigCloudFormation -s\n" + } + } + }, + "01_setupCfnHup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Sub": "[main]\nstack=${AWS::StackId}\nregion=${AWS::Region}\ninterval=1\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/amazon-cloudwatch-agent-auto-reloader.conf": { + "content": { + "Fn::Sub": "[cfn-auto-reloader-hook]\ntriggers=post.update\npath=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init.02_config-amazon-cloudwatch-agent\naction=/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets UpdateEnvironment\nrunas=root\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/lib/systemd/system/cfn-hup.service": { + "content": { + "Fn::Sub": "[Unit]\nDescription=cfn-hup daemon\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n[Install]\nWantedBy=multi-user.target\n" + } + } + }, + "commands": { + "01enable_cfn_hup": { + "command": { + "Fn::Sub": "systemctl enable cfn-hup.service\n" + } + }, + "02start_cfn_hup": { + "command": { + "Fn::Sub": "systemctl start cfn-hup.service\n" + } + } + } + } + } + }, + "Properties": { + "InstanceType": "m4.2xlarge", + "IamInstanceProfile": "CloudWatchAgentAdminRole", + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "ami-28e07e50", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Sub": [ + "#!/bin/bash\nrpm -Uvh https://s3.amazonaws.com/amazoncloudwatch-agent/redhat/amd64/latest/amazon-cloudwatch-agent.rpm\n/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:${ssmkey} -s\nyum update -y\neasy_install --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets default\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region}\n", + { + "ssmkey": { + "Ref": "SSMKey" + } + } + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT66 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT66 new file mode 100644 index 0000000..6c2a5ec --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT66 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/suse.template" + ], + "timestamp": 1642972590542, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/suse.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT66", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT66", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template to install CloudWatchAgent on suse. It was validated on suse 12", + "Parameters": { + "SSMKey": { + "Description": "Name of parameter store which contains the json configuration of CWAgent.", + "Type": "String", + "Default": "AmazonCloudWatch-DefaultLinuxConfigCloudFormation" + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "m4.2xlarge", + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "InstanceAMI": { + "Description": "Managed AMI ID for EC2 Instance", + "Type": "String", + "Default": "ami-28e07e50" + }, + "IAMRole": { + "Description": "EC2 attached IAM role", + "Type": "String", + "Default": "CloudWatchAgentAdminRole", + "ConstraintDescription": "must be an existing IAM role which will be attached to EC2 instance." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "default": [ + "01_setupCfnHup", + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ], + "UpdateEnvironment": [ + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ] + }, + "02_config-amazon-cloudwatch-agent": { + "files": { + "/opt/aws/amazon-cloudwatch-agent/etc/dummy.version": { + "content": { + "Fn::Sub": "\"You can change the VERSION below to to simulate the update of metadata\"\n\"VERSION=1.0\"\n" + } + } + } + }, + "03_restart_amazon-cloudwatch-agent": { + "commands": { + "01_stop_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop" + }, + "02_start_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-DefaultLinuxConfigCloudFormation -s\n" + } + } + }, + "01_setupCfnHup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Sub": "[main]\nstack=${AWS::StackId}\nregion=${AWS::Region}\ninterval=1\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/amazon-cloudwatch-agent-auto-reloader.conf": { + "content": { + "Fn::Sub": "[cfn-auto-reloader-hook]\ntriggers=post.update\npath=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init.02_config-amazon-cloudwatch-agent\naction=/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets UpdateEnvironment\nrunas=root\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/lib/systemd/system/cfn-hup.service": { + "content": { + "Fn::Sub": "[Unit]\nDescription=cfn-hup daemon\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n[Install]\nWantedBy=multi-user.target\n" + } + } + }, + "commands": { + "01enable_cfn_hup": { + "command": { + "Fn::Sub": "systemctl enable cfn-hup.service\n" + } + }, + "02start_cfn_hup": { + "command": { + "Fn::Sub": "systemctl start cfn-hup.service\n" + } + } + } + } + } + }, + "Properties": { + "InstanceType": "m4.2xlarge", + "IamInstanceProfile": "CloudWatchAgentAdminRole", + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "ami-28e07e50", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Sub": [ + "#!/bin/bash\nrpm -Uvh https://s3.amazonaws.com/amazoncloudwatch-agent/suse/amd64/latest/amazon-cloudwatch-agent.rpm\n/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:${ssmkey} -s\nyum update -y\neasy_install --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets default\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region}\n", + { + "ssmkey": { + "Ref": "SSMKey" + } + } + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT67 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT67 new file mode 100644 index 0000000..bdf7e6b --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT67 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/ubuntu.template" + ], + "timestamp": 1642972590548, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/ubuntu.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT67", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT67", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template to install CloudWatchAgent on ubuntu. It was validated on ubuntu 16", + "Parameters": { + "SSMKey": { + "Description": "Name of parameter store which contains the json configuration of CWAgent.", + "Type": "String", + "Default": "AmazonCloudWatch-DefaultLinuxConfigCloudFormation" + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "m4.2xlarge", + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "InstanceAMI": { + "Description": "Managed AMI ID for EC2 Instance", + "Type": "String", + "Default": "ami-6e1a0117" + }, + "IAMRole": { + "Description": "EC2 attached IAM role", + "Type": "String", + "Default": "CloudWatchAgentAdminRole", + "ConstraintDescription": "must be an existing IAM role which will be attached to EC2 instance." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "default": [ + "01_setupCfnHup", + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ], + "UpdateEnvironment": [ + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ] + }, + "02_config-amazon-cloudwatch-agent": { + "files": { + "/opt/aws/amazon-cloudwatch-agent/etc/dummy.version": { + "content": { + "Fn::Sub": "\"You can change the VERSION below to to simulate the update of metadata\"\n\"VERSION=1.0\"\n" + } + } + } + }, + "03_restart_amazon-cloudwatch-agent": { + "commands": { + "01_stop_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop" + }, + "02_start_service": { + "command": "/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-DefaultLinuxConfigCloudFormation -s\n" + } + } + }, + "01_setupCfnHup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Sub": "[main]\nstack=${AWS::StackId}\nregion=${AWS::Region}\ninterval=1\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/amazon-cloudwatch-agent-auto-reloader.conf": { + "content": { + "Fn::Sub": "[cfn-auto-reloader-hook]\ntriggers=post.update\npath=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init.02_config-amazon-cloudwatch-agent\naction=/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets UpdateEnvironment\nrunas=root\n" + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/lib/systemd/system/cfn-hup.service": { + "content": { + "Fn::Sub": "[Unit]\nDescription=cfn-hup daemon\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n[Install]\nWantedBy=multi-user.target\n" + } + } + }, + "commands": { + "01enable_cfn_hup": { + "command": { + "Fn::Sub": "systemctl enable cfn-hup.service\n" + } + }, + "02start_cfn_hup": { + "command": { + "Fn::Sub": "systemctl start cfn-hup.service\n" + } + } + } + } + } + }, + "Properties": { + "InstanceType": "m4.2xlarge", + "IamInstanceProfile": "CloudWatchAgentAdminRole", + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "ami-6e1a0117", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "UserData": { + "Fn::Base64": { + "Fn::Sub": [ + "#!/bin/bash\nwget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb -O /tmp/amazon-cloudwatch-agent.deb\ndpkg -i /tmp/amazon-cloudwatch-agent.deb\n/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:${ssmkey} -s\napt-get update -y\napt-get install -y python-pip\neasy_install --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets default\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region}\n", + { + "ssmkey": { + "Ref": "SSMKey" + } + } + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT68 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT68 new file mode 100644 index 0000000..0190cb0 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT68 @@ -0,0 +1,166 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/windows.template" + ], + "timestamp": 1642972590552, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AmazonCloudWatchAgent/ssm/windows.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT68", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT68", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template to install CloudWatchAgent on windows. It was validated on windows 2016", + "Parameters": { + "SSMKey": { + "Description": "Name of parameter store which contains the json configuration of CWAgent.", + "Type": "String", + "Default": "AmazonCloudWatch-DefaultLinuxConfigCloudFormation" + }, + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName", + "ConstraintDescription": "must be the name of an existing EC2 KeyPair." + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "m4.2xlarge", + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "InstanceAMI": { + "Description": "Managed AMI ID for EC2 Instance", + "Type": "String", + "Default": "ami-3703414f" + }, + "IAMRole": { + "Description": "EC2 attached IAM role", + "Type": "String", + "Default": "CloudWatchAgentAdminRole", + "ConstraintDescription": "must be an existing IAM role which will be attached to EC2 instance." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "default": [ + "00_setupCfnHup", + "01_CfnHup_service", + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ], + "UpdateEnvironment": [ + "02_config-amazon-cloudwatch-agent", + "03_restart_amazon-cloudwatch-agent" + ] + }, + "00_setupCfnHup": { + "files": { + "c:\\cfn\\cfn-hup.conf": { + "content": { + "Fn::Sub": "[main]\nstack=${AWS::StackId}\nregion=${AWS::Region}\ninterval=1\n" + } + }, + "c:\\cfn\\hooks.d\\amazon-cloudwatch-agent-auto-reloader.conf": { + "content": { + "Fn::Sub": "[cfn-auto-reloader-hook]\ntriggers=post.update\npath=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init.02_config-amazon-cloudwatch-agent\naction=cfn-init.exe -v --stack ${AWS::StackId} --resource EC2Instance --region ${AWS::Region} --configsets UpdateEnvironment\n" + } + } + } + }, + "01_CfnHup_service": { + "services": { + "windows": { + "cfn-hup": { + "enabled": "true", + "ensureRunning": "true", + "files": [ + "c:\\cfn\\cfn-hup.conf", + "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf" + ] + } + } + } + }, + "02_config-amazon-cloudwatch-agent": { + "files": { + "C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\dummy.version": { + "content": { + "Fn::Sub": "\"You can change the VERSION below to to simulate the update of metadata\"\n\"VERSION=1.0\"\n" + } + } + } + }, + "03_restart_amazon-cloudwatch-agent": { + "commands": { + "01_stop_service": { + "command": "powershell -Command \"C:\\\\'Program Files'\\\\Amazon\\\\AmazonCloudWatchAgent\\\\amazon-cloudwatch-agent-ctl.ps1 -a stop\"" + }, + "02_start_service": { + "command": "powershell -Command \"C:\\\\'Program Files'\\\\Amazon\\\\AmazonCloudWatchAgent\\\\amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-DefaultLinuxConfigCloudFormation -s\"\n" + } + } + } + } + }, + "Properties": { + "InstanceType": "m4.2xlarge", + "IamInstanceProfile": "CloudWatchAgentAdminRole", + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": "ami-3703414f", + "UserData": { + "Fn::Base64": { + "Fn::Sub": [ + "\n", + { + "ssmkey": { + "Ref": "SSMKey" + } + } + ] + } + } + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "EC2Instance" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT69 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT69 new file mode 100644 index 0000000..458a21b --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT69 @@ -0,0 +1,864 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/AutomateCreatingHanaBackupBucket/CFT/CreateHanaBackupSecureBackut.yaml" + ], + "timestamp": 1642972590557, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/AutomateCreatingHanaBackupBucket/CFT/CreateHanaBackupSecureBackut.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT69", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::iam::managedpolicy", + "aws::iam::role", + "aws::kms::alias", + "aws::s3::bucketpolicy", + "aws::kms::key", + "custom::lambdatrig", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT69", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Create Hana Backup S3 buckets with replication to other regoin and lifecycle policy", + "Parameters": { + "RepRegion": { + "Type": "String", + "Description": "Enter Region for offsite backup (Replication to other Regoin)", + "AllowedValues": [ + "us-east-1", + "us-east-2", + "us-west-1", + "us-west-2", + "ca-central-1", + "ap-south-1", + "ap-northeast-2", + "ap-southeast-1", + "ap-southeast-2", + "ap-northeast-1", + "eu-central-1", + "eu-west-1", + "eu-west-2", + "sa-east-1" + ] + }, + "ReplicationBucketName": { + "Type": "String", + "Description": "Enter Replication bucket name in selected region" + }, + "OriginalBucketName": { + "Type": "String", + "Description": "Enter Source bucket name for backup in current Regoin" + }, + "ReplicationCMKId": { + "Type": "String", + "Description": "Enter Aliases for custom KMS to encrypt Replication bucket" + }, + "OriginalCMKId": { + "Type": "String", + "Description": "Enter Aliases for custom KMS to encrypt Source bucket" + }, + "EC2RoleToRunBackup": { + "Type": "String", + "Description": "Enter EC2 Role Arn need to copy the Backup to s3" + }, + "KMSAdminRole": { + "Type": "String", + "Description": "Enter Role ARN for KMS Admin" + }, + "BucketNameForLambdaCode": { + "Type": "String", + "Description": "Enter The bucket name where source code of Lambda to be loaded" + } + }, + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "Source Bucket" + }, + "Parameters": [ + "OriginalBucketName", + "OriginalCMKId" + ] + }, + { + "Label": { + "default": "Replication Bucket" + }, + "Parameters": [ + "RepRegion", + "ReplicationBucketName", + "ReplicationCMKId", + "EC2RoleToRunBackup", + "KMSAdminRole" + ] + }, + { + "Label": { + "default": "Lamdba Bucket" + }, + "Parameters": [ + "BucketNameForLambdaCode" + ] + } + ] + } + }, + "Resources": [ + { + "Type": "AWS::KMS::Key", + "Description": "Enter Role ARN for EC2 Role to Encrypt backup on S3", + "Properties": { + "Description": "To Encrypt S3 backup bucket", + "EnableKeyRotation": true, + "Tags": [ + { + "Key": "Name", + "Value": "KMS Key For Source S3 Backup" + } + ], + "KeyPolicy": { + "Version": "2012-10-17", + "Id": "kms-key-policy", + "Statement": [ + { + "Sid": "Enable IAM User Permissions", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:aws:iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Action": "kms:*", + "Resource": "*" + }, + { + "Sid": "Allow administration of the key", + "Effect": "Allow", + "Principal": { + "AWS": { + "Ref": "KMSAdminRole" + } + }, + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion" + ], + "Resource": "*" + }, + { + "Sid": "Allow use of the key", + "Effect": "Allow", + "Principal": { + "AWS": { + "Ref": "EC2RoleToRunBackup" + } + }, + "Action": [ + "kms:DescribeKey", + "kms:Encrypt", + "kms:Decrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey", + "kms:GenerateDataKeyWithoutPlaintext" + ], + "Resource": "*" + } + ] + } + }, + "Name": "S3KmsSourceBucket" + }, + { + "DependsOn": "S3KmsSourceBucket", + "Type": "AWS::KMS::Alias", + "Properties": { + "AliasName": { + "Fn::Sub": "alias/${OriginalCMKId}" + }, + "TargetKeyId": { + "Fn::GetAtt": [ + "S3KmsSourceBucket", + "Arn" + ] + } + }, + "Name": "CreateAliasKMSkey" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": [ + "sts:AssumeRole" + ], + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + } + } + ], + "Version": "2012-10-17" + }, + "Path": "/", + "Policies": [ + { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Effect": "Allow", + "Resource": "arn:aws:logs:*:*:*" + }, + { + "Action": [ + "s3:*" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "kms:*" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "root" + } + ] + }, + "Name": "LambdaExecutionRole" + }, + { + "Type": "AWS::S3::Bucket", + "DependsOn": [ + "TriggerLambdaBucketLiveCycle", + "S3KmsSourceBucket", + "CreateAliasKMSkey" + ], + "Properties": { + "BucketName": { + "Ref": "OriginalBucketName" + }, + "ReplicationConfiguration": { + "Role": { + "Fn::GetAtt": [ + "S3ReplRole", + "Arn" + ] + }, + "Rules": [ + { + "Destination": { + "Bucket": { + "Fn::Join": [ + "", + [ + "arn:aws:s3:::", + { + "Ref": "ReplicationBucketName" + } + ] + ] + }, + "EncryptionConfiguration": { + "ReplicaKmsKeyID": { + "Fn::GetAtt": [ + "TriggerLambdaKmsKey", + "Message" + ] + } + }, + "StorageClass": "STANDARD" + }, + "Id": "BackupReplication", + "Prefix": "", + "Status": "Enabled", + "SourceSelectionCriteria": { + "SseKmsEncryptedObjects": { + "Status": "Enabled" + } + } + } + ] + }, + "VersioningConfiguration": { + "Status": "Enabled" + }, + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "KMSMasterKeyID": { + "Ref": "S3KmsSourceBucket" + }, + "SSEAlgorithm": "aws:kms" + } + } + ] + }, + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "IgnorePublicAcls": true, + "BlockPublicPolicy": true, + "RestrictPublicBuckets": true + }, + "LifecycleConfiguration": { + "Rules": [ + { + "Id": "DAILY", + "Prefix": "DAILY/", + "Status": "Enabled", + "ExpirationInDays": "365", + "Transitions": [ + { + "TransitionInDays": "10", + "StorageClass": "Glacier" + } + ] + } + ] + } + }, + "Name": "OriginalBucket" + }, + { + "Type": "AWS::Lambda::Function", + "DependsOn": "TriggerLambdaKmsKey", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "BucketNameForLambdaCode" + }, + "S3Key": "createDesbucket.zip" + }, + "Handler": "bucketrepl.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaExecutionRole", + "Arn" + ] + }, + "Runtime": "nodejs8.10", + "Timeout": 60 + }, + "Name": "ReplicationBucket" + }, + { + "Type": "Custom::LambdaTrig", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "ReplicationBucket", + "Arn" + ] + }, + "DestBucketName": { + "Ref": "ReplicationBucketName" + }, + "DestBucketRegion": { + "Ref": "RepRegion" + }, + "DestKmsId": { + "Ref": "ReplicationCMKId" + }, + "AccountId": { + "Ref": "AWS::AccountId" + }, + "KmsAdminRole": { + "Ref": "KMSAdminRole" + }, + "KMSEC2Role": { + "Ref": "EC2RoleToRunBackup" + } + }, + "Name": "TriggerLambdaRepS3" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": "hanalamdbanodejs", + "S3Key": "createbucket.zip" + }, + "Handler": "create_kms.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaExecutionRole", + "Arn" + ] + }, + "Runtime": "nodejs8.10", + "Timeout": 60 + }, + "Name": "ReplicationKmsKey" + }, + { + "Type": "Custom::LambdaTrig", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "ReplicationKmsKey", + "Arn" + ] + }, + "DestBucketName": { + "Ref": "ReplicationBucketName" + }, + "DestBucketRegion": { + "Ref": "RepRegion" + }, + "DestKmsId": { + "Ref": "ReplicationCMKId" + }, + "AccountId": { + "Ref": "AWS::AccountId" + }, + "KmsAdminRole": { + "Ref": "KMSAdminRole" + }, + "KMSEC2Role": { + "Ref": "EC2RoleToRunBackup" + } + }, + "Name": "TriggerLambdaKmsKey" + }, + { + "Type": "AWS::Lambda::Function", + "DependsOn": "TriggerLambdaRepS3", + "Properties": { + "Code": { + "S3Bucket": "hanalamdbanodejs", + "S3Key": "createbucket.zip" + }, + "Handler": "bucketversion.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaExecutionRole", + "Arn" + ] + }, + "Runtime": "nodejs8.10", + "Timeout": 60 + }, + "Name": "ReplicationBucketVersion" + }, + { + "Type": "Custom::LambdaTrig", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "ReplicationBucketVersion", + "Arn" + ] + }, + "DestBucketName": { + "Ref": "ReplicationBucketName" + }, + "DestBucketRegion": { + "Ref": "RepRegion" + }, + "DestKmsId": { + "Ref": "ReplicationCMKId" + }, + "AccountId": { + "Ref": "AWS::AccountId" + }, + "KmsAdminRole": { + "Ref": "KMSAdminRole" + }, + "KMSEC2Role": { + "Ref": "EC2RoleToRunBackup" + } + }, + "Name": "TriggerLambdaBucketVersion" + }, + { + "Type": "AWS::Lambda::Function", + "DependsOn": "TriggerLambdaBucketVersion", + "Properties": { + "Code": { + "S3Bucket": "hanalamdbanodejs", + "S3Key": "createbucket.zip" + }, + "Handler": "denaynonencrypt.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaExecutionRole", + "Arn" + ] + }, + "Runtime": "nodejs8.10", + "Timeout": 60 + }, + "Name": "ReplicationBucketDenyNonEcrypt" + }, + { + "Type": "Custom::LambdaTrig", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "ReplicationBucketDenyNonEcrypt", + "Arn" + ] + }, + "DestBucketName": { + "Ref": "ReplicationBucketName" + }, + "DestBucketRegion": { + "Ref": "RepRegion" + }, + "DestKmsId": { + "Ref": "ReplicationCMKId" + }, + "AccountId": { + "Ref": "AWS::AccountId" + }, + "KmsAdminRole": { + "Ref": "KMSAdminRole" + }, + "KMSEC2Role": { + "Ref": "EC2RoleToRunBackup" + } + }, + "Name": "TriggerLambdaBucketDenyNonEcrypt" + }, + { + "Type": "AWS::Lambda::Function", + "DependsOn": "TriggerLambdaBucketDenyNonEcrypt", + "Properties": { + "Code": { + "S3Bucket": "hanalamdbanodejs", + "S3Key": "createbucket.zip" + }, + "Handler": "defaulrencrypt.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaExecutionRole", + "Arn" + ] + }, + "Runtime": "nodejs8.10", + "Timeout": 60 + }, + "Name": "ReplicationBucketDefaultEncrypt" + }, + { + "Type": "Custom::LambdaTrig", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "ReplicationBucketDefaultEncrypt", + "Arn" + ] + }, + "DestBucketName": { + "Ref": "ReplicationBucketName" + }, + "DestBucketRegion": { + "Ref": "RepRegion" + }, + "DestKmsId": { + "Ref": "ReplicationCMKId" + }, + "AccountId": { + "Ref": "AWS::AccountId" + }, + "KmsAdminRole": { + "Ref": "KMSAdminRole" + }, + "KMSEC2Role": { + "Ref": "EC2RoleToRunBackup" + } + }, + "Name": "TriggerLambdaBucketDefaultEncrypt" + }, + { + "Type": "AWS::Lambda::Function", + "DependsOn": "TriggerLambdaBucketDefaultEncrypt", + "Properties": { + "Code": { + "S3Bucket": "hanalamdbanodejs", + "S3Key": "createbucket.zip" + }, + "Handler": "lifecycle.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaExecutionRole", + "Arn" + ] + }, + "Runtime": "nodejs8.10", + "Timeout": 60 + }, + "Name": "ReplicationBucketLiveCycle" + }, + { + "Type": "Custom::LambdaTrig", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "ReplicationBucketLiveCycle", + "Arn" + ] + }, + "DestBucketName": { + "Ref": "ReplicationBucketName" + }, + "DestBucketRegion": { + "Ref": "RepRegion" + }, + "DestKmsId": { + "Ref": "ReplicationCMKId" + }, + "AccountId": { + "Ref": "AWS::AccountId" + }, + "KmsAdminRole": { + "Ref": "KMSAdminRole" + }, + "KMSEC2Role": { + "Ref": "EC2RoleToRunBackup" + } + }, + "Name": "TriggerLambdaBucketLiveCycle" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": [ + "s3.amazonaws.com" + ] + } + } + ], + "Version": "2012-10-17" + }, + "Path": "/service-role/" + }, + "Name": "S3ReplRole" + }, + { + "Type": "AWS::IAM::ManagedPolicy", + "Properties": { + "ManagedPolicyName": "S3crrKmsForBucketPolicy1", + "Roles": [ + { + "Ref": "S3ReplRole" + } + ], + "Path": "/service-role/", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "s3:ListBucket", + "s3:GetReplicationConfiguration", + "s3:GetObjectVersionForReplication", + "s3:GetObjectVersionAcl", + "s3:GetObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Sub": "arn:aws:s3:::${OriginalBucketName}" + }, + { + "Fn::Sub": "arn:aws:s3:::${OriginalBucketName}/*" + } + ] + }, + { + "Action": [ + "s3:ReplicateObject", + "s3:ReplicateDelete", + "s3:ReplicateTags", + "s3:GetObjectVersionTagging" + ], + "Effect": "Allow", + "Condition": { + "StringLikeIfExists": { + "s3:x-amz-server-side-encryption": [ + "aws:kms", + "AES256" + ], + "s3:x-amz-server-side-encryption-aws-kms-key-id": [ + { + "Fn::GetAtt": [ + "TriggerLambdaKmsKey", + "Message" + ] + } + ] + } + }, + "Resource": { + "Fn::Sub": "arn:aws:s3:::${ReplicationBucketName}/*" + } + }, + { + "Action": [ + "kms:Decrypt" + ], + "Effect": "Allow", + "Condition": { + "StringLike": { + "kms:ViaService": { + "Fn::Sub": "s3.${AWS::Region}.amazonaws.com" + }, + "kms:EncryptionContext:aws:s3:arn": [ + { + "Fn::Sub": "arn:aws:s3:::${OriginalBucketName}/*" + } + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "S3KmsSourceBucket", + "Arn" + ] + } + ] + }, + { + "Action": [ + "kms:Encrypt" + ], + "Effect": "Allow", + "Condition": { + "StringLike": { + "kms:ViaService": { + "Fn::Sub": "s3.${RepRegion}.amazonaws.com" + }, + "kms:EncryptionContext:aws:s3:arn": [ + { + "Fn::Sub": "arn:aws:s3:::${ReplicationBucketName}/*" + } + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "TriggerLambdaKmsKey", + "Message" + ] + } + ] + } + ] + } + }, + "Name": "S3crrKmsForBucketPolicy" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "OriginalBucketName" + }, + "PolicyDocument": { + "Statement": [ + { + "Sid": "DenyIncorrectEncryptionHeader", + "Effect": "Deny", + "Principal": "*", + "Action": "s3:PutObject", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${OriginalBucketName}/*" + }, + "Condition": { + "StringNotEquals": { + "s3:x-amz-server-side-encryption": "aws:kms" + } + } + }, + { + "Sid": "DenyUnEncryptedObjectUploads", + "Effect": "Deny", + "Principal": "*", + "Action": "s3:PutObject", + "Resource": { + "Fn::Sub": "arn:aws:s3:::${OriginalBucketName}/*" + }, + "Condition": { + "Null": { + "s3:x-amz-server-side-encryption": true + } + } + } + ] + } + }, + "Name": "DenyPutNonEncrypt" + } + ], + "Outputs": { + "CustomResourceAttribute1": { + "Value": { + "Fn::GetAtt": [ + "TriggerLambdaKmsKey", + "Message" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT7 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT7 new file mode 100644 index 0000000..fa2273c --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT7 @@ -0,0 +1,67 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/ExecutionRoleBuilder/example.template" + ], + "timestamp": 1642972590297, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/ExecutionRoleBuilder/example.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT7", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT7", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Transform": "ExecutionRoleBuilder", + "Parameters": { + "PermissionBoundaryArn": { + "Type": "String", + "Description": "ARN for the Permission Boundary Policy" + } + }, + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Properties": { + "Type": "Lambda", + "Name": "ExecutionRoleForAppA", + "Path": "/boundedexecroles/", + "PermissionsBoundary": { + "Ref": "PermissionBoundaryArn" + }, + "Permissions": [ + { + "ReadOnly": "arn:aws:s3:::mygreatbucket1" + }, + { + "ReadWrite": "arn:aws:dynamodb:us-west-2:123456789012:table/table1" + }, + { + "ReadOnly": "arn:aws:ssm:us-west-2:123456789012:parameter/dev/myapp1/*" + }, + { + "ReadOnly": "arn:aws:kms:us-west-2:123456789012:key/a8f4be2b-5fcd-zzzz-yyyy-xxxxxxxxxxxx" + } + ] + }, + "Name": "ExecutionRoleBuilderMacroTestRole" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT70 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT70 new file mode 100644 index 0000000..b46af68 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT70 @@ -0,0 +1,338 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-creationpolicy-no-igw.yaml" + ], + "timestamp": 1642972590565, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-creationpolicy-no-igw.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT70", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::ec2::subnetroutetableassociation" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT70", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template deploys a VPC with a pair of private subnets spread across two Availabilty Zones. It deploys a VPC Endpoint for CloudFormation so an instance in the private subnet can use cfn-signal for its CreationPolicy. **WARNING** You will be billed for the AWS resources used if you create a stack from this template.\n", + "Parameters": { + "EnvironmentName": { + "Description": "An environment name that will be prefixed to resource names", + "Type": "String" + }, + "VpcCIDR": { + "Description": "Please enter the IP range (CIDR notation) for this VPC", + "Type": "String", + "Default": "10.192.0.0/16", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet1CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone", + "Type": "String", + "Default": "10.192.20.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet2CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone", + "Type": "String", + "Default": "10.192.21.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "LinuxAMI": { + "Description": "Managed AMI ID for Amazon Linux", + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "EnableDnsSupport": true, + "EnableDnsHostnames": true, + "CidrBlock": "10.192.0.0/16", + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::VPCEndpoint", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "ServiceName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.cloudformation" + }, + "VpcEndpointType": "Interface", + "PrivateDnsEnabled": true, + "SubnetIds": [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ], + "SecurityGroupIds": [ + { + "Ref": "EndpointSG" + } + ] + }, + "Name": "CfnEndpoint" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.20.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ1)" + } + } + ] + }, + "Name": "PrivateSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.21.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ2)" + } + } + ] + }, + "Name": "PrivateSubnet2" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ1)" + } + } + ] + }, + "Name": "PrivateRouteTable1" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable1" + }, + "SubnetId": { + "Ref": "PrivateSubnet1" + } + }, + "Name": "PrivateSubnet1RouteTableAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ2)" + } + } + ] + }, + "Name": "PrivateRouteTable2" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable2" + }, + "SubnetId": { + "Ref": "PrivateSubnet2" + } + }, + "Name": "PrivateSubnet2RouteTableAssociation" + }, + { + "DependsOn": "CfnEndpoint", + "Type": "AWS::EC2::Instance", + "Properties": { + "InstanceType": "t3.micro", + "SecurityGroupIds": [ + { + "Ref": "PrivateSG" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet1" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2", + "UserData": { + "Fn::Base64": { + "Fn::Sub": "#!/bin/bash -x\ndate > /tmp/datefile\ncat /tmp/datefile\n# Signal the status from instance\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource PrivateInstance --region ${AWS::Region}\n" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": "Private" + } + ] + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "PrivateInstance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic from Bastion", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "CidrIp": "10.192.0.0/16" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "PrivateSG" + } + ] + }, + "Name": "PrivateSG" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic into CloudFormation Endpoint", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 443, + "ToPort": 443, + "CidrIp": "0.0.0.0/0" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "EndpointSG" + } + ] + }, + "Name": "EndpointSG" + } + ], + "Outputs": { + "VPC": { + "Description": "A reference to the created VPC", + "Value": { + "Ref": "VPC" + } + }, + "PrivateSubnets": { + "Description": "A list of the private subnets", + "Value": { + "Fn::Join": [ + ",", + [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ] + ] + } + }, + "CfnEndpoint": { + "Description": "A reference to the CloudFormation Endpoint used for signaling from the private instance", + "Value": { + "Ref": "CfnEndpoint" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT71 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT71 new file mode 100644 index 0000000..a2199b1 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT71 @@ -0,0 +1,632 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-creationpolicy.yaml" + ], + "timestamp": 1642972590570, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-creationpolicy.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT71", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::iam::instanceprofile", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT71", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template deploys a VPC with a pair of public and private subnets spread across two Availabilty Zones. It deploys an Internet Gateway, with a default route on the public subnets and a bastion server. It deploys a VPC Endpoint for CloudFormation so an instance in the private subnet can use cfn-signal for its CreationPolicy. **WARNING** You will be billed for the AWS resources used if you create a stack from this template.\n", + "Parameters": { + "EnvironmentName": { + "Description": "An environment name that will be prefixed to resource names", + "Type": "String" + }, + "VpcCIDR": { + "Description": "Please enter the IP range (CIDR notation) for this VPC", + "Type": "String", + "Default": "10.192.0.0/16", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PublicSubnet1CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the public subnet in the first Availability Zone", + "Type": "String", + "Default": "10.192.10.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PublicSubnet2CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the public subnet in the second Availability Zone", + "Type": "String", + "Default": "10.192.11.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet1CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone", + "Type": "String", + "Default": "10.192.20.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet2CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone", + "Type": "String", + "Default": "10.192.21.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "KeyName": { + "Description": "Key pair for EC2 access", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "LinuxAMI": { + "Description": "Managed AMI ID for Amazon Linux", + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "EnableDnsSupport": true, + "EnableDnsHostnames": true, + "CidrBlock": "10.192.0.0/16", + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + }, + "Name": "InternetGateway" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "InternetGatewayId": { + "Ref": "InternetGateway" + }, + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "InternetGatewayAttachment" + }, + { + "Type": "AWS::EC2::VPCEndpoint", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "ServiceName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.cloudformation" + }, + "VpcEndpointType": "Interface", + "PrivateDnsEnabled": true, + "SubnetIds": [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ], + "SecurityGroupIds": [ + { + "Ref": "EndpointSG" + } + ] + }, + "Name": "CfnEndpoint" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.10.0/24", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Subnet (AZ1)" + } + } + ] + }, + "Name": "PublicSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.11.0/24", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Subnet (AZ2)" + } + } + ] + }, + "Name": "PublicSubnet2" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.20.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ1)" + } + } + ] + }, + "Name": "PrivateSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.21.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ2)" + } + } + ] + }, + "Name": "PrivateSubnet2" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Routes" + } + } + ] + }, + "Name": "PublicRouteTable" + }, + { + "Type": "AWS::EC2::Route", + "DependsOn": "InternetGatewayAttachment", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + } + }, + "Name": "DefaultPublicRoute" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnet1" + } + }, + "Name": "PublicSubnet1RouteTableAssociation" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnet2" + } + }, + "Name": "PublicSubnet2RouteTableAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ1)" + } + } + ] + }, + "Name": "PrivateRouteTable1" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable1" + }, + "SubnetId": { + "Ref": "PrivateSubnet1" + } + }, + "Name": "PrivateSubnet1RouteTableAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ2)" + } + } + ] + }, + "Name": "PrivateRouteTable2" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable2" + }, + "SubnetId": { + "Ref": "PrivateSubnet2" + } + }, + "Name": "PrivateSubnet2RouteTableAssociation" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "cloudformation:*", + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "RootRole" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "InstanceType": "t2.micro", + "SecurityGroupIds": [ + { + "Ref": "BastionSG" + } + ], + "SubnetId": { + "Ref": "PublicSubnet1" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2", + "IamInstanceProfile": { + "Ref": "BastionProfile" + }, + "Tags": [ + { + "Key": "Name", + "Value": "Bastion" + } + ] + }, + "Name": "BastionInstance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Inbound Bastion Traffic", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "CidrIp": "0.0.0.0/0" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "BastionSG" + } + ] + }, + "Name": "BastionSG" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "RootRole" + } + ] + }, + "Name": "BastionProfile" + }, + { + "DependsOn": "CfnEndpoint", + "Type": "AWS::EC2::Instance", + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "InstanceType": "t2.micro", + "SecurityGroupIds": [ + { + "Ref": "PrivateSG" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet1" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2", + "IamInstanceProfile": { + "Ref": "PrivateProfile" + }, + "UserData": { + "Fn::Base64": { + "Fn::Sub": "#!/bin/bash -x\ndate > /tmp/datefile\ncat /tmp/datefile\n# Signal the status from instance\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource PrivateInstance --region ${AWS::Region}\n" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": "Private" + } + ] + }, + "CreationPolicy": { + "ResourceSignal": { + "Count": 1, + "Timeout": "PT15M" + } + }, + "Name": "PrivateInstance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic from Bastion", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "SourceSecurityGroupId": { + "Ref": "BastionSG" + } + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "PrivateSG" + } + ] + }, + "Name": "PrivateSG" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "RootRole" + } + ] + }, + "Name": "PrivateProfile" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic into CloudFormation Endpoint", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 443, + "ToPort": 443, + "CidrIp": "0.0.0.0/0" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "EndpointSG" + } + ] + }, + "Name": "EndpointSG" + } + ], + "Outputs": { + "VPC": { + "Description": "A reference to the created VPC", + "Value": { + "Ref": "VPC" + } + }, + "PublicSubnets": { + "Description": "A list of the public subnets", + "Value": { + "Fn::Join": [ + ",", + [ + { + "Ref": "PublicSubnet1" + }, + { + "Ref": "PublicSubnet2" + } + ] + ] + } + }, + "PrivateSubnets": { + "Description": "A list of the private subnets", + "Value": { + "Fn::Join": [ + ",", + [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ] + ] + } + }, + "CfnEndpoint": { + "Description": "A reference to the CloudFormation Endpoint used for signaling from the private instance", + "Value": { + "Ref": "CfnEndpoint" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT72 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT72 new file mode 100644 index 0000000..b44b725 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT72 @@ -0,0 +1,394 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-waitcondition-no-igw.yaml" + ], + "timestamp": 1642972590577, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-waitcondition-no-igw.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT72", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::cloudformation::waitcondition", + "aws::ec2::subnetroutetableassociation", + "aws::cloudformation::waitconditionhandle" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT72", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template deploys a VPC with a pair of private subnets spread across two Availabilty Zones. It deploys VPC Endpoints for CloudFormation and S3 so an instance in the private subnet can use cfn-signal for a WaitCondition. **WARNING** You will be billed for the AWS resources used if you create a stack from this template.\n", + "Parameters": { + "EnvironmentName": { + "Description": "An environment name that will be prefixed to resource names", + "Type": "String" + }, + "VpcCIDR": { + "Description": "Please enter the IP range (CIDR notation) for this VPC", + "Type": "String", + "Default": "10.192.0.0/16", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet1CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone", + "Type": "String", + "Default": "10.192.20.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet2CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone", + "Type": "String", + "Default": "10.192.21.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "LinuxAMI": { + "Description": "Managed AMI ID for Amazon Linux", + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "EnableDnsSupport": true, + "EnableDnsHostnames": true, + "CidrBlock": "10.192.0.0/16", + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::VPCEndpoint", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "ServiceName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.cloudformation" + }, + "VpcEndpointType": "Interface", + "PrivateDnsEnabled": true, + "SubnetIds": [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ], + "SecurityGroupIds": [ + { + "Ref": "EndpointSG" + } + ] + }, + "Name": "CfnEndpoint" + }, + { + "Type": "AWS::EC2::VPCEndpoint", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "ServiceName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.s3" + }, + "VpcEndpointType": "Gateway", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": "*", + "Action": [ + "s3:PutObject" + ], + "Resource": [ + { + "Fn::Sub": "arn:${AWS::Partition}:s3:::cloudformation-waitcondition-${AWS::Region}/*" + } + ] + } + ] + }, + "RouteTableIds": [ + { + "Ref": "PrivateRouteTable1" + }, + { + "Ref": "PrivateRouteTable2" + } + ] + }, + "Name": "S3Endpoint" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.20.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ1)" + } + } + ] + }, + "Name": "PrivateSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.21.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ2)" + } + } + ] + }, + "Name": "PrivateSubnet2" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ1)" + } + } + ] + }, + "Name": "PrivateRouteTable1" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable1" + }, + "SubnetId": { + "Ref": "PrivateSubnet1" + } + }, + "Name": "PrivateSubnet1RouteTableAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ2)" + } + } + ] + }, + "Name": "PrivateRouteTable2" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable2" + }, + "SubnetId": { + "Ref": "PrivateSubnet2" + } + }, + "Name": "PrivateSubnet2RouteTableAssociation" + }, + { + "DependsOn": "CfnEndpoint", + "Type": "AWS::EC2::Instance", + "Properties": { + "InstanceType": "t3.micro", + "SecurityGroupIds": [ + { + "Ref": "PrivateSG" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet1" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2", + "UserData": { + "Fn::Base64": { + "Fn::Sub": "#!/bin/bash -x\ndate > /tmp/datefile\ncat /tmp/datefile\n# Signal the status from instance\n/opt/aws/bin/cfn-signal -e $? -d \"This was all private.\" -r \"Build Process Complete\" '${PrivateWaitHandle}'\n" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": "Private" + } + ] + }, + "Name": "PrivateInstance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic from Bastion", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "CidrIp": "10.192.0.0/16" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "PrivateSG" + } + ] + }, + "Name": "PrivateSG" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic into CloudFormation Endpoint", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 443, + "ToPort": 443, + "CidrIp": "0.0.0.0/0" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "EndpointSG" + } + ] + }, + "Name": "EndpointSG" + }, + { + "Type": "AWS::CloudFormation::WaitConditionHandle", + "Name": "PrivateWaitHandle" + }, + { + "DependsOn": "PrivateInstance", + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Handle": { + "Ref": "PrivateWaitHandle" + }, + "Timeout": "3600", + "Count": 1 + }, + "Name": "PrivateWaitCondition" + } + ], + "Outputs": { + "VPC": { + "Description": "A reference to the created VPC", + "Value": { + "Ref": "VPC" + } + }, + "PrivateSubnets": { + "Description": "A list of the private subnets", + "Value": { + "Fn::Join": [ + ",", + [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ] + ] + } + }, + "CfnEndpoint": { + "Description": "A reference to the CloudFormation Endpoint used for signaling from the private instance", + "Value": { + "Ref": "CfnEndpoint" + } + }, + "S3Endpoint": { + "Description": "A reference to the S3 Endpoint used for signaling from the private instance", + "Value": { + "Ref": "S3Endpoint" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT73 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT73 new file mode 100644 index 0000000..3379124 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT73 @@ -0,0 +1,688 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-waitcondition.yaml" + ], + "timestamp": 1642972590582, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFormationEndpointSignals/cfn-endpoint-waitcondition.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT73", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::iam::instanceprofile", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::cloudformation::waitcondition", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "aws::cloudformation::waitconditionhandle" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT73", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template deploys a VPC with a pair of public and private subnets spread across two Availabilty Zones. It deploys an Internet Gateway, with a default route on the public subnets and a bastion server. It deploys VPC Endpoints for CloudFormation and S3 so an instance in the private subnet can use cfn-signal for a WaitCondition. **WARNING** You will be billed for the AWS resources used if you create a stack from this template.\n", + "Parameters": { + "EnvironmentName": { + "Description": "An environment name that will be prefixed to resource names", + "Type": "String" + }, + "VpcCIDR": { + "Description": "Please enter the IP range (CIDR notation) for this VPC", + "Type": "String", + "Default": "10.192.0.0/16", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PublicSubnet1CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the public subnet in the first Availability Zone", + "Type": "String", + "Default": "10.192.10.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PublicSubnet2CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the public subnet in the second Availability Zone", + "Type": "String", + "Default": "10.192.11.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet1CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone", + "Type": "String", + "Default": "10.192.20.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet2CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone", + "Type": "String", + "Default": "10.192.21.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "KeyName": { + "Description": "Key pair for EC2 access", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "LinuxAMI": { + "Description": "Managed AMI ID for Amazon Linux", + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "EnableDnsSupport": true, + "EnableDnsHostnames": true, + "CidrBlock": "10.192.0.0/16", + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + }, + "Name": "InternetGateway" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "InternetGatewayId": { + "Ref": "InternetGateway" + }, + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "InternetGatewayAttachment" + }, + { + "Type": "AWS::EC2::VPCEndpoint", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "ServiceName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.cloudformation" + }, + "VpcEndpointType": "Interface", + "PrivateDnsEnabled": true, + "SubnetIds": [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ], + "SecurityGroupIds": [ + { + "Ref": "EndpointSG" + } + ] + }, + "Name": "CfnEndpoint" + }, + { + "Type": "AWS::EC2::VPCEndpoint", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "ServiceName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.s3" + }, + "VpcEndpointType": "Gateway", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": "*", + "Action": [ + "s3:PutObject" + ], + "Resource": [ + { + "Fn::Sub": "arn:${AWS::Partition}:s3:::cloudformation-waitcondition-${AWS::Region}/*" + } + ] + } + ] + }, + "RouteTableIds": [ + { + "Ref": "PrivateRouteTable1" + }, + { + "Ref": "PrivateRouteTable2" + } + ] + }, + "Name": "S3Endpoint" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.10.0/24", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Subnet (AZ1)" + } + } + ] + }, + "Name": "PublicSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.11.0/24", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Subnet (AZ2)" + } + } + ] + }, + "Name": "PublicSubnet2" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.20.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ1)" + } + } + ] + }, + "Name": "PrivateSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.21.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ2)" + } + } + ] + }, + "Name": "PrivateSubnet2" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Routes" + } + } + ] + }, + "Name": "PublicRouteTable" + }, + { + "Type": "AWS::EC2::Route", + "DependsOn": "InternetGatewayAttachment", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + } + }, + "Name": "DefaultPublicRoute" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnet1" + } + }, + "Name": "PublicSubnet1RouteTableAssociation" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnet2" + } + }, + "Name": "PublicSubnet2RouteTableAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ1)" + } + } + ] + }, + "Name": "PrivateRouteTable1" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable1" + }, + "SubnetId": { + "Ref": "PrivateSubnet1" + } + }, + "Name": "PrivateSubnet1RouteTableAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ2)" + } + } + ] + }, + "Name": "PrivateRouteTable2" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable2" + }, + "SubnetId": { + "Ref": "PrivateSubnet2" + } + }, + "Name": "PrivateSubnet2RouteTableAssociation" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "cloudformation:*", + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "RootRole" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "InstanceType": "t2.micro", + "SecurityGroupIds": [ + { + "Ref": "BastionSG" + } + ], + "SubnetId": { + "Ref": "PublicSubnet1" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2", + "IamInstanceProfile": { + "Ref": "BastionProfile" + }, + "Tags": [ + { + "Key": "Name", + "Value": "Bastion" + } + ] + }, + "Name": "BastionInstance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Inbound Bastion Traffic", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "CidrIp": "0.0.0.0/0" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "BastionSG" + } + ] + }, + "Name": "BastionSG" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "RootRole" + } + ] + }, + "Name": "BastionProfile" + }, + { + "DependsOn": "CfnEndpoint", + "Type": "AWS::EC2::Instance", + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "InstanceType": "t2.micro", + "SecurityGroupIds": [ + { + "Ref": "PrivateSG" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet1" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2", + "IamInstanceProfile": { + "Ref": "PrivateProfile" + }, + "UserData": { + "Fn::Base64": { + "Fn::Sub": "#!/bin/bash -x\ndate > /tmp/datefile\ncat /tmp/datefile\n# Signal the status from instance\n/opt/aws/bin/cfn-signal -e $? -d \"This was all private.\" -r \"Build Process Complete\" '${PrivateWaitHandle}'\n" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": "Private" + } + ] + }, + "Name": "PrivateInstance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic from Bastion", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "SourceSecurityGroupId": { + "Ref": "BastionSG" + } + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "PrivateSG" + } + ] + }, + "Name": "PrivateSG" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "RootRole" + } + ] + }, + "Name": "PrivateProfile" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic into CloudFormation Endpoint", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 443, + "ToPort": 443, + "CidrIp": "0.0.0.0/0" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "EndpointSG" + } + ] + }, + "Name": "EndpointSG" + }, + { + "Type": "AWS::CloudFormation::WaitConditionHandle", + "Name": "PrivateWaitHandle" + }, + { + "DependsOn": "PrivateInstance", + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Handle": { + "Ref": "PrivateWaitHandle" + }, + "Timeout": "3600", + "Count": 1 + }, + "Name": "PrivateWaitCondition" + } + ], + "Outputs": { + "VPC": { + "Description": "A reference to the created VPC", + "Value": { + "Ref": "VPC" + } + }, + "PublicSubnets": { + "Description": "A list of the public subnets", + "Value": { + "Fn::Join": [ + ",", + [ + { + "Ref": "PublicSubnet1" + }, + { + "Ref": "PublicSubnet2" + } + ] + ] + } + }, + "PrivateSubnets": { + "Description": "A list of the private subnets", + "Value": { + "Fn::Join": [ + ",", + [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ] + ] + } + }, + "CfnEndpoint": { + "Description": "A reference to the CloudFormation Endpoint used for signaling from the private instance", + "Value": { + "Ref": "CfnEndpoint" + } + }, + "S3Endpoint": { + "Description": "A reference to the S3 Endpoint used for signaling from the private instance", + "Value": { + "Ref": "S3Endpoint" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT74 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT74 new file mode 100644 index 0000000..88ceab8 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT74 @@ -0,0 +1,1217 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/CloudFrontCustomOriginLambda@Edge/CloudFront.yaml" + ], + "timestamp": 1642972590586, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/CloudFrontCustomOriginLambda@Edge/CloudFront.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT74", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::elasticloadbalancingv2::listenerrule", + "aws::cloudfront::distribution", + "aws::s3::bucket", + "aws::ec2::securitygroup", + "aws::elasticloadbalancingv2::targetgroup", + "aws::iam::role", + "aws::kms::alias", + "aws::ec2::securitygroupingress", + "aws::s3::bucketpolicy", + "aws::kms::key", + "aws::elasticloadbalancingv2::loadbalancer", + "custom::lambdaversion", + "aws::ec2::securitygroupegress", + "aws::elasticloadbalancingv2::listener", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT74", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "CI/CD optimized AWS CloudFormation Sample Template for AWS CloudFront Distribution with Custom Origin with an example of using the AWS Application Load Balancer (ALB) and a basic Amazon EC2 Instance. AWS CloudFront Distribution is associated with Lambda@Edge for Security Headers inspection. In addition, AWS CloudFormation Template will provision an Examples of necessary IAM, S3, KMS and Security Groups resources. ### Before deployment please make sure that all parameters are reviewed and updated according the specific use case. ### **WARNING** This template creates one Amazon EC2 instance and an Application Load Balancer, KMS Keys, S3 bucket, CloudFront Distribution resources. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "Environment": { + "Description": "Please specify the target environment.", + "Type": "String", + "Default": "dev", + "AllowedValues": [ + "prod", + "staging", + "dev", + "qa" + ] + }, + "AppName": { + "Description": "Application environment name.", + "Type": "String", + "Default": "example" + }, + "AlternateDomainNames": { + "Description": "CNAMEs (alternate domain names), if any, for the distribution. Example. mydomain.com", + "Type": "String", + "Default": "name.domain.com" + }, + "ACMCertificateIdentifier": { + "Description": "The AWS Certificate Manager (ACM) certificate identifier.", + "Type": "String", + "Default": "1234567890abcdefgh" + }, + "LambdaEventType": { + "Description": "Please specify the event type that triggers a Lambda function invocation.", + "Type": "String", + "Default": "viewer-response", + "AllowedValues": [ + "viewer-request", + "origin-request", + "origin-response", + "viewer-response" + ] + }, + "IPV6Enabled": { + "Description": "Should CloudFront to respond to IPv6 DNS requests with an IPv6 address for your distribution.", + "Type": "String", + "Default": "true", + "AllowedValues": [ + true, + false + ] + }, + "EC2ImageId": { + "Description": "EC2 AMI Id", + "Type": "String", + "Default": "ami-xxx" + }, + "EC2InstanceType": { + "Description": "Amazon EC2 instance type.", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t2.small", + "t2.medium", + "t2.large", + "t2.xlarge", + "t2.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "m4.16xlarge", + "m5.large", + "m5.xlarge", + "m5.2xlarge", + "m5.4xlarge", + "m5.12xlarge", + "m5.24xlarge", + "m5d.large", + "m5d.xlarge", + "m5d.2xlarge", + "m5d.4xlarge", + "m5d.12xlarge", + "m5d.24xlarge" + ] + }, + "KeyPairName": { + "Description": "EC2 KeyPair.", + "Type": "AWS::EC2::KeyPair::KeyName", + "Default": "keypair" + }, + "BootVolSize": { + "Description": "EC2 Instance Boot volume size.", + "Type": "String", + "Default": "100" + }, + "BootVolType": { + "Description": "EC2 Instance Boot volume type.", + "Type": "String", + "Default": "gp2", + "AllowedValues": [ + "gp2", + "io1", + "sc1", + "st1" + ] + }, + "ALBType": { + "Description": "AWS Load Balancer Type.", + "Type": "String", + "Default": "application", + "AllowedValues": [ + "application", + "network" + ] + }, + "OriginALBTGPort": { + "Description": "Port number the application is running on, for Origin ALB Target Group and Health Check port.", + "Type": "String", + "Default": "8080" + }, + "OriginProtocolPolicy": { + "Description": "CloudFront Origin Protocol Policy to apply to your origin.", + "Type": "String", + "Default": "http-only", + "AllowedValues": [ + "http-only", + "match-viewer", + "https-only" + ] + }, + "Compress": { + "Description": "CloudFront Origin Protocol Policy to apply to your origin.", + "Type": "String", + "Default": "false", + "AllowedValues": [ + true, + false + ] + }, + "DefaultTTL": { + "Description": "The default time in seconds that objects stay in CloudFront caches before CloudFront forwards another request to your custom origin. By default, AWS CloudFormation specifies 86400 seconds (one day).", + "Type": "String", + "Default": "0" + }, + "MaxTTL": { + "Description": "The maximum time in seconds that objects stay in CloudFront caches before CloudFront forwards another request to your custom origin. By default, AWS CloudFormation specifies 31536000 seconds (one year).", + "Type": "String", + "Default": "0" + }, + "MinTTL": { + "Description": "The minimum amount of time that you want objects to stay in the cache before CloudFront queries your origin to see whether the object has been updated.", + "Type": "String", + "Default": "0" + }, + "SmoothStreaming": { + "Description": "Indicates whether to use the origin that is associated with this cache behavior to distribute media files in the Microsoft Smooth Streaming format.", + "Type": "String", + "Default": "false", + "AllowedValues": [ + true, + false + ] + }, + "QueryString": { + "Description": "CIndicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior.", + "Type": "String", + "Default": "true", + "AllowedValues": [ + true, + false + ] + }, + "ForwardCookies": { + "Description": "Forwards specified cookies to the origin of the cache behavior.", + "Type": "String", + "Default": "all", + "AllowedValues": [ + "all", + "whitelist", + "none" + ] + }, + "ViewerProtocolPolicy": { + "Description": "The protocol that users can use to access the files in the origin that you specified in the TargetOriginId property when the default cache behavior is applied to a request.", + "Type": "String", + "Default": "redirect-to-https", + "AllowedValues": [ + "redirect-to-https", + "allow-all", + "https-only" + ] + }, + "PriceClass": { + "Description": "The price class that corresponds with the maximum price that you want to pay for CloudFront service. If you specify PriceClass_All, CloudFront responds to requests for your objects from all CloudFront edge locations.", + "Type": "String", + "Default": "PriceClass_All", + "AllowedValues": [ + "PriceClass_All", + "PriceClass_100", + "PriceClass_200" + ] + }, + "SslSupportMethod": { + "Description": "Specifies how CloudFront serves HTTPS requests.", + "Type": "String", + "Default": "sni-only", + "AllowedValues": [ + "sni-only", + "vip" + ] + }, + "MinimumProtocolVersion": { + "Description": "The minimum version of the SSL protocol that you want CloudFront to use for HTTPS connections.", + "Type": "String", + "Default": "TLSv1", + "AllowedValues": [ + "TLSv1", + "TLSv1.2_2018", + "TLSv1.1_2016", + "TLSv1_2016", + "SSLv3" + ] + }, + "OriginKeepaliveTimeout": { + "Description": "You can create a custom keep-alive timeout. All timeout units are in seconds. The default keep-alive timeout is 5 seconds, but you can configure custom timeout lengths. The minimum timeout length is 1 second; the maximum is 60 seconds.", + "Type": "String", + "Default": "60" + }, + "OriginReadTimeout": { + "Description": "You can create a custom origin read timeout. All timeout units are in seconds. The default origin read timeout is 30 seconds, but you can configure custom timeout lengths. The minimum timeout length is 4 seconds; the maximum is 60 seconds.", + "Type": "String", + "Default": "30" + }, + "ALBScheme": { + "Description": "Origin ALB scheme.", + "Type": "String", + "Default": "internet-facing", + "AllowedValues": [ + "internet-facing", + "internal" + ] + }, + "ALBTargetGroupHealthCheckIntervalSeconds": { + "Description": "Origin ALB Target Group Health Check Interval in Seconds.", + "Type": "String", + "Default": "30" + }, + "ALBTargetGroupHealthCheckTimeoutSeconds": { + "Description": "Origin ALB Target Group Health Check Timeout in Seconds.", + "Type": "String", + "Default": "5" + }, + "ALBTargetGroupHealthyThresholdCount": { + "Description": "Origin ALB Target Group Healthy Threshold Count.", + "Type": "String", + "Default": "5" + }, + "ALBTargetGroupUnhealthyThresholdCount": { + "Description": "Origin ALB Target Group Unhealthy Threshold Count.", + "Type": "String", + "Default": "2" + }, + "ALBAttributeIdleTimeOut": { + "Description": "Origin ALB Target Group Unhealthy Threshold Count.", + "Type": "String", + "Default": "60" + }, + "ALBAttributeDeletionProtection": { + "Description": "Origin ALB Target Group Unhealthy Threshold Count.", + "Type": "String", + "Default": "false", + "AllowedValues": [ + true, + false + ] + }, + "ALBAttributeRoutingHttp2": { + "Description": "Origin ALB Target Group Unhealthy Threshold Count.", + "Type": "String", + "Default": "true", + "AllowedValues": [ + true, + false + ] + }, + "ALBTargetGroupAttributeDeregistration": { + "Description": "Origin ALB Target Group Deregistration Timeout.", + "Type": "String", + "Default": "300" + }, + "HealthCheckProtocol": { + "Description": "Origin ALB Target Group Health Check Protocol.", + "Type": "String", + "Default": "HTTP", + "AllowedValues": [ + "HTTPS", + "HTTP" + ] + }, + "HealthCheckPath": { + "Description": "Origin ALB Target Group Health Check Path.", + "Type": "String", + "Default": "/health.html" + }, + "LambdaFunctionVersion": { + "Description": "AWS Lambda@Edge function version.", + "Type": "String", + "Default": "1" + }, + "LoggingBucketVersioning": { + "Description": "The versioning state of an Amazon S3 bucket. If you enable versioning, you must suspend versioning to disable it.", + "Type": "String", + "Default": "Suspended", + "AllowedValues": [ + "Enabled", + "Suspended" + ] + } + }, + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Description": "Administrator Access IAM Role", + "Properties": { + "RoleName": { + "Fn::Sub": "AdministratorAccess-${AppName}" + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:aws:iam::aws:policy/AdministratorAccess" + } + ], + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/" + }, + "Name": "AdministratorAccessIAMRole" + }, + { + "Type": "AWS::IAM::Role", + "Description": "Lambda Edge IAM Role", + "Properties": { + "RoleName": { + "Fn::Sub": "${AppName}-iam-lambda-edge-role-${Environment}" + }, + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AllowLambdaServiceToAssumeRole", + "Effect": "Allow", + "Principal": { + "Service": [ + "edgelambda.amazonaws.com", + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + "arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess" + ], + "Path": "/", + "Policies": [ + { + "PolicyName": "PublishNewLambdaEdgeVersion", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "lambda:PublishVersion" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "LambdaEdgeIAMRole" + }, + { + "Type": "AWS::KMS::Key", + "DependsOn": "AdministratorAccessIAMRole", + "Properties": { + "Description": "Logging S3 Bucket KMS Key", + "Enabled": true, + "EnableKeyRotation": true, + "KeyPolicy": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "Enable IAM policies to allow access to the Key", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Sub": "arn:aws:iam::${AWS::AccountId}:root" + } + }, + "Action": [ + "kms:*" + ], + "Resource": "*" + }, + { + "Sid": "Allow administration of the key", + "Effect": "Allow", + "Principal": { + "AWS": [ + { + "Fn::Sub": "arn:aws:iam::${AWS::AccountId}:role/AdministratorAccess-${AppName}" + } + ] + }, + "Action": [ + "kms:Put*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:Describe*", + "kms:Revoke*", + "kms:Disable*", + "kms:Enable*", + "kms:Delete*", + "kms:List*", + "kms:Update*", + "kms:Create*" + ], + "Resource": "*" + } + ] + } + }, + "Name": "LoggingBucketKMSKey" + }, + { + "Type": "AWS::KMS::Alias", + "Properties": { + "AliasName": { + "Fn::Sub": "alias/${AppName}/${Environment}/s3-logging-kms" + }, + "TargetKeyId": { + "Fn::Sub": "${LoggingBucketKMSKey}" + } + }, + "Name": "LoggingBucketKMSKeyAlias" + }, + { + "Type": "AWS::S3::Bucket", + "DeletionPolicy": "Retain", + "DependsOn": "LoggingBucketKMSKey", + "Properties": { + "BucketName": { + "Fn::Sub": "${AppName}-logging-${Environment}-${AWS::AccountId}-${AWS::Region}" + }, + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "KMSMasterKeyID": { + "Fn::GetAtt": [ + "LoggingBucketKMSKey", + "Arn" + ] + }, + "SSEAlgorithm": "aws:kms" + } + } + ] + }, + "VersioningConfiguration": { + "Status": "Suspended" + } + }, + "Name": "LoggingBucket" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "LoggingBucket" + }, + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "LoggingBucketPermissions", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Sub": "arn:aws:iam::${AWS::AccountId}:root" + } + }, + "Action": "s3:PutObject", + "Resource": [ + { + "Fn::Sub": "arn:aws:s3:::${LoggingBucket}/AWSLogs/${AWS::AccountId}/*" + } + ] + } + ] + } + }, + "Name": "LoggingBucketPolicy" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": "ami-xxx", + "AvailabilityZone": { + "Fn::Select": [ + "0", + { + "Fn::GetAZs": { + "Ref": "AWS::Region" + } + } + ] + }, + "InstanceType": "t2.small", + "SubnetId": { + "Fn::ImportValue": { + "Fn::Sub": "${AppName}-vpc-${Environment}-PublicSubnet1ID" + } + }, + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sda1", + "Ebs": { + "VolumeSize": "100", + "VolumeType": "gp2" + } + } + ], + "SecurityGroupIds": [ + { + "Ref": "EC2InstanceSG" + }, + { + "Ref": "ALBExternalAccessSG" + } + ], + "KeyName": "keypair", + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${AppName}-${Environment}-ec2-instance" + } + }, + { + "Key": "Environment", + "Value": "dev" + } + ] + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "EC2 Instance Security Group", + "VpcId": { + "Fn::ImportValue": { + "Fn::Sub": "${AppName}-vpc-${Environment}-VPC-ID" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${AppName}-${Environment}-ec2-instance-SG" + } + }, + { + "Key": "Environment", + "Value": "dev" + } + ] + }, + "Name": "EC2InstanceSG" + }, + { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "GroupId": { + "Ref": "EC2InstanceSG" + }, + "ToPort": "8080", + "IpProtocol": "tcp", + "FromPort": "8080", + "SourceSecurityGroupId": { + "Ref": "ALBExternalAccessSG" + } + }, + "Name": "Tcp8080In" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", + "Properties": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-alb" + }, + "Scheme": "internet-facing", + "Type": "application", + "LoadBalancerAttributes": [ + { + "Key": "idle_timeout.timeout_seconds", + "Value": "60" + }, + { + "Key": "deletion_protection.enabled", + "Value": "false" + }, + { + "Key": "routing.http2.enabled", + "Value": "true" + } + ], + "Subnets": [ + { + "Fn::ImportValue": { + "Fn::Sub": "${AppName}-vpc-${Environment}-PublicSubnet1ID" + } + }, + { + "Fn::ImportValue": { + "Fn::Sub": "${AppName}-vpc-${Environment}-PublicSubnet2ID" + } + } + ], + "SecurityGroups": [ + { + "Ref": "ALBExternalAccessSG" + } + ], + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${AppName}-${Environment}-alb" + } + }, + { + "Key": "Environment", + "Value": "dev" + } + ] + }, + "Name": "OriginALB" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", + "DependsOn": "OriginALB", + "Properties": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-alb-tg" + }, + "HealthCheckProtocol": "HTTP", + "HealthCheckPath": "/health.html", + "HealthCheckPort": { + "Fn::Sub": "${OriginALBTGPort}" + }, + "HealthCheckIntervalSeconds": "30", + "HealthCheckTimeoutSeconds": "5", + "HealthyThresholdCount": "5", + "UnhealthyThresholdCount": "2", + "TargetGroupAttributes": [ + { + "Key": "deregistration_delay.timeout_seconds", + "Value": "300" + } + ], + "TargetType": "instance", + "Targets": [ + { + "Id": { + "Ref": "EC2Instance" + }, + "Port": { + "Fn::Sub": "${OriginALBTGPort}" + } + } + ], + "Port": { + "Fn::Sub": "${OriginALBTGPort}" + }, + "Protocol": "HTTP", + "VpcId": { + "Fn::ImportValue": { + "Fn::Sub": "${AppName}-vpc-${Environment}-VPC-ID" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${AppName}-${Environment}-alb-tg" + } + }, + { + "Key": "Environment", + "Value": "dev" + } + ] + }, + "Name": "OriginALBTG" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::Listener", + "DependsOn": "OriginALBTG", + "Properties": { + "DefaultActions": [ + { + "TargetGroupArn": { + "Ref": "OriginALBTG" + }, + "Type": "forward" + } + ], + "LoadBalancerArn": { + "Ref": "OriginALB" + }, + "Port": "443", + "Protocol": "HTTPS", + "Certificates": [ + { + "CertificateArn": { + "Fn::Sub": "arn:aws:acm:${AWS::Region}:${AWS::AccountId}:certificate/${ACMCertificateIdentifier}" + } + } + ], + "SslPolicy": "ELBSecurityPolicy-FS-2018-06" + }, + "Name": "OriginALBHttpsListener" + }, + { + "Type": "AWS::ElasticLoadBalancingV2::ListenerRule", + "DependsOn": "OriginALBHttpsListener", + "Properties": { + "Actions": [ + { + "Type": "forward", + "TargetGroupArn": { + "Ref": "OriginALBTG" + } + } + ], + "Conditions": [ + { + "Field": "path-pattern", + "Values": [ + "/*" + ] + } + ], + "ListenerArn": { + "Ref": "OriginALBHttpsListener" + }, + "Priority": 1 + }, + "Name": "OriginALBHttpsListenerRule" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Allow external access to ALB", + "VpcId": { + "Fn::ImportValue": { + "Fn::Sub": "${AppName}-vpc-${Environment}-VPC-ID" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${AppName}-${Environment}-alb-external-access-ingrees-SG" + } + }, + { + "Key": "Environment", + "Value": "dev" + } + ] + }, + "Name": "ALBExternalAccessSG" + }, + { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "GroupId": { + "Ref": "ALBExternalAccessSG" + }, + "ToPort": "443", + "IpProtocol": "tcp", + "FromPort": "443", + "CidrIp": "0.0.0.0/0" + }, + "Name": "HTTPSTcpIn" + }, + { + "Type": "AWS::EC2::SecurityGroupIngress", + "Properties": { + "GroupId": { + "Ref": "ALBExternalAccessSG" + }, + "ToPort": "80", + "IpProtocol": "tcp", + "FromPort": "80", + "CidrIp": "0.0.0.0/0" + }, + "Name": "HTTPTcpIn" + }, + { + "Type": "AWS::EC2::SecurityGroupEgress", + "Properties": { + "GroupId": { + "Ref": "ALBExternalAccessSG" + }, + "ToPort": "8080", + "IpProtocol": "tcp", + "FromPort": "8080", + "DestinationSecurityGroupId": { + "Ref": "EC2InstanceSG" + } + }, + "Name": "Tcp8080Out" + }, + { + "Type": "AWS::CloudFront::Distribution", + "DependsOn": [ + "LoggingBucket", + "LambdaEdgeFunction" + ], + "Properties": { + "DistributionConfig": { + "Comment": "Cloudfront Distribution pointing ALB Origin", + "Origins": [ + { + "DomainName": { + "Fn::GetAtt": [ + "OriginALB", + "DNSName" + ] + }, + "Id": { + "Ref": "OriginALB" + }, + "CustomOriginConfig": { + "HTTPPort": "80", + "HTTPSPort": "443", + "OriginProtocolPolicy": "http-only", + "OriginKeepaliveTimeout": "60", + "OriginReadTimeout": "30", + "OriginSSLProtocols": [ + "TLSv1", + "TLSv1.1", + "TLSv1.2", + "SSLv3" + ] + } + } + ], + "Enabled": true, + "HttpVersion": "http2", + "Aliases": [ + "name.domain.com" + ], + "DefaultCacheBehavior": { + "AllowedMethods": [ + "GET", + "HEAD", + "DELETE", + "OPTIONS", + "PATCH", + "POST", + "PUT" + ], + "Compress": "false", + "DefaultTTL": "0", + "MaxTTL": "0", + "MinTTL": "0", + "SmoothStreaming": "false", + "TargetOriginId": { + "Ref": "OriginALB" + }, + "ForwardedValues": { + "QueryString": "true", + "Cookies": { + "Forward": "all" + } + }, + "ViewerProtocolPolicy": "redirect-to-https", + "LambdaFunctionAssociations": [ + { + "EventType": "viewer-response", + "LambdaFunctionARN": { + "Ref": "LambdaEdgeVersion" + } + } + ] + }, + "PriceClass": "PriceClass_All", + "ViewerCertificate": { + "ACMCertificateIdentifier": { + "Fn::Sub": "arn:aws:acm:${AWS::Region}:${AWS::AccountId}:certificate/${ACMCertificateIdentifier}" + }, + "SslSupportMethod": "sni-only", + "MinimumProtocolVersion": "TLSv1" + }, + "IPV6Enabled": "true", + "Logging": { + "Bucket": { + "Fn::Sub": "${LoggingBucket}.s3.amazonaws.com" + } + } + } + }, + "Name": "CloudFrontDistribution" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Description": { + "Fn::Sub": "A custom Lambda@Edge function for serving custom headers from CloudFront Distribution" + }, + "FunctionName": { + "Fn::Sub": "${AppName}-lambda-edge-${Environment}" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaEdgeIAMRole", + "Arn" + ] + }, + "MemorySize": 128, + "Timeout": 5, + "Code": { + "ZipFile": { + "Fn::Sub": "'use strict';\n\n exports.handler = (event, context, callback) => {\n console.log('Adding additional headers to CloudFront response.');\n\n const response = event.Records[0].cf.response;\n response.headers['strict-transport-security'] = [{\n key: 'Strict-Transport-Security',\n value: 'max-age=86400; includeSubdomains; preload',\n }];\n response.headers['x-content-type-options'] = [{\n key: 'X-Content-Type-Options',\n value: 'nosniff',\n }];\n response.headers['x-frame-options'] = [{\n key: 'X-Frame-Options',\n value: \"DENY\"\n }];\n response.headers['content-security-policy'] = [{\n key: 'Content-Security-Policy',\n value: \"default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'\"\n }];\n response.headers['x-xss-protection'] = [{\n key: 'X-XSS-Protection',\n value: \"1; mode=block\"\n }];\n response.headers['referrer-policy'] = [{\n key: 'Referrer-Policy',\n value: \"same-origin\"\n }];\n callback(null, response);\n };\n" + } + }, + "Runtime": "nodejs10.x" + }, + "Name": "LambdaEdgeFunction" + }, + { + "Type": "Custom::LambdaVersion", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "LambdaEdgeVersionFunction", + "Arn" + ] + }, + "FunctionName": { + "Ref": "LambdaEdgeFunction" + }, + "LambdaCodeVersion": "1" + }, + "Name": "LambdaEdgeVersion" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Description": { + "Fn::Sub": "A custom Lambda@Edge Version function" + }, + "FunctionName": { + "Fn::Sub": "${AppName}-lambda-edge-version-${Environment}" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaEdgeIAMRole", + "Arn" + ] + }, + "MemorySize": 128, + "Timeout": 30, + "Code": { + "ZipFile": { + "Fn::Sub": "var AWS = require('aws-sdk');\nvar response = require('cfn-response');\nexports.handler = (event, context) => {\n console.log(\"Request received:\\n\", JSON.stringify(event));\n if (event.RequestType == 'Delete') {\n return response.send(event, context, response.SUCCESS);\n }\n var lambda = new AWS.Lambda();\n lambda.publishVersion({FunctionName: event.ResourceProperties.FunctionName}).promise().then((data) => {\n return response.send(event, context, response.SUCCESS, {Version: data.Version}, data.FunctionArn);\n }).catch((e) => {\n return response.send(event, context, response.FAILED, e);\n });\n};\n" + } + }, + "Runtime": "nodejs10.x" + }, + "Name": "LambdaEdgeVersionFunction" + } + ], + "Outputs": { + "AdministratorAccessIAMRole": { + "Description": "Administrator Access IAM Role", + "Value": { + "Ref": "AdministratorAccessIAMRole" + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-iam-${Environment}-administrator-access-role" + } + } + }, + "LoggingBucket": { + "Description": "Name of S3 Logging bucket", + "Value": { + "Ref": "LoggingBucket" + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-logging-${Environment}-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "LoggingBucketKMSKey": { + "Description": "Logging Bucket KMS Key", + "Value": { + "Ref": "LoggingBucketKMSKey" + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-s3-logging-kms" + } + } + }, + "OriginALB": { + "Description": "The URL of the Origin ALB", + "Value": { + "Fn::GetAtt": [ + "OriginALB", + "DNSName" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-origin-alb-dns" + } + } + }, + "ALBExternalAccessSGID": { + "Description": "ALB External Access Security Group ID", + "Value": { + "Ref": "ALBExternalAccessSG" + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-alb-external-access-ingrees-sg" + } + } + }, + "EC2InstanceSGID": { + "Description": "EC2 Instance Security Group ID", + "Value": { + "Ref": "EC2InstanceSG" + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-ec2-instance-sg" + } + } + }, + "EC2InstanceDNS": { + "Description": "EC2 Instance DNS Name", + "Value": { + "Fn::GetAtt": [ + "EC2Instance", + "PrivateDnsName" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-ec2-instance-dns" + } + } + }, + "EC2InstanceIP": { + "Description": "EC2 Instance IP Address", + "Value": { + "Fn::GetAtt": [ + "EC2Instance", + "PrivateIp" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-ec2-instance-ip-address" + } + } + }, + "EC2InstanceID": { + "Description": "EC2 Instance Instance ID", + "Value": { + "Ref": "EC2Instance" + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-ec2-instance-id" + } + } + }, + "CloudFrontEndpoint": { + "Description": "Endpoint for Cloudfront Distribution", + "Value": { + "Ref": "CloudFrontDistribution" + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-cloudfront-distribution" + } + } + }, + "AlternateDomainNames": { + "Description": "Alternate Domain Names (CNAME)", + "Value": { + "Ref": "AlternateDomainNames" + } + }, + "LambdaEdgeFunction": { + "Description": "The Name of the Lambda@Edge Function", + "Value": { + "Fn::Sub": "LambdaEdgeFunction" + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-lambda-edge-function-3" + } + } + }, + "LambdaEdgeFunctionARN": { + "Description": "The ARN of the Lambda@Edge Function", + "Value": { + "Fn::GetAtt": [ + "LambdaEdgeFunction", + "Arn" + ] + }, + "Export": { + "Name": { + "Fn::Sub": "${AppName}-${Environment}-lambda-edge-function-arn-3" + } + } + }, + "LambdaEdgeVersion": { + "Description": "Lambda@Edge Version Function", + "Value": { + "Fn::GetAtt": [ + "LambdaEdgeVersion", + "Version" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT75 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT75 new file mode 100644 index 0000000..11e76ce --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT75 @@ -0,0 +1,148 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/createVPCInterfaceEndpoint/lambda_vpce_interface.json" + ], + "timestamp": 1642972590592, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/createVPCInterfaceEndpoint/lambda_vpce_interface.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT75", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "custom::vpceinterface", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT75", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template create a lambda function and use it to create interface VPC endpoint", + "Metadata": {}, + "Parameters": { + "VPC": { + "Description": "VPC ID", + "Type": "String" + }, + "Subnet": { + "Description": "Subnet ID", + "Type": "String" + }, + "SecurityGroup": { + "Description": "Security group ID", + "Type": "String" + }, + "Servicename": { + "Description": "Service name to create inetrafce endpoint", + "Type": "String" + } + }, + "Resources": [ + { + "Description": "IAM role to allow Lambda permissions to create interafce endpoint", + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ec2:CreateVpcEndpoint", + "ec2:DeleteVpcEndpoint", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "LambdaRole" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "import boto3\nimport json\nimport os\nimport cfnresponse\ndef lambda_handler(event, context):\n client = boto3.client('ec2')\n responseData = {}\n responseValue = client.create_vpc_endpoint(\n VpcEndpointType = os.environ['endpointtype'],\n VpcId = os.environ['vpcid'],\n ServiceName = os.environ['servicename'],\n SubnetIds = [os.environ['subnet']],\n SecurityGroupIds = [os.environ['securitygroup']],\n PrivateDnsEnabled = True\n )\n responseData['Data'] = str(responseValue)\n cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, \"CustomResourcePhysicalID\")" + }, + "Handler": "index.lambda_handler", + "Runtime": "python3.6", + "Timeout": "30", + "Role": { + "Fn::GetAtt": [ + "LambdaRole", + "Arn" + ] + }, + "Environment": { + "Variables": { + "vpcid": { + "Ref": "VPC" + }, + "subnet": { + "Ref": "Subnet" + }, + "servicename": { + "Ref": "Servicename" + }, + "securitygroup": { + "Ref": "SecurityGroup" + }, + "endpointtype": "Interface" + } + } + }, + "Name": "LambdaFunction" + }, + { + "Type": "Custom::VPCEInterface", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "LambdaFunction", + "Arn" + ] + } + }, + "Name": "CreateVPCEInterface" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT76 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT76 new file mode 100644 index 0000000..a1417d8 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT76 @@ -0,0 +1,796 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/DirectoryADClients/templates/DIRECTORY-AD-CLIENTS.yaml" + ], + "timestamp": 1642972590595, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/DirectoryADClients/templates/DIRECTORY-AD-CLIENTS.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT76", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ssm::association" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT76", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template creates (1) Linux and (3) Windows EC2 instances and joins them to Active Directory using the 'AWS-JoinDirectoryServiceDomain' SSM document via AD Connector or AWS Managed AD directory. By default, it relies on the DNS servers being used by the EC2 instances knowing how to resolve the AD domain (i.e., Route 53 Resolvers, DHCP OptionsSet), with an option to set the DNS servers manually on the EC2 instances, as necessary. Several methods used to initiate the domain join (1) Windows EC2 instance with inline SSM association (2) Windows and Linux EC2 instance with SSM association targeting EC2 instance IDs (3) Windows EC2 instance with SSM association targeting EC2 instance tags", + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "Network Configuration" + }, + "Parameters": [ + "PrivateSubnet1ID", + "PrivateSubnet2ID" + ] + }, + { + "Label": { + "default": "EC2 Instance Configuration" + }, + "Parameters": [ + "DomainMembersInstanceType", + "DomainMember1NetBIOSName", + "DomainMember2NetBIOSName", + "DomainMember3NetBIOSName", + "DomainMember4NetBIOSName", + "KeyPairName", + "DomainMembersLinuxInstanceProfile", + "DomainMembersWindowsInstanceProfile", + "DomainMembersSGID", + "EBSKMSKey", + "AMAZONLINUX2", + "WINFULLBASE", + "SSMLogsBucketName" + ] + }, + { + "Label": { + "default": "Directory Services Configuration" + }, + "Parameters": [ + "DirectoryID", + "DirectoryName", + "DomainDNSServer1", + "DomainDNSServer2", + "DomainDNSServer3", + "DomainDNSServer4" + ] + } + ], + "ParameterLabels": { + "AMAZONLINUX2": { + "default": "SSM Parameter Value for Lastest Amazon Linux 2 AMI ID" + }, + "DirectoryID": { + "default": "ID of the Directory (e.g., d-906764663a)" + }, + "DirectoryName": { + "default": "Directory Name" + }, + "DomainDNSServer1": { + "default": "Domain DNS Server 1" + }, + "DomainDNSServer2": { + "default": "Domain DNS Server 2" + }, + "DomainDNSServer3": { + "default": "Domain DNS Server 3" + }, + "DomainDNSServer4": { + "default": "Domain DNS Server 4" + }, + "DomainMember1NetBIOSName": { + "default": "Domain Member 1 NetBIOS Name" + }, + "DomainMember2NetBIOSName": { + "default": "Domain Member 2 NetBIOS Name" + }, + "DomainMember3NetBIOSName": { + "default": "Domain Member 3 NetBIOS Name" + }, + "DomainMember4NetBIOSName": { + "default": "Domain Member 4 NetBIOS Name" + }, + "DomainMembersInstanceType": { + "default": "Domain Members Instance Type" + }, + "DomainMembersSGID": { + "default": "Domain Members Security Group" + }, + "DomainMembersLinuxInstanceProfile": { + "default": "Domain Member Linux InstanceProfile" + }, + "DomainMembersWindowsInstanceProfile": { + "default": "Domain Member Windows InstanceProfile" + }, + "EBSKMSKey": { + "default": "Amazon EBS Volume KMS Key" + }, + "KeyPairName": { + "default": "Key Pair Name" + }, + "PrivateSubnet1ID": { + "default": "Private Subnet 1 ID" + }, + "PrivateSubnet2ID": { + "default": "Private Subnet 2 ID" + }, + "SSMLogsBucketName": { + "default": "SSM Logs Bucket Name" + }, + "WINFULLBASE": { + "default": "SSM Parameter Value for Lastest Windows AMI ID" + } + } + } + }, + "Parameters": { + "AMAZONLINUX2": { + "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-ebs", + "Type": "AWS::SSM::Parameter::Value" + }, + "DirectoryID": { + "AllowedPattern": "^d-[0-9a-f]{10}$", + "Description": "Directory ID", + "Type": "String" + }, + "DirectoryName": { + "AllowedPattern": "[a-zA-Z0-9-]+\\..+", + "Description": "Fully qualified name of the on-premises directory, such as corp.example.com", + "MaxLength": 25, + "MinLength": 3, + "Type": "String" + }, + "DomainDNSServer1": { + "AllowedPattern": "^$|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", + "Description": "(Optional) Domain DNS Server 1. If DNS servers are not set, then you need to ensure the DNS servers the EC2 instances are using can resolve the AD domain.", + "Type": "String" + }, + "DomainDNSServer2": { + "AllowedPattern": "^$|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", + "Description": "(Optional) Domain DNS Server 2. If DNS servers are not set, then you need to ensure the DNS servers the EC2 instances are using can resolve the AD domain.", + "Type": "String" + }, + "DomainDNSServer3": { + "AllowedPattern": "^$|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", + "Description": "(Optional) Domain DNS Server 3. If DNS servers are not set, then you need to ensure the DNS servers the EC2 instances are using can resolve the AD domain.", + "Type": "String" + }, + "DomainDNSServer4": { + "AllowedPattern": "^$|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", + "Description": "(Optional) Domain DNS Server 4. If DNS servers are not set, then you need to ensure the DNS servers the EC2 instances are using can resolve the AD domain.", + "Type": "String" + }, + "DomainMember1NetBIOSName": { + "AllowedPattern": "[a-zA-Z0-9-]+", + "Default": "SERVER1", + "Description": "NetBIOS name of Domain Member 1 (using inline SSM association). Note, if computer name existed in AD before, delete from AD first.", + "MaxLength": 15, + "MinLength": 1, + "Type": "String" + }, + "DomainMember2NetBIOSName": { + "AllowedPattern": "[a-zA-Z0-9-]+", + "Default": "SERVER2", + "Description": "NetBIOS name of Domain Member 2 (using SSM association via instance id). Note, if computer name existed in AD before, delete from AD first.", + "MaxLength": 15, + "MinLength": 1, + "Type": "String" + }, + "DomainMember3NetBIOSName": { + "AllowedPattern": "[a-zA-Z0-9-]+", + "Default": "SERVER3", + "Description": "NetBIOS name of Domain Member 3 (using SSM association via tag). Note, if computer name existed in AD before, delete from AD first.", + "MaxLength": 15, + "MinLength": 1, + "Type": "String" + }, + "DomainMember4NetBIOSName": { + "AllowedPattern": "[a-zA-Z0-9-]+", + "Default": "SERVER4", + "Description": "NetBIOS name of Domain Member 4 (AmazonLinux2)", + "MaxLength": 15, + "MinLength": 1, + "Type": "String" + }, + "DomainMembersInstanceType": { + "AllowedValues": [ + "t3.medium", + "t3.large" + ], + "Default": "t3.medium", + "Description": "Amazon EC2 instance type for the AD Server instances", + "Type": "String" + }, + "DomainMembersLinuxInstanceProfile": { + "AllowedPattern": "[\\w+=,.@-]+", + "Description": "Existing IAM InstanceProfile with Linux EC2 seamless join domain rights", + "Type": "String" + }, + "DomainMembersWindowsInstanceProfile": { + "AllowedPattern": "[\\w+=,.@-]+", + "Description": "Existing IAM InstanceProfile with Windows EC2 seamless join domain rights", + "Type": "String" + }, + "DomainMembersSGID": { + "Description": "Security Group ID for Domain Members Security Group", + "Type": "AWS::EC2::SecurityGroup::Id" + }, + "EBSKMSKey": { + "AllowedPattern": "^$|(^alias/[a-zA-Z0-9/-]{1,256}$)|(^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$)|(^arn:(aws[a-z-]*)?:kms:.*:\\d{12}:key/[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$)|(^arn:(aws[a-z-]*)?:kms:.*:\\d{12}:alias/[a-zA-Z0-9/-]{1,256}$)", + "Description": "(Optional) KMS Alias, Key ID, Key ID ARN or Alias ARN to use for encrypting the EBS volumes. If empty, the default key for EBS encryption will be used of `alias/aws/ebs` or the CMK set as the default EBS encryption key.", + "Type": "String" + }, + "KeyPairName": { + "Description": "KeyPair for ONPREMISES INSTANCES", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "PrivateSubnet1ID": { + "Description": "ID of the private subnet 1 in Availability Zone 1 (e.g., subnet-a0246dcd)", + "Type": "AWS::EC2::Subnet::Id" + }, + "PrivateSubnet2ID": { + "Description": "ID of the private subnet 2 in Availability Zone 2 (e.g., subnet-a0246dcd)", + "Type": "AWS::EC2::Subnet::Id" + }, + "SSMLogsBucketName": { + "AllowedPattern": "^$|(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "SSM Logs bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Description": "(Optional) SSM Logs bucket name for where Systems Manager logs should store log files. SSM Logs bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Type": "String" + }, + "WINFULLBASE": { + "Default": "/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base", + "Type": "AWS::SSM::Parameter::Value" + } + }, + "Conditions": { + "DomainDNSServer1Condition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "DomainDNSServer1" + }, + "" + ] + } + ] + }, + "DomainDNSServer2Condition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "DomainDNSServer2" + }, + "" + ] + } + ] + }, + "DomainDNSServer3Condition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "DomainDNSServer3" + }, + "" + ] + } + ] + }, + "DomainDNSServer4Condition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "DomainDNSServer4" + }, + "" + ] + } + ] + }, + "DomainDNSServersCondition": { + "Fn::Or": [ + { + "Condition": "DomainDNSServer1Condition" + }, + { + "Condition": "DomainDNSServer2Condition" + }, + { + "Condition": "DomainDNSServer3Condition" + }, + { + "Condition": "DomainDNSServer4Condition" + } + ] + }, + "EBSKMSKeyCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "EBSKMSKey" + }, + "" + ] + } + ] + }, + "SSMLogsBucketCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "SSMLogsBucketName" + }, + "" + ] + } + ] + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": "/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base", + "IamInstanceProfile": { + "Ref": "DomainMembersWindowsInstanceProfile" + }, + "SsmAssociations": [ + { + "DocumentName": "AWS-JoinDirectoryServiceDomain", + "AssociationParameters": [ + { + "Key": "directoryId", + "Value": [ + { + "Ref": "DirectoryID" + } + ] + }, + { + "Key": "directoryName", + "Value": [ + { + "Ref": "DirectoryName" + } + ] + }, + { + "Fn::If": [ + "DomainDNSServersCondition", + { + "Key": "dnsIpAddresses", + "Value": [ + { + "Ref": "DomainDNSServer1" + }, + { + "Ref": "DomainDNSServer2" + }, + { + "Ref": "DomainDNSServer3" + }, + { + "Ref": "DomainDNSServer4" + } + ] + }, + { + "Ref": "AWS::NoValue" + } + ] + } + ] + } + ], + "InstanceType": "t3.medium", + "SubnetId": { + "Ref": "PrivateSubnet1ID" + }, + "Tags": [ + { + "Key": "Name", + "Value": "SERVER1" + } + ], + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sda1", + "Ebs": { + "Encrypted": true, + "VolumeType": "gp3", + "DeleteOnTermination": true, + "VolumeSize": 100, + "KmsKeyId": { + "Ref": "EBSKMSKey" + } + } + } + ], + "SecurityGroupIds": [ + { + "Ref": "DomainMembersSGID" + } + ], + "KeyName": { + "Ref": "KeyPairName" + }, + "UserData": { + "Fn::Base64": { + "Fn::Sub": "\n$instanceId = \"null\"\nwhile ($instanceId -NotLike \"i-*\") {\nStart-Sleep -s 3\n$instanceId = Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/instance-id\n}\nRename-Computer -NewName ${DomainMember1NetBIOSName} -Force\n# Set-TimeZone -Name \"US Eastern Standard Time\"\n\nInstall-WindowsFeature -IncludeAllSubFeature RSAT\nRestart-Computer -Force\n\n" + } + } + }, + "Name": "DomainMember1WithInlineSsmAssociation" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": "/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base", + "IamInstanceProfile": { + "Ref": "DomainMembersWindowsInstanceProfile" + }, + "InstanceType": "t3.medium", + "SubnetId": { + "Ref": "PrivateSubnet2ID" + }, + "Tags": [ + { + "Key": "Name", + "Value": "SERVER2" + } + ], + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sda1", + "Ebs": { + "Encrypted": true, + "VolumeType": "gp3", + "DeleteOnTermination": true, + "VolumeSize": 100, + "KmsKeyId": { + "Ref": "EBSKMSKey" + } + } + } + ], + "SecurityGroupIds": [ + { + "Ref": "DomainMembersSGID" + } + ], + "KeyName": { + "Ref": "KeyPairName" + }, + "UserData": { + "Fn::Base64": { + "Fn::Sub": "\n$instanceId = \"null\"\nwhile ($instanceId -NotLike \"i-*\") {\nStart-Sleep -s 3\n$instanceId = Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/instance-id\n}\nRename-Computer -NewName ${DomainMember2NetBIOSName} -Force\n# Set-TimeZone -Name \"US Eastern Standard Time\"\n\nInstall-WindowsFeature -IncludeAllSubFeature RSAT\nRestart-Computer -Force\n\n" + } + } + }, + "Name": "DomainMember2WithSsmAssociationInstance" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": "/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base", + "IamInstanceProfile": { + "Ref": "DomainMembersWindowsInstanceProfile" + }, + "InstanceType": "t3.medium", + "SubnetId": { + "Ref": "PrivateSubnet1ID" + }, + "Tags": [ + { + "Key": "Name", + "Value": "SERVER3" + }, + { + "Key": "DomainJoin", + "Value": { + "Ref": "DirectoryName" + } + } + ], + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sda1", + "Ebs": { + "Encrypted": true, + "VolumeType": "gp3", + "DeleteOnTermination": true, + "VolumeSize": 100, + "KmsKeyId": { + "Ref": "EBSKMSKey" + } + } + } + ], + "SecurityGroupIds": [ + { + "Ref": "DomainMembersSGID" + } + ], + "KeyName": { + "Ref": "KeyPairName" + }, + "UserData": { + "Fn::Base64": { + "Fn::Sub": "\n$instanceId = \"null\"\nwhile ($instanceId -NotLike \"i-*\") {\nStart-Sleep -s 3\n$instanceId = Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/instance-id\n}\nRename-Computer -NewName ${DomainMember3NetBIOSName} -Force\n# Set-TimeZone -Name \"US Eastern Standard Time\"\n\nInstall-WindowsFeature -IncludeAllSubFeature RSAT\nRestart-Computer -Force\n\n" + } + } + }, + "Name": "DomainMember3WithSsmAssociationTag" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-ebs", + "IamInstanceProfile": { + "Ref": "DomainMembersLinuxInstanceProfile" + }, + "InstanceType": "t3.medium", + "SubnetId": { + "Ref": "PrivateSubnet2ID" + }, + "Tags": [ + { + "Key": "Name", + "Value": "SERVER4" + } + ], + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sda1", + "Ebs": { + "Encrypted": true, + "VolumeType": "gp3", + "DeleteOnTermination": true, + "VolumeSize": 100, + "KmsKeyId": { + "Ref": "EBSKMSKey" + } + } + } + ], + "SecurityGroupIds": [ + { + "Ref": "DomainMembersSGID" + } + ], + "KeyName": { + "Ref": "KeyPairName" + }, + "UserData": { + "Fn::Base64": { + "Fn::Sub": "# Set HostName\nLowerEc2Name=$(echo ${DomainMember4NetBIOSName} | tr '[:upper:]' '[:lower:]')\nhostnamectl set-hostname $LowerEc2Name\n# Set TimeZone\n# sed -i 's|^ZONE=.*|ZONE=\"America/New_York\"|' /etc/sysconfig/clock\n# ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime\n# Patch System Up\nyum update -y\n# Reboot\nreboot\n" + } + } + }, + "Name": "DomainMember4LinuxWithSsmAssociationInstance" + }, + { + "Type": "AWS::SSM::Association", + "Properties": { + "AssociationName": { + "Fn::Sub": "JoinDomain-Association-viaInstances-${AWS::StackName}" + }, + "Name": "AWS-JoinDirectoryServiceDomain", + "OutputLocation": { + "S3Location": { + "OutputS3BucketName": { + "Ref": "SSMLogsBucketName" + }, + "OutputS3KeyPrefix": { + "Fn::Sub": "ssm-association-logs/AWSLogs/${AWS::AccountId}/*" + } + } + }, + "Targets": [ + { + "Key": "InstanceIds", + "Values": [ + { + "Ref": "DomainMember2WithSsmAssociationInstance" + }, + { + "Ref": "DomainMember4LinuxWithSsmAssociationInstance" + } + ] + } + ], + "Parameters": { + "directoryId": [ + { + "Ref": "DirectoryID" + } + ], + "directoryName": [ + { + "Ref": "DirectoryName" + } + ], + "dnsIpAddresses": { + "Fn::If": [ + "DomainDNSServersCondition", + [ + { + "Fn::If": [ + "DomainDNSServer1Condition", + { + "Ref": "DomainDNSServer1" + }, + { + "Ref": "AWS::NoValue" + } + ] + }, + { + "Fn::If": [ + "DomainDNSServer2Condition", + { + "Ref": "DomainDNSServer2" + }, + { + "Ref": "AWS::NoValue" + } + ] + }, + { + "Fn::If": [ + "DomainDNSServer3Condition", + { + "Ref": "DomainDNSServer3" + }, + { + "Ref": "AWS::NoValue" + } + ] + }, + { + "Fn::If": [ + "DomainDNSServer4Condition", + { + "Ref": "DomainDNSServer4" + }, + { + "Ref": "AWS::NoValue" + } + ] + } + ], + { + "Ref": "AWS::NoValue" + } + ] + } + } + }, + "Name": "JoinDomainAssociationInstances" + }, + { + "Type": "AWS::SSM::Association", + "Properties": { + "AssociationName": { + "Fn::Sub": "JoinDomain-Association-viaTags-${AWS::StackName}" + }, + "Name": "AWS-JoinDirectoryServiceDomain", + "OutputLocation": { + "S3Location": { + "OutputS3BucketName": { + "Ref": "SSMLogsBucketName" + }, + "OutputS3KeyPrefix": { + "Fn::Sub": "ssm-association-logs/AWSLogs/${AWS::AccountId}/*" + } + } + }, + "Targets": [ + { + "Key": "tag:DomainJoin", + "Values": [ + { + "Ref": "DirectoryName" + } + ] + } + ], + "Parameters": { + "directoryId": [ + { + "Ref": "DirectoryID" + } + ], + "directoryName": [ + { + "Ref": "DirectoryName" + } + ], + "dnsIpAddresses": { + "Fn::If": [ + "DomainDNSServersCondition", + [ + { + "Fn::If": [ + "DomainDNSServer1Condition", + { + "Ref": "DomainDNSServer1" + }, + { + "Ref": "AWS::NoValue" + } + ] + }, + { + "Fn::If": [ + "DomainDNSServer2Condition", + { + "Ref": "DomainDNSServer2" + }, + { + "Ref": "AWS::NoValue" + } + ] + }, + { + "Fn::If": [ + "DomainDNSServer3Condition", + { + "Ref": "DomainDNSServer3" + }, + { + "Ref": "AWS::NoValue" + } + ] + }, + { + "Fn::If": [ + "DomainDNSServer4Condition", + { + "Ref": "DomainDNSServer4" + }, + { + "Ref": "AWS::NoValue" + } + ] + } + ], + { + "Ref": "AWS::NoValue" + } + ] + } + } + }, + "Name": "JoinDomainAssociationTags" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT77 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT77 new file mode 100644 index 0000000..c46947c --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT77 @@ -0,0 +1,617 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/DirectoryServiceSettings/templates/DIRECTORY_SETTINGS.cfn.yaml" + ], + "timestamp": 1642972590600, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/DirectoryServiceSettings/templates/DIRECTORY_SETTINGS.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT77", + "status": "active", + "validate": true, + "resourceTypes": [ + "custom::directorysettingsresource", + "aws::logs::loggroup", + "aws::iam::role", + "aws::lambda::function", + "aws::sns::topic" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT77", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This templates updates the settings for an AD Connector or AWS Managed AD directory. Tasks accomplied, (1) enables directory monitoring (2) option to create a custom access url (alias) (3) option to enable SSO via directory services. Note, deleting the directory, will only remove directory monitoring, directory SSO or alias settings will not be touched.", + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "Directory Services Configuration" + }, + "Parameters": [ + "DirectoryID", + "DirectoryMonitoringEmail", + "DirectoryMonitoringSNSTopicKMSKey", + "EnableDirectorySSO", + "CreateDirectoryAlias", + "DirectoryAlias", + "CreateDirectoryConsoleDelegatedAccessRoles" + ] + }, + { + "Label": { + "default": "Lambda Function Configuration (Directory Settings Custom Resource)" + }, + "Parameters": [ + "LambdaFunctionName", + "LambdaS3BucketName", + "LambdaZipFileName", + "LambdaLogsLogGroupRetention", + "LambdaLogsCloudWatchKMSKey", + "LambdaLogLevel" + ] + } + ], + "ParameterLabels": { + "CreateDirectoryConsoleDelegatedAccessRoles": { + "default": "Create Directory Console Delegated Access Roles" + }, + "CreateDirectoryAlias": { + "default": "Create Directory Alias" + }, + "DirectoryAlias": { + "default": "Directory Alias" + }, + "DirectoryID": { + "default": "ID of the Directory (e.g., d-906764663a)" + }, + "DirectoryMonitoringEmail": { + "defaut": "Directory Monitoring Email" + }, + "DirectoryMonitoringSNSTopicKMSKey": { + "default": "SNS Topic KMS Key for Directory Monitoring messages" + }, + "EnableDirectorySSO": { + "default": "Enable Directory SSO" + }, + "LambdaFunctionName": { + "default": "Lambda Function Name" + }, + "LambdaLogLevel": { + "default": "Lambda Log Level" + }, + "LambdaLogsLogGroupRetention": { + "default": "CloudWatch log retention days for Lambda logs" + }, + "LambdaLogsCloudWatchKMSKey": { + "default": "CloudWatch Logs KMS Key for Lambda logs" + }, + "LambdaS3BucketName": { + "default": "Lambda S3 Bucket Name" + }, + "LambdaZipFileName": { + "default": "Lambda Zip File Name" + } + } + } + }, + "Parameters": { + "CreateDirectoryConsoleDelegatedAccessRoles": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Create sample IAM ROLES that can be used to delegate users/groups access to certain areas of the AWS Management Console. User/Group assignment to these IAM roles has to be done manually via Directory Services -> Directory -> Application Management Tab.", + "Type": "String" + }, + "CreateDirectoryAlias": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Create an alias for the directory. The alias is used to construct the access URL for the directory, such as http://.awsapps.com. NOTE, after an alias has been created, it cannot be deleted or reused. Hence if a different alias already exists, then you must use the existing alias (also shown in CloudFormation error).", + "Type": "String" + }, + "DirectoryAlias": { + "AllowedPattern": "^$|^(?!d-)([\\da-zA-Z]+)([-]*[\\da-zA-Z])*$", + "Description": "(Optional) Specifies an alias to be assigned to the directory, such as http://.awsapps.com. Note, after alias is created it cannot be deleted or reused. Note, will only be set, if `CreateDirectoryAlias` parameter, has a value of `Yes`.", + "MaxLength": 62, + "Type": "String" + }, + "DirectoryID": { + "AllowedPattern": "^d-[0-9a-f]{10}$", + "Description": "Directory ID that will have settings updated", + "Type": "String" + }, + "DirectoryMonitoringEmail": { + "AllowedPattern": "^[\\w%+.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,63}$", + "Description": "Email for SNS Topic to monitor directory changes.", + "Type": "String" + }, + "DirectoryMonitoringSNSTopicKMSKey": { + "AllowedPattern": "^$|^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "ConstraintDescription": "Key ID example: 1234abcd-12ab-34cd-56ef-1234567890ab", + "Description": "(Optional) KMS Key ID to use for encrypting the directory monitoring SNS topic messages. If empty, encryption is enabled with SNS managing the server-side encryption keys.", + "Type": "String" + }, + "EnableDirectorySSO": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Enable single sign-on for a directory. Single sign-on allows users in your directory to access certain AWS services from a computer joined to the directory without having to enter their credentials separately. If true, \"DirectoryAlias\" must also be true, & \"DirectoryAlias\" parameter input required.", + "Type": "String" + }, + "LambdaFunctionName": { + "AllowedPattern": "^[\\w-]{1,64}$", + "ConstraintDescription": "Max 64 alphanumeric characters. Also special characters supported [_, -]", + "Default": "CR-DirectorySettings", + "Description": "Lambda Function Name for Custom Resource", + "Type": "String" + }, + "LambdaLogLevel": { + "AllowedValues": [ + "INFO", + "DEBUG" + ], + "Default": "INFO", + "Description": "Lambda logging level", + "Type": "String" + }, + "LambdaLogsLogGroupRetention": { + "AllowedValues": [ + 1, + 3, + 5, + 7, + 14, + 30, + 60, + 90, + 120, + 150, + 180, + 365, + 400, + 545, + 731, + 1827, + 3653 + ], + "Default": 14, + "Description": "Specifies the number of days you want to retain Lambda log events in the CloudWatch Logs", + "Type": "String" + }, + "LambdaLogsCloudWatchKMSKey": { + "AllowedPattern": "^$|^arn:(aws[a-zA-Z-]*)?:kms:[a-z0-9-]+:\\d{12}:key\\/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "ConstraintDescription": "Key ARN example: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", + "Description": "(Optional) KMS Key ARN to use for encrypting the Lambda logs data. If empty, encryption is enabled with CloudWatch Logs managing the server-side encryption keys.", + "Type": "String" + }, + "LambdaS3BucketName": { + "AllowedPattern": "(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "Lambda S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Description": "Lambda S3 bucket name for the Lambda deployment package. Lambda bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Type": "String" + }, + "LambdaZipFileName": { + "Default": "directory_settings_custom_resource.zip", + "Description": "Amazon S3 key of the deployment package.", + "MaxLength": 1024, + "MinLength": 1, + "Type": "String" + } + }, + "Rules": { + "CreateDirectoryAlias": { + "RuleCondition": { + "Fn::Equals": [ + { + "Ref": "CreateDirectoryAlias" + }, + "Yes" + ] + }, + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "DirectoryAlias" + }, + "" + ] + } + ] + }, + "AssertDescription": "To create directory alias, the parameter, `DirectoryAlias` must be set" + } + ] + }, + "EnableDirectorySSO": { + "RuleCondition": { + "Fn::Equals": [ + { + "Ref": "EnableDirectorySSO" + }, + "Yes" + ] + }, + "Assertions": [ + { + "Assert": { + "Fn::Equals": [ + { + "Ref": "CreateDirectoryAlias" + }, + "Yes" + ] + }, + "AssertDescription": "To enable directory SSO, the parameter, `CreateDirectoryAlias` must be set to `Yes`" + } + ] + } + }, + "Conditions": { + "DirectoryConsoleDelegatedAccessRolesCondition": { + "Fn::Equals": [ + { + "Ref": "CreateDirectoryConsoleDelegatedAccessRoles" + }, + "Yes" + ] + }, + "DirectoryMonitoringSNSTopicKMSKeyCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "DirectoryMonitoringSNSTopicKMSKey" + }, + "" + ] + } + ] + }, + "LambdaLogsCloudWatchKMSKeyCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "LambdaLogsCloudWatchKMSKey" + }, + "" + ] + } + ] + } + }, + "Resources": [ + { + "Condition": "DirectoryConsoleDelegatedAccessRolesCondition", + "Type": "AWS::IAM::Role", + "Properties": { + "Description": "IAM Role for Directory Service 'AWS Management Console' Delegated Access for \"EC2 ReadOnly\"", + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ds.amazonaws.com" + ] + }, + "Action": "sts:AssumeRole" + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/AmazonEC2ReadOnlyAccess" + } + ], + "Path": "/", + "Tags": [ + { + "Key": "StackName", + "Value": { + "Ref": "AWS::StackName" + } + } + ] + }, + "Name": "DirectoryConsoleDelegatedAccessEC2ReadOnlyRole" + }, + { + "Condition": "DirectoryConsoleDelegatedAccessRolesCondition", + "Type": "AWS::IAM::Role", + "Properties": { + "Description": "IAM Role for Directory Service 'AWS Management Console' Delegated Access for \"Security Audit\"", + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ds.amazonaws.com" + ] + }, + "Action": "sts:AssumeRole" + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/SecurityAudit" + } + ], + "Path": "/", + "Tags": [ + { + "Key": "StackName", + "Value": { + "Ref": "AWS::StackName" + } + } + ] + }, + "Name": "DirectoryConsoleDelegatedAccessSecurityAuditRole" + }, + { + "Type": "AWS::SNS::Topic", + "Properties": { + "KmsMasterKeyId": { + "Ref": "DirectoryMonitoringSNSTopicKMSKey" + }, + "Subscription": [ + { + "Endpoint": { + "Ref": "DirectoryMonitoringEmail" + }, + "Protocol": "email" + } + ], + "Tags": [ + { + "Key": "StackName", + "Value": { + "Ref": "AWS::StackName" + } + }, + { + "Key": "DirectoryID", + "Value": { + "Ref": "DirectoryID" + } + } + ] + }, + "Name": "DirectoryMonitoringTopic" + }, + { + "Type": "AWS::Lambda::Function", + "Metadata": { + "cfn_nag": { + "rules_to_suppress": [ + { + "id": "W58", + "reason": "Permissions to write to CloudWatch Logs provided by the attached IAM role" + } + ] + } + }, + "Properties": { + "FunctionName": "CR-DirectorySettings", + "Handler": "directory_settings_custom_resource.lambda_handler", + "Role": { + "Fn::GetAtt": [ + "DirectorySettingsLambdaRole", + "Arn" + ] + }, + "Runtime": "python3.8", + "MemorySize": 128, + "Timeout": 120, + "Environment": { + "Variables": { + "LOG_LEVEL": "INFO" + } + }, + "Code": { + "S3Bucket": { + "Ref": "LambdaS3BucketName" + }, + "S3Key": "directory_settings_custom_resource.zip" + } + }, + "Name": "DirectorySettingsLambdaFunction" + }, + { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Sub": "/aws/lambda/${LambdaFunctionName}" + }, + "RetentionInDays": 14, + "KmsKeyId": { + "Ref": "LambdaLogsCloudWatchKMSKey" + } + }, + "Name": "DirectorySettingsLambdaLogsLogGroup" + }, + { + "Type": "AWS::IAM::Role", + "Metadata": { + "cfn_nag": { + "rules_to_suppress": [ + { + "id": "W11", + "reason": "Allow * in resource when required" + }, + { + "id": "W28", + "reason": "The role name is defined to identify automation resources" + } + ] + } + }, + "Properties": { + "RoleName": { + "Fn::Sub": "${LambdaFunctionName}-LambdaRole" + }, + "Description": { + "Fn::Sub": "Rights to Setup Directory Settings for Directory ID, ${DirectoryID}" + }, + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "sts:AssumeRole", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + } + } + ] + }, + "Path": "/", + "Tags": [ + { + "Key": "StackName", + "Value": { + "Ref": "AWS::StackName" + } + } + ], + "Policies": [ + { + "PolicyName": "CloudWatchLogGroup", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CreateLogGroup", + "Effect": "Allow", + "Action": "logs:CreateLogGroup", + "Resource": { + "Fn::Sub": "arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:${DirectorySettingsLambdaLogsLogGroup}" + } + }, + { + "Sid": "CreateLogStreamAndEvents", + "Effect": "Allow", + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": { + "Fn::Sub": "arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:${DirectorySettingsLambdaLogsLogGroup}:log-stream:*" + } + } + ] + } + }, + { + "PolicyName": "DirectorySettings", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "SnsTopic", + "Effect": "Allow", + "Action": [ + "ds:RegisterEventTopic", + "ds:DeregisterEventTopic", + "ds:DescribeEventTopics" + ], + "Resource": { + "Fn::Sub": "arn:${AWS::Partition}:ds:${AWS::Region}:${AWS::AccountId}:directory/${DirectoryID}" + } + }, + { + "Sid": "DescribeDirectories", + "Effect": "Allow", + "Action": "ds:DescribeDirectories", + "Resource": "*" + }, + { + "Sid": "AliasSso", + "Effect": "Allow", + "Action": [ + "ds:CreateAlias", + "ds:EnableSso", + "ds:DisableSso" + ], + "Resource": { + "Fn::Sub": "arn:${AWS::Partition}:ds:${AWS::Region}:${AWS::AccountId}:directory/${DirectoryID}" + } + } + ] + } + } + ] + }, + "Name": "DirectorySettingsLambdaRole" + }, + { + "Type": "Custom::DirectorySettingsResource", + "Version": "1.0", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "DirectorySettingsLambdaFunction", + "Arn" + ] + }, + "DirectoryId": { + "Ref": "DirectoryID" + }, + "CreateDirectoryAlias": "No", + "EnableDirectorySSO": "No", + "DirectoryAlias": { + "Ref": "DirectoryAlias" + }, + "DirectoryMonitoringTopicName": { + "Fn::GetAtt": [ + "DirectoryMonitoringTopic", + "TopicName" + ] + } + }, + "Name": "DirectorySettingsResource" + } + ], + "Outputs": { + "DirectoryAliasUrl": { + "Description": "Directory Alias", + "Value": { + "Fn::GetAtt": [ + "DirectorySettingsResource", + "AliasUrl" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT78 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT78 new file mode 100644 index 0000000..ca40694 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT78 @@ -0,0 +1,284 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/EC2DomainJoin/EC2-Domain-Join.json" + ], + "timestamp": 1642972590605, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/EC2DomainJoin/EC2-Domain-Join.json" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT78", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::iam::instanceprofile", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ssm::document" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT78", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Join Windows instance to AWS-Active Directory or Microsoft AD (no powershell). Create SSM document, IAM Role, SSM doc and EC2 Instance. Attaches EC2 instance to AD. Will need to use Domain Logins to RDP in.", + "Parameters": { + "AMI": { + "Type": "String", + "Description": "Windows 2016 AMI available in your region" + }, + "KeyPair": { + "Type": "AWS::EC2::KeyPair::KeyName", + "Description": "KeyPair for EC2 Instance" + }, + "PublicSubnet": { + "Type": "AWS::EC2::Subnet::Id", + "Description": "Subnet to place instance in" + }, + "VPC": { + "Type": "AWS::EC2::VPC::Id", + "Description": "VPC to place instance in" + }, + "InstanceType": { + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.micro", + "t2.small", + "t2.medium", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "Must be a valid EC2 instance type." + }, + "ADDirectoryId": { + "Type": "String", + "Description": "Active DirectoryId. Eg. d-12345679a" + }, + "ADDirectoryName": { + "Type": "String", + "Description": "Active Directory Name. Eg. my.ad.com" + }, + "ADDnsIpAddresses1": { + "Type": "String", + "Description": "Active Directory DNS 1. Eg. 10.0.0.142" + }, + "ADDnsIpAddresses2": { + "Type": "String", + "Description": "Active Directory DNS 2. Eg. 10.0.0.143" + } + }, + "Resources": [ + { + "Type": "AWS::SSM::Document", + "Properties": { + "Content": { + "schemaVersion": "1.2", + "description": "Join instances to an AWS Directory Service domain.", + "parameters": { + "directoryId": { + "type": "String", + "description": "(Required) The ID of the AWS Directory Service directory." + }, + "directoryName": { + "type": "String", + "description": "(Required) The name of the directory; for example, test.example.com" + }, + "dnsIpAddresses": { + "type": "StringList", + "default": [], + "description": "(Optional) The IP addresses of the DNS servers in the directory. Required when DHCP is not configured. Learn more at http://docs.aws.amazon.com/directoryservice/latest/simple-ad/join_get_dns_addresses.html", + "allowedPattern": "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" + } + }, + "runtimeConfig": { + "aws:domainJoin": { + "properties": { + "directoryId": "{{ directoryId }}", + "directoryName": "{{ directoryName }}", + "dnsIpAddresses": "{{ dnsIpAddresses }}" + } + } + } + } + }, + "Name": "myssmdocument" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "IamInstanceProfile": { + "Ref": "myInstanceProfile" + }, + "SsmAssociations": [ + { + "DocumentName": { + "Ref": "myssmdocument" + }, + "AssociationParameters": [ + { + "Key": "directoryId", + "Value": [ + { + "Ref": "ADDirectoryId" + } + ] + }, + { + "Key": "directoryName", + "Value": [ + { + "Ref": "ADDirectoryName" + } + ] + }, + { + "Key": "dnsIpAddresses", + "Value": [ + { + "Ref": "ADDnsIpAddresses1" + }, + { + "Ref": "ADDnsIpAddresses2" + } + ] + } + ] + } + ], + "KeyName": { + "Ref": "KeyPair" + }, + "ImageId": { + "Ref": "AMI" + }, + "InstanceType": "t2.small", + "Tags": [ + { + "Key": "Name", + "Value": "myEC2InstanceSSM" + } + ], + "SubnetId": { + "Ref": "PublicSubnet" + }, + "SecurityGroupIds": [ + { + "Fn::GetAtt": [ + "InstanceSecurityGroup", + "GroupId" + ] + } + ] + }, + "Name": "myEC2InstanceSSM" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Roles": [ + "DemoEC2SSMRole" + ], + "InstanceProfileName": "myEC2SSMRole" + }, + "Name": "myInstanceProfile" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM" + ], + "RoleName": "DemoEC2SSMRole" + }, + "Name": "myEC2SSMRole" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Allow http to client host", + "VpcId": { + "Ref": "VPC" + }, + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "3389", + "ToPort": "3389", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT79 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT79 new file mode 100644 index 0000000..d59a806 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT79 @@ -0,0 +1,297 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/HelperNonAmaznAmi/RHEL7_cfn-hup.template" + ], + "timestamp": 1642972590610, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/HelperNonAmaznAmi/RHEL7_cfn-hup.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT79", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT79", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Installing Cloudformation helper scripts in RHEL 7", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "AWSRegionAMIEC2": { + "us-east-1": { + "RHEL7": "ami-9e2f0988" + }, + "us-west-2": { + "RHEL7": "ami-b55a51cc" + }, + "us-west-1": { + "RHEL7": "ami-e69ebc86" + }, + "eu-west-1": { + "RHEL7": "ami-f1978897" + }, + "eu-central-1": { + "RHEL7": "ami-0e258161" + }, + "ap-northeast-1": { + "RHEL7": "ami-5c9a933b" + }, + "ap-southeast-1": { + "RHEL7": "ami-cb981aa8" + }, + "ap-southeast-2": { + "RHEL7": "ami-9a3322f9" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT7M", + "Count": "1" + } + }, + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_and_enable_cfn_hup" + ] + }, + "install_and_enable_cfn_hup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + }, + "/lib/systemd/system/cfn-hup.service": { + "content": "[Unit]\nDescription=cfn-hup daemon\n\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n\n[Install]\nWantedBy=multi-user.target" + } + }, + "commands": { + "01enable_cfn_hup": { + "command": "systemctl enable cfn-hup.service" + }, + "02start_cfn_hup": { + "command": "systemctl start cfn-hup.service" + } + } + } + } + }, + "Properties": { + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionAMIEC2", + { + "Ref": "AWS::Region" + }, + "RHEL7" + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y\n", + "yum install -y python-setuptools\n", + "yum install -y wget\n", + "mkdir -p /opt/aws/bin\n", + "wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", + "easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-latest.tar.gz\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT8 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT8 new file mode 100644 index 0000000..502e3d0 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT8 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/Public-and-Private-Subnet-per-AZ/Create-Macro.yaml" + ], + "timestamp": 1642972590300, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/Public-and-Private-Subnet-per-AZ/Create-Macro.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT8", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::lambda::permission", + "aws::cloudformation::macro", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT8", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Create Macro Template", + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "logs:*" + ], + "Resource": "arn:aws:logs:*:*:*" + }, + { + "Effect": "Allow", + "Action": [ + "ec2:*" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "TransformExecutionRole" + }, + { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "TransformFunction", + "Arn" + ] + }, + "Principal": "cloudformation.amazonaws.com" + }, + "Name": "TransformFunctionPermissions" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "import boto3\nimport copy\n\ndef handler(event, context):\n\n # Globals\n region = event['region']\n accountId = event['accountId']\n fragment = event['fragment']\n transformId = event['transformId']\n params = event['params']\n requestId = event['requestId']\n templateParameterValues = event['templateParameterValues']\n\n ec2 = boto3.client('ec2', region_name=region)\n\n # Retrieves availability zones for this region\n response = ec2.describe_availability_zones()\n AZs = response['AvailabilityZones']\n\n #Grab resources that need to be duplicated\n VPCPubSn1 = fragment['Resources']['VPCPubSn1']\n VPCPrivSn1 = fragment['Resources']['VPCPrivSn1']\n PubSnRtAssoc1 = fragment['Resources']['VPCPubSn1RtAssoc']\n PubSnRtAssoc1 = fragment['Resources']['VPCPrivSn1RtAssoc']\n\n #iterate and add new resources\n for i in range(1,len(AZs)+1): # Create a range from 1 - total number of AZs\n if not i == 1: # Only add resources if there is more than 1 AZ\n\n # Create new Public Subnet based of VPCPubSN1\n fragment['Resources']['VPCPubSn' + str(i)] = copy.deepcopy(VPCPubSn1)\n fragment['Resources']['VPCPubSn' + str(i)]['Properties']['CidrBlock']['Fn::Select'][0] = i - 1\n fragment['Resources']['VPCPubSn' + str(i)]['Properties']['AvailabilityZone']['Fn::Select'][0] = str(i - 1)\n\n # Create new Private Subnet based of VPCPrivSN1\n fragment['Resources']['VPCPrivSn' + str(i)] = copy.deepcopy(VPCPrivSn1)\n fragment['Resources']['VPCPrivSn' + str(i)]['Properties']['CidrBlock']['Fn::Select'][0] = len(AZs) + i - 1\n fragment['Resources']['VPCPrivSn' + str(i)]['Properties']['AvailabilityZone']['Fn::Select'][0] = str(i - 1)\n\n # Create Public RT Association\n fragment['Resources']['VPCPubSn' + str(i) + 'RtAssoc'] = {}\n fragment['Resources']['VPCPubSn' + str(i) + 'RtAssoc']['Type'] = 'AWS::EC2::SubnetRouteTableAssociation'\n fragment['Resources']['VPCPubSn' + str(i) + 'RtAssoc']['Properties'] = {}\n fragment['Resources']['VPCPubSn' + str(i) + 'RtAssoc']['Properties']['RouteTableId'] = {}\n fragment['Resources']['VPCPubSn' + str(i) + 'RtAssoc']['Properties']['RouteTableId']['Ref'] = 'VPCPubRt1'\n fragment['Resources']['VPCPubSn' + str(i) + 'RtAssoc']['Properties']['SubnetId'] = {}\n fragment['Resources']['VPCPubSn' + str(i) + 'RtAssoc']['Properties']['SubnetId']['Ref'] = 'VPCPubSn' + str(i)\n\n # Create Private RT Association\n fragment['Resources']['VPCPrivSn' + str(i) + 'RtAssoc'] = {}\n fragment['Resources']['VPCPrivSn' + str(i) + 'RtAssoc']['Type'] = 'AWS::EC2::SubnetRouteTableAssociation'\n fragment['Resources']['VPCPrivSn' + str(i) + 'RtAssoc']['Properties'] = {}\n fragment['Resources']['VPCPrivSn' + str(i) + 'RtAssoc']['Properties']['RouteTableId'] = {}\n fragment['Resources']['VPCPrivSn' + str(i) + 'RtAssoc']['Properties']['RouteTableId']['Ref'] = 'VPCPrivRt1'\n fragment['Resources']['VPCPrivSn' + str(i) + 'RtAssoc']['Properties']['SubnetId'] = {}\n fragment['Resources']['VPCPrivSn' + str(i) + 'RtAssoc']['Properties']['SubnetId']['Ref'] = 'VPCPrivSn' + str(i)\n\n r = {}\n r['requestId'] = requestId\n r['status'] = 'SUCCESS'\n r['fragment'] = fragment\n\n return r\n" + }, + "Handler": "index.handler", + "Runtime": "python3.6", + "Timeout": "60", + "Role": { + "Fn::GetAtt": [ + "TransformExecutionRole", + "Arn" + ] + } + }, + "Name": "TransformFunction" + }, + { + "Type": "AWS::CloudFormation::Macro", + "Properties": { + "Name": "CreateSubnetsPerAZ", + "Description": "Macro to create Subnets for every available AZ", + "FunctionName": { + "Fn::GetAtt": [ + "TransformFunction", + "Arn" + ] + } + }, + "Name": "Transform" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT80 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT80 new file mode 100644 index 0000000..51cec9f --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT80 @@ -0,0 +1,296 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/HelperNonAmaznAmi/ubuntu16.04LTS_cfn-hup.template" + ], + "timestamp": 1642972590614, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/HelperNonAmaznAmi/ubuntu16.04LTS_cfn-hup.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT80", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT80", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Installing Cloudformation helper scripts in Ubuntu 16.04 LTS", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "AWSRegionAMIEC2": { + "us-east-1": { + "Ubuntu16": "ami-d15a75c7" + }, + "us-west-2": { + "Ubuntu16": "ami-746aba14" + }, + "us-west-1": { + "Ubuntu16": "ami-a9a8e4c9" + }, + "eu-west-1": { + "Ubuntu16": "ami-844e0bf7" + }, + "eu-central-1": { + "Ubuntu16": "ami-a9a557c6" + }, + "ap-northeast-1": { + "Ubuntu16": "ami-d82efcb9" + }, + "ap-southeast-1": { + "Ubuntu16": "ami-d554f1b6" + }, + "ap-southeast-2": { + "Ubuntu16": "ami-0bc1f168" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT7M", + "Count": "1" + } + }, + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_and_enable_cfn_hup" + ] + }, + "install_and_enable_cfn_hup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + }, + "/lib/systemd/system/cfn-hup.service": { + "content": "[Unit]\nDescription=cfn-hup daemon\n\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n\n[Install]\nWantedBy=multi-user.target" + } + }, + "commands": { + "01enable_cfn_hup": { + "command": "systemctl enable cfn-hup.service" + }, + "02start_cfn_hup": { + "command": "systemctl start cfn-hup.service" + } + } + } + } + }, + "Properties": { + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionAMIEC2", + { + "Ref": "AWS::Region" + }, + "Ubuntu16" + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "apt-get update -y\n", + "apt-get install -y python-setuptools\n", + "mkdir -p /opt/aws/bin\n", + "wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", + "python -m easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-latest.tar.gz\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT81 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT81 new file mode 100644 index 0000000..3cbb69b --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT81 @@ -0,0 +1,537 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/LambaStaticIP/lambda-static.cfn.yaml" + ], + "timestamp": 1642972590619, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/LambaStaticIP/lambda-static.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT81", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::vpcgatewayattachment", + "aws::ec2::internetgateway", + "aws::lambda::function", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::natgateway", + "aws::ec2::eip" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT81", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "A stack for deploying a simple lambda function that has a static outbound (egress) IP Address", + "Parameters": { + "ModuleName": { + "Type": "String", + "Default": "index" + } + }, + "Mappings": { + "SubnetConfig": { + "VPC": { + "CIDR": "10.0.0.0/25" + }, + "PublicOne": { + "CIDR": "10.0.0.0/28" + }, + "PublicTwo": { + "CIDR": "10.0.0.16/28" + }, + "PrivateOne": { + "CIDR": "10.0.0.32/28" + }, + "PrivateTwo": { + "CIDR": "10.0.0.64/28" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "EnableDnsSupport": true, + "EnableDnsHostnames": true, + "CidrBlock": "10.0.0.0/25" + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": { + "Ref": "AWS::Region" + } + } + ] + }, + "VpcId": { + "Ref": "VPC" + }, + "CidrBlock": "10.0.0.0/28" + }, + "Name": "PublicSubnetOne" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": { + "Ref": "AWS::Region" + } + } + ] + }, + "VpcId": { + "Ref": "VPC" + }, + "CidrBlock": "10.0.0.16/28" + }, + "Name": "PublicSubnetTwo" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": { + "Ref": "AWS::Region" + } + } + ] + }, + "VpcId": { + "Ref": "VPC" + }, + "CidrBlock": "10.0.0.32/28" + }, + "Name": "PrivateSubnetOne" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": { + "Ref": "AWS::Region" + } + } + ] + }, + "VpcId": { + "Ref": "VPC" + }, + "CidrBlock": "10.0.0.64/28" + }, + "Name": "PrivateSubnetTwo" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Name": "InternetGateway" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "InternetGatewayId": { + "Ref": "InternetGateway" + } + }, + "Name": "GatewayAttachement" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PublicRouteTable" + }, + { + "Type": "AWS::EC2::Route", + "DependsOn": "GatewayAttachement", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + } + }, + "Name": "PublicRoute" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "SubnetId": { + "Ref": "PublicSubnetOne" + }, + "RouteTableId": { + "Ref": "PublicRouteTable" + } + }, + "Name": "PublicSubnetOneRouteTableAssociation" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "SubnetId": { + "Ref": "PublicSubnetTwo" + }, + "RouteTableId": { + "Ref": "PublicRouteTable" + } + }, + "Name": "PublicSubnetTwoRouteTableAssociation" + }, + { + "Type": "AWS::EC2::EIP", + "DependsOn": "GatewayAttachement", + "Properties": { + "Domain": "vpc" + }, + "Name": "NatGatewayOneAttachment" + }, + { + "Type": "AWS::EC2::EIP", + "DependsOn": "GatewayAttachement", + "Properties": { + "Domain": "vpc" + }, + "Name": "NatGatewayTwoAttachment" + }, + { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "NatGatewayOneAttachment", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "PublicSubnetOne" + } + }, + "Name": "NatGatewayOne" + }, + { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "NatGatewayTwoAttachment", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "PublicSubnetTwo" + } + }, + "Name": "NatGatewayTwo" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PrivateRouteTableOne" + }, + { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTableOne" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "NatGatewayOne" + } + }, + "Name": "PrivateRouteOne" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTableOne" + }, + "SubnetId": { + "Ref": "PrivateSubnetOne" + } + }, + "Name": "PrivateRouteTableOneAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PrivateRouteTableTwo" + }, + { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTableTwo" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "NatGatewayTwo" + } + }, + "Name": "PrivateRouteTwo" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTableTwo" + }, + "SubnetId": { + "Ref": "PrivateSubnetTwo" + } + }, + "Name": "PrivateRouteTableTwoAssociation" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "ManagedPolicyArns": [ + "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ], + "Path": "/", + "Policies": [ + { + "PolicyName": "EC2Permissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "ec2:DescribeNetworkInterfaces", + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": "ec2:CreateNetworkInterface", + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": "ec2:DeleteNetworkInterface", + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": "ec2:DescribeInstances", + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": "ec2:AttachNetworkInterface", + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "LambdaRole" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "FunctionName": "StaticExternalIp", + "Description": "Lambda Function with code to call an external service", + "Code": { + "ZipFile": { + "Fn::Sub": "const https = require('https');\n\nexports.handler = async (event) => {\n const url = 'https://api.ipify.org';\n let data = \"\";\n\n return new Promise((resolve) => {\n https.get(url, res => {\n\n res.on('data', chunk => { data += chunk }) \n\n res.on('end', () => {\n resolve(data);\n })\n }) \n })\n};\n" + } + }, + "Handler": { + "Fn::Sub": "${ModuleName}.handler" + }, + "Runtime": "nodejs12.x", + "Timeout": 300, + "Role": { + "Fn::GetAtt": [ + "LambdaRole", + "Arn" + ] + }, + "VpcConfig": { + "SecurityGroupIds": [ + { + "Fn::GetAtt": [ + "VPC", + "DefaultSecurityGroup" + ] + } + ], + "SubnetIds": [ + { + "Ref": "PrivateSubnetOne" + }, + { + "Ref": "PrivateSubnetTwo" + } + ] + }, + "Environment": { + "Variables": { + "Logging": "Debug" + } + } + }, + "Name": "LambdaFunction" + } + ], + "Outputs": { + "VPCId": { + "Description": "The ID of the VPC that this stack is deployed in", + "Value": { + "Ref": "VPC" + }, + "Export": { + "Name": { + "Fn::Join": [ + ":", + [ + { + "Ref": "AWS::StackName" + }, + "VPCId" + ] + ] + } + } + }, + "PublicSubnetOne": { + "Description": "Public subnet one", + "Value": { + "Ref": "PublicSubnetOne" + }, + "Export": { + "Name": { + "Fn::Join": [ + ":", + [ + { + "Ref": "AWS::StackName" + }, + "PublicSubnetOne" + ] + ] + } + } + }, + "PublicSubnetTwo": { + "Description": "Public subnet two", + "Value": { + "Ref": "PublicSubnetTwo" + }, + "Export": { + "Name": { + "Fn::Join": [ + ":", + [ + { + "Ref": "AWS::StackName" + }, + "PublicSubnetTwo" + ] + ] + } + } + }, + "PrivateSubnetOne": { + "Description": "Private subnet one", + "Value": { + "Ref": "PrivateSubnetOne" + }, + "Export": { + "Name": { + "Fn::Join": [ + ":", + [ + { + "Ref": "AWS::StackName" + }, + "PrivateSubnetOne" + ] + ] + } + } + }, + "PrivateSubnetTwo": { + "Description": "Private subnet two", + "Value": { + "Ref": "PrivateSubnetTwo" + }, + "Export": { + "Name": { + "Fn::Join": [ + ":", + [ + { + "Ref": "AWS::StackName" + }, + "PrivateSubnetTwo" + ] + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT82 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT82 new file mode 100644 index 0000000..8c93da9 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT82 @@ -0,0 +1,208 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/lambda-backed-cloudformation-custom-resources/get_vpc_main_route_table_id/RouteTable.template" + ], + "timestamp": 1642972590624, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/lambda-backed-cloudformation-custom-resources/get_vpc_main_route_table_id/RouteTable.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT82", + "status": "active", + "validate": true, + "resourceTypes": [ + "custom::routetablelambda", + "aws::ec2::vpc", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::lambda::function", + "aws::ec2::vpcgatewayattachment" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT82", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Template to add routes to default/main routetable of VPC", + "Parameters": { + "Bucket": { + "Type": "String", + "Description": "Bucket name where files are stored" + }, + "Key": { + "Type": "String", + "Description": "Zip file name", + "Default": "Routetable.zip" + }, + "Lambdahandler": { + "Type": "String", + "Description": "Name of the python file(lambda handler)", + "Default": "Routetable" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "Tags": [ + { + "Key": "Env", + "Value": "Test" + } + ] + }, + "Name": "MyVPC" + }, + { + "Type": "AWS::IAM::Role", + "DependsOn": "MyVPC", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ec2:Describe*" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": "arn:aws:logs:*:*:*" + } + ] + } + } + ] + }, + "Name": "LambdaIAMRole" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Handler": { + "Fn::Sub": "${Lambdahandler}.lambda_handler" + }, + "Role": { + "Fn::GetAtt": [ + "LambdaIAMRole", + "Arn" + ] + }, + "Code": { + "S3Bucket": { + "Ref": "Bucket" + }, + "S3Key": "Routetable.zip" + }, + "Runtime": "python3.6", + "Timeout": 50 + }, + "Name": "LambdaFunction" + }, + { + "Type": "Custom::RouteTableLambda", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "LambdaFunction", + "Arn" + ] + }, + "VPCID": { + "Ref": "MyVPC" + } + }, + "Name": "Lambdatrigger" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Env", + "Value": "Test" + } + ] + }, + "Name": "MyInternetGateway" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "MyVPC" + }, + "InternetGatewayId": { + "Ref": "MyInternetGateway" + } + }, + "Name": "AttachGateway" + }, + { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Fn::GetAtt": [ + "Lambdatrigger", + "RoutetableID" + ] + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "MyInternetGateway" + } + }, + "Name": "MyRoute" + } + ], + "Outputs": { + "RouteTableID": { + "Value": { + "Fn::GetAtt": [ + "Lambdatrigger", + "RoutetableID" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT83 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT83 new file mode 100644 index 0000000..e2c485b --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT83 @@ -0,0 +1,739 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/ManagedAD/templates/MANAGEDAD.cfn.yaml" + ], + "timestamp": 1642972590628, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/ManagedAD/templates/MANAGEDAD.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT83", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::directoryservice::microsoftad", + "aws::ec2::vpcdhcpoptionsassociation", + "aws::iam::instanceprofile", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::secretsmanager::secret", + "aws::ec2::dhcpoptions" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT83", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This templates creates an AWS Managed Microsoft AD directory. Tasks accomplished, (1) create AWS Managed Microsoft AD directory (2) option to create seamless domain join resources for Windows & Linux EC2 instances (3) option to create a domain members security group that allows all PrivateIP communications inbound (4) option to create DHCPOptionSet pointing to AWS Managed Microsoft AD DNS servers", + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": "Network Configuration", + "Parameters": [ + "VPCID", + "PrivateSubnet1ID", + "PrivateSubnet2ID", + "CreateDomainMembersSG", + "CreateDHCPOptionSet" + ] + }, + { + "Label": { + "default": "AWS Managed Microsoft AD Configuration" + }, + "Parameters": [ + "AWSManagedADAdminPassword", + "AWSManagedADDomainDNSName", + "AWSManagedADDomainNetBiosName", + "AWSManagedADEdition", + "SecretsManagerDomainCredentialsSecretsKMSKey", + "CreateWindowsEC2DomainJoinResources", + "CreateLinuxEC2DomainJoinResources", + "SSMLogsBucketName" + ] + } + ], + "ParameterLabels": { + "AWSManagedADAdminPassword": { + "default": "AWS Managed Microsoft AD Admin Password" + }, + "AWSManagedADDomainDNSName": { + "default": "AWS Managed Microsoft AD Domain DNS Name" + }, + "AWSManagedADDomainNetBiosName": { + "default": "AWS Managed Microsoft AD Domain NetBIOS Name" + }, + "AWSManagedADEdition": { + "default": "AWS Managed Microsoft AD Edition" + }, + "CreateDHCPOptionSet": { + "default": "Create DHCP Option Set" + }, + "CreateDomainMembersSG": { + "default": "Create Domain Members Security Group" + }, + "CreateLinuxEC2DomainJoinResources": { + "default": "Create AWS resources to support seamless domain join Linux EC2 instances" + }, + "CreateWindowsEC2DomainJoinResources": { + "default": "Create AWS resources to support seamless domain join Windows EC2 instances" + }, + "PrivateSubnet1ID": { + "default": "Private Subnet 1 ID" + }, + "PrivateSubnet2ID": { + "default": "Private Subnet 2 ID" + }, + "SecretsManagerDomainCredentialsSecretsKMSKey": { + "default": "Secrets Manager KMS Key for domain credentials secret" + }, + "SSMLogsBucketName": { + "default": "Systems Manager (SSM) Logs Bucket Name" + }, + "VPCID": { + "default": "VPC ID" + } + } + } + }, + "Parameters": { + "AWSManagedADDomainDNSName": { + "AllowedPattern": "[a-zA-Z0-9-]+\\..+", + "Default": "awsmad.lab", + "Description": "Fully qualified domain name for the AWS Managed Microsoft AD directory, such as corp.example.com.", + "Type": "String" + }, + "AWSManagedADDomainNetBiosName": { + "AllowedPattern": "[a-zA-Z0-9-]+", + "Default": "AWSMAD", + "Description": "NetBIOS name for your domain, such as CORP.", + "MaxLength": 15, + "MinLength": 1, + "Type": "String" + }, + "AWSManagedADAdminPassword": { + "AllowedPattern": "(?=^.{6,255}$)((?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*", + "Description": "Password for the default administrative user named Admin. 8-64 characters, and must match at least 3 of the 4. (1) lowercase letters (2) Uppercase letters (3) numbers (4) non-alphanumeric characters \"~!@#$%^&*_-+=`|\\(){}[]:;\"'<>,.?/\"", + "NoEcho": true, + "Type": "String" + }, + "AWSManagedADEdition": { + "AllowedValues": [ + "Standard", + "Enterprise" + ], + "Default": "Standard", + "Description": "AWS Managed AD Edition. Standard supports up to 30,000+ directory objects. Enterprise supports up to 500,000+ directory objects.", + "Type": "String" + }, + "CreateDHCPOptionSet": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Create DHCP Option Set", + "Type": "String" + }, + "CreateDomainMembersSG": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Create Domain Members Security Group. Note, using allow any type rules, restrict accordingly.", + "Type": "String" + }, + "CreateLinuxEC2DomainJoinResources": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Create AWS resources (IAM role, instance profile, & secret) to support seamless domain join Linux EC2 instances", + "Type": "String" + }, + "CreateWindowsEC2DomainJoinResources": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Create AWS resources (IAM role & instnace profile)to support seamless domain join Windows EC2 instances", + "Type": "String" + }, + "PrivateSubnet1ID": { + "Description": "ID of the private subnet 1 in Availability Zone 1 (e.g., subnet-a0246dcd)", + "Type": "AWS::EC2::Subnet::Id" + }, + "PrivateSubnet2ID": { + "Description": "ID of the private subnet 2 in Availability Zone 2 (e.g., subnet-a0246dcd)", + "Type": "AWS::EC2::Subnet::Id" + }, + "SecretsManagerDomainCredentialsSecretsKMSKey": { + "AllowedPattern": "^$|^arn:(aws[a-zA-Z-]*){1}:kms:[a-z0-9-]+:\\d{12}:key\\/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "ConstraintDescription": "Key ARN example: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", + "Default": "", + "Description": "(Optional) KMS Key ARN to use for encrypting the SecretsManager domain credentials secret. If empty, encryption is enabled with SecretsManager managing the server-side encryption keys.", + "Type": "String" + }, + "SSMLogsBucketName": { + "AllowedPattern": "^$|(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "SSM Logs bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Default": "", + "Description": "(Optional) SSM Logs bucket name for where Systems Manager logs should store log files. SSM Logs bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Type": "String" + }, + "VPCID": { + "Description": "ID of the VPC (e.g., vpc-0343606e)", + "Type": "AWS::EC2::VPC::Id" + } + }, + "Conditions": { + "DHCPOptionSetCondition": { + "Fn::Equals": [ + { + "Ref": "CreateDHCPOptionSet" + }, + "Yes" + ] + }, + "DomainMembersSGCondition": { + "Fn::Equals": [ + { + "Ref": "CreateDomainMembersSG" + }, + "Yes" + ] + }, + "LinuxEC2DomainJoinResourcesCondition": { + "Fn::Equals": [ + { + "Ref": "CreateLinuxEC2DomainJoinResources" + }, + "Yes" + ] + }, + "SecretsManagerDomainCredentialsSecretsKMSKeyCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "SecretsManagerDomainCredentialsSecretsKMSKey" + }, + "" + ] + } + ] + }, + "SSMLogsBucketNameCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "SSMLogsBucketName" + }, + "" + ] + } + ] + }, + "WindowsEC2DomainJoinResourcesCondition": { + "Fn::Equals": [ + { + "Ref": "CreateWindowsEC2DomainJoinResources" + }, + "Yes" + ] + } + }, + "Resources": [ + { + "Type": "AWS::DirectoryService::MicrosoftAD", + "Properties": { + "Name": "awsmad.lab", + "ShortName": "AWSMAD", + "Password": { + "Ref": "AWSManagedADAdminPassword" + }, + "Edition": "Standard", + "VpcSettings": { + "SubnetIds": [ + { + "Ref": "PrivateSubnet1ID" + }, + { + "Ref": "PrivateSubnet2ID" + } + ], + "VpcId": { + "Ref": "VPCID" + } + } + }, + "Name": "AWSManagedAD" + }, + { + "Condition": "DomainMembersSGCondition", + "Metadata": { + "cfn_nag": { + "rules_to_suppress": [ + { + "id": "W42", + "reason": "Allow all inbound communications from Private IP CIDRs (for Lab purposes)" + }, + { + "id": "W40", + "reason": "Allow all outbound communications (for Lab purposes)" + }, + { + "id": "W5", + "reason": "Allow all outbound communications (for Lab purposes)" + }, + { + "id": "W9", + "reason": "Allow all inbound communications from Private IP CIDRs (for Lab purposes)" + } + ] + } + }, + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": { + "Fn::Sub": "${AWSManagedADDomainNetBiosName} Domain Members SG via AWS Managed Microsoft AD" + }, + "VpcId": { + "Ref": "VPCID" + }, + "SecurityGroupIngress": [ + { + "IpProtocol": "-1", + "Description": "LAB - Allow All Private IP Communications", + "CidrIp": "10.0.0.0/8" + }, + { + "IpProtocol": "-1", + "Description": "LAB - Allow All Private IP Communications", + "CidrIp": "172.16.0.0/12" + }, + { + "IpProtocol": "-1", + "Description": "LAB - Allow All Private IP Communications", + "CidrIp": "192.168.0.0/16" + } + ], + "SecurityGroupEgress": [ + { + "Description": "Allow All Outbound Communications", + "IpProtocol": "-1", + "CidrIp": "0.0.0.0/0" + } + ], + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${AWSManagedADDomainNetBiosName}-DomainMembersSG-AWSManagedAD" + } + } + ] + }, + "Name": "AWSManagedADDomainMembersSG" + }, + { + "Condition": "LinuxEC2DomainJoinResourcesCondition", + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "InstanceProfileName": { + "Ref": "AWSManagedADLinuxEC2DomainJoinRole" + }, + "Path": "/", + "Roles": [ + { + "Ref": "AWSManagedADLinuxEC2DomainJoinRole" + } + ] + }, + "Name": "AWSManagedADLinuxEC2DomainJoinInstanceProfile" + }, + { + "Condition": "LinuxEC2DomainJoinResourcesCondition", + "Metadata": { + "cfn_nag": { + "rules_to_suppress": [ + { + "id": "W28", + "reason": "The role name is defined to identify automation resources" + } + ] + } + }, + "Type": "AWS::IAM::Role", + "Properties": { + "RoleName": { + "Fn::Sub": "${AWSManagedADDomainNetBiosName}-LinuxEC2DomainJoinRole-AWSManagedAD" + }, + "Description": { + "Fn::Sub": "IAM Role to Seamlessly Join Linux EC2 Instances to ${AWSManagedADDomainNetBiosName} Domain via AWS Managed Microsoft AD" + }, + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "sts:AssumeRole", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore" + }, + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/AmazonSSMDirectoryServiceAccess" + } + ], + "Path": "/", + "Tags": [ + { + "Key": "StackName", + "Value": { + "Ref": "AWS::StackName" + } + } + ], + "Policies": [ + { + "PolicyName": "SSMAgent", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "s3:GetObject", + "Resource": [ + { + "Fn::Sub": "arn:aws:s3:::aws-ssm-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::aws-windows-downloads-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::amazon-ssm-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::amazon-ssm-packages-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::${AWS::Region}-birdwatcher-prod/*" + }, + { + "Fn::Sub": "arn:aws:s3:::patch-baseline-snapshot-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::aws-ssm-distributor-file-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::aws-ssm-document-attachments-${AWS::Region}/*" + } + ] + } + ] + } + }, + { + "Ref": "AWS::NoValue" + }, + { + "PolicyName": "AWSManagedADLinuxEC2SeamlessDomainJoinSecret", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "secretsmanager:GetSecretValue", + "secretsmanager:DescribeSecret" + ], + "Resource": { + "Ref": "AWSManagedADLinuxEC2SeamlessDomainJoinSecret" + } + } + ] + } + }, + { + "Ref": "AWS::NoValue" + } + ] + }, + "Name": "AWSManagedADLinuxEC2DomainJoinRole" + }, + { + "Condition": "LinuxEC2DomainJoinResourcesCondition", + "Type": "AWS::SecretsManager::Secret", + "Properties": { + "Name": { + "Fn::Sub": "aws/directory-services/${AWSManagedAD}/seamless-domain-join" + }, + "Description": { + "Fn::Sub": "AD Credentials for Seamless Domain Join Windows/Linux EC2 instances to ${AWSManagedADDomainNetBiosName} Domain via AWS Managed Microsoft AD" + }, + "SecretString": { + "Fn::Sub": "{ \"awsSeamlessDomainUsername\" : \"Admin\", \"awsSeamlessDomainPassword\" : \"${AWSManagedADAdminPassword}\" }" + }, + "KmsKeyId": { + "Ref": "AWS::NoValue" + } + }, + "Name": "AWSManagedADLinuxEC2SeamlessDomainJoinSecret" + }, + { + "Condition": "WindowsEC2DomainJoinResourcesCondition", + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "InstanceProfileName": { + "Ref": "AWSManagedADWindowsEC2DomainJoinRole" + }, + "Path": "/", + "Roles": [ + { + "Ref": "AWSManagedADWindowsEC2DomainJoinRole" + } + ] + }, + "Name": "AWSManagedADWindowsEC2DomainJoinInstanceProfile" + }, + { + "Condition": "WindowsEC2DomainJoinResourcesCondition", + "Metadata": { + "cfn_nag": { + "rules_to_suppress": [ + { + "id": "W28", + "reason": "The role name is defined to identify automation resources" + } + ] + } + }, + "Type": "AWS::IAM::Role", + "Properties": { + "RoleName": { + "Fn::Sub": "${AWSManagedADDomainNetBiosName}-AWSManagedAD-WindowsEC2DomainJoinRole" + }, + "Description": { + "Fn::Sub": "IAM Role to Seamlessly Join Windows EC2 Instances to ${AWSManagedADDomainDNSName} Domain via AWS Managed Microsoft AD" + }, + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "sts:AssumeRole", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore" + }, + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/AmazonSSMDirectoryServiceAccess" + } + ], + "Path": "/", + "Tags": [ + { + "Key": "StackName", + "Value": { + "Ref": "AWS::StackName" + } + } + ], + "Policies": [ + { + "PolicyName": "SSMAgent", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "s3:GetObject", + "Resource": [ + { + "Fn::Sub": "arn:aws:s3:::aws-ssm-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::aws-windows-downloads-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::amazon-ssm-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::amazon-ssm-packages-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::${AWS::Region}-birdwatcher-prod/*" + }, + { + "Fn::Sub": "arn:aws:s3:::patch-baseline-snapshot-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::aws-ssm-distributor-file-${AWS::Region}/*" + }, + { + "Fn::Sub": "arn:aws:s3:::aws-ssm-document-attachments-${AWS::Region}/*" + } + ] + } + ] + } + }, + { + "Ref": "AWS::NoValue" + } + ] + }, + "Name": "AWSManagedADWindowsEC2DomainJoinRole" + }, + { + "Condition": "DHCPOptionSetCondition", + "Type": "AWS::EC2::DHCPOptions", + "Properties": { + "DomainName": "awsmad.lab", + "DomainNameServers": { + "Fn::GetAtt": [ + "AWSManagedAD", + "DnsIpAddresses" + ] + }, + "Tags": [ + { + "Key": "Name", + "Value": "awsmad.lab" + } + ] + }, + "Name": "DHCPOptions" + }, + { + "Condition": "DHCPOptionSetCondition", + "Type": "AWS::EC2::VPCDHCPOptionsAssociation", + "Properties": { + "VpcId": { + "Ref": "VPCID" + }, + "DhcpOptionsId": { + "Ref": "DHCPOptions" + } + }, + "Name": "DHCPOptionsVPCAssociation" + } + ], + "Outputs": { + "AWSManagedADDirectoryId": { + "Description": "AWS Managed Microsoft AD Directory ID", + "Value": { + "Ref": "AWSManagedAD" + }, + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-AWSManagedADDirectoryId" + } + } + }, + "AWSManagedADDirectoryName": { + "Description": "AWS Managed Microsoft AD Directory Name", + "Value": { + "Ref": "AWSManagedADDomainDNSName" + }, + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-AWSManagedADDirectoryName" + } + } + }, + "AWSManagedADAWSManagedADDomainMembersSG": { + "Condition": "DomainMembersSGCondition", + "Description": "AWS Managed Microsoft AD Domain Members Security Group", + "Value": { + "Ref": "AWSManagedADDomainMembersSG" + }, + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-${AWSManagedADDomainNetBiosName}-AWSManagedADDomainMembersSG" + } + } + }, + "AWSManagedADWindowsEC2SeamlessDomainJoinInstanceProfile": { + "Condition": "WindowsEC2DomainJoinResourcesCondition", + "Description": "IAM Instance Profile with SSM Document Rights to Join Windows Computers via AWS Managed Microsoft AD", + "Value": { + "Ref": "AWSManagedADWindowsEC2DomainJoinInstanceProfile" + }, + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-${AWSManagedADDomainNetBiosName}-AWSManagedADWindowsEC2DomainJoinProfile" + } + } + }, + "AWSManagedADWindowsEC2SeamlessDomainJoinRole": { + "Condition": "WindowsEC2DomainJoinResourcesCondition", + "Description": "IAM Instance Profile with SSM Document Rights to Join Windows Computers via AWS Managed Microsoft AD", + "Value": { + "Ref": "AWSManagedADWindowsEC2DomainJoinRole" + }, + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-${AWSManagedADDomainNetBiosName}-AWSManagedADWindowsEC2DomainJoinRole" + } + } + }, + "AWSManagedADLinuxEC2SeamlessDomainJoinInstanceProfile": { + "Condition": "LinuxEC2DomainJoinResourcesCondition", + "Description": "IAM Instance Profile with SSM Document Rights to Join Linux Computers via AWS Managed Microsoft AD", + "Value": { + "Ref": "AWSManagedADLinuxEC2DomainJoinInstanceProfile" + }, + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-${AWSManagedADDomainNetBiosName}-AWSManagedADLinuxEC2DomainJoinProfile" + } + } + }, + "AWSManagedADLinuxEC2SeamlessDomainJoinRole": { + "Condition": "LinuxEC2DomainJoinResourcesCondition", + "Description": "IAM Instance Profile with SSM Document Rights to Join Linux Computers via AWS Managed Microsoft AD", + "Value": { + "Ref": "AWSManagedADLinuxEC2DomainJoinRole" + }, + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-${AWSManagedADDomainNetBiosName}-AWSManagedADLinuxEC2DomainJoinRole" + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT84 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT84 new file mode 100644 index 0000000..5cd310d --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT84 @@ -0,0 +1,297 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/OperatingSystems/RHEL7_cfn-hup.cfn.yaml" + ], + "timestamp": 1642972590633, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/RHEL7_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT84", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT84", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Installing Cloudformation helper scripts in RHEL 7", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "AWSRegionAMIEC2": { + "us-east-1": { + "RHEL7": "ami-9e2f0988" + }, + "us-west-2": { + "RHEL7": "ami-b55a51cc" + }, + "us-west-1": { + "RHEL7": "ami-e69ebc86" + }, + "eu-west-1": { + "RHEL7": "ami-f1978897" + }, + "eu-central-1": { + "RHEL7": "ami-0e258161" + }, + "ap-northeast-1": { + "RHEL7": "ami-5c9a933b" + }, + "ap-southeast-1": { + "RHEL7": "ami-cb981aa8" + }, + "ap-southeast-2": { + "RHEL7": "ami-9a3322f9" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT7M", + "Count": "1" + } + }, + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_and_enable_cfn_hup" + ] + }, + "install_and_enable_cfn_hup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + }, + "/lib/systemd/system/cfn-hup.service": { + "content": "[Unit]\nDescription=cfn-hup daemon\n\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n\n[Install]\nWantedBy=multi-user.target" + } + }, + "commands": { + "01enable_cfn_hup": { + "command": "systemctl enable cfn-hup.service" + }, + "02start_cfn_hup": { + "command": "systemctl start cfn-hup.service" + } + } + } + } + }, + "Properties": { + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionAMIEC2", + { + "Ref": "AWS::Region" + }, + "RHEL7" + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y\n", + "yum install -y python-setuptools\n", + "yum install -y wget\n", + "mkdir -p /opt/aws/bin\n", + "wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", + "easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-latest.tar.gz\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT85 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT85 new file mode 100644 index 0000000..380662f --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT85 @@ -0,0 +1,300 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/OperatingSystems/RHEL8_cfn-hup.cfn.yaml" + ], + "timestamp": 1642972590638, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/RHEL8_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT85", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT85", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Installing Cloudformation helper scripts in RHEL 8", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "AWSRegionAMIEC2": { + "us-east-1": { + "RHEL8": "ami-096fda3c22c1c990a" + }, + "us-east-2": { + "RHEL8": "ami-03d64741867e7bb94" + }, + "us-west-2": { + "RHEL8": "ami-01e78c5619c5e68b4" + }, + "us-west-1": { + "RHEL8": "ami-09d9c5cdcfb8fc655" + }, + "eu-west-1": { + "RHEL8": "ami-032e5b6af8a711f30" + }, + "eu-central-1": { + "RHEL8": "ami-009b16df9fcaac611" + }, + "ap-northeast-1": { + "RHEL8": "ami-0dc185deadd3ac449" + }, + "ap-southeast-1": { + "RHEL8": "ami-0f86a70488991335e" + }, + "ap-southeast-2": { + "RHEL8": "ami-044c46b1952ad5861" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT15M", + "Count": "1" + } + }, + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_and_enable_cfn_hup" + ] + }, + "install_and_enable_cfn_hup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + }, + "/lib/systemd/system/cfn-hup.service": { + "content": "[Unit]\nDescription=cfn-hup daemon\n\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n\n[Install]\nWantedBy=multi-user.target" + } + }, + "commands": { + "01enable_cfn_hup": { + "command": "systemctl enable cfn-hup.service" + }, + "02start_cfn_hup": { + "command": "systemctl start cfn-hup.service" + } + } + } + } + }, + "Properties": { + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionAMIEC2", + { + "Ref": "AWS::Region" + }, + "RHEL8" + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "yum update -y\n", + "yum install -y python3\n", + "yum install -y wget\n", + "mkdir -p /opt/aws/bin\n", + "wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz\n", + "python3 -m easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-py3-latest.tar.gz\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT86 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT86 new file mode 100644 index 0000000..1d3c55a --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT86 @@ -0,0 +1,296 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu16.04LTS_cfn-hup.cfn.yaml" + ], + "timestamp": 1642972590642, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu16.04LTS_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT86", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT86", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Installing Cloudformation helper scripts in Ubuntu 16.04 LTS", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "AWSRegionAMIEC2": { + "us-east-1": { + "Ubuntu16": "ami-d15a75c7" + }, + "us-west-2": { + "Ubuntu16": "ami-746aba14" + }, + "us-west-1": { + "Ubuntu16": "ami-a9a8e4c9" + }, + "eu-west-1": { + "Ubuntu16": "ami-844e0bf7" + }, + "eu-central-1": { + "Ubuntu16": "ami-a9a557c6" + }, + "ap-northeast-1": { + "Ubuntu16": "ami-d82efcb9" + }, + "ap-southeast-1": { + "Ubuntu16": "ami-d554f1b6" + }, + "ap-southeast-2": { + "Ubuntu16": "ami-0bc1f168" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT7M", + "Count": "1" + } + }, + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_and_enable_cfn_hup" + ] + }, + "install_and_enable_cfn_hup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + }, + "/lib/systemd/system/cfn-hup.service": { + "content": "[Unit]\nDescription=cfn-hup daemon\n\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n\n[Install]\nWantedBy=multi-user.target" + } + }, + "commands": { + "01enable_cfn_hup": { + "command": "systemctl enable cfn-hup.service" + }, + "02start_cfn_hup": { + "command": "systemctl start cfn-hup.service" + } + } + } + } + }, + "Properties": { + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionAMIEC2", + { + "Ref": "AWS::Region" + }, + "Ubuntu16" + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "apt-get update -y\n", + "apt-get install -y python-setuptools\n", + "mkdir -p /opt/aws/bin\n", + "wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n", + "python -m easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-latest.tar.gz\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT87 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT87 new file mode 100644 index 0000000..82b89e3 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT87 @@ -0,0 +1,299 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu18.04LTS_cfn-hup.cfn.yaml" + ], + "timestamp": 1642972590646, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu18.04LTS_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT87", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT87", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Installing Cloudformation helper scripts in Ubuntu 18.04 LTS", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "AWSRegionAMIEC2": { + "us-east-1": { + "Ubuntu18": "ami-02fe94dee086c0c37" + }, + "us-east-2": { + "Ubuntu18": "ami-02aa7f3de34db391a" + }, + "us-west-2": { + "Ubuntu18": "ami-025102f49d03bec05" + }, + "us-west-1": { + "Ubuntu18": "ami-0d9b7049d327ec00d" + }, + "eu-west-1": { + "Ubuntu18": "ami-0e5657f6d3c3ea350" + }, + "eu-central-1": { + "Ubuntu18": "ami-0932440befd74cdba" + }, + "ap-northeast-1": { + "Ubuntu18": "ami-09dac16017637391f" + }, + "ap-southeast-1": { + "Ubuntu18": "ami-0ae3e6717dc99c62b" + }, + "ap-southeast-2": { + "Ubuntu18": "ami-080b87fdc6d5ca853" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT7M", + "Count": "1" + } + }, + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_and_enable_cfn_hup" + ] + }, + "install_and_enable_cfn_hup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + }, + "/lib/systemd/system/cfn-hup.service": { + "content": "[Unit]\nDescription=cfn-hup daemon\n\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n\n[Install]\nWantedBy=multi-user.target" + } + }, + "commands": { + "01enable_cfn_hup": { + "command": "systemctl enable cfn-hup.service" + }, + "02start_cfn_hup": { + "command": "systemctl start cfn-hup.service" + } + } + } + } + }, + "Properties": { + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionAMIEC2", + { + "Ref": "AWS::Region" + }, + "Ubuntu18" + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "apt-get update -y\n", + "apt-get install -y python3-setuptools\n", + "mkdir -p /opt/aws/bin\n", + "wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz\n", + "python3 -m easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-py3-latest.tar.gz\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT88 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT88 new file mode 100644 index 0000000..a2cd73c --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT88 @@ -0,0 +1,298 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu20.04LTS_cfn-hup.cfn.yaml" + ], + "timestamp": 1642972590651, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/OperatingSystems/ubuntu20.04LTS_cfn-hup.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT88", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::securitygroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT88", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Installing Cloudformation helper scripts in Ubuntu 20.04 LTS", + "Parameters": { + "KeyName": { + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "InstanceType": { + "Description": "WebServer EC2 instance type", + "Type": "String", + "Default": "t2.small", + "AllowedValues": [ + "t1.micro", + "t2.nano", + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m1.small", + "m1.medium", + "m1.large", + "m1.xlarge", + "m2.xlarge", + "m2.2xlarge", + "m2.4xlarge", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "g2.2xlarge", + "g2.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "hi1.4xlarge", + "hs1.8xlarge", + "cr1.8xlarge", + "cc2.8xlarge", + "cg1.4xlarge" + ], + "ConstraintDescription": "must be a valid EC2 instance type." + }, + "SSHLocation": { + "Description": "The IP address range that can be used to SSH to the EC2 instances", + "Type": "String", + "MinLength": "9", + "MaxLength": "18", + "Default": "0.0.0.0/0", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", + "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." + } + }, + "Mappings": { + "AWSRegionAMIEC2": { + "us-east-1": { + "Ubuntu20": "ami-03d315ad33b9d49c4" + }, + "us-east-2": { + "Ubuntu20": "ami-0996d3051b72b5b2c" + }, + "us-west-2": { + "Ubuntu20": "ami-0928f4202481dfdf6" + }, + "us-west-1": { + "Ubuntu20": "ami-0ebef2838fb2605b7" + }, + "eu-west-1": { + "Ubuntu20": "ami-022e8cc8f0d3c52fd" + }, + "eu-central-1": { + "Ubuntu20": "ami-0932440befd74cdba" + }, + "ap-northeast-1": { + "Ubuntu20": "ami-0e039c7d64008bd84" + }, + "ap-southeast-1": { + "Ubuntu20": "ami-09a6a7e49bd29554b" + }, + "ap-southeast-2": { + "Ubuntu20": "ami-0d767dd04ac152743" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "CreationPolicy": { + "ResourceSignal": { + "Timeout": "PT7M", + "Count": "1" + } + }, + "Metadata": { + "AWS::CloudFormation::Init": { + "configSets": { + "full_install": [ + "install_and_enable_cfn_hup" + ] + }, + "install_and_enable_cfn_hup": { + "files": { + "/etc/cfn/cfn-hup.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[main]\n", + "stack=", + { + "Ref": "AWS::StackId" + }, + "\n", + "region=", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + }, + "mode": "000400", + "owner": "root", + "group": "root" + }, + "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { + "content": { + "Fn::Join": [ + "", + [ + "[cfn-auto-reloader-hook]\n", + "triggers=post.update\n", + "path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n", + "action=/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "runas=root\n" + ] + ] + } + }, + "/lib/systemd/system/cfn-hup.service": { + "content": "[Unit]\nDescription=cfn-hup daemon\n\n[Service]\nType=simple\nExecStart=/opt/aws/bin/cfn-hup\nRestart=always\n\n[Install]\nWantedBy=multi-user.target" + } + }, + "commands": { + "01enable_cfn_hup": { + "command": "systemctl enable cfn-hup.service" + }, + "02start_cfn_hup": { + "command": "systemctl start cfn-hup.service" + } + } + } + } + }, + "Properties": { + "InstanceType": "t2.small", + "SecurityGroups": [ + { + "Ref": "InstanceSecurityGroup" + } + ], + "KeyName": { + "Ref": "KeyName" + }, + "ImageId": { + "Fn::FindInMap": [ + "AWSRegionAMIEC2", + { + "Ref": "AWS::Region" + }, + "Ubuntu20" + ] + }, + "UserData": { + "Fn::Base64": { + "Fn::Join": [ + "", + [ + "#!/bin/bash -xe\n", + "apt-get update -y\n", + "mkdir -p /opt/aws/bin\n", + "wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz\n", + "python3 -m easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-py3-latest.tar.gz\n", + "/opt/aws/bin/cfn-init -v ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --configsets full_install ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n", + "/opt/aws/bin/cfn-signal -e $? ", + " --stack ", + { + "Ref": "AWS::StackName" + }, + " --resource EC2Instance ", + " --region ", + { + "Ref": "AWS::Region" + }, + "\n" + ] + ] + } + } + }, + "Name": "EC2Instance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Enable SSH access via port 22", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "22", + "ToPort": "22", + "CidrIp": "0.0.0.0/0" + } + ] + }, + "Name": "InstanceSecurityGroup" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT89 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT89 new file mode 100644 index 0000000..ad7f41c --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT89 @@ -0,0 +1,725 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/PrefixListResource/Templates/cfn-endpoint-waitcondition.yaml" + ], + "timestamp": 1642972590655, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/PrefixListResource/Templates/cfn-endpoint-waitcondition.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT89", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpcendpoint", + "aws::ec2::vpc", + "aws::iam::instanceprofile", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "custom::getpl", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::cloudformation::waitcondition", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "aws::cloudformation::waitconditionhandle" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT89", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template deploys a VPC with a pair of public and private subnets spread across two Availabilty Zones. It deploys an Internet Gateway, with a default route on the public subnets and a bastion server. It deploys VPC Endpoints for CloudFormation and S3 so an instance in the private subnet can use cfn-signal for a WaitCondition. **WARNING** You will be billed for the AWS resources used if you create a stack from this template.\n", + "Parameters": { + "EnvironmentName": { + "Description": "An environment name that will be prefixed to resource names", + "Type": "String" + }, + "VpcCIDR": { + "Description": "Please enter the IP range (CIDR notation) for this VPC", + "Type": "String", + "Default": "10.192.0.0/16", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PublicSubnet1CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the public subnet in the first Availability Zone", + "Type": "String", + "Default": "10.192.10.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PublicSubnet2CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the public subnet in the second Availability Zone", + "Type": "String", + "Default": "10.192.11.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet1CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone", + "Type": "String", + "Default": "10.192.20.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "PrivateSubnet2CIDR": { + "Description": "Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone", + "Type": "String", + "Default": "10.192.21.0/24", + "AllowedPattern": "((\\d{1,3})\\.){3}\\d{1,3}/\\d{1,2}" + }, + "KeyName": { + "Description": "Key pair for EC2 access", + "Type": "AWS::EC2::KeyPair::KeyName" + }, + "LinuxAMI": { + "Description": "Managed AMI ID for Amazon Linux", + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "EnableDnsSupport": true, + "EnableDnsHostnames": true, + "CidrBlock": "10.192.0.0/16", + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + }, + "Name": "InternetGateway" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "InternetGatewayId": { + "Ref": "InternetGateway" + }, + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "InternetGatewayAttachment" + }, + { + "Type": "AWS::EC2::VPCEndpoint", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "ServiceName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.cloudformation" + }, + "VpcEndpointType": "Interface", + "PrivateDnsEnabled": true, + "SubnetIds": [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ], + "SecurityGroupIds": [ + { + "Ref": "EndpointSG" + } + ] + }, + "Name": "CfnEndpoint" + }, + { + "Type": "AWS::EC2::VPCEndpoint", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "ServiceName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.s3" + }, + "VpcEndpointType": "Gateway", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": "*", + "Action": [ + "s3:PutObject" + ], + "Resource": [ + { + "Fn::Sub": "arn:aws:s3:::cloudformation-waitcondition-${AWS::Region}/*" + } + ] + } + ] + }, + "RouteTableIds": [ + { + "Ref": "PrivateRouteTable1" + }, + { + "Ref": "PrivateRouteTable2" + } + ] + }, + "Name": "S3Endpoint" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.10.0/24", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Subnet (AZ1)" + } + } + ] + }, + "Name": "PublicSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.11.0/24", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Subnet (AZ2)" + } + } + ] + }, + "Name": "PublicSubnet2" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.20.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ1)" + } + } + ] + }, + "Name": "PrivateSubnet1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": "10.192.21.0/24", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ2)" + } + } + ] + }, + "Name": "PrivateSubnet2" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Routes" + } + } + ] + }, + "Name": "PublicRouteTable" + }, + { + "Type": "AWS::EC2::Route", + "DependsOn": "InternetGatewayAttachment", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + } + }, + "Name": "DefaultPublicRoute" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnet1" + } + }, + "Name": "PublicSubnet1RouteTableAssociation" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnet2" + } + }, + "Name": "PublicSubnet2RouteTableAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ1)" + } + } + ] + }, + "Name": "PrivateRouteTable1" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable1" + }, + "SubnetId": { + "Ref": "PrivateSubnet1" + } + }, + "Name": "PrivateSubnet1RouteTableAssociation" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ2)" + } + } + ] + }, + "Name": "PrivateRouteTable2" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable2" + }, + "SubnetId": { + "Ref": "PrivateSubnet2" + } + }, + "Name": "PrivateSubnet2RouteTableAssociation" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "cloudformation:*", + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "RootRole" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "InstanceType": "t3.micro", + "SecurityGroupIds": [ + { + "Ref": "BastionSG" + } + ], + "SubnetId": { + "Ref": "PublicSubnet1" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2", + "IamInstanceProfile": { + "Ref": "BastionProfile" + }, + "Tags": [ + { + "Key": "Name", + "Value": "Bastion" + } + ] + }, + "Name": "BastionInstance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Inbound Bastion Traffic", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "CidrIp": "0.0.0.0/0" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "BastionSG" + } + ] + }, + "Name": "BastionSG" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "RootRole" + } + ] + }, + "Name": "BastionProfile" + }, + { + "DependsOn": "CfnEndpoint", + "Type": "AWS::EC2::Instance", + "Properties": { + "KeyName": { + "Ref": "KeyName" + }, + "InstanceType": "t3.micro", + "SecurityGroupIds": [ + { + "Ref": "PrivateSG" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet1" + }, + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2", + "IamInstanceProfile": { + "Ref": "PrivateProfile" + }, + "UserData": { + "Fn::Base64": { + "Fn::Sub": "#!/bin/bash -x\ndate > /tmp/datefile\ncat /tmp/datefile\n# Signal the status from instance\n/opt/aws/bin/cfn-signal -e $? -d \"This was all private.\" -r \"Build Process Complete\" '${PrivateWaitHandle}'\n" + } + }, + "Tags": [ + { + "Key": "Name", + "Value": "Private" + } + ] + }, + "Name": "PrivateInstance" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic from Bastion", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "SourceSecurityGroupId": { + "Ref": "BastionSG" + } + } + ], + "SecurityGroupEgress": [ + { + "IpProtocol": "tcp", + "FromPort": 443, + "ToPort": 443, + "DestinationPrefixListId": { + "Fn::GetAtt": [ + "S3PrefixListID", + "PrefixListID" + ] + } + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "PrivateSG" + } + ] + }, + "Name": "PrivateSG" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "RootRole" + } + ] + }, + "Name": "PrivateProfile" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "Traffic into CloudFormation Endpoint", + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 443, + "ToPort": 443, + "CidrIp": "0.0.0.0/0" + } + ], + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "EndpointSG" + } + ] + }, + "Name": "EndpointSG" + }, + { + "Type": "AWS::CloudFormation::WaitConditionHandle", + "Name": "PrivateWaitHandle" + }, + { + "DependsOn": "PrivateInstance", + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Handle": { + "Ref": "PrivateWaitHandle" + }, + "Timeout": "3600", + "Count": 1 + }, + "Name": "PrivateWaitCondition" + }, + { + "DependsOn": "S3Endpoint", + "Type": "Custom::GetPL", + "Properties": { + "ServiceToken": { + "Fn::ImportValue": "GetPLCustomResource" + }, + "loglevel": "debug", + "PrefixListName": { + "Fn::Sub": "com.amazonaws.${AWS::Region}.s3" + } + }, + "Name": "S3PrefixListID" + } + ], + "Outputs": { + "VPC": { + "Description": "A reference to the created VPC", + "Value": { + "Ref": "VPC" + } + }, + "PublicSubnets": { + "Description": "A list of the public subnets", + "Value": { + "Fn::Join": [ + ",", + [ + { + "Ref": "PublicSubnet1" + }, + { + "Ref": "PublicSubnet2" + } + ] + ] + } + }, + "PrivateSubnets": { + "Description": "A list of the private subnets", + "Value": { + "Fn::Join": [ + ",", + [ + { + "Ref": "PrivateSubnet1" + }, + { + "Ref": "PrivateSubnet2" + } + ] + ] + } + }, + "CfnEndpoint": { + "Description": "A reference to the CloudFormation Endpoint used for signaling from the private instance", + "Value": { + "Ref": "CfnEndpoint" + } + }, + "S3Endpoint": { + "Description": "A reference to the S3 Endpoint used for signaling from the private instance", + "Value": { + "Ref": "S3Endpoint" + } + }, + "S3PrefixListID": { + "Description": "PrefixListID to use for security group egress to the S3 endpoint", + "Value": { + "Fn::GetAtt": [ + "S3PrefixListID", + "PrefixListID" + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT9 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT9 new file mode 100644 index 0000000..4775e76 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT9 @@ -0,0 +1,336 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/Public-and-Private-Subnet-per-AZ/Create-Stack.yaml" + ], + "timestamp": 1642972590304, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/services/CloudFormation/MacrosExamples/Public-and-Private-Subnet-per-AZ/Create-Stack.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT9", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::instance", + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT9", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Parameters": { + "VPCCidrBlock": { + "Type": "String", + "Description": "The /16 CIDR block for the VPC (Format Example: 10.0.0.0/16)", + "MinLength": "9", + "MaxLength": "18", + "Default": "10.0.0.0/16", + "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.0\\.0/16", + "ConstraintDescription": "Must be a valid IP CIDR block with a /16" + }, + "KeyPair": { + "Type": "AWS::EC2::KeyPair::KeyName", + "Description": "The name of an Amazon EC2 key pair in the region in which you are creating a CloudFormation stack." + } + }, + "Mappings": { + "AmazonLinuxNatAMI": { + "ap-south-1": { + "hvm": "ami-7fd5f610" + }, + "eu-west-3": { + "hvm": "ami-519c2d2c" + }, + "eu-west-2": { + "hvm": "ami-756d8f12" + }, + "eu-west-1": { + "hvm": "ami-650c381c" + }, + "ap-northeast-3": { + "hvm": "ami-77fef00a" + }, + "ap-northeast-2": { + "hvm": "ami-8e0fa6e0" + }, + "ap-northeast-1": { + "hvm": "ami-cdd63eb2" + }, + "sa-east-1": { + "hvm": "ami-0b81dc67" + }, + "ca-central-1": { + "hvm": "ami-e3890987" + }, + "ap-southeast-1": { + "hvm": "ami-3093a64c" + }, + "ap-southeast-2": { + "hvm": "ami-943cebf6" + }, + "eu-central-1": { + "hvm": "ami-0097b5eb" + }, + "us-east-1": { + "hvm": "ami-54ca472b" + }, + "us-east-2": { + "hvm": "ami-882914ed" + }, + "us-west-1": { + "hvm": "ami-1a0e107a" + }, + "us-west-2": { + "hvm": "ami-78502100" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "InstanceTenancy": "default", + "EnableDnsSupport": true, + "EnableDnsHostnames": true + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "CidrBlock": { + "Fn::Select": [ + 0, + { + "Fn::Cidr": [ + { + "Fn::GetAtt": [ + "VPC", + "CidrBlock" + ] + }, + 256, + 8 + ] + } + ] + }, + "AvailabilityZone": { + "Fn::Select": [ + "0", + { + "Fn::GetAZs": { + "Ref": "AWS::Region" + } + } + ] + }, + "VpcId": { + "Ref": "VPC" + }, + "MapPublicIpOnLaunch": true + }, + "Name": "VPCPubSn1" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "CidrBlock": { + "Fn::Select": [ + 6, + { + "Fn::Cidr": [ + { + "Fn::GetAtt": [ + "VPC", + "CidrBlock" + ] + }, + 256, + 8 + ] + } + ] + }, + "AvailabilityZone": { + "Fn::Select": [ + "0", + { + "Fn::GetAZs": { + "Ref": "AWS::Region" + } + } + ] + }, + "VpcId": { + "Ref": "VPC" + }, + "MapPublicIpOnLaunch": true + }, + "Name": "VPCPrivSn1" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "VPCPubRt1" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VPCPubRt1" + }, + "SubnetId": { + "Ref": "VPCPubSn1" + } + }, + "Name": "VPCPubSn1RtAssoc" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "VPCPrivRt1" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "VPCPrivRt1" + }, + "SubnetId": { + "Ref": "VPCPrivSn1" + } + }, + "Name": "VPCPrivSn1RtAssoc" + }, + { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "RouteTableId": { + "Ref": "VPCPubRt1" + }, + "GatewayId": { + "Ref": "VPCIGW" + } + }, + "Name": "VPCPubDefaultRoute" + }, + { + "Type": "AWS::EC2::Route", + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "RouteTableId": { + "Ref": "VPCPrivRt1" + }, + "InstanceId": { + "Ref": "VPCNatInstance" + } + }, + "Name": "VPCPrivDefaultRoute" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Name": "VPCIGW" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "InternetGatewayId": { + "Ref": "VPCIGW" + } + }, + "Name": "VPCIGWAttachment" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupName": "SGAllTrafficFromVPC", + "GroupDescription": "VPN Traffic from VPC CIDR", + "VpcId": { + "Ref": "VPC" + }, + "SecurityGroupIngress": [ + { + "IpProtocol": "-1", + "CidrIp": "10.0.0.0/16", + "Description": "All Traffic from VPC CIDR" + } + ] + }, + "Name": "SGAllTrafficFromVPC" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "DisableApiTermination": false, + "InstanceInitiatedShutdownBehavior": "stop", + "ImageId": { + "Fn::FindInMap": [ + "AmazonLinuxNatAMI", + { + "Ref": "AWS::Region" + }, + "hvm" + ] + }, + "InstanceType": "t2.micro", + "KeyName": { + "Ref": "KeyPair" + }, + "Monitoring": false, + "NetworkInterfaces": [ + { + "DeleteOnTermination": true, + "Description": "Primary network interface", + "DeviceIndex": "0", + "SubnetId": { + "Ref": "VPCPubSn1" + }, + "GroupSet": [ + { + "Ref": "SGAllTrafficFromVPC" + } + ], + "AssociatePublicIpAddress": true + } + ] + }, + "Name": "VPCNatInstance" + } + ], + "Transform": [ + "CreateSubnetsPerAZ" + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT90 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT90 new file mode 100644 index 0000000..082777e --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT90 @@ -0,0 +1,184 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/PrefixListResource/Templates/function-template.yaml" + ], + "timestamp": 1642972590660, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/PrefixListResource/Templates/function-template.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT90", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::logs::loggroup", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT90", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Deploy required components for GetPL custom resources in this region. Lambda ARN is exported as GetPLCustomResource", + "Parameters": { + "ModuleName": { + "Type": "String", + "Default": "lambda_function" + } + }, + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "IAMPassRolePermissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "iam:PassRole", + "Resource": "*" + } + ] + } + }, + { + "PolicyName": "EC2Permissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "ec2:DescribePrefixLists", + "Resource": "*" + } + ] + } + }, + { + "PolicyName": "LambdaPermissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "logs:CreateLogGroup", + "Resource": [ + { + "Fn::Sub": "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:*" + } + ] + }, + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": [ + { + "Fn::Sub": "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/*" + } + ] + } + ] + } + }, + { + "PolicyName": "S3Permissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "s3:Get*", + "s3:List*" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "GetPLResourceRole" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Description": "CloudFormation Custom resource for getting endpoint prefix list ID", + "Code": "../FunctionCode", + "Handler": { + "Fn::Sub": "${ModuleName}.handler" + }, + "Runtime": "python3.6", + "Timeout": 300, + "Role": { + "Fn::GetAtt": [ + "GetPLResourceRole", + "Arn" + ] + }, + "Environment": { + "Variables": { + "Logging": "Debug" + } + } + }, + "Name": "GetPLResourceFunction" + }, + { + "DependsOn": "GetPLResourceFunction", + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Sub": "/aws/lambda/${GetPLResourceFunction}" + }, + "RetentionInDays": 7 + }, + "Name": "GetPLResourceLogGroup" + } + ], + "Outputs": { + "GetPLFunctionArn": { + "Description": "Resource ARN for the GetPL Custom resource Lambda function", + "Value": { + "Fn::GetAtt": [ + "GetPLResourceFunction", + "Arn" + ] + }, + "Export": { + "Name": "GetPLCustomResource" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT91 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT91 new file mode 100644 index 0000000..def581f --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT91 @@ -0,0 +1,161 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/S3AccessLogs/templates/S3AccessLogs.cfn.yaml" + ], + "timestamp": 1642972590665, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/S3AccessLogs/templates/S3AccessLogs.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT91", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT91", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template creates an Amazon S3 bucket that will be used for storing S3 server access logs.", + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "S3 Server Access Logs Configuration" + }, + "Parameters": [ + "S3AccessLogsBucketName" + ] + } + ], + "ParameterLabels": { + "S3AccessLogsBucketName": { + "default": "S3 Server Access Logs Bucket Name" + } + } + } + }, + "Parameters": { + "S3AccessLogsBucketName": { + "AllowedPattern": "^$|^(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Default": "", + "Description": "(Optional) S3 Server Access Logs bucket name for where Amazon S3 should store server access log files. S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). If empty, a new S3 bucket will be created as a destination for S3 server access logs, it will follow the format, aws-s3-access-logs--", + "Type": "String" + } + }, + "Conditions": { + "S3AccessLogsBucketNameCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "S3AccessLogsBucketName" + }, + "" + ] + } + ] + } + }, + "Resources": [ + { + "Metadata": { + "cfn_nag": { + "rules_to_suppress": [ + { + "id": "W35", + "reason": "Amazon S3 server access logs not enabled on this bucket, as this bucket is the target for storing all Amazon S3 server access logs." + } + ] + } + }, + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketName": { + "Fn::Sub": "aws-s3-access-logs-${AWS::AccountId}-${AWS::Region}" + }, + "AccessControl": "LogDeliveryWrite", + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true + }, + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "SSEAlgorithm": "AES256" + } + } + ] + }, + "VersioningConfiguration": { + "Status": "Enabled" + } + }, + "Name": "S3AccessLogsBucket" + }, + { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "S3AccessLogsBucket" + }, + "PolicyDocument": { + "Statement": [ + { + "Sid": "DenyNonSSLRequests", + "Effect": "Deny", + "Action": "s3:*", + "Resource": [ + { + "Fn::Sub": "arn:${AWS::Partition}:s3:::${S3AccessLogsBucket}" + }, + { + "Fn::Sub": "arn:${AWS::Partition}:s3:::${S3AccessLogsBucket}/*" + } + ], + "Principal": "*", + "Condition": { + "Bool": { + "aws:SecureTransport": false + } + } + } + ] + } + }, + "Name": "S3AccessLogsBucketPolicy" + } + ], + "Outputs": { + "S3AccessLogsBucketName": { + "Description": "S3 Server Access Logs Bucket Name", + "Value": { + "Ref": "S3AccessLogsBucket" + }, + "Export": { + "Name": { + "Fn::Sub": "${AWS::StackName}-S3AccessLogsBucketName" + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT92 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT92 new file mode 100644 index 0000000..0221ab5 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT92 @@ -0,0 +1,173 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/StackSetsResource/Templates/stack-set-template.yaml" + ], + "timestamp": 1642972590668, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/StackSetsResource/Templates/stack-set-template.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT92", + "status": "active", + "validate": true, + "resourceTypes": [ + "custom::stackset" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT92", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Let's build a StackSet", + "Parameters": { + "StackSetName": { + "Type": "String", + "Description": "[Optional] Unique name for this StackSet" + }, + "StackSetDescription": { + "Type": "String", + "Description": "[Optional] Description for this StackSet" + }, + "TemplateURL": { + "Type": "String", + "Description": "S3 URL for the CloudFormation template to associate with this StackSet", + "AllowedPattern": "^https://s3(.+)\\.amazonaws.com/.+$", + "ConstraintDescription": "must be a valid S3 URL to a template object", + "Default": "https://s3.us-east-2.amazonaws.com/cloudformation-pipeline/events.yaml" + }, + "Capabilities": { + "Type": "String", + "AllowedValues": [ + "CAPABILITY_IAM", + "CAPABILITY_NAMED_IAM", + "" + ], + "Description": "Include capabilities if your template contains IAM resources (see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-capabilities)", + "Default": "" + } + }, + "Conditions": { + "HasStackSetName": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "StackSetName" + }, + "" + ] + } + ] + }, + "HasStackSetDescription": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "StackSetDescription" + }, + "" + ] + } + ] + }, + "HasCapabilities": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "Capabilities" + }, + "" + ] + } + ] + } + }, + "Resources": [ + { + "Type": "Custom::StackSet", + "Properties": { + "ServiceToken": { + "Fn::ImportValue": "StackSetCustomResource" + }, + "loglevel": "debug", + "StackSetName": { + "Ref": "StackSetName" + }, + "StackSetDescription": { + "Ref": "StackSetDescription" + }, + "TemplateURL": "https://s3.us-east-2.amazonaws.com/cloudformation-pipeline/events.yaml", + "Capabilities": [ + { + "Ref": "AWS::NoValue" + } + ], + "OperationPreferences": { + "RegionOrder": { + "Ref": "AWS::NoValue" + }, + "FailureToleranceCount": 0, + "MaxConcurrentCount": 3 + }, + "Parameters": [ + { + "ReadCapacity": 20 + }, + { + "WriteCapacity": 20 + } + ], + "Tags": [ + { + "Environment": "Testing" + }, + { + "Creator": "Chuck" + } + ], + "StackInstances": [ + { + "Regions": [ + "us-east-2" + ], + "Accounts": [ + 225704381548 + ] + }, + { + "Regions": [ + "us-east-2", + "us-west-2", + "eu-west-2" + ], + "Accounts": [ + 888049286042 + ], + "ParameterOverrides": [ + { + "ReadCapacity": 50 + }, + { + "WriteCapacity": 50 + } + ] + } + ] + }, + "Name": "StackSet" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT93 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT93 new file mode 100644 index 0000000..06a3253 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT93 @@ -0,0 +1,216 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/StackSetsResource/Templates/stackset-function-template.yaml" + ], + "timestamp": 1642972590672, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/StackSetsResource/Templates/stackset-function-template.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT93", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::logs::loggroup", + "aws::lambda::function" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT93", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Deploy required components for StackSet custom resources in this region. Lambda ARN is exported as StackSetCustomResource", + "Parameters": { + "ModuleName": { + "Type": "String", + "Default": "lambda_function" + }, + "RoleName": { + "Type": "String", + "Default": "" + }, + "RolePath": { + "Type": "String", + "Default": "" + } + }, + "Conditions": { + "UseRoleName": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "RoleName" + }, + "" + ] + } + ] + }, + "UseRolePath": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "RolePath" + }, + "" + ] + } + ] + } + }, + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Properties": { + "RoleName": { + "Ref": "AWS::NoValue" + }, + "Path": "/", + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "Policies": [ + { + "PolicyName": "IAMPassRolePermissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "iam:PassRole", + "Resource": "*" + } + ] + } + }, + { + "PolicyName": "CloudFormationPermissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "cloudformation:*", + "Resource": "*" + } + ] + } + }, + { + "PolicyName": "LambdaPermissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "logs:CreateLogGroup", + "Resource": [ + { + "Fn::Sub": "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:*" + } + ] + }, + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": [ + { + "Fn::Sub": "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/*" + } + ] + } + ] + } + }, + { + "PolicyName": "S3Permissions", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "s3:Get*", + "s3:List*" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "StackSetResourceRole" + }, + { + "Type": "AWS::Lambda::Function", + "Properties": { + "Description": "Custom CloudFormation resource for managing Stack Sets", + "Code": "../FunctionCode", + "Handler": { + "Fn::Sub": "${ModuleName}.handler" + }, + "Runtime": "python3.6", + "Timeout": 900, + "Role": { + "Fn::GetAtt": [ + "StackSetResourceRole", + "Arn" + ] + } + }, + "Name": "StackSetResourceFunction" + }, + { + "DependsOn": "StackSetResourceFunction", + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Sub": "/aws/lambda/${StackSetResourceFunction}" + }, + "RetentionInDays": 7 + }, + "Name": "StackSetResourceLogGroup" + } + ], + "Outputs": { + "StackSetFunctionArn": { + "Description": "Resource ARN for the StackSetCustom resource Lambda function", + "Value": { + "Fn::GetAtt": [ + "StackSetResourceFunction", + "Arn" + ] + }, + "Export": { + "Name": "StackSetCustomResource" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT94 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT94 new file mode 100644 index 0000000..245971f --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT94 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/StackSetsResource/TestResources/events.yaml" + ], + "timestamp": 1642972590676, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/StackSetsResource/TestResources/events.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT94", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::sqs::queue", + "aws::dynamodb::table" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT94", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "A simple NoSQL event database", + "Parameters": { + "ReadCapacity": { + "Type": "Number", + "Default": 20, + "Description": "Read Capacity Units" + }, + "WriteCapacity": { + "Type": "Number", + "Default": 20, + "Description": "Write Capacity Units" + } + }, + "Resources": [ + { + "Type": "AWS::DynamoDB::Table", + "Properties": { + "KeySchema": [ + { + "AttributeName": "EventId", + "KeyType": "HASH" + } + ], + "AttributeDefinitions": [ + { + "AttributeName": "EventId", + "AttributeType": "S" + } + ], + "ProvisionedThroughput": { + "ReadCapacityUnits": 20, + "WriteCapacityUnits": 20 + } + }, + "Name": "Events" + }, + { + "Type": "AWS::SQS::Queue", + "Name": "EventQueue" + } + ], + "Outputs": { + "EventTableARN": { + "Value": { + "Fn::GetAtt": [ + "Events", + "Arn" + ] + }, + "Description": "ARN for the DynamoDB table" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT95 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT95 new file mode 100644 index 0000000..44930e4 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT95 @@ -0,0 +1,229 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/TaggingRootVolumesInEC2/Tagging_Root_volume.yaml" + ], + "timestamp": 1642972590680, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/TaggingRootVolumesInEC2/Tagging_Root_volume.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT95", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::ec2::instance", + "aws::iam::instanceprofile" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT95", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "AWS CloudFormation Sample Template Tagging Root Volumes of EC2 Instances: This template shows how to automatically tag the root volume of the EC2 instances which are created through the CloudFormation template. This is done through the UserData property of the AWS::EC2::Instance resource. **WARNING** This template creates two Amazon EC2 instances and an IAM Role. You will be billed for the AWS resources used if you create a stack from this template.", + "Parameters": { + "KeyName": { + "Type": "AWS::EC2::KeyPair::KeyName", + "Description": "Name of an existing EC2 KeyPair to enable SSH access to the ECS instances." + }, + "InstanceType": { + "Description": "EC2 instance type", + "Type": "String", + "Default": "t2.micro", + "AllowedValues": [ + "t2.micro", + "t2.small", + "t2.medium", + "t2.large", + "m3.medium", + "m3.large", + "m3.xlarge", + "m3.2xlarge", + "m4.large", + "m4.xlarge", + "m4.2xlarge", + "m4.4xlarge", + "m4.10xlarge", + "c4.large", + "c4.xlarge", + "c4.2xlarge", + "c4.4xlarge", + "c4.8xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "r3.large", + "r3.xlarge", + "r3.2xlarge", + "r3.4xlarge", + "r3.8xlarge", + "i2.xlarge", + "i2.2xlarge", + "i2.4xlarge", + "i2.8xlarge" + ], + "ConstraintDescription": "Please choose a valid instance type." + }, + "InstanceAZ": { + "Description": "EC2 AZ.", + "Type": "AWS::EC2::AvailabilityZone::Name", + "ConstraintDescription": "Must be the name of an availabity zone." + }, + "WindowsAMIID": { + "Description": "The Latest Windows 2016 AMI taken from the public Systems Manager Parameter Store", + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base" + }, + "LinuxAMIID": { + "Description": "The Latest Amazon Linux 2 AMI taken from the public Systems Manager Parameter Store", + "Type": "AWS::SSM::Parameter::Value", + "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" + } + }, + "Resources": [ + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": "/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base", + "InstanceType": "t2.micro", + "AvailabilityZone": { + "Ref": "InstanceAZ" + }, + "IamInstanceProfile": { + "Ref": "InstanceProfile" + }, + "KeyName": { + "Ref": "KeyName" + }, + "UserData": { + "Fn::Base64": "\n $AWS_AVAIL_ZONE=(curl http://169.254.169.254/latest/meta-data/placement/availability-zone).Content\n $AWS_REGION=$AWS_AVAIL_ZONE.Substring(0,$AWS_AVAIL_ZONE.length-1)\n $AWS_INSTANCE_ID=(curl http://169.254.169.254/latest/meta-data/instance-id).Content\n $ROOT_VOLUME_IDS=((Get-EC2Instance -Region $AWS_REGION -InstanceId $AWS_INSTANCE_ID).Instances.BlockDeviceMappings | where-object DeviceName -match '/dev/sda1').Ebs.VolumeId\n $tag = New-Object Amazon.EC2.Model.Tag\n $tag.key = \"MyRootTag\"\n $tag.value = \"MyRootVolumesValue\"\n New-EC2Tag -Resource $ROOT_VOLUME_IDS -Region $AWS_REGION -Tag $tag\n\n" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "AWS::StackName" + } + } + ], + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sdm", + "Ebs": { + "VolumeType": "io1", + "Iops": "200", + "DeleteOnTermination": "true", + "VolumeSize": "10" + } + } + ] + }, + "Name": "WindowsInstance" + }, + { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2", + "InstanceType": "t2.micro", + "AvailabilityZone": { + "Ref": "InstanceAZ" + }, + "IamInstanceProfile": { + "Ref": "InstanceProfile" + }, + "KeyName": { + "Ref": "KeyName" + }, + "UserData": { + "Fn::Base64": "AWS_AVAIL_ZONE=$(curl http://169.254.169.254/latest/meta-data/placement/availability-zone)\nAWS_REGION=\"`echo \\\"$AWS_AVAIL_ZONE\\\" | sed 's/[a-z]$//'`\"\nAWS_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)\nROOT_VOLUME_IDS=$(aws ec2 describe-instances --region $AWS_REGION --instance-id $AWS_INSTANCE_ID --output text --query Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId)\naws ec2 create-tags --resources $ROOT_VOLUME_IDS --region $AWS_REGION --tags Key=MyRootTag,Value=MyRootVolumesValue\n" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "AWS::StackName" + } + } + ], + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sdm", + "Ebs": { + "VolumeType": "io1", + "Iops": "200", + "DeleteOnTermination": "true", + "VolumeSize": "10" + } + } + ] + }, + "Name": "LinuxInstance" + }, + { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "taginstancepolicy", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ec2:Describe*", + "ec2:CreateTags" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "InstanceRole" + }, + { + "Type": "AWS::IAM::InstanceProfile", + "Properties": { + "Path": "/", + "Roles": [ + { + "Ref": "InstanceRole" + } + ] + }, + "Name": "InstanceProfile" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT96 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT96 new file mode 100644 index 0000000..8e8f5e0 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT96 @@ -0,0 +1,347 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogs-main.cfn.yaml" + ], + "timestamp": 1642972590684, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogs-main.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT96", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::cloudformation::stack" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT96", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template enables VPC Flow Logs to CloudWatch, S3, or both.", + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "Network Configuration" + }, + "Parameters": [ + "VPCID" + ] + }, + { + "Label": { + "default": "VPC Flow Logs Configuration" + }, + "Parameters": [ + "VPCFlowLogsLogFormat", + "VPCFlowLogsMaxAggregationInterval", + "VPCFlowLogsTrafficType" + ] + }, + { + "Label": { + "default": "VPC Flow Logs to CloudWatch Configuration" + }, + "Parameters": [ + "CreateVPCFlowLogsToCloudWatch", + "VPCFlowLogsLogGroupRetention", + "VPCFlowLogsCloudWatchKMSKey" + ] + }, + { + "Label": { + "default": "VPC Flow Logs to S3 Configuration" + }, + "Parameters": [ + "CreateVPCFlowLogsToS3", + "VPCFlowLogsBucketName", + "VPCFlowLogsBucketKMSKey", + "VPCFlowLogsBucketKeyEnabled", + "S3AccessLogsBucketName" + ] + }, + { + "Label": { + "default": "Templates Configuration" + }, + "Parameters": [ + "TemplatesS3BucketName", + "TemplatesS3BucketRegion" + ] + } + ], + "ParameterLabels": { + "CreateVPCFlowLogsToCloudWatch": { + "default": "Create VPC Flow Logs (CloudWatch)" + }, + "CreateVPCFlowLogsToS3": { + "default": "Create VPC Flow Logs (S3)" + }, + "S3AccessLogsBucketName": { + "default": "S3 Access Logs Bucket Name" + }, + "TemplatesS3BucketName": { + "default": "Templates S3 Bucket Name" + }, + "TemplatesS3BucketRegion": { + "default": "Templates S3 Bucket Region" + }, + "VPCFlowLogsBucketKeyEnabled": { + "default": "VPC Flow Logs Bucket Key Enabled" + }, + "VPCFlowLogsBucketKMSKey": { + "default": "VPC Flow Logs Bucket KMS Key" + }, + "VPCFlowLogsBucketName": { + "default": "VPC Flow Logs Bucket Name" + }, + "VPCFlowLogsCloudWatchKMSKey": { + "default": "CloudWatch Logs KMS Key for VPC flow logs" + }, + "VPCFlowLogsLogFormat": { + "default": "VPC Flow Logs - Log Format" + }, + "VPCFlowLogsLogGroupRetention": { + "default": "CloudWatch log retention days for VPC flow logs" + }, + "VPCFlowLogsMaxAggregationInterval": { + "default": "VPC Flow Logs - Max Aggregation Interval" + }, + "VPCFlowLogsTrafficType": { + "default": "VPC Flow Logs - Traffic Type" + }, + "VPCID": { + "default": "VPC ID" + } + } + } + }, + "Parameters": { + "CreateVPCFlowLogsToCloudWatch": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Create VPC flow logs for the VPC and publish them to CloudWatch", + "Type": "String" + }, + "CreateVPCFlowLogsToS3": { + "AllowedValues": [ + "Yes", + "No" + ], + "Default": "No", + "Description": "Create VPC flow logs for the VPC and publish them to S3", + "Type": "String" + }, + "S3AccessLogsBucketName": { + "AllowedPattern": "^$|^(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Description": "(Optional) S3 Server Access Logs bucket name for where Amazon S3 should store server access log files. S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). If empty, a new S3 bucket will be created as a destination for S3 server access logs, it will follow the format, aws-s3-access-logs--", + "Type": "String" + }, + "TemplatesS3BucketName": { + "AllowedPattern": "^(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "Templates S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Description": "Templates S3 bucket name for the CloudFormation templates. S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Type": "String" + }, + "TemplatesS3BucketRegion": { + "Description": "The AWS Region where the Templates S3 bucket (TemplatesS3BucketName) is hosted.", + "Type": "String" + }, + "VPCFlowLogsBucketKeyEnabled": { + "AllowedValues": [ + true, + false + ], + "Default": false, + "Description": "Set to true to have Amazon S3 use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS). If false, S3 Bucket Key is not enabled. Note, will only be set if KMS Key parameter, \"VPCFlowLogsBucketKMSKey\", was provided.", + "Type": "String" + }, + "VPCFlowLogsBucketKMSKey": { + "AllowedPattern": "^$|^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$|^arn:(aws[a-zA-Z-]*)?:kms:[a-z0-9-]+:\\d{12}:key\\/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "ConstraintDescription": "Key ID example: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN examlpe: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", + "Description": "(Optional) KMS Key ID or ARN to use for the default encryption. If empty, server-side encryption with Amazon S3-managed encryption keys (SSE-S3) will be used. Note, will only be set if S3 Bucket parameter, \"VPCFlowLogsBucketName\", was not provided, thus a new S3 bucket is being created.", + "Type": "String" + }, + "VPCFlowLogsBucketName": { + "AllowedPattern": "^$|^(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Description": "(Optional) S3 bucket name where VPC Flow Log data can be published. S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). If empty, a new S3 bucket will be created for VPC Flow Log data to be published.", + "Type": "String" + }, + "VPCFlowLogsCloudWatchKMSKey": { + "AllowedPattern": "^$|^arn:(aws[a-zA-Z-]*)?:kms:[a-z0-9-]+:\\d{12}:key\\/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "ConstraintDescription": "Key ARN example: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", + "Description": "(Optional) KMS Key ARN to use for encrypting the VPC flow logs data. If empty, encryption is enabled with CloudWatch Logs managing the server-side encryption keys.", + "Type": "String" + }, + "VPCFlowLogsLogFormat": { + "AllowedPattern": "^(\\$\\{[a-z-]+\\})$|^((\\$\\{[a-z-]+\\} )*\\$\\{[a-z-]+\\})$", + "Default": "${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}", + "Description": "The fields to include in the flow log record, in the order in which they should appear. Specify the fields using the ${field-id} format, separated by spaces. Using the Default Format as the default value.", + "Type": "String" + }, + "VPCFlowLogsLogGroupRetention": { + "AllowedValues": [ + 1, + 3, + 5, + 7, + 14, + 30, + 60, + 90, + 120, + 150, + 180, + 365, + 400, + 545, + 731, + 1827, + 3653 + ], + "Default": 14, + "Description": "Number of days to retain the VPC Flow Logs in CloudWatch", + "Type": "String" + }, + "VPCFlowLogsMaxAggregationInterval": { + "AllowedValues": [ + 60, + 600 + ], + "Default": 600, + "Description": "The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. You can specify 60 seconds (1 minute) or 600 seconds (10 minutes).", + "Type": "String" + }, + "VPCFlowLogsTrafficType": { + "AllowedValues": [ + "ACCEPT", + "ALL", + "REJECT" + ], + "Default": "REJECT", + "Description": "The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic.", + "Type": "String" + }, + "VPCID": { + "Description": "ID of the VPC (e.g., vpc-0343606e)", + "Type": "AWS::EC2::VPC::Id" + } + }, + "Rules": { + "CreateVPCFlowLogs": { + "Assertions": [ + { + "Assert": { + "Fn::Or": [ + { + "Fn::Equals": [ + { + "Ref": "CreateVPCFlowLogsToCloudWatch" + }, + "Yes" + ] + }, + { + "Fn::Equals": [ + { + "Ref": "CreateVPCFlowLogsToS3" + }, + "Yes" + ] + } + ] + }, + "AssertDescription": "To create VPC Flow Logs, you must have AWS CloudFormation parameters, 'CreateVPCFlowLogsToCloudWatch' and/or 'CreateVPCFlowLogsToS3' set to 'Yes'" + } + ] + } + }, + "Conditions": { + "VPCFlowLogsToCloudWatchCondition": { + "Fn::Equals": [ + { + "Ref": "CreateVPCFlowLogsToCloudWatch" + }, + "Yes" + ] + }, + "VPCFlowLogsToS3Condition": { + "Fn::Equals": [ + { + "Ref": "CreateVPCFlowLogsToS3" + }, + "Yes" + ] + } + }, + "Resources": [ + { + "Condition": "VPCFlowLogsToCloudWatchCondition", + "Type": "AWS::CloudFormation::Stack", + "Properties": { + "TemplateURL": { + "Fn::Sub": "https://${TemplatesS3BucketName}.s3.${TemplatesS3BucketRegion}.${AWS::URLSuffix}/templates/VPCFlowLogsCloudWatch.cfn.yaml" + }, + "Parameters": { + "VPCFlowLogsCloudWatchKMSKey": { + "Ref": "VPCFlowLogsCloudWatchKMSKey" + }, + "VPCFlowLogsLogFormat": "${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}", + "VPCFlowLogsLogGroupRetention": 14, + "VPCFlowLogsMaxAggregationInterval": 600, + "VPCFlowLogsTrafficType": "REJECT", + "VPCID": { + "Ref": "VPCID" + } + } + }, + "Name": "VPCFlowLogsCloudWatchStack" + }, + { + "Condition": "VPCFlowLogsToS3Condition", + "Type": "AWS::CloudFormation::Stack", + "Properties": { + "TemplateURL": { + "Fn::Sub": "https://${TemplatesS3BucketName}.s3.${TemplatesS3BucketRegion}.${AWS::URLSuffix}/templates/VPCFlowLogsS3.cfn.yaml" + }, + "Parameters": { + "S3AccessLogsBucketName": { + "Ref": "S3AccessLogsBucketName" + }, + "VPCFlowLogsBucketKeyEnabled": false, + "VPCFlowLogsBucketKMSKey": { + "Ref": "VPCFlowLogsBucketKMSKey" + }, + "VPCFlowLogsBucketName": { + "Ref": "VPCFlowLogsBucketName" + }, + "VPCFlowLogsLogFormat": "${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}", + "VPCFlowLogsMaxAggregationInterval": 600, + "VPCFlowLogsTrafficType": "REJECT", + "VPCID": { + "Ref": "VPCID" + } + } + }, + "Name": "VPCFlowLogsS3Stack" + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT97 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT97 new file mode 100644 index 0000000..283b6c7 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT97 @@ -0,0 +1,261 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogsCloudWatch.cfn.yaml" + ], + "timestamp": 1642972590688, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogsCloudWatch.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT97", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::iam::role", + "aws::ec2::flowlog", + "aws::logs::loggroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT97", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template enables VPC Flow Logs to CloudWatch.", + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "Network Configuration" + }, + "Parameters": [ + "VPCID" + ] + }, + { + "Label": { + "default": "VPC Flow Logs Configuration" + }, + "Parameters": [ + "VPCFlowLogsLogFormat", + "VPCFlowLogsMaxAggregationInterval", + "VPCFlowLogsTrafficType", + "VPCFlowLogsLogGroupRetention", + "VPCFlowLogsCloudWatchKMSKey" + ] + } + ], + "ParameterLabels": { + "VPCFlowLogsCloudWatchKMSKey": { + "default": "CloudWatch Logs KMS Key for VPC flow logs" + }, + "VPCFlowLogsLogFormat": { + "default": "VPC Flow Logs - Log Format" + }, + "VPCFlowLogsLogGroupRetention": { + "default": "CloudWatch log retention days for VPC flow logs" + }, + "VPCFlowLogsMaxAggregationInterval": { + "default": "VPC Flow Logs - Max Aggregation Interval" + }, + "VPCFlowLogsTrafficType": { + "default": "VPC Flow Logs - Traffic Type" + }, + "VPCID": { + "default": "VPC ID" + } + } + } + }, + "Parameters": { + "VPCFlowLogsCloudWatchKMSKey": { + "AllowedPattern": "^$|^arn:(aws[a-zA-Z-]*)?:kms:[a-z0-9-]+:\\d{12}:key\\/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "ConstraintDescription": "Key ARN example: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", + "Description": "(Optional) KMS Key ARN to use for encrypting the VPC flow logs data. If empty, encryption is enabled with CloudWatch Logs managing the server-side encryption keys.", + "Type": "String" + }, + "VPCFlowLogsLogFormat": { + "AllowedPattern": "^(\\$\\{[a-z-]+\\})$|^((\\$\\{[a-z-]+\\} )*\\$\\{[a-z-]+\\})$", + "Default": "${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}", + "Description": "The fields to include in the flow log record, in the order in which they should appear. Specify the fields using the ${field-id} format, separated by spaces. Using the Default Format as the default value.", + "Type": "String" + }, + "VPCFlowLogsLogGroupRetention": { + "AllowedValues": [ + 1, + 3, + 5, + 7, + 14, + 30, + 60, + 90, + 120, + 150, + 180, + 365, + 400, + 545, + 731, + 1827, + 3653 + ], + "Default": 14, + "Description": "Number of days to retain the VPC Flow Logs in CloudWatch", + "Type": "String" + }, + "VPCFlowLogsMaxAggregationInterval": { + "AllowedValues": [ + 60, + 600 + ], + "Default": 600, + "Description": "The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. You can specify 60 seconds (1 minute) or 600 seconds (10 minutes).", + "Type": "String" + }, + "VPCFlowLogsTrafficType": { + "AllowedValues": [ + "ACCEPT", + "ALL", + "REJECT" + ], + "Default": "REJECT", + "Description": "The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic.", + "Type": "String" + }, + "VPCID": { + "Description": "ID of the VPC (e.g., vpc-0343606e)", + "Type": "AWS::EC2::VPC::Id" + } + }, + "Conditions": { + "VPCFlowLogsCloudWatchKMSKeyCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "VPCFlowLogsCloudWatchKMSKey" + }, + "" + ] + } + ] + } + }, + "Resources": [ + { + "Type": "AWS::IAM::Role", + "Properties": { + "Description": "Rights to Publish VPC Flow Logs to CloudWatch Logs", + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "sts:AssumeRole", + "Principal": { + "Service": [ + "vpc-flow-logs.amazonaws.com" + ] + } + } + ] + }, + "Path": "/", + "Tags": [ + { + "Key": "StackName", + "Value": { + "Ref": "AWS::StackName" + } + } + ], + "Policies": [ + { + "PolicyName": "CloudWatchLogGroup", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "CloudWatchLogs", + "Effect": "Allow", + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams" + ], + "Resource": { + "Fn::GetAtt": [ + "VPCFlowLogsLogGroup", + "Arn" + ] + } + } + ] + } + } + ] + }, + "Name": "VPCFlowLogsRole" + }, + { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "RetentionInDays": 14, + "KmsKeyId": { + "Ref": "VPCFlowLogsCloudWatchKMSKey" + } + }, + "Name": "VPCFlowLogsLogGroup" + }, + { + "Type": "AWS::EC2::FlowLog", + "Properties": { + "LogDestinationType": "cloud-watch-logs", + "LogGroupName": { + "Ref": "VPCFlowLogsLogGroup" + }, + "DeliverLogsPermissionArn": { + "Fn::GetAtt": [ + "VPCFlowLogsRole", + "Arn" + ] + }, + "LogFormat": "${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}", + "MaxAggregationInterval": 600, + "ResourceId": { + "Ref": "VPCID" + }, + "ResourceType": "VPC", + "TrafficType": "REJECT", + "Tags": [ + { + "Key": "Name", + "Value": "VPC Flow Logs CloudWatch" + } + ] + }, + "Name": "VPCFlowLogsToCloudWatch" + } + ], + "Outputs": { + "VPCFlowLogsLogGroup": { + "Description": "CloudWatch Log Group where VPC Flow Log data will be published", + "Value": { + "Ref": "VPCFlowLogsLogGroup" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT98 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT98 new file mode 100644 index 0000000..dbc4772 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT98 @@ -0,0 +1,320 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogsS3.cfn.yaml" + ], + "timestamp": 1642972590692, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/VPCFlowLogs/templates/VPCFlowLogsS3.cfn.yaml" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT98", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::s3::bucket", + "aws::ec2::flowlog", + "aws::s3::bucketpolicy" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT98", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "This template enables VPC Flow Logs to S3. An option is provided to create an Amazon S3 bucket with encryption to host the flow logs.", + "Metadata": { + "AWS::CloudFormation::Interface": { + "ParameterGroups": [ + { + "Label": { + "default": "Network Configuration" + }, + "Parameters": [ + "VPCID" + ] + }, + { + "Label": { + "default": "VPC Flow Logs Configuration" + }, + "Parameters": [ + "VPCFlowLogsLogFormat", + "VPCFlowLogsMaxAggregationInterval", + "VPCFlowLogsTrafficType", + "VPCFlowLogsBucketName", + "VPCFlowLogsBucketKMSKey", + "VPCFlowLogsBucketKeyEnabled", + "S3AccessLogsBucketName" + ] + } + ], + "ParameterLabels": { + "S3AccessLogsBucketName": { + "default": "S3 Server Access Logs Bucket Name" + }, + "VPCFlowLogsBucketKeyEnabled": { + "default": "VPC Flow Logs Bucket Key Enabled" + }, + "VPCFlowLogsBucketKMSKey": { + "default": "VPC Flow Logs Bucket KMS Key" + }, + "VPCFlowLogsBucketName": { + "default": "VPC Flow Logs Bucket Name" + }, + "VPCFlowLogsLogFormat": { + "default": "VPC Flow Logs - Log Format" + }, + "VPCFlowLogsMaxAggregationInterval": { + "default": "VPC Flow Logs - Max Aggregation Interval" + }, + "VPCFlowLogsTrafficType": { + "default": "VPC Flow Logs - Traffic Type" + }, + "VPCID": { + "default": "VPC ID" + } + } + } + }, + "Parameters": { + "S3AccessLogsBucketName": { + "AllowedPattern": "^$|^(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Description": "(Optional) S3 Server Access Logs bucket name for where Amazon S3 should store server access log files. S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). If empty, a new S3 bucket will be created as a destination for S3 server access logs, it will follow the format, aws-s3-access-logs--", + "Type": "String" + }, + "VPCFlowLogsBucketKeyEnabled": { + "AllowedValues": [ + true, + false + ], + "Default": false, + "Description": "Set to true to have Amazon S3 use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS). If false, S3 Bucket Key is not enabled. Note, will only be set if KMS Key parameter, 'VPCFlowLogsBucketKMSKey', was provided.", + "Type": "String" + }, + "VPCFlowLogsBucketKMSKey": { + "AllowedPattern": "^$|^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$|^arn:(aws[a-zA-Z-]*)?:kms:[a-z0-9-]+:\\d{12}:key\\/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", + "ConstraintDescription": "Key ID example: 1234abcd-12ab-34cd-56ef-1234567890ab Key ARN example: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", + "Description": "(Optional) KMS Key ID or ARN to use for the default encryption. If empty, server-side encryption with Amazon S3-managed encryption keys (SSE-S3) will be used. Note, will only be set if S3 Bucket parameter, 'VPCFlowLogsBucketName', was not provided, thus a new S3 bucket is being created.", + "Type": "String" + }, + "VPCFlowLogsBucketName": { + "AllowedPattern": "^$|^(?=^.{3,63}$)(?!.*[.-]{2})(?!.*[--]{2})(?!^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\\.(?!$)|$)){4}$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "ConstraintDescription": "S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-).", + "Description": "(Optional) S3 bucket name where VPC Flow Log data can be published. S3 bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). If empty, a new S3 bucket will be created for VPC Flow Log data to be published.", + "Type": "String" + }, + "VPCFlowLogsLogFormat": { + "AllowedPattern": "^(\\$\\{[a-z-]+\\})$|^((\\$\\{[a-z-]+\\} )*\\$\\{[a-z-]+\\})$", + "Default": "${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}", + "Description": "The fields to include in the flow log record, in the order in which they should appear. Specify the fields using the ${field-id} format, separated by spaces. Using the Default Format as the default value.", + "Type": "String" + }, + "VPCFlowLogsMaxAggregationInterval": { + "AllowedValues": [ + 60, + 600 + ], + "Default": 600, + "Description": "The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. You can specify 60 seconds (1 minute) or 600 seconds (10 minutes).", + "Type": "String" + }, + "VPCFlowLogsTrafficType": { + "AllowedValues": [ + "ACCEPT", + "ALL", + "REJECT" + ], + "Default": "REJECT", + "Description": "The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic.", + "Type": "String" + }, + "VPCID": { + "Description": "ID of the VPC (e.g., vpc-0343606e)", + "Type": "AWS::EC2::VPC::Id" + } + }, + "Conditions": { + "S3AccessLogsCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "S3AccessLogsBucketName" + }, + "" + ] + } + ] + }, + "VPCFlowLogsNewBucketCondition": { + "Fn::Equals": [ + { + "Ref": "VPCFlowLogsBucketName" + }, + "" + ] + }, + "VPCFlowLogsBucketKMSKeyCondition": { + "Fn::Not": [ + { + "Fn::Equals": [ + { + "Ref": "VPCFlowLogsBucketKMSKey" + }, + "" + ] + } + ] + } + }, + "Resources": [ + { + "Type": "AWS::EC2::FlowLog", + "Properties": { + "LogDestinationType": "s3", + "LogDestination": { + "Fn::Sub": "arn:aws:s3:::${VPCFlowLogsBucketName}" + }, + "LogFormat": "${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}", + "MaxAggregationInterval": 600, + "ResourceId": { + "Ref": "VPCID" + }, + "ResourceType": "VPC", + "TrafficType": "REJECT", + "Tags": [ + { + "Key": "Name", + "Value": "VPC Flow Logs S3" + } + ] + }, + "Name": "VPCFlowLogstoS3" + }, + { + "Condition": "VPCFlowLogsNewBucketCondition", + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketName": { + "Fn::Sub": "aws-vpcflowlogs-${AWS::AccountId}-${AWS::Region}" + }, + "AccessControl": "Private", + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true + }, + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "SSEAlgorithm": "aws:kms", + "KMSMasterKeyID": { + "Ref": "VPCFlowLogsBucketKMSKey" + } + }, + "BucketKeyEnabled": false + } + ] + }, + "LoggingConfiguration": { + "DestinationBucketName": { + "Ref": "S3AccessLogsBucketName" + } + }, + "VersioningConfiguration": { + "Status": "Enabled" + } + }, + "Name": "VPCFlowLogsBucket" + }, + { + "Condition": "VPCFlowLogsNewBucketCondition", + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "VPCFlowLogsBucket" + }, + "PolicyDocument": { + "Statement": [ + { + "Sid": "AWSLogDeliveryWrite", + "Effect": "Allow", + "Action": "s3:PutObject", + "Resource": { + "Fn::Sub": "arn:${AWS::Partition}:s3:::${VPCFlowLogsBucket}/*" + }, + "Principal": { + "Service": "delivery.logs.amazonaws.com" + }, + "Condition": { + "StringEquals": { + "s3:x-amz-acl": "bucket-owner-full-control" + } + } + }, + { + "Sid": "AWSLogDeliveryAclCheck", + "Effect": "Allow", + "Action": "s3:GetBucketAcl", + "Resource": { + "Fn::Sub": "arn:${AWS::Partition}:s3:::${VPCFlowLogsBucket}" + }, + "Principal": { + "Service": "delivery.logs.amazonaws.com" + } + }, + { + "Sid": "DenyNonSSLRequests", + "Effect": "Deny", + "Action": "s3:*", + "Resource": [ + { + "Fn::Sub": "arn:${AWS::Partition}:s3:::${VPCFlowLogsBucket}" + }, + { + "Fn::Sub": "arn:${AWS::Partition}:s3:::${VPCFlowLogsBucket}/*" + } + ], + "Principal": "*", + "Condition": { + "Bool": { + "aws:SecureTransport": false + } + } + } + ] + } + }, + "Name": "VPCFlowLogsBucketPolicy" + } + ], + "Outputs": { + "VPCFlowLogsBucket": { + "Description": "S3 bucket name where VPC Flow Log data will be published", + "Value": { + "Fn::If": [ + "VPCFlowLogsNewBucketCondition", + { + "Ref": "VPCFlowLogsBucket" + }, + { + "Ref": "VPCFlowLogsBucketName" + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT99 b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT99 new file mode 100644 index 0000000..d8b11e0 --- /dev/null +++ b/validation/scenario-aws-Labs/snapshots/CFR_TEMPLATE_SNAPSHOT99 @@ -0,0 +1,418 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAwsLabs", + "paths": [ + "/aws/solutions/Elasticache-snapshot.template" + ], + "timestamp": 1642972590695, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "CFR_TEMPLATE_SNAPSHOT", + "type": "cloudformation", + "collection": "cloudformationtemplate", + "paths": [ + "/aws/solutions/Elasticache-snapshot.template" + ], + "snapshotId": "CFR_TEMPLATE_SNAPSHOT99", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws::ec2::vpc", + "aws::ec2::subnet", + "aws::ec2::routetable", + "aws::ec2::securitygroup", + "aws::iam::role", + "aws::ec2::route", + "aws::ec2::internetgateway", + "aws::elasticache::replicationgroup", + "aws::lambda::permission", + "aws::lambda::function", + "aws::elasticache::parametergroup", + "aws::ec2::subnetroutetableassociation", + "aws::ec2::vpcgatewayattachment", + "custom::region", + "aws::elasticache::subnetgroup" + ] + }, + "snapshotId": "CFR_TEMPLATE_SNAPSHOT99", + "collection": "cloudformationtemplate", + "json": { + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "Create a VPC containing two subnets and an auto scaling group containing instances with Internet access.", + "Parameters": { + "RedisNodeType": { + "Description": "elasticache Redis Node Instance Type", + "Type": "String", + "Default": "cache.m3.medium", + "AllowedValues": [ + "cache.m3.medium" + ], + "ConstraintDescription": "must be an m3.medium - the least costly machine that can use a Replication Group." + }, + "CacheClusters": { + "Description": "elasticache nodes", + "Type": "String", + "Default": "2" + }, + "EnableSnapshotting": { + "Description": "elasticache snapshot enable", + "Type": "String", + "Default": "True", + "AllowedValues": [ + "True", + "False" + ] + }, + "SnapshotRetentionLimit": { + "Description": "elasticache Snapshot Retention Limit", + "Type": "String", + "Default": "28" + }, + "SnapshotWindow": { + "Description": "Snapshot Window", + "Type": "String", + "Default": "02:00-03:00" + } + }, + "Conditions": { + "EnableBackups": { + "Fn::Equals": [ + { + "Ref": "EnableSnapshotting" + }, + "True" + ] + } + }, + "Mappings": { + "AWSRegion2AZ": { + "us-east-1": { + "A": "us-east-1b", + "B": "us-east-1c", + "C": "us-east-1c", + "D": "us-east-1d" + }, + "us-west-1": { + "A": "us-west-1b", + "B": "us-west-1c" + }, + "us-west-2": { + "A": "us-west-2a", + "B": "us-west-2b", + "C": "us-west-2c" + } + } + }, + "Resources": [ + { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/24" + }, + "Name": "VPC" + }, + { + "Type": "AWS::EC2::InternetGateway", + "Name": "InternetGateway" + }, + { + "Type": "AWS::EC2::Route", + "DependsOn": [ + "InternetGateway", + "PublicInternetRouteTable" + ], + "Properties": { + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + }, + "RouteTableId": { + "Ref": "PublicInternetRouteTable" + } + }, + "Name": "PublicInternetRoute" + }, + { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "InternetGatewayId": { + "Ref": "InternetGateway" + }, + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "VPCGatewayAttachment" + }, + { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PublicInternetRouteTable" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::FindInMap": [ + "AWSRegion2AZ", + { + "Ref": "AWS::Region" + }, + "A" + ] + }, + "CidrBlock": "10.0.0.0/25", + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PublicSubnetA" + }, + { + "Type": "AWS::EC2::Subnet", + "Properties": { + "AvailabilityZone": { + "Fn::FindInMap": [ + "AWSRegion2AZ", + { + "Ref": "AWS::Region" + }, + "B" + ] + }, + "CidrBlock": "10.0.0.128/25", + "VpcId": { + "Ref": "VPC" + } + }, + "Name": "PublicSubnetB" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicInternetRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnetA" + } + }, + "Name": "PublicSubnetARouteTableAssociation" + }, + { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicInternetRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnetB" + } + }, + "Name": "PublicSubnetBRouteTableAssociation" + }, + { + "Type": "AWS::ElastiCache::ParameterGroup", + "Properties": { + "CacheParameterGroupFamily": "redis2.8", + "Description": "RedisParameterGroup" + }, + "Name": "RedisParameterGroup" + }, + { + "Type": "AWS::ElastiCache::SubnetGroup", + "Properties": { + "Description": "RedisSubnetGroup", + "SubnetIds": [ + { + "Ref": "PublicSubnetA" + }, + { + "Ref": "PublicSubnetB" + } + ] + }, + "Name": "RedisSubnetGroup" + }, + { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "RedisSecurityGroup", + "VpcId": { + "Ref": "VPC" + }, + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": "6379", + "ToPort": "6379" + } + ] + }, + "Name": "RedisSecurityGroup" + }, + { + "Type": "AWS::ElastiCache::ReplicationGroup", + "Properties": { + "AutomaticFailoverEnabled": "true", + "CacheNodeType": "cache.m3.medium", + "CacheParameterGroupName": { + "Ref": "RedisParameterGroup" + }, + "CacheSubnetGroupName": { + "Ref": "RedisSubnetGroup" + }, + "Engine": "redis", + "EngineVersion": "2.8.24", + "NumCacheClusters": "2", + "PreferredCacheClusterAZs": [ + { + "Fn::FindInMap": [ + "AWSRegion2AZ", + { + "Ref": "AWS::Region" + }, + "A" + ] + }, + { + "Fn::FindInMap": [ + "AWSRegion2AZ", + { + "Ref": "AWS::Region" + }, + "B" + ] + } + ], + "ReplicationGroupDescription": "RedisReplicationGroup", + "SecurityGroupIds": [ + { + "Ref": "RedisSecurityGroup" + } + ] + }, + "Name": "RedisReplicationGroup" + }, + { + "Condition": "EnableBackups", + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/", + "Policies": [ + { + "PolicyName": "root", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "*" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "*" + ], + "Resource": "*" + } + ] + } + } + ] + }, + "Name": "IamRoleLambda" + }, + { + "Condition": "EnableBackups", + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "EnableShapshot", + "Arn" + ] + }, + "Principal": "*" + }, + "Name": "LambdaExecutePermission" + }, + { + "Condition": "EnableBackups", + "DependsOn": [ + "EnableShapshot", + "LambdaExecutePermission", + "RedisReplicationGroup" + ], + "Type": "Custom::Region", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "EnableShapshot", + "Arn" + ] + }, + "SSClusterId": { + "Ref": "RedisReplicationGroup" + }, + "SSWindow": "02:00-03:00", + "SSRetentionLimit": "28" + }, + "Name": "EnableShapshotTrigger" + }, + { + "Condition": "EnableBackups", + "Type": "AWS::Lambda::Function", + "DeletionPolicy": "Delete", + "DependsOn": [ + "IamRoleLambda" + ], + "Properties": { + "Code": { + "ZipFile": "var response = require('cfn-response');\nexports.handler = function(event, context) {\n console.log('REQUEST RECEIVED:\\n', JSON.stringify(event));\n if (event.RequestType == 'Delete') {\n response.send(event, context, response.SUCCESS);\n return;\n }\n var ssClusterId = event.ResourceProperties.SSClusterId;\n var ssWindow = event.ResourceProperties.SSWindow;\n var ssRetentionLimit = event.ResourceProperties.SSRetentionLimit;\n var responseData = {};\n var params = {\n ReplicationGroupId: ssClusterId,\n SnapshottingClusterId: ssClusterId + '-002',\n SnapshotWindow: ssWindow,\n SnapshotRetentionLimit: ssRetentionLimit\n };\n if (ssClusterId && ssWindow && ssRetentionLimit) {\n var aws = require('aws-sdk');\n var elasticache = new aws.ElastiCache({apiVersion: '2015-02-02'});\n elasticache.modifyReplicationGroup(params, function(err, data) {\n if (err) {\n responseData = {Error: 'Issue with creating backup'};\n console.log(responseData.Error + ':\\n', err);\n response.send(event, context, response.FAILED, responseData);\n }\n else {\n console.log('backup:', JSON.stringify(data, null, 2));\n responseData = data;\n console.log(data);\n response.send(event, context, response.SUCCESS, responseData);\n };\n });\n } else {\n responseData = {Error: 'Not all parameters specified'};\n console.log(responseData.Error);\n response.send(event, context, response.FAILED, responseData);\n }\n};" + }, + "Handler": "index.handler", + "MemorySize": 128, + "Role": { + "Fn::GetAtt": [ + "IamRoleLambda", + "Arn" + ] + }, + "Runtime": "nodejs", + "Timeout": 30 + }, + "Name": "EnableShapshot" + } + ], + "Outputs": {} + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/master-snapshot.json b/validation/scenario-aws-terraform-hashicorp/master-snapshot.json new file mode 100644 index 0000000..888d729 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/master-snapshot.json @@ -0,0 +1,14 @@ +{ + "$schema": "", + "contentVersion": "1.0.0.0", + "fileType": "masterSnapshot", + "connector": "gitConnectorRemote", + "remoteFile": "aws/terraform/master-snapshot.json", + "connectorUsers": [ + { + "id": "USER_1", + "testUser": "Shahin", + "source": "gitConnectorAwsTerraHashicorp" + } + ] + } \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/master-snapshot_gen.json b/validation/scenario-aws-terraform-hashicorp/master-snapshot_gen.json new file mode 100644 index 0000000..3645f71 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/master-snapshot_gen.json @@ -0,0 +1,935 @@ +{ + "$schema": "", + "contentVersion": "1.0.0.0", + "fileType": "snapshot", + "snapshots": [ + { + "type": "filesystem", + "connectorUser": "USER_1", + "nodes": [ + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/alexa/outputs.tf", + "/examples/alexa/variables.tf", + "/examples/alexa/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT1", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_lambda_permission", + "aws_lambda_function", + "aws_iam_role", + "aws_iam_role_policy" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/domain.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT2", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_api_gateway_base_path_mapping", + "aws_api_gateway_domain_name" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/rest-api.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT3", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_api_gateway_deployment", + "aws_api_gateway_rest_api" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/stage.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT4", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_api_gateway_stage", + "aws_api_gateway_method_settings" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/tls.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT5", + "status": "active", + "validate": true, + "resourceTypes": [ + "tls_self_signed_cert", + "tls_private_key", + "aws_acm_certificate" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-websocket-chat-app/terraform.template.tfvars", + "/examples/api-gateway-websocket-chat-app/variables.tf", + "/examples/api-gateway-websocket-chat-app/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT6", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_apigatewayv2_integration", + "aws_apigatewayv2_deployment", + "aws_apigatewayv2_stage", + "aws_apigatewayv2_route", + "aws_iam_role_policy_attachment", + "aws_lambda_permission", + "aws_iam_role", + "aws_iam_policy", + "aws_lambda_function", + "aws_apigatewayv2_api", + "aws_dynamodb_table" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/asg/outputs.tf", + "/examples/asg/terraform.template.tfvars", + "/examples/asg/variables.tf", + "/examples/asg/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT7", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_autoscaling_group", + "aws_security_group", + "aws_elb", + "aws_launch_configuration" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cloudhsm/outputs.tf", + "/examples/cloudhsm/variables.tf", + "/examples/cloudhsm/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT8", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_cloudhsm_v2_cluster", + "aws_subnet", + "aws_vpc", + "aws_cloudhsm_v2_hsm" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cognito-user-pool/variables.tf", + "/examples/cognito-user-pool/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT9", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_iam_role", + "aws_lambda_function", + "aws_iam_role_policy", + "aws_cognito_user_pool" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/count/outputs.tf", + "/examples/count/variables.tf", + "/examples/count/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT10", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_elb", + "aws_instance" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/dx-gateway-cross-account-vgw-association/terraform.template.tfvars", + "/examples/dx-gateway-cross-account-vgw-association/variables.tf", + "/examples/dx-gateway-cross-account-vgw-association/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT11", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_vpc", + "aws_dx_gateway", + "aws_dx_gateway_association", + "aws_dx_gateway_association_proposal", + "aws_vpn_gateway" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/ecs-alb/outputs.tf", + "/examples/ecs-alb/terraform.template.tfvars", + "/examples/ecs-alb/variables.tf", + "/examples/ecs-alb/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT12", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_autoscaling_group", + "aws_security_group", + "aws_vpc", + "aws_iam_role_policy", + "aws_route_table", + "aws_ecs_cluster", + "aws_route_table_association", + "aws_ecs_service", + "aws_ecs_task_definition", + "aws_iam_role", + "aws_cloudwatch_log_group", + "aws_alb", + "aws_subnet", + "aws_iam_instance_profile", + "aws_alb_listener", + "aws_launch_configuration", + "aws_internet_gateway", + "aws_alb_target_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eip/outputs.tf", + "/examples/eip/terraform.template.tfvars", + "/examples/eip/variables.tf", + "/examples/eip/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT13", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_eip", + "aws_instance" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/eks-cluster.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT14", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_iam_role_policy_attachment", + "aws_iam_role", + "aws_eks_cluster", + "aws_security_group_rule" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/eks-worker-nodes.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT15", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_iam_role", + "aws_iam_role_policy_attachment", + "aws_eks_node_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/vpc.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT16", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_vpc", + "aws_route_table", + "aws_route_table_association", + "aws_subnet", + "aws_internet_gateway" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/elasticsearch-domain/variables.tf", + "/examples/elasticsearch-domain/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT17", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_elasticsearch_domain" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/elb/outputs.tf", + "/examples/elb/terraform.template.tfvars", + "/examples/elb/variables.tf", + "/examples/elb/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT18", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_vpc", + "aws_route_table", + "aws_route_table_association", + "aws_subnet", + "aws_lb_cookie_stickiness_policy", + "aws_instance", + "aws_internet_gateway", + "aws_elb" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/events/kinesis/outputs.tf", + "/examples/events/kinesis/variables.tf", + "/examples/events/kinesis/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT19", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_iam_role_policy", + "aws_iam_role", + "aws_cloudwatch_event_rule", + "aws_kinesis_stream", + "aws_cloudwatch_event_target" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/events/sns/outputs.tf", + "/examples/events/sns/variables.tf", + "/examples/events/sns/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT20", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_cloudwatch_event_target", + "aws_sns_topic", + "aws_cloudwatch_event_rule" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/lambda/outputs.tf", + "/examples/lambda/variables.tf", + "/examples/lambda/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT21", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_iam_role", + "aws_lambda_function" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/lambda-file-systems/outputs.tf", + "/examples/lambda-file-systems/variables.tf", + "/examples/lambda-file-systems/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT22", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_default_vpc", + "aws_efs_file_system", + "aws_iam_role_policy_attachment", + "aws_iam_role", + "aws_efs_mount_target", + "aws_default_security_group", + "aws_lambda_function", + "aws_efs_access_point", + "aws_default_subnet" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/security_group.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT23", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/subnets.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT24", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_route_table_association", + "aws_subnet", + "aws_security_group", + "aws_route_table" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/vpc.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT25", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_vpc", + "aws_internet_gateway" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/subnet/outputs.tf", + "/examples/networking/subnet/terraform.template.tfvars", + "/examples/networking/subnet/variables.tf", + "/examples/networking/subnet/versions.tf", + "/examples/networking/subnet/security_group.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT26", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/subnet/outputs.tf", + "/examples/networking/subnet/terraform.template.tfvars", + "/examples/networking/subnet/variables.tf", + "/examples/networking/subnet/versions.tf", + "/examples/networking/subnet/subnet.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT27", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_route_table_association", + "aws_subnet", + "aws_route_table" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/variables.tf", + "/examples/networking/versions.tf", + "/examples/networking/regions.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT28", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_vpc", + "aws_route_table", + "aws_route_table_association", + "aws_subnet", + "aws_internet_gateway" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT29", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_db_subnet_group", + "aws_db_instance" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/sg.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT30", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/subnets.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT31", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_subnet" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/s3-api-gateway-integration/terraform.template.tfvars", + "/examples/s3-api-gateway-integration/variables.tf", + "/examples/s3-api-gateway-integration/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT32", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_api_gateway_deployment", + "aws_iam_role_policy_attachment", + "aws_iam_role", + "aws_api_gateway_method", + "aws_api_gateway_integration", + "aws_api_gateway_rest_api", + "aws_iam_policy", + "aws_api_gateway_method_response", + "aws_api_gateway_integration_response", + "aws_api_gateway_resource" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/s3-cross-account-access/terraform.template.tfvars", + "/examples/s3-cross-account-access/variables.tf", + "/examples/s3-cross-account-access/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT33", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_s3_bucket_object", + "aws_s3_bucket" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sagemaker/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT34", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_s3_bucket_object", + "random_integer", + "aws_iam_role_policy_attachment", + "aws_iam_role", + "aws_sagemaker_endpoint", + "aws_iam_policy", + "aws_s3_bucket", + "aws_sagemaker_endpoint_configuration", + "aws_sagemaker_model" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/transit-gateway-cross-account-peering-attachment/terraform.template.tfvars", + "/examples/transit-gateway-cross-account-peering-attachment/variables.tf", + "/examples/transit-gateway-cross-account-peering-attachment/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT35", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_ec2_transit_gateway_peering_attachment", + "aws_ec2_transit_gateway", + "aws_ec2_transit_gateway_peering_attachment_accepter" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/transit-gateway-cross-account-vpc-attachment/terraform.template.tfvars", + "/examples/transit-gateway-cross-account-vpc-attachment/variables.tf", + "/examples/transit-gateway-cross-account-vpc-attachment/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT36", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_vpc", + "aws_ec2_transit_gateway_vpc_attachment", + "aws_ec2_transit_gateway_vpc_attachment_accepter", + "aws_ec2_transit_gateway", + "aws_subnet", + "aws_ram_principal_association", + "aws_ram_resource_share", + "aws_ram_resource_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/two-tier/outputs.tf", + "/examples/two-tier/terraform.template.tfvars", + "/examples/two-tier/variables.tf", + "/examples/two-tier/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT37", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_vpc", + "aws_key_pair", + "aws_route", + "aws_subnet", + "aws_instance", + "aws_internet_gateway", + "aws_elb" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/workspaces/variables.tf", + "/examples/workspaces/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT38", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_workspaces_directory", + "aws_vpc", + "aws_workspaces_workspace", + "aws_subnet", + "aws_kms_key", + "aws_directory_service_directory", + "aws_workspaces_ip_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-partition.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT39", + "status": "active", + "validate": true, + "resourceTypes": [ + "github_issue_label" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-service.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT40", + "status": "active", + "validate": true, + "resourceTypes": [ + "github_issue_label" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-workflow.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT41", + "status": "active", + "validate": true, + "resourceTypes": [ + "github_issue_label" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/apigateway/test-fixtures/apigateway-domain-name-truststore-1.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT42", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/apigatewayv2/test-fixtures/apigateway-domain-name-truststore-2.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT43", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/cloudfront/test-fixtures/cloudfront-public-key.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT44", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/dms/testdata/oracle_wallet_certificate.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT45", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/iam/test-fixtures/iam-ssl-unix-line-endings.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT46", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/iot/test-fixtures/iot-csr.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT47", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/worklink/test-fixtures/worklink-website-certificate-authority-association.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT48", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + } + ], + "testUser": "Shahin", + "source": "gitConnectorAwsTerraHashicorp" + } + ] +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/master-test.json b/validation/scenario-aws-terraform-hashicorp/master-test.json new file mode 100644 index 0000000..49cb577 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/master-test.json @@ -0,0 +1,8 @@ +{ + "contentVersion": "1.0.0.0", + "notification": [], + "masterSnapshot": "master-snapshot", + "fileType": "mastertest", + "connector": "gitConnectorRemote", + "remoteFile": "aws/terraform/master-compliance-test.json" +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT1 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT1 new file mode 100644 index 0000000..cc64dcd --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT1 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/alexa/outputs.tf", + "/examples/alexa/variables.tf", + "/examples/alexa/main.tf" + ], + "timestamp": 1642967657593, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/alexa/outputs.tf", + "/examples/alexa/variables.tf", + "/examples/alexa/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT1", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_lambda_permission", + "aws_lambda_function", + "aws_iam_role", + "aws_iam_role_policy" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT1", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_lambda_permission", + "name": "default", + "properties": { + "statement_id": "AllowExecutionFromAlexa", + "action": "lambda:InvokeFunction", + "function_name": "${aws_lambda_function.default.function_name}", + "principal": "alexa-appkit.amazon.com", + "compiletime_identity": "aws_lambda_permission.default" + } + }, + { + "type": "aws_lambda_function", + "name": "default", + "properties": { + "filename": "lambda_function.zip", + "source_code_hash": "${filebase64sha256(\"lambda_function.zip\")}", + "function_name": "terraform_lambda_alexa_example", + "role": "${aws_iam_role.default.arn}", + "handler": "lambda_function.lambda_handler", + "runtime": "python3.6", + "compiletime_identity": "aws_lambda_function.default" + } + }, + { + "type": "aws_iam_role", + "name": "default", + "properties": { + "name": "terraform_lambda_alexa_example", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Principal": { + "Service": "lambda.amazonaws.com" + }, + "Effect": "Allow", + "Sid": "" + } + ] + }, + "compiletime_identity": "aws_iam_role.default" + } + }, + { + "type": "aws_iam_role_policy", + "name": "default", + "properties": { + "name": "terraform_lambda_alexa_example", + "role": "${aws_iam_role.default.id}", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": "*" + } + ] + }, + "compiletime_identity": "aws_iam_role_policy.default" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT10 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT10 new file mode 100644 index 0000000..225b061 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT10 @@ -0,0 +1,129 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/count/outputs.tf", + "/examples/count/variables.tf", + "/examples/count/main.tf" + ], + "timestamp": 1642967657643, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/count/outputs.tf", + "/examples/count/variables.tf", + "/examples/count/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT10", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_elb", + "aws_instance" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT10", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "data": { + "aws_ami": { + "ubuntu": { + "most_recent": true, + "filter": [ + { + "name": "name", + "values": [ + "ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*" + ] + }, + { + "name": "virtualization-type", + "values": [ + "hvm" + ] + } + ], + "owners": [ + 99720109477 + ], + "compiletime_identity": "data.aws_ami.ubuntu" + } + } + }, + "resources": [ + { + "type": "aws_elb", + "name": "web", + "properties": { + "name": "terraform-example-elb", + "availability_zones": "${aws_instance.web.*.availability_zone}", + "listener": [ + { + "instance_port": 80, + "instance_protocol": "http", + "lb_port": 80, + "lb_protocol": "http" + } + ], + "instances": "${aws_instance.web.*.id}", + "compiletime_identity": "aws_elb.web" + } + }, + { + "type": "aws_instance", + "name": "web", + "properties": { + "instance_type": "t2.small", + "ami": "${data.aws_ami.ubuntu.id}", + "compiletime_identity": "aws_instance.web" + } + }, + { + "type": "aws_instance", + "name": "web", + "properties": { + "instance_type": "t2.small", + "ami": "${data.aws_ami.ubuntu.id}", + "compiletime_identity": "aws_instance.web" + } + }, + { + "type": "aws_instance", + "name": "web", + "properties": { + "instance_type": "t2.small", + "ami": "${data.aws_ami.ubuntu.id}", + "compiletime_identity": "aws_instance.web" + } + }, + { + "type": "aws_instance", + "name": "web", + "properties": { + "instance_type": "t2.small", + "ami": "${data.aws_ami.ubuntu.id}", + "compiletime_identity": "aws_instance.web" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT11 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT11 new file mode 100644 index 0000000..e7642e2 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT11 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/dx-gateway-cross-account-vgw-association/terraform.template.tfvars", + "/examples/dx-gateway-cross-account-vgw-association/variables.tf", + "/examples/dx-gateway-cross-account-vgw-association/main.tf" + ], + "timestamp": 1642967657647, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/dx-gateway-cross-account-vgw-association/terraform.template.tfvars", + "/examples/dx-gateway-cross-account-vgw-association/variables.tf", + "/examples/dx-gateway-cross-account-vgw-association/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT11", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_vpc", + "aws_dx_gateway", + "aws_dx_gateway_association", + "aws_dx_gateway_association_proposal", + "aws_vpn_gateway" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT11", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "alias": "first", + "region": "${var.aws_region}", + "access_key": "${var.aws_first_access_key}", + "secret_key": "${var.aws_first_secret_key}" + } + }, + { + "aws": { + "alias": "second", + "region": "${var.aws_region}", + "access_key": "${var.aws_second_access_key}", + "secret_key": "${var.aws_second_secret_key}" + } + } + ], + "data": { + "aws_caller_identity": { + "first": { + "provider": "${aws.first}", + "compiletime_identity": "data.aws_caller_identity.first" + } + } + }, + "resources": [ + { + "type": "aws_vpc", + "name": "example", + "properties": { + "provider": "${aws.first}", + "cidr_block": "10.255.255.0/28", + "tags": { + "Name": "terraform-example" + }, + "compiletime_identity": "aws_vpc.example" + } + }, + { + "type": "aws_vpn_gateway", + "name": "example", + "properties": { + "provider": "${aws.first}", + "vpc_id": "${aws_vpc.example.id}", + "tags": { + "Name": "terraform-example" + }, + "compiletime_identity": "aws_vpn_gateway.example" + } + }, + { + "type": "aws_dx_gateway_association_proposal", + "name": "example", + "properties": { + "provider": "${aws.first}", + "dx_gateway_id": "${aws_dx_gateway.example.id}", + "dx_gateway_owner_account_id": "${aws_dx_gateway.example.owner_account_id}", + "associated_gateway_id": "${aws_vpn_gateway.example.id}", + "compiletime_identity": "aws_dx_gateway_association_proposal.example" + } + }, + { + "type": "aws_dx_gateway_association", + "name": "example", + "properties": { + "provider": "${aws.second}", + "proposal_id": "${aws_dx_gateway_association_proposal.example.id}", + "dx_gateway_id": "${aws_dx_gateway.example.id}", + "associated_gateway_owner_account_id": "${data.aws_caller_identity.first.account_id}", + "compiletime_identity": "aws_dx_gateway_association.example" + } + }, + { + "type": "aws_dx_gateway", + "name": "example", + "properties": { + "provider": "${aws.second}", + "name": "terraform-example", + "amazon_side_asn": 64512, + "compiletime_identity": "aws_dx_gateway.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT12 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT12 new file mode 100644 index 0000000..2e0c77c --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT12 @@ -0,0 +1,466 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/ecs-alb/outputs.tf", + "/examples/ecs-alb/terraform.template.tfvars", + "/examples/ecs-alb/variables.tf", + "/examples/ecs-alb/main.tf" + ], + "timestamp": 1642967657651, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/ecs-alb/outputs.tf", + "/examples/ecs-alb/terraform.template.tfvars", + "/examples/ecs-alb/variables.tf", + "/examples/ecs-alb/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT12", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_autoscaling_group", + "aws_security_group", + "aws_vpc", + "aws_iam_role_policy", + "aws_route_table", + "aws_ecs_cluster", + "aws_route_table_association", + "aws_ecs_service", + "aws_ecs_task_definition", + "aws_iam_role", + "aws_cloudwatch_log_group", + "aws_alb", + "aws_subnet", + "aws_iam_instance_profile", + "aws_alb_listener", + "aws_launch_configuration", + "aws_internet_gateway", + "aws_alb_target_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT12", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "data": { + "aws_availability_zones": { + "available": { + "compiletime_identity": "data.aws_availability_zones.available" + } + }, + "template_file": { + "instance_profile": { + "template": "${file(\"${path.module}/instance-profile-policy.json\")}", + "vars": { + "app_log_group_arn": "${aws_cloudwatch_log_group.app.arn}", + "ecs_log_group_arn": "${aws_cloudwatch_log_group.ecs.arn}" + }, + "compiletime_identity": "data.template_file.instance_profile" + } + }, + "aws_ami": { + "stable_coreos": { + "most_recent": true, + "filter": [ + { + "name": "description", + "values": [ + "CoreOS Container Linux stable *" + ] + }, + { + "name": "architecture", + "values": [ + "x86_64" + ] + }, + { + "name": "virtualization-type", + "values": [ + "hvm" + ] + } + ], + "owners": [ + 595879546273 + ], + "compiletime_identity": "data.aws_ami.stable_coreos" + } + } + }, + "resources": [ + { + "type": "aws_vpc", + "name": "main", + "properties": { + "cidr_block": "10.10.0.0/16", + "compiletime_identity": "aws_vpc.main" + } + }, + { + "type": "aws_subnet", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(aws_vpc.main.cidr_block,8,count.index)}", + "availability_zone": "${data.aws_availability_zones.available.names[count.index]}", + "vpc_id": "${aws_vpc.main.id}", + "compiletime_identity": "aws_subnet.main" + } + }, + { + "type": "aws_subnet", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(aws_vpc.main.cidr_block,8,count.index)}", + "availability_zone": "${data.aws_availability_zones.available.names[count.index]}", + "vpc_id": "${aws_vpc.main.id}", + "compiletime_identity": "aws_subnet.main" + } + }, + { + "type": "aws_internet_gateway", + "name": "gw", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "compiletime_identity": "aws_internet_gateway.gw" + } + }, + { + "type": "aws_route_table", + "name": "r", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "route": [ + { + "cidr_block": "0.0.0.0/0", + "gateway_id": "${aws_internet_gateway.gw.id}" + } + ], + "compiletime_identity": "aws_route_table.r" + } + }, + { + "type": "aws_route_table_association", + "name": "a", + "properties": { + "subnet_id": "element(aws_subnet.main.*.id,0)", + "route_table_id": "${aws_route_table.r.id}", + "compiletime_identity": "aws_route_table_association.a" + } + }, + { + "type": "aws_route_table_association", + "name": "a", + "properties": { + "subnet_id": "element(aws_subnet.main.*.id,1)", + "route_table_id": "${aws_route_table.r.id}", + "compiletime_identity": "aws_route_table_association.a" + } + }, + { + "type": "aws_autoscaling_group", + "name": "app", + "properties": { + "name": "tf-test-asg", + "vpc_zone_identifier": "${aws_subnet.main.*.id}", + "min_size": "1", + "max_size": "2", + "desired_capacity": "1", + "launch_configuration": "${aws_launch_configuration.app.name}", + "compiletime_identity": "aws_autoscaling_group.app" + } + }, + { + "type": "aws_launch_configuration", + "name": "app", + "properties": { + "security_groups": [ + "${aws_security_group.instance_sg.id}" + ], + "key_name": "terraform-aws-provider-example", + "image_id": "${data.aws_ami.stable_coreos.id}", + "instance_type": "t2.small", + "iam_instance_profile": "${aws_iam_instance_profile.app.name}", + "user_data": "${data.template_file.cloud_config.rendered}", + "associate_public_ip_address": true, + "lifecycle": [ + { + "create_before_destroy": true + } + ], + "compiletime_identity": "aws_launch_configuration.app" + } + }, + { + "type": "aws_security_group", + "name": "lb_sg", + "properties": { + "description": "controls access to the application ELB", + "vpc_id": "${aws_vpc.main.id}", + "name": "tf-ecs-lbsg", + "ingress": [ + { + "protocol": "tcp", + "from_port": 80, + "to_port": 80, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "compiletime_identity": "aws_security_group.lb_sg" + } + }, + { + "type": "aws_security_group", + "name": "instance_sg", + "properties": { + "description": "controls direct access to application instances", + "vpc_id": "${aws_vpc.main.id}", + "name": "tf-ecs-instsg", + "ingress": [ + { + "protocol": "tcp", + "from_port": 22, + "to_port": 22, + "cidr_blocks": [ + "1.2.3.4/32" + ] + }, + { + "protocol": "tcp", + "from_port": 32768, + "to_port": 61000, + "security_groups": [ + "${aws_security_group.lb_sg.id}" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "compiletime_identity": "aws_security_group.instance_sg" + } + }, + { + "type": "aws_ecs_cluster", + "name": "main", + "properties": { + "name": "terraform_example_ecs_cluster", + "compiletime_identity": "aws_ecs_cluster.main" + } + }, + { + "type": "aws_ecs_task_definition", + "name": "ghost", + "properties": { + "family": "tf_example_ghost_td", + "container_definitions": "${data.template_file.task_definition.rendered}", + "compiletime_identity": "aws_ecs_task_definition.ghost" + } + }, + { + "type": "aws_ecs_service", + "name": "test", + "properties": { + "name": "tf-example-ecs-ghost", + "cluster": "${aws_ecs_cluster.main.id}", + "task_definition": "${aws_ecs_task_definition.ghost.arn}", + "desired_count": "1", + "iam_role": "${aws_iam_role.ecs_service.name}", + "load_balancer": [ + { + "target_group_arn": "${aws_alb_target_group.test.id}", + "container_name": "ghost", + "container_port": 2368 + } + ], + "depends_on": [ + "${aws_iam_role_policy.ecs_service}", + "${aws_alb_listener.front_end}" + ], + "compiletime_identity": "aws_ecs_service.test" + } + }, + { + "type": "aws_iam_role", + "name": "ecs_service", + "properties": { + "name": "tf_example_ecs_role", + "assume_role_policy": { + "Version": "2008-10-17", + "Statement": [ + { + "Sid": "", + "Effect": "Allow", + "Principal": { + "Service": "ecs.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "compiletime_identity": "aws_iam_role.ecs_service" + } + }, + { + "type": "aws_iam_role", + "name": "app_instance", + "properties": { + "name": "tf-ecs-example-instance-role", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "", + "Effect": "Allow", + "Principal": { + "Service": "ec2.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "compiletime_identity": "aws_iam_role.app_instance" + } + }, + { + "type": "aws_iam_role_policy", + "name": "ecs_service", + "properties": { + "name": "tf_example_ecs_policy", + "role": "${aws_iam_role.ecs_service.name}", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ec2:Describe*", + "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", + "elasticloadbalancing:DeregisterTargets", + "elasticloadbalancing:Describe*", + "elasticloadbalancing:RegisterInstancesWithLoadBalancer", + "elasticloadbalancing:RegisterTargets" + ], + "Resource": "*" + } + ] + }, + "compiletime_identity": "aws_iam_role_policy.ecs_service" + } + }, + { + "type": "aws_iam_role_policy", + "name": "instance", + "properties": { + "name": "TfEcsExampleInstanceRole", + "role": "${aws_iam_role.app_instance.name}", + "policy": "${data.template_file.instance_profile.rendered}", + "compiletime_identity": "aws_iam_role_policy.instance" + } + }, + { + "type": "aws_iam_instance_profile", + "name": "app", + "properties": { + "name": "tf-ecs-instprofile", + "role": "${aws_iam_role.app_instance.name}", + "compiletime_identity": "aws_iam_instance_profile.app" + } + }, + { + "type": "aws_alb_target_group", + "name": "test", + "properties": { + "name": "tf-example-ecs-ghost", + "port": 8080, + "protocol": "HTTP", + "vpc_id": "${aws_vpc.main.id}", + "compiletime_identity": "aws_alb_target_group.test" + } + }, + { + "type": "aws_alb", + "name": "main", + "properties": { + "name": "tf-example-alb-ecs", + "subnets": "${aws_subnet.main.*.id}", + "security_groups": [ + "${aws_security_group.lb_sg.id}" + ], + "compiletime_identity": "aws_alb.main" + } + }, + { + "type": "aws_alb_listener", + "name": "front_end", + "properties": { + "load_balancer_arn": "${aws_alb.main.id}", + "port": 80, + "protocol": "HTTP", + "default_action": [ + { + "target_group_arn": "${aws_alb_target_group.test.id}", + "type": "forward" + } + ], + "compiletime_identity": "aws_alb_listener.front_end" + } + }, + { + "type": "aws_cloudwatch_log_group", + "name": "ecs", + "properties": { + "name": "tf-ecs-group/ecs-agent", + "compiletime_identity": "aws_cloudwatch_log_group.ecs" + } + }, + { + "type": "aws_cloudwatch_log_group", + "name": "app", + "properties": { + "name": "tf-ecs-group/app-ghost", + "compiletime_identity": "aws_cloudwatch_log_group.app" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT13 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT13 new file mode 100644 index 0000000..dceb5ee --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT13 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/eip/outputs.tf", + "/examples/eip/terraform.template.tfvars", + "/examples/eip/variables.tf", + "/examples/eip/main.tf" + ], + "timestamp": 1642967657655, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eip/outputs.tf", + "/examples/eip/terraform.template.tfvars", + "/examples/eip/variables.tf", + "/examples/eip/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT13", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_eip", + "aws_instance" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT13", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_eip", + "name": "default", + "properties": { + "instance": "${aws_instance.web.id}", + "vpc": true, + "compiletime_identity": "aws_eip.default" + } + }, + { + "type": "aws_security_group", + "name": "default", + "properties": { + "name": "eip_example", + "description": "Used in the terraform", + "ingress": [ + { + "from_port": 22, + "to_port": 22, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + }, + { + "from_port": 80, + "to_port": 80, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "compiletime_identity": "aws_security_group.default" + } + }, + { + "type": "aws_instance", + "name": "web", + "properties": { + "instance_type": "t2.micro", + "ami": "${var.aws_amis[var.aws_region]}", + "key_name": "terraform-aws-provider-example", + "security_groups": [ + "${aws_security_group.default.name}" + ], + "user_data": "${file(\"userdata.sh\")}", + "tags": { + "Name": "eip-example" + }, + "compiletime_identity": "aws_instance.web" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT14 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT14 new file mode 100644 index 0000000..c817ac0 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT14 @@ -0,0 +1,143 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/eks-cluster.tf" + ], + "timestamp": 1642967657659, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/eks-cluster.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT14", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_iam_role_policy_attachment", + "aws_iam_role", + "aws_eks_cluster", + "aws_security_group_rule" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT14", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_iam_role", + "name": "demo-cluster", + "properties": { + "name": "terraform-eks-demo-cluster", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "eks.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "compiletime_identity": "aws_iam_role.demo-cluster" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "demo-cluster-AmazonEKSClusterPolicy", + "properties": { + "policy_arn": "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy", + "role": "${aws_iam_role.demo-cluster.name}", + "compiletime_identity": "aws_iam_role_policy_attachment.demo-cluster-AmazonEKSClusterPolicy" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "demo-cluster-AmazonEKSVPCResourceController", + "properties": { + "policy_arn": "arn:aws:iam::aws:policy/AmazonEKSVPCResourceController", + "role": "${aws_iam_role.demo-cluster.name}", + "compiletime_identity": "aws_iam_role_policy_attachment.demo-cluster-AmazonEKSVPCResourceController" + } + }, + { + "type": "aws_security_group", + "name": "demo-cluster", + "properties": { + "name": "terraform-eks-demo-cluster", + "description": "Cluster communication with worker nodes", + "vpc_id": "${aws_vpc.demo.id}", + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "tags": { + "Name": "terraform-eks-demo" + }, + "compiletime_identity": "aws_security_group.demo-cluster" + } + }, + { + "type": "aws_security_group_rule", + "name": "demo-cluster-ingress-workstation-https", + "properties": { + "cidr_blocks": [ + "${local.workstation-external-cidr}" + ], + "description": "Allow workstation to communicate with the cluster API Server", + "from_port": 443, + "protocol": "tcp", + "security_group_id": "${aws_security_group.demo-cluster.id}", + "to_port": 443, + "type": "ingress", + "compiletime_identity": "aws_security_group_rule.demo-cluster-ingress-workstation-https" + } + }, + { + "type": "aws_eks_cluster", + "name": "demo", + "properties": { + "name": "terraform-eks-demo", + "role_arn": "${aws_iam_role.demo-cluster.arn}", + "vpc_config": [ + { + "security_group_ids": [ + "${aws_security_group.demo-cluster.id}" + ], + "subnet_ids": "${aws_subnet.demo[*].id}" + } + ], + "depends_on": [ + "${aws_iam_role_policy_attachment.demo-cluster-AmazonEKSClusterPolicy}", + "${aws_iam_role_policy_attachment.demo-cluster-AmazonEKSVPCResourceController}" + ], + "compiletime_identity": "aws_eks_cluster.demo" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT15 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT15 new file mode 100644 index 0000000..f69ebef --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT15 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/eks-worker-nodes.tf" + ], + "timestamp": 1642967657662, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/eks-worker-nodes.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT15", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_iam_role", + "aws_iam_role_policy_attachment", + "aws_eks_node_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT15", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_iam_role", + "name": "demo-node", + "properties": { + "name": "terraform-eks-demo-node", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "ec2.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "compiletime_identity": "aws_iam_role.demo-node" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "demo-node-AmazonEKSWorkerNodePolicy", + "properties": { + "policy_arn": "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy", + "role": "${aws_iam_role.demo-node.name}", + "compiletime_identity": "aws_iam_role_policy_attachment.demo-node-AmazonEKSWorkerNodePolicy" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "demo-node-AmazonEKS_CNI_Policy", + "properties": { + "policy_arn": "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy", + "role": "${aws_iam_role.demo-node.name}", + "compiletime_identity": "aws_iam_role_policy_attachment.demo-node-AmazonEKS_CNI_Policy" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "demo-node-AmazonEC2ContainerRegistryReadOnly", + "properties": { + "policy_arn": "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly", + "role": "${aws_iam_role.demo-node.name}", + "compiletime_identity": "aws_iam_role_policy_attachment.demo-node-AmazonEC2ContainerRegistryReadOnly" + } + }, + { + "type": "aws_eks_node_group", + "name": "demo", + "properties": { + "cluster_name": "${aws_eks_cluster.demo.name}", + "node_group_name": "demo", + "node_role_arn": "${aws_iam_role.demo-node.arn}", + "subnet_ids": "${aws_subnet.demo[*].id}", + "scaling_config": [ + { + "desired_size": 1, + "max_size": 1, + "min_size": 1 + } + ], + "depends_on": [ + "${aws_iam_role_policy_attachment.demo-node-AmazonEKSWorkerNodePolicy}", + "${aws_iam_role_policy_attachment.demo-node-AmazonEKS_CNI_Policy}", + "${aws_iam_role_policy_attachment.demo-node-AmazonEC2ContainerRegistryReadOnly}" + ], + "compiletime_identity": "aws_eks_node_group.demo" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT16 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT16 new file mode 100644 index 0000000..b7f035c --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT16 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/vpc.tf" + ], + "timestamp": 1642967657665, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eks-getting-started/outputs.tf", + "/examples/eks-getting-started/providers.tf", + "/examples/eks-getting-started/variables.tf", + "/examples/eks-getting-started/workstation-external-ip.tf", + "/examples/eks-getting-started/vpc.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT16", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_vpc", + "aws_route_table", + "aws_route_table_association", + "aws_subnet", + "aws_internet_gateway" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT16", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_vpc", + "name": "demo", + "properties": { + "cidr_block": "10.0.0.0/16", + "tags": "${tomap({'Name': 'terraform-eks-demo-node', 'kubernetes.io/cluster/terraform-eks-demo': 'shared'})}", + "compiletime_identity": "aws_vpc.demo" + } + }, + { + "type": "aws_subnet", + "name": "demo", + "properties": { + "availability_zone": "${data.aws_availability_zones.available.names[count.index]}", + "cidr_block": "10.0.0.0/24", + "map_public_ip_on_launch": true, + "vpc_id": "${aws_vpc.demo.id}", + "tags": "${tomap({'Name': 'terraform-eks-demo-node', 'kubernetes.io/cluster/terraform-eks-demo': 'shared'})}", + "compiletime_identity": "aws_subnet.demo" + } + }, + { + "type": "aws_subnet", + "name": "demo", + "properties": { + "availability_zone": "${data.aws_availability_zones.available.names[count.index]}", + "cidr_block": "10.0.1.0/24", + "map_public_ip_on_launch": true, + "vpc_id": "${aws_vpc.demo.id}", + "tags": "${tomap({'Name': 'terraform-eks-demo-node', 'kubernetes.io/cluster/terraform-eks-demo': 'shared'})}", + "compiletime_identity": "aws_subnet.demo" + } + }, + { + "type": "aws_internet_gateway", + "name": "demo", + "properties": { + "vpc_id": "${aws_vpc.demo.id}", + "tags": { + "Name": "terraform-eks-demo" + }, + "compiletime_identity": "aws_internet_gateway.demo" + } + }, + { + "type": "aws_route_table", + "name": "demo", + "properties": { + "vpc_id": "${aws_vpc.demo.id}", + "route": [ + { + "cidr_block": "0.0.0.0/0", + "gateway_id": "${aws_internet_gateway.demo.id}" + } + ], + "compiletime_identity": "aws_route_table.demo" + } + }, + { + "type": "aws_route_table_association", + "name": "demo", + "properties": { + "subnet_id": "${aws_subnet.demo.*.id[count.index]}", + "route_table_id": "${aws_route_table.demo.id}", + "compiletime_identity": "aws_route_table_association.demo" + } + }, + { + "type": "aws_route_table_association", + "name": "demo", + "properties": { + "subnet_id": "${aws_subnet.demo.*.id[count.index]}", + "route_table_id": "${aws_route_table.demo.id}", + "compiletime_identity": "aws_route_table_association.demo" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT17 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT17 new file mode 100644 index 0000000..543876e --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT17 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/elasticsearch-domain/variables.tf", + "/examples/elasticsearch-domain/main.tf" + ], + "timestamp": 1642967657669, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/elasticsearch-domain/variables.tf", + "/examples/elasticsearch-domain/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT17", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_elasticsearch_domain" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT17", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "data": { + "aws_region": { + "current": { + "compiletime_identity": "data.aws_region.current" + } + }, + "aws_caller_identity": { + "current": { + "compiletime_identity": "data.aws_caller_identity.current" + } + } + }, + "resources": [ + { + "type": "aws_elasticsearch_domain", + "name": "test", + "properties": { + "domain_name": "elasticsearch-domain-test", + "elasticsearch_version": 7.1, + "cluster_config": [ + { + "instance_type": "r5.large.elasticsearch" + } + ], + "advanced_security_options": [ + { + "enabled": true, + "internal_user_database_enabled": true, + "master_user_options": [ + { + "master_user_name": "test_master_user", + "master_user_password": "Barbarbarbar1!" + } + ] + } + ], + "encrypt_at_rest": [ + { + "enabled": true + } + ], + "domain_endpoint_options": [ + { + "enforce_https": true, + "tls_security_policy": "Policy-Min-TLS-1-2-2019-07" + } + ], + "node_to_node_encryption": [ + { + "enabled": true + } + ], + "ebs_options": [ + { + "ebs_enabled": true, + "volume_size": 10 + } + ], + "access_policies": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "AWS": "*" + }, + "Action": "es:*", + "Resource": "arn:aws:es:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:domain/elasticsearch-domain-test/*" + } + ] + }, + "compiletime_identity": "aws_elasticsearch_domain.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT18 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT18 new file mode 100644 index 0000000..f631adf --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT18 @@ -0,0 +1,259 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/elb/outputs.tf", + "/examples/elb/terraform.template.tfvars", + "/examples/elb/variables.tf", + "/examples/elb/main.tf" + ], + "timestamp": 1642967657672, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/elb/outputs.tf", + "/examples/elb/terraform.template.tfvars", + "/examples/elb/variables.tf", + "/examples/elb/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT18", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_vpc", + "aws_route_table", + "aws_route_table_association", + "aws_subnet", + "aws_lb_cookie_stickiness_policy", + "aws_instance", + "aws_internet_gateway", + "aws_elb" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT18", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_vpc", + "name": "default", + "properties": { + "cidr_block": "10.0.0.0/16", + "enable_dns_hostnames": true, + "tags": { + "Name": "tf_test" + }, + "compiletime_identity": "aws_vpc.default" + } + }, + { + "type": "aws_subnet", + "name": "tf_test_subnet", + "properties": { + "vpc_id": "${aws_vpc.default.id}", + "cidr_block": "10.0.0.0/24", + "map_public_ip_on_launch": true, + "tags": { + "Name": "tf_test_subnet" + }, + "compiletime_identity": "aws_subnet.tf_test_subnet" + } + }, + { + "type": "aws_internet_gateway", + "name": "gw", + "properties": { + "vpc_id": "${aws_vpc.default.id}", + "tags": { + "Name": "tf_test_ig" + }, + "compiletime_identity": "aws_internet_gateway.gw" + } + }, + { + "type": "aws_route_table", + "name": "r", + "properties": { + "vpc_id": "${aws_vpc.default.id}", + "route": [ + { + "cidr_block": "0.0.0.0/0", + "gateway_id": "${aws_internet_gateway.gw.id}" + } + ], + "tags": { + "Name": "aws_route_table" + }, + "compiletime_identity": "aws_route_table.r" + } + }, + { + "type": "aws_route_table_association", + "name": "a", + "properties": { + "subnet_id": "${aws_subnet.tf_test_subnet.id}", + "route_table_id": "${aws_route_table.r.id}", + "compiletime_identity": "aws_route_table_association.a" + } + }, + { + "type": "aws_security_group", + "name": "default", + "properties": { + "name": "instance_sg", + "description": "Used in the terraform", + "vpc_id": "${aws_vpc.default.id}", + "ingress": [ + { + "from_port": 22, + "to_port": 22, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + }, + { + "from_port": 80, + "to_port": 80, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "compiletime_identity": "aws_security_group.default" + } + }, + { + "type": "aws_security_group", + "name": "elb", + "properties": { + "name": "elb_sg", + "description": "Used in the terraform", + "vpc_id": "${aws_vpc.default.id}", + "ingress": [ + { + "from_port": 80, + "to_port": 80, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "depends_on": [ + "${aws_internet_gateway.gw}" + ], + "compiletime_identity": "aws_security_group.elb" + } + }, + { + "type": "aws_elb", + "name": "web", + "properties": { + "name": "example-elb", + "subnets": [ + "${aws_subnet.tf_test_subnet.id}" + ], + "security_groups": [ + "${aws_security_group.elb.id}" + ], + "listener": [ + { + "instance_port": 80, + "instance_protocol": "http", + "lb_port": 80, + "lb_protocol": "http" + } + ], + "health_check": [ + { + "healthy_threshold": 2, + "unhealthy_threshold": 2, + "timeout": 3, + "target": "HTTP:80/", + "interval": 30 + } + ], + "instances": [ + "${aws_instance.web.id}" + ], + "cross_zone_load_balancing": true, + "idle_timeout": 400, + "connection_draining": true, + "connection_draining_timeout": 400, + "compiletime_identity": "aws_elb.web" + } + }, + { + "type": "aws_lb_cookie_stickiness_policy", + "name": "default", + "properties": { + "name": "lbpolicy", + "load_balancer": "${aws_elb.web.id}", + "lb_port": 80, + "cookie_expiration_period": 600, + "compiletime_identity": "aws_lb_cookie_stickiness_policy.default" + } + }, + { + "type": "aws_instance", + "name": "web", + "properties": { + "instance_type": "t2.micro", + "ami": "${var.aws_amis[var.aws_region]}", + "key_name": "terraform-aws-provider-example", + "vpc_security_group_ids": [ + "${aws_security_group.default.id}" + ], + "subnet_id": "${aws_subnet.tf_test_subnet.id}", + "user_data": "${file(\"userdata.sh\")}", + "tags": { + "Name": "elb-example" + }, + "compiletime_identity": "aws_instance.web" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT19 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT19 new file mode 100644 index 0000000..ed51139 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT19 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/events/kinesis/outputs.tf", + "/examples/events/kinesis/variables.tf", + "/examples/events/kinesis/main.tf" + ], + "timestamp": 1642967657681, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/events/kinesis/outputs.tf", + "/examples/events/kinesis/variables.tf", + "/examples/events/kinesis/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT19", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_iam_role_policy", + "aws_iam_role", + "aws_cloudwatch_event_rule", + "aws_kinesis_stream", + "aws_cloudwatch_event_target" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT19", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_cloudwatch_event_rule", + "name": "foo", + "properties": { + "name": "tf-example-cloudwatch-event-rule-for-kinesis", + "event_pattern": { + "detail-type": [ + "AWS API Call via CloudTrail" + ], + "detail": { + "eventSource": [ + "autoscaling.amazonaws.com" + ] + } + }, + "role_arn": "${aws_iam_role.role.arn}", + "compiletime_identity": "aws_cloudwatch_event_rule.foo" + } + }, + { + "type": "aws_iam_role", + "name": "role", + "properties": { + "name": "tf-example-iam-role-for-kinesis", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Principal": { + "Service": "events.amazonaws.com" + }, + "Effect": "Allow", + "Sid": "" + } + ] + }, + "compiletime_identity": "aws_iam_role.role" + } + }, + { + "type": "aws_iam_role_policy", + "name": "policy", + "properties": { + "name": "tf-example-policy", + "role": "${aws_iam_role.role.id}", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "kinesis:PutRecord", + "kinesis:PutRecords" + ], + "Resource": [ + "*" + ], + "Effect": "Allow" + } + ] + }, + "compiletime_identity": "aws_iam_role_policy.policy" + } + }, + { + "type": "aws_cloudwatch_event_target", + "name": "foobar", + "properties": { + "rule": "${aws_cloudwatch_event_rule.foo.name}", + "target_id": "tf-example-cloudwatch-event-target-for-kinesis", + "arn": "${aws_kinesis_stream.foo.arn}", + "compiletime_identity": "aws_cloudwatch_event_target.foobar" + } + }, + { + "type": "aws_kinesis_stream", + "name": "foo", + "properties": { + "name": "tf-example-kinesis-stream", + "shard_count": 1, + "compiletime_identity": "aws_kinesis_stream.foo" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT2 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT2 new file mode 100644 index 0000000..7748625 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT2 @@ -0,0 +1,68 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/domain.tf" + ], + "timestamp": 1642967657596, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/domain.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT2", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_api_gateway_base_path_mapping", + "aws_api_gateway_domain_name" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT2", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_api_gateway_domain_name", + "name": "example", + "properties": { + "domain_name": "${aws_acm_certificate.example.domain_name}", + "regional_certificate_arn": "${aws_acm_certificate.example.arn}", + "endpoint_configuration": [ + { + "types": [ + "REGIONAL" + ] + } + ], + "compiletime_identity": "aws_api_gateway_domain_name.example" + } + }, + { + "type": "aws_api_gateway_base_path_mapping", + "name": "example", + "properties": { + "api_id": "${aws_api_gateway_rest_api.example.id}", + "domain_name": "${aws_api_gateway_domain_name.example.domain_name}", + "stage_name": "${aws_api_gateway_stage.example.stage_name}", + "compiletime_identity": "aws_api_gateway_base_path_mapping.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT20 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT20 new file mode 100644 index 0000000..0c8062c --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT20 @@ -0,0 +1,87 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/events/sns/outputs.tf", + "/examples/events/sns/variables.tf", + "/examples/events/sns/main.tf" + ], + "timestamp": 1642967657685, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/events/sns/outputs.tf", + "/examples/events/sns/variables.tf", + "/examples/events/sns/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT20", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_cloudwatch_event_target", + "aws_sns_topic", + "aws_cloudwatch_event_rule" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT20", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_cloudwatch_event_rule", + "name": "foo", + "properties": { + "name": "tf-example-cloudwatch-event-rule-for-sns", + "event_pattern": { + "detail-type": [ + "AWS API Call via CloudTrail" + ], + "detail": { + "eventSource": [ + "cloudtrail.amazonaws.com" + ] + } + }, + "compiletime_identity": "aws_cloudwatch_event_rule.foo" + } + }, + { + "type": "aws_cloudwatch_event_target", + "name": "bar", + "properties": { + "rule": "${aws_cloudwatch_event_rule.foo.name}", + "target_id": "tf-example-cloudwatch-event-target-for-sns", + "arn": "${aws_sns_topic.foo.arn}", + "compiletime_identity": "aws_cloudwatch_event_target.bar" + } + }, + { + "type": "aws_sns_topic", + "name": "foo", + "properties": { + "name": "tf-example-sns-topic", + "compiletime_identity": "aws_sns_topic.foo" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT21 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT21 new file mode 100644 index 0000000..b12a05d --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT21 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/lambda/outputs.tf", + "/examples/lambda/variables.tf", + "/examples/lambda/main.tf" + ], + "timestamp": 1642967657689, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/lambda/outputs.tf", + "/examples/lambda/variables.tf", + "/examples/lambda/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT21", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_iam_role", + "aws_lambda_function" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT21", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + }, + { + "archive": {} + } + ], + "data": { + "archive_file": { + "zip": { + "type": "zip", + "source_file": "hello_lambda.py", + "output_path": "hello_lambda.zip", + "compiletime_identity": "data.archive_file.zip" + } + }, + "aws_iam_policy_document": { + "policy": { + "statement": [ + { + "sid": "", + "effect": "Allow", + "principals": [ + { + "identifiers": [ + "lambda.amazonaws.com" + ], + "type": "Service" + } + ], + "actions": [ + "sts:AssumeRole" + ] + } + ], + "compiletime_identity": "data.aws_iam_policy_document.policy" + } + } + }, + "resources": [ + { + "type": "aws_iam_role", + "name": "iam_for_lambda", + "properties": { + "name": "iam_for_lambda", + "assume_role_policy": "${data.aws_iam_policy_document.policy.json}", + "compiletime_identity": "aws_iam_role.iam_for_lambda" + } + }, + { + "type": "aws_lambda_function", + "name": "lambda", + "properties": { + "function_name": "hello_lambda", + "filename": "hello_lambda.zip", + "source_code_hash": "${data.archive_file.zip.output_base64sha256}", + "role": "${aws_iam_role.iam_for_lambda.arn}", + "handler": "hello_lambda.lambda_handler", + "runtime": "python3.6", + "environment": [ + { + "variables": { + "greeting": "Hello" + } + } + ], + "compiletime_identity": "aws_lambda_function.lambda" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT22 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT22 new file mode 100644 index 0000000..eb9452d --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT22 @@ -0,0 +1,285 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/lambda-file-systems/outputs.tf", + "/examples/lambda-file-systems/variables.tf", + "/examples/lambda-file-systems/main.tf" + ], + "timestamp": 1642967657694, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/lambda-file-systems/outputs.tf", + "/examples/lambda-file-systems/variables.tf", + "/examples/lambda-file-systems/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT22", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_default_vpc", + "aws_efs_file_system", + "aws_iam_role_policy_attachment", + "aws_iam_role", + "aws_efs_mount_target", + "aws_default_security_group", + "aws_lambda_function", + "aws_efs_access_point", + "aws_default_subnet" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT22", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + }, + { + "archive": {} + } + ], + "data": { + "archive_file": { + "zip": { + "type": "zip", + "source_file": "hello_lambda.py", + "output_path": "hello_lambda.zip", + "compiletime_identity": "data.archive_file.zip" + } + }, + "aws_iam_policy_document": { + "assume_role_policy": { + "statement": [ + { + "sid": "", + "effect": "Allow", + "principals": [ + { + "identifiers": [ + "lambda.amazonaws.com" + ], + "type": "Service" + } + ], + "actions": [ + "sts:AssumeRole" + ] + } + ], + "compiletime_identity": "data.aws_iam_policy_document.assume_role_policy" + } + }, + "aws_partition": { + "current": { + "compiletime_identity": "data.aws_partition.current" + } + }, + "aws_iam_policy": { + "AmazonElasticFileSystemClientFullAccess": { + "arn": "arn:${data.aws_partition.current.partition}:iam::aws:policy/AmazonElasticFileSystemClientFullAccess" + } + }, + "aws_availability_zones": { + "available": { + "state": "available", + "compiletime_identity": "data.aws_availability_zones.available" + } + } + }, + "resources": [ + { + "type": "aws_iam_role", + "name": "iam_role_for_lambda", + "properties": { + "assume_role_policy": "${data.aws_iam_policy_document.assume_role_policy.json}", + "compiletime_identity": "aws_iam_role.iam_role_for_lambda" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "AWSLambdaVPCAccessExecutionRole-attach", + "properties": { + "role": "${aws_iam_role.iam_role_for_lambda.name}", + "policy_arn": "${data.aws_iam_policy.AWSLambdaVPCAccessExecutionRole.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.AWSLambdaVPCAccessExecutionRole-attach" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "AmazonElasticFileSystemClientFullAccess-attach", + "properties": { + "role": "${aws_iam_role.iam_role_for_lambda.name}", + "policy_arn": "arn:${data.aws_partition.current.partition}:iam::aws:policy/AmazonElasticFileSystemClientFullAccess", + "compiletime_identity": "aws_iam_role_policy_attachment.AmazonElasticFileSystemClientFullAccess-attach" + } + }, + { + "type": "aws_default_vpc", + "name": "default", + "properties": { + "compiletime_identity": "aws_default_vpc.default" + } + }, + { + "type": "aws_default_subnet", + "name": "default_az1", + "properties": { + "availability_zone": "${data.aws_availability_zones.available.names[0]}", + "compiletime_identity": "aws_default_subnet.default_az1" + } + }, + { + "type": "aws_default_subnet", + "name": "default_az2", + "properties": { + "availability_zone": "${data.aws_availability_zones.available.names[1]}", + "compiletime_identity": "aws_default_subnet.default_az2" + } + }, + { + "type": "aws_default_security_group", + "name": "default", + "properties": { + "vpc_id": "${aws_default_vpc.default.id}", + "ingress": [ + { + "protocol": -1, + "self": true, + "from_port": 0, + "to_port": 0 + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "compiletime_identity": "aws_default_security_group.default" + } + }, + { + "type": "aws_efs_file_system", + "name": "efs_for_lambda", + "properties": { + "tags": { + "Name": "efs_for_lambda" + }, + "compiletime_identity": "aws_efs_file_system.efs_for_lambda" + } + }, + { + "type": "aws_efs_mount_target", + "name": "mount_target_az1", + "properties": { + "file_system_id": "${aws_efs_file_system.efs_for_lambda.id}", + "subnet_id": "${aws_default_subnet.default_az1.id}", + "security_groups": [ + "${aws_default_security_group.default.id}" + ], + "compiletime_identity": "aws_efs_mount_target.mount_target_az1" + } + }, + { + "type": "aws_efs_mount_target", + "name": "mount_target_az2", + "properties": { + "file_system_id": "${aws_efs_file_system.efs_for_lambda.id}", + "subnet_id": "${aws_default_subnet.default_az2.id}", + "security_groups": [ + "${aws_default_security_group.default.id}" + ], + "compiletime_identity": "aws_efs_mount_target.mount_target_az2" + } + }, + { + "type": "aws_efs_access_point", + "name": "access_point_lambda", + "properties": { + "file_system_id": "${aws_efs_file_system.efs_for_lambda.id}", + "root_directory": [ + { + "path": "/lambda", + "creation_info": [ + { + "owner_gid": 1000, + "owner_uid": 1000, + "permissions": 777 + } + ] + } + ], + "posix_user": [ + { + "gid": 1000, + "uid": 1000 + } + ], + "compiletime_identity": "aws_efs_access_point.access_point_lambda" + } + }, + { + "type": "aws_lambda_function", + "name": "example_lambda", + "properties": { + "function_name": "hello_lambda", + "filename": "hello_lambda.zip", + "source_code_hash": "${data.archive_file.zip.output_base64sha256}", + "role": "${aws_iam_role.iam_role_for_lambda.arn}", + "handler": "hello_lambda.lambda_handler", + "runtime": "python3.7", + "timeout": 60, + "environment": [ + { + "variables": { + "greeting": "Hello" + } + } + ], + "vpc_config": [ + { + "subnet_ids": [ + "${aws_default_subnet.default_az1.id}", + "${aws_default_subnet.default_az2.id}" + ], + "security_group_ids": [ + "${aws_default_security_group.default.id}" + ] + } + ], + "file_system_config": [ + { + "arn": "${aws_efs_access_point.access_point_lambda.arn}", + "local_mount_path": "/mnt/efs" + } + ], + "depends_on": [ + "${aws_efs_mount_target.mount_target_az1}", + "${aws_efs_mount_target.mount_target_az2}" + ], + "compiletime_identity": "aws_lambda_function.example_lambda" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT23 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT23 new file mode 100644 index 0000000..9d1a79f --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT23 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/security_group.tf" + ], + "timestamp": 1642967657699, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/security_group.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT23", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT23", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_security_group", + "name": "region", + "properties": { + "name": "region", + "description": "Open access within this region", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "${aws_vpc.main.cidr_block}" + ] + } + ], + "compiletime_identity": "aws_security_group.region" + } + }, + { + "type": "aws_security_group", + "name": "internal-all", + "properties": { + "name": "internal-all", + "description": "Open access within the full internal network", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "10.0.0.0/16" + ] + } + ], + "compiletime_identity": "aws_security_group.internal-all" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT24 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT24 new file mode 100644 index 0000000..a66d5e3 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT24 @@ -0,0 +1,153 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/subnets.tf" + ], + "timestamp": 1642967657702, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/subnets.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT24", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_route_table_association", + "aws_subnet", + "aws_security_group", + "aws_route_table" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT24", + "collection": "terraformtemplate", + "json": { + "data": { + "aws_availability_zones": { + "all": { + "compiletime_identity": "data.aws_availability_zones.all" + } + } + }, + "resources": [ + { + "type": "aws_security_group", + "name": "az", + "properties": { + "name": "az-${data.aws_availability_zone.target.name}", + "description": "Open access within the AZ ${data.aws_availability_zone.target.name}", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "${aws_subnet.main.cidr_block}" + ] + } + ], + "availability_zone": "${data.aws_availability_zones.all.names[0]}", + "compiletime_identity": "module.primary_subnet" + } + }, + { + "type": "aws_security_group", + "name": "az", + "properties": { + "name": "az-${data.aws_availability_zone.target.name}", + "description": "Open access within the AZ ${data.aws_availability_zone.target.name}", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "${aws_subnet.main.cidr_block}" + ] + } + ], + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.secondary_subnet" + } + }, + { + "type": "aws_subnet", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(data.aws_vpc.target.cidr_block,2,var.az_numbers[data.aws_availability_zone.target.name_suffix])}", + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[0]}", + "compiletime_identity": "module.primary_subnet" + } + }, + { + "type": "aws_subnet", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(data.aws_vpc.target.cidr_block,2,var.az_numbers[data.aws_availability_zone.target.name_suffix])}", + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.secondary_subnet" + } + }, + { + "type": "aws_route_table", + "name": "main", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[0]}", + "compiletime_identity": "module.primary_subnet" + } + }, + { + "type": "aws_route_table", + "name": "main", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.secondary_subnet" + } + }, + { + "type": "aws_route_table_association", + "name": "main", + "properties": { + "subnet_id": "${aws_subnet.main.id}", + "route_table_id": "${aws_route_table.main.id}", + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[0]}", + "compiletime_identity": "module.primary_subnet" + } + }, + { + "type": "aws_route_table_association", + "name": "main", + "properties": { + "subnet_id": "${aws_subnet.main.id}", + "route_table_id": "${aws_route_table.main.id}", + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.secondary_subnet" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT25 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT25 new file mode 100644 index 0000000..3b17426 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT25 @@ -0,0 +1,58 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/vpc.tf" + ], + "timestamp": 1642967657706, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/region/outputs.tf", + "/examples/networking/region/terraform.template.tfvars", + "/examples/networking/region/variables.tf", + "/examples/networking/region/versions.tf", + "/examples/networking/region/vpc.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT25", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_vpc", + "aws_internet_gateway" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT25", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_vpc", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(var.base_cidr_block,4,var.region_numbers[var.region])}", + "compiletime_identity": "aws_vpc.main" + } + }, + { + "type": "aws_internet_gateway", + "name": "main", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "compiletime_identity": "aws_internet_gateway.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT26 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT26 new file mode 100644 index 0000000..270b401 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT26 @@ -0,0 +1,61 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/networking/subnet/outputs.tf", + "/examples/networking/subnet/terraform.template.tfvars", + "/examples/networking/subnet/variables.tf", + "/examples/networking/subnet/versions.tf", + "/examples/networking/subnet/security_group.tf" + ], + "timestamp": 1642967657708, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/subnet/outputs.tf", + "/examples/networking/subnet/terraform.template.tfvars", + "/examples/networking/subnet/variables.tf", + "/examples/networking/subnet/versions.tf", + "/examples/networking/subnet/security_group.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT26", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT26", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_security_group", + "name": "az", + "properties": { + "name": "az-${data.aws_availability_zone.target.name}", + "description": "Open access within the AZ ${data.aws_availability_zone.target.name}", + "vpc_id": "vpc-12345678", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "${aws_subnet.main.cidr_block}" + ] + } + ], + "compiletime_identity": "aws_security_group.az" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT27 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT27 new file mode 100644 index 0000000..0250cfc --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT27 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/networking/subnet/outputs.tf", + "/examples/networking/subnet/terraform.template.tfvars", + "/examples/networking/subnet/variables.tf", + "/examples/networking/subnet/versions.tf", + "/examples/networking/subnet/subnet.tf" + ], + "timestamp": 1642967657711, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/subnet/outputs.tf", + "/examples/networking/subnet/terraform.template.tfvars", + "/examples/networking/subnet/variables.tf", + "/examples/networking/subnet/versions.tf", + "/examples/networking/subnet/subnet.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT27", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_route_table_association", + "aws_subnet", + "aws_route_table" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT27", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_subnet", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(data.aws_vpc.target.cidr_block,2,var.az_numbers[data.aws_availability_zone.target.name_suffix])}", + "vpc_id": "vpc-12345678", + "availability_zone": "us-west-2a", + "compiletime_identity": "aws_subnet.main" + } + }, + { + "type": "aws_route_table", + "name": "main", + "properties": { + "vpc_id": "vpc-12345678", + "compiletime_identity": "aws_route_table.main" + } + }, + { + "type": "aws_route_table_association", + "name": "main", + "properties": { + "subnet_id": "${aws_subnet.main.id}", + "route_table_id": "${aws_route_table.main.id}", + "compiletime_identity": "aws_route_table_association.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT28 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT28 new file mode 100644 index 0000000..0bb54f0 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT28 @@ -0,0 +1,288 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/networking/variables.tf", + "/examples/networking/versions.tf", + "/examples/networking/regions.tf" + ], + "timestamp": 1642967657714, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/networking/variables.tf", + "/examples/networking/versions.tf", + "/examples/networking/regions.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT28", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_vpc", + "aws_route_table", + "aws_route_table_association", + "aws_subnet", + "aws_internet_gateway" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT28", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_security_group", + "name": "region", + "properties": { + "name": "region", + "description": "Open access within this region", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "${aws_vpc.main.cidr_block}" + ] + } + ], + "region": "us-east-1", + "base_cidr_block": "10.0.0.0/22", + "compiletime_identity": "module.us-east-1" + } + }, + { + "type": "aws_security_group", + "name": "internal-all", + "properties": { + "name": "internal-all", + "description": "Open access within the full internal network", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "10.0.0.0/22" + ] + } + ], + "region": "us-east-1", + "base_cidr_block": "10.0.0.0/22", + "compiletime_identity": "module.us-east-1" + } + }, + { + "type": "aws_security_group", + "name": "az", + "properties": { + "name": "az-${data.aws_availability_zone.target.name}", + "description": "Open access within the AZ ${data.aws_availability_zone.target.name}", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "${cidrsubnet(data.aws_vpc.target.cidr_block,2,var.az_numbers[data.aws_availability_zone.target.name_suffix])}" + ] + } + ], + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.us-east-1", + "region": "us-east-1", + "base_cidr_block": "10.0.0.0/22" + } + }, + { + "type": "aws_security_group", + "name": "region", + "properties": { + "name": "region", + "description": "Open access within this region", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "${aws_vpc.main.cidr_block}" + ] + } + ], + "region": "us-west-2", + "base_cidr_block": "10.0.0.0/22", + "compiletime_identity": "module.us-west-2" + } + }, + { + "type": "aws_security_group", + "name": "internal-all", + "properties": { + "name": "internal-all", + "description": "Open access within the full internal network", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "10.0.0.0/22" + ] + } + ], + "region": "us-west-2", + "base_cidr_block": "10.0.0.0/22", + "compiletime_identity": "module.us-west-2" + } + }, + { + "type": "aws_security_group", + "name": "az", + "properties": { + "name": "az-${data.aws_availability_zone.target.name}", + "description": "Open access within the AZ ${data.aws_availability_zone.target.name}", + "vpc_id": "${aws_vpc.main.id}", + "ingress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "${cidrsubnet(data.aws_vpc.target.cidr_block,2,var.az_numbers[data.aws_availability_zone.target.name_suffix])}" + ] + } + ], + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.us-west-2", + "region": "us-west-2", + "base_cidr_block": "10.0.0.0/22" + } + }, + { + "type": "aws_subnet", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(data.aws_vpc.target.cidr_block,2,var.az_numbers[data.aws_availability_zone.target.name_suffix])}", + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.us-east-1", + "region": "us-east-1", + "base_cidr_block": "10.0.0.0/22" + } + }, + { + "type": "aws_subnet", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(data.aws_vpc.target.cidr_block,2,var.az_numbers[data.aws_availability_zone.target.name_suffix])}", + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.us-west-2", + "region": "us-west-2", + "base_cidr_block": "10.0.0.0/22" + } + }, + { + "type": "aws_route_table", + "name": "main", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.us-east-1", + "region": "us-east-1", + "base_cidr_block": "10.0.0.0/22" + } + }, + { + "type": "aws_route_table", + "name": "main", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.us-west-2", + "region": "us-west-2", + "base_cidr_block": "10.0.0.0/22" + } + }, + { + "type": "aws_route_table_association", + "name": "main", + "properties": { + "subnet_id": "${aws_subnet.main.id}", + "route_table_id": "${aws_route_table.main.id}", + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.us-east-1", + "region": "us-east-1", + "base_cidr_block": "10.0.0.0/22" + } + }, + { + "type": "aws_route_table_association", + "name": "main", + "properties": { + "subnet_id": "${aws_subnet.main.id}", + "route_table_id": "${aws_route_table.main.id}", + "vpc_id": "${aws_vpc.main.id}", + "availability_zone": "${data.aws_availability_zones.all.names[1]}", + "compiletime_identity": "module.us-west-2", + "region": "us-west-2", + "base_cidr_block": "10.0.0.0/22" + } + }, + { + "type": "aws_vpc", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(var.base_cidr_block,4,var.region_numbers[var.region])}", + "region": "us-east-1", + "base_cidr_block": "10.0.0.0/22", + "compiletime_identity": "module.us-east-1" + } + }, + { + "type": "aws_vpc", + "name": "main", + "properties": { + "cidr_block": "${cidrsubnet(var.base_cidr_block,4,var.region_numbers[var.region])}", + "region": "us-west-2", + "base_cidr_block": "10.0.0.0/22", + "compiletime_identity": "module.us-west-2" + } + }, + { + "type": "aws_internet_gateway", + "name": "main", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "region": "us-east-1", + "base_cidr_block": "10.0.0.0/22", + "compiletime_identity": "module.us-east-1" + } + }, + { + "type": "aws_internet_gateway", + "name": "main", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "region": "us-west-2", + "base_cidr_block": "10.0.0.0/22", + "compiletime_identity": "module.us-west-2" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT29 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT29 new file mode 100644 index 0000000..2b5f918 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT29 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/main.tf" + ], + "timestamp": 1642967657718, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT29", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_db_subnet_group", + "aws_db_instance" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT29", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_db_instance", + "name": "default", + "properties": { + "depends_on": [ + "${aws_security_group.default}" + ], + "identifier": "mydb-rds", + "allocated_storage": "10", + "engine": "postgres", + "engine_version": "${var.engine_version[var.engine]}", + "instance_class": "db.t2.micro", + "name": "mydb", + "username": "myuser", + "password": "neverstorepasswordsinplaintext", + "vpc_security_group_ids": [ + "${aws_security_group.default.id}" + ], + "db_subnet_group_name": "${aws_db_subnet_group.default.id}", + "compiletime_identity": "aws_db_instance.default" + } + }, + { + "type": "aws_db_subnet_group", + "name": "default", + "properties": { + "name": "main_subnet_group", + "description": "Our main group of subnets", + "subnet_ids": [ + "${aws_subnet.subnet_1.id}", + "${aws_subnet.subnet_2.id}" + ], + "compiletime_identity": "aws_db_subnet_group.default" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT3 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT3 new file mode 100644 index 0000000..df3b05f --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT3 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/rest-api.tf" + ], + "timestamp": 1642967657608, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/rest-api.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT3", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_api_gateway_deployment", + "aws_api_gateway_rest_api" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT3", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_api_gateway_rest_api", + "name": "example", + "properties": { + "body": "${jsonencode({'openapi': '3.0.1', 'info': {'title': 'api-gateway-rest-api-openapi-example', 'version': '1.0'}, 'paths': {'var.rest_api_path': {'get': {'x-amazon-apigateway-integration': {'httpMethod': 'GET', 'payloadFormatVersion': '1.0', 'type': 'HTTP_PROXY', 'uri': 'https://ip-ranges.amazonaws.com/ip-ranges.json'}}}}})}", + "name": "api-gateway-rest-api-openapi-example", + "endpoint_configuration": [ + { + "types": [ + "REGIONAL" + ] + } + ], + "compiletime_identity": "aws_api_gateway_rest_api.example" + } + }, + { + "type": "aws_api_gateway_deployment", + "name": "example", + "properties": { + "rest_api_id": "${aws_api_gateway_rest_api.example.id}", + "triggers": { + "redeployment": "${sha1(jsonencode(aws_api_gateway_rest_api.example.body))}" + }, + "lifecycle": [ + { + "create_before_destroy": true + } + ], + "compiletime_identity": "aws_api_gateway_deployment.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT30 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT30 new file mode 100644 index 0000000..6362cf3 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT30 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/sg.tf" + ], + "timestamp": 1642967657721, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/sg.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT30", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT30", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_security_group", + "name": "default", + "properties": { + "name": "main_rds_sg", + "description": "Allow all inbound traffic", + "vpc_id": "vpc-12345678", + "ingress": [ + { + "from_port": 0, + "to_port": 65535, + "protocol": "TCP", + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "tags": { + "Name": "rds_sg" + }, + "compiletime_identity": "aws_security_group.default" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT31 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT31 new file mode 100644 index 0000000..9978436 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT31 @@ -0,0 +1,69 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/subnets.tf" + ], + "timestamp": 1642967657724, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/rds/outputs.tf", + "/examples/rds/sg-variables.tf", + "/examples/rds/subnet-variables.tf", + "/examples/rds/terraform.template.tfvars", + "/examples/rds/variables.tf", + "/examples/rds/subnets.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT31", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_subnet" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT31", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_subnet", + "name": "subnet_1", + "properties": { + "vpc_id": "vpc-12345678", + "cidr_block": "10.0.1.0/24", + "availability_zone": "us-east-1b", + "tags": { + "Name": "main_subnet1" + }, + "compiletime_identity": "aws_subnet.subnet_1" + } + }, + { + "type": "aws_subnet", + "name": "subnet_2", + "properties": { + "vpc_id": "vpc-12345678", + "cidr_block": "10.0.2.0/24", + "availability_zone": "us-east-1c", + "tags": { + "Name": "main_subnet2" + }, + "compiletime_identity": "aws_subnet.subnet_2" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT32 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT32 new file mode 100644 index 0000000..bbba7be --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT32 @@ -0,0 +1,269 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/s3-api-gateway-integration/terraform.template.tfvars", + "/examples/s3-api-gateway-integration/variables.tf", + "/examples/s3-api-gateway-integration/main.tf" + ], + "timestamp": 1642967657727, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/s3-api-gateway-integration/terraform.template.tfvars", + "/examples/s3-api-gateway-integration/variables.tf", + "/examples/s3-api-gateway-integration/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT32", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_api_gateway_deployment", + "aws_iam_role_policy_attachment", + "aws_iam_role", + "aws_api_gateway_method", + "aws_api_gateway_integration", + "aws_api_gateway_rest_api", + "aws_iam_policy", + "aws_api_gateway_method_response", + "aws_api_gateway_integration_response", + "aws_api_gateway_resource" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT32", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_iam_policy", + "name": "s3_policy", + "properties": { + "name": "s3-policy", + "description": "Policy for allowing all S3 Actions", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "s3:*", + "Resource": "*" + } + ] + }, + "compiletime_identity": "aws_iam_policy.s3_policy" + } + }, + { + "type": "aws_iam_role", + "name": "s3_api_gateway_role", + "properties": { + "name": "s3-api-gateway-role", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "", + "Effect": "Allow", + "Principal": { + "Service": "apigateway.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "compiletime_identity": "aws_iam_role.s3_api_gateway_role" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "s3_policy_attach", + "properties": { + "role": "${aws_iam_role.s3_api_gateway_role.name}", + "policy_arn": "${aws_iam_policy.s3_policy.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.s3_policy_attach" + } + }, + { + "type": "aws_api_gateway_rest_api", + "name": "MyS3", + "properties": { + "name": "MyS3", + "description": "API for S3 Integration", + "compiletime_identity": "aws_api_gateway_rest_api.MyS3" + } + }, + { + "type": "aws_api_gateway_resource", + "name": "Folder", + "properties": { + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "parent_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "path_part": "{folder}", + "compiletime_identity": "aws_api_gateway_resource.Folder" + } + }, + { + "type": "aws_api_gateway_resource", + "name": "Item", + "properties": { + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "parent_id": "${aws_api_gateway_resource.Folder.id}", + "path_part": "{item}", + "compiletime_identity": "aws_api_gateway_resource.Item" + } + }, + { + "type": "aws_api_gateway_method", + "name": "GetBuckets", + "properties": { + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "resource_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "http_method": "GET", + "authorization": "AWS_IAM", + "compiletime_identity": "aws_api_gateway_method.GetBuckets" + } + }, + { + "type": "aws_api_gateway_integration", + "name": "S3Integration", + "properties": { + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "resource_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "http_method": "${aws_api_gateway_method.GetBuckets.http_method}", + "integration_http_method": "GET", + "type": "AWS", + "uri": "arn:aws:apigateway:us-west-2:s3:path//", + "credentials": "${aws_iam_role.s3_api_gateway_role.arn}", + "compiletime_identity": "aws_api_gateway_integration.S3Integration" + } + }, + { + "type": "aws_api_gateway_method_response", + "name": "Status200", + "properties": { + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "resource_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "http_method": "${aws_api_gateway_method.GetBuckets.http_method}", + "status_code": 200, + "response_parameters": { + "method.response.header.Timestamp": true, + "method.response.header.Content-Length": true, + "method.response.header.Content-Type": true + }, + "response_models": { + "application/json": "Empty" + }, + "compiletime_identity": "aws_api_gateway_method_response.Status200" + } + }, + { + "type": "aws_api_gateway_method_response", + "name": "Status400", + "properties": { + "depends_on": [ + "${aws_api_gateway_integration.S3Integration}" + ], + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "resource_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "http_method": "${aws_api_gateway_method.GetBuckets.http_method}", + "status_code": 400, + "compiletime_identity": "aws_api_gateway_method_response.Status400" + } + }, + { + "type": "aws_api_gateway_method_response", + "name": "Status500", + "properties": { + "depends_on": [ + "${aws_api_gateway_integration.S3Integration}" + ], + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "resource_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "http_method": "${aws_api_gateway_method.GetBuckets.http_method}", + "status_code": 500, + "compiletime_identity": "aws_api_gateway_method_response.Status500" + } + }, + { + "type": "aws_api_gateway_integration_response", + "name": "IntegrationResponse200", + "properties": { + "depends_on": [ + "${aws_api_gateway_integration.S3Integration}" + ], + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "resource_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "http_method": "${aws_api_gateway_method.GetBuckets.http_method}", + "status_code": "${aws_api_gateway_method_response.Status200.status_code}", + "response_parameters": { + "method.response.header.Timestamp": "integration.response.header.Date", + "method.response.header.Content-Length": "integration.response.header.Content-Length", + "method.response.header.Content-Type": "integration.response.header.Content-Type" + }, + "compiletime_identity": "aws_api_gateway_integration_response.IntegrationResponse200" + } + }, + { + "type": "aws_api_gateway_integration_response", + "name": "IntegrationResponse400", + "properties": { + "depends_on": [ + "${aws_api_gateway_integration.S3Integration}" + ], + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "resource_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "http_method": "${aws_api_gateway_method.GetBuckets.http_method}", + "status_code": "${aws_api_gateway_method_response.Status400.status_code}", + "selection_pattern": "4\\\\d{2}", + "compiletime_identity": "aws_api_gateway_integration_response.IntegrationResponse400" + } + }, + { + "type": "aws_api_gateway_integration_response", + "name": "IntegrationResponse500", + "properties": { + "depends_on": [ + "${aws_api_gateway_integration.S3Integration}" + ], + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "resource_id": "${aws_api_gateway_rest_api.MyS3.root_resource_id}", + "http_method": "${aws_api_gateway_method.GetBuckets.http_method}", + "status_code": "${aws_api_gateway_method_response.Status500.status_code}", + "selection_pattern": "5\\\\d{2}", + "compiletime_identity": "aws_api_gateway_integration_response.IntegrationResponse500" + } + }, + { + "type": "aws_api_gateway_deployment", + "name": "S3APIDeployment", + "properties": { + "depends_on": [ + "${aws_api_gateway_integration.S3Integration}" + ], + "rest_api_id": "${aws_api_gateway_rest_api.MyS3.id}", + "stage_name": "MyS3", + "compiletime_identity": "aws_api_gateway_deployment.S3APIDeployment" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT33 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT33 new file mode 100644 index 0000000..d55dfe7 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT33 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/s3-cross-account-access/terraform.template.tfvars", + "/examples/s3-cross-account-access/variables.tf", + "/examples/s3-cross-account-access/main.tf" + ], + "timestamp": 1642967657730, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/s3-cross-account-access/terraform.template.tfvars", + "/examples/s3-cross-account-access/variables.tf", + "/examples/s3-cross-account-access/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT33", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_s3_bucket_object", + "aws_s3_bucket" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT33", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "alias": "prod", + "region": "us-east-1", + "access_key": "${var.prod_access_key}", + "secret_key": "${var.prod_secret_key}" + } + }, + { + "aws": { + "alias": "test", + "region": "us-east-1", + "access_key": "${var.test_access_key}", + "secret_key": "${var.test_secret_key}" + } + } + ], + "resources": [ + { + "type": "aws_s3_bucket", + "name": "prod", + "properties": { + "provider": "${aws.prod}", + "bucket": "tf-test-bucket-in-prod", + "acl": "private", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AllowTest", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam::123456789012:root" + }, + "Action": "s3:*", + "Resource": "arn:aws:s3:::tf-test-bucket-in-prod/*" + } + ] + }, + "compiletime_identity": "aws_s3_bucket.prod" + } + }, + { + "type": "aws_s3_bucket_object", + "name": "prod", + "properties": { + "provider": "${aws.prod}", + "bucket": "${aws_s3_bucket.prod.id}", + "key": "object-uploaded-via-prod-creds", + "source": "${path.module}/prod.txt", + "compiletime_identity": "aws_s3_bucket_object.prod" + } + }, + { + "type": "aws_s3_bucket_object", + "name": "test", + "properties": { + "provider": "${aws.test}", + "bucket": "${aws_s3_bucket.prod.id}", + "key": "object-uploaded-via-test-creds", + "source": "${path.module}/test.txt", + "compiletime_identity": "aws_s3_bucket_object.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT34 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT34 new file mode 100644 index 0000000..0eb85f6 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT34 @@ -0,0 +1,216 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/sagemaker/main.tf" + ], + "timestamp": 1642967657733, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sagemaker/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT34", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_s3_bucket_object", + "random_integer", + "aws_iam_role_policy_attachment", + "aws_iam_role", + "aws_sagemaker_endpoint", + "aws_iam_policy", + "aws_s3_bucket", + "aws_sagemaker_endpoint_configuration", + "aws_sagemaker_model" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT34", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "us-west-2" + } + } + ], + "data": { + "aws_caller_identity": { + "current": { + "compiletime_identity": "data.aws_caller_identity.current" + } + }, + "aws_region": { + "current": { + "compiletime_identity": "data.aws_region.current" + } + }, + "aws_iam_policy_document": { + "foo": { + "statement": [ + { + "effect": "Allow", + "actions": [ + "sagemaker:*" + ], + "resources": [ + "*" + ] + }, + { + "effect": "Allow", + "actions": [ + "cloudwatch:PutMetricData", + "logs:CreateLogStream", + "logs:PutLogEvents", + "logs:CreateLogGroup", + "logs:DescribeLogStreams", + "ecr:GetAuthorizationToken", + "ecr:BatchCheckLayerAvailability", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage" + ], + "resources": [ + "*" + ] + }, + { + "effect": "Allow", + "actions": [ + "s3:GetObject" + ], + "resources": [ + "arn:aws:s3:::${aws_s3_bucket.foo.bucket}", + "arn:aws:s3:::${aws_s3_bucket.foo.bucket}/*" + ] + } + ], + "compiletime_identity": "data.aws_iam_policy_document.foo" + } + } + }, + "resources": [ + { + "type": "aws_iam_role", + "name": "foo", + "properties": { + "name": "terraform-sagemaker-example", + "path": "/", + "assume_role_policy": "${data.aws_iam_policy_document.assume_role.json}", + "compiletime_identity": "aws_iam_role.foo" + } + }, + { + "type": "aws_iam_policy", + "name": "foo", + "properties": { + "name": "terraform-sagemaker-example", + "description": "Allow Sagemaker to create model", + "policy": "${data.aws_iam_policy_document.foo.json}", + "compiletime_identity": "aws_iam_policy.foo" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "foo", + "properties": { + "role": "${aws_iam_role.foo.name}", + "policy_arn": "${aws_iam_policy.foo.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.foo" + } + }, + { + "type": "random_integer", + "name": "bucket_suffix", + "properties": { + "min": 1, + "max": 99999, + "compiletime_identity": "random_integer.bucket_suffix" + } + }, + { + "type": "aws_s3_bucket", + "name": "foo", + "properties": { + "bucket": "terraform-sagemaker-example-${random_integer.bucket_suffix.result}", + "acl": "private", + "force_destroy": true, + "compiletime_identity": "aws_s3_bucket.foo" + } + }, + { + "type": "aws_s3_bucket_object", + "name": "object", + "properties": { + "bucket": "${aws_s3_bucket.foo.bucket}", + "key": "model.tar.gz", + "source": "model.tar.gz", + "compiletime_identity": "aws_s3_bucket_object.object" + } + }, + { + "type": "aws_sagemaker_model", + "name": "foo", + "properties": { + "name": "terraform-sagemaker-example", + "execution_role_arn": "${aws_iam_role.foo.arn}", + "primary_container": [ + { + "image": "${data.aws_caller_identity.current.account_id}.dkr.ecr.${data.aws_region.current.name}.amazonaws.com/foo:latest", + "model_data_url": "https://s3-us-west-2.amazonaws.com/${aws_s3_bucket.foo.bucket}/model.tar.gz" + } + ], + "tags": { + "foo": "bar" + }, + "compiletime_identity": "aws_sagemaker_model.foo" + } + }, + { + "type": "aws_sagemaker_endpoint_configuration", + "name": "foo", + "properties": { + "name": "terraform-sagemaker-example", + "production_variants": [ + { + "variant_name": "variant-1", + "model_name": "${aws_sagemaker_model.foo.name}", + "initial_instance_count": 1, + "instance_type": "ml.t2.medium", + "initial_variant_weight": 1 + } + ], + "tags": { + "foo": "bar" + }, + "compiletime_identity": "aws_sagemaker_endpoint_configuration.foo" + } + }, + { + "type": "aws_sagemaker_endpoint", + "name": "foo", + "properties": { + "name": "terraform-sagemaker-example", + "endpoint_config_name": "${aws_sagemaker_endpoint_configuration.foo.name}", + "tags": { + "foo": "bar" + }, + "compiletime_identity": "aws_sagemaker_endpoint.foo" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT35 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT35 new file mode 100644 index 0000000..b791c50 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT35 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/transit-gateway-cross-account-peering-attachment/terraform.template.tfvars", + "/examples/transit-gateway-cross-account-peering-attachment/variables.tf", + "/examples/transit-gateway-cross-account-peering-attachment/main.tf" + ], + "timestamp": 1642967657737, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/transit-gateway-cross-account-peering-attachment/terraform.template.tfvars", + "/examples/transit-gateway-cross-account-peering-attachment/variables.tf", + "/examples/transit-gateway-cross-account-peering-attachment/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT35", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_ec2_transit_gateway_peering_attachment", + "aws_ec2_transit_gateway", + "aws_ec2_transit_gateway_peering_attachment_accepter" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT35", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "alias": "first", + "region": "${var.aws_first_region}", + "access_key": "${var.aws_first_access_key}", + "secret_key": "${var.aws_first_secret_key}" + } + }, + { + "aws": { + "alias": "second", + "region": "${var.aws_second_region}", + "access_key": "${var.aws_second_access_key}", + "secret_key": "${var.aws_second_secret_key}" + } + } + ], + "data": { + "aws_caller_identity": { + "first": { + "provider": "${aws.first}", + "compiletime_identity": "data.aws_caller_identity.first" + } + } + }, + "resources": [ + { + "type": "aws_ec2_transit_gateway", + "name": "first", + "properties": { + "provider": "${aws.first}", + "tags": { + "Name": "terraform-example" + }, + "compiletime_identity": "aws_ec2_transit_gateway.first" + } + }, + { + "type": "aws_ec2_transit_gateway", + "name": "second", + "properties": { + "provider": "${aws.second}", + "tags": { + "Name": "terraform-example" + }, + "compiletime_identity": "aws_ec2_transit_gateway.second" + } + }, + { + "type": "aws_ec2_transit_gateway_peering_attachment", + "name": "example", + "properties": { + "provider": "${aws.second}", + "peer_account_id": "${data.aws_caller_identity.first.account_id}", + "peer_region": "us-west-2", + "peer_transit_gateway_id": "${aws_ec2_transit_gateway.first.id}", + "transit_gateway_id": "${aws_ec2_transit_gateway.second.id}", + "tags": { + "Name": "terraform-example", + "Side": "Creator" + }, + "compiletime_identity": "aws_ec2_transit_gateway_peering_attachment.example" + } + }, + { + "type": "aws_ec2_transit_gateway_peering_attachment_accepter", + "name": "example", + "properties": { + "provider": "${aws.first}", + "transit_gateway_attachment_id": "${aws_ec2_transit_gateway_peering_attachment.example.id}", + "tags": { + "Name": "terraform-example", + "Side": "Acceptor" + }, + "compiletime_identity": "aws_ec2_transit_gateway_peering_attachment_accepter.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT36 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT36 new file mode 100644 index 0000000..ec1ae9f --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT36 @@ -0,0 +1,185 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/transit-gateway-cross-account-vpc-attachment/terraform.template.tfvars", + "/examples/transit-gateway-cross-account-vpc-attachment/variables.tf", + "/examples/transit-gateway-cross-account-vpc-attachment/main.tf" + ], + "timestamp": 1642967657739, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/transit-gateway-cross-account-vpc-attachment/terraform.template.tfvars", + "/examples/transit-gateway-cross-account-vpc-attachment/variables.tf", + "/examples/transit-gateway-cross-account-vpc-attachment/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT36", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_vpc", + "aws_ec2_transit_gateway_vpc_attachment", + "aws_ec2_transit_gateway_vpc_attachment_accepter", + "aws_ec2_transit_gateway", + "aws_subnet", + "aws_ram_principal_association", + "aws_ram_resource_share", + "aws_ram_resource_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT36", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "alias": "first", + "region": "${var.aws_region}", + "access_key": "${var.aws_first_access_key}", + "secret_key": "${var.aws_first_secret_key}" + } + }, + { + "aws": { + "alias": "second", + "region": "${var.aws_region}", + "access_key": "${var.aws_second_access_key}", + "secret_key": "${var.aws_second_secret_key}" + } + } + ], + "data": { + "aws_availability_zones": { + "available": { + "provider": "${aws.second}", + "state": "available", + "compiletime_identity": "data.aws_availability_zones.available" + } + }, + "aws_caller_identity": { + "second": { + "provider": "${aws.second}", + "compiletime_identity": "data.aws_caller_identity.second" + } + } + }, + "resources": [ + { + "type": "aws_ec2_transit_gateway", + "name": "example", + "properties": { + "provider": "${aws.first}", + "tags": { + "Name": "terraform-example" + }, + "compiletime_identity": "aws_ec2_transit_gateway.example" + } + }, + { + "type": "aws_ram_resource_share", + "name": "example", + "properties": { + "provider": "${aws.first}", + "name": "terraform-example", + "tags": { + "Name": "terraform-example" + }, + "compiletime_identity": "aws_ram_resource_share.example" + } + }, + { + "type": "aws_ram_resource_association", + "name": "example", + "properties": { + "provider": "${aws.first}", + "resource_arn": "${aws_ec2_transit_gateway.example.arn}", + "resource_share_arn": "${aws_ram_resource_share.example.id}", + "compiletime_identity": "aws_ram_resource_association.example" + } + }, + { + "type": "aws_ram_principal_association", + "name": "example", + "properties": { + "provider": "${aws.first}", + "principal": "${data.aws_caller_identity.second.account_id}", + "resource_share_arn": "${aws_ram_resource_share.example.id}", + "compiletime_identity": "aws_ram_principal_association.example" + } + }, + { + "type": "aws_vpc", + "name": "example", + "properties": { + "provider": "${aws.second}", + "cidr_block": "10.0.0.0/16", + "tags": { + "Name": "terraform-example" + }, + "compiletime_identity": "aws_vpc.example" + } + }, + { + "type": "aws_subnet", + "name": "example", + "properties": { + "provider": "${aws.second}", + "availability_zone": "${data.aws_availability_zones.available.names[0]}", + "cidr_block": "10.0.0.0/24", + "vpc_id": "${aws_vpc.example.id}", + "tags": { + "Name": "terraform-example" + }, + "compiletime_identity": "aws_subnet.example" + } + }, + { + "type": "aws_ec2_transit_gateway_vpc_attachment", + "name": "example", + "properties": { + "provider": "${aws.second}", + "depends_on": [ + "${aws_ram_principal_association.example}", + "${aws_ram_resource_association.example}" + ], + "subnet_ids": [ + "${aws_subnet.example.id}" + ], + "transit_gateway_id": "${aws_ec2_transit_gateway.example.id}", + "vpc_id": "${aws_vpc.example.id}", + "tags": { + "Name": "terraform-example", + "Side": "Creator" + }, + "compiletime_identity": "aws_ec2_transit_gateway_vpc_attachment.example" + } + }, + { + "type": "aws_ec2_transit_gateway_vpc_attachment_accepter", + "name": "example", + "properties": { + "provider": "${aws.first}", + "transit_gateway_attachment_id": "${aws_ec2_transit_gateway_vpc_attachment.example.id}", + "tags": { + "Name": "terraform-example", + "Side": "Accepter" + }, + "compiletime_identity": "aws_ec2_transit_gateway_vpc_attachment_accepter.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT37 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT37 new file mode 100644 index 0000000..267fa00 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT37 @@ -0,0 +1,228 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/two-tier/outputs.tf", + "/examples/two-tier/terraform.template.tfvars", + "/examples/two-tier/variables.tf", + "/examples/two-tier/main.tf" + ], + "timestamp": 1642967657742, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/two-tier/outputs.tf", + "/examples/two-tier/terraform.template.tfvars", + "/examples/two-tier/variables.tf", + "/examples/two-tier/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT37", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_security_group", + "aws_vpc", + "aws_key_pair", + "aws_route", + "aws_subnet", + "aws_instance", + "aws_internet_gateway", + "aws_elb" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT37", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_vpc", + "name": "default", + "properties": { + "cidr_block": "10.0.0.0/16", + "compiletime_identity": "aws_vpc.default" + } + }, + { + "type": "aws_internet_gateway", + "name": "default", + "properties": { + "vpc_id": "${aws_vpc.default.id}", + "compiletime_identity": "aws_internet_gateway.default" + } + }, + { + "type": "aws_route", + "name": "internet_access", + "properties": { + "route_table_id": "${aws_vpc.default.main_route_table_id}", + "destination_cidr_block": "0.0.0.0/0", + "gateway_id": "${aws_internet_gateway.default.id}", + "compiletime_identity": "aws_route.internet_access" + } + }, + { + "type": "aws_subnet", + "name": "default", + "properties": { + "vpc_id": "${aws_vpc.default.id}", + "cidr_block": "10.0.1.0/24", + "map_public_ip_on_launch": true, + "compiletime_identity": "aws_subnet.default" + } + }, + { + "type": "aws_security_group", + "name": "elb", + "properties": { + "name": "terraform_example_elb", + "description": "Used in the terraform", + "vpc_id": "${aws_vpc.default.id}", + "ingress": [ + { + "from_port": 80, + "to_port": 80, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "compiletime_identity": "aws_security_group.elb" + } + }, + { + "type": "aws_security_group", + "name": "default", + "properties": { + "name": "terraform_example", + "description": "Used in the terraform", + "vpc_id": "${aws_vpc.default.id}", + "ingress": [ + { + "from_port": 22, + "to_port": 22, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + }, + { + "from_port": 80, + "to_port": 80, + "protocol": "tcp", + "cidr_blocks": [ + "10.0.0.0/16" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "compiletime_identity": "aws_security_group.default" + } + }, + { + "type": "aws_elb", + "name": "web", + "properties": { + "name": "terraform-example-elb", + "subnets": [ + "${aws_subnet.default.id}" + ], + "security_groups": [ + "${aws_security_group.elb.id}" + ], + "instances": [ + "${aws_instance.web.id}" + ], + "listener": [ + { + "instance_port": 80, + "instance_protocol": "http", + "lb_port": 80, + "lb_protocol": "http" + } + ], + "compiletime_identity": "aws_elb.web" + } + }, + { + "type": "aws_key_pair", + "name": "auth", + "properties": { + "key_name": "terraform-provider-aws-example", + "public_key": "${file(var.public_key_path)}", + "compiletime_identity": "aws_key_pair.auth" + } + }, + { + "type": "aws_instance", + "name": "web", + "properties": { + "connection": [ + { + "type": "ssh", + "user": "ubuntu", + "host": "${self.public_ip}" + } + ], + "instance_type": "t2.micro", + "ami": "${var.aws_amis[var.aws_region]}", + "key_name": "${aws_key_pair.auth.id}", + "vpc_security_group_ids": [ + "${aws_security_group.default.id}" + ], + "subnet_id": "${aws_subnet.default.id}", + "provisioner": [ + { + "remote-exec": { + "inline": [ + "sudo apt-get -y update", + "sudo apt-get -y install nginx", + "sudo service nginx start" + ] + } + } + ], + "compiletime_identity": "aws_instance.web" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT38 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT38 new file mode 100644 index 0000000..30c4064 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT38 @@ -0,0 +1,199 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/workspaces/variables.tf", + "/examples/workspaces/main.tf" + ], + "timestamp": 1642967657745, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/workspaces/variables.tf", + "/examples/workspaces/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT38", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_workspaces_directory", + "aws_vpc", + "aws_workspaces_workspace", + "aws_subnet", + "aws_kms_key", + "aws_directory_service_directory", + "aws_workspaces_ip_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT38", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "data": { + "aws_workspaces_bundle": { + "value_windows": { + "bundle_id": "wsb-bh8rsxt14", + "compiletime_identity": "data.aws_workspaces_bundle.value_windows" + } + }, + "aws_region": { + "current": { + "compiletime_identity": "data.aws_region.current" + } + }, + "aws_availability_zones": { + "available": { + "state": "available", + "filter": [ + { + "name": "opt-in-status", + "values": [ + "opt-in-not-required" + ] + } + ], + "compiletime_identity": "data.aws_availability_zones.available" + } + } + }, + "locals": [ + { + "region_workspaces_az_id_strings": { + "us-east-1": "${join(\",\",formatlist(\"use1-az%d\",['2', '4', '6']))}" + }, + "workspaces_az_id_strings": "${lookup(local.region_workspaces_az_id_strings,,data.aws_region.current.name,,join(\",\",data.aws_availability_zones.available.zone_ids),)}", + "workspaces_az_ids": "${split(\",\",local.workspaces_az_id_strings)}" + } + ], + "resources": [ + { + "type": "aws_workspaces_directory", + "name": "example", + "properties": { + "directory_id": "${aws_directory_service_directory.example.id}", + "subnet_ids": [ + "${aws_subnet.private-a.id}", + "${aws_subnet.private-b.id}" + ], + "compiletime_identity": "aws_workspaces_directory.example" + } + }, + { + "type": "aws_workspaces_workspace", + "name": "example", + "properties": { + "directory_id": "${aws_workspaces_directory.example.id}", + "bundle_id": "${data.aws_workspaces_bundle.value_windows.id}", + "user_name": "Administrator", + "root_volume_encryption_enabled": true, + "user_volume_encryption_enabled": true, + "volume_encryption_key": "${aws_kms_key.example.arn}", + "workspace_properties": [ + { + "compute_type_name": "VALUE", + "user_volume_size_gib": 10, + "root_volume_size_gib": 80, + "running_mode": "AUTO_STOP", + "running_mode_auto_stop_timeout_in_minutes": 60 + } + ], + "tags": { + "Department": "IT" + }, + "compiletime_identity": "aws_workspaces_workspace.example" + } + }, + { + "type": "aws_workspaces_ip_group", + "name": "main", + "properties": { + "name": "main", + "description": "Main IP access control group", + "rules": [ + { + "source": "10.10.10.10/16" + }, + { + "source": "11.11.11.11/16", + "description": "Contractors" + } + ], + "compiletime_identity": "aws_workspaces_ip_group.main" + } + }, + { + "type": "aws_vpc", + "name": "main", + "properties": { + "cidr_block": "10.0.0.0/16", + "compiletime_identity": "aws_vpc.main" + } + }, + { + "type": "aws_subnet", + "name": "private-a", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "availability_zone_id": "${local.workspaces_az_ids[0]}", + "cidr_block": "10.0.1.0/24", + "compiletime_identity": "aws_subnet.private-a" + } + }, + { + "type": "aws_subnet", + "name": "private-b", + "properties": { + "vpc_id": "${aws_vpc.main.id}", + "availability_zone_id": "${local.workspaces_az_ids[1]}", + "cidr_block": "10.0.2.0/24", + "compiletime_identity": "aws_subnet.private-b" + } + }, + { + "type": "aws_directory_service_directory", + "name": "example", + "properties": { + "name": "workspaces.example.com", + "password": "#S1ncerely", + "size": "Small", + "vpc_settings": [ + { + "vpc_id": "${aws_vpc.main.id}", + "subnet_ids": [ + "${aws_subnet.private-a.id}", + "${aws_subnet.private-b.id}" + ] + } + ], + "compiletime_identity": "aws_directory_service_directory.example" + } + }, + { + "type": "aws_kms_key", + "name": "example", + "properties": { + "description": "WorkSpaces example key", + "compiletime_identity": "aws_kms_key.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT39 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT39 new file mode 100644 index 0000000..ca70d80 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT39 @@ -0,0 +1,66 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-partition.tf" + ], + "timestamp": 1642967657748, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-partition.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT39", + "status": "active", + "validate": true, + "resourceTypes": [ + "github_issue_label" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT39", + "collection": "terraformtemplate", + "json": { + "variable": [ + { + "partition_labels": { + "default": [ + "aws-cn", + "aws-iso", + "aws-iso-b", + "aws-us-gov" + ], + "description": "Set of AWS Partition labels", + "type": "${set(string)}" + } + } + ], + "resources": [ + { + "type": "github_issue_label", + "name": "partition", + "properties": { + "for_each": [ + "aws-cn", + "aws-iso", + "aws-iso-b", + "aws-us-gov" + ], + "repository": "terraform-provider-aws", + "name": "partition/${each.value}", + "color": "844fba", + "description": "Pertains to the ${each.value} partition.", + "compiletime_identity": "github_issue_label.partition" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT4 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT4 new file mode 100644 index 0000000..b180f35 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT4 @@ -0,0 +1,67 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/stage.tf" + ], + "timestamp": 1642967657614, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/stage.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT4", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_api_gateway_stage", + "aws_api_gateway_method_settings" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT4", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "aws_api_gateway_stage", + "name": "example", + "properties": { + "deployment_id": "${aws_api_gateway_deployment.example.id}", + "rest_api_id": "${aws_api_gateway_rest_api.example.id}", + "stage_name": "example", + "compiletime_identity": "aws_api_gateway_stage.example" + } + }, + { + "type": "aws_api_gateway_method_settings", + "name": "example", + "properties": { + "rest_api_id": "${aws_api_gateway_rest_api.example.id}", + "stage_name": "${aws_api_gateway_stage.example.stage_name}", + "method_path": "*/*", + "settings": [ + { + "metrics_enabled": true + } + ], + "compiletime_identity": "aws_api_gateway_method_settings.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT40 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT40 new file mode 100644 index 0000000..c6922df --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT40 @@ -0,0 +1,480 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-service.tf" + ], + "timestamp": 1642967657752, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-service.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT40", + "status": "active", + "validate": true, + "resourceTypes": [ + "github_issue_label" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT40", + "collection": "terraformtemplate", + "json": { + "variable": [ + { + "service_labels": { + "default": [ + "accessanalyzer", + "account", + "acm", + "acmpca", + "alexaforbusiness", + "amp", + "amplify", + "apigateway", + "apigatewaymanagementapi", + "apigatewayv2", + "appconfig", + "appflow", + "applicationautoscaling", + "applicationdiscoveryservice", + "applicationinsights", + "appmesh", + "apprunner", + "appstream", + "appsync", + "athena", + "auditmanager", + "autoscaling", + "autoscalingplans", + "backup", + "batch", + "braket", + "budgets", + "chime", + "cloud9", + "cloudcontrolapi", + "clouddirectory", + "cloudformation", + "cloudfront", + "cloudhsm", + "cloudhsmv2", + "cloudsearch", + "cloudtrail", + "cloudwatch", + "cloudwatchlogs", + "codeartifact", + "codebuild", + "codecommit", + "codedeploy", + "codeguruprofiler", + "codegurureviewer", + "codepipeline", + "codestar", + "codestarconnections", + "codestarnotifications", + "cognito", + "cognitoidentityprovider", + "comprehend", + "comprehendmedical", + "computeoptimizer", + "configservice", + "connect", + "costandusagereportservice", + "costexplorer", + "databasemigrationservice", + "dataexchange", + "datapipeline", + "datasync", + "dax", + "detective", + "devicefarm", + "directconnect", + "directoryservice", + "dlm", + "docdb", + "dynamodb", + "ec2-classic", + "ec2", + "ecr", + "ecrpublic", + "ecs", + "efs", + "eks", + "elastictranscoder", + "elasticache", + "elasticbeanstalk", + "elasticinference", + "elasticsearch", + "elb", + "elbv2", + "emr", + "emrcontainers", + "events", + "firehose", + "fms", + "forecastservice", + "frauddetector", + "fsx", + "gamelift", + "glacier", + "globalaccelerator", + "glue", + "greengrass", + "groundstation", + "guardduty", + "honeycode", + "iam", + "identitystore", + "imagebuilder", + "inspector", + "iot", + "iotanalytics", + "iotevents", + "iotsecuretunneling", + "iotsitewise", + "iotthingsgraph", + "ivs", + "kafka", + "kafkaconnect", + "kendra", + "kinesis", + "kinesisanalytics", + "kinesisanalyticsv2", + "kinesisvideo", + "kms", + "lakeformation", + "lambda", + "lexmodels", + "licensemanager", + "lightsail", + "location", + "machinelearning", + "macie", + "macie2", + "managedblockchain", + "marketplacecatalog", + "mediaconnect", + "mediaconvert", + "medialive", + "mediapackage", + "mediapackagevod", + "mediastore", + "mediatailor", + "memorydb", + "meteringmarketplace", + "mobile", + "mq", + "mwaa", + "neptune", + "networkfirewall", + "networkmanager", + "opsworks", + "opsworkscm", + "organizations", + "outposts", + "personalize", + "pi", + "pinpoint", + "pinpointemail", + "pinpointsmsvoice", + "polly", + "pricing", + "qldb", + "quicksight", + "ram", + "rds", + "redshift", + "resourcegroups", + "resourcegroupstaggingapi", + "robomaker", + "route53", + "route53domains", + "route53recoverycontrolconfig", + "route53recoveryreadiness", + "route53resolver", + "s3", + "s3control", + "s3outposts", + "sagemaker", + "savingsplans", + "schemas", + "secretsmanager", + "securityhub", + "serverlessrepo", + "servicecatalog", + "servicediscovery", + "servicequotas", + "ses", + "sesv2", + "sfn", + "shield", + "signer", + "simpledb", + "sms", + "snowball", + "sns", + "sqs", + "ssm", + "ssoadmin", + "storagegateway", + "sts", + "support", + "swf", + "synthetics", + "textract", + "timestreamwrite", + "transcribeservice", + "timestreamwrite", + "transfer", + "translate", + "waf", + "wafv2", + "workdocs", + "worklink", + "workmail", + "workspaces", + "xray" + ], + "description": "Set of AWS Go SDK service labels", + "type": "${set(string)}" + } + } + ], + "resources": [ + { + "type": "github_issue_label", + "name": "service", + "properties": { + "for_each": [ + "accessanalyzer", + "account", + "acm", + "acmpca", + "alexaforbusiness", + "amp", + "amplify", + "apigateway", + "apigatewaymanagementapi", + "apigatewayv2", + "appconfig", + "appflow", + "applicationautoscaling", + "applicationdiscoveryservice", + "applicationinsights", + "appmesh", + "apprunner", + "appstream", + "appsync", + "athena", + "auditmanager", + "autoscaling", + "autoscalingplans", + "backup", + "batch", + "braket", + "budgets", + "chime", + "cloud9", + "cloudcontrolapi", + "clouddirectory", + "cloudformation", + "cloudfront", + "cloudhsm", + "cloudhsmv2", + "cloudsearch", + "cloudtrail", + "cloudwatch", + "cloudwatchlogs", + "codeartifact", + "codebuild", + "codecommit", + "codedeploy", + "codeguruprofiler", + "codegurureviewer", + "codepipeline", + "codestar", + "codestarconnections", + "codestarnotifications", + "cognito", + "cognitoidentityprovider", + "comprehend", + "comprehendmedical", + "computeoptimizer", + "configservice", + "connect", + "costandusagereportservice", + "costexplorer", + "databasemigrationservice", + "dataexchange", + "datapipeline", + "datasync", + "dax", + "detective", + "devicefarm", + "directconnect", + "directoryservice", + "dlm", + "docdb", + "dynamodb", + "ec2-classic", + "ec2", + "ecr", + "ecrpublic", + "ecs", + "efs", + "eks", + "elastictranscoder", + "elasticache", + "elasticbeanstalk", + "elasticinference", + "elasticsearch", + "elb", + "elbv2", + "emr", + "emrcontainers", + "events", + "firehose", + "fms", + "forecastservice", + "frauddetector", + "fsx", + "gamelift", + "glacier", + "globalaccelerator", + "glue", + "greengrass", + "groundstation", + "guardduty", + "honeycode", + "iam", + "identitystore", + "imagebuilder", + "inspector", + "iot", + "iotanalytics", + "iotevents", + "iotsecuretunneling", + "iotsitewise", + "iotthingsgraph", + "ivs", + "kafka", + "kafkaconnect", + "kendra", + "kinesis", + "kinesisanalytics", + "kinesisanalyticsv2", + "kinesisvideo", + "kms", + "lakeformation", + "lambda", + "lexmodels", + "licensemanager", + "lightsail", + "location", + "machinelearning", + "macie", + "macie2", + "managedblockchain", + "marketplacecatalog", + "mediaconnect", + "mediaconvert", + "medialive", + "mediapackage", + "mediapackagevod", + "mediastore", + "mediatailor", + "memorydb", + "meteringmarketplace", + "mobile", + "mq", + "mwaa", + "neptune", + "networkfirewall", + "networkmanager", + "opsworks", + "opsworkscm", + "organizations", + "outposts", + "personalize", + "pi", + "pinpoint", + "pinpointemail", + "pinpointsmsvoice", + "polly", + "pricing", + "qldb", + "quicksight", + "ram", + "rds", + "redshift", + "resourcegroups", + "resourcegroupstaggingapi", + "robomaker", + "route53", + "route53domains", + "route53recoverycontrolconfig", + "route53recoveryreadiness", + "route53resolver", + "s3", + "s3control", + "s3outposts", + "sagemaker", + "savingsplans", + "schemas", + "secretsmanager", + "securityhub", + "serverlessrepo", + "servicecatalog", + "servicediscovery", + "servicequotas", + "ses", + "sesv2", + "sfn", + "shield", + "signer", + "simpledb", + "sms", + "snowball", + "sns", + "sqs", + "ssm", + "ssoadmin", + "storagegateway", + "sts", + "support", + "swf", + "synthetics", + "textract", + "timestreamwrite", + "transcribeservice", + "timestreamwrite", + "transfer", + "translate", + "waf", + "wafv2", + "workdocs", + "worklink", + "workmail", + "workspaces", + "xray" + ], + "repository": "terraform-provider-aws", + "name": "service/${each.value}", + "color": "7b42bc", + "description": "Issues and PRs that pertain to the ${each.value} service.", + "compiletime_identity": "github_issue_label.service" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT41 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT41 new file mode 100644 index 0000000..35a38a3 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT41 @@ -0,0 +1,410 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-workflow.tf" + ], + "timestamp": 1642967657755, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/infrastructure/repository/main.tf", + "/infrastructure/repository/labels-workflow.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT41", + "status": "active", + "validate": true, + "resourceTypes": [ + "github_issue_label" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT41", + "collection": "terraformtemplate", + "json": { + "variable": [ + { + "workflow_labels": { + "default": { + "authentication": { + "color": "844fba", + "description": "Pertains to authentication; to the provider itself of otherwise." + }, + "breaking-change": { + "color": "ec585d", + "description": "Introduces a breaking change in current functionality; usually deferred to the next major release." + }, + "bug": { + "color": "ec585d", + "description": "Addresses a defect in current functionality." + }, + "client-connections": { + "color": "844fba", + "description": "Pertains to the AWS Client and service connections." + }, + "crash": { + "color": "ec585d", + "description": "Results from or addresses a Terraform crash or kernel panic." + }, + "create": { + "color": "844fba", + "description": "Pertains to generating names, hashcodes, etc." + }, + "dependencies": { + "color": "1c7ada", + "description": "Used to indicate dependency changes." + }, + "documentation": { + "color": "f4ecff", + "description": "Introduces or discusses updates to documentation." + }, + "enhancement": { + "color": "844fba", + "description": "Requests to existing resources that expand the functionality or scope." + }, + "eventual-consistency": { + "color": "844fba", + "description": "Pertains to eventual consistency issues." + }, + "examples": { + "color": "63d0ff", + "description": "Introduces or discusses updates to examples." + }, + "flex": { + "color": "844fba", + "description": "Pertains to FLatteners and EXpanders." + }, + "fips": { + "color": "844fba", + "description": "Pertains to the Federal Information Processing Standard (FIPS)." + }, + "generators": { + "color": "60dea9", + "description": "Relates to code generators." + }, + "good first issue": { + "color": "63d0ff", + "description": "Call to action for new contributors looking for a place to start. Smaller or straightforward issues." + }, + "linter": { + "color": "f4ecff", + "description": "Pertains to changes to or issues with the various linters." + }, + "needs-triage": { + "color": "dc477d", + "description": "Waiting for first response or review from a maintainer." + }, + "new-data-source": { + "color": "ac72f0", + "description": "Introduces a new data source." + }, + "new-resource": { + "color": "8040c9", + "description": "Introduces a new resource." + }, + "pre-service-packages": { + "color": "ffec6e", + "description": "Includes pre-Service Packages aspects." + }, + "prerelease-tf-testing": { + "color": "60dea9", + "description": "Pertains to testing Terraform releases prior to release." + }, + "proposal": { + "color": "d1ebff", + "description": "Proposes new design or functionality." + }, + "provider": { + "color": "844fba", + "description": "Pertains to the provider itself, rather than any interaction with AWS." + }, + "question": { + "color": "f4ecff", + "description": "A question about existing functionality; most questions are re-routed to discuss.hashicorp.com." + }, + "regression": { + "color": "ec585d", + "description": "Pertains to a degraded workflow resulting from an upstream patch or internal enhancement." + }, + "repository": { + "color": "828a90", + "description": "Repository modifications; GitHub Actions, developer docs, issue templates, codeowners, changelog." + }, + "service/meta": { + "color": "7b42bc", + "description": "Issues and PRs that correspond to meta data sources." + }, + "size/XS": { + "color": "62d4dc", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/S": { + "color": "4ec3ce", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/M": { + "color": "3bb3c0", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/L": { + "color": "27a2b2", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/XL": { + "color": "1492a4", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/XXL": { + "color": "008196", + "description": "Managed by automation to categorize the size of a PR." + }, + "stale": { + "color": "828a90", + "description": "Old or inactive issues managed by automation, if no further action taken these will get closed." + }, + "sweeper": { + "color": "f4ecff", + "description": "Pertains to changes to or issues with the sweeper." + }, + "tags": { + "color": "844fba", + "description": "Pertains to resource tagging." + }, + "technical-debt": { + "color": "d1ebff", + "description": "Addresses areas of the codebase that need refactoring or redesign." + }, + "tests": { + "color": "60dea9", + "description": "PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure." + }, + "timeouts": { + "color": "844fba", + "description": "Pertains to timeout increases." + }, + "upstream": { + "color": "1c7ada", + "description": "Addresses functionality related to the cloud provider." + }, + "upstream-terraform": { + "color": "1c7ada", + "description": "Addresses functionality related to the Terraform core binary." + }, + "verify": { + "color": "844fba", + "description": "Pertains to the verify package (i.e., provider-level validating, diff suppression, etc.)" + }, + "waiting-response": { + "color": "d3353f", + "description": "Maintainers are waiting on response from community or contributor." + }, + "windows": { + "color": "828a90", + "description": "Issues and PRs that relate to using the provider on the Windows operating system." + } + }, + "description": "Name-color-description mapping of workflow issues.", + "type": "${map(any)}" + } + } + ], + "resources": [ + { + "type": "github_issue_label", + "name": "workflow", + "properties": { + "for_each": { + "authentication": { + "color": "844fba", + "description": "Pertains to authentication; to the provider itself of otherwise." + }, + "breaking-change": { + "color": "ec585d", + "description": "Introduces a breaking change in current functionality; usually deferred to the next major release." + }, + "bug": { + "color": "ec585d", + "description": "Addresses a defect in current functionality." + }, + "client-connections": { + "color": "844fba", + "description": "Pertains to the AWS Client and service connections." + }, + "crash": { + "color": "ec585d", + "description": "Results from or addresses a Terraform crash or kernel panic." + }, + "create": { + "color": "844fba", + "description": "Pertains to generating names, hashcodes, etc." + }, + "dependencies": { + "color": "1c7ada", + "description": "Used to indicate dependency changes." + }, + "documentation": { + "color": "f4ecff", + "description": "Introduces or discusses updates to documentation." + }, + "enhancement": { + "color": "844fba", + "description": "Requests to existing resources that expand the functionality or scope." + }, + "eventual-consistency": { + "color": "844fba", + "description": "Pertains to eventual consistency issues." + }, + "examples": { + "color": "63d0ff", + "description": "Introduces or discusses updates to examples." + }, + "flex": { + "color": "844fba", + "description": "Pertains to FLatteners and EXpanders." + }, + "fips": { + "color": "844fba", + "description": "Pertains to the Federal Information Processing Standard (FIPS)." + }, + "generators": { + "color": "60dea9", + "description": "Relates to code generators." + }, + "good first issue": { + "color": "63d0ff", + "description": "Call to action for new contributors looking for a place to start. Smaller or straightforward issues." + }, + "linter": { + "color": "f4ecff", + "description": "Pertains to changes to or issues with the various linters." + }, + "needs-triage": { + "color": "dc477d", + "description": "Waiting for first response or review from a maintainer." + }, + "new-data-source": { + "color": "ac72f0", + "description": "Introduces a new data source." + }, + "new-resource": { + "color": "8040c9", + "description": "Introduces a new resource." + }, + "pre-service-packages": { + "color": "ffec6e", + "description": "Includes pre-Service Packages aspects." + }, + "prerelease-tf-testing": { + "color": "60dea9", + "description": "Pertains to testing Terraform releases prior to release." + }, + "proposal": { + "color": "d1ebff", + "description": "Proposes new design or functionality." + }, + "provider": { + "color": "844fba", + "description": "Pertains to the provider itself, rather than any interaction with AWS." + }, + "question": { + "color": "f4ecff", + "description": "A question about existing functionality; most questions are re-routed to discuss.hashicorp.com." + }, + "regression": { + "color": "ec585d", + "description": "Pertains to a degraded workflow resulting from an upstream patch or internal enhancement." + }, + "repository": { + "color": "828a90", + "description": "Repository modifications; GitHub Actions, developer docs, issue templates, codeowners, changelog." + }, + "service/meta": { + "color": "7b42bc", + "description": "Issues and PRs that correspond to meta data sources." + }, + "size/XS": { + "color": "62d4dc", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/S": { + "color": "4ec3ce", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/M": { + "color": "3bb3c0", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/L": { + "color": "27a2b2", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/XL": { + "color": "1492a4", + "description": "Managed by automation to categorize the size of a PR." + }, + "size/XXL": { + "color": "008196", + "description": "Managed by automation to categorize the size of a PR." + }, + "stale": { + "color": "828a90", + "description": "Old or inactive issues managed by automation, if no further action taken these will get closed." + }, + "sweeper": { + "color": "f4ecff", + "description": "Pertains to changes to or issues with the sweeper." + }, + "tags": { + "color": "844fba", + "description": "Pertains to resource tagging." + }, + "technical-debt": { + "color": "d1ebff", + "description": "Addresses areas of the codebase that need refactoring or redesign." + }, + "tests": { + "color": "60dea9", + "description": "PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure." + }, + "timeouts": { + "color": "844fba", + "description": "Pertains to timeout increases." + }, + "upstream": { + "color": "1c7ada", + "description": "Addresses functionality related to the cloud provider." + }, + "upstream-terraform": { + "color": "1c7ada", + "description": "Addresses functionality related to the Terraform core binary." + }, + "verify": { + "color": "844fba", + "description": "Pertains to the verify package (i.e., provider-level validating, diff suppression, etc.)" + }, + "waiting-response": { + "color": "d3353f", + "description": "Maintainers are waiting on response from community or contributor." + }, + "windows": { + "color": "828a90", + "description": "Issues and PRs that relate to using the provider on the Windows operating system." + } + }, + "repository": "terraform-provider-aws", + "name": "${each.key}", + "color": "${each.value.color}", + "description": "${each.value.description}", + "compiletime_identity": "github_issue_label.workflow" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT42 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT42 new file mode 100644 index 0000000..eca359b --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT42 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/apigateway/test-fixtures/apigateway-domain-name-truststore-1.pem" + ], + "timestamp": 1642967657758, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/apigateway/test-fixtures/apigateway-domain-name-truststore-1.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT42", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT42", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT43 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT43 new file mode 100644 index 0000000..2ac269a --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT43 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/apigatewayv2/test-fixtures/apigateway-domain-name-truststore-2.pem" + ], + "timestamp": 1642967657761, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/apigatewayv2/test-fixtures/apigateway-domain-name-truststore-2.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT43", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT43", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT44 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT44 new file mode 100644 index 0000000..d702a5d --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT44 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/cloudfront/test-fixtures/cloudfront-public-key.pem" + ], + "timestamp": 1642967657764, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/cloudfront/test-fixtures/cloudfront-public-key.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT44", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT44", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT45 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT45 new file mode 100644 index 0000000..4fd0184 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT45 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/dms/testdata/oracle_wallet_certificate.pem" + ], + "timestamp": 1642967657767, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/dms/testdata/oracle_wallet_certificate.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT45", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT45", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT46 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT46 new file mode 100644 index 0000000..e4f7d50 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT46 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/iam/test-fixtures/iam-ssl-unix-line-endings.pem" + ], + "timestamp": 1642967657769, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/iam/test-fixtures/iam-ssl-unix-line-endings.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT46", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT46", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT47 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT47 new file mode 100644 index 0000000..9ae4547 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT47 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/iot/test-fixtures/iot-csr.pem" + ], + "timestamp": 1642967657773, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/iot/test-fixtures/iot-csr.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT47", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT47", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT48 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT48 new file mode 100644 index 0000000..d2ba74e --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT48 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/worklink/test-fixtures/worklink-website-certificate-authority-association.pem" + ], + "timestamp": 1642967657775, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmpmtglgzm2/internal/service/worklink/test-fixtures/worklink-website-certificate-authority-association.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT48", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT48", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT5 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT5 new file mode 100644 index 0000000..178bec6 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT5 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/tls.tf" + ], + "timestamp": 1642967657618, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-rest-api-openapi/main.tf", + "/examples/api-gateway-rest-api-openapi/outputs.tf", + "/examples/api-gateway-rest-api-openapi/terraform.template.tfvars", + "/examples/api-gateway-rest-api-openapi/variables.tf", + "/examples/api-gateway-rest-api-openapi/tls.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT5", + "status": "active", + "validate": true, + "resourceTypes": [ + "tls_self_signed_cert", + "tls_private_key", + "aws_acm_certificate" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT5", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "tls_private_key", + "name": "example", + "properties": { + "algorithm": "RSA", + "compiletime_identity": "tls_private_key.example" + } + }, + { + "type": "tls_self_signed_cert", + "name": "example", + "properties": { + "allowed_uses": [ + "key_encipherment", + "digital_signature", + "server_auth" + ], + "dns_names": [ + "example.com" + ], + "key_algorithm": "${tls_private_key.example.algorithm}", + "private_key_pem": "${tls_private_key.example.private_key_pem}", + "validity_period_hours": 12, + "subject": [ + { + "common_name": "example.com", + "organization": "ACME Examples, Inc" + } + ], + "compiletime_identity": "tls_self_signed_cert.example" + } + }, + { + "type": "aws_acm_certificate", + "name": "example", + "properties": { + "certificate_body": "${tls_self_signed_cert.example.cert_pem}", + "private_key": "${tls_private_key.example.private_key_pem}", + "compiletime_identity": "aws_acm_certificate.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT6 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT6 new file mode 100644 index 0000000..e4989b5 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT6 @@ -0,0 +1,585 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/api-gateway-websocket-chat-app/terraform.template.tfvars", + "/examples/api-gateway-websocket-chat-app/variables.tf", + "/examples/api-gateway-websocket-chat-app/main.tf" + ], + "timestamp": 1642967657622, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-gateway-websocket-chat-app/terraform.template.tfvars", + "/examples/api-gateway-websocket-chat-app/variables.tf", + "/examples/api-gateway-websocket-chat-app/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT6", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_apigatewayv2_integration", + "aws_apigatewayv2_deployment", + "aws_apigatewayv2_stage", + "aws_apigatewayv2_route", + "aws_iam_role_policy_attachment", + "aws_lambda_permission", + "aws_iam_role", + "aws_iam_policy", + "aws_lambda_function", + "aws_apigatewayv2_api", + "aws_dynamodb_table" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT6", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + }, + { + "archive": {} + } + ], + "data": { + "aws_caller_identity": { + "current": { + "compiletime_identity": "data.aws_caller_identity.current" + } + }, + "aws_partition": { + "current": { + "compiletime_identity": "data.aws_partition.current" + } + }, + "aws_region": { + "current": { + "compiletime_identity": "data.aws_region.current" + } + }, + "archive_file": { + "SendMessageZip": { + "type": "zip", + "source_file": "${path.module}/sendmessage/app.js", + "output_path": "${path.module}/sendmessage/app.zip", + "compiletime_identity": "data.archive_file.SendMessageZip" + } + } + }, + "output": [ + { + "ConnectionsTableArn": { + "value": "${aws_dynamodb_table.ConnectionsTable.arn}" + } + }, + { + "OnConnectFunctionArn": { + "value": "${aws_lambda_function.OnConnectFunction.arn}" + } + }, + { + "OnDisconnectFunctionArn": { + "value": "${aws_lambda_function.OnDisconnectFunction.arn}" + } + }, + { + "SendMessageFunctionArn": { + "value": "${aws_lambda_function.SendMessageFunction.arn}" + } + }, + { + "WebSocketURI": { + "value": "${aws_apigatewayv2_stage.Stage.invoke_url}" + } + } + ], + "resources": [ + { + "type": "aws_dynamodb_table", + "name": "ConnectionsTable", + "properties": { + "name": "simplechat_connections", + "read_capacity": 5, + "write_capacity": 5, + "hash_key": "connectionId", + "attribute": [ + { + "name": "connectionId", + "type": "S" + } + ], + "server_side_encryption": [ + { + "enabled": true + } + ], + "compiletime_identity": "aws_dynamodb_table.ConnectionsTable" + } + }, + { + "type": "aws_iam_policy", + "name": "DynamoDBCrudPolicy", + "properties": { + "name": "DynamoDBCrudPolicy", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:PutItem", + "dynamodb:Scan", + "dynamodb:Query", + "dynamodb:UpdateItem", + "dynamodb:BatchWriteItem", + "dynamodb:BatchGetItem", + "dynamodb:DescribeTable" + ], + "Resource": [ + "${aws_dynamodb_table.ConnectionsTable.arn}", + "${aws_dynamodb_table.ConnectionsTable.arn}/index/*" + ] + } + ] + }, + "compiletime_identity": "aws_iam_policy.DynamoDBCrudPolicy" + } + }, + { + "type": "aws_iam_policy", + "name": "OnConnectCloudWatchLogsPolicy", + "properties": { + "name": "OnConnectCloudWatchLogsPolicy", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "logs:CreateLogGroup", + "Resource": "arn:${data.aws_partition.current.partition}:logs:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:*" + }, + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": [ + "arn:${data.aws_partition.current.partition}:logs:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:log-group:/aws/lambda/${aws_lambda_function.OnConnectFunction.function_name}:*" + ] + } + ] + }, + "compiletime_identity": "aws_iam_policy.OnConnectCloudWatchLogsPolicy" + } + }, + { + "type": "aws_iam_policy", + "name": "OnDisconnectCloudWatchLogsPolicy", + "properties": { + "name": "OnDisconnectCloudWatchLogsPolicy", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "logs:CreateLogGroup", + "Resource": "arn:${data.aws_partition.current.partition}:logs:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:*" + }, + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": [ + "arn:${data.aws_partition.current.partition}:logs:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:log-group:/aws/lambda/${aws_lambda_function.OnDisconnectFunction.function_name}:*" + ] + } + ] + }, + "compiletime_identity": "aws_iam_policy.OnDisconnectCloudWatchLogsPolicy" + } + }, + { + "type": "aws_iam_policy", + "name": "SendMessageCloudWatchLogsPolicy", + "properties": { + "name": "SendMessageCloudWatchLogsPolicy", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "logs:CreateLogGroup", + "Resource": "arn:${data.aws_partition.current.partition}:logs:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:*" + }, + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": [ + "arn:${data.aws_partition.current.partition}:logs:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:log-group:/aws/lambda/${aws_lambda_function.SendMessageFunction.function_name}:*" + ] + } + ] + }, + "compiletime_identity": "aws_iam_policy.SendMessageCloudWatchLogsPolicy" + } + }, + { + "type": "aws_iam_policy", + "name": "SendMessageManageConnectionsPolicy", + "properties": { + "name": "SendMessageManageConnectionsPolicy", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "execute-api:ManageConnections", + "Resource": "${aws_apigatewayv2_api.SimpleChatWebSocket.execution_arn}/*" + } + ] + }, + "compiletime_identity": "aws_iam_policy.SendMessageManageConnectionsPolicy" + } + }, + { + "type": "aws_apigatewayv2_api", + "name": "SimpleChatWebSocket", + "properties": { + "name": "SimpleChatWebSocket", + "protocol_type": "WEBSOCKET", + "route_selection_expression": "$request.body.message", + "compiletime_identity": "aws_apigatewayv2_api.SimpleChatWebSocket" + } + }, + { + "type": "aws_apigatewayv2_deployment", + "name": "Deployment", + "properties": { + "api_id": "${aws_apigatewayv2_api.SimpleChatWebSocket.id}", + "depends_on": [ + "${aws_apigatewayv2_route.ConnectRoute}", + "${aws_apigatewayv2_route.DisconnectRoute}", + "${aws_apigatewayv2_route.SendRoute}" + ], + "compiletime_identity": "aws_apigatewayv2_deployment.Deployment" + } + }, + { + "type": "aws_apigatewayv2_stage", + "name": "Stage", + "properties": { + "api_id": "${aws_apigatewayv2_api.SimpleChatWebSocket.id}", + "name": "Prod", + "description": "Prod Stage", + "deployment_id": "${aws_apigatewayv2_deployment.Deployment.id}", + "compiletime_identity": "aws_apigatewayv2_stage.Stage" + } + }, + { + "type": "aws_apigatewayv2_integration", + "name": "ConnectIntegrat", + "properties": { + "api_id": "${aws_apigatewayv2_api.SimpleChatWebSocket.id}", + "integration_type": "AWS_PROXY", + "description": "Connect Integration", + "integration_uri": "${aws_lambda_function.OnConnectFunction.invoke_arn}", + "integration_method": "POST", + "compiletime_identity": "aws_apigatewayv2_integration.ConnectIntegrat" + } + }, + { + "type": "aws_apigatewayv2_integration", + "name": "DisconnectInteg", + "properties": { + "api_id": "${aws_apigatewayv2_api.SimpleChatWebSocket.id}", + "integration_type": "AWS_PROXY", + "description": "Disconnect Integration", + "integration_uri": "${aws_lambda_function.OnDisconnectFunction.invoke_arn}", + "integration_method": "POST", + "compiletime_identity": "aws_apigatewayv2_integration.DisconnectInteg" + } + }, + { + "type": "aws_apigatewayv2_integration", + "name": "SendInteg", + "properties": { + "api_id": "${aws_apigatewayv2_api.SimpleChatWebSocket.id}", + "integration_type": "AWS_PROXY", + "description": "Send Integration", + "integration_uri": "${aws_lambda_function.SendMessageFunction.invoke_arn}", + "integration_method": "POST", + "compiletime_identity": "aws_apigatewayv2_integration.SendInteg" + } + }, + { + "type": "aws_apigatewayv2_route", + "name": "ConnectRoute", + "properties": { + "api_id": "${aws_apigatewayv2_api.SimpleChatWebSocket.id}", + "route_key": "$connect", + "operation_name": "ConnectRoute", + "target": "integrations/${aws_apigatewayv2_integration.ConnectIntegrat.id}", + "compiletime_identity": "aws_apigatewayv2_route.ConnectRoute" + } + }, + { + "type": "aws_apigatewayv2_route", + "name": "DisconnectRoute", + "properties": { + "api_id": "${aws_apigatewayv2_api.SimpleChatWebSocket.id}", + "route_key": "$disconnect", + "operation_name": "DisconnectRoute", + "target": "integrations/${aws_apigatewayv2_integration.DisconnectInteg.id}", + "compiletime_identity": "aws_apigatewayv2_route.DisconnectRoute" + } + }, + { + "type": "aws_apigatewayv2_route", + "name": "SendRoute", + "properties": { + "api_id": "${aws_apigatewayv2_api.SimpleChatWebSocket.id}", + "route_key": "sendmessage", + "operation_name": "SendRoute", + "target": "integrations/${aws_apigatewayv2_integration.SendInteg.id}", + "compiletime_identity": "aws_apigatewayv2_route.SendRoute" + } + }, + { + "type": "aws_lambda_function", + "name": "OnConnectFunction", + "properties": { + "filename": "${data.archive_file.OnConnectZip.output_path}", + "function_name": "OnConnectFunction", + "role": "${aws_iam_role.OnConnectRole.arn}", + "handler": "app.handler", + "runtime": "nodejs12.x", + "memory_size": 256, + "environment": [ + { + "variables": { + "TABLE_NAME": "${aws_dynamodb_table.ConnectionsTable.name}" + } + } + ], + "compiletime_identity": "aws_lambda_function.OnConnectFunction" + } + }, + { + "type": "aws_lambda_function", + "name": "OnDisconnectFunction", + "properties": { + "filename": "${data.archive_file.OnDisconnectZip.output_path}", + "function_name": "OnDisconnectFunction", + "role": "${aws_iam_role.OnDisconnectRole.arn}", + "handler": "app.handler", + "runtime": "nodejs12.x", + "memory_size": 256, + "environment": [ + { + "variables": { + "TABLE_NAME": "${aws_dynamodb_table.ConnectionsTable.name}" + } + } + ], + "compiletime_identity": "aws_lambda_function.OnDisconnectFunction" + } + }, + { + "type": "aws_lambda_function", + "name": "SendMessageFunction", + "properties": { + "filename": "${path.module}/sendmessage/app.zip", + "function_name": "SendMessageFunction", + "role": "${aws_iam_role.SendMessageRole.arn}", + "handler": "app.handler", + "runtime": "nodejs12.x", + "memory_size": 256, + "environment": [ + { + "variables": { + "TABLE_NAME": "${aws_dynamodb_table.ConnectionsTable.name}" + } + } + ], + "compiletime_identity": "aws_lambda_function.SendMessageFunction" + } + }, + { + "type": "aws_lambda_permission", + "name": "OnConnectPermission", + "properties": { + "action": "lambda:InvokeFunction", + "function_name": "${aws_lambda_function.OnConnectFunction.function_name}", + "principal": "apigateway.amazonaws.com", + "compiletime_identity": "aws_lambda_permission.OnConnectPermission" + } + }, + { + "type": "aws_lambda_permission", + "name": "OnDisconnectPermission", + "properties": { + "action": "lambda:InvokeFunction", + "function_name": "${aws_lambda_function.OnDisconnectFunction.function_name}", + "principal": "apigateway.amazonaws.com", + "compiletime_identity": "aws_lambda_permission.OnDisconnectPermission" + } + }, + { + "type": "aws_lambda_permission", + "name": "SendMessagePermission", + "properties": { + "action": "lambda:InvokeFunction", + "function_name": "${aws_lambda_function.SendMessageFunction.function_name}", + "principal": "apigateway.amazonaws.com", + "compiletime_identity": "aws_lambda_permission.SendMessagePermission" + } + }, + { + "type": "aws_iam_role", + "name": "OnConnectRole", + "properties": { + "name": "OnConnectRole", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "compiletime_identity": "aws_iam_role.OnConnectRole" + } + }, + { + "type": "aws_iam_role", + "name": "OnDisconnectRole", + "properties": { + "name": "OnDisconnectRole", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "compiletime_identity": "aws_iam_role.OnDisconnectRole" + } + }, + { + "type": "aws_iam_role", + "name": "SendMessageRole", + "properties": { + "name": "SendMessageRole", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + }, + "Action": "sts:AssumeRole" + } + ] + }, + "compiletime_identity": "aws_iam_role.SendMessageRole" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "OnConnectRoleDynamoDBCrudPolicyAttachment", + "properties": { + "role": "${aws_iam_role.OnConnectRole.name}", + "policy_arn": "${aws_iam_policy.DynamoDBCrudPolicy.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.OnConnectRoleDynamoDBCrudPolicyAttachment" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "OnConnectRoleOnConnectCloudWatchLogsPolicyAttachment", + "properties": { + "role": "${aws_iam_role.OnConnectRole.name}", + "policy_arn": "${aws_iam_policy.OnConnectCloudWatchLogsPolicy.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.OnConnectRoleOnConnectCloudWatchLogsPolicyAttachment" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "OnDisconnectRoleDynamoDBCrudPolicyAttachment", + "properties": { + "role": "${aws_iam_role.OnDisconnectRole.name}", + "policy_arn": "${aws_iam_policy.DynamoDBCrudPolicy.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.OnDisconnectRoleDynamoDBCrudPolicyAttachment" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "OnDisconnectRoleOnDisconnectCloudWatchLogsPolicyAttachment", + "properties": { + "role": "${aws_iam_role.OnDisconnectRole.name}", + "policy_arn": "${aws_iam_policy.OnDisconnectCloudWatchLogsPolicy.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.OnDisconnectRoleOnDisconnectCloudWatchLogsPolicyAttachment" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "SendMessageRoleDynamoDBCrudPolicyAttachment", + "properties": { + "role": "${aws_iam_role.SendMessageRole.name}", + "policy_arn": "${aws_iam_policy.DynamoDBCrudPolicy.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.SendMessageRoleDynamoDBCrudPolicyAttachment" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "SendMessageRoleSendMessageCloudWatchLogsPolicyAttachment", + "properties": { + "role": "${aws_iam_role.SendMessageRole.name}", + "policy_arn": "${aws_iam_policy.SendMessageCloudWatchLogsPolicy.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.SendMessageRoleSendMessageCloudWatchLogsPolicyAttachment" + } + }, + { + "type": "aws_iam_role_policy_attachment", + "name": "SendMessageRoleSendMessageManageConnectionsPolicyAttachment", + "properties": { + "role": "${aws_iam_role.SendMessageRole.name}", + "policy_arn": "${aws_iam_policy.SendMessageManageConnectionsPolicy.arn}", + "compiletime_identity": "aws_iam_role_policy_attachment.SendMessageRoleSendMessageManageConnectionsPolicyAttachment" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT7 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT7 new file mode 100644 index 0000000..bbf8cc4 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT7 @@ -0,0 +1,161 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/asg/outputs.tf", + "/examples/asg/terraform.template.tfvars", + "/examples/asg/variables.tf", + "/examples/asg/main.tf" + ], + "timestamp": 1642967657630, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/asg/outputs.tf", + "/examples/asg/terraform.template.tfvars", + "/examples/asg/variables.tf", + "/examples/asg/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT7", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_autoscaling_group", + "aws_security_group", + "aws_elb", + "aws_launch_configuration" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT7", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "locals": [ + { + "availability_zones": "${split(\",\",var.availability_zones)}" + } + ], + "resources": [ + { + "type": "aws_elb", + "name": "web-elb", + "properties": { + "name": "terraform-example-elb", + "availability_zones": "${local.availability_zones}", + "listener": [ + { + "instance_port": 80, + "instance_protocol": "http", + "lb_port": 80, + "lb_protocol": "http" + } + ], + "health_check": [ + { + "healthy_threshold": 2, + "unhealthy_threshold": 2, + "timeout": 3, + "target": "HTTP:80/", + "interval": 30 + } + ], + "compiletime_identity": "aws_elb.web-elb" + } + }, + { + "type": "aws_autoscaling_group", + "name": "web-asg", + "properties": { + "availability_zones": "${local.availability_zones}", + "name": "terraform-example-asg", + "max_size": "2", + "min_size": "1", + "desired_capacity": "1", + "force_delete": true, + "launch_configuration": "${aws_launch_configuration.web-lc.name}", + "load_balancers": [ + "${aws_elb.web-elb.name}" + ], + "tag": [ + { + "key": "Name", + "value": "web-asg", + "propagate_at_launch": true + } + ], + "compiletime_identity": "aws_autoscaling_group.web-asg" + } + }, + { + "type": "aws_launch_configuration", + "name": "web-lc", + "properties": { + "name": "terraform-example-lc", + "image_id": "${var.aws_amis[var.aws_region]}", + "instance_type": "t2.micro", + "security_groups": [ + "${aws_security_group.default.id}" + ], + "user_data": "${file(\"userdata.sh\")}", + "key_name": "terraform-aws-provider-example", + "compiletime_identity": "aws_launch_configuration.web-lc" + } + }, + { + "type": "aws_security_group", + "name": "default", + "properties": { + "name": "terraform_example_sg", + "description": "Used in the terraform", + "ingress": [ + { + "from_port": 22, + "to_port": 22, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + }, + { + "from_port": 80, + "to_port": 80, + "protocol": "tcp", + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "egress": [ + { + "from_port": 0, + "to_port": 0, + "protocol": -1, + "cidr_blocks": [ + "0.0.0.0/0" + ] + } + ], + "compiletime_identity": "aws_security_group.default" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT8 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT8 new file mode 100644 index 0000000..8ac8216 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT8 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/cloudhsm/outputs.tf", + "/examples/cloudhsm/variables.tf", + "/examples/cloudhsm/main.tf" + ], + "timestamp": 1642967657635, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cloudhsm/outputs.tf", + "/examples/cloudhsm/variables.tf", + "/examples/cloudhsm/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT8", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_cloudhsm_v2_cluster", + "aws_subnet", + "aws_vpc", + "aws_cloudhsm_v2_hsm" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT8", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "data": { + "aws_availability_zones": { + "available": { + "compiletime_identity": "data.aws_availability_zones.available" + } + }, + "aws_cloudhsm_v2_cluster": { + "cluster": { + "cluster_id": "${aws_cloudhsm_v2_cluster.cloudhsm_v2_cluster.cluster_id}", + "depends_on": [ + "${aws_cloudhsm_v2_hsm.cloudhsm_v2_hsm}" + ], + "compiletime_identity": "data.aws_cloudhsm_v2_cluster.cluster" + } + } + }, + "resources": [ + { + "type": "aws_vpc", + "name": "cloudhsm_v2_vpc", + "properties": { + "cidr_block": "10.0.0.0/16", + "tags": { + "Name": "example-aws_cloudhsm_v2_cluster" + }, + "compiletime_identity": "aws_vpc.cloudhsm_v2_vpc" + } + }, + { + "type": "aws_subnet", + "name": "cloudhsm_v2_subnets", + "properties": { + "vpc_id": "${aws_vpc.cloudhsm_v2_vpc.id}", + "cidr_block": "10.0.1.0/24", + "map_public_ip_on_launch": false, + "availability_zone": "element(data.aws_availability_zones.available.names,0)", + "tags": { + "Name": "example-aws_cloudhsm_v2_cluster" + }, + "compiletime_identity": "aws_subnet.cloudhsm_v2_subnets" + } + }, + { + "type": "aws_subnet", + "name": "cloudhsm_v2_subnets", + "properties": { + "vpc_id": "${aws_vpc.cloudhsm_v2_vpc.id}", + "cidr_block": "10.0.2.0/24", + "map_public_ip_on_launch": false, + "availability_zone": "element(data.aws_availability_zones.available.names,1)", + "tags": { + "Name": "example-aws_cloudhsm_v2_cluster" + }, + "compiletime_identity": "aws_subnet.cloudhsm_v2_subnets" + } + }, + { + "type": "aws_cloudhsm_v2_cluster", + "name": "cloudhsm_v2_cluster", + "properties": { + "hsm_type": "hsm1.medium", + "subnet_ids": "${aws_subnet.cloudhsm_v2_subnets.*.id}", + "tags": { + "Name": "example-aws_cloudhsm_v2_cluster" + }, + "compiletime_identity": "aws_cloudhsm_v2_cluster.cloudhsm_v2_cluster" + } + }, + { + "type": "aws_cloudhsm_v2_hsm", + "name": "cloudhsm_v2_hsm", + "properties": { + "subnet_id": "${aws_subnet.cloudhsm_v2_subnets[0].id}", + "cluster_id": "${aws_cloudhsm_v2_cluster.cloudhsm_v2_cluster.cluster_id}", + "compiletime_identity": "aws_cloudhsm_v2_hsm.cloudhsm_v2_hsm" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT9 b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT9 new file mode 100644 index 0000000..c3f2b31 --- /dev/null +++ b/validation/scenario-aws-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT9 @@ -0,0 +1,222 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAwsTerraHashicorp", + "paths": [ + "/examples/cognito-user-pool/variables.tf", + "/examples/cognito-user-pool/main.tf" + ], + "timestamp": 1642967657638, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cognito-user-pool/variables.tf", + "/examples/cognito-user-pool/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT9", + "status": "active", + "validate": true, + "resourceTypes": [ + "aws_iam_role", + "aws_lambda_function", + "aws_iam_role_policy", + "aws_cognito_user_pool" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT9", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_version": ">= 0.12" + } + ], + "provider": [ + { + "aws": { + "region": "${var.aws_region}" + } + } + ], + "resources": [ + { + "type": "aws_iam_role", + "name": "main", + "properties": { + "name": "terraform-example-lambda", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Principal": { + "Service": "lambda.amazonaws.com" + }, + "Effect": "Allow", + "Sid": "" + } + ] + }, + "compiletime_identity": "aws_iam_role.main" + } + }, + { + "type": "aws_iam_role", + "name": "cidp", + "properties": { + "name": "terraform-example-cognito-idp", + "path": "/service-role/", + "assume_role_policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "", + "Effect": "Allow", + "Principal": { + "Service": "cognito-idp.amazonaws.com" + }, + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "sts:ExternalId": 12345 + } + } + } + ] + }, + "compiletime_identity": "aws_iam_role.cidp" + } + }, + { + "type": "aws_lambda_function", + "name": "main", + "properties": { + "filename": "lambda_function.zip", + "function_name": "terraform-example", + "role": "${aws_iam_role.main.arn}", + "handler": "exports.example", + "runtime": "nodejs10.x", + "compiletime_identity": "aws_lambda_function.main" + } + }, + { + "type": "aws_iam_role_policy", + "name": "main", + "properties": { + "name": "terraform-example-cognito-idp", + "role": "${aws_iam_role.cidp.id}", + "policy": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "sns:publish" + ], + "Resource": [ + "*" + ] + } + ] + }, + "compiletime_identity": "aws_iam_role_policy.main" + } + }, + { + "type": "aws_cognito_user_pool", + "name": "pool", + "properties": { + "name": "terraform-example", + "email_verification_subject": "Device Verification Code", + "email_verification_message": "Please use the following code {####}", + "sms_verification_message": "{####} Baz", + "alias_attributes": [ + "email", + "preferred_username" + ], + "auto_verified_attributes": [ + "email" + ], + "verification_message_template": [ + { + "default_email_option": "CONFIRM_WITH_CODE" + } + ], + "email_configuration": [ + { + "reply_to_email_address": "foo.bar@baz" + } + ], + "password_policy": [ + { + "minimum_length": 10, + "require_lowercase": false, + "require_numbers": true, + "require_symbols": false, + "require_uppercase": true + } + ], + "lambda_config": [ + { + "create_auth_challenge": "${aws_lambda_function.main.arn}", + "custom_message": "${aws_lambda_function.main.arn}", + "define_auth_challenge": "${aws_lambda_function.main.arn}", + "post_authentication": "${aws_lambda_function.main.arn}", + "post_confirmation": "${aws_lambda_function.main.arn}", + "pre_authentication": "${aws_lambda_function.main.arn}", + "pre_sign_up": "${aws_lambda_function.main.arn}", + "pre_token_generation": "${aws_lambda_function.main.arn}", + "user_migration": "${aws_lambda_function.main.arn}", + "verify_auth_challenge_response": "${aws_lambda_function.main.arn}" + } + ], + "schema": [ + { + "attribute_data_type": "String", + "developer_only_attribute": false, + "mutable": false, + "name": "email", + "required": true, + "string_attribute_constraints": [ + { + "min_length": 7, + "max_length": 15 + } + ] + }, + { + "attribute_data_type": "Number", + "developer_only_attribute": true, + "mutable": true, + "name": "mynumber", + "required": false, + "number_attribute_constraints": [ + { + "min_value": 2, + "max_value": 6 + } + ] + } + ], + "sms_configuration": [ + { + "external_id": 12345, + "sns_caller_arn": "${aws_iam_role.cidp.arn}" + } + ], + "tags": { + "Name": "FooBar", + "Project": "Terraform" + }, + "compiletime_identity": "aws_cognito_user_pool.pool" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/master-snapshot.json b/validation/scenario-azure-quickStart/master-snapshot.json new file mode 100644 index 0000000..d2dc153 --- /dev/null +++ b/validation/scenario-azure-quickStart/master-snapshot.json @@ -0,0 +1,14 @@ +{ + "$schema": "", + "contentVersion": "1.0.0.0", + "fileType": "masterSnapshot", + "connector": "gitConnectorRemote", + "remoteFile": "azure/iac/master-snapshot.json", + "connectorUsers": [ + { + "id": "USER_1", + "testUser": "Shahin", + "source": "gitConnectorAzureQuickStart" + } + ] + } \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/master-snapshot_gen.json b/validation/scenario-azure-quickStart/master-snapshot_gen.json new file mode 100644 index 0000000..7290913 --- /dev/null +++ b/validation/scenario-azure-quickStart/master-snapshot_gen.json @@ -0,0 +1,30619 @@ +{ + "$schema": "", + "contentVersion": "1.0.0.0", + "fileType": "snapshot", + "snapshots": [ + { + "type": "filesystem", + "connectorUser": "USER_1", + "nodes": [ + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/100-blank-template/azuredeploy.json", + "/100-blank-template/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/nestedtemplates/vnet-with-dns-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT2", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT3", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT4", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/configureADBDC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT5", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/nic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT6", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/vnet-with-dns-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT7", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT8", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT9", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/configureADBDC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT10", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/nic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT11", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT12", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT13", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-module-use/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain-module-use/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT14", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/configureADNextDC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT15", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/CreateAndPrepnewVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT16", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/createChildDomain.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT17", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/createForest.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT18", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/vnet-with-dns-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT19", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT20", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/azuredeploy.json", + "/application-workloads/active-directory/create-ad-forest-with-subdomain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT21", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/airflow-postgres-app-services/azuredeploy.json", + "/application-workloads/airflow/airflow-postgres-app-services/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT22", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/config-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT23", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/replica-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT24", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/router-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT25", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT26", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/azuredeploy.json", + "/application-workloads/airflow/mongodb-sharded-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT27", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/apache/apache2-on-ubuntu-vm/azuredeploy.json", + "/application-workloads/apache/apache2-on-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT28", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.json", + "/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT29", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/apache/vertx-openjdk-apache-mysql-on-ubuntu/azuredeploy.json", + "/application-workloads/apache/vertx-openjdk-apache-mysql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT30", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/apache/zookeeper-cluster-ubuntu-vm/azuredeploy.json", + "/application-workloads/apache/zookeeper-cluster-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT31", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/barracuda/barracuda-waf-iis/azuredeploy.json", + "/application-workloads/barracuda/barracuda-waf-iis/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT32", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bitcore/bitcore-centos-vm/azuredeploy.json", + "/application-workloads/bitcore/bitcore-centos-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT33", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/blockchain/blockchain/azuredeploy.json", + "/application-workloads/blockchain/blockchain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT34", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/blockchain/eris-platform/azuredeploy.json", + "/application-workloads/blockchain/eris-platform/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT35", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/blockchain/openchain-blockchain-coinprism/azuredeploy.json", + "/application-workloads/blockchain/openchain-blockchain-coinprism/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT36", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-cf-crossregion/azuredeploy.json", + "/application-workloads/bosh/bosh-cf-crossregion/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT37", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/generate-customdata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT38", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/load-balancer-basic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT39", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/load-balancer-standard.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT40", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/storage-account-v1.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT41", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/storage-account-v2.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT42", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/azuredeploy.json", + "/application-workloads/bosh/bosh-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT43", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/buffalo/gobuffalo/azuredeploy.json", + "/application-workloads/buffalo/gobuffalo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT44", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/availabilitySetsResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT45", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/be-networkInterfacesResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT46", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/chefAuto-networkInterfacesResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT47", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/diagnosticStorageAccountResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT48", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-be-virtualmachines-with-extensions.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT49", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-be-virtualmachines-with-extensions1.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT50", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-networkInterfacesResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT51", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/keyvaultResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT52", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/loadBalancersResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT53", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/managedDisksResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT54", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/disks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/networkSecurityGroupsResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT55", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/publicIPAddressResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT56", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/virtualNetworksResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT57", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-ha-cluster/azuredeploy.json", + "/application-workloads/chef/chef-ha-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT58", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-json-parameters-linux-vm/prereqs/prereq.azuredeploy.json", + "/application-workloads/chef/chef-json-parameters-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT59", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-json-parameters-linux-vm/azuredeploy.json", + "/application-workloads/chef/chef-json-parameters-linux-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT60", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/database-new.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT61", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT62", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/empty-resources.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT63", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/orchestrator-server-setup-trend.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT64", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-chefnodes.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT65", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-chefserver.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT66", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-dsagents.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT67", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-orchestrator.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT68", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-splunkenterprise.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT69", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-trenddsm.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT70", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-vnetstorage.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT71", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/azuredeploy.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT72", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/multi-vm-chef-template-ubuntu-vm/azuredeploy.json", + "/application-workloads/chef/multi-vm-chef-template-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT73", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ckan/docker-ckan/azuredeploy.json", + "/application-workloads/ckan/docker-ckan/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT74", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT75", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeployds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT76", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeployGermany.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT77", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT78", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-ds14.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT79", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-standard_ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT80", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-standard_ds14.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT81", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT82", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/master-node.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT83", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/setup-cloudera.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT84", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/shared-resources-existing-vnet.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT85", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/shared-resources-new-vnet.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT86", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/vm-10-datadisks.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT87", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/vm-5-datadisks.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT88", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/data-node-ds13.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT89", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/data-node-ds14.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT90", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/ds13.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT91", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/master-node.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT92", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/setup-cloudera.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT93", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/shared-resources-existing-vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT94", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/shared-resources-new-vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT95", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/tableau-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT96", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.storage/storageaccounts", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/azuredeploy.json", + "/application-workloads/cloudera/cloudera-tableau/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT97", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudlens/cloudlens-moloch-ubuntu/azuredeploy.json", + "/application-workloads/cloudlens/cloudlens-moloch-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT98", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudlens/cloudlens-suricata-ubuntu/azuredeploy.json", + "/application-workloads/cloudlens/cloudlens-suricata-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT99", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cohesive/cohesive-vns3-free-multiclient-overlay-linux/azuredeploy.json", + "/application-workloads/cohesive/cohesive-vns3-free-multiclient-overlay-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT100", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cohesive/cohesive-vns3-free-try-now/azuredeploy.json", + "/application-workloads/cohesive/cohesive-vns3-free-try-now/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT101", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualnetworks/subnets", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables", + "microsoft.network/routetables/routes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/concourse/concourse-ci/azuredeploy.json", + "/application-workloads/concourse/concourse-ci/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT102", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/concourse/concourse-ci/generate-customdata.json", + "/application-workloads/concourse/concourse-ci/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT103", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/consul/consul-on-ubuntu/azuredeploy.json", + "/application-workloads/consul/consul-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT104", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/coscale/coscale-dev-env/azuredeploy.json", + "/application-workloads/coscale/coscale-dev-env/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT105", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/couchbase/couchbase/azuredeploy.json", + "/application-workloads/couchbase/couchbase/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT106", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/datascience/vm-ubuntu-DSVM-GPU-or-CPU/azuredeploy.json", + "/application-workloads/datascience/vm-ubuntu-DSVM-GPU-or-CPU/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT107", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/datastax/datastax/nested/nodes.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT108", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/datastax/datastax/nested/opscenter.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT109", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/datastax/datastax/azuredeploy.json", + "/application-workloads/datastax/datastax/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT110", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/django/django-app/azuredeploy.json", + "/application-workloads/django/django-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT111", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/django/sqldb-django-on-ubuntu/azuredeploy.json", + "/application-workloads/django/sqldb-django-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT112", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/dlworkspace/dlworkspace-deployment/azuredeploy.json", + "/application-workloads/dlworkspace/dlworkspace-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT113", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/dnx/dnx-on-ubuntu/azuredeploy.json", + "/application-workloads/dnx/dnx-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT114", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/docker/docker-simple-on-ubuntu/azuredeploy.json", + "/application-workloads/docker/docker-simple-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT115", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/dokku/dokku-vm/azuredeploy.json", + "/application-workloads/dokku/dokku-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT116", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/drone/drone-ubuntu-vm/azuredeploy.json", + "/application-workloads/drone/drone-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT117", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/drupal/drupal8-vmss-glusterfs-mysql/azuredeploy.json", + "/application-workloads/drupal/drupal8-vmss-glusterfs-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT118", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.network/loadbalancers", + "microsoft.resources/deployments", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/client-nodes-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT119", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-0disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT120", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-16disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT121", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-2disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT122", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-4disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT123", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-8disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT124", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/empty-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT125", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/jumpbox-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT126", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/kibana-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT127", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/marvel-nodes-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT128", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/master-nodes-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT129", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT130", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/client-nodes-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT131", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-0disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT132", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-16disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT133", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-2disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT134", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-4disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT135", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-8disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT136", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/empty-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT137", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/jumpbox-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT138", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/kibana-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT139", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/master-nodes-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT140", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT141", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/azuredeploy.json", + "/application-workloads/elastic/elasticsearch/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT142", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch-jmeter/prereqs/prereq.azuredeploy.json", + "/application-workloads/elastic/elasticsearch-jmeter/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT143", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch-jmeter/azuredeploy.json", + "/application-workloads/elastic/elasticsearch-jmeter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT144", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch-vmss/azuredeploy.json", + "/application-workloads/elastic/elasticsearch-vmss/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT145", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elk/diagnostics-eventhub-elk/azuredeploy.json", + "/application-workloads/elk/diagnostics-eventhub-elk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT146", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elk/diagnostics-with-elk/azuredeploy.json", + "/application-workloads/elk/diagnostics-with-elk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT147", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elk/docker-kibana-elasticsearch/azuredeploy.json", + "/application-workloads/elk/docker-kibana-elasticsearch/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT148", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/episerver/episerver-cms-in-azure/azuredeploy.json", + "/application-workloads/episerver/episerver-cms-in-azure/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT149", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.servicebus/namespaces", + "microsoft.sql/servers", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ethereum/ethereum-cpp-on-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/ethereum-cpp-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT150", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ethereum/ethereum-studio-docker-standalone-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/ethereum-studio-docker-standalone-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT151", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ethereum/go-ethereum-on-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/go-ethereum-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT152", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/expanse/go-expanse-on-ubuntu/azuredeploy.json", + "/application-workloads/expanse/go-expanse-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT153", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/github-enterprise/github-enterprise/azuredeploy.json", + "/application-workloads/github-enterprise/github-enterprise/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT154", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/gluster/gluster-file-system/azuredeploy.json", + "/application-workloads/gluster/gluster-file-system/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT155", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/grafana/Telegraf-InfluxDB-Grafana/azuredeploy.json", + "/application-workloads/grafana/Telegraf-InfluxDB-Grafana/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT156", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/prereqs/prereq.azuredeploy.json", + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT157", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/azuredeploy.json", + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT158", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/hazelcase/hazelcast-vm-cluster/azuredeploy.json", + "/application-workloads/hazelcase/hazelcast-vm-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT159", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/cloudpakdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT160", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/clusternode.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT161", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/ocs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT162", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/openshiftdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT163", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/prereqs/prereq.azuredeploy.json", + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT164", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.domainregistration/domains", + "microsoft.network/dnszones" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/azuredeploy.json", + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT165", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.recoveryservices/vaults", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/virtualnetworks/providers/roleassignments", + "microsoft.network/networksecuritygroups", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.storage/storageaccounts", + "microsoft.authorization/roledefinitions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/azuredatafactory.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT166", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/contcreate-automation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT167", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/createtableautomationjob.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT168", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-csa-extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT169", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-nsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT170", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-signup-automation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT171", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/network-interface.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT172", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/public-ip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT173", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/sqldatawarehouse.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT174", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/storage.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT175", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/virtual-machine-with-plan.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT176", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/vnet-subnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT177", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/workflow-automation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT178", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/azuredeploy.json", + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT179", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT180", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/monitoring.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT181", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/vnet-existing.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT182", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/vnet-new.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT183", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/prereqs/prereq.azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT184", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT185", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-vmss-centos/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-vmss-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT186", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/iomad/iomad-cluster-ubuntu/azuredeploy.json", + "/application-workloads/iomad/iomad-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT187", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/iomad/iomad-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/iomad/iomad-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT188", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jboss/jboss-eap-clustered-multivm-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-clustered-multivm-rhel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT189", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jboss/jboss-eap-clustered-vmss-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-clustered-vmss-rhel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT190", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jboss/jboss-eap-standalone-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-standalone-rhel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT191", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jboss/jboss-eap-standalone-rhel7/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-standalone-rhel7/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT192", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-container/nested/grafana.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT193", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-container/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-container/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT194", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.containerregistry/registries", + "microsoft.documentdb/databaseaccounts", + "microsoft.containerservice/managedclusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-vmss/nested/jenkins.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT195", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-vmss/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-vmss/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT196", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-webapp/nested/jenkins.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT197", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-webapp/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT198", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.storage/storageaccounts", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cluster-2-linux-1-win/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cluster-2-linux-1-win/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT199", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT200", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/jenkmaster-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT201", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/jenkslave-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT202", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/shared-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT203", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/multiple-windows-vms-with-common-script/azuredeploy.json", + "/application-workloads/jenkins/multiple-windows-vms-with-common-script/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT204", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jupyter/vm-linux-Jupyterhub/azuredeploy.json", + "/application-workloads/jupyter/vm-linux-Jupyterhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT205", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT206", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/jumpbox-resources-disabled.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT207", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/jumpbox-resources-enabled.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT208", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/shared-resources.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT209", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT210", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-16disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT211", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-2disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT212", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-8disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT213", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/empty-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT214", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/jumpbox-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT215", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/shared-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT216", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/zookeeper-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT217", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kemp/kemp-loadmaster-ha-pair/azuredeploy.json", + "/application-workloads/kemp/kemp-loadmaster-ha-pair/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT218", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kemp/kemp-loadmaster-multinic/azuredeploy.json", + "/application-workloads/kemp/kemp-loadmaster-multinic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT219", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kentico/kentico-xperience-environment/azuredeploy.json", + "/application-workloads/kentico/kentico-xperience-environment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT220", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lansa/lansa-vmss-windows-autoscale-sql-database/azuredeploy.json", + "/application-workloads/lansa/lansa-vmss-windows-autoscale-sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT221", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT222", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/lamplap-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT223", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/lampmysql-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT224", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/shared-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT225", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/lanplap-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT226", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/lanpneo4j-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT227", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT228", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/azuredeploy.json", + "/application-workloads/lap/lap-neo4j-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT229", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/controller.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT230", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/controllerconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT231", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/elastic-search.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT232", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/elasticconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT233", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/gluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT234", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/glustervm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT235", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/glustervmconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT236", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/mysql.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT237", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbformysql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/network.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT238", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/none-search.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT239", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/postgres.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT240", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/recoveryservices.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT241", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/recoveryservicesEnlist.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT242", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/storageAccount.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT243", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/webvmss.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT244", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings", + "microsoft.storage/storageaccounts", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/azuredeploy.json", + "/application-workloads/mahara/mahara-autoscale-cache/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT245", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/minecraft/minecraft-on-ubuntu/azuredeploy.json", + "/application-workloads/minecraft/minecraft-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT246", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/minio/minio-azure-gateway/azuredeploy.json", + "/application-workloads/minio/minio-azure-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT247", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.containerservice/managedclusters", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/minio/minio-azure-gateway/azuredeploy.json", + "/application-workloads/minio/minio-azure-gateway/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT248", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.containerservice/managedclusters", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/arbiter-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT249", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT250", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/empty-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT251", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/jumpbox-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT252", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D1.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT253", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D11.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT254", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D12.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT255", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D13.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT256", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D14.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT257", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D2.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT258", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D3.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT259", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D4.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT260", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/shared-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT261", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/arbiter-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT262", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT263", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/empty-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT264", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/frontend-resource.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT265", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/jumpbox-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT266", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D1.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT267", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D11.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT268", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D12.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT269", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D13.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT270", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D14.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT271", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D2.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT272", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D3.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT273", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D4.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT274", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/shared-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT275", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-on-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT276", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-on-ubuntu/azuredeploy.json", + "/application-workloads/mongo/mongodb-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT277", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/nested/primary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT278", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/nested/secondary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT279", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-replica-set-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT280", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/config-primary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT281", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/config-secondary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT282", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/disksSelector.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT283", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/replica-primary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT284", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/replica-secondary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT285", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/router1-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT286", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/router2-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT287", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT288", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-sharding-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT289", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/controller.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT290", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/controllerconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT291", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/elastic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT292", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/elasticconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT293", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/gluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT294", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/glustervm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT295", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/glustervmconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT296", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/mysql.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT297", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbformysql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/network.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT298", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/postgres.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT299", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/recoveryservices.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT300", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/recoveryservicesEnlist.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT301", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/redis.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT302", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/storageAccount.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT303", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/webvmss.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT304", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings", + "microsoft.storage/storageaccounts", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/azuredeploy.json", + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT305", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-ha-pxc/azuredeploy.json", + "/application-workloads/mysql/mysql-ha-pxc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT306", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-ha-pxc-zones/azuredeploy.json", + "/application-workloads/mysql/mysql-ha-pxc-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT307", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-ha-pxc-zones/azuredeploy.json", + "/application-workloads/mysql/mysql-ha-pxc-zones/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT308", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/haproxy-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT309", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/master-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT310", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT311", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/slave01-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT312", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/slave02-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT313", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/azuredeploy.json", + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT314", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/nested/mysql.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT315", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbformysql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/nested/mysqlReplica.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT316", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbformysql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/azuredeploy.json", + "/application-workloads/mysql/mysql-paas-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT317", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-replication/azuredeploy.json", + "/application-workloads/mysql/mysql-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT318", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-standalone-server-ubuntu/azuredeploy.json", + "/application-workloads/mysql/mysql-standalone-server-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT319", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/nagios/nagios-on-ubuntu/azuredeploy.json", + "/application-workloads/nagios/nagios-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT320", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/neo4j/docker-neo4j/azuredeploy.json", + "/application-workloads/neo4j/docker-neo4j/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT321", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/neo4j/neo4j-ubuntu-vm/azuredeploy.json", + "/application-workloads/neo4j/neo4j-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT322", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/jump-vm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT323", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/netapp-oncommand-cloudmanager.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT324", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/netapp-ontap-cloud.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT325", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT326", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/sql-netappotc-connect.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT327", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/sql-vm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT328", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/azuredeploy.json", + "/application-workloads/netapp/netapp-ontap-sql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT329", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/nextflow/nextflow-genomics-cluster-ubuntu/azuredeploy.json", + "/application-workloads/nextflow/nextflow-genomics-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT330", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/nylas/nylas-email-sync-engine/azuredeploy.json", + "/application-workloads/nylas/nylas-email-sync-engine/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT331", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/obs/obs-studio-stream-vm-chocolatey/azuredeploy.json", + "/application-workloads/obs/obs-studio-stream-vm-chocolatey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT332", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/octopus/octopusdeploy3-single-vm-windows/azuredeploy.json", + "/application-workloads/octopus/octopusdeploy3-single-vm-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT333", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/office/windows-vm-o365/azuredeploy.json", + "/application-workloads/office/windows-vm-o365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT334", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opencanvas/opencanvas-lms/azuredeploy.json", + "/application-workloads/opencanvas/opencanvas-lms/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT335", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opendx/openedx-devstack-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-devstack-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT336", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opendx/openedx-fullstack-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-fullstack-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT337", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opendx/openedx-scalable-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-scalable-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT338", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opendx/openedx-tutor-lilac-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-tutor-lilac-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT339", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openldap/openldap-cluster-ubuntu/azuredeploy.json", + "/application-workloads/openldap/openldap-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT340", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openldap/openldap-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/openldap/openldap-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT341", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openscholar/openscholar/azuredeploy.json", + "/application-workloads/openscholar/openscholar/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT342", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/nested/clusternode.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT343", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/nested/openshiftdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT344", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/prereqs/prereq.azuredeploy.json", + "/application-workloads/openshift/openshift-container-platform/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT345", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.domainregistration/domains", + "microsoft.network/dnszones" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/azuredeploy.json", + "/application-workloads/openshift/openshift-container-platform/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT346", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.recoveryservices/vaults", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/networksecuritygroups", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opensis/opensis-cluster-ubuntu/azuredeploy.json", + "/application-workloads/opensis/opensis-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT347", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opensis/opensis-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/opensis/opensis-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT348", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/orchard/orchard-cms-video-portal/azuredeploy.json", + "/application-workloads/orchard/orchard-cms-video-portal/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT349", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.media/mediaservices", + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/parse/docker-parse/azuredeploy.json", + "/application-workloads/parse/docker-parse/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT350", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/perforce/perforce-helix-core-server/azuredeploy.json", + "/application-workloads/perforce/perforce-helix-core-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT351", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/phabricator/phabricator-on-ubuntu/azuredeploy.json", + "/application-workloads/phabricator/phabricator-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT352", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT353", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/database-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT354", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/jumpbox-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT355", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/shared-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT356", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-standalone-server-ubuntu/azuredeploy.json", + "/application-workloads/postgre/postgresql-standalone-server-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT357", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/pubnub/pubnub-eventhub-bridge/azuredeploy.json", + "/application-workloads/pubnub/pubnub-eventhub-bridge/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT358", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/puppet/puppet-agent-linux/azuredeploy.json", + "/application-workloads/puppet/puppet-agent-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT359", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/puppet/puppet-agent-windows/azuredeploy.json", + "/application-workloads/puppet/puppet-agent-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT360", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/python/python-proxy-on-ubuntu/azuredeploy.json", + "/application-workloads/python/python-proxy-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT361", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/python/vmss-bottle-autoscale/azuredeploy.json", + "/application-workloads/python/vmss-bottle-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT362", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/qlik/qlik-sense-enterprise/azuredeploy.json", + "/application-workloads/qlik/qlik-sense-enterprise/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT363", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment/azuredeploy.json", + "/application-workloads/rds/rds-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT364", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment/vnet-with-dns-server.json", + "/application-workloads/rds/rds-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT365", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment-existing-ad/prereqs/prereq.azuredeploy.json", + "/application-workloads/rds/rds-deployment-existing-ad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT366", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment-existing-ad/azuredeploy.json", + "/application-workloads/rds/rds-deployment-existing-ad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT367", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment-ha-gateway/azuredeploy.json", + "/application-workloads/rds/rds-deployment-ha-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT368", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-update-certificate/azuredeploy.json", + "/application-workloads/rds/rds-update-certificate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT369", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/redhat/rhel-3tier-iaas/azuredeploy.json", + "/application-workloads/redhat/rhel-3tier-iaas/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT370", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-linux/nestedtemplates/customScriptExtension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT371", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-linux/nestedtemplates/nvidiaGpuDriverLinux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT372", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-linux/azuredeploy.json", + "/application-workloads/ros/ros-vm-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT373", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-windows/nestedtemplates/customScriptExtension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT374", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-windows/nestedtemplates/nvidiaGpuDriverWindows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT375", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-windows/azuredeploy.json", + "/application-workloads/ros/ros-vm-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT376", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/cfgFarm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT377", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT378", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.authorization/roleassignments", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/createvip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT379", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/installCluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT380", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/installModule.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT381", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/safekitdepl.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT382", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT383", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT384", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/cfgMirror.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT385", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT386", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/createvip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT387", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/installCluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT388", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/installModule.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT389", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/safekitdepl.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT390", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT391", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT392", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_D13_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT393", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_D14_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT394", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS11_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT395", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS13_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT396", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS14_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT397", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS2_v2_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT398", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_GS5_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT399", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS2_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT400", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS3_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT401", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS4_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT402", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS5_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT403", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/disks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT404", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/disks0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT405", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT406", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT407", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingvnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT408", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT409", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB-HANA.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT410", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB-SQL.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT411", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT412", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS-Linux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT413", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS-Windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT414", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT415", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT416", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT417", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT418", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT419", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newvnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT420", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT421", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT422", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT423", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/os-disk-parts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT424", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT425", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server-Standard_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT426", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT427", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server2-noplan.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT428", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server2.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT429", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-marketplace-image/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT430", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-marketplace-image-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT431", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT432", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT433", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT434", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT435", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT436", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT437", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-user-disk-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT438", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-image-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-user-image-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT439", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB-HANA.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT440", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB-SQL.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT441", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT442", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS-Linux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT443", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS-Windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT444", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT445", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT446", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-SCS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT447", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT448", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT449", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT450", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT451", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT452", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT453", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT454", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT455", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT456", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-apps-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-apps-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT457", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-db-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-db-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT458", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/lb-ERS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT459", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT460", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT461", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT462", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB-HANA.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT463", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB-SQL.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT464", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT465", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS-Linux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT466", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS-Windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT467", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT468", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT469", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-SCS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT470", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT471", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT472", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT473", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT474", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT475", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT476", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT477", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-user-image-converged-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT478", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB-HANA.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT479", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB-SQL.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT480", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT481", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS-Linux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT482", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS-Windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT483", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT484", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT485", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-SCS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT486", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT487", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT488", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT489", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT490", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT491", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT492", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT493", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-user-image-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT494", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-file-server-md/azuredeploy.json", + "/application-workloads/sap/sap-file-server-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT495", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-ilm-store/prereqs/prereq.azuredeploy.json", + "/application-workloads/sap/sap-ilm-store/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT496", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.managedidentity/userassignedidentities" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-ilm-store/azuredeploy.json", + "/application-workloads/sap/sap-ilm-store/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT497", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.authorization/roleassignments", + "microsoft.authorization/roledefinitions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-apps/nestedtemplates/installHostAgent.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT498", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-apps/nestedtemplates/runCommand.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT499", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-apps/azuredeploy.json", + "/application-workloads/sap/sap-lama-apps/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT500", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-ascs/nestedtemplates/installHostAgent.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT501", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-ascs/azuredeploy.json", + "/application-workloads/sap/sap-lama-ascs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT502", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-database/nestedtemplates/installHostAgent.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT503", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-database/azuredeploy.json", + "/application-workloads/sap/sap-lama-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT504", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/access_policy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT505", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/accesspolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/role_assignments.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT506", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/vm_linux_extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT507", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/vm_windows_extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT508", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/azuredeploy.json", + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT509", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/proximityplacementgroups", + "microsoft.keyvault/vaults/secrets", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sccm/sccm-currentbranch/azuredeploy.json", + "/application-workloads/sccm/sccm-currentbranch/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT510", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sccm/sccm-technicalpreview/azuredeploy.json", + "/application-workloads/sccm/sccm-technicalpreview/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT511", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/scrapy/scrapy-on-ubuntu/azuredeploy.json", + "/application-workloads/scrapy/scrapy-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT512", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sharepoint/sharepoint-adfs/azuredeploy.json", + "/application-workloads/sharepoint/sharepoint-adfs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT513", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.devtestlab/schedules", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/bastionhosts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/shibboleth/shibboleth-cluster-ubuntu/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT514", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/shibboleth/shibboleth-cluster-windows/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-cluster-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT515", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/shibboleth/shibboleth-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT516", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/shibboleth/shibboleth-singlevm-windows/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-singlevm-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT517", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/loadbalancer-shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT518", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/security-shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT519", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/workspace-enabled-shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT520", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/solace/solace-message-router/azuredeploy.json", + "/application-workloads/solace/solace-message-router/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT521", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sonarqube/sonarqube-azuresql/nested/azureDBDeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT522", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sonarqube/sonarqube-azuresql/azuredeploy.json", + "/application-workloads/sonarqube/sonarqube-azuresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT523", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/hdinsight-apache-spark/azuredeploy.json", + "/application-workloads/spark/hdinsight-apache-spark/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT524", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/hdinsight-genomics-adam/azuredeploy.json", + "/application-workloads/spark/hdinsight-genomics-adam/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT525", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-2.0-on-suse/spark-2.0-on-suse/azuredeploy.json", + "/application-workloads/spark/spark-2.0-on-suse/spark-2.0-on-suse/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT526", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT527", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/jumpbox-resources-disabled.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT528", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/jumpbox-resources-enabled.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT529", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/shared-resources.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT530", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/aks-sql-server-always-on/azuredeploy.json", + "/application-workloads/sql/aks-sql-server-always-on/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT531", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-encryption-protector-byok/azuredeploy.json", + "/application-workloads/sql/sql-encryption-protector-byok/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT532", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.resources/deployments", + "microsoft.sql/servers/keys", + "microsoft.sql/servers/encryptionprotector" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/nested/deploy-sql-alwayson.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT533", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/nested/deploy-sql-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT534", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/nested/deploy-sql-witness.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT535", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/prereqs/prereq.azuredeploy.json", + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT536", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/azuredeploy.json", + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT537", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/configuringAlwaysOn.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT538", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/configuringBackupADVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT539", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/creatingNICS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT540", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/nic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT541", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/preparingSqlServer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT542", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/provisioningNetworkStorageAGSet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT543", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/provisioningVM1.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT544", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/provisioningVM2.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT545", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/provisioningVM3.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT546", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/provisioningVM4.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT547", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/publicip-rdp.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT548", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/setupLBs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT549", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/storageAccountVirtualNetworkPublicIP.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT550", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/vnet-new.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT551", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/vnet-with-dns-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT552", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/azuredeploy.json", + "/application-workloads/sql/sqlvm-alwayson-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT553", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-provisioning-csp/azuredeploy.json", + "/application-workloads/sql/sqlvm-provisioning-csp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT554", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/nested/preparingSqlServerSa.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT555", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/prereqs/prereq.azuredeploy.json", + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT556", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/azuredeploy.json", + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT557", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/swarm/acsengine-swarmmode/azuredeploy.json", + "/application-workloads/swarm/acsengine-swarmmode/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT558", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/swarm/docker-swarm-cluster/azuredeploy.json", + "/application-workloads/swarm/docker-swarm-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT559", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/tableau/tableau-server-single-node/azuredeploy.json", + "/application-workloads/tableau/tableau-server-single-node/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT560", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/tomcat/openjdk-tomcat-ubuntu-vm/azuredeploy.json", + "/application-workloads/tomcat/openjdk-tomcat-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT561", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/torque/torque-cluster/azuredeploy.json", + "/application-workloads/torque/torque-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT562", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/traefik/docker-portainer-traefik-windows-vm/azuredeploy.json", + "/application-workloads/traefik/docker-portainer-traefik-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT563", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/trailbot/stampery-trailbot-ubuntu/azuredeploy.json", + "/application-workloads/trailbot/stampery-trailbot-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT564", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/prereqs/prereq.azuredeploy.json", + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT565", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/azuredeploy.json", + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT566", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.insights/metricalerts", + "microsoft.cache/redis", + "microsoft.insights/actiongroups", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/umbraco/umbraco-webapp-simple/azuredeploy.json", + "/application-workloads/umbraco/umbraco-webapp-simple/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT567", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/az-400-dev-env/azuredeploy.json", + "/application-workloads/visualstudio/az-400-dev-env/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT568", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/tfs-basic-domain/azuredeploy.json", + "/application-workloads/visualstudio/tfs-basic-domain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT569", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/tfs-basic-workgroup/azuredeploy.json", + "/application-workloads/visualstudio/tfs-basic-workgroup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT570", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/ubuntu-mate-desktop-vscode/azuredeploy.json", + "/application-workloads/visualstudio/ubuntu-mate-desktop-vscode/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT571", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT572", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm-chocolatey/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm-chocolatey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT573", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm-o365/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm-o365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT574", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-team-services-project-create/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-team-services-project-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT575", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.visualstudio/account" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-vstsbuildagent-vm/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-vstsbuildagent-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT576", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vm-vsts-agent/azuredeploy.json", + "/application-workloads/visualstudio/vm-vsts-agent/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT577", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vs2019-git-docker-windows2019/azuredeploy.json", + "/application-workloads/visualstudio/vs2019-git-docker-windows2019/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT578", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-fullbuild-redhat-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-fullbuild-redhat-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT579", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-fullbuild-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-fullbuild-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT580", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-minbuildjava-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-minbuildjava-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT581", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-tomcat-redhat-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-tomcat-redhat-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT582", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-tomcat-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-tomcat-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT583", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wildfly/wildfly-standalone-centos8/azuredeploy.json", + "/application-workloads/wildfly/wildfly-standalone-centos8/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT584", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/aci-wordpress/azuredeploy.json", + "/application-workloads/wordpress/aci-wordpress/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT585", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/aci-wordpress-vnet/azuredeploy.json", + "/application-workloads/wordpress/aci-wordpress-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT586", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.containerinstance/containergroups", + "microsoft.network/networkprofiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/docker-wordpress-mysql/azuredeploy.json", + "/application-workloads/wordpress/docker-wordpress-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT587", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-app-service-mysql-inapp/azuredeploy.json", + "/application-workloads/wordpress/wordpress-app-service-mysql-inapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT588", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/mysql-replication.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT589", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/vnet-existing.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT590", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/vnet-new.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT591", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/website.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT592", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/azuredeploy.json", + "/application-workloads/wordpress/wordpress-mysql-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT593", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-single-vm-ubuntu/azuredeploy.json", + "/application-workloads/wordpress/wordpress-single-vm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT594", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/zulu/Linux-Java-ZuluOpenJDK/azuredeploy.json", + "/application-workloads/zulu/Linux-Java-ZuluOpenJDK/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT595", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/zulu/Windows-Java-ZuluOpenJDK/azuredeploy.json", + "/application-workloads/zulu/Windows-Java-ZuluOpenJDK/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT596", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/100-marketplace-sample/azuredeploy.json", + "/demos/100-marketplace-sample/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT597", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/2fe-lb80-rdp-1be-nsg-rdp/azuredeploy.json", + "/demos/2fe-lb80-rdp-1be-nsg-rdp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT598", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/2fe-linux-lb80-ssh-1be-win-nsg-rdp-datadisk-ssd/azuredeploy.json", + "/demos/2fe-linux-lb80-ssh-1be-win-nsg-rdp-datadisk-ssd/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT599", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/aci-bc/azuredeploy.json", + "/demos/aci-bc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT600", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ag-docs-qs/azuredeploy.json", + "/demos/ag-docs-qs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT601", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ag-docs-wafv2/azuredeploy.json", + "/demos/ag-docs-wafv2/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT602", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/aks-nat-agic/azuredeploy.json", + "/demos/aks-nat-agic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT603", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/bastionhosts", + "microsoft.network/privateendpoints", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.operationalinsights/workspaces", + "microsoft.containerservice/managedclusters", + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/applicationgatewaywebapplicationfirewallpolicies", + "microsoft.insights/activitylogalerts", + "microsoft.compute/virtualmachines", + "microsoft.network/publicipprefixes", + "microsoft.network/natgateways", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.containerregistry/registries", + "microsoft.network/networksecuritygroups", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/alert-to-queue-with-logic-app/azuredeploy.json", + "/demos/alert-to-queue-with-logic-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT604", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/alert-to-slack-with-logic-app/azuredeploy.json", + "/demos/alert-to-slack-with-logic-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT605", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/alert-to-text-message-with-logic-app/azuredeploy.json", + "/demos/alert-to-text-message-with-logic-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT606", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/alsid-syslog-proxy/azuredeploy.json", + "/demos/alsid-syslog-proxy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT607", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/anti-malware-extension-windows-vm/azuredeploy.json", + "/demos/anti-malware-extension-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT608", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/app-service-environment-azfirewall/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT609", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networksecuritygroups", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/app-service-environment-azfirewall/azuredeploy.json", + "/demos/app-service-environment-azfirewall/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT610", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.web/hostingenvironments", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/application-gateway-demo-setup/azuredeploy.json", + "/demos/application-gateway-demo-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT611", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/application-gateway-logviewer-goaccess/azuredeploy.json", + "/demos/application-gateway-logviewer-goaccess/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT612", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/arm-asm-s2s/azuredeploy.json", + "/demos/arm-asm-s2s/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT613", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/localnetworkgateways", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/arm-template-retrieve-azure-storage-access-keys/azuredeploy.json", + "/demos/arm-template-retrieve-azure-storage-access-keys/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT614", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.storage/storageaccounts", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/asr-automation-recovery/azuredeploy.json", + "/demos/asr-automation-recovery/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT615", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/asr-automation-recovery/azuredeploy.json", + "/demos/asr-automation-recovery/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT616", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/asr-oms-monitoring/azuredeploy.json", + "/demos/asr-oms-monitoring/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT617", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/asr-oms-monitoring/azuredeploy.json", + "/demos/asr-oms-monitoring/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT618", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/asrRunbooks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT619", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/drEnablement.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT620", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/dscConfigs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT621", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedLinuxBackup.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT622", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedVms.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT623", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedVmsBackup.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT624", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/mgmtDashboards.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT625", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsAutomation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT626", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsRecoveryServices.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT627", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsWorkspace.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT628", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/azuredeploy.json", + "/demos/azmgmt-demo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT629", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/nested/AutomationRunbooksOMSDashboard/deployRunbookOnSchedule.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT630", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts/schedules", + "microsoft.automation/automationaccounts/jobschedules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/nested/AutomationRunbooksOMSDashboard/OMSAutomationRunbooksDashboard.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT631", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/nested/OMSCommon/OMSCommon.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT632", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/azuredeploy.json", + "/demos/azure-governance-operations-automation/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT633", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.insights/metricalerts", + "microsoft.insights/actiongroups", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/azuredeploy.json", + "/demos/azure-governance-operations-automation/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT634", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.insights/metricalerts", + "microsoft.insights/actiongroups", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-resource-optimization-toolkit/azuredeploy.json", + "/demos/azure-resource-optimization-toolkit/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT635", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts/schedules", + "microsoft.automation/automationaccounts/jobschedules", + "microsoft.automation/automationaccounts/credentials", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules", + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/variables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-resource-optimization-toolkit/azuredeploy.json", + "/demos/azure-resource-optimization-toolkit/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT636", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts/schedules", + "microsoft.automation/automationaccounts/jobschedules", + "microsoft.automation/automationaccounts/credentials", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules", + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/variables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-sql-managed-instance/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT637", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-sql-managed-instance/azuredeploy.json", + "/demos/azure-sql-managed-instance/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT638", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.sql/managedinstances" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-all-tabs-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-all-tabs-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT639", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-all-tabs-report/azuredeploy.json", + "/demos/backup-all-tabs-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT640", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-backupinstances-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-backupinstances-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT641", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-backupinstances-report/azuredeploy.json", + "/demos/backup-backupinstances-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT642", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-jobs-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-jobs-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT643", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-jobs-report/azuredeploy.json", + "/demos/backup-jobs-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT644", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/azure_alerts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT645", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/backup_items.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT646", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/backup_jobs_log.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT647", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/backup_jobs_non_log.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT648", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/cloud_storage.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT649", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/on_prem_alerts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT650", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/restore_jobs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT651", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/prereqs/prereq.azuredeploy.json", + "/demos/backup-la-reporting/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT652", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/azuredeploy.json", + "/demos/backup-la-reporting/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT653", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-oms-monitoring/azuredeploy.json", + "/demos/backup-oms-monitoring/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT654", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-oms-monitoring/azuredeploy.json", + "/demos/backup-oms-monitoring/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT655", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-optimize-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-optimize-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT656", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-optimize-report/azuredeploy.json", + "/demos/backup-optimize-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT657", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-policies-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-policies-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT658", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-policies-report/azuredeploy.json", + "/demos/backup-policies-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT659", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-policyadherence-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-policyadherence-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT660", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-policyadherence-report/azuredeploy.json", + "/demos/backup-policyadherence-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT661", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-summary-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-summary-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT662", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-summary-report/azuredeploy.json", + "/demos/backup-summary-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT663", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-usage-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-usage-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT664", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-usage-report/azuredeploy.json", + "/demos/backup-usage-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT665", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/bootstorm-vm-boot-time/azuredeploy.json", + "/demos/bootstorm-vm-boot-time/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT666", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/centos-2nics-lb-cluster/azuredeploy.json", + "/demos/centos-2nics-lb-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT667", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/cloud-shell-vnet/prereqs/prereq.azuredeploy.json", + "/demos/cloud-shell-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT668", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/cloud-shell-vnet/azuredeploy.json", + "/demos/cloud-shell-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT669", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.authorization/roleassignments", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.relay/namespaces", + "microsoft.network/privatednszones/a", + "microsoft.network/privateendpoints", + "microsoft.network/networkprofiles", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/cloud-shell-vnet-storage/prereqs/prereq.azuredeploy.json", + "/demos/cloud-shell-vnet-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT670", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/cloud-shell-vnet-storage/azuredeploy.json", + "/demos/cloud-shell-vnet-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT671", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.storage/storageaccounts", + "microsoft.storage/storageaccounts/fileservices", + "microsoft.storage/storageaccounts/blobservices" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/azuredeploy.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT672", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/headnode-rdma-disabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT673", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/headnode-rdma-enabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT674", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/linuxnode.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT675", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/mainTemplate.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT676", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/publicip-existing.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT677", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/publicip-new.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT678", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/vnet-with-dns-server.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT679", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/windowsnode-rdma-disabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT680", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/windowsnode-rdma-enabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT681", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/nested/linux-client/setuplinuxclient.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT682", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/nested/server/setupserver.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT683", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/nested/windows-client/setupwinclient.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT684", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/nested/genericvm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT685", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/azuredeploy.json", + "/demos/custom-private-dns/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT686", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.compute/vm.windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT687", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT688", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/nic-with-pip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT689", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/nsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT690", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT691", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT692", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/azuredeploy.json", + "/demos/ddos-attack-prevention/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT693", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.insights/alertrules", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/devtest-p2s-iis/azuredeploy.json", + "/demos/devtest-p2s-iis/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT694", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/diskraid-ubuntu-vm/azuredeploy.json", + "/demos/diskraid-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT695", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dmz-nsg/azuredeploy.json", + "/demos/dmz-nsg/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT696", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-forwarder/azuredeploy.json", + "/demos/dns-forwarder/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT697", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-records-office365/azuredeploy.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT698", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/dnszones" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-records-office365/mail.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT699", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/dnszones/cname", + "microsoft.network/dnszones/mx", + "microsoft.network/dnszones/txt" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-records-office365/mdm.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT700", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/dnszones/cname" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-records-office365/sfb.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT701", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/dnszones/cname", + "microsoft.network/dnszones/srv" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/docker-rancher/azuredeploy.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT702", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/docker-rancher/nodes.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT703", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/docker-rancher/server.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT704", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dsc-extension-iis-server-windows-vm/azuredeploy.json", + "/demos/dsc-extension-iis-server-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT705", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dsc-pullserver-to-win-server/azuredeploy.json", + "/demos/dsc-pullserver-to-win-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT706", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dynamic-web-tests/prereqs/prereq.azuredeploy.json", + "/demos/dynamic-web-tests/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT707", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/e-shop-website-with-ilb-ase/prereqs/prereq.azuredeploy.json", + "/demos/e-shop-website-with-ilb-ase/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT708", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/routetables", + "microsoft.web/hostingenvironments", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/e-shop-website-with-ilb-ase/azuredeploy.json", + "/demos/e-shop-website-with-ilb-ase/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT709", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.web/sites", + "microsoft.cdn/profiles", + "microsoft.sql/servers", + "microsoft.cache/redis", + "microsoft.network/virtualnetworks/subnets", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/eset-vm-extension/azuredeploy.json", + "/demos/eset-vm-extension/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT710", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/haproxy-redundant-floatingip-ubuntu/azuredeploy.json", + "/demos/haproxy-redundant-floatingip-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT711", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/hdinsight-linux-run-script-action/azuredeploy.json", + "/demos/hdinsight-linux-run-script-action/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT712", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/hub-and-spoke-sandbox/azuredeploy.json", + "/demos/hub-and-spoke-sandbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT713", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/identitygovernance-entitlementmanagement-extensibility-sample-logicapp/azuredeploy.json", + "/demos/identitygovernance-entitlementmanagement-extensibility-sample-logicapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT714", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/iis-2vm-sql-1vm/azuredeploy.json", + "/demos/iis-2vm-sql-1vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT715", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/imagebuilder-windowsbaseline/azuredeploy.json", + "/demos/imagebuilder-windowsbaseline/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT716", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.compute/galleries", + "microsoft.compute/galleries/images", + "microsoft.resources/deploymentscripts", + "microsoft.virtualmachineimages/imagetemplates", + "microsoft.managedidentity/userassignedidentities", + "microsoft.authorization/roledefinitions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/integrationpatterns-messagerouter-logicapp/azuredeploy.json", + "/demos/integrationpatterns-messagerouter-logicapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT717", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/integrationpatterns-messagerouter-servicebus/azuredeploy.json", + "/demos/integrationpatterns-messagerouter-servicebus/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT718", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/topics", + "microsoft.servicebus/namespaces/topics/subscriptions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ipv6-in-vnet/azuredeploy.json", + "/demos/ipv6-in-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT719", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ipv6-in-vnet-stdlb/azuredeploy.json", + "/demos/ipv6-in-vnet-stdlb/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT720", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ipv6-in-vnet-vmss/azuredeploy.json", + "/demos/ipv6-in-vnet-vmss/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT721", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/kubernetes-on-ubuntu-vmss/azuredeploy.json", + "/demos/kubernetes-on-ubuntu-vmss/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT722", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/lamp-app/azuredeploy.json", + "/demos/lamp-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT723", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/managed-disk-performance-meter/azuredeploy.json", + "/demos/managed-disk-performance-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT724", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/managed-disk-raid-performance-meter/azuredeploy.json", + "/demos/managed-disk-raid-performance-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT725", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/mcafee-extension-windows-vm/azuredeploy.json", + "/demos/mcafee-extension-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT726", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/memcached-multi-vm-ubuntu/azuredeploy.json", + "/demos/memcached-multi-vm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT727", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-action-groups/azuredeploy.json", + "/demos/monitor-action-groups/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT728", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/actiongroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-action-groups/azuredeploy.json", + "/demos/monitor-action-groups/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT729", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/actiongroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-autoscale-alert/azuredeploy.json", + "/demos/monitor-autoscale-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT730", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.insights/actiongroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-autoscale-failed-alert/azuredeploy.json", + "/demos/monitor-autoscale-failed-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT731", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.insights/actiongroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-autoscale-vmss-simplemetricbased/azuredeploy.json", + "/demos/monitor-autoscale-vmss-simplemetricbased/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT732", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-autoscale-webappserviceplan-simplemetricbased/azuredeploy.json", + "/demos/monitor-autoscale-webappserviceplan-simplemetricbased/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT733", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-servicehealth-alert/azuredeploy.json", + "/demos/monitor-servicehealth-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT734", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.insights/actiongroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/multi-tier-loadbalancing/azuredeploy.json", + "/demos/multi-tier-loadbalancing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT735", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/multi-tier-loadbalancing/azuredeploy.json", + "/demos/multi-tier-loadbalancing/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT736", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/multi-tier-service-networking/azuredeploy.json", + "/demos/multi-tier-service-networking/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT737", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nested-vms-in-virtual-network/azuredeploy.json", + "/demos/nested-vms-in-virtual-network/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT738", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/nested/nfs-ha-vm.json", + "/demos/nfs-ha-cluster-ubuntu/nested/nfs-ha.param.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT739", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/nested/nfs-ha.json", + "/demos/nfs-ha-cluster-ubuntu/nested/nfs-ha.param.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT740", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/prereqs/prereq.azuredeploy.json", + "/demos/nfs-ha-cluster-ubuntu/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT741", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/azuredeploy.json", + "/demos/nfs-ha-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT742", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-active-directory-security-audit-solution/azuredeploy.json", + "/demos/oms-active-directory-security-audit-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT743", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsAutomation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT744", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsRecoveryServices.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT745", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsWorkspace.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT746", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-all-deploy/azuredeploy.json", + "/demos/oms-all-deploy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT747", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-automation-solution/azuredeploy.json", + "/demos/oms-automation-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT748", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeploy.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT749", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeployonlyautomation.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT750", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeployonlyloganalytics.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT751", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToLinkedWorkspaceAnalyticsOnly.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT752", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToLinkedWorkspaceWithAuditLogs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT753", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToWorkspaceAnalyticsOnly.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT754", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToWorkspaceWithAuditLogs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT755", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/omsDeployStorageAnalyticsOnly.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT756", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/omsDeployStorageAnalyticsWithAuditLogs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT757", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/azuredeploy.json", + "/demos/oms-azure-storage-analytics-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT758", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeploy.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT759", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeployonlyautomation.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT760", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeployonlyloganalytics.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT761", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azurensg-solution/azuredeploy.json", + "/demos/oms-azurensg-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT762", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsAlerts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT763", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces/savedsearches" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsCustomViews.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT764", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsSavedSearches.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT765", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsWorkspace.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT766", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/azuredeploy.json", + "/demos/oms-cloudfoundry-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT767", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-existing-storage-account/prereqs/prereq.azuredeploy.json", + "/demos/oms-existing-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT768", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-existing-storage-account/azuredeploy.json", + "/demos/oms-existing-storage-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT769", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-extension-ubuntu-vm/prereqs/prereq.azuredeploy.json", + "/demos/oms-extension-ubuntu-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT770", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-extension-ubuntu-vm/azuredeploy.json", + "/demos/oms-extension-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT771", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-extension-windows-vm/prereqs/prereq.azuredeploy.json", + "/demos/oms-extension-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT772", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-extension-windows-vm/azuredeploy.json", + "/demos/oms-extension-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT773", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-hyperv-replica-solution/azuredeploy.json", + "/demos/oms-hyperv-replica-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT774", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-hyperv-replica-solution/azuredeploy.json", + "/demos/oms-hyperv-replica-solution/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT775", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-kemp-applicationdelivery-solution/azuredeploy.json", + "/demos/oms-kemp-applicationdelivery-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT776", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/views", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-scomacs-solution/azuredeploy.json", + "/demos/oms-scomacs-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT777", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-scomacs-solution/azuredeploy.json", + "/demos/oms-scomacs-solution/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT778", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-servicebus-solution/nestedtemplates/addMultipleSubscriptions.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT779", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-servicebus-solution/azuredeploy.json", + "/demos/oms-servicebus-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT780", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-vmm-analytics/azuredeploy.json", + "/demos/oms-vmm-analytics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT781", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/openvpn-access-server-ubuntu/azuredeploy.json", + "/demos/openvpn-access-server-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT782", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/parameterized-linked-templates/nested/paramappgateway.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT783", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/parameterized-linked-templates/nested/paramvm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT784", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/parameterized-linked-templates/azuredeploy.json", + "/demos/parameterized-linked-templates/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT785", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.compute/proximityplacementgroups", + "microsoft.network/bastionhosts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/private-aks-cluster/azuredeploy.json", + "/demos/private-aks-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT786", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/private-aks-cluster-with-public-dns-zone/azuredeploy.json", + "/demos/private-aks-cluster-with-public-dns-zone/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT787", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/bastionhosts", + "microsoft.network/privateendpoints", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.operationalinsights/workspaces", + "microsoft.containerservice/managedclusters", + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.insights/activitylogalerts", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.containerregistry/registries", + "microsoft.network/networksecuritygroups", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/private-endpoint-sql-from-appservice/azuredeploy.json", + "/demos/private-endpoint-sql-from-appservice/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT788", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.sql/servers/databases", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.sql/servers", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/rds-deployment-full-ha/azuredeploy.json", + "/demos/rds-deployment-full-ha/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT789", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.sql/servers/databases", + "microsoft.resources/deployments", + "microsoft.sql/servers", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/resourcegraph-sharedquery-countos/azuredeploy.json", + "/demos/resourcegraph-sharedquery-countos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT790", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resourcegraph/queries" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/s2d-oms-mgmt-solution/prereqs/prereq.azuredeploy.json", + "/demos/s2d-oms-mgmt-solution/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT791", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/albBEPool.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT792", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/deploy-sql-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT793", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/getIpAddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT794", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/lbBEPool.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT795", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/newVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT796", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT797", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT798", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT799", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT800", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/applicationgateways.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT801", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT802", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT803", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.auditingsettings.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT804", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/auditingsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.databases.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT805", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/databases" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.securityalertpolicies.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT806", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/securityalertpolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.v12.0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT807", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.storage/storageaccounts.storage.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT808", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/serverfarms.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT809", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.config.connectionstrings.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT810", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/config" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.extensions.msdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT811", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT812", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/azuredeploy.json", + "/demos/sql-injection-attack-prevention/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT813", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-import-zipped-vhds/prereqs/prereq.azuredeploy.json", + "/demos/storage-import-zipped-vhds/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT814", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.keyvault/vaults/secrets", + "microsoft.resources/deploymentscripts", + "microsoft.keyvault/vaults", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-import-zipped-vhds/azuredeploy.json", + "/demos/storage-import-zipped-vhds/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT815", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.managedidentity/userassignedidentities", + "microsoft.resources/deploymentscripts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-iops-latency-throughput-demo/azuredeploy.json", + "/demos/storage-iops-latency-throughput-demo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT816", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/deploy-s2d-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT817", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/diskSelection.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT818", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/newVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT819", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct/azuredeploy.json", + "/demos/storage-spaces-direct/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT820", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/deploy-s2d-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT821", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/diskSelection.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT822", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/newVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT823", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct-md-zones/azuredeploy.json", + "/demos/storage-spaces-direct-md-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT824", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/AVSet.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT825", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/azuredeploy.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT826", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/confDomainMember.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT827", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/ConfigDC.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT828", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/LabSubnet.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT829", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/SetVNetDNS.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT830", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/Storage.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT831", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/WinServ.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT832", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/loadbalancers/inboundnatrules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/symantec-extension-windows-vm/azuredeploy.json", + "/demos/symantec-extension-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT833", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-application-gateway-demo-setup/nested/azuredeployappgw.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT834", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-application-gateway-demo-setup/nested/azuredeploywebserver.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT835", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-application-gateway-demo-setup/azuredeploy.json", + "/demos/traffic-manager-application-gateway-demo-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT836", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-application-gateway-demo-setup/azuredeploy.json", + "/demos/traffic-manager-application-gateway-demo-setup/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT837", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-demo-setup/nested/azuredeploywebserver.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT838", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-demo-setup/azuredeploy.json", + "/demos/traffic-manager-demo-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT839", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-demo-setup/azuredeploy.json", + "/demos/traffic-manager-demo-setup/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT840", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/two-tier-nodejsapp-migration-to-containers-on-azure/azuredeploy.json", + "/demos/two-tier-nodejsapp-migration-to-containers-on-azure/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT841", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ubuntu-desktop-gnome/azuredeploy.json", + "/demos/ubuntu-desktop-gnome/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT842", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ubuntu-desktop-gnome-rdp/azuredeploy.json", + "/demos/ubuntu-desktop-gnome-rdp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT843", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ubuntu-desktop-xfce-rdp/azuredeploy.json", + "/demos/ubuntu-desktop-xfce-rdp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT844", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ubuntu-netdisk-setup/azuredeploy.json", + "/demos/ubuntu-netdisk-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT845", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-32-data-disks-high-iops/azuredeploy.json", + "/demos/vm-32-data-disks-high-iops/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT846", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-cpu-sysbench-meter/azuredeploy.json", + "/demos/vm-cpu-sysbench-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT847", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-cse-msi/azuredeploy.json", + "/demos/vm-cse-msi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT848", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-disk-performance-meter/azuredeploy.json", + "/demos/vm-disk-performance-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT849", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-to-vm-bandwidth-meter/azuredeploy.json", + "/demos/vm-to-vm-bandwidth-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT850", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-to-vm-bandwidth-meter/azuredeploy.json", + "/demos/vm-to-vm-bandwidth-meter/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT851", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-to-vm-throughput-meter-multithreaded/azuredeploy.json", + "/demos/vm-to-vm-throughput-meter-multithreaded/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT852", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-win-iis-app-ssl/azuredeploy.json", + "/demos/vm-win-iis-app-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT853", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-winrm-keyvault-windows/azuredeploy.json", + "/demos/vm-winrm-keyvault-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT854", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-winrm-lb-windows/azuredeploy.json", + "/demos/vm-winrm-lb-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT855", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-winrm-windows/azuredeploy.json", + "/demos/vm-winrm-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT856", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT857", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/remove-user.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT858", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/single-user.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT859", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-datascience/azuredeploy.json", + "/demos/vmss-datascience/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT860", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-linux-jumpbox/azuredeploy.json", + "/demos/vmss-linux-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT861", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-win-iis-app-ssl/azuredeploy.json", + "/demos/vmss-win-iis-app-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT862", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-windows-jumpbox/azuredeploy.json", + "/demos/vmss-windows-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT863", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-windows-webapp-dsc-autoscale/azuredeploy.json", + "/demos/vmss-windows-webapp-dsc-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT864", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/app.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT865", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/app_svc_plan.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT866", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/dns_record.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT867", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones/a" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_dns.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT868", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/privatednszones/virtualnetworklinks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT869", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privateendpoints" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link_ipconfigs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT870", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link_ipconfigs_helper.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT871", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/sqldb.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT872", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/storage.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT873", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/vnets.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT874", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/vnet_peering.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT875", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks/virtualnetworkpeerings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/azuredeploy.json", + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT876", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-sql-docdb-search/azuredeploy.json", + "/demos/web-app-sql-docdb-search/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT877", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.documentdb/databaseaccounts", + "microsoft.search/searchservices", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-sql-docdb-search/azuredeploy.json", + "/demos/web-app-sql-docdb-search/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT878", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.documentdb/databaseaccounts", + "microsoft.search/searchservices", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/disksSelector.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT879", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/lb-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT880", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/mysqlMaster-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT881", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/mysqlSlave-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT882", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/redisMaster-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT883", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/redisSlave-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT884", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT885", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/web-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT886", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/azuredeploy.json", + "/demos/website-cluster-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT887", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT888", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/applicationgateway.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT889", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT890", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT891", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.auditingsettings.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT892", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/auditingsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.databases.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT893", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/databases" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.securityalertpolicies.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT894", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/securityalertpolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.v12.0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT895", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.storage/storageaccounts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT896", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/serverfarms.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT897", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.config.connectionstrings.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT898", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/config" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.extensions.msdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT899", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT900", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/azuredeploy.json", + "/demos/xss-attack-prevention/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT901", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/active-directory-new-domain/0.9/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT902", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/active-directory-new-domain/0.9/azuredeploy.json", + "/modules/active-directory-new-domain/0.9/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT903", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/machine-learning-workspace/0.9/azuredeploy.json", + "/modules/machine-learning-workspace/0.9/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT904", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.Compute/galleries/create/1.0/azuredeploy.json", + "/modules/Microsoft.Compute/galleries/create/1.0/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT905", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT906", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/keys/0.9/prereqs/prereq.azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/keys/0.9/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT907", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/keys/0.9/azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/keys/0.9/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT908", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/keys" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.ManagedIdentity/user-assigned-identity-role-assignment/1.0/azuredeploy.json", + "/modules/Microsoft.ManagedIdentity/user-assigned-identity-role-assignment/1.0/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT909", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.managedidentity/userassignedidentities" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.Storage/storageAccounts/0.9/azuredeploy.json", + "/modules/Microsoft.Storage/storageAccounts/0.9/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT910", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.json", + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT911", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.analysisservices/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.json", + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT912", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.analysisservices/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-all-resources/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-all-resources/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT913", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT914", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet-publicip/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet-publicip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT915", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-hostname/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-hostname/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT916", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT917", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT918", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT919", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.apimanagement/service", + "microsoft.network/applicationgateways", + "microsoft.insights/components", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-publicip/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-publicip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT920", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-msi/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-msi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT921", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT922", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT923", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-reference-keyvault/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-reference-keyvault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT924", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-key-vault-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT925", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.apimanagement/service", + "microsoft.keyvault/vaults/secrets", + "microsoft.keyvault/vaults", + "microsoft.managedidentity/userassignedidentities" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-oms-integration/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-logs-oms-integration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT926", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.apimanagement/service/providers/diagnosticsettings", + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.apimanagement/service/apis/policies.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT927", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service/apis/policies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.apimanagement/service/loggers.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT928", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service/loggers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.eventhub/namespaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT929", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/eventhubs", + "microsoft.eventhub/namespaces/eventhubs/authorizationrules", + "microsoft.eventhub/namespaces/authorizationrules", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.storage/storageaccounts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT930", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/sites/extensions.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT931", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/serverfarms.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT932", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/sites.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT933", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/config", + "microsoft.web/sites", + "microsoft.web/sites/hostnamebindings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT934", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT935", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-simple-zones/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-simple-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT936", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/azure-api-management-create/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/azure-api-management-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT937", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT938", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT939", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-ff/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-ff/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT940", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-keyvaultref/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-keyvaultref/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT941", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT942", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores/keyvalues", + "microsoft.appconfiguration/configurationstores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv-copy/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT943", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores/keyvalues", + "microsoft.appconfiguration/configurationstores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appplatform/azure-spring-cloud/azuredeploy.json", + "/quickstarts/microsoft.appplatform/azure-spring-cloud/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT944", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.appplatform/spring" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.attestation/attestation-provider-create/azuredeploy.json", + "/quickstarts/microsoft.attestation/attestation-provider-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT945", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.attestation/attestationproviders" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/azurepolicy-assign-builtinpolicy-resourcegroup/azuredeploy.json", + "/quickstarts/microsoft.authorization/azurepolicy-assign-builtinpolicy-resourcegroup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT946", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/policyassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-multiplevms/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-multiplevms/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT947", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT948", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-virtualmachine/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-virtualmachine/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT949", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-managedidentity-maps/azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-managedidentity-maps/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT950", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.maps/accounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.maps/accounts/providers/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/101-automation/azuredeploy.json", + "/quickstarts/microsoft.automation/101-automation/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT951", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/101-automation/azuredeploy.json", + "/quickstarts/microsoft.automation/101-automation/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT952", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionConfiguration.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT953", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionDNS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT954", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionNetwork.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT955", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionServer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT956", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/azuredeploy.json", + "/quickstarts/microsoft.automation/automation-configuration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT957", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT958", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates", + "microsoft.storage/storageaccounts", + "microsoft.batch/batchaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/azuredeploy.json", + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT959", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.batch/batchaccounts/certificates" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.batch/batchaccount-with-storage/azuredeploy.json", + "/quickstarts/microsoft.batch/batchaccount-with-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT960", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.batch/batchaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.blockchain/blockchain-asaservice/azuredeploy.json", + "/quickstarts/microsoft.blockchain/blockchain-asaservice/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT961", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.blockchain/blockchainmembers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-cache/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-cache/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT962", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-cache/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-cache/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT963", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT964", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/empty-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT965", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/jumpbox-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT966", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/node-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT967", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/shared-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT968", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT969", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT970", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-persistence/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-persistence/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT971", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-persistence/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-persistence/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT972", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-vnet/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT973", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT974", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT975", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT976", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis/linkedservers", + "microsoft.cache/redis" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-customize/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-customize/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT977", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-custom-origin/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-custom-origin/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT978", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-cacheoverride/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-cacheoverride/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT979", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-responseheader/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-responseheader/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT980", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-rewriteandredirect/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-rewriteandredirect/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT981", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-urlsigning/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-urlsigning/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT982", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-storage-account/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-storage-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT983", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-custom-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-custom-rules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT984", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/cdnwebapplicationfirewallpolicies", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-managed-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-managed-rules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT985", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/cdnwebapplicationfirewallpolicies", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-rate-limit-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-rate-limit-rules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT986", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/cdnwebapplicationfirewallpolicies", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-web-app/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-web-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT987", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-Computer-vision-API/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-Computer-vision-API/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT988", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cognitiveservices/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT989", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cognitiveservices/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT990", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cognitiveservices/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-universalkey/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-universalkey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT991", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cognitiveservices/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/1-vm-loadbalancer-2-nics/azuredeploy.json", + "/quickstarts/microsoft.compute/1-vm-loadbalancer-2-nics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT992", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/1vm-2nics-2subnets-1vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/1vm-2nics-2subnets-1vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT993", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-internal-load-balancer/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-internal-load-balancer/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT994", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-loadbalancer-lbrules/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-loadbalancer-lbrules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT995", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-loadbalancer-natrules/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-loadbalancer-natrules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT996", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/availability-set-create-3FDs-20UDs/azuredeploy.json", + "/quickstarts/microsoft.compute/availability-set-create-3FDs-20UDs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT997", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT998", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/CreateEncryptedManagedDisk-kek.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT999", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/disks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/CreateEncryptedManagedDisk-nokek.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1000", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/disks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/customscript-extension-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/customscript-extension-public-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1001", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1002", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1003", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1004", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1005", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1006", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-All.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1007", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-Data.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1008", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-OS.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1009", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1010", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1011", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-linux/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-linux/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1012", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1013", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-windows/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-windows/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1014", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1015", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/discover-private-ip-dynamically/azuredeploy.json", + "/quickstarts/microsoft.compute/discover-private-ip-dynamically/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1016", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1017", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/push-pull-install.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1018", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/register-azure-automation.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1019", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1020", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/register-azure-automation.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1021", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1022", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image-managed-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image-managed-disks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1023", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1024", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1025", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1026", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1027", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1028", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1029", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1030", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1031", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets/extensions", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1032", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1033", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1034", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/updatevm-kek.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1035", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/updatevm-nokek.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1036", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1037", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1038", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-vmss-linux-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-vmss-linux-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1039", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-vmss-windows-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-vmss-windows-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1040", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachinescalesets/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/glassfish-on-suse/nestedtemplates/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1041", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/glassfish-on-suse/azuredeploy.json", + "/quickstarts/microsoft.compute/glassfish-on-suse/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1042", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1043", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1044", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vm-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vm-lb-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1045", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux/nestedtemplates/base.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1046", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1047", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1048", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1049", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-windows/nestedtemplates/base.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1050", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1051", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1052", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1053", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/premium-storage-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/premium-storage-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1054", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1055", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-definition-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-definition-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1056", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-definition-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-definition-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1057", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries/images" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-version-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-version-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1058", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries", + "microsoft.compute/images", + "microsoft.compute/disks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-version-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-version-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1059", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries/images/versions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/ultra-managed-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/ultra-managed-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1060", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/disks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-automatic-static-ip/nested/update-nic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1061", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-automatic-static-ip/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-automatic-static-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1062", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-copy-index-loops/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-copy-index-loops/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1063", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-copy-managed-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-copy-managed-disks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1064", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/nestedtemplates/customScriptExtension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1065", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/nestedtemplates/vm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1066", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-custom-script-output/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1067", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-custom-script-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1068", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-customdata/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-customdata/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1069", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-dedicated-hosts/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-dedicated-hosts/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1070", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/hostgroups/hosts", + "microsoft.compute/hostgroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-different-rg-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-different-rg-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1071", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-different-rg-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-different-rg-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1072", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.storage/storageaccounts", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1073", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1074", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join-existing/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join-existing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1075", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-dynamic-data-disks-selection/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-dynamic-data-disks-selection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1076", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-efficientip-vhd/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-efficientip-vhd/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1077", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-efficientip-vhd/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-efficientip-vhd/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1078", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/disks", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-from-user-image/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-from-user-image/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1079", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/images", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-generalized-vhd-new-or-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-generalized-vhd-new-or-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1080", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/images", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-dynamic-data-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-dynamic-data-disks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1081", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-jupyterhub/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-jupyterhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1082", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-serial-output/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-serial-output/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1083", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-monitoring-diagnostics-extension/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-monitoring-diagnostics-extension/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1084", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/nestedtemplates/createVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1085", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/nestedtemplates/setUpRBAC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1086", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/providers/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1087", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1088", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi-storage/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1089", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-data-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-data-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1090", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-ipconfig/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-ipconfig/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1091", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-nics-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-nics-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1092", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-new-or-existing-conditions/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-new-or-existing-conditions/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1093", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1094", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1095", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/disks", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-push-certificate-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-push-certificate-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1096", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-secure-password/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-secure-password/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1097", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-freebsd/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-freebsd/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1098", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1099", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-linux-with-accelerated-networking/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-linux-with-accelerated-networking/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1100", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-rhel/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-rhel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1101", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-rhel-unmanaged/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-rhel-unmanaged/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1102", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-sles/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-sles/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1103", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1104", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-windows-visualstudio2019/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-windows-visualstudio2019/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1105", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1106", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-specialized-vhd-new-or-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-specialized-vhd-new-or-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1107", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/disks", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1108", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1109", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1110", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1111", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1112", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1113", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/nested/preparingSqlServerSa.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1114", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1115", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autopatching/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-autopatching/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1116", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/nested/preparingSqlServerSa.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1117", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1118", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1119", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sshkey/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sshkey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1120", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-tags/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-tags/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1121", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-trustedlaunch-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-trustedlaunch-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1122", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-trustedlaunch-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-trustedlaunch-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1123", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-userdata/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-userdata/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1124", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.compute/omsExtension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1125", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.compute/vm.windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1126", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1127", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/nic-with-pip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1128", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/nsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1129", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1130", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1131", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1132", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-baseline/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-baseline/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1133", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.guestconfiguration/guestconfigurationassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-copy-datadisks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-copy-datadisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1134", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-ssh/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-ssh/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1135", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/disks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/nested/noIncomingRemote.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1136", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/nested/yesIncomingRemote.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1137", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1138", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.datafactory/datafactories/gateways", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-rdp-port/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-rdp-port/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1139", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-standardssd-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-standardssd-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1140", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/IRInstall.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1141", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/IRtemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1142", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories/gateways", + "microsoft.datafactory/factories/integrationruntimes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/VMtemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1143", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1144", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.datafactory/datafactories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/azuredeploy.json", + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1145", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automatic-repairs-slb-health-probe/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-automatic-repairs-slb-health-probe/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1146", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automation-dsc/nested/provisionServer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1147", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings", + "microsoft.compute/virtualmachinescalesets", + "microsoft.automation/automationaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automation-dsc/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-automation-dsc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1148", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-azure-files-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-azure-files-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1149", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-custom-script-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-custom-script-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1150", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1151", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1152", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-manual-add-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-manual-add-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1153", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-quickstart/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-quickstart/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1154", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-internal-loadbalancer/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-internal-loadbalancer/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1155", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-customimage-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-customimage-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1156", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings", + "microsoft.compute/images" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1157", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1158", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1159", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-master-slave-customscript/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-master-slave-customscript/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1160", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/nestedtemplates/createVMSS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1161", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/nestedtemplates/setUpRBAC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1162", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/providers/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-msi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1163", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-public-ip-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-public-ip-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1164", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-scale-existing/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-scale-existing/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1165", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-scale-existing/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-scale-existing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1166", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-app-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-app-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1167", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1168", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-web-ssl/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-web-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1169", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1170", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1171", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-app-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-app-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1172", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1173", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-customimage/templates/storageaccount.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1174", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-customimage/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-customimage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1175", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/images" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1176", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1177", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1178", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-with-public-ip-prefix/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-with-public-ip-prefix/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1179", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/publicipprefixes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.confidentialledger/confidential-ledger-create/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1180", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.confidentialledger/ledgers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-healthprobe/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-healthprobe/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1181", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-public-ip/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-public-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1182", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-secure-environmentvariables/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-secure-environmentvariables/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1183", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-emptydir/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-emptydir/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1184", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-gitrepo/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-gitrepo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1185", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-secret/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-secret/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1186", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-sftp-files/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-sftp-files/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1187", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-sftp-files-existing-storage/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-sftp-files-existing-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1188", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-storage-file-share/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-storage-file-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1189", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-udp/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-udp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1190", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-vnet/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1191", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.containerinstance/containergroups", + "microsoft.network/networkprofiles", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1192", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1193", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1194", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1195", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-azml-targetcompute/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-azml-targetcompute/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1196", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters", + "microsoft.containerservice/managedclusters/agentpools" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1197", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerregistry/registries" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1198", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerregistry/registries/replications", + "microsoft.containerregistry/registries" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1199", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerregistry/registries/replications", + "microsoft.containerregistry/registries" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-with-policies-and-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-with-policies-and-diagnostics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1200", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerregistry/registries", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-existing-resource-deployments/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-existing-resource-deployments/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1201", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.customproviders/associations" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-with-function/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-with-function/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1202", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.customproviders/resourceproviders", + "microsoft.storage/storageaccounts", + "microsoft.customproviders/resourceproviders/customresources", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-with-logicapp/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-with-logicapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1203", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.customproviders/resourceproviders", + "microsoft.customproviders/resourceproviders/customresources", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1204", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.databricks/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-load-balancer/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-load-balancer/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1205", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.databricks/workspaces", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-nat-gateway/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-nat-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1206", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.databricks/workspaces", + "microsoft.network/networksecuritygroups", + "microsoft.network/natgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1207", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1208", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1209", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.databricks/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1210", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.databricks/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1211", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.databricks/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1212", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1213", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.databricks/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1214", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1215", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.databricks/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1216", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy-stored-proc/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy-stored-proc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1217", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-chained-copy-activities/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-chained-copy-activities/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1218", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-ftp-hive-blob/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-ftp-hive-blob/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1219", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-hive-transformation/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-hive-transformation/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1220", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-salesforce-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-salesforce-to-blob-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1221", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1222", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1223", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-blob-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1224", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories/linkedservices", + "microsoft.storage/storageaccounts/blobservices/containers", + "microsoft.datafactory/factories", + "microsoft.storage/storageaccounts", + "microsoft.datafactory/factories/datasets", + "microsoft.datafactory/factories/pipelines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1225", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.dbformysql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1226", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1227", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1228", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1229", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1230", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-create/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1231", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1232", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1233", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1234", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1235", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1236", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1237", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/templates/install-mongo.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1238", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/azuredeploy.json", + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1239", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/nested/VMtemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1240", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/azuredeploy.json", + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1241", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-analytics/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-analytics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1242", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.datalakeanalytics/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1243", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1244", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-key-vault/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-key-vault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1245", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-no-encryption/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-no-encryption/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1246", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/azureFunction.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1247", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/config", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/blobTriggerdFunction.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1248", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/config", + "microsoft.eventhub/namespaces", + "microsoft.storage/storageaccounts/providers/eventsubscriptions", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/dataFactory.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1249", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/datalakeAnalytics.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1250", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.datalakeanalytics/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/elasticSearchKibana.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1251", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/eventHub.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1252", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/storageAccount.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1253", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/yash-datalake/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1254", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datamigration/azure-database-migration-service/azuredeploy.json", + "/quickstarts/microsoft.datamigration/azure-database-migration-service/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1255", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.datamigration/services", + "microsoft.network/networkinterfaces", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datamigration/azure-database-migration-simple-deploy/azuredeploy.json", + "/quickstarts/microsoft.datamigration/azure-database-migration-simple-deploy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1256", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.datamigration/services", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-create-disk-enable-protection/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-create-disk-enable-protection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1257", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dataprotection/backupvaults", + "microsoft.authorization/roleassignments", + "microsoft.compute/disks", + "microsoft.dataprotection/backupvaults/backuppolicies", + "microsoft.dataprotection/backupvaults/backupinstances" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-create-storage-account-enable-protection/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-create-storage-account-enable-protection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1258", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dataprotection/backupvaults", + "microsoft.authorization/roleassignments", + "microsoft.dataprotection/backupvaults/backuppolicies", + "microsoft.dataprotection/backupvaults/backupinstances", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-vault-basic/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-vault-basic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1259", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dataprotection/backupvaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1260", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datashare/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1261", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datashare/accounts", + "microsoft.datashare/accounts/shares" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1262", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.datashare/accounts/shares/datasets", + "microsoft.datashare/accounts/shares/synchronizationsettings", + "microsoft.datashare/accounts/shares", + "microsoft.datashare/accounts/shares/invitations", + "microsoft.datashare/accounts", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1263", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.datashare/accounts/shares/datasets", + "microsoft.datashare/accounts/shares/synchronizationsettings", + "microsoft.datashare/accounts/shares", + "microsoft.datashare/accounts/shares/invitations", + "microsoft.datashare/accounts", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dbformariadb/managed-mariadb-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbformariadb/managed-mariadb-with-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1264", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.dbformariadb/servers", + "microsoft.dbformariadb/servers/firewallrules", + "microsoft.dbformariadb/servers/virtualnetworkrules", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dbformysql/managed-mysql-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbformysql/managed-mysql-with-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1265", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.dbformysql/servers/virtualnetworkrules", + "microsoft.dbformysql/servers/firewallrules", + "microsoft.dbformysql/servers", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dbforpostgresql/managed-postgresql-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbforpostgresql/managed-postgresql-with-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1266", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.dbforpostgresql/servers", + "microsoft.dbforpostgresql/servers/virtualnetworkrules", + "microsoft.dbforpostgresql/servers/firewallrules", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devices/iothub-auto-route-messages/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-auto-route-messages/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1267", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devices/iothubs", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devices/iothub-device-provisioning/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-device-provisioning/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1268", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devices/iothubs", + "microsoft.devices/provisioningservices" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devices/iothub-with-consumergroup-create/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-with-consumergroup-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1269", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devices/iothubs", + "microsoft.devices/iothubs/eventhubendpoints/consumergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account/azuredeploy.json", + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1270", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.deviceupdate/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account-instance-iothub/azuredeploy.json", + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account-instance-iothub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1271", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devices/iothubs", + "microsoft.deviceupdate/accounts", + "microsoft.devices/iothubs/eventhubendpoints/consumergroups", + "microsoft.deviceupdate/accounts/instances" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1272", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devtestlab/labs" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1273", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devtestlab/labs" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm-claimed/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm-claimed/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1274", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devtestlab/labs" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-advanced-threat-protection-create-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-advanced-threat-protection-create-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1275", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1276", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces/tables", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1277", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces/tables", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1278", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces/tables", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1279", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces/tables", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1280", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1281", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1282", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-free/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-free/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1283", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1284", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/gremlindatabases/graphs", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/gremlindatabases" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1285", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/gremlindatabases/graphs", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/gremlindatabases" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1286", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/gremlindatabases/graphs", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/gremlindatabases" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1287", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/gremlindatabases/graphs", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/gremlindatabases" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1288", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/mongodbdatabases", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/mongodbdatabases/collections" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1289", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/mongodbdatabases", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/mongodbdatabases/collections" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1290", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/mongodbdatabases", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/mongodbdatabases/collections" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1291", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/mongodbdatabases", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/mongodbdatabases/collections" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1292", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.documentdb/databaseaccounts", + "microsoft.network/privateendpoints" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1293", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.documentdb/databaseaccounts", + "microsoft.network/privateendpoints" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1294", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1295", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1296", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1297", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1298", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1299", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1300", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/triggers", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/storedprocedures", + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/userdefinedfunctions", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1301", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/triggers", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/storedprocedures", + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/userdefinedfunctions", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-multiple-containers/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-multiple-containers/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1302", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/apis/databases", + "microsoft.documentdb/databaseaccounts/apis/databases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-rbac/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-rbac/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1303", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqlroledefinitions", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/sqlroleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1304", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/tables", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1305", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/tables", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1306", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/tables", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1307", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/tables", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1308", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/sourcecontrols", + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1309", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/sourcecontrols", + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.documentdb/databaseaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1310", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.web/sites/functions", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1311", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventgrid/eventsubscriptions", + "microsoft.eventgrid/topics" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-cloudevents/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-cloudevents/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1312", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventgrid/eventsubscriptions", + "microsoft.eventgrid/topics", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-event-hubs-handler/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-event-hubs-handler/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1313", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventgrid/eventsubscriptions", + "microsoft.eventgrid/topics", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1314", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1315", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventgrid/eventsubscriptions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-queue/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-queue/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1316", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.eventgrid/eventsubscriptions", + "microsoft.eventgrid/topics", + "microsoft.servicebus/namespaces/queues" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-topic/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-topic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1317", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.eventgrid/topics", + "microsoft.eventgrid/eventsubscriptions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1318", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1319", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.eventgrid/systemtopics", + "microsoft.eventgrid/systemtopics/eventsubscriptions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group/azuredeploy.json", + "/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1320", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-authrule-namespace-and-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-authrule-namespace-and-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1321", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/authorizationrules", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1322", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1323", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-namespace-ipfilter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1324", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/ipfilterrules", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-namespace-vnet/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-namespace-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1325", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.eventhub/namespaces/virtualnetworkrules", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1326", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/clusters", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1327", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/eventhubs", + "microsoft.eventhub/clusters", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1328", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1329", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1330", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-inflate/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-inflate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1331", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1332", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/eventhubs", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1333", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.eventhub/namespaces", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-loadbased/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-loadbased/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1334", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-schedulebased/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-schedulebased/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1335", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1336", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1337", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-datalake-store-azure-storage/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-datalake-store-azure-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1338", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-enhancedwrite/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-enhancedwrite/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1339", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1340", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1341", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1342", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1343", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-one-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-one-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1344", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-two-vnets-same-region/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-two-vnets-same-region/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1345", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-interactive-hive/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-interactive-hive/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1346", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-kafka/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-kafka/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1347", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-kafka-with-edge-schema-registry/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-kafka-with-edge-schema-registry/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1348", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters/applications" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1349", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1350", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters/applications" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-password/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-password/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1351", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1352", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1353", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1354", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-edge-node/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-edge-node/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1355", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters/applications" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1356", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1357", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-linked-storage-account/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-linked-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1358", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-sql-database/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1359", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1360", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1361", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-rserver/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-rserver/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1362", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-secure-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-secure-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1363", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1364", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1365", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.healthcareapis/azure-api-for-fhir/azuredeploy.json", + "/quickstarts/microsoft.healthcareapis/azure-api-for-fhir/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1366", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.healthcareapis/services" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1367", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/azuredeploy.json", + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1368", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/datacollectionrules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/insights-alertrules-application-insights/azuredeploy.json", + "/quickstarts/microsoft.insights/insights-alertrules-application-insights/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1369", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.insights/components", + "microsoft.insights/metricalerts", + "microsoft.insights/actiongroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/insights-alertrules-servicehealth/azuredeploy.json", + "/quickstarts/microsoft.insights/insights-alertrules-servicehealth/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1370", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.insights/actiongroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/log-analytics-with-datasources-solutions/azuredeploy.json", + "/quickstarts/microsoft.insights/log-analytics-with-datasources-solutions/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1371", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/datasources", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.operationsmanagement/solutions", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/log-analytics-with-solutions-and-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.insights/log-analytics-with-solutions-and-diagnostics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1372", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1373", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1374", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/metricalerts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1375", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1376", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/metricalerts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-webtest-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-webtest-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1377", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1378", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-create-rbac/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-create-rbac/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1379", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.authorization/roleassignments", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1380", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.keyvault/vaults/secrets", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-secret-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-secret-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1381", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/nested/sqlserver.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1382", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1383", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-with-logging-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-with-logging-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1384", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1385", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/azuredeploy.json", + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1386", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/accesspolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/managed-hsm-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/managed-hsm-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1387", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/managedhsms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.kubernetes/aks/azuredeploy.json", + "/quickstarts/microsoft.kubernetes/aks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1388", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.kubernetes/aks-vmss-systemassigned-identity/azuredeploy.json", + "/quickstarts/microsoft.kubernetes/aks-vmss-systemassigned-identity/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1389", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.kusto/kusto-cluster-database/azuredeploy.json", + "/quickstarts/microsoft.kusto/kusto-cluster-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1390", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.kusto/clusters/databases", + "microsoft.kusto/clusters" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.kusto/kusto-vnet/azuredeploy.json", + "/quickstarts/microsoft.kusto/kusto-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1391", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.kusto/clusters", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/integration-service-environment/azuredeploy.json", + "/quickstarts/microsoft.logic/integration-service-environment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1392", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/integrationserviceenvironments/managedapis", + "microsoft.network/virtualnetworks", + "microsoft.logic/integrationserviceenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-and-function-app/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-and-function-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1393", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.logic/workflows", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-as2-send-receive/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-as2-send-receive/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1394", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/integrationaccounts/agreements", + "microsoft.web/connections", + "microsoft.logic/integrationaccounts", + "microsoft.logic/workflows", + "microsoft.logic/integrationaccounts/partners" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-b2b-disaster-recovery-replication/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-b2b-disaster-recovery-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1395", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/integrationaccounts", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-correlation-using-servicebus/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-correlation-using-servicebus/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1396", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows", + "microsoft.servicebus/namespaces/topics", + "microsoft.servicebus/namespaces/authorizationrules", + "microsoft.servicebus/namespaces/topics/subscriptions", + "microsoft.servicebus/namespaces/topics/subscriptions/rules", + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-create/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1397", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-custom-api/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-custom-api/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1398", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-ftp-to-blob/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-ftp-to-blob/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1399", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-sendgrid/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-sendgrid/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1400", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-sql-proc/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-sql-proc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1401", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logicapps-jobscheduler/azuredeploy.json", + "/quickstarts/microsoft.logic/logicapps-jobscheduler/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1402", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1403", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.resources/deployments", + "microsoft.datalakeanalytics/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1404", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1405", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters", + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1406", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1407", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1408", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1409", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1410", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1411", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1412", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1413", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1414", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1415", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1416", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1417", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.machinelearningservices/workspaces/datastores", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1418", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1419", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1420", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1421", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.machinelearningservices/workspaces/datastores", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1422", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1423", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.machinelearningservices/workspaces/datastores", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1424", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1425", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1426", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-workspace-multiple-dataset-datastore/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-workspace-multiple-dataset-datastore/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1427", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.machinelearningservices/workspaces/datasets", + "microsoft.machinelearningservices/workspaces/datastores", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1428", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1429", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1430", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1431", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1432", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1433", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1434", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1435", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1436", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1437", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1438", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1439", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1440", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1441", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1442", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1443", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1444", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.managedidentity/userassignedidentities", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.containerregistry/registries" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1445", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1446", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/logicapproleassignments.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1447", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/pausetemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1448", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/resumetemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1449", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1450", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.authorization/roleassignments", + "microsoft.machinelearningservices/workspaces", + "microsoft.synapse/workspaces/sqlpools", + "microsoft.synapse/workspaces/bigdatapools", + "microsoft.synapse/workspaces", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1451", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes", + "microsoft.machinelearningservices/workspaces/linkedservices" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-private-ip/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-private-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1452", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.machinelearningservices/workspaces/computes", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aci/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aci/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1453", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/services" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/prereqs/101-machine-learning-compute-create-akscompute-azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1454", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1455", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/services" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1456", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1457", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1458", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/keys", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1459", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/keys", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1460", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1461", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1462", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1463", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1464", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.insights/components", + "microsoft.keyvault/vaults", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1465", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.insights/components", + "microsoft.keyvault/vaults", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-create/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1466", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.maps/accounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1467", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1468", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1469", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.maps/accounts", + "microsoft.maps/accounts/providers/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1470", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.maps/accounts", + "microsoft.maps/accounts/providers/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.media/media-services-create/azuredeploy.json", + "/quickstarts/microsoft.media/media-services-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1471", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.media/mediaservices", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.json", + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1472", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.migrate/migrateprojects/solutions", + "microsoft.migrate/migrateprojects" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.json", + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1473", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.migrate/migrateprojects/solutions", + "microsoft.migrate/migrateprojects" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.netapp/anf-nfs-volume/azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-nfs-volume/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1474", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.netapp/netappaccounts/capacitypools", + "microsoft.network/virtualnetworks", + "microsoft.netapp/netappaccounts/capacitypools/volumes", + "microsoft.netapp/netappaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.netapp/anf-smb-volume/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-smb-volume/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1475", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.netapp/anf-smb-volume/azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-smb-volume/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1476", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.netapp/netappaccounts/capacitypools", + "microsoft.resources/deployments", + "microsoft.netapp/netappaccounts/capacitypools/volumes", + "microsoft.netapp/netappaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/aad-domainservices/azuredeploy.json", + "/quickstarts/microsoft.network/aad-domainservices/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1477", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.aad/domainservices" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/aks-application-gateway-ingress-controller/azuredeploy.json", + "/quickstarts/microsoft.network/aks-application-gateway-ingress-controller/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1478", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/bastionhosts", + "microsoft.network/privateendpoints", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.operationalinsights/workspaces", + "microsoft.containerservice/managedclusters", + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/applicationgatewaywebapplicationfirewallpolicies", + "microsoft.insights/activitylogalerts", + "microsoft.compute/virtualmachines", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.containerregistry/registries", + "microsoft.network/networksecuritygroups", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-2vms-iis-ssl/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-2vms-iis-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1479", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/applicationgateways", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1480", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-key-vault-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1481", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.keyvault/vaults/secrets", + "microsoft.network/applicationgateways", + "microsoft.keyvault/vaults", + "microsoft.managedidentity/userassignedidentities" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-multihosting/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-multihosting/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1482", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-path-override/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-path-override/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1483", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-probe/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-probe/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1484", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-public-ip/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-public-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1485", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-public-ip-ssl-offload/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-public-ip-ssl-offload/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1486", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-redirect/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-redirect/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1487", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-rewrite/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-rewrite/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1488", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-sslpolicy-custom/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-sslpolicy-custom/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1489", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-sslpolicy-predefined/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-sslpolicy-predefined/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1490", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-url-path-based-routing/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-url-path-based-routing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1491", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-v2-autoscale-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-v2-autoscale-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1492", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1493", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1494", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1495", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/applicationgatewaywebapplicationfirewallpolicies", + "microsoft.network/applicationgateways", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1496", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.resources/deployments", + "microsoft.network/applicationgateways", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/fetchIpAddress.json", + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1497", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapps/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-webapps/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1498", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-security-group/azuredeploy.json", + "/quickstarts/microsoft.network/application-security-group/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1499", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/applicationsecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azure-bastion/azuredeploy.json", + "/quickstarts/microsoft.network/azure-bastion/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1500", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworks/subnets", + "microsoft.network/bastionhosts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azure-bastion-nsg/azuredeploy.json", + "/quickstarts/microsoft.network/azure-bastion-nsg/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1501", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.network/bastionhosts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azure-dns-new-zone/azuredeploy.json", + "/quickstarts/microsoft.network/azure-dns-new-zone/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1502", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/dnszones", + "microsoft.network/dnszones/a" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azure-firewall-dns-proxy/azuredeploy.json", + "/quickstarts/microsoft.network/azure-firewall-dns-proxy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1503", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/bastionhosts", + "microsoft.network/privateendpoints", + "microsoft.compute/availabilitysets", + "microsoft.network/routetables", + "microsoft.network/azurefirewalls", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/firewallpolicies/rulecollectiongroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.network/networksecuritygroups", + "microsoft.network/firewallpolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-apprule-netrule-ipgroups/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-apprule-netrule-ipgroups/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1504", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/firewallpolicies/rulecollectiongroups", + "microsoft.network/firewallpolicies", + "microsoft.network/ipgroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-ipgroups/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-ipgroups/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1505", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/firewallpolicies", + "microsoft.network/ipgroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-ipgroups-and-linux-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-ipgroups-and-linux-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1506", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/ipgroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-zones/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1507", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-forced-tunneling/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-forced-tunneling/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1508", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-premium/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-premium/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1509", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/firewallpolicies/rulecollectiongroups", + "microsoft.compute/virtualmachines", + "microsoft.network/bastionhosts", + "microsoft.network/firewallpolicies", + "microsoft.keyvault/vaults/secrets", + "microsoft.resources/deploymentscripts", + "microsoft.keyvault/vaults", + "microsoft.managedidentity/userassignedidentities", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-sandbox-linux/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-sandbox-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1510", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-with-firewallpolicy-sandbox-linux/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-with-firewallpolicy-sandbox-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1511", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/firewallpolicies", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-with-zones-sandbox/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-with-zones-sandbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1512", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/bastion-hub-spoke-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/bastion-hub-spoke-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1513", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/bastionhosts", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/create-and-enable-ddos-protection-plans/azuredeploy.json", + "/quickstarts/microsoft.network/create-and-enable-ddos-protection-plans/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1514", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/ddosprotectionplans", + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1515", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/azuredeploy.json", + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1516", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks/virtualnetworkpeerings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-create/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1517", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/expressroutecircuits" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-public-private-peering/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-public-private-peering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1518", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/expressroutecircuits" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-vnet-connection/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-vnet-connection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1519", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/expressroute-private-peering-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-private-peering-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1520", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/networksecuritygroups", + "microsoft.network/expressroutecircuits", + "microsoft.network/expressroutecircuits/peerings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1521", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1522", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1523", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-api-management/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-api-management/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1524", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service/loggers", + "microsoft.apimanagement/service", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.network/frontdoors", + "microsoft.apimanagement/service/providers/diagnosticsettings", + "microsoft.network/networksecuritygroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/frontdoors/providers/diagnosticsettings", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-basic/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-basic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1525", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-caching/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-caching/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1526", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-multiple-backends/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-multiple-backends/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1527", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-redirect/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-redirect/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1528", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-custom-domain/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-custom-domain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1529", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors", + "microsoft.network/frontdoors/frontendendpoints/customhttpsconfiguration" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-custom-domain-customer-certificate/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-custom-domain-customer-certificate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1530", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors", + "microsoft.network/frontdoors/frontendendpoints/customhttpsconfiguration" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-geo-filtering/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-geo-filtering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1531", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-health-probes/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-health-probes/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1532", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-managed-waf-ruleset/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-managed-waf-ruleset/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1533", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-app-service-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-app-service-private-link/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1534", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-function-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-function-private-link/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1535", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-storage-blobs-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-storage-blobs-private-link/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1536", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-vm-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-vm-private-link/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1537", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-waf-managed/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-waf-managed/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1538", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-waf-managed/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-waf-managed/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1539", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.operationalinsights/workspaces", + "microsoft.cdn/profiles/origingroups", + "microsoft.cdn/profiles/securitypolicies", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-priority-lb/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-priority-lb/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1540", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-rate-limiting/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-rate-limiting/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1541", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-session-affinity/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-session-affinity/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1542", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1543", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-api-management-external/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-api-management-external/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1544", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service/policies", + "microsoft.resources/deployments", + "microsoft.apimanagement/service/namedvalues" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-app-service-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-app-service-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1545", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.web/sites", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-application-gateway-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-application-gateway-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1546", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.resources/deployments", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-application-gateway-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-application-gateway-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1547", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.resources/deployments", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups", + "microsoft.containerinstance/containergroups", + "microsoft.network/networkprofiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1548", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups", + "microsoft.containerinstance/containergroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-function-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-function-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1549", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.resources/deployments", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-geo-filtering/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-geo-filtering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1550", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.cdn/profiles/origingroups", + "microsoft.cdn/profiles/securitypolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-rate-limit/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-rate-limit/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1551", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.cdn/profiles/origingroups", + "microsoft.cdn/profiles/securitypolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-rule-set/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-rule-set/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1552", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles/rulesets/rules", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/rulesets", + "microsoft.cdn/profiles/origingroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-storage-static-website/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-storage-static-website/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1553", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-waf-custom/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-waf-custom/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1554", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.operationalinsights/workspaces", + "microsoft.cdn/profiles/origingroups", + "microsoft.cdn/profiles/securitypolicies", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-waf-clientip/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-waf-clientip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1555", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-waf-http-params/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-waf-http-params/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1556", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/fw-docs-qs/azuredeploy.json", + "/quickstarts/microsoft.network/fw-docs-qs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1557", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/fwm-docs-qs/azuredeploy.json", + "/quickstarts/microsoft.network/fwm-docs-qs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1558", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/azurefirewalls", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/networkinterfaces", + "microsoft.network/publicipaddresses", + "microsoft.network/firewallpolicies/rulecollectiongroups", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/firewallpolicies", + "microsoft.network/virtualnetworks/subnets", + "microsoft.network/virtualwans", + "microsoft.network/virtualhubs/hubvirtualnetworkconnections", + "microsoft.network/virtualhubs/hubroutetables", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/internal-loadbalancer-create/azuredeploy.json", + "/quickstarts/microsoft.network/internal-loadbalancer-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1559", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/internal-loadbalancer-create-haports/azuredeploy.json", + "/quickstarts/microsoft.network/internal-loadbalancer-create-haports/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1560", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/load-balancer-cross-region/azuredeploy.json", + "/quickstarts/microsoft.network/load-balancer-cross-region/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1561", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/load-balancer-ip-configured-backend-pool/azuredeploy.json", + "/quickstarts/microsoft.network/load-balancer-ip-configured-backend-pool/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1562", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/load-balancer-ipv6-create/azuredeploy.json", + "/quickstarts/microsoft.network/load-balancer-ipv6-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1563", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/load-balancer-standard-create/azuredeploy.json", + "/quickstarts/microsoft.network/load-balancer-standard-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1564", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/loadbalancer-with-multivip/azuredeploy.json", + "/quickstarts/microsoft.network/loadbalancer-with-multivip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1565", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/loadbalancer-with-nat-rule/azuredeploy.json", + "/quickstarts/microsoft.network/loadbalancer-with-nat-rule/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1566", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.json", + "/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1567", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/publicipprefixes", + "microsoft.network/natgateways", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nat-gateway-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nat-gateway-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1568", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/natgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-create/azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1569", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkwatchers", + "microsoft.authorization/locks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1570", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1571", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nic-publicip-dns-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nic-publicip-dns-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1572", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/nested/updateSubnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1573", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1574", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1575", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-create-with-diagnostic-logs/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-create-with-diagnostic-logs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1576", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/locks", + "microsoft.network/networksecuritygroups", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-dmz-in-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-dmz-in-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1577", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1578", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1579", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/point-to-site/azuredeploy.json", + "/quickstarts/microsoft.network/point-to-site/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1580", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/point-to-site-aad/azuredeploy.json", + "/quickstarts/microsoft.network/point-to-site-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1581", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/private-dns-zone/azuredeploy.json", + "/quickstarts/microsoft.network/private-dns-zone/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1582", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones/virtualnetworklinks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/privatelink-service/azuredeploy.json", + "/quickstarts/microsoft.network/privatelink-service/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1583", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/privateendpoints", + "microsoft.network/privatelinkservices" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/reserved-ip/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/reserved-ip/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1584", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/reserved-ip/azuredeploy.json", + "/quickstarts/microsoft.network/reserved-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1585", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/route-server/azuredeploy.json", + "/quickstarts/microsoft.network/route-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1586", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/virtualhubs/bgpconnections", + "microsoft.network/virtualhubs/ipconfigurations", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/route-server-quagga/azuredeploy.json", + "/quickstarts/microsoft.network/route-server-quagga/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1587", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/virtualhubs/bgpconnections", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualhubs/ipconfigurations" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/route-table-create/azuredeploy.json", + "/quickstarts/microsoft.network/route-table-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1588", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/locks", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/security-group-create/azuredeploy.json", + "/quickstarts/microsoft.network/security-group-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1589", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1590", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/localnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn-create/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1591", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/localnetworkgateways", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/connections" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn-fqdn-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn-fqdn-bgp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1592", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/localnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/subnet-add-vnet-existing/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/subnet-add-vnet-existing/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1593", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/subnet-add-vnet-existing/azuredeploy.json", + "/quickstarts/microsoft.network/subnet-add-vnet-existing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1594", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1595", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/trafficmanagerprofiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1596", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/trafficmanagerprofiles/externalendpoints" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-external-endpoint/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-external-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1597", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/trafficmanagerprofiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-vm/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1598", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/trafficmanagerprofiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-vm-zones/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-vm-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1599", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/trafficmanagerprofiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-webapp/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1600", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.network/trafficmanagerprofiles" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/userdefined-routes-appliance/azuredeploy.json", + "/quickstarts/microsoft.network/userdefined-routes-appliance/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1601", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1602", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualhubs", + "microsoft.network/virtualwans", + "microsoft.network/vpngateways", + "microsoft.network/vpnsites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan-with-all-gateways/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan-with-all-gateways/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1603", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/vpnserverconfigurations", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/p2svpngateways", + "microsoft.network/expressroutegateways", + "microsoft.network/vpngateways", + "microsoft.network/virtualwans", + "microsoft.network/virtualhubs/hubvirtualnetworkconnections" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan-with-route-tables/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan-with-route-tables/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1604", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/vpnserverconfigurations", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/p2svpngateways", + "microsoft.network/expressroutegateways", + "microsoft.network/vpngateways", + "microsoft.network/virtualwans", + "microsoft.network/virtualhubs/hubvirtualnetworkconnections", + "microsoft.network/virtualhubs/hubroutetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-2subnets-service-endpoints-storage-integration/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-2subnets-service-endpoints-storage-integration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1605", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-create-with-diagnostic-logs/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-create-with-diagnostic-logs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1606", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-nsg-for-redis/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/vnet-nsg-for-redis/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1607", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-nsg-for-redis/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-nsg-for-redis/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1608", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1609", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet-bgp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1610", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet-peering/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet-peering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1611", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworks/virtualnetworkpeerings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-transitive-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-transitive-bgp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1612", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-two-subnets/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-two-subnets/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1613", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1614", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/localnetworkgateways", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/azuredeploy.json", + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1615", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/connections" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.notificationhubs/notification-hub/azuredeploy.json", + "/quickstarts/microsoft.notificationhubs/notification-hub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1616", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.notificationhubs/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.operationsmanagement/azure-sentinel/azuredeploy.json", + "/quickstarts/microsoft.operationsmanagement/azure-sentinel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1617", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.portal/azure-portal-dashboard/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.portal/azure-portal-dashboard/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1618", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.portal/azure-portal-dashboard/azuredeploy.json", + "/quickstarts/microsoft.portal/azure-portal-dashboard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1619", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.portal/default-shared-dashboard/azuredeploy.json", + "/quickstarts/microsoft.portal/default-shared-dashboard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1620", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.powerbi/powerbi-workspace-create/azuredeploy.json", + "/quickstarts/microsoft.powerbi/powerbi-workspace-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1621", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.powerbi/workspacecollections" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.powerbidedicated/power-bi-embedded/azuredeploy.json", + "/quickstarts/microsoft.powerbidedicated/power-bi-embedded/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1622", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.powerbidedicated/capacities" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-classic-resource-manager-vms/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-classic-resource-manager-vms/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1623", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1624", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1625", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-vms/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-vms/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1626", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1627", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/providers/diagnosticsettings", + "microsoft.operationalinsights/workspaces", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1628", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/providers/diagnosticsettings", + "microsoft.operationalinsights/workspaces", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-with-backup-policies/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-with-backup-policies/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1629", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies", + "microsoft.recoveryservices/vaults/backupstorageconfig", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vm-and-configure-backup/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vm-and-configure-backup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1630", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.recoveryservices/vaults", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-daily-backup-policy-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-daily-backup-policy-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1631", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-basic/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-basic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1632", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1633", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backupstorageconfig" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1634", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.sqlvirtualmachine/sqlvirtualmachines", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1635", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-weekly-backup-policy-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-weekly-backup-policy-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1636", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-all-resources/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-all-resources/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1637", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-hybridconnection/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-hybridconnection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1638", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-wcfrelay/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-wcfrelay/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1639", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-hybridconnection/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-hybridconnection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1640", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-namespace/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-namespace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1641", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-wcfrelay/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-wcfrelay/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1642", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1643", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/azuredeploy.json", + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1644", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.authorization/roleassignments", + "microsoft.managedidentity/userassignedidentities", + "microsoft.resources/deploymentscripts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1645", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/templatespecs" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-create/azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1646", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-migrate-create/nested/managed-disk-templatespec.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1647", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/templatespecs" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-migrate-create/azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-migrate-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1648", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.scheduler/scheduler-webapp/azuredeploy.json", + "/quickstarts/microsoft.scheduler/scheduler-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1649", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.scheduler/jobcollections", + "microsoft.web/serverfarms", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.search/azure-search-create/azuredeploy.json", + "/quickstarts/microsoft.search/azure-search-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1650", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.search/searchservices" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1651", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1652", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.security/automations" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1653", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1654", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.security/automations" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1655", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1656", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.security/automations" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1657", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1658", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.security/automations" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1659", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/providers/alertrules", + "microsoft.operationalinsights/workspaces/providers/onboardingstates" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/azuredeploy.json", + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1660", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.securityinsights/automationrules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/scheduler-service-bus/azuredeploy.json", + "/quickstarts/microsoft.servicebus/scheduler-service-bus/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1661", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.scheduler/jobcollections", + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-authrule-namespace-and-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-authrule-namespace-and-queue/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1662", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces/authorizationrules", + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1663", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1664", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1665", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-queue/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1666", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/queues" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-topic-and-subscription/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-topic-and-subscription/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1667", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-topic-subscription-rule/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-topic-subscription-rule/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1668", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1669", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1670", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/ipfilterrules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1671", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/ipfilterrules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-vnet/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1672", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/virtualnetworkrules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-pn-ar/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-pn-ar/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1673", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces/authorizationrules", + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1674", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.servicebus/namespaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-queue/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1675", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1676", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1677", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription-sqlfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription-sqlfilter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1678", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicefabric/5-vm-ubuntu-1-nodetypes-secure/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/5-vm-ubuntu-1-nodetypes-secure/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1679", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.servicefabric/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicefabric/service-fabric-secure-cluster-5-node-1-nodetype/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/service-fabric-secure-cluster-5-node-1-nodetype/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1680", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.servicefabric/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicefabric/service-fabric-secure-nsg-cluster-65-node-3-nodetype/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/service-fabric-secure-nsg-cluster-65-node-3-nodetype/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1681", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups", + "microsoft.servicefabric/clusters", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.signalrservice/signalr/azuredeploy.json", + "/quickstarts/microsoft.signalrservice/signalr/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1682", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.signalrservice/signalr" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application/artifacts/ManagedAppZip/mainTemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1683", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1684", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.solutions/applicationdefinitions", + "microsoft.solutions/applications" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/artifacts/ManagedAppZip/linkedtemplates/storageAccountdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1685", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/artifacts/ManagedAppZip/mainTemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1686", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1687", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.solutions/applicationdefinitions", + "microsoft.solutions/applications" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/artifacts/ManagedAppZip/mainTemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1688", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.storage/storageaccounts", + "microsoft.insights/metricalerts", + "microsoft.insights/actiongroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1689", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.solutions/applicationdefinitions", + "microsoft.solutions/applications" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/private-endpoint-sql/azuredeploy.json", + "/quickstarts/microsoft.sql/private-endpoint-sql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1690", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.sql/servers/databases", + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-blob-storage/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-blob-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1691", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-eventhub/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1692", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1693", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1694", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-data-warehouse-transparent-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-data-warehouse-transparent-encryption-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1695", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.sql/servers/databases", + "microsoft.sql/servers/databases/transparentdataencryption" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-database/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1696", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.sql/servers/databases" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-database-transparent-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-database-transparent-encryption-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1697", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-elastic-pool-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-elastic-pool-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1698", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.sql/servers/elasticpools", + "microsoft.sql/servers/databases", + "microsoft.sql/servers/firewallrules" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-logical-server/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-logical-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1699", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.storage/storageaccounts", + "microsoft.authorization/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-logical-server-aad-only-auth/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-logical-server-aad-only-auth/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1700", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-managed-instance-azure-environment/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-managed-instance-azure-environment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1701", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-threat-detection-db-policy-multiple-databases/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-threat-detection-db-policy-multiple-databases/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1702", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.sql/servers/databases" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1703", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1704", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1705", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.sql/managedinstances", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-diagnostic-settings/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-diagnostic-settings/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1706", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.eventhub/namespaces", + "microsoft.operationalinsights/workspaces", + "microsoft.sql/managedinstances", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1707", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.sql/managedinstances", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-point-to-site-vpn/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-point-to-site-vpn/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1708", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/networksecuritygroups", + "microsoft.sql/managedinstances", + "microsoft.network/routetables" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup/nested/join-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1709", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sqlvirtualmachine/sqlvirtualmachines" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1710", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.sqlvirtualmachine/sqlvirtualmachines", + "microsoft.sqlvirtualmachine/sqlvirtualmachinegroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-aglistener-setup/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1711", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sqlvirtualmachine/sqlvirtualmachinegroups/availabilitygrouplisteners" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1712", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1713", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.sqlvirtualmachine/sqlvirtualmachines", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage-ultrassd/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage-ultrassd/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1714", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage-ultrassd/azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage-ultrassd/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1715", + "status": "inactive", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/blob-storage-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.storage/blob-storage-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1716", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/file-share-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.storage/file-share-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1717", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1718", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-account-service-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-account-service-encryption-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1719", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-advanced-threat-protection-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-advanced-threat-protection-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1720", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.security/advancedthreatprotectionsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-container/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-container/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1721", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/blobservices/containers", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-encryption-and-retention/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-encryption-and-retention/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1722", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.storage/storageaccounts/blobservices" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-encryption-with-cmk/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-encryption-with-cmk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1723", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/keys", + "microsoft.managedidentity/userassignedidentities", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-file-share/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-file-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1724", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-multi-blob-container/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-multi-blob-container/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1725", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/blobservices/containers", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-multi-file-share/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-multi-file-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1726", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-static-website/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-static-website/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1727", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1728", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.compute/disks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/azuredeploy.json", + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1729", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storagepool/diskpools", + "microsoft.storagepool/diskpools/iscsitargets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.streamanalytics/streamanalytics-create/azuredeploy.json", + "/quickstarts/microsoft.streamanalytics/streamanalytics-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1730", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.streamanalytics/streamingjobs" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/logicapproleassignments.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1731", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/pausetemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1732", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/resumetemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1733", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/azuredeploy.json", + "/quickstarts/microsoft.synapse/synapse-poc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1734", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.authorization/roleassignments", + "microsoft.synapse/workspaces/sqlpools", + "microsoft.synapse/workspaces/bigdatapools", + "microsoft.synapse/workspaces", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-payg-with-iothub/azuredeploy.json", + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-payg-with-iothub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1735", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.timeseriesinsights/environments/accesspolicies", + "microsoft.devices/iothubs/eventhubendpoints/consumergroups", + "microsoft.devices/iothubs", + "microsoft.timeseriesinsights/environments", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-with-eventhub/azuredeploy.json", + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-with-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1736", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.timeseriesinsights/environments", + "microsoft.timeseriesinsights/environments/accesspolicies", + "microsoft.eventhub/namespaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-function/azuredeploy.json", + "/quickstarts/microsoft.web/app-function/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1737", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-certificate-standard/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-certificate-standard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1738", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.certificateregistration/certificateorders/certificates", + "microsoft.web/certificates", + "microsoft.certificateregistration/certificateorders", + "microsoft.web/sites/domainownershipidentifiers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-certificate-wildcard/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-certificate-wildcard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1739", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.certificateregistration/certificateorders/certificates", + "microsoft.web/certificates", + "microsoft.certificateregistration/certificateorders", + "microsoft.domainregistration/domains/domainownershipidentifiers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-docs-linux/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-docs-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1740", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-docs-windows/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-docs-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1741", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1742", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/hostnamebindings", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1743", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-regional-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-regional-vnet-integration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1744", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/asev2-appservice-sql-vpngw/azuredeploy.json", + "/quickstarts/microsoft.web/asev2-appservice-sql-vpngw/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1745", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.network/networkinterfaces", + "microsoft.network/publicipaddresses", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.network/virtualnetworkgateways", + "microsoft.sql/servers", + "microsoft.web/sites/config", + "microsoft.compute/virtualmachines", + "microsoft.web/hostingenvironments", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts", + "microsoft.insights/components", + "microsoft.keyvault/vaults", + "microsoft.web/serverfarms", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1746", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/azuredeploy.json", + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1747", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/container-app-create/azuredeploy.json", + "/quickstarts/microsoft.web/container-app-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1748", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.web/kubeenvironments", + "microsoft.web/containerapps" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/create-ase-with-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/create-ase-with-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1749", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/documentdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/documentdb-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1750", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts", + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1751", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1752", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1753", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1754", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1755", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/slots", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1756", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/slots", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-dedicated-github-deploy/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-dedicated-github-deploy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1757", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-storage-private-endpoints/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-storage-private-endpoints/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1758", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.web/sites/networkconfig", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-http-trigger/azuredeploy.json", + "/quickstarts/microsoft.web/function-http-trigger/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1759", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.keyvault/vaults/secrets", + "microsoft.web/sites/functions", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1760", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.web/sites/networkconfig", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1761", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.web/sites/networkconfig", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/functions-managed-identity/azuredeploy.json", + "/quickstarts/microsoft.web/functions-managed-identity/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1762", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.storage/storageaccounts", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/logic-app-transform-function/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/logic-app-transform-function/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1763", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/logic-app-transform-function/azuredeploy.json", + "/quickstarts/microsoft.web/logic-app-transform-function/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1764", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/functions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/mobile-app-create/azuredeploy.json", + "/quickstarts/microsoft.web/mobile-app-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1765", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.notificationhubs/namespaces", + "microsoft.sql/servers", + "microsoft.notificationhubs/namespaces/notificationhubs", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/private-endpoint-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/private-endpoint-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1766", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.web/sites/config", + "microsoft.web/sites/hostnamebindings", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.web/serverfarms", + "microsoft.network/virtualnetworks/subnets" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/private-webapp-with-app-gateway-and-apim/azuredeploy.json", + "/quickstarts/microsoft.web/private-webapp-with-app-gateway-and-apim/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1767", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.web/sites", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.network/privatednszones/a", + "microsoft.operationalinsights/workspaces", + "microsoft.keyvault/vaults", + "microsoft.network/privatednszones", + "microsoft.web/sites/config", + "microsoft.keyvault/vaults/secrets", + "microsoft.network/applicationgateways", + "microsoft.apimanagement/service/loggers", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups", + "microsoft.insights/components", + "microsoft.web/serverfarms", + "microsoft.apimanagement/service/diagnostics", + "microsoft.insights/diagnosticsettings" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1768", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1769", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-configure-default-ssl/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-configure-default-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1770", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates", + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1771", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1772", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1773", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1774", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1775", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1776", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1777", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1778", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1779", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/hostingenvironments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1780", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev3-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev3-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1781", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.web/hostingenvironments", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-blob-connection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-blob-connection/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1782", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-blob-connection/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-blob-connection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1783", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1784", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1785", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-custom-domain-and-ssl/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1786", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates", + "microsoft.web/sites/hostnamebindings", + "microsoft.web/serverfarms", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-diagnostics-logs-blob-container/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-diagnostics-logs-blob-container/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1787", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.web/sites" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-github-deploy/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-github-deploy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1788", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-java-tomcat/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-java-tomcat/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1789", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-loganalytics/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-loganalytics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1790", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/siteextensions", + "microsoft.web/sites/config", + "microsoft.operationalinsights/workspaces", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-managed-identity-sql-db/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-managed-identity-sql-db/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1791", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/databases", + "microsoft.web/sites", + "microsoft.authorization/roleassignments", + "microsoft.sql/servers/firewallrules", + "microsoft.sql/servers", + "microsoft.web/sites/config", + "microsoft.insights/components", + "microsoft.managedidentity/userassignedidentities", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-public-certificate/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-public-certificate/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1792", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-public-certificate/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-public-certificate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1793", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/publiccertificates" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-python/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-python/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1794", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-redis-cache-sql-database/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-redis-cache-sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1795", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.cache/redis" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-sql-database/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1796", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/databases", + "microsoft.web/sites", + "microsoft.sql/servers/firewallrules", + "microsoft.sql/servers", + "microsoft.web/sites/config", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-vm-dsc/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-vm-dsc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1797", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-with-app-gateway-v2/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-with-app-gateway-v2/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1798", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.network/applicationgateways", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1799", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.cache/redis" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-basic-linux/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-basic-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1800", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-basic-windows/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-basic-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1801", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-custom-deployment-slots/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-custom-deployment-slots/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1802", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/config", + "microsoft.web/serverfarms", + "microsoft.web/sites/slots" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-airflow-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-airflow-postgresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1803", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-django/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-django/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1804", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-flask/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-flask/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1805", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-managed-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-managed-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1806", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-managed-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-managed-postgresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1807", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-node/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-node/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1808", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-azuresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-azuresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1809", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1810", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-postgresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1811", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-managed-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-managed-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1812", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/config", + "microsoft.dbformysql/servers/databases", + "microsoft.dbformysql/servers/firewallrules", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-managed-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-managed-postgresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1813", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-privateendpoint-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-privateendpoint-vnet-injection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1814", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.web/sites/hostnamebindings", + "microsoft.web/sites/config", + "microsoft.web/sites/networkconfig", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.web/serverfarms" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-windows-aspnet/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-windows-aspnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1815", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webappazure-oms-monitoring/azuredeploy.json", + "/quickstarts/microsoft.web/webappazure-oms-monitoring/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1816", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/nestedtemplates/access_policy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1817", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/accesspolicies" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/nestedtemplates/role_assignments.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1818", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/nestedtemplates/vm_linux_extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1819", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/nestedtemplates/vm_windows_extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1820", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/azuredeploy.json", + "/sas9.4-viya/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1821", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/proximityplacementgroups", + "microsoft.keyvault/vaults/secrets", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-gen-setup/azuredeploy.json", + "/test/ci-gen-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1822", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.network/dnszones/txt", + "microsoft.network/dnszones/cname", + "microsoft.network/dnszones/a", + "microsoft.network/dnszones" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-gen-setup/azuredeploy.json", + "/test/ci-gen-setup/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1823", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.network/dnszones/txt", + "microsoft.network/dnszones/cname", + "microsoft.network/dnszones/a", + "microsoft.network/dnszones" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1824", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/ModularTemplateWithMetadata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1825", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/ModularTemplateWithoutMetadata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1826", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithMetadata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1827", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithMetadataWithChanges.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1828", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithoutMetadata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1829", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/validate-deploymentfile-tests/json-success/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1830", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/pipeline/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1831", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets" + ] + } + ], + "testUser": "Shahin", + "source": "gitConnectorAzureQuickStart" + } + ] +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/master-test.json b/validation/scenario-azure-quickStart/master-test.json new file mode 100644 index 0000000..761bafa --- /dev/null +++ b/validation/scenario-azure-quickStart/master-test.json @@ -0,0 +1,8 @@ +{ + "contentVersion": "1.0.0.0", + "notification": [], + "masterSnapshot": "master-snapshot", + "fileType": "mastertest", + "connector": "gitConnectorRemote", + "remoteFile": "azure/iac/master-compliance-test.json" +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1 new file mode 100644 index 0000000..56329ba --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1 @@ -0,0 +1,37 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/100-blank-template/azuredeploy.json", + "/100-blank-template/azuredeploy.parameters.json" + ], + "timestamp": 1642962883250, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/100-blank-template/azuredeploy.json", + "/100-blank-template/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT10 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT10 new file mode 100644 index 0000000..7a1c337 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT10 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/configureADBDC.json" + ], + "timestamp": 1642962883381, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/configureADBDC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT10", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT10", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "extName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "domainName": { + "type": "string" + }, + "adBDCConfigurationScript": { + "type": "string" + }, + "adBDCConfigurationFunction": { + "type": "string" + }, + "adBDCConfigurationModulesURL": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "extName", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.24", + "autoUpgradeMinorVersion": true, + "settings": { + "configuration": { + "url": "adBDCConfigurationModulesURL", + "script": "adBDCConfigurationScript", + "function": "adBDCConfigurationFunction" + }, + "configurationArguments": { + "domainName": "domainName" + } + }, + "protectedSettings": { + "configurationUrlSasToken": "_artifactsLocationSasToken", + "configurationArguments": { + "adminCreds": { + "userName": "adminUserName", + "password": "adminPassword" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT100 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT100 new file mode 100644 index 0000000..f1125cc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT100 @@ -0,0 +1,532 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cohesive/cohesive-vns3-free-multiclient-overlay-linux/azuredeploy.json", + "/application-workloads/cohesive/cohesive-vns3-free-multiclient-overlay-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962886431, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cohesive/cohesive-vns3-free-multiclient-overlay-linux/azuredeploy.json", + "/application-workloads/cohesive/cohesive-vns3-free-multiclient-overlay-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT100", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT100", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin User Name for VNS3 (required but not used)" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin Password for VNS3 (required but not used)" + }, + "value": "GEN-PASSWORD" + }, + "adminUsernameUbuntu": { + "type": "string", + "metadata": { + "description": "Admin User Name for Ubuntu VM" + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordUbuntu": { + "type": "securestring", + "metadata": { + "description": "Admin Password for Ubuntu VM" + }, + "value": "GEN-PASSWORD" + }, + "numberOfInstances": { + "type": "int", + "minValue": 1, + "maxValue": 5, + "metadata": { + "description": "VMs to deploy, max 5 as free edition only supports 5 clientpacks" + }, + "value": 3 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Deployment location" + } + }, + "instanceSize": { + "type": "string", + "metadata": { + "description": "Size of VM instance, defaults to Standard_B1ms to keep within core limits while giving reasonable performance" + }, + "defaultValue": "Standard_B1ms" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "suffix": "[uniqueString(resourceGroup().id, parameters('location'))]", + "resourceGroupName": "[toLower(resourceGroup().name)]", + "storageAccount": "[substring(concat(parameters('location'),'storage', variables('suffix')), 0, 24)]", + "virtualNetworkName": "[toLower(resourceGroup().name)]-vnet", + "vns3ControllerName": "VNS3Controller", + "networkInterfaceName": "[toLower(concat(variables('vns3ControllerName'), '-nic'))]", + "publicIPAddresseName": "VNS3Controller-ip", + "networkSecurityGroupName": "VNS3Controller-nsg", + "virtualSubnetName": "VNS3_VirtualSubnet", + "vnetSubnet": "10.10.10.0/28", + "vnsStaticIp": "10.10.10.10", + "CustomScriptForLinux": "CustomScript", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/customextensionlinux.sh', parameters('_artifactsLocationSasToken')))]", + "CustomScriptCommandToExecute": "sudo bash customextensionlinux.sh", + "ubuntu": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "VNS3Controller", + "location": "[resourceGroup().location]", + "plan": { + "name": "cohesive-vns3-4_11_x-free", + "product": "vns3_4x_network_security", + "publisher": "cohesive" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[toLower(concat(variables('vns3ControllerName'), '-nic'))]", + "Microsoft.Storage/storageAccounts/[substring(concat(parameters('location'),'storage', variables('suffix')), 0, 24)]" + ], + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1ms" + }, + "storageProfile": { + "imageReference": { + "publisher": "cohesive", + "offer": "vns3_4x_network_security", + "sku": "cohesive-vns3-4_11_x-free", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "VNS3Controller-disc", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 30 + } + }, + "osProfile": { + "computerName": "VNS3Controller", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false, + "provisionVMAgent": true + }, + "allowExtensionOperations": true + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(concat(variables('vns3ControllerName'), '-nic'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccount'),'2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "name": "[toLower(concat(variables('vns3ControllerName'), '-nic'))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/VNS3Controller-ip", + "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/VNS3_VirtualSubnet", + "Microsoft.Network/networkSecurityGroups/VNS3Controller-nsg" + ], + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.10.10.10", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VNS3Controller-ip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/VNS3_VirtualSubnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": false, + "enableIPForwarding": true, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/VNS3Controller-nsg" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "VNS3Controller-nsg", + "location": "[resourceGroup().location]", + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "securityRules": [ + { + "name": "VNS3_Web_API_Port", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "VNS3_UDP_1194", + "properties": { + "protocol": "Udp", + "sourcePortRange": "1194", + "destinationPortRange": "1194", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "VNS3_UDP_500", + "properties": { + "protocol": "Udp", + "sourcePortRange": "500", + "destinationPortRange": "500", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + }, + { + "name": "VNS3_NAT_T", + "properties": { + "protocol": "Udp", + "sourcePortRange": "4500", + "destinationPortRange": "4500", + "sourceAddressPrefix": "1.2.3.4/32", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 400, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "VNS3Controller-ip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "[toLower(resourceGroup().name)]-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.10.0/28" + ] + }, + "subnets": [ + { + "name": "VNS3_VirtualSubnet", + "properties": { + "addressPrefix": "10.10.10.0/28" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[substring(concat(parameters('location'),'storage', variables('suffix')), 0, 24)]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "Storage", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": false, + "encryption": { + "services": { + "file": { + "enabled": true + }, + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-08-01", + "name": "[toLower(resourceGroup().name)]-vnet/VNS3_VirtualSubnet", + "properties": { + "addressPrefix": "10.10.10.0/28" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(resourceGroup().name)]-vnet" + ] + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "pip-ubuntuvmcopyindex()", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "copy": { + "name": "PublicIpLoop", + "count": 3 + }, + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "name": "nic-ubuntuvmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "NicLoop", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/VNS3_VirtualSubnet", + "SecurityLoop", + "PublicIpLoop" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pip-ubuntuvmcopyindex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/VNS3_VirtualSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-ubuntuvmcopyindex()" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "nsg-ubuntuvmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "SecurityLoop", + "count": 3 + }, + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "ubuntuvmcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": 3 + }, + "dependsOn": [ + "NicLoop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1ms" + }, + "osProfile": { + "computerName": "ubuntuvmcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic-ubuntuvmcopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "ubuntuvmcopyIndex()/CustomScript", + "location": "[resourceGroup().location]", + "copy": { + "name": "CustomScripLoop", + "count": 3 + }, + "dependsOn": [ + "virtualMachineLoop" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/customextensionlinux.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sudo bash customextensionlinux.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1000 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1000 new file mode 100644 index 0000000..7078349 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1000 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/CreateEncryptedManagedDisk-nokek.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "timestamp": 1642962903435, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/CreateEncryptedManagedDisk-nokek.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1000", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/disks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1000", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vhdUri": { + "type": "string", + "metadata": { + "description": "Storage VHD Uri" + }, + "value": "vhdUri" + }, + "managedDiskName": { + "type": "string", + "metadata": { + "description": "Name of the managed disk to be copied" + }, + "value": "MyManagedDisk" + }, + "keyVaultResourceID": { + "type": "string", + "metadata": { + "description": "KeyVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault" + }, + "value": "keyVaultResourceID" + }, + "keyVaultSecretUrl": { + "type": "string", + "metadata": { + "description": "KeyVault secret Url. Ex: https://contosovault.vault.azure.net/secrets/contososecret/e088818e865e48488cf363af16dea596" + }, + "value": "KeyVaultSecretUrl" + }, + "kekUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Ignore this. Not consumed" + }, + "value": "FullVersionedKekUrl" + }, + "kekVaultResourceID": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Ignore this. Not consumed" + }, + "value": "KekVaultResourceId" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "useExistingKek": { + "value": "kek" + } + }, + "variables": { + "location": "[resourceGroup().location]", + "storageAccountType": "Standard_LRS", + "diskSzie": "128" + }, + "resources": [ + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/disks", + "name": "MyManagedDisk", + "location": "[resourceGroup().location]", + "properties": { + "creationData": { + "createOption": "Import", + "sourceUri": "vhdUri" + }, + "accountType": "Standard_LRS", + "diskSizeGB": "128", + "encryptionSettings": { + "enabled": true, + "diskEncryptionKey": { + "sourceVault": { + "id": "keyVaultResourceID" + }, + "secretUrl": "KeyVaultSecretUrl" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1001 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1001 new file mode 100644 index 0000000..adb32de --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1001 @@ -0,0 +1,256 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/customscript-extension-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/customscript-extension-public-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962903458, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/customscript-extension-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/customscript-extension-public-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1001", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1001", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of vm" + }, + "value": "Standard_D2s_v3" + }, + "username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "defaultValue": "[deployment().properties.templateLink.uri]", + "type": "string", + "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": { + "defaultValue": "", + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "commandToExecute": { + "type": "string", + "metadata": { + "description": "The command to execute." + }, + "value": "sh hello.sh" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "scenarioPrefix": "customscriptLinux", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "18.04-LTS", + "nicName": "customscriptLinuxNic", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "customscriptLinuxSubnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "customscriptLinuxPublicIp", + "publicIPAddressType": "Dynamic", + "vmName": "customscriptLinuxVM", + "virtualNetworkName": "customscriptLinuxVnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/customscriptLinuxVnet/customscriptLinuxSubnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "customscriptLinuxPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "customscriptLinuxVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "customscriptLinuxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "customscriptLinuxNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//customscriptLinuxPublicIp", + "Microsoft.Network/virtualNetworks//customscriptLinuxVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/customscriptLinuxPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/customscriptLinuxVnet/customscriptLinuxSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "customscriptLinuxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//customscriptLinuxNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "customscriptLinuxVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/customscriptLinuxNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "customscriptLinuxVM/installcustomscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//customscriptLinuxVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/hello.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh hello.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1002 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1002 new file mode 100644 index 0000000..0143513 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1002 @@ -0,0 +1,245 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903467, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1002", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1002", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "VM Size" + } + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "nicName": "myVMNic", + "subnetName": "Subnet", + "vmName": "MyLinuxVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet", + "extensionName": "AzureDiskEncryptionForLinux", + "extensionVersion": "1.1", + "encryptionOperation": "EnableEncryption", + "keyEncryptionAlgorithm": "RSA-OAEP", + "keyVaultResourceID": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyLinuxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "MyLinuxVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-DAILY-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyLinuxVM/AzureDiskEncryptionForLinux", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyLinuxVM" + ], + "apiVersion": "2020-12-01", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2018-02-14-preview').vaultUri]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "DATA", + "ResizeOSDisk": false + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1003 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1003 new file mode 100644 index 0000000..1fa0a8d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1003 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962903484, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1003", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1003", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + }, + "value": "GET-PREREQ-vmName" + }, + "volumeType": { + "type": "string", + "defaultValue": "Data", + "metadata": { + "description": "Volume type being decrypted" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id, deployment().name)]", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmName/AzureDiskEncryptionForLinux", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[uniqueString(resourceGroup().id, deployment().name)]", + "settings": { + "EncryptionOperation": "DisableEncryption", + "VolumeType": "Data" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1004 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1004 new file mode 100644 index 0000000..612a6cd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1004 @@ -0,0 +1,246 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903496, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1004", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1004", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "VM Size" + } + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "nicName": "myVMNic", + "subnetName": "Subnet", + "vmName": "MyLinuxVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet", + "extensionName": "AzureDiskEncryptionForLinux", + "extensionVersion": "1.1", + "encryptionOperation": "EnableEncryption", + "keyEncryptionAlgorithm": "RSA-OAEP", + "keyVaultResourceID": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2017-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyLinuxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "MyLinuxVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-DAILY-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "1023", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyLinuxVM/AzureDiskEncryptionForLinux", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyLinuxVM" + ], + "apiVersion": "2017-03-30", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2018-02-14-preview').vaultUri]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "DATA", + "ResizeOSDisk": false + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1005 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1005 new file mode 100644 index 0000000..2d45d31 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1005 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/azuredeploy.parameters.json" + ], + "timestamp": 1642962903505, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-linux-vm-without-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1005", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1005", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + }, + "value": "GET-PREREQ-vmName" + }, + "volumeType": { + "type": "string", + "defaultValue": "Data", + "metadata": { + "description": "Volume type being decrypted" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id, deployment().name)]", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmName/AzureDiskEncryptionForLinux", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[uniqueString(resourceGroup().id, deployment().name)]", + "settings": { + "EncryptionOperation": "DisableEncryption", + "VolumeType": "Data" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1006 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1006 new file mode 100644 index 0000000..0f90e87 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1006 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962903515, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1006", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1006", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + }, + "value": "vmName" + }, + "volumeType": { + "type": "string", + "defaultValue": "All", + "allowedValues": [ + "All", + "OS", + "Data" + ], + "metadata": { + "description": "Type of the volume OS or Data or All to perform decryption operation" + }, + "value": "All" + }, + "sequenceVersion": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + }, + "value": "1.0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "extensionName": "AzureDiskEncryption", + "extensionVersion": "1.1", + "encryptionOperation": "DisableEncryption", + "updateEncryptionSettingsUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-decrypt-running-windows-vm/updateEncryptionSettings-All.json" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/AzureDiskEncryption", + "apiVersion": "2016-04-30-preview", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "VolumeType": "All", + "EncryptionOperation": "DisableEncryption" + } + } + }, + { + "name": "updatevm", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/vmName/AzureDiskEncryption" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-decrypt-running-windows-vm/updateEncryptionSettings-All.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "vmName" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1007 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1007 new file mode 100644 index 0000000..66138f1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1007 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-All.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962903530, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-All.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1007", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1007", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Machine" + }, + "value": "vmName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "volumeType": { + "value": "All" + }, + "sequenceVersion": { + "value": "1.0" + } + }, + "resources": [ + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "[resourceGroup().location]", + "properties": { + "storageProfile": { + "osDisk": { + "encryptionSettings": { + "enabled": false + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1008 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1008 new file mode 100644 index 0000000..6977ed5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1008 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-Data.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962903538, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-Data.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1008", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1008", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Machine" + }, + "value": "vmName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "volumeType": { + "value": "All" + }, + "sequenceVersion": { + "value": "1.0" + } + }, + "resources": [ + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "[resourceGroup().location]", + "properties": { + "storageProfile": { + "osDisk": { + "encryptionSettings": null + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1009 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1009 new file mode 100644 index 0000000..9514d60 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1009 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-OS.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962903547, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/updateEncryptionSettings-OS.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1009", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1009", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Machine" + }, + "value": "vmName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "volumeType": { + "value": "All" + }, + "sequenceVersion": { + "value": "1.0" + } + }, + "resources": [ + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "[resourceGroup().location]", + "properties": { + "storageProfile": { + "osDisk": { + "encryptionSettings": { + "enabled": false + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT101 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT101 new file mode 100644 index 0000000..ef4250b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT101 @@ -0,0 +1,669 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cohesive/cohesive-vns3-free-try-now/azuredeploy.json", + "/application-workloads/cohesive/cohesive-vns3-free-try-now/azuredeploy.parameters.json" + ], + "timestamp": 1642962886446, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cohesive/cohesive-vns3-free-try-now/azuredeploy.json", + "/application-workloads/cohesive/cohesive-vns3-free-try-now/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT101", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualnetworks/subnets", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables", + "microsoft.network/routetables/routes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT101", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User Name for VM's (required but not used for VNS3)" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin Password for VM's" + }, + "value": "GEN-PASSWORD" + }, + "numberOfInstances": { + "type": "int", + "defaultValue": 3, + "minValue": 1, + "maxValue": 5, + "metadata": { + "description": "Hosts to deploy" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Deployment location" + } + }, + "virtualMachineOs": { + "type": "string", + "defaultValue": "ubuntu", + "allowedValues": [ + "ubuntu", + "windows" + ], + "metadata": { + "description": "Virtual Machine Operating System, Ubuntu or Windows" + } + }, + "instanceSize": { + "type": "string", + "defaultValue": "small", + "allowedValues": [ + "small", + "medium", + "large" + ], + "metadata": { + "description": "Size of VM instance, defaults to Standard_B1ms to keep within core limits while giving reasonable performance" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "suffix": "[uniqueString(resourceGroup().id, parameters('location'))]", + "resourceGroupName": "[toLower(resourceGroup().name)]", + "storageAccount": "[substring(concat(parameters('location'),'storage', variables('suffix')), 0, 24)]", + "virtualNetworkName": "[toLower(resourceGroup().name)]-vnet", + "vnetSubnet": "10.10.10.0/24", + "vnetPublicSubnet": "10.10.10.0/28", + "vnetPrivateSubnet": "10.10.10.16/28", + "publicSubnet": "publicsubnet", + "privateSubnet": "privatesubnet", + "vns3LicenseType": "free", + "vns3ControllerName": "VNS3Controller", + "networkInterfaceName": "[toLower(concat(variables('vns3ControllerName'), '-nic'))]", + "publicIPAddresseName": "VNS3Controller-ip", + "networkSecurityGroupName": "VNS3Controller-nsg", + "routeTableName": "private-subnet-routes", + "vnsPlanType": "[toLower(concat(variables('vns3LicenseType'), 'Plan'))]", + "osScript": "[toLower(concat(parameters('virtualMachineOs'), 'Script'))]", + "vnsStaticIp": "10.10.10.10", + "vnsVersion": { + "free": { + "imageReference": { + "publisher": "cohesive", + "offer": "cohesive-vns3-5_0_x", + "sku": "cohesive-vns3-5_0_x-free", + "version": "latest" + } + } + }, + "planType": { + "freePlan": { + "plan": { + "name": "cohesive-vns3-5_0_x-free", + "publisher": "cohesive", + "product": "cohesive-vns3-5_0_x" + } + } + }, + "CustomScriptForLinux": "CustomScript", + "linuxScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/customextensionlinux.sh', parameters('_artifactsLocationSasToken')))]", + "linuxScriptCommandToExecute": "sudo bash customextensionlinux.sh", + "windowsScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/CustomExtensionWindows.ps1', parameters('_artifactsLocationSasToken')))]", + "windowsScriptCommandToExecute": "powershell -ExecutionPolicy Unrestricted -File CustomExtensionWindows.ps1 ", + "OS": { + "ubuntu": { + "image": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "windows": { + "image": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + } + }, + "VM": { + "small": { + "VMsize": "Standard_B1s" + }, + "medium": { + "VMsize": "Standard_B2s" + }, + "large": { + "VMsize": "Standard_A2_V2" + } + }, + "vmName": "ubuntu", + "vmNic": "[toLower(concat(variables('vmName'), '-nic'))]", + "vmNsg": "[toLower(concat(variables('vmName'), '-nsg'))]", + "vmPip": "[toLower(concat(variables('vmName'), '-pip'))]", + "osScriptToRun": { + "ubuntuScript": { + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/customextensionlinux.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sudo bash customextensionlinux.sh" + } + } + }, + "windowsScript": { + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/CustomExtensionWindows.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File CustomExtensionWindows.ps1 " + } + } + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "VNS3Controller", + "location": "[resourceGroup().location]", + "plan": "(planType)[variables(vnsPlanType)].plan", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[toLower(concat(variables('vns3ControllerName'), '-nic'))]", + "Microsoft.Storage/storageAccounts/[substring(concat(parameters('location'),'storage', variables('suffix')), 0, 24)]" + ], + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "hardwareProfile": { + "vmSize": "(VM)[parameters(instanceSize)].VMsize" + }, + "storageProfile": { + "osDisk": { + "name": "VNS3Controller-disc", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 30 + }, + "imageReference": "(vnsVersion)[variables(vns3LicenseType)].imageReference" + }, + "osProfile": { + "computerName": "VNS3Controller", + "adminUsername": "adminUserName", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false, + "provisionVMAgent": true + }, + "allowExtensionOperations": true + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(concat(variables('vns3ControllerName'), '-nic'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccount'),'2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "name": "[toLower(concat(variables('vns3ControllerName'), '-nic'))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/VNS3Controller-ip", + "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/privatesubnet", + "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/publicsubnet", + "Microsoft.Network/networkSecurityGroups/VNS3Controller-nsg" + ], + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.10.10.10", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VNS3Controller-ip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/publicsubnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": false, + "enableIPForwarding": true, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/VNS3Controller-nsg" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "VNS3Controller-nsg", + "location": "[resourceGroup().location]", + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "securityRules": [ + { + "name": "VNS3_Web_API_Port", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "VNS3_UDP_1194", + "properties": { + "protocol": "Udp", + "sourcePortRange": "1194", + "destinationPortRange": "1194", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "VNS3_UDP_500", + "properties": { + "protocol": "Udp", + "sourcePortRange": "500", + "destinationPortRange": "500", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + }, + { + "name": "VNS3_NAT_T", + "properties": { + "protocol": "Udp", + "sourcePortRange": "4500", + "destinationPortRange": "4500", + "sourceAddressPrefix": "1.2.3.4/32", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 400, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "VNS3Controller-ip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "[toLower(resourceGroup().name)]-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.10.0/24" + ] + }, + "subnets": [ + { + "name": "publicsubnet", + "properties": { + "addressPrefix": "10.10.10.0/28" + } + }, + { + "name": "privatesubnet", + "properties": { + "addressPrefix": "10.10.10.16/28" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[substring(concat(parameters('location'),'storage', variables('suffix')), 0, 24)]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "Storage", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": false, + "encryption": { + "services": { + "file": { + "enabled": true + }, + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[toLower(resourceGroup().name)]-vnet/publicsubnet", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(resourceGroup().name)]-vnet" + ], + "properties": { + "addressPrefix": "10.10.10.0/28" + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[toLower(resourceGroup().name)]-vnet/privatesubnet", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(resourceGroup().name)]-vnet" + ], + "properties": { + "addressPrefix": "10.10.10.16/28", + "routeTable": { + "id": "Microsoft.Network/routeTables/private-subnet-routes" + } + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-11-01", + "name": "private-subnet-routes", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "natgateway", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.10.10.10", + "hasBgpOverride": false + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables/routes", + "apiVersion": "2020-06-01", + "name": "private-subnet-routes/natgateway", + "dependsOn": [ + "Microsoft.Network/routeTables/private-subnet-routes", + "Microsoft.Network/virtualNetworks/[toLower(resourceGroup().name)]-vnet" + ], + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "Internet", + "hasBgpOverride": false + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "[toLower(concat(variables('vmName'), '-pip'))]copyindex()", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "copy": { + "name": "PublicIpLoop", + "count": 3 + }, + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "name": "[toLower(concat(variables('vmName'), '-nic'))]copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "NicLoop", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/privatesubnet", + "SecurityLoop", + "PublicIpLoop" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(concat(variables('vmName'), '-pip'))]copyindex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(resourceGroup().name)]-vnet/privatesubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(concat(variables('vmName'), '-nsg'))]copyindex()" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "[toLower(concat(variables('vmName'), '-nsg'))]copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "SecurityLoop", + "count": 3 + }, + "tags": { + "Name": "VNS3 Controller" + }, + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + }, + { + "name": "RDP", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 400, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "ubuntucopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": 3 + }, + "dependsOn": [ + "NicLoop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "(VM)[parameters(instanceSize)].VMsize" + }, + "osProfile": { + "computerName": "ubuntucopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": "(OS)[parameters(virtualMachineOs)].image", + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(concat(variables('vmName'), '-nic'))]copyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "ubuntucopyIndex()/[toLower(concat(parameters('virtualMachineOs'), 'Script'))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "CustomScriptLoop", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/VNS3Controller", + "virtualMachineLoop" + ], + "properties": "(osScriptToRun)[variables(osScript)].properties" + } + ], + "outputs": { + "privateIPAddress": { + "type": "string", + "value": "[resourceId('Microsoft.Network/privateIPAddresses', variables('vnsStaticIp'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1010 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1010 new file mode 100644 index 0000000..e7a6acf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1010 @@ -0,0 +1,223 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903557, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1010", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1010", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the virtual machine" + }, + "defaultValue": "Standard_A1_v2" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "nicName": "myVMNic", + "subnetName": "Subnet", + "vmName": "MyWindowsVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet", + "extensionName": "AzureDiskEncryption", + "extensionVersion": "2.2", + "encryptionOperation": "EnableEncryption", + "keyEncryptionAlgorithm": "RSA-OAEP", + "keyVaultResourceID": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyWindowsVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "MyWindowsVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "1023", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyWindowsVM/AzureDiskEncryption", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyWindowsVM" + ], + "apiVersion": "2019-12-01", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2018-02-14-preview').vaultUri]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "All", + "ResizeOSDisk": false + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1011 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1011 new file mode 100644 index 0000000..d38c0db --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1011 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/azuredeploy.parameters.json" + ], + "timestamp": 1642962903565, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-running-windows-vm-without-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1011", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1011", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + }, + "value": "GET-PREREQ-vmName" + }, + "volumeType": { + "type": "string", + "defaultValue": "All", + "metadata": { + "description": "Type of the volume OS or Data to perform encryption operation" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id, deployment().name)]", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmName/AzureDiskEncryption", + "location": "[resourceGroup().location]", + "apiVersion": "2019-12-01", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[uniqueString(resourceGroup().id, deployment().name)]", + "settings": { + "EncryptionOperation": "DisableEncryption", + "VolumeType": "All" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1012 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1012 new file mode 100644 index 0000000..cc93997 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1012 @@ -0,0 +1,295 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-linux/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-linux/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903574, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-linux/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-linux/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1012", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1012", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "UserName of existing VM Scale Set" + }, + "value": "GEN-UNIQUE" + }, + "existingvmss": { + "type": "string", + "metadata": { + "description": "Name of existing VM Scale Set" + }, + "value": "existingvmss" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "virtualNetworkName": "existingvmssvnet", + "publicIPAddressName": "existingvmsspip", + "subnetName": "existingvmsssubnet", + "loadBalancerName": "existingvmsslb", + "natPoolName": "existingvmssnatpool", + "bePoolName": "existingvmssbepool", + "keyVaultResourceID": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "existingvmssvnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "existingvmsssubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "existingvmsspip", + "location": "[resourceGroup().location]", + "apiVersion": "2018-02-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(substring(concat(parameters('existingvmss'), uniqueString(resourceGroup().id)), 0, 16))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "existingvmsslb", + "location": "[resourceGroup().location]", + "apiVersion": "2018-02-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//existingvmsspip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/existingvmsspip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "existingvmssbepool" + } + ], + "inboundNatPools": [ + { + "name": "existingvmssnatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/existingvmsslb/loadBalancerFrontEnd" + }, + "protocol": "tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "existingvmss", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/loadBalancers//existingvmsslb", + "Microsoft.Network/virtualNetworks//existingvmssvnet" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.5", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "existvmss", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "existingvmssnic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "existingvmssipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/existingvmssvnet/existingvmsssubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/existingvmsslb/existingvmssbepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/existingvmsslb/existingvmssnatpool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "AzureDiskEncryptionForLinux", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[uniqueString(resourceGroup().id, deployment().name)]", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2018-02-14-preview').vaultUri]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "Data" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "vmssName": { + "type": "string", + "value": "[parameters('existingvmss')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1013 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1013 new file mode 100644 index 0000000..45e2105 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1013 @@ -0,0 +1,108 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962903585, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1013", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1013", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmssName": { + "type": "string", + "metadata": { + "description": "Name of VMSS to be decrypted" + }, + "maxLength": 61, + "value": "GET-PREREQ-vmssName" + }, + "volumeType": { + "type": "string", + "defaultValue": "Data", + "metadata": { + "description": "Type of the volume to perform encryption operation (Linux VMSS Preview only supports Data)" + }, + "value": "Data" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + }, + "value": "1.0" + } + }, + "variables": { + "extensionName": "AzureDiskEncryptionForLinux", + "extensionVersion": "1.1", + "encryptionOperation": "DisableEncryption" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GET-PREREQ-vmssName", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "AzureDiskEncryptionForLinux", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "VolumeType": "Data", + "EncryptionOperation": "DisableEncryption" + } + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1014 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1014 new file mode 100644 index 0000000..a7bf684 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1014 @@ -0,0 +1,272 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-windows/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-windows/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903594, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-windows/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-windows/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1014", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1014", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmssName": { + "type": "string", + "metadata": { + "description": "Name of existing VM Scale Set" + }, + "value": "existingvmss" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User Name of existing VM Scale Set" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Number of desired VM instances" + }, + "value": "GEN-PASSWORD" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + } + }, + "variables": { + "virtualNetworkName": "existingvmssvnet", + "publicIPAddressName": "existingvmsspip", + "subnetName": "existingvmsssubnet", + "loadBalancerName": "existingvmsslb", + "natPoolName": "existingvmssnatpool", + "bePoolName": "existingvmssbepool", + "keyVaultResourceID": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "existingvmssvnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "existingvmsssubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "existingvmsspip", + "location": "[resourceGroup().location]", + "apiVersion": "2018-02-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(substring(concat('vmssName', uniqueString(resourceGroup().id)), 0, 16))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "existingvmsslb", + "location": "[resourceGroup().location]", + "apiVersion": "2018-02-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//existingvmsspip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/existingvmsspip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "existingvmssbepool" + } + ], + "inboundNatPools": [ + { + "name": "existingvmssnatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//existingvmsslb/loadBalancerFrontEnd" + }, + "protocol": "tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "existingvmss", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/loadBalancers//existingvmsslb", + "Microsoft.Network/virtualNetworks//existingvmssvnet" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "existvmss", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "existingvmssnic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "existingvmssipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/existingvmssvnet/existingvmsssubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/existingvmsslb/existingvmssbepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/existingvmsslb/existingvmssnatpool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "AzureDiskEncryption", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[uniqueString(resourceGroup().id, deployment().name)]", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2018-02-14-preview').vaultUri]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "All" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "vmssName": { + "type": "string", + "value": "[parameters('vmssName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1015 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1015 new file mode 100644 index 0000000..c6756ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1015 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962903605, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/decrypt-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/decrypt-vmss-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1015", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1015", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmssName": { + "type": "string", + "metadata": { + "description": "Name of VMSS to be decrypted" + }, + "maxLength": 61, + "value": "GET-PREREQ-vmssName" + }, + "volumeType": { + "type": "string", + "defaultValue": "All", + "metadata": { + "description": "Type of the volume OS or Data to perform encryption operation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id, deployment().name)]", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets/extensions", + "name": "GET-PREREQ-vmssName/AzureDiskEncryption", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[uniqueString(resourceGroup().id, deployment().name)]", + "settings": { + "EncryptionOperation": "DisableEncryption", + "VolumeType": "All" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1016 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1016 new file mode 100644 index 0000000..dc37ead --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1016 @@ -0,0 +1,385 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/discover-private-ip-dynamically/azuredeploy.json", + "/quickstarts/microsoft.compute/discover-private-ip-dynamically/azuredeploy.parameters.json" + ], + "timestamp": 1642962903615, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/discover-private-ip-dynamically/azuredeploy.json", + "/quickstarts/microsoft.compute/discover-private-ip-dynamically/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1016", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1016", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "scaleNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of VMs to deploy" + } + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of new storage account" + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM" + }, + "value": "myVM" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Image SKU" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "VM Admin Username" + }, + "value": "GEN-UNIQUE" + }, + "customScriptCommandToExecute": { + "type": "string", + "metadata": { + "description": "Command to execute on the VM" + }, + "value": "sh privateip.sh " + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "availabilitySetName": "myAVSet", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "myVNET", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1", + "nicName": "myNic", + "vmExtensionName": "myCustomScriptExtension", + "networkSecurityGroupName": "default-NSG", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myAVSet", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 2 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic0", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIP0", + "Microsoft.Network/virtualNetworks//myVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP0" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIP1", + "Microsoft.Network/virtualNetworks//myVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP1" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVMcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//myNiccopyIndex()", + "Microsoft.Compute/availabilitySets//myAVSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myAVSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "myVMcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNiccopyIndex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(parameters('newStorageAccountName'), '2021-02-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myVM1/myCustomScriptExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//myVM1", + "Microsoft.Network/networkInterfaces//myNic0" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('privateip.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat(parameters('customScriptCommandToExecute'), reference(resourceId('Microsoft.Network/networkInterfaces', concat(variables('nicName'), '0'))).ipConfigurations[0].properties.privateIPAddress)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1017 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1017 new file mode 100644 index 0000000..aeb0f46 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1017 @@ -0,0 +1,317 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962903626, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1017", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1017", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + }, + "value": "Standard_D2_v3" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "description": "The Ubuntu version" + }, + "allowedValues": [ + "14.04.5-LTS", + "12.04.5-LTS" + ], + "value": "14.04.5-LTS" + }, + "mode": { + "type": "string", + "defaultValue": "Push", + "metadata": { + "description": "The functional mode, push MOF configuration (Push), distribute MOF configuration (Pull), install custom DSC module (Install)" + }, + "allowedValues": [ + "Push", + "Pull", + "Install", + "Register" + ], + "value": "Install" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The name of the storage account that contains the MOF file/meta MOF file/resource ZIP file" + } + }, + "storageAccountKey": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The key of the storage account that contains the MOF file/meta MOF file/resource ZIP file" + } + }, + "fileUri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The uri of the MOF file/Meta MOF file/resource ZIP file" + }, + "value": "https://github.com/Microsoft/PowerShell-DSC-for-Linux/releases/download/v1.1.1-70/nxComputerManagement_1.0.zip" + }, + "registrationUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The URL of the Azure Automation account" + } + }, + "registrationKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The access key of the Azure Automation account" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "virtualNetworkName": "vnet-dsc", + "nicName": "GEN-UNIQUE", + "publicIPAddressName": "GEN-UNIQUE", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "dsc", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-dsc", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "dsc", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE", + "Microsoft.Network/virtualNetworks//vnet-dsc" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//GEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE" + } + ] + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/enabledsc", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "DSCForLinux", + "typeHandlerVersion": "2.0", + "settings": { + "Mode": "Install", + "FileUri": "https://github.com/Microsoft/PowerShell-DSC-for-Linux/releases/download/v1.1.1-70/nxComputerManagement_1.0.zip" + }, + "protectedSettings": { + "StorageAccountName": "", + "StorageAccountKey": "", + "RegistrationUrl": "", + "RegistrationKey": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1018 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1018 new file mode 100644 index 0000000..dfd1e7c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1018 @@ -0,0 +1,321 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/push-pull-install.parameters.json" + ], + "timestamp": 1642962903635, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/push-pull-install.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1018", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1018", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "yourusername" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "uniquestorageaccount" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "yourvmname" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + }, + "value": "Standard_D2_v3" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "description": "The Ubuntu version" + }, + "allowedValues": [ + "14.04.5-LTS", + "12.04.5-LTS" + ], + "value": "14.04.5-LTS" + }, + "mode": { + "type": "string", + "defaultValue": "Push", + "metadata": { + "description": "The functional mode, push MOF configuration (Push), distribute MOF configuration (Pull), install custom DSC module (Install)" + }, + "allowedValues": [ + "Push", + "Pull", + "Install", + "Register" + ], + "value": "Push|Pull|Install" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The name of the storage account that contains the MOF file/meta MOF file/resource ZIP file" + }, + "value": "yourstorageaccountname" + }, + "storageAccountKey": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The key of the storage account that contains the MOF file/meta MOF file/resource ZIP file" + }, + "value": "yourstorageaccountkey" + }, + "fileUri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The uri of the MOF file/Meta MOF file/resource ZIP file" + }, + "value": "yourfileuri" + }, + "registrationUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The URL of the Azure Automation account" + } + }, + "registrationKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The access key of the Azure Automation account" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + } + }, + "password": { + "value": "yourpassword" + } + }, + "variables": { + "virtualNetworkName": "vnet-dsc", + "nicName": "yourvmname", + "publicIPAddressName": "yourvmname", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "dsc", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/yourusername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "uniquestorageaccount", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "yourvmname" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-dsc", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "dsc", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//yourvmname", + "Microsoft.Network/virtualNetworks//vnet-dsc" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/yourvmname" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//uniquestorageaccount", + "Microsoft.Network/networkInterfaces//yourvmname" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "yourvmname", + "adminUsername": "yourusername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "yourvmname_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/yourvmname" + } + ] + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "yourvmname/enabledsc", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//yourvmname" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "DSCForLinux", + "typeHandlerVersion": "2.0", + "settings": { + "Mode": "Push|Pull|Install", + "FileUri": "yourfileuri" + }, + "protectedSettings": { + "StorageAccountName": "yourstorageaccountname", + "StorageAccountKey": "yourstorageaccountkey", + "RegistrationUrl": "", + "RegistrationKey": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1019 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1019 new file mode 100644 index 0000000..9322bf9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1019 @@ -0,0 +1,320 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/register-azure-automation.parameters.json" + ], + "timestamp": 1642962903644, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-azure-storage-on-ubuntu/register-azure-automation.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1019", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1019", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "yourusername" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "uniquestorageaccount" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "yourvmname" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + }, + "value": "Standard_D2_v3" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "description": "The Ubuntu version" + }, + "allowedValues": [ + "14.04.5-LTS", + "12.04.5-LTS" + ], + "value": "14.04.5-LTS" + }, + "mode": { + "type": "string", + "defaultValue": "Push", + "metadata": { + "description": "The functional mode, push MOF configuration (Push), distribute MOF configuration (Pull), install custom DSC module (Install)" + }, + "allowedValues": [ + "Push", + "Pull", + "Install", + "Register" + ], + "value": "Register" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The name of the storage account that contains the MOF file/meta MOF file/resource ZIP file" + } + }, + "storageAccountKey": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The key of the storage account that contains the MOF file/meta MOF file/resource ZIP file" + } + }, + "fileUri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The uri of the MOF file/Meta MOF file/resource ZIP file" + } + }, + "registrationUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The URL of the Azure Automation account" + }, + "value": "yourregistrationUrl" + }, + "registrationKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The access key of the Azure Automation account" + }, + "value": "yourregistrationkey" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + } + }, + "password": { + "value": "yourpassword" + } + }, + "variables": { + "virtualNetworkName": "vnet-dsc", + "nicName": "yourvmname", + "publicIPAddressName": "yourvmname", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "dsc", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/yourusername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "uniquestorageaccount", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "yourvmname" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-dsc", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "dsc", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//yourvmname", + "Microsoft.Network/virtualNetworks//vnet-dsc" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/yourvmname" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//uniquestorageaccount", + "Microsoft.Network/networkInterfaces//yourvmname" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "yourvmname", + "adminUsername": "yourusername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "yourvmname_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/yourvmname" + } + ] + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "yourvmname/enabledsc", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//yourvmname" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "DSCForLinux", + "typeHandlerVersion": "2.0", + "settings": { + "Mode": "Register", + "FileUri": "" + }, + "protectedSettings": { + "StorageAccountName": "", + "StorageAccountKey": "", + "RegistrationUrl": "yourregistrationUrl", + "RegistrationKey": "yourregistrationkey" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT102 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT102 new file mode 100644 index 0000000..de8e0f8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT102 @@ -0,0 +1,678 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/concourse/concourse-ci/azuredeploy.json", + "/application-workloads/concourse/concourse-ci/azuredeploy.parameters.json" + ], + "timestamp": 1642962886472, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/concourse/concourse-ci/azuredeploy.json", + "/application-workloads/concourse/concourse-ci/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT102", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT102", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "jumpboxVmName": { + "type": "string", + "metadata": { + "description": "Name of the jumpbox VM, will be used as DNS Name for the Public IP used to access the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "jumpboxUbuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "metadata": { + "description": "OS version of Ubuntu" + } + }, + "jumpboxVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Please check if the region support this VM size https://azure.microsoft.com/en-us/regions/#services. For more information about virtual machine sizes, see https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-sizes/" + } + }, + "jumpboxUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "jumpboxSshKeyData": { + "type": "string", + "metadata": { + "description": "Please copy the content of your SSH RSA public key and paste it here. You can use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "concourseUsername": { + "type": "string", + "metadata": { + "description": "Login username for Concourse web portal or Fly CLI" + }, + "value": "GEN-UNIQUE-8" + }, + "concoursePassword": { + "type": "securestring", + "metadata": { + "description": "Login password for Concourse web portal or Fly CLI" + }, + "value": "GEN-PASSWORD" + }, + "concourseWorkerDiskSize": { + "type": "int", + "defaultValue": 30, + "minValue": 30, + "maxValue": 1023, + "metadata": { + "description": "Disk size of Concourse worker instance in GB, value must be between 30GB to 1023GB" + }, + "value": 30 + }, + "environment": { + "type": "string", + "defaultValue": "AzureCloud", + "allowedValues": [ + "AzureCloud", + "AzureChinaCloud" + ], + "metadata": { + "description": "Different environments in Azure. Supported values: AzureCloud, AzureChinaCloud" + }, + "value": "AzureCloud" + }, + "tenantID": { + "type": "string", + "metadata": { + "description": "ID of the tenant. See https://github.com/cloudfoundry-incubator/bosh-azure-cpi-release/blob/master/docs/guidance.md" + }, + "value": "GEN-AZUREAD-AKS-TENANTID" + }, + "clientID": { + "type": "string", + "metadata": { + "description": "ID of the client. See https://github.com/cloudfoundry-incubator/bosh-azure-cpi-release/blob/master/docs/guidance.md" + }, + "value": "GEN-AZUREAD-AKS-APPID" + }, + "clientSecret": { + "type": "securestring", + "metadata": { + "description": "secret of the client. See https://github.com/cloudfoundry-incubator/bosh-azure-cpi-release/blob/master/docs/guidance.md" + }, + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "boshVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Please check if the region support this VM size https://azure.microsoft.com/en-us/regions/#services. For more information about virtual machine sizes, see https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-sizes/" + } + }, + "autoDeployBosh": { + "type": "string", + "defaultValue": "enabled", + "allowedValues": [ + "enabled", + "disabled" + ], + "metadata": { + "description": "The flag allowing to deploy Bosh automatically or not" + } + }, + "autoDeployConcourse": { + "type": "string", + "defaultValue": "enabled", + "allowedValues": [ + "enabled", + "disabled" + ], + "metadata": { + "description": "The flag allowing to deploy Concourse automatically or not" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "defaultValue": "", + "metadata": { + "description": "For a standard deployment, leave empty. If you are running from a blob template, then provide the Shared Access Signature token (starting with a ?) that grants authorization to the private template. " + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "defaultStorageAccountName": "[concat('concourse', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_RAGRS", + "storageid": "[resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccountName'))]", + "virtualNetworkName": "vnet", + "virtualNetworkAddressSpace": "10.0.0.0/16", + "subnetNameForBosh": "Bosh", + "subnetAddressRangeForBosh": "10.0.0.0/24", + "subnetGatewayForBosh": "10.0.0.1", + "internalIPForBosh": "10.0.0.4", + "subnetNameForConcourse": "Concourse", + "subnetAddressRangeForConcourse": "10.0.16.0/20", + "subnetGatewayForConcourse": "10.0.16.1", + "devboxNetworkSecurityGroup": "nsg-devbox", + "boshNetworkSecurityGroup": "nsg-bosh", + "concourseNetworkSecurityGroup": "nsg-concourse", + "nicName": "GEN-UNIQUE", + "devboxPrivateIPAddress": "10.0.0.100", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "baseUriAzureCloud": "[deployment().properties.templateLink.uri]", + "baseUriAzureChinaCloud": "https://cloudfoundry.blob.core.chinacloudapi.cn/bosh-setup/", + "filesToDownload": [ + "[uri(variables('baseUriAzureCloud'), concat('scripts/setup_env.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/bosh.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/cpi.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/custom-cpi-release.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/custom-environment.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-managed-disks.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-azure-dns.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/jumpbox-user.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/keep-failed-or-unreachable-vms.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/cloud-config.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/concourse.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-mirror-releases-for-bosh.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-mirror-releases-for-concourse.yml', parameters('_artifactsLocationSasToken')))]" + ], + "environment": { + "AzureCloud": { + "serviceHostBase": "[environment().suffixes.storage]", + "boshCliUrl": "https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-5.1.2-linux-amd64", + "boshAzureCPIReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry-incubator/bosh-azure-cpi-release?v=35.4.0", + "boshAzureCPIReleaseSha1": "372c0220e2e38ca9201135eccb52ff912f2d0538", + "stemcellUrl": "https://bosh.io/d/stemcells/bosh-azure-hyperv-ubuntu-xenial-go_agent?v=97.12", + "stemcellSha1": "a04ddc9b87dfb8431838df706a7b0d5ddaf2db4d" + }, + "azureChinaCloud": { + "serviceHostBase": "core.chinacloudapi.cn", + "boshCliUrl": "[uri(variables('baseUriAzureChinaCloud'), 'bosh-cli/bosh-cli-5.1.2-linux-amd64')]", + "boshAzureCPIReleaseUrl": "https://mirror.azure.cn/bosh/bosh-azure-cpi-release/bosh-azure-cpi-release-35.4.0.tgz", + "boshAzureCPIReleaseSha1": "372c0220e2e38ca9201135eccb52ff912f2d0538", + "stemcellUrl": "[uri(variables('baseUriAzureChinaCloud'), 'bosh-azure-stemcells/bosh-stemcell-97.12-azure-hyperv-ubuntu-xenial-go_agent.tgz')]", + "stemcellSha1": "a04ddc9b87dfb8431838df706a7b0d5ddaf2db4d" + } + }, + "environmentVariable": "(environment)[parameters(environment)]" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-bosh", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "bosh-agent", + "properties": { + "description": "Allow bosh-agent", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6868", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "bosh-director", + "properties": { + "description": "Allow bosh-director", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "25555", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 202, + "direction": "Inbound" + } + }, + { + "name": "dns", + "properties": { + "description": "Allow DNS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "53", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-devbox", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-concourse", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "concourse-https", + "properties": { + "description": "Allow HTTPS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "concourse-ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "concourse-http", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 202, + "direction": "Inbound" + } + }, + { + "name": "concourse-atc", + "properties": { + "description": "Allow Concourse ATC", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + }, + { + "name": "concourse-tsa", + "properties": { + "description": "Allow Concourse TSA", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "2222", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 204, + "direction": "Inbound" + } + }, + { + "name": "concourse-garden", + "properties": { + "description": "Allow Concourse Garden", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7777", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 205, + "direction": "Inbound" + } + }, + { + "name": "concourse-baggageclaim", + "properties": { + "description": "Allow Concourse Baggageclaim", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7788", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 206, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('defaultStorageAccountName')]", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_RAGRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-devbox", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(toLower(parameters('jumpboxVmName')), '-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-concourse", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "static" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Bosh", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "Concourse", + "properties": { + "addressPrefix": "10.0.16.0/20" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-devbox", + "Microsoft.Network/virtualNetworks//vnet", + "Microsoft.Network/networkSecurityGroups//nsg-devbox" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-devbox" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.100", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-devbox" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/Bosh" + } + } + } + ] + } + }, + { + "name": "generate-customdata", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('defaultStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('baseUriAzureCloud'), concat('generate-customdata.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "customData": { + "value": { + "VNET_NAME": "vnet", + "SUBNET_NAME_FOR_BOSH": "Bosh", + "SUBNET_ADDRESS_RANGE_FOR_BOSH": "10.0.0.0/24", + "BOSH_VM_SIZE": "Standard_D2_v3", + "SUBNET_GATEWAY_FOR_BOSH": "10.0.0.1", + "INTERNAL_IP_FOR_BOSH": "10.0.0.4", + "SUBNET_NAME_FOR_CONCOURSE": "Concourse", + "SUBNET_ADDRESS_RANGE_FOR_CONCOURSE": "10.0.16.0/20", + "SUBNET_GATEWAY_FOR_CONCOURSE": "subnetgatewayForConcourse", + "CONCOURSE_PUBLIC_IP": "[reference(resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('jumpboxVmName'),'-concourse'))).ipAddress]", + "NSG_NAME_FOR_BOSH": "nsg-bosh", + "NSG_NAME_FOR_CONCOURSE": "nsg-concourse", + "SUBSCRIPTION_ID": "[subscription().subscriptionId]", + "RESOURCE_GROUP_NAME": "[resourceGroup().name]", + "DEFAULT_STORAGE_ACCOUNT_NAME": "[variables('defaultStorageAccountName')]", + "STORAGE_ACCESS_KEY": "[listKeys(variables('storageid'), '2015-06-15').key1]", + "ADMIN_USER_NAME": "GEN-UNIQUE", + "ENVIRONMENT": "AzureCloud", + "SERVICE_HOST_BASE": "(environmentVariable).serviceHostBase", + "BOSH_AZURE_CPI_RELEASE_URL": "(environmentVariable).boshAzureCPIReleaseUrl", + "BOSH_AZURE_CPI_RELEASE_SHA1": "(environmentVariable).boshAzureCPIReleaseSha1", + "STEMCELL_URL": "(environmentVariable).stemcellUrl", + "STEMCELL_SHA1": "(environmentVariable).stemcellSha1", + "BOSH_CLI_URL": "(environmentVariable).boshCLIUrl", + "AUTO_DEPLOY_BOSH": "enabled", + "AUTO_DEPLOY_CONCOURSE": "enabled", + "CONCOURSE_USERNAME": "GEN-UNIQUE-8", + "CONCOURSE_PASSWORD": "GEN-PASSWORD", + "CONCOURSE_WORKER_DISK_SIZE": 30 + } + } + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/generate-customdata" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "customData": "[reference('Microsoft.Resources/deployments/generate-customdata', '2015-01-01').outputs.customData.value]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/initdevbox", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(variables('baseUriAzureCloud'), concat('scripts/setup_env.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/bosh.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/cpi.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/custom-cpi-release.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/custom-environment.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-managed-disks.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-azure-dns.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/jumpbox-user.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/keep-failed-or-unreachable-vms.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/cloud-config.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/concourse.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-mirror-releases-for-bosh.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-mirror-releases-for-concourse.yml', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash -l -c \"./setup_env.sh GEN-AZUREAD-AKS-TENANTID GEN-AZUREAD-AKS-APPID GEN-AZUREAD-AKS-APPID-SECRET 2>&1 | tee /home/GEN-UNIQUE/install.log\"" + } + } + } + ], + "outputs": { + "sshDevBox": { + "type": "string", + "value": "[concat('ssh ', parameters('jumpboxUsername'), '@', reference(resourceId('Microsoft.Network/publicIPAddresses/', concat(parameters('jumpboxVmName'), '-devbox'))).dnsSettings.fqdn)]" + }, + "concourseEndpoint": { + "type": "string", + "value": "[concat('http://', reference(resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('jumpboxVmName'), '-concourse'))).ipAddress, ':8080')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1020 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1020 new file mode 100644 index 0000000..b54ac62 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1020 @@ -0,0 +1,305 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962903653, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1020", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1020", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "description": "The Ubuntu version" + }, + "allowedValues": [ + "14.04.5-LTS", + "12.04.5-LTS" + ], + "value": "14.04.5-LTS" + }, + "mode": { + "type": "string", + "defaultValue": "Push", + "metadata": { + "description": "The functional mode, push MOF configuration (Push), distribute MOF configuration (Pull), install custom DSC module (Install)" + }, + "allowedValues": [ + "Push", + "Pull", + "Install", + "Register" + ], + "value": "Install" + }, + "fileUri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The uri of the MOF file/Meta MOF file/resource ZIP file" + }, + "value": "https://github.com/Microsoft/PowerShell-DSC-for-Linux/releases/download/v1.1.1-70/nxComputerManagement_1.0.zip" + }, + "registrationUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The URL of the Azure Automation account" + } + }, + "registrationKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The access key of the Azure Automation account" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "virtualNetworkName": "vnet-dsc", + "nicName": "GEN-UNIQUE", + "publicIPAddressName": "GEN-UNIQUE", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "dsc", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc", + "vmStorageAccountContainerName": "vhds", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "OSDiskName": "osdiskfordsc", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-dsc", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "dsc", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE", + "Microsoft.Network/virtualNetworks//vnet-dsc" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//GEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "osdisk1", + "vhd": { + "uri": "[uri(reference(resourceId('Microsoft.Storage/storageAccounts', parameters('newStorageAccountName')), '2021-01-01').primaryEndpoints['blob'], concat('/', variables('vmStorageAccountContainerName'),'/',variables('OSDiskName'),'.vhd'))]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE" + } + ] + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/enabledsc", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "DSCForLinux", + "typeHandlerVersion": "2.0", + "settings": { + "Mode": "Install", + "FileUri": "https://github.com/Microsoft/PowerShell-DSC-for-Linux/releases/download/v1.1.1-70/nxComputerManagement_1.0.zip" + }, + "protectedSettings": { + "RegistrationUrl": "", + "RegistrationKey": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1021 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1021 new file mode 100644 index 0000000..f6d205e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1021 @@ -0,0 +1,309 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/register-azure-automation.parameters.json" + ], + "timestamp": 1642962903661, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/dsc-linux-public-storage-on-ubuntu/register-azure-automation.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1021", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1021", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "yourusername" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "uniquestorageaccount" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "yourvmname" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + }, + "value": "Standard_D2_v3" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "description": "The Ubuntu version" + }, + "allowedValues": [ + "14.04.5-LTS", + "12.04.5-LTS" + ], + "value": "14.04.5-LTS" + }, + "mode": { + "type": "string", + "defaultValue": "Push", + "metadata": { + "description": "The functional mode, push MOF configuration (Push), distribute MOF configuration (Pull), install custom DSC module (Install)" + }, + "allowedValues": [ + "Push", + "Pull", + "Install", + "Register" + ], + "value": "Register" + }, + "fileUri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The uri of the MOF file/Meta MOF file/resource ZIP file" + } + }, + "registrationUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The URL of the Azure Automation account" + }, + "value": "yourregistrationUrl" + }, + "registrationKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The access key of the Azure Automation account" + }, + "value": "yourregistrationkey" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + } + }, + "password": { + "value": "yourpassword" + } + }, + "variables": { + "virtualNetworkName": "vnet-dsc", + "nicName": "yourvmname", + "publicIPAddressName": "yourvmname", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "dsc", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc", + "vmStorageAccountContainerName": "vhds", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "OSDiskName": "osdiskfordsc", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/yourusername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "uniquestorageaccount", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "yourvmname" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-dsc", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "dsc", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//yourvmname", + "Microsoft.Network/virtualNetworks//vnet-dsc" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/yourvmname" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-dsc/dsc" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "yourvmname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//uniquestorageaccount", + "Microsoft.Network/networkInterfaces//yourvmname" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "yourvmname", + "adminUsername": "yourusername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "osdisk1", + "vhd": { + "uri": "[uri(reference(resourceId('Microsoft.Storage/storageAccounts', parameters('newStorageAccountName')), '2021-01-01').primaryEndpoints['blob'], concat('/', variables('vmStorageAccountContainerName'),'/',variables('OSDiskName'),'.vhd'))]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/yourvmname" + } + ] + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "yourvmname/enabledsc", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//yourvmname" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "DSCForLinux", + "typeHandlerVersion": "2.0", + "settings": { + "Mode": "Register", + "FileUri": "" + }, + "protectedSettings": { + "RegistrationUrl": "yourregistrationUrl", + "RegistrationKey": "yourregistrationkey" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1022 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1022 new file mode 100644 index 0000000..1d84f87 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1022 @@ -0,0 +1,332 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image/azuredeploy.parameters.json" + ], + "timestamp": 1642962903670, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1022", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1022", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine." + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the virtual machine." + }, + "value": "userName" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin user password for virtual machine." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_D2s_v3" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of VNET to which the VM NIC belongs to" + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of Subnet to which the VM NIC belongs to" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-UNIQUE-8" + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "osSku": "2012-R2-Datacenter", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "dnsNameForPublicIP": "[toLower(parameters('vmName'))]", + "publicIPAddressName": "[toLower(concat('publicIP',parameters('vmName')))]", + "publicIPAddressType": "Dynamic", + "nicName": "[toLower(concat('nic',parameters('vmName')))]", + "keyVaultURL": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyVaultDns)]", + "encryptionOperation": "EnableEncryption", + "keyVaultResourceId": "Microsoft.KeyVault/vaults/GEN-UNIQUE-8" + }, + "resources": [ + { + "type": "Microsoft.Network/VirtualNetworks", + "name": "GEN-VNET-NAME", + "apiVersion": "2019-09-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(concat('publicIP',parameters('vmName')))]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmName'))]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(concat('nic',parameters('vmName')))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(concat('publicIP',parameters('vmName')))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(concat('publicIP',parameters('vmName')))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//[toLower(concat('nic',parameters('vmName')))]" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "userName", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(concat('nic',parameters('vmName')))]" + } + ] + } + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-8" + ], + "properties": { + "enabledForDeployment": true, + "enabledForDiskEncryption": true, + "enabledForTemplateDeployment": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', parameters('vmName')), '2019-07-01', 'full').identity.principalId]", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "secrets": [ + "list", + "get" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/diskEncryption", + "apiVersion": "2019-03-01", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE-8" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[variables('keyVaultURL')]", + "KeyVaultResourceId": "Microsoft.KeyVault/vaults/GEN-UNIQUE-8", + "VolumeType": "All" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1023 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1023 new file mode 100644 index 0000000..cffa5e7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1023 @@ -0,0 +1,341 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image-managed-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image-managed-disks/azuredeploy.parameters.json" + ], + "timestamp": 1642962903678, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image-managed-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-create-new-vm-gallery-image-managed-disks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1023", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1023", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine." + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the virtual machine." + }, + "value": "userName" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin user password for virtual machine." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default lovation" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_D2s_v3" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of VNET to which the VM NIC belongs to" + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of Subnet to which the VM NIC belongs to" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-UNIQUE-8" + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "osSku": "2012-R2-Datacenter", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "dnsNameForPublicIP": "[toLower(parameters('vmName'))]", + "publicIPAddressName": "[toLower(concat('publicIP',parameters('vmName')))]", + "publicIPAddressType": "Dynamic", + "nicName": "[toLower(concat('nic',parameters('vmName')))]", + "keyVaultURL": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyVaultDns)]", + "encryptionOperation": "EnableEncryption", + "keyVaultResourceId": "Microsoft.KeyVault/vaults//GEN-UNIQUE-8" + }, + "resources": [ + { + "type": "Microsoft.Network/VirtualNetworks", + "name": "GEN-VNET-NAME", + "apiVersion": "2019-09-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(concat('publicIP',parameters('vmName')))]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmName'))]" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(concat('nic',parameters('vmName')))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(concat('publicIP',parameters('vmName')))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(concat('publicIP',parameters('vmName')))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//[toLower(concat('nic',parameters('vmName')))]" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "userName", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 512, + "lun": 1, + "name": "DataDisk-01", + "createOption": "empty", + "caching": "None" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(concat('nic',parameters('vmName')))]" + } + ] + } + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-8" + ], + "properties": { + "enabledForDeployment": true, + "enabledForDiskEncryption": true, + "enabledForTemplateDeployment": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', parameters('vmName')), '2019-07-01', 'full').identity.principalId]", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "secrets": [ + "list", + "get" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/diskEncryption", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE-8" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[variables('keyVaultURL')]", + "KeyVaultResourceId": "Microsoft.KeyVault/vaults//GEN-UNIQUE-8", + "VolumeType": "All" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1024 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1024 new file mode 100644 index 0000000..39a1e92 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1024 @@ -0,0 +1,292 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903686, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1024", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1024", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "simpleLinuxVM", + "metadata": { + "description": "The name of you Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat('simplelinuxvm-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "16.04.0-LTS", + "18.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "VmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "The size of the VM" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "SecGroupNet", + "metadata": { + "description": "Name of the Network Security Group" + } + } + }, + "variables": { + "vmName": "simpleLinuxVM", + "publicIpAddressName": "simpleLinuxVMPublicIP", + "networkInterfaceName": "simpleLinuxVMNetInt", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet", + "osDiskType": "StandardSSD_LRS", + "subnetAddressPrefix": "10.1.0.0/24", + "addressPrefix": "10.1.0.0/16", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "simpleLinuxVMNetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//SecGroupNet", + "Microsoft.Network/virtualNetworks//vNet", + "Microsoft.Network/publicIpAddresses//simpleLinuxVMPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecGroupNet" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "SecGroupNet", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "priority": 1000, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-06-01", + "name": "simpleLinuxVMPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "properties": { + "publicIpAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + }, + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "simpleLinuxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//simpleLinuxVMNetInt" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/simpleLinuxVMNetInt" + } + ] + }, + "osProfile": { + "computerName": "simpleLinuxVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1025 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1025 new file mode 100644 index 0000000..7a52ca7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1025 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962903695, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1025", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1025", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + }, + "value": "GET-PREREQ-vmName" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key." + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "keyEncryptionAlgorithm": { + "type": "string", + "defaultValue": "RSA-OAEP", + "metadata": { + "description": "keyEncryptionAlgorithm used to wrap volume encryption key using KeyEncryptionKeyURL" + }, + "value": "RSA-OAEP" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "volumeType": { + "type": "string", + "defaultValue": "Data", + "metadata": { + "description": "Volume type being targeted for encryption operatio" + }, + "value": "Data" + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Pass in a unique value like a GUID everytime the operation needs to be force run" + }, + "value": "1.0" + } + }, + "variables": { + "extensionName": "AzureDiskEncryptionForLinux", + "extensionVersion": "1.1", + "encryptionOperation": "EnableEncryption", + "keyVaultURL": "https://GEN-KEYVAULT-NAME", + "keyVaultResourceID": "[concat(subscription().id,'/resourceGroups/',parameters('keyVaultResourceGroup'),'/providers/Microsoft.KeyVault/vaults/', parameters('keyVaultName'))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "name": "GET-PREREQ-vmName/diskEncryption", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "https://GEN-KEYVAULT-NAME", + "KeyVaultResourceId": "[variables('keyVaultResourceID')]", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "[if(empty(parameters('keyEncryptionKeyURL')),'',variables('keyVaultResourceID'))]", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "Data" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1026 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1026 new file mode 100644 index 0000000..b1c4469 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1026 @@ -0,0 +1,208 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903706, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1026", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1026", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A4_v2", + "metadata": { + "description": "VM Size" + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "nicName": "myVMNic", + "subnetName": "Subnet", + "vmName": "MyLinuxVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2017-04-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2017-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyLinuxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A4_v2" + }, + "osProfile": { + "computerName": "MyLinuxVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "1023", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1027 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1027 new file mode 100644 index 0000000..5464c8a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1027 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/azuredeploy.parameters.json" + ], + "timestamp": 1642962903714, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-linux-vm-without-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1027", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1027", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + }, + "value": "GET-PREREQ-vmName" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "volumeType": { + "type": "string", + "defaultValue": "All", + "metadata": { + "description": "Type of the volume OS or Data to perform encryption operation" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "extensionName": "AzureDiskEncryptionForLinux", + "extensionVersion": "1.1", + "encryptionOperation": "EnableEncryption", + "keyEncryptionAlgorithm": "RSA-OAEP", + "keyVaultResourceID": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmName/AzureDiskEncryptionForLinux", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2016-10-01').vaultUri]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "[if(empty(parameters('keyEncryptionKeyURL')),'',variables('keyVaultResourceID'))]", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "All" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1028 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1028 new file mode 100644 index 0000000..881d6ec --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1028 @@ -0,0 +1,244 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903725, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1028", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1028", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Name of existing VM Scale Set" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "namingInfix": "existingvmss", + "existingVmssName": "existingvmss", + "virtualNetworkName": "existingvmssvnet", + "publicIPAddressName": "existingvmsspip", + "subnetName": "existingvmsssubnet", + "loadBalancerName": "existingvmsslb", + "natPoolName": "existingvmssnatpool", + "bePoolName": "existingvmssbepool", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "existingvmssvnet", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "existingvmsssubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "existingvmsspip", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(substring(concat(variables('existingVmssName'), uniqueString(resourceGroup().id)), 0, 16))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "existingvmsslb", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//existingvmsspip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/existingvmsspip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "existingvmssbepool" + } + ], + "inboundNatPools": [ + { + "name": "existingvmssnatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/existingvmsslb/loadBalancerFrontEnd" + }, + "protocol": "tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "existingvmss", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers//existingvmsslb", + "Microsoft.Network/virtualNetworks//existingvmssvnet" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.5", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "existvmss", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "existingvmssnic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "existingvmssipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/existingvmssvnet/existingvmsssubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/existingvmsslb/existingvmssbepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/existingvmsslb/existingvmssnatpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "outputs": { + "existingVmssName": { + "type": "string", + "value": "[variables('existingVmssName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1029 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1029 new file mode 100644 index 0000000..0e5d20b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1029 @@ -0,0 +1,145 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962903741, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1029", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1029", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmssName": { + "type": "string", + "metadata": { + "description": "Name of VMSS to be encrypted." + }, + "maxLength": 61, + "value": "GET-PREREQ-existingVmssName" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key." + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "keyEncryptionAlgorithm": { + "type": "string", + "defaultValue": "RSA-OAEP", + "metadata": { + "description": "keyEncryptionAlgorithm used to wrap volume encryption key using KeyEncryptionKeyURL" + }, + "value": "RSA-OAEP" + }, + "volumeType": { + "type": "string", + "defaultValue": "Data", + "metadata": { + "description": "Volume type being targeted for encryption operation (Data is the only supported type in Linux VMSS Preview)" + }, + "value": "Data" + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Pass in a unique value like a GUID everytime the operation needs to be force run" + }, + "value": "1.0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + } + }, + "variables": { + "extensionName": "AzureDiskEncryptionForLinux", + "extensionVersion": "1.1", + "encryptionOperation": "EnableEncryption", + "keyVaultURL": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyvaultDns)]", + "keyVaultResourceID": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GET-PREREQ-existingVmssName", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "AzureDiskEncryptionForLinux", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[variables('keyVaultURL')]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "[if(empty(parameters('keyEncryptionKeyURL')),'',variables('keyVaultResourceID'))]", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "Data" + } + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT103 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT103 new file mode 100644 index 0000000..2d3a9b6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT103 @@ -0,0 +1,79 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/concourse/concourse-ci/generate-customdata.json", + "/application-workloads/concourse/concourse-ci/azuredeploy.parameters.json" + ], + "timestamp": 1642962886495, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/concourse/concourse-ci/generate-customdata.json", + "/application-workloads/concourse/concourse-ci/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT103", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT103", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "customData": { + "type": "object", + "metadata": { + "Description": "Custom Data Object" + } + }, + "jumpboxVmName": { + "value": "GEN-UNIQUE" + }, + "jumpboxUsername": { + "value": "GEN-UNIQUE" + }, + "jumpboxSshKeyData": { + "value": "GEN-SSH-PUB-KEY" + }, + "concourseUsername": { + "value": "GEN-UNIQUE-8" + }, + "concoursePassword": { + "value": "GEN-PASSWORD" + }, + "concourseWorkerDiskSize": { + "value": 30 + }, + "environment": { + "value": "AzureCloud" + }, + "tenantID": { + "value": "GEN-AZUREAD-AKS-TENANTID" + }, + "clientID": { + "value": "GEN-AZUREAD-AKS-APPID" + }, + "clientSecret": { + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + } + }, + "variables": {}, + "resources": [], + "outputs": { + "customData": { + "type": "string", + "value": "[base64(string(parameters('customData')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1030 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1030 new file mode 100644 index 0000000..8d97737 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1030 @@ -0,0 +1,236 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903751, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1030", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1030", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username of the administrator of the VM" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password of the administrator of the VM" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the resources" + } + }, + "vmssSku": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "Name of the VMSS" + }, + "value": "GEN-UNIQUE-8" + } + }, + "variables": { + "virtualNetworkName": "GEN-UNIQUE-8vnet", + "publicIPAddressName": "GEN-UNIQUE-8pip", + "subnetName": "GEN-UNIQUE-8subnet", + "loadBalancerName": "GEN-UNIQUE-8lb", + "natPoolName": "GEN-UNIQUE-8natpool", + "bePoolName": "GEN-UNIQUE-8bepool" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-8subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "GEN-UNIQUE-8lb", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUE-8bepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUE-8natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd" + }, + "protocol": "tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers//GEN-UNIQUE-8lb", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8vnet" + ], + "identity": { + "type": "SystemAssigned" + }, + "sku": { + "name": "Standard_D2s_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "existvmss", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUE-8nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUE-8ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8vnet/GEN-UNIQUE-8subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "outputs": { + "vmssName": { + "type": "string", + "value": "[parameters('vmssName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1031 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1031 new file mode 100644 index 0000000..5184399 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1031 @@ -0,0 +1,182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962903762, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-vmss-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1031", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets/extensions", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1031", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmssName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine." + }, + "value": "GET-PREREQ-vmssName" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-UNIQUE-10" + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the resources." + } + } + }, + "variables": { + "keyVaultURL": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyVaultDns)]", + "encryptionOperation": "EnableEncryption" + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "properties": { + "enabledForDeployment": true, + "enabledForDiskEncryption": true, + "enabledForTemplateDeployment": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets/', parameters('vmssName')), '2020-12-01', 'full').identity.principalId]", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "secrets": [ + "list", + "get" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets/extensions", + "name": "GET-PREREQ-vmssName/diskEncryption", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE-10" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[variables('keyVaultURL')]", + "KeyVaultResourceId": "Microsoft.KeyVault/vaults//GEN-UNIQUE-10", + "VolumeType": "All" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1032 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1032 new file mode 100644 index 0000000..3c4f5ae --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1032 @@ -0,0 +1,207 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903770, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1032", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1032", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine." + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the virtual machine." + }, + "value": "userName" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin user password for virtual machine." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_D2s_v3" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of VNET to which the VM NIC belongs to" + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of Subnet to which the VM NIC belongs to" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the resources." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "vmName": "GEN-UNIQUE-8", + "imageOffer": "WindowsServer", + "osSku": "2012-R2-Datacenter", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "dnsNameForPublicIP": "[toLower(parameters('vmName'))]", + "publicIPAddressName": "[toLower(concat('publicIP',parameters('vmName')))]", + "publicIPAddressType": "Dynamic", + "nicName": "[toLower(concat('nic',parameters('vmName')))]" + }, + "resources": [ + { + "type": "Microsoft.Network/VirtualNetworks", + "name": "GEN-VNET-NAME", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(concat('publicIP',parameters('vmName')))]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmName'))]" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(concat('nic',parameters('vmName')))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(concat('publicIP',parameters('vmName')))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(concat('publicIP',parameters('vmName')))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//[toLower(concat('nic',parameters('vmName')))]" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "userName", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(concat('nic',parameters('vmName')))]" + } + ] + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1033 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1033 new file mode 100644 index 0000000..ef6a6b2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1033 @@ -0,0 +1,182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962903780, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1033", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1033", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine." + }, + "value": "GET-PREREQ-vmName" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-UNIQUE-8" + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the resources." + } + } + }, + "variables": { + "keyVaultURL": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyVaultDns)]", + "encryptionOperation": "EnableEncryption" + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "enabledForDeployment": true, + "enabledForDiskEncryption": true, + "enabledForTemplateDeployment": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', parameters('vmName')), '2020-12-01', 'full').identity.principalId]", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "secrets": [ + "list", + "get" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmName/diskEncryption", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE-8" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[variables('keyVaultURL')]", + "KeyVaultResourceId": "Microsoft.KeyVault/vaults//GEN-UNIQUE-8", + "VolumeType": "All" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1034 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1034 new file mode 100644 index 0000000..e1b124c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1034 @@ -0,0 +1,184 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "timestamp": 1642962903788, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1034", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1034", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + }, + "value": "vmName" + }, + "aadClientID": { + "type": "string", + "metadata": { + "description": "Client ID of AAD app which has permissions to KeyVault" + }, + "value": "clientId" + }, + "aadClientCertThumbprint": { + "type": "string", + "metadata": { + "description": "Thumbprint of the certificate associated with the AAD app which has permissions to KeyVault" + }, + "value": "YourClientCertThumbprint" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "kvName" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "kvResourceGroup" + }, + "useExistingKek": { + "type": "string", + "defaultValue": "nokek", + "allowedValues": [ + "nokek", + "kek" + ], + "metadata": { + "description": "Select kek if the secret should be encrypted with a key encryption key and pass explicit keyEncryptionKeyURL. For nokek, you can keep keyEncryptionKeyURL empty." + }, + "value": "nokek" + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "kekUrl" + }, + "volumeType": { + "type": "string", + "defaultValue": "All", + "metadata": { + "description": "Type of the volume OS or Data to perform encryption operation" + }, + "value": "All" + }, + "sequenceVersion": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + }, + "value": "1.0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "extensionName": "AzureDiskEncryption", + "extensionVersion": "1.1", + "encryptionOperation": "EnableEncryption", + "keyEncryptionAlgorithm": "RSA-OAEP", + "updateVmUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-encrypt-running-windows-vm/updatevm-nokek.json", + "keyVaultURL": "https://kvName.vault.azure.net/", + "keyVaultResourceID": "[concat(subscription().id,'/resourceGroups/',parameters('keyVaultResourceGroup'),'/providers/Microsoft.KeyVault/vaults/', parameters('keyVaultName'))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/AzureDiskEncryption", + "apiVersion": "2016-04-30-preview", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "AADClientID": "clientId", + "AADClientCertThumbprint": "YourClientCertThumbprint", + "KeyVaultURL": "https://kvName.vault.azure.net/", + "KeyEncryptionKeyURL": "kekUrl", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "All", + "EncryptionOperation": "EnableEncryption" + } + } + }, + { + "name": "updatevm", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/vmName/AzureDiskEncryption" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-encrypt-running-windows-vm/updatevm-nokek.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "vmName" + }, + "keyVaultResourceID": { + "value": "[variables('keyVaultResourceID')]" + }, + "keyVaultSecretUrl": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))).instanceView.statuses[0].message]" + }, + "keyEncryptionKeyURL": { + "value": "kekUrl" + } + } + } + } + ], + "outputs": { + "BitLockerKey": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))).instanceView.statuses[0].message]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1035 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1035 new file mode 100644 index 0000000..85b022d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1035 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/updatevm-kek.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "timestamp": 1642962903797, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/updatevm-kek.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1035", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1035", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Machine" + }, + "value": "vmName" + }, + "keyVaultResourceID": { + "type": "string", + "metadata": { + "description": "KeyVault resource id. Ex: /subscriptions/9135e259-1f76-4dbd-a5c8-bc4fcdf3cf1c/resourceGroups/DiskEncryptionTest/providers/Microsoft.KeyVault/vaults/DiskEncryptionTestAus" + } + }, + "keyVaultSecretUrl": { + "type": "string", + "metadata": { + "description": "KeyVault secret Url. Ex: https://diskencryptiontestaus.vault.azure.net/secrets/BitLockerEncryptionSecretWithKek/e088818e865e48488cf363af16dea596" + } + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "KeyVault key encryption key Url. Ex: https://diskencryptiontestaus.vault.azure.net/keys/DiskEncryptionKek/562a4bb76b524a1493a6afe8e536ee78" + }, + "value": "kekUrl" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "aadClientID": { + "value": "clientId" + }, + "aadClientCertThumbprint": { + "value": "YourClientCertThumbprint" + }, + "keyVaultName": { + "value": "kvName" + }, + "keyVaultResourceGroup": { + "value": "kvResourceGroup" + }, + "useExistingKek": { + "value": "nokek" + }, + "volumeType": { + "value": "All" + }, + "sequenceVersion": { + "value": "1.0" + } + }, + "resources": [ + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "[resourceGroup().location]", + "properties": { + "storageProfile": { + "osDisk": { + "encryptionSettings": { + "diskEncryptionKey": { + "sourceVault": { + "id": "keyVaultResourceID" + }, + "secretUrl": "keyVaultSecretUrl" + }, + "keyEncryptionKey": { + "sourceVault": { + "id": "keyVaultResourceID" + }, + "keyUrl": "kekUrl" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1036 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1036 new file mode 100644 index 0000000..e1fab1d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1036 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/updatevm-nokek.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "timestamp": 1642962903808, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/updatevm-nokek.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-aad-client-cert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1036", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1036", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Machine" + }, + "value": "vmName" + }, + "keyVaultResourceID": { + "type": "string", + "metadata": { + "description": "KeyVault resource id. Ex: /subscriptions/9135e259-1f76-4dbd-a5c8-bc4fcdf3cf1c/resourceGroups/DiskEncryptionTest/providers/Microsoft.KeyVault/vaults/DiskEncryptionTestAus" + } + }, + "keyVaultSecretUrl": { + "type": "string", + "metadata": { + "description": "KeyVault secret Url. Ex: https://diskencryptiontestaus.vault.azure.net/secrets/BitLockerEncryptionSecretWithKek/e088818e865e48488cf363af16dea596" + } + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "KeyVault key encryption key Url. Ex: https://diskencryptiontestaus.vault.azure.net/keys/DiskEncryptionKek/562a4bb76b524a1493a6afe8e536ee78" + }, + "value": "kekUrl" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "aadClientID": { + "value": "clientId" + }, + "aadClientCertThumbprint": { + "value": "YourClientCertThumbprint" + }, + "keyVaultName": { + "value": "kvName" + }, + "keyVaultResourceGroup": { + "value": "kvResourceGroup" + }, + "useExistingKek": { + "value": "nokek" + }, + "volumeType": { + "value": "All" + }, + "sequenceVersion": { + "value": "1.0" + } + }, + "resources": [ + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "[resourceGroup().location]", + "properties": { + "storageProfile": { + "osDisk": { + "encryptionSettings": { + "diskEncryptionKey": { + "sourceVault": { + "id": "keyVaultResourceID" + }, + "secretUrl": "keyVaultSecretUrl" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1037 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1037 new file mode 100644 index 0000000..add01ef --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1037 @@ -0,0 +1,185 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903822, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1037", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1037", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of the virtual machine." + } + } + }, + "variables": { + "nicName": "myVMNic", + "subnetName": "Subnet", + "vmName": "MyWindowsVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet", + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyWindowsVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "MyWindowsVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "1023", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1038 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1038 new file mode 100644 index 0000000..28d791a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1038 @@ -0,0 +1,126 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/azuredeploy.parameters.json" + ], + "timestamp": 1642962903832, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-running-windows-vm-without-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1038", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1038", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + }, + "value": "GET-PREREQ-vmName" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "keyEncryptionKeyURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "volumeType": { + "type": "string", + "defaultValue": "All", + "metadata": { + "description": "Type of the volume OS or Data to perform encryption operation" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + } + }, + "resizeOSDisk": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Should the OS partition be resized to occupy full OS VHD before splitting system volume" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "extensionName": "AzureDiskEncryption", + "extensionVersion": "2.2", + "encryptionOperation": "EnableEncryption", + "keyEncryptionAlgorithm": "RSA-OAEP", + "keyVaultResourceID": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmName/AzureDiskEncryption", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[reference(variables('keyVaultResourceId'), '2019-09-01').vaultUri]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KekVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults//GEN-KEYVAULT-NAME", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "All", + "ResizeOSDisk": false + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1039 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1039 new file mode 100644 index 0000000..f7c28fb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1039 @@ -0,0 +1,398 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-vmss-linux-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-vmss-linux-jumpbox/azuredeploy.parameters.json" + ], + "timestamp": 1642962903843, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-vmss-linux-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-vmss-linux-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1039", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1039", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE" + }, + "vmSku": { + "type": "string", + "defaultValue": "Standard_A4_v2", + "metadata": { + "description": "Size of VMs in the VM Scale Set (7GB or more RAM suggested for Linux)" + } + }, + "instanceCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 2, + "maxValue": 100 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "keyVaultResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "keyEncryptionKeyURL": { + "type": "string", + "metadata": { + "description": "URL of the KeyEncryptionKey used to encrypt the volume encryption key. The Valut is assumed to be in keyVaultResourceGroup" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + }, + "keyEncryptionAlgorithm": { + "type": "string", + "defaultValue": "RSA-OAEP", + "metadata": { + "description": "Key encryption algorithm used to wrap with KeyEncryptionKeyURL" + } + }, + "volumeType": { + "type": "string", + "defaultValue": "Data", + "metadata": { + "description": "Type of the volume to perform encryption operation (Linux VMSS only supports Data)" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Pass in an unique value like a GUID everytime the operation needs to be force run" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "customData": "I2Nsb3VkLWNvbmZpZw0KcnVuY21kOg0KIyEvYmluL2Jhc2gNCi0gc3VkbyAtaQ0KLSBhcHQtZ2V0IGluc3RhbGwgbHNzY3NpDQotIExVTjNETj0iJChsc3Njc2kgKjowOjA6MSB8IGF3ayAneyBwcmludCAkTkYgfScpIg0KLSBta2ZzLmV4dDQgJExVTjNETg0KLSBVVUlEMT0iJChibGtpZCAtcyBVVUlEIC1vIHZhbHVlICRMVU4zRE4pIg0KLSBlY2hvICJVVUlEPSRVVUlEMSAvZGF0YTEgZXh0NCBkZWZhdWx0cyxub2ZhaWwgMCAwIiA+Pi9ldGMvZnN0YWINCi0gbWtkaXIgL2RhdGExDQotIG1vdW50IC1hDQoNCmZpbmFsX21lc3NhZ2U6ICJjbG91ZC1jb25maWcgaXMgY29tcGxldGUgYWZ0ZXIgJFVQVElNRSBzZWNvbmRzIg==", + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "jumpBoxName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "jumpBoxSAName": "[concat('jumpboxsa', uniqueString(resourceGroup().id))]", + "jumpBoxIPConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "jumpBoxNicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "subnetId": "Microsoft.Network/virtualNetworks/subnets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-DAILY-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-DAILY-LTS", + "version": "latest" + }, + "extensionName": "AzureDiskEncryptionForLinux", + "extensionVersion": "1.1", + "encryptionOperation": "EnableEncryption", + "keyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults/GEN-KEYVAULT-NAME", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('jumpBoxSAName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2017-06-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2017-09-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "location": "[resourceGroup().location]", + "apiVersion": "2017-09-01", + "dependsOn": [ + "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[variables('jumpBoxSAName')]", + "[variables('jumpBoxNicName')]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A4_v2" + }, + "osProfile": { + "computerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-DAILY-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('jumpBoxSAName')).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_A4_v2", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-DAILY-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": 4, + "input": { + "lun": "[copyIndex('dataDisks')]", + "diskSizeGB": 10, + "createOption": "Empty", + "caching": "None" + } + } + ] + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "I2Nsb3VkLWNvbmZpZw0KcnVuY21kOg0KIyEvYmluL2Jhc2gNCi0gc3VkbyAtaQ0KLSBhcHQtZ2V0IGluc3RhbGwgbHNzY3NpDQotIExVTjNETj0iJChsc3Njc2kgKjowOjA6MSB8IGF3ayAneyBwcmludCAkTkYgfScpIg0KLSBta2ZzLmV4dDQgJExVTjNETg0KLSBVVUlEMT0iJChibGtpZCAtcyBVVUlEIC1vIHZhbHVlICRMVU4zRE4pIg0KLSBlY2hvICJVVUlEPSRVVUlEMSAvZGF0YTEgZXh0NCBkZWZhdWx0cyxub2ZhaWwgMCAwIiA+Pi9ldGMvZnN0YWINCi0gbWtkaXIgL2RhdGExDQotIG1vdW50IC1hDQoNCmZpbmFsX21lc3NhZ2U6ICJjbG91ZC1jb25maWcgaXMgY29tcGxldGUgYWZ0ZXIgJFVQVElNRSBzZWNvbmRzIg==", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "AzureDiskEncryptionForLinux", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2016-10-01').vaultUri]", + "KeyVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults/GEN-KEYVAULT-NAME", + "KekVaultResourceId": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults/GEN-KEYVAULT-NAME", + "KeyEncryptionKeyURL": "GEN-KEYVAULT-ENCRYPTION-KEY-URI", + "KeyEncryptionAlgorithm": "RSA-OAEP", + "VolumeType": "Data" + } + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT104 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT104 new file mode 100644 index 0000000..98cb8f5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT104 @@ -0,0 +1,416 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/consul/consul-on-ubuntu/azuredeploy.json", + "/application-workloads/consul/consul-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962886656, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/consul/consul-on-ubuntu/azuredeploy.json", + "/application-workloads/consul/consul-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT104", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT104", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for VM" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the Virtual Machine." + }, + "type": "string", + "allowedValues": [ + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3" + ] + }, + "appPrefix": { + "type": "string", + "metadata": { + "description": "Prefix for each component (VMs, networks, etc)" + }, + "maxLength": 13, + "value": "GEN-UNIQUE-10" + }, + "existingAtlasToken": { + "type": "string", + "metadata": { + "description": "Your existing access token from Atlas" + }, + "value": "GEN-UNIQUE" + }, + "existingAtlasInfraName": { + "type": "string", + "metadata": { + "description": "The name of your existing infrastructure in Atlas (username/infraName)" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmsize": { + "value": "Standard_A1" + } + }, + "variables": { + "imagePublisher": "Canonical", + "subnet1Name": "Subnet-1", + "customScriptFilePath": "[uri(parameters('_artifactsLocation'), concat('install-consul.sh', parameters('_artifactsLocationSasToken')))]", + "addressPrefix": "10.0.0.0/16", + "numberOfInstances": 3, + "customScriptCommandToExecute": "bash install-consul.sh", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "imageSKU": "14.04.5-LTS", + "vnetIDRef": "GEN-UNIQUE-10_VNET", + "imageOffer": "UbuntuServer", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), parameters('appPrefix'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "sku": { + "name": "Standard_LRS" + }, + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "name": "[variables('storageAccountName')]" + }, + { + "name": "publicIPcopyindex()", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "copy": { + "count": 3, + "name": "ipLoop" + }, + "type": "Microsoft.Network/publicIPAddresses", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-10_AS", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "properties": { + "securityRules": [ + { + "name": "ssh_rule", + "properties": { + "priority": 100, + "direction": "Inbound", + "protocol": "Tcp", + "description": "Allow external SSH", + "access": "Allow", + "destinationPortRange": "22", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "sourceAddressPrefix": "Internet" + } + } + ] + }, + "type": "Microsoft.Network/networkSecurityGroups", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE-10_SG" + }, + { + "name": "GEN-UNIQUE-10_VNET", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-10_SG" + ], + "type": "Microsoft.Network/virtualNetworks", + "properties": { + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ], + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + } + } + }, + { + "name": "GEN-UNIQUE-10_LB", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-10_VNET" + ], + "type": "Microsoft.Network/loadBalancers", + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-10_VNET/Subnet-1" + } + } + } + ], + "loadBalancingRules": [ + { + "name": "lbrule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/GEN-UNIQUE-10_LB/loadBalancerFrontEnd" + }, + "backendPort": 8500, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-10_LB/lbprobe" + }, + "protocol": "Tcp", + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendaddresspools/GEN-UNIQUE-10_LB/loadBalancerBackEnd" + }, + "frontendPort": 8500, + "idleTimeoutInMinutes": 15 + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBackEnd" + } + ], + "probes": [ + { + "name": "lbprobe", + "properties": { + "protocol": "Tcp", + "numberOfProbes": 2, + "intervalInSeconds": 15, + "port": 8500 + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-10_nic1copyindex()", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIPcopyindex()", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-10_VNET", + "Microsoft.Network/loadBalancers//GEN-UNIQUE-10_LB" + ], + "copy": { + "count": 3, + "name": "nicLoop" + }, + "type": "Microsoft.Network/networkInterfaces", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10_SG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-10_VNET/Subnet-1" + }, + "privateIPAllocationMethod": "Dynamic", + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-10_LB/loadBalancerBackEnd" + } + ], + "publicIPAddress": { + "id": "Microsoft.Network/publicIpAddresses/publicIPcopyindex()" + } + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-10_vmcopyIndex()", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', concat(parameters('appPrefix'),'_nic1', copyIndex()))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Compute/availabilitySets/', concat(parameters('appPrefix'),'_AS'))]" + ], + "copy": { + "count": 3, + "name": "virtualMachineLoop" + }, + "type": "Microsoft.Compute/virtualMachines", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "adminUsername": "GEN-UNIQUE", + "computerName": "vmcopyIndex()", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE-10_AS" + }, + "storageProfile": { + "imageReference": { + "sku": "14.04.5-LTS", + "publisher": "Canonical", + "version": "latest", + "offer": "UbuntuServer" + }, + "osDisk": { + "caching": "ReadWrite", + "name": "GEN-UNIQUE-10_vmcopyIndex()_OSDisk", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10_nic1copyindex()", + "properties": { + "primary": true + } + } + ] + } + } + }, + { + "name": "GEN-UNIQUE-10_vmcopyIndex()/extension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-10_vmcopyIndex()" + ], + "copy": { + "count": 3, + "name": "virtualMachineLoop" + }, + "type": "Microsoft.Compute/virtualMachines/extensions", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install-consul.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash install-consul.sh GEN-UNIQUE GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1040 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1040 new file mode 100644 index 0000000..8451f78 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1040 @@ -0,0 +1,461 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-vmss-windows-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-vmss-windows-jumpbox/azuredeploy.parameters.json" + ], + "timestamp": 1642962903859, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/encrypt-vmss-windows-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.compute/encrypt-vmss-windows-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1040", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachinescalesets/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1040", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE" + }, + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Publisher of OS image." + }, + "value": "MicrosoftWindowsServer" + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "OS image offer" + }, + "value": "WindowsServer" + }, + "imageSku": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "OS image SKU" + }, + "value": "2012-R2-Datacenter" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "osVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "OS Version. This will pick a fully patched image of this given OS version. Example values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + }, + "value": "latest" + }, + "instanceCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 2, + "maxValue": 100, + "value": 2 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Name of the KeyVault to place the volume encryption key" + }, + "value": "GEN-UNIQUE" + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "jumpBoxName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "jumpBoxSAName": "[concat('jumpboxsa', uniqueString(resourceGroup().id))]", + "jumpBoxOSDiskName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxosdisk", + "jumpBoxIPConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "jumpBoxNicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "storageAccountType": "Standard_LRS", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "osType": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "keyVaultURL": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyVaultDns)]", + "encryptionOperation": "EnableEncryption", + "keyVaultResourceId": "Microsoft.KeyVault/vaults/GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('jumpBoxSAName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2017-09-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "location": "[resourceGroup().location]", + "apiVersion": "2017-09-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxosdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('jumpBoxSAName')).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/GEN-UNIQUE" + ], + "properties": { + "enabledForDeployment": true, + "enabledForDiskEncryption": true, + "enabledForTemplateDeployment": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets/', parameters('vmssName')), '2019-07-01', 'full').identity.principalId]", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ], + "secrets": [ + "list", + "get" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "identity": { + "type": "SystemAssigned" + }, + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets/extensions", + "name": "GEN-UNIQUE/diskEncryption", + "apiVersion": "2019-03-01", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "AzureDiskEncryption", + "typeHandlerVersion": "2.2", + "autoUpgradeMinorVersion": true, + "settings": { + "EncryptionOperation": "EnableEncryption", + "KeyVaultURL": "[variables('keyVaultURL')]", + "KeyVaultResourceId": "Microsoft.KeyVault/vaults/GEN-UNIQUE", + "VolumeType": "All" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1041 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1041 new file mode 100644 index 0000000..417e9ae --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1041 @@ -0,0 +1,138 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/glassfish-on-suse/nestedtemplates/azuredeploy.json" + ], + "timestamp": 1642962903867, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/glassfish-on-suse/nestedtemplates/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1041", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1041", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "vmPrefix": { + "type": "string", + "metadata": { + "description": "Naming prefix applied to the deployed VM resources" + } + }, + "numberOfInstances": { + "type": "int", + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of VMs" + } + }, + "glassfishVersion": { + "type": "int", + "minValue": 3, + "maxValue": 4, + "allowedValues": [ + 3, + 4 + ], + "metadata": { + "description": "Release number for the GlassFish package to be deployed" + } + }, + "glassfishRelease": { + "type": "string", + "allowedValues": [ + "3.1.1", + "3.1.2", + "3.1.2.2", + "3.2", + "4.0", + "4.1" + ], + "metadata": { + "description": "Version of GlassFish to deploy" + } + }, + "glassfishAdminPassword": { + "type": "securestring", + "metadata": { + "description": "GlassFish admin user password" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "location": "[resourceGroup().location]", + "deploymentScriptFolder": "scripts/", + "deploymentScriptFileName": "deployGlassFish.sh", + "deploymentScriptUrl": "[uri(parameters('_artifactsLocation'), concat(variables('deploymentScriptFolder'), variables('deploymentScriptFileName'), parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmPrefixcopyIndex()/deployGlassFish", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "tags": { + "displayName": "deployGlassFish" + }, + "copy": { + "name": "vmDeploymentScriptLoop", + "count": "numberOfInstances" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('deploymentScriptFolder'), variables('deploymentScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sudo bash deployGlassFish.sh glassfishVersion glassfishRelease glassfishAdminPassword" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1042 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1042 new file mode 100644 index 0000000..2e3f8c4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1042 @@ -0,0 +1,509 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/glassfish-on-suse/azuredeploy.json", + "/quickstarts/microsoft.compute/glassfish-on-suse/azuredeploy.parameters.json" + ], + "timestamp": 1642962903877, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/glassfish-on-suse/azuredeploy.json", + "/quickstarts/microsoft.compute/glassfish-on-suse/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1042", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1042", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "glassfishVersion": { + "type": "int", + "allowedValues": [ + 3, + 4 + ], + "metadata": { + "description": "Release number for the GlassFish package to be deployed." + }, + "value": 3 + }, + "glassfishRelease": { + "type": "string", + "allowedValues": [ + "3.1.1", + "3.1.2", + "3.1.2.2", + "3.2", + "4.0", + "4.1" + ], + "metadata": { + "description": "Version of GlassFish to deploy" + }, + "value": "3.1.2.2" + }, + "numberOfInstances": { + "type": "int", + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of VMs" + }, + "value": 2 + }, + "dnsNameforLBIP": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "DNS for Load Balancer IP" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM(s) size" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "glassfishAdminPassword": { + "type": "securestring", + "metadata": { + "description": "GlassFish admin user password" + }, + "value": "GEN-PASSWORD" + }, + "sshPublicKey": { + "type": "securestring", + "metadata": { + "description": "SSH public key on all VMs" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "location": "[resourceGroup().location]", + "namePrefix": "gf-", + "storageAccountName": "[concat(uniqueString(resourceGroup().id), 'sa')]", + "availabilitySetName": "gf-nodes", + "publicIPAddressName": "gf-ip", + "vnetName": "gf-vnet", + "subnetName": "gf-subnet", + "nsgName": "gf-subnet-nsg", + "lbName": "gf-lb", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/gf-lb/LoadBalancerFrontEnd", + "lbPoolName": "lbBackend", + "lbProbeName": "gf-tcp-probe", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "nestedTemplateFolder": "nestedtemplates/", + "nestedTemplateFileName": "azuredeploy.json", + "nestedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplateFolder'), variables('nestedTemplateFileName'), parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "name": "[variables('storageAccountName')]", + "sku": { + "name": "Standard_LRS" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "name": "gf-nodes", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + }, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "gf-ip", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "gf-subnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "gf-vnet", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//gf-subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "gf-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/gf-subnet-nsg" + } + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "2020-07-01", + "name": "gf-lb", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//gf-ip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/gf-ip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "lbBackend" + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/gf-lb/lbBackend" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/gf-lb/LoadBalancerFrontEnd" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/gf-lb/gf-tcp-probe" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "gf-tcp-probe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 8080, + "protocol": "Tcp" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "gf-lb/ssh-gf-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "lbSSHNatLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers//gf-lb" + ], + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/gf-lb/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": "[copyIndex(5000)]", + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "gf-lb/admin-gf-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "lbAdminNatLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers//gf-lb" + ], + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/gf-lb/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": "[copyIndex(4800)]", + "backendPort": 4848, + "enableFloatingIP": false + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "gf-nic-copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//gf-vnet", + "Microsoft.Network/loadBalancers//gf-lb", + "Microsoft.Network/loadBalancers/inboundNatRules/gf-lb/ssh-gf-copyIndex()", + "Microsoft.Network/loadBalancers/inboundNatRules/gf-lb/admin-gf-copyIndex()" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/gf-vnet/gf-subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/gf-lb/lbBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/gf-lb/ssh-gf-copyIndex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/gf-lb/admin-gf-copyIndex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "gf-vm-copyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('namePrefix'),'nic-', copyindex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/gf-nodes" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "gf-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "SUSE", + "offer": "openSUSE-Leap", + "sku": "15-2", + "version": "latest" + }, + "osDisk": { + "name": "gf-vm-copyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/gf-nic-copyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'),'2021-02-01').primaryendpoints['blob']]" + } + } + } + }, + { + "name": "GlassFishDeployment", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "dependsOn": [ + "virtualMachineLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplateFolder'), variables('nestedTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "vmPrefix": { + "value": "gf-vm-" + }, + "numberOfInstances": { + "value": 2 + }, + "glassfishVersion": { + "value": 3 + }, + "glassfishRelease": { + "value": "3.1.2.2" + }, + "glassfishAdminPassword": { + "value": "GEN-PASSWORD" + } + } + } + } + ], + "outputs": { + "LoadBalancedApplicationServerURL": { + "type": "string", + "value": "[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1043 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1043 new file mode 100644 index 0000000..5e25e54 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1043 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903885, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1043", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1043", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat('store', uniquestring(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1044 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1044 new file mode 100644 index 0000000..3a29da6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1044 @@ -0,0 +1,258 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962903896, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/list-storage-keys-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1044", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1044", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "customScriptStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the storage account." + }, + "value": "GET-PREREQ-storageAccountName" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "vmName": "MyVM", + "virtualNetworkName": "MyVNET", + "publicIPAddressName": "myPublicIP", + "fileToBeCopied": "FileToBeCopied.txt", + "scriptFolder": "scripts", + "scriptFileName": "Copy-FileFromAzure.ps1", + "accountid": "Microsoft.Storage/storageAccounts//GET-PREREQ-storageAccountName", + "scriptParameters": "[concat('-artifactsLocation ', replace(parameters('_artifactsLocation'),parameters('_artifactsLocationSasToken'),''), ' -artifactsLocationSasToken \"', parameters('_artifactsLocationSasToken'), '\" -folderName ', variables('scriptFolder'), ' -fileToInstall ', variables('fileToBeCopied'))]", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myPublicIP", + "MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MyVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "CustomScriptExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "MyVM" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptFolder'),'/',variables('scriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File ', variables('scriptFolder'), '/', variables('scriptFileName'), ' ', variables('scriptParameters'))]" + }, + "protectedSettings": { + "storageAccountName": "GET-PREREQ-storageAccountName", + "storageAccountKey": "[listKeys(variables('accountid'),'2021-01-01').keys[0].value]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1045 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1045 new file mode 100644 index 0000000..d94979a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1045 @@ -0,0 +1,394 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/multi-vm-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vm-lb-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962903907, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vm-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vm-lb-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1045", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1045", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the VMs, only certain regions support zones." + }, + "value": "centralus" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP for the frontend load balancer." + }, + "value": "GEN-UNIQUE" + }, + "windowsOrUbuntu": { + "type": "string", + "allowedValues": [ + "Windows", + "Ubuntu" + ], + "defaultValue": "Ubuntu", + "metadata": { + "description": "Operation System for the Virtual Machine." + } + }, + "numberOfVms": { + "type": "int", + "defaultValue": 3, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of VMs to provision" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Size of the virtual machine" + } + } + }, + "variables": { + "storageAccountName": "[concat('diags', uniquestring(resourceGroup().id))]", + "nicName": "myVMNic", + "subnetName": "Subnet-1", + "publicIPAddressName": "myPublicIP", + "virtualNetworkName": "MyVNET", + "networkSecurityGroupName": "allowRemoting", + "lbName": "multiVMLB", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet-1", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/multiVMLB/loadBalancerFrontend", + "inboundNatRuleName": "remoting", + "windowsImage": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "linuxImage": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "centralus", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "centralus", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "allowRemoting", + "location": "centralus", + "properties": { + "securityRules": [ + { + "name": "RemoteConnection", + "properties": { + "description": "Allow RDP/SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "[if(equals(parameters('windowsOrUbuntu'), 'Windows'), 3389, 22)]", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "centralus", + "dependsOn": [ + "allowRemoting" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNiccopyindex()", + "location": "centralus", + "copy": { + "name": "nicLoop", + "count": 3 + }, + "dependsOn": [ + "MyVNET", + "multiVMLB", + "lbNatLoop" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet-1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/multiVMLB/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/multiVMLB/remotingcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "multiVMLB", + "type": "Microsoft.Network/loadBalancers", + "location": "centralus", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "myPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ], + "loadbalancingRules": [ + { + "name": "port80", + "properties": { + "frontendIPConfiguration": { + "id": "frontendIPConfigID" + }, + "backendaddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/multiVMLB/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/multiVMLB/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "multiVMLB/remotingcopyIndex()", + "location": "centralus", + "copy": { + "name": "lbNatLoop", + "count": 3 + }, + "dependsOn": [ + "multiVMLB" + ], + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/multiVMLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": "[copyIndex(50000)]", + "backendPort": "[if(equals(parameters('windowsOrUbuntu'), 'Windows'), 3389, 22)]", + "enableFloatingIP": false + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUEcopyindex()", + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "copy": { + "name": "virtualMachineLoop", + "count": 3 + }, + "location": "centralus", + "dependsOn": [ + "nicLoop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "GEN-UNIQUEcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "[if(equals(parameters('windowsOrUbuntu'), 'Windows'), variables('windowsImage'), variables('linuxImage'))]", + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNiccopyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1046 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1046 new file mode 100644 index 0000000..f965130 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1046 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux/nestedtemplates/base.json" + ], + "timestamp": 1642962903923, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux/nestedtemplates/base.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1046", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1046", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "VMSSName": { + "type": "string" + }, + "singlePlacementGroup": { + "type": "bool", + "defaultValue": true + }, + "instanceCount": { + "type": "int" + }, + "subnetId": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + }, + "vmssSku": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "variables": { + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "vmSSName", + "location": "location", + "sku": { + "name": "vmssSku", + "tier": "Standard", + "capacity": "instanceCount" + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "vmSSName", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nicvmSSName", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfigvmSSName", + "properties": { + "subnet": { + "Id": "subnetId" + } + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1047 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1047 new file mode 100644 index 0000000..80b0f7d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1047 @@ -0,0 +1,192 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962903931, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1047", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1047", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for all VMs" + }, + "value": "GEN-UNIQUE" + }, + "vmssSku": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of the scale set" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources" + } + }, + "numberOfVMSS": { + "type": "int", + "metadata": { + "description": "Number of VMSSes to deploy" + }, + "value": 5 + }, + "singlePlacementGroup": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Documentation here: https://docs.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups" + } + }, + "instanceCountPerVMSS": { + "type": "int", + "minValue": 1, + "maxValue": 1000, + "metadata": { + "description": "Number of VM instances per scale set; if singlePlacementGroup is true (the default), then this value must be 100 or less; if singlePlacementGroup is false, then ths value must be 1000 or less" + }, + "value": 5 + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "VMSSPrefix": "vmss-linux", + "newVNETName": "vmss-linux-vnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "subnet", + "subnetPrefix": "10.0.0.0/16" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vmss-linux-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/16" + } + } + ] + } + }, + { + "name": "clusterSetcopyindex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "copy": { + "name": "deploymentLoop", + "count": 5 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//vmss-linux-vnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/base.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "VMSSName": { + "value": "[concat(variables('VMSSPrefix'), padLeft(copyindex(), 2, '0'))]" + }, + "singlePlacementGroup": { + "value": true + }, + "instanceCount": { + "value": 5 + }, + "subnetId": { + "value": "Microsoft.Network/virtualNetworks/subnets/newVnetName/subnet" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "vmssSku": { + "value": "Standard_A1_v2" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1048 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1048 new file mode 100644 index 0000000..dfa2416 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1048 @@ -0,0 +1,505 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962903941, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1048", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1048", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the VM, only certain regions support Availability Zones" + }, + "value": "eastus2" + }, + "vmssSku": { + "type": "string", + "defaultValue": "Standard_A2_V2", + "metadata": { + "description": "Size of the scale set." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources and resource-specific information is appended." + }, + "minLength": 3, + "maxLength": 61, + "value": "GEN-UNIQUE" + }, + "numberOfVms": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of VMs to deploy in each VMSS." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "virtualNetworkName": "GEN-UNIQUE-vnet", + "subnetName": "Subnet1", + "networkSecurityGroupName": "allowRemoting", + "publicIPAddressName": "lbPublicIp", + "lbName": "lb-GEN-UNIQUE", + "lbBE": "lbBE", + "lbNAT": "lbNAT", + "myZones": [ + "1", + "2" + ], + "linuxImage": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-vnet", + "location": "eastus2", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "allowRemoting", + "location": "eastus2", + "properties": { + "securityRules": [ + { + "name": "remoteConnection", + "properties": { + "description": "Allow SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "webTraffic", + "properties": { + "description": "Allow web traffic", + "protocol": "Tcp", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "lbPublicIp", + "location": "eastus2", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-11-01", + "name": "lb-GEN-UNIQUE", + "location": "eastus2", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "lbPublicIp" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lbPublicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "lbBE" + } + ], + "loadbalancingRules": [ + { + "name": "lbrule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/lb-GEN-UNIQUE/loadBalancerFrontEnd" + }, + "backendaddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lb-GEN-UNIQUE/lbBE" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/lb-GEN-UNIQUE/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatPools": [ + { + "name": "lbNAT1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/lb-GEN-UNIQUE/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50100, + "frontendPortRangeEnd": 50199, + "backendPort": 22 + } + }, + { + "name": "lbNAT2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/lb-GEN-UNIQUE/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50200, + "frontendPortRangeEnd": 50299, + "backendPort": 22 + } + }, + { + "name": "lbNAT3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/lb-GEN-UNIQUE/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50300, + "frontendPortRangeEnd": 50399, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "[concat('myScaleset','-zone', variables('myZones')[copyindex()])]", + "location": "eastus2", + "zones": [ + "(myZones)[copyindex()]" + ], + "dependsOn": [ + "GEN-UNIQUE-vnet", + "lb-GEN-UNIQUE", + "allowRemoting" + ], + "sku": { + "name": "Standard_A2_V2", + "capacity": 2 + }, + "properties": { + "singlePlacementGroup": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "dataDisks": [ + { + "lun": 1, + "createOption": "Empty", + "diskSizeGB": 50 + } + ] + }, + "osProfile": { + "computerNamePrefix": "vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "[base64(variables('myZones')[copyindex()])]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "myNic", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + }, + "primary": true, + "ipConfigurations": [ + { + "name": "myIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/Subnet1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lb-GEN-UNIQUE/lbBE" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), concat(variables('lbNAT'), copyindex(1)))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "AppInstall", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh" + ], + "commandToExecute": "bash automate_nginx.sh" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "[concat('myScaleset','-zone', variables('myZones')[copyindex()])]", + "location": "eastus2", + "zones": [ + "(myZones)[copyindex()]" + ], + "dependsOn": [ + "GEN-UNIQUE-vnet", + "lb-GEN-UNIQUE", + "allowRemoting" + ], + "sku": { + "name": "Standard_A2_V2", + "capacity": 2 + }, + "properties": { + "singlePlacementGroup": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "dataDisks": [ + { + "lun": 1, + "createOption": "Empty", + "diskSizeGB": 50 + } + ] + }, + "osProfile": { + "computerNamePrefix": "vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "[base64(variables('myZones')[copyindex()])]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "myNic", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + }, + "primary": true, + "ipConfigurations": [ + { + "name": "myIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/Subnet1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lb-GEN-UNIQUE/lbBE" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), concat(variables('lbNAT'), copyindex(1)))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "AppInstall", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh" + ], + "commandToExecute": "bash automate_nginx.sh" + } + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1049 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1049 new file mode 100644 index 0000000..df5a1d2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1049 @@ -0,0 +1,505 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962903951, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-linux-lb-zones/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1049", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1049", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the VM, only certain regions support Availability Zones" + }, + "value": "usgovvirginia" + }, + "vmssSku": { + "type": "string", + "defaultValue": "Standard_A2_V2", + "metadata": { + "description": "Size of the scale set." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources and resource-specific information is appended." + }, + "minLength": 3, + "maxLength": 61, + "value": "GEN-UNIQUE" + }, + "numberOfVms": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of VMs to deploy in each VMSS." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "virtualNetworkName": "GEN-UNIQUE-vnet", + "subnetName": "Subnet1", + "networkSecurityGroupName": "allowRemoting", + "publicIPAddressName": "lbPublicIp", + "lbName": "lb-GEN-UNIQUE", + "lbBE": "lbBE", + "lbNAT": "lbNAT", + "myZones": [ + "1", + "2" + ], + "linuxImage": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-vnet", + "location": "usgovvirginia", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "allowRemoting", + "location": "usgovvirginia", + "properties": { + "securityRules": [ + { + "name": "remoteConnection", + "properties": { + "description": "Allow SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "webTraffic", + "properties": { + "description": "Allow web traffic", + "protocol": "Tcp", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "lbPublicIp", + "location": "usgovvirginia", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-11-01", + "name": "lb-GEN-UNIQUE", + "location": "usgovvirginia", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "lbPublicIp" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lbPublicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "lbBE" + } + ], + "loadbalancingRules": [ + { + "name": "lbrule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/lb-GEN-UNIQUE/loadBalancerFrontEnd" + }, + "backendaddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lb-GEN-UNIQUE/lbBE" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/lb-GEN-UNIQUE/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatPools": [ + { + "name": "lbNAT1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/lb-GEN-UNIQUE/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50100, + "frontendPortRangeEnd": 50199, + "backendPort": 22 + } + }, + { + "name": "lbNAT2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/lb-GEN-UNIQUE/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50200, + "frontendPortRangeEnd": 50299, + "backendPort": 22 + } + }, + { + "name": "lbNAT3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/lb-GEN-UNIQUE/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50300, + "frontendPortRangeEnd": 50399, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "[concat('myScaleset','-zone', variables('myZones')[copyindex()])]", + "location": "usgovvirginia", + "zones": [ + "(myZones)[copyindex()]" + ], + "dependsOn": [ + "GEN-UNIQUE-vnet", + "lb-GEN-UNIQUE", + "allowRemoting" + ], + "sku": { + "name": "Standard_A2_V2", + "capacity": 2 + }, + "properties": { + "singlePlacementGroup": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "dataDisks": [ + { + "lun": 1, + "createOption": "Empty", + "diskSizeGB": 50 + } + ] + }, + "osProfile": { + "computerNamePrefix": "vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "[base64(variables('myZones')[copyindex()])]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "myNic", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + }, + "primary": true, + "ipConfigurations": [ + { + "name": "myIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/Subnet1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lb-GEN-UNIQUE/lbBE" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), concat(variables('lbNAT'), copyindex(1)))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "AppInstall", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh" + ], + "commandToExecute": "bash automate_nginx.sh" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "[concat('myScaleset','-zone', variables('myZones')[copyindex()])]", + "location": "usgovvirginia", + "zones": [ + "(myZones)[copyindex()]" + ], + "dependsOn": [ + "GEN-UNIQUE-vnet", + "lb-GEN-UNIQUE", + "allowRemoting" + ], + "sku": { + "name": "Standard_A2_V2", + "capacity": 2 + }, + "properties": { + "singlePlacementGroup": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "dataDisks": [ + { + "lun": 1, + "createOption": "Empty", + "diskSizeGB": 50 + } + ] + }, + "osProfile": { + "computerNamePrefix": "vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "[base64(variables('myZones')[copyindex()])]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "myNic", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + }, + "primary": true, + "ipConfigurations": [ + { + "name": "myIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/Subnet1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lb-GEN-UNIQUE/lbBE" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), concat(variables('lbNAT'), copyindex(1)))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "AppInstall", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh" + ], + "commandToExecute": "bash automate_nginx.sh" + } + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT105 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT105 new file mode 100644 index 0000000..28fa81a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT105 @@ -0,0 +1,319 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/coscale/coscale-dev-env/azuredeploy.json", + "/application-workloads/coscale/coscale-dev-env/azuredeploy.parameters.json" + ], + "timestamp": 1642962886719, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/coscale/coscale-dev-env/azuredeploy.json", + "/application-workloads/coscale/coscale-dev-env/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT105", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT105", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM." + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "Size of the VM." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username of the administrator of the VM." + }, + "value": "GEN-UNIQUE-8" + }, + "coscaleKey": { + "type": "securestring", + "metadata": { + "description": "CoScale registration key. Get it at https://www.coscale.com/azure/" + }, + "value": "Get your key at https://www.coscale.com/azure/" + }, + "coscaleEmail": { + "type": "string", + "metadata": { + "description": "Email for the CoScale Super User." + }, + "value": "user@company.com" + }, + "coscalePassword": { + "type": "securestring", + "metadata": { + "description": "Password for the CoScale Super User." + }, + "value": "secret" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "publicDnsName": "[concat('coscale-', uniquestring(resourceGroup().id))]", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "nicName": "coscaleNic", + "networkSecurityGroupName": "coscaleNSG", + "publicIPAddressName": "coscalePublicIP", + "vmPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkbtWpHEyZYJ+Eyl+jFVUYOH+YBqGAAvyl9oJRzWieJlDp9PucYhbtlXTm7VhlSZvFi7MtcJoxzlQqk1FoNsUPtPyrCtVz8uEHS4FZiuOhb1UFLMayInfXWUWzBt0EEbELlgipRpqGgsi+pn3P07C+8VcBXhAPpMn7Y3qb3txlr7tCCowk8XbXE+MFwfLMXqHavgzIcI++6zECQoFCjb1ktpiAPcP/HkzNDJ2r3tAWyJWOMs1GH3f67corKaKh54LCmQRJS1FAUEnb9da4Xn+Tgx16f42aBF4gY5CEmg2NZ4tvbgE7hXKxJY0TEBTQ1zjUgv92gXOuGcRgu+XM8fut CoScaleAzure", + "virtualNetworkName": "coscaleVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/coscaleVNET/Subnet" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "coscalePublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[variables('publicDnsName')]" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "coscaleVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "coscaleNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "22", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-http", + "properties": { + "priority": 1001, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "80", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-https", + "properties": { + "priority": 1002, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "443", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "coscaleNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//coscalePublicIP", + "Microsoft.Network/virtualNetworks//coscaleVNET", + "Microsoft.Network/networkSecurityGroups//coscaleNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/coscalePublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/coscaleVNET/Subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/coscaleNSG" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//coscaleNic" + ], + "properties": { + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE-8", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkbtWpHEyZYJ+Eyl+jFVUYOH+YBqGAAvyl9oJRzWieJlDp9PucYhbtlXTm7VhlSZvFi7MtcJoxzlQqk1FoNsUPtPyrCtVz8uEHS4FZiuOhb1UFLMayInfXWUWzBt0EEbELlgipRpqGgsi+pn3P07C+8VcBXhAPpMn7Y3qb3txlr7tCCowk8XbXE+MFwfLMXqHavgzIcI++6zECQoFCjb1ktpiAPcP/HkzNDJ2r3tAWyJWOMs1GH3f67corKaKh54LCmQRJS1FAUEnb9da4Xn+Tgx16f42aBF4gY5CEmg2NZ4tvbgE7hXKxJY0TEBTQ1zjUgv92gXOuGcRgu+XM8fut CoScaleAzure" + } + ] + } + } + }, + "hardwareProfile": { + "vmSize": "Standard_D8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-8_DataDisk", + "diskSizeGB": 512, + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/coscaleNic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "GEN-UNIQUE-8-install", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash install.sh ', parameters('coscaleKey'), ' ', parameters('coscaleEmail'), ' ', parameters('coscalePassword'), ' ', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + } + } + ] + } + ], + "outputs": { + "coscaleURL": { + "type": "string", + "value": "[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1050 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1050 new file mode 100644 index 0000000..e751a7a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1050 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-windows/nestedtemplates/base.json" + ], + "timestamp": 1642962903965, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-windows/nestedtemplates/base.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1050", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1050", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "VMSSName": { + "type": "string" + }, + "singlePlacementGroup": { + "type": "bool", + "defaultValue": true + }, + "instanceCount": { + "type": "int" + }, + "subnetId": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "vmSSName", + "location": "location", + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": "instanceCount" + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "vmSSName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nicvmSSName", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfigvmSSName", + "properties": { + "subnet": { + "id": "subnetId" + } + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1051 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1051 new file mode 100644 index 0000000..09b1534 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1051 @@ -0,0 +1,168 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962903976, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/multi-vmss-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/multi-vmss-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1051", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1051", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for all VMs" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for all VMs" + }, + "value": "GEN-PASSWORD" + }, + "numberOfVMSS": { + "type": "int", + "metadata": { + "description": "Number of VMSSes to deploy" + }, + "value": 3 + }, + "singlePlacementGroup": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Documentation here: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-placement-groups" + } + }, + "instanceCountPerVMSS": { + "type": "int", + "maxValue": 1000, + "minValue": 3, + "metadata": { + "description": "Number of VM instances per scale set; if singlePlacementGroup is true (the default), then this value must be 100 or less; if singlePlacementGroup is false, then this value must be 1000 or less" + }, + "value": 3 + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "VMSSPrefix": "vmss-w", + "newVNETName": "vmss-w-vnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "subnet", + "subnetPrefix": "10.0.0.0/16" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vmss-w-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/16" + } + } + ] + } + }, + { + "name": "clusterSetcopyindex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-09-01", + "copy": { + "name": "deploymentLoop", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//vmss-w-vnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/base.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "VMSSName": { + "value": "[concat(variables('VMSSPrefix'), padLeft(copyindex(), 2, '0'))]" + }, + "singlePlacementGroup": { + "value": true + }, + "instanceCount": { + "value": 3 + }, + "subnetId": { + "value": "Microsoft.Network/virtualNetworks/subnets/newVnetName/subnet" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1052 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1052 new file mode 100644 index 0000000..f4a3524 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1052 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903983, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1052", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1052", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "comments": "Storage account used to store VM disks", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "storageAccountResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1053 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1053 new file mode 100644 index 0000000..897ef8f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1053 @@ -0,0 +1,356 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962903992, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/azuredeploy.json", + "/quickstarts/microsoft.compute/ospatching-extension-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1053", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1053", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of vm" + }, + "defaultValue": "Standard_D2_v3", + "value": "Standard_D2_v3" + }, + "username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE-10" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-11" + }, + "rebootAfterPatch": { + "type": "string", + "defaultValue": "Auto", + "metadata": { + "description": "The reboot behavior after patching." + }, + "allowedValues": [ + "RebootIfNeed", + "Required", + "NotRequired", + "Auto" + ], + "value": "NotRequired" + }, + "category": { + "type": "string", + "defaultValue": "ImportantAndRecommended", + "metadata": { + "description": "Type of patches to install." + }, + "allowedValues": [ + "Important", + "ImportantAndRecommended" + ] + }, + "installDuration": { + "type": "string", + "defaultValue": "01:00", + "metadata": { + "description": "The allowed total time for installation." + } + }, + "oneoff": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Patch the OS immediately." + }, + "allowedValues": [ + true, + false + ] + }, + "dayOfWeek": { + "type": "string", + "defaultValue": "Sunday|Wednesday", + "metadata": { + "description": "The patching date (of the week)You can specify multiple days in a week." + } + }, + "startTime": { + "type": "string", + "defaultValue": "03:00", + "metadata": { + "description": "Start time of patching." + } + }, + "idleTestScript": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The uri of the idle test script" + } + }, + "healthyTestScript": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The uri of the healthy test script" + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The name of storage account." + }, + "value": "GET-PREREQ-storageAccountName" + }, + "storageAccountResourceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "ResourceId for Storage account." + }, + "value": "GET-PREREQ-storageAccountResourceId" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "scenarioPrefix": "ospatchingLinux", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "18.04-LTS", + "nicName": "ospatchingLinuxNic", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "ospatchingLinuxSubnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "ospatchingLinuxPublicIp", + "publicIPAddressType": "Dynamic", + "vmName": "ospatchingLinuxVM", + "virtualNetworkName": "ospatchingLinuxVnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/ospatchingLinuxVnet/ospatchingLinuxSubnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-10", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "ospatchingLinuxPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-11" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "ospatchingLinuxVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "ospatchingLinuxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "ospatchingLinuxNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//ospatchingLinuxPublicIp", + "Microsoft.Network/virtualNetworks//ospatchingLinuxVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ospatchingLinuxPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/ospatchingLinuxVnet/ospatchingLinuxSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "ospatchingLinuxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-10", + "Microsoft.Network/networkInterfaces//ospatchingLinuxNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "ospatchingLinuxVM", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "ospatchingLinuxVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ospatchingLinuxNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "ospatchingLinuxVM/installospatching", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//ospatchingLinuxVM" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "OSPatchingForLinux", + "typeHandlerVersion": "2.0", + "settings": { + "disabled": false, + "stop": false, + "rebootAfterPatch": "NotRequired", + "category": "ImportantAndRecommended", + "installDuration": "01:00", + "oneoff": false, + "intervalOfWeeks": "1", + "dayOfWeek": "Sunday|Wednesday", + "startTime": "03:00", + "vmStatusTest": { + "local": false, + "idleTestScript": "", + "healthyTestScript": "" + } + }, + "protectedSettings": { + "storageAccountName": "GET-PREREQ-storageAccountName", + "storageAccountKey": "[listKeys(parameters('storageAccountResourceId'), '2021-04-01').keys[0].value]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1054 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1054 new file mode 100644 index 0000000..591c617 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1054 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/premium-storage-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/premium-storage-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962904000, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/premium-storage-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/premium-storage-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1054", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1054", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, 2016-Datacenter, 2019-Datacenter." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Premium_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyVM", + "virtualNetworkName": "MyVNET", + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "MyVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "MyVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1055 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1055 new file mode 100644 index 0000000..9c250bc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1055 @@ -0,0 +1,62 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/sig-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962904008, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1055", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1055", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "galleryName": { + "type": "string", + "metadata": { + "description": "Name of the Shared Image Gallery." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Shared Image Gallery." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/galleries", + "name": "GEN-UNIQUE", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "description": "My Private Gallery" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1056 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1056 new file mode 100644 index 0000000..93c5727 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1056 @@ -0,0 +1,61 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-definition-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-definition-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904016, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-definition-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-definition-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1056", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1056", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "resources": [ + { + "name": "createGallery", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/Microsoft.Compute/galleries/create/1.0/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "galleryName": { + "value": "[uniqueString(resourceGroup().id)]" + } + } + } + } + ], + "outputs": { + "galleryName": { + "type": "string", + "value": "[reference('createGallery').outputs.galleryName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1057 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1057 new file mode 100644 index 0000000..9166895 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1057 @@ -0,0 +1,87 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-definition-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-definition-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962904024, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-definition-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-definition-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1057", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries/images" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1057", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "galleryName": { + "type": "string", + "metadata": { + "description": "Name of the Shared Image Gallery." + }, + "value": "GET-PREREQ-galleryName" + }, + "galleryImageDefinitionName": { + "type": "string", + "metadata": { + "description": "Name of the Image Definition." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Shared Image Gallery." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/galleries/images", + "name": "GET-PREREQ-galleryName/GEN-UNIQUE", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "description": "Sample Gallery Image Description", + "osType": "Linux", + "osState": "Generalized", + "endOfLifeDate": "2030-01-01", + "identifier": { + "publisher": "myPublisher", + "offer": "myOffer", + "sku": "mySku" + }, + "recommended": { + "vCPUs": { + "min": "1", + "max": "64" + }, + "memory": { + "min": "2048", + "max": "307720" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1058 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1058 new file mode 100644 index 0000000..4524825 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1058 @@ -0,0 +1,165 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-version-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-version-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904032, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-version-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-version-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1058", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries", + "microsoft.compute/images", + "microsoft.compute/disks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1058", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "galleryName": { + "type": "string", + "metadata": { + "description": "Name of the Shared Image Gallery." + }, + "value": "GEN-UNIQUE" + }, + "galleryImageDefinitionName": { + "type": "string", + "metadata": { + "description": "Name of the Image Definition." + }, + "value": "GEN-UNIQUE" + }, + "description": { + "type": "string", + "defaultValue": "Sample Description", + "metadata": { + "description": "The description of this Shared Image Gallery resource." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Shared Image Gallery." + } + } + }, + "variables": { + "managedDiskName": "[concat('manageddisk',uniqueString(resourceGroup().id))]", + "managedImageName": "[concat('managedimage',uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/galleries", + "name": "GEN-UNIQUE", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "description": "Sample Description" + }, + "resources": [ + { + "type": "images", + "name": "GEN-UNIQUE", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/galleries/GEN-UNIQUE" + ], + "properties": { + "description": "Sample Gallery Image Description", + "osType": "Windows", + "osState": "Generalized", + "endOfLifeDate": "2030-01-01", + "identifier": { + "publisher": "myPublisher", + "offer": "myOffer", + "sku": "mySku" + }, + "recommended": { + "vCPUs": { + "min": "1", + "max": "64" + }, + "memory": { + "min": "2048", + "max": "307720" + } + } + } + } + ] + }, + { + "name": "[variables('managedDiskName')]", + "type": "Microsoft.Compute/disks", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "properties": { + "osType": "Windows", + "creationData": { + "createOption": "Empty" + }, + "diskSizeGB": 127 + } + }, + { + "name": "[variables('managedImageName')]", + "type": "Microsoft.Compute/images", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/disks',variables('managedDiskName'))]" + ], + "properties": { + "storageProfile": { + "osDisk": { + "managedDisk": { + "id": "[resourceId('Microsoft.Compute/disks/',variables('managedDiskName'))]" + }, + "osType": "Windows", + "osState": "Generalized" + } + }, + "hyperVGeneration": "V1" + } + } + ], + "outputs": { + "galleryName": { + "type": "string", + "value": "[parameters('galleryName')]" + }, + "galleryImageDefinitionName": { + "type": "string", + "value": "[parameters('galleryImageDefinitionName')]" + }, + "managedImageID": { + "type": "string", + "value": "[resourceId('Microsoft.Compute/images/',variables('managedImageName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1059 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1059 new file mode 100644 index 0000000..b3a5403 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1059 @@ -0,0 +1,112 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-version-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-version-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962904044, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/sig-image-version-create/azuredeploy.json", + "/quickstarts/microsoft.compute/sig-image-version-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1059", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries/images/versions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1059", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingManagedImageID": { + "type": "string", + "metadata": { + "description": "Resource Id of the existing Managed Image" + }, + "value": "GET-PREREQ-managedImageID" + }, + "existingGalleryName": { + "type": "string", + "metadata": { + "description": "Name of the Shared Image Gallery." + }, + "value": "GET-PREREQ-galleryName" + }, + "existingGalleryImageDefinitionName": { + "type": "string", + "metadata": { + "description": "Name of the Image Definition." + }, + "value": "GET-PREREQ-galleryImageDefinitionName" + }, + "galleryImageVersionName": { + "type": "string", + "metadata": { + "description": "Name of the Image Version - should follow ..." + }, + "value": "0.0.1" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Shared Image Gallery." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/galleries/images/versions", + "apiVersion": "2020-09-30", + "name": "GET-PREREQ-galleryName/GET-PREREQ-galleryImageDefinitionName/0.0.1", + "location": "[resourceGroup().location]", + "properties": { + "publishingProfile": { + "replicaCount": 1, + "targetRegions": [ + { + "name": "[resourceGroup().location]" + } + ] + }, + "storageProfile": { + "source": { + "id": "GET-PREREQ-managedImageID" + }, + "osDiskImage": { + "hostCaching": "ReadWrite" + } + } + } + } + ], + "outputs": { + "existingGalleryName": { + "type": "string", + "value": "[parameters('existingGalleryName')]" + }, + "galleryImageVersion": { + "type": "string", + "value": "[parameters('galleryImageVersionName')]" + }, + "existingGalleryImageDefinitionName": { + "type": "string", + "value": "[ parameters('existingGalleryImageDefinitionName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT106 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT106 new file mode 100644 index 0000000..876f130 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT106 @@ -0,0 +1,482 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/couchbase/couchbase/azuredeploy.json", + "/application-workloads/couchbase/couchbase/azuredeploy.parameters.json" + ], + "timestamp": 1642962886743, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/couchbase/couchbase/azuredeploy.json", + "/application-workloads/couchbase/couchbase/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT106", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT106", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/couchbase/couchbase/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "serverNodeCount": { + "type": "int", + "metadata": { + "description": "Number of Couchbase Servers" + }, + "value": 3 + }, + "serverDiskSize": { + "type": "int", + "metadata": { + "description": "Size of Disk in GB for each Couchbase Server" + }, + "value": 32 + }, + "syncGatewayNodeCount": { + "type": "int", + "metadata": { + "description": "Number of Couchbase Sync Gateways" + }, + "value": 2 + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of VM for Coucbase Server and Sync Gateway" + }, + "value": "Standard_D4s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin Username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin Password" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location" + } + }, + "license": { + "type": "string", + "defaultValue": "hourly_pricing", + "metadata": { + "description": "License can be hourly_pricing or byol" + } + } + }, + "variables": { + "uniqueString": "[uniquestring(resourceGroup().id, deployment().name)]" + }, + "resources": [ + { + "apiVersion": "2016-06-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "networksecuritygroups", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ErlangPortMapper", + "properties": { + "description": "Erlang Port Mapper ( epmd )", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4369", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "SyncGateway", + "properties": { + "description": "Sync Gateway", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4984-4985", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "Server", + "properties": { + "description": "Server", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8091-8094", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "Index", + "properties": { + "description": "Index", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9100-9105", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 104, + "direction": "Inbound" + } + }, + { + "name": "Internal", + "properties": { + "description": "Internal", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9998-9999", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + }, + { + "name": "XDCR", + "properties": { + "description": "XDCR", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11207-11215", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 106, + "direction": "Inbound" + } + }, + { + "name": "SSL", + "properties": { + "description": "SSL", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "18091-18093", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 107, + "direction": "Inbound" + } + }, + { + "name": "NodeDataExchange", + "properties": { + "description": "Node data exchange", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21100-21299", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 108, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "vnet", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/networksecuritygroups" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/8" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/16", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networksecuritygroups" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "server", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet" + ], + "plan": { + "publisher": "couchbase", + "product": "couchbase-server-enterprise", + "name": "hourly_pricing" + }, + "sku": { + "name": "Standard_D4s_v3", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "couchbase", + "offer": "couchbase-server-enterprise", + "sku": "hourly_pricing", + "version": "latest" + }, + "dataDisks": [ + { + "lun": 0, + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "caching": "None", + "diskSizeGB": 32 + } + ] + }, + "osProfile": { + "computerNamePrefix": "server", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks//vnet/subnets/subnet" + }, + "publicipaddressconfiguration": { + "name": "public", + "properties": { + "idleTimeoutInMinutes": 30, + "dnsSettings": { + "domainNameLabel": "server-[uniquestring(resourceGroup().id, deployment().name)]" + } + } + } + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/server.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/util.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash server.sh GEN-UNIQUE GEN-PASSWORD [uniquestring(resourceGroup().id, deployment().name)] [resourceGroup().location]" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "syncgateway", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet" + ], + "plan": { + "publisher": "couchbase", + "product": "couchbase-sync-gateway-enterprise", + "name": "hourly_pricing" + }, + "sku": { + "name": "Standard_D4s_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "couchbase", + "offer": "couchbase-sync-gateway-enterprise", + "sku": "hourly_pricing", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "syncgateway", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks//vnet/subnets/subnet" + }, + "publicipaddressconfiguration": { + "name": "public", + "properties": { + "idleTimeoutInMinutes": 30, + "dnsSettings": { + "domainNameLabel": "syncgateway-[uniquestring(resourceGroup().id, deployment().name)]" + } + } + } + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/syncGateway.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/util.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash syncGateway.sh [uniquestring(resourceGroup().id, deployment().name)] [resourceGroup().location]" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "serverAdminURL": { + "type": "string", + "value": "[concat(reference(concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/server/virtualMachines/0/networkInterfaces/nic/ipConfigurations/ipconfig/publicIPAddresses/public'), '2017-03-30').dnsSettings.fqdn, ':8091')]" + }, + "syncGatewayAdminURL": { + "type": "string", + "value": "[concat(reference(concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/syncgateway/virtualMachines/0/networkInterfaces/nic/ipConfigurations/ipconfig/publicIPAddresses/public'), '2017-03-30').dnsSettings.fqdn, ':4985/_admin/')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1060 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1060 new file mode 100644 index 0000000..28afadb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1060 @@ -0,0 +1,109 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/ultra-managed-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/ultra-managed-disk/azuredeploy.parameters.json" + ], + "timestamp": 1642962904058, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/ultra-managed-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/ultra-managed-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1060", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/disks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1060", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "managedDiskName": { + "type": "string", + "defaultValue": "ultraManagedDisk", + "metadata": { + "description": "Name of the managed disk to be copied" + } + }, + "logicalSectorSize": { + "type": "int", + "defaultValue": 4096, + "allowedValues": [ + 512, + 4096 + ], + "metadata": { + "description": "Logical Sector Size. Recommended 4096 unless application requires 512 bytes sector size support" + } + }, + "diskSizeinGiB": { + "type": "int", + "defaultValue": 8, + "minValue": 4, + "maxValue": 65536, + "metadata": { + "description": "Disk size in GiB" + } + }, + "diskIopsReadWrite": { + "type": "int", + "defaultValue": 100, + "minValue": 100, + "maxValue": 160000, + "metadata": { + "description": "Disk IOPS value" + } + }, + "diskMbpsReadWrite": { + "type": "int", + "defaultValue": 10, + "minValue": 1, + "maxValue": 2000, + "metadata": { + "description": "Disk throughput value in MBps" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/disks", + "apiVersion": "2020-09-30", + "name": "ultraManagedDisk", + "location": "[resourceGroup().location]", + "sku": { + "name": "UltraSSD_LRS" + }, + "properties": { + "creationData": { + "createOption": "Empty", + "logicalSectorSize": 4096 + }, + "diskSizeGB": 8, + "diskIOPSReadWrite": 100, + "diskMBpsReadWrite": "diskMBpsReadWrite" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1061 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1061 new file mode 100644 index 0000000..42d6a04 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1061 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-automatic-static-ip/nested/update-nic.json" + ], + "timestamp": 1642962904066, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-automatic-static-ip/nested/update-nic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1061", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1061", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicName": { + "type": "string" + }, + "subnetRef": { + "type": "string" + }, + "privateIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicName", + "apiVersion": "2020-05-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "privateIp", + "subnet": { + "id": "subnetRef" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1062 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1062 new file mode 100644 index 0000000..78aacae --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1062 @@ -0,0 +1,260 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-automatic-static-ip/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-automatic-static-ip/azuredeploy.parameters.json" + ], + "timestamp": 1642962904077, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-automatic-static-ip/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-automatic-static-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1062", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1062", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "User name for the VM." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access baseURL. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of the virtual machine" + } + } + }, + "variables": { + "vmName": "myVM", + "nicName": "myVM-nic", + "virtualNetworkName": "vnet-myVnet", + "subnetName": "default", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-myVnet/default", + "updateip_templateUri": "[uri(parameters('_artifactsLocation'), concat('nested/update-nic.json', parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "TCP", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-myVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVM-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "vnet-myVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "SubnetRef" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "updateIp" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "myVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVM-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "updateIp", + "apiVersion": "2020-06-01", + "dependsOn": [ + "myVM-nic" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/update-nic.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "nicName": { + "value": "myVM-nic" + }, + "SubnetRef": { + "value": "SubnetRef" + }, + "privateIp": { + "value": "[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": { + "privateIp": { + "type": "string", + "value": "[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1064 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1064 new file mode 100644 index 0000000..c415e65 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1064 @@ -0,0 +1,346 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-copy-managed-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-copy-managed-disks/azuredeploy.parameters.json" + ], + "timestamp": 1642962904099, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-copy-managed-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-copy-managed-disks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1064", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1064", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "7771934683964288796" + } + }, + "parameters": { + "virtualMachineAdminUserName": { + "type": "string", + "metadata": { + "description": "Administrator Username for the local admin account" + }, + "value": "azadmin" + }, + "virtualMachineAdminPassword": { + "type": "secureString", + "metadata": { + "description": "Administrator password for the local admin account" + }, + "value": "GEN-PASSWORD" + }, + "virtualMachineNamePrefix": { + "type": "string", + "defaultValue": "MyVM0", + "maxLength": 15, + "metadata": { + "description": "Name of the virtual machine to be created" + }, + "value": "MyVM0" + }, + "virtualMachineCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of virtual machines to be created" + }, + "value": 3 + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_DS2_v2", + "metadata": { + "description": "Virtual Machine Size" + }, + "value": "Standard_D2s_v3" + }, + "operatingSystem": { + "type": "string", + "defaultValue": "Server2019", + "allowedValues": [ + "Server2012R2", + "Server2016", + "Server2019" + ], + "metadata": { + "description": "Operating System of the Server" + }, + "value": "Server2019" + }, + "availabilitySetName": { + "type": "string", + "defaultValue": "MyAvailabilitySet", + "metadata": { + "description": "Availability Set Name where the VM will be placed" + }, + "value": "MyAvailabilitySet" + }, + "dnsPrefixForPublicIP": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "maxLength": 14, + "minLength": 2, + "metadata": { + "description": "Globally unique DNS prefix for the Public IPs used to access the Virtual Machines" + }, + "value": "GEN-UNIQUE-12" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "myVNETName": "myVNET", + "myVNETPrefix": "10.0.0.0/16", + "myVNETSubnet1Name": "Subnet1", + "myVNETSubnet1Prefix": "10.0.0.0/24", + "diagnosticStorageAccountName": "[format('diagst{0}', uniqueString(resourceGroup().id))]", + "operatingSystemValues": { + "Server2012R2": { + "PublisherValue": "MicrosoftWindowsServer", + "OfferValue": "WindowsServer", + "SkuValue": "2012-R2-Datacenter" + }, + "Server2016": { + "PublisherValue": "MicrosoftWindowsServer", + "OfferValue": "WindowsServer", + "SkuValue": "2016-Datacenter" + }, + "Server2019": { + "PublisherValue": "MicrosoftWindowsServer", + "OfferValue": "WindowsServer", + "SkuValue": "2019-Datacenter" + } + }, + "availabilitySetPlatformFaultDomainCount": 2, + "availabilitySetPlatformUpdateDomainCount": 5, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "myVNET", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "myVNET" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('diagst{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "tags": { + "displayName": "diagnosticStorageAccount" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2020-06-01", + "name": "MyAvailabilitySet", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + }, + "sku": { + "name": "Aligned" + } + }, + { + "copy": { + "name": "virtualMachines", + "count": 43 + }, + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "[format('{0}{1}', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[copyIndex()], 1))]", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "(operatingSystemValues)[parameters(operatingSystem)].PublisherValue", + "offer": "(operatingSystemValues)[parameters(operatingSystem)].OfferValue", + "sku": "(operatingSystemValues)[parameters(operatingSystem)].SkuValue", + "version": "latest" + }, + "osDisk": { + "name": "[format('{0}{1}', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[copyIndex()], 1))]", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "caching": "ReadWrite" + } + }, + "osProfile": { + "computerName": "[format('{0}{1}', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[copyIndex()], 1))]", + "adminUsername": "azadmin", + "windowsConfiguration": { + "provisionVMAgent": true + }, + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', format('{0}{1}-NIC1', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[range(0, parameters('virtualMachineCount'))[copyIndex()]], 1)))]" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/MyAvailabilitySet" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticStorageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "dependsOn": [ + "Microsoft.Compute/availabilitySets/MyAvailabilitySet", + "[resourceId('Microsoft.Network/networkInterfaces', format('{0}{1}-NIC1', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[range(0, parameters('virtualMachineCount'))[copyIndex()]], 1)))]", + "Microsoft.Storage/storageAccounts/[format('diagst{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "copy": { + "name": "networkInterfaces", + "count": 43 + }, + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "[format('{0}{1}-NIC1', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[copyIndex()], 1))]", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}-PIP1', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[range(0, parameters('virtualMachineCount'))[copyIndex()]], 1)))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet1" + } + } + } + ], + "enableIPForwarding": false + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}-PIP1', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[range(0, parameters('virtualMachineCount'))[copyIndex()]], 1)))]", + "Microsoft.Network/virtualNetworks/myVNET" + ] + }, + { + "copy": { + "name": "publicIPAddresses", + "count": 43 + }, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "[format('{0}{1}-PIP1', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[copyIndex()], 1))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[format('{0}{1}-PIP1', parameters('virtualMachineNamePrefix'), add(range(0, parameters('virtualMachineCount'))[copyIndex()], 1))]" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[format('{0}{1}', parameters('dnsPrefixForPublicIP'), add(range(0, parameters('virtualMachineCount'))[copyIndex()], 1))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1065 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1065 new file mode 100644 index 0000000..060df08 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1065 @@ -0,0 +1,110 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/nestedtemplates/customScriptExtension.json" + ], + "timestamp": 1642962904109, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/nestedtemplates/customScriptExtension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1065", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1065", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "metadata": { + "description": "The Location For the resources" + }, + "type": "string" + }, + "extensionName": { + "type": "string", + "metadata": { + "description": "name of the extension" + } + }, + "vmName": { + "metadata": { + "description": "The name of the vm" + }, + "type": "string" + }, + "fileUris": { + "type": "array" + }, + "commandToExecute": { + "type": "string" + }, + "isWindowsOS": { + "type": "bool" + } + }, + "variables": { + "extensionNameWindows": "extensionName-windows", + "extensionNameLinux": "extensionName-linux" + }, + "resources": [ + { + "condition": "isWindowsOS", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "vmName/extensionName-windows", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "fileUris", + "commandToExecute": "commandToExecute" + } + } + }, + { + "condition": "[not(parameters('isWindowsOS'))]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2017-03-30", + "name": "vmName/extensionName-linux", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "fileUris" + }, + "protectedSettings": { + "commandToExecute": "commandToExecute" + } + } + } + ], + "outputs": { + "instanceView": { + "value": "[reference(if(parameters('isWindowsOS'), resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionNameWindows')), resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionNameLinux')))).instanceView]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1066 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1066 new file mode 100644 index 0000000..7c8240b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1066 @@ -0,0 +1,224 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/nestedtemplates/vm.json" + ], + "timestamp": 1642962904115, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/nestedtemplates/vm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1066", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1066", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "metadata": { + "description": "The Location For the resources" + }, + "type": "string" + }, + "adminPasswordOrKey": { + "metadata": { + "description": "OS Admin password or SSH Key depending on value of authentication type" + }, + "type": "securestring" + }, + "adminUsername": { + "metadata": { + "description": "Username for the Virtual Machine." + }, + "type": "string" + }, + "authenticationType": { + "allowedValues": [ + "password", + "sshPublicKey" + ], + "defaultValue": "password", + "metadata": { + "description": "Authentication type" + }, + "type": "string" + }, + "nsgId": { + "defaultValue": null, + "metadata": { + "description": "The nsg id for the VM" + }, + "type": "string" + }, + "operatingSystem": { + "type": "string", + "metadata": { + "description": "OS for the VM, this is the offer and SKU concatenated with underscores and then mapped to a variable" + } + }, + "storageAccountId": { + "defaultValue": "", + "metadata": { + "description": "The storage account Id for boot diagnostics for the VMs" + }, + "type": "string" + }, + "subnetRef": { + "type": "string" + }, + "vmSize": { + "defaultValue": "Standard_DS2_V3", + "metadata": { + "description": "The size of the VM to create" + }, + "type": "string" + }, + "vmName": { + "metadata": { + "description": "The name of the vm" + }, + "type": "string" + } + }, + "variables": { + "isWindowsOS": "[bool(contains(toLower(variables('imageReference')[parameters('operatingSystem')].offer), 'windows'))]", + "imageReference": { + "UbuntuServer_16.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "UbuntuServer_18.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "WindowsServer_2016-DataCenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "windowsConfiguration": { + "provisionVmAgent": "true" + }, + "publicIPAddressName": "publicIp", + "nicName": "nic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + }, + "enableBootDiags": "[not(equals(parameters('storageAccountId'), ''))]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "publicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2018-07-01", + "name": "nic", + "location": "location", + "dependsOn": [ + "publicIp" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + }, + "subnet": { + "id": "subnetRef" + } + } + } + ], + "networkSecurityGroup": { + "id": null + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "name": "vmName", + "location": "location", + "dependsOn": [ + "nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_DS2_V3" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]", + "windowsConfiguration": "[if(variables('isWindowsOS'), variables('windowsConfiguration'), json('null'))]" + }, + "storageProfile": { + "imageReference": "(imageReference)[parameters(operatingSystem)]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": "[not(equals(parameters('storageAccountId'), ''))]", + "storageUri": "[if(variables('enableBootDiags'), reference(parameters('storageAccountId'), '2018-02-01').primaryEndpoints.blob, json('null'))]" + } + } + } + } + ], + "outputs": { + "publicIpId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIPAddressName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1067 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1067 new file mode 100644 index 0000000..14548c9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1067 @@ -0,0 +1,308 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-custom-script-output/azuredeploy.parameters.json" + ], + "timestamp": 1642962904123, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-output/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-custom-script-output/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1067", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1067", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Authentication type" + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "OS Admin password or SSH Key depending on value of authentication type" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "metadata": { + "description": "The Location For the resources" + }, + "defaultValue": "[resourceGroup().location]" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the VM to create" + }, + "defaultValue": "Standard_D2s_v3" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + }, + "defaultValue": "" + }, + "operatingSystem": { + "type": "string", + "defaultValue": "UbuntuServer_18.04-LTS", + "metadata": { + "description": "Operating system to use for the virtual machine." + }, + "allowedValues": [ + "UbuntuServer_18.04-LTS", + "UbuntuServer_16.04-LTS", + "WindowsServer_2016-DataCenter" + ] + } + }, + "variables": { + "isWindowsOs": "[contains(toLower(parameters('operatingSystem')), 'windows')]", + "script1Command": "[if(variables('isWindowsOs'), 'powershell -ExecutionPolicy Unrestricted -File .\\script-1.ps1 ', './script-1.sh ')]", + "script2Command": "[if(variables('isWindowsOs'), 'powershell -ExecutionPolicy Unrestricted -File .\\script-2.ps1 ', './script-2.sh ')]", + "script1File": "[if(variables('isWindowsOs'), 'script-1.ps1', 'script-1.sh')]", + "script2File": "[if(variables('isWindowsOs'), 'script-2.ps1', 'script-2.sh')]", + "vmName": "vm", + "storageAccountName": "[concat(variables('vmName'),uniquestring(resourceGroup().id))]", + "networkSecurityGroupName": "nsg", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "vnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet", + "createVMUrl": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm.json', parameters('_artifactsLocationSasToken')))]", + "extensionUrl": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "Location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2018-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "Location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "nsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2018-07-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-remote-access", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "[if(contains(toLower(parameters('operatingSystem')), 'windows'), 3389, 22)]", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "creatingVM", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-05-01", + "dependsOn": [ + "[variables('virtualNetworkName')]", + "[variables('storageAccountName')]", + "[variables('networkSecurityGroupName')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "operatingSystem": { + "value": "UbuntuServer_18.04-LTS" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "nsgId": { + "value": "Microsoft.Network/networkSecurityGroups/nsg" + }, + "storageAccountId": { + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "subnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "vmName": { + "value": "vm" + } + } + } + }, + { + "name": "firstExtensionRun", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-05-01", + "dependsOn": [ + "creatingVM" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "extensionName": { + "value": "cse" + }, + "vmName": { + "value": "vm" + }, + "fileUris": { + "value": [ + "[uri(parameters('_artifactsLocation'), concat(variables('script1File'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "commandToExecute": { + "value": "[if(variables('isWindowsOs'), 'powershell -ExecutionPolicy Unrestricted -File .\\script-1.ps1 ', './script-1.sh ')]" + }, + "isWindowsOS": { + "value": "[contains(toLower(parameters('operatingSystem')), 'windows')]" + } + } + } + }, + { + "name": "secondExtensionRun", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-05-01", + "dependsOn": [ + "firstExtensionRun" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "extensionName": { + "value": "cse" + }, + "vmName": { + "value": "vm" + }, + "fileUris": { + "value": [ + "[uri(parameters('_artifactsLocation'), concat(variables('script2File'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "commandToExecute": { + "value": "[concat(variables('script2Command'), '\"', split(string(if(variables('isWindowsOs'), reference('firstExtensionRun').outputs.instanceView.value.substatuses[0].message, reference('firstExtensionRun').outputs.instanceView.value.statuses[0].message)), '#DATA#')[1], '\"')]" + }, + "isWindowsOS": { + "value": "[contains(toLower(parameters('operatingSystem')), 'windows')]" + } + } + } + } + ], + "outputs": { + "sample": { + "type": "object", + "value": "[reference('firstExtensionRun').outputs.instanceView.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1068 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1068 new file mode 100644 index 0000000..900b25e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1068 @@ -0,0 +1,262 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-custom-script-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962904130, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-custom-script-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-custom-script-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1068", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1068", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Default VM Size" + } + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "DNS name for the public IP" + }, + "value": "GEN-UNIQUE-8" + } + }, + "variables": { + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "vmName": "MyVM", + "virtualNetworkName": "MyVNET", + "publicIPAddressName": "myPublicIP", + "scriptFolder": "scripts", + "scriptFileName": "Copy-FileFromAzure.ps1", + "fileToBeCopied": "FileToBeCopied.txt", + "scriptParameters": "[concat('-artifactsLocation ', replace(parameters('_artifactsLocation'),parameters('_artifactsLocationSasToken'),''), ' -artifactsLocationSasToken \"', parameters('_artifactsLocationSasToken'), '\" -folderName ', variables('scriptFolder'), ' -fileToInstall ', variables('fileToBeCopied'))]", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myPublicIP", + "MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MyVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "CustomScriptExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "MyVM" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptFolder'),'/',variables('scriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File ', variables('scriptFolder'), '/', variables('scriptFileName'), ' ', variables('scriptParameters'))]" + } + } + } + ] + } + ], + "outputs": { + "vm-fqdn": { + "type": "string", + "value": "[reference(variables('publicIPAddressName'), '2020-07-01').dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1069 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1069 new file mode 100644 index 0000000..f34f3e2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1069 @@ -0,0 +1,282 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-customdata/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-customdata/azuredeploy.parameters.json" + ], + "timestamp": 1642962904137, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-customdata/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-customdata/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1069", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1069", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "customData": { + "type": "string", + "defaultValue": "echo customData", + "metadata": { + "description": "String passed down to the Virtual Machine." + }, + "value": "echo customData" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "14.04-LTS", + "16.04-LTS", + "18.04-LTS", + "20.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 14.04-LTS,16.04-LTS,18.04-LTS,20.04-LTS." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sacustmdata')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "networkInterface1", + "vmName": "vm1", + "virtualNetworkName": "virtualNetwork1", + "publicIPAddressName": "publicIp1", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "storageAccountType": "Standard_LRS", + "apiVersion": "2015-06-15", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "networkInterface1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIp1", + "Microsoft.Network/virtualNetworks//virtualNetwork1" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "vm1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "vm1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "[base64(parameters('customData'))]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkInterface1" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), variables('apiVersion')).primaryEndpoints['blob']]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT107 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT107 new file mode 100644 index 0000000..5688790 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT107 @@ -0,0 +1,322 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/datascience/vm-ubuntu-DSVM-GPU-or-CPU/azuredeploy.json", + "/application-workloads/datascience/vm-ubuntu-DSVM-GPU-or-CPU/azuredeploy.parameters.json" + ], + "timestamp": 1642962886759, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/datascience/vm-ubuntu-DSVM-GPU-or-CPU/azuredeploy.json", + "/application-workloads/datascience/vm-ubuntu-DSVM-GPU-or-CPU/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT107", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT107", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for Administrator Account" + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "defaultValue": "vmName", + "metadata": { + "description": "The name of you Virtual Machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "cpu-gpu": { + "type": "string", + "defaultValue": "CPU-4GB", + "allowedValues": [ + "CPU-4GB", + "CPU-7GB", + "CPU-8GB", + "CPU-14GB", + "CPU-16GB", + "GPU-56GB" + ], + "metadata": { + "description": "Choose between CPU or GPU processing" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "SecGroupNet", + "metadata": { + "description": "Name of the Network Security Group" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "networkInterfaceName": "vmNameNetInt", + "virtualMachineName": "vmName", + "publicIpAddressName": "vmNamePublicIP", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/subnet", + "nsgId": "Microsoft.Network/networkSecurityGroups/SecGroupNet", + "osDiskType": "StandardSSD_LRS", + "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "storageAccountKind": "Storage", + "vmSize": { + "CPU-4GB": "Standard_B2s", + "CPU-7GB": "Standard_D2s_v3", + "CPU-8GB": "Standard_D2s_v3", + "CPU-14GB": "Standard_D4s_v3", + "CPU-16GB": "Standard_D4s_v3", + "GPU-56GB": "Standard_NC6_Promo" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "name": "vmNameNetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//SecGroupNet", + "Microsoft.Network/virtualNetworks//vNet", + "Microsoft.Network/publicIpAddresses//vmNamePublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/vmNamePublicIP" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecGroupNet" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "SecGroupNet", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "JupyterHub", + "properties": { + "priority": 1010, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "8000" + } + }, + { + "name": "RStudioServer", + "properties": { + "priority": 1020, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "8787" + } + }, + { + "name": "SSH", + "properties": { + "priority": 1030, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/24" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-05-01", + "name": "vmNamePublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "properties": { + "publicIpAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "vmName-Cpu-Gpu", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "(vmSize)[parameters(Cpu-Gpu)]" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "microsoft-dsvm", + "offer": "ubuntu-1804", + "sku": "1804-gen2", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmNameNetInt" + } + ] + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + } + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1070 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1070 new file mode 100644 index 0000000..b2ba93f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1070 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-dedicated-hosts/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-dedicated-hosts/azuredeploy.parameters.json" + ], + "timestamp": 1642962904147, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-dedicated-hosts/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-dedicated-hosts/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1070", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/hostgroups/hosts", + "microsoft.compute/hostgroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1070", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "numberOfZoness": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "How many Zone to use. Use 0 for non zonal deployment." + } + }, + "numberofHostsPerZone": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "How many hosts to create per zone." + } + }, + "numberOfFDs": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "How many fault domains to use. " + } + }, + "dhgNamePrefix": { + "type": "string", + "defaultValue": "myHostGroup", + "metadata": { + "description": "Name (prefix) for your host group." + } + }, + "dhNamePrefix": { + "type": "string", + "defaultValue": "myHost", + "metadata": { + "description": "Name (prefix) for your host ." + } + }, + "dhSKU": { + "type": "string", + "defaultValue": "DSv3-Type1", + "metadata": { + "description": "The type (family and generation) for your host ." + } + } + }, + "variables": { + "numberOfHosts": "[if(equals(parameters('numberOfZoness'), 0), parameters('numberofHostsPerZone'), mul(parameters('numberOfZoness'), parameters('numberofHostsPerZone')))]" + }, + "resources": [ + { + "name": "myHostGroupcopyIndex()", + "type": "Microsoft.Compute/HostGroups", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "zones": "[if(equals(parameters('numberOfZoness'), 0), json('null'),array(copyindex(1)))]", + "copy": { + "name": "myHostGroup", + "count": "[if(equals(parameters('numberOfZoness'), 0), 1, parameters('numberOfZoness'))]" + }, + "properties": { + "platformFaultDomainCount": 2 + } + }, + { + "name": "[concat(parameters('dhgNamePrefix'),div(copyindex(), parameters('numberofHostsPerZone')),'/', parameters('dhNamePrefix'),div(copyindex(), parameters('numberofHostsPerZone')),mod(copyindex(), parameters('numberofHostsPerZone')))]", + "type": "Microsoft.Compute/Hostgroups/hosts", + "apiVersion": "2018-10-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/hostGroups',parameters('dhgNamePrefix'), copyindex(2))]" + ], + "sku": { + "name": "DSv3-Type1" + }, + "copy": { + "name": "myHostGroup", + "count": "[if(equals(parameters('numberOfZoness'), 0), parameters('numberofHostsPerZone'), mul(parameters('numberOfZoness'), parameters('numberofHostsPerZone')))]" + }, + "properties": { + "platformFaultDomain": "[mod(copyindex(), parameters('numberOfFDs'))]" + } + } + ], + "outputs": { + "hostCount": { + "type": "int", + "value": "[variables('numberOfHosts')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1071 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1071 new file mode 100644 index 0000000..89e6fe1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1071 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-different-rg-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-different-rg-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904156, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-different-rg-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-different-rg-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1071", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1071", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingVirtualNetworkName": "existing-vnet", + "existingSubnetName": "existing-subnet-1" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "existing-vnet", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "existing-subnet-1", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "virtualNetworkName": { + "type": "string", + "value": "[variables('existingVirtualNetworkName')]" + }, + "virtualNetworkResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "subnet1Name": { + "type": "string", + "value": "[variables('existingSubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1072 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1072 new file mode 100644 index 0000000..d556a56 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1072 @@ -0,0 +1,285 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-different-rg-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-different-rg-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962904165, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-different-rg-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-different-rg-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1072", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.storage/storageaccounts", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1072", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of new storage account" + }, + "value": "GEN-UNIQUE" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "metadata": { + "description": "Type of storage account" + } + }, + "publicIPName": { + "type": "string", + "metadata": { + "description": "Name of Public IP" + }, + "value": "GEN-UNIQUE" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic" + ], + "metadata": { + "description": "Type of Public Address" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM" + }, + "value": "GEN-UNIQUE-10" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of the VM" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "14.04.5-LTS", + "16.04-LTS", + "18.04-LTS" + ], + "metadata": { + "description": "Image SKU" + }, + "value": "18.04-LTS" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "VM Admin Username" + }, + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "VNET Name" + }, + "value": "GET-PREREQ-virtualNetworkName" + }, + "virtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group VNET is deployed in" + }, + "value": "GET-PREREQ-virtualNetworkResourceGroup" + }, + "subnet1Name": { + "type": "string", + "metadata": { + "description": "Name of the subnet inside the VNET" + }, + "value": "GET-PREREQ-subnet1Name" + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Network Interface Name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "GET-PREREQ-virtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-subnet1Name" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//GEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-10_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', toLower(parameters('newStorageAccountName')))).primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1073 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1073 new file mode 100644 index 0000000..cf2f5c3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1073 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904176, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1073", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1073", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "quickstarts" + }, + "adminPassword": { + "type": "secureString" + }, + "domainName": { + "type": "string", + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "value": "GEN-UNIQUE" + } + }, + "variables": { + "adUsername": "quickstarts" + }, + "resources": [ + { + "name": "createADController", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/active-directory-new-domain/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "quickstarts" + }, + "adminPassword": { + "value": "adminPassword" + }, + "domainName": { + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + } + } + } + } + ], + "outputs": { + "domainName": { + "type": "string", + "value": "[reference('createADController').outputs.domainName.value]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkName.value]" + }, + "subnetName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubnetName.value]" + }, + "adUsername": { + "type": "string", + "value": "[variables('adUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1074 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1074 new file mode 100644 index 0000000..d3fd965 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1074 @@ -0,0 +1,287 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join/azuredeploy.parameters.json" + ], + "timestamp": 1642962904184, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1074", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1074", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "9170108035308691982" + } + }, + "parameters": { + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_D2s_v3" + }, + "existingVnetName": { + "type": "string", + "metadata": { + "description": "Existing VNET that contains the domain controller" + }, + "value": "GET-PREREQ-virtualNetworkName" + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "[format('{0}-pip', parameters('dnsLabelPrefix'))]", + "metadata": { + "description": "Public IP address name" + }, + "value": "GEN-UNIQUE" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Existing subnet that contains the domain controller" + }, + "value": "GET-PREREQ-subnetName" + }, + "dnsLabelPrefix": { + "type": "string", + "maxLength": 62, + "minLength": 1, + "metadata": { + "description": "Unique public DNS prefix for the deployment. The fqdn will look something like '.westus.cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'." + }, + "value": "GEN-UNIQUE-10" + }, + "domainToJoin": { + "type": "string", + "metadata": { + "description": "The FQDN of the AD domain" + }, + "value": "GET-PREREQ-domainName" + }, + "domainUsername": { + "type": "string", + "metadata": { + "description": "Username of the account on the domain" + }, + "value": "GET-PREREQ-adUsername" + }, + "domainPassword": { + "type": "secureString", + "metadata": { + "description": "Password of the account on the domain" + } + }, + "ouPath": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Organizational Unit path in which the nodes and cluster will be present." + } + }, + "domainJoinOptions": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Set of bit flags that define the join options. Default value of 3 is a combination of NETSETUP_JOIN_DOMAIN (0x00000001) & NETSETUP_ACCT_CREATE (0x00000002) i.e. will join the domain and create the account on the domain. For more information see https://msdn.microsoft.com/en-us/library/aa392154(v=vs.85).aspx" + }, + "value": 3 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "The password for the administrator account of the new VM." + }, + "value": "GEN-PASSWORD" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id, deployment().name)]", + "metadata": { + "description": "The name of the storage account." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "windowsOSVersion": "2019-Datacenter", + "nicName": "[format('{0}-nic', parameters('dnsLabelPrefix'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-02-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-02-01", + "name": "[format('{0}-nic', parameters('dnsLabelPrefix'))]", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-subnetName" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-03-01", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[format('{0}-OsDisk', parameters('dnsLabelPrefix'))]", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "[format('{0}-DataDisk', parameters('dnsLabelPrefix'))]", + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024, + "lun": 0 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[format('{0}-nic', parameters('dnsLabelPrefix'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[format('{0}-nic', parameters('dnsLabelPrefix'))]", + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-03-01", + "name": "[format('{0}/{1}', parameters('dnsLabelPrefix'), 'joindomain')]", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "name": "GET-PREREQ-domainName", + "ouPath": "", + "user": "[format('{0}\\{1}', parameters('domainToJoin'), parameters('domainUsername'))]", + "restart": true, + "options": 3 + }, + "protectedSettings": { + "Password": "domainPassword" + } + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1075 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1075 new file mode 100644 index 0000000..20b48ae --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1075 @@ -0,0 +1,846 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join-existing/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join-existing/azuredeploy.parameters.json" + ], + "timestamp": 1642962904194, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-domain-join-existing/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-domain-join-existing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1075", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1075", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmList": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "List of virtual machines to be domain joined, if using multiple VMs, make their names comma separate. E.g. VM01, VM02, VM03." + }, + "value": "client01,client02" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location name of the virtual machine" + }, + "defaultValue": "[resourceGroup().location]", + "value": "southcentralus" + }, + "domainJoinUserName": { + "type": "string", + "metadata": { + "description": "Domain NetBiosName plus User name of a domain user with sufficient rights to perfom domain join operation. E.g. domain\\username" + }, + "value": "contoso\\username" + }, + "domainJoinUserPassword": { + "type": "securestring", + "metadata": { + "description": "Domain user password" + }, + "value": "GEN-PASSWORD" + }, + "domainFQDN": { + "type": "string", + "metadata": { + "description": "Domain FQDN where the virtual machine will be joined" + }, + "value": "contoso.com" + }, + "ouPath": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies an organizational unit (OU) for the domain account. Enter the full distinguished name of the OU in quotation marks. Example: \"OU=testOU; DC=domain; DC=Domain; DC=com\"" + } + } + }, + "variables": { + "domainJoinOptions": 3, + "vmListArray": "[split(parameters('vmList'),',')]" + }, + "resources": [ + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + }, + { + "comments": "Join domain - JsonADDomainExtension", + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(trim(variables('vmListArray')[copyIndex()]),'/joindomain')]", + "location": "southcentralus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "Name": "contoso.com", + "User": "contoso\\username", + "Restart": "true", + "Options": 3, + "OUPath": "" + }, + "protectedSettings": { + "Password": "GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1076 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1076 new file mode 100644 index 0000000..7621404 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1076 @@ -0,0 +1,295 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-dynamic-data-disks-selection/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-dynamic-data-disks-selection/azuredeploy.parameters.json" + ], + "timestamp": 1642962904205, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-dynamic-data-disks-selection/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-dynamic-data-disks-selection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1076", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1076", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[concat('vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2008-R2-SP1-smalldisk", + "2008-R2-SP1-zhcn", + "2012-Datacenter", + "2012-datacenter-gensecond", + "2012-Datacenter-smalldisk", + "2012-Datacenter-zhcn", + "2012-R2-Datacenter", + "2012-r2-datacenter-gensecond", + "2012-R2-Datacenter-smalldisk", + "2012-R2-Datacenter-zhcn", + "2016-Datacenter", + "2016-datacenter-gensecond", + "2016-Datacenter-Server-Core", + "2016-Datacenter-Server-Core-smalldisk", + "2016-Datacenter-smalldisk", + "2016-Datacenter-with-Containers", + "2016-Datacenter-with-RDSH", + "2016-Datacenter-zhcn", + "2019-Datacenter", + "2019-Datacenter-Core", + "2019-Datacenter-Core-smalldisk", + "2019-Datacenter-Core-with-Containers", + "2019-Datacenter-Core-with-Containers-smalldisk", + "2019-datacenter-gensecond", + "2019-Datacenter-smalldisk", + "2019-Datacenter-with-Containers", + "2019-Datacenter-with-Containers-smalldisk", + "2019-Datacenter-zhcn" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM Size, note the VM Size determnines the max number of disks available, use 'az vm list-sizes' or 'Get-AzVmSize' for details." + } + }, + "numberOfVms": { + "type": "int", + "defaultValue": 2, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "The number of VMs to create." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 4, + "minValue": 1, + "maxValue": 64, + "metadata": { + "description": "This parameter allows the user to select the number of disks they want" + } + }, + "sizeOfDataDisksInGB": { + "type": "int", + "defaultValue": 100, + "minValue": 16, + "maxValue": 4096, + "metadata": { + "description": "Size of the data disks" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat('diags', uniquestring(resourceGroup().id))]", + "nicName": "dynamicDisksVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "dynamicDisksPublicIP", + "vmName": "dynamicDisksVM", + "virtualNetworkName": "dynamicDisksVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/dynamicDisksVNET/Subnet" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-06-01", + "name": "dynamicDisksPublicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "ipLoop", + "count": 2 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('vm-', uniqueString(resourceGroup().id))]copyIndex()" + } + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "dynamicDisksVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "dynamicDisksVMNiccopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "ipLoop", + "dynamicDisksVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dynamicDisksPublicIPcopyIndex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/dynamicDisksVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-03-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "dynamicDisksVMcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": 2 + }, + "dependsOn": [ + "[variables('storageAccountName')]", + "nicLoop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "dynamicDisksVMcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "dynamicDisksVMcopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": 4, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 100, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(variables('vmName'), '-datadisk',copyIndex(), copyIndex('dataDisks'))]", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dynamicDisksVMNiccopyIndex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName')).primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1077 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1077 new file mode 100644 index 0000000..60db43c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1077 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-efficientip-vhd/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-efficientip-vhd/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904212, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-efficientip-vhd/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-efficientip-vhd/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1077", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1077", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingVirtualNetworkName": "vnet", + "existingSubnetName": "subnet-1", + "existingSGN": "NSG" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "NSG", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "securityRules": [ + { + "name": "rule1", + "properties": { + "protocol": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "destinationPortRange": "80", + "sourcePortRange": "*", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + } + ], + "outputs": { + "existingVnetName": { + "type": "string", + "value": "[variables('existingVirtualNetworkName')]" + }, + "existingVnetRG": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "subnetName": { + "type": "string", + "value": "[variables('existingSubnetName')]" + }, + "existingSecurityGroupName": { + "type": "string", + "value": "[variables('existingSGN')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1078 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1078 new file mode 100644 index 0000000..7d93afc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1078 @@ -0,0 +1,247 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-efficientip-vhd/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-efficientip-vhd/azuredeploy.parameters.json" + ], + "timestamp": 1642962904221, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-efficientip-vhd/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-efficientip-vhd/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1078", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/disks", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1078", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM" + }, + "value": "GEN-UNIQUE-8" + }, + "osType": { + "type": "string", + "defaultValue": "Linux", + "allowedValues": [ + "Linux" + ], + "metadata": { + "description": "Type of OS on the existing vhd" + } + }, + "osDiskVhdUri": { + "type": "string", + "metadata": { + "description": "URI of the existing VHD in ARM standard or premium storage" + }, + "value": "GEN-SPECIALIZED-WINVHD-URI" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of the VM" + } + }, + "vmDiskSizeGB": { + "type": "string", + "defaultValue": "150", + "allowedValues": [ + "150", + "300" + ], + "metadata": { + "description": "Diskspace size of the VM" + } + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "GET-PREREQ-existingVnetRG" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET" + }, + "value": "GET-PREREQ-existingVnetName" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet in the virtual network you want to use" + }, + "value": "GET-PREREQ-subnetName" + }, + "existingSecurityGroupName": { + "type": "string", + "metadata": { + "description": "Name of the network Security Group that needs to be assocated to virtual NIC. " + }, + "value": "GET-PREREQ-existingSecurityGroupName" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "diagStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'specvm')]", + "publicIPAddressType": "Dynamic", + "subnetRef": "GET-PREREQ-existingVnetRG/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVnetName/GET-PREREQ-subnetName", + "nicName": "GEN-UNIQUE-8", + "publicIPAddressName": "GEN-UNIQUE-8" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('diagStorageAccountName')]", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_GRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2017-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8" + ], + "tags": { + "displayName": "NetworkInterface" + }, + "properties": { + "networkSecurityGroup": { + "id": "GET-PREREQ-existingVnetRG/Microsoft.Network/networkSecurityGroups/GET-PREREQ-existingSecurityGroupName" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8" + }, + "subnet": { + "id": "GET-PREREQ-existingVnetRG/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVnetName/GET-PREREQ-subnetName" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/disks", + "apiVersion": "2017-03-30", + "name": "GEN-UNIQUE-8_OSdisk", + "location": "[resourceGroup().location]", + "properties": { + "creationData": { + "createOption": "Import", + "sourceUri": "GEN-SPECIALIZED-WINVHD-URI" + }, + "osType": "Linux" + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-8", + "Microsoft.Compute/disks/GEN-UNIQUE-8_OSdisk" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "storageProfile": { + "osDisk": { + "osType": "Linux", + "caching": "ReadWrite", + "managedDisk": { + "id": "Microsoft.Compute/disks/GEN-UNIQUE-8_OSdisk" + }, + "createOption": "Attach", + "diskSizeGB": "150" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('diagStorageAccountName')), '2020-08-01-preview').primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1079 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1079 new file mode 100644 index 0000000..80dcd20 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1079 @@ -0,0 +1,303 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-from-user-image/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-from-user-image/azuredeploy.parameters.json" + ], + "timestamp": 1642962904227, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-from-user-image/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-from-user-image/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1079", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/images", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1079", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the VM, only certain regions support zones during preview." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[concat('vm', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "This is the OS that your VM will be running" + }, + "value": "Windows" + }, + "osDiskVhdUri": { + "type": "string", + "metadata": { + "description": "Uri of the your user image" + }, + "value": "GEN-GENERALIZED-WINVHD-URI" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM, this sample uses a Gen 2 VM, see: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/generation-2#generation-2-vm-sizes" + } + }, + "vmName": { + "type": "string", + "defaultValue": "vmFromImage", + "metadata": { + "description": "Name of the VM" + } + } + }, + "variables": { + "storageAccountName": "[concat('diags', uniquestring(resourceGroup().id))]", + "imageName": "Windows-image", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "virtualNetworkName": "MyVNET", + "networkSecurityGroupName": "nsgAllowRemoting", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Compute/images", + "apiVersion": "2019-12-01", + "name": "Windows-image", + "location": "[resourceGroup().location]", + "properties": { + "storageProfile": { + "osDisk": { + "osType": "Windows", + "osState": "Generalized", + "blobUri": "GEN-GENERALIZED-WINVHD-URI", + "storageAccountType": "Standard_LRS" + } + }, + "hyperVGeneration": "V2" + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat('vm', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgAllowRemoting", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "RemoteConnection", + "properties": { + "description": "Allow RDP/SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "[if(equals(parameters('osType'), 'Windows'), 3389, 22)]", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myPublicIP", + "MyVNET", + "nsgAllowRemoting" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgAllowRemoting" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmFromImage", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('storageAccountName')]", + "[variables('nicName')]", + "[variables('imageName')]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "vmFromImage", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "id": "Microsoft.Compute/images/Windows-image" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT108 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT108 new file mode 100644 index 0000000..d349d08 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT108 @@ -0,0 +1,227 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/datastax/datastax/nested/nodes.json" + ], + "timestamp": 1642962886767, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/datastax/datastax/nested/nodes.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT108", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT108", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "uniqueString": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "nodeCount": { + "type": "int" + }, + "vmSize": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vnetName": { + "type": "string" + }, + "subnetName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "vmName": "namespacevm", + "storageAccountName": "namespaceuniqueString", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/vnetName/subnetName", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespace", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": 18 + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "namespaceuniqueString", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "namespaceipLoop", + "count": "nodeCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "namespacevmcopyIndex()uniqueString" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "namespacenicLoop", + "count": "nodeCount" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/namespacevmcopyindex()" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmcopyindex()" + }, + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnetName/subnetName" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "namespacevmLoop", + "count": "nodeCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/namespacevmcopyindex()", + "Microsoft.Compute/availabilitySets/namespace", + "Microsoft.Storage/storageAccounts/namespaceuniqueString" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespace" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmcopyIndex()", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmcopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmcopyindex()/installdsenode", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "copy": { + "name": "namespacevmLoop", + "count": "nodeCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/namespacevmcopyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash node.sh [resourceGroup().location] uniqueString namespace" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1080 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1080 new file mode 100644 index 0000000..956a42d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1080 @@ -0,0 +1,301 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-generalized-vhd-new-or-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-generalized-vhd-new-or-existing-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962904234, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-generalized-vhd-new-or-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-generalized-vhd-new-or-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1080", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/images", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1080", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "newvm", + "metadata": { + "description": "Name of the VM" + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "defaultValue": "Windows", + "metadata": { + "description": "Type of OS on the existing vhd" + } + }, + "osDiskVhdUri": { + "type": "string", + "metadata": { + "description": "Uri of the existing VHD in ARM standard or premium storage" + }, + "value": "GEN-GENERALIZED-WINVHD-URI" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "vNetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Specify whether to create a new or existing virtual network for the VM." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "newVnet", + "metadata": { + "description": "Name of the existing VNET" + } + }, + "virtualNetworkResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the existing VNET resource group" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet-1", + "metadata": { + "description": "Name of the subnet in the virtual network you want to use" + } + }, + "dnsNameForPublicIP": { + "type": "string", + "defaultValue": "[concat('vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "diagStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'specvm')]", + "subnetRef": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/newVnet/subnet-1", + "nicName": "nic", + "publicIPAddressName": "publicIp", + "imageName": "newvm-image", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + } + }, + "resources": [ + { + "condition": false, + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "newVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('diagStorageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "publicIp" + ], + "tags": { + "displayName": "NetworkInterface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + }, + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/newVnet/subnet-1" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/images", + "apiVersion": "2020-06-01", + "name": "newvm-image", + "location": "[resourceGroup().location]", + "properties": { + "hyperVGeneration": "V2", + "storageProfile": { + "osDisk": { + "osType": "Windows", + "osState": "Generalized", + "blobUri": "GEN-GENERALIZED-WINVHD-URI", + "caching": "ReadWrite", + "storageAccountType": "Standard_LRS" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "newvm", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "nic", + "newvm-image" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "newvm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "id": "Microsoft.Compute/images/newvm-image" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagStorageAccountName')).primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1081 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1081 new file mode 100644 index 0000000..643c7ed --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1081 @@ -0,0 +1,411 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-dynamic-data-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-dynamic-data-disks/azuredeploy.parameters.json" + ], + "timestamp": 1642962904243, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-dynamic-data-disks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-dynamic-data-disks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1081", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1081", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique public dns prefix where the node will be exposed" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "User name for the Virtual Machine. Pick a valid username otherwise there will be a BadRequest error." + }, + "value": "GEN-UNIQUE" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "openlogic", + "allowedValues": [ + "Canonical", + "openlogic" + ], + "metadata": { + "description": "openlogic/Canonical are the respective CentOS/Ubuntu Distributor in Azure Market Place" + }, + "value": "openlogic" + }, + "imageOffer": { + "type": "string", + "defaultValue": "CentOS", + "allowedValues": [ + "CentOS", + "UbuntuServer" + ], + "metadata": { + "description": "New CentOS/UbuntuServer Image Offer" + }, + "value": "CentOS" + }, + "imageSku": { + "type": "string", + "defaultValue": "7.2", + "allowedValues": [ + "16.04.0-LTS", + "6.5", + "6.6", + "7.1", + "7.2" + ], + "metadata": { + "description": "P.S: OpenLogic CentOS version to use **docker usage Only for 7.1/7.2 kernels 3.10 and above **" + }, + "value": "7.2" + }, + "sshPublicKey": { + "type": "securestring", + "metadata": { + "description": "This field must be a valid SSH public key. ssh with this RSA public key" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "mountFolder": { + "type": "string", + "defaultValue": "/data", + "metadata": { + "description": "The Folder system to be auto-mounted." + }, + "value": "/data" + }, + "nodeSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the node." + } + }, + "dockerVer": { + "type": "string", + "defaultValue": "1.12", + "metadata": { + "description": "The docker version **Only for 7.1/7.2 kernels 3.10 and above **" + }, + "value": "1.12" + }, + "dockerComposeVer": { + "type": "string", + "defaultValue": "1.9.0-rc2", + "metadata": { + "description": "The Docker Compose Version **Only for 7.1/7.2 kernels 3.10 and above **" + }, + "value": "1.9.0-rc2" + }, + "dockerMachineVer": { + "type": "string", + "defaultValue": "0.8.2", + "metadata": { + "description": "The docker-machine version **Only for 7.1/7.2 kernels 3.10 and above **" + }, + "value": "0.8.2" + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "The size in GB of each data disk that is attached to the VM. A MDADM RAID0 is created with all data disks auto-mounted, that is dataDiskSize * dataDiskCount in size n the Storage ." + }, + "value": 10 + }, + "masterVMName": { + "type": "string", + "defaultValue": "centos", + "allowedValues": [ + "centos", + "ubuntuserver" + ], + "metadata": { + "description": "The Name of the VM." + }, + "value": "centos" + }, + "numDataDisks": { + "type": "int", + "defaultValue": "4", + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "This parameter allows the user to select the number of disks wanted" + }, + "value": 4 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "avSetName": "avSet", + "diskCaching": "ReadWrite", + "networkSettings": { + "virtualNetworkName": "virtualnetwork", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "virtualnetwork" + } + }, + "statics": { + "master": "10.0.0.254" + } + }, + "nicName": "nic", + "publicIPAddressName": "publicips", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).virtualNetworkName/(networkSettings).subnet.dse.name", + "installationCLI": "bash azuredeploy.sh centos /data 4 1.12 1.9.0-rc2 GEN-UNIQUE 7.2 0.8.2", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "avSet", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "(networkSettings).virtualNetworkName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(networkSettings).addressPrefix" + ] + }, + "subnets": [ + { + "name": "(networkSettings).subnet.dse.name", + "properties": { + "addressPrefix": "(networkSettings).subnet.dse.prefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "publicips", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicips", + "Microsoft.Network/virtualNetworks//(networkSettings).virtualNetworkName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(networkSettings).statics.master", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicips" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).virtualNetworkName/(networkSettings).subnet.dse.name" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "centos", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nic", + "Microsoft.Compute/availabilitySets//avSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "centos", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "openlogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "osDisk": { + "name": "centos_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": 4, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 10, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('masterVMName'),'-datadisk',copyIndex('dataDisks'))]", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "centos/Installation", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//centos" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('azuredeploy.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash azuredeploy.sh centos /data 4 1.12 1.9.0-rc2 GEN-UNIQUE 7.2 0.8.2" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1082 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1082 new file mode 100644 index 0000000..da18e90 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1082 @@ -0,0 +1,416 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-jupyterhub/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-jupyterhub/azuredeploy.parameters.json" + ], + "timestamp": 1642962904255, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-jupyterhub/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-jupyterhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1082", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1082", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for Administrator Account" + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "defaultValue": "Ubuntu-Jupyter", + "metadata": { + "description": "The name of you Virtual Machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "cpu-gpu": { + "type": "string", + "defaultValue": "CPU-112GB", + "allowedValues": [ + "CPU-8GB", + "CPU-14GB", + "CPU-16GB", + "CPU-28GB", + "CPU-32GB", + "CPU-64GB", + "CPU-112GB", + "CPU-128GB", + "CPU-256Gb", + "CPU-432Gb", + "GPU-56GB", + "GPU-112GB", + "GPU-224GB" + ], + "metadata": { + "description": "Choose between CPU or GPU processing" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "SecGroupNet", + "metadata": { + "description": "Name of the Network Security Group" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "diskSizeGB": { + "type": "string", + "metadata": { + "description": "The size for an atached disk." + }, + "defaultValue": "1024", + "allowedValues": [ + "1024", + "2048", + "4096", + "8192", + "16384", + "32767" + ] + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "networkInterfaceName": "Ubuntu-JupyterNetInt", + "publicIpAddressName": "Ubuntu-JupyterPublicIP", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/subnet", + "nsgId": "Microsoft.Network/networkSecurityGroups/SecGroupNet", + "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "storageAccountKind": "Storage", + "vmSize": { + "CPU-8GB": "Standard_F4s_v2", + "CPU-14GB": "Standard_D4s_v3", + "CPU-16GB": "Standard_D4s_v3", + "CPU-28GB": "Standard_D8s_v3", + "CPU-32GB": "Standard_F4s_v2", + "CPU-64GB": "Standard_D16s_v3", + "CPU-112GB": "Standard_D16s_v3", + "CPU-128GB": "Standard_E16s_v3", + "CPU-256Gb": "Standard_E32_v3", + "CPU-432Gb": "Standard E64_v3", + "GPU-56GB": "Standard_NC6_Promo", + "GPU-112GB": "Standard_NV12", + "GPU-224GB": "Standard_NV24" + }, + "vmName": "Ubuntu-Jupyter-CPU-112GB", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-06-01", + "name": "SecGroupNet", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "HTTP", + "properties": { + "priority": 300, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "80" + } + }, + { + "name": "HTTPS", + "properties": { + "priority": 310, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "443" + } + }, + { + "name": "SSH", + "properties": { + "priority": 340, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + }, + { + "name": "AzureNotebooks", + "properties": { + "priority": 360, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "8000" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-06-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/24" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2019-06-01", + "name": "Ubuntu-JupyterPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIpAllocationMethod": "Dynamic" + }, + "sku": { + "name": "Basic", + "tier": "Regional" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-06-01", + "name": "Ubuntu-JupyterNetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//SecGroupNet", + "Microsoft.Network/virtualNetworks//vNet", + "Microsoft.Network/publicIpAddresses//Ubuntu-JupyterPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/Ubuntu-JupyterPublicIP" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecGroupNet" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "Ubuntu-Jupyter-CPU-112GB", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "(vmSize)[parameters(cpu-gpu)]" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "lun": 0, + "name": "DatadiskUbuntu-Jupyter", + "createOption": "Empty", + "diskSizeGB": "1024" + } + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/Ubuntu-JupyterNetInt" + } + ] + }, + "osProfile": { + "computerName": "Ubuntu-Jupyter", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[concat(reference(variables('storageAccountName')).primaryEndpoints.blob)]" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "Ubuntu-Jupyter-CPU-112GB/installscript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Ubuntu-Jupyter-CPU-112GB" + ], + "tags": { + "displayName": "Execute my custom script" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "bash install.sh GEN-UNIQUE", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/bootstrap.py', parameters('_artifactsLocationSasToken')))]" + ] + } + } + } + ] + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1083 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1083 new file mode 100644 index 0000000..7d54f4a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1083 @@ -0,0 +1,263 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-serial-output/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-serial-output/azuredeploy.parameters.json" + ], + "timestamp": 1642962904265, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-linux-serial-output/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-linux-serial-output/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1083", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1083", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Virtual Machine size." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storage')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSKU": "14.04.5-LTS", + "nicName": "serialOutputSampleNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "serialOutputSampleSubnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "serialOutputSamplePublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "serialOutputSampleVM", + "virtualNetworkName": "serialOutputSampleVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/serialOutputSampleVNET/serialOutputSampleSubnet", + "apiVersion": "2015-06-15", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "serialOutputSampleSubnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "serialOutputSamplePublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "serialOutputSampleSubnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "serialOutputSampleVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/serialOutputSampleSubnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "serialOutputSampleSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/serialOutputSampleSubnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "serialOutputSampleNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//serialOutputSamplePublicIP", + "Microsoft.Network/virtualNetworks//serialOutputSampleVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/serialOutputSamplePublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/serialOutputSampleVNET/serialOutputSampleSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "serialOutputSampleVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "serialOutputSampleVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/serialOutputSampleNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), variables('apiVersion')).primaryEndpoints['blob']]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1084 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1084 new file mode 100644 index 0000000..6dd96b4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1084 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-monitoring-diagnostics-extension/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-monitoring-diagnostics-extension/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904276, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-monitoring-diagnostics-extension/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-monitoring-diagnostics-extension/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1084", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1084", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "diagnosticsStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'stor')]", + "diagnosticsStorageAccountType": "Standard_LRS" + }, + "resources": [ + { + "name": "[variables('diagnosticsStorageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01-preview", + "tags": { + "displayName": "diagnosticsStorageAccount" + }, + "sku": { + "name": "Standard_LRS" + } + } + ], + "outputs": { + "existingdiagStorName": { + "type": "string", + "value": "[variables('diagnosticsStorageAccountName')]" + }, + "existingdiagStorRG": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1085 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1085 new file mode 100644 index 0000000..3273ce9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1085 @@ -0,0 +1,315 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/nestedtemplates/createVM.json" + ], + "timestamp": 1642962904284, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/nestedtemplates/createVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1085", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1085", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "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." + }, + "type": "string" + }, + "_artifactsLocationSasToken": { + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + }, + "type": "securestring" + }, + "adminPasswordOrKey": { + "metadata": { + "description": "OS Admin password or SSH Key depending on value of authentication type" + }, + "type": "securestring" + }, + "adminUsername": { + "metadata": { + "description": "Username for the Virtual Machine." + }, + "type": "string" + }, + "authenticationType": { + "allowedValues": [ + "password", + "sshPublicKey" + ], + "defaultValue": "password", + "metadata": { + "description": "Authentication type" + }, + "type": "string" + }, + "azureCLI2DockerImage": { + "defaultValue": "azuresdk/azure-cli-python:latest", + "metadata": { + "description": "The Docker image to rin the azure CLI from" + }, + "type": "string" + }, + "containerName": { + "type": "string" + }, + "location": { + "metadata": { + "description": "The Location For the resources" + }, + "type": "string" + }, + "nsgId": { + "metadata": { + "description": "The nsg id for the VM" + }, + "type": "string" + }, + "operatingSystem": { + "type": "string", + "metadata": { + "description": "OS for the VM, this is the offer and SKU concatenated with underscores and then mapped to a variable" + } + }, + "provisionExtensions": { + "metadata": { + "description": "determines whether to provision the extensions" + }, + "type": "bool" + }, + "storageAccountId": { + "metadata": { + "description": "The storage account Id for boot diagnostics for the VMs" + }, + "type": "string" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account for the blob copy" + } + }, + "subnetRef": { + "type": "string" + }, + "vmSize": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the VM to create" + }, + "type": "string" + }, + "vmName": { + "metadata": { + "description": "The name of the vm" + }, + "type": "string" + } + }, + "variables": { + "isWindowsOS": "[bool(contains(toLower(variables('imageReference')[parameters('operatingSystem')].offer), 'windows'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + }, + "imageReference": { + "UbuntuServer_16.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "UbuntuServer_18.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "WindowsServer_2016-DataCenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "windowsConfiguration": { + "provisionVmAgent": "true" + }, + "publicIPAddressName": "publicIp", + "nicName": "nic" + }, + "resources": [ + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "Location", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic", + "location": "Location", + "dependsOn": [ + "publicIp" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + }, + "subnet": { + "id": "subnetRef" + } + } + } + ], + "networkSecurityGroup": { + "id": "nsgId" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "dependsOn": [ + "nic" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]", + "windowsConfiguration": "[if(variables('isWindowsOS'), variables('windowsConfiguration'), json('null'))]" + }, + "storageProfile": { + "imageReference": "(imageReference)[parameters(operatingSystem)]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(parameters('storageAccountId'), '2018-02-01').primaryEndpoints.blob]" + } + } + } + }, + { + "condition": "[and(variables('isWindowsOS'), parameters('provisionExtensions'))]", + "name": "vmName/cse-windows", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "location": "location", + "dependsOn": [ + "vmName" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('writeblob.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File .\\writeblob.ps1 -SubscriptionId ', subscription().subscriptionId, ' -TenantId ', subscription().tenantId,' -ResourceGroupName ', resourceGroup().Name, ' -StorageAccountName ', parameters('storageAccountName'), ' -ContainerName ', parameters('containerName'),' -Verbose')]" + } + } + }, + { + "condition": "[and(not(variables('isWindowsOS')), parameters('provisionExtensions'))]", + "name": "vmName/cse-linux", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "location": "location", + "dependsOn": [ + "vmName" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/writeblob.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install-and-run-cli-2.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('./install-and-run-cli-2.sh -i \"', parameters('azureCLI2DockerImage'),'\" -a \"', parameters('storageAccountName'), '\" -c \"', parameters('containerName'), '\" -r \"', resourceGroup().Name, '\"')]" + } + } + } + ], + "outputs": { + "principalId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines', parameters('vmName')), '2019-12-01', 'Full').identity.principalId]" + }, + "linuxTest": { + "type": "bool", + "value": "[and(not(variables('isWindowsOS')), parameters('provisionExtensions'))]" + }, + "windowsTest": { + "type": "bool", + "value": "[and(variables('isWindowsOS'), parameters('provisionExtensions'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1086 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1086 new file mode 100644 index 0000000..041d74a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1086 @@ -0,0 +1,65 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/nestedtemplates/setUpRBAC.json" + ], + "timestamp": 1642962904294, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/nestedtemplates/setUpRBAC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1086", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/providers/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1086", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "principalId": { + "type": "string", + "metadata": { + "description": "Principal ID to set the access for" + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The storage account to set access for" + } + } + }, + "variables": { + "contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "scope": "Microsoft.Storage/storageAccounts/storageAccountName", + "RBACResourceName": "[guid(variables('scope'), variables('contributor'), parameters('principalId'))]" + }, + "resources": [ + { + "apiVersion": "2019-04-01-preview", + "name": "storageAccountName/Microsoft.Authorization/[guid(variables('scope'), variables('contributor'), parameters('principalId'))]", + "type": "Microsoft.Storage/storageAccounts/providers/roleAssignments", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "principalId", + "scope": "Microsoft.Storage/storageAccounts/storageAccountName", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1087 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1087 new file mode 100644 index 0000000..cbdc4c3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1087 @@ -0,0 +1,332 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi/azuredeploy.parameters.json" + ], + "timestamp": 1642962904303, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1087", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1087", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Authentication type" + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "OS Admin password or SSH Key depending on value of authentication type" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "metadata": { + "description": "The Location For the resources" + }, + "defaultValue": "[resourceGroup().location]" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the VM to create" + }, + "defaultValue": "Standard_D2s_v3" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + }, + "defaultValue": "" + }, + "operatingSystem": { + "type": "string", + "defaultValue": "UbuntuServer_18.04-LTS", + "metadata": { + "description": "Operating system to use for the virtual machine" + }, + "allowedValues": [ + "UbuntuServer_18.04-LTS", + "UbuntuServer_16.04-LTS", + "WindowsServer_2016-DataCenter" + ] + } + }, + "variables": { + "azureCLI2DockerImage": "mcr.microsoft.com/azure-cli", + "vmPrefix": "vm", + "storageAccountName": "[concat(variables('vmPrefix'),uniquestring(resourceGroup().id))]", + "networkSecurityGroupName": "nsg", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "vmName": "[concat(variables('vmPrefix'), uniquestring(resourceGroup().id))]", + "virtualNetworkName": "vnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet", + "containerName": "msi", + "createVMUrl": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/createVM.json', parameters('_artifactsLocationSasToken')))]", + "createRBACUrl": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/setUpRBAC.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "Location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "Location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "nsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-remote-access", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "[if(contains(toLower(parameters('operatingSystem')), 'windows'), 3389, 22)]", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "creatingVM", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "[variables('virtualNetworkName')]", + "[variables('storageAccountName')]", + "[variables('networkSecurityGroupName')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/createVM.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "azureCLI2DockerImage": { + "value": "mcr.microsoft.com/azure-cli" + }, + "containerName": { + "value": "msi" + }, + "operatingSystem": { + "value": "UbuntuServer_18.04-LTS" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "nsgId": { + "value": "Microsoft.Network/networkSecurityGroups/nsg" + }, + "provisionExtensions": { + "value": false + }, + "storageAccountId": { + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "storageAccountName": { + "value": "[variables('storageAccountName')]" + }, + "subnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "vmName": { + "value": "[variables('vmName')]" + } + } + } + }, + { + "name": "creatingRBAC", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "creatingVM" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/setUpRBAC.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "principalId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'creatingVM'), '2019-09-01').outputs.principalId.value]" + }, + "storageAccountName": { + "value": "[variables('storageAccountName')]" + } + } + } + }, + { + "name": "updatingVM", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "creatingRBAC" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/createVM.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "azureCLI2DockerImage": { + "value": "mcr.microsoft.com/azure-cli" + }, + "containerName": { + "value": "msi" + }, + "operatingSystem": { + "value": "UbuntuServer_18.04-LTS" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "nsgId": { + "value": "Microsoft.Network/networkSecurityGroups/nsg" + }, + "provisionExtensions": { + "value": true + }, + "storageAccountId": { + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "storageAccountName": { + "value": "[variables('storageAccountName')]" + }, + "subnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "vmName": { + "value": "[variables('vmName')]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1088 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1088 new file mode 100644 index 0000000..1c4c822 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1088 @@ -0,0 +1,68 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904312, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1088", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1088", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "storageAccountResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1089 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1089 new file mode 100644 index 0000000..18278e4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1089 @@ -0,0 +1,395 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi-storage/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962904318, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-msi-storage/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-msi-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1089", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1089", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "vm-msi", + "metadata": { + "description": "The name of you Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat('vm-msi-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "19.04", + "allowedValues": [ + "16.04.0-LTS", + "18.04-LTS", + "19.04" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "VmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "The size of the VM" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "SecGroupNet", + "metadata": { + "description": "Name of the Network Security Group" + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "Resource group name for the storage account role assignment" + }, + "value": "GET-PREREQ-storageAccountResourceGroupName" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name the MSI will be given access to" + }, + "value": "GET-PREREQ-storageAccountName" + }, + "msiRole": { + "type": "string", + "defaultValue": "StorageBlobDataReader", + "allowedValues": [ + "StorageBlobDataContributor", + "StorageBlobDataOwner", + "StorageBlobDataReader" + ], + "metadata": { + "description": "Role to assign to the MSI on the storage account" + } + } + }, + "variables": { + "publicIpAddressName": "vm-msiPublicIP", + "networkInterfaceName": "vm-msiNetInt", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet", + "osDiskType": "StandardSSD_LRS", + "subnetAddressPrefix": "10.1.0.0/24", + "addressPrefix": "10.1.0.0/16", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "roleDefinitionId": { + "StorageBlobDataContributor": "[subscriptionResourceId('Microsoft.Authorization/roleAssignments', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "StorageBlobDataOwner": "[subscriptionResourceId('Microsoft.Authorization/roleAssignments', 'b7e6dc6d-f1e8-4753-8033-0f276bb0955b')]", + "StorageBlobDataReader": "[subscriptionResourceId('Microsoft.Authorization/roleAssignments', '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1')]" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-04-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2019-02-01", + "name": "vm-msiPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIpAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4", + "dnsSettings": { + "domainNameLabel": "[toLower(concat('vm-msi-', uniqueString(resourceGroup().id)))]" + }, + "idleTimeoutInMinutes": 4 + }, + "sku": { + "name": "Basic", + "tier": "Regional" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-02-01", + "name": "SecGroupNet", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "priority": 1000, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2018-10-01", + "name": "vm-msiNetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//SecGroupNet", + "Microsoft.Network/virtualNetworks//vNet", + "Microsoft.Network/publicIpAddresses//vm-msiPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecGroupNet" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-03-01", + "name": "vm-msi", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//vm-msiNetInt" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "osProfile": { + "computerName": "vm-msi", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "19.04", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vm-msiNetInt" + } + ] + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "name": "assignRole", + "resourceGroup": "GET-PREREQ-storageAccountResourceGroupName", + "dependsOn": [ + "vm-msi" + ], + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "storageAccountResourceGroupName": { + "value": "GET-PREREQ-storageAccountResourceGroupName" + }, + "storageAccountName": { + "value": "GET-PREREQ-storageAccountName" + }, + "assignedRoleDefinitionId": { + "value": "(roleDefinitionId)[parameters(msiRole)]" + }, + "principalId": { + "value": "[reference(parameters('vmName'),'2019-07-01', 'Full').identity.principalId]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountResourceGroupName": { + "type": "string" + }, + "storageAccountName": { + "type": "string" + }, + "assignedRoleDefinitionId": { + "type": "string" + }, + "principalId": { + "type": "string" + } + }, + "variables": { + "roleName": "[guid(parameters('assignedRoleDefinitionId'), parameters('principalId'), parameters('storageAccountName'))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts/providers/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "GET-PREREQ-storageAccountName/Microsoft.Authorization/roleName", + "properties": { + "roleDefinitionId": "assignedRoleDefinitionId", + "principalId": "principalId", + "principalType": "ServicePrincipal" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT109 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT109 new file mode 100644 index 0000000..b0b5190 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT109 @@ -0,0 +1,183 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/datastax/datastax/nested/opscenter.json" + ], + "timestamp": 1642962886811, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/datastax/datastax/nested/opscenter.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT109", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT109", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "uniqueString": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vnetName": { + "type": "string" + }, + "subnetName": { + "type": "string" + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "storageAccountName": "opscenteruniqueString", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/vnetName/subnetName", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "opscenter", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "opscenteruniqueString" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "opscenter", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/opscenter" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/opscenter" + }, + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnetName/subnetName" + } + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "opscenteruniqueString", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "opscenter", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/opscenter", + "Microsoft.Storage/storageAccounts/opscenteruniqueString" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "opscenter", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "opscenter_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/opscenter" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "opscenter/installopscenter", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/opscenter" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash opscenter.sh [resourceGroup().location] uniqueString" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1090 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1090 new file mode 100644 index 0000000..ef10095 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1090 @@ -0,0 +1,269 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-data-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-data-disk/azuredeploy.parameters.json" + ], + "timestamp": 1642962904327, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-data-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-data-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1090", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1090", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_D4_v3" + }, + "sizeOfEachDataDiskInGB": { + "type": "string", + "metadata": { + "description": "Size of each data disk in GB" + }, + "value": "100" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'saddiskvm')]", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "imageSKU": "2019-Datacenter", + "imageVersion": "latest", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "storageAccountType": "Standard_LRS", + "virtualNetworkName": "myVNET", + "vmName": "myVM", + "nicName": "myNIC", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//myVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "myVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "dataDisks": [ + { + "diskSizeGB": "100", + "lun": 0, + "createOption": "Empty" + }, + { + "diskSizeGB": "100", + "lun": 1, + "createOption": "Empty" + }, + { + "diskSizeGB": "100", + "lun": 2, + "createOption": "Empty" + }, + { + "diskSizeGB": "100", + "lun": 3, + "createOption": "Empty" + } + ], + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNIC" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), '2019-06-01').primaryEndpoints['blob']]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1091 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1091 new file mode 100644 index 0000000..da5dc05 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1091 @@ -0,0 +1,310 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-ipconfig/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-ipconfig/azuredeploy.parameters.json" + ], + "timestamp": 1642962904333, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-ipconfig/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-ipconfig/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1091", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1091", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS for PublicIPAddressName1" + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix1": { + "type": "string", + "metadata": { + "description": "DNS for PublicIPAddressName2" + }, + "value": "GEN-UNIQUE" + }, + "OSVersion": { + "type": "string", + "allowedValues": [ + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Nano-Server", + "2016-Datacenter-with-Containers", + "2016-Datacenter", + "18.04-LTS", + "7.2" + ], + "metadata": { + "description": "The Windows/Linux version for the VM. This will pick a fully patched image of this given Windows/Linux version." + }, + "value": "18.04-LTS" + }, + "imagePublisher": { + "type": "string", + "allowedValues": [ + "Canonical", + "MicrosoftWindowsServer", + "RedHat" + ], + "metadata": { + "description": "The Windows/Linux image publisher for the selected VM. " + }, + "value": "Canonical" + }, + "imageOffer": { + "type": "string", + "allowedValues": [ + "UbuntuServer", + "RHEL", + "WindowsServer" + ], + "metadata": { + "description": "The Windows/Linux image for the selected VM. " + }, + "value": "UbuntuServer" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "description" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnetName": "mySubnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Static", + "publicIPAddressType2": "Static", + "nicName": "myNic1", + "vnetName": "myVNet1", + "publicIPAddressName": "myPublicIP", + "publicIPAddressName2": "myPublicIP2", + "vmName": "myVM1", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/myVNet1/mySubnet", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP2", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNet1", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "mySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic1", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/myVNet1", + "Microsoft.Network/publicIPAddresses/myPublicIP2" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IPConfig-1", + "properties": { + "primary": true, + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNet1/mySubnet" + } + } + }, + { + "name": "IPConfig-2", + "properties": { + "privateIPAddress": "10.0.0.5", + "privateIPAllocationMethod": "Static", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP2" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNet1/mySubnet" + } + } + }, + { + "name": "IPConfig-3", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNet1/mySubnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "myVM1", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myNic1" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "myVM1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNic1", + "properties": { + "primary": true + } + } + ] + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1092 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1092 new file mode 100644 index 0000000..69d9a40 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1092 @@ -0,0 +1,321 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-nics-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-nics-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962904342, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-multiple-nics-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-multiple-nics-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1092", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1092", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "azureuser" + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "SSH rsa public key file as a string." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmName": { + "type": "string", + "defaultValue": "multinicvm", + "metadata": { + "description": "Name of the VM" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + }, + "type": "string" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.4-LTS", + "15.10", + "18.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.4-LTS, 15.10, 18.04-LTS." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "description" + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'samultinic')]", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "sshKeyPath": "/home/azureuser/.ssh/authorized_keys", + "nic1Name": "nic1", + "nic2Name": "nic2", + "vnetName": "vnet", + "vnetId": "Microsoft.Network/virtualNetworks/vnet", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Frontend", + "subnet1Id": "Microsoft.Network/virtualNetworks/subnets/vnet/Frontend", + "subnet1Prefix": "10.0.1.0/24", + "subnet1PrivateAddress": "10.0.1.5", + "subnet2Name": "Web", + "subnet2Id": "Microsoft.Network/virtualNetworks/subnets/vnet/Web", + "subnet2Prefix": "10.0.2.0/24", + "subnet2PrivateAddress": "10.0.2.5", + "publicIPAddressName": "[concat(uniquestring(resourceGroup().id), 'PublicIp')]", + "publicIPAddressType": "Dynamic", + "publicIPAddressId": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "name": "[variables('storageAccountName')]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "name": "vnet", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Frontend", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + }, + { + "name": "Web", + "properties": { + "addressPrefix": "10.0.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "name": "[variables('publicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + }, + "idleTimeoutInMinutes": 30, + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "dependsOn": [ + "[variables('vnetId')]", + "[variables('publicIPAddressId')]" + ], + "location": "[resourceGroup().location]", + "name": "nic1", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAddress": "10.0.1.5", + "privateIPAllocationMethod": "Static", + "PublicIpAddress": { + "Id": "[variables('publicIPAddressId')]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/Frontend" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet" + ], + "location": "[resourceGroup().location]", + "name": "nic2", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig2", + "properties": { + "privateIPAddress": "10.0.2.5", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/Web" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nic1Name'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nic2Name'))]" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "properties": { + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2019-06-01').primaryEndpoints.blob]" + } + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic1", + "properties": { + "primary": true + } + }, + { + "id": "Microsoft.Network/networkInterfaces/nic2", + "properties": { + "primary": false + } + } + ] + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "azureuser", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/azureuser/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + } + } + } + ], + "outputs": { + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', parameters('vmName'), '.', parameters('location'), '.cloudapp.azure.com')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1093 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1093 new file mode 100644 index 0000000..ce6b91b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1093 @@ -0,0 +1,355 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-new-or-existing-conditions/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-new-or-existing-conditions/azuredeploy.parameters.json" + ], + "timestamp": 1642962904351, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-new-or-existing-conditions/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-new-or-existing-conditions/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1093", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1093", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location to for the resources." + } + }, + "vmName": { + "type": "string", + "defaultValue": "linux-vm", + "metadata": { + "description": "Name for the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Size for the Virtual Machine." + } + }, + "storageNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new storage account should be provisioned." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the storage account" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Storage account type" + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the existing storage account" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new virtual network should be provisioned." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "VirtualNetwork", + "metadata": { + "description": "Name of the virtual network" + } + }, + "addressPrefixes": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "Address prefix of the virtual network" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix of the virtual network" + } + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the existing virtual network" + } + }, + "publicIpNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new public ip should be provisioned." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "PublicIp", + "metadata": { + "description": "Name of the public ip address" + } + }, + "publicIpDns": { + "type": "string", + "defaultValue": "[concat('linux-vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS of the public ip address for the VM" + } + }, + "publicIpResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the public ip address" + } + } + }, + "variables": { + "nicName": "linux-vm-nic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "publicIpAddressId": { + "id": "[resourceGroup().name]/Microsoft.Network/publicIPAddresses/PublicIp" + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2020-08-01-preview", + "name": "[concat('storage', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2017-09-01", + "name": "PublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('linux-vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "condition": false, + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2017-09-01", + "name": "VirtualNetwork", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2017-09-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "linux-vm-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "PublicIp", + "VirtualNetwork" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets//VirtualNetwork/default" + }, + "publicIPAddress": "[if(not(equals(parameters('publicIpNewOrExisting'), 'none')), variables('publicIpAddressId') , json('null'))]" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "linux-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('storage', uniqueString(resourceGroup().id))]", + "linux-vm-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "linux-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/linux-vm-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId(parameters('storageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2020-08-01-preview').primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1094 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1094 new file mode 100644 index 0000000..d104267 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1094 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904361, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1094", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1094", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingVirtualNetworkName": "vnet", + "existingSubnetName": "subnet-1" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "virtualNetwork": { + "type": "string", + "value": "[variables('existingVirtualNetworkName')]" + }, + "subnet": { + "type": "string", + "value": "[variables('existingSubnetName')]" + }, + "rgName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1095 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1095 new file mode 100644 index 0000000..687c6f4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1095 @@ -0,0 +1,246 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962904368, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-os-disk-and-data-disk-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1095", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/disks", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1095", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM" + }, + "value": "GEN-UNIQUE-8" + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "Type of OS on the existing vhd" + }, + "value": "Windows" + }, + "osDiskVhdUri": { + "type": "string", + "metadata": { + "description": "Uri of the existing OS VHD in ARM standard or premium storage" + }, + "value": "GEN-SPECIALIZED-WINVHD-URI" + }, + "dataDisk0VhdUri": { + "type": "string", + "metadata": { + "description": "Uri of the existing data disk VHD in ARM standard or premium storage" + }, + "value": "GEN-DATAVHD-URI" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the VM" + }, + "value": "Standard_D2s_v3" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET" + }, + "value": "GEN-VNET-NAME" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "GEN-VNET-RESOURCEGROUP-NAME" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet in the virtual network you want to use" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "diagStorageAccountName": "GEN-UNIQUE-8diag", + "publicIPAddressType": "Dynamic", + "subnetRef": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "nicName": "GEN-UNIQUE-8-nic1", + "publicIPAddressName": "GEN-UNIQUE-8-pip" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-8diag", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_GRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8-pip", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8-nic1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8-pip" + ], + "tags": { + "displayName": "NetworkInterface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8-pip" + }, + "subnet": { + "id": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/disks", + "apiVersion": "2017-03-30", + "name": "GEN-UNIQUE-8_OSdisk", + "location": "[resourceGroup().location]", + "properties": { + "creationData": { + "createOption": "Import", + "sourceUri": "GEN-SPECIALIZED-WINVHD-URI" + }, + "osType": "Windows" + } + }, + { + "type": "Microsoft.Compute/disks", + "apiVersion": "2017-03-30", + "name": "GEN-UNIQUE-8_Datadisk", + "location": "[resourceGroup().location]", + "properties": { + "creationData": { + "createOption": "Import", + "sourceUri": "GEN-DATAVHD-URI" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-8-nic1", + "Microsoft.Compute/disks/GEN-UNIQUE-8_OSdisk", + "Microsoft.Compute/disks/GEN-UNIQUE-8_Datadisk" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "osDisk": { + "osType": "Windows", + "caching": "ReadWrite", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/GEN-UNIQUE-8_OSdisk" + } + }, + "dataDisks": [ + { + "lun": 0, + "managedDisk": { + "id": "Microsoft.Compute/disks/GEN-UNIQUE-8_Datadisk" + }, + "caching": "ReadOnly", + "createOption": "Attach" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic1" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagStorageAccountName'), '2021-02-01').primaryEndpoints['blob']]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1096 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1096 new file mode 100644 index 0000000..36da486 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1096 @@ -0,0 +1,239 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-push-certificate-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-push-certificate-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962904378, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-push-certificate-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-push-certificate-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1096", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1096", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "WindowsVm", + "metadata": { + "description": "Name of the VM" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin Username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin Password" + }, + "value": "GEN-PASSWORD" + }, + "vaultResourceId": { + "type": "string", + "metadata": { + "description": "Resource Group of Key Vault that has a secret - must be of the format /subscriptions/xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups//providers/Microsoft.KeyVault/vaults/" + }, + "value": "GEN-KEYVAULT-RESOURCE-ID" + }, + "secretUrlWithVersion": { + "type": "string", + "metadata": { + "description": "Url of the certificate in Key Vault - the url must be to a base64 encoded secret, not a key or cert: https:///secrets//" + }, + "value": "GEN-SF-CERT-URL" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets//certVNET/Subnet-1", + "nicName": "certNIC", + "subnet1Prefix": "10.0.0.0/24", + "subnet1Name": "Subnet-1", + "virtualNetworkName": "certVNET", + "addressPrefix": "10.0.0.0/16", + "publicIPName": "certPublicIP", + "networkSecurityGroupName": "Subnet-1-nsg" + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "certPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnet1Name')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "Subnet-1-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "certVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "certNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/certPublicIP", + "Microsoft.Network/virtualNetworks/certVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/certPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//certVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "WindowsVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/certNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "WindowsVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "secrets": [ + { + "sourceVault": { + "id": "GEN-KEYVAULT-RESOURCE-ID" + }, + "vaultCertificates": [ + { + "certificateUrl": "GEN-SF-CERT-URL", + "certificateStore": "My" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/certNIC" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1097 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1097 new file mode 100644 index 0000000..edca54f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1097 @@ -0,0 +1,257 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-secure-password/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-secure-password/azuredeploy.parameters.json" + ], + "timestamp": 1642962904389, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-secure-password/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-secure-password/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1097", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1097", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[concat('vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "SimpleWindowsVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myPublicIP", + "MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "SimpleWindowsVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('storageAccountName')]", + "[variables('nicName')]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "SimpleWindowsVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName')).primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1098 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1098 new file mode 100644 index 0000000..cf9486e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1098 @@ -0,0 +1,294 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-freebsd/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-freebsd/azuredeploy.parameters.json" + ], + "timestamp": 1642962904395, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-freebsd/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-freebsd/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1098", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1098", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "freeBSDOSVersion": { + "type": "string", + "defaultValue": "12.0", + "allowedValues": [ + "12.0", + "11.2", + "11.1", + "11.0", + "10.4", + "10.3" + ], + "metadata": { + "description": "The FreeBSD version for the VM. This will pick a fully patched image of this given FreeBSD version." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of the virtual machine." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'safreebsdvm')]", + "imagePublisher": "MicrosoftOSTC", + "imageOffer": "FreeBSD", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyFreeBSDVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyFreeBSDVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "MyFreeBSDVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftOSTC", + "offer": "FreeBSD", + "sku": "12.0", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2020-08-01-preview').primaryEndpoints['blob']]" + } + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1099 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1099 new file mode 100644 index 0000000..8c12a80 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1099 @@ -0,0 +1,309 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962904400, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1099", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1099", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "16607361201936431976" + } + }, + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "simpleLinuxVM", + "metadata": { + "description": "The name of you Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "secureString", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(format('simplelinuxvm-{0}', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "16.04.0-LTS", + "18.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "The size of the VM" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "SecGroupNet", + "metadata": { + "description": "Name of the Network Security Group" + } + } + }, + "functions": [], + "variables": { + "publicIPAddressName": "[format('{0}PublicIP', parameters('vmName'))]", + "networkInterfaceName": "[format('{0}NetInt', parameters('vmName'))]", + "osDiskType": "StandardSSD_LRS", + "subnetAddressPrefix": "10.1.0.0/24", + "addressPrefix": "10.1.0.0/16", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "[format('/home/{0}/.ssh/authorized_keys', parameters('adminUsername'))]", + "keyData": "GEN-PASSWORD" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "[format('{0}NetInt', parameters('vmName'))]", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[format('{0}PublicIP', parameters('vmName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecGroupNet" + } + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/SecGroupNet", + "Microsoft.Network/publicIPAddresses/[format('{0}PublicIP', parameters('vmName'))]", + "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "SecGroupNet", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "priority": 1000, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]", + "properties": { + "addressPrefix": "10.1.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vNet" + ] + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[format('{0}PublicIP', parameters('vmName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + }, + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "simpleLinuxVM", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[format('{0}NetInt', parameters('vmName'))]" + } + ] + }, + "osProfile": { + "computerName": "simpleLinuxVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), null(), variables('linuxConfiguration'))]" + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[format('{0}NetInt', parameters('vmName'))]" + ] + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "hostname": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[format('ssh {0}@{1}', parameters('adminUsername'), reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT11 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT11 new file mode 100644 index 0000000..8096106 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT11 @@ -0,0 +1,73 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/nic.json" + ], + "timestamp": 1642962883388, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/nic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT11", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT11", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicName": { + "type": "string", + "metadata": { + "Description": "The name of the NIC to Create or Update" + } + }, + "ipConfigurations": { + "type": "array", + "metadata": { + "Description": "The IP configurations of the NIC" + } + }, + "dnsServers": { + "type": "array", + "metadata": { + "Description": "The DNS Servers of the NIC" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "nicName", + "location": "location", + "properties": { + "ipConfigurations": "ipConfigurations", + "dnsSettings": { + "dnsServers": "dnsServers" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT110 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT110 new file mode 100644 index 0000000..036a62b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT110 @@ -0,0 +1,289 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/datastax/datastax/azuredeploy.json", + "/application-workloads/datastax/datastax/azuredeploy.parameters.json" + ], + "timestamp": 1642962886827, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/datastax/datastax/azuredeploy.json", + "/application-workloads/datastax/datastax/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT110", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT110", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nodeCount": { + "type": "int", + "defaultValue": 6, + "minValue": 1, + "maxValue": 40, + "metadata": { + "description": "Number of virtual machines to provision for the cluster" + }, + "value": 6 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D32_v3", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "Size of virtual machine to provision for the cluster" + }, + "value": "Standard_D2_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/datastax/datastax/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "nodesTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/nodes.json', parameters('_artifactsLocationSasToken')))]", + "opsCenterTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/opscenter.json', parameters('_artifactsLocationSasToken')))]", + "location": "[resourceGroup().location]", + "uniqueString": "[uniqueString(resourceGroup().id, deployment().name)]", + "vnetName": "vnet", + "subnetName": "subnet", + "osSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/node.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/opscenter.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/nodes.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "uniqueString": { + "value": "[uniqueString(resourceGroup().id, deployment().name)]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "nodeCount": { + "value": 6 + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/node.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/opscenter.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "vnetName": { + "value": "vnet" + }, + "subnetName": { + "value": "subnet" + }, + "namespace": { + "value": "dc0" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + } + } + } + }, + { + "name": "opsCenter", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/opscenter.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "uniqueString": { + "value": "[uniqueString(resourceGroup().id, deployment().name)]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/node.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/opscenter.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "vnetName": { + "value": "vnet" + }, + "subnetName": { + "value": "subnet" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + } + } + } + } + ], + "outputs": { + "opsCenterURL": { + "type": "string", + "value": "[concat('http://opscenter', variables('uniqueString'), '.', variables('location'), '.cloudapp.azure.com:8888')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1100 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1100 new file mode 100644 index 0000000..afb8544 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1100 @@ -0,0 +1,284 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-linux-with-accelerated-networking/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-linux-with-accelerated-networking/azuredeploy.parameters.json" + ], + "timestamp": 1642962904409, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-linux-with-accelerated-networking/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-linux-with-accelerated-networking/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1100", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1100", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "Size of the virtual machine." + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "18.04-LTS", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountName": "[concat('stglinuxvm', uniquestring(resourceGroup().id))]", + "storageAccountSkuName": "Standard_LRS", + "storageAccountSkuType": "Standard", + "storageAccountKind": "StorageV2", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyUbuntuVM", + "virtualNetworkName": "MyVNET", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "primary": true, + "enableAcceleratedNetworking": true, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "MyUbuntuVM", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "MyUbuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2020-08-01-preview').primaryEndpoints['blob']]" + } + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1101 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1101 new file mode 100644 index 0000000..bc17dee --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1101 @@ -0,0 +1,254 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-rhel/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-rhel/azuredeploy.parameters.json" + ], + "timestamp": 1642962904416, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-rhel/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-rhel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1101", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1101", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name for the Virtual Machine." + }, + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of the virtual machine" + } + } + }, + "variables": { + "dataDisk1Name": "[concat(uniquestring(parameters('vmName')), 'datadisk1')]", + "dataDisk2Name": "[concat(uniquestring(parameters('vmName')), 'datadisk2')]", + "imagePublisher": "RedHat", + "imageOffer": "RHEL", + "imageSku": "7.8", + "nicName": "[concat(uniquestring(parameters('vmName')), 'nic')]", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "[concat(uniquestring(parameters('vmName')), 'publicip')]", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "[concat(uniquestring(parameters('vmName')), 'vnet')]", + "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "subnet": { + "id": "[variables('subnetRef')]" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "tags": { + "Tag1": "ManagedVM" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.8", + "version": "latest" + }, + "dataDisks": [ + { + "name": "[variables('dataDisk1Name')]", + "diskSizeGB": 100, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "[variables('dataDisk2Name')]", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1102 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1102 new file mode 100644 index 0000000..3196909 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1102 @@ -0,0 +1,273 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-rhel-unmanaged/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-rhel-unmanaged/azuredeploy.parameters.json" + ], + "timestamp": 1642962904425, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-rhel-unmanaged/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-rhel-unmanaged/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1102", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1102", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "description" + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(parameters('vmName')), 'storage')]", + "imagePublisher": "RedHat", + "imageOffer": "RHEL", + "nicName": "[concat(uniquestring(parameters('vmName')), 'nic')]", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "[concat(uniquestring(parameters('vmName')), 'publicip')]", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "[concat(uniquestring(parameters('vmName')), 'vnet')]", + "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "subnet": { + "id": "[variables('subnetRef')]" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.8", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-8_DataDisk1", + "diskSizeGB": 100, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-8_DataDisk2", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2020-08-01-preview').primaryEndpoints['blob']]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1103 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1103 new file mode 100644 index 0000000..c802ee4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1103 @@ -0,0 +1,289 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-sles/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-sles/azuredeploy.parameters.json" + ], + "timestamp": 1642962904432, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-sles/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-sles/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1103", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1103", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "suseOSVersion": { + "type": "string", + "defaultValue": "sles-15-sp2", + "allowedValues": [ + "sles-15-sp2", + "sles-15-sp1", + "sles-12-sp5" + ], + "metadata": { + "description": "The SLES version for the VM. This will pick the latest available image of this given SLES version." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the virtual machine" + }, + "defaultValue": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'slesvm')]", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "vmName": "MySUSEVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myPublicIP", + "MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "MySUSEVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('storageAccountName')]", + "[variables('nicName')]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MySUSEVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "SUSE", + "offer": "sles-15-sp2", + "sku": "gen1", + "version": "latest" + }, + "osDisk": { + "name": "MySUSEVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 100, + "lun": 0, + "name": "MySUSEVM_DataDisk1", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2019-06-01').primaryEndpoints.blob]" + } + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1104 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1104 new file mode 100644 index 0000000..ae4d869 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1104 @@ -0,0 +1,312 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962904444, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1104", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1104", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "7822315097766237434" + } + }, + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "minLength": 12, + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(format('{0}-{1}', parameters('vmName'), uniqueString(resourceGroup().id, parameters('vmName'))))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "publicIpName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name for the Public IP used to access the Virtual Machine." + } + }, + "publicIPAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Allocation method for the Public IP used to access the Virtual Machine." + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "SKU for the Public IP used to access the Virtual Machine." + } + }, + "OSVersion": { + "type": "string", + "defaultValue": "2019-datacenter-gensecond", + "allowedValues": [ + "2019-datacenter-gensecond", + "2019-datacenter-core-gensecond", + "2019-datacenter-core-smalldisk-gensecond", + "2019-datacenter-core-with-containers-gensecond", + "2019-datacenter-core-with-containers-smalldisk-g2", + "2019-datacenter-smalldisk-gensecond", + "2019-datacenter-with-containers-gensecond", + "2019-datacenter-with-containers-smalldisk-g2", + "2016-datacenter-gensecond" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched Gen2 image of this given Windows version." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmName": { + "type": "string", + "defaultValue": "simple-vm", + "metadata": { + "description": "Name of the virtual machine." + } + } + }, + "variables": { + "storageAccountName": "[format('bootdiags{0}', uniqueString(resourceGroup().id))]", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "MyVNET", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('bootdiags{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-02-01", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-02-01", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-03-01", + "name": "simple-vm", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "simple-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-datacenter-gensecond", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic", + "Microsoft.Storage/storageAccounts/[format('bootdiags{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIpName'))).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1105 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1105 new file mode 100644 index 0000000..7e94a5a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1105 @@ -0,0 +1,285 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-windows-visualstudio2019/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-windows-visualstudio2019/azuredeploy.parameters.json" + ], + "timestamp": 1642962904453, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-windows-visualstudio2019/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-windows-visualstudio2019/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1105", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1105", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "simpleWinVS", + "metadata": { + "description": "The name of you Virtual Machine." + } + }, + "VmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the VM" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "Password for the Virtual Machine. The password must be at least 12 characters long and have lower case, upper characters, digit and a special character (Regex match)" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat('simplewinvs-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "sharedResources": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Specify whether to create a new or existing NSG and vNet." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "SecGroupNet", + "metadata": { + "description": "Name of the Network Security Group" + } + } + }, + "variables": { + "publicIpAddressName": "simpleWinVSPublicIP", + "networkInterfaceName": "simpleWinVSNetInt", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet", + "osDiskType": "StandardSSD_LRS", + "subnetAddressPrefix": "10.1.0.0/24", + "addressPrefix": "10.1.0.0/16" + }, + "resources": [ + { + "name": "simpleWinVSNetInt", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//SecGroupNet", + "Microsoft.Network/virtualNetworks//vNet", + "Microsoft.Network/publicIpAddresses//simpleWinVSPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecGroupNet" + } + } + }, + { + "condition": false, + "name": "SecGroupNet", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "RDP", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-05-01", + "name": "simpleWinVSPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIpAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat('simplewinvs-', uniqueString(resourceGroup().id)))]" + }, + "publicIPAddressVersion": "IPv4", + "idleTimeoutInMinutes": 4 + }, + "sku": { + "name": "Basic", + "tier": "Regional" + } + }, + { + "name": "simpleWinVS", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//simpleWinVSNetInt" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "visualstudio2019latest", + "sku": "vs-2019-comm-latest-ws2019", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/simpleWinVSNetInt" + } + ] + }, + "osProfile": { + "computerName": "simpleWinVS", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "enableAutomaticUpdates": true, + "provisionVmAgent": true + } + } + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[parameters('virtualNetworkName')]" + }, + "networkSecurityGroupName": { + "type": "string", + "value": "[parameters('networkSecurityGroupName')]" + }, + "hostname": { + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1106 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1106 new file mode 100644 index 0000000..44070b2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1106 @@ -0,0 +1,318 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962904467, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-simple-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-simple-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1106", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1106", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "linuxvm", + "metadata": { + "description": "The name of you Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + }, + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat('linuxvm-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "16.04.0-LTS", + "18.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "FranceCentral" + }, + "VmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "The size of the VM" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "SecGroupNet", + "metadata": { + "description": "Name of the Network Security Group" + } + }, + "zone": { + "type": "string", + "defaultValue": "1", + "allowedValues": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Zone number for the virtual machine" + } + } + }, + "variables": { + "publicIpAddressName": "linuxvmPublicIP", + "networkInterfaceName": "linuxvmNetInt", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet", + "osDiskType": "StandardSSD_LRS", + "subnetAddressPrefix": "10.1.0.0/24", + "addressPrefix": "10.1.0.0/16", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "SecGroupNet", + "location": "FranceCentral", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "priority": 1000, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "vNet", + "location": "FranceCentral", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-05-01", + "name": "linuxvmPublicIP", + "location": "FranceCentral", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "zones": [ + "1" + ], + "properties": { + "publicIpAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4", + "dnsSettings": { + "domainNameLabel": "[toLower(concat('linuxvm-', uniqueString(resourceGroup().id)))]" + }, + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "name": "linuxvmNetInt", + "location": "FranceCentral", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/SecGroupNet", + "Microsoft.Network/virtualNetworks/vNet", + "Microsoft.Network/publicIpAddresses/linuxvmPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecGroupNet" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "linuxvm", + "location": "FranceCentral", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/linuxvmNetInt" + ], + "zones": [ + "1" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/linuxvmNetInt" + } + ] + }, + "osProfile": { + "computerName": "linuxvm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + } + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1107 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1107 new file mode 100644 index 0000000..66ffe5f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1107 @@ -0,0 +1,262 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-specialized-vhd-new-or-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-specialized-vhd-new-or-existing-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962904477, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-specialized-vhd-new-or-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-specialized-vhd-new-or-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1107", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/disks", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1107", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "newvm", + "metadata": { + "description": "Name of the VM" + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "defaultValue": "Windows", + "metadata": { + "description": "Type of OS on the existing vhd" + } + }, + "osDiskVhdUri": { + "type": "string", + "metadata": { + "description": "Uri of the existing VHD in ARM standard or premium storage" + }, + "value": "GEN-SPECIALIZED-WINVHD-URI" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "vNetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Specify whether to create a new or existing virtual network for the VM." + }, + "value": "existing" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "newVnet", + "metadata": { + "description": "Name of the existing VNET" + }, + "value": "GEN-VNET-NAME" + }, + "virtualNetworkResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "GEN-VNET-RESOURCEGROUP-NAME" + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet-1", + "metadata": { + "description": "Name of the subnet in the virtual network you want to use" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "dnsNameForPublicIP": { + "type": "string", + "defaultValue": "[concat('vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "diagStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'specvm')]", + "subnetRef": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "nicName": "nic", + "publicIPAddressName": "publicIp", + "diskName": "newvm-disk" + }, + "resources": [ + { + "condition": false, + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('diagStorageAccountName')]", + "apiVersion": "2018-07-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "publicIp" + ], + "tags": { + "displayName": "NetworkInterface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + }, + "subnet": { + "id": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/disks", + "apiVersion": "2018-09-30", + "name": "newvm-disk", + "location": "[resourceGroup().location]", + "properties": { + "creationData": { + "createOption": "Import", + "sourceUri": "GEN-SPECIALIZED-WINVHD-URI" + }, + "osType": "Windows" + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "newvm", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "nic", + "newvm-disk" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "osDisk": { + "osType": "Windows", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/newvm-disk" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagStorageAccountName')).primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1108 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1108 new file mode 100644 index 0000000..17d5bd7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1108 @@ -0,0 +1,399 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904486, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1108", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1108", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Name" + }, + "value": "GEN-UNIQUE-8" + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Size" + }, + "defaultValue": "Standard_D2s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Administrator User Name" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Virtual Machine Administrator Password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Storage Account Name" + }, + "value": "GEN-UNIQUE" + }, + "storageAccountType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Storage Account Type" + }, + "allowedValues": [ + "Premium_LRS", + "Standard_LRS" + ], + "defaultValue": "Premium_LRS", + "value": "Premium_LRS" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Virtual Network Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkInterfaceName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Interface Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkSecurityGroupName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Security Group Name" + }, + "value": "GEN-UNIQUE-13" + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/16", + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "default", + "value": "default" + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/24", + "value": "10.0.0.0/24" + }, + "publicIpAddressName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Name" + }, + "value": "GEN-UNIQUE-13" + }, + "publicIpAddressType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Type" + }, + "defaultValue": "Dynamic", + "value": "Dynamic" + }, + "sqlAutobackupStorageAccountName": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Backup Storage Account Name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default" + }, + "resources": [ + { + "name": "GEN-UNIQUE-8", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-13", + "Microsoft.Storage/storageAccounts//GEN-UNIQUE" + ], + "properties": { + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": "true" + } + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2014SP2-WS2012R2", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-8_DataDisk1", + "createOption": "Empty", + "lun": 0, + "diskSizeGB": 1023, + "caching": "ReadOnly" + }, + { + "name": "GEN-UNIQUE-8_DataDisk2", + "createOption": "Empty", + "lun": 1, + "diskSizeGB": 1023, + "caching": "ReadOnly" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-13" + } + ] + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/SqlIaasExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8" + ], + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": true, + "settings": { + "AutoTelemetrySettings": { + "Region": "[resourceGroup().location]" + }, + "AutoPatchingSettings": { + "PatchCategory": "WindowsMandatoryUpdates", + "Enable": true, + "DayOfWeek": "Sunday", + "MaintenanceWindowStartingHour": "2", + "MaintenanceWindowDuration": "60" + }, + "KeyVaultCredentialSettings": { + "Enable": false + }, + "ServerConfigurationsManagementSettings": { + "SQLConnectivityUpdateSettings": { + "ConnectivityType": "Private", + "Port": "1433" + }, + "SQLWorkloadTypeUpdateSettings": { + "SQLWorkloadType": "GENERAL" + }, + "SQLStorageUpdateSettings": { + "DiskCount": "1", + "NumberOfColumns": "1", + "StartingDeviceID": "2", + "DiskConfigurationType": "NEW" + }, + "AdditionalFeaturesServerConfigurations": { + "IsRServicesEnabled": "false" + } + } + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Premium_LRS" + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-13", + "Microsoft.Network/publicIpAddresses//GEN-UNIQUE-13", + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-13" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-13" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-13" + } + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-sql", + "properties": { + "priority": 1500, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "1433", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[parameters('virtualMachineName')]" + }, + "sqlAutobackupStorageAccountName": { + "type": "string", + "value": "[parameters('sqlAutobackupStorageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1109 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1109 new file mode 100644 index 0000000..a39adf9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1109 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/azuredeploy.parameters.json" + ], + "timestamp": 1642962904494, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autobackup-update/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1109", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1109", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingVirtualMachineName": { + "type": "string", + "metadata": { + "description": "Existing SQL Server virtual machine name" + }, + "value": "GET-PREREQ-vmName" + }, + "sqlAutobackupRetentionPeriod": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Backup Retention Period" + }, + "allowedValues": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30" + ], + "defaultValue": "2", + "value": "20" + }, + "sqlAutobackupStorageAccountName": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Backup Storage Account Name" + }, + "value": "GET-PREREQ-sqlAutobackupStorageAccountName" + }, + "sqlAutobackupEncryptionPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Auto Backup Encryption Password" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmName/SqlIaasExtension", + "location": "[resourceGroup().location]", + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": true, + "settings": { + "AutoBackupSettings": { + "Enable": true, + "RetentionPeriod": "20", + "EnableEncryption": true + } + }, + "protectedSettings": { + "StorageUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('sqlAutobackupStorageAccountName')), '2021-04-01').primaryEndpoints['blob']]", + "StorageAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('sqlAutobackupStorageAccountName')), '2021-04-01').keys[0].value]", + "Password": "GEN-PASSWORD" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT111 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT111 new file mode 100644 index 0000000..d14b7f1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT111 @@ -0,0 +1,288 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/django/django-app/azuredeploy.json", + "/application-workloads/django/django-app/azuredeploy.parameters.json" + ], + "timestamp": 1642962886840, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/django/django-app/azuredeploy.json", + "/application-workloads/django/django-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT111", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT111", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Storage Account" + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Administrator of the VM" + }, + "value": "GEN-UNIQUE" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Image SKU" + }, + "allowedValues": [ + "14.04.5-LTS", + "16.04.0-LTS", + "18.04-LTS" + ] + }, + "vmDnsName": { + "type": "string", + "metadata": { + "description": "DNS Name for the Public IP. Must be lowercase." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet-1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-8", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-8", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/newuserscript", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_django.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install_django.sh GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1110 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1110 new file mode 100644 index 0000000..429b9c5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1110 @@ -0,0 +1,297 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904501, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1110", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1110", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "metadata": { + "description": "Virtual Machine size" + }, + "value": "Standard_D2s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username to access virtual Machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password to access virtual Machines" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]", + "vmNSGName": "ExistingNsg", + "ipAddressName": "ExistingPip", + "virtualNetworkName": "ExistingVNet", + "vmNicName": "ExistingNic", + "vmName": "ExistingWinVm" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "comments": "Storage account used to store VM disks", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "ExistingNsg", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "NSG for the VM subnet.", + "tags": { + "displayName": "VM NSG" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "ExistingPip", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": " Public IP used by the Jump VM", + "tags": { + "displayName": "VM Public IP" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "ExistingVNet", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/ExistingNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ExistingNsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "ExistingNic", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "NIC for the VM", + "tags": { + "displayName": "VM NIC" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/ExistingVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ExistingPip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/ExistingVNet/default" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "ExistingWinVm", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "comments": "Windows VM", + "tags": { + "displayName": "Virtual Machine" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('vmNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "windowsvm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": "true" + } + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2014SP2-WS2012R2", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "ExistingWinVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "ExistingWinVm_DataDisk1", + "createOption": "Empty", + "lun": 0, + "diskSizeGB": 1023, + "caching": "ReadOnly" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ExistingNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "ExistingWinVm/SqlIaasExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ExistingWinVm" + ], + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": "true", + "settings": { + "AutoTelemetrySettings": { + "Region": "[resourceGroup().location]" + }, + "AutoPatchingSettings": { + "PatchCategory": "WindowsMandatoryUpdates", + "Enable": true, + "DayOfWeek": "Sunday", + "MaintenanceWindowStartingHour": "2", + "MaintenanceWindowDuration": "60" + }, + "KeyVaultCredentialSettings": { + "Enable": false + }, + "ServerConfigurationsManagementSettings": { + "SQLConnectivityUpdateSettings": { + "ConnectivityType": "Private", + "Port": "1433" + }, + "SQLWorkloadTypeUpdateSettings": { + "SQLWorkloadType": "GENERAL" + }, + "SQLStorageUpdateSettings": { + "DiskCount": "1", + "NumberOfColumns": "1", + "StartingDeviceID": "2", + "DiskConfigurationType": "NEW" + }, + "AdditionalFeaturesServerConfigurations": { + "IsRServicesEnabled": "false" + } + } + } + } + } + ], + "outputs": { + "existingVirtualMachineName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1111 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1111 new file mode 100644 index 0000000..16ed930 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1111 @@ -0,0 +1,144 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/azuredeploy.parameters.json" + ], + "timestamp": 1642962904509, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-autopatching-update/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1111", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1111", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingVirtualMachineName": { + "type": "string", + "metadata": { + "description": "Existing SQL Server virtual machine name." + }, + "value": "GET-PREREQ-existingVirtualMachineName" + }, + "sqlAutopatchingDayOfWeek": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Patching Day of A Week" + }, + "allowedValues": [ + "Everyday", + "Never", + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "defaultValue": "Sunday", + "value": "Friday" + }, + "sqlAutopatchingStartHour": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Patching Starting Hour" + }, + "allowedValues": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23" + ], + "defaultValue": "2", + "value": "2" + }, + "sqlAutopatchingWindowDuration": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Patching Duration Window in minutes" + }, + "allowedValues": [ + "30", + "60", + "90", + "120", + "150", + "180" + ], + "defaultValue": "60", + "value": "60" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-existingVirtualMachineName/SqlIaasExtension", + "location": "[resourceGroup().location]", + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": "true", + "settings": { + "AutoPatchingSettings": { + "PatchCategory": "WindowsMandatoryUpdates", + "Enable": true, + "DayOfWeek": "Friday", + "MaintenanceWindowStartingHour": "2", + "MaintenanceWindowDuration": "60" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1112 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1112 new file mode 100644 index 0000000..c91a852 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1112 @@ -0,0 +1,424 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904514, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1112", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1112", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Name" + }, + "value": "GEN-UNIQUE-8" + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Size" + }, + "defaultValue": "Standard_D2s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Administrator User Name" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Virtual Machine Administrator Password" + }, + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Virtual Network Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkInterfaceName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Interface Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkSecurityGroupName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Security Group Name" + }, + "value": "GEN-UNIQUE-13" + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/16", + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "default", + "value": "default" + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/24", + "value": "10.0.0.0/24" + }, + "publicIpAddressName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Name" + }, + "value": "GEN-UNIQUE-13" + }, + "publicIpAddressType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Type" + }, + "defaultValue": "Dynamic", + "value": "Dynamic" + }, + "vaultName": { + "type": "string", + "defaultValue": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the KeyVault, this value must be globally unique." + } + }, + "accessPolicies": { + "type": "array", + "metadata": { + "description": "Access policies of the Key Vault." + }, + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ], + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ] + } + } + ] + }, + "tenantId": { + "type": "string", + "metadata": { + "description": "Tenant ID for the Key Vault." + }, + "value": "GEN-AZUREAD-AKS-TENANTID" + }, + "storageAccountType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Storage Account Type" + }, + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "defaultValue": "Premium_LRS", + "value": "Premium_LRS" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default" + }, + "resources": [ + { + "name": "vault-prereq", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "accessPolicies": { + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ], + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ] + } + } + ] + }, + "vaultName": { + "value": "[concat('keyvault-', uniqueString(resourceGroup().id))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "enabledForDeployment": { + "value": true + }, + "enabledForDiskEncryption": { + "value": true + }, + "enabledForTemplateDeployment": { + "value": true + }, + "tenantId": { + "value": "GEN-AZUREAD-AKS-TENANTID" + } + } + } + }, + { + "name": "GEN-UNIQUE-8", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-13" + ], + "properties": { + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": true + } + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "sql2014sp3-ws2012r2", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-8_DataDisk-1", + "createOption": "Empty", + "lun": 0, + "diskSizeGB": 1023, + "caching": "ReadOnly" + }, + { + "name": "GEN-UNIQUE-8_DataDisk-2", + "createOption": "Empty", + "lun": 1, + "diskSizeGB": 1023, + "caching": "ReadOnly" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-13" + } + ] + } + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-13", + "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-13", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-13" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-13" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-13" + } + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-sql", + "properties": { + "priority": 1500, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "1433", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[parameters('virtualMachineName')]" + }, + "outKeyVaultName": { + "type": "string", + "value": "[parameters('vaultName')]" + }, + "outKeyVaultResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1113 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1113 new file mode 100644 index 0000000..8fd25cf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1113 @@ -0,0 +1,109 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/azuredeploy.parameters.json" + ], + "timestamp": 1642962904521, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-existing-keyvault-update/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1113", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1113", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingVirtualMachineName": { + "type": "string", + "metadata": { + "description": "Existing SQL Server virtual machine name" + }, + "value": "GET-PREREQ-vmName" + }, + "sqlCredentialName": { + "type": "string", + "metadata": { + "description": "SQL credential name to create on the SQL Server virtual machine" + }, + "value": "mySQLCredentialName" + }, + "servicePrincipalName": { + "type": "string", + "metadata": { + "description": "Azure Key Vault principal name or id" + }, + "value": "GEN-AZUREAD-AKS-APPID" + }, + "servicePrincipalSecret": { + "type": "securestring", + "metadata": { + "description": "Azure Key Vault principal secret" + }, + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "sqlAkvName": { + "type": "string", + "metadata": { + "description": "Azure Key Vault Name" + }, + "value": "GET-PREREQ-outKeyVaultName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sqlAkvUrl": "[concat('https://', parameters('sqlAkvName'), environment().suffixes.keyVaultDns)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmName/SqlIaasExtension", + "location": "[resourceGroup().location]", + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": "true", + "settings": { + "KeyVaultCredentialSettings": { + "Enable": true, + "CredentialName": "mySQLCredentialName" + } + }, + "protectedSettings": { + "PrivateKeyVaultCredentialSettings": { + "AzureKeyVaultUrl": "[variables('sqlAkvUrl')]", + "ServicePrincipalName": "GEN-AZUREAD-AKS-APPID", + "ServicePrincipalSecret": "GEN-AZUREAD-AKS-APPID-SECRET" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1114 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1114 new file mode 100644 index 0000000..1b2db9f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1114 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/nested/preparingSqlServerSa.json" + ], + "timestamp": 1642962904528, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/nested/preparingSqlServerSa.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1114", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1114", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlVMName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "sqlUsername": { + "type": "string" + }, + "sqlPassword": { + "type": "securestring" + }, + "disksCount": { + "type": "int" + }, + "diskSizeInGB": { + "type": "int" + }, + "sqlEnginePort": { + "type": "int" + }, + "workloadType": { + "type": "string" + }, + "connectionType": { + "type": "string" + }, + "sqlVMPrepareModulesURL": { + "type": "string" + }, + "sqlVMPrepareConfigurationFunction": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVMName/dscExtension", + "apiVersion": "2020-06-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": false, + "settings": { + "ModulesUrl": "sqlVMPrepareModulesURL", + "ConfigurationFunction": "sqlVMPrepareConfigurationFunction", + "properties": { + "SQLAdminAuthCreds": { + "userName": "adminUsername", + "Password": "privateSettingsRef:AdminPassword" + }, + "SQLAuthCreds": { + "userName": "sqlUsername", + "Password": "privateSettingsRef:SqlAuthPassword" + }, + "DisksCount": "disksCount", + "DiskSizeInGB": "diskSizeInGB", + "DatabaseEnginePort": "sqlEnginePort", + "WorkloadType": "workloadType", + "ConnectionType": "connectionType" + } + }, + "protectedSettings": { + "items": { + "AdminPassword": "adminPassword", + "SqlAuthPassword": "sqlPassword" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1115 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1115 new file mode 100644 index 0000000..b47e9d5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1115 @@ -0,0 +1,548 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/azuredeploy.parameters.json" + ], + "timestamp": 1642962904535, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-autobackup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1115", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1115", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Name" + }, + "value": "myVM" + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Size" + }, + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3" + ], + "defaultValue": "Standard_D8s_v3", + "value": "Standard_D8s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Administrator User Name" + }, + "value": "myVmAdmin" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Virtual Machine Administrator Password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Storage Account Type" + }, + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "defaultValue": "Premium_LRS", + "value": "Premium_LRS" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Virtual Network Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkInterfaceName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Interface Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkSecurityGroupName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Security Group Name" + }, + "value": "GEN-UNIQUE-13" + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/16", + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "default", + "value": "default" + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/24", + "value": "10.0.0.0/24" + }, + "publicIpAddressName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Name" + }, + "value": "GEN-UNIQUE-13" + }, + "publicIpAddressType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Type" + }, + "defaultValue": "Dynamic", + "value": "Dynamic" + }, + "sqlConnectivityType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine SQL Connectivity Type" + }, + "defaultValue": "Public", + "value": "Public" + }, + "sqlPortNumber": { + "type": "int", + "metadata": { + "description": "SQL Server Virtual Machine SQL Port Number" + }, + "defaultValue": 1579, + "value": 1579 + }, + "sqlStorageDisksCount": { + "type": "int", + "metadata": { + "description": "SQL Server Virtual Machine Data Disk Count" + }, + "defaultValue": 2, + "value": 2 + }, + "sqlStorageWorkloadType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Workload Type: GENERAL - general work load; DW - datawear house work load; OLTP - Transactional processing work load" + }, + "allowedValues": [ + "GENERAL", + "OLTP", + "DW" + ], + "defaultValue": "GENERAL", + "value": "GENERAL" + }, + "sqlAutobackupRetentionPeriod": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Backup Retention Period" + }, + "allowedValues": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30" + ], + "defaultValue": "30", + "value": "30" + }, + "sqlAutobackupStorageAccountName": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Backup Storage Account Name" + }, + "value": "GEN-UNIQUE" + }, + "sqlAutobackupEncryptionPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Auto Backup Encryption Password" + }, + "value": "GEN-PASSWORD" + }, + "sqlAuthenticationLogin": { + "type": "string", + "metadata": { + "description": "SQL Server Authentication Login Account Name" + }, + "defaultValue": "mysa", + "value": "mySqlAdmin" + }, + "sqlAuthenticationPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Authentication Login Account Password" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "URI to artifacts location" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + }, + "defaultValue": "" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default" + }, + "resources": [ + { + "name": "myVM", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-13" + ], + "properties": { + "osProfile": { + "computerName": "myVM", + "adminUsername": "myVmAdmin", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": true + } + }, + "hardwareProfile": { + "vmSize": "Standard_D8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2014SP2-WS2012R2", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [ + { + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "lun": 0, + "diskSizeGB": 1023, + "caching": "ReadOnly" + }, + { + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "lun": 1, + "diskSizeGB": 1023, + "caching": "ReadOnly" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-13" + } + ] + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myVM/SqlIaasExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//myVM" + ], + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": true, + "settings": { + "AutoTelemetrySettings": { + "Region": "[resourceGroup().location]" + }, + "AutoBackupSettings": { + "Enable": true, + "RetentionPeriod": "30", + "EnableEncryption": true + } + }, + "protectedSettings": { + "StorageUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('sqlAutobackupStorageAccountName')), '2015-06-15').primaryEndpoints['blob']]", + "StorageAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('sqlAutobackupStorageAccountName')), '2015-06-15').key1]", + "Password": "GEN-PASSWORD" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "prepareSqlVmDeployment", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/myVM/SqlIaasExtension" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/preparingSqlServerSa.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "sqlVMName": { + "value": "myVM" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "myVmAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "sqlUsername": { + "value": "mySqlAdmin" + }, + "sqlPassword": { + "value": "GEN-PASSWORD" + }, + "disksCount": { + "value": 2 + }, + "diskSizeInGB": { + "value": 1023 + }, + "sqlEnginePort": { + "value": 1579 + }, + "workloadType": { + "value": "GENERAL" + }, + "connectionType": { + "value": "Public" + }, + "sqlVMPrepareModulesURL": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/PrepareSqlServer.ps1.zip', parameters('_artifactsLocationSasToken')))]" + }, + "sqlVMPrepareConfigurationFunction": { + "value": "PrepareSqlServerSa.ps1\\PrepareSqlServerSa" + } + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-13", + "Microsoft.Network/publicIpAddresses//GEN-UNIQUE-13", + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-13" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-13" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-13" + } + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-sql", + "properties": { + "priority": 1500, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "1433", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1116 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1116 new file mode 100644 index 0000000..ba5cf58 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1116 @@ -0,0 +1,309 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autopatching/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-autopatching/azuredeploy.parameters.json" + ], + "timestamp": 1642962904546, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-autopatching/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-autopatching/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1116", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1116", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Name" + }, + "defaultValue": "vmName" + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Size" + }, + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3" + ], + "defaultValue": "Standard_D2s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Administrator User Name" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "SQL Server Virtual Machine Administrator Password" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]", + "vmNSGName": "ExistingNsg", + "ipAddressName": "ExistingPip", + "virtualNetworkName": "ExistingVNet", + "vmNicName": "ExistingNic" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "comments": "Storage account used to store VM disks", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "ExistingNsg", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "NSG for the VM subnet.", + "tags": { + "displayName": "VM NSG" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "ExistingPip", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": " Public IP used by the Jump VM", + "tags": { + "displayName": "VM Public IP" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "ExistingVNet", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//ExistingNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ExistingNsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "ExistingNic", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "NIC for the VM", + "tags": { + "displayName": "VM NIC" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//ExistingVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ExistingPip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/ExistingVNet/default" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "comments": "Windows VM", + "tags": { + "displayName": "Virtual Machine" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('vmNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "windowsvm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": "true" + } + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2014SP2-WS2012R2", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "vmName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmName_DataDisk1", + "createOption": "Empty", + "lun": 0, + "diskSizeGB": 1023, + "caching": "ReadOnly" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ExistingNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/SqlIaasExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": "true", + "settings": { + "AutoTelemetrySettings": { + "Region": "[resourceGroup().location]" + }, + "AutoPatchingSettings": { + "PatchCategory": "WindowsMandatoryUpdates", + "Enable": true, + "DayOfWeek": "Sunday", + "MaintenanceWindowStartingHour": "2", + "MaintenanceWindowDuration": "60" + }, + "KeyVaultCredentialSettings": { + "Enable": false + }, + "ServerConfigurationsManagementSettings": { + "SQLConnectivityUpdateSettings": { + "ConnectivityType": "Private", + "Port": "1433" + }, + "SQLWorkloadTypeUpdateSettings": { + "SQLWorkloadType": "GENERAL" + }, + "SQLStorageUpdateSettings": { + "DiskCount": "1", + "NumberOfColumns": "1", + "StartingDeviceID": "2", + "DiskConfigurationType": "NEW" + }, + "AdditionalFeaturesServerConfigurations": { + "IsRServicesEnabled": "false" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1117 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1117 new file mode 100644 index 0000000..3a1cb2e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1117 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/nested/preparingSqlServerSa.json" + ], + "timestamp": 1642962904554, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/nested/preparingSqlServerSa.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1117", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1117", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlVMName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "sqlUsername": { + "type": "string" + }, + "sqlPassword": { + "type": "securestring" + }, + "disksCount": { + "type": "int" + }, + "diskSizeInGB": { + "type": "int" + }, + "sqlEnginePort": { + "type": "int" + }, + "workloadType": { + "type": "string" + }, + "connectionType": { + "type": "string" + }, + "sqlVMPrepareModulesURL": { + "type": "string" + }, + "sqlVMPrepareConfigurationFunction": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVMName/dscExtension", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": false, + "settings": { + "ModulesUrl": "sqlVMPrepareModulesURL", + "ConfigurationFunction": "sqlVMPrepareConfigurationFunction", + "properties": { + "SQLAdminAuthCreds": { + "userName": "adminUsername", + "Password": "privateSettingsRef:AdminPassword" + }, + "SQLAuthCreds": { + "userName": "sqlUsername", + "Password": "privateSettingsRef:SqlAuthPassword" + }, + "DisksCount": "disksCount", + "DiskSizeInGB": "diskSizeInGB", + "DatabaseEnginePort": "sqlEnginePort", + "WorkloadType": "workloadType", + "ConnectionType": "connectionType" + } + }, + "protectedSettings": { + "items": { + "AdminPassword": "adminPassword", + "SqlAuthPassword": "sqlPassword" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1118 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1118 new file mode 100644 index 0000000..2273e37 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1118 @@ -0,0 +1,152 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904562, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1118", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1118", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the KeyVault, this value must be globally unique." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + }, + "accessPolicies": { + "type": "array", + "metadata": { + "description": "Access policies of the Key Vault." + }, + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ], + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ] + } + } + ] + }, + "tenantId": { + "type": "string", + "metadata": { + "description": "Tenant ID for the Key Vault." + }, + "value": "GEN-AZUREAD-AKS-TENANTID" + } + }, + "resources": [ + { + "name": "vault-prereq", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "accessPolicies": { + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ], + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ] + } + } + ] + }, + "vaultName": { + "value": "[concat('keyvault-', uniqueString(resourceGroup().id))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "enabledForDeployment": { + "value": true + }, + "enabledForDiskEncryption": { + "value": true + }, + "enabledForTemplateDeployment": { + "value": true + }, + "tenantId": { + "value": "GEN-AZUREAD-AKS-TENANTID" + } + } + } + } + ], + "outputs": { + "outKeyVaultName": { + "type": "string", + "value": "[parameters('vaultName')]" + }, + "outKeyVaultResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1119 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1119 new file mode 100644 index 0000000..fad9ffb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1119 @@ -0,0 +1,502 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/azuredeploy.parameters.json" + ], + "timestamp": 1642962904571, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sql-full-keyvault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1119", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1119", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Name" + }, + "value": "GEN-UNIQUE-8" + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Size" + }, + "defaultValue": "Standard_D2s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Administrator User Name" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Virtual Machine Administrator Password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Storage Account Type" + }, + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "defaultValue": "Premium_LRS", + "value": "Premium_LRS" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Virtual Network Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkInterfaceName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Interface Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkSecurityGroupName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Security Group Name" + }, + "value": "GEN-UNIQUE-13" + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/16", + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "default", + "value": "default" + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/24", + "value": "10.0.0.0/24" + }, + "publicIpAddressName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Name" + }, + "value": "GEN-UNIQUE-13" + }, + "publicIpAddressType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Type" + }, + "defaultValue": "Dynamic", + "value": "Dynamic" + }, + "sqlConnectivityType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine SQL Connectivity Type" + }, + "defaultValue": "Public", + "value": "Public" + }, + "sqlPortNumber": { + "type": "int", + "metadata": { + "description": "SQL Server Virtual Machine SQL Port Number" + }, + "defaultValue": 1579, + "value": 1579 + }, + "sqlStorageDisksCount": { + "type": "int", + "metadata": { + "description": "SQL Server Virtual Machine Data Disk Count" + }, + "defaultValue": 2, + "value": 2 + }, + "sqlStorageWorkloadType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Workload Type: GENERAL - general work load; DW - datawear house work load; OLTP - Transactional processing work load" + }, + "allowedValues": [ + "GENERAL", + "OLTP", + "DW" + ], + "defaultValue": "GENERAL", + "value": "GENERAL" + }, + "sqlAkvCredentialName": { + "type": "string", + "metadata": { + "description": "SQL credential name to create on the SQL Server virtual machine" + }, + "value": "myAkvCredentialName" + }, + "sqlAkvName": { + "type": "string", + "metadata": { + "description": "Azure Key Vault Name" + }, + "value": "GET-PREREQ-outKeyVaultName" + }, + "sqlAkvPrincipalName": { + "type": "string", + "metadata": { + "description": "Azure Key Vault principal name or id" + }, + "value": "GEN-AZUREAD-AKS-APPID" + }, + "sqlAkvPrincipalSecret": { + "type": "securestring", + "metadata": { + "description": "Azure Key Vault principal secret" + }, + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "sqlAuthenticationLogin": { + "type": "string", + "metadata": { + "description": "SQL Server Authentication Login Account Name" + }, + "defaultValue": "mysa", + "value": "mySqlAdmin" + }, + "sqlAuthenticationPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Authentication Login Account Password" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default", + "sqlAkvUrl": "[concat('https://', parameters('sqlAkvName'), environment().suffixes.keyVaultDns)]" + }, + "resources": [ + { + "name": "GEN-UNIQUE-8", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-13" + ], + "properties": { + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": true + } + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "sql2014sp3-ws2012r2", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-8_DataDisk-1", + "createOption": "Empty", + "lun": 0, + "diskSizeGB": 1023, + "caching": "ReadOnly" + }, + { + "name": "GEN-UNIQUE-8_DataDisk-2", + "createOption": "Empty", + "lun": 1, + "diskSizeGB": 1023, + "caching": "ReadOnly" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-13" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/SqlIaasExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-8" + ], + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": true, + "settings": { + "AutoTelemetrySettings": { + "Region": "[resourceGroup().location]" + }, + "KeyVaultCredentialSettings": { + "Enable": true, + "CredentialName": "myAkvCredentialName" + } + }, + "protectedSettings": { + "PrivateKeyVaultCredentialSettings": { + "AzureKeyVaultUrl": "[variables('sqlAkvUrl')]", + "ServicePrincipalName": "GEN-AZUREAD-AKS-APPID", + "ServicePrincipalSecret": "GEN-AZUREAD-AKS-APPID-SECRET" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "prepareSqlVmDeployment", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/GEN-UNIQUE-8/SqlIaasExtension" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/preparingSqlServerSa.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "sqlVMName": { + "value": "GEN-UNIQUE-8" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "sqlUsername": { + "value": "mySqlAdmin" + }, + "sqlPassword": { + "value": "GEN-PASSWORD" + }, + "disksCount": { + "value": 2 + }, + "diskSizeInGB": { + "value": 1023 + }, + "sqlEnginePort": { + "value": 1579 + }, + "workloadType": { + "value": "GENERAL" + }, + "connectionType": { + "value": "Public" + }, + "sqlVMPrepareModulesURL": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/PrepareSqlServer.ps1.zip', parameters('_artifactsLocationSasToken')))]" + }, + "sqlVMPrepareConfigurationFunction": { + "value": "PrepareSqlServerSa.ps1\\PrepareSqlServerSa" + } + } + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-13", + "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-13", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-13" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-13" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-13" + } + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-sql", + "properties": { + "priority": 1500, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "1433", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT112 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT112 new file mode 100644 index 0000000..332d46a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT112 @@ -0,0 +1,412 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/django/sqldb-django-on-ubuntu/azuredeploy.json", + "/application-workloads/django/sqldb-django-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962886907, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/django/sqldb-django-on-ubuntu/azuredeploy.json", + "/application-workloads/django/sqldb-django-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT112", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT112", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Storage Account" + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Administrator of the VM" + }, + "value": "GEN-UNIQUE" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Image SKU" + } + }, + "vmDnsName": { + "type": "string", + "metadata": { + "description": "DNS Name for the Public IP. Must be lowercase." + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "Admin username for SQL Database" + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for SQL Database" + }, + "value": "GEN-PASSWORD" + }, + "collation": { + "type": "string", + "metadata": { + "description": "SQL Collation" + }, + "defaultValue": "SQL_Latin1_General_CP1_CI_AS" + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "Name of your SQL Database" + }, + "value": "GEN-UNIQUE-8" + }, + "edition": { + "type": "string", + "metadata": { + "description": "SQL Database Edition" + }, + "allowedValues": [ + "Standard", + "Premium" + ], + "value": "Standard" + }, + "maxSizeBytes": { + "type": "string", + "metadata": { + "description": "Max DB size in bytes" + }, + "defaultValue": "268435456000" + }, + "requestedServiceObjectiveId": { + "type": "string", + "metadata": { + "description": "Requested Service Objective ID" + }, + "defaultValue": "f1173c43-91bd-4aaa-973c-54e79e15235b" + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Unique name of your SQL Server" + }, + "value": "GEN-UNIQUE-8" + }, + "firewallStartIP": { + "type": "string", + "defaultValue": "0.0.0.0", + "metadata": { + "description": "Start IP for your firewall rule, for example 0.0.0.0" + }, + "value": "0.0.0.0" + }, + "firewallEndIP": { + "type": "string", + "defaultValue": "0.0.0.0", + "metadata": { + "description": "End IP for your firewall rule, for example 255.255.255.255" + }, + "value": "255.255.255.255" + }, + "version": { + "type": "string", + "metadata": { + "description": "SQL Version" + }, + "defaultValue": "12.0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_B1s", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet-1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-8", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "apiVersion": "2020-11-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE-8" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-8", + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Standard", + "maxSizeBytes": "268435456000", + "requestedServiceObjectiveId": "f1173c43-91bd-4aaa-973c-54e79e15235b" + }, + "type": "databases" + }, + { + "apiVersion": "2020-11-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE-8" + ], + "location": "[resourceGroup().location]", + "name": "FirewallRule1", + "properties": { + "endIpAddress": "255.255.255.255", + "startIpAddress": "0.0.0.0" + }, + "type": "firewallrules" + } + ], + "type": "Microsoft.Sql/servers" + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-8", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-8", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1s" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/django", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_django.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_django.sh GEN-UNIQUE GEN-UNIQUE-8 GEN-UNIQUE GEN-PASSWORD GEN-UNIQUE-8" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1120 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1120 new file mode 100644 index 0000000..0519fbf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1120 @@ -0,0 +1,250 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-sshkey/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sshkey/azuredeploy.parameters.json" + ], + "timestamp": 1642962904578, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-sshkey/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-sshkey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1120", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1120", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "projectName": { + "type": "string", + "metadata": { + "description": "Specifies a name for generating resource names." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Specifies a username for the Virtual Machine." + }, + "value": "azureuser" + }, + "adminPublicKey": { + "type": "string", + "metadata": { + "description": "Specifies the SSH rsa public key file as a string. Use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "description" + } + } + }, + "variables": { + "vNetName": "GEN-UNIQUE-8-vnet", + "vNetAddressPrefixes": "10.0.0.0/16", + "vNetSubnetName": "default", + "vNetSubnetAddressPrefix": "10.0.0.0/24", + "vmName": "GEN-UNIQUE-8-vm", + "publicIPAddressName": "GEN-UNIQUE-8-ip", + "networkInterfaceName": "GEN-UNIQUE-8-nic", + "networkSecurityGroupName": "GEN-UNIQUE-8-nsg", + "networkSecurityGroupName2": "default-nsg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE-8-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh_rule", + "properties": { + "description": "Locks inbound down to ssh default port 22.", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 123, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE-8-ip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + }, + "sku": { + "name": "Basic" + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('vNetSubnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE-8-vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE-8-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8-ip", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8-vnet", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8-ip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8-vnet/default" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-11-01", + "name": "GEN-UNIQUE-8-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8-vm", + "adminUsername": "azureuser", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/azureuser/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18_04-lts-gen2", + "version": "latest" + }, + "osDisk": { + "createOption": "fromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1121 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1121 new file mode 100644 index 0000000..75b9785 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1121 @@ -0,0 +1,313 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-tags/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-tags/azuredeploy.parameters.json" + ], + "timestamp": 1642962904584, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-tags/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-tags/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1121", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1121", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[concat('vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2016-Datacenter", + "2016-Datacenter-Server-Core", + "2016-Datacenter-Server-Core-smalldisk", + "2016-Datacenter-smalldisk", + "2016-Datacenter-with-Containers", + "2016-Datacenter-with-RDSH", + "2016-Datacenter-zhcn", + "2019-Datacenter", + "2019-Datacenter-Core", + "2019-Datacenter-Core-smalldisk", + "2019-Datacenter-Core-with-Containers", + "2019-Datacenter-Core-with-Containers-smalldisk", + "2019-datacenter-gensecond", + "2019-Datacenter-smalldisk", + "2019-Datacenter-with-Containers", + "2019-Datacenter-with-Containers-smalldisk", + "2019-Datacenter-zhcn", + "Datacenter-Core-1803-with-Containers-smalldisk", + "Datacenter-Core-1809-with-Containers-smalldisk", + "Datacenter-Core-1903-with-Containers-smalldisk" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "departmentName": { + "type": "string", + "defaultValue": "MyDepartment", + "metadata": { + "description": "Department Tag" + } + }, + "applicationName": { + "type": "string", + "defaultValue": "MyApp", + "metadata": { + "description": "Application Tag" + } + }, + "createdBy": { + "type": "string", + "defaultValue": "MyName", + "metadata": { + "description": "Created By Tag" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_V3", + "metadata": { + "description": "Size for the virtual machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'satagsvm')]", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2020-08-01-preview", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + }, + "tags": { + "Department": "MyDepartment", + "Application": "MyApp", + "Created By": "MyName" + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "tags": { + "Department": "MyDepartment", + "Application": "MyApp", + "Created By": "MyName" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "tags": { + "Department": "MyDepartment", + "Application": "MyApp", + "Created By": "MyName" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "tags": { + "Department": "MyDepartment", + "Application": "MyApp", + "Created By": "MyName" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyVM", + "location": "[resourceGroup().location]", + "tags": { + "Department": "MyDepartment", + "Application": "MyApp", + "Created By": "MyName" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_V3" + }, + "osProfile": { + "computerName": "MyVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName')).primaryEndpoints['blob']]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1122 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1122 new file mode 100644 index 0000000..34769d2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1122 @@ -0,0 +1,425 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-trustedlaunch-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-trustedlaunch-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962904593, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-trustedlaunch-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-trustedlaunch-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1122", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1122", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "myTVM", + "metadata": { + "description": "The name of you virtual machine." + } + }, + "os": { + "type": "string", + "defaultValue": "Ubuntu-1804", + "allowedValues": [ + "Ubuntu-1804", + "Ubuntu-2004", + "RHEL-83", + "SUSE-15-SP2" + ], + "metadata": { + "description": "The OS for the virtual machine. This will pick the latest fully patched image of the given OS." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the virtual machine" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the virtual machine. SSH Public key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Public Key or password for the virtual machine. SSH Public key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "secureBoot": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "Secure Boot setting of the virtual machine." + } + }, + "vTPM": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "vTPM setting of the virtual machine." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + }, + "value": "southcentralus" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat(parameters('vmName'), '-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "publicIpName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name for the Public IP used to access the virtual machine." + } + }, + "publicIPAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Allocation method for the Public IP used to access the virtual machine." + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "SKU for the Public IP used to access the virtual machine." + } + }, + "nicName": { + "type": "string", + "defaultValue": "nic", + "metadata": { + "description": "Name of the network interface" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vnet", + "metadata": { + "description": "Name of the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "nsg", + "metadata": { + "description": "Name of the network security group" + } + }, + "maaEndpoint": { + "type": "string", + "defaultValue": "https://sharedeus2.eus2.attest.azure.net/", + "allowedValues": [ + "https://sharedcus.cus.attest.azure.net/", + "https://sharedcae.cae.attest.azure.net/", + "https://sharedeus2.eus2.attest.azure.net/", + "https://shareduks.uks.attest.azure.net/", + "https://sharedcac.cac.attest.azure.net/", + "https://sharedukw.ukw.attest.azure.net/", + "https://sharedneu.neu.attest.azure.net/", + "https://sharedeus.eus.attest.azure.net/", + "https://sharedeau.eau.attest.azure.net/", + "https://sharedncus.ncus.attest.azure.net/", + "https://sharedwus.wus.attest.azure.net/", + "https://sharedweu.weu.attest.azure.net/", + "https://sharedscus.scus.attest.azure.net/", + "https://sharedsasia.sasia.attest.azure.net/", + "https://sharedsau.sau.attest.azure.net/" + ], + "metadata": { + "description": "MAA Endpoint to attest to." + } + } + }, + "variables": { + "imageReference": { + "Ubuntu-1804": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18_04-lts-gen2", + "version": "latest" + }, + "Ubuntu-2004": { + "publisher": "Canonical", + "offer": "0001-com-ubuntu-server-focal", + "sku": "20_04-lts-gen2", + "version": "latest" + }, + "RHEL-83": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "83-gen2", + "version": "latest" + }, + "SUSE-15-SP2": { + "publisher": "SUSE", + "offer": "SLES-15-SP2", + "sku": "gen2", + "version": "latest" + } + }, + "addressPrefix": "10.0.0.0/16", + "ascReportingEndpoint": "https://sharedeus2.eus2.attest.azure.net/", + "disableAlerts": "false", + "extensionName": "GuestAttestation", + "extensionPublisher": "Microsoft.Azure.Security.LinuxAttestation", + "extensionVersion": "1.0", + "maaTenantName": "GuestAttestation", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet", + "useAlternateToken": "false", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-06-01", + "name": "publicIPName", + "location": "southcentralus", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "nsg", + "location": "southcentralus", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "TCP", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnet", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "nic", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIPName", + "Microsoft.Network/virtualNetworks/vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "myTVM", + "location": "southcentralus", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "VmSize" + }, + "osProfile": { + "computerName": "myTVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": "(imageReference)[parameters(os)]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + }, + "securityProfile": { + "uefiSettings": { + "secureBootEnabled": "true", + "vTPMEnabled": "VTPM" + }, + "securityType": "TrustedLaunch" + } + } + }, + { + "condition": "[and(equals(parameters('VTPM'), 'true'), equals(parameters('secureBoot'), 'true'))]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myTVM/GuestAttestation", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/myTVM" + ], + "apiVersion": "2020-06-01", + "properties": { + "publisher": "Microsoft.Azure.Security.LinuxAttestation", + "type": "GuestAttestation", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "AttestationEndpointCfg": { + "maaEndpoint": "https://sharedeus2.eus2.attest.azure.net/", + "maaTenantName": "GuestAttestation", + "ascReportingEndpoint": "https://sharedeus2.eus2.attest.azure.net/", + "useAlternateToken": "false", + "disableAlerts": "false" + } + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(parameters('publicIPName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1123 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1123 new file mode 100644 index 0000000..9d690d3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1123 @@ -0,0 +1,648 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-trustedlaunch-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-trustedlaunch-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962904598, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-trustedlaunch-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-trustedlaunch-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1123", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1123", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "myTVM", + "metadata": { + "description": "Name of the virtual machine." + } + }, + "sku": { + "type": "string", + "defaultValue": "2019-DataCenter-GenSecond", + "allowedValues": [ + "RS1-EnterpriseN-G2", + "RS5-EnterpriseN-Standard-G2", + "RS5-EnterpriseN-G2", + "19H2-Ent-G2", + "20H2-ProN-G2", + "20H1-ProN-G2", + "20H1-Pro-ZH-CN-G2", + "20H2-Pro-G2", + "20H2-Ent-G2", + "20H1-Pro-G2", + "19H2-Pro-G2", + "20H1-Ent-G2", + "20H2-Pro-ZH-CN-G2", + "19H2-EntN-G2", + "19H2-Pro-ZH-CN-G2", + "19H2-ProN-G2", + "20H2-EntN-G2", + "20H1-EntN-G2", + "RS5-Enterprise-Standard-G2", + "RS5-Enterprise-G2", + "RS1-Enterprise-G2", + "DataCenter-Core-1909-With-Containers-Smalldisk-G2", + "2016-DataCenter-With-Containers-G2", + "2019-DataCenter-GenSecond", + "DataCenter-Core-2004-With-Containers-Smalldisk-G2", + "2019-DataCenter-Core-G2", + "2019-DataCenter-Core-Smalldisk-G2", + "2016-DataCenter-ZHCN-G2", + "DataCenter-Core-20H2-With-Containers-Smalldisk-G2", + "2016-DataCenter-GenSecond", + "2016-DataCenter-Server-Core-Smalldisk-G2", + "2019-DataCenter-Smalldisk-G2", + "2016-DataCenter-Server-Core-G2", + "2016-DataCenter-Smalldisk-G2", + "2019-DataCenter-Core-With-Containers-Smalldisk-G2", + "2019-DataCenter-ZHCN-G2", + "2019-DataCenter-Core-With-Containers-G2", + "2019-DataCenter-With-Containers-Smalldisk-G2", + "2019-DataCenter-With-Containers-G2" + ], + "metadata": { + "description": "The OS SKU for the virtual machine. This will pick a fully patched image of the given OS SKU." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the virtual machine." + }, + "value": "GEN-PASSWORD" + }, + "secureBoot": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "Secure Boot setting of the virtual machine." + } + }, + "vTPM": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "vTPM setting of the virtual machine." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + }, + "value": "southcentralus" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat(parameters('vmName'), '-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "publicIpName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name for the Public IP used to access the virtual machine." + } + }, + "publicIPAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Allocation method for the Public IP used to access the virtual machine." + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "SKU for the Public IP used to access the virtual machine." + } + }, + "nicName": { + "type": "string", + "defaultValue": "nic", + "metadata": { + "description": "Name of the network interface" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vnet", + "metadata": { + "description": "Name of the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "nsg", + "metadata": { + "description": "Name of the network security group" + } + }, + "maaEndpoint": { + "defaultValue": "https://sharedeus2.eus2.attest.azure.net/", + "type": "string", + "allowedValues": [ + "https://sharedcus.cus.attest.azure.net/", + "https://sharedcae.cae.attest.azure.net/", + "https://sharedeus2.eus2.attest.azure.net/", + "https://shareduks.uks.attest.azure.net/", + "https://sharedcac.cac.attest.azure.net/", + "https://sharedukw.ukw.attest.azure.net/", + "https://sharedneu.neu.attest.azure.net/", + "https://sharedeus.eus.attest.azure.net/", + "https://sharedeau.eau.attest.azure.net/", + "https://sharedncus.ncus.attest.azure.net/", + "https://sharedwus.wus.attest.azure.net/", + "https://sharedweu.weu.attest.azure.net/", + "https://sharedscus.scus.attest.azure.net/", + "https://sharedsasia.sasia.attest.azure.net/", + "https://sharedsau.sau.attest.azure.net/" + ], + "metadata": { + "description": "MAA Endpoint to attest to." + } + } + }, + "variables": { + "imageReference": { + "RS1-EnterpriseN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "RS5-EnterpriseN-Standard-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "RS5-EnterpriseN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "19H2-Ent-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H2-ProN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H1-ProN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H1-Pro-ZH-CN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H2-Pro-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H2-Ent-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H1-Pro-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "19H2-Pro-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H1-Ent-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H2-Pro-ZH-CN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "19H2-EntN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "19H2-Pro-ZH-CN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "19H2-ProN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H2-EntN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "20H1-EntN-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "RS5-Enterprise-Standard-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "RS5-Enterprise-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "RS1-Enterprise-G2": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "DataCenter-Core-1909-With-Containers-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2016-DataCenter-With-Containers-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-GenSecond": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "DataCenter-Core-2004-With-Containers-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-Core-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-Core-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2016-DataCenter-ZHCN-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "DataCenter-Core-20H2-With-Containers-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2016-DataCenter-GenSecond": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2016-DataCenter-Server-Core-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2016-DataCenter-Server-Core-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2016-DataCenter-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-Core-With-Containers-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-ZHCN-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-Core-With-Containers-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-With-Containers-Smalldisk-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + }, + "2019-DataCenter-With-Containers-G2": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-DataCenter-GenSecond", + "version": "latest" + } + }, + "addressPrefix": "10.0.0.0/16", + "ascReportingEndpoint": "https://sharedeus2.eus2.attest.azure.net/", + "disableAlerts": "false", + "extensionName": "GuestAttestation", + "extensionPublisher": "Microsoft.Azure.Security.WindowsAttestation", + "extensionVersion": "1.0", + "maaTenantName": "GuestAttestation", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet", + "useAlternateToken": "false" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "publicIPName", + "location": "southcentralus", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "nsg", + "location": "southcentralus", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnet", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "nic", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIPName", + "Microsoft.Network/virtualNetworks/vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "myTVM", + "location": "southcentralus", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "myTVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": "(imageReference)[parameters(sku)]", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + }, + "securityProfile": { + "uefiSettings": { + "secureBootEnabled": "true", + "vTPMEnabled": "VTPM" + }, + "securityType": "TrustedLaunch" + } + } + }, + { + "condition": "[and(equals(parameters('VTPM'), 'true'), equals(parameters('secureBoot'), 'true'))]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myTVM/GuestAttestation", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/myTVM" + ], + "apiVersion": "2020-06-01", + "properties": { + "publisher": "Microsoft.Azure.Security.WindowsAttestation", + "type": "GuestAttestation", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "AttestationEndpointCfg": { + "maaEndpoint": "https://sharedeus2.eus2.attest.azure.net/", + "maaTenantName": "GuestAttestation", + "ascReportingEndpoint": "https://sharedeus2.eus2.attest.azure.net/", + "useAlternateToken": "false", + "disableAlerts": "false" + } + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(parameters('publicIPName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1124 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1124 new file mode 100644 index 0000000..f7ee835 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1124 @@ -0,0 +1,262 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-userdata/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-userdata/azuredeploy.parameters.json" + ], + "timestamp": 1642962904608, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-userdata/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-userdata/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1124", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1124", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Unique DNS Name for the public IP address" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "userData": { + "type": "string", + "metadata": { + "description": "String passed down to the Virtual Machine." + }, + "value": "echo userData" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "16.04.0-LTS", + "18.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.2-LTS, 15.10." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "networkInterface1", + "vmName": "vm1", + "virtualNetworkName": "virtualNetwork1", + "publicIPAddressName": "publicIp1", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "networkInterface1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "publicIp1", + "virtualNetwork1" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//virtualNetwork1/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2021-03-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vm1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "networkInterface1" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "vm1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "userData": "[base64(parameters('userData'))]", + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkInterface1" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1126 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1126 new file mode 100644 index 0000000..fb6bffd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1126 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.compute/vm.windows.json" + ], + "timestamp": 1642962904631, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.compute/vm.windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1126", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1126", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the virtual machine" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin user password for virtual machine" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of VM" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer" + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer" + }, + "osSku": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "OS sku for VM" + } + }, + "nicId": { + "type": "string", + "metadata": { + "description": "Network interface id." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "VM deployment location." + } + }, + "dataDiskSizeInGB": { + "type": "int", + "defaultValue": 128, + "metadata": { + "description": "Size for Data Disks." + } + }, + "numberOfDataDisks": { + "type": "int", + "minValue": 0, + "maxValue": 16, + "defaultValue": 1, + "metadata": { + "description": "The number of dataDisks to be returned in the output array." + } + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "tags": "tags", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "diskSizeGB": 128, + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "nicId" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1127 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1127 new file mode 100644 index 0000000..34cf427 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1127 @@ -0,0 +1,393 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "timestamp": 1642962904643, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1127", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1127", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "defaultValue": "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + }, + "omsSolutionsName": { + "type": "array" + }, + "tags": { + "type": "object" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Free", + "Standalone", + "PerNode" + ], + "defaultValue": "Free", + "metadata": { + "description": "Service Tier: Free, Standalone, or PerNode" + } + }, + "dataRetention": { + "type": "int", + "defaultValue": 90, + "minValue": 7, + "maxValue": 730, + "metadata": { + "description": "Number of days of retention. Free plans can only have 7 days, Standalone and OMS plans include 30 days for free" + } + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "name": "[concat('oms-workspace',uniqueString(resourceGroup().id))]", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2021-06-01", + "location": "location", + "tags": "tags", + "properties": { + "sku": { + "name": "Free" + }, + "retention": 90 + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "kind": "AzureActivityLog", + "name": "[concat(parameters('omsWorkspaceName'), '/', subscription().subscriptionId)]", + "apiVersion": "2020-08-01", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "properties": { + "linkedResourceId": "[subscriptionResourceId('microsoft.insights/eventTypes', 'management')]" + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('omsWorkspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1128 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1128 new file mode 100644 index 0000000..5d6bbc9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1128 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/nic-with-pip.json" + ], + "timestamp": 1642962904650, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/nic-with-pip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1128", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1128", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicName": { + "type": "string" + }, + "publicIPAddressId": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "privateIPAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ] + }, + "location": { + "type": "string" + }, + "nsgId": { + "type": "string", + "defaultValue": "" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicName", + "location": "location", + "tags": "tags", + "properties": { + "networkSecurityGroup": { + "id": "" + }, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "publicIPAddressId" + }, + "subnet": { + "id": "subnetId" + } + } + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1129 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1129 new file mode 100644 index 0000000..de2eca8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1129 @@ -0,0 +1,61 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/nsg.json" + ], + "timestamp": 1642962904659, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/nsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1129", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1129", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nsgName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "securityRules": { + "type": "array" + }, + "tags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgName", + "location": "location", + "tags": "tags", + "properties": { + "securityRules": "securityRules" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT113 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT113 new file mode 100644 index 0000000..68ce090 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT113 @@ -0,0 +1,587 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/dlworkspace/dlworkspace-deployment/azuredeploy.json", + "/application-workloads/dlworkspace/dlworkspace-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962886933, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/dlworkspace/dlworkspace-deployment/azuredeploy.json", + "/application-workloads/dlworkspace/dlworkspace-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT113", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT113", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterNameDesired": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Name of cluster - should be lowercase, if it is not, a lowercase version will be used." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of resources." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username on machines." + }, + "value": "dlwsadmin" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the virtual machines ." + }, + "value": "GEN-PASSWORD" + }, + "dlwsAdmins": { + "type": "string", + "metadata": { + "description": "Comma separated list of users allowed to log into DLWorkspace webportal as administrator and manage the cluster" + }, + "value": "GEN-UNIQUE" + }, + "devSourceIP": { + "type": "array", + "defaultValue": [ + "10.0.0.0/8" + ], + "metadata": { + "description": "Array of IP prefixes of machines which can be used to connect to the dev box." + } + }, + "numberOfInfraVM": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of infra-VM to deploy." + } + }, + "infraVMSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the infra-VM. Use a CPU VM for infra-VM." + } + }, + "numberOfWorkerVM": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of worker-VM to deploy." + } + }, + "workerVMSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the worker-VM. Use a GPU VM for worker-VM." + } + }, + "openIDProvider": { + "type": "string", + "defaultValue": "", + "allowedValues": [ + "", + "Google", + "MSFT" + ], + "metadata": { + "description": "Provider for OpenID Authentication - currently supports MSFT or Google, leave blank if not using." + } + }, + "openIDTenant": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the web application registered with the authentication provider." + } + }, + "openIDClientID": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "ClientID of the web application registered with the authentication provider." + } + }, + "openIDClientSecret": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Client Secret of the web application registered with the authentication provider." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/dlworkspace/dlworkspace-deployment/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "clusterName": "[toLower(parameters('clusterNameDesired'))]", + "standardStorageAccountType": "StandardSSD_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04.0-LTS", + "virtualNetworkName": "[concat(resourceGroup().name, '-VNet')]", + "subnetName": "VMSubnet", + "addressPrefix": "192.168.0.0/16", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/setupdevbox.sh', parameters('_artifactsLocationSasToken')))]", + "singleQuote": "'", + "adminPasswordQ": "'GEN-PASSWORD'", + "dlwsAdminsQ": "'GEN-UNIQUE'", + "openIDProviderQ": "' parameters('openIDProvider')'", + "openIDTenantQ": "' parameters('openIDTenant')'", + "openIDClientIDQ": "' parameters('openIDClientID')'", + "openIDClientSecretQ": "' parameters('openIDClientSecret')'" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(parameters('clusterNameDesired'))]-dev", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[toLower(parameters('clusterNameDesired'))]-dev-VMNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "osProfile": { + "computerName": "[toLower(parameters('clusterNameDesired'))]-dev", + "adminUsername": "dlwsadmin", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('clusterNameDesired'))]-dev-VMNic" + } + ] + } + } + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[toLower(parameters('clusterNameDesired'))]-dev/setupdevbox", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/[toLower(parameters('clusterNameDesired'))]-dev" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setupdevbox.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash setupdevbox.sh dlwsadmin --cluster_name [toLower(parameters('clusterNameDesired'))] --cluster_location [resourceGroup().location] --worker_vm_size Standard_D2s_v3 --infra_vm_size Standard_D2s_v3 --worker_node_num 1 --infra_node_num 1 --password 'GEN-PASSWORD' --users 'GEN-UNIQUE' --openid_name ' parameters('openIDProvider')' --openid_tenant ' parameters('openIDTenant')' --openid_clientid ' parameters('openIDClientID')' --openid_clientsecret ' parameters('openIDClientSecret')'" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[concat(variables('clusterName'), '-infra0', copyIndex(1))]", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "infraVMLoop", + "count": 1 + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('clusterName'), '-infra0', copyIndex(1), '-VMNic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "osProfile": { + "computerName": "[concat(variables('clusterName'), '-infra0', copyIndex(1))]", + "adminUsername": "dlwsadmin", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('clusterName'), '-infra0', copyIndex(1), '-VMNic'))]" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[concat(variables('clusterName'), '-worker0', copyIndex(1))]", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "workerVMLoop", + "count": 1 + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('clusterName'), '-worker0', copyIndex(1), '-VMNic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "osProfile": { + "computerName": "[concat(variables('clusterName'), '-worker0', copyIndex(1))]", + "adminUsername": "dlwsadmin", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('clusterName'), '-worker0', copyIndex(1), '-VMNic'))]" + } + ] + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "sku": { + "name": "Basic" + }, + "name": "[toLower(parameters('clusterNameDesired'))]-dev-PublicIP", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(variables('clusterName'), '-dev'))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "sku": { + "name": "Basic" + }, + "name": "[concat(variables('clusterName'), '-infra0', copyIndex(1), '-PublicIP')]", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "infraVMPublicIPLoop", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(variables('clusterName'), '-infra0', copyIndex(1)))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "sku": { + "name": "Basic" + }, + "name": "[concat(variables('clusterName'), '-worker0', copyIndex(1), '-PublicIP')]", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "workerVMPublicIPLoop", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(variables('clusterName'), '-worker0', copyIndex(1)))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('clusterNameDesired'))]-dev-VMNic", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('clusterName'), '-dev', '-PublicIP'))]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups', concat(variables('clusterName'), '-NSG'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "[toLower(parameters('clusterNameDesired'))]-dev-IPConfig", + "properties": { + "privateIPAddress": "[concat('192.168.255.', add(parameters('numberOfInfraVM'), 1))]", + "privateIPAllocationMethod": "Static", + "privateIPAddressVersion": "IPv4", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(parameters('clusterNameDesired'))]-dev-PublicIP" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('clusterNameDesired'))]-NSG" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(variables('clusterName'), '-infra0', copyIndex(1), '-VMNic')]", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "infraVMNICLoop", + "count": 1 + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('clusterName'), '-infra0', copyIndex(1), '-PublicIP'))]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups', concat(variables('clusterName'), '-NSG'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "[concat(variables('clusterName'), '-infra0', copyIndex(1), '-IPConfig')]", + "properties": { + "privateIPAddress": "[concat('192.168.255.', copyIndex(1))]", + "privateIPAllocationMethod": "Static", + "privateIPAddressVersion": "IPv4", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('clusterName'), '-infra0', copyIndex(1), '-PublicIP'))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('clusterNameDesired'))]-NSG" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(variables('clusterName'), '-worker0', copyIndex(1), '-VMNic')]", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "workerVMNICLoop", + "count": 1 + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('clusterName'), '-worker0', copyIndex(1), '-PublicIP'))]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups', concat(variables('clusterName'), '-NSG'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "[concat(variables('clusterName'), '-worker0', copyIndex(1), '-IPConfig')]", + "properties": { + "privateIPAddress": "[concat('192.168.1.', copyIndex(1))]", + "privateIPAllocationMethod": "Static", + "privateIPAddressVersion": "IPv4", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('clusterName'), '-worker0', copyIndex(1), '-PublicIP'))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('clusterNameDesired'))]-NSG" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('clusterNameDesired'))]-NSG", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allowalltcp", + "properties": { + "protocol": "Tcp", + "access": "Allow", + "priority": 1000, + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRanges": [ + "80", + "443", + "30000-32767", + "25826", + "3080" + ] + } + }, + { + "name": "allowalludp", + "properties": { + "protocol": "Udp", + "access": "Allow", + "priority": 1010, + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "25826" + } + }, + { + "name": "allowdevtcp", + "properties": { + "protocol": "Tcp", + "access": "Allow", + "priority": 900, + "direction": "Inbound", + "sourceAddressPrefixes": [ + "10.0.0.0/8" + ], + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRanges": [ + "22", + "1443", + "2379", + "3306", + "5000", + "8086" + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.0.0/16" + ] + }, + "subnets": [ + { + "name": "VMSubnet", + "properties": { + "addressPrefix": "192.168.0.0/16" + } + } + ] + } + } + ], + "outputs": { + "devmachine": { + "type": "string", + "value": "[reference(concat(variables('clusterName'), '-dev', '-PublicIP')).dnsSettings.fqdn]" + }, + "webportal": { + "type": "string", + "value": "[reference(concat(variables('clusterName'), '-infra01', '-PublicIP')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1130 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1130 new file mode 100644 index 0000000..eecb03d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1130 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "timestamp": 1642962904668, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1130", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1130", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPAddressName": { + "type": "string" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic" + }, + "dnsNameForPublicIP": { + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddressName", + "location": "location", + "tags": "tags", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNameForPublicIP" + } + } + } + ], + "outputs": { + "publicIPAddressName": { + "type": "string", + "value": "[parameters('publicIPAddressName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1131 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1131 new file mode 100644 index 0000000..1b3d901 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1131 @@ -0,0 +1,67 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "timestamp": 1642962904678, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-virus-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1131", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1131", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "addressPrefix": { + "type": "string" + }, + "subnets": { + "type": "array" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "vnetName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "tags": "tags", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": "subnets" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1133 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1133 new file mode 100644 index 0000000..df3142d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1133 @@ -0,0 +1,355 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-baseline/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-baseline/azuredeploy.parameters.json" + ], + "timestamp": 1642962904698, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-baseline/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-baseline/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1133", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.guestconfiguration/guestconfigurationassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1133", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "11029009265237624607" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The Azure region where resources in the template should be deployed." + }, + "value": "eastus" + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet", + "metadata": { + "description": "Name for the subnet in the virtual network where the network interface is connected." + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "nsg", + "metadata": { + "description": "Name of the network security group that sets rules for the network environment." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "network", + "metadata": { + "description": "Name of the virtual network." + } + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.2.0.0/16", + "metadata": { + "description": "Network subnet and prefix." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name for the Public IP used to access the Virtual Machine." + } + }, + "publicIPAllocationMethod": { + "type": "string", + "defaultValue": "Static", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Allocation method for the Public IP used to access the Virtual Machine." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine." + }, + "value": "GEN-UNIQUE-15" + }, + "OSVersion": { + "type": "string", + "defaultValue": "2022-datacenter-azure-edition-smalldisk", + "allowedValues": [ + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter", + "2019-Datacenter-Core", + "2019-Datacenter-Core-smalldisk", + "2019-Datacenter-smalldisk", + "2022-datacenter", + "2022-datacenter-azure-edition-smalldisk", + "2022-datacenter-core", + "2022-datacenter-core-g2", + "2022-datacenter-core-smalldisk", + "2022-datacenter-core-smalldisk-g2", + "2022-datacenter-g2", + "2022-datacenter-smalldisk", + "2022-datacenter-smalldisk-g2" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "osDiskStorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS", + "UltraSSD_LRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "zone": { + "type": "string", + "defaultValue": "1", + "allowedValues": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Availability zone number." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "minLength": 12, + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "enableAcceleratedNetworking": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable accelerated networking." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-05-01", + "name": "nsg", + "location": "eastus" + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-05-01", + "name": "network", + "location": "eastus", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.2.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.2.0.0/16" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2021-05-01", + "name": "myPublicIP", + "location": "eastus", + "sku": { + "name": "Standard" + }, + "zones": [ + "1" + ], + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-05-01", + "name": "[format('{0}-nic', parameters('vmName'))]", + "location": "eastus", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "[reference(resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))).subnets[0].id]" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIpAddresses/myPublicIP" + } + } + } + ], + "enableAcceleratedNetworking": true, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg" + } + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsg", + "Microsoft.Network/publicIpAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/network" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-07-01", + "name": "GEN-UNIQUE-15", + "location": "eastus", + "zones": [ + "1" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2022-datacenter-azure-edition-smalldisk", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + } + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', format('{0}-nic', parameters('vmName')))]" + } + ] + }, + "osProfile": { + "computerName": "GEN-UNIQUE-15", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "enableAutomaticUpdates": true + } + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', format('{0}-nic', parameters('vmName')))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-07-01", + "name": "[format('{0}/{1}', parameters('vmName'), 'AzurePolicyforWindows')]", + "location": "eastus", + "properties": { + "publisher": "Microsoft.GuestConfiguration", + "type": "ConfigurationforWindows", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "enableAutomaticUpgrade": true + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-15" + ] + }, + { + "type": "Microsoft.GuestConfiguration/guestConfigurationAssignments", + "apiVersion": "2020-06-25", + "scope": "[format('Microsoft.Compute/virtualMachines/{0}', parameters('vmName'))]", + "name": "AzureWindowsBaseline", + "location": "eastus", + "properties": { + "guestConfiguration": { + "assignmentType": "ApplyAndMonitor", + "name": "AzureWindowsBaseline", + "version": "1.*" + } + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-15" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1134 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1134 new file mode 100644 index 0000000..03f76d8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1134 @@ -0,0 +1,260 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-copy-datadisks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-copy-datadisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962904705, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-copy-datadisks/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-copy-datadisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1134", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1134", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[concat('ddvm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "OSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2019-Datacenter", + "2016-Datacenter", + "2016-Datacenter-Server-Core", + "2016-Datacenter-Server-Core-smalldisk", + "2016-Datacenter-smalldisk", + "2016-Datacenter-with-Containers", + "2016-Nano-Server" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "numberOfDataDisks": { + "type": "int", + "minValue": 0, + "maxValue": 16, + "defaultValue": 16, + "metadata": { + "description": "The number of dataDisks to be returned in the output array." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "description" + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "VMDataDisks", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('ddvm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "VMDataDisks", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D8s_v3" + }, + "osProfile": { + "computerName": "VMDataDisks", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": 16, + "input": { + "diskSizeGB": 1023, + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1135 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1135 new file mode 100644 index 0000000..8d870fa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1135 @@ -0,0 +1,384 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-ssh/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-ssh/azuredeploy.parameters.json" + ], + "timestamp": 1642962904712, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-windows-ssh/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-windows-ssh/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1135", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/disks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1135", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "9324169281090844206" + } + }, + "parameters": { + "storagename": { + "type": "string", + "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Storage Account name" + } + }, + "vm_dns": { + "type": "string", + "defaultValue": "[format('winssh-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "VM DNS label prefix" + } + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "Admin user for VM" + }, + "value": "GEN-UNIQUE-10" + }, + "adminPassword": { + "type": "secureString", + "defaultValue": "[newGuid()]", + "value": "GEN-PASSWORD" + }, + "publicSshKey": { + "type": "string", + "metadata": { + "description": "Your public SSH key" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmsize": { + "type": "string", + "defaultValue": "Standard_D4_v5", + "metadata": { + "description": "VM size for VM" + } + }, + "vmSku": { + "type": "string", + "defaultValue": "2022-datacenter-core-smalldisk-g2", + "allowedValues": [ + "2019-datacenter-core-g2", + "2019-datacenter-core-smalldisk-g2", + "2022-datacenter-core-g2", + "2022-datacenter-core-smalldisk-g2", + "2022-datacenter-azure-edition-core", + "2022-datacenter-azure-edition-core-smalldisk" + ], + "metadata": { + "description": "SKU of the Windows Server" + } + }, + "diskSku": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "SKU of the attached data disk (Standard HDD, Standard SSD or Premium SSD)" + } + }, + "diskSizeGB": { + "type": "int", + "defaultValue": 256, + "metadata": { + "description": "Size of the attached data disk in GB" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Deployment location" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "defaultValue": "", + "metadata": { + "description": "SAS Token for accessing script path" + } + } + }, + "variables": { + "initScriptUrl": "[uri(parameters('_artifactsLocation'), format('initialize.ps1{0}', parameters('_artifactsLocationSasToken')))]", + "sshdConfigUrl": "[uri(parameters('_artifactsLocation'), format('configs/sshd_config_wopwd{0}', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-06-01", + "name": "[toLower(parameters('storagename'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "displayName": "Storage account" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "publicIP", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[format('winssh-{0}', uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "rdp", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-04-01", + "name": "virtualNetwork", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsg" + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-04-01", + "name": "nic", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Network Interface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'virtualNetwork')).subnets[0].id]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIP", + "Microsoft.Network/virtualNetworks/virtualNetwork" + ] + }, + { + "type": "Microsoft.Compute/disks", + "apiVersion": "2020-09-30", + "name": "datadisk", + "location": "[resourceGroup().location]", + "properties": { + "diskSizeGB": 256, + "creationData": { + "createOption": "Empty" + } + }, + "sku": { + "name": "StandardSSD_LRS" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-07-01", + "name": "sshhost", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Windows Server with SSH" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v5" + }, + "osProfile": { + "computerName": "sshhost", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2022-datacenter-core-smalldisk-g2", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "createOption": "Attach", + "lun": 0, + "managedDisk": { + "id": "Microsoft.Compute/disks/datadisk" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', toLower(parameters('storagename')))).primaryEndpoints.blob]" + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Compute/disks', 'datadisk')]", + "[resourceId('Microsoft.Network/networkInterfaces', 'nic')]", + "[resourceId('Microsoft.Storage/storageAccounts', toLower(parameters('storagename')))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-07-01", + "name": "[format('{0}/{1}', 'sshhost', 'setupScript')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Setup script for SSH" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), format('initialize.ps1{0}', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), format('configs/sshd_config_wopwd{0}', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('powershell -ExecutionPolicy Bypass -file initialize.ps1 -publicSshKey \"{0}\"', parameters('publicSshKey'))]" + } + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/sshhost" + ] + } + ], + "outputs": { + "sshhost_connect": { + "type": "string", + "value": "[format('ssh {0}@{1}', parameters('adminUser'), reference(resourceId('Microsoft.Network/publicIPAddresses', 'publicIP')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1136 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1136 new file mode 100644 index 0000000..ec5e3f2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1136 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/nested/noIncomingRemote.json" + ], + "timestamp": 1642962904719, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/nested/noIncomingRemote.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1136", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1136", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "networkSecurityGroupName": { + "type": "string" + }, + "publicIPAddressName": { + "type": "string" + }, + "existingVnetLocation": { + "type": "string" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddressName", + "location": "existingVnetLocation", + "tags": { + "vmname": "vmName" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "networkSecurityGroupName", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2016-09-01", + "location": "existingVnetLocation", + "tags": { + "vmname": "vmName" + }, + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1137 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1137 new file mode 100644 index 0000000..23a824a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1137 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/nested/yesIncomingRemote.json" + ], + "timestamp": 1642962904725, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/nested/yesIncomingRemote.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1137", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1137", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "networkSecurityGroupName": { + "type": "string" + }, + "publicIPAddressName": { + "type": "string" + }, + "existingVnetLocation": { + "type": "string" + } + }, + "variables": { + "dnsLabelPrefix": "[concat(toLower(parameters('vmName')), uniquestring(resourceGroup().id, parameters('vmName')))]" + }, + "resources": [ + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddressName", + "location": "existingVnetLocation", + "tags": { + "vmname": "vmName" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('dnsLabelPrefix')]" + } + } + }, + { + "name": "networkSecurityGroupName", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2016-09-01", + "location": "existingVnetLocation", + "tags": { + "vmname": "vmName" + }, + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "ResourceManager", + "properties": { + "priority": 1010, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "8050", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(parameters('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1138 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1138 new file mode 100644 index 0000000..b1bd842 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1138 @@ -0,0 +1,318 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/azuredeploy.parameters.json" + ], + "timestamp": 1642962904733, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-data-management-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1138", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.datafactory/datafactories/gateways", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1138", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingDataFactoryName": { + "type": "string", + "metadata": { + "description": "your existing data factory name" + }, + "value": "existingDF" + }, + "GatewayName": { + "type": "string", + "metadata": { + "description": "Gateway name must be unique in subscription" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the virtual machine" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the virtual machine" + }, + "value": "GEN-PASSWORD" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "your existing vnet name" + }, + "value": "gwvnet" + }, + "existingVnetLocation": { + "type": "string", + "metadata": { + "description": "your virtual machine will be create in the same datacenter with VNET" + }, + "value": "West US" + }, + "existingVnetResourceGroupName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "gwvnetrg" + }, + "existingSubnetInYourVnet": { + "type": "string", + "metadata": { + "description": "Name of the subnet in the virtual network you want to use" + }, + "value": "subnet" + }, + "enableToSetDataStoreFromInternet": { + "type": "string", + "allowedValues": [ + "yes", + "no" + ], + "defaultValue": "yes", + "metadata": { + "description": "If you choose yes, we will create a dns name label for your machine and open one inbound port for our service to access your machine and set data store passwords." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-with-data-management-gateway/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "enableToSetDataStorePasswordsFromInternet": { + "value": "yes" + } + }, + "variables": { + "delimiters": [ + "-", + "_" + ], + "prefix": "[split(parameters('gatewayName'), variables('delimiters'))[0]]", + "virtualMachineName": "[take(concat('vm-', variables('prefix')), 15)]", + "nsglink": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-with-data-management-gateway/nested/yesIncomingRemote.jsonparameters('_artifactsLocationSasToken')", + "nsgTemplateName": "[take(concat('vm-', variables('prefix')), 15)]NSGTemplate", + "storageAccountName": "[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, variables('virtualMachineName'))), 24)]", + "nicName": "[take(concat('vm-', variables('prefix')), 15)]Nic", + "publicIPAddressName": "[take(concat('vm-', variables('prefix')), 15)]-ip", + "networkSecurityGroupName": "[take(concat('vm-', variables('prefix')), 15)]nsg", + "scriptURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-with-data-management-gateway/scripts/gatewayInstall.ps1parameters('_artifactsLocationSasToken')" + }, + "resources": [ + { + "type": "Microsoft.DataFactory/dataFactories/gateways", + "apiVersion": "2015-10-01", + "name": "existingDF/GEN-UNIQUE", + "properties": { + "description": "my gateway" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, variables('virtualMachineName'))), 24)]", + "apiVersion": "2016-01-01", + "location": "West US", + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/gateways/existingDF/GEN-UNIQUE" + ], + "tags": { + "vmname": "[take(concat('vm-', variables('prefix')), 15)]" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "[take(concat('vm-', variables('prefix')), 15)]Nic", + "location": "West US", + "tags": { + "vmname": "[take(concat('vm-', variables('prefix')), 15)]" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//[take(concat('vm-', variables('prefix')), 15)]NSGTemplate" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[take(concat('vm-', variables('prefix')), 15)]-ip" + }, + "subnet": { + "id": "gwvnetrg/Microsoft.Network/virtualNetworks/subnets/gwvnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[take(concat('vm-', variables('prefix')), 15)]nsg" + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "[take(concat('vm-', variables('prefix')), 15)]", + "location": "West US", + "tags": { + "vmname": "[take(concat('vm-', variables('prefix')), 15)]" + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, variables('virtualMachineName'))), 24)]", + "Microsoft.Network/networkInterfaces//[take(concat('vm-', variables('prefix')), 15)]Nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A3" + }, + "osProfile": { + "computerName": "[take(concat('vm-', variables('prefix')), 15)]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[take(concat('vm-', variables('prefix')), 15)]_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "[take(concat('vm-', variables('prefix')), 15)]_DataDisk1", + "diskSizeGB": 128, + "lun": 0, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[take(concat('vm-', variables('prefix')), 15)]Nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "resources": [ + { + "type": "extensions", + "name": "[take(concat('vm-', variables('prefix')), 15)]installGW", + "apiVersion": "2015-06-15", + "location": "West US", + "tags": { + "vmname": "[take(concat('vm-', variables('prefix')), 15)]" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//[take(concat('vm-', variables('prefix')), 15)]" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.7", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-with-data-management-gateway/scripts/gatewayInstall.ps1parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('powershell.exe -ExecutionPolicy Unrestricted -File gatewayInstall.ps1 ', listAuthKeys(resourceId('Microsoft.DataFactory/dataFactories/gateways', parameters('existingDataFactoryName'), parameters('GatewayName')), '2015-10-01').key1, ' ', reference(variables('nsgTemplateName')).outputs.hostname.Value, ' ', parameters('enableToSetDataStoreFromInternet'))]" + } + } + } + ] + }, + { + "apiVersion": "2015-01-01", + "name": "[take(concat('vm-', variables('prefix')), 15)]NSGTemplate", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/gateways/existingDF/GEN-UNIQUE" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-with-data-management-gateway/nested/yesIncomingRemote.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "[take(concat('vm-', variables('prefix')), 15)]" + }, + "networkSecurityGroupName": { + "value": "[take(concat('vm-', variables('prefix')), 15)]nsg" + }, + "publicIPAddressName": { + "value": "[take(concat('vm-', variables('prefix')), 15)]-ip" + }, + "existingVnetLocation": { + "value": "West US" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1139 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1139 new file mode 100644 index 0000000..d81db34 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1139 @@ -0,0 +1,299 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-rdp-port/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-rdp-port/azuredeploy.parameters.json" + ], + "timestamp": 1642962904741, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-rdp-port/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-rdp-port/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1139", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1139", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS prefix for the deployment. The fqdn will look something like '.westus.cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'." + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "defaultValue": "vm", + "metadata": { + "description": "The name of the VM" + }, + "value": "rdpVM" + }, + "adminUsername": { + "type": "string", + "defaultValue": "azureUser", + "metadata": { + "description": "The name of the administrator of the new VM. Exclusion list: 'admin','administrator'" + }, + "value": "azureUser" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM" + }, + "value": "GEN-PASSWORD" + }, + "rdpPort": { + "type": "int", + "defaultValue": 50001, + "metadata": { + "description": "Public port number for RDP" + }, + "value": 50001 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine" + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sardpvm')]", + "virtualNetworkName": "rdpVNET", + "vnetAddressRange": "10.0.0.0/16", + "subnetAddressRange": "10.0.0.0/24", + "subnetName": "Subnet", + "subnet-id": "Microsoft.Network/virtualNetworks/subnets/rdpVNET/Subnet", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "imageSku": "2019-Datacenter", + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-08-01-preview", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "comments": "Simple Network Security Group for subnet [Subnet]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "rdpVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "loadBalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIp" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBAP" + } + ], + "inboundNatRules": [ + { + "name": "rdp", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "rdpVM-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//rdpVNET", + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/rdpVNET/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/loadBalancer/rdp" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "rdpVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(parameters('vmName'), '-nic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "rdpVM", + "adminUsername": "azureUser", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/rdpVM-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), '2020-08-01-preview').primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT114 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT114 new file mode 100644 index 0000000..a9c165b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT114 @@ -0,0 +1,293 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/dnx/dnx-on-ubuntu/azuredeploy.json", + "/application-workloads/dnx/dnx-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962886974, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/dnx/dnx-on-ubuntu/azuredeploy.json", + "/application-workloads/dnx/dnx-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT114", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT114", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "The admin username for the Ubuntu machine" + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "defaultValue": "dnx-on-ubuntu", + "type": "string", + "metadata": { + "description": "The name of the Ubuntu machine" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "prefix": "dnx-on-ubuntu", + "nicName": "dnx-on-ubuntu-nic", + "nsgName": "dnx-on-ubuntu-nsg", + "pipName": "dnx-on-ubuntu-pip", + "vnetName": "dnx-on-ubuntu-vnet", + "storageAccountDiagnostics": "[concat(uniquestring(resourceGroup().id), 'diagsa')]", + "storageAccountVms": "[concat(uniquestring(resourceGroup().id), 'vmsa')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "createOption": "FromImage", + "caching": "ReadWrite" + } + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dnx-on-ubuntu-nic" + } + ] + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountVms'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/installcustomscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/post_deployment.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "/bin/bash post_deployment.sh GEN-UNIQUE" + } + } + } + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "dnx-on-ubuntu-nic", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAddress": "10.2.0.4", + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dnx-on-ubuntu-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/dnx-on-ubuntu-vnet/default" + } + } + } + ], + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dnx-on-ubuntu-nsg" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/dnx-on-ubuntu-pip", + "Microsoft.Network/virtualNetworks/dnx-on-ubuntu-vnet", + "Microsoft.Network/networkSecurityGroups/dnx-on-ubuntu-nsg" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "dnx-on-ubuntu-nsg", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "dnx-on-ubuntu-pip", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "dnx-on-ubuntu-vnet", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.2.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.2.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountDiagnostics')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountVms')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium_LRS" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1140 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1140 new file mode 100644 index 0000000..261828d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1140 @@ -0,0 +1,284 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-standardssd-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-standardssd-disk/azuredeploy.parameters.json" + ], + "timestamp": 1642962904750, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vm-with-standardssd-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/vm-with-standardssd-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1140", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1140", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "9932205686976717179" + } + }, + "parameters": { + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "The name of the VM" + }, + "value": "GEN-UNIQUE-15" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The admin user name of the VM" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "The admin password of the VM" + }, + "value": "GEN-PASSWORD" + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1024, + "metadata": { + "description": "The size in GB of the data disks" + } + }, + "dataDisksCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of data disks to create" + } + }, + "diskType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "StandardSSD_LRS", + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The Storage type of the data Disks" + } + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The virtual machine size. Enter a Premium capable VM size if DiskType is entered as Premium_LRS" + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2022-Datacenter", + "allowedValues": [ + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter", + "2022-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "virtualNetworkName": "[format('{0}-vnet', toLower(parameters('virtualMachineName')))]", + "subnetName": "[format('{0}-subnet', toLower(parameters('virtualMachineName')))]", + "OSDiskName": "[format('{0}-OSDisk', toLower(parameters('virtualMachineName')))]", + "networkInterfaceName": "[format('{0}-nic', toLower(parameters('virtualMachineName')))]", + "publicIpAddressName": "[format('{0}-ip', toLower(parameters('virtualMachineName')))]", + "networkSecurityGroupName": "[format('{0}-nsg', variables('subnetName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-03-01", + "name": "[format('{0}-ip', toLower(parameters('virtualMachineName')))]", + "sku": { + "name": "Basic" + }, + "location": "[resourceGroup().location]", + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-03-01", + "name": "[format('{0}-nsg', variables('subnetName'))]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-03-01", + "name": "[format('{0}-vnet', toLower(parameters('virtualMachineName')))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[format('{0}-subnet', toLower(parameters('virtualMachineName')))]", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('{0}-nsg', variables('subnetName'))]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[format('{0}-nsg', variables('subnetName'))]" + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-03-01", + "name": "[format('{0}-nic', toLower(parameters('virtualMachineName')))]", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[format('{0}-ip', toLower(parameters('virtualMachineName')))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('{0}-vnet', toLower(parameters('virtualMachineName')))]/[format('{0}-subnet', toLower(parameters('virtualMachineName')))]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[format('{0}-ip', toLower(parameters('virtualMachineName')))]", + "Microsoft.Network/virtualNetworks/[format('{0}-vnet', toLower(parameters('virtualMachineName')))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-07-01", + "name": "GEN-UNIQUE-15", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-15", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "copy": [ + { + "name": "dataDisks", + "count": 38, + "input": { + "name": "[format('{0}-DataDisk{1}', parameters('virtualMachineName'), range(0, parameters('dataDisksCount'))[copyIndex('dataDisks')])]", + "diskSizeGB": 1024, + "lun": "[range(0, parameters('dataDisksCount'))[copyIndex('dataDisks')]]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + } + ], + "osDisk": { + "osType": "Windows", + "name": "[format('{0}-OSDisk', toLower(parameters('virtualMachineName')))]", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 128 + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2022-Datacenter", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[format('{0}-nic', toLower(parameters('virtualMachineName')))]" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[format('{0}-nic', toLower(parameters('virtualMachineName')))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1141 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1141 new file mode 100644 index 0000000..6296058 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1141 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/IRInstall.json" + ], + "timestamp": 1642962904758, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/IRInstall.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1141", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1141", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingDataFactoryVersion": { + "type": "string" + }, + "datafactoryId": { + "type": "string" + }, + "virtualMachineName": { + "type": "string" + }, + "existingVnetLocation": { + "type": "string" + }, + "scriptUrl": { + "type": "string" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "virtualMachineName/virtualMachineNameinstallGW", + "apiVersion": "2019-07-01", + "location": "existingVnetLocation", + "tags": { + "vmname": "virtualMachineName" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.7", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptURL" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('powershell.exe -ExecutionPolicy Unrestricted -File gatewayInstall.ps1 ', if(equals(parameters('existingDataFactoryVersion'), 'V2'), listAuthKeys(parameters('datafactoryId'), '2017-09-01-preview').authKey1, listAuthKeys(parameters('datafactoryId'), '2015-10-01').key1))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1142 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1142 new file mode 100644 index 0000000..dded69c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1142 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/IRtemplate.json" + ], + "timestamp": 1642962904768, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/IRtemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1142", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories/gateways", + "microsoft.datafactory/factories/integrationruntimes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1142", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingDataFactoryName": { + "type": "string" + }, + "existingDataFactoryVersion": { + "type": "string" + }, + "IntegrationRuntimeName": { + "type": "string" + } + }, + "variables": {}, + "resources": [ + { + "condition": false, + "type": "Microsoft.DataFactory/dataFactories/gateways", + "apiVersion": "2015-10-01", + "name": "existingDataFactoryName/IntegrationRuntimeName", + "properties": { + "multiNodeSupportEnabled": true, + "description": "my integration runtime" + } + }, + { + "condition": false, + "type": "Microsoft.DataFactory/factories/integrationruntimes", + "apiVersion": "2018-06-01", + "name": "existingDataFactoryName/IntegrationRuntimeName", + "properties": { + "type": "SelfHosted", + "description": "Self-hosted Integration runtime created using ARM template" + } + } + ], + "outputs": { + "irId": { + "type": "string", + "value": "[resourceId(if(equals(parameters('existingDataFactoryVersion'), 'V2'), 'Microsoft.DataFactory/factories/integrationruntimes', 'Microsoft.DataFactory/dataFactories/gateways'), parameters('existingDataFactoryName'), parameters('IntegrationRuntimeName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1143 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1143 new file mode 100644 index 0000000..7055c5c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1143 @@ -0,0 +1,149 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/VMtemplate.json" + ], + "timestamp": 1642962904778, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/nested/VMtemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1143", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1143", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "adminUserName": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "existingVnetLocation": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "nsgId": { + "type": "string" + }, + "storageAccountName": { + "type": "string" + } + }, + "variables": { + "nicName": "virtualMachineNameNic", + "publicIPAddressName": "virtualMachineName-ip" + }, + "resources": [ + { + "apiVersion": "2019-09-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "virtualMachineName-ip", + "location": "existingVnetLocation", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "virtualMachineNameNic", + "location": "existingVnetLocation", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/virtualMachineName-ip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/virtualMachineName-ip" + }, + "subnet": { + "id": "subnetId" + } + } + } + ], + "networkSecurityGroup": { + "id": "nsgId" + } + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "virtualMachineName", + "location": "existingVnetLocation", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//virtualMachineNameNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "virtualMachineName", + "adminUsername": "adminUserName", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "virtualMachineName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/virtualMachineNameNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "https://storageAccountName.blob.core.windows.net/" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1144 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1144 new file mode 100644 index 0000000..c842cb9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1144 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904785, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1144", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.datafactory/datafactories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1144", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "datafactoryLocation": { + "type": "string" + }, + "dataFactoryLocation": { + "value": "westcentralus" + } + }, + "variables": { + "firstVNETName": "vnet-01", + "firstVNETPrefix": "10.0.0.0/16", + "firstVNETFESubnetName": "subnet01", + "firstVNETFESubnetPrefix": "10.0.1.0/24", + "datafactoryName": "[concat('df-', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "name": "vnet-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2019-09-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet01", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.DataFactory/datafactories", + "apiVersion": "2015-10-01", + "name": "[variables('datafactoryName')]", + "location": "westcentralus" + } + ], + "outputs": { + "resourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "vnetLocation": { + "type": "string", + "value": "[parameters('location')]" + }, + "vnetName": { + "type": "string", + "value": "[variables('firstVNETName')]" + }, + "subnetName": { + "type": "string", + "value": "[variables('firstVNETFESubnetName')]" + }, + "dataFactoryName": { + "type": "string", + "value": "[variables('datafactoryName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1145 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1145 new file mode 100644 index 0000000..90da601 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1145 @@ -0,0 +1,301 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/azuredeploy.json", + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/azuredeploy.parameters.json" + ], + "timestamp": 1642962904791, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/azuredeploy.json", + "/quickstarts/microsoft.compute/vms-with-selfhost-integration-runtime/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1145", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1145", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingDataFactoryName": { + "type": "string", + "metadata": { + "description": "your existing data factory name" + }, + "value": "GET-PREREQ-dataFactoryName" + }, + "existingDataFactoryResourceGroup": { + "type": "string", + "metadata": { + "description": "your existing data factory resource group" + }, + "value": "GET-PREREQ-resourceGroupName" + }, + "existingDataFactoryVersion": { + "type": "string", + "metadata": { + "description": "your existing data factory version" + }, + "allowedValues": [ + "V1", + "V2" + ], + "value": "V1" + }, + "IntegrationRuntimeName": { + "type": "string", + "metadata": { + "description": "IR name must be unique in subscription" + }, + "value": "GEN-UNIQUE" + }, + "NodeCount": { + "type": "int", + "maxValue": 4, + "minValue": 1, + "metadata": { + "description": "the node count is between 1 and 4." + }, + "value": 1 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A4_v2" + }, + "adminUserName": { + "type": "string", + "metadata": { + "description": "User name for the virtual machine" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the virtual machine" + }, + "value": "GEN-PASSWORD" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "your existing vnet name" + }, + "value": "GET-PREREQ-vnetName" + }, + "existingVnetLocation": { + "type": "string", + "metadata": { + "description": "your virtual machine will be create in the same datacenter with VNET" + }, + "value": "GET-PREREQ-vnetLocation" + }, + "existingVnetResourceGroupName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "GET-PREREQ-resourceGroupName" + }, + "existingSubnetInYourVnet": { + "type": "string", + "metadata": { + "description": "Name of the subnet in the virtual network you want to use" + }, + "value": "GET-PREREQ-subnetName" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "delimiters": [ + "-", + "_" + ], + "prefix": "[split(parameters('IntegrationRuntimeName'), variables('delimiters'))[0]]", + "storageAccountName": "[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, parameters('IntegrationRuntimeName'))), 24)]", + "networkSecurityGroupName": "GEN-UNIQUEnsg", + "vmTemplateLink": "[uri(parameters('_artifactsLocation'), concat('nested/VMtemplate.json', parameters('_artifactsLocationSasToken')))]", + "irInstallTemplateLink": "[uri(parameters('_artifactsLocation'), concat('nested/IRInstall.json', parameters('_artifactsLocationSasToken')))]", + "IRtemplateLink": "[uri(parameters('_artifactsLocation'), concat('nested/IRtemplate.json', parameters('_artifactsLocationSasToken')))]", + "subnetId": "GET-PREREQ-resourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-subnetName", + "scriptURL": "[uri(parameters('_artifactsLocation'), concat('gatewayInstall.ps1', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "name": "nestedTemplate", + "resourceGroup": "GET-PREREQ-resourceGroupName", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/IRtemplate.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "existingDataFactoryName": { + "value": "GET-PREREQ-dataFactoryName" + }, + "existingDataFactoryVersion": { + "value": "V1" + }, + "IntegrationRuntimeName": { + "value": "GEN-UNIQUE" + } + } + } + }, + { + "name": "GEN-UNIQUEnsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "location": "GET-PREREQ-vnetLocation", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, parameters('IntegrationRuntimeName'))), 24)]", + "location": "GET-PREREQ-vnetLocation", + "dependsOn": [ + "GET-PREREQ-resourceGroupName/Microsoft.Resources/deployments/nestedTemplate" + ], + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "name": "VMtemplate-copyIndex()", + "dependsOn": [ + "GET-PREREQ-resourceGroupName/Microsoft.Resources/deployments/nestedTemplate", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUEnsg", + "Microsoft.Storage/storageAccounts/[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, parameters('IntegrationRuntimeName'))), 24)]" + ], + "copy": { + "name": "vmcopy", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/VMtemplate.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualMachineName": { + "value": "[take(concat('vm',copyIndex(),'-', variables('prefix')), 15)]" + }, + "vmSize": { + "value": "Standard_A4_v2" + }, + "adminUserName": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "existingVnetLocation": { + "value": "GET-PREREQ-vnetLocation" + }, + "subnetId": { + "value": "GET-PREREQ-resourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-subnetName" + }, + "nsgId": { + "value": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUEnsg" + }, + "storageAccountName": { + "value": "[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, parameters('IntegrationRuntimeName'))), 24)]" + } + } + } + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.Resources/deployments", + "name": "IRInstalltemplate-copyIndex()", + "dependsOn": [ + "vmcopy" + ], + "copy": { + "name": "irinstallcopy", + "count": 1, + "mode": "serial" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/IRInstall.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "existingDataFactoryVersion": { + "value": "V1" + }, + "datafactoryId": { + "value": "[reference(resourceId(parameters('existingDataFactoryResourceGroup'), 'Microsoft.Resources/deployments', 'nestedTemplate')).outputs.irId.value]" + }, + "virtualMachineName": { + "value": "[take(concat('vm',copyIndex(),'-', variables('prefix')), 15)]" + }, + "existingVnetLocation": { + "value": "GET-PREREQ-vnetLocation" + }, + "scriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('gatewayInstall.ps1', parameters('_artifactsLocationSasToken')))]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1146 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1146 new file mode 100644 index 0000000..d7c7292 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1146 @@ -0,0 +1,335 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automatic-repairs-slb-health-probe/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-automatic-repairs-slb-health-probe/azuredeploy.parameters.json" + ], + "timestamp": 1642962904796, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automatic-repairs-slb-health-probe/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-automatic-repairs-slb-health-probe/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1146", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1146", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical" + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer" + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS" + }, + "imageOSVersion": { + "type": "string", + "defaultValue": "latest" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "maxValue": 100, + "minValue": 2 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "healthProbePort": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Local http port on VM at which health extension to probe" + } + }, + "healthProbeProtocol": { + "type": "string", + "defaultValue": "http", + "metadata": { + "description": "Protocol used by health extension to probe app health" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the VM scale set" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "lbName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "bepoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool", + "fepoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepool", + "feIpConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig", + "probeName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbprobe", + "bepoolID": "Microsoft.Network/loadBalancers/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool", + "feIpConfigId": "Microsoft.Network/loadBalancers/frontendIPConfigurations//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig", + "platformImageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "resources": [ + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/Subnet" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool" + } + ], + "loadBalancingRules": [ + { + "name": "ProbeRule", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbprobe" + } + } + } + ], + "probes": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbprobe", + "properties": { + "protocol": "http", + "port": 80, + "requestPath": "/", + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2019-03-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "vmsstag": "automaticrepairs" + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_D2s_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "upgradePolicy": { + "mode": "Manual" + }, + "automaticRepairsPolicy": { + "enabled": true, + "gracePeriod": "PT30M" + }, + "virtualMachineProfile": { + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "vmss", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "extensionProfile": { + "extensions": [ + { + "name": "CustomScriptToInstallApache", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_apache.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install_apache.sh" + } + } + } + ] + }, + "networkProfile": { + "healthProbe": { + "id": "Microsoft.Network/loadBalancers/probes//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbprobe" + }, + "networkInterfaceConfigurations": [ + { + "name": "nic1", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool" + } + ], + "publicipaddressconfiguration": { + "name": "pub1", + "properties": { + "idleTimeoutInMinutes": 15 + } + } + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1147 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1147 new file mode 100644 index 0000000..dbe4d92 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1147 @@ -0,0 +1,290 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automation-dsc/nested/provisionServer.json" + ], + "timestamp": 1642962904804, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automation-dsc/nested/provisionServer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1147", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings", + "microsoft.compute/virtualmachinescalesets", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1147", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "vmssName": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "instanceCount": { + "type": "int", + "defaultValue": 5, + "maxValue": 100 + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "nicName": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "subnetName": { + "type": "string" + }, + "loadBalancerName": { + "type": "string" + }, + "automationAccountName": { + "type": "string" + }, + "nodeConfigurationName": { + "type": "string", + "defaultValue": "WindowsIISServerConfig.localhost" + } + }, + "variables": { + "osType": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + }, + "resources": [ + { + "name": "automationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2018-06-30", + "location": "location", + "comments": "Automation account for OMS", + "properties": { + "sku": { + "name": "Basic" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(parameters('vmssName'))]", + "location": "location", + "apiVersion": "2018-10-01", + "dependsOn": [ + "automationAccountName" + ], + "sku": { + "name": "VMSize", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + }, + "extensionProfile": { + "extensions": [ + { + "name": "Microsoft.Powershell.DSC", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.76", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "Items": { + "registrationKeyPrivate": "[listKeys(resourceId('Microsoft.Automation/automationAccounts/', parameters('automationAccountName')), '2018-01-15').Keys[0].value]" + } + }, + "settings": { + "Properties": [ + { + "Name": "RegistrationKey", + "Value": { + "UserName": "PLACEHOLDER_DONOTUSE", + "Password": "PrivateSettingsRef:registrationKeyPrivate" + }, + "TypeName": "System.Management.Automation.PSCredential" + }, + { + "Name": "RegistrationUrl", + "Value": "[reference(concat('Microsoft.Automation/automationAccounts/', parameters('automationAccountName'))).registrationUrl]", + "TypeName": "System.String" + }, + { + "Name": "NodeConfigurationName", + "Value": "WindowsIISServerConfig.localhost", + "TypeName": "System.String" + }, + { + "Name": "ConfigurationMode", + "Value": "ApplyandAutoCorrect", + "TypeName": "System.String" + }, + { + "Name": "RebootNodeIfNeeded", + "Value": true, + "TypeName": "System.Boolean" + }, + { + "Name": "ActionAfterReboot", + "Value": "ContinueConfiguration", + "TypeName": "System.String" + } + ] + } + } + } + ] + }, + "osProfile": { + "computerNamePrefix": "[toLower(parameters('vmssName'))]", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nicName", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks//virtualNetworkName/subnets/subnetName" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers//loadBalancerName/backendAddressPools/backendAddressPool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers//loadBalancerName/inboundNatPools/natRDPPool" + }, + { + "id": "Microsoft.Network/loadBalancers//loadBalancerName/inboundNatPools/natWinRMPool" + } + ] + } + } + ] + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "autoscalehost", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/vmSSName" + ], + "properties": { + "name": "autoscalehost", + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets//vmSSName", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": "2", + "maximum": "25", + "default": "2" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricNamespace": "", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets//vmSSName", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricNamespace": "", + "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', parameters('vmSSName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + } + ] + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1148 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1148 new file mode 100644 index 0000000..b32bf18 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1148 @@ -0,0 +1,335 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automation-dsc/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-automation-dsc/azuredeploy.parameters.json" + ], + "timestamp": 1642962904810, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-automation-dsc/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-automation-dsc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1148", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1148", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The Azure location to deploy all resources" + }, + "allowedValues": [ + "japaneast", + "eastus2", + "westeurope", + "southeastasia", + "southcentralus", + "australiaeast", + "koreacentral", + "westus2", + "brazilsouth", + "uksouth", + "westcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "francecentral" + ], + "value": "eastus2" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "Naming convention for the vm scale set" + }, + "defaultValue": "srv" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "The number of vms to provision initially in the scale set" + }, + "defaultValue": 2, + "value": 10 + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new virtual network " + }, + "defaultValue": "10.0.0.0/16" + }, + "virtualNetworkSubnet": { + "type": "string", + "metadata": { + "description": "The address range of the subnet created in the new virtual network" + }, + "defaultValue": "10.0.0.0/24" + }, + "nicIPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the new AD VM" + }, + "defaultValue": "10.0.0.4" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the Administrator of the new VM and Domain" + }, + "value": "GEN-UNIQUE-6" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account of the new VM and Domain" + }, + "value": "GEN-PASSWORD" + }, + "VMSize": { + "type": "string", + "metadata": { + "description": "The size of the VM Created" + }, + "defaultValue": "Standard_B2s" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "The full qualified domain name to be created" + }, + "defaultValue": "contoso.local" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "Path to the nested templates used in this deployment" + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vmss-automation-dsc/" + }, + "_artifactsLocationSasToken": { + "type": "string", + "metadata": { + "description": "SAS token to access artifacts location, if required" + }, + "defaultValue": "" + }, + "compileName": { + "type": "string", + "metadata": { + "description": "Unique value to identify compilation job" + }, + "defaultValue": "[guid(resourceGroup().id, deployment().name)]" + } + }, + "variables": { + "automationAccountName": "[concat('DSC-',take(guid(resourceGroup().id),5))]", + "publicIPAddressName": "PIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "Network", + "virtualNetworkSubnetName": "Subnet", + "virtualNetworkSubnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ], + "loadBalancerName": "LoadBalancer", + "nicName": "NIC", + "nicSubnetRef": "Microsoft.Network/virtualNetworks/subnets/Network/Subnet", + "provisionConfigurationURL": "[uri(parameters('_artifactsLocation'), concat('nested/provisionConfiguration.json', parameters('_artifactsLocationSasToken')))]", + "provisionNetworkURL": "[uri(parameters('_artifactsLocation'), concat('nested/provisionNetwork.json', parameters('_artifactsLocationSasToken')))]", + "provisionServerUrl": "[uri(parameters('_artifactsLocation'), concat('nested/provisionServer.json', parameters('_artifactsLocationSasToken')))]", + "provisionDNSUrl": "[uri(parameters('_artifactsLocation'), concat('nested/provisionDNS.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "name": "provisionConfiguration", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-02-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/provisionConfiguration.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vmss-automation-dsc/" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "automationAccountName": { + "value": "[variables('automationAccountName')]" + }, + "location": { + "value": "eastus2" + }, + "compileName": { + "value": "[guid(resourceGroup().id, deployment().name)]" + } + } + } + }, + { + "name": "provisionNetwork", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-02-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/provisionNetwork.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus2" + }, + "virtualNetworkName": { + "value": "Network" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "virtualNetworkSubnets": { + "value": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + }, + "publicIPAddressName": { + "value": "PIP" + }, + "publicIPAddressType": { + "value": "Dynamic" + }, + "loadBalancerName": { + "value": "LoadBalancer" + } + } + } + }, + { + "name": "provisionServer", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-02-01", + "dependsOn": [ + "provisionNetwork", + "provisionConfiguration" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/provisionServer.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus2" + }, + "vmssName": { + "value": "srv" + }, + "instanceCount": { + "value": 10 + }, + "VMSize": { + "value": "Standard_B2s" + }, + "adminUsername": { + "value": "GEN-UNIQUE-6" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "NicName": { + "value": "NicName" + }, + "virtualNetworkName": { + "value": "Network" + }, + "subnetName": { + "value": "Subnet" + }, + "loadBalancerName": { + "value": "LoadBalancer" + }, + "automationAccountName": { + "value": "[variables('automationAccountName')]" + } + } + } + }, + { + "name": "provisionDNS", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-02-01", + "dependsOn": [ + "provisionServer" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/provisionDNS.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus2" + }, + "virtualNetworkName": { + "value": "Network" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "virtualNetworkSubnets": { + "value": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + }, + "dnsAddress": { + "value": [ + "10.0.0.4" + ] + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1149 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1149 new file mode 100644 index 0000000..d7abea6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1149 @@ -0,0 +1,360 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-azure-files-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-azure-files-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962904816, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-azure-files-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-azure-files-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1149", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1149", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_D2_v3" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources (9 characters or less). A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 12, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 3, + "maxValue": 100, + "value": 3 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name for Azure file share." + }, + "value": "GEN-UNIQUE-8" + }, + "storageAccountKey": { + "type": "securestring", + "metadata": { + "description": "Storage account key for Azure file share." + }, + "value": "storageaccountkey" + }, + "shareName": { + "type": "string", + "metadata": { + "description": "Azure file share name." + }, + "value": "azurefilesshare" + }, + "mountpointPath": { + "type": "string", + "defaultValue": "/mnt/azurefiles", + "metadata": { + "description": "Path on VM to mount file share - will also link to user home dir." + }, + "value": "/mnt/azurefiles" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "GEN-UNIQUE-8vnet", + "publicIPAddressName": "GEN-UNIQUE-8pip", + "subnetName": "GEN-UNIQUE-8subnet", + "loadBalancerName": "GEN-UNIQUE-8lb", + "natPoolName": "GEN-UNIQUE-8natpool", + "bePoolName": "GEN-UNIQUE-8bepool", + "natStartPort": 50000, + "natEndPort": 50120, + "natBackendPort": 22, + "nicName": "GEN-UNIQUE-8nic", + "ipConfigName": "GEN-UNIQUE-8ipconfig", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-8subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "GEN-UNIQUE-8lb", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUE-8bepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUE-8natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50120, + "backendPort": 22 + } + }, + { + "name": "natpool2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 9000, + "frontendPortRangeEnd": 9120, + "backendPort": 9000 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers//GEN-UNIQUE-8lb", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8vnet" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUE-8nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUE-8ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8vnet/GEN-UNIQUE-8subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//GEN-UNIQUE-8lb/GEN-UNIQUE-8bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools//GEN-UNIQUE-8lb/GEN-UNIQUE-8natpool" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/GEN-UNIQUE-8lb/natpool2" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "filesextension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('mountazurefiles.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash mountazurefiles.sh GEN-UNIQUE-8 storageaccountkey azurefilesshare /mnt/azurefiles GEN-UNIQUE" + } + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT115 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT115 new file mode 100644 index 0000000..ec43973 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT115 @@ -0,0 +1,276 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/docker/docker-simple-on-ubuntu/azuredeploy.json", + "/application-workloads/docker/docker-simple-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962886983, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/docker/docker-simple-on-ubuntu/azuredeploy.json", + "/application-workloads/docker/docker-simple-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT115", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT115", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_F1", + "metadata": { + "description": "VM size for the Docker host." + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "The Ubuntu version for deploying the Docker containers. This will pick a fully patched image of this given Ubuntu version. Allowed values: 15.10, 16.04.0-LTS, 18.04-LTS" + }, + "allowedValues": [ + "14.04.5-LTS", + "16.04-LTS", + "18.04-LTS" + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNicD", + "extensionName": "DockerExtension", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "diskStorageType": "StandardSSD_LRS", + "publicIPAddressName": "myPublicIPD", + "publicIPAddressType": "Dynamic", + "vmName": "MyDockerVM", + "virtualNetworkName": "MyVNETD", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNETD/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIPD", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNETD", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNicD", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIPD", + "Microsoft.Network/virtualNetworks//MyVNETD" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIPD" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNETD/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyDockerVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNicD" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F1" + }, + "osProfile": { + "computerName": "MyDockerVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyDockerVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNicD" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyDockerVM/DockerExtension", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyDockerVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1150 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1150 new file mode 100644 index 0000000..93f7a2b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1150 @@ -0,0 +1,308 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-custom-script-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-custom-script-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962904823, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-custom-script-windows/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-custom-script-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1150", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1150", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set" + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-8" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "defaultValue": 2, + "minValue": 2, + "maxValue": 100 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "metadata": { + "description": "Default location" + }, + "defaultValue": "[resourceGroup().location]" + }, + "_artifactsLocationSasToken": { + "defaultValue": "", + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "_artifactsLocation": { + "defaultValue": "[deployment().properties.templateLink.uri]", + "type": "string", + "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." + } + } + }, + "variables": { + "vnetName": "vnet", + "subnetName": "subnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/subnet", + "publicIPAddressName": "pip", + "loadBalancerName": "loadBalancer", + "loadBalancerFrontEndName": "loadBalancerFrontEnd", + "loadBalancerBackEndName": "loadBalancerBackEnd", + "loadBalancerProbeName": "loadBalancerHttpProbe", + "loadBalancerNatPoolName": "loadBalancerNatPool", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/helloWorld.ps1', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet", + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "sku": { + "name": "Standard_D2s_v3", + "capacity": 2 + }, + "properties": { + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/loadBalancerBackEnd" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/loadBalancer/loadBalancerNatPool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "customScript", + "properties": { + "publisher": "Microsoft.Compute", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/helloWorld.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File scripts/helloWorld.ps1" + }, + "type": "CustomScriptExtension" + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancer", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBackendName" + } + ], + "loadBalancingRules": [ + { + "name": "roundRobinLBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/loadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/loadBalancerBackendName" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer/loadBalancerHttpProbe" + } + } + } + ], + "probes": [ + { + "name": "loadBalancerHttpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": "5", + "numberOfProbes": "2" + } + } + ], + "inboundNatPools": [ + { + "name": "loadBalancerNatPool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50019, + "backendPort": 3389 + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1151 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1151 new file mode 100644 index 0000000..d29bd96 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1151 @@ -0,0 +1,90 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962904831, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1151", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1151", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingVnetName": "existingVirtualNetwork", + "existingVnetPrefix": "10.0.0.0/16", + "existingVnetFESubnetName": "subnet-1", + "existingVnetFESubnetPrefix": "10.0.1.0/24" + }, + "resources": [ + { + "name": "existingVirtualNetwork", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVnetResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingVnetName": { + "type": "string", + "value": "[variables('existingVnetName')]" + }, + "existingSubnetName": { + "type": "string", + "value": "[variables('existingVnetFESubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1152 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1152 new file mode 100644 index 0000000..8f50b19 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1152 @@ -0,0 +1,292 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-existing-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962904839, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1152", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1152", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "Globally unique dns name for the scale set. Must be 3-61 characters in length and globally unique across Azure." + }, + "minLength": 3, + "maxLength": 61, + "value": "GEN-UNIQUE" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "defaultValue": 2, + "minValue": 1, + "maxValue": 100, + "value": 2 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "existingVnetResourceGroupName": { + "type": "string", + "metadata": { + "description": "Name of the resourceGroup for the existing virtual network to deploy the scale set into." + }, + "value": "GET-PREREQ-existingVnetResourceGroupName" + }, + "existingVnetName": { + "type": "string", + "metadata": { + "description": "vName of the existing virtual network to deploy the scale set into." + }, + "value": "GET-PREREQ-existingVnetName" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the existing subnet to deploy the scale set into." + }, + "value": "GET-PREREQ-existingSubnetName" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "publicIPAddressName": "pip", + "loadBalancerName": "loadBalancer", + "loadBalancerFrontEndName": "loadBalancerFrontEnd", + "loadBalancerBackEndName": "loadBalancerBackEnd", + "loadBalancerProbeName": "loadBalancerHttpProbe", + "loadBalancerNatPoolName": "loadBalancerNatPool", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "sku": { + "name": "Standard_D2_v3", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "GET-PREREQ-existingVnetResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVnetName/existingSubNetName" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/loadBalancerBackEnd" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/loadBalancer/loadBalancerNatPool" + } + ] + } + } + ] + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancer", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "dependsOn": [ + "pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBackendName" + } + ], + "loadBalancingRules": [ + { + "name": "roundRobinLBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/loadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/loadBalancerBackendName" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer/loadBalancerHttpProbe" + } + } + } + ], + "probes": [ + { + "name": "loadBalancerHttpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatPools": [ + { + "name": "loadBalancerNatPool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50019, + "backendPort": 22 + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1153 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1153 new file mode 100644 index 0000000..5e6d031 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1153 @@ -0,0 +1,345 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-manual-add-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-manual-add-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962904847, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-manual-add-vm/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-manual-add-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1153", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1153", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineAdminUserName": { + "type": "string", + "metadata": { + "description": "Administrator Username for the local admin account" + }, + "value": "GEN-UNIQUE" + }, + "virtualMachineAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password for the local admin account" + }, + "value": "GEN-PASSWORD" + }, + "virtualMachineNamePrefix": { + "defaultValue": "MyVM0", + "type": "string", + "maxLength": 15, + "metadata": { + "description": "Name of the virtual machine to be created" + } + }, + "virtualMachineCount": { + "type": "int", + "defaultValue": 3, + "minValue": 1, + "maxValue": 150, + "metadata": { + "description": "Number of virtual machines to be created" + } + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_B1s", + "allowedValues": [ + "Standard_B1ls", + "Standard_B1s", + "Standard_B1ms", + "Standard_B2s", + "Standard_B2ms", + "Standard_D2s_v3", + "Standard_D4s_v3" + ], + "metadata": { + "description": "Virtual Machine Size." + } + }, + "operatingSystem": { + "type": "string", + "defaultValue": "UbuntuLTS", + "metadata": { + "description": "Operating System of the Server" + }, + "allowedValues": [ + "Win2019DataCenter", + "Win2016DataCenter", + "UbuntuLTS" + ] + }, + "virtualMachineScaleSetName": { + "defaultValue": "MyVirtualMachineScaleSet", + "type": "string", + "metadata": { + "description": "Virtual Machine Scale Set Name where the VM will be placed" + } + }, + "virtualMachineScaleSetAvailabilityZone": { + "type": "string", + "defaultValue": "none", + "metadata": { + "description": "Specify an Availability Zone for the Virtual Machine Scale Set. All Virtual Machines added the the scale set will inherit this zone. Not all Azure regions support Availability zones. VMSS deployed into a zone must have a platformFaultDomainCount = 1. Learn more about maximum fault domain count by region: https://aka.ms/azurefdcountbyregion" + }, + "allowedValues": [ + "none", + "1", + "2", + "3" + ] + }, + "dnsPrefixForPublicIP": { + "type": "string", + "minLength": 1, + "maxLength": 14, + "defaultValue": "[concat('d',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Globally unique DNS prefix for the Public IPs used to access the Virtual Machines" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "myVNETName": "myVMSS-VNET", + "myVNETPrefix": "10.0.0.0/16", + "myVNETSubnet1Name": "VMSS-Subnet1", + "myVNETSubnet1Prefix": "10.0.0.0/24", + "operatingSystemValues": { + "Win2019DataCenter": { + "PublisherValue": "MicrosoftWindowsServer", + "OfferValue": "WindowsServer", + "SkuValue": "2019-Datacenter" + }, + "Win2016DataCenter": { + "PublisherValue": "MicrosoftWindowsServer", + "OfferValue": "WindowsServer", + "SkuValue": "2016-Datacenter" + }, + "UbuntuLTS": { + "PublisherValue": "Canonical", + "OfferValue": "UbuntuServer", + "SkuValue": "18.04-LTS" + } + }, + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/myVMSS-VNET/VMSS-Subnet1", + "fdCountOptions": { + "zonal": 1, + "nonzonal": 2 + }, + "selectedZone": "[if(equals(parameters('virtualMachineScaleSetAvailabilityZone'), 'none'), '', array(parameters('virtualMachineScaleSetAvailabilityZone')))]", + "virtualMachineScaleSetPlatformFaultDomainCount": "[if(equals(parameters('virtualMachineScaleSetAvailabilityZone'), 'none'), variables('fdCountOptions').nonzonal, variables('fdCountOptions').zonal)]", + "networkSecurityGroupName": "VMSS-Subnet1-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('myVNETSubnet1Name')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-05-01", + "name": "VMSS-Subnet1-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "myVMSS-VNET", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2021-05-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/VMSS-Subnet1-nsg" + ], + "tags": { + "displayName": "myVMSS-VNET" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "VMSS-Subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/VMSS-Subnet1-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "MyVirtualMachineScaleSet", + "apiVersion": "2021-07-01", + "location": "[resourceGroup().location]", + "properties": { + "singlePlacementGroup": false, + "platformFaultDomainCount": "[if(equals(parameters('virtualMachineScaleSetAvailabilityZone'), 'none'), variables('fdCountOptions').nonzonal, variables('fdCountOptions').zonal)]" + }, + "zones": "[if(equals(parameters('virtualMachineScaleSetAvailabilityZone'), 'none'), '', array(parameters('virtualMachineScaleSetAvailabilityZone')))]" + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[concat(parameters('virtualMachineNamePrefix'), copyIndex(1))]", + "apiVersion": "2021-07-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "VMcopy", + "count": 3 + }, + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachineScaleSets/', parameters('virtualMachineScaleSetName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', concat(parameters('virtualMachineNamePrefix'), copyIndex(1), '-NIC1'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1s" + }, + "storageProfile": { + "imageReference": { + "publisher": "(operatingSystemValues)[parameters(operatingSystem)].PublisherValue", + "offer": "(operatingSystemValues)[parameters(operatingSystem)].OfferValue", + "sku": "(operatingSystemValues)[parameters(operatingSystem)].SkuValue", + "version": "latest" + }, + "osDisk": { + "name": "[concat(parameters('virtualMachineNamePrefix'),copyIndex(1))]", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "caching": "ReadWrite" + } + }, + "osProfile": { + "computerName": "[concat(parameters('virtualMachineNamePrefix'),copyIndex(1))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(parameters('virtualMachineNamePrefix'), copyIndex(1), '-NIC1'))]" + } + ] + }, + "virtualMachineScaleSet": { + "id": "Microsoft.Compute/virtualMachineScaleSets/MyVirtualMachineScaleSet" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(parameters('virtualMachineNamePrefix'), copyIndex(1), '-NIC1')]", + "apiVersion": "2021-05-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "NICCopy", + "count": 3 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('virtualMachineNamePrefix'), copyIndex(1), '-PIP1'))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVMSS-VNET/VMSS-Subnet1" + } + } + } + ], + "enableIPForwarding": false + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('virtualMachineNamePrefix'), copyIndex(1), '-PIP1'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('myVNETName'))]" + ] + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat(parameters('virtualMachineNamePrefix'), copyIndex(1), '-PIP1')]", + "location": "[resourceGroup().location]", + "zones": "[if(equals(parameters('virtualMachineScaleSetAvailabilityZone'), 'none'), '', array(parameters('virtualMachineScaleSetAvailabilityZone')))]", + "copy": { + "name": "PIPCopy", + "count": 3 + }, + "tags": { + "displayName": "[concat(parameters('virtualMachineNamePrefix'), copyIndex(1), '-PIP1')]" + }, + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('dnsPrefixForPublicIP'), copyIndex(1))]" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1154 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1154 new file mode 100644 index 0000000..24594a0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1154 @@ -0,0 +1,708 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-quickstart/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-quickstart/azuredeploy.parameters.json" + ], + "timestamp": 1642962904856, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-quickstart/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-flexible-orchestration-quickstart/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1154", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1154", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "3602548076467065099" + } + }, + "parameters": { + "vmssName": { + "type": "string", + "defaultValue": "vmss-quickstart", + "metadata": { + "description": "Name for the virtual machine scale set" + } + }, + "vmssAdminUserName": { + "type": "string", + "metadata": { + "description": "User name for virtual machine instances" + }, + "value": "GEN-UNIQUE" + }, + "vmssAdminPasswordOrSSHKey": { + "type": "secureString", + "metadata": { + "description": "Password or SSH Key for the VM instances. Be sure to also update whether using Password or SSH Key authentication on the VMSS Flex" + }, + "value": "GEN-PASSWORD" + }, + "instanceCount": { + "type": "int", + "defaultValue": 3, + "maxValue": 1000, + "minValue": 0, + "metadata": { + "description": "Number of virtual machine instances in the scale set" + } + }, + "platformFaultDomainCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "The platform fault domain count for your scale set. Set to 1 to allow Azure to maximally spread instances across many racks in the datacenter." + } + }, + "zones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Instances will be spread evenly between the zones you selected" + } + }, + "sku": { + "type": "string", + "defaultValue": "Standard_B1s", + "metadata": { + "description": "Specifies the virtual machine SKU to be used" + } + }, + "vnetPrefix": { + "type": "string", + "defaultValue": "[parameters('vmssName')]", + "metadata": { + "description": "Virtual network prefix" + } + }, + "lbName": { + "type": "string", + "defaultValue": "[format('{0}-LB', parameters('vmssName'))]", + "metadata": { + "description": "Name for the load balancer" + } + }, + "os": { + "type": "string", + "defaultValue": "ubuntulinux", + "allowedValues": [ + "ubuntulinux", + "windowsserver" + ], + "metadata": { + "description": "Choose the operating system for the VMs in the Virtual Machine Scale Set" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Region where the scale set will be deployed" + } + } + }, + "functions": [], + "variables": { + "vnetName": "[format('{0}{1}', parameters('vnetPrefix'), uniqueString(resourceGroup().name))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "basenetwork", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "virtualNetworkName": { + "value": "[format('{0}{1}', parameters('vnetPrefix'), uniqueString(resourceGroup().name))]" + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "7254579564168303679" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "Name of the subnet" + } + } + }, + "functions": [], + "variables": { + "subnetAddressPrefix": "10.1.0.0/24", + "addressPrefix": "10.1.0.0/16", + "nsgName": "[format('{0}NSG', parameters('virtualNetworkName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "nsgName", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "priority": 1000, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + }, + { + "name": "RDP", + "properties": { + "priority": 1050, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389" + } + }, + { + "name": "HTTP", + "properties": { + "priority": 1100, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "80" + } + }, + { + "name": "HTTPS", + "properties": { + "priority": 1200, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "443" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "virtualNetworkName", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": [ + { + "name": "[format('{0}-1', parameters('subnetName'))]", + "properties": { + "addressPrefix": "subnetAddressPrefix", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsgName" + ] + } + ], + "outputs": { + "vnetId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/virtualNetworkName" + }, + "vnetSubnetArray": { + "type": "array", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))).subnets]" + }, + "vnet": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName')), '2021-02-01', 'full')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "slb", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "slbName": { + "value": "[format('{0}-LB', parameters('vmssName'))]" + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "4905690839637422557" + } + }, + "parameters": { + "slbName": { + "type": "string", + "defaultValue": "myLoadBalancer", + "metadata": { + "description": "Load Balancer name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources" + } + } + }, + "functions": [], + "variables": { + "slbPIPName": "[format('{0}-PIP', parameters('slbName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-02-01", + "name": "slbPIPName", + "location": "[resourceGroup().location]", + "sku": { + "tier": "Regional", + "name": "Standard" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2021-02-01", + "name": "slbName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "frontendIPConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv4", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/slbPIPName" + } + }, + "name": "FrontEndConfig" + } + ], + "backendAddressPools": [ + { + "name": "bepool01" + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[format('{0}', resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', parameters('slbName'), 'FrontEndConfig'))]" + }, + "backendAddressPool": { + "id": "[format('{0}', resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('slbName'), 'bepool01'))]" + }, + "probe": { + "id": "[format('{0}', resourceId('Microsoft.Network/loadBalancers/probes', parameters('slbName'), 'probe01'))]" + }, + "protocol": "Tcp", + "loadDistribution": "Default", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 4, + "enableFloatingIP": false, + "enableTcpReset": false, + "disableOutboundSnat": false + }, + "name": "string" + } + ], + "probes": [ + { + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probe01" + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/slbPIPName" + ] + } + ], + "outputs": { + "slbId": { + "type": "string", + "value": "Microsoft.Network/loadBalancers/slbName" + }, + "slbName": { + "type": "string", + "value": "slbName" + }, + "slbFeConfigName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/loadBalancers', parameters('slbName'))).frontendIPConfigurations[0].name]" + }, + "slbBePoolName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/loadBalancers', parameters('slbName'))).backendAddressPools[0].name]" + }, + "slbBackendPoolArray": { + "type": "array", + "value": "[reference(resourceId('Microsoft.Network/loadBalancers', parameters('slbName'))).backendAddressPools]" + }, + "slbPublicIPAddress": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('slbPIPName'))).ipAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "vmss-bicep", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmssname": { + "value": "vmss-quickstart" + }, + "vmCount": { + "value": 3 + }, + "vmSize": { + "value": "Standard_B1s" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "value": "GEN-PASSWORD" + }, + "os": { + "value": "ubuntulinux" + }, + "platformFaultDomainCount": { + "value": 1 + }, + "zones": { + "value": [] + }, + "subnetId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'basenetwork'), '2020-06-01').outputs.vnetSubnetArray.value[0].id]" + }, + "lbBackendPoolArray": { + "value": [ + "[reference(resourceId('Microsoft.Resources/deployments', 'slb'), '2020-06-01').outputs.slbBackendPoolArray.value[0]]" + ] + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "11968600019434110732" + } + }, + "parameters": { + "vmssname": { + "type": "string", + "defaultValue": "myVmssFlex" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "zones": { + "type": "array", + "defaultValue": [] + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_DS1_v2" + }, + "platformFaultDomainCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 3, + 5 + ] + }, + "vmCount": { + "type": "int", + "defaultValue": 3, + "maxValue": 1000, + "minValue": 0 + }, + "os": { + "type": "string", + "defaultValue": "ubuntulinux", + "allowedValues": [ + "ubuntulinux", + "windowsserver" + ] + }, + "subnetId": { + "type": "string" + }, + "lbBackendPoolArray": { + "type": "array", + "defaultValue": [] + }, + "adminUsername": { + "type": "string" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ] + }, + "adminPasswordOrKey": { + "type": "secureString" + } + }, + "functions": [], + "variables": { + "networkApiVersion": "2020-11-01", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "provisionVMAgent": true, + "ssh": { + "publicKeys": [ + { + "path": "[format('/home/{0}/.ssh/authorized_keys', parameters('adminUsername'))]", + "keyData": "adminPasswordOrKey" + } + ] + } + }, + "linuxImageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18_04-LTS-Gen2", + "version": "latest" + }, + "windowsImageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "windowsConfiguration": { + "timeZone": "Pacific Standard Time" + }, + "imageReference": "[if(equals(parameters('os'), 'ubuntulinux'), variables('linuxImageReference'), variables('windowsImageReference'))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2021-04-01", + "name": "vmssname", + "location": "[resourceGroup().location]", + "zones": [], + "sku": { + "name": "vmSize", + "tier": "Standard", + "capacity": "vmCount" + }, + "properties": { + "orchestrationMode": "Flexible", + "singlePlacementGroup": false, + "platformFaultDomainCount": 1, + "virtualMachineProfile": { + "osProfile": { + "computerNamePrefix": "myVm", + "adminUsername": "adminUsername", + "adminPassword": "[if(equals(parameters('authenticationType'), 'password'), parameters('adminPasswordOrKey'), null())]", + "linuxConfiguration": "[if(and(equals(parameters('os'), 'ubuntulinux'), equals(parameters('authenticationType'), 'sshPublicKey')), variables('linuxConfiguration'), null())]", + "windowsConfiguration": "[if(equals(parameters('os'), 'windowsserver'), variables('windowsConfiguration'), null())]" + }, + "networkProfile": { + "networkApiVersion": "networkApiVersion", + "networkInterfaceConfigurations": [ + { + "name": "[format('{0}NicConfig01', parameters('vmssname'))]", + "properties": { + "primary": true, + "enableAcceleratedNetworking": false, + "ipConfigurations": [ + { + "name": "[format('{0}IpConfig', parameters('vmssname'))]", + "properties": { + "publicIPAddressConfiguration": { + "name": "[format('{0}PipConfig', parameters('vmssname'))]", + "properties": { + "publicIPAddressVersion": "IPv4", + "idleTimeoutInMinutes": 5 + } + }, + "privateIPAddressVersion": "IPv4", + "subnet": { + "id": "subnetId" + }, + "loadBalancerBackendAddressPools": "lbBackendPoolArray" + } + } + ] + } + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true + } + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "imageReference": "imageReference" + } + } + } + } + ], + "outputs": { + "vmssid": { + "type": "string", + "value": "Microsoft.Compute/virtualMachineScaleSets/vmssname" + }, + "vmssAdminUsername": { + "type": "string", + "value": "adminUsername" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/basenetwork", + "Microsoft.Resources/deployments/slb" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1155 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1155 new file mode 100644 index 0000000..da56db2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1155 @@ -0,0 +1,422 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-internal-loadbalancer/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-internal-loadbalancer/azuredeploy.parameters.json" + ], + "timestamp": 1642962904873, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-internal-loadbalancer/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-internal-loadbalancer/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1155", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1155", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1_v2" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS", + "16.04-LTS", + "14.04.4-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 18.04-LTS, 16.04-LTS, 14.04.4-LTS." + }, + "value": "18.04-LTS" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources (9 characters or less). A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 1, + "maxValue": 100, + "value": 5 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "newStorageAccountSuffix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]sa", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "jumpBoxName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "jumpBoxSAName": "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), 'jumpboxsa')), 'jb')]", + "jumpBoxOSDiskName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxosdisk", + "jumpBoxIPConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "jumpBoxNicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "storageAccountType": "Standard_LRS", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "loadBalancerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "natPoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "bePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 22, + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('jumpBoxSAName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('jumpBoxSAName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('jumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxosdisk_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('jumpBoxSAName'), '2020-08-01-preview').primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb" + ], + "sku": { + "name": "Standard_A1_v2", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1156 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1156 new file mode 100644 index 0000000..61bbbc8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1156 @@ -0,0 +1,438 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-customimage-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-customimage-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962904881, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-customimage-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-customimage-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1156", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings", + "microsoft.compute/images" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1156", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "minLength": 3, + "maxLength": 61, + "value": "GEN-UNIQUE" + }, + "capacity": { + "type": "int", + "metadata": { + "description": "Number of VM instances (20 or less)." + }, + "defaultValue": 2, + "minValue": 1, + "maxValue": 20, + "value": 2 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs. It must be at least 12 characters in length." + }, + "minLength": 12, + "value": "GEN-PASSWORD" + }, + "sourceImageVhdUri": { + "type": "string", + "metadata": { + "description": "The source of the blob containing the custom image, must be in the same region of the deployment." + }, + "value": "GEN-GENERALIZED-UBUNTUVHD-URI" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vmssuniqueName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]vnet", + "subnetName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]subnet", + "lbName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb", + "bepoolName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbbepool", + "fepoolName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbfepool", + "bepoolID": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbbepool", + "feIpConfigName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbfepoolIpConfig", + "feIpConfigId": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbfepoolIpConfig", + "pipName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]pip", + "nicName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]nic", + "natPoolName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbnatpool", + "ipConfigName": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]ipconfig", + "httpProbeName": "httpProbe", + "httpsProbeName": "httpsProbe", + "imageName": "myCustomImage" + }, + "resources": [ + { + "type": "Microsoft.Compute/images", + "apiVersion": "2020-06-01", + "name": "myCustomImage", + "location": "[resourceGroup().location]", + "properties": { + "hyperVGeneration": "V1", + "storageProfile": { + "osDisk": { + "osType": "Linux", + "osState": "Generalized", + "blobUri": "GEN-GENERALIZED-UBUNTUVHD-URI", + "storageAccountType": "Standard_LRS" + } + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]pip" + ], + "tags": { + "displayName": "Load Balancer" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbfepoolIpConfig", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbbepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbnatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbfepoolIpConfig" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 10022, + "frontendPortRangeEnd": 11022, + "backendPort": 22 + } + } + ], + "loadBalancingRules": [ + { + "name": "HTTPRule", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbfepoolIpConfig" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbbepool" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/httpsProbe" + } + } + }, + { + "name": "HTTPSRule", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbfepoolIpConfig" + }, + "backendAddressPool": { + "id": "bepoolId" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/httpsProbe" + } + } + } + ], + "probes": [ + { + "name": "httpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + }, + { + "name": "httpsProbe", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]vnet", + "Microsoft.Compute/images/myCustomImage" + ], + "sku": { + "name": "Standard_D2s_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "imageReference": { + "id": "Microsoft.Compute/images/myCustomImage" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]vnet/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/bePoolName" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lb/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]lbnatpool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "updatescriptextension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/updateapp.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('app/package.tar.gz', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[format('sudo bash {0} \"{1}\" {2} {3}', 'updateapp.sh', 'package.tar.gz', '/nodeserver', 'mainsite.service')]" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "autoscalesettings", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]" + ], + "properties": { + "name": "autoscalesettings", + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": "2", + "maximum": "20", + "default": 2 + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 40.0 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(take(concat(take(parameters('vmssName'),6), uniqueString(resourceGroup().id)), 9))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30.0 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + } + ] + } + ] + } + } + ], + "outputs": { + "fqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipName')),'2020-06-01').dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1157 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1157 new file mode 100644 index 0000000..1dfa6db --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1157 @@ -0,0 +1,295 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat/azuredeploy.parameters.json" + ], + "timestamp": 1642962904889, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1157", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1157", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "allowedValues": [ + "14.04.4-LTS", + "16.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 14.04.4-LTS, 16.04-LTS." + }, + "value": "16.04-LTS" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 5, + "maxValue": 100, + "value": 5 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "loadBalancerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "natPoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "bePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 22, + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1158 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1158 new file mode 100644 index 0000000..27b1ba2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1158 @@ -0,0 +1,325 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962904905, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1158", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1158", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the VM, only certain regions support Availability Zones." + }, + "value": "westus2" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs" + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "allowedValues": [ + "14.04.4-LTS", + "16.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 14.04.4-LTS, 16.04-LTS." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE" + }, + "instanceCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 3, + "maxValue": 100 + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "virtualNetworkName": "GEN-UNIQUEvnet", + "publicIPAddressName": "lbPublicIp", + "networkSecurityGroupName": "allowRemoting", + "subnetName": "GEN-UNIQUEsubnet", + "loadBalancerName": "GEN-UNIQUElb", + "natPoolName": "GEN-UNIQUEnatpool", + "bePoolName": "GEN-UNIQUEbepool", + "nicName": "GEN-UNIQUEnic", + "ipConfigName": "GEN-UNIQUEipconfig", + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUEvnet", + "location": "westus2", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUEsubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2017-10-01", + "name": "allowRemoting", + "location": "westus2", + "properties": { + "securityRules": [ + { + "name": "remoteConnection", + "properties": { + "description": "Allow RDP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "webTraffic", + "properties": { + "description": "Allow web traffic", + "protocol": "Tcp", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2017-10-01", + "name": "lbPublicIp", + "location": "westus2", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[tolower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2017-10-01", + "name": "GEN-UNIQUElb", + "location": "westus2", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/lbPublicIp" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lbPublicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUEbepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUEnatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUElb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50099, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE", + "location": "westus2", + "zones": [ + "1" + ], + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers/GEN-UNIQUElb", + "Microsoft.Network/virtualNetworks/GEN-UNIQUEvnet" + ], + "sku": { + "name": "Standard_A1_v2", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUEnic", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + }, + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUEipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUEvnet/GEN-UNIQUEsubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUElb/GEN-UNIQUEbepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools//GEN-UNIQUElb/GEN-UNIQUEnatpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1159 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1159 new file mode 100644 index 0000000..89c266e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1159 @@ -0,0 +1,325 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962904916, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-linux-nat-zones/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1159", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1159", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the VM, only certain regions support Availability Zones." + }, + "value": "usgovvirginia" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs" + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "allowedValues": [ + "14.04.4-LTS", + "16.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 14.04.4-LTS, 16.04-LTS." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE" + }, + "instanceCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 3, + "maxValue": 100 + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "virtualNetworkName": "GEN-UNIQUEvnet", + "publicIPAddressName": "lbPublicIp", + "networkSecurityGroupName": "allowRemoting", + "subnetName": "GEN-UNIQUEsubnet", + "loadBalancerName": "GEN-UNIQUElb", + "natPoolName": "GEN-UNIQUEnatpool", + "bePoolName": "GEN-UNIQUEbepool", + "nicName": "GEN-UNIQUEnic", + "ipConfigName": "GEN-UNIQUEipconfig", + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUEvnet", + "location": "usgovvirginia", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUEsubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2017-10-01", + "name": "allowRemoting", + "location": "usgovvirginia", + "properties": { + "securityRules": [ + { + "name": "remoteConnection", + "properties": { + "description": "Allow RDP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "webTraffic", + "properties": { + "description": "Allow web traffic", + "protocol": "Tcp", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2017-10-01", + "name": "lbPublicIp", + "location": "usgovvirginia", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[tolower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2017-10-01", + "name": "GEN-UNIQUElb", + "location": "usgovvirginia", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/lbPublicIp" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lbPublicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUEbepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUEnatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUElb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50099, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE", + "location": "usgovvirginia", + "zones": [ + "1" + ], + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers/GEN-UNIQUElb", + "Microsoft.Network/virtualNetworks/GEN-UNIQUEvnet" + ], + "sku": { + "name": "Standard_A1_v2", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUEnic", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + }, + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUEipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUEvnet/GEN-UNIQUEsubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUElb/GEN-UNIQUEbepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools//GEN-UNIQUElb/GEN-UNIQUEnatpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT116 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT116 new file mode 100644 index 0000000..7194b09 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT116 @@ -0,0 +1,286 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/dokku/dokku-vm/azuredeploy.json", + "/application-workloads/dokku/dokku-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962886995, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/dokku/dokku-vm/azuredeploy.json", + "/application-workloads/dokku/dokku-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT116", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT116", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "The SSH public key data for the administrator account as a string." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-10" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "20_04-lts-gen2", + "allowedValues": [ + "20_04-lts-gen2" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 20_04-lts-gen2." + } + }, + "dokkuVersion": { + "type": "string", + "defaultValue": "0.26.7", + "metadata": { + "description": "The Dokku version to launch" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2S_V3", + "metadata": { + "description": "Size of the virtual machine" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Type of storage to be used for the VM's OS disk. Diagnostics disk will use Standard_LRS." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'dokku')]", + "imagePublisher": "Canonical", + "imageOffer": "0001-com-ubuntu-server-focal", + "nicName": "dokkuVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "dokkuPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "DokkuVM", + "virtualNetworkName": "DokkuVNet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//DokkuVNet/Subnet", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "dokkuPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "DokkuVNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "dokkuVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "dokkuPublicIP", + "DokkuVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dokkuPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//DokkuVNet/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "DokkuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('storageAccountName')]", + "[variables('nicName')]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2S_V3" + }, + "osProfile": { + "computerName": "DokkuVM", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "0001-com-ubuntu-server-focal", + "sku": "20_04-lts-gen2", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dokkuVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints['blob']]" + } + } + }, + "resources": [ + { + "type": "extensions", + "name": "initdokku", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "DokkuVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/deploy_dokku.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh deploy_dokku.sh 0.26.7" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1160 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1160 new file mode 100644 index 0000000..c32b578 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1160 @@ -0,0 +1,533 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-master-slave-customscript/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-master-slave-customscript/azuredeploy.parameters.json" + ], + "timestamp": 1642962904938, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-master-slave-customscript/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-master-slave-customscript/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1160", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1160", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "masterNodeCount": { + "type": "int", + "minValue": 1, + "maxValue": 50, + "metadata": { + "description": "Number of master node in VMSS; if singlePlacementGroup is true (the default), then this value must be 100 or less; if singlePlacementGroup is false, then ths value must be 50 or less" + }, + "value": 3 + }, + "masterNodeSku": { + "defaultValue": "Standard_A1", + "type": "string", + "metadata": { + "description": "Size of VMs in the VM Scale Set for master node." + }, + "value": "Standard_A1" + }, + "dataNodeSku": { + "defaultValue": "Standard_D4S_v3", + "type": "string", + "metadata": { + "description": "Size of VMs in the VM Scale Set for data node." + }, + "value": "Standard_D4S_v3" + }, + "dataNodeCount": { + "type": "int", + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of data nodes in VMSS; if singlePlacementGroup is true (the default), then this value must be 100 or less; if singlePlacementGroup is false, then ths value must be 100 or less" + }, + "value": 5 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "osImagePublisher": { + "type": "string", + "defaultValue": "OpenLogic", + "metadata": { + "description": "Maps to the publisher in the Azure Stack Platform Image Repository manifest file." + }, + "value": "OpenLogic" + }, + "osImageOffer": { + "type": "string", + "defaultValue": "CentOS", + "metadata": { + "description": "Maps to the Offer in the Azure Stack Platform Image Repository manifest file." + }, + "value": "CentOS" + }, + "osImageSku": { + "type": "string", + "defaultValue": "7.4", + "metadata": { + "description": "The CentOS version for the VM. This will pick a fully patched image of this given CentOS version. Default value: 7.4" + }, + "value": "7.4" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vmssName": "[concat('vmss', uniqueString(resourceGroup().id, deployment().name))]", + "vnetName": "[concat('vnet-', variables('vmssName'))]", + "subnetMaster": "[concat('mastersubnet-', variables('vmssName'))]", + "subnetData": "[concat('datasubnet-', variables('vmssName'))]", + "masterPublicIPAddressName": "[toLower(concat('pip-master', variables('vmssName')))]", + "dataPublicIPAddressName": "[toLower(concat('pip-data', variables('vmssName')))]", + "vmssDomainName": "[toLower(concat('pubdns', variables('vmssName')))]", + "masterNodeLoadBalancerName": "[concat('LB-MasterN', variables('vmssName'))]", + "dataNodeLoadBalancerName": "[concat('LB-DataN', variables('vmssName'))]", + "masterNodeLoadBalancerFrontEndName": "[concat('LBFrontEnd', variables('vmssName'))]", + "dataNodeLoadBalancerFrontEndName": "[concat('LBFrontEnd', variables('vmssName'))]", + "masterNodeLoadBalancerBackEndName": "[concat('LBBackEnd',variables('vmssName'))]", + "dataNodeLoadBalancerBackEndName": "[concat('LBBackEnd',variables('vmssName'))]", + "masterNodeLoadBalancerProbeName": "[concat('LBHttpProbe', variables('vmssName'))]", + "dataNodeLoadBalancerProbeName": "[concat('LBHttpProbe', variables('vmssName'))]", + "masterNodeLoadBalancerNatPoolName": "[concat('LBNatPool', variables('vmssName'))]", + "dataNodeLoadBalancerNatPoolName": "[concat('LBNatPool', variables('vmssName'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('vnetName')]", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[variables('subnetMaster')]", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "[variables('subnetData')]", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(concat('pip-master', variables('vmssName')))]", + "apiVersion": "2017-06-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat('pubdns', variables('vmssName')))]-master-node" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(concat('pip-data', variables('vmssName')))]", + "apiVersion": "2017-06-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat('pubdns', variables('vmssName')))]-data-node" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[variables('masterNodeLoadBalancerName')]", + "apiVersion": "2017-06-01", + "location": "[resourceGroup().location]", + "properties": { + "frontendIPConfigurations": [ + { + "name": "[variables('masterNodeLoadBalancerFrontEndName')]", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(concat('pip-master', variables('vmssName')))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "masterNodeLoadBalancerBackendName" + } + ], + "loadBalancingRules": [ + { + "name": "roundRobinLBRule", + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('masterNodeLoadBalancerName'), variables('masterNodeLoadBalancerFrontEndName'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('masterNodeLoadBalancerName'), variables('masterNodeLoadBalancerBackendName'))]" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('masterNodeLoadBalancerName'), variables('masterNodeLoadBalancerProbeName'))]" + } + } + } + ], + "probes": [ + { + "name": "[variables('masterNodeLoadBalancerProbeName')]", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatPools": [ + { + "name": "[variables('masterNodeLoadBalancerNatPoolName')]", + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('masterNodeLoadBalancerName'), variables('masterNodeLoadBalancerFrontEndName'))]" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50019, + "backendPort": 22 + } + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', variables('vnetName'))]", + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ] + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[variables('dataNodeLoadBalancerName')]", + "apiVersion": "2017-06-01", + "location": "[resourceGroup().location]", + "properties": { + "frontendIPConfigurations": [ + { + "name": "[variables('dataNodeLoadBalancerFrontEndName')]", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(concat('pip-data', variables('vmssName')))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "dataNodeLoadBalancerBackendName" + } + ], + "loadBalancingRules": [ + { + "name": "roundRobinLBRule", + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('dataNodeLoadBalancerName'), variables('dataNodeLoadBalancerFrontEndName'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('dataNodeLoadBalancerName'), variables('dataNodeLoadBalancerBackendName'))]" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('dataNodeLoadBalancerName'), variables('dataNodeLoadBalancerProbeName'))]" + } + } + } + ], + "probes": [ + { + "name": "[variables('dataNodeLoadBalancerProbeName')]", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatPools": [ + { + "name": "[variables('dataNodeLoadBalancerNatPoolName')]", + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('dataNodeLoadBalancerName'), variables('dataNodeLoadBalancerFrontEndName'))]" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50019, + "backendPort": 22 + } + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', variables('vnetName'))]", + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('dataPublicIPAddressName'))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 3 + }, + "name": "[concat(variables('vmssName'), '-master-node')]", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "properties": { + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.4", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[variables('vmssName')]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnetMaster'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('masterNodeLoadBalancerName'), variables('masterNodeLoadBalancerBackEndName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('masterNodeLoadBalancerName'), variables('masterNodeLoadBalancerNatPoolName'))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmssName'),'-LinuxCustomScriptExtension')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "touch test1.txt" + } + } + } + ] + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', variables('vnetName'))]", + "[resourceId('Microsoft.Network/loadBalancers', variables('masterNodeLoadBalancerName'))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "sku": { + "name": "Standard_D4S_v3", + "tier": "Standard", + "capacity": 5 + }, + "name": "[concat(variables('vmssName'), '-data-node')]", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "properties": { + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.4", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[variables('vmssName')]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnetData'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('dataNodeLoadBalancerName'), variables('dataNodeLoadBalancerBackendName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('dataNodeLoadBalancerName'), variables('dataNodeLoadBalancerNatPoolName'))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmssName'),'-LinuxCustomScriptExtension')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "touch test2.txt" + } + } + } + ] + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', variables('vnetName'))]", + "[resourceId('Microsoft.Network/loadBalancers', variables('dataNodeLoadBalancerName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1161 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1161 new file mode 100644 index 0000000..690709d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1161 @@ -0,0 +1,319 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/nestedtemplates/createVMSS.json" + ], + "timestamp": 1642962904961, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/nestedtemplates/createVMSS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1161", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1161", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "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." + }, + "type": "string" + }, + "_artifactsLocationSasToken": { + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + }, + "type": "securestring" + }, + "adminPasswordorSSHKey": { + "metadata": { + "description": "OS Admin password or SSH Key depending on value of authentication type" + }, + "type": "securestring" + }, + "adminUsername": { + "metadata": { + "description": "Username for the Virtual Machine." + }, + "type": "string" + }, + "authenticationType": { + "allowedValues": [ + "password", + "sshPublicKey" + ], + "defaultValue": "password", + "metadata": { + "description": "Authentication type" + }, + "type": "string" + }, + "azureCLI2DockerImage": { + "defaultValue": "azuresdk/azure-cli-python:latest", + "metadata": { + "description": "The Docker image to rin the azure CLI from" + }, + "type": "string" + }, + "containerName": { + "type": "string" + }, + "instanceCount": { + "defaultValue": 2, + "maxValue": 100, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 0, + "type": "int" + }, + "location": { + "metadata": { + "description": "The Location For the resources" + }, + "type": "string" + }, + "networkSecurityGroupName": { + "metadata": { + "description": "The NSG Name to assocaite with the NIC in the VM" + }, + "type": "string" + }, + "nicName": { + "metadata": { + "description": "The nic name for the VMs in the scale set" + }, + "type": "string" + }, + "operatingSystem": { + "type": "string", + "metadata": { + "description": "OS for the VM, this is the offer and SKU concatenated with underscores and then mapped to a variable" + } + }, + "overProvision": { + "metadata": { + "description": "Over Provision VMSS Instances" + }, + "type": "bool" + }, + "provisionExtensions": { + "metadata": { + "description": "determines whether to provision the extensions" + }, + "type": "bool" + }, + "storageAccountId": { + "metadata": { + "description": "The storage account Id for boot diagnostics for the VMs in the scale set" + }, + "type": "string" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account for the blob copy" + } + }, + "subnetRef": { + "metadata": { + "description": "The subnet ref for the VMs in the scale set" + }, + "type": "string" + }, + "vmSize": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the VM to create" + }, + "type": "string" + }, + "vmssName": { + "metadata": { + "description": "The name of the scale set" + }, + "type": "string" + }, + "vmssPrefix": { + "metadata": { + "description": "The name prefix for the VMs in the scale set" + }, + "type": "string" + } + }, + "variables": { + "isWindowsOS": "[bool(contains(toLower(variables('imageReference')[parameters('operatingSystem')].offer), 'windows'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordorSSHKey" + } + ] + } + }, + "imageReference": { + "UbuntuServer_16.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "UbuntuServer_18.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "WindowsServer_2016-DataCenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "windowsConfiguration": { + "provisionVmAgent": "true" + }, + "windowsCSE": { + "name": "CustomScriptExtension", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('writeblob.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File .\\writeblob.ps1 -SubscriptionId ', subscription().subscriptionId, ' -TenantId ', subscription().tenantId, ' -ResourceGroupName ', resourceGroup().Name, ' -StorageAccountName ', parameters ('storageAccountName'),' -ContainerName ', parameters('containerName'), ' -Verbose')]" + } + } + }, + "linuxCSE": { + "name": "CustomScriptExtension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/writeblob.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install-and-run-cli-2.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('./install-and-run-cli-2.sh -i \"', parameters('azureCLI2DockerImage'),'\" -a \"', parameters('storageAccountName'), '\" -c \"', parameters('containerName'), '\" -r \"', resourceGroup().name, '\"')]" + } + } + }, + "extensionProfile": { + "extensions": "[createArray(if(variables('isWindowsOS'), variables('windowsCSE'), variables('linuxCSE')))]" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "vmssName", + "location": "Location", + "apiVersion": "2019-12-01", + "sku": { + "name": "Standard_D2s_v3", + "tier": "Standard", + "capacity": 2 + }, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "upgradePolicy": { + "mode": "Manual" + }, + "overprovision": "overProvision", + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage" + }, + "imageReference": "(imageReference)[parameters(operatingSystem)]" + }, + "osProfile": { + "computerNamePrefix": "vmssPrefix", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordorSSHKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]", + "windowsConfiguration": "[if(variables('isWindowsOS'), variables('windowsConfiguration'), json('null'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nicName", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "subnetRef" + }, + "publicipaddressconfiguration": { + "name": "publicip", + "properties": { + "idleTimeoutInMinutes": 15, + "dnsSettings": { + "domainNameLabel": "vmssName" + } + } + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSecurityGroupName" + } + } + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(parameters('storageAccountId'), '2019-06-01').primaryEndpoints.blob]" + } + }, + "extensionProfile": "[if(parameters('provisionExtensions'), variables('extensionProfile'), json('null'))]" + } + } + } + ], + "outputs": { + "principalId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets', parameters('vmssName')), '2019-12-01', 'Full').identity.principalId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1162 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1162 new file mode 100644 index 0000000..f284273 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1162 @@ -0,0 +1,65 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/nestedtemplates/setUpRBAC.json" + ], + "timestamp": 1642962905046, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/nestedtemplates/setUpRBAC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1162", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/providers/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1162", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "principalId": { + "type": "string", + "metadata": { + "description": "Principal ID to set the access for" + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The storage account to set access for" + } + } + }, + "variables": { + "contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "scope": "Microsoft.Storage/storageAccounts/storageAccountName", + "RBACResourceName": "[guid(variables('scope'), variables('contributor'), parameters('principalId'))]" + }, + "resources": [ + { + "apiVersion": "2020-04-01-preview", + "name": "storageAccountName/Microsoft.Authorization/[guid(variables('scope'), variables('contributor'), parameters('principalId'))]", + "type": "Microsoft.Storage/storageAccounts/providers/roleAssignments", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "principalId", + "scope": "Microsoft.Storage/storageAccounts/storageAccountName", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1163 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1163 new file mode 100644 index 0000000..dfcd18d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1163 @@ -0,0 +1,373 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-msi/azuredeploy.parameters.json" + ], + "timestamp": 1642962905109, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-msi/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-msi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1163", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1163", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Authentication type" + } + }, + "adminPasswordorSSHKey": { + "type": "securestring", + "metadata": { + "description": "OS Admin password or SSH Key depending on value of authentication type" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "metadata": { + "description": "The Location For the resources" + }, + "defaultValue": "[resourceGroup().location]" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the VM to create" + }, + "defaultValue": "Standard_D2S_V3" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 1, + "maxValue": 100, + "defaultValue": 2 + }, + "overProvision": { + "type": "bool", + "metadata": { + "description": "Over Provision VMSS Instances" + }, + "defaultValue": false + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + }, + "defaultValue": "" + }, + "operatingSystem": { + "type": "string", + "defaultValue": "UbuntuServer_18.04-LTS", + "metadata": { + "description": "Operating system to use for the virtual machine." + }, + "allowedValues": [ + "UbuntuServer_18.04-LTS", + "UbuntuServer_16.04-LTS", + "WindowsServer_2016-DataCenter" + ] + } + }, + "variables": { + "azureCLI2DockerImage": "mcr.microsoft.com/azure-cli", + "vmssPrefix": "vmss", + "storageAccountName": "[concat(variables('vmssPrefix'),uniquestring(resourceGroup().id))]", + "nicName": "nic", + "networkSecurityGroupName": "nsg", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "vmssName": "[concat(variables('vmssPrefix'), uniquestring(resourceGroup().id))]", + "virtualNetworkName": "vnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet", + "containerName": "msi", + "createVMSSUrl": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/createVMSS.json', parameters('_artifactsLocationSasToken')))]", + "createRBACUrl": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/setUpRBAC.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "Location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "Location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "nsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "[if(contains(toLower(parameters('operatingSystem')), 'windows'), 3389, 22)]", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "creatingVMSS", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "[variables('virtualNetworkName')]", + "[variables('storageAccountName')]", + "[variables('networkSecurityGroupName')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/createVMSS.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "adminPasswordorSSHKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "azureCLI2DockerImage": { + "value": "mcr.microsoft.com/azure-cli" + }, + "containerName": { + "value": "msi" + }, + "operatingSystem": { + "value": "UbuntuServer_18.04-LTS" + }, + "instanceCount": { + "value": 0 + }, + "location": { + "value": "[resourceGroup().location]" + }, + "networkSecurityGroupName": { + "value": "nsg" + }, + "nicName": { + "value": "nic" + }, + "overProvision": { + "value": false + }, + "provisionExtensions": { + "value": false + }, + "storageAccountId": { + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "storageAccountName": { + "value": "[variables('storageAccountName')]" + }, + "subnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet" + }, + "vmSize": { + "value": "Standard_D2S_V3" + }, + "vmssName": { + "value": "[variables('vmssName')]" + }, + "vmssPrefix": { + "value": "vmss" + } + } + } + }, + { + "name": "creatingRBAC", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "creatingVMSS" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/setUpRBAC.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "principalId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'creatingVMSS'), '2019-09-01').outputs.principalId.value]" + }, + "storageAccountName": { + "value": "[variables('storageAccountName')]" + } + } + } + }, + { + "name": "updatingVMSS", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "creatingRBAC" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/createVMSS.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "adminPasswordorSSHKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "azureCLI2DockerImage": { + "value": "mcr.microsoft.com/azure-cli" + }, + "containerName": { + "value": "msi" + }, + "operatingSystem": { + "value": "UbuntuServer_18.04-LTS" + }, + "instanceCount": { + "value": 2 + }, + "location": { + "value": "[resourceGroup().location]" + }, + "networkSecurityGroupName": { + "value": "nsg" + }, + "nicName": { + "value": "nic" + }, + "overProvision": { + "value": false + }, + "provisionExtensions": { + "value": true + }, + "storageAccountId": { + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "storageAccountName": { + "value": "[variables('storageAccountName')]" + }, + "subnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/vnet/Subnet" + }, + "vmSize": { + "value": "Standard_D2S_V3" + }, + "vmssName": { + "value": "[variables('vmssName')]" + }, + "vmssPrefix": { + "value": "vmss" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1164 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1164 new file mode 100644 index 0000000..268d9f0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1164 @@ -0,0 +1,286 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-public-ip-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-public-ip-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962905136, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-public-ip-linux/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-public-ip-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1164", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1164", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_D2_v3" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources (9 characters or less). A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "value": "GEN-UNIQUE-9" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 3, + "maxValue": 100, + "value": 3 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "GEN-UNIQUE-9vnet", + "publicIPAddressName": "GEN-UNIQUE-9pip", + "subnetName": "GEN-UNIQUE-9subnet", + "loadBalancerName": "GEN-UNIQUE-9lb", + "natPoolName": "GEN-UNIQUE-9natpool", + "bePoolName": "GEN-UNIQUE-9bepool", + "natStartPort": 50000, + "natEndPort": 50120, + "natBackendPort": 22, + "nicName": "GEN-UNIQUE-9nic", + "ipConfigName": "GEN-UNIQUE-9ipconfig", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-9vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-9subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-9pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-9" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "GEN-UNIQUE-9lb", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-9pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-9pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUE-9bepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUE-9natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-9lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50120, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE-9", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/loadBalancers//GEN-UNIQUE-9lb", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-9vnet" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": "false", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-9", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUE-9nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUE-9ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-9vnet/GEN-UNIQUE-9subnet" + }, + "publicipaddressconfiguration": { + "name": "pub1", + "properties": { + "idleTimeoutInMinutes": 15 + } + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//GEN-UNIQUE-9lb/GEN-UNIQUE-9bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools//GEN-UNIQUE-9lb/GEN-UNIQUE-9natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1165 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1165 new file mode 100644 index 0000000..d5280ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1165 @@ -0,0 +1,306 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-scale-existing/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-scale-existing/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905155, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-scale-existing/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-scale-existing/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1165", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1165", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_D2s_v3" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "allowedValues": [ + "14.04.4-LTS", + "16.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 15.10, 14.04.4-LTS." + }, + "value": "16.04-LTS" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 2, + "maxValue": 100, + "value": 2 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vmssName": "GEN-UNIQUE-32", + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "loadBalancerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "natPoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "bePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 22, + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_D2s_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "outputs": { + "existingVmssName": { + "type": "string", + "value": "[variables('vmssName')]" + }, + "namingInfix": { + "type": "string", + "value": "[variables('namingInfix')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1166 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1166 new file mode 100644 index 0000000..4af61c1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1166 @@ -0,0 +1,112 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-scale-existing/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-scale-existing/azuredeploy.parameters.json" + ], + "timestamp": 1642962905168, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-scale-existing/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-scale-existing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1166", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1166", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namingInfix": { + "type": "string", + "metadata": { + "description": "Naming infix of existing VM Scale Set." + }, + "value": "GET-PREREQ-namingInfix" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + } + }, + "resources": [ + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "autoscalewad", + "location": "[resourceGroup().location]", + "properties": { + "name": "autoscalewad", + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets//GET-PREREQ-namingInfix", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": "1", + "maximum": "10", + "default": "1" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets//GET-PREREQ-namingInfix", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "3", + "cooldown": "PT1M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets//GET-PREREQ-namingInfix", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + } + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1167 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1167 new file mode 100644 index 0000000..9df8b7c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1167 @@ -0,0 +1,328 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-app-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-app-gateway/azuredeploy.parameters.json" + ], + "timestamp": 1642962905189, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-app-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-app-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1167", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1167", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-57 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 57, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (1000 or less)." + }, + "minValue": 3, + "maxValue": 1000, + "value": 3 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.8.0/21", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "appGwPublicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip", + "appGwName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw", + "appGwPublicIPAddressID": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip", + "appGwSubnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwSubnet", + "appGwSubnetPrefix": "10.0.1.0/24", + "appGwSubnetID": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwSubnet", + "appGwFrontendPort": 80, + "appGwBackendPort": 80, + "appGwBePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwBepool", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.8.0/21" + } + }, + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip" + ], + "properties": { + "sku": { + "name": "Standard_Large", + "tier": "Standard", + "capacity": "10" + }, + "gatewayIPConfigurations": [ + { + "name": "appGwIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwSubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGwFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGwFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwBepool" + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGwBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGwHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/appGwFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/appGwFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/appGwHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwBepool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/appGwBackendHttpSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "Microsoft.Network/applicationGateways//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw" + ], + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": "true", + "singlePlacementGroup": "false", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "ApplicationGatewayBackendAddressPools": [ + { + "id": "Microsoft.Network/applicationGateways/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwBepool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1168 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1168 new file mode 100644 index 0000000..da39522 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1168 @@ -0,0 +1,359 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962905199, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1168", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1168", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "allowedValues": [ + "14.04.4-LTS", + "16.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 15.10, 14.04.4-LTS." + }, + "value": "16.04-LTS" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 5, + "maxValue": 100, + "value": 5 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "loadBalancerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "natPoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "bePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 22, + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "autoscalewad", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]" + ], + "properties": { + "name": "autoscalewad", + "targetResourceUri": "[concat('/subscriptions/',subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('namingInfix'))]", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": "1", + "maximum": "10", + "default": "1" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('namingInfix'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('namingInfix'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + } + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1169 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1169 new file mode 100644 index 0000000..69fe381 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1169 @@ -0,0 +1,465 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-web-ssl/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-web-ssl/azuredeploy.parameters.json" + ], + "timestamp": 1642962905208, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-ubuntu-web-ssl/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-ubuntu-web-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1169", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1169", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.4-LTS", + "allowedValues": [ + "14.04.4-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 15.10, 14.04.4-LTS." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "webVMs" + }, + "capacity": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "maxValue": 100, + "value": 1 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "vaultName": { + "type": "string", + "metadata": { + "description": "The Azure Key vault where SSL certificates are stored" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "vaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group of the key vault" + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "httpssecretUrlWithVersion": { + "type": "string", + "metadata": { + "description": "full Key Vault Id to the secret that stores the SSL cert" + }, + "value": "GEN-SF-CERT-URL" + }, + "httpssecretCaUrlWithVersion": { + "type": "string", + "metadata": { + "description": "full Key Vault Id to the secret that stores the CA cert" + }, + "value": "GEN-SF-CERT-URL" + }, + "scriptFileName": { + "type": "string", + "metadata": { + "description": "the file name of the script configuring the VMs in the scale set" + }, + "value": "configuressl.sh" + }, + "certThumbPrint": { + "type": "string", + "metadata": { + "description": "fingerprint of the SSL cert" + }, + "value": "GEN-SF-CERT-THUMBPRINT" + }, + "caCertThumbPrint": { + "type": "string", + "metadata": { + "description": "fingerprint of the CA cert" + }, + "value": "GEN-SF-CERT-THUMBPRINT" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vmss-ubuntu-web-ssl/configuressl.sh" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "lbName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "bepoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool", + "fepoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepool", + "lbID": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "bepoolID": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool", + "feIpConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig", + "feIpConfigId": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig", + "pipName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "natPoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbnatpool", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "httpProbeName": "httpProbe", + "httpsProbeName": "httpsProbe", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2016-03-30", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2016-03-30", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2016-03-30", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + ], + "tags": { + "displayName": "Load Balancer" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbnatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 10022, + "frontendPortRangeEnd": 10050, + "backendPort": 22 + } + } + ], + "loadBalancingRules": [ + { + "name": "HTTPRule", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbbepool" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "lbId/probes/httpProbe" + } + } + }, + { + "name": "HTTPSRule", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbfepoolIpConfig" + }, + "backendAddressPool": { + "id": "bepoolId" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/probes/httpsProbe" + } + } + } + ], + "probes": [ + { + "name": "httpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + }, + { + "name": "httpsProbe", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2016-04-30-preview", + "dependsOn": [ + "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 1 + }, + "properties": { + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "secrets": [ + { + "sourceVault": { + "id": "GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults/GEN-KEYVAULT-NAME" + }, + "vaultCertificates": [ + { + "certificateUrl": "GEN-SF-CERT-URL" + }, + { + "certificateUrl": "GEN-SF-CERT-URL" + } + ] + } + ], + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/bePoolName" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lbnatpool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "lapextension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": false, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vmss-ubuntu-web-ssl/configuressl.sh/configuressl.sh parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "bash configuressl.sh GEN-SF-CERT-THUMBPRINT GEN-SF-CERT-THUMBPRINT" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "fqdn": { + "type": "string", + "value": "[reference( variables('pipName') ).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT117 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT117 new file mode 100644 index 0000000..1447862 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT117 @@ -0,0 +1,312 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/drone/drone-ubuntu-vm/azuredeploy.json", + "/application-workloads/drone/drone-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962887003, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/drone/drone-ubuntu-vm/azuredeploy.json", + "/application-workloads/drone/drone-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT117", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT117", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of new Storage Account that will hold VM OS disk" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username assigned to new local user on VM" + }, + "value": "GEN-UNIQUE" + }, + "vmDnsName": { + "type": "string", + "metadata": { + "description": "Hostname and Azure DNS name that the VM will be assigned" + }, + "value": "GEN-UNIQUE" + }, + "githubClientKey": { + "type": "string", + "metadata": { + "description": "GitHub application client key required by the Drone CI components for synchronizing repositories" + }, + "value": "clientkey" + }, + "githubSecret": { + "type": "securestring", + "metadata": { + "description": "GitHub application client secret required by the Drone CI components for synchronizing repositories" + }, + "value": "clientsecret" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Default VM size" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIPTest", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "virtualNetworkName": "droneCINET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/droneCINET/Subnet-1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIPTest", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "droneCINET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIPTest", + "Microsoft.Network/virtualNetworks//droneCINET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIPTest" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/droneCINET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/installDrone", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "sh install_drone.sh clientkey clientsecret" + }, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_drone.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1170 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1170 new file mode 100644 index 0000000..83062d0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1170 @@ -0,0 +1,80 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905216, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1170", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1170", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "vnetName": "vnet01", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "subnet01", + "subnetAddressPrefix": "10.0.1.0/24" + }, + "resources": [ + { + "name": "vnet01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet01", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "[variables('vnetName')]" + }, + "subnetName": { + "type": "string", + "value": "[variables('subnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1171 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1171 new file mode 100644 index 0000000..09ecc73 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1171 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962905222, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-win-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1171", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1171", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_D2s_v3" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "Unique name for the scale set. Must be 3-61 characters in length and unique across the VNet." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-8" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "defaultValue": 2, + "value": 2 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "existingVnetName": { + "type": "string", + "metadata": { + "description": "vName of the existing virtual network to deploy the scale set into." + }, + "value": "GET-PREREQ-vnetName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location parameter" + } + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the existing subnet to deploy the scale set into." + }, + "value": "GET-PREREQ-subnetName" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "sku": { + "name": "Standard_D2s_v3", + "capacity": 2 + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/existingSubNetName" + } + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1172 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1172 new file mode 100644 index 0000000..6eb9c28 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1172 @@ -0,0 +1,316 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-app-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-app-gateway/azuredeploy.parameters.json" + ], + "timestamp": 1642962905229, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-app-gateway/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-app-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1172", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1172", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + }, + "value": "2012-R2-Datacenter" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-57 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 57, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (1000 or less)." + }, + "minValue": 3, + "maxValue": 1000, + "value": 3 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "windows" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.8.0/21", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "appGwPublicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip", + "appGwName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw", + "appGwSubnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwSubnet", + "appGwSubnetPrefix": "10.0.1.0/24", + "appGwFrontendPort": 80, + "appGwBackendPort": 80, + "appGwBePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwBepool" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.8.0/21" + } + }, + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip", + "location": "[resourceGroup().location]", + "apiVersion": "2016-03-30", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw", + "location": "[resourceGroup().location]", + "apiVersion": "2016-03-30", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip" + ], + "properties": { + "sku": { + "name": "Standard_Large", + "tier": "Standard", + "capacity": "10" + }, + "gatewayIPConfigurations": [ + { + "name": "appGwIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwSubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGwFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwPip" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGwFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwBepool" + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGwBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGwHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/appGwFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/appGwFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/appGwHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwBepool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/appGwBackendHttpSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2016-04-30-preview", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "Microsoft.Network/applicationGateways//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw" + ], + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": "true", + "singlePlacementGroup": "false", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "windows", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "ApplicationGatewayBackendAddressPools": [ + { + "id": "Microsoft.Network/applicationGateways/backendAddressPools//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGw/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]appGwBepool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1173 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1173 new file mode 100644 index 0000000..b13b865 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1173 @@ -0,0 +1,345 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962905237, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-autoscale/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1173", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1173", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "7379231288636260028" + } + }, + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2019-Datacenter", + "2016-Datacenter", + "2012-R2-Datacenter", + "2012-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + }, + "value": "2012-R2-Datacenter" + }, + "vmssName": { + "type": "string", + "maxLength": 61, + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "maxValue": 100, + "minValue": 1, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "value": 5 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "windows" + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "namingInfix": "[toLower(substring(format('{0}{1}', parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[format('{0}vnet', variables('namingInfix'))]", + "publicIPAddressName": "[format('{0}pip', variables('namingInfix'))]", + "subnetName": "[format('{0}subnet', variables('namingInfix'))]", + "loadBalancerName": "[format('{0}lb', variables('namingInfix'))]", + "natPoolName": "[format('{0}natpool', variables('namingInfix'))]", + "bePoolName": "[format('{0}bepool', variables('namingInfix'))]", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 3389, + "nicName": "[format('{0}nic', variables('namingInfix'))]", + "ipConfigName": "[format('{0}ipconfig', variables('namingInfix'))]", + "osType": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "[format('{0}vnet', variables('namingInfix'))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[format('{0}subnet', variables('namingInfix'))]", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-02-01", + "name": "[format('{0}pip', variables('namingInfix'))]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2021-02-01", + "name": "[format('{0}lb', variables('namingInfix'))]", + "location": "[resourceGroup().location]", + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[format('{0}pip', variables('namingInfix'))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[format('{0}bepool', variables('namingInfix'))]" + } + ], + "inboundNatPools": [ + { + "name": "[format('{0}natpool', variables('namingInfix'))]", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[format('{0}lb', variables('namingInfix'))]/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[format('{0}pip', variables('namingInfix'))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2021-03-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(format('{0}{1}', parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "windows", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[format('{0}nic', variables('namingInfix'))]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[format('{0}ipconfig', variables('namingInfix'))]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('{0}vnet', variables('namingInfix'))]/[format('{0}subnet', variables('namingInfix'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[format('{0}lb', variables('namingInfix'))]/[format('{0}bepool', variables('namingInfix'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/[format('{0}lb', variables('namingInfix'))]/[format('{0}natpool', variables('namingInfix'))]" + } + ] + } + } + ] + } + } + ] + } + } + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/[format('{0}lb', variables('namingInfix'))]", + "Microsoft.Network/virtualNetworks/[format('{0}vnet', variables('namingInfix'))]" + ] + }, + { + "type": "Microsoft.Insights/autoscalesettings", + "apiVersion": "2015-04-01", + "name": "cpuautoscale", + "location": "[resourceGroup().location]", + "properties": { + "name": "cpuautoscale", + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/GEN-UNIQUE-32", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": "1", + "maximum": "10", + "default": "1" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/GEN-UNIQUE-32", + "timeGrain": "PT1M", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 50, + "statistic": "Average" + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/GEN-UNIQUE-32", + "timeGrain": "PT1M", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30, + "statistic": "Average" + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + } + ] + } + ] + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/GEN-UNIQUE-32" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1174 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1174 new file mode 100644 index 0000000..f5f4abe --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1174 @@ -0,0 +1,71 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-customimage/templates/storageaccount.json" + ], + "timestamp": 1642962905246, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-customimage/templates/storageaccount.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1174", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1174", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Storage Account" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "newStorageAccountName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_LRS" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1175 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1175 new file mode 100644 index 0000000..526c999 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1175 @@ -0,0 +1,340 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-customimage/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-customimage/azuredeploy.parameters.json" + ], + "timestamp": 1642962905254, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-customimage/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-customimage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1175", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/images" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1175", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSSName": { + "type": "string", + "metadata": { + "description": "The Name of the VM Scale Set" + }, + "value": "changeme" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances to create in the scale set" + }, + "value": 2 + }, + "vmSize": { + "type": "string", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2s_v3", + "Standard_D2_v3", + "Standard_D2s_v3", + "Standard_D4_v3", + "Standard_D4s_v3", + "Standard_D8_v3", + "Standard_D8s_v3", + "Standard_D4_v3", + "Standard_D4s_v3", + "Standard_D4_v3", + "Standard_D4s_v3", + "Standard_D8_v3", + "Standard_D8s_v3", + "Standard_D16_v3", + "Standard_D16s_v3" + ], + "metadata": { + "description": "The size of the VM instances Created" + }, + "value": "Standard_D2_v3" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "The Prefix for the DNS name of the new IP Address created" + }, + "value": "changeme" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The Username of the administrative user for each VM instance created" + }, + "value": "changeme" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The Password of the administrative user for each VM instance created" + }, + "value": "changeme" + }, + "sourceImageVhdUri": { + "type": "string", + "metadata": { + "description": "The source of the blob containing the custom image" + }, + "value": "changeme" + }, + "frontEndLBPort": { + "type": "int", + "metadata": { + "description": "The front end port to load balance" + }, + "defaultValue": 80, + "value": 80 + }, + "backEndLBPort": { + "type": "int", + "metadata": { + "description": "The back end port to load balance" + }, + "defaultValue": 80, + "value": 80 + }, + "probeIntervalInSeconds": { + "type": "int", + "metadata": { + "description": "The interval between load balancer health probes" + }, + "defaultValue": 15, + "value": 15 + }, + "numberOfProbes": { + "type": "int", + "metadata": { + "description": "The number of probes that need to fail before a VM instance is deemed unhealthy" + }, + "defaultValue": 5, + "value": 5 + }, + "probeRequestPath": { + "type": "string", + "metadata": { + "description": "The path used for the load balancer health probe" + }, + "defaultValue": "/iisstart.htm", + "value": "/iisstart.htm" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "vmssvnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vmssvnet/Subnet", + "publicIPAddressName": "publicip1", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/publicip1", + "lbName": "loadBalancer1", + "lbID": "Microsoft.Network/loadBalancers/loadBalancer1", + "lbFEName": "loadBalancerFrontEnd", + "lbWebProbeName": "loadBalancerWebProbe", + "lbBEAddressPool": "loadBalancerBEAddressPool", + "lbFEIPConfigID": "Microsoft.Network/loadBalancers/loadBalancer1/frontendIPConfigurations/loadBalancerFrontEnd", + "lbBEAddressPoolID": "Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/loadBalancerBEAddressPool", + "lbWebProbeID": "Microsoft.Network/loadBalancers/loadBalancer1/probes/loadBalancerWebProbe", + "imageName": "myCustomImage" + }, + "resources": [ + { + "type": "Microsoft.Compute/images", + "apiVersion": "2017-03-30", + "name": "myCustomImage", + "location": "[resourceGroup().location]", + "properties": { + "storageProfile": { + "osDisk": { + "osType": "Windows", + "osState": "Generalized", + "blobUri": "changeme", + "storageAccountType": "Standard_LRS" + } + } + } + }, + { + "apiVersion": "2017-04-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vmssvnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2017-04-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicip1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "changeme" + } + } + }, + { + "apiVersion": "2017-04-01", + "name": "loadBalancer1", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicip1" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicip1" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBEAddressPool" + } + ], + "loadBalancingRules": [ + { + "name": "weblb", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/frontendIPConfigurations/loadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/loadBalancerBEAddressPool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/probes/loadBalancerWebProbe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false + } + } + ], + "probes": [ + { + "name": "loadBalancerWebProbe", + "properties": { + "protocol": "Http", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 5, + "requestPath": "/iisstart.htm" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2017-03-30", + "name": "changeme", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/loadBalancers/loadBalancer1", + "Microsoft.Network/virtualNetworks/vmssvnet", + "Microsoft.Compute/images/myCustomImage" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "imageReference": { + "id": "Microsoft.Compute/images/myCustomImage" + } + }, + "osProfile": { + "computerNamePrefix": "changeme", + "adminUsername": "changeme", + "adminPassword": "changeme" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic1", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vmssvnet/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/loadBalancerBEAddressPool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "outputs": { + "fqdn": { + "value": "[reference(variables('publicIPAddressID'),'2017-04-01').dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1176 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1176 new file mode 100644 index 0000000..2d4d064 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1176 @@ -0,0 +1,300 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat/azuredeploy.parameters.json" + ], + "timestamp": 1642962905263, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1176", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1176", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + }, + "value": "2012-R2-Datacenter" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "maxValue": 100, + "value": 5 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "windows" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "storageAccountType": "Standard_LRS", + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "newStorageAccountSuffix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]sa", + "uniqueStringArray": [ + "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '0')))]", + "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '1')))]", + "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '2')))]", + "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '3')))]", + "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), '4')))]" + ], + "saCount": 30, + "vhdContainerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vhd", + "osDiskName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]osdisk", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "loadBalancerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "lbID": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "natPoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "bePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 3389, + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/frontendIPConfigurations/loadBalancerFrontEnd", + "osType": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "networkApiVersion": "2017-04-01", + "storageApiVersion": "2016-01-01", + "computeApiVersion": "2017-03-30" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat(variables('uniqueStringArray')[copyIndex()], variables('newStorageAccountSuffix'))]", + "location": "[resourceGroup().location]", + "apiVersion": "2016-01-01", + "copy": { + "name": "storageLoop", + "count": 30 + }, + "properties": {}, + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/frontendIPConfigurations/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "storageLoop", + "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "windows", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'), '/subnets/', variables('subnetName'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/inboundNatPools/', variables('natPoolName'))]" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1177 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1177 new file mode 100644 index 0000000..7272cc4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1177 @@ -0,0 +1,330 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962905271, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1177", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1177", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "brazilsouth", + "canadacentral", + "centralus", + "eastus", + "eastus2", + "southcentralus", + "francecentral", + "germanywestcentral", + "northeurope", + "uksouth", + "westeurope", + "southafricanorth", + "australiaeast", + "centralindia", + "japaneast", + "koreacentral", + "southeastasia", + "usgovvirginia", + "westus2", + "westus3" + ], + "metadata": { + "description": "Location for the VM, only certain regions support Availability Zones" + }, + "value": "centralus" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Nano-Server", + "2016-Datacenter-with-Containers", + "2016-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-8" + }, + "instanceCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 1, + "maxValue": 100 + } + }, + "variables": { + "networkSecurityGroupName": "allowRemoting", + "virtualNetworkName": "GEN-UNIQUE-8vnet", + "publicIPAddressName": "GEN-UNIQUE-8pip", + "subnetName": "GEN-UNIQUE-8subnet", + "loadBalancerName": "GEN-UNIQUE-8lb", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip", + "natPoolName": "GEN-UNIQUE-8natpool", + "bePoolName": "GEN-UNIQUE-8bepool", + "nicName": "GEN-UNIQUE-8nic", + "ipConfigName": "GEN-UNIQUE-8ipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-8vnet", + "location": "centralus", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-8subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "allowRemoting", + "location": "centralus", + "properties": { + "securityRules": [ + { + "name": "remoteConnection", + "properties": { + "description": "Allow RDP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "webTraffic", + "properties": { + "description": "Allow web traffic", + "protocol": "Tcp", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-8pip", + "location": "centralus", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-8lb", + "location": "centralus", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "GEN-UNIQUE-8pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUE-8bepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUE-8natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50099, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-8", + "location": "centralus", + "zones": [ + "1" + ], + "dependsOn": [ + "GEN-UNIQUE-8lb", + "GEN-UNIQUE-8vnet" + ], + "sku": { + "name": "Standard_A1_v2", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUE-8nic", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + }, + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUE-8ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8vnet/GEN-UNIQUE-8subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1178 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1178 new file mode 100644 index 0000000..ab1585e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1178 @@ -0,0 +1,330 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962905280, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-windows-nat-zones/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1178", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1178", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "brazilsouth", + "canadacentral", + "centralus", + "eastus", + "eastus2", + "southcentralus", + "francecentral", + "germanywestcentral", + "northeurope", + "uksouth", + "westeurope", + "southafricanorth", + "australiaeast", + "centralindia", + "japaneast", + "koreacentral", + "southeastasia", + "usgovvirginia", + "westus2", + "westus3" + ], + "metadata": { + "description": "Location for the VM, only certain regions support Availability Zones" + }, + "value": "usgovvirginia" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Nano-Server", + "2016-Datacenter-with-Containers", + "2016-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-8" + }, + "instanceCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 1, + "maxValue": 100 + } + }, + "variables": { + "networkSecurityGroupName": "allowRemoting", + "virtualNetworkName": "GEN-UNIQUE-8vnet", + "publicIPAddressName": "GEN-UNIQUE-8pip", + "subnetName": "GEN-UNIQUE-8subnet", + "loadBalancerName": "GEN-UNIQUE-8lb", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip", + "natPoolName": "GEN-UNIQUE-8natpool", + "bePoolName": "GEN-UNIQUE-8bepool", + "nicName": "GEN-UNIQUE-8nic", + "ipConfigName": "GEN-UNIQUE-8ipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-8vnet", + "location": "usgovvirginia", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-8subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "allowRemoting", + "location": "usgovvirginia", + "properties": { + "securityRules": [ + { + "name": "remoteConnection", + "properties": { + "description": "Allow RDP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "webTraffic", + "properties": { + "description": "Allow web traffic", + "protocol": "Tcp", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-8pip", + "location": "usgovvirginia", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-8lb", + "location": "usgovvirginia", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "GEN-UNIQUE-8pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUE-8bepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUE-8natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50099, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-8", + "location": "usgovvirginia", + "zones": [ + "1" + ], + "dependsOn": [ + "GEN-UNIQUE-8lb", + "GEN-UNIQUE-8vnet" + ], + "sku": { + "name": "Standard_A1_v2", + "tier": "Standard", + "capacity": 3 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUE-8nic", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/allowRemoting" + }, + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUE-8ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8vnet/GEN-UNIQUE-8subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1179 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1179 new file mode 100644 index 0000000..03dbe55 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1179 @@ -0,0 +1,343 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/vmss-with-public-ip-prefix/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-with-public-ip-prefix/azuredeploy.parameters.json" + ], + "timestamp": 1642962905288, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/vmss-with-public-ip-prefix/azuredeploy.json", + "/quickstarts/microsoft.compute/vmss-with-public-ip-prefix/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1179", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/publicipprefixes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1179", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "11664914416595834641" + } + }, + "parameters": { + "adminPasswordOrKey": { + "type": "secureString", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "instanceCount": { + "type": "int", + "defaultValue": 5, + "maxValue": 16, + "minValue": 1, + "metadata": { + "description": "Number of VM instances (16 or less)." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for resources. Default is the current resource group location." + } + }, + "publicIPPrefixLength": { + "type": "int", + "defaultValue": 28, + "allowedValues": [ + 28, + 29, + 30, + 31 + ], + "metadata": { + "description": "Length of public IP prefix." + } + }, + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "vmssName": { + "type": "string", + "maxLength": 9, + "metadata": { + "description": "String used as a base for naming resources (9 characters or less). A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "value": "GEN-UNIQUE-9" + }, + "dnsName": { + "type": "string", + "maxLength": 61, + "minLength": 3, + "metadata": { + "description": "String used to connect to your VMSS VM using dnsName.location.cloudapp.azure.com (must be globally unique)" + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "variables": { + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "[format('/home/{0}/.ssh/authorized_keys', parameters('adminUsername'))]", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "publicIPAddressName": "[format('{0}pip', parameters('vmssName'))]", + "publicIPPrefixName": "[format('{0}pubipprefix', parameters('vmssName'))]", + "virtualNetworkName": "[format('{0}vnet', parameters('vmssName'))]", + "subnetName": "[format('{0}subnet', parameters('vmssName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "loadBalancerName": "[format('{0}lb', parameters('vmssName'))]", + "natPoolName": "[format('{0}natpool', parameters('vmssName'))]", + "natStartPort": 50000, + "natEndPort": 50120, + "natBackendPort": 22, + "bePoolName": "[format('{0}bepool', parameters('vmssName'))]", + "nicName": "[format('{0}nic', parameters('vmssName'))]", + "ipConfigName": "[format('{0}ipconfig', parameters('vmssName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "[format('{0}vnet', parameters('vmssName'))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[format('{0}subnet', parameters('vmssName'))]", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPPrefixes", + "apiVersion": "2021-02-01", + "name": "[format('{0}pubipprefix', parameters('vmssName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "prefixLength": 28, + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-02-01", + "name": "[format('{0}pip', parameters('vmssName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-05-01", + "name": "[format('{0}lb', parameters('vmssName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[format('{0}pip', parameters('vmssName'))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[format('{0}bepool', parameters('vmssName'))]" + } + ], + "inboundNatPools": [ + { + "name": "[format('{0}natpool', parameters('vmssName'))]", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[format('{0}lb', parameters('vmssName'))]/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50120, + "backendPort": 22 + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[format('{0}pip', parameters('vmssName'))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-9", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-9", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[format('{0}nic', parameters('vmssName'))]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[format('{0}ipconfig', parameters('vmssName'))]", + "properties": { + "subnet": { + "id": "[format('{0}/subnets/{1}', resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName')), variables('subnetName'))]" + }, + "publicIPAddressConfiguration": { + "name": "pub1", + "properties": { + "idleTimeoutInMinutes": 15, + "publicIPPrefix": { + "id": "Microsoft.Network/publicIPPrefixes/[format('{0}pubipprefix', parameters('vmssName'))]" + } + } + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[format('{0}/backendAddressPools/{1}', resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')), variables('bePoolName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[format('{0}/inboundNatPools/{1}', resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')), variables('natPoolName'))]" + } + ] + } + } + ] + } + } + ] + } + } + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/[format('{0}lb', parameters('vmssName'))]", + "Microsoft.Network/publicIPPrefixes/[format('{0}pubipprefix', parameters('vmssName'))]", + "Microsoft.Network/virtualNetworks/[format('{0}vnet', parameters('vmssName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT118 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT118 new file mode 100644 index 0000000..8e84e56 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT118 @@ -0,0 +1,736 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/drupal/drupal8-vmss-glusterfs-mysql/azuredeploy.json", + "/application-workloads/drupal/drupal8-vmss-glusterfs-mysql/azuredeploy.parameters.json" + ], + "timestamp": 1642962887078, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/drupal/drupal8-vmss-glusterfs-mysql/azuredeploy.json", + "/application-workloads/drupal/drupal8-vmss-glusterfs-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT118", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.network/loadbalancers", + "microsoft.resources/deployments", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT118", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "drupalVmSku": { + "defaultValue": "Standard_D2s_v3", + "type": "String", + "metadata": { + "description": "Size of Drupal VMs in the VM Scale Set." + } + }, + "drupalVMDiskSku": { + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS", + "StandardSSD_LRS" + ], + "type": "String", + "metadata": { + "description": "Storage account type for the cluster" + } + }, + "drupalUbuntuOSVersion": { + "defaultValue": "18.04-LTS", + "allowedValues": [ + "14.04.4-LTS", + "16.04-LTS", + "18.04-LTS" + ], + "type": "String", + "metadata": { + "description": "The Ubuntu version for the Drupal VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "drupalAdminUser": { + "type": "String", + "metadata": { + "description": "Admin User for the Drupal installation." + }, + "value": "GEN-UNIQUE" + }, + "drupalAdminPassword": { + "type": "SecureString", + "metadata": { + "description": "Admin password for the Drupal installation." + }, + "value": "GEN-PASSWORD" + }, + "drupalVersion": { + "defaultValue": "8.1.1", + "allowedValues": [ + "8.1.1" + ], + "type": "String", + "metadata": { + "description": "The Drupal Version to be installed" + } + }, + "vmssName": { + "defaultValue": "[concat('vmss-', uniqueString(resourceGroup().id))]", + "minLength": 3, + "maxLength": 61, + "type": "String", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + } + }, + "instanceCount": { + "defaultValue": 2, + "minValue": 2, + "maxValue": 10, + "type": "Int", + "metadata": { + "description": "Number of Drupal VM instances (minimum and default instance count). Atleast 2 are recommended for high availability" + } + }, + "maximumInstanceCount": { + "defaultValue": 10, + "minValue": 2, + "maxValue": 100, + "type": "Int", + "metadata": { + "description": "maximum number of drupal instances in the vm scale set" + } + }, + "adminUsername": { + "type": "String", + "metadata": { + "description": "Admin username on all Drupal VMs, gluster VMs." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "type": "String", + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "SecureString", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "drupalInstallationDatabaseName": { + "defaultValue": "drupaldb", + "type": "String", + "metadata": { + "description": "The MySQL Database to which drupal will be installed" + } + }, + "createNewMySQLServer": { + "defaultValue": "yes", + "allowedValues": [ + "no", + "yes" + ], + "type": "String", + "metadata": { + "description": "If Yes new MySQL server will be provisioned using the mysql replication template" + } + }, + "existingMySqlFQDN": { + "defaultValue": "none", + "type": "String", + "metadata": { + "description": "Fully qualified domain name of the existing mysql server. Required if a new mySql server is not created." + } + }, + "mySqlUser": { + "type": "String", + "metadata": { + "description": "mysql username. When creating New MySQL server using mysql replication template this will be admin." + }, + "value": "GEN-UNIQUE" + }, + "mySqlUserPassword": { + "type": "SecureString", + "metadata": { + "description": "mysql user password. For existing enter the existing password. In case of new MySQL server this will be the password for MySqL admin user" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "newMySqlDnsLabelPrefix": { + "defaultValue": "[concat('mysql-', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Required when creating new MySQL server, FQDN of server will be using dnsLabelPrefix.location.cloudapp.azure.com" + } + }, + "mySqlVmAdminUsername": { + "type": "String", + "metadata": { + "description": "Required when creating new MySQL server. User name to ssh in to the MySQL VMs" + }, + "value": "GEN-UNIQUE" + }, + "mySqlVmAuthenticationType": { + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "type": "String", + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "mySqlVmadminPasswordOrKey": { + "type": "SecureString", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "mySqlVmSize": { + "defaultValue": "Standard_D2s_v3", + "type": "String", + "metadata": { + "description": "Required when creating new MySQL server. size for the mySql VMs" + } + }, + "mySqlOSVersion": { + "defaultValue": "CentOS 8.2", + "allowedValues": [ + "CentOS 6.10", + "CentOS 7.8", + "CentOS 8.2", + "Ubuntu 14.04.5-LTS", + "Ubuntu 16.04-LTS", + "Ubuntu 18.04-LTS" + ], + "type": "String", + "metadata": { + "description": "Required when creating new MySQL server. VM OS version" + } + }, + "virtualNetworkName": { + "defaultValue": "drupal-vnet", + "type": "String", + "metadata": { + "description": "Virtual network name for the cluster" + } + }, + "virtualNetworkNewOrExisting": { + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "type": "String", + "metadata": { + "description": "Identifies whether to use new or existing Virtual Network" + } + }, + "virtualNetworkResourceGroupName": { + "defaultValue": "[resourceGroup().name]", + "type": "String", + "metadata": { + "description": "If using existing VNet, specifies the resource group for the existing VNet" + } + }, + "subnetName": { + "defaultValue": "drupal-subnet", + "type": "String", + "metadata": { + "description": "subnet name for the MySQL nodes" + } + }, + "virtualNetworkAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "String", + "metadata": { + "description": "IP address in CIDR for virtual network" + } + }, + "subnetAddressPrefix": { + "defaultValue": "10.0.1.0/24", + "type": "String", + "metadata": { + "description": "IP address in CIDR for db subnetq" + } + }, + "subnetStartAddress": { + "defaultValue": "10.0.1.4", + "type": "String", + "metadata": { + "description": "Start IP address in the subnet for the VMs" + } + }, + "_artifactsLocation": { + "defaultValue": "[deployment().properties.templateLink.uri]", + "type": "String", + "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": { + "defaultValue": "", + "type": "SecureString", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "storageAccountName": { + "defaultValue": "[concat('drupal', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Specifies the name of the Azure Storage account used for the file share." + } + }, + "fileShareName": { + "defaultValue": "drupal", + "minLength": 3, + "maxLength": 63, + "type": "String", + "metadata": { + "description": "Specifies the name of the File Share. File share names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only." + } + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "String", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticsStorageAccountName'))]", + "bePoolName": "bepool", + "diagnosticsStorageAccountName": "[concat('bootdiags', uniqueString(resourceGroup().id))]", + "ipConfigName": "ipconfig", + "lbPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/bepool", + "lbProbeID": "Microsoft.Network/loadBalancers/probes/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/tcpProbe", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/loadBalancerFrontEnd", + "loadBalancerName": "lb-[concat('vmss-', uniqueString(resourceGroup().id))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "natBackendPort": 22, + "natEndPort": 50119, + "natPoolName": "natpool", + "natStartPort": 50000, + "nicName": "[concat('vmss-', uniqueString(resourceGroup().id))]nic", + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/[concat('vmss-', uniqueString(resourceGroup().id))]pip", + "publicIPAddressName": "[concat('vmss-', uniqueString(resourceGroup().id))]pip", + "storageAccountType": "Standard_LRS", + "wadcfgxend": "\">", + "wadcfgxstart": "", + "wadmetricsresourceid": "Microsoft.Compute/virtualMachineScaleSets/[concat('vmss-', uniqueString(resourceGroup().id))]", + "wadperfcounters1": "", + "wadperfcounters2": "", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('drupal', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Storage/storageAccounts/fileServices/shares", + "apiVersion": "2019-06-01", + "name": "[concat('drupal', uniqueString(resourceGroup().id))]/default/drupal", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[concat('drupal', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('diagnosticsStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[variables('publicIPAddressName')]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-06-01", + "name": "lb-[concat('vmss-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat('vmss-', uniqueString(resourceGroup().id))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "bepool" + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/loadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/bepool" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatPools": [ + { + "name": "natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 22 + } + } + ] + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-07-01", + "name": "mysql", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mysql-replication/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "dnsName": { + "value": "[concat('mysql-', uniqueString(resourceGroup().id))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "vmUserName": { + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "value": "mySqlVmAdminPasswordOrKey" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "mysqlRootPassword": { + "value": "mysqlUserPassword" + }, + "mysqlReplicationPassword": { + "value": "GEN-SSH-PUB-KEY" + }, + "mysqlProbePassword": { + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "vmImage": { + "value": "CentOS 8.2" + }, + "virtualNetworkName": { + "value": "drupal-vnet" + }, + "virtualNetworkNewOrExisting": { + "value": "new" + }, + "virtualNetworkResourceGroupName": { + "value": "[resourceGroup().name]" + }, + "subnetName": { + "value": "drupal-subnet" + }, + "virtualNetworkAddressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetAddressPrefix": { + "value": "10.0.1.0/24" + }, + "subnetStartAddress": { + "value": "10.0.1.4" + } + } + }, + "condition": false + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-06-01", + "name": "[concat('vmss-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticsStorageAccountName'))]", + "[resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName'))]", + "mysql" + ], + "sku": { + "name": "Standard_D2s_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[concat('vmss-', uniqueString(resourceGroup().id))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[variables('nicName')]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VirtualNetworkName/drupal-subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/lb-[concat('vmss-', uniqueString(resourceGroup().id))]/natpool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "drupalextension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/mount-azure-fileshare.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install_drupal.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('bash mount-azure-fileshare.sh {0} ''{1}'' ''{2}'' ''{3}'' {4} {5};sudo bash install_drupal.sh -d ''{6}'' -u {7} -p ''{8}'' -s ''{9}'' -n {10} -P ''{11}'' -k {12} -z {13} -S {14}', parameters('storageAccountName'), listKeys(parameters('storageAccountName'), '2019-06-01').keys[0].value, parameters('fileShareName'), '/mnt/azurefiles-drupal', parameters('adminUsername'), environment().suffixes.storage, parameters('drupalVersion'), parameters('drupalAdminUser'), parameters('drupalAdminPassword'), parameters('existingMySqlFQDN'), parameters('mysqlUser'), parameters('mysqlUserPassword'), parameters('drupalInstallationDatabaseName'), parameters('createNewMySQLServer'), reference('mysql').outputs.fqdn.value)]" + } + } + }, + { + "name": "LinuxDiagnostic", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "LinuxDiagnostic", + "typeHandlerVersion": "2.3", + "autoUpgradeMinorVersion": true, + "settings": { + "xmlCfg": "[base64(concat(variables('wadcfgxstart'),variables('wadmetricsresourceid'),variables('wadcfgxend')))]", + "storageAccount": "[variables('diagnosticsStorageAccountName')]" + }, + "protectedSettings": { + "storageAccountName": "[variables('diagnosticsStorageAccountName')]", + "storageAccountKey": "[listkeys(variables('accountid'), '2019-06-01').keys[0].value]", + "storageAccountEndPoint": "[concat('http://', environment().suffixes.storage)]" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "autoscalesetting", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/[concat('vmss-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "name": "autoscalesetting", + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[concat('vmss-', uniqueString(resourceGroup().id))]", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": 2, + "maximum": 10, + "default": 2 + }, + "rules": [ + { + "metricTrigger": { + "metricName": "\\Processor\\PercentProcessorTime", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[concat('vmss-', uniqueString(resourceGroup().id))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + }, + { + "metricTrigger": { + "metricName": "\\Processor\\PercentProcessorTime", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[concat('vmss-', uniqueString(resourceGroup().id))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 50 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + } + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1180 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1180 new file mode 100644 index 0000000..7fb5284 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1180 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.confidentialledger/confidential-ledger-create/azuredeploy.json" + ], + "timestamp": 1642962905296, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.confidentialledger/confidential-ledger-create/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1180", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.confidentialledger/ledgers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1180", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "ledgerName": { + "type": "string", + "metadata": { + "description": "Ledger Name" + }, + "minLength": 3, + "maxLength": 24 + }, + "principalId": { + "type": "string", + "metadata": { + "description": "Oid of the user" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": {}, + "resources": [ + { + "name": "ledgerName", + "type": "Microsoft.ConfidentialLedger/ledgers", + "apiVersion": "2020-12-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ledgerType": "Public", + "aadBasedSecurityPrincipals": [ + { + "principalId": "principalId", + "ledgerRoleName": "Administrator" + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1181 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1181 new file mode 100644 index 0000000..f7cdf7d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1181 @@ -0,0 +1,146 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-healthprobe/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-healthprobe/azuredeploy.parameters.json" + ], + "timestamp": 1642962905302, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-healthprobe/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-healthprobe/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1181", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1181", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "containergroupname": { + "type": "string", + "metadata": { + "description": "Name for the container group" + }, + "value": "GEN-UNIQUE" + }, + "containername": { + "type": "string", + "metadata": { + "description": "Name for the container" + }, + "defaultValue": "container1" + }, + "imagename": { + "type": "string", + "metadata": { + "description": "Name for the image" + }, + "defaultValue": "nginx" + }, + "port": { + "type": "string", + "metadata": { + "description": "Port to open on the container and the public IP address." + }, + "defaultValue": "443" + }, + "cpuCores": { + "type": "string", + "metadata": { + "description": "The number of CPU cores to allocate to the container." + }, + "defaultValue": "1.0" + }, + "memoryInGB": { + "type": "string", + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes." + }, + "defaultValue": "1.5" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the resources will be created." + } + } + }, + "variables": {}, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "container1", + "properties": { + "command": [ + "/bin/sh", + "-c", + "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600" + ], + "image": "nginx", + "ports": [ + { + "port": "443" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGB": "1.5" + } + }, + "livenessProbe": { + "exec": { + "command": [ + "cat", + "/tmp/healthy" + ] + }, + "periodSeconds": 5 + } + } + } + ], + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "Tcp", + "port": "443" + } + ] + } + } + } + ], + "outputs": { + "containerIPv4Address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containergroupname'))).ipAddress.ip]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1182 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1182 new file mode 100644 index 0000000..9be8466 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1182 @@ -0,0 +1,148 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-public-ip/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-public-ip/azuredeploy.parameters.json" + ], + "timestamp": 1642962905314, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-public-ip/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-public-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1182", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1182", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "12367894147709986470" + } + }, + "parameters": { + "name": { + "type": "string", + "defaultValue": "acilinuxpublicipcontainergroup", + "metadata": { + "description": "Name for the container group" + }, + "value": "acilinuxpublicipcontainergroup" + }, + "image": { + "type": "string", + "defaultValue": "mcr.microsoft.com/azuredocs/aci-helloworld", + "metadata": { + "description": "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials." + }, + "value": "mcr.microsoft.com/azuredocs/aci-helloworld" + }, + "port": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Port to open on the container and the public IP address." + } + }, + "cpuCores": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of CPU cores to allocate to the container." + } + }, + "memoryInGb": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes." + } + }, + "restartPolicy": { + "type": "string", + "defaultValue": "Always", + "allowedValues": [ + "Always", + "Never", + "OnFailure" + ], + "metadata": { + "description": "The behavior of Azure runtime if container has stopped." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "name": "acilinuxpublicipcontainergroup", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "acilinuxpublicipcontainergroup", + "properties": { + "image": "mcr.microsoft.com/azuredocs/aci-helloworld", + "ports": [ + { + "port": 80, + "protocol": "TCP" + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 2 + } + } + } + } + ], + "osType": "Linux", + "restartPolicy": "Always", + "ipAddress": { + "type": "Public", + "ports": [ + { + "port": 80, + "protocol": "TCP" + } + ] + } + } + } + ], + "outputs": { + "containerIPv4Address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name'))).ipAddress.ip]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1183 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1183 new file mode 100644 index 0000000..587cb38 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1183 @@ -0,0 +1,151 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-secure-environmentvariables/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-secure-environmentvariables/azuredeploy.parameters.json" + ], + "timestamp": 1642962905333, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-secure-environmentvariables/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-secure-environmentvariables/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1183", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1183", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "containergroupname": { + "type": "string", + "metadata": { + "description": "Name for the container group" + }, + "value": "GEN-UNIQUE" + }, + "containername": { + "type": "string", + "metadata": { + "description": "Name for the container" + }, + "value": "GEN-UNIQUE" + }, + "imagename": { + "type": "string", + "metadata": { + "description": "Name for the image" + }, + "defaultValue": "nginx" + }, + "port": { + "type": "string", + "metadata": { + "description": "Port to open on the container and the public IP address." + }, + "defaultValue": "443" + }, + "cpuCores": { + "type": "string", + "metadata": { + "description": "The number of CPU cores to allocate to the container." + }, + "defaultValue": "1.0" + }, + "memoryInGB": { + "type": "string", + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes." + }, + "defaultValue": "1.5" + }, + "environmentVariableName": { + "type": "string", + "metadata": { + "description": "The environment variable name." + }, + "value": "GEN-UNIQUE" + }, + "environmentVariableValue": { + "type": "string", + "metadata": { + "description": "The environment variable value." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the resources will be created." + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "GEN-UNIQUE", + "properties": { + "image": "nginx", + "ports": [ + { + "port": "443" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGB": "1.5" + } + }, + "environmentVariables": [ + { + "name": "GEN-UNIQUE", + "secureValue": "GEN-UNIQUE" + } + ] + } + } + ], + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "Tcp", + "port": "443" + } + ] + } + } + } + ], + "outputs": { + "containerIPv4Address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containergroupname'))).ipAddress.ip]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1184 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1184 new file mode 100644 index 0000000..16babc9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1184 @@ -0,0 +1,182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-emptydir/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-emptydir/azuredeploy.parameters.json" + ], + "timestamp": 1642962905351, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-emptydir/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-emptydir/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1184", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1184", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "containergroupname": { + "type": "string", + "metadata": { + "description": "Name for the container group" + }, + "value": "GEN-UNIQUE" + }, + "containername1": { + "type": "string", + "metadata": { + "description": "Name for the container 1" + }, + "value": "GEN-UNIQUE" + }, + "containername2": { + "type": "string", + "metadata": { + "description": "Name for the container 2" + }, + "value": "GEN-UNIQUE" + }, + "volumename": { + "type": "string", + "metadata": { + "description": "Name for the emptyDir volume" + }, + "value": "GEN-UNIQUE" + }, + "image": { + "type": "string", + "metadata": { + "description": "Container image to deploy. Should be of the form accountName/imagename[:tag] for images stored in Docker Hub or a fully qualified URI for a private registry like the Azure Container Registry." + }, + "defaultValue": "centos:latest" + }, + "port": { + "type": "string", + "metadata": { + "description": "Port to open on the container and the public IP address." + }, + "defaultValue": "80" + }, + "cpuCores": { + "type": "string", + "metadata": { + "description": "The number of CPU cores to allocate to the container." + }, + "defaultValue": "1.0" + }, + "memoryInGb": { + "type": "string", + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes." + }, + "defaultValue": "1.5" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "GEN-UNIQUE", + "properties": { + "image": "nginx", + "ports": [ + { + "port": "80" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + }, + "volumeMounts": [ + { + "name": "GEN-UNIQUE", + "mountPath": "/var/log/nginx", + "readOnly": false + } + ] + } + }, + { + "name": "GEN-UNIQUE", + "properties": { + "command": [ + "bin/bash", + "-c", + "while sleep 5; do cat /mnt/input/access.log; done" + ], + "image": "centos:latest", + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + }, + "volumeMounts": [ + { + "name": "GEN-UNIQUE", + "mountPath": "/mnt/input", + "readOnly": true + } + ] + } + } + ], + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "Tcp", + "port": "80" + } + ] + }, + "volumes": [ + { + "name": "GEN-UNIQUE", + "emptyDir": {} + } + ] + } + } + ], + "outputs": { + "containerIPv4Address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containergroupname'))).ipAddress.ip]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1185 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1185 new file mode 100644 index 0000000..0023d46 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1185 @@ -0,0 +1,147 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-gitrepo/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-gitrepo/azuredeploy.parameters.json" + ], + "timestamp": 1642962905367, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-gitrepo/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-gitrepo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1185", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1185", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "containergroupname": { + "type": "string", + "metadata": { + "description": "Name for the container group" + }, + "value": "GEN-UNIQUE" + }, + "containername": { + "type": "string", + "metadata": { + "description": "Name for the container" + }, + "value": "GEN-UNIQUE" + }, + "volumename": { + "type": "string", + "metadata": { + "description": "Name for the gitRepo volume" + }, + "value": "GEN-UNIQUE" + }, + "port": { + "type": "string", + "metadata": { + "description": "Port to open on the container and the public IP address." + }, + "defaultValue": "80" + }, + "cpuCores": { + "type": "string", + "metadata": { + "description": "The number of CPU cores to allocate to the container." + }, + "defaultValue": "1.0" + }, + "memoryInGb": { + "type": "string", + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes." + }, + "defaultValue": "1.5" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "GEN-UNIQUE", + "properties": { + "image": "nginx", + "ports": [ + { + "port": "80" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + }, + "volumeMounts": [ + { + "name": "GEN-UNIQUE", + "mountPath": "/mnt/gitrepos/", + "readOnly": false + } + ] + } + } + ], + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "Tcp", + "port": "80" + } + ] + }, + "volumes": [ + { + "name": "GEN-UNIQUE", + "gitRepo": { + "repository": "https://github.com/Azure-Samples/aci-helloworld.git" + } + } + ] + } + } + ], + "outputs": { + "containerIPv4Address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containergroupname'))).ipAddress.ip]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1186 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1186 new file mode 100644 index 0000000..72f2afe --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1186 @@ -0,0 +1,184 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-secret/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-secret/azuredeploy.parameters.json" + ], + "timestamp": 1642962905392, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-secret/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-linuxcontainer-volume-secret/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1186", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1186", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "14224613607292468110" + } + }, + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Name for the container group" + }, + "value": "GEN-UNIQUE" + }, + "containerName": { + "type": "string", + "defaultValue": "container1", + "metadata": { + "description": "Name for the container" + } + }, + "imageName": { + "type": "string", + "defaultValue": "containerinstance/helloworld:ssl", + "metadata": { + "description": "Name for the image" + } + }, + "volumeName": { + "type": "string", + "defaultValue": "volume1", + "metadata": { + "description": "Name for the secret volume" + } + }, + "dnsNameLabel": { + "type": "string", + "metadata": { + "description": "The DSN name label" + }, + "value": "GEN-UNIQUE" + }, + "sslCertificateData": { + "type": "secureString", + "metadata": { + "description": "Base-64 encoded authentication PFX certificate." + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "sslCertificatePwd": { + "type": "secureString", + "metadata": { + "description": "Base-64 encoded password of authentication PFX certificate." + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "port": { + "type": "int", + "defaultValue": 443, + "metadata": { + "description": "Port to open on the container and the public IP address." + } + }, + "cpuCores": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of CPU cores to allocate to the container." + } + }, + "memoryInGb": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "container1", + "properties": { + "image": "containerinstance/helloworld:ssl", + "ports": [ + { + "port": 443 + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 2 + } + }, + "volumeMounts": [ + { + "name": "volume1", + "mountPath": "/mnt/secrets", + "readOnly": false + } + ] + } + } + ], + "osType": "Linux", + "ipAddress": { + "type": "Public", + "dnsNameLabel": "GEN-UNIQUE", + "ports": [ + { + "protocol": "TCP", + "port": 443 + } + ] + }, + "volumes": [ + { + "name": "volume1", + "secret": { + "sslcertificateData": "GEN-SELFSIGNED-CERT-PFXDATA", + "sslcertificatePwd": "[base64(parameters('sslCertificatePwd'))]" + } + } + ] + } + } + ], + "outputs": { + "containerIPAddressFqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name'))).ipAddress.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1187 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1187 new file mode 100644 index 0000000..cc43c03 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1187 @@ -0,0 +1,230 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-sftp-files/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-sftp-files/azuredeploy.parameters.json" + ], + "timestamp": 1642962905401, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-sftp-files/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-sftp-files/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1187", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1187", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "6593852950001175225" + } + }, + "parameters": { + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "metadata": { + "description": "Storage account type" + } + }, + "fileShareName": { + "type": "string", + "defaultValue": "sftpfileshare", + "metadata": { + "description": "Name of file share to be created" + } + }, + "sftpUser": { + "type": "string", + "metadata": { + "description": "Username to use for SFTP access" + }, + "value": "GEN-UNIQUE-6" + }, + "sftpPassword": { + "type": "secureString", + "metadata": { + "description": "Password to use for SFTP access" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Primary location for resources" + } + } + }, + "functions": [], + "variables": { + "scriptName": "createFileShare", + "identityName": "scratch", + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "roleAssignmentName": "[guid(variables('identityName'), variables('roleDefinitionId'))]", + "sftpContainerName": "sftp", + "sftpContainerGroupName": "sftp-group", + "sftpContainerImage": "atmoz/sftp:latest", + "sftpEnvVariable": "[format('{0}:{1}:1001', parameters('sftpUser'), parameters('sftpPassword'))]", + "storageAccountName": "[format('sftpstg{0}', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "scratch", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', variables('storageAccountName'))]", + "name": "[guid(variables('identityName'), variables('roleDefinitionId'))]", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/scratch", + "Microsoft.Storage/storageAccounts/[format('sftpstg{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('sftpstg{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "createFileShare", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {} + } + }, + "properties": { + "forceUpdateTag": "1", + "azPowerShellVersion": "3.0", + "arguments": "[format(' -storageAccountName {0} -fileShareName {1} -resourceGroupName {2}', variables('storageAccountName'), parameters('fileShareName'), resourceGroup().name)]", + "scriptContent": "param([string] $storageAccountName, [string] $fileShareName, [string] $resourceGroupName) Get-AzStorageAccount -StorageAccountName $storageAccountName -ResourceGroupName $resourceGroupName | New-AzStorageShare -Name $fileShareName", + "timeout": "PT5M", + "cleanupPreference": "OnSuccess", + "retentionInterval": "P1D" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/scratch", + "Microsoft.Storage/storageAccounts/[format('sftpstg{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "name": "sftp-group", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "sftp", + "properties": { + "image": "atmoz/sftp:latest", + "environmentVariables": [ + { + "name": "SFTP_USERS", + "value": "[format('{0}:{1}:1001', parameters('sftpUser'), parameters('sftpPassword'))]" + } + ], + "resources": { + "requests": { + "cpu": 2, + "memoryInGB": 1 + } + }, + "ports": [ + { + "port": 22 + } + ], + "volumeMounts": [ + { + "name": "sftpvolume", + "mountPath": "[format('/home/{0}/upload', parameters('sftpUser'))]", + "readOnly": false + } + ] + } + } + ], + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "TCP", + "port": 22 + } + ] + }, + "restartPolicy": "OnFailure", + "volumes": [ + { + "name": "sftpvolume", + "azureFile": { + "readOnly": false, + "shareName": "sftpfileshare", + "storageAccountName": "[format('sftpstg{0}', uniqueString(resourceGroup().id))]", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').keys[0].value]" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Resources/deploymentScripts/createFileShare", + "Microsoft.Storage/storageAccounts/[format('sftpstg{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "outputs": { + "containerIpv4Address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', variables('sftpContainerGroupName'))).ipAddress.ip]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1188 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1188 new file mode 100644 index 0000000..68c2aab --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1188 @@ -0,0 +1,170 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-sftp-files-existing-storage/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-sftp-files-existing-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962905412, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-sftp-files-existing-storage/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-sftp-files-existing-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1188", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1188", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingStorageAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "Resource group for existing storage account" + }, + "value": "GET-PREREQ-existingStgAcctRGName" + }, + "existingStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of existing storage account" + }, + "value": "GET-PREREQ-existingStgAcctName" + }, + "existingFileShareName": { + "type": "string", + "metadata": { + "description": "Name of existing file share to be mounted" + }, + "value": "GET-PREREQ-existingFileShareName" + }, + "sftpUser": { + "type": "string", + "metadata": { + "description": "Username to use for SFTP access" + }, + "value": "GEN-UNIQUE-6" + }, + "sftpPassword": { + "type": "securestring", + "metadata": { + "description": "Password to use for SFTP access" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Primary location for resources" + } + } + }, + "variables": { + "sftpContainerName": "sftp", + "sftpContainerGroupName": "sftp-group", + "sftpContainerImage": "atmoz/sftp:latest", + "sftpEnvVariable": "GEN-UNIQUE-6:GEN-PASSWORD:1001", + "storageAccountId": "GET-PREREQ-existingStgAcctRGName/Microsoft.Storage/storageAccounts/GET-PREREQ-existingStgAcctName" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "name": "pid-18f281fe-d1e1-502c-8b87-d945383dc75b", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.ContainerInstance/containerGroups", + "name": "sftp-group", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "sftp", + "properties": { + "image": "atmoz/sftp:latest", + "environmentVariables": [ + { + "name": "SFTP_USERS", + "value": "GEN-UNIQUE-6:GEN-PASSWORD:1001" + } + ], + "resources": { + "requests": { + "cpu": 2, + "memoryInGB": 1 + } + }, + "ports": [ + { + "port": 22 + } + ], + "volumeMounts": [ + { + "mountPath": "/home/GEN-UNIQUE-6/upload", + "name": "sftpvolume", + "readOnly": false + } + ] + } + } + ], + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "Tcp", + "port": 22 + } + ] + }, + "restartPolicy": "OnFailure", + "volumes": [ + { + "name": "sftpvolume", + "azureFile": { + "readOnly": false, + "shareName": "GET-PREREQ-existingFileShareName", + "storageAccountName": "GET-PREREQ-existingStgAcctName", + "storageAccountKey": "[listKeys(variables('storageAccountId'),'2018-02-01').keys[0].value]" + } + } + ] + } + } + ], + "outputs": { + "containerIPv4Address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', variables('sftpContainerGroupName'))).ipAddress.ip]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1189 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1189 new file mode 100644 index 0000000..356aad6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1189 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-storage-file-share/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-storage-file-share/azuredeploy.parameters.json" + ], + "timestamp": 1642962905423, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-storage-file-share/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-storage-file-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1189", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1189", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[uniquestring(resourceGroup().id)]", + "metadata": { + "description": "Storage Account Name" + } + }, + "fileShareName": { + "type": "string", + "metadata": { + "description": "File Share Name" + }, + "value": "fileshare" + }, + "containerInstanceLocation": { + "type": "string", + "defaultValue": "[parameters('location')]", + "metadata": { + "description": "Container Instance Location" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "image": "microsoft/azure-cli", + "cpuCores": "1.0", + "memoryInGb": "1.5", + "containerGroupName": "createshare-containerinstance", + "containerName": "createshare" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[uniquestring(resourceGroup().id)]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "name": "createshare-containerinstance", + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "location": "[parameters('location')]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[uniquestring(resourceGroup().id)]" + ], + "properties": { + "containers": [ + { + "name": "createshare", + "properties": { + "image": "microsoft/azure-cli", + "command": [ + "az", + "storage", + "share", + "create", + "--name", + "fileshare" + ], + "environmentVariables": [ + { + "name": "AZURE_STORAGE_KEY", + "value": "[listKeys(parameters('storageAccountName'),'2019-06-01').keys[0].value]" + }, + { + "name": "AZURE_STORAGE_ACCOUNT", + "value": "[uniquestring(resourceGroup().id)]" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + } + } + } + ], + "restartPolicy": "OnFailure", + "osType": "Linux" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT119 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT119 new file mode 100644 index 0000000..4fce54a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT119 @@ -0,0 +1,206 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/client-nodes-resources.json" + ], + "timestamp": 1642962887094, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/client-nodes-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT119", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT119", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "Reference to the VNET Subnet to deploy the nodes in to" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch master nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "Elasticsearch deployment platform settings" + } + }, + "vmCount": { + "type": "int", + "metadata": { + "description": "Number of instances to create" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "Namespace for resources created by this template" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountNameAFS": "storageSettings", + "vmName": "namespace-vm", + "nicName": "namespace-nic" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "es-client-set", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespace-niccopyindex()", + "location": "location", + "copy": { + "name": "clientNodesNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + }, + "loadBalancerBackendAddressPools": "lbBackendPools" + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespace-vmcopyindex()", + "location": "location", + "copy": { + "name": "clientVmLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/namespace-niccopyindex()", + "Microsoft.Compute/availabilitySets/es-client-set" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/es-client-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "client-vmcopyIndex()", + "adminUsername": "adminUsername", + "adminPassword": "authSet", + "linuxConfiguration": "osSettings" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespace-vmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespace-niccopyindex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "installelasticsearch", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/namespace-vmcopyindex()" + ], + "properties": { + "publisher": "osSettings", + "type": "osSettings", + "typeHandlerVersion": "osSettings", + "settings": { + "fileUris": "osSettings", + "commandToExecute": "[concat(parameters('osSettings').extensionSettings.client.settings.commandToExecute, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountNameAFS')), '2021-01-01').keys[0].value)]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1190 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1190 new file mode 100644 index 0000000..6c54723 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1190 @@ -0,0 +1,147 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-udp/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-udp/azuredeploy.parameters.json" + ], + "timestamp": 1642962905430, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-udp/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-udp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1190", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1190", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "containerName": { + "type": "string", + "metadata": { + "description": "Name for the container group" + }, + "value": "GEN-UNIQUE" + }, + "containerURI": { + "defaultValue": "annonator/aciudptest:latest", + "type": "string", + "metadata": { + "description": "Container image to deploy. Should be of the form accountName/imagename:tag for images stored in Docker Hub or a fully qualified URI for a private registry like the Azure Container Registry." + } + }, + "osType": { + "defaultValue": "Linux", + "allowedValues": [ + "Linux", + "Windows" + ], + "type": "string", + "metadata": { + "description": "The host OS needed for your container" + } + }, + "numberCores": { + "defaultValue": "1", + "type": "string", + "metadata": { + "description": "The number of CPU cores to allocate to the container. Must be an integer." + } + }, + "memory": { + "defaultValue": "1.5", + "type": "string", + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes." + } + }, + "ports": { + "defaultValue": "1234", + "type": "string", + "metadata": { + "description": "The Ports that should be exposed." + } + }, + "portProtocol": { + "defaultValue": "udp", + "type": "string", + "metadata": { + "description": "The Protocol used to expose the Port." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "containerName": "GEN-UNIQUE", + "containerURI": "annonator/aciudptest:latest", + "osType": "Linux", + "numberCores": "[int(parameters('numberCores'))]", + "memory": "[float(parameters('memory'))]", + "port": "1234", + "randomName": "[concat('-',substring(parameters('containerName'),0,3))]" + }, + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "name": "[concat(variables('containerName'),variables('randomName'),'1')]", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "GEN-UNIQUE", + "properties": { + "image": "annonator/aciudptest:latest", + "ports": [ + { + "protocol": "udp", + "port": "1234" + } + ], + "resources": { + "requests": { + "cpu": "[int(parameters('numberCores'))]", + "memoryInGb": "[float(parameters('memory'))]" + } + } + } + } + ], + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "udp", + "port": "1234" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1191 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1191 new file mode 100644 index 0000000..da824bc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1191 @@ -0,0 +1,235 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-vnet/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962905438, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aci-vnet/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aci-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1191", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.containerinstance/containergroups", + "microsoft.network/networkprofiles", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1191", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "13861811123027096653" + } + }, + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "aci-vnet", + "metadata": { + "description": "VNet name" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "aci-subnet", + "metadata": { + "description": "Subnet name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "containerGroupName": { + "type": "string", + "defaultValue": "aci-containergroup", + "metadata": { + "description": "Container group name" + }, + "value": "GEN-UNIQUE" + }, + "containerName": { + "type": "string", + "defaultValue": "aci-container", + "metadata": { + "description": "Container name" + } + }, + "image": { + "type": "string", + "defaultValue": "mcr.microsoft.com/azuredocs/aci-helloworld", + "metadata": { + "description": "Container image to deploy. Should be of the form accountName/imagename:tag for images stored in Docker Hub or a fully qualified URI for a private registry like the Azure Container Registry." + } + }, + "port": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Port to open on the container." + } + }, + "cpuCores": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of CPU cores to allocate to the container. Must be an integer." + } + }, + "memoryInGb": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes." + } + } + }, + "functions": [], + "variables": { + "networkProfileName": "aci-networkProfile", + "interfaceConfigName": "eth0", + "interfaceIpConfig": "ipconfigprofile1" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "aci-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-11-01", + "name": "[format('{0}/{1}', parameters('vnetName'), parameters('subnetName'))]", + "properties": { + "addressPrefix": "10.0.0.0/24", + "delegations": [ + { + "name": "DelegationService", + "properties": { + "serviceName": "Microsoft.ContainerInstance/containerGroups" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/aci-vnet" + ] + }, + { + "type": "Microsoft.Network/networkProfiles", + "apiVersion": "2020-11-01", + "name": "aci-networkProfile", + "location": "[resourceGroup().location]", + "properties": { + "containerNetworkInterfaceConfigurations": [ + { + "name": "eth0", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigprofile1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/aci-vnet/aci-subnet" + } + } + } + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/aci-vnet/aci-subnet" + ] + }, + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "aci-container", + "properties": { + "image": "mcr.microsoft.com/azuredocs/aci-helloworld", + "ports": [ + { + "port": 80, + "protocol": "TCP" + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 2 + } + } + } + } + ], + "osType": "Linux", + "networkProfile": { + "id": "Microsoft.Network/networkProfiles/aci-networkProfile" + }, + "restartPolicy": "Always" + }, + "dependsOn": [ + "Microsoft.Network/networkProfiles/aci-networkProfile" + ] + } + ], + "outputs": { + "containerIPv4Address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('containerGroupName'))).ipAddress.ip]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1192 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1192 new file mode 100644 index 0000000..a7af5d2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1192 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905446, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1192", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1192", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "vnet", + "metadata": { + "description": "Name of the virtual Network" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.10.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.10.0.0/24", + "metadata": { + "description": "Subnet Prefix" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the virtual network." + } + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.0.0/16" + ] + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "subnets", + "location": "[resourceGroup().location]", + "name": "Subnet", + "dependsOn": [ + "vnet" + ], + "properties": { + "addressPrefix": "10.10.0.0/24" + } + } + ] + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "[parameters('vnetName')]" + }, + "vnetResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "subnetName": { + "type": "string", + "value": "[parameters('subnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1193 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1193 new file mode 100644 index 0000000..499e967 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1193 @@ -0,0 +1,286 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/azuredeploy.parameters.json" + ], + "timestamp": 1642962905453, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1193", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1193", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "resourceName": { + "type": "string", + "metadata": { + "description": "The name of the Managed Cluster resource." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Azure location of the AKS resource." + } + }, + "dnsPrefix": { + "type": "string", + "metadata": { + "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN." + }, + "value": "GEN-UNIQUE" + }, + "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": { + "defaultValue": 3, + "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": { + "defaultValue": "Standard_D2_v3", + "type": "string", + "metadata": { + "description": "The size of the Virtual Machine." + } + }, + "existingServicePrincipalObjectId": { + "type": "string", + "metadata": { + "description": "Oject ID against which the Network Contributor roles will be assigned on the subnet" + }, + "value": "GEN-AZUREAD-AKS-OBJID" + }, + "existingServicePrincipalClientId": { + "type": "string", + "metadata": { + "description": "Client ID (used by cloudprovider)" + }, + "value": "GEN-AZUREAD-AKS-APPID" + }, + "osType": { + "defaultValue": "Linux", + "allowedValues": [ + "Linux" + ], + "type": "string", + "metadata": { + "description": "The type of operating system." + } + }, + "kubernetesVersion": { + "defaultValue": "1.21.1", + "type": "string", + "metadata": { + "description": "The version of Kubernetes." + } + }, + "enableHttpApplicationRouting": { + "defaultValue": false, + "type": "bool", + "metadata": { + "description": "boolean flag to turn on and off of http application routing" + } + }, + "networkPlugin": { + "allowedValues": [ + "azure", + "kubenet" + ], + "defaultValue": "azure", + "type": "string", + "metadata": { + "description": "Network plugin used for building Kubernetes network." + } + }, + "maxPods": { + "defaultValue": 30, + "type": "int", + "metadata": { + "description": "Maximum number of pods that can run on a node." + } + }, + "enableRBAC": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Boolean flag to turn on and off of RBAC" + } + }, + "builtInRoleType": { + "type": "string", + "allowedValues": [ + "Owner", + "Contributor", + "Reader" + ], + "metadata": { + "description": "Built-in role to assign" + }, + "value": "Contributor" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of an existing VNET that will contain this AKS deployment." + }, + "value": "GET-PREREQ-vnetName" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "GET-PREREQ-vnetResourceGroupName" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + }, + "value": "GET-PREREQ-subnetName" + }, + "serviceCidr": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs." + } + }, + "dnsServiceIP": { + "type": "string", + "defaultValue": "10.0.0.10", + "metadata": { + "description": "Containers DNS server IP address." + } + }, + "dockerBridgeCidr": { + "type": "string", + "defaultValue": "172.17.0.1/16", + "metadata": { + "description": "A CIDR notation IP for Docker bridge." + } + } + }, + "variables": { + "builtInRole": { + "Owner": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]", + "Contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "Reader": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "vnetSubnetId": "GET-PREREQ-vnetResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-subnetName" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "name": "ClusterSubnetRoleAssignmentDeployment", + "apiVersion": "2019-10-01", + "resourceGroup": "GET-PREREQ-vnetResourceGroupName", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets/providers/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[concat(parameters('existingVirtualNetworkName'), '/', parameters('existingSubnetName'), '/Microsoft.Authorization/', guid(resourceGroup().id, deployment().name))]", + "properties": { + "roleDefinitionId": "(builtInRole)[parameters(builtInRoleType)]", + "principalId": "GEN-AZUREAD-AKS-OBJID", + "scope": "GET-PREREQ-vnetResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-subnetName" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.ContainerService/managedClusters", + "name": "GEN-UNIQUE", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "ClusterSubnetRoleAssignmentDeployment" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "kubernetesVersion": "1.21.1", + "enableRBAC": true, + "dnsPrefix": "GEN-UNIQUE", + "addonProfiles": { + "httpApplicationRouting": { + "enabled": false + } + }, + "agentPoolProfiles": [ + { + "name": "agentpool", + "osDiskSizeGB": 0, + "count": 3, + "vmSize": "Standard_D2_v3", + "osType": "Linux", + "storageProfile": "ManagedDisks", + "vnetSubnetID": "vnetSubnetID", + "maxPods": 30, + "mode": "System" + } + ], + "servicePrincipalProfile": { + "clientId": "GEN-AZUREAD-AKS-APPID" + }, + "networkProfile": { + "networkPlugin": "azure", + "serviceCidr": "10.0.0.0/16", + "dnsServiceIP": "10.0.0.10", + "dockerBridgeCidr": "172.17.0.1/16" + } + } + } + ], + "outputs": { + "controlPlaneFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('resourceName'))).fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1194 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1194 new file mode 100644 index 0000000..3e1b0f4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1194 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905459, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1194", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1194", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "GEN-VNET-NAME", + "metadata": { + "description": "Name of the virtual Network" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.10.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.10.0.0/24", + "metadata": { + "description": "Subnet Prefix" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "GEN-SUBNET-NAME" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the virtual network." + } + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2018-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.0.0/16" + ] + } + }, + "resources": [ + { + "apiVersion": "2018-06-01", + "type": "subnets", + "location": "[resourceGroup().location]", + "name": "Subnet", + "dependsOn": [ + "GEN-VNET-NAME" + ], + "properties": { + "addressPrefix": "10.10.0.0/24" + } + } + ] + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "[parameters('vnetName')]" + }, + "vnetResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "subnetName": { + "type": "string", + "value": "[parameters('subnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1195 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1195 new file mode 100644 index 0000000..7f71349 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1195 @@ -0,0 +1,318 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/azuredeploy.parameters.json" + ], + "timestamp": 1642962905467, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-advanced-networking-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1195", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1195", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "resourceName": { + "type": "string", + "defaultValue": "aksadcluster", + "metadata": { + "description": "The name of the Managed Cluster resource." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Azure location of the AKS resource." + } + }, + "dnsPrefix": { + "type": "string", + "defaultValue": "aksadcluster", + "metadata": { + "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN." + }, + "value": "GEN-UNIQUE" + }, + "osDiskSizeGB": { + "defaultValue": 500, + "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": { + "defaultValue": 3, + "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": { + "defaultValue": "Standard_D2_v3", + "type": "string", + "metadata": { + "description": "The size of the Virtual Machine." + } + }, + "existingServicePrincipalObjectId": { + "type": "securestring", + "metadata": { + "description": "Oject ID against which the Network Contributor roles will be assigned on the subnet" + }, + "value": "GEN-GUID" + }, + "existingServicePrincipalClientId": { + "type": "securestring", + "metadata": { + "description": "Client ID (used by cloudprovider)" + }, + "value": "GEN-GUID" + }, + "existingServicePrincipalClientSecret": { + "type": "securestring", + "metadata": { + "description": "The Service Principal Client Secret." + }, + "value": "GEN-PASSWORD" + }, + "osType": { + "defaultValue": "Linux", + "allowedValues": [ + "Linux" + ], + "type": "string", + "metadata": { + "description": "The type of operating system." + } + }, + "kubernetesVersion": { + "defaultValue": "1.12.6", + "type": "string", + "metadata": { + "description": "The version of Kubernetes." + } + }, + "enableHttpApplicationRouting": { + "defaultValue": false, + "type": "bool", + "metadata": { + "description": "boolean flag to turn on and off of http application routing" + } + }, + "networkPlugin": { + "allowedValues": [ + "azure", + "kubenet" + ], + "defaultValue": "azure", + "type": "string", + "metadata": { + "description": "Network plugin used for building Kubernetes network." + } + }, + "maxPods": { + "defaultValue": 30, + "type": "int", + "metadata": { + "description": "Maximum number of pods that can run on a node." + } + }, + "enableRBAC": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "boolean flag to turn on and off of RBAC" + } + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of an existing VNET that will contain this AKS deployment." + }, + "value": "VNET-NAME" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "VNET-RESOURCE-GROUP-NAME" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + }, + "value": "SUBNET-NAME" + }, + "existingSubnetRoleAssignmentName": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "Name of the Role Assignment created for the Service Principal in the existing Subnet" + } + }, + "serviceCidr": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs." + } + }, + "dnsServiceIP": { + "type": "string", + "defaultValue": "10.0.0.10", + "metadata": { + "description": "Containers DNS server IP address." + } + }, + "dockerBridgeCidr": { + "type": "string", + "defaultValue": "172.17.0.1/16", + "metadata": { + "description": "A CIDR notation IP for Docker bridge." + } + }, + "AAD_ClientAppID": { + "type": "securestring", + "metadata": { + "description": "The Application ID for the Client App Service Principal" + }, + "value": "CLIENT-APP-ID-FROM-AZURE-AD" + }, + "AAD_ServerAppID": { + "type": "securestring", + "metadata": { + "description": "The Application ID for the Server App Service Principal" + }, + "value": "SERVER-APP-ID-FROM-AZURE-AD" + }, + "AAD_TenantID": { + "type": "securestring", + "metadata": { + "description": "The Azure AD Tenant where the cluster will reside" + }, + "value": "AZURE-AD-TENANT" + }, + "AAD_ServerAppSecret": { + "type": "securestring", + "metadata": { + "description": "The Service Principal Secret for the Client App Service Principal" + }, + "value": "SERVER-APP-SECRET-FROM-AZURE-AD" + } + }, + "variables": { + "vnetSubnetId": "VNET-RESOURCE-GROUP-NAME/Microsoft.Network/virtualNetworks/subnets/VNET-NAME/SUBNET-NAME" + }, + "resources": [ + { + "type": "Microsoft.ContainerService/managedClusters", + "name": "GEN-UNIQUE", + "apiVersion": "2018-03-31", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/ClusterSubnetRoleAssignmentDeployment" + ], + "properties": { + "kubernetesVersion": "1.12.6", + "enableRBAC": true, + "dnsPrefix": "GEN-UNIQUE", + "aadProfile": { + "clientAppID": "CLIENT-APP-ID-FROM-AZURE-AD", + "serverAppID": "SERVER-APP-ID-FROM-AZURE-AD", + "tenantID": "AZURE-AD-TENANT", + "serverAppSecret": "SERVER-APP-SECRET-FROM-AZURE-AD" + }, + "addonProfiles": { + "httpApplicationRouting": { + "enabled": false + } + }, + "agentPoolProfiles": [ + { + "name": "agentpool", + "osDiskSizeGB": 500, + "count": 3, + "vmSize": "Standard_D2_v3", + "osType": "Linux", + "storageProfile": "ManagedDisks", + "vnetSubnetID": "vnetSubnetID", + "maxPods": 30 + } + ], + "servicePrincipalProfile": { + "clientId": "GEN-GUID", + "secret": "GEN-PASSWORD" + }, + "networkProfile": { + "networkPlugin": "azure", + "serviceCidr": "10.0.0.0/16", + "dnsServiceIP": "10.0.0.10", + "dockerBridgeCidr": "172.17.0.1/16" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "ClusterSubnetRoleAssignmentDeployment", + "apiVersion": "2017-05-10", + "resourceGroup": "VNET-RESOURCE-GROUP-NAME", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets/providers/roleAssignments", + "apiVersion": "2017-05-01", + "name": "[newGuid()]", + "properties": { + "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "GEN-GUID", + "scope": "VNET-RESOURCE-GROUP-NAME/Microsoft.Network/virtualNetworks/subnets/VNET-NAME/SUBNET-NAME" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "outputs": { + "controlPlaneFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.ContainerService/managedClusters/', parameters('resourceName'))).fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1196 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1196 new file mode 100644 index 0000000..c0cddb4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1196 @@ -0,0 +1,210 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-azml-targetcompute/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-azml-targetcompute/azuredeploy.parameters.json" + ], + "timestamp": 1642962905480, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerinstance/aks-azml-targetcompute/azuredeploy.json", + "/quickstarts/microsoft.containerinstance/aks-azml-targetcompute/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1196", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters", + "microsoft.containerservice/managedclusters/agentpools" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1196", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the Managed Cluster resource." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Managed Cluster resource." + } + }, + "osDiskSizeGB": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "Disk size (in GB) to provision for each of the agent pool nodes. This value minimun 30 to 1023. Specifying 100 is the default value required to be attached to Azure ML." + }, + "minValue": 30, + "maxValue": 1023, + "value": 100 + }, + "agentCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The number of nodes for the cluster." + }, + "minValue": 1, + "maxValue": 50, + "value": 3 + }, + "podCidr": { + "type": "string", + "defaultValue": "10.244.0.0/16", + "metadata": { + "description": "A CIDR notation IP range from which to assign pod IPs when kubenet is used" + }, + "value": "10.244.0.0/16" + }, + "serviceCidr": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs." + }, + "value": "10.0.0.0/16" + }, + "dnsServiceIP": { + "type": "string", + "defaultValue": "10.0.0.10", + "metadata": { + "description": "An IP address assigned to the Kubernetes DNS service" + }, + "value": "10.0.0.10" + }, + "dockerBridgeCidr": { + "type": "string", + "defaultValue": "172.17.0.1/16", + "metadata": { + "description": "A specific IP address and netmask for the Docker bridge, using standard CIDR notation." + }, + "value": "172.17.0.1/16" + }, + "agentVMSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "The size of the VM instances" + }, + "value": "Standard_D4_v3" + }, + "kubernetesVersion": { + "type": "string", + "metadata": { + "description": "Supported Azure Kubernetes version" + }, + "value": "1.18.14" + }, + "linuxAdminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Linux Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "sshRSAPublicKey": { + "type": "string", + "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'" + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "dnsPrefix": "GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Free" + }, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "kubernetesVersion": "1.18.14", + "dnsPrefix": "GEN-UNIQUE", + "agentPoolProfiles": [ + { + "name": "agentpool", + "count": 3, + "vmSize": "Standard_D4_v3", + "osDiskSizeGB": 100, + "maxPods": 110, + "type": "VirtualMachineScaleSets", + "orchestratorVersion": "1.18.14", + "mode": "System", + "osType": "Linux" + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "servicePrincipalProfile": { + "clientId": "msi" + }, + "nodeResourceGroup": "[concat('MC_', resourceGroup().name,'_', parameters('clusterName'), '_',parameters('location'))]", + "enableRBAC": true, + "networkProfile": { + "networkPlugin": "kubenet", + "loadBalancerSku": "Basic", + "podCidr": "10.244.0.0/16", + "serviceCidr": "10.0.0.0/16", + "dnsServiceIP": "10.0.0.10", + "dockerBridgeCidr": "172.17.0.1/16", + "outboundType": "loadBalancer" + } + } + }, + { + "type": "Microsoft.ContainerService/managedClusters/agentPools", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE/agentpool", + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/GEN-UNIQUE" + ], + "properties": { + "count": 3, + "vmSize": "Standard_D4_v3", + "osDiskSizeGB": 100, + "maxPods": 110, + "type": "VirtualMachineScaleSets", + "orchestratorVersion": "1.18.14", + "mode": "System", + "osType": "Linux" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1197 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1197 new file mode 100644 index 0000000..5686ed7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1197 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry/azuredeploy.parameters.json" + ], + "timestamp": 1642962905491, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1197", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerregistry/registries" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1197", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "17444016317697675404" + } + }, + "parameters": { + "acrName": { + "type": "string", + "metadata": { + "description": "Name of the azure container registry (must be globally unique)" + }, + "maxLength": 50, + "minLength": 5, + "value": "GEN-UNIQUE" + }, + "acrAdminUserEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable an admin user that has push/pull permission to the registry." + }, + "value": false + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "acrSku": { + "type": "string", + "defaultValue": "Basic", + "metadata": { + "description": "Tier of your Azure Container Registry." + }, + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Container Registry", + "container.registry": "GEN-UNIQUE" + }, + "sku": { + "name": "Basic" + }, + "properties": { + "adminUserEnabled": false + } + } + ], + "outputs": { + "acrLoginServer": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerRegistry/registries', parameters('acrName'))).loginServer]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1198 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1198 new file mode 100644 index 0000000..24cd52a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1198 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.parameters.json" + ], + "timestamp": 1642962905499, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1198", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerregistry/registries/replications", + "microsoft.containerregistry/registries" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1198", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "4211689371383977719" + } + }, + "parameters": { + "acrName": { + "type": "string", + "defaultValue": "[format('acr{0}', uniqueString(resourceGroup().id))]", + "maxLength": 50, + "minLength": 5, + "metadata": { + "description": "Globally unique name of your Azure Container Registry" + }, + "value": "GEN-UNIQUE" + }, + "acrAdminUserEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable admin user that has push / pull permission to the registry." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for registry home replica." + } + }, + "acrSku": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Premium" + ], + "metadata": { + "description": "Tier of your Azure Container Registry. Geo-replication requires Premium SKU." + } + }, + "acrReplicaLocation": { + "type": "string", + "metadata": { + "description": "Short name for registry replica location." + }, + "value": "eastus2" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium" + }, + "tags": { + "displayName": "Container Registry", + "container.registry": "GEN-UNIQUE" + }, + "properties": { + "adminUserEnabled": false + } + }, + { + "type": "Microsoft.ContainerRegistry/registries/replications", + "apiVersion": "2019-12-01-preview", + "name": "[format('{0}/{1}', parameters('acrName'), parameters('acrReplicaLocation'))]", + "location": "eastus2", + "properties": {}, + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/GEN-UNIQUE" + ] + } + ], + "outputs": { + "acrLoginServer": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerRegistry/registries', parameters('acrName'))).loginServer]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1199 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1199 new file mode 100644 index 0000000..94b12f0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1199 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962905507, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-geo-replication/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1199", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerregistry/registries/replications", + "microsoft.containerregistry/registries" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1199", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "4211689371383977719" + } + }, + "parameters": { + "acrName": { + "type": "string", + "defaultValue": "[format('acr{0}', uniqueString(resourceGroup().id))]", + "maxLength": 50, + "minLength": 5, + "metadata": { + "description": "Globally unique name of your Azure Container Registry" + }, + "value": "GEN-UNIQUE" + }, + "acrAdminUserEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable admin user that has push / pull permission to the registry." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for registry home replica." + } + }, + "acrSku": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Premium" + ], + "metadata": { + "description": "Tier of your Azure Container Registry. Geo-replication requires Premium SKU." + } + }, + "acrReplicaLocation": { + "type": "string", + "metadata": { + "description": "Short name for registry replica location." + }, + "value": "usgovarizona" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium" + }, + "tags": { + "displayName": "Container Registry", + "container.registry": "GEN-UNIQUE" + }, + "properties": { + "adminUserEnabled": false + } + }, + { + "type": "Microsoft.ContainerRegistry/registries/replications", + "apiVersion": "2019-12-01-preview", + "name": "[format('{0}/{1}', parameters('acrName'), parameters('acrReplicaLocation'))]", + "location": "usgovarizona", + "properties": {}, + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/GEN-UNIQUE" + ] + } + ], + "outputs": { + "acrLoginServer": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerRegistry/registries', parameters('acrName'))).loginServer]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT12 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT12 new file mode 100644 index 0000000..6ff74bb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT12 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/vnet.json" + ], + "timestamp": 1642962883395, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc-zones/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT12", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT12", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "Description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "Description": "The address range of the new VNET in CIDR format" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "Description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "Description": "The address range of the subnet created in the new VNET" + } + }, + "DNSServerAddress": { + "type": "array", + "defaultValue": [], + "metadata": { + "Description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dhcpOptions": { + "dnsServers": [] + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "virtualNetworkName", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressRange" + ] + }, + "dhcpOptions": "[if(empty(parameters('DNSServerAddress')), json('null'), variables('dhcpOptions'))]", + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetRange" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT120 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT120 new file mode 100644 index 0000000..f74d43b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT120 @@ -0,0 +1,206 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-0disk-resources.json" + ], + "timestamp": 1642962887149, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-0disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT120", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT120", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountNameAFS": "storageSettings", + "vmName": "namespace-vm" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "es-data-set", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformUpdateDomainCount": 20, + "platformFaultDomainCount": 3 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespace-niccopyindex()", + "location": "location", + "copy": { + "name": "namespacenicLoop", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + }, + "loadBalancerBackendAddressPools": "lbBackendPools" + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespace-vmcopyindex()", + "location": "location", + "copy": { + "name": "namespacevirtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/namespace-niccopyindex()", + "Microsoft.Compute/availabilitySets/es-data-set" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/es-data-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "data-vmcopyIndex()", + "adminUsername": "adminUsername", + "adminPassword": "authSet", + "linuxConfiguration": "osSettings" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespace-vmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespace-niccopyindex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "installelasticsearch", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/namespace-vmcopyindex()" + ], + "properties": { + "publisher": "osSettings", + "type": "osSettings", + "typeHandlerVersion": "osSettings", + "settings": { + "fileUris": "osSettings", + "commandToExecute": "[concat(parameters('osSettings').extensionSettings.data.settings.commandToExecute, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountNameAFS')), '2021-01-01').keys[0].value)]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1200 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1200 new file mode 100644 index 0000000..7cc59c1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1200 @@ -0,0 +1,274 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-with-policies-and-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-with-policies-and-diagnostics/azuredeploy.parameters.json" + ], + "timestamp": 1642962905514, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.containerregistry/container-registry-with-policies-and-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.containerregistry/container-registry-with-policies-and-diagnostics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1200", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerregistry/registries", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1200", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "4838740942973970094" + } + }, + "parameters": { + "acrName": { + "type": "string", + "defaultValue": "[format('acr{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Azure Container Registry name" + }, + "maxLength": 50, + "minLength": 5 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure Container Registry location" + } + }, + "acrSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium", + "Classic" + ], + "metadata": { + "description": "Azure Container Registry tier" + } + }, + "enableSystemIdentity": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable System Assign Identity for Azure Container Registry" + } + }, + "userAssignedIdentities": { + "type": "object", + "defaultValue": {}, + "metadata": { + "userAssignedIdentityResourceId": {}, + "description": "The list of user identity resource ids to associate with the Azure Container Registry" + } + }, + "enableAdminUser": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable admin user" + } + }, + "publicNetworkAccess": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Disabled", + "Enabled" + ], + "metadata": { + "description": "Enable public network access" + } + }, + "zoneRedundancy": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Disabled", + "Enabled" + ], + "metadata": { + "description": "Enable zone redundancy" + } + }, + "ipRules": { + "type": "object", + "defaultValue": {}, + "metadata": { + "defaultAction": "The default action of allow or deny when no other rules match. Valid values are Allow/Deny", + "ipRules": [ + { + "action": "Allow", + "value": "Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed" + } + ], + "description": "The network rule set for a container registry" + } + }, + "networkRuleBypassOptions": { + "type": "string", + "defaultValue": "None", + "allowedValues": [ + "AzureServices", + "None" + ], + "metadata": { + "description": "Allow trusted Azure services to access a network restricted registry" + } + }, + "policies": { + "type": "object", + "defaultValue": {}, + "metadata": { + "exportPolicy": { + "status": "The value that indicates whether the policy is enabled or not. Valid values are enabled/disabled" + }, + "quarantinePolicy": { + "status": "The value that indicates whether the policy is enabled or not. Valid values are enabled/disabled" + }, + "retentionPolicy": { + "status": "The value that indicates whether the policy is enabled or not. Valid values are enabled/disabled", + "days": "The number of days to retain an untagged manifest after which it gets purged" + }, + "trustPolicy": { + "status": "The value that indicates whether the policy is enabled or not. Valid values are enabled/disabled" + }, + "description": "Azure Container Registry policies" + } + }, + "enableDeleteLock": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable delete lock" + } + }, + "enableDiagnostics": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable diagnostic logs" + } + }, + "diagnosticStorageAccountId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Storage account resource id. Only required if enableDiagnostics is set to true." + } + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Log analytics workspace resource id. Only required if enableDiagnostics is set to true." + } + } + }, + "functions": [], + "variables": { + "lockName": "[format('{0}-lck', parameters('acrName'))]", + "diagnosticsName": "[format('{0}-dgs', parameters('acrName'))]" + }, + "resources": [ + { + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2021-06-01-preview", + "name": "[format('acr{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "identity": "[if(parameters('enableSystemIdentity'), createObject('type', 'SystemAssigned'), if(not(empty(parameters('userAssignedIdentities'))), createObject('type', 'UserAssigned', 'userAssignedIdentities', parameters('userAssignedIdentities')), null()))]", + "properties": { + "adminUserEnabled": false, + "publicNetworkAccess": "Enabled", + "zoneRedundancy": "Disabled", + "networkRuleBypassOptions": "None", + "networkRuleSet": "[if(not(empty(parameters('ipRules'))), createObject('defaultAction', parameters('ipRules').defaultAction, 'ipRules', parameters('ipRules').ipRules), createObject())]", + "policies": {} + } + }, + { + "condition": false, + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.ContainerRegistry/registries/{0}', parameters('acrName'))]", + "name": "[format('{0}-dgs', parameters('acrName'))]", + "properties": { + "workspaceId": "[if(empty(parameters('logAnalyticsWorkspaceId')), null(), parameters('logAnalyticsWorkspaceId'))]", + "storageAccountId": "[if(empty(parameters('diagnosticStorageAccountId')), null(), parameters('diagnosticStorageAccountId'))]", + "logs": [ + { + "category": "ContainerRegistryRepositoryEvents", + "enabled": true + }, + { + "category": "ContainerRegistryLoginEvents", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + }, + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/[format('acr{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2020-05-01", + "scope": "[format('Microsoft.ContainerRegistry/registries/{0}', parameters('acrName'))]", + "name": "[format('{0}-lck', parameters('acrName'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/[format('acr{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('acrName')]" + }, + "id": { + "type": "string", + "value": "[resourceId('Microsoft.ContainerRegistry/registries', parameters('acrName'))]" + }, + "acrLoginServer": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerRegistry/registries', parameters('acrName'))).loginServer]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1201 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1201 new file mode 100644 index 0000000..63359b9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1201 @@ -0,0 +1,268 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-existing-resource-deployments/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-existing-resource-deployments/azuredeploy.parameters.json" + ], + "timestamp": 1642962905531, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-existing-resource-deployments/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-existing-resource-deployments/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1201", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.customproviders/associations" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1201", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "australiasoutheast", + "eastus", + "westus2", + "eastus2euap", + "westeurope", + "northeurope", + "canadacentral", + "canadaeast", + "japaneast", + "japanwest" + ], + "metadata": { + "description": "Location for the resources." + }, + "value": "eastus" + }, + "logicAppName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Name of the logic app to be created." + } + }, + "customResourceProviderName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Name of the custom provider to be created." + } + }, + "customResourceProviderId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The resource id of an existing custom provider. Provide this to skip deployment of new logic app and custom provider." + } + }, + "associationName": { + "type": "string", + "defaultValue": "myDemoAssociationResource", + "metadata": { + "description": "Name of the association resource that is being created." + }, + "value": "myAssociationName" + } + }, + "resources": [ + { + "condition": "[empty(parameters('customResourceProviderId'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "name": "customProviderInfrastructureTemplate", + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "logicAppName": { + "value": "[uniqueString(resourceGroup().id)]" + }, + "customResourceProviderName": { + "value": "[uniqueString(resourceGroup().id)]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "logicAppName": { + "type": "string" + }, + "customResourceProviderName": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "eastus", + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Switch": { + "cases": { + "CreateAssociation": { + "actions": { + "CreateCustomResource": { + "inputs": { + "body": { + "properties": "@addProperty(triggerBody().Body['properties'], 'myDynamicProperty', 'myDynamicValue')" + }, + "statusCode": 200 + }, + "kind": "Http", + "type": "Response" + } + }, + "case": "CREATE" + } + }, + "default": { + "actions": { + "DefaultHttpResponse": { + "inputs": { + "statusCode": 200 + }, + "kind": "Http", + "type": "Response" + } + } + }, + "expression": "@triggerBody().operationType", + "type": "Switch" + } + }, + "contentVersion": "1.0.0.0", + "outputs": {}, + "parameters": {}, + "triggers": { + "CustomProviderWebhook": { + "inputs": { + "schema": { + "required": [ + "OperationType", + "ResourceType", + "ResourceId", + "ResourceName", + "Body" + ], + "properties": { + "OperationType": { + "$id": "#/properties/OperationType", + "type": "string", + "enum": [ + "CREATE", + "DELETE", + "GET", + "LIST", + "TRIGGER" + ] + }, + "ResourceType": { + "$id": "#/properties/ResourceType", + "type": "string" + }, + "ResourceId": { + "$id": "#/properties/ResourceId", + "type": "string" + }, + "ResourceName": { + "$id": "#/properties/ResourceName", + "type": "string" + }, + "Body": { + "$id": "#/properties/Body", + "type": "object" + } + } + } + }, + "kind": "Http", + "type": "Request" + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + }, + { + "type": "Microsoft.CustomProviders/resourceProviders", + "apiVersion": "2018-09-01-preview", + "name": "[uniqueString(resourceGroup().id)]", + "location": "eastus", + "properties": { + "resourceTypes": [ + { + "name": "associations", + "mode": "Secure", + "routingType": "Webhook,Cache,Extension", + "endpoint": "[listCallbackURL(resourceId('Microsoft.Logic/workflows/triggers', parameters('logicAppName'), 'CustomProviderWebhook'), '2019-05-01').value]" + } + ] + } + } + ], + "outputs": { + "customProviderResourceId": { + "type": "string", + "value": "Microsoft.CustomProviders/resourceProviders/[uniqueString(resourceGroup().id)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.CustomProviders/associations", + "apiVersion": "2018-09-01-preview", + "name": "myAssociationName", + "location": "global", + "dependsOn": [ + "customProviderInfrastructureTemplate" + ], + "properties": { + "targetResourceId": "[if(empty(parameters('customResourceProviderId')), reference('customProviderInfrastructureTemplate').outputs.customProviderResourceId.value, parameters('customResourceProviderId'))]", + "myCustomInputProperty": "myCustomInputValue", + "myCustomInputObject": { + "Property1": "Value1" + } + } + } + ], + "outputs": { + "associationResource": { + "type": "object", + "value": "[reference(parameters('associationName'), '2018-09-01-preview', 'Full')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1202 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1202 new file mode 100644 index 0000000..c703cc1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1202 @@ -0,0 +1,207 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-with-function/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-with-function/azuredeploy.parameters.json" + ], + "timestamp": 1642962905538, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-with-function/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-with-function/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1202", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.customproviders/resourceproviders", + "microsoft.storage/storageaccounts", + "microsoft.customproviders/resourceproviders/customresources", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1202", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "eastus", + "westeurope" + ], + "metadata": { + "description": "Location for the resources." + }, + "value": "eastus" + }, + "deployFunction": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines whether to deploy the function app and create the custom RP." + } + }, + "funcName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Name of the function app to be created." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Name of the storage account for storing custom resources in the function app." + } + }, + "azureCustomResourceName": { + "type": "string", + "metadata": { + "description": "Name of the custom resource that is being created." + }, + "value": "myCustomResourceName" + }, + "myCustomPropertyValue": { + "type": "string", + "metadata": { + "description": "The custom property value for the custom property on the custom resource." + }, + "value": "myPropertyValue" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": {}, + "resources": [ + { + "condition": true, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "eastus", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + }, + { + "condition": true, + "type": "Microsoft.Web/sites", + "apiVersion": "2018-11-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "eastus", + "kind": "functionapp", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[uniqueString(resourceGroup().id)]" + ], + "properties": { + "name": "[uniqueString(resourceGroup().id)]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsDashboard", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "AzureWebJobsSecretStorageType", + "value": "Files" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[concat(toLower(parameters('funcName')), 'b86e')]" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "6.5.0" + }, + { + "name": "WEBSITE_RUN_FROM_PACKAGE", + "value": "[uri(parameters('_artifactsLocation'), concat('artifacts/functionzip/functionpackage.zip', parameters('_artifactsLocationSasToken')))]" + } + ] + }, + "clientAffinityEnabled": false, + "reserved": false + } + }, + { + "condition": true, + "type": "Microsoft.CustomProviders/resourceProviders", + "apiVersion": "2018-09-01-preview", + "name": "[uniqueString(resourceGroup().id)]", + "location": "eastus", + "dependsOn": [ + "Microsoft.Web/sites/[uniqueString(resourceGroup().id)]" + ], + "properties": { + "actions": [ + { + "name": "ping", + "routingType": "Proxy", + "endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcName'), 'HttpTrigger1'), '2020-06-01').trigger_url]" + } + ], + "resourceTypes": [ + { + "name": "customResources", + "routingType": "Proxy", + "endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcName'), 'HttpTrigger1'), '2020-06-01').trigger_url]" + } + ] + } + }, + { + "type": "Microsoft.CustomProviders/resourceProviders/customResources", + "name": "[uniqueString(resourceGroup().id)]/myCustomResourceName", + "apiVersion": "2018-09-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.CustomProviders/resourceProviders/[uniqueString(resourceGroup().id)]" + ], + "properties": { + "hello": "world", + "myCustomProperty": "myPropertyValue" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1203 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1203 new file mode 100644 index 0000000..fcc3f3b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1203 @@ -0,0 +1,217 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-with-logicapp/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-with-logicapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962905545, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.customproviders/custom-rp-with-logicapp/azuredeploy.json", + "/quickstarts/microsoft.customproviders/custom-rp-with-logicapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1203", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.customproviders/resourceproviders", + "microsoft.customproviders/resourceproviders/customresources", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1203", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "australiasoutheast", + "eastus", + "westus2", + "westeurope", + "northeurope", + "canadacentral", + "canadaeast", + "japaneast", + "japanwest" + ], + "metadata": { + "description": "Location for the resources." + }, + "value": "eastus" + }, + "logicAppName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Name of the logic app to be created." + } + }, + "customResourceProviderName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Name of the custom provider to be created." + } + }, + "customResourceName": { + "type": "string", + "defaultValue": "myDemoCustomResource", + "metadata": { + "description": "Name of the custom resource that is being created." + }, + "value": "myCustomResourceName" + } + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "eastus", + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Switch": { + "cases": { + "CreateResource": { + "actions": { + "CreateCustomResource": { + "inputs": { + "body": { + "properties": "@addProperty(triggerBody().Body['properties'], 'myDynamicProperty', 'myDynamicValue')" + }, + "statusCode": 200 + }, + "kind": "Http", + "type": "Response" + } + }, + "case": "CREATE" + } + }, + "default": { + "actions": { + "DefaultHttpResponse": { + "inputs": { + "statusCode": 200 + }, + "kind": "Http", + "type": "Response" + } + } + }, + "expression": "@triggerBody().operationType", + "type": "Switch" + } + }, + "contentVersion": "1.0.0.0", + "outputs": {}, + "parameters": {}, + "triggers": { + "CustomProviderWebhook": { + "inputs": { + "schema": { + "required": [ + "OperationType", + "ResourceType", + "ResourceId", + "ResourceName", + "Body" + ], + "properties": { + "OperationType": { + "$id": "#/properties/OperationType", + "type": "string", + "enum": [ + "CREATE", + "DELETE", + "GET", + "LIST", + "TRIGGER" + ] + }, + "ResourceType": { + "$id": "#/properties/ResourceType", + "type": "string" + }, + "ResourceId": { + "$id": "#/properties/ResourceId", + "type": "string" + }, + "ResourceName": { + "$id": "#/properties/ResourceName", + "type": "string" + }, + "Body": { + "$id": "#/properties/Body", + "type": "object" + } + } + } + }, + "kind": "Http", + "type": "Request" + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + }, + { + "type": "Microsoft.CustomProviders/resourceProviders", + "apiVersion": "2018-09-01-preview", + "name": "[uniqueString(resourceGroup().id)]", + "location": "eastus", + "dependsOn": [ + "Microsoft.Logic/workflows/[uniqueString(resourceGroup().id)]" + ], + "properties": { + "resourceTypes": [ + { + "name": "customResources", + "mode": "Secure", + "routingType": "Webhook,Cache", + "endpoint": "[listCallbackURL(resourceId('Microsoft.Logic/workflows/triggers', parameters('logicAppName'), 'CustomProviderWebhook'), '2019-05-01').value]" + } + ] + } + }, + { + "type": "Microsoft.CustomProviders/resourceProviders/customResources", + "apiVersion": "2018-09-01-preview", + "name": "[uniqueString(resourceGroup().id)]/myCustomResourceName", + "location": "eastus", + "dependsOn": [ + "Microsoft.CustomProviders/resourceProviders/[uniqueString(resourceGroup().id)]" + ], + "properties": { + "myCustomInputProperty": "myCustomInputValue", + "myCustomInputObject": { + "Property1": "Value1" + } + } + } + ], + "outputs": { + "customResource": { + "type": "object", + "value": "[reference(parameters('customResourceName'), '2018-09-01-preview', 'Full')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1204 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1204 new file mode 100644 index 0000000..34cc402 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1204 @@ -0,0 +1,309 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection/azuredeploy.parameters.json" + ], + "timestamp": 1642962905551, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1204", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.databricks/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1204", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "3247823006110740501" + } + }, + "parameters": { + "disablePublicIp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to deploy Azure Databricks workspace with secure cluster connectivity (SCC) enabled or not (No Public IP)" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "nsgName": { + "type": "string", + "defaultValue": "databricks-nsg", + "metadata": { + "description": "The name of the network security group to create." + } + }, + "pricingTier": { + "type": "string", + "defaultValue": "premium", + "allowedValues": [ + "trial", + "standard", + "premium" + ], + "metadata": { + "description": "The pricing tier of workspace." + } + }, + "privateSubnetCidr": { + "type": "string", + "defaultValue": "10.179.0.0/18", + "metadata": { + "description": "CIDR range for the private subnet." + } + }, + "privateSubnetName": { + "type": "string", + "defaultValue": "private-subnet", + "metadata": { + "description": "The name of the private subnet to create." + } + }, + "publicSubnetCidr": { + "type": "string", + "defaultValue": "10.179.64.0/18", + "metadata": { + "description": "CIDR range for the public subnet.." + } + }, + "publicSubnetName": { + "type": "string", + "defaultValue": "public-subnet", + "metadata": { + "description": "The name of the public subnet to create." + } + }, + "vnetCidr": { + "type": "string", + "defaultValue": "10.179.0.0/16", + "metadata": { + "description": "CIDR range for the vnet." + } + }, + "vnetName": { + "type": "string", + "defaultValue": "databricks-vnet", + "metadata": { + "description": "The name of the virtual network to create." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Databricks workspace to create." + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "variables": { + "managedResourceGroupName": "[format('databricks-rg-{0}-{1}', parameters('workspaceName'), uniqueString(parameters('workspaceName'), resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "databricks-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Microsoft.Databricks-workspaces_UseOnly_databricks-worker-to-worker-inbound", + "properties": { + "description": "Required for worker nodes communication within a cluster.", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Microsoft.Databricks-workspaces_UseOnly_databricks-worker-to-databricks-webapp", + "properties": { + "description": "Required for workers communication with Databricks Webapp.", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureDatabricks", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "Microsoft.Databricks-workspaces_UseOnly_databricks-worker-to-sql", + "properties": { + "description": "Required for workers communication with Azure SQL services.", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3306", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Sql", + "access": "Allow", + "priority": 101, + "direction": "Outbound" + } + }, + { + "name": "Microsoft.Databricks-workspaces_UseOnly_databricks-worker-to-storage", + "properties": { + "description": "Required for workers communication with Azure Storage services.", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 102, + "direction": "Outbound" + } + }, + { + "name": "Microsoft.Databricks-workspaces_UseOnly_databricks-worker-to-worker-outbound", + "properties": { + "description": "Required for worker nodes communication within a cluster.", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 103, + "direction": "Outbound" + } + }, + { + "name": "Microsoft.Databricks-workspaces_UseOnly_databricks-worker-to-eventhub", + "properties": { + "description": "Required for worker communication with Azure Eventhub services.", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9093", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "EventHub", + "access": "Allow", + "priority": 104, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "databricks-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.179.0.0/16" + ] + }, + "subnets": [ + { + "name": "public-subnet", + "properties": { + "addressPrefix": "10.179.64.0/18", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/databricks-nsg" + }, + "delegations": [ + { + "name": "databricks-del-public", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + }, + { + "name": "private-subnet", + "properties": { + "addressPrefix": "10.179.0.0/18", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/databricks-nsg" + }, + "delegations": [ + { + "name": "databricks-del-private", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/databricks-nsg" + ] + }, + { + "type": "Microsoft.Databricks/workspaces", + "apiVersion": "2018-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "premium" + }, + "properties": { + "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "customVirtualNetworkId": { + "value": "Microsoft.Network/virtualNetworks/databricks-vnet" + }, + "customPublicSubnetName": { + "value": "public-subnet" + }, + "customPrivateSubnetName": { + "value": "private-subnet" + }, + "enableNoPublicIp": { + "value": false + } + } + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/databricks-vnet" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1205 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1205 new file mode 100644 index 0000000..1f930d9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1205 @@ -0,0 +1,323 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-load-balancer/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-load-balancer/azuredeploy.parameters.json" + ], + "timestamp": 1642962905559, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-load-balancer/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-load-balancer/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1205", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.databricks/workspaces", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1205", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "disablePublicIp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not" + } + }, + "loadBalancerBackendPoolName": { + "defaultValue": "myLoadBalancerBackendPool", + "type": "string", + "metadata": { + "description": "Name of the outbound Load Balancer's Backend Pool." + } + }, + "loadBalancerFrontendConfigName": { + "defaultValue": "myLoadBalancerFrontendConfig", + "type": "string", + "metadata": { + "description": "Name of the outbound Load Balancer's Frontend Config." + } + }, + "loadBalancerName": { + "defaultValue": "myLoadBalancer", + "type": "string", + "metadata": { + "description": "Name of the outbound Load Balancer." + } + }, + "loadBalancerPublicIpName": { + "defaultValue": "myLoadBalancerPublicIP", + "type": "string", + "metadata": { + "description": "Name of the outbound Load Balancer public IP." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "nsgName": { + "defaultValue": "databricks-nsg", + "type": "string", + "metadata": { + "description": "The name of the network security group to create." + } + }, + "pricingTier": { + "defaultValue": "premium", + "allowedValues": [ + "trial", + "standard", + "premium" + ], + "type": "string", + "metadata": { + "description": "The pricing tier of workspace." + } + }, + "privateSubnetCidr": { + "defaultValue": "10.179.0.0/18", + "type": "string", + "metadata": { + "description": "Cidr range for the private subnet." + } + }, + "privateSubnetName": { + "defaultValue": "private-subnet", + "type": "string", + "metadata": { + "description": "The name of the private subnet to create." + } + }, + "publicSubnetCidr": { + "defaultValue": "10.179.64.0/18", + "type": "string", + "metadata": { + "description": "Cidr range for the public subnet.." + } + }, + "publicSubnetName": { + "defaultValue": "public-subnet", + "type": "string", + "metadata": { + "description": "The name of the public subnet to create." + } + }, + "vnetCidr": { + "defaultValue": "10.179.0.0/16", + "type": "string", + "metadata": { + "description": "Cidr range for the vnet." + } + }, + "vnetName": { + "defaultValue": "databricks-vnet", + "type": "string", + "metadata": { + "description": "The name of the virtual network to create." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Databricks workspace to create." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "loadBalancerId": "Microsoft.Network/loadBalancers/myLoadBalancer", + "loadBalancerBackendPoolId": "Microsoft.Network/loadBalancers/backendAddressPools/myLoadBalancer/myLoadBalancerBackendPool", + "loadBalancerFrontendConfigId": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLoadBalancer/myLoadBalancerFrontendConfig", + "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]", + "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "nsgId": "Microsoft.Network/networkSecurityGroups/databricks-nsg", + "vnetId": "Microsoft.Network/virtualNetworks/databricks-vnet" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "location": "[resourceGroup().location]", + "name": "databricks-nsg" + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myLoadBalancerPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "name": "myLoadBalancer", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myLoadBalancerPublicIP" + ], + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "myLoadBalancerFrontendConfig", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myLoadBalancerPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "myLoadBalancerBackendPool", + "type": "Microsoft.Network/loadBalancers/backendAddressPools" + } + ], + "outboundRules": [ + { + "name": "databricks-outbound-rule", + "type": "Microsoft.Network/loadBalancers/outboundRules", + "properties": { + "allocatedOutboundPorts": 0, + "protocol": "All", + "enableTcpReset": true, + "idleTimeoutInMinutes": 4, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLoadBalancer/myLoadBalancerBackendPool" + }, + "frontendIPConfigurations": [ + { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLoadBalancer/myLoadBalancerFrontendConfig" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "name": "databricks-vnet", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//databricks-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.179.0.0/16" + ] + }, + "subnets": [ + { + "name": "public-subnet", + "properties": { + "addressPrefix": "10.179.64.0/18", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/databricks-nsg" + }, + "delegations": [ + { + "name": "databricks-del-public", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + }, + { + "name": "private-subnet", + "properties": { + "addressPrefix": "10.179.0.0/18", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/databricks-nsg" + }, + "delegations": [ + { + "name": "databricks-del-private", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + } + ] + } + }, + { + "apiVersion": "2018-04-01", + "type": "Microsoft.Databricks/workspaces", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "dependsOn": [ + "Microsoft.Network/loadBalancers/myLoadBalancer", + "Microsoft.Network/networkSecurityGroups//databricks-nsg", + "Microsoft.Network/virtualNetworks//databricks-vnet" + ], + "sku": { + "name": "premium" + }, + "comments": "The managed resource group specified will be locked after deployment.", + "properties": { + "ManagedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "customVirtualNetworkId": { + "value": "Microsoft.Network/virtualNetworks/databricks-vnet" + }, + "customPublicSubnetName": { + "value": "public-subnet" + }, + "customPrivateSubnetName": { + "value": "private-subnet" + }, + "enableNoPublicIp": { + "value": false + }, + "loadBalancerId": { + "value": "Microsoft.Network/loadBalancers/myLoadBalancer" + }, + "loadBalancerBackendPoolName": { + "value": "myLoadBalancerBackendPool" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1206 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1206 new file mode 100644 index 0000000..e9098b2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1206 @@ -0,0 +1,275 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-nat-gateway/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-nat-gateway/azuredeploy.parameters.json" + ], + "timestamp": 1642962905566, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-nat-gateway/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-all-in-one-template-for-vnet-injection-with-nat-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1206", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.databricks/workspaces", + "microsoft.network/networksecuritygroups", + "microsoft.network/natgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1206", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "disablePublicIp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "natGatewayName": { + "defaultValue": "myNATgateway", + "type": "string", + "metadata": { + "description": "Name of the NAT gateway to be attached to the workspace subnets." + } + }, + "natGatewayPublicIpName": { + "defaultValue": "myNATGatewayPublicIP", + "type": "string", + "metadata": { + "description": "Name of the NAT gateway public IP." + } + }, + "nsgName": { + "defaultValue": "databricks-nsg", + "type": "string", + "metadata": { + "description": "The name of the network security group to create." + } + }, + "pricingTier": { + "defaultValue": "premium", + "allowedValues": [ + "trial", + "standard", + "premium" + ], + "type": "string", + "metadata": { + "description": "The pricing tier of workspace." + } + }, + "privateSubnetCidr": { + "defaultValue": "10.179.0.0/18", + "type": "string", + "metadata": { + "description": "Cidr range for the private subnet." + } + }, + "privateSubnetName": { + "defaultValue": "private-subnet", + "type": "string", + "metadata": { + "description": "The name of the private subnet to create." + } + }, + "publicSubnetCidr": { + "defaultValue": "10.179.64.0/18", + "type": "string", + "metadata": { + "description": "Cidr range for the public subnet.." + } + }, + "publicSubnetName": { + "defaultValue": "public-subnet", + "type": "string", + "metadata": { + "description": "The name of the public subnet to create." + } + }, + "vnetCidr": { + "defaultValue": "10.179.0.0/16", + "type": "string", + "metadata": { + "description": "Cidr range for the vnet." + } + }, + "vnetName": { + "defaultValue": "databricks-vnet", + "type": "string", + "metadata": { + "description": "The name of the virtual network to create." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Databricks workspace to create." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]", + "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "nsgId": "Microsoft.Network/networkSecurityGroups/databricks-nsg", + "vnetId": "Microsoft.Network/virtualNetworks/databricks-vnet" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "location": "[resourceGroup().location]", + "name": "databricks-nsg" + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "myNATGatewayPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/natGateways", + "apiVersion": "2020-06-01", + "name": "myNATgateway", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myNATGatewayPublicIP" + ], + "properties": { + "idleTimeoutInMinutes": 4, + "publicIpAddresses": [ + { + "id": "Microsoft.Network/publicIPAddresses/myNATGatewayPublicIP" + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "name": "databricks-vnet", + "dependsOn": [ + "Microsoft.Network/natGateways/myNATgateway", + "Microsoft.Network/networkSecurityGroups//databricks-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.179.0.0/16" + ] + }, + "subnets": [ + { + "name": "public-subnet", + "properties": { + "addressPrefix": "10.179.64.0/18", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/databricks-nsg" + }, + "natGateway": { + "id": "Microsoft.Network/natGateways/myNATgateway" + }, + "delegations": [ + { + "name": "databricks-del-public", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + }, + { + "name": "private-subnet", + "properties": { + "addressPrefix": "10.179.0.0/18", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/databricks-nsg" + }, + "natGateway": { + "id": "Microsoft.Network/natGateways/myNATgateway" + }, + "delegations": [ + { + "name": "databricks-del-private", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + } + ] + } + }, + { + "apiVersion": "2018-04-01", + "type": "Microsoft.Databricks/workspaces", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//databricks-nsg", + "Microsoft.Network/virtualNetworks//databricks-vnet" + ], + "sku": { + "name": "premium" + }, + "comments": "The managed resource group specified will be locked after deployment.", + "properties": { + "ManagedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "customVirtualNetworkId": { + "value": "Microsoft.Network/virtualNetworks/databricks-vnet" + }, + "customPublicSubnetName": { + "value": "public-subnet" + }, + "customPrivateSubnetName": { + "value": "private-subnet" + }, + "enableNoPublicIp": { + "value": false + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1207 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1207 new file mode 100644 index 0000000..4ccc379 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1207 @@ -0,0 +1,61 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905574, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1207", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1207", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "firstNSGName": "nsg-01" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-01", + "location": "[resourceGroup().location]" + } + ], + "outputs": { + "existingNSGId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('firstNSGName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1208 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1208 new file mode 100644 index 0000000..7b84fff --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1208 @@ -0,0 +1,144 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/azuredeploy.parameters.json" + ], + "timestamp": 1642962905581, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-vnet-for-vnet-injection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1208", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1208", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nsgId": { + "type": "string", + "metadata": { + "description": "The complete ARM Resource Id for the existing network security group." + }, + "value": "GET-PREREQ-existingNSGId" + }, + "vnetName": { + "defaultValue": "databricks-vnet", + "type": "string", + "metadata": { + "description": "The name of the virtual network to create." + } + }, + "privateSubnetName": { + "defaultValue": "private-subnet", + "type": "string", + "metadata": { + "description": "The name of the private subnet to create." + } + }, + "publicSubnetName": { + "defaultValue": "public-subnet", + "type": "string", + "metadata": { + "description": "The name of the public subnet to create." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vnetCidr": { + "defaultValue": "10.179.0.0/16", + "type": "string", + "metadata": { + "description": "Cidr range for the vnet." + } + }, + "privateSubnetCidr": { + "defaultValue": "10.179.0.0/18", + "type": "string", + "metadata": { + "description": "Cidr range for the private subnet." + } + }, + "publicSubnetCidr": { + "defaultValue": "10.179.64.0/18", + "type": "string", + "metadata": { + "description": "Cidr range for the public subnet.." + } + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "name": "databricks-vnet", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.179.0.0/16" + ] + }, + "subnets": [ + { + "name": "public-subnet", + "properties": { + "addressPrefix": "10.179.64.0/18", + "networkSecurityGroup": { + "id": "GET-PREREQ-existingNSGId" + }, + "delegations": [ + { + "name": "databricks-del-public", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + }, + { + "name": "private-subnet", + "properties": { + "addressPrefix": "10.179.0.0/18", + "networkSecurityGroup": { + "id": "GET-PREREQ-existingNSGId" + }, + "delegations": [ + { + "name": "databricks-del-private", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1209 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1209 new file mode 100644 index 0000000..c26499c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1209 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace/azuredeploy.parameters.json" + ], + "timestamp": 1642962905591, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1209", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.databricks/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1209", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "16972826190265087503" + } + }, + "parameters": { + "disablePublicIp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not" + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Databricks workspace to create." + }, + "value": "GEN-UNIQUE" + }, + "pricingTier": { + "type": "string", + "defaultValue": "premium", + "allowedValues": [ + "standard", + "premium" + ], + "metadata": { + "description": "The pricing tier of workspace." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "managedResourceGroupName": "[format('databricks-rg-{0}-{1}', parameters('workspaceName'), uniqueString(parameters('workspaceName'), resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Databricks/workspaces", + "apiVersion": "2018-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "premium" + }, + "properties": { + "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "enableNoPublicIp": { + "value": false + } + } + } + } + ], + "outputs": { + "workspace": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT121 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT121 new file mode 100644 index 0000000..c2ba9db --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT121 @@ -0,0 +1,327 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-16disk-resources.json" + ], + "timestamp": 1642962887160, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-16disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT121", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT121", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountNameAFS": "storageSettings", + "vmName": "namespace-vm" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "es-data-set", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformUpdateDomainCount": 20, + "platformFaultDomainCount": 3 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespace-niccopyindex()", + "location": "location", + "copy": { + "name": "namespacenicLoop", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + }, + "loadBalancerBackendAddressPools": "lbBackendPools" + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespace-vmcopyindex()", + "location": "location", + "copy": { + "name": "namespacevirtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/namespace-niccopyindex()", + "Microsoft.Compute/availabilitySets/es-data-set" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/es-data-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "data-vmcopyIndex()", + "adminUsername": "adminUsername", + "adminPassword": "authSet", + "linuxConfiguration": "osSettings" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespace-vmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "namespace-vmcopyindex()_DataDisk1", + "diskSizeGB": 1023, + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 1, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 2, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 3, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk5", + "diskSizeGB": 1023, + "lun": 4, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk6", + "diskSizeGB": 1023, + "lun": 5, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk7", + "diskSizeGB": 1023, + "lun": 6, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk8", + "diskSizeGB": 1023, + "lun": 7, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk9", + "diskSizeGB": 1023, + "lun": 8, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk10", + "diskSizeGB": 1023, + "lun": 9, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk11", + "diskSizeGB": 1023, + "lun": 10, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk12", + "diskSizeGB": 1023, + "lun": 11, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk13", + "diskSizeGB": 1023, + "lun": 12, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk14", + "diskSizeGB": 1023, + "lun": 13, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk15", + "diskSizeGB": 1023, + "lun": 14, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk16", + "diskSizeGB": 1023, + "lun": 15, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespace-niccopyindex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "installelasticsearch", + "apiVersion": "2019-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/namespace-vmcopyindex()" + ], + "properties": { + "publisher": "osSettings", + "type": "osSettings", + "typeHandlerVersion": "osSettings", + "settings": { + "fileUris": "osSettings", + "commandToExecute": "[concat(parameters('osSettings').extensionSettings.data.settings.commandToExecute, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountNameAFS')), '2021-01-01').keys[0].value)]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1210 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1210 new file mode 100644 index 0000000..9b092ff --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1210 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.parameters.json" + ], + "timestamp": 1642962905600, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1210", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.databricks/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1210", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "disablePublicIp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not" + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Databricks workspace to create." + }, + "value": "GEN-UNIQUE" + }, + "pricingTier": { + "type": "string", + "defaultValue": "premium", + "allowedValues": [ + "standard", + "premium" + ], + "metadata": { + "description": "The pricing tier of workspace." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.139", + "metadata": { + "description": "The first 2 octets of the virtual network /16 address range (e.g., '10.139' for the address range 10.139.0.0/16)." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Databricks/workspaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2018-04-01", + "sku": { + "name": "premium" + }, + "properties": { + "ManagedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "vnetAddressPrefix": { + "value": "10.139" + }, + "enableNoPublicIp": { + "value": false + } + } + } + } + ], + "outputs": { + "workspace": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1211 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1211 new file mode 100644 index 0000000..5ef9642 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1211 @@ -0,0 +1,108 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962905608, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-custom-vnet-address/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1211", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.databricks/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1211", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "disablePublicIp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not" + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Databricks workspace to create." + }, + "value": "GEN-UNIQUE" + }, + "pricingTier": { + "type": "string", + "defaultValue": "premium", + "allowedValues": [ + "standard", + "premium" + ], + "metadata": { + "description": "The pricing tier of workspace." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.139", + "metadata": { + "description": "The first 2 octets of the virtual network /16 address range (e.g., '10.139' for the address range 10.139.0.0/16)." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "usgovarizona" + } + }, + "variables": { + "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Databricks/workspaces", + "name": "GEN-UNIQUE", + "location": "usgovarizona", + "apiVersion": "2018-04-01", + "sku": { + "name": "premium" + }, + "properties": { + "ManagedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "vnetAddressPrefix": { + "value": "10.139" + }, + "enableNoPublicIp": { + "value": false + } + } + } + } + ], + "outputs": { + "workspace": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1212 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1212 new file mode 100644 index 0000000..32b00f6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1212 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905616, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1212", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1212", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the KeyVault, this value must be globally unique." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + }, + "keyName": { + "type": "string", + "defaultValue": "cmk", + "metadata": { + "description": "Name of the encryption key" + } + } + }, + "resources": [ + { + "name": "vault-prereq", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vaultName": { + "value": "[concat('keyvault-', uniqueString(resourceGroup().id))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "enablePurgeProtection": { + "value": true + } + } + } + }, + { + "name": "key-prereq", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "vault-prereq" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/Microsoft.KeyVault/vaults/keys/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vaultName": { + "value": "[concat('keyvault-', uniqueString(resourceGroup().id))]" + }, + "keyName": { + "value": "cmk" + }, + "kty": { + "value": "RSA" + }, + "key_ops": { + "value": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ] + } + } + } + } + ], + "outputs": { + "outKeyVaultName": { + "type": "string", + "value": "[parameters('vaultName')]" + }, + "outKeyName": { + "type": "string", + "value": "[parameters('keyName')]" + }, + "outKeyVaultResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1213 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1213 new file mode 100644 index 0000000..1e95232 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1213 @@ -0,0 +1,201 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/azuredeploy.parameters.json" + ], + "timestamp": 1642962905626, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-customer-managed-keys/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1213", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.databricks/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1213", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "disablePublicIp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not" + } + }, + "workspaceName": { + "type": "string", + "defaultValue": "[concat('ws', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Databricks workspace to create." + } + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "The Azure Key Vault name." + }, + "value": "GET-PREREQ-outKeyVaultName" + }, + "keyName": { + "type": "string", + "metadata": { + "description": "The Azure Key Vault encryption key name." + }, + "value": "GET-PREREQ-outKeyName" + }, + "keyVaultResourceGroupName": { + "type": "string", + "metadata": { + "description": "The Azure Key Vault resource group name." + }, + "value": "GET-PREREQ-outKeyVaultResourceGroupName" + }, + "pricingTier": { + "type": "string", + "defaultValue": "premium", + "allowedValues": [ + "standard", + "premium" + ], + "metadata": { + "description": "The pricing tier of workspace." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Databricks/workspaces", + "apiVersion": "2018-04-01", + "name": "[concat('ws', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "premium" + }, + "properties": { + "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "prepareEncryption": { + "value": true + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "addAccessPolicy", + "resourceGroup": "GET-PREREQ-outKeyVaultResourceGroupName", + "dependsOn": [ + "Microsoft.Databricks/workspaces/[concat('ws', uniqueString(resourceGroup().id))]" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "0.9.0.0", + "resources": [ + { + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "apiVersion": "2019-09-01", + "name": "GET-PREREQ-outKeyVaultName/add", + "properties": { + "accessPolicies": [ + { + "objectId": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')), '2018-04-01').storageAccountIdentity.principalId]", + "tenantId": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')), '2018-04-01').storageAccountIdentity.tenantId]", + "permissions": { + "keys": [ + "get", + "wrapKey", + "unwrapKey" + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "configureCMKOnWorkspace", + "dependsOn": [ + "addAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "0.9.0.0", + "resources": [ + { + "type": "Microsoft.Databricks/workspaces", + "apiVersion": "2018-04-01", + "name": "[concat('ws', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "premium" + }, + "properties": { + "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "prepareEncryption": { + "value": true + }, + "encryption": { + "value": { + "keySource": "Microsoft.Keyvault", + "keyvaulturi": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyvaultDns)]", + "KeyName": "GET-PREREQ-outKeyName" + } + }, + "enableNoPublicIp": { + "value": false + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "outputs": { + "workspace": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1214 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1214 new file mode 100644 index 0000000..0c5157c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1214 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905635, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1214", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1214", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vnetName": "vnet-01", + "vnetCidr": "10.179.0.0/16", + "publicSubnetName": "public-subnet", + "publicSubnetCidr": "10.179.0.0/18", + "privateSubnetName": "private-subnet", + "privateSubnetCidr": "10.179.64.0/18" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "name": "vnet-01", + "dependsOn": [ + "nsg-public", + "nsg-private" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.179.0.0/16" + ] + }, + "subnets": [ + { + "name": "public-subnet", + "properties": { + "addressPrefix": "10.179.0.0/18", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-public" + }, + "delegations": [ + { + "name": "databricks-del-public", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + }, + { + "name": "private-subnet", + "properties": { + "addressPrefix": "10.179.64.0/18", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-private" + }, + "delegations": [ + { + "name": "databricks-del-private", + "properties": { + "serviceName": "Microsoft.Databricks/workspaces" + } + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-public", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-private", + "location": "[resourceGroup().location]", + "properties": {} + } + ], + "outputs": { + "existingVNETId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1215 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1215 new file mode 100644 index 0000000..6f11f81 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1215 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/azuredeploy.parameters.json" + ], + "timestamp": 1642962905641, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.databricks/databricks-workspace-with-vnet-injection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1215", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.databricks/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1215", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "disablePublicIp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to deploy Azure Databricks workspace with Secure Cluster Connectivity (No Public IP) enabled or not" + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Databricks workspace to create." + }, + "value": "GEN-UNIQUE" + }, + "pricingTier": { + "defaultValue": "premium", + "allowedValues": [ + "trial", + "standard", + "premium" + ], + "type": "string", + "metadata": { + "description": "The pricing tier of workspace." + } + }, + "customVirtualNetworkId": { + "type": "string", + "metadata": { + "description": "The complete ARM resource Id of the custom virtual network." + }, + "value": "GET-PREREQ-existingVNETId" + }, + "customPublicSubnetName": { + "type": "string", + "defaultValue": "public-subnet", + "metadata": { + "description": "The name of the public subnet in the custom VNet." + } + }, + "customPrivateSubnetName": { + "type": "string", + "defaultValue": "private-subnet", + "metadata": { + "description": "The name of the private subnet in the custom VNet." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]" + }, + "resources": [ + { + "comments": "The resource group specified will be locked after deployment.", + "type": "Microsoft.Databricks/workspaces", + "apiVersion": "2018-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "premium" + }, + "properties": { + "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]", + "parameters": { + "customVirtualNetworkId": { + "value": "GET-PREREQ-existingVNETId" + }, + "customPublicSubnetName": { + "value": "public-subnet" + }, + "customPrivateSubnetName": { + "value": "private-subnet" + }, + "enableNoPublicIp": { + "value": false + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1216 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1216 new file mode 100644 index 0000000..5e84c22 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1216 @@ -0,0 +1,266 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962905646, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1216", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1216", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Azure storage account that contains the data to be copied." + }, + "value": "nameofyourstorageaccount" + }, + "storageAccountKey": { + "type": "securestring", + "metadata": { + "description": "Key for the Azure storage account." + }, + "value": "keyofyourstorageaccount" + }, + "sourceBlobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + }, + "value": "adftutorial" + }, + "sourceBlobName": { + "type": "string", + "metadata": { + "description": "Name of the blob in the container that has the data to be copied to Azure SQL Database table" + }, + "value": "emp.txt" + }, + "sqlServerName": { + "type": "string", + "metadata": { + "description": "Name of the Azure SQL Server that will hold the output/copied data." + }, + "value": "sptempsqlserver" + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "Name of the Azure SQL Database in the Azure SQL server." + }, + "value": "sptempsqldb" + }, + "sqlServerUserName": { + "type": "string", + "metadata": { + "description": "Name of the user that has access to the Azure SQL server." + }, + "value": "sqluser" + }, + "sqlServerPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the user." + }, + "value": "pass@word1" + }, + "targetSQLTable": { + "type": "string", + "metadata": { + "description": "Table in the Azure SQL Database that will hold the copied data." + }, + "value": "emp" + } + }, + "variables": { + "dataFactoryName": "[concat('AzureBlobToAzureSQLDatabaseDF', uniqueString(resourceGroup().id))]", + "azureSqlLinkedServiceName": "AzureSqlLinkedService", + "azureStorageLinkedServiceName": "AzureStorageLinkedService", + "blobInputDatasetName": "BlobInputDataset", + "sqlOutputDatasetName": "SQLOutputDataset", + "pipelineName": "Blob2SQLPipeline" + }, + "resources": [ + { + "name": "[variables('dataFactoryName')]", + "apiVersion": "2015-10-01", + "type": "Microsoft.DataFactory/datafactories", + "location": "West US", + "resources": [ + { + "type": "linkedservices", + "name": "AzureStorageLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": "DefaultEndpointsProtocol=https;AccountName=nameofyourstorageaccount;AccountKey=keyofyourstorageaccount" + } + } + }, + { + "type": "linkedservices", + "name": "AzureSqlLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureSqlDatabase", + "description": "Azure SQL linked service", + "typeProperties": { + "connectionString": "Server=tcp:sptempsqlserver.database.windows.net1433;Database=sptempsqldb;User ID=sqluser;Password=pass@word1;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" + } + } + }, + { + "type": "datasets", + "name": "BlobInputDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureBlob", + "linkedServiceName": "AzureStorageLinkedService", + "structure": [ + { + "name": "Column0", + "type": "string" + }, + { + "name": "Column1", + "type": "string" + } + ], + "typeProperties": { + "folderPath": "adftutorial/", + "fileName": "emp.txt", + "format": { + "type": "TextFormat", + "columnDelimiter": "," + } + }, + "availability": { + "frequency": "Day", + "interval": 1 + }, + "external": true + } + }, + { + "type": "datasets", + "name": "SQLOutputDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureSqlLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureSqlTable", + "linkedServiceName": "AzureSqlLinkedService", + "structure": [ + { + "name": "FirstName", + "type": "string" + }, + { + "name": "LastName", + "type": "string" + } + ], + "typeProperties": { + "tableName": "emp" + }, + "availability": { + "frequency": "Day", + "interval": 1 + } + } + }, + { + "type": "datapipelines", + "name": "Blob2SQLPipeline", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]", + "[variables('azureSqlLinkedServiceName')]", + "[variables('blobInputDatasetName')]", + "[variables('sqlOutputDatasetName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "activities": [ + { + "name": "CopyFromAzureBlobToAzureSQL", + "description": "Copy data frm Azure blob to Azure SQL", + "type": "Copy", + "inputs": [ + { + "name": "BlobInputDataset" + } + ], + "outputs": [ + { + "name": "SQLOutputDataset" + } + ], + "typeProperties": { + "source": { + "type": "BlobSource" + }, + "sink": { + "type": "SqlSink", + "sqlWriterCleanupScript": "$$Text.Format('DELETE FROM {0}', 'emp')" + }, + "translator": { + "type": "TabularTranslator", + "columnMappings": "Column0:FirstName,Column1:LastName" + } + }, + "Policy": { + "concurrency": 1, + "executionPriorityOrder": "NewestFirst", + "retry": 3, + "timeout": "01:00:00" + } + } + ], + "start": "2016-10-03T00:00:00Z", + "end": "2016-10-04T00:00:00Z" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1217 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1217 new file mode 100644 index 0000000..3b5f059 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1217 @@ -0,0 +1,306 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy-stored-proc/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy-stored-proc/azuredeploy.parameters.json" + ], + "timestamp": 1642962905653, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy-stored-proc/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-blob-to-sql-copy-stored-proc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1217", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1217", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Azure storage account that contains the data to be copied." + }, + "value": "yourstorageaccountname" + }, + "storageAccountKey": { + "type": "securestring", + "metadata": { + "description": "Key for the Azure storage account." + }, + "value": "yourstorageaccountkey" + }, + "sourceBlobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + }, + "value": "adftutorial" + }, + "sourceBlobName": { + "type": "string", + "metadata": { + "description": "Name of the blob in the container that has the data to be copied to Azure SQL Database table" + }, + "value": "emp.txt" + }, + "sqlServerName": { + "type": "string", + "metadata": { + "description": "Name of the Azure SQL Server that will hold the output/copied data." + }, + "value": "yourazuresqlserver" + }, + "sqlDatabaseName": { + "type": "string", + "metadata": { + "description": "Name of Azure SQL Database in Azure SQL server copying data to." + }, + "value": "yourazuresqldb" + }, + "sqlUserID": { + "type": "string", + "metadata": { + "description": "Username for access to Azure SQL Server." + }, + "value": "yourazuresqluser" + }, + "sqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the user to Azure SQL Server." + }, + "value": "yourazuresqlpassword" + }, + "sqlTargetTable": { + "type": "string", + "metadata": { + "description": "Table in the Azure SQL Database that will hold the copied data." + }, + "value": "emp" + }, + "sqlWriterTableType": { + "type": "string", + "metadata": { + "description": "Specify a table type name to be used in the stored procedure. Copy activity makes the data being moved available in a temp table with this table type." + }, + "value": "empType" + }, + "sqlWriterStoredProcedureName": { + "type": "string", + "metadata": { + "description": "Name of the stored procedure that upserts (updates/inserts) data into the target table." + }, + "value": "spWriteEmployee" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataFactoryName": "[concat('CopyFromAzureBlobToAzureSQLDbSproc', uniqueString(resourceGroup().id))]", + "storageLinkedServiceName": "StorageLinkedService", + "sqlLinkedServiceName": "SqlLinkedService", + "storageDataset": "StorageDataset", + "intermediateDataset": "IntermediateDataset", + "sqlDataset": "SqlDataset", + "pipelineName": "BlobtoSqlDbCopyPipelineSproc" + }, + "resources": [ + { + "name": "[variables('dataFactoryName')]", + "apiVersion": "2015-10-01", + "type": "Microsoft.DataFactory/datafactories", + "location": "[resourceGroup().location]", + "resources": [ + { + "type": "linkedservices", + "name": "StorageLinkedService", + "apiVersion": "2015-10-01", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "properties": { + "type": "AzureStorage", + "description": "Azure Storage Linked Service", + "typeProperties": { + "connectionString": "DefaultEndpointsProtocol=https;AccountName=yourstorageaccountname;AccountKey=yourstorageaccountkey" + } + } + }, + { + "type": "linkedservices", + "name": "SqlLinkedService", + "apiVersion": "2015-10-01", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "properties": { + "type": "AzureSqlDatabase", + "description": "Azure SQL linked service", + "typeProperties": { + "connectionString": "Data Source=tcp:yourazuresqlserver.database.windows.net1433;Initial Catalog=yourazuresqldb;Integrated Security=False;User ID=sqlUserId;Password=yourazuresqlpassword;Connect Timeout=30;Encrypt=True" + } + } + }, + { + "type": "datasets", + "name": "StorageDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('storageLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureBlob", + "linkedServiceName": "StorageLinkedService", + "typeProperties": { + "folderPath": "adftutorial/", + "fileName": "emp.txt", + "format": { + "type": "TextFormat" + } + }, + "availability": { + "frequency": "Hour", + "interval": 1 + }, + "external": true + } + }, + { + "type": "datasets", + "name": "IntermediateDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('sqlLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureSqlTable", + "linkedServiceName": "SqlLinkedService", + "typeProperties": { + "tableName": "IntermediateDataset" + }, + "availability": { + "frequency": "Hour", + "interval": 1 + } + } + }, + { + "type": "datasets", + "name": "SqlDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('sqlLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureSqlTable", + "linkedServiceName": "SqlLinkedService", + "typeProperties": { + "tableName": "emp" + }, + "availability": { + "frequency": "Hour", + "interval": 1 + } + } + }, + { + "type": "dataPipelines", + "name": "BlobtoSqlDbCopyPipelineSproc", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('storageLinkedServiceName')]", + "[variables('sqlLinkedServiceName')]", + "[variables('storageDataset')]", + "[variables('sqlDataset')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "description": "Copies data from Azure Blob to Sql DB while invoking stored procedure", + "activities": [ + { + "name": "BlobtoSqlTableCopyActivity", + "type": "Copy", + "typeProperties": { + "source": { + "type": "BlobSource" + }, + "sink": { + "type": "SqlSink", + "writeBatchSize": 0, + "writeBatchTimeout": "00:00:00" + } + }, + "inputs": [ + { + "name": "StorageDataset" + } + ], + "outputs": [ + { + "name": "IntermediateDataset" + } + ] + }, + { + "name": "SqlTabletoSqlDbSprocActivity", + "type": "SqlServerStoredProcedure", + "inputs": [ + { + "name": "IntermediateDataset" + } + ], + "outputs": [ + { + "name": "SqlDataset" + } + ], + "typeProperties": { + "storedProcedureName": "spWriteEmployee" + }, + "scheduler": { + "frequency": "Hour", + "interval": 1 + }, + "policy": { + "timeout": "02:00:00", + "concurrency": 1, + "executionPriorityOrder": "NewestFirst", + "retry": 3 + } + } + ], + "start": "2016-10-01T00:00:00Z", + "end": "2016-10-02T00:00:00Z" + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1218 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1218 new file mode 100644 index 0000000..445f8c7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1218 @@ -0,0 +1,410 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-chained-copy-activities/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-chained-copy-activities/azuredeploy.parameters.json" + ], + "timestamp": 1642962905659, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-chained-copy-activities/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-chained-copy-activities/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1218", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1218", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dataLakeStoreUri": { + "type": "string", + "metadata": { + "description": "URI of Azure Data Lake store" + }, + "value": "https://%yourdatalakestore%.azuredatalakestore.net/webhdfs/v1" + }, + "dataLakeStoreServicePrincipalID": { + "type": "string", + "metadata": { + "description": "ID of Azure Service Principal used for accessing Data Lake" + }, + "value": "%YourDataLakeStoreSPID%" + }, + "dataLakeStoreServicePrincipalKey": { + "type": "securestring", + "metadata": { + "description": "Key for Azure Service Principal used for accessing Data Lake" + }, + "value": "%YourDataLakeStoreSPKey%" + }, + "azureSQLConnectionString": { + "type": "securestring", + "metadata": { + "description": "Connection string for Azure SQL Database" + }, + "value": "%YourAzureSQLConnectionString%" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataFactoryName": "[concat('CopyFromSQLToADFToAzureSQL', uniqueString(resourceGroup().id))]", + "gatewayName": "[concat('Gateway', uniqueString(resourceGroup().id))]", + "dataLakeLinkedServiceName": "DataFactoryLinkedService", + "sqlLinkedServiceName": "SqlLinkedService", + "azureSqlLinkedServiceName": "AzureSqlLinkedService", + "dataLakeDatasetName": "DataLakeDataset", + "sqlDatasetName": "SqlDataset", + "azureSqlDatasetName": "AzureSqlDataset", + "pipelineName": "CopyFromSQLToADFToAzureSQLPipeline" + }, + "resources": [ + { + "name": "[variables('dataFactoryName')]", + "apiVersion": "2015-10-01", + "type": "Microsoft.DataFactory/datafactories", + "location": "[resourceGroup().location]", + "resources": [ + { + "dependsOn": [ + "[resourceId('Microsoft.DataFactory/dataFactories/', variables('dataFactoryName'))]" + ], + "type": "gateways", + "apiVersion": "2015-10-01", + "name": "[variables('gatewayName')]", + "properties": { + "description": "ADF on-premises Data Management Gateway" + } + }, + { + "type": "linkedservices", + "name": "DataFactoryLinkedService", + "apiVersion": "2015-10-01", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "properties": { + "type": "AzureDataLakeStore", + "typeProperties": { + "dataLakeStoreUri": "https://%yourdatalakestore%.azuredatalakestore.net/webhdfs/v1", + "servicePrincipalId": "%YourDataLakeStoreSPID%", + "servicePrincipalKey": "%YourDataLakeStoreSPKey%", + "tenant": "[subscription().tenantId]", + "subscriptionId": "[subscription().subscriptionId]", + "resourceGroupName": "[resourceGroup().name]" + } + } + }, + { + "type": "linkedservices", + "name": "SqlLinkedService", + "apiVersion": "2015-10-01", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('gatewayName')]" + ], + "properties": { + "type": "OnPremisesSqlServer", + "typeProperties": { + "connectionString": "Placeholder-COnnectionString-Replace-Post-Deployment", + "gatewayName": "[variables('gatewayName')]", + "password": "**********" + } + } + }, + { + "type": "linkedservices", + "name": "AzureSqlLinkedService", + "apiVersion": "2015-10-01", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "properties": { + "type": "AzureSqlDatabase", + "typeProperties": { + "connectionString": "%YourAzureSQLConnectionString%" + } + } + }, + { + "type": "datasets", + "name": "DataLakeDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('dataLakeLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "structure": [ + { + "name": "CurrencyCode", + "type": "string" + }, + { + "name": "Name", + "type": "string" + }, + { + "name": "ModifiedDate", + "type": "Datetime" + } + ], + "published": false, + "type": "AzureDataLakeStore", + "linkedServiceName": "DataFactoryLinkedService", + "typeProperties": { + "fileName": "data.orc", + "folderPath": "[concat(variables('dataFactoryName'), '/{year}/{month}/{day}/{hour}/{minute}/')]", + "format": { + "type": "OrcFormat" + }, + "partitionedBy": [ + { + "name": "year", + "value": { + "type": "DateTime", + "date": "SliceStart", + "format": "yy" + } + }, + { + "name": "month", + "value": { + "type": "DateTime", + "date": "SliceStart", + "format": "MM" + } + }, + { + "name": "day", + "value": { + "type": "DateTime", + "date": "SliceStart", + "format": "dd" + } + }, + { + "name": "hour", + "value": { + "type": "DateTime", + "date": "SliceStart", + "format": "HH" + } + }, + { + "name": "minute", + "value": { + "type": "DateTime", + "date": "SliceStart", + "format": "mm" + } + } + ] + }, + "availability": { + "frequency": "Day", + "interval": 1 + }, + "external": false + } + }, + { + "type": "datasets", + "name": "SqlDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('sqlLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "structure": [ + { + "name": "CurrencyCode", + "type": "string" + }, + { + "name": "Name", + "type": "string" + }, + { + "name": "ModifiedDate", + "type": "Datetime" + } + ], + "published": false, + "type": "SqlServerTable", + "linkedServiceName": "SqlLinkedService", + "typeProperties": { + "tableName": "Sales.Currency" + }, + "availability": { + "frequency": "Day", + "interval": 1 + }, + "external": true + } + }, + { + "type": "datasets", + "name": "AzureSqlDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureSqlLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "structure": [ + { + "name": "CurrencyCode", + "type": "string" + }, + { + "name": "Name", + "type": "string" + }, + { + "name": "ModifiedDate", + "type": "Datetime" + } + ], + "published": false, + "type": "AzureSqlTable", + "linkedServiceName": "AzureSqlLinkedService", + "typeProperties": { + "tableName": "Sales.Currency" + }, + "availability": { + "frequency": "Day", + "interval": 1 + }, + "external": false + } + }, + { + "type": "dataPipelines", + "name": "CopyFromSQLToADFToAzureSQLPipeline", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('dataLakeLinkedServiceName')]", + "[variables('sqlLinkedServiceName')]", + "[variables('azureSqlLinkedServiceName')]", + "[variables('dataLakeDatasetName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "activities": [ + { + "type": "Copy", + "typeProperties": { + "source": { + "type": "SqlSource", + "sqlReaderQuery": "$$Text.Format('select * from Sales.Currency where ModifiedDate >= \\'{0:yyyy-MM-dd HH:mm}\\' AND ModifiedDate < \\'{1:yyyy-MM-dd HH:mm}\\'', WindowStart, WindowEnd)" + }, + "sink": { + "type": "AzureDataLakeStoreSink", + "writeBatchSize": 0, + "writeBatchTimeout": "00:00:00" + } + }, + "inputs": [ + { + "name": "SqlDataset" + } + ], + "outputs": [ + { + "name": "DataLakeDataset" + } + ], + "policy": { + "timeout": "1.00:00:00", + "concurrency": 10, + "executionPriorityOrder": "NewestFirst", + "style": "StartOfInterval", + "retry": 3, + "longRetry": 0, + "longRetryInterval": "00:00:00" + }, + "scheduler": { + "frequency": "Day", + "interval": 1 + }, + "name": "Activity-OnPremSQL->ADL" + }, + { + "type": "Copy", + "typeProperties": { + "source": { + "type": "AzureDataLakeStoreSource", + "recursive": false + }, + "sink": { + "type": "SqlSink", + "sqlWriterCleanupScript": "$$Text.Format('delete [Sales].[Currency] where [ModifiedDate] >= \\'{0:yyyy-MM-dd HH:mm}\\' AND [ModifiedDate] <\\'{1:yyyy-MM-dd HH:mm}\\'', WindowStart, WindowEnd)", + "writeBatchSize": 0, + "writeBatchTimeout": "00:00:00" + }, + "translator": { + "type": "TabularTranslator", + "columnMappings": "CurrencyCode:CurrencyCode,ModifiedDate:ModifiedDate,Name:Name" + } + }, + "inputs": [ + { + "name": "DataLakeDataset" + } + ], + "outputs": [ + { + "name": "AzureSqlDataset" + } + ], + "policy": { + "timeout": "1.00:00:00", + "concurrency": 10, + "executionPriorityOrder": "NewestFirst", + "style": "StartOfInterval", + "retry": 3, + "longRetry": 0, + "longRetryInterval": "00:00:00" + }, + "scheduler": { + "frequency": "Day", + "interval": 1 + }, + "name": "Activity-ADL->AzureSQL" + } + ], + "start": "2017-08-16T00:00:00Z", + "end": "2099-08-16T00:00:00Z", + "isPaused": true, + "pipelineMode": "Scheduled" + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1219 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1219 new file mode 100644 index 0000000..4279000 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1219 @@ -0,0 +1,446 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-ftp-hive-blob/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-ftp-hive-blob/azuredeploy.parameters.json" + ], + "timestamp": 1642962905666, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-ftp-hive-blob/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-ftp-hive-blob/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1219", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1219", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group that contains your Azure storage account that contains the input/output data." + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Azure storage account that contains the input/output data." + } + }, + "storageAccountKey": { + "type": "securestring", + "metadata": { + "description": "Key for the Azure storage account." + } + }, + "blobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + } + }, + "inputBlobFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that has the input file." + } + }, + "inputBlobName": { + "type": "string", + "metadata": { + "description": "Name of the input file/blob." + } + }, + "ftpHost": { + "type": "string", + "metadata": { + "description": "Name or IP address of FTP server." + } + }, + "ftpUser": { + "type": "string", + "metadata": { + "description": "User account that has access to the FTP server." + } + }, + "ftpPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the user account that has access to the FTP server." + } + }, + "ftpFolderName": { + "type": "string", + "metadata": { + "description": "The folder in FTP that has the input file." + } + }, + "ftpFileName": { + "type": "string", + "metadata": { + "description": "Name of the input file in FTP." + } + }, + "outputBlobFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that will hold the transformed data." + } + }, + "hiveScriptFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that contains the Hive query file." + } + }, + "hiveScriptFile": { + "type": "string", + "metadata": { + "description": "Name of the hive query (HQL) file." + } + }, + "sqlServerName": { + "type": "string", + "metadata": { + "description": "Name of the Azure SQL Server that will hold the output/copied data." + } + }, + "sqlDatabaseName": { + "type": "string", + "metadata": { + "description": "Name of the Azure SQL Database in the Azure SQL server." + } + }, + "sqlServerUserName": { + "type": "string", + "metadata": { + "description": "Name of the user that has access to the Azure SQL server." + } + }, + "sqlServerPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the user." + } + }, + "targetSQLTable": { + "type": "string", + "metadata": { + "description": "Table in the Azure SQL Database that will hold the copied data." + } + } + }, + "variables": { + "dataFactoryName": "[concat('HiveTransformDF', uniqueString(resourceGroup().id))]", + "azureStorageLinkedServiceName": "AzureStorageLinkedService", + "ftpLinkedServiceName": "FTPLinkedService", + "hdInsightOnDemandLinkedServiceName": "HDInsightOnDemandLinkedService", + "azureSqlLinkedServiceName": "AzureSqlLinkedService", + "ftpDatasetName": "FTPDataset", + "blobInputDatasetName": "AzureBlobInputDataset", + "blobOutputDatasetName": "AzureBlobOutputDataset", + "sqlDatasetName": "AzureSQLDataset", + "pipelineName": "Pipeline" + }, + "resources": [ + { + "name": "[variables('dataFactoryName')]", + "apiVersion": "2015-10-01", + "type": "Microsoft.DataFactory/datafactories", + "location": "West US", + "resources": [ + { + "type": "linkedservices", + "name": "FTPLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "FtpServer", + "typeProperties": { + "host": "ftpHost", + "port": 21, + "authenticationType": "Basic", + "username": "ftpUser", + "password": "ftpPassword", + "enableSsl": false, + "enableServerCertificateValidation": false + } + } + }, + { + "type": "linkedservices", + "name": "AzureStorageLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": "DefaultEndpointsProtocol=https;AccountName=storageAccountName;AccountKey=storageAccountKey" + } + } + }, + { + "type": "linkedservices", + "name": "HDInsightOnDemandLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "HDInsightOnDemand", + "typeProperties": { + "clusterSize": 1, + "version": "3.2", + "timeToLive": "00:05:00", + "osType": "windows", + "linkedServiceName": "AzureStorageLinkedService" + } + } + }, + { + "type": "linkedservices", + "name": "AzureSqlLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureSqlDatabase", + "description": "Azure SQL linked service", + "typeProperties": { + "connectionString": "Server=tcp:sqlServerName.database.windows.net1433;Database=sqlDatabaseName;User ID=sqlServerUserName;Password=sqlServerPassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" + } + } + }, + { + "type": "datasets", + "name": "FTPDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('ftpLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "FileShare", + "linkedServiceName": "FTPLinkedService", + "typeProperties": { + "folderPath": "ftpFolderName", + "fileName": "ftpFileName" + }, + "availability": { + "frequency": "Day", + "interval": 1 + }, + "external": true + } + }, + { + "type": "datasets", + "name": "AzureBlobInputDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureBlob", + "linkedServiceName": "AzureStorageLinkedService", + "typeProperties": { + "fileName": "inputBlobName", + "folderPath": "blobContainer/inputBlobFolder" + }, + "availability": { + "frequency": "Day", + "interval": 1 + } + } + }, + { + "type": "datasets", + "name": "AzureBlobOutputDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureBlob", + "linkedServiceName": "AzureStorageLinkedService", + "typeProperties": { + "folderPath": "blobContainer/outputBlobFolder", + "format": { + "type": "TextFormat", + "columnDelimiter": "," + } + }, + "availability": { + "frequency": "Day", + "interval": 1 + } + } + }, + { + "type": "datasets", + "name": "AzureSQLDataset", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureSqlLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureSqlTable", + "linkedServiceName": "AzureSqlLinkedService", + "typeProperties": { + "tableName": "targetSQLTable" + }, + "availability": { + "frequency": "Day", + "interval": 1 + }, + "policy": {} + } + }, + { + "type": "datapipelines", + "name": "Pipeline", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]", + "[variables('hdInsightOnDemandLinkedServiceName')]", + "[variables('ftpLinkedServiceName')]", + "[variables('azureSqlLinkedServiceName')]", + "[variables('ftpDatasetName')]", + "[variables('blobInputDatasetName')]", + "[variables('blobOutputDatasetName')]", + "[variables('sqlDatasetName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "description": "Pipeline that copies data from an FTP server to Azure Blobs, invokes a hive script on an on-demand HDInsightcluster to transform the data", + "activities": [ + { + "type": "Copy", + "name": "FTPToBlobCopy", + "typeProperties": { + "source": { + "type": "FileSystemSource", + "recursive": false + }, + "sink": { + "type": "BlobSink", + "copyBehavior": "PreserveHierarchy", + "writeBatchSize": 0, + "writeBatchTimeout": "00:00:00" + } + }, + "inputs": [ + { + "name": "FTPDataset" + } + ], + "outputs": [ + { + "name": "AzureBlobInputDataset" + } + ], + "policy": { + "concurrency": 1, + "executionPriorityOrder": "NewestFirst", + "retry": 1, + "timeout": "00:05:00" + } + }, + { + "type": "HDInsightHive", + "typeProperties": { + "scriptPath": "blobContainer/hiveScriptFolder/hiveScriptFile", + "scriptLinkedService": "AzureStorageLinkedService", + "defines": { + "inputtable": "[concat(replace(reference(resourceId(parameters('storageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2016-01-01').primaryEndpoints.blob, 'https://', concat('wasb://', parameters('blobContainer'), '@')), parameters('inputBlobFolder'))]", + "outputtable": "[concat(replace(reference(resourceId(parameters('storageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2016-01-01').primaryEndpoints.blob, 'https://', concat('wasb://', parameters('blobContainer'), '@')), parameters('outputBlobFolder'))]" + } + }, + "inputs": [ + { + "name": "AzureBlobInputDataset" + } + ], + "outputs": [ + { + "name": "AzureBlobOutputDataset" + } + ], + "policy": { + "concurrency": 1, + "retry": 2 + }, + "name": "RunSampleHiveActivity", + "linkedServiceName": "HDInsightOnDemandLinkedService" + }, + { + "type": "Copy", + "typeProperties": { + "source": { + "type": "BlobSource" + }, + "sink": { + "type": "SqlSink", + "writeBatchSize": 0, + "writeBatchTimeout": "00:00:00" + } + }, + "inputs": [ + { + "name": "AzureBlobOutputDataset" + } + ], + "outputs": [ + { + "name": "AzureSQLDataset" + } + ], + "policy": { + "timeout": "1.00:00:00", + "concurrency": 1, + "executionPriorityOrder": "NewestFirst", + "style": "StartOfInterval", + "retry": 3, + "longRetry": 0, + "longRetryInterval": "00:00:00" + }, + "name": "BlobToSqlCopy" + } + ], + "start": "2015-10-01T00:00:00Z", + "end": "2015-10-02T00:00:00Z", + "isPaused": false + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT122 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT122 new file mode 100644 index 0000000..6757f02 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT122 @@ -0,0 +1,234 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-2disk-resources.json" + ], + "timestamp": 1642962887175, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-2disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT122", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT122", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vmStorageAccountContainerName": "vhd", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountName": "storageSettings", + "storageAccountNameAFS": "storageSettings", + "vmName": "namespace-vm" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "es-data-set", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformUpdateDomainCount": 20, + "platformFaultDomainCount": 3 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespace-niccopyindex()", + "location": "location", + "copy": { + "name": "namespacenicLoop", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + }, + "loadBalancerBackendAddressPools": "lbBackendPools" + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespace-vmcopyindex()", + "location": "location", + "copy": { + "name": "namespacevirtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/namespace-niccopyindex()", + "Microsoft.Compute/availabilitySets/es-data-set" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/es-data-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "data-vmcopyIndex()", + "adminUsername": "adminUsername", + "adminPassword": "authSet", + "linuxConfiguration": "osSettings" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespace-vmcopyindex()_OSdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "namespace-vmcopyindex()_DataDisk1", + "diskSizeGB": 1023, + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "datadisk2", + "diskSizeGB": 1023, + "lun": 1, + "vhd": { + "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts', concat(variables('storageAccountName'), parameters('storageSettings').mapping[copyindex()])), '2021-01-01').primaryEndpoints.blob, variables('vmStorageAccountContainerName'), '/', parameters('namespace'), 'vm', copyindex(), 'dataDisk2', '.vhd')]" + }, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespace-niccopyindex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "installelasticsearch", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/namespace-vmcopyindex()" + ], + "properties": { + "publisher": "osSettings", + "type": "osSettings", + "typeHandlerVersion": "osSettings", + "settings": { + "fileUris": "osSettings", + "commandToExecute": "[concat(parameters('osSettings').extensionSettings.data.settings.commandToExecute, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountNameAFS')), '2021-01-01').keys[0].value)]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1220 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1220 new file mode 100644 index 0000000..1db877d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1220 @@ -0,0 +1,260 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-hive-transformation/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-hive-transformation/azuredeploy.parameters.json" + ], + "timestamp": 1642962905674, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-hive-transformation/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-hive-transformation/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1220", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1220", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group that contains your Azure storage account that contains the input/output data." + }, + "value": "ADFTutorialResourceGroup" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Azure storage account that contains the input/output data." + }, + "value": "changemeazurestorage" + }, + "storageAccountKey": { + "type": "securestring", + "metadata": { + "description": "Key for the Azure storage account." + }, + "value": "YA1gKAMY34PeVgEWPF8FdbQO+U0nFkd3SaFE4d32K16AYL/DowrTYun8anOdAiCnMkCiRYm+PxUh5mw7a7lVcA==" + }, + "blobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + }, + "value": "adfgetstarted" + }, + "inputBlobFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that has the input file." + }, + "value": "inputdata" + }, + "inputBlobName": { + "type": "string", + "metadata": { + "description": "Name of the input file/blob." + }, + "value": "input.log" + }, + "outputBlobFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that will hold the transformed data." + }, + "value": "partitioneddata" + }, + "hiveScriptFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that contains the Hive query file." + }, + "value": "script" + }, + "hiveScriptFile": { + "type": "string", + "metadata": { + "description": "Name of the hive query (HQL) file." + }, + "value": "partitionweblogs.hql" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataFactoryName": "[concat('HiveTransformDF', uniqueString(resourceGroup().id))]", + "azureStorageLinkedServiceName": "AzureStorageLinkedService", + "hdInsightOnDemandLinkedServiceName": "HDInsightOnDemandLinkedService", + "blobInputDatasetName": "AzureBlobInput", + "blobOutputDatasetName": "AzureBlobOutput", + "pipelineName": "HiveTransformPipeline" + }, + "resources": [ + { + "name": "[variables('dataFactoryName')]", + "apiVersion": "2015-10-01", + "type": "Microsoft.DataFactory/datafactories", + "location": "[resourceGroup().location]", + "resources": [ + { + "type": "linkedservices", + "name": "AzureStorageLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": "DefaultEndpointsProtocol=https;AccountName=changemeazurestorage;AccountKey=YA1gKAMY34PeVgEWPF8FdbQO+U0nFkd3SaFE4d32K16AYL/DowrTYun8anOdAiCnMkCiRYm+PxUh5mw7a7lVcA==" + } + } + }, + { + "type": "linkedservices", + "name": "HDInsightOnDemandLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "HDInsightOnDemand", + "typeProperties": { + "clusterSize": 1, + "version": "3.2", + "timeToLive": "00:05:00", + "osType": "windows", + "linkedServiceName": "AzureStorageLinkedService" + } + } + }, + { + "type": "datasets", + "name": "AzureBlobInput", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureBlob", + "linkedServiceName": "AzureStorageLinkedService", + "typeProperties": { + "fileName": "input.log", + "folderPath": "adfgetstarted/inputdata", + "format": { + "type": "TextFormat", + "columnDelimiter": "," + } + }, + "availability": { + "frequency": "Month", + "interval": 1 + }, + "external": true + } + }, + { + "type": "datasets", + "name": "AzureBlobOutput", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureBlob", + "linkedServiceName": "AzureStorageLinkedService", + "typeProperties": { + "folderPath": "adfgetstarted/partitioneddata", + "format": { + "type": "TextFormat", + "columnDelimiter": "," + } + }, + "availability": { + "frequency": "Month", + "interval": 1 + } + } + }, + { + "type": "datapipelines", + "name": "HiveTransformPipeline", + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('azureStorageLinkedServiceName')]", + "[variables('hdInsightOnDemandLinkedServiceName')]", + "[variables('blobInputDatasetName')]", + "[variables('blobOutputDatasetName')]" + ], + "apiVersion": "2015-10-01", + "properties": { + "description": "Pipeline that transforms data using Hive script.", + "activities": [ + { + "type": "HDInsightHive", + "typeProperties": { + "scriptPath": "adfgetstarted/script/partitionweblogs.hql", + "scriptLinkedService": "AzureStorageLinkedService", + "defines": { + "inputtable": "[concat(replace(reference(resourceId(parameters('storageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2016-01-01').primaryEndpoints.blob, 'https://', concat('wasb://', parameters('blobContainer'), '@')), parameters('inputBlobFolder'))]", + "partitionedtable": "[concat(replace(reference(resourceId(parameters('storageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2016-01-01').primaryEndpoints.blob, 'https://', concat('wasb://', parameters('blobContainer'), '@')), parameters('outputBlobFolder'))]" + } + }, + "inputs": [ + { + "name": "AzureBlobInput" + } + ], + "outputs": [ + { + "name": "AzureBlobOutput" + } + ], + "policy": { + "concurrency": 1, + "retry": 2 + }, + "scheduler": { + "frequency": "Month", + "interval": 1 + }, + "name": "RunSampleHiveActivity", + "linkedServiceName": "HDInsightOnDemandLinkedService" + } + ], + "start": "2016-09-01T00:00:00Z", + "end": "2016-09-02T00:00:00Z", + "isPaused": false + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1221 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1221 new file mode 100644 index 0000000..0cae4d8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1221 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-salesforce-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-salesforce-to-blob-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962905681, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-salesforce-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-salesforce-to-blob-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1221", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1221", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Storage" + }, + "value": "harishstoragedemo1" + }, + "storageAccountKey": { + "type": "securestring", + "metadata": { + "description": "Key associated with the corresponding Azure Storage" + }, + "value": "d2GO8FnODUg4+wKJV4rvM05qPllDUGVQauxohAqUZ4YxY/kxk2i2H3DzD57hRGLiVuZ5PTW2W8DMV6xSXCUHaQ==" + }, + "SfUserName": { + "type": "string", + "metadata": { + "description": "User Name associated with Salesforce account" + }, + "value": "changeme" + }, + "SfPassword": { + "type": "securestring", + "metadata": { + "description": "Password associated with the corresponding Salesforce account" + }, + "value": "changeme" + }, + "SfSecurityToken": { + "type": "securestring", + "metadata": { + "description": "Password associated with the corresponding Salesforce account" + }, + "value": "changeme" + }, + "SfTable": { + "type": "string", + "metadata": { + "description": "Salesforce Object from where to copy the data from" + }, + "value": "Product2" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataFactoryName": "[concat('SalesforceToAzureBlobDF', uniqueString(resourceGroup().id))]", + "SfLinkedServiceName": "SflLinkedService", + "storageLinkedServiceName": "StorageLinkedService", + "SfDataset": "SfDataset", + "StorageDataset": "StorageContainerDataset", + "PipelineName": "SftoBlobsCopyPipeline" + }, + "resources": [ + { + "name": "[variables('dataFactoryName')]", + "apiVersion": "2018-06-01", + "type": "Microsoft.DataFactory/factories", + "location": "[resourceGroup().location]", + "resources": [ + { + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "type": "linkedservices", + "name": "SflLinkedService", + "apiVersion": "2018-06-01", + "properties": { + "type": "Salesforce", + "description": "SalesForce Linked Service", + "typeProperties": { + "username": "changeme", + "password": "changeme", + "securityToken": "changeme" + } + } + }, + { + "type": "linkedservices", + "name": "StorageLinkedService", + "dependsOn": [ + "[variables('dataFactoryName')]" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Blobs Storage Linked Service", + "typeProperties": { + "connectionString": "DefaultEndpointsProtocol=https;AccountName=harishstoragedemo1;AccountKey=d2GO8FnODUg4+wKJV4rvM05qPllDUGVQauxohAqUZ4YxY/kxk2i2H3DzD57hRGLiVuZ5PTW2W8DMV6xSXCUHaQ==" + } + } + }, + { + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('SfLinkedServiceName')]" + ], + "type": "datasets", + "name": "SfDataset", + "apiVersion": "2018-06-01", + "properties": { + "type": "RelationalTable", + "linkedServiceName": "SflLinkedService", + "typeProperties": { + "tableName": "Product2" + }, + "availability": { + "frequency": "Day", + "interval": 1 + }, + "external": true + } + }, + { + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('storageLinkedServiceName')]" + ], + "type": "datasets", + "name": "StorageContainerDataset", + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureBlob", + "linkedServiceName": "StorageLinkedService", + "typeProperties": { + "folderPath": "datafromsftable/{Year}/{Month}/{Day}/Data.csv", + "partitionedBy": [ + { + "name": "Year", + "value": { + "type": "DateTime", + "date": "SliceStart", + "format": "yyyy" + } + }, + { + "name": "Month", + "value": { + "type": "DateTime", + "date": "SliceStart", + "format": "%M" + } + }, + { + "name": "Day", + "value": { + "type": "DateTime", + "date": "SliceStart", + "format": "%d" + } + } + ], + "format": { + "type": "TextFormat" + } + }, + "availability": { + "frequency": "Day", + "interval": 1 + }, + "external": false + } + }, + { + "dependsOn": [ + "[variables('dataFactoryName')]", + "[variables('storageLinkedServiceName')]", + "[variables('SfLinkedServiceName')]", + "[variables('SfDataset')]", + "[variables('StorageDataset')]" + ], + "type": "pipelines", + "name": "SftoBlobsCopyPipeline", + "apiVersion": "2018-06-01", + "properties": { + "description": "Pipeline to copy data from SF Object to Azure Blobs", + "activities": [ + { + "name": "SftoBlobsCopyActivity", + "description": "Copies data from SF Table to Azure Blobs", + "type": "Copy", + "inputs": [ + { + "name": "SfDataset" + } + ], + "outputs": [ + { + "name": "StorageContainerDataset" + } + ], + "typeProperties": { + "source": { + "type": "RelationalSource" + }, + "sink": { + "type": "BlobSink" + } + }, + "Policy": { + "retry": 3, + "timeout": "00:30:00" + } + } + ], + "start": "2016-10-01T00:00:00Z", + "end": "2016-10-01T00:00:00Z" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1222 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1222 new file mode 100644 index 0000000..ba785f7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1222 @@ -0,0 +1,178 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905690, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1222", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1222", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "databaseAdminUsername": { + "type": "string", + "metadata": { + "description": "Username for DB Admin" + }, + "value": "GEN-UNIQUE" + }, + "databaseAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for DB Admin" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]", + "serverName": "[concat('server', uniqueString(resourceGroup().id))]", + "databaseName": "SourceDB", + "databaseEdition": "Standard", + "databaseCollation": "SQL_Latin1_General_CP1_CI_AS", + "databaseRequestedServiceObjectiveName": "S3", + "dataWarehouseName": "SinkDW", + "dataWarehouseEdition": "DataWarehouse", + "dataWarehouseCollation": "SQL_Latin1_General_CP1_CI_AS", + "dataWarehouseServiceObjectiveName": "DW400c" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2021-01-01", + "comments": "Storage account ", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "name": "[variables('serverName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "tags": { + "displayName": "server" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "SourceDB", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "tags": { + "displayName": "database" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Standard", + "maxSizeBytes": "268435456000", + "requestedServiceObjectiveName": "S3", + "sampleName": "AdventureWorksLT" + } + }, + { + "name": "SinkDW", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "tags": { + "displayName": "data warehouse" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "DataWarehouse", + "requestedServiceObjectiveName": "DW400c" + } + } + ] + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "storageAccountResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "serverName": { + "type": "string", + "value": "[variables('serverName')]" + }, + "databaseName": { + "type": "string", + "value": "[variables('databaseName')]" + }, + "dataWarehouseName": { + "type": "string", + "value": "[variables('dataWarehouseName')]" + }, + "databaseAdminUsername": { + "type": "string", + "value": "[parameters('databaseAdminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1223 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1223 new file mode 100644 index 0000000..5b53bee --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1223 @@ -0,0 +1,352 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962905698, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-azure-sql-database-to-sql-data-warehouse-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1223", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1223", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dataFactoryName": { + "type": "string", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the data factory." + } + }, + "azureStorageAccountResourceId": { + "type": "string", + "metadata": { + "description": "Azure Storage account resource id." + }, + "value": "GET-PREREQ-storageAccountResourceId" + }, + "azureStorageAccountName": { + "type": "string", + "metadata": { + "description": "Azure Storage account name." + }, + "value": "GET-PREREQ-storageAccountName" + }, + "existingServerName": { + "type": "string", + "metadata": { + "description": "Azure SQL Server name." + }, + "value": "GET-PREREQ-serverName" + }, + "existingDatabaseName": { + "type": "string", + "metadata": { + "description": "Azure SQL Server DB name." + }, + "value": "GET-PREREQ-databaseName" + }, + "existingDataWarehouseName": { + "type": "string", + "metadata": { + "description": "Azure Data Warehouse name." + }, + "value": "GET-PREREQ-dataWarehouseName" + }, + "existingDatabaseAdminUsername": { + "type": "string", + "metadata": { + "description": "Azure SQL Server DB Admin Username" + }, + "value": "GET-PREREQ-databaseAdminUsername" + }, + "databaseAdminPassword": { + "type": "securestring", + "metadata": { + "description": "DB Password" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + } + }, + "variables": { + "azureStorageLinkedServiceName": "Tutorial4_AzureStorageLinkedService", + "azureSqlDatabaseLinkedServiceName": "Tutorial4_AzureSqlDatabaseLinkedService", + "azureSqlDataWareHouseLinkedServiceName": "Tutorial4_AzureSqlDataWarehouseLinkedService", + "inputDatasetName": "Tutorial4_InputSqlDataset", + "outputDatasetName": "Tutorial4_OutputSqlDataWarehouseDataset", + "pipelineName": "Tutorial2-CopyFromSqlToSqlDwPipeline", + "pipelineName2": "Tutorial2-TriggerCopyPipeline", + "leftBracket": "[", + "azureSqllDataWarehouseConnectionString": "[concat('Server=tcp:', parameters('existingServerName'), environment().suffixes.sqlServerHostname, ',1433;Initial Catalog=',parameters('existingDataWarehouseName'), ';Persist Security Info=False;User ID=', parameters('existingDatabaseAdminUsername'),parameters('databaseAdminPassword'),';Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]", + "azureSqlDatabaseConnectionString": "[concat('Server=tcp:', parameters('existingServerName'), environment().suffixes.sqlServerHostname, ',1433;Initial Catalog=',parameters('existingDatabaseName'), ';Persist Security Info=False;User ID=', parameters('existingDatabaseAdminUsername'),parameters('databaseAdminPassword'),';Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "apiVersion": "2018-06-01", + "type": "Microsoft.DataFactory/factories", + "location": "[resourceGroup().location]", + "properties": {}, + "resources": [ + { + "type": "linkedservices", + "name": "Tutorial4_AzureStorageLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": { + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('azureStorageAccountName'),';AccountKey=',listKeys(parameters('azureStorageAccountResourceId'), '2021-01-01').keys[0].value)]", + "type": "SecureString" + } + } + } + }, + { + "type": "linkedservices", + "name": "Tutorial4_AzureSqlDatabaseLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureSqlDatabase", + "description": "Azure SQL Database linked service", + "typeProperties": { + "connectionString": { + "value": "[variables('azureSqlDatabaseConnectionString')]", + "type": "SecureString" + } + } + } + }, + { + "type": "linkedservices", + "name": "azureSqlDataWarehouseLinkedServiceName", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureSqlDW", + "description": "Azure SQL Data Warehouse linked service", + "typeProperties": { + "connectionString": { + "value": "[variables('azureSqllDataWarehouseConnectionString')]", + "type": "SecureString" + } + } + } + }, + { + "name": "Tutorial4_InputSqlDataset", + "type": "datasets", + "apiVersion": "2018-06-01", + "properties": { + "linkedServiceName": { + "referenceName": "Tutorial4_AzureSqlDatabaseLinkedService", + "type": "LinkedServiceReference" + }, + "type": "AzureSqlTable", + "typeProperties": { + "tableName": "'dummy'" + } + }, + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial4_AzureSqlDatabaseLinkedService" + ] + }, + { + "name": "Tutorial4_OutputSqlDataWarehouseDataset", + "type": "datasets", + "apiVersion": "2018-06-01", + "properties": { + "linkedServiceName": { + "referenceName": "Tutorial4_AzureSqlDataWarehouseLinkedService", + "type": "LinkedServiceReference" + }, + "parameters": { + "DWTableName": { + "type": "string" + } + }, + "type": "AzureSqlDWTable", + "typeProperties": { + "tableName": { + "value": "@{dataset().DWTableName}", + "type": "Expression" + } + } + }, + "dependsOn": [ + "GEN-UNIQUE", + "azureSqlDataWarehouseLinkedServiceName" + ] + }, + { + "type": "pipelines", + "name": "Tutorial2-CopyFromSqlToSqlDwPipeline", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial4_InputSqlDataset", + "Tutorial4_OutputSqlDataWarehouseDataset" + ], + "apiVersion": "2018-06-01", + "properties": { + "activities": [ + { + "name": "IterateSQLTables", + "type": "ForEach", + "typeProperties": { + "items": { + "value": "@pipeline().parameters.tableList", + "type": "Expression" + }, + "activities": [ + { + "name": "CopyData", + "type": "Copy", + "typeProperties": { + "source": { + "type": "SqlSource", + "sqlReaderQuery": "SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]" + }, + "sink": { + "type": "SqlDWSink", + "allowPolyBase": true, + "writeBatchSize": 10000, + "preCopyScript": "TRUNCATE TABLE [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]", + "polyBaseSettings": { + "rejectValue": 0, + "rejectType": "value", + "useTypeDefault": false + } + }, + "enableStaging": true, + "stagingSettings": { + "linkedServiceName": { + "referenceName": "Tutorial4_AzureStorageLinkedService", + "type": "LinkedServiceReference" + } + }, + "cloudDataMovementUnits": 0 + }, + "inputs": [ + { + "referenceName": "Tutorial4_InputSqlDataset", + "type": "DatasetReference", + "parameters": {} + } + ], + "outputs": [ + { + "referenceName": "Tutorial4_OutputSqlDataWarehouseDataset", + "type": "DatasetReference", + "parameters": { + "DWTableName": "[concat(variables('leftBracket'), '@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]')]" + } + } + ] + } + ] + } + } + ], + "parameters": { + "tableList": { + "type": "Array" + } + } + } + }, + { + "name": "Tutorial2-TriggerCopyPipeline", + "type": "pipelines", + "apiVersion": "2018-06-01", + "properties": { + "activities": [ + { + "name": "LookupTableList", + "description": " Retrieve the table list from Azure SQL database", + "type": "Lookup", + "typeProperties": { + "source": { + "type": "SqlSource", + "sqlReaderQuery": "SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'SalesLT' and TABLE_NAME <> 'ProductModel'" + }, + "dataset": { + "referenceName": "Tutorial4_InputSqlDataset", + "type": "DatasetReference", + "parameters": {} + }, + "firstRowOnly": false + } + }, + { + "name": "TriggerCopy", + "type": "ExecutePipeline", + "dependsOn": [ + { + "activity": "LookupTableList", + "dependencyConditions": [ + "Succeeded" + ] + } + ], + "typeProperties": { + "pipeline": { + "referenceName": "Tutorial2-CopyFromSqlToSqlDwPipeline", + "type": "PipelineReference" + }, + "parameters": { + "tableList": "@activity('LookupTableList').output.value" + } + } + } + ] + }, + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial4_InputSqlDataset", + "Tutorial4_OutputSqlDataWarehouseDataset", + "Tutorial2-CopyFromSqlToSqlDwPipeline" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1224 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1224 new file mode 100644 index 0000000..775bbd6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1224 @@ -0,0 +1,230 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-blob-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962905706, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-blob-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1224", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories/linkedservices", + "microsoft.storage/storageaccounts/blobservices/containers", + "microsoft.datafactory/factories", + "microsoft.storage/storageaccounts", + "microsoft.datafactory/factories/datasets", + "microsoft.datafactory/factories/pipelines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1224", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "5138689633595887430" + } + }, + "parameters": { + "dataFactoryName": { + "type": "string", + "defaultValue": "[format('datafactory{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Data Factory Name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the data factory." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Azure storage account that contains the input/output data." + } + }, + "blobContainerName": { + "type": "string", + "defaultValue": "[format('blob{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + } + } + }, + "functions": [], + "variables": { + "dataFactoryLinkedServiceName": "ArmtemplateStorageLinkedService", + "dataFactoryDataSetInName": "ArmtemplateTestDatasetIn", + "dataFactoryDataSetOutName": "ArmtemplateTestDatasetOut", + "pipelineName": "ArmtemplateSampleCopyPipeline" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Storage/storageAccounts/blobServices/containers", + "apiVersion": "2021-04-01", + "name": "[format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName'))]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('storage{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.DataFactory/factories", + "apiVersion": "2018-06-01", + "name": "[format('datafactory{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + } + }, + { + "type": "Microsoft.DataFactory/factories/linkedservices", + "apiVersion": "2018-06-01", + "name": "[format('{0}/{1}', parameters('dataFactoryName'), variables('dataFactoryLinkedServiceName'))]", + "properties": { + "type": "AzureBlobStorage", + "typeProperties": { + "connectionString": "[format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}', parameters('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01').keys[0].value)]" + } + }, + "dependsOn": [ + "Microsoft.DataFactory/factories/[format('datafactory{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[format('storage{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.DataFactory/factories/datasets", + "apiVersion": "2018-06-01", + "name": "[format('{0}/{1}', parameters('dataFactoryName'), variables('dataFactoryDataSetInName'))]", + "properties": { + "linkedServiceName": { + "referenceName": "ArmtemplateStorageLinkedService", + "type": "LinkedServiceReference" + }, + "type": "Binary", + "typeProperties": { + "location": { + "type": "AzureBlobStorageLocation", + "container": "[format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName'))]", + "folderPath": "input", + "fileName": "emp.txt" + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', split(format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName')), '/')[0], split(format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName')), '/')[1], split(format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName')), '/')[2])]", + "Microsoft.DataFactory/factories/[format('datafactory{0}', uniqueString(resourceGroup().id))]", + "Microsoft.DataFactory/factories/linkedservices/[format('datafactory{0}', uniqueString(resourceGroup().id))]/ArmtemplateStorageLinkedService" + ] + }, + { + "type": "Microsoft.DataFactory/factories/datasets", + "apiVersion": "2018-06-01", + "name": "[format('{0}/{1}', parameters('dataFactoryName'), variables('dataFactoryDataSetOutName'))]", + "properties": { + "linkedServiceName": { + "referenceName": "ArmtemplateStorageLinkedService", + "type": "LinkedServiceReference" + }, + "type": "Binary", + "typeProperties": { + "location": { + "type": "AzureBlobStorageLocation", + "container": "[format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName'))]", + "folderPath": "output" + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', split(format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName')), '/')[0], split(format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName')), '/')[1], split(format('{0}/default/{1}', parameters('storageAccountName'), parameters('blobContainerName')), '/')[2])]", + "Microsoft.DataFactory/factories/[format('datafactory{0}', uniqueString(resourceGroup().id))]", + "Microsoft.DataFactory/factories/linkedservices/[format('datafactory{0}', uniqueString(resourceGroup().id))]/ArmtemplateStorageLinkedService" + ] + }, + { + "type": "Microsoft.DataFactory/factories/pipelines", + "apiVersion": "2018-06-01", + "name": "[format('{0}/{1}', parameters('dataFactoryName'), variables('pipelineName'))]", + "properties": { + "activities": [ + { + "name": "MyCopyActivity", + "type": "Copy", + "policy": { + "timeout": "7.00:00:00", + "retry": 0, + "retryIntervalInSeconds": 30, + "secureOutput": false, + "secureInput": false + }, + "typeProperties": { + "source": { + "type": "BinarySource", + "storeSettings": { + "type": "AzureBlobStorageReadSettings", + "recursive": true + } + }, + "sink": { + "type": "BinarySink", + "storeSettings": { + "type": "AzureBlobStorageWriterSettings" + } + }, + "enableStaging": false + }, + "inputs": [ + { + "referenceName": "ArmtemplateTestDatasetIn", + "type": "DatasetReference" + } + ], + "outputs": [ + { + "referenceName": "ArmtemplateTestDatasetOut", + "type": "DatasetReference" + } + ] + } + ] + }, + "dependsOn": [ + "Microsoft.DataFactory/factories/[format('datafactory{0}', uniqueString(resourceGroup().id))]", + "Microsoft.DataFactory/factories/datasets/[format('datafactory{0}', uniqueString(resourceGroup().id))]/ArmtemplateTestDatasetIn", + "Microsoft.DataFactory/factories/datasets/[format('datafactory{0}', uniqueString(resourceGroup().id))]/ArmtemplateTestDatasetOut" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1225 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1225 new file mode 100644 index 0000000..f79394f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1225 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905713, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1225", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.dbformysql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1225", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serverUsername": { + "type": "string", + "metadata": { + "description": "Username for MySQL Server" + }, + "value": "GEN-UNIQUE-16" + }, + "serverPassword": { + "type": "securestring", + "metadata": { + "description": "Password for MySQL Server" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]", + "serverName": "[concat('server', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "comments": "Storage account ", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.DBforMySQL/servers", + "location": "[resourceGroup().location]", + "name": "[variables('serverName')]", + "properties": { + "version": "5.7", + "administratorLogin": "GEN-UNIQUE-16", + "administratorLoginPassword": "serverPassword", + "storageProfile": { + "storageMB": 51200, + "backupRetentionDays": 7, + "geoRedundantBackup": "Disabled" + } + }, + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": "51200", + "family": "Gen5" + }, + "resources": [ + { + "type": "firewallRules", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "name": "AllowAllAzure", + "dependsOn": [ + "[resourceId('Microsoft.DBforMySQL/servers', variables('serverName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + } + ], + "outputs": { + "storageAccountResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "serverResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.DBforMySQL/servers', variables('serverName'))]" + }, + "serverUsername": { + "type": "string", + "value": "[concat(parameters('serverUsername'), '@', variables('serverName') )]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1226 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1226 new file mode 100644 index 0000000..f93fe9d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1226 @@ -0,0 +1,264 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962905719, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-mysql-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1226", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1226", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dataFactoryName": { + "type": "string", + "defaultValue": "[uniquestring(resourceGroup().id)]", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the data factory." + } + }, + "storageAccountResourceId": { + "type": "string", + "metadata": { + "description": "Resource ID of Source Azure Storage account." + }, + "value": "GET-PREREQ-storageAccountResourceId" + }, + "blobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + }, + "value": "adftutorial" + }, + "inputBlobFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that has the input file." + }, + "value": "input" + }, + "inputBlobName": { + "type": "string", + "metadata": { + "description": "Name of the input file/blob." + }, + "value": "employee.txt" + }, + "mysqlResourceId": { + "type": "string", + "metadata": { + "description": "Resource ID of target Azure Database for MySQL Server." + }, + "value": "GET-PREREQ-serverResourceId" + }, + "mysqlUserName": { + "type": "string", + "metadata": { + "description": "UserName of the target Azure Database for MySQL Server." + }, + "value": "GET-PREREQ-serverUsername" + }, + "mysqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password of the target Azure Database for MySQL Server." + } + }, + "mysqlDatabase": { + "type": "string", + "metadata": { + "description": "Name of the target database in the Azure Database for MySQL." + }, + "value": "employee" + }, + "mysqlTableName": { + "type": "string", + "metadata": { + "description": "Name of the target table in the Azure Database for MySQL." + }, + "value": "employee" + } + }, + "variables": { + "azureStorageLinkedServiceName": "Tutorial2-AzureStorageLinkedService", + "azureMySqlDatabaseLinkedServiceName": "Tutorial2-AzureMySqlDatabaseLinkedService", + "inputDatasetName": "Tutorial2_InputBlobDataset", + "outputDatasetName": "Tutorial2_OutputMySqlDataset", + "pipelineName": "Tutorial2-CopyFromBlobToMySqlPipeline" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "apiVersion": "2018-06-01", + "type": "Microsoft.DataFactory/factories", + "location": "[resourceGroup().location]", + "properties": {}, + "resources": [ + { + "type": "linkedservices", + "name": "Tutorial2-AzureStorageLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": { + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', split(split(reference(parameters('storageAccountResourceId'), '2019-04-01').primaryEndpoints.blob, '/')[2], '.')[0], ';AccountKey=', listKeys(parameters('storageAccountResourceId'), '2019-04-01').keys[0].value)]", + "type": "SecureString" + } + } + } + }, + { + "type": "linkedservices", + "name": "Tutorial2-AzureMySqlDatabaseLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureMySql", + "description": "Azure Database for MySQL linked service", + "typeProperties": { + "connectionString": { + "value": "[concat('Server=', reference(parameters('mysqlResourceId'), '2017-12-01').fullyQualifiedDomainName, ';Port=3306;Database=' ,parameters('mysqlDatabase'), ';UID=', parameters('mysqlUserName'), ';PWD=', parameters('mysqlPassword'), ';SslMode=Preferred;')]", + "type": "SecureString" + } + } + } + }, + { + "type": "datasets", + "name": "Tutorial2_InputBlobDataset", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2-AzureStorageLinkedService" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureBlob", + "structure": [ + { + "name": "firstname", + "type": "string" + }, + { + "name": "lastname", + "type": "string" + } + ], + "typeProperties": { + "format": { + "type": "TextFormat", + "columnDelimiter": ",", + "nullValue": "\\N", + "treatEmptyAsNull": false, + "firstRowAsHeader": false + }, + "folderPath": "adftutorial/input/", + "fileName": "employee.txt" + }, + "linkedServiceName": { + "referenceName": "Tutorial2-AzureStorageLinkedService", + "type": "LinkedServiceReference" + } + } + }, + { + "type": "datasets", + "name": "Tutorial2_OutputMySqlDataset", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2-AzureMySqlDatabaseLinkedService" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureMySqlTable", + "typeProperties": { + "tableName": "employee" + }, + "linkedServiceName": { + "referenceName": "Tutorial2-AzureMySqlDatabaseLinkedService", + "type": "LinkedServiceReference" + } + } + }, + { + "type": "pipelines", + "name": "Tutorial2-CopyFromBlobToMySqlPipeline", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2_InputBlobDataset", + "Tutorial2_OutputMySqlDataset" + ], + "apiVersion": "2018-06-01", + "properties": { + "activities": [ + { + "type": "Copy", + "typeProperties": { + "source": { + "type": "BlobSource", + "recursive": true + }, + "sink": { + "type": "AzureMySqlSink", + "writeBatchSize": 10000 + } + }, + "name": "MyCopyActivity", + "inputs": [ + { + "referenceName": "Tutorial2_InputBlobDataset", + "type": "DatasetReference" + } + ], + "outputs": [ + { + "referenceName": "Tutorial2_OutputMySqlDataset", + "type": "DatasetReference" + } + ] + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1227 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1227 new file mode 100644 index 0000000..fd3aba1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1227 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905725, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1227", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1227", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serverUsername": { + "type": "string", + "metadata": { + "description": "Username for PG Server" + }, + "value": "GEN-UNIQUE" + }, + "serverPassword": { + "type": "securestring", + "metadata": { + "description": "Password for PG Server" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]", + "serverName": "[concat('server', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "comments": "Storage account ", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.DBforPostgreSQL/servers", + "location": "[resourceGroup().location]", + "name": "[variables('serverName')]", + "properties": { + "version": "10.0", + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "serverPassword", + "storageProfile": { + "storageMB": 51200, + "backupRetentionDays": 7, + "geoRedundantBackup": "Disabled" + } + }, + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": "51200", + "family": "Gen5" + }, + "resources": [ + { + "type": "firewallRules", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "name": "AllowAllAzure", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', variables('serverName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + } + ], + "outputs": { + "storageAccountResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "serverResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.DBforPostgreSQL/servers', variables('serverName'))]" + }, + "serverUsername": { + "type": "string", + "value": "[concat(parameters('serverUsername'), '@', variables('serverName') )]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1228 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1228 new file mode 100644 index 0000000..1dde9b2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1228 @@ -0,0 +1,267 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962905732, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-postgresql-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1228", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1228", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dataFactoryName": { + "type": "string", + "defaultValue": "[uniquestring(resourceGroup().id)]", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the data factory." + } + }, + "storageAccountResourceId": { + "type": "string", + "metadata": { + "description": "Resource ID of Source Azure Storage account." + }, + "value": "GET-PREREQ-storageAccountResourceId" + }, + "blobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + }, + "value": "adftutorial" + }, + "inputBlobFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that has the input file." + }, + "value": "input" + }, + "inputBlobName": { + "type": "string", + "metadata": { + "description": "Name of the input file/blob." + }, + "value": "employee.txt" + }, + "postgreSqlResourceId": { + "type": "string", + "metadata": { + "description": "Resource ID of target Azure Database for PostgreSQL Server." + }, + "value": "GET-PREREQ-serverResourceId" + }, + "postgreSqlUserName": { + "type": "string", + "metadata": { + "description": "UserName of the target Azure Database for PostgreSQL Server." + }, + "value": "GET-PREREQ-serverUsername" + }, + "postgreSqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password of the target Azure Database for PostgreSQL Server." + } + }, + "postgreSqlDatabase": { + "type": "string", + "defaultValue": "postgres", + "metadata": { + "description": "Name of the target database in the Azure Database for PostgreSQL." + }, + "value": "postgres" + }, + "postgreSqlTableName": { + "type": "string", + "metadata": { + "description": "Name of the target table in the Azure Database for PostgreSQL." + } + }, + "postgresqlTableName": { + "value": "public.employee" + } + }, + "variables": { + "azureStorageLinkedServiceName": "Tutorial2-AzureStorageLinkedService", + "azurePostgreSqlDatabaseLinkedServiceName": "Tutorial2-AzurePostgreSqlDatabaseLinkedService", + "inputDatasetName": "Tutorial2_InputBlobDataset", + "outputDatasetName": "Tutorial2_OutputPostgreSqlDataset", + "pipelineName": "Tutorial2-CopyFromBlobToPostgreSqlPipeline" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "apiVersion": "2018-06-01", + "type": "Microsoft.DataFactory/factories", + "location": "[resourceGroup().location]", + "properties": {}, + "resources": [ + { + "type": "linkedservices", + "name": "Tutorial2-AzureStorageLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": { + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', split(split(reference(parameters('storageAccountResourceId'), '2019-04-01').primaryEndpoints.blob, '/')[2], '.')[0], ';AccountKey=', listKeys(parameters('storageAccountResourceId'), '2019-04-01').keys[0].value)]", + "type": "SecureString" + } + } + } + }, + { + "type": "linkedservices", + "name": "Tutorial2-AzurePostgreSqlDatabaseLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzurePostgreSql", + "description": "Azure Database for PostgreSQL linked service", + "typeProperties": { + "connectionString": { + "value": "[concat('Server=', reference(parameters('postgreSqlResourceId'), '2017-12-01').fullyQualifiedDomainName, ';Port=5432;Database=' ,parameters('postgreSqlDatabase'), ';UID=', parameters('postgreSqlUserName'), ';Password=', parameters('postgreSqlPassword'), ';SSL Mode=Require')]", + "type": "SecureString" + } + } + } + }, + { + "type": "datasets", + "name": "Tutorial2_InputBlobDataset", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2-AzureStorageLinkedService" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureBlob", + "structure": [ + { + "name": "firstname", + "type": "string" + }, + { + "name": "lastname", + "type": "string" + } + ], + "typeProperties": { + "format": { + "type": "TextFormat", + "columnDelimiter": ",", + "nullValue": "\\N", + "treatEmptyAsNull": false, + "firstRowAsHeader": false + }, + "folderPath": "adftutorial/input/", + "fileName": "employee.txt" + }, + "linkedServiceName": { + "referenceName": "Tutorial2-AzureStorageLinkedService", + "type": "LinkedServiceReference" + } + } + }, + { + "type": "datasets", + "name": "Tutorial2_OutputPostgreSqlDataset", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2-AzurePostgreSqlDatabaseLinkedService" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzurePostgreSqlTable", + "typeProperties": { + "tableName": "postgreSqlTableName" + }, + "linkedServiceName": { + "referenceName": "Tutorial2-AzurePostgreSqlDatabaseLinkedService", + "type": "LinkedServiceReference" + } + } + }, + { + "type": "pipelines", + "name": "Tutorial2-CopyFromBlobToPostgreSqlPipeline", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2_InputBlobDataset", + "Tutorial2_OutputPostgreSqlDataset" + ], + "apiVersion": "2018-06-01", + "properties": { + "activities": [ + { + "type": "Copy", + "typeProperties": { + "source": { + "type": "BlobSource", + "recursive": true + }, + "sink": { + "type": "AzurePostgreSqlSink", + "writeBatchSize": 10000 + } + }, + "name": "MyCopyActivity", + "inputs": [ + { + "referenceName": "Tutorial2_InputBlobDataset", + "type": "DatasetReference" + } + ], + "outputs": [ + { + "referenceName": "Tutorial2_OutputPostgreSqlDataset", + "type": "DatasetReference" + } + ] + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1229 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1229 new file mode 100644 index 0000000..4c29219 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1229 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905743, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1229", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1229", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "databaseAdminUsername": { + "type": "string", + "metadata": { + "description": "Username for DB Admin" + }, + "value": "GEN-UNIQUE" + }, + "databaseAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for DB Admin" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]", + "serverName": "[concat('server', uniqueString(resourceGroup().id))]", + "databaseName": "DB", + "databaseCollation": "SQL_Latin1_General_CP1_CI_AS", + "databaseEdition": "Basic", + "databaseRequestedServiceObjectiveName": "Basic" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2016-01-01", + "location": "[resourceGroup().location]", + "comments": "Storage account ", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "name": "[variables('serverName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2014-04-01-preview", + "dependsOn": [], + "tags": { + "displayName": "server" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "East US", + "apiVersion": "2014-04-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "DB", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2014-04-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "tags": { + "displayName": "database" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + } + ] + } + ], + "outputs": { + "AzureStorage_connectionString": { + "type": "securestring", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2016-01-01').keys[0].value)]" + }, + "AzureSqlDatabase_connectionString": { + "type": "securestring", + "value": "[concat('Server=tcp:', variables('serverName'),'.database.windows.net,1433;Initial Catalog=',variables('databaseName'), ';Persist Security Info=False;User ID=', parameters('databaseAdminUsername'), ';Password=', parameters('databaseAdminPassword'), ';Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT123 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT123 new file mode 100644 index 0000000..af81c7e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT123 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-4disk-resources.json" + ], + "timestamp": 1642962887214, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-4disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT123", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT123", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountNameAFS": "storageSettings", + "vmName": "namespace-vm" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "es-data-set", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformUpdateDomainCount": 20, + "platformFaultDomainCount": 3 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespace-niccopyindex()", + "location": "location", + "copy": { + "name": "namespacenicLoop", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + }, + "loadBalancerBackendAddressPools": "lbBackendPools" + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespace-vmcopyindex()", + "location": "location", + "copy": { + "name": "namespacevirtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/namespace-niccopyindex()", + "Microsoft.Compute/availabilitySets/es-data-set" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/es-data-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "data-vmcopyIndex()", + "adminUsername": "adminUsername", + "adminPassword": "authSet", + "linuxConfiguration": "osSettings" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespace-vmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "namespace-vmcopyindex()_DataDisk1", + "diskSizeGB": 1023, + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 1, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 2, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 3, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespace-niccopyindex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "installelasticsearch", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/namespace-vmcopyindex()" + ], + "properties": { + "publisher": "osSettings", + "type": "osSettings", + "typeHandlerVersion": "osSettings", + "settings": { + "fileUris": "osSettings", + "commandToExecute": "[concat(parameters('osSettings').extensionSettings.data.settings.commandToExecute, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountNameAFS')), '2021-01-01').keys[0].value)]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1230 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1230 new file mode 100644 index 0000000..bb8febd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1230 @@ -0,0 +1,260 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962905754, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-blob-to-sql-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1230", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1230", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dataFactoryName": { + "type": "string", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "dataFactoryLocation": { + "type": "string", + "allowedValues": [ + "East US", + "East US 2", + "West Europe", + "Southeast Asia" + ], + "defaultValue": "East US", + "metadata": { + "description": "Location of the data factory." + }, + "value": "East US" + }, + "AzureStorage_connectionString": { + "type": "securestring", + "metadata": { + "description": "Connection string for the Azure Storage account." + }, + "value": "GET-PREREQ-AzureStorage_connectionString" + }, + "blobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + }, + "value": "adftutorial" + }, + "inputBlobFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container that has the input file." + }, + "value": "input" + }, + "inputBlobName": { + "type": "string", + "metadata": { + "description": "Name of the input file/blob." + }, + "value": "emp.txt" + }, + "AzureSqlDatabase_connectionString": { + "type": "string", + "metadata": { + "description": "Connnection string for the Azure SQL database." + }, + "value": "GET-PREREQ-AzureSqlDatabase_connectionString" + }, + "sqlTableName": { + "type": "string", + "metadata": { + "description": "Name of the target table in the Azure SQL database." + }, + "value": "[dbo].[emp]" + } + }, + "variables": { + "azureStorageLinkedServiceName": "Tutorial2-AzureStorageLinkedService", + "azureSqlDatabaseLinkedServiceName": "Tutorial2-AzureSqlDatabaseLinkedService", + "inputDatasetName": "Tutorial2-InputBlobDataset", + "outputDatasetName": "Tutorial2-OutputSqlDataset", + "pipelineName": "Tutorial2-CopyFromBlobToSqlPipeline" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "apiVersion": "2017-09-01-preview", + "type": "Microsoft.DataFactory/factories", + "location": "East US", + "properties": {}, + "resources": [ + { + "type": "linkedservices", + "name": "Tutorial2-AzureStorageLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2017-09-01-preview", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": { + "value": "GET-PREREQ-AzureStorage_connectionString", + "type": "SecureString" + } + } + } + }, + { + "type": "linkedservices", + "name": "Tutorial2-AzureSqlDatabaseLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2017-09-01-preview", + "properties": { + "type": "AzureSqlDatabase", + "description": "Azure SQL Database linked service", + "typeProperties": { + "connectionString": { + "value": "GET-PREREQ-AzureSqlDatabase_connectionString", + "type": "SecureString" + } + } + } + }, + { + "type": "datasets", + "name": "Tutorial2-InputBlobDataset", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2-AzureStorageLinkedService" + ], + "apiVersion": "2017-09-01-preview", + "properties": { + "type": "AzureBlob", + "structure": [ + { + "name": "Prop_0", + "type": "string" + }, + { + "name": "Prop_1", + "type": "string" + } + ], + "typeProperties": { + "format": { + "type": "TextFormat", + "columnDelimiter": ",", + "nullValue": "\\N", + "treatEmptyAsNull": false, + "firstRowAsHeader": false + }, + "folderPath": "adftutorial/input/", + "fileName": "emp.txt" + }, + "linkedServiceName": { + "referenceName": "Tutorial2-AzureStorageLinkedService", + "type": "LinkedServiceReference" + } + } + }, + { + "type": "datasets", + "name": "Tutorial2-OutputSqlDataset", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2-AzureSqlDatabaseLinkedService" + ], + "apiVersion": "2017-09-01-preview", + "properties": { + "type": "AzureSqlTable", + "structure": [ + { + "name": "FirstName", + "type": "string" + }, + { + "name": "LastName", + "type": "string" + } + ], + "typeProperties": { + "tableName": "[dbo].[emp]" + }, + "linkedServiceName": { + "referenceName": "Tutorial2-AzureSqlDatabaseLinkedService", + "type": "LinkedServiceReference" + } + } + }, + { + "type": "pipelines", + "name": "Tutorial2-CopyFromBlobToSqlPipeline", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial2-InputBlobDataset", + "Tutorial2-OutputSqlDataset" + ], + "apiVersion": "2017-09-01-preview", + "properties": { + "activities": [ + { + "type": "Copy", + "typeProperties": { + "source": { + "type": "BlobSource", + "recursive": true + }, + "sink": { + "type": "SqlSink", + "writeBatchSize": 10000 + } + }, + "name": "MyCopyActivity", + "inputs": [ + { + "referenceName": "Tutorial2-InputBlobDataset", + "type": "DatasetReference" + } + ], + "outputs": [ + { + "referenceName": "Tutorial2-OutputSqlDataset", + "type": "DatasetReference" + } + ] + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1231 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1231 new file mode 100644 index 0000000..efbb087 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1231 @@ -0,0 +1,61 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-create/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962905762, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-create/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1231", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1231", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "defaultValue": "myv2datafactory", + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for your data factory" + } + } + }, + "resources": [ + { + "apiVersion": "2018-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "type": "Microsoft.DataFactory/factories", + "identity": { + "type": "SystemAssigned" + }, + "properties": {} + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1232 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1232 new file mode 100644 index 0000000..1f6d348 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1232 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905771, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1232", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1232", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "comments": "Storage account ", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1233 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1233 new file mode 100644 index 0000000..3f8fb33 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1233 @@ -0,0 +1,242 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962905779, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-onprem-sql-to-blob-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1233", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1233", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dataFactoryName": { + "type": "string", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "dataFactoryLocation": { + "type": "string", + "allowedValues": [ + "East US", + "East US 2", + "West Europe", + "Southeast Asia" + ], + "metadata": { + "description": "Location of the data factory." + }, + "value": "East US" + }, + "onPremSqlServerConnectionString": { + "type": "string", + "metadata": { + "description": "Connnection string for the on-premsies SQL Server database." + }, + "value": "GEN-UNIQUE" + }, + "sqlTableName": { + "type": "string", + "metadata": { + "description": "Name of the target table in the Azure SQL database." + }, + "value": "[dbo].[emp]" + }, + "blobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + }, + "value": "adftutorial" + }, + "outputBlobFolder": { + "type": "string", + "metadata": { + "description": "The folder in the blob container to which the data is copied." + }, + "value": "fromonpremsql" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage AccountName" + }, + "value": "GET-PREREQ-storageAccountName" + } + }, + "variables": { + "azureStorageLinkedServiceName": "Tutorial3-AzureStorageLinkedService", + "selfHostedIRName": "Tutorial3-SelfHostedIR", + "onPremSqlServerLinkedServiceName": "Tutorial3-OnPremSqlServerLinkedService", + "inputDatasetName": "Tutorial3-InputBlobDataset", + "outputDatasetName": "Tutorial3-OutputSqlDataset", + "pipelineName": "Tutorial3-CopyFromOnPremSqlToBlobPipeline", + "storageAccountId": "Microsoft.Storage/storageAccounts/GET-PREREQ-storageAccountName" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "apiVersion": "2018-06-01", + "type": "Microsoft.DataFactory/factories", + "location": "East US", + "properties": {}, + "resources": [ + { + "type": "linkedservices", + "name": "Tutorial3-AzureStorageLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": { + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(variables('storageAccountId'), '2021-01-01').keys[0].value)]", + "type": "SecureString" + } + } + } + }, + { + "name": "Tutorial3-SelfHostedIR", + "type": "integrationRuntimes", + "apiVersion": "2018-06-01", + "properties": { + "type": "SelfHosted" + }, + "dependsOn": [ + "GEN-UNIQUE" + ] + }, + { + "name": "Tutorial3-OnPremSqlServerLinkedService", + "type": "linkedServices", + "apiVersion": "2018-06-01", + "properties": { + "type": "SqlServer", + "typeProperties": { + "connectionString": { + "type": "SecureString", + "value": "GEN-UNIQUE" + } + }, + "connectVia": { + "referenceName": "Tutorial3-SelfHostedIR", + "type": "IntegrationRuntimeReference" + } + }, + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial3-SelfHostedIR" + ] + }, + { + "name": "Tutorial3-InputBlobDataset", + "type": "datasets", + "apiVersion": "2018-06-01", + "properties": { + "linkedServiceName": { + "referenceName": "Tutorial3-OnPremSqlServerLinkedService", + "type": "LinkedServiceReference" + }, + "type": "SqlServerTable", + "typeProperties": { + "tableName": "[dbo].[emp]" + } + }, + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial3-OnPremSqlServerLinkedService" + ] + }, + { + "name": "Tutorial3-OutputSqlDataset", + "type": "datasets", + "apiVersion": "2018-06-01", + "properties": { + "linkedServiceName": { + "referenceName": "Tutorial3-AzureStorageLinkedService", + "type": "LinkedServiceReference" + }, + "type": "AzureBlob", + "typeProperties": { + "fileName": "@CONCAT(pipeline().RunId, '.txt')", + "folderPath": "adftutorial\\fromonpremsql" + } + }, + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial3-AzureStorageLinkedService" + ] + }, + { + "type": "pipelines", + "name": "Tutorial3-CopyFromOnPremSqlToBlobPipeline", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial3-InputBlobDataset", + "Tutorial3-OutputSqlDataset" + ], + "apiVersion": "2018-06-01", + "properties": { + "activities": [ + { + "type": "Copy", + "typeProperties": { + "source": { + "type": "BlobSource", + "recursive": true + }, + "sink": { + "type": "SqlSink", + "writeBatchSize": 10000 + } + }, + "name": "MyCopyActivity", + "inputs": [ + { + "referenceName": "Tutorial3-InputBlobDataset", + "type": "DatasetReference" + } + ], + "outputs": [ + { + "referenceName": "Tutorial3-OutputSqlDataset", + "type": "DatasetReference" + } + ] + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1234 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1234 new file mode 100644 index 0000000..4a93fa8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1234 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905790, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1234", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1234", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "databaseAdminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the Azure SQL server." + }, + "value": "GEN-UNIQUE" + }, + "databaseAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the Azure SQL user." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "virtualNetworkName": "[concat('VNet', uniqueString(resourceGroup().id))]", + "subnetName": "default", + "serverName": "[concat('server', uniqueString(resourceGroup().id))]", + "databaseName": "DB", + "databaseCollation": "SQL_Latin1_General_CP1_CI_AS", + "databaseEdition": "Basic", + "databaseRequestedServiceObjectiveName": "Basic" + }, + "resources": [ + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "[variables('serverName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "tags": { + "displayName": "server" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "databaseAdminPassword" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "DB", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "tags": { + "displayName": "database" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + } + ] + } + ], + "outputs": { + "azure-sql-server-name": { + "type": "string", + "value": "[variables('serverName')]" + }, + "sql-admin-user": { + "type": "string", + "value": "[parameters('databaseAdminUsername')]" + }, + "virtual-network-name": { + "type": "string", + "value": "[variables('virtualNetworkName')]" + }, + "virtual-network-subnet-name": { + "type": "string", + "value": "[variables('subnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1235 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1235 new file mode 100644 index 0000000..4b1c175 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1235 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/azuredeploy.parameters.json" + ], + "timestamp": 1642962905802, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-provision-ssis-runtime/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1235", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1235", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dataFactoryName": { + "type": "string", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the data factory." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of your Azure virtual network." + }, + "value": "GET-PREREQ-virtual-network-name" + }, + "subNetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet in the virtual network." + }, + "value": "GET-PREREQ-virtual-network-subnet-name" + }, + "nodeSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Location of the data factory." + } + }, + "nodeNumber": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of nodes in the cluster." + } + }, + "maximumParallelExecutionsPerNode": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Maximum number of parallel executions per node in the cluster." + } + }, + "azureSqlServerName": { + "type": "string", + "metadata": { + "description": "Name of the Azure SQL server that hosts the SSISDB database (SSIS Catalog)." + }, + "value": "GET-PREREQ-azure-sql-server-name" + }, + "databaseAdminUsername": { + "type": "string", + "metadata": { + "description": "Name of the Azure SQL database user." + }, + "value": "GET-PREREQ-sql-admin-user" + }, + "databaseAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the database user." + } + }, + "catalogPricingTier": { + "type": "string", + "defaultValue": "Basic", + "metadata": { + "description": "Pricing tier of the SSIS Catalog (SSISDB datbase)" + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "apiVersion": "2018-06-01", + "type": "Microsoft.DataFactory/factories", + "location": "[resourceGroup().location]", + "properties": {}, + "resources": [ + { + "name": "GEN-UNIQUE/SPAzureSsisIR", + "type": "Microsoft.DataFactory/factories/integrationRuntimes", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "Managed", + "typeProperties": { + "computeProperties": { + "location": "[resourceGroup().location]", + "nodeSize": "Standard_D2_v3", + "numberOfNodes": 1, + "maxParallelExecutionsPerNode": 1, + "vNetProperties": { + "vNetId": "Microsoft.Network/virtualNetworks/GET-PREREQ-virtual-network-name", + "subnet": "GET-PREREQ-virtual-network-subnet-name" + } + }, + "ssisProperties": { + "catalogInfo": { + "catalogServerEndpoint": "GET-PREREQ-azure-sql-server-name", + "catalogAdminUserName": "GET-PREREQ-sql-admin-user", + "catalogAdminPassword": { + "type": "SecureString", + "value": "databaseAdminPassword" + }, + "catalogPricingTier": "Basic" + } + } + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1236 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1236 new file mode 100644 index 0000000..1caec6c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1236 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962905816, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1236", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1236", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2016-01-01", + "location": "[resourceGroup().location]", + "comments": "Storage account ", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + } + ], + "outputs": { + "AzureStorage_connectionString": { + "type": "securestring", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2016-01-01').keys[0].value)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1237 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1237 new file mode 100644 index 0000000..01d03f1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1237 @@ -0,0 +1,181 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/azuredeploy.parameters.json" + ], + "timestamp": 1642962905825, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/azuredeploy.json", + "/quickstarts/microsoft.datafactory/data-factory-v2-transform-using-spark/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1237", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1237", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dataFactoryName": { + "type": "string", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "dataFactoryLocation": { + "type": "string", + "allowedValues": [ + "East US", + "East US 2", + "West Europe", + "Southeast Asia" + ], + "defaultValue": "East US", + "metadata": { + "description": "Location of the data factory. Currently, only East US and East US 2 are supported. " + }, + "value": "East US" + }, + "azureStorageConnectionString": { + "type": "string", + "metadata": { + "description": "Connection string for the Azure Storage account." + }, + "value": "GET-PREREQ-AzureStorage_connectionString" + }, + "servicePrincipalId": { + "type": "string", + "metadata": { + "description": "The ID of the service principal that has permissions to create HDInsight clusters in your subscription." + }, + "value": "" + }, + "servicePrincipalKey": { + "type": "string", + "metadata": { + "description": "The access key of the service principal that has permissions to create HDInsight clusters in your subscription." + }, + "value": "" + } + }, + "variables": { + "azureStorageLinkedServiceName": "Tutorial4_AzureStorageLinkedService", + "onDemandHDInsightLinkedServiceName": "Tutorial4_OnDemandHDInsightLinkedService", + "pipelineName": "Tutorial4_SparkPipeline", + "scriptRootPath": "adftutorial/spark/script", + "entryFilePath": "WordCount_Spark.py" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "apiVersion": "2017-09-01-preview", + "type": "Microsoft.DataFactory/factories", + "location": "East US", + "properties": {}, + "resources": [ + { + "type": "linkedservices", + "name": "Tutorial4_AzureStorageLinkedService", + "dependsOn": [ + "GEN-UNIQUE" + ], + "apiVersion": "2017-09-01-preview", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": { + "value": "GET-PREREQ-AzureStorage_connectionString", + "type": "SecureString" + } + } + } + }, + { + "type": "linkedservices", + "name": "Tutorial4_OnDemandHDInsightLinkedService", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial4_AzureStorageLinkedService" + ], + "apiVersion": "2017-09-01-preview", + "properties": { + "type": "HDInsightOnDemand", + "typeProperties": { + "clusterType": "spark", + "clusterSize": 4, + "timeToLive": "00:05:00", + "clusterResourceGroup": "[resourceGroup().name]", + "tenant": "[subscription().tenantId]", + "sparkVersion": "", + "servicePrincipalId": "", + "servicePrincipalKey": { + "type": "SecureString", + "value": "" + }, + "linkedServiceName": { + "referenceName": "Tutorial4_AzureStorageLinkedService", + "type": "LinkedServiceReference" + } + } + } + }, + { + "type": "pipelines", + "name": "Tutorial4_SparkPipeline", + "dependsOn": [ + "GEN-UNIQUE", + "Tutorial4_AzureStorageLinkedService", + "Tutorial4_OnDemandHDInsightLinkedService" + ], + "apiVersion": "2017-09-01-preview", + "properties": { + "activities": [ + { + "name": "MySparkActivity", + "type": "HDInsightSpark", + "dependsOn": [], + "policy": { + "timeout": "7.00:00:00", + "retry": 0, + "retryIntervalInSeconds": 30 + }, + "typeProperties": { + "rootPath": "adftutorial/spark/script", + "entryFilePath": "WordCount_Spark.py", + "arguments": [], + "sparkJobLinkedService": { + "referenceName": "Tutorial4_AzureStorageLinkedService", + "type": "LinkedServiceReference" + } + }, + "linkedServiceName": { + "referenceName": "Tutorial4_OnDemandHDInsightLinkedService", + "type": "LinkedServiceReference" + } + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1238 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1238 new file mode 100644 index 0000000..6ba99b5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1238 @@ -0,0 +1,67 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/templates/install-mongo.json" + ], + "timestamp": 1642962905840, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/templates/install-mongo.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1238", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1238", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "mongoinstalluri": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/configuremongo", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "mongoinstalluri" + ], + "commandToExecute": "sh mongo-install-ubuntu.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1239 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1239 new file mode 100644 index 0000000..252615d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1239 @@ -0,0 +1,260 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/azuredeploy.json", + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/azuredeploy.parameters.json" + ], + "timestamp": 1642962905863, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/azuredeploy.json", + "/quickstarts/microsoft.datafactory/dependency-between-scripts-using-extensions/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1239", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1239", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "This is the unique DNS name of the for the public IP for your VM" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "This is the username you wish to assign to your VMs admin account" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VM" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "imagePublisher": "Canonical", + "imageVersion": "latest", + "imageSKU": "18.04-LTS", + "imageOffer": "UbuntuServer", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "publicIPAddressName": "myPublicIP", + "storageAccountType": "StandardSSD_LRS", + "vmName": "myVM", + "virtualNetworkName": "myVNET", + "nicName": "myVMNic", + "subnetID": "Microsoft.Network/virtualNetworks/subnets//myVNET/Subnet-1" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//myVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//myVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "myVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "patchSettings": { + "patchMode": "ImageDefault" + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myVM/configuremongo", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//myVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/mongo-configure-ubuntu.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh mongo-configure-ubuntu.sh" + } + } + }, + { + "name": "installmongo", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-08-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions//myVM/configuremongo" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('templates/install-mongo.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "myVM" + }, + "mongoinstalluri": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/mongo-install-ubuntu.sh', parameters('_artifactsLocationSasToken')))]" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT124 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT124 new file mode 100644 index 0000000..1b9c70d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT124 @@ -0,0 +1,271 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-8disk-resources.json" + ], + "timestamp": 1642962887246, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-8disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT124", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT124", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountNameAFS": "storageSettings", + "vmName": "namespace-vm" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "es-data-set", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformUpdateDomainCount": 20, + "platformFaultDomainCount": 3 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespace-niccopyindex()", + "location": "location", + "copy": { + "name": "namespacenicLoop", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + }, + "loadBalancerBackendAddressPools": "lbBackendPools" + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespace-vmcopyindex()", + "location": "location", + "copy": { + "name": "namespacevirtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/namespace-niccopyindex()", + "Microsoft.Compute/availabilitySets/es-data-set" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/es-data-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "data-vmcopyIndex()", + "adminUsername": "adminUsername", + "adminPassword": "authSet", + "linuxConfiguration": "osSettings" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespace-vmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "namespace-vmcopyindex()_DataDisk1", + "diskSizeGB": 1023, + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 1, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 2, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 3, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk5", + "diskSizeGB": 1023, + "lun": 4, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk6", + "diskSizeGB": 1023, + "lun": 5, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk7", + "diskSizeGB": 1023, + "lun": 6, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "namespace-vmcopyindex()_DataDisk8", + "diskSizeGB": 1023, + "lun": 7, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespace-niccopyindex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "installelasticsearch", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/namespace-vmcopyindex()" + ], + "properties": { + "publisher": "osSettings", + "type": "osSettings", + "typeHandlerVersion": "osSettings", + "settings": { + "fileUris": "osSettings", + "commandToExecute": "[concat(parameters('osSettings').extensionSettings.data.settings.commandToExecute, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountNameAFS')), '2021-01-01').keys[0].value)]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1240 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1240 new file mode 100644 index 0000000..2b86ee9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1240 @@ -0,0 +1,180 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/nested/VMtemplate.json" + ], + "timestamp": 1642962905874, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/nested/VMtemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1240", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1240", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "gatewayId": { + "type": "string" + }, + "virtualMachineName": { + "type": "string" + }, + "adminUserName": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "existingVnetLocation": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "nsgId": { + "type": "string" + }, + "storageAccountName": { + "type": "string" + }, + "scriptUrl": { + "type": "string" + } + }, + "variables": { + "nicName": "virtualMachineNameNic", + "publicIPAddressName": "virtualMachineName-ip" + }, + "resources": [ + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "virtualMachineName-ip", + "location": "existingVnetLocation", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "virtualMachineNameNic", + "location": "existingVnetLocation", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/virtualMachineName-ip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/virtualMachineName-ip" + }, + "subnet": { + "id": "subnetId" + } + } + } + ], + "networkSecurityGroup": { + "id": "nsgId" + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "virtualMachineName", + "location": "existingVnetLocation", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//virtualMachineNameNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A3" + }, + "osProfile": { + "computerName": "virtualMachineName", + "adminUsername": "adminUserName", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "virtualMachineName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/virtualMachineNameNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "https://storageAccountName.blob.core.windows.net/" + } + } + }, + "resources": [ + { + "type": "extensions", + "name": "virtualMachineNameinstallGW", + "apiVersion": "2015-06-15", + "location": "existingVnetLocation", + "tags": { + "vmname": "virtualMachineName" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//virtualMachineName" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.7", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptURL" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('powershell.exe -ExecutionPolicy Unrestricted -File gatewayInstall.ps1 ', listAuthKeys(parameters('gatewayId'), '2015-10-01').key1)]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1241 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1241 new file mode 100644 index 0000000..d3e794f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1241 @@ -0,0 +1,257 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/azuredeploy.json", + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/azuredeploy.parameters.json" + ], + "timestamp": 1642962905884, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/azuredeploy.json", + "/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1241", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1241", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingDataFactoryName": { + "type": "string", + "metadata": { + "description": "your existing data factory name" + }, + "value": "existingDF" + }, + "existingDataFactoryResourceGroup": { + "type": "string", + "metadata": { + "description": "your existing data factory resource group" + }, + "value": "existingDFResourceGroup" + }, + "GatewayName": { + "type": "string", + "metadata": { + "description": "Gateway name must be unique in subscription" + }, + "value": "newgateway" + }, + "GatewayNodeCount": { + "type": "int", + "defaultValue": 2, + "maxValue": 4, + "minValue": 1, + "metadata": { + "description": "the node count is between 1 and 4." + } + }, + "adminUserName": { + "type": "string", + "metadata": { + "description": "User name for the virtual machine" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the virtual machine" + }, + "value": "GEN-PASSWORD" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "your existing vnet name" + }, + "value": "gwvnet" + }, + "existingVnetLocation": { + "type": "string", + "metadata": { + "description": "your virtual machine will be create in the same datacenter with VNET" + }, + "value": "West US" + }, + "existingVnetResourceGroupName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "gwvnetrg" + }, + "existingSubnetInYourVnet": { + "type": "string", + "metadata": { + "description": "Name of the subnet in the virtual network you want to use" + }, + "value": "subnet" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "enableToSetDataStorePasswordsFromInternet": { + "value": "yes" + } + }, + "variables": { + "delimiters": [ + "-", + "_" + ], + "prefix": "[split(parameters('GatewayName'), variables('delimiters'))[0]]", + "gatewayId": "existingDFResourceGroup/Microsoft.DataFactory/dataFactories/gateways/existingDF/newgateway", + "storageAccountName": "[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, parameters('GatewayName'))), 24)]", + "networkSecurityGroupName": "newgatewaynsg", + "vmTemplateLink": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/nested/VMtemplate.jsonparameters('_artifactsLocationSasToken')", + "subnetId": "gwvnetrg/Microsoft.Network/virtualNetworks/subnets/gwvnet/subnet", + "scriptURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/scripts/gatewayInstall.ps1parameters('_artifactsLocationSasToken')" + }, + "resources": [ + { + "apiVersion": "2017-05-10", + "name": "nestedTemplate", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "existingDFResourceGroup", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [ + { + "type": "Microsoft.DataFactory/dataFactories/gateways", + "apiVersion": "2015-10-01", + "name": "existingDF/newgateway", + "properties": { + "multiNodeSupportEnabled": true, + "description": "my gateway" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + }, + "parameters": {} + } + }, + { + "name": "newgatewaynsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2016-09-01", + "location": "West US", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, parameters('GatewayName'))), 24)]", + "apiVersion": "2016-01-01", + "location": "West US", + "dependsOn": [ + "existingDFResourceGroup/Microsoft.Resources/deployments/nestedTemplate" + ], + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2015-01-01", + "name": "VMtemplate-copyIndex()", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "existingDFResourceGroup/Microsoft.Resources/deployments/nestedTemplate", + "Microsoft.Network/networkSecurityGroups/newgatewaynsg", + "Microsoft.Storage/storageAccounts/[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, parameters('GatewayName'))), 24)]" + ], + "copy": { + "name": "vmcopy", + "count": 2 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/nested/VMtemplate.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "gatewayId": { + "value": "existingDFResourceGroup/Microsoft.DataFactory/dataFactories/gateways/existingDF/newgateway" + }, + "virtualMachineName": { + "value": "[take(concat('vm',copyIndex(),'-', variables('prefix')), 15)]" + }, + "adminUserName": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "existingVnetLocation": { + "value": "West US" + }, + "subnetId": { + "value": "gwvnetrg/Microsoft.Network/virtualNetworks/subnets/gwvnet/subnet" + }, + "nsgId": { + "value": "Microsoft.Network/networkSecurityGroups/newgatewaynsg" + }, + "storageAccountName": { + "value": "[take(concat(toLower(variables('prefix')), uniquestring(resourceGroup().id, parameters('GatewayName'))), 24)]" + }, + "scriptUrl": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.datafactory/mutiple-vms-with-data-management-gateway/scripts/gatewayInstall.ps1parameters('_artifactsLocationSasToken')" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1242 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1242 new file mode 100644 index 0000000..09326e3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1242 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-analytics/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-analytics/azuredeploy.parameters.json" + ], + "timestamp": 1642962905897, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-analytics/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-analytics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1242", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.datalakeanalytics/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1242", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adlAnalyticsName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Analytics account to create." + }, + "value": "GEN-UNIQUE" + }, + "adlStoreName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Store account to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the resources will be created." + }, + "value": "eastus2" + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.DataLakeStore/accounts", + "location": "eastus2", + "apiVersion": "2016-11-01", + "properties": {} + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.DataLakeAnalytics/accounts", + "location": "eastus2", + "apiVersion": "2016-11-01", + "dependsOn": [ + "Microsoft.DataLakeStore/accounts//GEN-UNIQUE" + ], + "properties": { + "defaultDataLakeStoreAccount": "GEN-UNIQUE", + "dataLakeStoreAccounts": [ + { + "name": "GEN-UNIQUE" + } + ] + } + } + ], + "outputs": { + "adlAnalyticsAccount": { + "type": "object", + "value": "[reference(resourceId('Microsoft.DataLakeAnalytics/accounts',parameters('adlAnalyticsName')))]" + }, + "adlStoreAccount": { + "type": "object", + "value": "[reference(resourceId('Microsoft.DataLakeStore/accounts',parameters('adlStoreName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1243 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1243 new file mode 100644 index 0000000..e5080f2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1243 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.parameters.json" + ], + "timestamp": 1642962905905, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1243", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1243", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "7663432777141433362" + } + }, + "parameters": { + "accountName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Store account to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which to create the Data Lake Store account." + }, + "value": "eastus2" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.DataLakeStore/accounts", + "apiVersion": "2016-11-01", + "name": "GEN-UNIQUE", + "location": "eastus2", + "properties": { + "newTier": "Consumption", + "encryptionState": "Enabled", + "encryptionConfig": { + "type": "ServiceManaged" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1244 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1244 new file mode 100644 index 0000000..9ed804f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1244 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962905916, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-adls/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1244", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1244", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "7663432777141433362" + } + }, + "parameters": { + "accountName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Store account to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which to create the Data Lake Store account." + }, + "value": "usgovarizona" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.DataLakeStore/accounts", + "apiVersion": "2016-11-01", + "name": "GEN-UNIQUE", + "location": "usgovarizona", + "properties": { + "newTier": "Consumption", + "encryptionState": "Enabled", + "encryptionConfig": { + "type": "ServiceManaged" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1245 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1245 new file mode 100644 index 0000000..b05fe05 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1245 @@ -0,0 +1,176 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-key-vault/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-key-vault/azuredeploy.parameters.json" + ], + "timestamp": 1642962905927, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-key-vault/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-encryption-key-vault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1245", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1245", + "collection": "armtemplate", + "json": { + "contentVersion": "0.9.0.0", + "parameters": { + "dataLakeStoreName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "The name of the Data Lake Store account to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "The location in which to create the Data Lake Store account." + }, + "value": "eastus2" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "The Azure Key Vault name." + }, + "value": "GET-PREREQ-keyVaultName" + }, + "keyVaultResourceGroupName": { + "type": "string", + "metadata": { + "description": "The Azure Key Vault resource group name." + }, + "value": "GET-PREREQ-keyVaultResourceGroupName" + }, + "keyName": { + "type": "string", + "metadata": { + "description": "The Azure Key Vault encryption key name." + }, + "value": "GET-PREREQ-keyName" + }, + "keyVersion": { + "type": "string", + "metadata": { + "description": "The Azure Key Vault encryption key version." + }, + "value": "GET-PREREQ-keyVersion" + } + }, + "resources": [ + { + "apiVersion": "2016-11-01", + "name": "GEN-UNIQUE", + "location": "eastus2", + "type": "Microsoft.DataLakeStore/accounts", + "properties": { + "encryptionState": "Enabled", + "encryptionConfig": { + "type": "UserManaged", + "keyVaultMetaInfo": { + "keyVaultResourceId": "GET-PREREQ-keyVaultResourceGroupName/Microsoft.KeyVault/vaults/GET-PREREQ-keyVaultName", + "encryptionKeyName": "GET-PREREQ-keyName", + "encryptionKeyVersion": "GET-PREREQ-keyVersion" + } + } + }, + "identity": { + "type": "SystemAssigned" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "name": "addAccessPolicy", + "resourceGroup": "GET-PREREQ-keyVaultResourceGroupName", + "dependsOn": [ + "Microsoft.DataLakeStore/accounts/GEN-UNIQUE" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "0.9.0.0", + "resources": [ + { + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "name": "GET-PREREQ-keyVaultName/add", + "apiVersion": "2019-09-01", + "properties": { + "accessPolicies": [ + { + "objectId": "[reference(resourceId('Microsoft.DataLakeStore/accounts', parameters('dataLakeStoreName')), '2016-11-01', 'Full').identity.principalId]", + "tenantId": "[reference(resourceId('Microsoft.DataLakeStore/accounts', parameters('dataLakeStoreName')), '2016-11-01', 'Full').identity.tenantId]", + "permissions": { + "keys": [ + "encrypt", + "decrypt" + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "name": "updateAdlsAccount", + "dependsOn": [ + "addAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "0.9.0.0", + "resources": [ + { + "apiVersion": "2016-11-01", + "name": "GEN-UNIQUE", + "location": "eastus2", + "type": "Microsoft.DataLakeStore/accounts", + "properties": { + "encryptionConfig": { + "keyVaultMetaInfo": { + "keyVaultResourceId": "GET-PREREQ-keyVaultResourceGroupName/Microsoft.KeyVault/vaults/GET-PREREQ-keyVaultName", + "encryptionKeyName": "GET-PREREQ-keyName", + "encryptionKeyVersion": "GET-PREREQ-keyVersion" + } + } + }, + "identity": { + "type": "SystemAssigned" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1246 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1246 new file mode 100644 index 0000000..32d5c45 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1246 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-no-encryption/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-no-encryption/azuredeploy.parameters.json" + ], + "timestamp": 1642962905941, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/data-lake-store-no-encryption/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/data-lake-store-no-encryption/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1246", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1246", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accountName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Store account to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which to create the Data Lake Store account." + }, + "value": "eastus2" + } + }, + "resources": [ + { + "type": "Microsoft.DataLakeStore/accounts", + "name": "GEN-UNIQUE", + "location": "eastus2", + "apiVersion": "2016-11-01", + "properties": { + "newTier": "Consumption", + "encryptionState": "Disabled" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1247 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1247 new file mode 100644 index 0000000..7538aed --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1247 @@ -0,0 +1,368 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/azureFunction.json" + ], + "timestamp": 1642962905954, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/azureFunction.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1247", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/config", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1247", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Deployment location" + } + }, + "KibanaESDeployedVMIP": { + "type": "string", + "metadata": { + "description": "Public IP of VM on which kibana install." + } + }, + "web_app_id": { + "type": "string", + "metadata": { + "description": "The ID of the service principal web/api" + } + }, + "web_app_secret": { + "type": "securestring", + "metadata": { + "description": "The ID of the service principal web/api" + } + }, + "appName": { + "type": "string", + "metadata": { + "description": "Web application name" + } + }, + "datafactory_name": { + "type": "string", + "metadata": { + "description": "The ID of the service principal" + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "storage account name" + } + }, + "eventhub_name": { + "type": "string", + "metadata": { + "description": "Event hub name" + } + }, + "eventhub_namespace": { + "type": "string", + "metadata": { + "description": "eventhub namespace name" + } + }, + "adla_account_name": { + "type": "string", + "metadata": { + "description": "Azure datalake analytics name" + } + }, + "DataCleaningStreamAnalyticsJob": { + "type": "String", + "metadata": { + "description": " Azure stream analytics job name 1" + } + }, + "DataAggregatorStreamAnalyticsJob1": { + "type": "String", + "metadata": { + "description": " Azure stream analytics job name 1" + } + }, + "DataAggregatorStreamAnalyticsJob2": { + "type": "String", + "metadata": { + "description": " Azure stream analytics job name 2" + } + }, + "DataAggregatorStreamAnalyticsJob3": { + "type": "String", + "metadata": { + "description": " Azure stream analytics job name 3" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "SecureString", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + } + }, + "variables": { + "config_web_name": "web", + "pythonExtension": "azureappservice-python2714x64", + "functionAppName": "appName", + "hostingPlanName": "appName", + "tenant": "[subscription().tenantId]", + "msd": "MSDeploy" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "name": "appName", + "apiVersion": "2020-06-01", + "sku": { + "name": "Y1", + "tier": "Dynamic", + "size": "Y1", + "family": "Y", + "capacity": 0 + }, + "kind": "functionapp", + "location": "location", + "properties": { + "name": "appName", + "perSiteScaling": false, + "reserved": false, + "targetWorkerCount": 0, + "targetWorkerSizeId": 0 + } + }, + { + "type": "Microsoft.Web/sites", + "name": "appName", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Web/serverfarms/appName" + ], + "kind": "functionapp", + "location": "location", + "resources": [ + { + "name": "azureappservice-python2714x64", + "type": "siteextensions", + "apiVersion": "2020-06-01", + "properties": {}, + "dependsOn": [ + "Microsoft.Web/sites/appName" + ] + }, + { + "name": "MSDeploy", + "type": "extensions", + "location": "location", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Web/sites//appName", + "Microsoft.Web/serverfarms/appName", + "Microsoft.Web/sites/siteextensions/appName/azureappservice-python2714x64" + ], + "tags": { + "displayName": "pythonextension" + }, + "properties": { + "packageUri": "[uri(parameters('_artifactsLocation'), concat('scripts/quickstart_function_app.zip', parameters('_artifactsLocationSasToken')))]", + "dbType": "None" + } + } + ], + "properties": { + "enabled": true, + "serverFarmId": "Microsoft.Web/serverfarms/appName", + "siteConfig": { + "handlerMappings": [ + { + "arguments": "D:\\home\\Python27\\wfastcgi.py", + "extension": "fastCgi", + "scriptProcessor": "D:\\home\\Python27\\python.exe" + } + ], + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[Concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')),'2021-01-01').keys[0].value)]" + }, + { + "name": "datafactory_name", + "value": "datafactory_name" + }, + { + "name": "vm_ip", + "value": "KibanaESDeployedVMIP" + }, + { + "name": "function_app_name", + "value": "appName" + }, + { + "name": "resource_group", + "value": "[resourceGroup().name]" + }, + { + "name": "storage_name", + "value": "storageAccountName" + }, + { + "name": "subscription_id", + "value": "[subscription().subscriptionId]" + }, + { + "name": "tenant", + "value": "[subscription().tenantId]" + }, + { + "name": "web_app_id", + "value": "web_app_id" + }, + { + "name": "web_app_secret", + "value": "web_app_secret" + }, + { + "name": "adla_account_name", + "value": "adla_account_name" + }, + { + "name": "eventhub_name", + "value": "eventhub_name" + }, + { + "name": "eventhub_namespace", + "value": "eventhub_namespace" + }, + { + "name": "sas_key", + "value": "[listkeys(resourceId('Microsoft.EventHub/namespaces/authorizationRules', parameters('eventhub_namespace'), 'RootManageSharedAccessKey'), '2021-01-01-preview').primaryKey]" + }, + { + "name": "DataCleaningStreamAnalyticsJob", + "value": "DataCleaningStreamAnalyticsJob" + }, + { + "name": "DataAggregatorStreamAnalyticsJob1", + "value": "DataAggregatorStreamAnalyticsJob1" + }, + { + "name": "DataAggregatorStreamAnalyticsJob2", + "value": "DataAggregatorStreamAnalyticsJob2" + }, + { + "name": "DataAggregatorStreamAnalyticsJob3", + "value": "DataAggregatorStreamAnalyticsJob3" + } + ] + }, + "reserved": false, + "scmSiteAlsoStopped": false, + "clientAffinityEnabled": false, + "clientCertEnabled": false, + "hostNamesDisabled": false, + "containerSize": 1536, + "dailyMemoryTimeQuota": 0 + } + }, + { + "type": "Microsoft.Web/sites/config", + "name": "appName/web", + "apiVersion": "2018-11-01", + "dependsOn": [ + "Microsoft.Web/sites/appName", + "Microsoft.Web/serverfarms/appName", + "Microsoft.Web/sites/extensions/appName/MSDeploy" + ], + "properties": { + "numberOfWorkers": 1, + "defaultDocuments": [ + "Default.htm", + "Default.html", + "Default.asp", + "index.htm", + "index.html", + "iisstart.htm", + "default.aspx", + "index.php" + ], + "netFrameworkVersion": "v4.0", + "phpVersion": "5.6", + "pythonVersion": "2.7", + "requestTracingEnabled": false, + "remoteDebuggingEnabled": false, + "httpLoggingEnabled": false, + "logsDirectorySizeLimit": 35, + "detailedErrorLoggingEnabled": false, + "publishingUsername": "$appName", + "scmType": "None", + "use32BitWorkerProcess": true, + "webSocketsEnabled": false, + "alwaysOn": false, + "managedPipelineMode": "Integrated", + "virtualApplications": [ + { + "virtualPath": "/", + "physicalPath": "site\\wwwroot", + "preloadEnabled": false + } + ], + "winAuthAdminState": 0, + "winAuthTenantState": 0, + "customAppPoolIdentityAdminState": false, + "customAppPoolIdentityTenantState": false, + "loadBalancing": "LeastRequests", + "autoHealEnabled": false, + "siteAuthEnabled": true, + "siteAuthSettings": { + "enabled": true, + "unauthenticatedClientAction": "RedirectToLoginPage", + "tokenStoreEnabled": true, + "defaultProvider": "AzureActiveDirectory", + "clientId": "web_app_id", + "issuer": "https://sts.windows.net/[subscription().tenantId]", + "isAadAutoProvisioned": false + }, + "localMySqlEnabled": false, + "http20Enabled": false, + "minTlsVersion": "1.0", + "ftpsState": "AllAllowed" + }, + "location": "location" + } + ], + "outputs": { + "websiteUrl": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/Sites', parameters('appName'))).hostNames[0]]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1248 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1248 new file mode 100644 index 0000000..ba62316 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1248 @@ -0,0 +1,311 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/blobTriggerdFunction.json" + ], + "timestamp": 1642962905986, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/blobTriggerdFunction.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1248", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/config", + "microsoft.eventhub/namespaces", + "microsoft.storage/storageaccounts/providers/eventsubscriptions", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1248", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "kibanaFunctionHost": { + "type": "String" + }, + "kibanaFunctionPath": { + "type": "String" + }, + "EsIP": { + "type": "String" + }, + "serverfarms_name": { + "type": "String" + }, + "sites_demotriggerapp1234_name": { + "type": "String" + }, + "config_web_name_4": { + "type": "String" + }, + "storage_name": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "SecureString", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + } + }, + "variables": { + "pythonExtension": "azureappservice-python2714x64", + "raweventGridSubscriptionName": "[toLower(uniqueString(resourceGroup().id, 'rawtopicsubscription1a'))]", + "eventgridEventHubNamespaceName": "[toLower(uniqueString(resourceGroup().id, 'datalakeNamespace1a'))]", + "eventHubResourceGroup": "[resourceGroup().name]", + "raweventhub": "[toLower(uniqueString(resourceGroup().id, 'datalakeeseventhub1'))]" + }, + "resources": [ + { + "type": "Microsoft.EventHub/namespaces", + "name": "[toLower(uniqueString(resourceGroup().id, 'datalakeNamespace1a'))]", + "apiVersion": "2021-01-01-preview", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "location": "location", + "resources": [ + { + "apiVersion": "2021-01-01-preview", + "name": "[toLower(uniqueString(resourceGroup().id, 'datalakeeseventhub1'))]", + "type": "EventHubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//[toLower(uniqueString(resourceGroup().id, 'datalakeNamespace1a'))]" + ], + "properties": { + "path": "[toLower(uniqueString(resourceGroup().id, 'datalakeeseventhub1'))]" + }, + "resources": [ + { + "apiVersion": "2021-01-01-preview", + "name": "[resourceGroup().name]", + "type": "ConsumerGroups", + "dependsOn": [ + "[toLower(uniqueString(resourceGroup().id, 'datalakeeseventhub1'))]" + ], + "properties": {} + } + ] + } + ] + }, + { + "type": "Microsoft.Storage/storageAccounts/providers/eventSubscriptions", + "name": "storage_name/Microsoft.EventGrid/[toLower(uniqueString(resourceGroup().id, 'rawtopicsubscription1a'))]", + "apiVersion": "2018-01-01", + "dependsOn": [ + "Microsoft.EventHub/namespaces//[toLower(uniqueString(resourceGroup().id, 'datalakeNamespace1a'))]", + "[toLower(uniqueString(resourceGroup().id, 'datalakeeseventhub1'))]" + ], + "properties": { + "destination": { + "endpointType": "EventHub", + "topicId": "Microsoft.Storage/storageAccounts/storage_name", + "properties": { + "resourceId": "[resourceGroup().name]/Microsoft.EventHub/namespaces/eventhubs/[toLower(uniqueString(resourceGroup().id, 'datalakeNamespace1a'))]/[toLower(uniqueString(resourceGroup().id, 'datalakeeseventhub1'))]" + } + }, + "filter": { + "isSubjectCaseSensitive": false, + "includedEventTypes": [ + "All" + ] + }, + "eventDeliverySchema": "EventGridSchema" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "name": "serverfarms_name", + "apiVersion": "2020-06-01", + "location": "location", + "sku": { + "name": "Y1", + "tier": "Dynamic", + "size": "Y1", + "family": "Y", + "capacity": 0 + }, + "kind": "functionapp", + "properties": { + "name": "serverfarms_name", + "perSiteScaling": false, + "reserved": false, + "targetWorkerCount": 0, + "targetWorkerSizeId": 0 + } + }, + { + "type": "Microsoft.Web/sites", + "kind": "functionapp", + "name": "sites_demotriggerapp1234_name", + "apiVersion": "2020-06-01", + "location": "location", + "dependsOn": [ + "Microsoft.Web/serverfarms/serverfarms_name", + "Microsoft.EventHub/namespaces//[toLower(uniqueString(resourceGroup().id, 'datalakeNamespace1a'))]", + "[toLower(uniqueString(resourceGroup().id, 'datalakeeseventhub1'))]" + ], + "resources": [ + { + "name": "azureappservice-python2714x64", + "type": "siteextensions", + "apiVersion": "2020-06-01", + "properties": {}, + "dependsOn": [ + "Microsoft.Web/sites/sites_demotriggerapp1234_name" + ] + }, + { + "name": "MSDeploy", + "type": "extensions", + "location": "location", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Web/sites//sites_demotriggerapp1234_name", + "Microsoft.Web/serverfarms/serverfarms_name", + "Microsoft.Web/sites/siteextensions/sites_demotriggerapp1234_name/azureappservice-python2714x64" + ], + "tags": { + "displayName": "pythonextension" + }, + "properties": { + "packageUri": "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearchfunction.zip', parameters('_artifactsLocationSasToken')))]", + "dbType": "None" + } + } + ], + "properties": { + "enabled": true, + "serverFarmId": "Microsoft.Web/serverfarms/serverfarms_name", + "siteConfig": { + "handlerMappings": [ + { + "arguments": "D:\\home\\Python27\\wfastcgi.py", + "extension": "fastCgi", + "scriptProcessor": "D:\\home\\Python27\\python.exe" + } + ], + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[Concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storage_name'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storage_name')),'2021-01-01').keys[0].value)]" + }, + { + "name": "elasticclusterstorage_STORAGE", + "value": "[Concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storage_name'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storage_name')),'2021-01-01').keys[0].value)]" + }, + { + "name": "esIp", + "value": "EsIP" + }, + { + "name": "kibanaFunctionHost", + "value": "kibanaFunctionHost" + }, + { + "name": "kibanaFunctionPath", + "value": "kibanaFunctionPath" + }, + { + "name": "raweventhubnamespace_RootManageSharedAccessKey_EVENTHUB", + "value": "[concat(listkeys(resourceId('Microsoft.EventHub/namespaces/authorizationRules', variables('eventgridEventHubNamespaceName'), 'RootManageSharedAccessKey'), '2021-01-01-preview').primaryConnectionString,';EntityPath=',variables('raweventhub'))]" + }, + { + "name": "raweventhub", + "value": "[toLower(uniqueString(resourceGroup().id, 'datalakeeseventhub1'))]" + } + ] + }, + "reserved": false, + "scmSiteAlsoStopped": false, + "clientAffinityEnabled": false, + "clientCertEnabled": false, + "hostNamesDisabled": false, + "containerSize": 1536, + "dailyMemoryTimeQuota": 0 + } + }, + { + "type": "Microsoft.Web/sites/config", + "name": "sites_demotriggerapp1234_name/config_web_name_4", + "apiVersion": "2018-11-01", + "location": "location", + "dependsOn": [ + "Microsoft.Web/sites/sites_demotriggerapp1234_name", + "Microsoft.Web/serverfarms/serverfarms_name", + "Microsoft.Web/sites/Extensions/sites_demotriggerapp1234_name/MSDeploy" + ], + "properties": { + "numberOfWorkers": 1, + "defaultDocuments": [ + "Default.htm", + "Default.html", + "Default.asp", + "index.htm", + "index.html", + "iisstart.htm", + "default.aspx", + "index.php" + ], + "netFrameworkVersion": "v4.0", + "phpVersion": "5.6", + "pythonVersion": "2.7", + "requestTracingEnabled": false, + "remoteDebuggingEnabled": false, + "httpLoggingEnabled": false, + "logsDirectorySizeLimit": 35, + "detailedErrorLoggingEnabled": false, + "publishingUsername": "$demotriggerapp1234", + "scmType": "None", + "use32BitWorkerProcess": true, + "webSocketsEnabled": false, + "alwaysOn": false, + "managedPipelineMode": "Integrated", + "virtualApplications": [ + { + "virtualPath": "/", + "physicalPath": "site\\wwwroot", + "preloadEnabled": false + } + ], + "winAuthAdminState": 0, + "winAuthTenantState": 0, + "customAppPoolIdentityAdminState": false, + "customAppPoolIdentityTenantState": false, + "localMySqlEnabled": false, + "http20Enabled": false, + "minTlsVersion": "1.0", + "ftpsState": "AllAllowed" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1249 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1249 new file mode 100644 index 0000000..3c84d50 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1249 @@ -0,0 +1,398 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/dataFactory.json" + ], + "timestamp": 1642962906028, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/dataFactory.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1249", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/factories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1249", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "SecureString", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "dataFactoryName": { + "type": "string", + "metadata": { + "description": "Name of the data factory. It Must be globally unique." + } + }, + "servicePrincipalId": { + "type": "string", + "metadata": { + "description": "The ID of the service principal that has permissions to create HDInsight clusters in your subscription." + } + }, + "servicePrincipalKey": { + "type": "securestring", + "metadata": { + "description": "The access key of the service principal that has permissions to create HDInsight clusters in your subscription." + } + }, + "KibanaESDeployedVMIP": { + "type": "string", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + } + }, + "dataFactoryLocation": { + "type": "string", + "metadata": { + "description": "Location of the data factory. Currently, only East US and East US 2 are supported. " + } + }, + "blobContainer": { + "type": "string", + "metadata": { + "description": "Name of the blob container in the Azure Storage account." + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "storage account name" + } + } + }, + "variables": { + "yashAzureStorageLinkedServiceName": "LinkedServiceToYashAzureStorage", + "clientAzureStorageLinkedServiceName": "LinkedServiceToClientAzureStorage", + "onDemandHDInsightLinkedServiceName": "LinkedServiceToOnDemandHDInsight", + "inputDatasetName": "DatasetIn", + "outputDatasetName": "DatasetOut", + "pipeline_name_1": "pipelineForDataMovement", + "pipeline_name_2": "pipelineForDataTransformation", + "pipeline_name_3": "pipelineForDataTransformation2", + "entryFilePath": "Neo4JSparkTransformation-0.0.1-SNAPSHOT-jar-with-dependencies.jar" + }, + "resources": [ + { + "type": "Microsoft.DataFactory/factories", + "name": "dataFactoryName", + "apiVersion": "2018-06-01", + "properties": {}, + "location": "dataFactoryLocation", + "resources": [ + { + "apiVersion": "2018-06-01", + "name": "LinkedServiceToYashAzureStorage", + "type": "linkedservices", + "dependsOn": [ + "dataFactoryName" + ], + "properties": { + "type": "HttpServer", + "typeProperties": { + "url": "[uri(parameters('_artifactsLocation'),concat(parameters('_artifactsLocationSasToken')))]", + "enableServerCertificateValidation": true, + "authenticationType": "Anonymous" + } + } + }, + { + "type": "linkedservices", + "name": "LinkedServiceToClientAzureStorage", + "dependsOn": [ + "dataFactoryName" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureStorage", + "description": "Azure Storage linked service", + "typeProperties": { + "connectionString": { + "value": "[Concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')),'2021-01-01').keys[0].value)]", + "type": "SecureString" + } + } + } + }, + { + "type": "linkedservices", + "name": "LinkedServiceToOnDemandHDInsight", + "dependsOn": [ + "dataFactoryName", + "LinkedServiceToClientAzureStorage" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "HDInsightOnDemand", + "typeProperties": { + "clusterType": "spark", + "clusterSize": 1, + "version": "3.6", + "timeToLive": "01:35:00", + "hostSubscriptionId": "[subscription().subscriptionId]", + "clusterResourceGroup": "[resourceGroup().name]", + "tenant": "[subscription().tenantId]", + "servicePrincipalId": "servicePrincipalId", + "servicePrincipalKey": { + "type": "SecureString", + "value": "servicePrincipalKey" + }, + "linkedServiceName": { + "referenceName": "LinkedServiceToClientAzureStorage", + "type": "LinkedServiceReference" + } + } + } + }, + { + "type": "datasets", + "name": "DatasetIn", + "dependsOn": [ + "dataFactoryName", + "LinkedServiceToYashAzureStorage" + ], + "apiVersion": "2018-06-01", + "properties": { + "linkedServiceName": { + "referenceName": "LinkedServiceToYashAzureStorage", + "type": "LinkedServiceReference" + }, + "parameters": { + "item": { + "type": "string", + "defaultValue": "@item()" + } + }, + "type": "DelimitedText", + "typeProperties": { + "location": { + "type": "HttpServerLocation", + "relativeUrl": { + "value": "@item()", + "type": "Expression" + } + }, + "columnDelimiter": ",", + "escapeChar": "\\" + } + } + }, + { + "type": "datasets", + "name": "DatasetOut", + "dependsOn": [ + "dataFactoryName", + "LinkedServiceToClientAzureStorage" + ], + "apiVersion": "2018-06-01", + "properties": { + "type": "AzureBlob", + "typeProperties": { + "folderPath": "blobContainer" + }, + "linkedServiceName": { + "referenceName": "LinkedServiceToClientAzureStorage", + "type": "LinkedServiceReference" + } + } + }, + { + "type": "pipelines", + "name": "pipelineForDataMovement", + "dependsOn": [ + "dataFactoryName", + "LinkedServiceToClientAzureStorage", + "DatasetIn", + "DatasetOut" + ], + "apiVersion": "2018-06-01", + "properties": { + "activities": [ + { + "name": "ForEachActivity", + "type": "ForEach", + "typeProperties": { + "items": { + "value": "@pipeline().parameters.downloadables", + "type": "Expression" + }, + "activities": [ + { + "name": "Copy data", + "type": "Copy", + "policy": { + "timeout": "7.00:00:00", + "retry": 0, + "retryIntervalInSeconds": 30, + "secureOutput": false, + "secureInput": false + }, + "typeProperties": { + "source": { + "type": "DelimitedTextSource", + "storeSettings": { + "type": "HttpReadSettings", + "requestMethod": "GET" + }, + "formatSettings": { + "type": "DelimitedTextReadSettings" + } + }, + "sink": { + "type": "BlobSink", + "copyBehavior": { + "value": "@item()", + "type": "Expression" + } + }, + "enableStaging": false + }, + "inputs": [ + { + "referenceName": "DatasetIn", + "type": "DatasetReference", + "parameters": { + "item": "@item()" + } + } + ], + "outputs": [ + { + "referenceName": "DatasetOut", + "type": "DatasetReference", + "parameters": {} + } + ] + } + ] + } + } + ], + "parameters": { + "downloadables": { + "type": "string", + "defaultValue": [ + "datasets/customers/customerData.csv", + "datasets/demographics/demographics_data_20170520.csv", + "datasets/orders/order_data.csv", + "datasets/products/products.csv2013", + "datasets/products/products.csv2014", + "datasets/products/products.csv2015", + "datasets/products/products.csv2016", + "jars/Neo4JSparkTransformation-0.0.1-SNAPSHOT-jar-with-dependencies.jar", + "scripts/Neo4JSparkTransformation-0.0.1-SNAPSHOT-jar-with-dependencies.jar", + "customer_updated_refrence.json" + ] + } + } + } + }, + { + "type": "pipelines", + "name": "pipelineForDataTransformation", + "dependsOn": [ + "dataFactoryName", + "LinkedServiceToClientAzureStorage", + "LinkedServiceToOnDemandHDInsight" + ], + "apiVersion": "2018-06-01", + "properties": { + "activities": [ + { + "name": "MySparkActivity", + "type": "HDInsightSpark", + "policy": { + "timeout": "7.00:00:00", + "retry": 0, + "retryIntervalInSeconds": 30 + }, + "typeProperties": { + "rootPath": "blobContainer/scripts", + "entryFilePath": "Neo4JSparkTransformation-0.0.1-SNAPSHOT-jar-with-dependencies.jar", + "arguments": [ + "storageAccountName", + "KibanaESDeployedVMIP" + ], + "className": "com.neo4j.AzureNeo4J", + "sparkJobLinkedService": { + "referenceName": "LinkedServiceToClientAzureStorage", + "type": "LinkedServiceReference" + } + }, + "linkedServiceName": { + "referenceName": "LinkedServiceToOnDemandHDInsight", + "type": "LinkedServiceReference" + } + } + ] + } + }, + { + "type": "pipelines", + "name": "pipelineForDataTransformation2", + "dependsOn": [ + "dataFactoryName", + "LinkedServiceToClientAzureStorage", + "LinkedServiceToOnDemandHDInsight" + ], + "apiVersion": "2018-06-01", + "properties": { + "activities": [ + { + "name": "MySparkActivity", + "type": "HDInsightSpark", + "policy": { + "timeout": "7.00:00:00", + "retry": 0, + "retryIntervalInSeconds": 30 + }, + "typeProperties": { + "rootPath": "blobContainer/jars", + "entryFilePath": "Neo4JSparkTransformation-0.0.1-SNAPSHOT-jar-with-dependencies.jar", + "arguments": [ + "storageAccountName", + "KibanaESDeployedVMIP" + ], + "className": "com.neo4j.AzureNeo4J", + "sparkJobLinkedService": { + "referenceName": "LinkedServiceToClientAzureStorage", + "type": "LinkedServiceReference" + } + }, + "linkedServiceName": { + "referenceName": "LinkedServiceToOnDemandHDInsight", + "type": "LinkedServiceReference" + } + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT125 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT125 new file mode 100644 index 0000000..4256a17 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT125 @@ -0,0 +1,35 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/empty-resources.json" + ], + "timestamp": 1642962887300, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/empty-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT125", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT125", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1250 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1250 new file mode 100644 index 0000000..a7c86b5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1250 @@ -0,0 +1,93 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/datalakeAnalytics.json" + ], + "timestamp": 1642962906046, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/datalakeAnalytics.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1250", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.datalakeanalytics/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1250", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Store account to create." + } + }, + "adlAnalyticsName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Analytics account to create." + } + }, + "adlStoreName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Store account to create." + } + }, + "dataLakeAnalyticsLocation": { + "type": "string", + "metadata": { + "description": "Location of the data lake analytics. " + } + } + }, + "resources": [ + { + "type": "Microsoft.DataLakeStore/accounts", + "name": "adlStoreName", + "apiVersion": "2016-11-01", + "location": "dataLakeAnalyticsLocation" + }, + { + "type": "Microsoft.DataLakeAnalytics/accounts", + "name": "adlAnalyticsName", + "apiVersion": "2019-11-01-preview", + "location": "dataLakeAnalyticsLocation", + "dependsOn": [ + "Microsoft.DataLakeStore/accounts//adlStoreName" + ], + "properties": { + "defaultDataLakeStoreAccount": "adlStoreName", + "dataLakeStoreAccounts": [ + { + "name": "adlStoreName" + } + ], + "storageAccounts": [ + { + "name": "storageAccountName", + "properties": { + "accessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts',parameters('storageAccountName')),'2021-01-01').keys[0].value]" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1251 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1251 new file mode 100644 index 0000000..2c5baad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1251 @@ -0,0 +1,371 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/elasticSearchKibana.json" + ], + "timestamp": 1642962906059, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/elasticSearchKibana.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1251", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1251", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "String", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "allowedValues": [ + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3" + ], + "type": "String", + "metadata": { + "description": "Size of vm" + } + }, + "username": { + "type": "String", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "password": { + "type": "SecureString", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "dnsLabelPrefix": { + "type": "String", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "SecureString", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + } + }, + "variables": { + "networkSecurityGroupName": "customdatalakeSecurrityGroup", + "extensionName": "CustomScript", + "scenarioPrefix": "customscriptLinux", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04-LTS", + "nicName": "customscriptLinuxNic", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "customscriptLinuxSubnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "customscriptLinuxPublicIp", + "publicIPAddressType": "Dynamic", + "vmName": "customscriptLinuxVM", + "virtualNetworkName": "customscriptLinuxVnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/customscriptLinuxVnet/customscriptLinuxSubnet", + "scriptFolder": "scripts", + "scriptFilename": "kibana_install_script.sh" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "customscriptLinuxPublicIp", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsLabelPrefix" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "customscriptLinuxVnet", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "customscriptLinuxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "customscriptLinuxNic", + "apiVersion": "2020-08-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//customscriptLinuxPublicIp", + "Microsoft.Network/virtualNetworks//customscriptLinuxVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/customscriptLinuxPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/customscriptLinuxVnet/customscriptLinuxSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/customdatalakeSecurrityGroup" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "customscriptLinuxVM", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//customscriptLinuxNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "customscriptLinuxVM", + "adminUsername": "username", + "adminPassword": "password" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "osdisk1", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "caching": "ReadWrite" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/customscriptLinuxNic" + } + ] + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "customdatalakeSecurrityGroup", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "priority": 1000, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + }, + { + "name": "elasticsearch-inbound-access", + "properties": { + "priority": 1020, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "9200-9300" + } + }, + { + "name": "kibana-inbound-access", + "properties": { + "priority": 1015, + "protocol": "*", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "5601" + } + }, + { + "name": "elasticsearch-outbound-access", + "properties": { + "priority": 110, + "protocol": "TCP", + "access": "Allow", + "direction": "Outbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "9200-9300" + } + }, + { + "name": "kibana-outbound-access", + "properties": { + "priority": 105, + "protocol": "*", + "access": "Allow", + "direction": "Outbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "5601" + } + }, + { + "name": "neo4j-inbound-access", + "properties": { + "priority": 1030, + "protocol": "*", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "7474" + } + }, + { + "name": "neo4j-outbound-access", + "properties": { + "priority": 120, + "protocol": "*", + "access": "Allow", + "direction": "Outbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "7474" + } + }, + { + "name": "neo4j-bolt-inbound-access", + "properties": { + "priority": 1040, + "protocol": "*", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "7687" + } + }, + { + "name": "neo4j-bolt-outbound-access", + "properties": { + "priority": 130, + "protocol": "*", + "access": "Allow", + "direction": "Outbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "7687" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "customscriptLinuxVM/CustomScript", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//customscriptLinuxVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat(variables('scriptFolder'),'/',variables('scriptFilename'),parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh kibana_install_script.sh >> /home/testingDataFileLog.txt" + } + } + } + ], + "outputs": { + "publicIpAddress": { + "type": "String", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1252 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1252 new file mode 100644 index 0000000..0f47a48 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1252 @@ -0,0 +1,238 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/eventHub.json" + ], + "timestamp": 1642962906069, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/eventHub.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1252", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1252", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "lcoation for the EventHub namespace" + } + }, + "eventHubNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the EventHub namespace" + } + }, + "captureTime": { + "type": "int", + "minValue": 60, + "maxValue": 900, + "metadata": { + "description": "the time window in seconds for the archival" + } + }, + "captureSize": { + "type": "int", + "minValue": 10485760, + "maxValue": 524288000, + "metadata": { + "description": "the size window in bytes for evetn hub capture" + } + }, + "eventhubSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "The messaging tier for service Bus namespace" + } + }, + "skuCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 4 + ], + "metadata": { + "description": "MessagingUnits for premium namespace" + } + }, + "isAutoInflateEnabled": { + "type": "string", + "allowedValues": [ + "True", + "False" + ], + "metadata": { + "description": "Enable or disable AutoInflate" + } + }, + "messageRetentionInDays": { + "type": "int", + "minValue": 1, + "maxValue": 7, + "metadata": { + "description": "How long to retain the data in Event Hub" + } + }, + "partitionCount": { + "type": "int", + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of partitions chosen" + } + }, + "captureEncodingFormat": { + "type": "string", + "allowedValues": [ + "Avro" + ], + "metadata": { + "description": "The encoding format Eventhub capture serializes the EventData when archiving to your storage" + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Your existing storage account name where you want the blobs be archived" + } + }, + "maximumThroughputUnits": { + "type": "int", + "minValue": 0, + "maxValue": 20, + "metadata": { + "description": "Upper limit of throughput units when AutoInflate is enabled, vaule should be within 0 to 20 throughput units." + } + }, + "DataCleaningInputStream": { + "type": "string", + "metadata": { + "description": "Name of the Event Hub" + } + }, + "DataCleaningOutputStream": { + "type": "string", + "metadata": { + "description": "Name of the second Event Hub" + } + }, + "captureNameFormat": { + "type": "string", + "allowedValues": [ + "{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}", + "{Year}/{Month}/{Day}/{Namespace}/{EventHub}/{PartitionId}/{Hour}/{Minute}/{Second}", + "{Year}/{Month}/{Day}/{Hour}/{Namespace}/{EventHub}/{PartitionId}/{Minute}/{Second}" + ], + "metadata": { + "description": "A Capture Name Format must contain {Namespace}, {EventHub}, {PartitionId}, {Year}, {Month}, {Day}, {Hour}, {Minute} and {Second} fields. These can be arranged in any order with or without delimeters. E.g. Prod_{EventHub}/{Namespace}\\{PartitionId}_{Year}_{Month}/{Day}/{Hour}/{Minute}/{Second}" + } + } + }, + "variables": { + "RawOrderOutputContainerName": "raw", + "DataCleaningOutputContainerName": "transformed", + "defaultSASKeyName": "RootManageSharedAccessKey" + }, + "resources": [ + { + "type": "Microsoft.EventHub/Namespaces", + "name": "eventHubNamespaceName", + "apiVersion": "2021-01-01-preview", + "properties": { + "isAutoInflateEnabled": "isAutoInflateEnabled", + "maximumThroughputUnits": "maximumThroughputUnits" + }, + "location": "location", + "sku": { + "name": "eventhubSku", + "tier": "eventhubSku", + "capacity": "skuCapacity" + }, + "resources": [ + { + "apiVersion": "2021-01-01-preview", + "name": "DataCleaningInputStream", + "type": "EventHubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//eventHubNamespaceName" + ], + "properties": { + "messageRetentionInDays": "messageRetentionInDays", + "partitionCount": "partitionCount", + "captureDescription": { + "enabled": "true", + "encoding": "captureEncodingFormat", + "intervalInSeconds": "captureTime", + "sizeLimitInBytes": "captureSize", + "destination": { + "name": "EventHubArchive.AzureBlockBlob", + "properties": { + "storageAccountResourceId": "Microsoft.Storage/storageAccounts/storageAccountName", + "blobContainer": "raw", + "archiveNameFormat": "captureNameFormat" + } + } + } + } + }, + { + "apiVersion": "2021-01-01-preview", + "name": "DataCleaningOutputStream", + "type": "EventHubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//eventHubNamespaceName" + ], + "properties": { + "messageRetentionInDays": "messageRetentionInDays", + "partitionCount": "partitionCount", + "captureDescription": { + "enabled": "true", + "encoding": "captureEncodingFormat", + "intervalInSeconds": "captureTime", + "sizeLimitInBytes": "captureSize", + "destination": { + "name": "EventHubArchive.AzureBlockBlob", + "properties": { + "storageAccountResourceId": "Microsoft.Storage/storageAccounts/storageAccountName", + "blobContainer": "transformed", + "archiveNameFormat": "captureNameFormat" + } + } + } + } + } + ] + } + ], + "outputs": { + "authRuleResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.EventHub/namespaces/authorizationRules', parameters('eventHubNamespaceName'), variables('defaultSASKeyName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1253 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1253 new file mode 100644 index 0000000..eff62d7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1253 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/storageAccount.json" + ], + "timestamp": 1642962906081, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/nested/storageAccount.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1253", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1253", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Unique Storage Account Name" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "The location in which the resources will be created." + } + }, + "storageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage Account type" + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storageAccountName", + "apiVersion": "2021-01-01", + "properties": { + "accessTier": "Cool" + }, + "location": "location", + "sku": { + "name": "storageAccountType" + }, + "kind": "StorageV2" + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1254 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1254 new file mode 100644 index 0000000..f74464e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1254 @@ -0,0 +1,613 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/yash-datalake/azuredeploy.parameters.json" + ], + "timestamp": 1642962906096, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datalakestore/yash-datalake/azuredeploy.json", + "/quickstarts/microsoft.datalakestore/yash-datalake/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1254", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1254", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location in which the resources will be created.Check supported locations" + }, + "defaultValue": "[resourceGroup().location]" + }, + "eventHubNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the EventHub namespace" + }, + "defaultValue": "[toLower(concat('yashEventHubns', uniqueString(resourceGroup().id)))]" + }, + "captureTime": { + "type": "int", + "minValue": 60, + "maxValue": 900, + "metadata": { + "description": "the time window in seconds for the archival" + }, + "defaultValue": 300 + }, + "captureSize": { + "type": "int", + "minValue": 10485760, + "maxValue": 524288000, + "metadata": { + "description": "the size window in bytes for event hub capture" + }, + "defaultValue": 10485760 + }, + "eventhubSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "The messaging tier for service Bus namespace" + }, + "defaultValue": "Standard" + }, + "skuCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 4 + ], + "metadata": { + "description": "MessagingUnits for premium namespace" + }, + "defaultValue": 1 + }, + "isAutoInflateEnabled": { + "type": "string", + "allowedValues": [ + "True", + "False" + ], + "metadata": { + "description": "Enable or disable AutoInflate" + }, + "defaultValue": "True" + }, + "messageRetentionInDays": { + "type": "int", + "minValue": 1, + "maxValue": 7, + "metadata": { + "description": "How long to retain the data in Event Hub" + }, + "defaultValue": 1 + }, + "partitionCount": { + "type": "int", + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of partitions chosen" + }, + "defaultValue": 2 + }, + "captureEncodingFormat": { + "type": "string", + "allowedValues": [ + "Avro" + ], + "metadata": { + "description": "The encoding format Eventhub capture serializes the EventData when archiving to your storage" + }, + "defaultValue": "Avro" + }, + "adlAnalyticsName": { + "type": "string", + "defaultValue": "[toLower(concat('yashadlaa', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "The name of the Data Lake Analytics account to create." + } + }, + "adlStoreName": { + "type": "string", + "defaultValue": "[toLower(concat('yashadls1a', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "The name of the Data Lake Store account to create." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of vm Eg. Standard_D1_v2" + }, + "defaultValue": "Standard_D2_v3" + }, + "vm_username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vm_password": { + "type": "SecureString", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "OptionalWizardInstall": { + "type": "string", + "allowedValues": [ + "Yes", + "No" + ], + "defaultValue": "Yes", + "metadata": { + "description": "Select whether the VM should be in production or not." + } + }, + "dataFactoryName": { + "type": "string", + "metadata": { + "description": "Name of the data factory. Must be globally unique." + }, + "defaultValue": "[toLower(concat('yashdf', uniqueString(resourceGroup().id)))]" + }, + "appName": { + "type": "string", + "metadata": { + "description": "Name of the Azure datalake UI app registered. Must be globally unique." + }, + "defaultValue": "[toLower(concat('azuredatalakeuiappa', uniqueString(resourceGroup().id)))]" + }, + "servicePrincipalId": { + "type": "string", + "defaultValue": "null", + "metadata": { + "description": "The ID of the service principal that has permissions to create HDInsight clusters in your subscription." + } + }, + "servicePrincipalKey": { + "type": "SecureString", + "defaultValue": "", + "metadata": { + "description": "The access key of the service principal that has permissions to create HDInsight clusters in your subscription." + } + }, + "dataLakeAnalyticsLocation": { + "type": "string", + "allowedValues": [ + "East US 2", + "North Europe", + "Central US", + "West Europe", + "Australia East" + ], + "defaultValue": "East US 2", + "metadata": { + "description": "The location in which the resources will be created.Check supported locations" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located here" + } + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "storageAccountName": "[toLower(concat('storagea', uniqueString(resourceGroup().id)))]", + "blobContainer": "raw", + "storageAccountType": "Standard_LRS", + "maximumThroughputUnits": 8, + "DataCleaningInputStream": "datalakerawstreama", + "DataCleaningOutputStream": "datalakecleanstreama", + "captureNameFormat": "{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}", + "DataCleaningStreamAnalyticsJob": "cleanOrdersStreamAnalyticsJoba", + "DataAggregatorStreamAnalyticsJob1": "sellingProductPerMinJoba", + "DataAggregatorStreamAnalyticsJob2": "geoLocationsJoba", + "DataAggregatorStreamAnalyticsJob3": "ageGroupWiseRevenueJoba", + "dnsLabelPrefix": "[concat('datalake',uniquestring(resourceGroup().id,deployment().name))]", + "ES_Function_name": "[toLower(concat('elkstackFn', uniqueString(resourceGroup().id)))]", + "serverfarms_name": "[toLower(concat('elkstackASP', uniqueString(resourceGroup().id)))]", + "config_web_name_4": "web", + "artloc": "[concat('https://azbotstorage.blob.',environment().suffixes.storage,'/sample-artifacts/yash-datalake-2/')]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "name": "storageAccount", + "apiVersion": "2021-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nested/storageAccount.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageAccountName": { + "value": "[toLower(concat('storagea', uniqueString(resourceGroup().id)))]" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "dataFactory", + "apiVersion": "2021-01-01", + "dependsOn": [ + "KibanaESDeployedVM" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nested/dataFactory.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "KibanaESDeployedVMIP": { + "value": "[reference('KibanaESDeployedVM').outputs.publicIpAddress.value]" + }, + "storageAccountName": { + "value": "[toLower(concat('storagea', uniqueString(resourceGroup().id)))]" + }, + "_artifactsLocation": { + "value": "[variables('artloc')]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "dataFactoryName": { + "value": "[toLower(concat('yashdf', uniqueString(resourceGroup().id)))]" + }, + "dataFactoryLocation": { + "value": "[resourceGroup().location]" + }, + "blobContainer": { + "value": "raw" + }, + "servicePrincipalId": { + "value": "null" + }, + "servicePrincipalKey": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "dataLakeAnalytics", + "apiVersion": "2021-01-01", + "dependsOn": [ + "storageAccount" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nested/datalakeAnalytics.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adlAnalyticsName": { + "value": "[toLower(concat('yashadlaa', uniqueString(resourceGroup().id)))]" + }, + "adlStoreName": { + "value": "[toLower(concat('yashadls1a', uniqueString(resourceGroup().id)))]" + }, + "storageAccountName": { + "value": "[toLower(concat('storagea', uniqueString(resourceGroup().id)))]" + }, + "dataLakeAnalyticsLocation": { + "value": "East US 2" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "EventHubTemplate", + "apiVersion": "2021-01-01", + "dependsOn": [ + "dataLakeAnalytics" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nested/eventHub.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "eventHubNamespaceName": { + "value": "[toLower(concat('yashEventHubns', uniqueString(resourceGroup().id)))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "eventhubSku": { + "value": "Standard" + }, + "skuCapacity": { + "value": 1 + }, + "isAutoInflateEnabled": { + "value": "True" + }, + "maximumThroughputUnits": { + "value": 8 + }, + "DataCleaningInputStream": { + "value": "datalakerawstreama" + }, + "DataCleaningOutputStream": { + "value": "datalakecleanstreama" + }, + "messageRetentionInDays": { + "value": 1 + }, + "partitionCount": { + "value": 2 + }, + "captureEncodingFormat": { + "value": "Avro" + }, + "captureTime": { + "value": 300 + }, + "captureSize": { + "value": 10485760 + }, + "storageAccountName": { + "value": "[toLower(concat('storagea', uniqueString(resourceGroup().id)))]" + }, + "captureNameFormat": { + "value": "{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "streamAnalyticsJobsTemplate", + "apiVersion": "2021-01-01", + "dependsOn": [ + "EventHubTemplate" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nested/streamAnalytics.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "eventHubNamespaceName": { + "value": "[toLower(concat('yashEventHubns', uniqueString(resourceGroup().id)))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "DataCleaningInputStream": { + "value": "datalakerawstreama" + }, + "DataCleaningOutputStream": { + "value": "datalakecleanstreama" + }, + "storageAccountName": { + "value": "[toLower(concat('storagea', uniqueString(resourceGroup().id)))]" + }, + "DataCleaningStreamAnalyticsJob": { + "value": "cleanOrdersStreamAnalyticsJoba" + }, + "DataAggregatorStreamAnalyticsJob1": { + "value": "sellingProductPerMinJoba" + }, + "DataAggregatorStreamAnalyticsJob2": { + "value": "geoLocationsJoba" + }, + "DataAggregatorStreamAnalyticsJob3": { + "value": "ageGroupWiseRevenueJoba" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "name": "azureFunction", + "apiVersion": "2021-01-01", + "dependsOn": [ + "KibanaESDeployedVM", + "EventHubTemplate" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nested/azureFunction.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "KibanaESDeployedVMIP": { + "value": "[reference('KibanaESDeployedVM').outputs.publicIpAddress.value]" + }, + "storageAccountName": { + "value": "[toLower(concat('storagea', uniqueString(resourceGroup().id)))]" + }, + "appName": { + "value": "[toLower(concat('azuredatalakeuiappa', uniqueString(resourceGroup().id)))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "web_app_id": { + "value": "null" + }, + "web_app_secret": { + "value": "" + }, + "datafactory_name": { + "value": "[toLower(concat('yashdf', uniqueString(resourceGroup().id)))]" + }, + "eventhub_name": { + "value": "datalakerawstreama" + }, + "eventhub_namespace": { + "value": "[toLower(concat('yashEventHubns', uniqueString(resourceGroup().id)))]" + }, + "adla_account_name": { + "value": "[toLower(concat('yashadlaa', uniqueString(resourceGroup().id)))]" + }, + "DataCleaningStreamAnalyticsJob": { + "value": "cleanOrdersStreamAnalyticsJoba" + }, + "DataAggregatorStreamAnalyticsJob1": { + "value": "sellingProductPerMinJoba" + }, + "DataAggregatorStreamAnalyticsJob2": { + "value": "geoLocationsJoba" + }, + "DataAggregatorStreamAnalyticsJob3": { + "value": "ageGroupWiseRevenueJoba" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "KibanaESDeployedVM", + "apiVersion": "2021-01-01", + "dependsOn": [ + "storageAccount" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nested/elasticSearchKibana.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmSize": { + "value": "Standard_D2_v3" + }, + "username": { + "value": "GEN-UNIQUE" + }, + "password": { + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "value": "[variables('dnsLabelPrefix')]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "KibanaFunctionApp", + "apiVersion": "2021-01-01", + "dependsOn": [ + "KibanaESDeployedVM" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nested/blobTriggerdFunction.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storage_name": { + "value": "[toLower(concat('storagea', uniqueString(resourceGroup().id)))]" + }, + "kibanaFunctionHost": { + "value": "[toLower(concat('elkstackFn', uniqueString(resourceGroup().id)))]" + }, + "kibanaFunctionPath": { + "value": "/api/AddKibanaDashboard" + }, + "EsIP": { + "value": "[reference('KibanaESDeployedVM').outputs.publicIpAddress.value]" + }, + "serverfarms_name": { + "value": "[toLower(concat('elkstackASP', uniqueString(resourceGroup().id)))]" + }, + "sites_demotriggerapp1234_name": { + "value": "[toLower(concat('elkstackFn', uniqueString(resourceGroup().id)))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "config_web_name_4": { + "value": "web" + } + } + } + } + ], + "outputs": { + "websiteUrl": { + "type": "string", + "value": "[Concat(reference('azureFunction').outputs.websiteUrl.value,'/api/quickstart_wizard')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1255 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1255 new file mode 100644 index 0000000..36df8e1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1255 @@ -0,0 +1,580 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datamigration/azure-database-migration-service/azuredeploy.json", + "/quickstarts/microsoft.datamigration/azure-database-migration-service/azuredeploy.parameters.json" + ], + "timestamp": 1642962906135, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datamigration/azure-database-migration-service/azuredeploy.json", + "/quickstarts/microsoft.datamigration/azure-database-migration-service/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1255", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.datamigration/services", + "microsoft.network/networkinterfaces", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1255", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "Location where the resources will be deployed." + } + }, + "createPublicIP": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Do you want to create a public IP address for the source server?" + } + }, + "sourceWindowsAdminUserName": { + "type": "string", + "metadata": { + "description": "Windows Authentication user name for the source server" + }, + "value": "GEN-UNIQUE" + }, + "sourceWindowsAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Windows Authentication password for the source server" + }, + "value": "GEN-PASSWORD" + }, + "sourceSqlAuthenticationPassword": { + "type": "securestring", + "metadata": { + "description": "Sql Authentication password for the source server (User name will be same as Windows Auth)" + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Source VM size" + }, + "defaultValue": "Standard_D8s_v3" + }, + "targetSqlDbAdministratorLogin": { + "type": "string", + "metadata": { + "description": "Administrator User name for the Target Azure SQL DB Server." + }, + "value": "GEN-UNIQUE" + }, + "targetSqlDbAdministratorPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator Password for the Target Azure SQL DB Server." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "DMSServiceName": "[concat('DMS', uniqueString(resourceGroup().id))]", + "sourceServerName": "[take(concat('Source', uniqueString(resourceGroup().id)), 15)]", + "targetServerName": "[concat('targetservername', uniqueString(resourceGroup().id))]", + "scriptLocation": "AddDatabaseToSqlServer.ps1", + "bakFileLocation": "AdventureWorks2016.bak", + "scriptFiles": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptLocation'), parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat(variables('bakFileLocation'), parameters('_artifactsLocationSasToken')))]" + ], + "scriptParameters": "-userName GEN-UNIQUE -password \"GEN-PASSWORD", + "storageAccountNamePrefix": "storage", + "storageAccountName": "[toLower(concat(variables('storageAccountNamePrefix'), uniqueString(resourceGroup().id)))]", + "sourceNicName": "SourceNIC-1", + "publicIPSourceServer": "SourceServer1-ip", + "sourceServerNSG": "SourceServer1-nsg", + "adVNet": "AzureDataMigrationServiceTemplateRG-vnet", + "defaultSubnetName": "default", + "databaseName": "TargetDatabaseName1", + "publicIpAddressId": { + "id": "Microsoft.Network/publicIPAddresses/SourceServer1-ip" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[take(concat('Source', uniqueString(resourceGroup().id)), 15)]", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/SourceNIC-1" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2016SP1-WS2016", + "sku": "Standard", + "version": "latest" + }, + "osDisk": { + "osType": "Windows", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 127 + }, + "dataDisks": [ + { + "lun": 0, + "name": "[take(concat('Source', uniqueString(resourceGroup().id)), 15)]_disk-1", + "createOption": "Empty", + "caching": "ReadOnly", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 1023 + } + ] + }, + "osProfile": { + "computerName": "[take(concat('Source', uniqueString(resourceGroup().id)), 15)]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVMAgent": true, + "enableAutomaticUpdates": true + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/SourceNIC-1" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), '2019-06-01').primaryEndpoints['blob']]" + } + } + }, + "resources": [ + { + "apiVersion": "2019-12-01", + "type": "extensions", + "name": "SqlIaasExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//[take(concat('Source', uniqueString(resourceGroup().id)), 15)]" + ], + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": "true", + "settings": { + "AutoTelemetrySettings": { + "Region": "[resourceGroup().location]" + }, + "AutoPatchingSettings": { + "PatchCategory": "WindowsMandatoryUpdates", + "Enable": false, + "DayOfWeek": "Sunday", + "MaintenanceWindowStartingHour": "2", + "MaintenanceWindowDuration": "60" + }, + "KeyVaultCredentialSettings": { + "Enable": false + }, + "ServerConfigurationsManagementSettings": { + "SQLConnectivityUpdateSettings": { + "ConnectivityType": "Private", + "Port": "1433" + }, + "SQLWorkloadTypeUpdateSettings": { + "SQLWorkloadType": "OLTP" + }, + "SQLStorageUpdateSettings": { + "DiskCount": "1", + "NumberOfColumns": "8", + "StartingDeviceID": "2", + "DiskConfigurationType": "NEW" + }, + "AdditionalFeaturesServerConfigurations": { + "IsRServicesEnabled": "false" + } + } + }, + "protectedSettings": { + "SQLAuthUpdateUserName": "GEN-UNIQUE", + "SQLAuthUpdatePassword": "GEN-PASSWORD" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "extensions", + "name": "CustomScriptExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//[take(concat('Source', uniqueString(resourceGroup().id)), 15)]", + "Microsoft.Compute/virtualMachines/extensions/[take(concat('Source', uniqueString(resourceGroup().id)), 15)]/SqlIaasExtension" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptLocation'), parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat(variables('bakFileLocation'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File ./AddDatabaseToSqlServer.ps1 -userName GEN-UNIQUE -password \"GEN-PASSWORD" + } + } + } + ] + }, + { + "type": "Microsoft.DataMigration/services", + "sku": { + "name": "Standard_4vCores", + "tier": "Standard", + "size": "4 vCores" + }, + "name": "[variables('DMSServiceName')]", + "apiVersion": "2018-07-15-preview", + "location": "[resourceGroup().location]", + "properties": { + "virtualSubnetId": "Microsoft.Network/virtualNetworks/subnets/AzureDataMigrationServiceTemplateRG-vnet/default" + }, + "resources": [ + { + "type": "projects", + "name": "SqlToSqlDbMigrationProject", + "apiVersion": "2018-07-15-preview", + "location": "[resourceGroup().location]", + "properties": { + "sourcePlatform": "SQL", + "targetPlatform": "SQLDB" + }, + "dependsOn": [ + "[resourceId('Microsoft.DataMigration/services', variables('DMSServiceName'))]" + ] + } + ], + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/AzureDataMigrationServiceTemplateRG-vnet/default" + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "SourceNIC-1", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/AzureDataMigrationServiceTemplateRG-vnet/default", + "Microsoft.Network/publicIpAddresses/SourceServer1-ip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/AzureDataMigrationServiceTemplateRG-vnet/default" + }, + "publicIPAddress": "[if(parameters('createPublicIP'), variables('publicIpAddressId'), json('null'))]", + "primary": true, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": false, + "enableIPForwarding": false + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "SourceServer1-nsg", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "AllowAzureLoadBalancerInBound", + "properties": { + "description": "Allow inbound traffic from azure load balancer", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 65001, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "condition": true, + "type": "Microsoft.Network/publicIPAddresses", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "name": "SourceServer1-ip", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "AzureDataMigrationServiceTemplateRG-vnet", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.2.0.0/24" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.2.0.0/24" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + }, + "resources": [ + { + "type": "subnets", + "name": "default", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/AzureDataMigrationServiceTemplateRG-vnet" + ], + "properties": { + "addressPrefix": "10.2.0.0/24" + } + } + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "name": "[toLower(concat(variables('storageAccountNamePrefix'), uniqueString(resourceGroup().id)))]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": false, + "encryption": { + "services": { + "file": { + "enabled": true + }, + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "type": "Microsoft.Sql/servers", + "name": "[concat(variables('targetServerName'))]", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "type": "databases", + "sku": { + "name": "S3", + "tier": "Standard" + }, + "name": "TargetDatabaseName1", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', concat(variables('targetServerName')))]" + ], + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": 2147483648, + "zoneRedundant": false + }, + "resources": [ + { + "name": "Import", + "type": "extensions", + "apiVersion": "2014-04-01", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers/databases', variables('targetServerName'), variables('databaseName'))]" + ], + "properties": { + "storageKey": "", + "storageKeyType": "SharedAccessKey", + "storageUri": "[uri(parameters('_artifactsLocation'), 'templatefiles/AdventureWorks2016.bacpac')]", + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "operationMode": "Import" + } + } + ] + }, + { + "type": "firewallrules", + "name": "AllowAllWindowsAzureIps", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', concat(variables('targetServerName')))]" + ], + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1256 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1256 new file mode 100644 index 0000000..8605fcd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1256 @@ -0,0 +1,112 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datamigration/azure-database-migration-simple-deploy/azuredeploy.json", + "/quickstarts/microsoft.datamigration/azure-database-migration-simple-deploy/azuredeploy.parameters.json" + ], + "timestamp": 1642962906152, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datamigration/azure-database-migration-simple-deploy/azuredeploy.json", + "/quickstarts/microsoft.datamigration/azure-database-migration-simple-deploy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1256", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.datamigration/services", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1256", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceName": { + "type": "string", + "metadata": { + "description": "Name of the new migration service." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location where the resources will be deployed." + } + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the new virtual network." + }, + "value": "GEN-UNIQUE" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the new subnet associated with the virtual network." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "type": "Microsoft.DataMigration/services", + "apiVersion": "2018-07-15-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "tier": "Standard", + "size": "1 vCores", + "name": "Standard_1vCores" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GEN-UNIQUE" + ], + "properties": { + "virtualSubnetId": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GEN-UNIQUE" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1257 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1257 new file mode 100644 index 0000000..e735709 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1257 @@ -0,0 +1,268 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-create-disk-enable-protection/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-create-disk-enable-protection/azuredeploy.parameters.json" + ], + "timestamp": 1642962906162, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-create-disk-enable-protection/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-create-disk-enable-protection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1257", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dataprotection/backupvaults", + "microsoft.authorization/roleassignments", + "microsoft.compute/disks", + "microsoft.dataprotection/backupvaults/backuppolicies", + "microsoft.dataprotection/backupvaults/backupinstances" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1257", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "10547656111475360214" + } + }, + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "[format('vault{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Vault" + } + }, + "vaultStorageRedundancy": { + "type": "string", + "defaultValue": "GeoRedundant", + "allowedValues": [ + "LocallyRedundant", + "GeoRedundant" + ], + "metadata": { + "description": "Change Vault Storage Type (not allowed if the vault has registered backups)" + } + }, + "backupPolicyName": { + "type": "string", + "defaultValue": "[format('policy{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Backup Policy" + } + }, + "retentionDays": { + "type": "int", + "defaultValue": 30, + "maxValue": 35, + "minValue": 1, + "metadata": { + "description": "Retention duration in days" + } + }, + "diskName": { + "type": "string", + "defaultValue": "[format('disk{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Disk" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + } + }, + "functions": [], + "variables": { + "roleDefinitionIdForDisk": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '3e5e47e6-65f7-47ef-90b5-e5dd4d455f24')]", + "roleDefinitionIdForSnapshotRG": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7efff54f-a5b4-42b5-a1c5-5411624893ce')]", + "dataSourceType": "Microsoft.Compute/disks", + "resourceType": "Microsoft.Compute/disks", + "retentionDuration": "[format('P{0}D', parameters('retentionDays'))]", + "repeatingTimeInterval": "R/2021-05-20T22:00:00+00:00/PT4H", + "roleNameGuidForDisk": "[guid(resourceGroup().id, variables('roleDefinitionIdForDisk'), resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')))]", + "roleNameGuidForSnapshotRG": "[guid(resourceGroup().id, variables('roleDefinitionIdForSnapshotRG'), resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')))]" + }, + "resources": [ + { + "type": "Microsoft.DataProtection/backupVaults", + "apiVersion": "2021-01-01", + "name": "[format('vault{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "storageSettings": [ + { + "datastoreType": "VaultStore", + "type": "GeoRedundant" + } + ] + } + }, + { + "type": "Microsoft.DataProtection/backupVaults/backupPolicies", + "apiVersion": "2021-01-01", + "name": "[format('{0}/{1}', parameters('vaultName'), parameters('backupPolicyName'))]", + "properties": { + "policyRules": [ + { + "backupParameters": { + "backupType": "Incremental", + "objectType": "AzureBackupParams" + }, + "trigger": { + "schedule": { + "repeatingTimeIntervals": [ + "R/2021-05-20T22:00:00+00:00/PT4H" + ], + "timeZone": "UTC" + }, + "taggingCriteria": [ + { + "tagInfo": { + "tagName": "Default", + "id": "Default_" + }, + "taggingPriority": 99, + "isDefault": true + } + ], + "objectType": "ScheduleBasedTriggerContext" + }, + "dataStore": { + "dataStoreType": "OperationalStore", + "objectType": "DataStoreInfoBase" + }, + "name": "BackupHourly", + "objectType": "AzureBackupRule" + }, + { + "lifecycles": [ + { + "sourceDataStore": { + "dataStoreType": "OperationalStore", + "objectType": "DataStoreInfoBase" + }, + "deleteAfter": { + "objectType": "AbsoluteDeleteOption", + "duration": "[format('P{0}D', parameters('retentionDays'))]" + } + } + ], + "isDefault": true, + "name": "Default", + "objectType": "AzureRetentionRule", + "ruleType": "Retention" + } + ], + "datasourceTypes": [ + "Microsoft.Compute/disks" + ], + "objectType": "BackupPolicy" + }, + "dependsOn": [ + "Microsoft.DataProtection/backupVaults/[format('vault{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Compute/disks", + "apiVersion": "2020-12-01", + "name": "[format('disk{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "creationData": { + "createOption": "Empty" + }, + "diskSizeGB": 200 + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id, variables('roleDefinitionIdForDisk'), resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '3e5e47e6-65f7-47ef-90b5-e5dd4d455f24')]", + "principalId": "[reference(resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')), '2021-01-01', 'Full').identity.principalId]" + }, + "dependsOn": [ + "Microsoft.DataProtection/backupVaults/backupPolicies/[format('vault{0}', uniqueString(resourceGroup().id))]/[format('policy{0}', uniqueString(resourceGroup().id))]", + "Microsoft.DataProtection/backupVaults/[format('vault{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/disks/[format('disk{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id, variables('roleDefinitionIdForSnapshotRG'), resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7efff54f-a5b4-42b5-a1c5-5411624893ce')]", + "principalId": "[reference(resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')), '2021-01-01', 'Full').identity.principalId]" + }, + "dependsOn": [ + "Microsoft.DataProtection/backupVaults/backupPolicies/[format('vault{0}', uniqueString(resourceGroup().id))]/[format('policy{0}', uniqueString(resourceGroup().id))]", + "Microsoft.DataProtection/backupVaults/[format('vault{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/disks/[format('disk{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.DataProtection/backupVaults/backupInstances", + "apiVersion": "2021-01-01", + "name": "[format('{0}/{1}', parameters('vaultName'), parameters('diskName'))]", + "properties": { + "objectType": "BackupInstance", + "dataSourceInfo": { + "objectType": "Datasource", + "resourceID": "Microsoft.Compute/disks/[format('disk{0}', uniqueString(resourceGroup().id))]", + "resourceName": "[format('disk{0}', uniqueString(resourceGroup().id))]", + "resourceType": "Microsoft.Compute/disks", + "resourceUri": "Microsoft.Compute/disks/[format('disk{0}', uniqueString(resourceGroup().id))]", + "resourceLocation": "[resourceGroup().location]", + "datasourceType": "Microsoft.Compute/disks" + }, + "policyInfo": { + "policyId": "Microsoft.DataProtection/backupVaults/backupPolicies/[format('vault{0}', uniqueString(resourceGroup().id))]/[format('policy{0}', uniqueString(resourceGroup().id))]", + "name": "[format('policy{0}', uniqueString(resourceGroup().id))]", + "policyParameters": { + "dataStoreParametersList": [ + { + "objectType": "AzureOperationalStoreParameters", + "dataStoreType": "OperationalStore", + "resourceGroupId": "[resourceGroup().id]" + } + ] + } + } + }, + "dependsOn": [ + "Microsoft.DataProtection/backupVaults/backupPolicies/[format('vault{0}', uniqueString(resourceGroup().id))]/[format('policy{0}', uniqueString(resourceGroup().id))]", + "Microsoft.DataProtection/backupVaults/[format('vault{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/disks/[format('disk{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Authorization/roleAssignments/[guid(resourceGroup().id, variables('roleDefinitionIdForDisk'), resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')))]", + "Microsoft.Authorization/roleAssignments/[guid(resourceGroup().id, variables('roleDefinitionIdForSnapshotRG'), resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1258 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1258 new file mode 100644 index 0000000..80dcdec --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1258 @@ -0,0 +1,209 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-create-storage-account-enable-protection/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-create-storage-account-enable-protection/azuredeploy.parameters.json" + ], + "timestamp": 1642962906172, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-create-storage-account-enable-protection/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-create-storage-account-enable-protection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1258", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dataprotection/backupvaults", + "microsoft.authorization/roleassignments", + "microsoft.dataprotection/backupvaults/backuppolicies", + "microsoft.dataprotection/backupvaults/backupinstances", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1258", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "594668244619437187" + } + }, + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "[format('vault{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Vault" + } + }, + "vaultStorageRedundancy": { + "type": "string", + "defaultValue": "GeoRedundant", + "allowedValues": [ + "LocallyRedundant", + "GeoRedundant" + ], + "metadata": { + "description": "Change Vault Storage Type (not allowed if the vault has registered backups)" + } + }, + "backupPolicyName": { + "type": "string", + "defaultValue": "[format('policy{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Backup Policy" + } + }, + "retentionDays": { + "type": "int", + "defaultValue": 30, + "maxValue": 360, + "minValue": 1, + "metadata": { + "description": "Retention duration in days" + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Storage Account" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + } + }, + "functions": [], + "variables": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1')]", + "dataSourceType": "Microsoft.Storage/storageAccounts/blobServices", + "resourceType": "Microsoft.Storage/storageAccounts", + "retentionDuration": "[format('P{0}D', parameters('retentionDays'))]" + }, + "resources": [ + { + "type": "Microsoft.DataProtection/backupVaults", + "apiVersion": "2021-01-01", + "name": "[format('vault{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "storageSettings": [ + { + "datastoreType": "VaultStore", + "type": "GeoRedundant" + } + ] + } + }, + { + "type": "Microsoft.DataProtection/backupVaults/backupPolicies", + "apiVersion": "2021-01-01", + "name": "[format('{0}/{1}', parameters('vaultName'), parameters('backupPolicyName'))]", + "properties": { + "policyRules": [ + { + "lifecycles": [ + { + "sourceDataStore": { + "dataStoreType": "OperationalStore", + "objectType": "DataStoreInfoBase" + }, + "deleteAfter": { + "objectType": "AbsoluteDeleteOption", + "duration": "[format('P{0}D', parameters('retentionDays'))]" + } + } + ], + "isDefault": true, + "name": "Default", + "objectType": "AzureRetentionRule", + "ruleType": "Retention" + } + ], + "datasourceTypes": [ + "Microsoft.Storage/storageAccounts/blobServices" + ], + "objectType": "BackupPolicy" + }, + "dependsOn": [ + "Microsoft.DataProtection/backupVaults/[format('vault{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-06-01", + "name": "[format('store{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_RAGRS", + "tier": "Standard" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', parameters('storageAccountName'))]", + "name": "[guid(resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')), variables('roleDefinitionId'), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'e5e2a7ff-d759-4cd2-bb51-3152d37e2eb1')]", + "principalId": "[reference(resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')), '2021-01-01', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.DataProtection/backupVaults/[format('vault{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[format('store{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.DataProtection/backupVaults/backupInstances", + "apiVersion": "2021-01-01", + "name": "[format('{0}/{1}', parameters('vaultName'), parameters('storageAccountName'))]", + "properties": { + "objectType": "BackupInstance", + "dataSourceInfo": { + "objectType": "Datasource", + "resourceID": "Microsoft.Storage/storageAccounts/[format('store{0}', uniqueString(resourceGroup().id))]", + "resourceName": "[format('store{0}', uniqueString(resourceGroup().id))]", + "resourceType": "Microsoft.Storage/storageAccounts", + "resourceUri": "Microsoft.Storage/storageAccounts/[format('store{0}', uniqueString(resourceGroup().id))]", + "resourceLocation": "[resourceGroup().location]", + "datasourceType": "Microsoft.Storage/storageAccounts/blobServices" + }, + "policyInfo": { + "policyId": "Microsoft.DataProtection/backupVaults/backupPolicies/[format('vault{0}', uniqueString(resourceGroup().id))]/[format('policy{0}', uniqueString(resourceGroup().id))]", + "name": "[format('policy{0}', uniqueString(resourceGroup().id))]" + } + }, + "dependsOn": [ + "Microsoft.DataProtection/backupVaults/backupPolicies/[format('vault{0}', uniqueString(resourceGroup().id))]/[format('policy{0}', uniqueString(resourceGroup().id))]", + "Microsoft.DataProtection/backupVaults/[format('vault{0}', uniqueString(resourceGroup().id))]", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments', guid(resourceId('Microsoft.DataProtection/backupVaults', parameters('vaultName')), variables('roleDefinitionId'), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))))]", + "Microsoft.Storage/storageAccounts/[format('store{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1259 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1259 new file mode 100644 index 0000000..1a7cbb4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1259 @@ -0,0 +1,82 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-vault-basic/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-vault-basic/azuredeploy.parameters.json" + ], + "timestamp": 1642962906181, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dataprotection/backup-vault-basic/azuredeploy.json", + "/quickstarts/microsoft.dataprotection/backup-vault-basic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1259", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dataprotection/backupvaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1259", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "BackupVault", + "metadata": { + "description": "Name of the Vault" + } + }, + "vaultStorageRedundancy": { + "type": "string", + "defaultValue": "GeoRedundant", + "allowedValues": [ + "LocallyRedundant", + "GeoRedundant" + ], + "metadata": { + "description": "Change Vault Storage Type (not allowed if the vault has registered backups)" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.DataProtection/BackupVaults", + "apiVersion": "2021-01-01", + "name": "BackupVault", + "location": "[resourceGroup().location]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "storageSettings": [ + { + "datastoreType": "VaultStore", + "type": "GeoRedundant" + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT126 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT126 new file mode 100644 index 0000000..bbcddf2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT126 @@ -0,0 +1,194 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/jumpbox-resources.json" + ], + "timestamp": 1642962887370, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/jumpbox-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT126", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT126", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespace": { + "type": "string", + "defaultValue": "jumpbox", + "metadata": { + "description": "The namespace prefix for resources created by this template" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "Subnet object for provisioning resources in (expects properties name as the subnet name, and vnet as the virtual network name on the object)" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "Elasticsearch deployment platform settings" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Jump box VM size" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "vmName": "jumpbox-vm", + "publicIpName": "jumpbox-pip", + "securityGroupName": "jumpbox-nsg", + "nicName": "jumpbox-nic" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "jumpbox-nsg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "osSettings", + "destinationPortRange": "osSettings", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "jumpbox-pip", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpbox-nic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/jumpbox-pip", + "Microsoft.Network/networkSecurityGroups/jumpbox-nsg" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/jumpbox-nsg" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/jumpbox-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpbox-vm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/jumpbox-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "jumpbox", + "adminUsername": "adminUsername", + "adminPassword": "authSet", + "linuxConfiguration": "osSettings" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "jumpbox-vm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpbox-nic" + } + ] + } + } + } + ], + "outputs": { + "jumpbox-pip": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpName'))).ipAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1260 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1260 new file mode 100644 index 0000000..e189016 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1260 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962906191, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1260", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datashare/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1260", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "2743494220556931074" + } + }, + "parameters": { + "accountName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Data Share account." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.DataShare/accounts", + "apiVersion": "2021-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1261 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1261 new file mode 100644 index 0000000..f09618c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1261 @@ -0,0 +1,90 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share/azuredeploy.parameters.json" + ], + "timestamp": 1642962906197, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1261", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datashare/accounts", + "microsoft.datashare/accounts/shares" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1261", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "13823051025138868861" + } + }, + "parameters": { + "accountName": { + "type": "string", + "metadata": { + "description": "Name for your Data Share Account" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for your data share" + } + }, + "shareName": { + "type": "string", + "defaultValue": "share", + "metadata": { + "description": "Name for your data share" + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.DataShare/accounts", + "apiVersion": "2021-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + } + }, + { + "type": "Microsoft.DataShare/accounts/shares", + "apiVersion": "2021-08-01", + "name": "[format('{0}/{1}', parameters('accountName'), parameters('shareName'))]", + "properties": { + "shareKind": "CopyBased" + }, + "dependsOn": [ + "Microsoft.DataShare/accounts/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1262 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1262 new file mode 100644 index 0000000..4aa776a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1262 @@ -0,0 +1,228 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962906205, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1262", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.datashare/accounts/shares/datasets", + "microsoft.datashare/accounts/shares/synchronizationsettings", + "microsoft.datashare/accounts/shares", + "microsoft.datashare/accounts/shares/invitations", + "microsoft.datashare/accounts", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1262", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "projectName": { + "type": "string", + "metadata": { + "description": "Specify a project name that is used to generate resource names." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "allowedValues": [ + "eastus", + "eastus2", + "southeastasia", + "westcentralus", + "westeurope", + "westus2", + "austriliaeast", + "northeurope", + "uksouth", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specify the location for the resources." + }, + "value": "eastus" + }, + "invitationEmail": { + "type": "string", + "metadata": { + "description": "Specify an email address for receiving data share invitations." + }, + "value": "someone@contoso.com" + }, + "syncKind": { + "type": "string", + "defaultValue": "ScheduleBased", + "metadata": { + "description": "Specify the kind of synchronization." + } + }, + "syncInterval": { + "type": "string", + "defaultValue": "Day", + "allowedValues": [ + "Day", + "Hour" + ], + "metadata": { + "description": "Specify snapshot schedule recurrence." + } + }, + "syncTime": { + "type": "string", + "defaultValue": "[utcNow('yyyy-MM-ddTHH:mm:ssZ')]", + "metadata": { + "description": "Specify snapshot schedule start time." + } + }, + "storageAccountSubscriptionID": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "Specify the subscription ID of the storage account. Because this template creates the storage account in the same resource group as the data sharing account, use the current subscription ID." + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Specify the resource group of the storage account. Because this template creates the storage account in the same resource group as the data sharing account, use the resource group." + } + } + }, + "variables": { + "storageAccountName": "GEN-UNIQUE-8store", + "containerName": "GEN-UNIQUE-8container", + "dataShareAccountName": "GEN-UNIQUE-8shareaccount", + "dataShareName": "GEN-UNIQUE-8share", + "roleAssignmentName": "[guid(uniqueString(variables('storageAccountName'), variables('storageBlobDataReaderRoleDefinitionId'), variables('dataShareAccountName')))]", + "inviteName": "GEN-UNIQUE-8shareinvite", + "storageBlobDataReaderRoleDefinitionId": "Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE-8store", + "location": "eastus", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot" + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "name": "default/GEN-UNIQUE-8container", + "dependsOn": [ + "GEN-UNIQUE-8store" + ] + } + ] + }, + { + "type": "Microsoft.DataShare/accounts", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount", + "location": "eastus", + "identity": { + "type": "SystemAssigned" + }, + "properties": {} + }, + { + "type": "Microsoft.DataShare/accounts/shares", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share", + "dependsOn": [ + "Microsoft.DataShare/accounts/GEN-UNIQUE-8shareaccount" + ], + "properties": { + "shareKind": "CopyBased" + } + }, + { + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', variables('storageAccountName'))]", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(uniqueString(variables('storageAccountName'), variables('storageBlobDataReaderRoleDefinitionId'), variables('dataShareAccountName')))]", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1", + "principalId": "[reference(resourceId('Microsoft.DataShare/accounts', variables('dataShareAccountName')), '2019-11-01', 'Full').identity.principalId]" + } + }, + { + "type": "Microsoft.DataShare/accounts/shares/dataSets", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share/GEN-UNIQUE-8container", + "dependsOn": [ + "Microsoft.DataShare/accounts/shares/GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share", + "Microsoft.DataShare/accounts/GEN-UNIQUE-8shareaccount", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), 'Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]" + ], + "kind": "Container", + "properties": { + "subscriptionId": "[subscription().subscriptionId]", + "resourceGroup": "[resourceGroup().name]", + "storageAccountName": "GEN-UNIQUE-8store", + "containerName": "GEN-UNIQUE-8container" + } + }, + { + "type": "Microsoft.DataShare/accounts/shares/invitations", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share/GEN-UNIQUE-8shareinvite", + "dependsOn": [ + "Microsoft.DataShare/accounts/shares/GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share", + "Microsoft.DataShare/accounts/GEN-UNIQUE-8shareaccount", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), 'Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]" + ], + "properties": { + "targetEmail": "someone@contoso.com" + } + }, + { + "type": "Microsoft.DataShare/accounts/shares/synchronizationSettings", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share/GEN-UNIQUE-8share_synchronizationSetting", + "dependsOn": [ + "Microsoft.DataShare/accounts/shares/GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share", + "Microsoft.DataShare/accounts/GEN-UNIQUE-8shareaccount", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), 'Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]" + ], + "kind": "ScheduleBased", + "properties": { + "recurrenceInterval": "Day", + "synchronizationTime": "[utcNow('yyyy-MM-ddTHH:mm:ssZ')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1263 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1263 new file mode 100644 index 0000000..53c1cc4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1263 @@ -0,0 +1,228 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906214, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.json", + "/quickstarts/microsoft.datashare/data-share-share-storage-account/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1263", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.datashare/accounts/shares/datasets", + "microsoft.datashare/accounts/shares/synchronizationsettings", + "microsoft.datashare/accounts/shares", + "microsoft.datashare/accounts/shares/invitations", + "microsoft.datashare/accounts", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1263", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "projectName": { + "type": "string", + "metadata": { + "description": "Specify a project name that is used to generate resource names." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "allowedValues": [ + "eastus", + "eastus2", + "southeastasia", + "westcentralus", + "westeurope", + "westus2", + "austriliaeast", + "northeurope", + "uksouth", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specify the location for the resources." + }, + "value": "usgovvirginia" + }, + "invitationEmail": { + "type": "string", + "metadata": { + "description": "Specify an email address for receiving data share invitations." + }, + "value": "someone@contoso.com" + }, + "syncKind": { + "type": "string", + "defaultValue": "ScheduleBased", + "metadata": { + "description": "Specify the kind of synchronization." + } + }, + "syncInterval": { + "type": "string", + "defaultValue": "Day", + "allowedValues": [ + "Day", + "Hour" + ], + "metadata": { + "description": "Specify snapshot schedule recurrence." + } + }, + "syncTime": { + "type": "string", + "defaultValue": "[utcNow('yyyy-MM-ddTHH:mm:ssZ')]", + "metadata": { + "description": "Specify snapshot schedule start time." + } + }, + "storageAccountSubscriptionID": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "Specify the subscription ID of the storage account. Because this template creates the storage account in the same resource group as the data sharing account, use the current subscription ID." + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Specify the resource group of the storage account. Because this template creates the storage account in the same resource group as the data sharing account, use the resource group." + } + } + }, + "variables": { + "storageAccountName": "GEN-UNIQUE-8store", + "containerName": "GEN-UNIQUE-8container", + "dataShareAccountName": "GEN-UNIQUE-8shareaccount", + "dataShareName": "GEN-UNIQUE-8share", + "roleAssignmentName": "[guid(uniqueString(variables('storageAccountName'), variables('storageBlobDataReaderRoleDefinitionId'), variables('dataShareAccountName')))]", + "inviteName": "GEN-UNIQUE-8shareinvite", + "storageBlobDataReaderRoleDefinitionId": "Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE-8store", + "location": "usgovvirginia", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot" + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "name": "default/GEN-UNIQUE-8container", + "dependsOn": [ + "GEN-UNIQUE-8store" + ] + } + ] + }, + { + "type": "Microsoft.DataShare/accounts", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount", + "location": "usgovvirginia", + "identity": { + "type": "SystemAssigned" + }, + "properties": {} + }, + { + "type": "Microsoft.DataShare/accounts/shares", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share", + "dependsOn": [ + "Microsoft.DataShare/accounts/GEN-UNIQUE-8shareaccount" + ], + "properties": { + "shareKind": "CopyBased" + } + }, + { + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', variables('storageAccountName'))]", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(uniqueString(variables('storageAccountName'), variables('storageBlobDataReaderRoleDefinitionId'), variables('dataShareAccountName')))]", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1", + "principalId": "[reference(resourceId('Microsoft.DataShare/accounts', variables('dataShareAccountName')), '2019-11-01', 'Full').identity.principalId]" + } + }, + { + "type": "Microsoft.DataShare/accounts/shares/dataSets", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share/GEN-UNIQUE-8container", + "dependsOn": [ + "Microsoft.DataShare/accounts/shares/GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share", + "Microsoft.DataShare/accounts/GEN-UNIQUE-8shareaccount", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), 'Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]" + ], + "kind": "Container", + "properties": { + "subscriptionId": "[subscription().subscriptionId]", + "resourceGroup": "[resourceGroup().name]", + "storageAccountName": "GEN-UNIQUE-8store", + "containerName": "GEN-UNIQUE-8container" + } + }, + { + "type": "Microsoft.DataShare/accounts/shares/invitations", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share/GEN-UNIQUE-8shareinvite", + "dependsOn": [ + "Microsoft.DataShare/accounts/shares/GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share", + "Microsoft.DataShare/accounts/GEN-UNIQUE-8shareaccount", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), 'Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]" + ], + "properties": { + "targetEmail": "someone@contoso.com" + } + }, + { + "type": "Microsoft.DataShare/accounts/shares/synchronizationSettings", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share/GEN-UNIQUE-8share_synchronizationSetting", + "dependsOn": [ + "Microsoft.DataShare/accounts/shares/GEN-UNIQUE-8shareaccount/GEN-UNIQUE-8share", + "Microsoft.DataShare/accounts/GEN-UNIQUE-8shareaccount", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), 'Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]" + ], + "kind": "ScheduleBased", + "properties": { + "recurrenceInterval": "Day", + "synchronizationTime": "[utcNow('yyyy-MM-ddTHH:mm:ssZ')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1264 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1264 new file mode 100644 index 0000000..75b6828 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1264 @@ -0,0 +1,275 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.dbformariadb/managed-mariadb-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbformariadb/managed-mariadb-with-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962906225, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dbformariadb/managed-mariadb-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbformariadb/managed-mariadb-with-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1264", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.dbformariadb/servers", + "microsoft.dbformariadb/servers/firewallrules", + "microsoft.dbformariadb/servers/virtualnetworkrules", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1264", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "4991438295387245717" + } + }, + "parameters": { + "serverName": { + "type": "string", + "metadata": { + "description": "Server Name for Azure database for MariaDB" + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-8" + }, + "administratorLoginPassword": { + "type": "secureString", + "minLength": 8, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "skuCapacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Azure database for MariaDB compute capacity in vCores (2,4,8,16,32)" + } + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "metadata": { + "description": "Azure database for MariaDB sku name " + } + }, + "skuSizeMB": { + "type": "int", + "defaultValue": 51200, + "metadata": { + "description": "Azure database for MariaDB Sku Size " + } + }, + "skuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "metadata": { + "description": "Azure database for MariaDB pricing tier" + } + }, + "skuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for MariaDB sku family" + } + }, + "mariadbVersion": { + "type": "string", + "defaultValue": "10.3", + "allowedValues": [ + "10.2", + "10.3" + ], + "metadata": { + "description": "MariaDB version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "backupRetentionDays": { + "type": "int", + "defaultValue": 7, + "metadata": { + "description": "MariaDB Server backup retention days" + } + }, + "geoRedundantBackup": { + "type": "string", + "defaultValue": "Disabled", + "metadata": { + "description": "Geo-Redundant Backup setting" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "azure_mariadb_vnet", + "metadata": { + "description": "Virtual Network Name" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "azure_mariadb_subnet", + "metadata": { + "description": "Subnet Name" + } + }, + "virtualNetworkRuleName": { + "type": "string", + "defaultValue": "AllowSubnet", + "metadata": { + "description": "Virtual Network RuleName" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual Network Address Prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Subnet Address Prefix" + } + } + }, + "functions": [], + "variables": { + "firewallrules": [ + { + "Name": "rule1", + "StartIpAddress": "0.0.0.0", + "EndIpAddress": "255.255.255.255" + }, + { + "Name": "rule2", + "StartIpAddress": "0.0.0.0", + "EndIpAddress": "255.255.255.255" + } + ] + }, + "resources": [ + { + "type": "Microsoft.DBforMariaDB/servers/virtualNetworkRules", + "apiVersion": "2018-06-01", + "name": "[format('{0}/{1}', parameters('serverName'), parameters('virtualNetworkRuleName'))]", + "properties": { + "virtualNetworkSubnetId": "Microsoft.Network/virtualNetworks/subnets/azure_mariadb_vnet/azure_mariadb_subnet", + "ignoreMissingVnetServiceEndpoint": true + }, + "dependsOn": [ + "Microsoft.DBforMariaDB/servers/GEN-UNIQUE", + "Microsoft.Network/virtualNetworks/subnets/azure_mariadb_vnet/azure_mariadb_subnet" + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "azure_mariadb_vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]", + "properties": { + "addressPrefix": "10.0.0.0/16" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/azure_mariadb_vnet" + ] + }, + { + "type": "Microsoft.DBforMariaDB/servers", + "apiVersion": "2018-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": "[format('{0}', parameters('skuSizeMB'))]", + "family": "Gen5" + }, + "properties": { + "createMode": "Default", + "version": "10.3", + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD", + "storageProfile": { + "storageMB": 51200, + "backupRetentionDays": 7, + "geoRedundantBackup": "Disabled" + } + } + }, + { + "type": "Microsoft.DBforMariaDB/servers/firewallRules", + "apiVersion": "2018-06-01", + "name": "[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]", + "properties": { + "startIpAddress": "(firewallrules)[copyIndex()].StartIpAddress", + "endIpAddress": "(firewallrules)[copyIndex()].EndIpAddress" + }, + "dependsOn": [ + "Microsoft.DBforMariaDB/servers/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.DBforMariaDB/servers/firewallRules", + "apiVersion": "2018-06-01", + "name": "[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]", + "properties": { + "startIpAddress": "(firewallrules)[copyIndex()].StartIpAddress", + "endIpAddress": "(firewallrules)[copyIndex()].EndIpAddress" + }, + "dependsOn": [ + "Microsoft.DBforMariaDB/servers/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1265 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1265 new file mode 100644 index 0000000..5f2a43b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1265 @@ -0,0 +1,281 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.dbformysql/managed-mysql-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbformysql/managed-mysql-with-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962906234, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dbformysql/managed-mysql-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbformysql/managed-mysql-with-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1265", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.dbformysql/servers/virtualnetworkrules", + "microsoft.dbformysql/servers/firewallrules", + "microsoft.dbformysql/servers", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1265", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "6360281189485765882" + } + }, + "parameters": { + "serverName": { + "type": "string", + "metadata": { + "description": "Server Name for Azure database for MySQL" + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-8" + }, + "administratorLoginPassword": { + "type": "secureString", + "minLength": 8, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "skuCapacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Azure database for MySQL compute capacity in vCores (2,4,8,16,32)" + } + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "metadata": { + "description": "Azure database for MySQL sku name " + } + }, + "SkuSizeMB": { + "type": "int", + "defaultValue": 5120, + "metadata": { + "description": "Azure database for MySQL Sku Size " + } + }, + "SkuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "Basic", + "GeneralPurpose", + "MemoryOptimized" + ], + "metadata": { + "description": "Azure database for MySQL pricing tier" + } + }, + "skuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for MySQL sku family" + } + }, + "mysqlVersion": { + "type": "string", + "defaultValue": "8.0", + "allowedValues": [ + "5.6", + "5.7", + "8.0" + ], + "metadata": { + "description": "MySQL version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "backupRetentionDays": { + "type": "int", + "defaultValue": 7, + "metadata": { + "description": "MySQL Server backup retention days" + } + }, + "geoRedundantBackup": { + "type": "string", + "defaultValue": "Disabled", + "metadata": { + "description": "Geo-Redundant Backup setting" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "azure_mysql_vnet", + "metadata": { + "description": "Virtual Network Name" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "azure_mysql_subnet", + "metadata": { + "description": "Subnet Name" + } + }, + "virtualNetworkRuleName": { + "type": "string", + "defaultValue": "AllowSubnet", + "metadata": { + "description": "Virtual Network RuleName" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual Network Address Prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Subnet Address Prefix" + } + } + }, + "functions": [], + "variables": { + "firewallrules": [ + { + "Name": "rule1", + "StartIpAddress": "0.0.0.0", + "EndIpAddress": "255.255.255.255" + }, + { + "Name": "rule2", + "StartIpAddress": "0.0.0.0", + "EndIpAddress": "255.255.255.255" + } + ] + }, + "resources": [ + { + "type": "Microsoft.DBforMySQL/servers/virtualNetworkRules", + "apiVersion": "2017-12-01", + "name": "[format('{0}/{1}', parameters('serverName'), parameters('virtualNetworkRuleName'))]", + "properties": { + "virtualNetworkSubnetId": "Microsoft.Network/virtualNetworks/subnets/azure_mysql_vnet/azure_mysql_subnet", + "ignoreMissingVnetServiceEndpoint": true + }, + "dependsOn": [ + "Microsoft.DBforMySQL/servers/GEN-UNIQUE", + "Microsoft.Network/virtualNetworks/subnets/azure_mysql_vnet/azure_mysql_subnet" + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "azure_mysql_vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]", + "properties": { + "addressPrefix": "10.0.0.0/16" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/azure_mysql_vnet" + ] + }, + { + "type": "Microsoft.DBforMySQL/servers", + "apiVersion": "2017-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": "[format('{0}', parameters('SkuSizeMB'))]", + "family": "Gen5" + }, + "properties": { + "createMode": "Default", + "version": "8.0", + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD", + "storageProfile": { + "storageMB": 5120, + "backupRetentionDays": 7, + "geoRedundantBackup": "Disabled" + } + } + }, + { + "type": "Microsoft.DBforMySQL/servers/firewallRules", + "apiVersion": "2017-12-01", + "name": "[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]", + "properties": { + "startIpAddress": "(firewallrules)[copyIndex()].StartIpAddress", + "endIpAddress": "(firewallrules)[copyIndex()].EndIpAddress" + }, + "dependsOn": [ + "Microsoft.DBforMySQL/servers/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.DBforMySQL/servers/firewallRules", + "apiVersion": "2017-12-01", + "name": "[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]", + "properties": { + "startIpAddress": "(firewallrules)[copyIndex()].StartIpAddress", + "endIpAddress": "(firewallrules)[copyIndex()].EndIpAddress" + }, + "dependsOn": [ + "Microsoft.DBforMySQL/servers/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1266 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1266 new file mode 100644 index 0000000..8ef5c1d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1266 @@ -0,0 +1,284 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.dbforpostgresql/managed-postgresql-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbforpostgresql/managed-postgresql-with-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962906245, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.dbforpostgresql/managed-postgresql-with-vnet/azuredeploy.json", + "/quickstarts/microsoft.dbforpostgresql/managed-postgresql-with-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1266", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.dbforpostgresql/servers", + "microsoft.dbforpostgresql/servers/virtualnetworkrules", + "microsoft.dbforpostgresql/servers/firewallrules", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1266", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "10672848046880842986" + } + }, + "parameters": { + "serverName": { + "type": "string", + "metadata": { + "description": "Server Name for Azure database for PostgreSQL" + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-8" + }, + "administratorLoginPassword": { + "type": "secureString", + "minLength": 8, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "skuCapacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)" + } + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "metadata": { + "description": "Azure database for PostgreSQL sku name " + } + }, + "skuSizeMB": { + "type": "int", + "defaultValue": 51200, + "metadata": { + "description": "Azure database for PostgreSQL Sku Size " + } + }, + "skuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "Basic", + "GeneralPurpose", + "MemoryOptimized" + ], + "metadata": { + "description": "Azure database for PostgreSQL pricing tier" + } + }, + "skuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for PostgreSQL sku family" + } + }, + "postgresqlVersion": { + "type": "string", + "defaultValue": "11", + "allowedValues": [ + "9.5", + "9.6", + "10", + "10.0", + "10.2", + "11" + ], + "metadata": { + "description": "PostgreSQL version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "backupRetentionDays": { + "type": "int", + "defaultValue": 7, + "metadata": { + "description": "PostgreSQL Server backup retention days" + } + }, + "geoRedundantBackup": { + "type": "string", + "defaultValue": "Disabled", + "metadata": { + "description": "Geo-Redundant Backup setting" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "azure_postgresql_vnet", + "metadata": { + "description": "Virtual Network Name" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "azure_postgresql_subnet", + "metadata": { + "description": "Subnet Name" + } + }, + "virtualNetworkRuleName": { + "type": "string", + "defaultValue": "AllowSubnet", + "metadata": { + "description": "Virtual Network RuleName" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual Network Address Prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Subnet Address Prefix" + } + } + }, + "functions": [], + "variables": { + "firewallrules": [ + { + "Name": "rule1", + "StartIpAddress": "0.0.0.0", + "EndIpAddress": "255.255.255.255" + }, + { + "Name": "rule2", + "StartIpAddress": "0.0.0.0", + "EndIpAddress": "255.255.255.255" + } + ] + }, + "resources": [ + { + "type": "Microsoft.DBforPostgreSQL/servers/virtualNetworkRules", + "apiVersion": "2017-12-01", + "name": "[format('{0}/{1}', parameters('serverName'), parameters('virtualNetworkRuleName'))]", + "properties": { + "virtualNetworkSubnetId": "Microsoft.Network/virtualNetworks/subnets/azure_postgresql_vnet/azure_postgresql_subnet", + "ignoreMissingVnetServiceEndpoint": true + }, + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers/GEN-UNIQUE", + "Microsoft.Network/virtualNetworks/subnets/azure_postgresql_vnet/azure_postgresql_subnet" + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "azure_postgresql_vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]", + "properties": { + "addressPrefix": "10.0.0.0/16" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/azure_postgresql_vnet" + ] + }, + { + "type": "Microsoft.DBforPostgreSQL/servers", + "apiVersion": "2017-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": "[format('{0}', parameters('skuSizeMB'))]", + "family": "Gen5" + }, + "properties": { + "createMode": "Default", + "version": "11", + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD", + "storageProfile": { + "storageMB": 51200, + "backupRetentionDays": 7, + "geoRedundantBackup": "Disabled" + } + } + }, + { + "type": "Microsoft.DBforPostgreSQL/servers/firewallRules", + "apiVersion": "2017-12-01", + "name": "[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]", + "properties": { + "startIpAddress": "(firewallrules)[copyIndex()].StartIpAddress", + "endIpAddress": "(firewallrules)[copyIndex()].EndIpAddress" + }, + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.DBforPostgreSQL/servers/firewallRules", + "apiVersion": "2017-12-01", + "name": "[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]", + "properties": { + "startIpAddress": "(firewallrules)[copyIndex()].StartIpAddress", + "endIpAddress": "(firewallrules)[copyIndex()].EndIpAddress" + }, + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1267 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1267 new file mode 100644 index 0000000..002ceea --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1267 @@ -0,0 +1,182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.devices/iothub-auto-route-messages/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-auto-route-messages/azuredeploy.parameters.json" + ], + "timestamp": 1642962906255, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devices/iothub-auto-route-messages/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-auto-route-messages/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1267", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devices/iothubs", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1267", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "projectName": { + "type": "string", + "defaultValue": "contoso", + "minLength": 1, + "maxLength": 11, + "metadata": { + "description": "Define the project name or prefix for all objects." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The datacenter to use for the deployment." + } + }, + "skuName": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "The SKU to use for the IoT Hub." + } + }, + "skuUnits": { + "type": "string", + "defaultValue": "1", + "metadata": { + "description": "The number of IoT Hub units." + }, + "value": "1" + }, + "d2cPartitions": { + "type": "string", + "defaultValue": "4", + "metadata": { + "description": "Partitions used for the event stream." + }, + "value": "4" + } + }, + "variables": { + "iotHubName": "[concat(parameters('projectName'), 'Hub', uniqueString(resourceGroup().id))]", + "storageAccountName": "[concat(toLower(parameters('projectName')), uniqueString(resourceGroup().id))]", + "storageEndpoint": "GEN-UNIQUE-8StorageEndpont", + "storageContainerName": "[concat(toLower(parameters('projectName')), 'results')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium_LRS" + }, + "kind": "Storage", + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2021-02-01", + "name": "[concat('default/', variables('storageContainerName'))]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "publicAccess": "None" + } + } + ] + }, + { + "type": "Microsoft.Devices/IotHubs", + "apiVersion": "2021-03-31", + "name": "IoTHubName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "sku": { + "name": "S1", + "capacity": "1" + }, + "properties": { + "eventHubEndpoints": { + "events": { + "retentionTimeInDays": 1, + "partitionCount": "4" + } + }, + "routing": { + "endpoints": { + "storageContainers": [ + { + "connectionString": "[Concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';EndpointSuffix=',environment().suffixes.storage,';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-02-01').keys[0].value)]", + "containerName": "[variables('storageContainerName')]", + "fileNameFormat": "{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}", + "batchFrequencyInSeconds": 100, + "maxChunkSizeInBytes": 104857600, + "encoding": "json", + "name": "GEN-UNIQUE-8StorageEndpont" + } + ] + }, + "routes": [ + { + "name": "ContosoStorageRoute", + "source": "DeviceMessages", + "condition": "level=\"storage\"", + "endpointNames": [ + "GEN-UNIQUE-8StorageEndpont" + ], + "isEnabled": true + } + ], + "fallbackRoute": { + "name": "$fallback", + "source": "DeviceMessages", + "condition": "true", + "endpointNames": [ + "events" + ], + "isEnabled": true + } + }, + "messagingEndpoints": { + "fileNotifications": { + "lockDurationAsIso8601": "PT1M", + "ttlAsIso8601": "PT1H", + "maxDeliveryCount": 10 + } + }, + "enableFileUploadNotifications": false, + "cloudToDevice": { + "maxDeliveryCount": 10, + "defaultTtlAsIso8601": "PT1H", + "feedback": { + "lockDurationAsIso8601": "PT1M", + "ttlAsIso8601": "PT1H", + "maxDeliveryCount": 10 + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1268 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1268 new file mode 100644 index 0000000..8f45db1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1268 @@ -0,0 +1,111 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.devices/iothub-device-provisioning/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-device-provisioning/azuredeploy.parameters.json" + ], + "timestamp": 1642962906264, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devices/iothub-device-provisioning/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-device-provisioning/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1268", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devices/iothubs", + "microsoft.devices/provisioningservices" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1268", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "iotHubName": { + "type": "string", + "metadata": { + "description": "Specify the name of the Iot hub." + }, + "value": "GEN-UNIQUE" + }, + "provisioningServiceName": { + "type": "string", + "metadata": { + "description": "Specify the name of the provisioning service." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the location of the resources." + } + }, + "skuName": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "The SKU to use for the IoT Hub." + } + }, + "skuUnits": { + "type": "string", + "defaultValue": "1", + "metadata": { + "description": "The number of IoT Hub units." + } + } + }, + "variables": { + "iotHubKeyName": "iothubowner" + }, + "resources": [ + { + "type": "Microsoft.Devices/IotHubs", + "apiVersion": "2021-03-31", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "capacity": "1" + }, + "properties": {} + }, + { + "type": "Microsoft.Devices/provisioningServices", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "capacity": "1" + }, + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "iotHubs": [ + { + "connectionString": "[concat('HostName=', reference(resourceId('Microsoft.Devices/Iothubs', parameters('iotHubName'))).hostName, ';SharedAccessKeyName=', variables('iotHubKeyName'), ';SharedAccessKey=', listkeys(resourceId('Microsoft.Devices/Iothubs/Iothubkeys', parameters('iotHubName'), variables('iotHubKeyName')), '2020-03-01').primaryKey)]", + "location": "[resourceGroup().location]", + "name": "[reference(resourceId('Microsoft.Devices/Iothubs', parameters('iotHubName'))).hostName]" + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1269 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1269 new file mode 100644 index 0000000..3407089 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1269 @@ -0,0 +1,119 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.devices/iothub-with-consumergroup-create/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-with-consumergroup-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962906272, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devices/iothub-with-consumergroup-create/azuredeploy.json", + "/quickstarts/microsoft.devices/iothub-with-consumergroup-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1269", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devices/iothubs", + "microsoft.devices/iothubs/eventhubendpoints/consumergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1269", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "iotHubName": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Specifies the name of the IoT Hub." + }, + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "skuName": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "Specifies the IotHub SKU." + } + }, + "capacityUnits": { + "type": "int", + "minValue": 1, + "maxValue": 1, + "defaultValue": 1, + "metadata": { + "description": "Specifies the number of provisioned IoT Hub units. Restricted to 1 unit for the F1 SKU. Can be set up to maximum number allowed for subscription." + } + } + }, + "variables": { + "consumerGroupName": "GEN-UNIQUE-10/events/cg1" + }, + "resources": [ + { + "type": "Microsoft.Devices/IotHubs", + "apiVersion": "2021-03-31", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "properties": { + "eventHubEndpoints": { + "events": { + "retentionTimeInDays": 1, + "partitionCount": 2 + } + }, + "cloudToDevice": { + "defaultTtlAsIso8601": "PT1H", + "maxDeliveryCount": 10, + "feedback": { + "ttlAsIso8601": "PT1H", + "lockDurationAsIso8601": "PT60S", + "maxDeliveryCount": 10 + } + }, + "messagingEndpoints": { + "fileNotifications": { + "ttlAsIso8601": "PT1H", + "lockDurationAsIso8601": "PT1M", + "maxDeliveryCount": 10 + } + } + }, + "sku": { + "name": "F1", + "capacity": 1 + } + }, + { + "type": "Microsoft.Devices/iotHubs/eventhubEndpoints/ConsumerGroups", + "apiVersion": "2021-03-31", + "name": "GEN-UNIQUE-10/events/cg1", + "properties": { + "name": "cg1" + }, + "dependsOn": [ + "Microsoft.Devices/IotHubs/GEN-UNIQUE-10" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT127 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT127 new file mode 100644 index 0000000..13b70fb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT127 @@ -0,0 +1,224 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/kibana-resources.json" + ], + "timestamp": 1642962887378, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/kibana-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT127", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT127", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespace": { + "type": "string", + "defaultValue": "kibana", + "metadata": { + "description": "The namespace prefix for resources created by this template" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "Subnet object for provisioning resources in (expects properties name as the subnet name, and vnet as the virtual network name on the object)" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "Platform and OS settings" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Jump box VM size" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "vmName": "kibana-vm", + "publicIpName": "kibana-pip", + "securityGroupName": "kibana-nsg", + "nicName": "kibana-nic" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "kibana-nsg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows inbound SSH traffic from anyone", + "protocol": "Tcp", + "sourcePortRange": "osSettings", + "destinationPortRange": "osSettings", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Kibana", + "properties": { + "description": "Allows inbound Kibana HTTP traffic from anyone", + "protocol": "Tcp", + "sourcePortRange": "5601", + "destinationPortRange": "5601", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "kibana-pip", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "kibana-nic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/kibana-pip", + "Microsoft.Network/networkSecurityGroups/kibana-nsg" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/kibana-nsg" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/kibana-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "kibana-vm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/kibana-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "kibana", + "adminUsername": "adminUsername", + "adminPassword": "authSet", + "linuxConfiguration": "osSettings" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "kibana-vm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/kibana-nic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "installkibana", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/kibana-vm" + ], + "properties": "osSettings" + } + ] + } + ], + "outputs": { + "kibana-url": { + "type": "string", + "value": "[concat('http://', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpName'))).ipAddress, ':5601')]" + }, + "kibana-ip": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpName'))).ipAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1270 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1270 new file mode 100644 index 0000000..1849ac9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1270 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account/azuredeploy.json", + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962906280, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account/azuredeploy.json", + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1270", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.deviceupdate/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1270", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "15911205072029459842" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[take(format('adu-quickstart-{0}', uniqueString(resourceGroup().id)), 24)]", + "maxLength": 24, + "minLength": 3, + "metadata": { + "description": "The name of the account. Read more about limits at https://aka.ms/iot-hub-device-update-limits" + } + }, + "location": { + "type": "string", + "allowedValues": [ + "westus2", + "northeurope", + "southeastasia" + ], + "metadata": { + "description": "The location of the account." + }, + "value": "westus2" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.DeviceUpdate/accounts", + "apiVersion": "2020-03-01-preview", + "name": "[take(format('adu-quickstart-{0}', uniqueString(resourceGroup().id)), 24)]", + "location": "westus2" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1271 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1271 new file mode 100644 index 0000000..a972ba8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1271 @@ -0,0 +1,233 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account-instance-iothub/azuredeploy.json", + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account-instance-iothub/azuredeploy.parameters.json" + ], + "timestamp": 1642962906288, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account-instance-iothub/azuredeploy.json", + "/quickstarts/microsoft.deviceupdate/deviceupdate-create-account-instance-iothub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1271", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devices/iothubs", + "microsoft.deviceupdate/accounts", + "microsoft.devices/iothubs/eventhubendpoints/consumergroups", + "microsoft.deviceupdate/accounts/instances" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1271", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "18166828821030614764" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[take(format('adu-quickstart-{0}', uniqueString(resourceGroup().id)), 24)]", + "maxLength": 24, + "minLength": 3, + "metadata": { + "description": "The name of the account. Read more about limits at https://aka.ms/iot-hub-device-update-limits" + } + }, + "location": { + "type": "string", + "allowedValues": [ + "westus2", + "northeurope", + "southeastasia" + ], + "metadata": { + "description": "The location of the account." + }, + "value": "westus2" + }, + "instanceName": { + "type": "string", + "defaultValue": "[guid(resourceGroup().id)]", + "maxLength": 36, + "minLength": 3, + "metadata": { + "description": "The name of the instance." + } + }, + "iotHubName": { + "type": "string", + "defaultValue": "[take(format('iot-hub-{0}', uniqueString(resourceGroup().id)), 50)]", + "maxLength": 50, + "minLength": 3, + "metadata": { + "description": "The name of the hub." + } + } + }, + "functions": [], + "variables": { + "iotHubResourceId": "Microsoft.Devices/IotHubs/[take(format('iot-hub-{0}', uniqueString(resourceGroup().id)), 50)]", + "iotHubKeyName": "deviceupdateservice", + "iotHubKeyIndex": 5, + "consumerGroupName": "adum" + }, + "resources": [ + { + "type": "Microsoft.Devices/IotHubs", + "apiVersion": "2021-03-31", + "name": "[take(format('iot-hub-{0}', uniqueString(resourceGroup().id)), 50)]", + "location": "westus2", + "sku": { + "name": "S1", + "capacity": 1 + }, + "properties": { + "authorizationPolicies": [ + { + "keyName": "iothubowner", + "rights": "RegistryWrite, ServiceConnect, DeviceConnect" + }, + { + "keyName": "service", + "rights": "ServiceConnect" + }, + { + "keyName": "device", + "rights": "DeviceConnect" + }, + { + "keyName": "registryRead", + "rights": "RegistryRead" + }, + { + "keyName": "registryReadWrite", + "rights": "RegistryWrite" + }, + { + "keyName": "deviceupdateservice", + "rights": "RegistryRead, ServiceConnect, DeviceConnect" + } + ], + "cloudToDevice": { + "maxDeliveryCount": 10, + "defaultTtlAsIso8601": "PT1H", + "feedback": { + "lockDurationAsIso8601": "PT1M", + "ttlAsIso8601": "PT1H", + "maxDeliveryCount": 10 + } + }, + "enableFileUploadNotifications": false, + "eventHubEndpoints": { + "events": { + "retentionTimeInDays": 1, + "partitionCount": 4 + } + }, + "features": "None", + "messagingEndpoints": { + "fileNotifications": { + "lockDurationAsIso8601": "PT1M", + "ttlAsIso8601": "PT1H", + "maxDeliveryCount": 10 + } + }, + "routing": { + "routes": [ + { + "name": "DeviceUpdate.DeviceTwinChanges", + "source": "TwinChangeEvents", + "condition": "(opType = 'updateTwin' OR opType = 'replaceTwin') AND IS_DEFINED($body.tags.ADUGroup)", + "endpointNames": [ + "events" + ], + "isEnabled": true + }, + { + "name": "DeviceUpdate.DigitalTwinChanges", + "source": "DigitalTwinChangeEvents", + "condition": "true", + "endpointNames": [ + "events" + ], + "isEnabled": true + }, + { + "name": "DeviceUpdate.DeviceLifeCycle", + "source": "DeviceLifecycleEvents", + "condition": "opType = 'deleteDeviceIdentity' OR opType = 'deleteModuleIdentity'", + "endpointNames": [ + "events" + ], + "isEnabled": true + } + ], + "fallbackRoute": { + "name": "$fallback", + "source": "DeviceMessages", + "condition": "true", + "endpointNames": [ + "events" + ], + "isEnabled": true + } + } + } + }, + { + "type": "Microsoft.Devices/IotHubs/eventHubEndpoints/ConsumerGroups", + "apiVersion": "2021-03-31", + "name": "[format('{0}/events/{1}', parameters('iotHubName'), variables('consumerGroupName'))]", + "properties": { + "name": "adum" + }, + "dependsOn": [ + "Microsoft.Devices/IotHubs/[take(format('iot-hub-{0}', uniqueString(resourceGroup().id)), 50)]" + ] + }, + { + "type": "Microsoft.DeviceUpdate/accounts", + "apiVersion": "2020-03-01-preview", + "name": "[take(format('adu-quickstart-{0}', uniqueString(resourceGroup().id)), 24)]", + "location": "westus2" + }, + { + "type": "Microsoft.DeviceUpdate/accounts/instances", + "apiVersion": "2020-03-01-preview", + "name": "[format('{0}/{1}', parameters('accountName'), parameters('instanceName'))]", + "location": "westus2", + "properties": { + "iotHubs": [ + { + "resourceId": "Microsoft.Devices/IotHubs/[take(format('iot-hub-{0}', uniqueString(resourceGroup().id)), 50)]", + "ioTHubConnectionString": "[format('HostName={0};SharedAccessKeyName={1};SharedAccessKey={2}', reference(variables('iotHubResourceId'), '2021-03-31').hostName, variables('iotHubKeyName'), listkeys(variables('iotHubResourceId'), '2021-03-31').value[variables('iotHubKeyIndex')].primaryKey)]", + "eventHubConnectionString": "[format('Endpoint={0};SharedAccessKeyName={1};SharedAccessKey={2};EntityPath={3}', reference(variables('iotHubResourceId'), '2021-03-31').eventHubEndpoints.events.endpoint, variables('iotHubKeyName'), listKeys(variables('iotHubResourceId'), '2021-03-31').value[variables('iotHubKeyIndex')].primaryKey, reference(variables('iotHubResourceId'), '2021-03-31').eventHubEndpoints.events.path)]" + } + ] + }, + "dependsOn": [ + "Microsoft.DeviceUpdate/accounts/[take(format('adu-quickstart-{0}', uniqueString(resourceGroup().id)), 24)]", + "Microsoft.Devices/IotHubs/[take(format('iot-hub-{0}', uniqueString(resourceGroup().id)), 50)]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1272 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1272 new file mode 100644 index 0000000..c0148e6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1272 @@ -0,0 +1,65 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab/azuredeploy.parameters.json" + ], + "timestamp": 1642962906296, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1272", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devtestlab/labs" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1272", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newLabName": { + "type": "string", + "metadata": { + "description": "The name of the new lab instance to be created" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-10-15-preview", + "type": "Microsoft.DevTestLab/labs", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]" + } + ], + "outputs": { + "labId": { + "type": "string", + "value": "[resourceId('Microsoft.DevTestLab/labs', parameters('newLabName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1273 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1273 new file mode 100644 index 0000000..ae79896 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1273 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962906303, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1273", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devtestlab/labs" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1273", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "labName": { + "type": "string", + "metadata": { + "description": "The name of the new lab instance to be created" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the vm to be created." + }, + "value": "GEN-UNIQUE-15" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "The size of the vm to be created." + } + }, + "userName": { + "type": "string", + "metadata": { + "description": "The username for the local account that will be created on the new vm." + }, + "value": "GEN-UNIQUE" + }, + "password": { + "type": "securestring", + "metadata": { + "description": "The password for the local account that will be created on the new vm." + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "labSubnetName": "DtlGEN-UNIQUESubnet", + "labVirtualNetworkId": "Microsoft.DevTestLab/labs/virtualnetworks/GEN-UNIQUE/DtlGEN-UNIQUE", + "labVirtualNetworkName": "DtlGEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.DevTestLab/labs", + "apiVersion": "2018-10-15-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "resources": [ + { + "type": "virtualNetworks", + "apiVersion": "2018-10-15-preview", + "name": "DtlGEN-UNIQUE", + "dependsOn": [ + "Microsoft.DevTestLab/labs/GEN-UNIQUE" + ] + }, + { + "type": "virtualMachines", + "apiVersion": "2018-10-15-preview", + "name": "GEN-UNIQUE-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.DevTestLab/labs/GEN-UNIQUE", + "Microsoft.DevTestLab/labs/virtualnetworks/GEN-UNIQUE/DtlGEN-UNIQUE" + ], + "properties": { + "userName": "GEN-UNIQUE", + "password": "GEN-PASSWORD", + "labVirtualNetworkId": "Microsoft.DevTestLab/labs/virtualnetworks/GEN-UNIQUE/DtlGEN-UNIQUE", + "labSubnetName": "DtlGEN-UNIQUESubnet", + "size": "Standard_D4_v3", + "allowClaim": "true", + "galleryImageReference": { + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "sku": "2019-Datacenter", + "osType": "Windows", + "version": "latest" + } + } + } + ] + } + ], + "outputs": { + "labId": { + "type": "string", + "value": "[resourceId('Microsoft.DevTestLab/labs', parameters('labName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1274 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1274 new file mode 100644 index 0000000..72ac5e9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1274 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm-claimed/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm-claimed/azuredeploy.parameters.json" + ], + "timestamp": 1642962906311, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm-claimed/azuredeploy.json", + "/quickstarts/microsoft.devtestlab/dtl-create-lab-windows-vm-claimed/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1274", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.devtestlab/labs" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1274", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "labName": { + "type": "string", + "metadata": { + "description": "The name of the new lab instance to be created" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the vm to be created." + }, + "value": "GEN-UNIQUE-15" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "The size of the vm to be created." + } + }, + "userName": { + "type": "string", + "metadata": { + "description": "The username for the local account that will be created on the new vm." + }, + "value": "GEN-UNIQUE" + }, + "password": { + "type": "securestring", + "metadata": { + "description": "The password for the local account that will be created on the new vm." + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "labSubnetName": "DtlGEN-UNIQUESubnet", + "labVirtualNetworkId": "Microsoft.DevTestLab/labs/virtualnetworks/GEN-UNIQUE/DtlGEN-UNIQUE", + "labVirtualNetworkName": "DtlGEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.DevTestLab/labs", + "apiVersion": "2018-10-15-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "resources": [ + { + "type": "virtualNetworks", + "apiVersion": "2018-10-15-preview", + "name": "DtlGEN-UNIQUE", + "dependsOn": [ + "Microsoft.DevTestLab/labs/GEN-UNIQUE" + ] + }, + { + "type": "virtualMachines", + "apiVersion": "2018-10-15-preview", + "name": "GEN-UNIQUE-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.DevTestLab/labs/GEN-UNIQUE", + "Microsoft.DevTestLab/labs/virtualnetworks/GEN-UNIQUE/DtlGEN-UNIQUE" + ], + "properties": { + "userName": "GEN-UNIQUE", + "password": "GEN-PASSWORD", + "labVirtualNetworkId": "Microsoft.DevTestLab/labs/virtualnetworks/GEN-UNIQUE/DtlGEN-UNIQUE", + "labSubnetName": "DtlGEN-UNIQUESubnet", + "size": "Standard_D4_v3", + "allowClaim": "false", + "galleryImageReference": { + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "sku": "2019-Datacenter", + "osType": "Windows", + "version": "latest" + } + } + } + ] + } + ], + "outputs": { + "labId": { + "type": "string", + "value": "[resourceId('Microsoft.DevTestLab/labs', parameters('labName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1275 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1275 new file mode 100644 index 0000000..4628f31 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1275 @@ -0,0 +1,102 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-advanced-threat-protection-create-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-advanced-threat-protection-create-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962906320, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-advanced-threat-protection-create-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-advanced-threat-protection-create-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1275", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1275", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "defaultValue": "[uniqueString('cosmosdb', resourceGroup().id)]", + "metadata": { + "description": "The name of your CosmosDB account" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for your CosmosDB account" + } + }, + "tier": { + "type": "string", + "defaultValue": "Standard", + "metadata": { + "description": "CosmosDB account tier" + } + }, + "advancedThreatProtectionEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable or disable Advanced Threat Protection." + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2020-09-01", + "location": "[resourceGroup().location]", + "properties": { + "locations": [ + { + "locationName": "[resourceGroup().location]" + } + ], + "databaseAccountOfferType": "Standard" + }, + "resources": [ + { + "condition": true, + "type": "providers/advancedThreatProtectionSettings", + "name": "Microsoft.Security/current", + "apiVersion": "2019-01-01", + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts//GEN-UNIQUE" + ], + "properties": { + "isEnabled": true + } + } + ] + } + ], + "outputs": { + "cosmosDbAccountName": { + "type": "string", + "value": "[parameters('name')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1276 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1276 new file mode 100644 index 0000000..7c2ea99 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1276 @@ -0,0 +1,273 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.parameters.json" + ], + "timestamp": 1642962906327, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1276", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces/tables", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1276", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "12484788747974976983" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('cassandra-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary region for the Cosmos DB account." + }, + "value": "West US" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary region for the Cosmos DB account." + }, + "value": "East US" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + }, + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ] + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + }, + "maxValue": 2147483647, + "minValue": 10 + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + }, + "maxValue": 86400, + "minValue": 5 + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "keyspaceName": { + "type": "string", + "metadata": { + "description": "The name for the Cassandra Keyspace" + }, + "value": "excalibur" + }, + "tableName": { + "type": "string", + "metadata": { + "description": "The name for the Cassandra table" + }, + "value": "loads" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "metadata": { + "description": "The throughput for Cassandra table" + }, + "maxValue": 1000000, + "minValue": 400 + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableCassandra" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName'))]", + "properties": { + "resource": { + "id": "excalibur" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/cassandraKeyspaces/tables", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), parameters('tableName'))]", + "properties": { + "resource": { + "id": "loads", + "schema": { + "columns": [ + { + "name": "loadid", + "type": "uuid" + }, + { + "name": "machine", + "type": "uuid" + }, + { + "name": "cpu", + "type": "int" + }, + { + "name": "mtime", + "type": "int" + }, + { + "name": "load", + "type": "float" + } + ], + "partitionKeys": [ + { + "name": "machine" + }, + { + "name": "cpu" + }, + { + "name": "mtime" + } + ], + "clusterKeys": [ + { + "name": "loadid", + "orderBy": "asc" + } + ] + }, + "options": { + "throughput": 400 + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces', split(format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1277 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1277 new file mode 100644 index 0000000..e315ec3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1277 @@ -0,0 +1,273 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906341, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1277", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces/tables", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1277", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "12484788747974976983" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('cassandra-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary region for the Cosmos DB account." + }, + "value": "US Gov Texas" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + }, + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ] + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + }, + "maxValue": 2147483647, + "minValue": 10 + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + }, + "maxValue": 86400, + "minValue": 5 + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "keyspaceName": { + "type": "string", + "metadata": { + "description": "The name for the Cassandra Keyspace" + }, + "value": "excalibur" + }, + "tableName": { + "type": "string", + "metadata": { + "description": "The name for the Cassandra table" + }, + "value": "loads" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "metadata": { + "description": "The throughput for Cassandra table" + }, + "maxValue": 1000000, + "minValue": 400 + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Texas", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableCassandra" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Texas", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName'))]", + "properties": { + "resource": { + "id": "excalibur" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/cassandraKeyspaces/tables", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), parameters('tableName'))]", + "properties": { + "resource": { + "id": "loads", + "schema": { + "columns": [ + { + "name": "loadid", + "type": "uuid" + }, + { + "name": "machine", + "type": "uuid" + }, + { + "name": "cpu", + "type": "int" + }, + { + "name": "mtime", + "type": "int" + }, + { + "name": "load", + "type": "float" + } + ], + "partitionKeys": [ + { + "name": "machine" + }, + { + "name": "cpu" + }, + { + "name": "mtime" + } + ], + "clusterKeys": [ + { + "name": "loadid", + "orderBy": "asc" + } + ] + }, + "options": { + "throughput": 400 + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces', split(format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1278 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1278 new file mode 100644 index 0000000..61d7644 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1278 @@ -0,0 +1,275 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962906349, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1278", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces/tables", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1278", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "1465322124180139925" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('cassandra-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "West US" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "East US" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + }, + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ] + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + }, + "maxValue": 1000000, + "minValue": 10 + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + }, + "maxValue": 86400, + "minValue": 5 + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "keyspaceName": { + "type": "string", + "metadata": { + "description": "The name for the Cassandra Keyspace" + }, + "value": "keyspace1" + }, + "tableName": { + "type": "string", + "metadata": { + "description": "The name for the Cassandra table" + }, + "value": "table1" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "metadata": { + "description": "Maximum autoscale throughput for the Cassandra table" + }, + "maxValue": 1000000, + "minValue": 4000 + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableCassandra" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName'))]", + "properties": { + "resource": { + "id": "keyspace1" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/cassandraKeyspaces/tables", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), parameters('tableName'))]", + "properties": { + "resource": { + "id": "table1", + "schema": { + "columns": [ + { + "name": "loadid", + "type": "uuid" + }, + { + "name": "machine", + "type": "uuid" + }, + { + "name": "cpu", + "type": "int" + }, + { + "name": "mtime", + "type": "int" + }, + { + "name": "load", + "type": "float" + } + ], + "partitionKeys": [ + { + "name": "machine" + }, + { + "name": "cpu" + }, + { + "name": "mtime" + } + ], + "clusterKeys": [ + { + "name": "loadid", + "orderBy": "asc" + } + ] + } + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces', split(format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1279 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1279 new file mode 100644 index 0000000..8ca1888 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1279 @@ -0,0 +1,275 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906358, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-cassandra-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1279", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces/tables", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/cassandrakeyspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1279", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "1465322124180139925" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('cassandra-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + }, + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ] + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + }, + "maxValue": 1000000, + "minValue": 10 + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + }, + "maxValue": 86400, + "minValue": 5 + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "keyspaceName": { + "type": "string", + "metadata": { + "description": "The name for the Cassandra Keyspace" + }, + "value": "keyspace1" + }, + "tableName": { + "type": "string", + "metadata": { + "description": "The name for the Cassandra table" + }, + "value": "table1" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "metadata": { + "description": "Maximum autoscale throughput for the Cassandra table" + }, + "maxValue": 1000000, + "minValue": 4000 + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableCassandra" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName'))]", + "properties": { + "resource": { + "id": "keyspace1" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/cassandraKeyspaces/tables", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), parameters('tableName'))]", + "properties": { + "resource": { + "id": "table1", + "schema": { + "columns": [ + { + "name": "loadid", + "type": "uuid" + }, + { + "name": "machine", + "type": "uuid" + }, + { + "name": "cpu", + "type": "int" + }, + { + "name": "mtime", + "type": "int" + }, + { + "name": "load", + "type": "float" + } + ], + "partitionKeys": [ + { + "name": "machine" + }, + { + "name": "cpu" + }, + { + "name": "mtime" + } + ], + "clusterKeys": [ + { + "name": "loadid", + "orderBy": "asc" + } + ] + } + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces', split(format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('keyspaceName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1280 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1280 new file mode 100644 index 0000000..5a79829 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1280 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962906364, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1280", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1280", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "defaultValue": "[uniqueString('cosmosdb', resourceGroup().id)]", + "metadata": { + "description": "The name of your CosmosDB account" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for your CosmosDB account" + } + }, + "tier": { + "type": "string", + "defaultValue": "Standard", + "metadata": { + "description": "CosmosDB account tier" + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2020-04-01", + "location": "[resourceGroup().location]", + "properties": { + "locations": [ + { + "locationName": "[resourceGroup().location]" + } + ], + "databaseAccountOfferType": "Standard" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1281 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1281 new file mode 100644 index 0000000..e520726 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1281 @@ -0,0 +1,235 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962906369, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1281", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1281", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "2593584310898973865" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[toLower(uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "East US 2" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "West US 2" + }, + "api": { + "type": "string", + "defaultValue": "Sql", + "allowedValues": [ + "Sql", + "MongoDB", + "Cassandra", + "Gremlin", + "Table" + ], + "metadata": { + "description": "Cosmos DB account type." + }, + "value": "Sql" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + }, + "value": "Session" + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + }, + "value": 100000 + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + }, + "value": 300 + }, + "multipleWriteLocations": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable multi-master to make all regions writable." + }, + "value": false + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions. Ignored when Multi-Master is enabled" + }, + "value": true + } + }, + "functions": [], + "variables": { + "apiType": { + "Sql": { + "kind": "GlobalDocumentDB", + "capabilities": [] + }, + "MongoDB": { + "kind": "MongoDB", + "capabilities": [] + }, + "Cassandra": { + "kind": "GlobalDocumentDB", + "capabilities": [ + { + "name": "EnableCassandra" + } + ] + }, + "Gremlin": { + "kind": "GlobalDocumentDB", + "capabilities": [ + { + "name": "EnableGremlin" + } + ] + }, + "Table": { + "kind": "GlobalDocumentDB", + "capabilities": [ + { + "name": "EnableTable" + } + ] + } + }, + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "East US 2", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "West US 2", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "(apiType)[parameters(api)].kind", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "East US 2", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "West US 2", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true, + "capabilities": "(apiType)[parameters(api)].capabilities", + "enableMultipleWriteLocations": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1282 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1282 new file mode 100644 index 0000000..b6679a4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1282 @@ -0,0 +1,235 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906376, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-create-multi-region-account/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1282", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1282", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "2593584310898973865" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[toLower(uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "api": { + "type": "string", + "defaultValue": "Sql", + "allowedValues": [ + "Sql", + "MongoDB", + "Cassandra", + "Gremlin", + "Table" + ], + "metadata": { + "description": "Cosmos DB account type." + }, + "value": "Sql" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + }, + "value": "Session" + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + }, + "value": 100000 + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + }, + "value": 300 + }, + "multipleWriteLocations": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable multi-master to make all regions writable." + }, + "value": false + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions. Ignored when Multi-Master is enabled" + }, + "value": true + } + }, + "functions": [], + "variables": { + "apiType": { + "Sql": { + "kind": "GlobalDocumentDB", + "capabilities": [] + }, + "MongoDB": { + "kind": "MongoDB", + "capabilities": [] + }, + "Cassandra": { + "kind": "GlobalDocumentDB", + "capabilities": [ + { + "name": "EnableCassandra" + } + ] + }, + "Gremlin": { + "kind": "GlobalDocumentDB", + "capabilities": [ + { + "name": "EnableGremlin" + } + ] + }, + "Table": { + "kind": "GlobalDocumentDB", + "capabilities": [ + { + "name": "EnableTable" + } + ] + } + }, + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "(apiType)[parameters(api)].kind", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true, + "capabilities": "(apiType)[parameters(api)].capabilities", + "enableMultipleWriteLocations": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1283 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1283 new file mode 100644 index 0000000..d30d2b3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1283 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-free/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-free/azuredeploy.parameters.json" + ], + "timestamp": 1642962906384, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-free/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-free/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1283", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1283", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "996194081545577943" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('cosmos-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Core (SQL) database" + }, + "value": "database1" + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]" + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "properties": { + "enableFreeTier": true, + "databaseAccountOfferType": "Standard", + "consistencyPolicy": { + "defaultConsistencyLevel": "Session" + }, + "locations": [ + { + "locationName": "[resourceGroup().location]" + } + ] + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1284 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1284 new file mode 100644 index 0000000..94573d0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1284 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.parameters.json" + ], + "timestamp": 1642962906391, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1284", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/gremlindatabases/graphs", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/gremlindatabases" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1284", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "8610816505295226999" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "West US" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "East US" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "databaseName": { + "type": "string", + "defaultValue": "database1", + "metadata": { + "description": "The name for the Gremlin database" + }, + "value": "myDatabase" + }, + "graphName": { + "type": "string", + "defaultValue": "graph1", + "metadata": { + "description": "The name for the Gremlin graph" + }, + "value": "myGraph" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "maxValue": 1000000, + "minValue": 400, + "metadata": { + "description": "Throughput for the Gremlin graph" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableGremlin" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/gremlinDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "myDatabase" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/gremlinDatabases/graphs", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('graphName'))]", + "properties": { + "resource": { + "id": "myGraph", + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ] + }, + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + }, + "options": { + "throughput": 400 + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/gremlinDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1285 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1285 new file mode 100644 index 0000000..0cf85b0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1285 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906396, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1285", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/gremlindatabases/graphs", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/gremlindatabases" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1285", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "8610816505295226999" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Texas" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "databaseName": { + "type": "string", + "defaultValue": "database1", + "metadata": { + "description": "The name for the Gremlin database" + }, + "value": "myDatabase" + }, + "graphName": { + "type": "string", + "defaultValue": "graph1", + "metadata": { + "description": "The name for the Gremlin graph" + }, + "value": "myGraph" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "maxValue": 1000000, + "minValue": 400, + "metadata": { + "description": "Throughput for the Gremlin graph" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Texas", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableGremlin" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Texas", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/gremlinDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "myDatabase" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/gremlinDatabases/graphs", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('graphName'))]", + "properties": { + "resource": { + "id": "myGraph", + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ] + }, + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + }, + "options": { + "throughput": 400 + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/gremlinDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1286 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1286 new file mode 100644 index 0000000..d39bceb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1286 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962906403, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1286", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/gremlindatabases/graphs", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/gremlindatabases" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1286", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "152416433425177287" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('gremlin-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "West US" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "East US" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Gremlin database" + }, + "value": "database1" + }, + "graphName": { + "type": "string", + "metadata": { + "description": "The name for the Gremlin graph" + }, + "value": "graph1" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum autoscale throughput for the graph" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableGremlin" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/gremlinDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/gremlinDatabases/graphs", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('graphName'))]", + "properties": { + "resource": { + "id": "graph1", + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ] + }, + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + } + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/gremlinDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1287 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1287 new file mode 100644 index 0000000..0c6f539 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1287 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906411, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-gremlin-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1287", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/gremlindatabases/graphs", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/gremlindatabases" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1287", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "152416433425177287" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('gremlin-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Gremlin database" + }, + "value": "database1" + }, + "graphName": { + "type": "string", + "metadata": { + "description": "The name for the Gremlin graph" + }, + "value": "graph1" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum autoscale throughput for the graph" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableGremlin" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/gremlinDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/gremlinDatabases/graphs", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('graphName'))]", + "properties": { + "resource": { + "id": "graph1", + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ] + }, + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + } + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/gremlinDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1288 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1288 new file mode 100644 index 0000000..5ee6a3c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1288 @@ -0,0 +1,341 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.parameters.json" + ], + "timestamp": 1642962906422, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1288", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/mongodbdatabases", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/mongodbdatabases/collections" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1288", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "1202222167196775397" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('mongodb-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "West US" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "East US" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "serverVersion": { + "type": "string", + "defaultValue": "4.0", + "allowedValues": [ + "3.2", + "3.6", + "4.0" + ], + "metadata": { + "description": "Specifies the MongoDB server version to use." + }, + "value": "4.0" + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Mongo DB database" + }, + "value": "myDatabase" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "maxValue": 1000000, + "minValue": 400, + "metadata": { + "description": "The shared throughput for the Mongo DB database" + } + }, + "collection1Name": { + "type": "string", + "metadata": { + "description": "The name for the first Mongo DB collection" + }, + "value": "myCollection1" + }, + "collection2Name": { + "type": "string", + "metadata": { + "description": "The name for the second Mongo DB collection" + }, + "value": "myCollection2" + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "MongoDB", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "apiProperties": { + "serverVersion": "4.0" + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "myDatabase" + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('collection1Name'))]", + "properties": { + "resource": { + "id": "myCollection1", + "shardKey": { + "user_id": "Hash" + }, + "indexes": [ + { + "key": { + "keys": [ + "_id" + ] + } + }, + { + "key": { + "keys": [ + "$**" + ] + } + }, + { + "key": { + "keys": [ + "user_id", + "user_address" + ] + }, + "options": { + "unique": true + } + }, + { + "key": { + "keys": [ + "_ts" + ] + }, + "options": { + "expireAfterSeconds": 2629746 + } + } + ], + "options": { + "If-Match": "" + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('collection2Name'))]", + "properties": { + "resource": { + "id": "myCollection2", + "shardKey": { + "company_id": "Hash" + }, + "indexes": [ + { + "key": { + "keys": [ + "_id" + ] + } + }, + { + "key": { + "keys": [ + "$**" + ] + } + }, + { + "key": { + "keys": [ + "company_id", + "company_address" + ] + }, + "options": { + "unique": true + } + }, + { + "key": { + "keys": [ + "_ts" + ] + }, + "options": { + "expireAfterSeconds": 2629746 + } + } + ], + "options": { + "If-Match": "" + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1289 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1289 new file mode 100644 index 0000000..aac0227 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1289 @@ -0,0 +1,341 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906431, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1289", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/mongodbdatabases", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/mongodbdatabases/collections" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1289", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "1202222167196775397" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('mongodb-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "serverVersion": { + "type": "string", + "defaultValue": "4.0", + "allowedValues": [ + "3.2", + "3.6", + "4.0" + ], + "metadata": { + "description": "Specifies the MongoDB server version to use." + }, + "value": "4.0" + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Mongo DB database" + }, + "value": "myDatabase" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "maxValue": 1000000, + "minValue": 400, + "metadata": { + "description": "The shared throughput for the Mongo DB database" + } + }, + "collection1Name": { + "type": "string", + "metadata": { + "description": "The name for the first Mongo DB collection" + }, + "value": "myCollection1" + }, + "collection2Name": { + "type": "string", + "metadata": { + "description": "The name for the second Mongo DB collection" + }, + "value": "myCollection2" + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "MongoDB", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "apiProperties": { + "serverVersion": "4.0" + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "myDatabase" + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('collection1Name'))]", + "properties": { + "resource": { + "id": "myCollection1", + "shardKey": { + "user_id": "Hash" + }, + "indexes": [ + { + "key": { + "keys": [ + "_id" + ] + } + }, + { + "key": { + "keys": [ + "$**" + ] + } + }, + { + "key": { + "keys": [ + "user_id", + "user_address" + ] + }, + "options": { + "unique": true + } + }, + { + "key": { + "keys": [ + "_ts" + ] + }, + "options": { + "expireAfterSeconds": 2629746 + } + } + ], + "options": { + "If-Match": "" + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('collection2Name'))]", + "properties": { + "resource": { + "id": "myCollection2", + "shardKey": { + "company_id": "Hash" + }, + "indexes": [ + { + "key": { + "keys": [ + "_id" + ] + } + }, + { + "key": { + "keys": [ + "$**" + ] + } + }, + { + "key": { + "keys": [ + "company_id", + "company_address" + ] + }, + "options": { + "unique": true + } + }, + { + "key": { + "keys": [ + "_ts" + ] + }, + "options": { + "expireAfterSeconds": 2629746 + } + } + ], + "options": { + "If-Match": "" + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1290 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1290 new file mode 100644 index 0000000..9be2138 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1290 @@ -0,0 +1,345 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962906442, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1290", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/mongodbdatabases", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/mongodbdatabases/collections" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1290", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "1468643375910708237" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('mongodb-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "West US" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "East US" + }, + "serverVersion": { + "type": "string", + "defaultValue": "4.0", + "allowedValues": [ + "3.2", + "3.6", + "4.0" + ], + "metadata": { + "description": "Specifies the MongoDB server version to use." + }, + "value": "4.0" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Mongo DB database" + }, + "value": "database1" + }, + "collection1Name": { + "type": "string", + "metadata": { + "description": "The name for the first Mongo DB collection" + }, + "value": "collection1" + }, + "collection2Name": { + "type": "string", + "metadata": { + "description": "The name for the second Mongo DB collection" + }, + "value": "collection2" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum throughput when using Autoscale Throughput Policy for the Database" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "MongoDB", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "apiProperties": { + "serverVersion": "4.0" + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection1Name'))]", + "properties": { + "resource": { + "id": "collection1", + "shardKey": { + "user_id": "Hash" + }, + "indexes": [ + { + "key": { + "keys": [ + "_id" + ] + } + }, + { + "key": { + "keys": [ + "$**" + ] + } + }, + { + "key": { + "keys": [ + "user_id", + "user_address" + ] + }, + "options": { + "unique": true + } + }, + { + "key": { + "keys": [ + "_ts" + ], + "options": { + "expireAfterSeconds": 2629746 + } + } + } + ], + "options": { + "If-Match": "" + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/[toLower(parameters('accountName'))]/database1", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection2Name'))]", + "properties": { + "resource": { + "id": "collection2", + "shardKey": { + "company_id": "Hash" + }, + "indexes": [ + { + "key": { + "keys": [ + "_id" + ] + } + }, + { + "key": { + "keys": [ + "$**" + ] + } + }, + { + "key": { + "keys": [ + "company_id", + "company_address" + ] + }, + "options": { + "unique": true + } + }, + { + "key": { + "keys": [ + "_ts" + ], + "options": { + "expireAfterSeconds": 2629746 + } + } + } + ], + "options": { + "If-Match": "" + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/[toLower(parameters('accountName'))]/database1", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1291 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1291 new file mode 100644 index 0000000..35f217a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1291 @@ -0,0 +1,345 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906454, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-mongodb-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1291", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/mongodbdatabases", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/mongodbdatabases/collections" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1291", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "1468643375910708237" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('mongodb-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "serverVersion": { + "type": "string", + "defaultValue": "4.0", + "allowedValues": [ + "3.2", + "3.6", + "4.0" + ], + "metadata": { + "description": "Specifies the MongoDB server version to use." + }, + "value": "4.0" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Mongo DB database" + }, + "value": "database1" + }, + "collection1Name": { + "type": "string", + "metadata": { + "description": "The name for the first Mongo DB collection" + }, + "value": "collection1" + }, + "collection2Name": { + "type": "string", + "metadata": { + "description": "The name for the second Mongo DB collection" + }, + "value": "collection2" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum throughput when using Autoscale Throughput Policy for the Database" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "MongoDB", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "apiProperties": { + "serverVersion": "4.0" + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection1Name'))]", + "properties": { + "resource": { + "id": "collection1", + "shardKey": { + "user_id": "Hash" + }, + "indexes": [ + { + "key": { + "keys": [ + "_id" + ] + } + }, + { + "key": { + "keys": [ + "$**" + ] + } + }, + { + "key": { + "keys": [ + "user_id", + "user_address" + ] + }, + "options": { + "unique": true + } + }, + { + "key": { + "keys": [ + "_ts" + ], + "options": { + "expireAfterSeconds": 2629746 + } + } + } + ], + "options": { + "If-Match": "" + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/[toLower(parameters('accountName'))]/database1", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/mongodbDatabases/collections", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('collection2Name'))]", + "properties": { + "resource": { + "id": "collection2", + "shardKey": { + "company_id": "Hash" + }, + "indexes": [ + { + "key": { + "keys": [ + "_id" + ] + } + }, + { + "key": { + "keys": [ + "$**" + ] + } + }, + { + "key": { + "keys": [ + "company_id", + "company_address" + ] + }, + "options": { + "unique": true + } + }, + { + "key": { + "keys": [ + "_ts" + ], + "options": { + "expireAfterSeconds": 2629746 + } + } + } + ], + "options": { + "If-Match": "" + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/[toLower(parameters('accountName'))]/database1", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1292 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1292 new file mode 100644 index 0000000..75a6089 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1292 @@ -0,0 +1,172 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962906463, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1292", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.documentdb/databaseaccounts", + "microsoft.network/privateendpoints" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1292", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "7604570790168177341" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "eastus" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Virtual network name" + }, + "value": "GEN-UNIQUE" + }, + "accountName": { + "type": "string", + "minLength": 3, + "maxLength": 44, + "metadata": { + "description": "Cosmos DB account name (must contain only lowercase letters, digits, and hyphens)" + }, + "value": "GEN-UNIQUE" + }, + "publicNetworkAccess": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enable public network traffic to access the account; if set to Disabled, public network traffic will be blocked even before the private endpoint is created" + }, + "value": "Disabled" + }, + "privateEndpointName": { + "type": "string", + "metadata": { + "description": "Private endpoint name" + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "variables": { + "subnetName": "default", + "locations": [ + { + "locationName": "eastus", + "failoverPriority": 0, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "eastus", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "172.20.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "172.20.0.0/24", + "privateEndpointNetworkPolicies": "Disabled" + } + } + ] + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "GEN-UNIQUE", + "location": "eastus", + "kind": "GlobalDocumentDB", + "properties": { + "consistencyPolicy": { + "defaultConsistencyLevel": "Session" + }, + "locations": [ + { + "locationName": "eastus", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": false, + "enableMultipleWriteLocations": false, + "publicNetworkAccess": "Disabled" + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE", + "location": "eastus", + "properties": { + "subnet": { + "id": "Microsoft.Network/VirtualNetworks/subnets/GEN-UNIQUE/default" + }, + "privateLinkServiceConnections": [ + { + "name": "MyConnection", + "properties": { + "privateLinkServiceId": "Microsoft.DocumentDB/databaseAccounts/GEN-UNIQUE", + "groupIds": [ + "Sql" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1293 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1293 new file mode 100644 index 0000000..99cfb3c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1293 @@ -0,0 +1,172 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906473, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-private-endpoint/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1293", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.documentdb/databaseaccounts", + "microsoft.network/privateendpoints" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1293", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "7604570790168177341" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "US Gov Virginia" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Virtual network name" + }, + "value": "GEN-UNIQUE" + }, + "accountName": { + "type": "string", + "minLength": 3, + "maxLength": 44, + "metadata": { + "description": "Cosmos DB account name (must contain only lowercase letters, digits, and hyphens)" + }, + "value": "GEN-UNIQUE" + }, + "publicNetworkAccess": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enable public network traffic to access the account; if set to Disabled, public network traffic will be blocked even before the private endpoint is created" + }, + "value": "Disabled" + }, + "privateEndpointName": { + "type": "string", + "metadata": { + "description": "Private endpoint name" + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "variables": { + "subnetName": "default", + "locations": [ + { + "locationName": "US Gov Virginia", + "failoverPriority": 0, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "US Gov Virginia", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "172.20.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "172.20.0.0/24", + "privateEndpointNetworkPolicies": "Disabled" + } + } + ] + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "GEN-UNIQUE", + "location": "US Gov Virginia", + "kind": "GlobalDocumentDB", + "properties": { + "consistencyPolicy": { + "defaultConsistencyLevel": "Session" + }, + "locations": [ + { + "locationName": "US Gov Virginia", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": false, + "enableMultipleWriteLocations": false, + "publicNetworkAccess": "Disabled" + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE", + "location": "US Gov Virginia", + "properties": { + "subnet": { + "id": "Microsoft.Network/VirtualNetworks/subnets/GEN-UNIQUE/default" + }, + "privateLinkServiceConnections": [ + { + "name": "MyConnection", + "properties": { + "privateLinkServiceId": "Microsoft.DocumentDB/databaseAccounts/GEN-UNIQUE", + "groupIds": [ + "Sql" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1294 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1294 new file mode 100644 index 0000000..9edc61b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1294 @@ -0,0 +1,286 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.parameters.json" + ], + "timestamp": 1642962906480, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1294", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1294", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "18246509320363749893" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('sql-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "West US 2" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "East US 2" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + }, + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ] + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + }, + "maxValue": 2147483647, + "minValue": 10 + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "metadata": { + "description": "Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + }, + "maxValue": 86400, + "minValue": 5 + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + }, + "allowedValues": [ + true, + false + ] + }, + "databaseName": { + "type": "string", + "defaultValue": "myDatabase", + "metadata": { + "description": "The name for the database" + }, + "value": "myDatabase" + }, + "containerName": { + "type": "string", + "defaultValue": "myContainer", + "metadata": { + "description": "The name for the container" + }, + "value": "myContainer" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "metadata": { + "description": "The throughput for the container" + }, + "maxValue": 1000000, + "minValue": 400, + "value": 400 + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US 2", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US 2", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US 2", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US 2", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "myDatabase" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('containerName'))]", + "properties": { + "resource": { + "id": "myContainer", + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + }, + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ], + "compositeIndexes": [ + [ + { + "path": "/name", + "order": "ascending" + }, + { + "path": "/age", + "order": "descending" + } + ] + ], + "spatialIndexes": [ + { + "path": "/location/*", + "types": [ + "Point", + "Polygon", + "MultiPolygon", + "LineString" + ] + } + ] + }, + "defaultTtl": 86400, + "uniqueKeyPolicy": { + "uniqueKeys": [ + { + "paths": [ + "/phoneNumber" + ] + } + ] + } + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1295 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1295 new file mode 100644 index 0000000..8063658 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1295 @@ -0,0 +1,286 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906487, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1295", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1295", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "18246509320363749893" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('sql-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + }, + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ] + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + }, + "maxValue": 2147483647, + "minValue": 10 + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "metadata": { + "description": "Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + }, + "maxValue": 86400, + "minValue": 5 + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + }, + "allowedValues": [ + true, + false + ] + }, + "databaseName": { + "type": "string", + "defaultValue": "myDatabase", + "metadata": { + "description": "The name for the database" + }, + "value": "myDatabase" + }, + "containerName": { + "type": "string", + "defaultValue": "myContainer", + "metadata": { + "description": "The name for the container" + }, + "value": "myContainer" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "metadata": { + "description": "The throughput for the container" + }, + "maxValue": 1000000, + "minValue": 400, + "value": 400 + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "myDatabase" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), parameters('containerName'))]", + "properties": { + "resource": { + "id": "myContainer", + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + }, + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ], + "compositeIndexes": [ + [ + { + "path": "/name", + "order": "ascending" + }, + { + "path": "/age", + "order": "descending" + } + ] + ], + "spatialIndexes": [ + { + "path": "/location/*", + "types": [ + "Point", + "Polygon", + "MultiPolygon", + "LineString" + ] + } + ] + }, + "defaultTtl": 86400, + "uniqueKeyPolicy": { + "uniqueKeys": [ + { + "paths": [ + "/phoneNumber" + ] + } + ] + } + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[0], split(format('{0}/{1}', variables('accountName_var'), parameters('databaseName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1296 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1296 new file mode 100644 index 0000000..ad1c59a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1296 @@ -0,0 +1,196 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.parameters.json" + ], + "timestamp": 1642962906493, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1296", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1296", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "11300717876297274128" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[toLower(uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "databaseName": { + "type": "string", + "defaultValue": "database1", + "metadata": { + "description": "The name for the database" + } + }, + "containerName": { + "type": "string", + "defaultValue": "container1", + "metadata": { + "description": "The name for the container" + } + }, + "partitionKeyPath": { + "type": "string", + "defaultValue": "/partitionKey", + "metadata": { + "description": "The partition key for the container" + } + }, + "throughputPolicy": { + "type": "string", + "defaultValue": "Autoscale", + "allowedValues": [ + "Manual", + "Autoscale" + ], + "metadata": { + "description": "The throughput policy for the container" + } + }, + "manualProvisionedThroughput": { + "type": "int", + "defaultValue": 400, + "maxValue": 1000000, + "minValue": 400, + "metadata": { + "description": "Throughput value when using Manual Throughput Policy for the container" + } + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum throughput when using Autoscale Throughput Policy for the container" + } + }, + "analyticalStoreTTL": { + "type": "int", + "defaultValue": -1, + "maxValue": 2147483647, + "minValue": -1, + "metadata": { + "description": "Time to Live for data in analytical store. (-1 no expiry)" + } + } + }, + "functions": [], + "variables": { + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "throughput_Policy": { + "Manual": { + "Throughput": 400 + }, + "Autoscale": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + } + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "consistencyPolicy": { + "defaultConsistencyLevel": "Session" + }, + "databaseAccountOfferType": "Standard", + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "enableAnalyticalStorage": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', parameters('accountName'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}', parameters('accountName'), parameters('databaseName'), parameters('containerName'))]", + "properties": { + "resource": { + "id": "container1", + "partitionKey": { + "paths": [ + "/partitionKey" + ], + "kind": "Hash" + }, + "analyticalStorageTtl": -1 + }, + "options": "(throughput_Policy)[parameters(throughputPolicy)]" + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(uniqueString(resourceGroup().id))]", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(uniqueString(resourceGroup().id))]/database1" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1297 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1297 new file mode 100644 index 0000000..95b155a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1297 @@ -0,0 +1,196 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906500, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-analytical-store/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1297", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1297", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "11300717876297274128" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[toLower(uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "databaseName": { + "type": "string", + "defaultValue": "database1", + "metadata": { + "description": "The name for the database" + } + }, + "containerName": { + "type": "string", + "defaultValue": "container1", + "metadata": { + "description": "The name for the container" + } + }, + "partitionKeyPath": { + "type": "string", + "defaultValue": "/partitionKey", + "metadata": { + "description": "The partition key for the container" + } + }, + "throughputPolicy": { + "type": "string", + "defaultValue": "Autoscale", + "allowedValues": [ + "Manual", + "Autoscale" + ], + "metadata": { + "description": "The throughput policy for the container" + } + }, + "manualProvisionedThroughput": { + "type": "int", + "defaultValue": 400, + "maxValue": 1000000, + "minValue": 400, + "metadata": { + "description": "Throughput value when using Manual Throughput Policy for the container" + } + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum throughput when using Autoscale Throughput Policy for the container" + } + }, + "analyticalStoreTTL": { + "type": "int", + "defaultValue": -1, + "maxValue": 2147483647, + "minValue": -1, + "metadata": { + "description": "Time to Live for data in analytical store. (-1 no expiry)" + } + } + }, + "functions": [], + "variables": { + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "throughput_Policy": { + "Manual": { + "Throughput": 400 + }, + "Autoscale": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + } + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "consistencyPolicy": { + "defaultConsistencyLevel": "Session" + }, + "databaseAccountOfferType": "Standard", + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "enableAnalyticalStorage": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', parameters('accountName'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}', parameters('accountName'), parameters('databaseName'), parameters('containerName'))]", + "properties": { + "resource": { + "id": "container1", + "partitionKey": { + "paths": [ + "/partitionKey" + ], + "kind": "Hash" + }, + "analyticalStorageTtl": -1 + }, + "options": "(throughput_Policy)[parameters(throughputPolicy)]" + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(uniqueString(resourceGroup().id))]", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(uniqueString(resourceGroup().id))]/database1" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1298 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1298 new file mode 100644 index 0000000..0f0aa43 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1298 @@ -0,0 +1,282 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962906507, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1298", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1298", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "9532273059807408230" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('sql-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters, lowercase" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "West US 2" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "East US 2" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the database" + }, + "value": "database1" + }, + "containerName": { + "type": "string", + "metadata": { + "description": "The name for the container" + }, + "value": "container1" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum throughput for the container" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US 2", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US 2", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-01-15", + "name": "[toLower(parameters('accountName'))]", + "kind": "GlobalDocumentDB", + "location": "[resourceGroup().location]", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US 2", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US 2", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-01-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2021-01-15", + "name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'))]", + "properties": { + "resource": { + "id": "container1", + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + }, + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ], + "compositeIndexes": [ + [ + { + "path": "/name", + "order": "ascending" + }, + { + "path": "/age", + "order": "descending" + } + ] + ], + "spatialIndexes": [ + { + "path": "/path/to/geojson/property/?", + "types": [ + "Point", + "Polygon", + "MultiPolygon", + "LineString" + ] + } + ] + }, + "defaultTtl": 86400, + "uniqueKeyPolicy": { + "uniqueKeys": [ + { + "paths": [ + "/phoneNumber" + ] + } + ] + } + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/database1", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1299 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1299 new file mode 100644 index 0000000..7c8e4f7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1299 @@ -0,0 +1,282 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906516, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1299", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1299", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "9532273059807408230" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('sql-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters, lowercase" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the database" + }, + "value": "database1" + }, + "containerName": { + "type": "string", + "metadata": { + "description": "The name for the container" + }, + "value": "container1" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum throughput for the container" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-01-15", + "name": "[toLower(parameters('accountName'))]", + "kind": "GlobalDocumentDB", + "location": "[resourceGroup().location]", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-01-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "database1" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2021-01-15", + "name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'))]", + "properties": { + "resource": { + "id": "container1", + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + }, + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ], + "compositeIndexes": [ + [ + { + "path": "/name", + "order": "ascending" + }, + { + "path": "/age", + "order": "descending" + } + ] + ], + "spatialIndexes": [ + { + "path": "/path/to/geojson/property/?", + "types": [ + "Point", + "Polygon", + "MultiPolygon", + "LineString" + ] + } + ] + }, + "defaultTtl": 86400, + "uniqueKeyPolicy": { + "uniqueKeys": [ + { + "paths": [ + "/phoneNumber" + ] + } + ] + } + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/database1", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT130 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT130 new file mode 100644 index 0000000..bfbeaec --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT130 @@ -0,0 +1,236 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/shared-resources.json" + ], + "timestamp": 1642962887409, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/nestedtemplates/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT130", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT130", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "description": "Network settings object" + } + }, + "loadBalancerType": { + "type": "string", + "defaultValue": "internal", + "allowedValues": [ + "internal", + "external" + ], + "metadata": { + "description": "Load balancer setting (internal/external)" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "ilbIpAddress": { + "type": "string", + "metadata": { + "description": "The static IP address to use with the internal load balancer configuration" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "storageSettings", + "storageAccountNameAFS": "storageSettings", + "storageAccountNameShared": "storageSettings", + "FELBtype": { + "internal": [ + { + "name": "LBFE", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/networkSettings/networkSettings" + }, + "privateIPAddress": "ilbIpAddress", + "privateIPAllocationMethod": "Static" + } + } + ] + }, + "feLoadBalancerConfig": "(FELBtype)[parameters(loadBalancerType)]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storageSettings", + "apiVersion": "2021-01-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "location": "location" + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storageSettings", + "apiVersion": "2021-01-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "location": "location" + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat(variables('storageAccountName'), copyindex(1))]", + "apiVersion": "2021-01-01", + "sku": { + "name": "storageSettings" + }, + "kind": "StorageV2", + "location": "location", + "copy": { + "name": "storageLoop", + "count": "storageSettings" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "public-ip", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "es-load-balancer", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/public-ip" + ], + "properties": { + "frontendIPConfigurations": "(FELBtype)[parameters(loadBalancerType)]", + "backendAddressPools": [ + { + "name": "LBBE" + } + ], + "loadBalancingRules": [ + { + "name": "es-http-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/es-load-balancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/es-load-balancer/LBBE" + }, + "protocol": "Tcp", + "frontendPort": 9200, + "backendPort": 9200, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/es-load-balancer/es-tcp-probe" + } + } + }, + { + "name": "es-tcp-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/es-load-balancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/es-load-balancer/LBBE" + }, + "protocol": "Tcp", + "frontendPort": 9300, + "backendPort": 9300, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5 + } + } + ], + "probes": [ + { + "name": "es-tcp-probe", + "properties": { + "protocol": "Tcp", + "port": 9200, + "intervalInSeconds": 30, + "numberOfProbes": 3 + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1300 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1300 new file mode 100644 index 0000000..9957a9a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1300 @@ -0,0 +1,301 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.parameters.json" + ], + "timestamp": 1642962906525, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1300", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/triggers", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/storedprocedures", + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/userdefinedfunctions", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1300", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "18052294765505030836" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('cosmos-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "West US 2" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "East US 2" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Core (SQL) database" + }, + "value": "myDatabase" + }, + "containerName": { + "type": "string", + "defaultValue": "container1", + "metadata": { + "description": "The name for the Core (SQL) API container" + }, + "value": "myContainer" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "maxValue": 1000000, + "minValue": 400, + "metadata": { + "description": "The throughput for the container" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US 2", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US 2", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US 2", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US 2", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "myDatabase" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'))]", + "properties": { + "resource": { + "id": "myContainer", + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + }, + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ] + } + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/myDatabase", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}/{3}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'), 'myStoredProcedure')]", + "properties": { + "resource": { + "id": "myStoredProcedure", + "body": "function () { var context = getContext(); var response = context.getResponse(); response.setBody('Hello, World'); }" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/myDatabase", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/[toLower(parameters('accountName'))]/myDatabase/myContainer", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}/{3}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'), 'myPreTrigger')]", + "properties": { + "resource": { + "id": "myPreTrigger", + "triggerType": "Pre", + "triggerOperation": "Create", + "body": "function validateToDoItemTimestamp(){var context=getContext();var request=context.getRequest();var itemToCreate=request.getBody();if(!('timestamp'in itemToCreate)){var ts=new Date();itemToCreate['timestamp']=ts.getTime();}request.setBody(itemToCreate);}" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/myDatabase", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/[toLower(parameters('accountName'))]/myDatabase/myContainer", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}/{3}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'), 'myUserDefinedFunction')]", + "properties": { + "resource": { + "id": "myUserDefinedFunction", + "body": "function tax(income){if(income==undefined)throw'no input';if(income<1000)return income*0.1;else if(income<10000)return income*0.2;else return income*0.4;}" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/myDatabase", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/[toLower(parameters('accountName'))]/myDatabase/myContainer", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1301 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1301 new file mode 100644 index 0000000..b55fdb3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1301 @@ -0,0 +1,301 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906536, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-container-sprocs/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1301", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/triggers", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/storedprocedures", + "microsoft.documentdb/databaseaccounts/sqldatabases", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers/userdefinedfunctions", + "microsoft.documentdb/databaseaccounts/sqldatabases/containers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1301", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "18052294765505030836" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('cosmos-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary replica region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary replica region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions" + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name for the Core (SQL) database" + }, + "value": "myDatabase" + }, + "containerName": { + "type": "string", + "defaultValue": "container1", + "metadata": { + "description": "The name for the Core (SQL) API container" + }, + "value": "myContainer" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "maxValue": 1000000, + "minValue": 400, + "metadata": { + "description": "The throughput for the container" + } + } + }, + "functions": [], + "variables": { + "accountName_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var'), parameters('databaseName'))]", + "properties": { + "resource": { + "id": "myDatabase" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'))]", + "properties": { + "resource": { + "id": "myContainer", + "partitionKey": { + "paths": [ + "/myPartitionKey" + ], + "kind": "Hash" + }, + "indexingPolicy": { + "indexingMode": "consistent", + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/myPathToNotIndex/*" + } + ] + } + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/myDatabase", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}/{3}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'), 'myStoredProcedure')]", + "properties": { + "resource": { + "id": "myStoredProcedure", + "body": "function () { var context = getContext(); var response = context.getResponse(); response.setBody('Hello, World'); }" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/myDatabase", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/[toLower(parameters('accountName'))]/myDatabase/myContainer", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}/{3}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'), 'myPreTrigger')]", + "properties": { + "resource": { + "id": "myPreTrigger", + "triggerType": "Pre", + "triggerOperation": "Create", + "body": "function validateToDoItemTimestamp(){var context=getContext();var request=context.getRequest();var itemToCreate=request.getBody();if(!('timestamp'in itemToCreate)){var ts=new Date();itemToCreate['timestamp']=ts.getTime();}request.setBody(itemToCreate);}" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/myDatabase", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/[toLower(parameters('accountName'))]/myDatabase/myContainer", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}/{2}/{3}', variables('accountName_var'), parameters('databaseName'), parameters('containerName'), 'myUserDefinedFunction')]", + "properties": { + "resource": { + "id": "myUserDefinedFunction", + "body": "function tax(income){if(income==undefined)throw'no input';if(income<1000)return income*0.1;else if(income<10000)return income*0.2;else return income*0.4;}" + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/[toLower(parameters('accountName'))]/myDatabase", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/[toLower(parameters('accountName'))]/myDatabase/myContainer", + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1302 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1302 new file mode 100644 index 0000000..32a804c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1302 @@ -0,0 +1,162 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-multiple-containers/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-multiple-containers/azuredeploy.parameters.json" + ], + "timestamp": 1642962906548, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-multiple-containers/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-multiple-containers/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1302", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/apis/databases", + "microsoft.documentdb/databaseaccounts/apis/databases/containers", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1302", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "accountName": { + "type": "string", + "defaultValue": "[concat('sql-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos Account Name" + }, + "value": "GEN-UNIQUE" + }, + "databaseName": { + "type": "string", + "defaultValue": "myDatabase", + "metadata": { + "description": "Database name" + }, + "value": "MyDatabase" + }, + "containers": { + "type": "array", + "metadata": { + "description": "Array of Container Object with name and partition key" + }, + "value": [ + { + "name": "MyContainer1", + "partitionKey": "/partitionKey1" + }, + { + "name": "MyContainer2", + "partitionKey": "/partitionKey2" + } + ] + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2019-12-12", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "consistencyPolicy": { + "defaultConsistencyLevel": "Eventual", + "maxStalenessPrefix": 1, + "maxIntervalInSeconds": 5 + }, + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0 + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": false + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/apis/databases", + "name": "GEN-UNIQUE/sql/MyDatabase", + "apiVersion": "2016-03-31", + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts//GEN-UNIQUE" + ], + "properties": { + "resource": { + "id": "MyDatabase" + }, + "options": { + "throughput": 400 + } + } + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers", + "name": "[concat(parameters('accountName'), '/sql/', parameters('databaseName'), '/', parameters('containers')[copyIndex()].name)]", + "apiVersion": "2016-03-31", + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/apis/databases/GEN-UNIQUE/sql/MyDatabase" + ], + "properties": { + "resource": { + "id": "containers)[copyIndex(", + "partitionKey": { + "paths": [ + "containers)[copyIndex(" + ], + "kind": "hash" + }, + "indexingPolicy": { + "indexingMode": "consistent" + } + } + } + }, + { + "type": "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers", + "name": "[concat(parameters('accountName'), '/sql/', parameters('databaseName'), '/', parameters('containers')[copyIndex()].name)]", + "apiVersion": "2016-03-31", + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/apis/databases/GEN-UNIQUE/sql/MyDatabase" + ], + "properties": { + "resource": { + "id": "containers)[copyIndex(", + "partitionKey": { + "paths": [ + "containers)[copyIndex(" + ], + "kind": "hash" + }, + "indexingPolicy": { + "indexingMode": "consistent" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1303 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1303 new file mode 100644 index 0000000..35bce99 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1303 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-rbac/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-rbac/azuredeploy.parameters.json" + ], + "timestamp": 1642962906554, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-sql-rbac/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-sql-rbac/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1303", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/sqlroledefinitions", + "microsoft.documentdb/databaseaccounts", + "microsoft.documentdb/databaseaccounts/sqlroleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1303", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "8081463042550811798" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "accountName": { + "type": "string", + "defaultValue": "[toLower(format('sql-rbac-{0}', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Cosmos DB account name, max length 44 characters" + }, + "value": "GEN-UNIQUE" + }, + "roleDefinitionName": { + "type": "string", + "defaultValue": "My Read Write Role", + "metadata": { + "description": "Friendly name for the SQL Role Definition" + } + }, + "dataActions": { + "type": "array", + "defaultValue": [ + "Microsoft.DocumentDB/databaseAccounts/readMetadata", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*" + ], + "metadata": { + "description": "Data actions permitted by the Role Definition" + } + }, + "principalId": { + "type": "string", + "metadata": { + "description": "Object ID of the AAD identity. Must be a GUID." + }, + "value": "GEN-AZUREAD-OBJECTID" + } + }, + "functions": [], + "variables": { + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "roleDefinitionId": "[guid('sql-role-definition-', parameters('principalId'), resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName')))]", + "roleAssignmentId": "[guid('sql-role-assignment-', parameters('principalId'), resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName')))]" + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "GEN-UNIQUE", + "kind": "GlobalDocumentDB", + "location": "[resourceGroup().location]", + "properties": { + "consistencyPolicy": { + "defaultConsistencyLevel": "Session" + }, + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": false, + "enableMultipleWriteLocations": false + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', parameters('accountName'), variables('roleDefinitionId'))]", + "properties": { + "roleName": "My Read Write Role", + "type": "CustomRole", + "assignableScopes": [ + "Microsoft.DocumentDB/databaseAccounts/GEN-UNIQUE" + ], + "permissions": [ + { + "dataActions": [ + "Microsoft.DocumentDB/databaseAccounts/readMetadata", + "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*" + ] + } + ] + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', parameters('accountName'), variables('roleAssignmentId'))]", + "properties": { + "roleDefinitionId": "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', split(format('{0}/{1}', parameters('accountName'), variables('roleDefinitionId')), '/')[0], split(format('{0}/{1}', parameters('accountName'), variables('roleDefinitionId')), '/')[1])]", + "principalId": "GEN-AZUREAD-OBJECTID", + "scope": "Microsoft.DocumentDB/databaseAccounts/GEN-UNIQUE" + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/GEN-UNIQUE", + "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', split(format('{0}/{1}', parameters('accountName'), variables('roleDefinitionId')), '/')[0], split(format('{0}/{1}', parameters('accountName'), variables('roleDefinitionId')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1304 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1304 new file mode 100644 index 0000000..ee38071 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1304 @@ -0,0 +1,212 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.parameters.json" + ], + "timestamp": 1642962906563, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1304", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/tables", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1304", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "3290661901866337824" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('table-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary region for the Cosmos DB account." + }, + "value": "West US" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary region for the Cosmos DB account." + }, + "value": "East US" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions. Ignored when Multi-Master is enabled" + } + }, + "tableName": { + "type": "string", + "metadata": { + "description": "The name for the table" + }, + "value": "table1" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "metadata": { + "description": "The throughput for the table" + }, + "maxValue": 1000000, + "minValue": 400, + "value": 400 + } + }, + "functions": [], + "variables": { + "accountName_var_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableTable" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/tables", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var_var'), parameters('tableName'))]", + "properties": { + "resource": { + "id": "table1" + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1305 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1305 new file mode 100644 index 0000000..9276b79 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1305 @@ -0,0 +1,212 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906571, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1305", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/tables", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1305", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "3290661901866337824" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('table-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions. Ignored when Multi-Master is enabled" + } + }, + "tableName": { + "type": "string", + "metadata": { + "description": "The name for the table" + }, + "value": "table1" + }, + "throughput": { + "type": "int", + "defaultValue": 400, + "metadata": { + "description": "The throughput for the table" + }, + "maxValue": 1000000, + "minValue": 400, + "value": 400 + } + }, + "functions": [], + "variables": { + "accountName_var_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableTable" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/tables", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var_var'), parameters('tableName'))]", + "properties": { + "resource": { + "id": "table1" + }, + "options": { + "throughput": 400 + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1306 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1306 new file mode 100644 index 0000000..9800e20 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1306 @@ -0,0 +1,213 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962906588, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1306", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/tables", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1306", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "5716442116978743825" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('table-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary region for the Cosmos DB account." + }, + "value": "West US" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary region for the Cosmos DB account." + }, + "value": "East US" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions. Ignored when Multi-Master is enabled" + } + }, + "tableName": { + "type": "string", + "metadata": { + "description": "The name for the table" + }, + "value": "table1" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum autoscale throughput for the table" + } + } + }, + "functions": [], + "variables": { + "accountName_var_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableTable" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "West US", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "East US", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/tables", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var_var'), parameters('tableName'))]", + "properties": { + "resource": { + "id": "table1" + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1307 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1307 new file mode 100644 index 0000000..4bb7033 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1307 @@ -0,0 +1,213 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906599, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-table-autoscale/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1307", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts/tables", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1307", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.539.46024", + "templateHash": "5716442116978743825" + } + }, + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[format('table-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Cosmos DB account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Cosmos DB account." + } + }, + "primaryRegion": { + "type": "string", + "metadata": { + "description": "The primary region for the Cosmos DB account." + }, + "value": "US Gov Arizona" + }, + "secondaryRegion": { + "type": "string", + "metadata": { + "description": "The secondary region for the Cosmos DB account." + }, + "value": "US Gov Virginia" + }, + "defaultConsistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "ConsistentPrefix", + "Session", + "BoundedStaleness", + "Strong" + ], + "metadata": { + "description": "The default consistency level of the Cosmos DB account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "defaultValue": 100000, + "maxValue": 2147483647, + "minValue": 10, + "metadata": { + "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "defaultValue": 300, + "maxValue": 86400, + "minValue": 5, + "metadata": { + "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400." + } + }, + "automaticFailover": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic failover for regions. Ignored when Multi-Master is enabled" + } + }, + "tableName": { + "type": "string", + "metadata": { + "description": "The name for the table" + }, + "value": "table1" + }, + "autoscaleMaxThroughput": { + "type": "int", + "defaultValue": 4000, + "maxValue": 1000000, + "minValue": 4000, + "metadata": { + "description": "Maximum autoscale throughput for the table" + } + } + }, + "functions": [], + "variables": { + "accountName_var_var": "[toLower(parameters('accountName'))]", + "consistencyPolicy": { + "Eventual": { + "defaultConsistencyLevel": "Eventual" + }, + "ConsistentPrefix": { + "defaultConsistencyLevel": "ConsistentPrefix" + }, + "Session": { + "defaultConsistencyLevel": "Session" + }, + "BoundedStaleness": { + "defaultConsistencyLevel": "BoundedStaleness", + "maxStalenessPrefix": 100000, + "maxIntervalInSeconds": 300 + }, + "Strong": { + "defaultConsistencyLevel": "Strong" + } + }, + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ] + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('accountName'))]", + "location": "[resourceGroup().location]", + "kind": "GlobalDocumentDB", + "properties": { + "capabilities": [ + { + "name": "EnableTable" + } + ], + "consistencyPolicy": "(consistencyPolicy)[parameters(defaultConsistencyLevel)]", + "locations": [ + { + "locationName": "US Gov Arizona", + "failoverPriority": 0, + "isZoneRedundant": false + }, + { + "locationName": "US Gov Virginia", + "failoverPriority": 1, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard", + "enableAutomaticFailover": true + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/tables", + "apiVersion": "2021-04-15", + "name": "[format('{0}/{1}', variables('accountName_var_var'), parameters('tableName'))]", + "properties": { + "resource": { + "id": "table1" + }, + "options": { + "autoscaleSettings": { + "maxThroughput": 4000 + } + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('accountName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1308 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1308 new file mode 100644 index 0000000..bede0c2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1308 @@ -0,0 +1,206 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962906609, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1308", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/sourcecontrols", + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1308", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "4234089021388440484" + } + }, + "parameters": { + "applicationName": { + "type": "string", + "defaultValue": "[format('to-do-app{0}', uniqueString(resourceGroup().id))]", + "maxLength": 30, + "metadata": { + "description": "Application Name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "West US 2" + }, + "appServicePlanTier": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "App Service Plan's pricing tier. Details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + }, + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ] + }, + "appServicePlanInstances": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "App Service Plan's instance count" + }, + "maxValue": 3, + "minValue": 1 + }, + "repositoryUrl": { + "type": "string", + "defaultValue": "https://github.com/Azure-Samples/cosmos-dotnet-core-todo-app.git", + "metadata": { + "description": "The URL for the GitHub repository that contains the project to deploy." + } + }, + "branch": { + "type": "string", + "defaultValue": "main", + "metadata": { + "description": "The branch of the GitHub repository to use." + } + }, + "databaseName": { + "type": "string", + "defaultValue": "Tasks", + "metadata": { + "description": "The Cosmos DB database name." + } + }, + "containerName": { + "type": "string", + "defaultValue": "Items", + "metadata": { + "description": "The Cosmos DB container name." + } + } + }, + "functions": [], + "variables": { + "cosmosAccountName": "[toLower(parameters('applicationName'))]", + "websiteName": "GEN-UNIQUE", + "hostingPlanName": "GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('applicationName'))]", + "kind": "GlobalDocumentDB", + "location": "West US 2", + "properties": { + "consistencyPolicy": { + "defaultConsistencyLevel": "Session" + }, + "locations": [ + { + "locationName": "West US 2", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "West US 2", + "sku": { + "name": "F1", + "capacity": 1 + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "West US 2", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "siteConfig": { + "appSettings": [ + { + "name": "CosmosDb:Account", + "value": "[reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosAccountName'))).documentEndpoint]" + }, + { + "name": "CosmosDb:Key", + "value": "[listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosAccountName')), '2021-04-15').primaryMasterKey]" + }, + { + "name": "CosmosDb:DatabaseName", + "value": "Tasks" + }, + { + "name": "CosmosDb:ContainerName", + "value": "Items" + } + ] + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('applicationName'))]", + "Microsoft.Web/serverfarms/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Web/sites/sourcecontrols", + "apiVersion": "2020-06-01", + "name": "[format('{0}/web', variables('websiteName'))]", + "properties": { + "repoUrl": "https://github.com/Azure-Samples/cosmos-dotnet-core-todo-app.git", + "branch": "main", + "isManualIntegration": true + }, + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1309 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1309 new file mode 100644 index 0000000..943e1bc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1309 @@ -0,0 +1,206 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906630, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.documentdb/cosmosdb-webapp/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1309", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/sourcecontrols", + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.documentdb/databaseaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1309", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "4234089021388440484" + } + }, + "parameters": { + "applicationName": { + "type": "string", + "defaultValue": "[format('to-do-app{0}', uniqueString(resourceGroup().id))]", + "maxLength": 30, + "metadata": { + "description": "Application Name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "US Gov Virginia" + }, + "appServicePlanTier": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "App Service Plan's pricing tier. Details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + }, + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ] + }, + "appServicePlanInstances": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "App Service Plan's instance count" + }, + "maxValue": 3, + "minValue": 1 + }, + "repositoryUrl": { + "type": "string", + "defaultValue": "https://github.com/Azure-Samples/cosmos-dotnet-core-todo-app.git", + "metadata": { + "description": "The URL for the GitHub repository that contains the project to deploy." + } + }, + "branch": { + "type": "string", + "defaultValue": "main", + "metadata": { + "description": "The branch of the GitHub repository to use." + } + }, + "databaseName": { + "type": "string", + "defaultValue": "Tasks", + "metadata": { + "description": "The Cosmos DB database name." + } + }, + "containerName": { + "type": "string", + "defaultValue": "Items", + "metadata": { + "description": "The Cosmos DB container name." + } + } + }, + "functions": [], + "variables": { + "cosmosAccountName": "[toLower(parameters('applicationName'))]", + "websiteName": "GEN-UNIQUE", + "hostingPlanName": "GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2021-04-15", + "name": "[toLower(parameters('applicationName'))]", + "kind": "GlobalDocumentDB", + "location": "US Gov Virginia", + "properties": { + "consistencyPolicy": { + "defaultConsistencyLevel": "Session" + }, + "locations": [ + { + "locationName": "US Gov Virginia", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "databaseAccountOfferType": "Standard" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "US Gov Virginia", + "sku": { + "name": "F1", + "capacity": 1 + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "US Gov Virginia", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "siteConfig": { + "appSettings": [ + { + "name": "CosmosDb:Account", + "value": "[reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosAccountName'))).documentEndpoint]" + }, + { + "name": "CosmosDb:Key", + "value": "[listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosAccountName')), '2021-04-15').primaryMasterKey]" + }, + { + "name": "CosmosDb:DatabaseName", + "value": "Tasks" + }, + { + "name": "CosmosDb:ContainerName", + "value": "Items" + } + ] + } + }, + "dependsOn": [ + "Microsoft.DocumentDB/databaseAccounts/[toLower(parameters('applicationName'))]", + "Microsoft.Web/serverfarms/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Web/sites/sourcecontrols", + "apiVersion": "2020-06-01", + "name": "[format('{0}/web', variables('websiteName'))]", + "properties": { + "repoUrl": "https://github.com/Azure-Samples/cosmos-dotnet-core-todo-app.git", + "branch": "main", + "isManualIntegration": true + }, + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT131 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT131 new file mode 100644 index 0000000..1c22309 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT131 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/client-nodes-resources.json" + ], + "timestamp": 1642962887489, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/client-nodes-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT131", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT131", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "Reference to the VNET Subnet to deploy the nodes in to" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Size of the Elasticsearch master nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "Elasticsearch deployment platform settings" + } + }, + "vmCount": { + "type": "int", + "metadata": { + "description": "Number of instances to create" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "Namespace for resources created by this template" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "storageSettings": { + "type": "object", + "value": "[parameters('storageSettings')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "vmSize": { + "type": "string", + "value": "[parameters('vmSize')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + }, + "vmCount": { + "type": "int", + "value": "[parameters('vmCount')]" + }, + "lbBackendPools": { + "type": "object", + "value": "[parameters('lbBackendPools')]" + }, + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1310 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1310 new file mode 100644 index 0000000..88a7fe5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1310 @@ -0,0 +1,266 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962906644, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1310", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.web/sites/functions", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1310", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "8243481558500064980" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which the Azure Functions resources should be deployed." + } + }, + "appName": { + "type": "string", + "defaultValue": "[format('fn-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Functions application to create. This must be globally unique." + } + }, + "functionRuntime": { + "type": "string", + "defaultValue": "dotnet", + "metadata": { + "description": "The runtime to deploy onto the Azure Functions application." + } + }, + "functionPlanSkuName": { + "type": "string", + "defaultValue": "Y1", + "metadata": { + "description": "The name of the SKU to use when creating the Azure Functions plan. Common SKUs include Y1 (consumption) and EP1, EP2, and EP3 (premium)." + } + } + }, + "functions": [], + "variables": { + "appServicePlanName": "FunctionPlan", + "appInsightsName": "AppInsights", + "storageAccountName": "[format('fnstor{0}', uniqueString(resourceGroup().id, parameters('appName')))]", + "functionPlanKind": "[if(equals(parameters('functionPlanSkuName'), 'Y1'), 'functionapp', 'elastic')]", + "functionName": "MyHttpTriggeredFunction", + "contributorRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "managedIdentityName": "EventGridFunctionEnabler", + "deploymentScriptName": "GetFunctionAppEventGridKey" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[format('fnstor{0}', uniqueString(resourceGroup().id, parameters('appName')))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "file": { + "keyType": "Account", + "enabled": true + }, + "blob": { + "keyType": "Account", + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "AppInsights", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web", + "publicNetworkAccessForIngestion": "Enabled", + "publicNetworkAccessForQuery": "Enabled" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "FunctionPlan", + "location": "[resourceGroup().location]", + "kind": "[if(equals(parameters('functionPlanSkuName'), 'Y1'), 'functionapp', 'elastic')]", + "sku": { + "name": "Y1" + }, + "properties": {} + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[format('fn-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/FunctionPlan", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightsName'))).InstrumentationKey]" + }, + { + "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", + "value": "[format('InstrumentationKey={0}', reference(resourceId('Microsoft.Insights/components', variables('appInsightsName'))).InstrumentationKey)]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "dotnet" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "AzureWebJobsDisableHomepage", + "value": "true" + } + ] + }, + "httpsOnly": true + }, + "dependsOn": [ + "Microsoft.Insights/components/AppInsights", + "Microsoft.Web/serverfarms/FunctionPlan", + "Microsoft.Storage/storageAccounts/[format('fnstor{0}', uniqueString(resourceGroup().id, parameters('appName')))]" + ] + }, + { + "type": "Microsoft.Web/sites/functions", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('appName'), variables('functionName'))]", + "properties": { + "config": { + "disabled": false, + "bindings": [ + { + "name": "eventGridEvent", + "type": "eventGridTrigger", + "direction": "in" + } + ] + }, + "files": { + "run.csx": " #r \"Microsoft.Azure.EventGrid\"\n using Microsoft.Azure.EventGrid.Models;\n using Microsoft.Extensions.Logging;\n\n public static void Run(EventGridEvent eventGridEvent, ILogger log)\n {\n log.LogInformation(eventGridEvent.Data.ToString());\n }\n " + } + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('fn-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "EventGridFunctionEnabler", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Web/sites/{0}', parameters('appName'))]", + "name": "[guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('contributorRoleDefinitionId'))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('fn-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.ManagedIdentity/userAssignedIdentities/EventGridFunctionEnabler" + ] + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "GetFunctionAppEventGridKey", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))]": {} + } + }, + "properties": { + "azPowerShellVersion": "5.4", + "scriptContent": " param([string] $FunctionHostResourceId)\n\n $ErrorActionPreference = 'Stop'\n\n # Try to get the key. If this fails, retry up to 5 times.\n $loopAttempts = 0\n while ($loopAttempts -lt 5)\n {\n $listKeysOutput = Invoke-AzResourceAction -ResourceId $FunctionHostResourceId -Action listKeys -ApiVersion 2020-06-01 -Force\n $eventGridKey = $listKeysOutput.systemKeys.eventgrid_extension\n if ($null -ne $eventGridKey)\n {\n break\n }\n\n $loopAttempts += 1\n Write-Output 'Event Grid key is not included in response. Sleeping for 5 seconds.'\n Start-Sleep -Seconds 5\n }\n\n if ($null -eq $eventGridKey)\n {\n Write-Error 'Event Grid key could not be obtained.'\n return 1\n }\n\n # Propagate to the deployment script output.\n $DeploymentScriptOutputs = @{}\n $DeploymentScriptOutputs['eventGridExtensionSystemKey'] = $eventGridKey\n ", + "cleanupPreference": "OnSuccess", + "retentionInterval": "PT4H", + "arguments": "[format('-FunctionHostResourceId {0}/host/default', resourceId('Microsoft.Web/sites', parameters('appName')))]" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('fn-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.ManagedIdentity/userAssignedIdentities/EventGridFunctionEnabler", + "[extensionResourceId(resourceId('Microsoft.Web/sites', parameters('appName')), 'Microsoft.Authorization/roleAssignments', guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('contributorRoleDefinitionId')))]" + ] + } + ], + "outputs": { + "functionUrl": { + "type": "string", + "value": "[format('https://{0}/runtime/webhooks/EventGrid?functionName={1}&code={2}', reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName, variables('functionName'), reference(resourceId('Microsoft.Resources/deploymentScripts', variables('deploymentScriptName'))).outputs.eventGridExtensionSystemKey)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1311 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1311 new file mode 100644 index 0000000..bb719c8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1311 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid/azuredeploy.parameters.json" + ], + "timestamp": 1642962906672, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1311", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventgrid/eventsubscriptions", + "microsoft.eventgrid/topics" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1311", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventGridTopicName": { + "type": "string", + "defaultValue": "[format('topic-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Event Grid custom topic." + } + }, + "eventGridSubscriptionName": { + "type": "string", + "defaultValue": "[format('sub-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Event Grid custom topic's subscription." + } + }, + "eventGridSubscriptionUrl": { + "type": "string", + "metadata": { + "description": "The webhook URL to send the subscription events to. This URL must be valid and must be prepared to accept the Event Grid webhook URL challenge request." + }, + "value": "GET-PREREQ-functionUrl" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the Event Grid resources should be deployed." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.EventGrid/topics", + "apiVersion": "2020-06-01", + "name": "[format('topic-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.EventGrid/eventSubscriptions", + "apiVersion": "2020-06-01", + "scope": "[format('Microsoft.EventGrid/topics/{0}', parameters('eventGridTopicName'))]", + "name": "[format('sub-{0}', uniqueString(resourceGroup().id))]", + "properties": { + "destination": { + "endpointType": "WebHook", + "properties": { + "endpointUrl": "GET-PREREQ-functionUrl" + } + } + }, + "dependsOn": [ + "Microsoft.EventGrid/topics/[format('topic-{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.1.62928", + "templateHash": "11275484167198272818" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1312 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1312 new file mode 100644 index 0000000..5b982a5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1312 @@ -0,0 +1,173 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-cloudevents/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-cloudevents/azuredeploy.parameters.json" + ], + "timestamp": 1642962906697, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-cloudevents/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-cloudevents/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1312", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventgrid/eventsubscriptions", + "microsoft.eventgrid/topics", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1312", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The region where resources are deployed" + }, + "defaultValue": "[resourceGroup().location]" + }, + "logicAppName": { + "type": "string", + "metadata": { + "description": "Name of Logic App" + }, + "defaultValue": "[concat('logicapp-', uniqueString(resourceGroup().id))]", + "value": "GEN-UNIQUE" + }, + "eventGridTopicName": { + "type": "string", + "metadata": { + "description": "Name of Event Grid Topic" + }, + "defaultValue": "[concat('eventgridtopic-', uniqueString(resourceGroup().id))]", + "value": "GEN-UNIQUE" + }, + "eventGridSubscriptionName": { + "type": "string", + "metadata": { + "description": "Name of Event Grid Subscription" + }, + "defaultValue": "[concat('eventgridsubscription-', uniqueString(resourceGroup().id))]", + "value": "GEN-UNIQUE" + } + }, + "variables": { + "logicApp": { + "name": "GEN-UNIQUE", + "resourceId": "Microsoft.Logic/workflows/GEN-UNIQUE", + "location": "[resourceGroup().location]", + "triggerId": "Microsoft.Logic/workflows/triggers/GEN-UNIQUE/manual" + }, + "eventGridTopic": { + "name": "GEN-UNIQUE", + "resourceId": "Microsoft.EventGrid/topics/GEN-UNIQUE", + "location": "[resourceGroup().location]" + }, + "eventGridSubscription": { + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]" + }, + "tags": { + "projectUrl": "https://github.com/Azure/azure-quickstart-templates", + "repositoryUrl": "https://github.com/Azure/azure-quickstart-templates", + "license": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/LICENSE" + } + }, + "resources": [ + { + "comments": "### RESOURCE - LOGIC APP - EVENT HANDLER ###", + "apiVersion": "2019-05-01", + "type": "Microsoft.Logic/workflows", + "name": "(logicApp).name", + "location": "(logicApp).location", + "tags": { + "projectUrl": "https://github.com/Azure/azure-quickstart-templates", + "repositoryUrl": "https://github.com/Azure/azure-quickstart-templates", + "license": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/LICENSE" + }, + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "triggers": { + "manual": { + "type": "Request", + "kind": "Http", + "inputs": { + "method": "POST" + } + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + }, + { + "comments": "### RESOURCE - CUSTOM EVENT GRID TOPIC ###", + "apiVersion": "2020-06-01", + "type": "Microsoft.EventGrid/topics", + "name": "(eventGridTopic).name", + "location": "(eventGridTopic).location", + "tags": { + "projectUrl": "https://github.com/Azure/azure-quickstart-templates", + "repositoryUrl": "https://github.com/Azure/azure-quickstart-templates", + "license": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/LICENSE" + }, + "properties": { + "inputSchema": "CloudEventV01Schema" + } + }, + { + "comments": "### RESOURCE - EVENT GRID SUBSCRIPTION ###", + "scope": "[format('Microsoft.EventGrid/topics/{0}', variables('eventGridTopic').name)]", + "type": "Microsoft.EventGrid/eventSubscriptions", + "apiVersion": "2019-06-01", + "name": "(eventGridSubscription).name", + "location": "(eventGridSubscription).location", + "tags": { + "projectUrl": "https://github.com/Azure/azure-quickstart-templates", + "repositoryUrl": "https://github.com/Azure/azure-quickstart-templates", + "license": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/LICENSE" + }, + "dependsOn": [ + "(logicApp).name", + "(eventGridTopic).name" + ], + "properties": { + "eventDeliverySchema": "CloudEventV01Schema", + "destination": { + "endpointType": "Webhook", + "properties": { + "endpointUrl": "[listCallbackUrl(variables('logicApp').triggerId, '2019-05-01').value]" + } + }, + "filter": { + "isSubjectCaseSensitive": false + } + } + } + ], + "outputs": { + "eventGridTopicEndpointUrl": { + "type": "string", + "value": "[reference(variables('eventGridTopic').name).endpoint]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1313 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1313 new file mode 100644 index 0000000..b4df65d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1313 @@ -0,0 +1,137 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-event-hubs-handler/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-event-hubs-handler/azuredeploy.parameters.json" + ], + "timestamp": 1642962906710, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-event-hubs-handler/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-event-hubs-handler/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1313", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventgrid/eventsubscriptions", + "microsoft.eventgrid/topics", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1313", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "topicName": { + "type": "string", + "defaultValue": "[concat('topic', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Event Grid custom topic." + }, + "value": "GEN-UNIQUE" + }, + "subscriptionName": { + "type": "string", + "defaultValue": "subSendToEventHubs", + "metadata": { + "description": "The name of the Event Grid custom topic's subscription." + } + }, + "eventHubNamespace": { + "type": "string", + "defaultValue": "[concat('namespace', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Event Hubs namespace." + } + }, + "eventHubName": { + "type": "string", + "defaultValue": "eventhub", + "metadata": { + "description": "The name of the event hub." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the Event Grid resources should be deployed." + } + } + }, + "resources": [ + { + "type": "Microsoft.EventGrid/topics", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.EventHub/namespaces", + "apiVersion": "2018-01-01-preview", + "name": "[concat('namespace', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "isAutoInflateEnabled": true, + "maximumThroughputUnits": 7 + }, + "resources": [ + { + "type": "EventHubs", + "apiVersion": "2017-04-01", + "name": "eventhub", + "dependsOn": [ + "Microsoft.EventHub/namespaces/[concat('namespace', uniqueString(resourceGroup().id))]" + ], + "properties": { + "messageRetentionInDays": 1, + "partitionCount": 2 + } + } + ] + }, + { + "scope": "[format('Microsoft.EventGrid/topics/{0}', parameters('topicName'))]", + "type": "Microsoft.EventGrid/eventSubscriptions", + "apiVersion": "2020-06-01", + "name": "subSendToEventHubs", + "dependsOn": [ + "Microsoft.EventGrid/topics/GEN-UNIQUE", + "Microsoft.EventHub/namespaces/eventHubs/[concat('namespace', uniqueString(resourceGroup().id))]/eventhub" + ], + "properties": { + "destination": { + "endpointType": "EventHub", + "properties": { + "resourceId": "Microsoft.EventHub/namespaces/eventhubs/[concat('namespace', uniqueString(resourceGroup().id))]/eventhub" + } + }, + "filter": { + "isSubjectCaseSensitive": false + } + } + } + ], + "outputs": { + "endpoint": { + "type": "string", + "value": "[reference(parameters('topicName')).endpoint]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1314 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1314 new file mode 100644 index 0000000..b078fb8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1314 @@ -0,0 +1,139 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962906726, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1314", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1314", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "The name of the web app that you wish to create." + }, + "value": "GEN-UNIQUE" + }, + "hostingPlanName": { + "type": "string", + "defaultValue": "viewerHost", + "metadata": { + "description": "The name of the App Service plan to use for hosting the web app." + } + }, + "sku": { + "type": "string", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1" + ], + "defaultValue": "F1", + "metadata": { + "description": "The pricing tier for the hosting plan." + } + }, + "repoURL": { + "type": "string", + "defaultValue": "https://github.com/Azure-Samples/azure-event-grid-viewer.git", + "metadata": { + "description": "The URL for the GitHub repository that contains the project to deploy." + } + }, + "branch": { + "type": "string", + "defaultValue": "master", + "metadata": { + "description": "The branch of the GitHub repository to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "viewerHost", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1", + "capacity": 0 + }, + "properties": { + "name": "viewerHost" + } + }, + { + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/viewerHost" + ], + "properties": { + "serverFarmId": "viewerHost", + "siteConfig": { + "webSocketsEnabled": true + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE" + ], + "properties": { + "RepoUrl": "https://github.com/Azure-Samples/azure-event-grid-viewer.git", + "branch": "master", + "IsManualIntegration": true + } + } + ] + } + ], + "outputs": { + "siteEventUri": { + "type": "string", + "value": "[concat('https://', reference(parameters('siteName')).defaultHostName, '/api/updates')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1315 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1315 new file mode 100644 index 0000000..cbec773 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1315 @@ -0,0 +1,69 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/azuredeploy.parameters.json" + ], + "timestamp": 1642962906741, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-resource-events-to-webhook/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1315", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventgrid/eventsubscriptions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1315", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventSubName": { + "type": "string", + "defaultValue": "subToResources", + "metadata": { + "description": "The name of the event subscription to create." + } + }, + "endpoint": { + "type": "string", + "metadata": { + "description": "The URL for the WebHook to receive events. Create your own endpoint for events." + }, + "value": "GET-PREREQ-siteEventUri" + } + }, + "resources": [ + { + "type": "Microsoft.EventGrid/eventSubscriptions", + "name": "subToResources", + "apiVersion": "2020-06-01", + "properties": { + "destination": { + "endpointType": "WebHook", + "properties": { + "endpointUrl": "GET-PREREQ-siteEventUri" + } + }, + "filter": { + "isSubjectCaseSensitive": false + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1316 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1316 new file mode 100644 index 0000000..5c8fad5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1316 @@ -0,0 +1,143 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-queue/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-queue/azuredeploy.parameters.json" + ], + "timestamp": 1642962906757, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-queue/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-queue/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1316", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.eventgrid/eventsubscriptions", + "microsoft.eventgrid/topics", + "microsoft.servicebus/namespaces/queues" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1316", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "14074812327707690395" + } + }, + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusQueueName": { + "type": "string", + "metadata": { + "description": "Name of the Queue" + }, + "value": "GEN-UNIQUE" + }, + "eventGridTopicName": { + "type": "string", + "metadata": { + "description": "The name of the Event Grid custom topic." + }, + "value": "GEN-UNIQUE" + }, + "eventGridSubscriptionName": { + "type": "string", + "metadata": { + "description": "The name of the Event Grid custom topic's subscription." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the Event Grid resources should be deployed." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ServiceBus/namespaces", + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/queues", + "apiVersion": "2017-04-01", + "name": "[format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName'))]", + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "deadLetteringOnMessageExpiration": false, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", + "enablePartitioning": false, + "enableExpress": false + }, + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.EventGrid/topics", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.EventGrid/eventSubscriptions", + "apiVersion": "2020-06-01", + "scope": "[format('Microsoft.EventGrid/topics/{0}', parameters('eventGridTopicName'))]", + "name": "GEN-UNIQUE", + "properties": { + "destination": { + "endpointType": "ServiceBusQueue", + "properties": { + "resourceId": "[resourceId('Microsoft.ServiceBus/namespaces/queues', split(format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName')), '/')[0], split(format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName')), '/')[1])]" + } + }, + "eventDeliverySchema": "EventGridSchema", + "filter": { + "isSubjectCaseSensitive": false + } + }, + "dependsOn": [ + "Microsoft.EventGrid/topics/GEN-UNIQUE", + "[resourceId('Microsoft.ServiceBus/namespaces/queues', split(format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName')), '/')[0], split(format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName')), '/')[1])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1317 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1317 new file mode 100644 index 0000000..5465c73 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1317 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-topic/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-topic/azuredeploy.parameters.json" + ], + "timestamp": 1642962906770, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-topic/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-servicebus-topic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1317", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.eventgrid/topics", + "microsoft.eventgrid/eventsubscriptions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1317", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "defaultValue": "[concat('sb-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusTopicName": { + "type": "string", + "defaultValue": "sbt-topic", + "metadata": { + "description": "Name of the Topic" + } + }, + "eventGridTopicName": { + "type": "string", + "defaultValue": "[concat('egt-', uniqueString(resourceGroup().id, parameters('serviceBusNamespaceName')))]", + "metadata": { + "description": "Unique name of the Event Grid custom topic." + }, + "value": "GEN-UNIQUE" + }, + "eventGridSubscriptionName": { + "type": "string", + "defaultValue": "evg-subscription", + "metadata": { + "description": "The name of the Event Grid custom topic's subscription." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the Event Grid resources should be deployed." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "sbt-topic", + "type": "topics", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE" + ], + "properties": { + "path": "sbt-topic" + } + } + ] + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.EventGrid/topics", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE" + ] + }, + { + "scope": "Microsoft.EventGrid/topics/GEN-UNIQUE", + "type": "Microsoft.EventGrid/eventSubscriptions", + "name": "evg-subscription", + "apiVersion": "2020-01-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.EventGrid/topics/GEN-UNIQUE" + ], + "properties": { + "destination": { + "endpointType": "ServiceBusTopic", + "properties": { + "resourceId": "Microsoft.ServiceBus/namespaces/topics/GEN-UNIQUE/sbt-topic" + } + }, + "eventDeliverySchema": "EventGridSchema", + "filter": { + "isSubjectCaseSensitive": false + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1318 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1318 new file mode 100644 index 0000000..e7ed148 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1318 @@ -0,0 +1,139 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962906781, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1318", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1318", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "The name of the web app that you wish to create." + }, + "value": "GEN-UNIQUE" + }, + "hostingPlanName": { + "type": "string", + "defaultValue": "viewerHost", + "metadata": { + "description": "The name of the App Service plan to use for hosting the web app." + } + }, + "sku": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1" + ], + "metadata": { + "description": "The pricing tier for the hosting plan." + } + }, + "repoURL": { + "type": "string", + "defaultValue": "https://github.com/Azure-Samples/azure-event-grid-viewer.git", + "metadata": { + "description": "The URL for the GitHub repository that contains the project to deploy." + } + }, + "branch": { + "type": "string", + "defaultValue": "master", + "metadata": { + "description": "The branch of the GitHub repository to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "viewerHost", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1", + "capacity": 0 + }, + "properties": { + "name": "viewerHost" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/viewerHost" + ], + "properties": { + "serverFarmId": "viewerHost", + "siteConfig": { + "webSocketsEnabled": true + } + }, + "resources": [ + { + "type": "sourcecontrols", + "apiVersion": "2020-06-01", + "name": "web", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE" + ], + "properties": { + "RepoUrl": "https://github.com/Azure-Samples/azure-event-grid-viewer.git", + "branch": "master", + "IsManualIntegration": true + } + } + ] + } + ], + "outputs": { + "siteEventUri": { + "type": "string", + "value": "[concat('https://', reference(parameters('siteName')).defaultHostName, '/api/updates')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1319 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1319 new file mode 100644 index 0000000..4e3dbe9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1319 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962906791, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/azuredeploy.json", + "/quickstarts/microsoft.eventgrid/event-grid-subscription-and-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1319", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.eventgrid/systemtopics", + "microsoft.eventgrid/systemtopics/eventsubscriptions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1319", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Provide a unique name for the Blob Storage account." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Provide a location for the Blob Storage account that supports Event Grid." + } + }, + "eventSubName": { + "type": "string", + "defaultValue": "subToStorage", + "metadata": { + "description": "Provide a name for the Event Grid subscription." + } + }, + "endpoint": { + "type": "string", + "metadata": { + "description": "Provide the URL for the WebHook to receive events. Create your own endpoint for events." + }, + "value": "GET-PREREQ-siteEventUri" + }, + "systemTopicName": { + "type": "String", + "defaultValue": "mystoragesystemtopic", + "metadata": { + "description": "Provide a name for the system topic." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('storage', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.EventGrid/systemTopics", + "apiVersion": "2020-04-01-preview", + "name": "mystoragesystemtopic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('storage', uniqueString(resourceGroup().id))]" + ], + "properties": { + "source": "Microsoft.Storage/storageAccounts/[concat('storage', uniqueString(resourceGroup().id))]", + "topicType": "Microsoft.Storage.StorageAccounts" + } + }, + { + "type": "Microsoft.EventGrid/systemTopics/eventSubscriptions", + "apiVersion": "2020-04-01-preview", + "name": "mystoragesystemtopic/subToStorage", + "dependsOn": [ + "Microsoft.EventGrid/systemTopics/mystoragesystemtopic" + ], + "properties": { + "destination": { + "properties": { + "endpointUrl": "GET-PREREQ-siteEventUri" + }, + "endpointType": "WebHook" + }, + "filter": { + "includedEventTypes": [ + "Microsoft.Storage.BlobCreated", + "Microsoft.Storage.BlobDeleted" + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT132 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT132 new file mode 100644 index 0000000..ddc3706 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT132 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-0disk-resources.json" + ], + "timestamp": 1642962887509, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-0disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT132", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT132", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "storageSettings": { + "type": "object", + "value": "[parameters('storageSettings')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "vmSize": { + "type": "string", + "value": "[parameters('vmSize')]" + }, + "vmCount": { + "type": "int", + "value": "[parameters('vmCount')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + }, + "dataDiskSize": { + "type": "int", + "value": "[parameters('dataDiskSize')]" + }, + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + }, + "lbBackendPools": { + "type": "object", + "value": "[parameters('lbBackendPools')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1320 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1320 new file mode 100644 index 0000000..226a54a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1320 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group/azuredeploy.json", + "/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group/azuredeploy.parameters.json" + ], + "timestamp": 1642962906802, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group/azuredeploy.json", + "/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1320", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1320", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name of EventHub namespace" + }, + "value": "GEN-UNIQUE" + }, + "eventhubSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The messaging tier for service Bus namespace" + }, + "value": "Standard" + }, + "skuCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 4 + ], + "defaultValue": 1, + "metadata": { + "description": "MessagingUnits for premium namespace" + } + }, + "eventHubName": { + "type": "string", + "metadata": { + "description": "Name of Event Hub" + }, + "value": "GEN-UNIQUE-15" + }, + "consumerGroupName": { + "type": "string", + "metadata": { + "description": "Name of Consumer Group" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-15", + "type": "eventhubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE" + ], + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "consumergroups", + "dependsOn": [ + "GEN-UNIQUE-15" + ], + "properties": { + "userMetadata": "User Metadata goes here" + } + } + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1321 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1321 new file mode 100644 index 0000000..831f4ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1321 @@ -0,0 +1,173 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-authrule-namespace-and-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-authrule-namespace-and-eventhub/azuredeploy.parameters.json" + ], + "timestamp": 1642962906811, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-authrule-namespace-and-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-authrule-namespace-and-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1321", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/authorizationrules", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1321", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name of EventHub namespace" + }, + "value": "GEN-UNIQUE" + }, + "namespaceAuthorizationRuleName": { + "type": "string", + "metadata": { + "description": "Name of Namespace Authorization Rule" + }, + "value": "GEN-UNIQUE-14" + }, + "eventHubName": { + "type": "string", + "metadata": { + "description": "Name of Event Hub" + }, + "value": "GEN-UNIQUE" + }, + "eventhubAuthorizationRuleName": { + "type": "string", + "metadata": { + "description": "Name of Eventhub Authorization Rule" + }, + "value": "GEN-UNIQUE-16" + }, + "eventhubAuthorizationRuleName1": { + "type": "string", + "metadata": { + "description": "Name of Eventhub Authorization Rule" + }, + "value": "GEN-UNIQUE-20" + }, + "consumerGroupName": { + "type": "string", + "metadata": { + "description": "Name of Consumer Group" + }, + "value": "GEN-UNIQUE-15" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "isAutoInflateEnabled": true, + "maximumThroughputUnits": 7 + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "eventhubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE" + ], + "properties": { + "messageRetentionInDays": 4, + "partitionCount": 4 + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-15", + "type": "consumergroups", + "dependsOn": [ + "Microsoft.EventHub/namespaces/eventhubs//GEN-UNIQUE/GEN-UNIQUE" + ], + "properties": { + "userMetadata": "User Metadata" + } + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-16", + "type": "authorizationRules", + "dependsOn": [ + "Microsoft.EventHub/namespaces/eventhubs//GEN-UNIQUE/GEN-UNIQUE" + ], + "properties": { + "rights": [ + "Send", + "Listen", + "Manage" + ] + } + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-20", + "type": "authorizationRules", + "dependsOn": [ + "Microsoft.EventHub/namespaces/eventhubs//GEN-UNIQUE/GEN-UNIQUE" + ], + "properties": { + "rights": [ + "Send" + ] + } + } + ] + } + ] + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE/GEN-UNIQUE-14", + "type": "Microsoft.EventHub/namespaces/AuthorizationRules", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE" + ], + "properties": { + "rights": [ + "Send", + "Listen", + "Manage" + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1322 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1322 new file mode 100644 index 0000000..2368b9c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1322 @@ -0,0 +1,146 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.json" + ], + "timestamp": 1642962906820, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1322", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1322", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventHubNamespaceNamePrimary": { + "type": "string", + "metadata": { + "description": "Name of Event Hub namespace" + }, + "value": "GEN-UNIQUE-10" + }, + "eventHubNamespaceNameSecondary": { + "type": "string", + "metadata": { + "description": "Name of Event Hub namespace" + }, + "value": "GEN-UNIQUE-11" + }, + "aliasName": { + "type": "string", + "metadata": { + "description": "Name of Geo-Recovery Configuration Alias" + }, + "value": "GEN-UNIQUE" + }, + "eventhubSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The messaging tier for Event Hub namespace" + }, + "value": "Standard" + }, + "skuCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 4 + ], + "defaultValue": 1, + "metadata": { + "description": "MessagingUnits for namespace" + }, + "value": 1 + }, + "locationPrimaryNamepsace": { + "type": "string", + "metadata": { + "description": "Location of Primary namespace" + }, + "value": "northcentralus" + }, + "locationSecondaryNamepsace": { + "type": "string", + "metadata": { + "description": "Location of Secondary namespace" + }, + "value": "southcentralus" + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-11", + "type": "Microsoft.EventHub/namespaces", + "location": "southcentralus", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + }, + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.EventHub/namespaces", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE-11" + ], + "location": "northcentralus", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "disasterRecoveryConfigs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE-10" + ], + "properties": { + "partnerNamespace": "Microsoft.EventHub/namespaces/GEN-UNIQUE-11" + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1323 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1323 new file mode 100644 index 0000000..9da2e91 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1323 @@ -0,0 +1,146 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962906829, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1323", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1323", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventHubNamespaceNamePrimary": { + "type": "string", + "metadata": { + "description": "Name of Event Hub namespace" + }, + "value": "GEN-UNIQUE-10" + }, + "eventHubNamespaceNameSecondary": { + "type": "string", + "metadata": { + "description": "Name of Event Hub namespace" + }, + "value": "GEN-UNIQUE-11" + }, + "aliasName": { + "type": "string", + "metadata": { + "description": "Name of Geo-Recovery Configuration Alias" + }, + "value": "GEN-UNIQUE" + }, + "eventhubSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The messaging tier for Event Hub namespace" + }, + "value": "Standard" + }, + "skuCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 4 + ], + "defaultValue": 1, + "metadata": { + "description": "MessagingUnits for namespace" + }, + "value": 1 + }, + "locationPrimaryNamepsace": { + "type": "string", + "metadata": { + "description": "Location of Primary namespace" + }, + "value": "usgoviowa" + }, + "locationSecondaryNamepsace": { + "type": "string", + "metadata": { + "description": "Location of Secondary namespace" + }, + "value": "usgovvirginia" + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-11", + "type": "Microsoft.EventHub/namespaces", + "location": "usgovvirginia", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + }, + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.EventHub/namespaces", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE-11" + ], + "location": "usgoviowa", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "disasterRecoveryConfigs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE-10" + ], + "properties": { + "partnerNamespace": "Microsoft.EventHub/namespaces/GEN-UNIQUE-11" + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1324 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1324 new file mode 100644 index 0000000..18201eb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1324 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-namespace-ipfilter/azuredeploy.parameters.json" + ], + "timestamp": 1642962906836, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-namespace-ipfilter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1324", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/ipfilterrules", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1324", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventhubNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Event Hubs namespace" + }, + "value": "GEN-UNIQUE" + }, + "ipFilterRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Authorization rule" + }, + "value": "GEN-UNIQUE" + }, + "ipFilterAction": { + "type": "string", + "allowedValues": [ + "Reject", + "Accept" + ], + "defaultValue": "Accept", + "metadata": { + "description": "IP Filter Action" + } + }, + "IpMask": { + "type": "string", + "defaultValue": "10.0.1.0/32", + "metadata": { + "description": "IP Mask" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for Namespace" + } + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "properties": {} + }, + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "type": "Microsoft.EventHub/namespaces/IPFilterRules", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE" + ], + "properties": { + "FilterName": "GEN-UNIQUE", + "Action": "Accept", + "IpMask": "10.0.1.0/32" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1325 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1325 new file mode 100644 index 0000000..cd6f513 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1325 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-namespace-vnet/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-namespace-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962906844, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhub-namespace-vnet/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhub-namespace-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1325", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.eventhub/namespaces/virtualnetworkrules", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1325", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventhubNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Event Hubs namespace" + }, + "value": "GEN-UNIQUE-22" + }, + "vnetRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Rule" + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Sub Net" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for Namespace" + } + } + }, + "variables": { + "namespaceVirtualNetworkRuleName": "GEN-UNIQUE-22/GEN-VNET-NAME", + "subNetId": "Microsoft.Network/virtualNetworks/subnets//GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-22", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "properties": {} + }, + { + "apiVersion": "2017-09-01", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "type": "Microsoft.Network/virtualNetworks", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/23" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/23", + "serviceEndpoints": [ + { + "service": "Microsoft.EventHub" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-22/GEN-VNET-NAME", + "type": "Microsoft.EventHub/namespaces/VirtualNetworkRules", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE-22" + ], + "properties": { + "virtualNetworkSubnetId": "Microsoft.Network/virtualNetworks/subnets//GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1326 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1326 new file mode 100644 index 0000000..0af047c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1326 @@ -0,0 +1,90 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace/azuredeploy.parameters.json" + ], + "timestamp": 1642962906850, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1326", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/clusters", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1326", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "Name for the Event Hub cluster." + }, + "value": "GEN-UNIQUE-12" + }, + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name for the Namespace to be created in cluster." + }, + "value": "GEN-UNIQUE-12" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.EventHub/clusters", + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "sku": { + "name": "Dedicated", + "capacity": 1 + } + }, + { + "type": "Microsoft.EventHub/namespaces", + "apiVersion": "2021-01-01-preview", + "name": "GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.EventHub/clusters/GEN-UNIQUE-12" + ], + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "properties": { + "isAutoInflateEnabled": false, + "maximumThroughputUnits": 0, + "clusterArmId": "Microsoft.EventHub/clusters/GEN-UNIQUE-12" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1327 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1327 new file mode 100644 index 0000000..f8603da --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1327 @@ -0,0 +1,111 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace-eventhub/azuredeploy.parameters.json" + ], + "timestamp": 1642962906856, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-cluster-namespace-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1327", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/eventhubs", + "microsoft.eventhub/clusters", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1327", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "Name for the Event Hub cluster." + }, + "value": "GEN-UNIQUE-12" + }, + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name for the Event Hub cluster." + }, + "value": "GEN-UNIQUE-12" + }, + "eventHubName": { + "type": "string", + "metadata": { + "description": "Name for the Event Hub to be created in the Event Hub namespace within the Event Hub cluster." + }, + "value": "GEN-UNIQUE-12" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.EventHub/clusters", + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "sku": { + "name": "Dedicated", + "capacity": 1 + } + }, + { + "type": "Microsoft.EventHub/namespaces", + "apiVersion": "2021-01-01-preview", + "name": "GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "dependsOn": [ + "Microsoft.EventHub/clusters/GEN-UNIQUE-12" + ], + "properties": { + "isAutoInflateEnabled": false, + "maximumThroughputUnits": 0, + "clusterArmId": "Microsoft.EventHub/clusters/GEN-UNIQUE-12" + } + }, + { + "apiVersion": "2021-01-01-preview", + "type": "Microsoft.EventHub/namespaces/eventhubs", + "name": "GEN-UNIQUE-12/GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.EventHub/namespaces/GEN-UNIQUE-12" + ], + "properties": { + "messageRetentionInDays": 7, + "partitionCount": 1 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1328 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1328 new file mode 100644 index 0000000..d9b400e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1328 @@ -0,0 +1,73 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962906862, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1328", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1328", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat('store', uniquestring(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + } + ], + "outputs": { + "storageAcctResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1329 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1329 new file mode 100644 index 0000000..d42fc75 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1329 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.parameters.json" + ], + "timestamp": 1642962906869, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1329", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1329", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingStorageAcctResourceId": { + "type": "string", + "metadata": { + "description": "Name of the exiting Storage Account to archieve captures" + }, + "value": "GET-PREREQ-storageAcctResourceId" + }, + "eventHubNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the EventHub namespace" + }, + "value": "GEN-UNIQUE-12" + }, + "eventhubSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The messaging tier for service Bus namespace" + }, + "value": "Standard" + }, + "skuCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 4 + ], + "defaultValue": 1, + "metadata": { + "description": "MessagingUnits for premium namespace" + } + }, + "isAutoInflateEnabled": { + "type": "string", + "defaultValue": "True", + "allowedValues": [ + "True", + "False" + ], + "metadata": { + "description": "Enable or disable AutoInflate" + }, + "value": "True" + }, + "maximumThroughputUnits": { + "type": "int", + "defaultValue": 10, + "minValue": 0, + "maxValue": 20, + "metadata": { + "description": "Upper limit of throughput units when AutoInflate is enabled, vaule should be within 0 to 20 throughput units." + }, + "value": 10 + }, + "eventHubName": { + "type": "string", + "metadata": { + "description": "Name of the Event Hub" + }, + "value": "GEN-UNIQUE" + }, + "messageRetentionInDays": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 7, + "metadata": { + "description": "How long to retain the data in Event Hub" + }, + "value": 1 + }, + "partitionCount": { + "type": "int", + "defaultValue": 4, + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of partitions chosen" + }, + "value": 2 + }, + "captureEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable or disable the Capture feature for your Event Hub" + } + }, + "captureEncodingFormat": { + "type": "string", + "defaultValue": "Avro", + "allowedValues": [ + "Avro" + ], + "metadata": { + "description": "The encoding format Eventhub capture serializes the EventData when archiving to your storage" + }, + "value": "Avro" + }, + "captureTime": { + "type": "int", + "defaultValue": 300, + "minValue": 60, + "maxValue": 900, + "metadata": { + "description": "the time window in seconds for the archival" + }, + "value": 300 + }, + "captureSize": { + "type": "int", + "defaultValue": 314572800, + "minValue": 10485760, + "maxValue": 524288000, + "metadata": { + "description": "the size window in bytes for evetn hub capture" + }, + "value": 314572800 + }, + "blobContainerName": { + "type": "string", + "metadata": { + "description": "Your existing storage container that you want the blobs archived in" + }, + "value": "GEN-UNIQUE" + }, + "captureNameFormat": { + "type": "string", + "defaultValue": "{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}", + "metadata": { + "description": "A Capture Name Format must contain {Namespace}, {EventHub}, {PartitionId}, {Year}, {Month}, {Day}, {Hour}, {Minute} and {Second} fields. These can be arranged in any order with or without delimeters. E.g. Prod_{EventHub}/{Namespace}\\{PartitionId}_{Year}_{Month}/{Day}/{Hour}/{Minute}/{Second}" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "defaultSASKeyName": "RootManageSharedAccessKey", + "authRuleResourceId": "Microsoft.EventHub/namespaces/authorizationRules/GEN-UNIQUE-12/RootManageSharedAccessKey" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-12", + "type": "Microsoft.EventHub/Namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "properties": { + "isAutoInflateEnabled": "True", + "maximumThroughputUnits": 10 + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "eventhubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE-12" + ], + "properties": { + "messageRetentionInDays": 1, + "partitionCount": 2, + "captureDescription": { + "enabled": true, + "skipEmptyArchives": false, + "encoding": "Avro", + "intervalInSeconds": 300, + "sizeLimitInBytes": 314572800, + "destination": { + "name": "EventHubArchive.AzureBlockBlob", + "properties": { + "storageAccountResourceId": "GET-PREREQ-storageAcctResourceId", + "blobContainer": "GEN-UNIQUE", + "archiveNameFormat": "{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}" + } + } + } + } + } + ] + } + ], + "outputs": { + "authRuleResourceId": { + "type": "string", + "value": "[variables('authRuleResourceId')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT133 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT133 new file mode 100644 index 0000000..9e455eb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT133 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-16disk-resources.json" + ], + "timestamp": 1642962887536, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-16disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT133", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT133", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "storageSettings": { + "type": "object", + "value": "[parameters('storageSettings')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "vmSize": { + "type": "string", + "value": "[parameters('vmSize')]" + }, + "vmCount": { + "type": "int", + "value": "[parameters('vmCount')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + }, + "dataDiskSize": { + "type": "int", + "value": "[parameters('dataDiskSize')]" + }, + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + }, + "lbBackendPools": { + "type": "object", + "value": "[parameters('lbBackendPools')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1330 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1330 new file mode 100644 index 0000000..073a7d1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1330 @@ -0,0 +1,198 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.parameters.json" + ], + "timestamp": 1642962906875, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-capture-for-adls/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1330", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1330", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventHubNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the EventHub namespace" + }, + "value": "GEN-UNIQUE-12" + }, + "eventHubName": { + "type": "string", + "metadata": { + "description": "Name of the Event Hub" + }, + "value": "GEN-UNIQUE" + }, + "messageRetentionInDays": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 7, + "metadata": { + "description": "How long to retain the data in Event Hub" + }, + "value": 1 + }, + "partitionCount": { + "type": "int", + "defaultValue": 4, + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of partitions chosen" + }, + "value": 2 + }, + "captureEnabled": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Enable or disable the Capture feature for your Event Hub" + }, + "value": "true" + }, + "captureEncodingFormat": { + "type": "string", + "defaultValue": "Avro", + "allowedValues": [ + "Avro" + ], + "metadata": { + "description": "The encoding format Eventhub capture serializes the EventData when archiving to your storage" + }, + "value": "Avro" + }, + "captureTime": { + "type": "int", + "defaultValue": 300, + "minValue": 60, + "maxValue": 900, + "metadata": { + "description": "the time window in seconds for the archival" + }, + "value": 300 + }, + "captureSize": { + "type": "int", + "defaultValue": 314572800, + "minValue": 10485760, + "maxValue": 524288000, + "metadata": { + "description": "the size window in bytes for evetn hub capture" + }, + "value": 314572800 + }, + "captureNameFormat": { + "type": "string", + "defaultValue": "{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}", + "metadata": { + "description": "A Capture Name Format must contain {Namespace}, {EventHub}, {PartitionId}, {Year}, {Month}, {Day}, {Hour}, {Minute} and {Second} fields. These can be arranged in any order with or without delimeters. E.g. Prod_{EventHub}/{Namespace}\\{PartitionId}_{Year}_{Month}/{Day}/{Hour}/{Minute}/{Second}" + }, + "value": "GEN-UNIQUE" + }, + "subscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of both Data Lake Store and Event Hub namespace" + }, + "value": "GEN-UNIQUE" + }, + "dataLakeAccountName": { + "type": "string", + "metadata": { + "description": "Data Lake Store name" + }, + "value": "GEN-UNIQUE" + }, + "dataLakeFolderPath": { + "type": "string", + "metadata": { + "description": "Destination archive folder path" + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "defaultSASKeyName": "RootManageSharedAccessKey", + "authRuleResourceId": "Microsoft.EventHub/namespaces/authorizationRules/GEN-UNIQUE-12/RootManageSharedAccessKey" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-12", + "type": "Microsoft.EventHub/Namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "eventhubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces/GEN-UNIQUE-12" + ], + "properties": { + "path": "GEN-UNIQUE", + "captureDescription": { + "enabled": true, + "skipEmptyArchives": false, + "encoding": "Avro", + "intervalInSeconds": 300, + "sizeLimitInBytes": 314572800, + "destination": { + "name": "EventHubArchive.AzureDataLake", + "properties": { + "DataLakeSubscriptionId": "GEN-UNIQUE", + "DataLakeAccountName": "GEN-UNIQUE", + "DataLakeFolderPath": "GEN-UNIQUE", + "ArchiveNameFormat": "GEN-UNIQUE" + } + } + } + } + } + ] + } + ], + "outputs": { + "NamespaceConnectionString": { + "type": "string", + "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryConnectionString]" + }, + "SharedAccessPolicyPrimaryKey": { + "type": "string", + "value": "[listkeys(variables('authRuleResourceId'), '2017-04-01').primaryKey]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1331 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1331 new file mode 100644 index 0000000..1fdaf2a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1331 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-inflate/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-inflate/azuredeploy.parameters.json" + ], + "timestamp": 1642962906887, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-inflate/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-enable-inflate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1331", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1331", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name of the EventHub namespace " + }, + "value": "GEN-UNIQUE" + }, + "isAutoInflateEnabled": { + "type": "string", + "defaultValue": "True", + "allowedValues": [ + "True", + "False" + ], + "metadata": { + "description": "Enable or disable AutoInflate" + }, + "value": "True" + }, + "maximumThroughputUnits": { + "type": "int", + "defaultValue": 0, + "minValue": 0, + "maxValue": 20, + "metadata": { + "description": "Enable or disable AutoInflate" + }, + "value": 10 + }, + "eventHubName": { + "type": "string", + "metadata": { + "description": "Name of the Event Hub" + }, + "value": "GEN-UNIQUE" + }, + "messageRetentionInDays": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 7, + "metadata": { + "description": "How long to retain the data in Event Hub" + }, + "value": 1 + }, + "partitionCount": { + "type": "int", + "defaultValue": 4, + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of partitions chosen" + }, + "value": 2 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "properties": { + "isAutoInflateEnabled": "True", + "maximumThroughputUnits": 10 + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "eventhubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces//GEN-UNIQUE" + ], + "properties": { + "messageRetentionInDays": 1, + "partitionCount": 2 + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1332 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1332 new file mode 100644 index 0000000..de2ab8a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1332 @@ -0,0 +1,97 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-eventhub/azuredeploy.parameters.json" + ], + "timestamp": 1642962906896, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-eventhub/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-create-namespace-and-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1332", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/eventhubs", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1332", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "projectName": { + "type": "string", + "metadata": { + "description": "Specifies a project name that is used to generate the Event Hub name and the Namespace name." + }, + "value": "GEN-UNIQUE-12" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location for all resources." + } + }, + "eventHubSku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "Specifies the messaging tier for Event Hub Namespace." + } + } + }, + "variables": { + "eventHubNamespaceName": "GEN-UNIQUE-12ns", + "eventHubName": "GEN-UNIQUE-12" + }, + "resources": [ + { + "type": "Microsoft.EventHub/namespaces", + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-12ns", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "properties": { + "isAutoInflateEnabled": false, + "maximumThroughputUnits": 0 + } + }, + { + "type": "Microsoft.EventHub/namespaces/eventhubs", + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-12ns/GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.EventHub/namespaces/GEN-UNIQUE-12ns" + ], + "properties": { + "messageRetentionInDays": 7, + "partitionCount": 1 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1333 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1333 new file mode 100644 index 0000000..a58ad5a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1333 @@ -0,0 +1,1137 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-private-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962906904, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.eventhub/eventhubs-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.eventhub/eventhubs-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1333", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.eventhub/namespaces", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1333", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all the resources." + } + }, + "virtualNetworkName": { + "defaultValue": "UbuntuVnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network hosting the virtual machine." + } + }, + "virtualNetworkAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the virtual network hosting the virtual machine." + } + }, + "subnetName": { + "defaultValue": "DefaultSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the virtual machine." + } + }, + "subnetAddressPrefix": { + "defaultValue": "10.0.0.0/24", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the virtual machine." + } + }, + "eventHubsNamespaceName": { + "type": "string", + "defaultValue": "[concat('eventhubs', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of Event Hubs namespace." + } + }, + "eventHubsNamespaceSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "Specifies the messaging tier for service Bus namespace." + } + }, + "eventHubsNamespaceCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 4 + ], + "defaultValue": 1, + "metadata": { + "description": "Specifies the Messaging Units for a premium namespace." + } + }, + "eventHubName": { + "type": "string", + "defaultValue": "[concat('eventhub', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Event Hub." + } + }, + "consumerGroupName": { + "type": "string", + "defaultValue": "[concat('consumergroup', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of a new Consumer Group." + } + }, + "eventHubsNamespaceZoneRedundant": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enabling this property creates a Event Hubs Namespace in regions that support availability zones." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('boot', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS", + "Premium_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Specifies the base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Specifies the sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "scriptFileName": { + "type": "string", + "defaultValue": "eventhubs_nslookup.sh", + "metadata": { + "description": "Specifies the script to download from the URI specified by the scriptFilePath parameter." + } + }, + "deployLogAnalytics": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to deploy a Log Analytics workspace to monitor the health and performance of the virtual machine." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the globally unique name of the Log Analytics workspace." + }, + "value": "GEN-UNIQUE" + }, + "workspaceSku": { + "type": "string", + "allowedValues": [ + "PerGB2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "defaultValue": "PerGB2018", + "metadata": { + "description": "Specifies the SKU of the Log Analytics workspace." + } + }, + "eventHubsNamespacePrivateEndpointName": { + "type": "string", + "defaultValue": "EventHubsNamespacePrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the storage account." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + } + }, + "variables": { + "customScriptExtensionName": "CustomScript", + "omsAgentForLinuxName": "LogAnalytics", + "nicName": "TestVmNic", + "nsgName": "DefaultSubnetNsg", + "publicIPAddressName": "TestVmPublicIp", + "publicIPAddressType": "Dynamic", + "workspaceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet", + "publicIpId": "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "nicId": "Microsoft.Network/networkInterfaces/TestVmNic", + "vnetId": "Microsoft.Network/virtualNetworks/UbuntuVnet", + "nsgId": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg", + "vmId": "Microsoft.Compute/virtualMachines/TestVm", + "customScriptId": "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "omsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "eventHubsNamespaceId": "Microsoft.EventHub/namespaces/[concat('eventhubs', uniquestring(resourceGroup().id))]", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "eventHubsPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "blobPublicDNSZoneForwarder": "[concat('.blob.', environment().suffixes.storage)]", + "eventHubsNamespacePrivateDnsZoneName": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "blobPrivateDnsZoneName": "[concat('privatelink', variables('blobPublicDNSZoneForwarder'))]", + "eventHubsNamespacePrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "eventHubsNamespaceEndpoint": "[concat('eventhubs', uniquestring(resourceGroup().id))][if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "blobServicePrimaryEndpoint": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]", + "eventHubsNamespacePrivateEndpointId": "Microsoft.Network/privateEndpoints/EventHubsNamespacePrivateEndpoint", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "eventHubsNamespacePrivateEndpointGroupName": "namespace", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "eventHubsNamespacePrivateDnsZoneGroup": "EventHubsNamespacePrivateEndpoint/namespacePrivateDnsZoneGroup", + "blobPrivateDnsZoneGroup": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "[concat('eventhubs', uniquestring(resourceGroup().id))]", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": 1 + }, + "properties": { + "zoneRedundant": false + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "[concat('eventhub', uniquestring(resourceGroup().id))]", + "type": "eventhubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces/[concat('eventhubs', uniquestring(resourceGroup().id))]" + ], + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "[concat('consumergroup', uniquestring(resourceGroup().id))]", + "type": "consumergroups", + "dependsOn": [ + "[concat('eventhub', uniquestring(resourceGroup().id))]" + ], + "properties": { + "userMetadata": "User Metadata goes here" + } + } + ] + } + ] + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('boot', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "TestVmPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(toLower(parameters('vmName')), uniquestring(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "DefaultSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "UbuntuVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TestVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "Microsoft.Network/virtualNetworks/UbuntuVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/TestVmPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "TestVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateEndpoints/EventHubsNamespacePrivateEndpoint", + "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "Microsoft.Network/networkInterfaces/TestVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "TestVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 50, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 50, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('vmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TestVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/CustomScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', parameters('scriptFileName'), ' ', variables('eventHubsNamespaceEndpoint'), ' ', variables('blobServicePrimaryEndpoint'))]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "condition": true, + "apiVersion": "2020-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + } + }, + "resources": [ + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "Kern", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "kern", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "Syslog", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "syslog", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "User", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "user", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SampleSyslogCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslogCollection", + "properties": { + "state": "Enabled" + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "DiskPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Used Inodes" + }, + { + "counterName": "Free Megabytes" + }, + { + "counterName": "% Used Space" + }, + { + "counterName": "Disk Transfers/sec" + }, + { + "counterName": "Disk Reads/sec" + }, + { + "counterName": "Disk Writes/sec" + }, + { + "counterName": "Disk Read Bytes/sec" + }, + { + "counterName": "Disk Write Bytes/sec" + } + ], + "objectName": "Logical Disk", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "ProcessorPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Processor Time" + }, + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "% IO Wait Time" + }, + { + "counterName": "% Idle Time" + }, + { + "counterName": "% Interrupt Time" + } + ], + "objectName": "Processor", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "ProcessPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "Used Memory" + }, + { + "counterName": "Virtual Shared Memory" + } + ], + "objectName": "Process", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SystemPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Processes" + } + ], + "objectName": "System", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "NetworkPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Total Bytes Transmitted" + }, + { + "counterName": "Total Bytes Received" + }, + { + "counterName": "Total Bytes" + }, + { + "counterName": "Total Packets Transmitted" + }, + { + "counterName": "Total Packets Received" + }, + { + "counterName": "Total Rx Errors" + }, + { + "counterName": "Total Tx Errors" + }, + { + "counterName": "Total Collisions" + } + ], + "objectName": "Network", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "MemorydataSources", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Available MBytes Memory" + }, + { + "counterName": "% Available Memory" + }, + { + "counterName": "Used Memory MBytes" + }, + { + "counterName": "% Used Memory" + } + ], + "objectName": "Memory", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SampleLinuxPerfCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceCollection", + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('eventHubsNamespacePrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "Microsoft.Network/virtualNetworks/UbuntuVnet" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('blobPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('vnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "EventHubsNamespacePrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.EventHub/namespaces/[concat('eventhubs', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "EventHubsNamespacePrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.EventHub/namespaces/[concat('eventhubs', uniquestring(resourceGroup().id))]", + "groupIds": [ + "namespace" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat('eventhubs', uniquestring(resourceGroup().id))][if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "EventHubsNamespacePrivateEndpoint/namespacePrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "Microsoft.Network/privateEndpoints/EventHubsNamespacePrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ], + "outputs": { + "eventHubsNamespacePrivateEndpoint": { + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', parameters('eventHubsNamespacePrivateEndpointName')), '2020-04-01', 'Full')]", + "type": "object" + }, + "blobStorageAccountPrivateEndpoint": { + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', parameters('blobStorageAccountPrivateEndpointName')), '2020-04-01', 'Full')]", + "type": "object" + }, + "eventHubsNamespaceName": { + "value": "[reference(resourceId('Microsoft.EventHub/namespaces', parameters('eventHubsNamespaceName')), '2018-01-01-preview', 'Full')]", + "type": "object" + }, + "blobStorageAccount": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('blobStorageAccountName')), '2019-06-01', 'Full')]", + "type": "object" + }, + "adminUsername": { + "value": "[parameters('adminUsername')]", + "type": "string" + }, + "workspaceName": { + "value": "[parameters('workspaceName')]", + "type": "string" + }, + "scriptFileUri": { + "value": "[variables('scriptFileUri')]", + "type": "string" + }, + "environment": { + "value": "[environment()]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1334 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1334 new file mode 100644 index 0000000..c2246a3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1334 @@ -0,0 +1,219 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-loadbased/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-loadbased/azuredeploy.parameters.json" + ], + "timestamp": 1642962906925, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-loadbased/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-loadbased/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1334", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1334", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "defaultValue": "[concat('hdi', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2021-06-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2021-06-01", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "tier": "Standard", + "clusterDefinition": { + "kind": "spark", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 3, + "autoscale": { + "capacity": { + "minInstanceCount": 3, + "maxInstanceCount": 10 + } + }, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1335 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1335 new file mode 100644 index 0000000..aeb6d3f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1335 @@ -0,0 +1,298 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-schedulebased/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-schedulebased/azuredeploy.parameters.json" + ], + "timestamp": 1642962906931, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-schedulebased/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-autoscale-schedulebased/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1335", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1335", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "defaultValue": "[concat('hdi', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2021-06-01", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "tier": "Standard", + "clusterDefinition": { + "kind": "spark", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-04-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 3, + "autoscale": { + "recurrence": { + "timeZone": "Pacific Standard Time", + "schedule": [ + { + "days": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "timeAndCapacity": { + "time": "08:00", + "minInstanceCount": 6, + "maxInstanceCount": 6 + } + }, + { + "days": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "timeAndCapacity": { + "time": "13:00", + "minInstanceCount": 8, + "maxInstanceCount": 8 + } + }, + { + "days": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "timeAndCapacity": { + "time": "18:00", + "minInstanceCount": 3, + "maxInstanceCount": 3 + } + }, + { + "days": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "timeAndCapacity": { + "time": "23:00", + "minInstanceCount": 2, + "maxInstanceCount": 2 + } + }, + { + "days": [ + "Saturday", + "Sunday" + ], + "timeAndCapacity": { + "time": "09:00", + "minInstanceCount": 5, + "maxInstanceCount": 5 + } + }, + { + "days": [ + "Saturday", + "Sunday" + ], + "timeAndCapacity": { + "time": "18:00", + "minInstanceCount": 2, + "maxInstanceCount": 2 + } + } + ] + } + }, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1336 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1336 new file mode 100644 index 0000000..b0ace7f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1336 @@ -0,0 +1,191 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962906941, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1336", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1336", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "databaseAdminUsername": { + "type": "string", + "metadata": { + "description": "Username for DB Admin" + }, + "value": "GEN-UNIQUE" + }, + "databaseAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for DB Admin" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "vNetName": "vNet", + "vNetPrefix": "10.0.0.0/16", + "SubnetName": "Subnet-1", + "SubnetPrefix": "10.0.0.0/24", + "serverName": "[concat('server', uniqueString(resourceGroup().id))]", + "dataBaseName": "DB", + "dataBaseCollation": "SQL_Latin1_General_CP1_CI_AS", + "dataBaseEdition": "Basic", + "dataBaseRequestedServiceObjectiveName": "Basic" + }, + "resources": [ + { + "name": "[variables('storageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-01-01", + "sku": { + "name": "Standard_LRS" + }, + "tags": { + "displayName": "storageAccount" + }, + "kind": "StorageV2" + }, + { + "name": "vNet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "tags": { + "displayName": "vNet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "[variables('serverName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01-preview", + "tags": { + "displayName": "server" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "databaseAdminPassword" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "DB", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "tags": { + "displayName": "dataBase" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": 1073741824, + "requestedServiceObjectiveName": "Basic" + } + } + ] + } + ], + "outputs": { + "existingClusterStorageResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingClusterStorageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "existingSQLServerResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingSQLServerName": { + "type": "string", + "value": "[variables('serverName')]" + }, + "existingSQLServerUsername": { + "type": "string", + "value": "[parameters('databaseAdminUsername')]" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingVirtualNetworkName": { + "type": "string", + "value": "[variables('vNetName')]" + }, + "existingVirtualNetworkSubnetName": { + "type": "string", + "value": "[variables('SubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1337 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1337 new file mode 100644 index 0000000..58cc33f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1337 @@ -0,0 +1,351 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/azuredeploy.parameters.json" + ], + "timestamp": 1642962906950, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-custom-ambari-db/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1337", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1337", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "defaultValue": "[concat('hdi-', uniqueString(resourceGroup().id))]", + "maxLength": 59, + "metadata": { + "description": "The name of the HDInsight cluster to create. This must be unique, less than 59 characters, can contain letters, numbers, and hyphens (the first and last characters must be a letter or number). The name cannot contain a reserved keyword." + }, + "value": "GEN-UNIQUE" + }, + "clusterVersion": { + "type": "string", + "defaultValue": "4.0", + "metadata": { + "description": "The HDInsight version to deploy." + } + }, + "clusterLoginUserName": { + "type": "string", + "minLength": 2, + "maxLength": 20, + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The cluster login username must be 2-20 characters and consist of digits, lowercase letters, and/or the following special characters: (!#$%&'()-^_`{}~). The name cannot contain a reserved keyword." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character. The following characters are not allowed (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "minLength": 2, + "metadata": { + "description": "These credentials can be used to remotely access the cluster. The SSH username can only consist of digits, upper or lowercase letters, and/or the following special characters (%&'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved word." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the SSH username." + }, + "value": "GEN-PASSWORD" + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "workerNodeCount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The number of worker nodes in the cluster." + } + }, + "existingClusterStorageResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The resource group name of the storage account to use as the cluster's default storage." + }, + "value": "GET-PREREQ-existingClusterStorageResourceGroup" + }, + "existingClusterStorageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account to use as the cluster's default storage." + }, + "value": "GET-PREREQ-existingClusterStorageAccountName" + }, + "newOrExistingClusterStorageContainerName": { + "type": "string", + "metadata": { + "description": "The name of the storage container to use." + }, + "value": "GEN-UNIQUE" + }, + "existingSQLServerResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The name of the resource group where the existing SQL server is to use for the new external metastore SQL db." + }, + "value": "GET-PREREQ-existingSQLServerResourceGroup" + }, + "existingSQLServerName": { + "type": "string", + "metadata": { + "description": "The name of the existing SQL server to use for the new external metastore SQL db." + }, + "value": "GET-PREREQ-existingSQLServerName" + }, + "existingSQLServerUsername": { + "type": "string", + "metadata": { + "description": "The external Hive metastore's existing SQL server admin username." + }, + "value": "GET-PREREQ-existingSQLServerUsername" + }, + "existingSQLServerPassword": { + "type": "securestring", + "metadata": { + "description": "The external Hive metastore's existing SQL server admin password." + } + }, + "newMetastoreDBName": { + "type": "string", + "defaultValue": "[concat('metastoredb', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the new SQL db to create to serve as the external metastores." + }, + "value": "GEN-UNIQUE" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The existing virtual network resource group name." + }, + "value": "GET-PREREQ-existingVirtualNetworkResourceGroup" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The existing virtual network name." + }, + "value": "GET-PREREQ-existingVirtualNetworkName" + }, + "existingVirtualNetworkSubnetName": { + "type": "string", + "metadata": { + "description": "The existing virtual network subnet name." + }, + "value": "GET-PREREQ-existingVirtualNetworkSubnetName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sqldbname": "GET-PREREQ-existingSQLServerName/GEN-UNIQUE" + }, + "resources": [ + { + "name": "sqlDbDeployment", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "resourceGroup": "GET-PREREQ-existingSQLServerResourceGroup", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "name": "GET-PREREQ-existingSQLServerName/GEN-UNIQUE", + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "zoneRedundant": false, + "readScale": "Disabled", + "readReplicaCount": 0 + }, + "sku": { + "name": "S2", + "tier": "Standard" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "sqlDbDeployment" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + }, + "hive-site": { + "javax.jdo.option.ConnectionDriverName": "com.microsoft.sqlserver.jdbc.SQLServerDriver", + "javax.jdo.option.ConnectionURL": "[concat('jdbc:sqlserver://', reference(resourceId(parameters('existingSQLServerResourceGroup'), 'Microsoft.Sql/servers', parameters('existingSQLServerName')), '2020-02-02-preview').fullyQualifiedDomainName, ';database=',parameters('newMetastoreDBName'),';encrypt=true;trustServerCertificate=true;create=false;loginTimeout=300')]", + "javax.jdo.option.ConnectionUserName": "GET-PREREQ-existingSQLServerUsername", + "javax.jdo.option.ConnectionPassword": "existingSQLServerPassword" + }, + "hive-env": { + "hive_database": "Existing MSSQL Server database with SQL authentication", + "hive_database_name": "GEN-UNIQUE", + "hive_database_type": "mssql", + "hive_existing_mssql_server_database": "GEN-UNIQUE", + "hive_existing_mssql_server_host": "[reference(resourceId(parameters('existingSQLServerResourceGroup'),'Microsoft.Sql/servers',parameters('existingSQLServerName')), '2020-02-02-preview').fullyQualifiedDomainName]", + "hive_hostname": "[reference(resourceId(parameters('existingSQLServerResourceGroup'),'Microsoft.Sql/servers',parameters('existingSQLServerName')), '2020-02-02-preview').fullyQualifiedDomainName]" + }, + "ambari-conf": { + "database-server": "[reference(resourceId(parameters('existingSQLServerResourceGroup'),'Microsoft.Sql/servers',parameters('existingSQLServerName')), '2020-02-02-preview').fullyQualifiedDomainName]", + "database-name": "GEN-UNIQUE", + "database-user-name": "GET-PREREQ-existingSQLServerUsername", + "database-user-password": "existingSQLServerPassword" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId(parameters('existingClusterStorageResourceGroup'), 'Microsoft.Storage/storageAccounts/', parameters('existingClusterStorageAccountName')), '2021-04-01').primaryEndpoints.blob,'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId(parameters('existingClusterStorageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('existingClusterStorageAccountName')), '2021-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/GET-PREREQ-existingVirtualNetworkName", + "subnet": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingVirtualNetworkSubnetName" + } + }, + { + "name": "workernode", + "targetInstanceCount": 4, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/GET-PREREQ-existingVirtualNetworkName", + "subnet": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingVirtualNetworkSubnetName" + } + } + ] + } + } + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1338 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1338 new file mode 100644 index 0000000..c5e7edb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1338 @@ -0,0 +1,227 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-datalake-store-azure-storage/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-datalake-store-azure-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962906960, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-datalake-store-azure-storage/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-datalake-store-azure-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1338", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1338", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "maxLength": 20, + "minLength": 2, + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The username must consist of digits, upper or lowercase letters, and/or the following special characters: (!#$%&'()-^_`{}~)." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "maxLength": 72, + "minLength": 6, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "maxLength": 72, + "minLength": 6, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "adlAccountName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Data Lake storage account." + }, + "value": "GEN-UNIQUE" + }, + "adlLocation": { + "type": "string", + "metadata": { + "description": "The location of the Azure Data Lake storage account." + }, + "value": "eastus2" + }, + "headNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "workerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.DataLakeStore/accounts", + "name": "GEN-UNIQUE", + "location": "eastus2", + "apiVersion": "2016-11-01", + "properties": { + "newTier": "Consumption", + "encryptionState": "Disabled" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2021-08-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2021-06-01", + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "tier": "Standard", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('defaultStorageAccount').name), '2021-08-01').primaryEndpoints.blob,'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-08-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1339 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1339 new file mode 100644 index 0000000..41b5fa2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1339 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-enhancedwrite/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-enhancedwrite/azuredeploy.parameters.json" + ], + "timestamp": 1642962906967, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-enhancedwrite/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-enhancedwrite/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1339", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1339", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "defaultvalue": "[concat('hbase-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the Zookeepernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hbase", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2018-07-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2018-07-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "dataDisksGroups": [ + { + "disksPerNode": 1 + } + ] + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT134 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT134 new file mode 100644 index 0000000..fba678b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT134 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-2disk-resources.json" + ], + "timestamp": 1642962887801, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-2disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT134", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT134", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "storageSettings": { + "type": "object", + "value": "[parameters('storageSettings')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "vmSize": { + "type": "string", + "value": "[parameters('vmSize')]" + }, + "vmCount": { + "type": "int", + "value": "[parameters('vmCount')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + }, + "dataDiskSize": { + "type": "int", + "value": "[parameters('dataDiskSize')]" + }, + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + }, + "lbBackendPools": { + "type": "object", + "value": "[parameters('lbBackendPools')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1340 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1340 new file mode 100644 index 0000000..428cc0c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1340 @@ -0,0 +1,238 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962906977, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1340", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1340", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the Zookeepernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "apiVersion": "2021-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hbase", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1341 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1341 new file mode 100644 index 0000000..7311fe4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1341 @@ -0,0 +1,284 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962906986, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-linux-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1341", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1341", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE-8" + }, + "clusterLoginUserName": { + "type": "string", + "defaultValue": "admin", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "defaultValue": "sshuser", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the Zookeepernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + }, + "vNet": { + "name": "GEN-UNIQUE-8-vnet", + "addressSpacePrefix": "10.0.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.0.0.0/24", + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8-vnet", + "subnet": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8-vnet/subnets/subnet1" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet).name", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet).subnetName", + "properties": { + "addressPrefix": "(vNet).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "name": "GEN-UNIQUE-8", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//(defaultStorageAccount).name", + "Microsoft.Network/virtualNetworks//(vNet).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hbase", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2016-01-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-8", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2016-01-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "(vNet).id", + "subnet": "(vNet).subnet" + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "(vNet).id", + "subnet": "(vNet).subnet" + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "(vNet).id", + "subnet": "(vNet).subnet" + } + } + ] + } + } + } + ], + "outputs": { + "vnet": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1342 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1342 new file mode 100644 index 0000000..11c9eb1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1342 @@ -0,0 +1,520 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.parameters.json" + ], + "timestamp": 1642962906996, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1342", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1342", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterNamePrefix": { + "type": "string", + "metadata": { + "description": "The prefix of the HDInsight cluster name." + }, + "value": "GEN-UNIQUE-5" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "Vnet1Region": { + "type": "string", + "metadata": { + "description": "Region for the first vNet." + }, + "value": "westus" + }, + "Vnet2Region": { + "type": "string", + "metadata": { + "description": "Region for the second vNet. This should be in another Azure region from the first vNet." + }, + "value": "eastus" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "UnbuntuNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "This is the Unbuntu DNS node Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "Ubuntu": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "vNet1": { + "name": "GEN-UNIQUE-5-vnet1", + "location": "westus", + "addressSpacePrefix": "10.1.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.1.0.0/24", + "gatewaySubnetName": "GatewaySubnet", + "gatewaySubnetPrefix": "10.1.255.0/27", + "vpnGatewayName": "vnet1gw", + "vpnGatewayIP": "vnet1gwip", + "dnsName": "vnet1DNS", + "dnsNICName": "vnet1DNSNIC", + "dnsIPName": "vnet1DNSPublicIP", + "dnsIPAddress": "10.1.0.4" + }, + "vNet2": { + "name": "GEN-UNIQUE-5-vnet2", + "location": "eastus", + "addressSpacePrefix": "10.2.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.2.0.0/24", + "gatewaySubnetName": "GatewaySubnet", + "gatewaySubnetPrefix": "10.2.255.0/27", + "vpnGatewayName": "vnet2gw", + "vpnGatewayIP": "vnet2gwip", + "dnsName": "vnet2DNS", + "dnsNICName": "vnet2DNSNIC", + "dnsIPName": "vnet2DNSPublicIP", + "dnsIPAddress": "10.2.0.4" + }, + "vpnConnections": { + "name1": "vnet1tovnet2", + "name2": "vnet2tovnet1", + "sharedKey": "A1b2C3D4" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "vNet1-subnet1-nsg", + "networkSecurityGroupName2": "vNet2-subnet1-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('vNet1').subnetName]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "vNet1-subnet1-nsg", + "location": "(vNet1).location", + "properties": {} + }, + { + "comments": "Simple Network Security Group for subnet [variables('vNet2').subnetName]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "vNet2-subnet1-nsg", + "location": "(vNet2).location", + "properties": {} + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet1).name", + "apiVersion": "2020-04-01", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/vNet1-subnet1-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet1).addressSpacePrefix" + ] + }, + "dhcpOptions": { + "dnsServers": [ + "(vNet1).dnsIPAddress" + ] + }, + "subnets": [ + { + "name": "(vNet1).subnetName", + "properties": { + "addressPrefix": "(vNet1).subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vNet1-subnet1-nsg" + } + } + }, + { + "name": "(vNet1).gatewaySubnetName", + "properties": { + "addressPrefix": "(vNet1).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet1).vpnGatewayIP", + "location": "(vNet1).location", + "apiVersion": "2020-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "(vNet1).vpnGatewayName", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/(vNet1).vpnGatewayIP", + "Microsoft.Network/virtualNetworks/(vNet1).name" + ], + "apiVersion": "2020-04-01", + "properties": { + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/(vNet1).gatewaySubnetName" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet1).vpnGatewayIP" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet2).name", + "apiVersion": "2020-04-01", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/vNet2-subnet1-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet2).addressSpacePrefix" + ] + }, + "dhcpOptions": { + "dnsServers": [ + "(vNet2).dnsIPAddress" + ] + }, + "subnets": [ + { + "name": "(vNet2).subnetName", + "properties": { + "addressPrefix": "(vNet2).subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vNet2-subnet1-nsg" + } + } + }, + { + "name": "(vNet2).gatewaySubnetName", + "properties": { + "addressPrefix": "(vNet2).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet2).vpnGatewayIP", + "location": "(vNet2).location", + "apiVersion": "2020-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "(vNet2).vpnGatewayName", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/(vNet2).vpnGatewayIP", + "Microsoft.Network/virtualNetworks/(vNet2).name" + ], + "apiVersion": "2020-04-01", + "properties": { + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/(vNet2).gatewaySubnetName" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet2).vpnGatewayIP" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/connections", + "name": "(vpnConnections).name1", + "apiVersion": "2020-04-01", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/(vNet1).vpnGatewayName", + "Microsoft.Network/virtualNetworkGateways/(vNet2).vpnGatewayName" + ], + "properties": { + "connectionType": "Vnet2Vnet", + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet1).vpnGatewayName" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet2).vpnGatewayName" + }, + "sharedKey": "(vpnConnections).sharedKey", + "routingWeight": 0, + "enableBgp": false, + "usePolicyBasedTrafficSelectors": false + } + }, + { + "type": "Microsoft.Network/connections", + "name": "(vpnConnections).name2", + "apiVersion": "2020-04-01", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/(vNet2).vpnGatewayName", + "Microsoft.Network/virtualNetworkGateways/(vNet1).vpnGatewayName" + ], + "properties": { + "connectionType": "Vnet2Vnet", + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet2).vpnGatewayName" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet1).vpnGatewayName" + }, + "sharedKey": "(vpnConnections).sharedKey", + "routingWeight": 0, + "enableBgp": false, + "usePolicyBasedTrafficSelectors": false + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet1).dnsIPName", + "location": "(vNet1).location", + "apiVersion": "2020-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "(vNet1).dnsNICName", + "apiVersion": "2020-04-01", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(vNet1).name", + "Microsoft.Network/publicIPAddresses/(vNet1).dnsIPName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet1).dnsIPName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/(vNet1).subnetName" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "(vNet1).dnsName", + "apiVersion": "2019-12-01", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/(vNet1).dnsNICName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "(vNet1).dnsName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "ubuntu", + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(vNet1).dnsNICName" + } + ] + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet2).dnsIPName", + "location": "(vNet2).location", + "apiVersion": "2020-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "(vNet2).dnsNICName", + "apiVersion": "2020-04-01", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(vNet2).name", + "Microsoft.Network/publicIPAddresses/(vNet2).dnsIPName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet2).dnsIPName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/(vNet2).subnetName" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "(vNet2).dnsName", + "apiVersion": "2019-12-01", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/(vNet2).dnsNICName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "(vNet2).dnsName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "ubuntu", + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(vNet2).dnsNICName" + } + ] + } + } + } + ], + "outputs": { + "vnet1": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet1').name))]" + }, + "vnet2": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet2').name))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1343 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1343 new file mode 100644 index 0000000..be2aeb4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1343 @@ -0,0 +1,520 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962907006, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-geo/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1343", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1343", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterNamePrefix": { + "type": "string", + "metadata": { + "description": "The prefix of the HDInsight cluster name." + }, + "value": "GEN-UNIQUE-5" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "Vnet1Region": { + "type": "string", + "metadata": { + "description": "Region for the first vNet." + }, + "value": "usgovvirginia" + }, + "Vnet2Region": { + "type": "string", + "metadata": { + "description": "Region for the second vNet. This should be in another Azure region from the first vNet." + }, + "value": "usgovtexas" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "UnbuntuNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "This is the Unbuntu DNS node Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "Ubuntu": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "vNet1": { + "name": "GEN-UNIQUE-5-vnet1", + "location": "usgovvirginia", + "addressSpacePrefix": "10.1.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.1.0.0/24", + "gatewaySubnetName": "GatewaySubnet", + "gatewaySubnetPrefix": "10.1.255.0/27", + "vpnGatewayName": "vnet1gw", + "vpnGatewayIP": "vnet1gwip", + "dnsName": "vnet1DNS", + "dnsNICName": "vnet1DNSNIC", + "dnsIPName": "vnet1DNSPublicIP", + "dnsIPAddress": "10.1.0.4" + }, + "vNet2": { + "name": "GEN-UNIQUE-5-vnet2", + "location": "usgovtexas", + "addressSpacePrefix": "10.2.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.2.0.0/24", + "gatewaySubnetName": "GatewaySubnet", + "gatewaySubnetPrefix": "10.2.255.0/27", + "vpnGatewayName": "vnet2gw", + "vpnGatewayIP": "vnet2gwip", + "dnsName": "vnet2DNS", + "dnsNICName": "vnet2DNSNIC", + "dnsIPName": "vnet2DNSPublicIP", + "dnsIPAddress": "10.2.0.4" + }, + "vpnConnections": { + "name1": "vnet1tovnet2", + "name2": "vnet2tovnet1", + "sharedKey": "A1b2C3D4" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "vNet1-subnet1-nsg", + "networkSecurityGroupName2": "vNet2-subnet1-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('vNet1').subnetName]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "vNet1-subnet1-nsg", + "location": "(vNet1).location", + "properties": {} + }, + { + "comments": "Simple Network Security Group for subnet [variables('vNet2').subnetName]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "vNet2-subnet1-nsg", + "location": "(vNet2).location", + "properties": {} + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet1).name", + "apiVersion": "2020-04-01", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/vNet1-subnet1-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet1).addressSpacePrefix" + ] + }, + "dhcpOptions": { + "dnsServers": [ + "(vNet1).dnsIPAddress" + ] + }, + "subnets": [ + { + "name": "(vNet1).subnetName", + "properties": { + "addressPrefix": "(vNet1).subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vNet1-subnet1-nsg" + } + } + }, + { + "name": "(vNet1).gatewaySubnetName", + "properties": { + "addressPrefix": "(vNet1).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet1).vpnGatewayIP", + "location": "(vNet1).location", + "apiVersion": "2020-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "(vNet1).vpnGatewayName", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/(vNet1).vpnGatewayIP", + "Microsoft.Network/virtualNetworks/(vNet1).name" + ], + "apiVersion": "2020-04-01", + "properties": { + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/(vNet1).gatewaySubnetName" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet1).vpnGatewayIP" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet2).name", + "apiVersion": "2020-04-01", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/vNet2-subnet1-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet2).addressSpacePrefix" + ] + }, + "dhcpOptions": { + "dnsServers": [ + "(vNet2).dnsIPAddress" + ] + }, + "subnets": [ + { + "name": "(vNet2).subnetName", + "properties": { + "addressPrefix": "(vNet2).subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vNet2-subnet1-nsg" + } + } + }, + { + "name": "(vNet2).gatewaySubnetName", + "properties": { + "addressPrefix": "(vNet2).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet2).vpnGatewayIP", + "location": "(vNet2).location", + "apiVersion": "2020-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "(vNet2).vpnGatewayName", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/(vNet2).vpnGatewayIP", + "Microsoft.Network/virtualNetworks/(vNet2).name" + ], + "apiVersion": "2020-04-01", + "properties": { + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/(vNet2).gatewaySubnetName" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet2).vpnGatewayIP" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/connections", + "name": "(vpnConnections).name1", + "apiVersion": "2020-04-01", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/(vNet1).vpnGatewayName", + "Microsoft.Network/virtualNetworkGateways/(vNet2).vpnGatewayName" + ], + "properties": { + "connectionType": "Vnet2Vnet", + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet1).vpnGatewayName" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet2).vpnGatewayName" + }, + "sharedKey": "(vpnConnections).sharedKey", + "routingWeight": 0, + "enableBgp": false, + "usePolicyBasedTrafficSelectors": false + } + }, + { + "type": "Microsoft.Network/connections", + "name": "(vpnConnections).name2", + "apiVersion": "2020-04-01", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/(vNet2).vpnGatewayName", + "Microsoft.Network/virtualNetworkGateways/(vNet1).vpnGatewayName" + ], + "properties": { + "connectionType": "Vnet2Vnet", + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet2).vpnGatewayName" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet1).vpnGatewayName" + }, + "sharedKey": "(vpnConnections).sharedKey", + "routingWeight": 0, + "enableBgp": false, + "usePolicyBasedTrafficSelectors": false + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet1).dnsIPName", + "location": "(vNet1).location", + "apiVersion": "2020-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "(vNet1).dnsNICName", + "apiVersion": "2020-04-01", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(vNet1).name", + "Microsoft.Network/publicIPAddresses/(vNet1).dnsIPName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet1).dnsIPName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/(vNet1).subnetName" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "(vNet1).dnsName", + "apiVersion": "2019-12-01", + "location": "(vNet1).location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/(vNet1).dnsNICName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "(vNet1).dnsName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "ubuntu", + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(vNet1).dnsNICName" + } + ] + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet2).dnsIPName", + "location": "(vNet2).location", + "apiVersion": "2020-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "(vNet2).dnsNICName", + "apiVersion": "2020-04-01", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(vNet2).name", + "Microsoft.Network/publicIPAddresses/(vNet2).dnsIPName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet2).dnsIPName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/(vNet2).subnetName" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "(vNet2).dnsName", + "apiVersion": "2019-12-01", + "location": "(vNet2).location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/(vNet2).dnsNICName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "(vNet2).dnsName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "ubuntu", + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(vNet2).dnsNICName" + } + ] + } + } + } + ], + "outputs": { + "vnet1": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet1').name))]" + }, + "vnet2": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet2').name))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1344 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1344 new file mode 100644 index 0000000..72a833b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1344 @@ -0,0 +1,397 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-one-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-one-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962907015, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-one-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-one-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1344", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1344", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterNamePrefix": { + "type": "string", + "metadata": { + "description": "The prefix of the HDInsight cluster name." + }, + "value": "GEN-UNIQUE-5" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the Zookeepernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "clusterNode1": { + "name": "GEN-UNIQUE-51", + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "clusterNode2": { + "name": "GEN-UNIQUE-52", + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id, deployment().name)]", + "type": "Standard_LRS" + } + }, + "vNet": { + "name": "GEN-UNIQUE-5-vnet", + "addressSpacePrefix": "10.0.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.0.0.0/24" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet).name", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet).subnetName", + "properties": { + "addressPrefix": "(vNet).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(clusterNode1).defaultStorageAccount.name", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "(clusterNode1).defaultStorageAccount.type" + }, + "kind": "Storage", + "properties": {} + }, + { + "name": "(clusterNode1).name", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(clusterNode1).defaultStorageAccount.name", + "Microsoft.Network/virtualNetworks/(vNet).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hbase", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('clusterNode1').defaultStorageAccount.name), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "(clusterNode1).name", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clusterNode1').defaultStorageAccount.name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet).name/(vNet).subnetName" + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet).name/(vNet).subnetName" + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet).name/(vNet).subnetName" + } + } + ] + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(clusterNode2).defaultStorageAccount.name", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "(clusterNode2).defaultStorageAccount.type" + }, + "kind": "Storage", + "properties": {} + }, + { + "name": "(clusterNode2).name", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(clusterNode2).defaultStorageAccount.name", + "Microsoft.Network/virtualNetworks/(vNet).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hbase", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('clusterNode2').defaultStorageAccount.name), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "(clusterNode2).name", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clusterNode2').defaultStorageAccount.name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet).name/(vNet).subnetName" + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet).name/(vNet).subnetName" + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet).name/(vNet).subnetName" + } + } + ] + } + } + } + ], + "outputs": { + "vnet": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet').name))]" + }, + "cluster1": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',variables('clusterNode1').name))]" + }, + "cluster2": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',variables('clusterNode2').name))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1345 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1345 new file mode 100644 index 0000000..0d088da --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1345 @@ -0,0 +1,469 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-two-vnets-same-region/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-two-vnets-same-region/azuredeploy.parameters.json" + ], + "timestamp": 1642962907024, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-two-vnets-same-region/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-hbase-replication-two-vnets-same-region/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1345", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1345", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterNamePrefix": { + "type": "string", + "metadata": { + "description": "The prefix of the HDInsight cluster name." + }, + "value": "GEN-UNIQUE-5" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the Zookeepernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "clusterNode1": { + "name": "GEN-UNIQUE-51", + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "clusterNode2": { + "name": "GEN-UNIQUE-52", + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id, deployment().name)]", + "type": "Standard_LRS" + } + }, + "vNet1": { + "name": "GEN-UNIQUE-5-vnet1", + "addressSpacePrefix": "10.1.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.1.0.0/24", + "peeringName": "GEN-UNIQUE-5-vnet1/PeeringToVNet2" + }, + "vNet2": { + "name": "GEN-UNIQUE-5-vnet2", + "addressSpacePrefix": "10.2.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.2.0.0/24", + "peeringName": "GEN-UNIQUE-5-vnet2/PeeringToVNet1" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet1).name", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet1).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet1).subnetName", + "properties": { + "addressPrefix": "(vNet1).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet2).name", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet2).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet2).subnetName", + "properties": { + "addressPrefix": "(vNet2).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "(vNet1).peeringName", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//(vNet1).name", + "Microsoft.Network/virtualNetworks//(vNet2).name" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": false, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vNet2).name" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "(vNet2).peeringName", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//(vNet1).name", + "Microsoft.Network/virtualNetworks//(vNet2).name" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": false, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vNet1).name" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(clusterNode1).defaultStorageAccount.name", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "(clusterNode1).defaultStorageAccount.type" + }, + "kind": "Storage", + "properties": {} + }, + { + "name": "(clusterNode1).name", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//(clusterNode1).defaultStorageAccount.name", + "Microsoft.Network/virtualNetworks//(vNet1).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hbase", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('clusterNode1').defaultStorageAccount.name), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "(clusterNode1).name", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clusterNode1').defaultStorageAccount.name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet1).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/(vNet1).subnetName" + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet1).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/(vNet1).subnetName" + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet1).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/(vNet1).subnetName" + } + } + ] + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(clusterNode2).defaultStorageAccount.name", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "(clusterNode2).defaultStorageAccount.type" + }, + "kind": "Storage", + "properties": {} + }, + { + "name": "(clusterNode2).name", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//(clusterNode2).defaultStorageAccount.name", + "Microsoft.Network/virtualNetworks//(vNet2).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hbase", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('clusterNode2').defaultStorageAccount.name), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "(clusterNode2).name", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clusterNode2').defaultStorageAccount.name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet2).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/(vNet2).subnetName" + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet2).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/(vNet2).subnetName" + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet2).name", + "subnet": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/(vNet2).subnetName" + } + } + ] + } + } + } + ], + "outputs": { + "vnet1": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet1').name))]" + }, + "vnet2": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet2').name))]" + }, + "cluster1": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',variables('clusterNode1').name))]" + }, + "cluster2": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',variables('clusterNode2').name))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1346 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1346 new file mode 100644 index 0000000..23ed06f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1346 @@ -0,0 +1,246 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-interactive-hive/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-interactive-hive/azuredeploy.parameters.json" + ], + "timestamp": 1642962907038, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-interactive-hive/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-interactive-hive/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1346", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1346", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE-8" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E16_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "apiVersion": "2018-06-01-preview", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "tier": "Standard", + "clusterDefinition": { + "kind": "interactivehive", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('defaultStorageAccount').name), '2019-06-01').primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-8", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "minInstanceCount": 1, + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "minInstanceCount": 1, + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E16_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "zookeepernode", + "minInstanceCount": 1, + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1347 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1347 new file mode 100644 index 0000000..9739466 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1347 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-kafka/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-kafka/azuredeploy.parameters.json" + ], + "timestamp": 1642962907045, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-kafka/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-kafka/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1347", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1347", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the Kafka cluster to create. This must be a unique name." + }, + "value": "GEN-UNIQUE-8" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the Zookeepernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "apiVersion": "2018-06-01-preview", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "kafka", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-8", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 4, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "dataDisksGroups": [ + { + "disksPerNode": 2 + } + ], + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1348 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1348 new file mode 100644 index 0000000..510ed3f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1348 @@ -0,0 +1,303 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-kafka-with-edge-schema-registry/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-kafka-with-edge-schema-registry/azuredeploy.parameters.json" + ], + "timestamp": 1642962907054, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-kafka-with-edge-schema-registry/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-kafka-with-edge-schema-registry/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1348", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters/applications" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1348", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "The name of the Kafka cluster to create. This must be a unique name." + } + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "Cluster Login Name" + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one uppercase letter, one lowercase letter and one non-alphanumberic character. The following characters are not allowed (single quote, double quote, backslash, right bracket, full-stop). Also the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "installScriptActionFolder": { + "type": "string", + "metadata": { + "description": "A script action you can run on the empty node to install or configure additional software." + }, + "defaultValue": "scripts" + }, + "installScriptAction": { + "type": "string", + "metadata": { + "description": "A script action you can run on the empty node to install or configure additional software." + }, + "defaultValue": "NodeSetup.sh" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the Zookeepernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "clStgAcnt": "[uniqueString(resourceGroup().id)]store", + "storageAccountType": "Standard_LRS", + "applicationName": "schema-registry" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[uniqueString(resourceGroup().id)]store", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[uniqueString(resourceGroup().id)]store" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "KAFKA", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('clStgAcnt')), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "[uniqueString(resourceGroup().id)]", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clStgAcnt')), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 4, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "dataDisksGroups": [ + { + "disksPerNode": 2 + } + ], + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + }, + { + "name": "[uniqueString(resourceGroup().id)]/schema-registry", + "type": "Microsoft.HDInsight/clusters/applications", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.HDInsight/clusters/[uniqueString(resourceGroup().id)]" + ], + "properties": { + "computeProfile": { + "roles": [ + { + "name": "edgenode", + "targetInstanceCount": 1, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + } + } + ] + }, + "installScriptActions": [ + { + "name": "[concat('schemaregistry','-' ,uniquestring(variables('applicationName')))]", + "uri": "[uri(parameters('_artifactsLocation'), concat(parameters('installScriptActionFolder'), '/', parameters('installScriptAction'), parameters('_artifactsLocationSasToken')))]", + "roles": [ + "edgenode" + ] + } + ], + "sshEndpoints": [ + { + "location": "schema-registry.[uniqueString(resourceGroup().id)]-ssh.azurehdinsight.net", + "destinationPort": 22, + "publicPort": 22 + } + ], + "applicationType": "CustomApplication" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1349 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1349 new file mode 100644 index 0000000..bf92c7a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1349 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907063, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1349", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1349", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "maxLength": 59, + "metadata": { + "description": "The name of the HDInsight cluster to create. This must be a unique name, less than 59 characters, can contain letters, numbers, and hyphens (the first and last characters must be a letter or number). The name can not contain a reserved keyword." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "minLength": 2, + "maxLength": 20, + "defaultValue": "admin", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The cluster login username must be 2-20 characters and consist of digits, lowercase letters, and/or the following special characters: (!#$%&'()-^_`{}~). The name can not contain a reserved keyword." + } + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "defaultValue": "sshuser", + "minLength": 2, + "metadata": { + "description": "These credentials can be used to remotely access the cluster. The sshUserName can only consit of digits, upper or lowercase letters, and/or the following special characters (%&'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved keyword." + } + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long, must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name." + }, + "value": "GEN-PASSWORD" + }, + "clusterType": { + "type": "string", + "defaultValue": "hadoop", + "allowedValues": [ + "hadoop", + "hbase", + "storm", + "spark" + ], + "metadata": { + "description": "The type of the HDInsight cluster to create." + } + }, + "clusterHeadNodeCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of HeadNodes in the HDInsight cluster." + } + }, + "clusterWorkerNodeCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of WokerNodes in the HDInsight cluster." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "clusterStorageAccountName": "[concat('clustrstg',uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('clusterStorageAccountName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2021-06-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/',variables('clusterStorageAccountName'))]" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "tier": "standard", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "admin", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('clusterStorageAccountName')), '2021-04-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clusterStorageAccountName')), '2021-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "clusterName": { + "type": "string", + "value": "[parameters('clusterName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT135 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT135 new file mode 100644 index 0000000..48cb934 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT135 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-4disk-resources.json" + ], + "timestamp": 1642962887811, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-4disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT135", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT135", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "storageSettings": { + "type": "object", + "value": "[parameters('storageSettings')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "vmSize": { + "type": "string", + "value": "[parameters('vmSize')]" + }, + "vmCount": { + "type": "int", + "value": "[parameters('vmCount')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + }, + "dataDiskSize": { + "type": "int", + "value": "[parameters('dataDiskSize')]" + }, + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + }, + "lbBackendPools": { + "type": "object", + "value": "[parameters('lbBackendPools')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1350 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1350 new file mode 100644 index 0000000..36e4e4c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1350 @@ -0,0 +1,138 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/azuredeploy.parameters.json" + ], + "timestamp": 1642962907070, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-add-edge-node/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1350", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters/applications" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1350", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "maxLength": 59, + "metadata": { + "description": "The name of the HDInsight cluster to create. This must be a unique name, less than 59 characters, can contain letters, numbers, and hyphens (the first and last characters must be a letter or number). The name can not contain a reserved keyword." + }, + "value": "GET-PREREQ-clusterName" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "installScriptActionFolder": { + "type": "string", + "metadata": { + "description": "A script action folder holding the script." + }, + "defaultValue": "scripts" + }, + "installScriptAction": { + "type": "string", + "metadata": { + "description": "A script action you can run on the empty node to install or configure additiona software." + }, + "defaultValue": "EmptyNodeSetup.sh" + }, + "EdgeNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the EdgeNode Azure Virtual Machine size, and will effect the cost. If you don't know, just accept the default value." + } + } + }, + "variables": { + "applicationName": "new-edgenode" + }, + "resources": [ + { + "name": "GET-PREREQ-clusterName/new-edgenode", + "type": "Microsoft.HDInsight/clusters/applications", + "apiVersion": "2021-06-01", + "properties": { + "marketPlaceIdentifier": "EmptyNode", + "computeProfile": { + "roles": [ + { + "name": "edgenode", + "targetInstanceCount": 1, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + } + } + ] + }, + "installScriptActions": [ + { + "name": "[concat('emptynode','-' ,uniquestring(variables('applicationName')))]", + "uri": "[uri(parameters('_artifactsLocation'), concat(parameters('installScriptActionFolder'), '/', parameters('installScriptAction'), parameters('_artifactsLocationSasToken')))]", + "roles": [ + "edgenode" + ] + } + ], + "sshEndpoints": [ + { + "location": "new-edgenode.GET-PREREQ-clusterName-ssh.azurehdinsight.net", + "destinationPort": 22, + "publicPort": 22 + } + ], + "applicationType": "CustomApplication" + } + } + ], + "outputs": { + "application": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters/applications/',parameters('clusterName'), variables('applicationName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1351 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1351 new file mode 100644 index 0000000..10da53a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1351 @@ -0,0 +1,225 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-password/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-password/azuredeploy.parameters.json" + ], + "timestamp": 1642962907078, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-password/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-password/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1351", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1351", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE-8" + }, + "clusterType": { + "type": "string", + "allowedValues": [ + "hadoop", + "intractivehive", + "hbase", + "storm", + "spark" + ], + "metadata": { + "description": "The type of the HDInsight cluster to create." + }, + "value": "hadoop" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster. The username cannot be admin." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workdernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "apiVersion": "2021-06-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name)).primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-8", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1352 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1352 new file mode 100644 index 0000000..b74d5ee --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1352 @@ -0,0 +1,234 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey/azuredeploy.parameters.json" + ], + "timestamp": 1642962907087, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1352", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1352", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterType": { + "type": "string", + "allowedValues": [ + "hadoop", + "hbase", + "storm", + "spark" + ], + "metadata": { + "description": "The type of the HDInsight cluster to create." + }, + "value": "hadoop" + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE-8" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "admin" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one uppercase letter, one lowercase letter and one non-alphanumberic character. The following characters are not allowed (single quote, double quote, backslash, right bracket, full-stop). Also the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "hdiuser" + }, + "sshPublicKey": { + "type": "securestring", + "metadata": { + "description": "This field must be a valid SSH public key." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "clusterWorkerNodeCount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The number of nodes in the HDInsight cluster." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storage')]" + }, + "resources": [ + { + "name": "[variables('storageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "name": "GEN-UNIQUE-8", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts',variables('storageAccountName'))]" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "admin", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-8", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "hdiuser", + "sshProfile": { + "publicKeys": [ + { + "certificateData": "GEN-SSH-PUB-KEY" + } + ] + } + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 4, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "hdiuser", + "sshProfile": { + "publicKeys": [ + { + "certificateData": "GEN-SSH-PUB-KEY" + } + ] + } + } + } + } + ] + } + } + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1353 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1353 new file mode 100644 index 0000000..5f17389 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1353 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907096, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1353", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1353", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "databaseAdminUsername": { + "type": "string", + "metadata": { + "description": "Username for DB Admin" + }, + "value": "GEN-UNIQUE" + }, + "databaseAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for DB Admin" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "vNetName": "vNet", + "vNetPrefix": "10.0.0.0/16", + "SubnetName": "Subnet-1", + "SubnetPrefix": "10.0.0.0/24", + "serverName": "[concat('server', uniqueString(resourceGroup().id))]", + "dataBaseName": "DB", + "dataBaseCollation": "SQL_Latin1_General_CP1_CI_AS", + "dataBaseEdition": "Basic", + "dataBaseRequestedServiceObjectiveName": "Basic" + }, + "resources": [ + { + "name": "[variables('storageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "sku": { + "name": "Standard_LRS" + }, + "tags": { + "displayName": "storageAccount" + }, + "kind": "Storage" + }, + { + "name": "vNet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "tags": { + "displayName": "vNet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "[variables('serverName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "tags": { + "displayName": "server" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "databaseAdminPassword" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "DB", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('serverName'))]" + ], + "tags": { + "displayName": "dataBase" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + } + ] + } + ], + "outputs": { + "existingClusterStorageResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingClusterStorageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "existingVirtualNetworkName": { + "type": "string", + "value": "[variables('vNetName')]" + }, + "existingHiveMetastoreServerResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingHiveMetastoreServerName": { + "type": "string", + "value": "[variables('serverName')]" + }, + "existingHiveMetastoreDatabaseName": { + "type": "string", + "value": "[variables('dataBaseName')]" + }, + "existingHiveMetastoreUsername": { + "type": "string", + "value": "[parameters('databaseAdminUsername')]" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingVirtualNetworkSubnetName": { + "type": "string", + "value": "[variables('SubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1354 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1354 new file mode 100644 index 0000000..42a4bb6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1354 @@ -0,0 +1,300 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962907105, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-publickey-metastore-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1354", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1354", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "defaultValue": "[concat('hdi-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterVersion": { + "type": "string", + "defaultValue": "4.0", + "metadata": { + "description": "The HDInsight version to deploy." + } + }, + "headNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "workerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "workerNodeCount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The number of worker nodes in the cluster." + } + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-GUID" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "minLength": 2, + "metadata": { + "description": "These credentials can be used to remotely access the cluster. The sshUserName can only consit of digits, upper or lowercase letters, and/or the following special characters (%&'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved word" + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "maxLength": 72, + "minLength": 6, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "existingClusterStorageResourceGroup": { + "type": "string", + "metadata": { + "description": "The resource group name of the storage account to use as the cluster's default storage." + }, + "value": "GET-PREREQ-existingClusterStorageResourceGroup" + }, + "existingClusterStorageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account to use as the cluster's default storage." + }, + "value": "GET-PREREQ-existingClusterStorageAccountName" + }, + "newOrExistingClusterStorageContainerName": { + "type": "string", + "metadata": { + "description": "The name of the storage container to use." + }, + "value": "GEN-UNIQUE" + }, + "existingHiveMetastoreServerResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name where the existing metastore SQL server is located." + }, + "value": "GET-PREREQ-existingHiveMetastoreServerResourceGroupName" + }, + "existingHiveMetastoreServerName": { + "type": "string", + "metadata": { + "description": "The fully-qualified domain name (FQDN) of the SQL server to use for the external Hive metastore." + }, + "value": "GET-PREREQ-existingHiveMetastoreServerName" + }, + "existingHiveMetastoreDatabaseName": { + "type": "string", + "metadata": { + "description": "The external Hive metastore's existing SQL database." + }, + "value": "GET-PREREQ-existingHiveMetastoreDatabaseName" + }, + "existingHiveMetastoreUsername": { + "type": "string", + "metadata": { + "description": "The external Hive metastore's existing SQL server admin username." + }, + "value": "GET-PREREQ-existingHiveMetastoreUsername" + }, + "existingHiveMetastorePassword": { + "type": "securestring", + "metadata": { + "description": "The external Hive metastore's existing SQL server admin password." + } + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "The existing virtual network resource group name." + }, + "value": "GET-PREREQ-existingVirtualNetworkResourceGroup" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The existing virtual network name." + }, + "value": "GET-PREREQ-existingVirtualNetworkName" + }, + "existingVirtualNetworkSubnetName": { + "type": "string", + "metadata": { + "description": "The existing virtual network subnet name." + }, + "value": "GET-PREREQ-existingVirtualNetworkSubnetName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2021-06-01", + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-GUID", + "restAuthCredential.password": "GEN-PASSWORD" + }, + "hive-site": { + "javax.jdo.option.ConnectionDriverName": "com.microsoft.sqlserver.jdbc.SQLServerDriver", + "javax.jdo.option.ConnectionURL": "[concat('jdbc:sqlserver://', reference(resourceId(parameters('existingHiveMetastoreServerResourceGroupName'), 'Microsoft.Sql/servers',parameters('existingHiveMetastoreServerName')), '2021-02-01-preview').fullyQualifiedDomainName, ';database=',parameters('existingHiveMetastoreDatabaseName'),';encrypt=true;trustServerCertificate=true;create=false;loginTimeout=300')]", + "javax.jdo.option.ConnectionUserName": "GET-PREREQ-existingHiveMetastoreUsername", + "javax.jdo.option.ConnectionPassword": "existingHiveMetastorePassword" + }, + "hive-env": { + "hive_database": "Existing MSSQL Server database with SQL authentication", + "hive_database_name": "GET-PREREQ-existingHiveMetastoreDatabaseName", + "hive_database_type": "mssql", + "hive_existing_mssql_server_database": "GET-PREREQ-existingHiveMetastoreDatabaseName", + "hive_existing_mssql_server_host": "[reference(resourceId(parameters('existingHiveMetastoreServerResourceGroupName'),'Microsoft.Sql/servers',parameters('existingHiveMetastoreServerName')), '2021-02-01-preview').fullyQualifiedDomainName]", + "hive_hostname": "[reference(resourceId(parameters('existingHiveMetastoreServerResourceGroupName'),'Microsoft.Sql/servers',parameters('existingHiveMetastoreServerName')), '2021-02-01-preview').fullyQualifiedDomainName]" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId(parameters('existingClusterStorageResourceGroup'), 'Microsoft.Storage/storageAccounts/', parameters('existingClusterStorageAccountName')), '2021-04-01').primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId(parameters('existingClusterStorageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('existingClusterStorageAccountName')), '2021-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/GET-PREREQ-existingVirtualNetworkName", + "subnet": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/GET-PREREQ-existingVirtualNetworkName/subnets/GET-PREREQ-existingVirtualNetworkSubnetName" + } + }, + { + "name": "workernode", + "targetInstanceCount": 4, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/GET-PREREQ-existingVirtualNetworkName", + "subnet": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingVirtualNetworkSubnetName" + } + } + ] + } + } + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1355 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1355 new file mode 100644 index 0000000..1e443ce --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1355 @@ -0,0 +1,303 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-edge-node/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-edge-node/azuredeploy.parameters.json" + ], + "timestamp": 1642962907119, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-edge-node/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-edge-node/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1355", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters/applications" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1355", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "maxLength": 59, + "metadata": { + "description": "The name of the HDInsight cluster to create. This must be unique, less than 59 characters, can contain letters, numbers, and hyphens (the first and last characters must be a letter or number). The name cannot contain a reserved keyword." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "minLength": 2, + "maxLength": 20, + "defaultValue": "admin", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The cluster login username must be 2-20 characters and consist of digits, lowercase letters, and/or the following special characters: (!#$%&'()-^_`{}~). The name cannot contain a reserved keyword." + } + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The\u00a0password\u00a0must\u00a0be\u00a0at\u00a0least\u00a010\u00a0characters\u00a0in\u00a0length\u00a0and\u00a0must\u00a0contain\u00a0at\u00a0least\u00a0one\u00a0digit,\u00a0one\u00a0upper\u00a0case\u00a0letter, one\u00a0lower\u00a0case\u00a0letter, and one\u00a0non-alphanumeric\u00a0character except (single-quote, double-quote, backslash, right-bracket, full-stop).\u00a0Also,\u00a0the\u00a0password\u00a0must not\u00a0contain\u00a03\u00a0consecutive\u00a0characters\u00a0from\u00a0the\u00a0cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "minLength": 2, + "defaultValue": "sshuser", + "metadata": { + "description": "These credentials can be used to remotely access the cluster. The SSH username can only consist of digits, upper or lowercase letters, and/or the following special characters (%&'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved word." + } + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the SSH username." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "installScriptActionFolder": { + "type": "string", + "defaultValue": "scripts", + "metadata": { + "description": "A script action you can run on the empty node to install or configure additiona software." + } + }, + "installScriptAction": { + "type": "string", + "defaultValue": "EmptyNodeSetup.sh", + "metadata": { + "description": "A script action you can run on the empty node to install or configure additiona software." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "EdgeNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "clusterStorageAccountName": "GEN-UNIQUEstore", + "storageAccountType": "Standard_LRS", + "applicationName": "new-edgenode" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUEstore", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUEstore" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "admin", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('clusterStorageAccountName')), '2021-04-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clusterStorageAccountName')), '2021-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + }, + { + "name": "GEN-UNIQUE/new-edgenode", + "type": "Microsoft.HDInsight/clusters/applications", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.HDInsight/clusters//GEN-UNIQUE" + ], + "properties": { + "marketPlaceIdentifier": "EmptyNode", + "computeProfile": { + "roles": [ + { + "name": "edgenode", + "targetInstanceCount": 1, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + } + } + ] + }, + "installScriptActions": [ + { + "name": "[concat('emptynode','-' ,uniquestring(variables('applicationName')))]", + "uri": "[uri(parameters('_artifactsLocation'), concat(parameters('installScriptActionFolder'), '/', parameters('installScriptAction'), parameters('_artifactsLocationSasToken')))]", + "roles": [ + "edgenode" + ] + } + ], + "sshEndpoints": [ + { + "location": "new-edgenode.GEN-UNIQUE-ssh.azurehdinsight.net", + "destinationPort": 22, + "publicPort": 22 + } + ], + "applicationType": "CustomApplication" + } + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('clusterStorageAccountName')))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + }, + "application": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters/applications/',parameters('clusterName'), variables('applicationName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1356 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1356 new file mode 100644 index 0000000..acbb170 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1356 @@ -0,0 +1,80 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907127, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1356", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1356", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name for the storage account" + }, + "value": "GEN-UNIQUE" + }, + "Location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all reources" + } + } + }, + "variables": { + "StorageAccountType": "Standard_LRS", + "StorageKind": "Storagev2" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Storage/storageAccounts", + "location": "location", + "apiVersion": "2021-01-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storagev2", + "tags": { + "displayName": "Storage Account" + } + } + ], + "outputs": { + "clusterStorageResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1357 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1357 new file mode 100644 index 0000000..a6ac35f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1357 @@ -0,0 +1,232 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962907134, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-default-storage-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1357", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1357", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "ClusterName": { + "type": "string", + "defaultValue": "[concat('hdi-', uniqueString(resourceGroup().id))]", + "maxLength": 59, + "metadata": { + "description": "The name of the HDInsight cluster to create. This must be unique, less than 59 characters, can contain letters, numbers, and hyphens (the first and last characters must be a letter or number). The name cannot contain a reserved keyword." + } + }, + "ClusterType": { + "type": "string", + "defaultValue": "hadoop", + "allowedValues": [ + "hadoop", + "intractivehive", + "hbase", + "storm", + "spark" + ], + "metadata": { + "description": "The type of the HDInsight cluster to create." + } + }, + "ClusterVersion": { + "type": "string", + "defaultValue": "4.0", + "allowedValues": [ + "3.6", + "4.0" + ], + "metadata": { + "description": "The HDInsight cluster version to create." + } + }, + "ClusterLoginUserName": { + "type": "string", + "minLength": 2, + "maxLength": 20, + "defaultValue": "admin", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The cluster login username must be 2-20 characters and consist of digits, lowercase letters, and/or the following special characters: (!#$%&'()-^_`{}~). The name cannot contain a reserved keyword." + } + }, + "ClusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character. The following characters are not allowed (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "minLength": 2, + "metadata": { + "description": "These credentials can be used to remotely access the cluster. The SSH username can only consist of digits, upper or lowercase letters, and/or the following special characters (%&'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved word." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "clusterStorageResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The existing storage resource group name." + }, + "value": "GET-PREREQ-clusterStorageResourceGroup" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The short name of the default Azure storage account name. This account needs to be secure transfer enabled." + }, + "value": "GET-PREREQ-storageAccountName" + }, + "Location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workdernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.HDInsight/clusters", + "name": "[concat('hdi-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "tier": "Standard", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "clusterLoginUserName", + "restAuthCredential.password": "clusterLoginPassword" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId(parameters('clusterStorageResourceGroup'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2021-04-01').primaryEndpoints.blob,'https:',''),'/','')]", + "isDefault": true, + "container": "[concat('hdi-', uniqueString(resourceGroup().id))]", + "key": "[listKeys(resourceId(parameters('clusterStorageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('ClusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1358 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1358 new file mode 100644 index 0000000..a2b2cf4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1358 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-linked-storage-account/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-linked-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907140, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-linked-storage-account/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-existing-linked-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1358", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1358", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name for the storage account" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "StorageAccountType": "Standard_LRS", + "StorageKind": "Storagev2" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "sku": { + "name": "storageAccountType" + }, + "kind": "Storagev2", + "properties": {} + } + ], + "outputs": { + "clusterStorageResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1359 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1359 new file mode 100644 index 0000000..4ead27a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1359 @@ -0,0 +1,326 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-sql-database/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-sql-database/azuredeploy.parameters.json" + ], + "timestamp": 1642962907146, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-sql-database/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-linux-with-sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1359", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1359", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create. This must be unique, less than 59 characters, can contain letters, numbers, and hyphens (the first and last characters must be a letter or number). The name cannot contain a reserved keyword." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "defaultValue": "admin", + "minLength": 2, + "maxLength": 20, + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The cluster login username must be 2-20 characters and consist of digits, lowercase letters, and/or the following special characters: (!#$%&'()-^_`{}~). The name cannot contain a reserved keyword." + }, + "value": "admin" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character. The following characters are not allowed (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "defaultValue": "sshuser", + "minLength": 2, + "metadata": { + "description": "These credentials can be used to remotely access the cluster. The SSH username can only consist of digits, upper or lowercase letters, and/or the following special characters (%&'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved word." + }, + "value": "sshuser" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the SSH username." + }, + "value": "GEN-PASSWORD" + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "sqlAdminLogin": { + "type": "string", + "defaultValue": "sqluser", + "metadata": { + "description": "These credentials can be used to access the Azure SQL database." + }, + "value": "sqlsadmin" + }, + "sqlAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The password can be used to access the SQL database." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "bacpacFileName": { + "type": "string", + "defaultValue": "SqoopTutorial-2016-2-23-11-2.bacpac", + "metadata": { + "description": "The backpac for configure the database and tables for the Use Sqoop in HDInsight tutorial." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + }, + "sqlDatabase": { + "serverName": "GEN-UNIQUEdbserver", + "databaseName": "GEN-UNIQUEdb" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "admin", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-04-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + }, + { + "type": "Microsoft.Sql/servers", + "name": "(sqlDatabase).serverName", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "SqlServer" + }, + "apiVersion": "2020-11-01-preview", + "properties": { + "administratorLogin": "sqlsadmin", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "type": "databases", + "name": "(sqlDatabase).databaseName", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Database" + }, + "apiVersion": "2020-11-01-preview", + "dependsOn": [ + "(sqlDatabase).serverName" + ], + "properties": { + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": 1073741824, + "requestedServiceObjectiveName": "Basic" + }, + "resources": [ + { + "name": "Import", + "type": "extensions", + "apiVersion": "2014-04-01", + "dependsOn": [ + "Microsoft.Sql/servers/databases/(sqlDatabase).serverName/(sqlDatabase).databaseName" + ], + "properties": { + "operationMode": "Import", + "storageKey": "", + "storageKeyType": "SharedAccessKey", + "administratorLogin": "sqlsadmin", + "administratorLoginPassword": "GEN-PASSWORD", + "storageUri": "[uri(parameters('_artifactsLocation'), concat('Bacpac/', parameters('bacpacFileName')))]" + } + } + ] + }, + { + "type": "firewallrules", + "name": "AllowAllAzureIps", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Sql/servers//(sqlDatabase).serverName" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + }, + "sqlSvrFqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Sql/servers/', variables('sqlDatabase').serverName)).fullyQualifiedDomainName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT136 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT136 new file mode 100644 index 0000000..dc6b71f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT136 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-8disk-resources.json" + ], + "timestamp": 1642962887877, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/data-nodes-8disk-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT136", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT136", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The name of the subnet to deploy resources into" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "OS settings to deploy on" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1023, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "The namespace for resources created by this template" + } + }, + "lbBackendPools": { + "type": "object", + "metadata": { + "description": "loadBalancerBackendAddressPools config object" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "storageSettings": { + "type": "object", + "value": "[parameters('storageSettings')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "vmSize": { + "type": "string", + "value": "[parameters('vmSize')]" + }, + "vmCount": { + "type": "int", + "value": "[parameters('vmCount')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + }, + "dataDiskSize": { + "type": "int", + "value": "[parameters('dataDiskSize')]" + }, + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + }, + "lbBackendPools": { + "type": "object", + "value": "[parameters('lbBackendPools')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1360 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1360 new file mode 100644 index 0000000..c8d5c44 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1360 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907153, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1360", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1360", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "vNetName": "vNet", + "vNetPrefix": "10.0.0.0/16", + "SubnetName": "Subnet-1", + "SubnetPrefix": "10.0.0.0/24" + }, + "resources": [ + { + "name": "[variables('storageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "Standard_LRS" + }, + "tags": { + "displayName": "storageAccount" + }, + "kind": "StorageV2" + }, + { + "name": "vNet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "tags": { + "displayName": "vNet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingClusterStorageResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingClusterStorageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "existingVirtualNetworkName": { + "type": "string", + "value": "[variables('vNetName')]" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingVirtualNetworkSubnetName": { + "type": "string", + "value": "[variables('SubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1361 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1361 new file mode 100644 index 0000000..9deb707 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1361 @@ -0,0 +1,254 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/azuredeploy.parameters.json" + ], + "timestamp": 1642962907159, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-minimum-tls/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1361", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1361", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "defaultValue": "[concat('hdi-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterVersion": { + "type": "string", + "defaultValue": "4.0", + "metadata": { + "description": "The HDInsight version to deploy." + } + }, + "headNodeSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "The VM size of the head nodes." + } + }, + "workerNodeSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "The VM size of the worker nodes." + } + }, + "workerNodeCount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The number of worker nodes in the cluster." + } + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-GUID" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "existingClusterStorageResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The resource group name of the storage account to use as the cluster's default storage." + }, + "value": "GET-PREREQ-existingClusterStorageResourceGroup" + }, + "existingClusterStorageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account to use as the cluster's default storage." + }, + "value": "GET-PREREQ-existingClusterStorageAccountName" + }, + "newOrExistingClusterStorageContainerName": { + "type": "string", + "metadata": { + "description": "The name of the storage container to use." + }, + "value": "GEN-UNIQUE" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The existing virtual network resource group name." + }, + "value": "GET-PREREQ-existingVirtualNetworkResourceGroup" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The existing virtual network name." + }, + "value": "GET-PREREQ-existingVirtualNetworkName" + }, + "existingVirtualNetworkSubnetName": { + "type": "string", + "metadata": { + "description": "The existing virtual network subnet name." + }, + "value": "GET-PREREQ-existingVirtualNetworkSubnetName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-GUID", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId(parameters('existingClusterStorageResourceGroup'), 'Microsoft.Storage/storageAccounts/', parameters('existingClusterStorageAccountName')), '2019-06-01').primaryEndpoints.blob,'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId(parameters('existingClusterStorageResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('existingClusterStorageAccountName')), '2019-06-01').keys[0].value]" + } + ] + }, + "minSupportedTlsVersion": "1.2", + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/GET-PREREQ-existingVirtualNetworkName", + "subnet": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingVirtualNetworkSubnetName" + } + }, + { + "name": "workernode", + "targetInstanceCount": 4, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/GET-PREREQ-existingVirtualNetworkName", + "subnet": "GET-PREREQ-existingVirtualNetworkResourceGroup/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingVirtualNetworkSubnetName" + } + } + ] + } + } + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1362 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1362 new file mode 100644 index 0000000..e4cc7cd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1362 @@ -0,0 +1,276 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-rserver/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-rserver/azuredeploy.parameters.json" + ], + "timestamp": 1642962907167, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-rserver/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-rserver/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1362", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1362", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "admin" + }, + "clusterLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "sshuser" + }, + "sshPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "ZookeeperNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the ZookeeperNode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "EdgeNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E4_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "apiVersion": "2018-06-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "3.6", + "osType": "Linux", + "tier": "standard", + "clusterDefinition": { + "kind": "rserver", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "admin", + "restAuthCredential.password": "GEN-PASSWORD" + }, + "rserver": { + "rstudio": true + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(variables('defaultStorageAccount').name).primaryEndpoints.blob, 'https:', ''), '/' ,'')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 4, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "zookeepernode", + "minInstanceCount": 1, + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "edgenode", + "minInstanceCount": 1, + "targetInstanceCount": 1, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "sshuser", + "password": "GEN-PASSWORD" + } + } + } + ] + } + } + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1363 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1363 new file mode 100644 index 0000000..714352c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1363 @@ -0,0 +1,264 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-secure-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-secure-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962907175, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-secure-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-secure-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1363", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1363", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE-8" + }, + "clusterLoginUserName": { + "type": "string", + "defaultValue": "admin", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "defaultValue": "sshuser", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vNet": { + "name": "GEN-UNIQUE-8-vnet", + "addressSpacePrefix": "10.0.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.0.0.0/24", + "subnet": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8-vnet/subnet1" + }, + "networkSecurityGroup": { + "name": "GEN-UNIQUE-8-nsg" + }, + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "(networkSecurityGroup).name", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "properties": { + "securityRules": [ + { + "name": "Allow_HDInsight_Management_Traffic", + "properties": { + "description": "Allow traffic from the Azure health and management services to reach HDInsight", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "HDInsight", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + }, + { + "name": "Allow_Azure_Resolver_Traffic", + "properties": { + "description": "Allow access from Azure's recursive resolver", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "168.63.129.16", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 301, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet).name", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//(networkSecurityGroup).name" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet).subnetName", + "properties": { + "addressPrefix": "(vNet).subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/(networkSecurityGroup).name" + } + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name", + "Microsoft.Network/virtualNetworks/(vNet).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('defaultStorageAccount').name), '2019-06-01').primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-8", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet).name", + "subnet": "(vNet).subnet" + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/(vNet).name", + "subnet": "(vNet).subnet" + } + } + ] + } + } + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name))]" + }, + "vnet": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1364 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1364 new file mode 100644 index 0000000..3b19b7f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1364 @@ -0,0 +1,216 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962907183, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1364", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1364", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "208593930043773060" + } + }, + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "maxLength": 20, + "minLength": 2, + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The username must consist of digits, upper or lowercase letters, and/or the following special characters: (!#$%&'()-^_`{}~)." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "secureString", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "minLength": 2, + "metadata": { + "description": "These credentials can be used to remotely access the cluster. The sshUserName can only consit of digits, upper or lowercase letters, and/or the following special characters (%&'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved word" + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "secureString", + "maxLength": 72, + "minLength": 6, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "headNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "workerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.HDInsight/clusters", + "apiVersion": "2018-06-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "tier": "Standard", + "clusterDefinition": { + "kind": "spark", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', format('storage{0}', uniqueString(resourceGroup().id)))).primaryEndpoints.blob, 'https://', ''), '/', '')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', format('storage{0}', uniqueString(resourceGroup().id))), '2021-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + } + } + ] + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', format('storage{0}', uniqueString(resourceGroup().id)))]" + ] + } + ], + "outputs": { + "storage": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', format('storage{0}', uniqueString(resourceGroup().id))))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters', parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1365 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1365 new file mode 100644 index 0000000..bbf7bcb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1365 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962907192, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux-vnet/azuredeploy.json", + "/quickstarts/microsoft.hdinsight/hdinsight-spark-linux-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1365", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1365", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginUserName": { + "type": "string", + "defaultValue": "admin", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "minLength": 10, + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "defaultValue": "sshuser", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "minLength": 6, + "maxLength": 72, + "metadata": { + "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter. It must not contain any 3 consecutive characters from the cluster login name" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_E8_v3", + "allowedValues": [ + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E20_v3", + "Standard_E32_v3", + "Standard_E48_v3" + ], + "metadata": { + "description": "This is the workernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + }, + "vNet": { + "name": "GEN-UNIQUE-vnet", + "addressSpacePrefix": "10.0.0.0/16", + "subnetName": "subnet1", + "subnetPrefix": "10.0.0.0/24", + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet", + "subnet": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/subnet1" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet).name", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet).subnetName", + "properties": { + "addressPrefix": "(vNet).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.HDInsight/clusters", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//(defaultStorageAccount).name", + "Microsoft.Network/virtualNetworks//(vNet).name" + ], + "properties": { + "clusterVersion": "4.0", + "osType": "Linux", + "tier": "Standard", + "clusterDefinition": { + "kind": "spark", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "(vNet).id", + "subnet": "(vNet).subnet" + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_E8_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "(vNet).id", + "subnet": "(vNet).subnet" + } + } + ] + } + } + } + ], + "outputs": { + "vnet": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('vNet').name))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1366 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1366 new file mode 100644 index 0000000..ceda517 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1366 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.healthcareapis/azure-api-for-fhir/azuredeploy.json", + "/quickstarts/microsoft.healthcareapis/azure-api-for-fhir/azuredeploy.parameters.json" + ], + "timestamp": 1642962907199, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.healthcareapis/azure-api-for-fhir/azuredeploy.json", + "/quickstarts/microsoft.healthcareapis/azure-api-for-fhir/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1366", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.healthcareapis/services" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1366", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceName": { + "type": "string", + "metadata": { + "description": "The name of the service." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "eastus", + "eastus2", + "japaneast", + "northcentralus", + "northeurope", + "southcentralus", + "southeastasia", + "uksouth", + "ukwest", + "westcentralus", + "westeurope", + "westus2" + ], + "metadata": { + "description": "Location of Azure API for FHIR" + }, + "value": "westus2" + } + }, + "resources": [ + { + "type": "Microsoft.HealthcareApis/services", + "apiVersion": "2020-03-15", + "name": "GEN-UNIQUE", + "location": "westus2", + "kind": "fhir-R4", + "properties": { + "authenticationConfiguration": { + "audience": "https://GEN-UNIQUE.azurehealthcareapis.com", + "authority": "[uri(environment().authentication.loginEndpoint, subscription().tenantId)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1367 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1367 new file mode 100644 index 0000000..c1749f9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1367 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907207, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1367", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1367", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the log analitycs workspace." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Name of the log analitycs workspace." + }, + "value": "ws-data" + } + }, + "resources": [ + { + "type": "microsoft.operationalinsights/workspaces", + "apiVersion": "2020-10-01", + "name": "ws-data", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "pergb2018" + }, + "retentionInDays": 30, + "workspaceCapping": { + "dailyQuotaGb": -1 + }, + "publicNetworkAccessForIngestion": "Enabled", + "publicNetworkAccessForQuery": "Enabled" + } + } + ], + "outputs": { + "workspaceResourceId": { + "type": "string", + "value": "[resourceId('microsoft.operationalinsights/workspaces', parameters('workspaceName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1368 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1368 new file mode 100644 index 0000000..b79b991 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1368 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/azuredeploy.json", + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/azuredeploy.parameters.json" + ], + "timestamp": 1642962907216, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/azuredeploy.json", + "/quickstarts/microsoft.insights/datacollectionrule-create-syslog/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1368", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/datacollectionrules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1368", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dcrName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the data collection rule" + }, + "value": "MySyslogDcr" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for data collection rule" + } + }, + "workspaceResourceId": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Full Resource ID of the log analitycs workspace that will be used for data destination. For example /subscriptions/00000000-0000-0000-0000-0000-00000000/resourceGroups/ResourceGroupName/providers/Microsoft.operationalinsights/workspaces/ws_xyz" + }, + "value": "GET-PREREQ-workspaceResourceId" + } + }, + "resources": [ + { + "type": "Microsoft.Insights/dataCollectionRules", + "apiVersion": "2019-11-01-preview", + "name": "MySyslogDcr", + "location": "[resourceGroup().location]", + "kind": "Linux", + "properties": { + "dataSources": { + "syslog": [ + { + "streams": [ + "Microsoft-Syslog" + ], + "facilityNames": [ + "auth", + "authpriv", + "cron", + "daemon", + "mark", + "kern", + "local0", + "local1", + "local2", + "local3", + "local4", + "local5", + "local6", + "local7", + "lpr", + "mail", + "news", + "syslog", + "user", + "UUCP" + ], + "logLevels": [ + "Debug", + "Info", + "Notice", + "Warning", + "Error", + "Critical", + "Alert", + "Emergency" + ], + "name": "sysLogsDataSource" + } + ] + }, + "destinations": { + "logAnalytics": [ + { + "workspaceResourceId": "GET-PREREQ-workspaceResourceId", + "name": "la-data-destination" + } + ] + }, + "dataFlows": [ + { + "streams": [ + "Microsoft-Syslog" + ], + "destinations": [ + "la-data-destination" + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1369 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1369 new file mode 100644 index 0000000..907c7a4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1369 @@ -0,0 +1,165 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/insights-alertrules-application-insights/azuredeploy.json", + "/quickstarts/microsoft.insights/insights-alertrules-application-insights/azuredeploy.parameters.json" + ], + "timestamp": 1642962907222, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/insights-alertrules-application-insights/azuredeploy.json", + "/quickstarts/microsoft.insights/insights-alertrules-application-insights/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1369", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.insights/components", + "microsoft.insights/metricalerts", + "microsoft.insights/actiongroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1369", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "12341853913869812535" + } + }, + "parameters": { + "responseTimeThreshold": { + "type": "int", + "defaultValue": 3, + "maxValue": 10000, + "minValue": 1, + "metadata": { + "description": "Enter response time threshold in seconds." + } + }, + "workspaceName": { + "type": "string", + "defaultValue": "myWorkspace", + "metadata": { + "description": "Name of the workspace where the data will be stored." + }, + "value": "GEN-UNIQUE" + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "myApplicationInsights", + "metadata": { + "description": "Name of the application insights resource." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "responseAlertName": "[format('ResponseTime-{0}', toLower(parameters('applicationInsightsName')))]" + }, + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-10-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Free" + } + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web", + "WorkspaceResourceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "name": "[format('ResponseTime-{0}', toLower(parameters('applicationInsightsName')))]", + "location": "global", + "properties": { + "description": "Response time alert", + "severity": 0, + "enabled": true, + "scopes": [ + "Microsoft.Insights/components/GEN-UNIQUE" + ], + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "1st criterion", + "metricName": "requests/duration", + "operator": "GreaterThan", + "threshold": 3, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ] + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/emailActionGroup" + } + ] + }, + "dependsOn": [ + "Microsoft.Insights/components/GEN-UNIQUE", + "microsoft.insights/actionGroups/emailActionGroup" + ] + }, + { + "type": "microsoft.insights/actionGroups", + "apiVersion": "2019-06-01", + "name": "emailActionGroup", + "location": "global", + "properties": { + "groupShortName": "string", + "enabled": true, + "emailReceivers": [ + { + "name": "Example", + "emailAddress": "example@test.com", + "useCommonAlertSchema": true + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT137 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT137 new file mode 100644 index 0000000..17ea3c1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT137 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/empty-resources.json" + ], + "timestamp": 1642962887950, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/empty-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT137", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT137", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "subnet": { + "type": "object", + "defaultValue": {} + }, + "storageAccountName": { + "type": "string", + "defaultValue": "" + }, + "adminUsername": { + "type": "string", + "defaultValue": "" + }, + "authSet": { + "type": "object", + "defaultValue": {} + }, + "osSettings": { + "type": "object", + "defaultValue": {} + }, + "vmSize": { + "type": "string", + "defaultValue": "" + }, + "vmCount": { + "type": "int", + "defaultValue": 0 + }, + "lbBackendPools": { + "type": "object", + "defaultValue": {} + }, + "marvelNodesIpPrefix": { + "type": "string", + "defaultValue": "" + }, + "namespace": { + "type": "string", + "defaultValue": "" + } + }, + "variables": {}, + "resources": [], + "outputs": { + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + }, + "vmSize": { + "type": "string", + "value": "[parameters('vmSize')]" + }, + "vmCount": { + "type": "int", + "value": "[parameters('vmCount')]" + }, + "lbBackendPools": { + "type": "object", + "value": "[parameters('lbBackendPools')]" + }, + "marvelNodesIpPrefix": { + "type": "string", + "value": "[parameters('marvelNodesIpPrefix')]" + }, + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1370 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1370 new file mode 100644 index 0000000..055a8bc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1370 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/insights-alertrules-servicehealth/azuredeploy.json", + "/quickstarts/microsoft.insights/insights-alertrules-servicehealth/azuredeploy.parameters.json" + ], + "timestamp": 1642962907228, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/insights-alertrules-servicehealth/azuredeploy.json", + "/quickstarts/microsoft.insights/insights-alertrules-servicehealth/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1370", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.insights/actiongroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1370", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "alertName": { + "type": "string", + "metadata": { + "description": "Name of alert" + }, + "value": "ResolvedAlert" + }, + "status": { + "type": "string", + "defaultValue": "", + "allowedValues": [ + "Active", + "InProgress", + "Resolved" + ], + "metadata": { + "description": "Description of alert" + }, + "value": "Resolved" + }, + "emailAddress": { + "type": "string", + "defaultValue": "email@example.com", + "metadata": { + "description": "Email address where the alerts are sent." + }, + "value": "email@example.com" + }, + "emailName": { + "type": "string", + "defaultValue": "Example", + "metadata": { + "description": "Email address where the alerts are sent." + }, + "value": "Example" + } + }, + "resources": [ + { + "type": "Microsoft.Insights/activityLogAlerts", + "apiVersion": "2017-04-01", + "name": "ResolvedAlert", + "location": "global", + "properties": { + "enabled": true, + "scopes": [ + "[subscription().id]" + ], + "condition": { + "allOf": [ + { + "field": "category", + "equals": "ResourceHealth" + }, + { + "field": "status", + "equals": "Resolved" + } + ] + }, + "actions": { + "actionGroups": [ + { + "actionGroupId": "microsoft.insights/actionGroups/emailActionGroup" + } + ] + } + } + }, + { + "name": "emailActionGroup", + "type": "microsoft.insights/actionGroups", + "apiVersion": "2019-06-01", + "location": "global", + "properties": { + "groupShortName": "string", + "enabled": true, + "emailReceivers": [ + { + "name": "Example", + "emailAddress": "email@example.com", + "useCommonAlertSchema": true + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1371 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1371 new file mode 100644 index 0000000..3426127 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1371 @@ -0,0 +1,242 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/log-analytics-with-datasources-solutions/azuredeploy.json", + "/quickstarts/microsoft.insights/log-analytics-with-datasources-solutions/azuredeploy.parameters.json" + ], + "timestamp": 1642962907234, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/log-analytics-with-datasources-solutions/azuredeploy.json", + "/quickstarts/microsoft.insights/log-analytics-with-datasources-solutions/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1371", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/datasources", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.operationsmanagement/solutions", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1371", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "2709439563516393297" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the workspace" + } + }, + "name": { + "type": "string", + "metadata": { + "description": "Name of the workspace" + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "allowedValues": [ + "PerGB2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "metadata": { + "description": "Sku of the workspace" + }, + "value": "Standalone" + }, + "retentionInDays": { + "type": "int", + "maxValue": 730, + "minValue": 7, + "metadata": { + "description": "The workspace data retention in days. Allowed values are per pricing plan. See pricing tiers documentation for details." + }, + "value": 30 + }, + "solutions": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Solutions to add to workspace" + } + }, + "automationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of automation account to link to workspace" + } + }, + "dataSources": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Datasources to add to workspace" + } + }, + "enableDeleteLock": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable lock to prevent accidental deletion" + } + }, + "enableDiagnostics": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable diagnostic logs" + } + }, + "diagnosticStorageAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Storage account name. Only required if enableDiagnostics is set to true." + } + }, + "diagnosticStorageAccountResourceGroup": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Storage account resource group. Only required if enableDiagnostics is set to true." + } + } + }, + "functions": [], + "variables": { + "lockName": "[format('{0}-lck', parameters('name'))]", + "diagnosticsName": "[format('{0}-dgs', parameters('name'))]" + }, + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Standalone" + }, + "retentionInDays": 30 + } + }, + { + "copy": { + "name": "logAnalyticsSolutions", + "count": 23 + }, + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "name": "[format('{0}({1})', parameters('solutions')[copyIndex()].name, parameters('name'))]", + "location": "[resourceGroup().location]", + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + }, + "plan": { + "name": "[format('{0}({1})', parameters('solutions')[copyIndex()].name, parameters('name'))]", + "product": "solutions)[copyIndex(", + "publisher": "solutions)[copyIndex(", + "promotionCode": "solutions)[copyIndex(" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ] + }, + { + "condition": "[not(empty(parameters('automationAccountName')))]", + "type": "Microsoft.OperationalInsights/workspaces/linkedServices", + "apiVersion": "2020-08-01", + "name": "[format('{0}/{1}', parameters('name'), 'Automation')]", + "properties": { + "resourceId": "Microsoft.Automation/automationAccounts/ parameters('automationAccountName')" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ] + }, + { + "copy": { + "name": "logAnalyticsDataSource", + "count": 25 + }, + "type": "Microsoft.OperationalInsights/workspaces/dataSources", + "apiVersion": "2020-08-01", + "name": "[format('{0}/{1}', parameters('name'), parameters('dataSources')[copyIndex()].name)]", + "kind": "dataSources)[copyIndex(", + "properties": "dataSources)[copyIndex(", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ] + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2017-04-01", + "scope": "[format('Microsoft.OperationalInsights/workspaces/{0}', parameters('name'))]", + "name": "[format('{0}-lck', parameters('name'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ] + }, + { + "condition": false, + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.OperationalInsights/workspaces/{0}', parameters('name'))]", + "name": "[format('{0}-dgs', parameters('name'))]", + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "storageAccountId": "parameters('diagnosticStorageAccountResourceGroup')/Microsoft.Storage/storageAccounts/ parameters('diagnosticStorageAccountName')", + "logs": [ + { + "category": "Audit", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1372 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1372 new file mode 100644 index 0000000..ee4f9c4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1372 @@ -0,0 +1,156 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/log-analytics-with-solutions-and-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.insights/log-analytics-with-solutions-and-diagnostics/azuredeploy.parameters.json" + ], + "timestamp": 1642962907240, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/log-analytics-with-solutions-and-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.insights/log-analytics-with-solutions-and-diagnostics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1372", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1372", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "8192223282203489077" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "[format('la-{0}', uniqueString(resourceGroup().id))]" + } + }, + "functions": [], + "variables": { + "vmInsights": { + "name": "[format('VMInsights({0})', parameters('logAnalyticsWorkspaceName'))]", + "galleryName": "VMInsights" + }, + "containerInsights": { + "name": "[format('ContainerInsights({0})', parameters('logAnalyticsWorkspaceName'))]", + "galleryName": "ContainerInsights" + }, + "environmentName": "Production", + "costCenterName": "IT" + }, + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-03-01-preview", + "name": "[format('la-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "Environment": "Production", + "CostCenter": "IT" + }, + "properties": { + "retentionInDays": 30, + "features": { + "searchVersion": 1 + }, + "sku": { + "name": "PerGB2018" + } + } + }, + { + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "scope": "[format('Microsoft.OperationalInsights/workspaces/{0}', parameters('logAnalyticsWorkspaceName'))]", + "name": "diagnosticSettings", + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]", + "logs": [ + { + "category": "Audit", + "enabled": true, + "retentionPolicy": { + "days": 7, + "enabled": true + } + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true, + "retentionPolicy": { + "days": 7, + "enabled": true + } + } + ] + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "name": "(vmInsights).name", + "location": "[resourceGroup().location]", + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]" + }, + "plan": { + "name": "(vmInsights).name", + "publisher": "Microsoft", + "product": "[format('OMSGallery/{0}', variables('vmInsights').galleryName)]", + "promotionCode": "" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "name": "(containerInsights).name", + "location": "[resourceGroup().location]", + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]" + }, + "plan": { + "name": "(containerInsights).name", + "publisher": "Microsoft", + "product": "[format('OMSGallery/{0}', variables('containerInsights').galleryName)]", + "promotionCode": "" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1373 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1373 new file mode 100644 index 0000000..6c79ae6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1373 @@ -0,0 +1,312 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907247, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1373", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1373", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat(parameters('vmName'),'-', uniqueString(resourceGroup().id, parameters('vmName'))))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "publicIpName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name for the Public IP used to access the Virtual Machine." + } + }, + "publicIPAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Allocation method for the Public IP used to access the Virtual Machine." + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "SKU for the Public IP used to access the Virtual Machine." + } + }, + "OSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Nano-Server", + "2016-Datacenter-with-Containers", + "2016-Datacenter", + "2019-Datacenter", + "2019-Datacenter-Core", + "2019-Datacenter-Core-smalldisk", + "2019-Datacenter-Core-with-Containers", + "2019-Datacenter-Core-with-Containers-smalldisk", + "2019-Datacenter-smalldisk", + "2019-Datacenter-with-Containers", + "2019-Datacenter-with-Containers-smalldisk" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmName": { + "type": "string", + "defaultValue": "simple-vm", + "metadata": { + "description": "Name of the virtual machine." + } + } + }, + "variables": { + "storageAccountName": "[concat('bootdiags', uniquestring(resourceGroup().id))]", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "publicIPName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIPName", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "simple-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "simple-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + } + ], + "outputs": { + "virtualMachineResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1374 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1374 new file mode 100644 index 0000000..f8351e9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1374 @@ -0,0 +1,211 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/azuredeploy.parameters.json" + ], + "timestamp": 1642962907253, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-dynamic-metric-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1374", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/metricalerts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1374", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "alertName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the alert" + }, + "value": "New Metric Alert with Dynamic Thresholds" + }, + "alertDescription": { + "type": "string", + "defaultValue": "This is a metric alert", + "metadata": { + "description": "Description of alert" + } + }, + "alertSeverity": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 0, + 1, + 2, + 3, + 4 + ], + "metadata": { + "description": "Severity of alert {0,1,2,3,4}" + } + }, + "isEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether the alert is enabled" + } + }, + "resourceId": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Full Resource ID of the resource emitting the metric that will be used for the comparison. For example /subscriptions/00000000-0000-0000-0000-0000-00000000/resourceGroups/ResourceGroupName/providers/Microsoft.compute/virtualMachines/VM_xyz" + }, + "value": "GET-PREREQ-virtualMachineResourceId" + }, + "metricName": { + "type": "string", + "defaultValue": "Percentage CPU", + "minLength": 1, + "metadata": { + "description": "Name of the metric used in the comparison to activate the alert." + } + }, + "operator": { + "type": "string", + "defaultValue": "GreaterOrLessThan", + "allowedValues": [ + "GreaterThan", + "LessThan", + "GreaterOrLessThan" + ], + "metadata": { + "description": "Operator comparing the current value with the threshold value." + } + }, + "alertSensitivity": { + "type": "string", + "defaultValue": "Medium", + "allowedValues": [ + "High", + "Medium", + "Low" + ], + "metadata": { + "description": "Tunes how 'noisy' the Dynamic Thresholds alerts will be: 'High' will result in more alerts while 'Low' will result in fewer alerts." + } + }, + "numberOfEvaluationPeriods": { + "type": "string", + "defaultValue": "4", + "metadata": { + "description": "The number of periods to check in the alert evaluation." + } + }, + "minFailingPeriodsToAlert": { + "type": "string", + "defaultValue": "3", + "metadata": { + "description": "The number of unhealthy periods to alert on (must be lower or equal to numberOfEvaluationPeriods)." + } + }, + "ignoreDataBefore": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use this option to set the date from which to start learning the metric historical data and calculate the dynamic thresholds (in ISO8601 format, e.g. '2019-12-31T22:00:00Z')." + } + }, + "timeAggregation": { + "type": "string", + "defaultValue": "Average", + "allowedValues": [ + "Average", + "Minimum", + "Maximum", + "Total", + "Count" + ], + "metadata": { + "description": "How the data that is collected should be combined over time." + } + }, + "windowSize": { + "type": "string", + "defaultValue": "PT5M", + "allowedValues": [ + "PT5M", + "PT15M", + "PT30M", + "PT1H" + ], + "metadata": { + "description": "Period of time used to monitor alert activity based on the threshold. Must be between five minutes and one hour. ISO 8601 duration format." + } + }, + "evaluationFrequency": { + "type": "string", + "defaultValue": "PT5M", + "allowedValues": [ + "PT5M", + "PT15M", + "PT30M", + "PT1H" + ], + "metadata": { + "description": "how often the metric alert is evaluated represented in ISO 8601 duration format" + } + } + }, + "variables": {}, + "resources": [ + { + "name": "New Metric Alert with Dynamic Thresholds", + "type": "Microsoft.Insights/metricAlerts", + "location": "global", + "apiVersion": "2018-03-01", + "properties": { + "description": "This is a metric alert", + "severity": 3, + "enabled": true, + "scopes": [ + "GET-PREREQ-virtualMachineResourceId" + ], + "evaluationFrequency": "PT5M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria", + "allOf": [ + { + "criterionType": "DynamicThresholdCriterion", + "name": "1st criterion", + "metricName": "Percentage CPU", + "operator": "GreaterOrLessThan", + "alertSensitivity": "Medium", + "failingPeriods": { + "numberOfEvaluationPeriods": "4", + "minFailingPeriodsToAlert": "3" + }, + "ignoreDataBefore": "", + "timeAggregation": "Average" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1375 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1375 new file mode 100644 index 0000000..a988143 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1375 @@ -0,0 +1,312 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907260, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1375", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1375", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat(parameters('vmName'),'-', uniqueString(resourceGroup().id, parameters('vmName'))))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "publicIpName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name for the Public IP used to access the Virtual Machine." + } + }, + "publicIPAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Allocation method for the Public IP used to access the Virtual Machine." + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "SKU for the Public IP used to access the Virtual Machine." + } + }, + "OSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Nano-Server", + "2016-Datacenter-with-Containers", + "2016-Datacenter", + "2019-Datacenter", + "2019-Datacenter-Core", + "2019-Datacenter-Core-smalldisk", + "2019-Datacenter-Core-with-Containers", + "2019-Datacenter-Core-with-Containers-smalldisk", + "2019-Datacenter-smalldisk", + "2019-Datacenter-with-Containers", + "2019-Datacenter-with-Containers-smalldisk" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmName": { + "type": "string", + "defaultValue": "simple-vm", + "metadata": { + "description": "Name of the virtual machine." + } + } + }, + "variables": { + "storageAccountName": "[concat('bootdiags', uniquestring(resourceGroup().id))]", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "publicIPName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIPName", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "simple-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "simple-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + } + ], + "outputs": { + "virtualMachineResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1376 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1376 new file mode 100644 index 0000000..15b08ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1376 @@ -0,0 +1,187 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/azuredeploy.parameters.json" + ], + "timestamp": 1642962907267, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-static-metric-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1376", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/metricalerts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1376", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "alertName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the alert" + }, + "value": "New Metric Alert" + }, + "alertDescription": { + "type": "string", + "defaultValue": "This is a metric alert", + "metadata": { + "description": "Description of alert" + } + }, + "alertSeverity": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 0, + 1, + 2, + 3, + 4 + ], + "metadata": { + "description": "Severity of alert {0,1,2,3,4}" + } + }, + "isEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether the alert is enabled" + } + }, + "resourceId": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Full Resource ID of the resource emitting the metric that will be used for the comparison. For example /subscriptions/00000000-0000-0000-0000-0000-00000000/resourceGroups/ResourceGroupName/providers/Microsoft.compute/virtualMachines/VM_xyz" + }, + "value": "GET-PREREQ-virtualMachineResourceId" + }, + "metricName": { + "type": "string", + "defaultValue": "Percentage CPU", + "minLength": 1, + "metadata": { + "description": "Name of the metric used in the comparison to activate the alert." + } + }, + "operator": { + "type": "string", + "defaultValue": "GreaterThan", + "allowedValues": [ + "Equals", + "NotEquals", + "GreaterThan", + "GreaterThanOrEqual", + "LessThan", + "LessThanOrEqual" + ], + "metadata": { + "description": "Operator comparing the current value with the threshold value." + } + }, + "threshold": { + "type": "string", + "defaultValue": "0", + "metadata": { + "description": "The threshold value at which the alert is activated." + } + }, + "timeAggregation": { + "type": "string", + "defaultValue": "Average", + "allowedValues": [ + "Average", + "Minimum", + "Maximum", + "Total", + "Count" + ], + "metadata": { + "description": "How the data that is collected should be combined over time." + } + }, + "windowSize": { + "type": "string", + "defaultValue": "PT5M", + "allowedValues": [ + "PT1M", + "PT5M", + "PT15M", + "PT30M", + "PT1H", + "PT6H", + "PT12H", + "PT24H" + ], + "metadata": { + "description": "Period of time used to monitor alert activity based on the threshold. Must be between one minute and one day. ISO 8601 duration format." + } + }, + "evaluationFrequency": { + "type": "string", + "defaultValue": "PT1M", + "allowedValues": [ + "PT1M", + "PT5M", + "PT15M", + "PT30M", + "PT1H" + ], + "metadata": { + "description": "how often the metric alert is evaluated represented in ISO 8601 duration format" + } + } + }, + "variables": {}, + "resources": [ + { + "name": "New Metric Alert", + "type": "Microsoft.Insights/metricAlerts", + "location": "global", + "apiVersion": "2018-03-01", + "properties": { + "description": "This is a metric alert", + "severity": 3, + "enabled": true, + "scopes": [ + "GET-PREREQ-virtualMachineResourceId" + ], + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "1st criterion", + "metricName": "Percentage CPU", + "operator": "GreaterThan", + "threshold": "0", + "timeAggregation": "Average" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1377 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1377 new file mode 100644 index 0000000..60ba20b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1377 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-webtest-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-webtest-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907275, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.insights/monitoring-webtest-metric-alert/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.insights/monitoring-webtest-metric-alert/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1377", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1377", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Name of Application Insights resource." + }, + "value": "new_app_insights_resource" + }, + "type": { + "type": "string", + "defaultValue": "web", + "metadata": { + "description": "Type of app you are deploying. This field is for legacy reasons and will not impact the type of App Insights resource you deploy." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "requestSource": { + "type": "string", + "defaultValue": "CustomDeployment", + "metadata": { + "description": "Source of Azure Resource Manager deployment" + } + } + }, + "resources": [ + { + "name": "new_app_insights_resource", + "type": "microsoft.insights/components", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02", + "properties": { + "ApplicationId": "new_app_insights_resource", + "Application_Type": "web", + "Flow_Type": "Redfield", + "Request_Source": "CustomDeployment" + } + } + ], + "outputs": { + "appName": { + "type": "string", + "value": "[parameters('name')]" + }, + "appInsightsResource": { + "type": "string", + "value": "[resourceId('microsoft.insights/components', parameters('name'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1378 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1378 new file mode 100644 index 0000000..8ddb6b5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1378 @@ -0,0 +1,185 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962907284, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1378", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1378", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "9483075037702199064" + } + }, + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "skuName": { + "type": "string", + "defaultValue": "standard", + "allowedValues": [ + "standard", + "premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "secretName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the secret that you want to create." + }, + "value": "GEN-UNIQUE" + }, + "secretValue": { + "type": "secureString", + "metadata": { + "description": "Specifies the value of the secret that you want to create." + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "list" + ], + "secrets": [ + "list" + ] + } + } + ], + "sku": { + "name": "standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2021-04-01-preview", + "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]", + "properties": { + "value": "GEN-UNIQUE" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1379 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1379 new file mode 100644 index 0000000..c655541 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1379 @@ -0,0 +1,204 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-create-rbac/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-create-rbac/azuredeploy.parameters.json" + ], + "timestamp": 1642962907294, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-create-rbac/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-create-rbac/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1379", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.authorization/roleassignments", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1379", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "6107638706522727336" + } + }, + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + }, + "skuName": { + "type": "string", + "defaultValue": "standard", + "allowedValues": [ + "standard", + "premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "roleName": { + "type": "string", + "defaultValue": "Key Vault Secrets User", + "allowedValues": [ + "Key Vault Administrator", + "Key Vault Certificates Officer", + "Key Vault Crypto Officer", + "Key Vault Crypto Service Encryption User", + "Key Vault Crypto User", + "Key Vault Reader", + "Key Vault Secrets Officer", + "Key Vault Secrets User" + ], + "metadata": { + "description": "Specifies the role the user will get with the secret in the vault. Valid values are: Key Vault Administrator, Key Vault Certificates Officer, Key Vault Crypto Officer, Key Vault Crypto Service Encryption User, Key Vault Crypto User, Key Vault Reader, Key Vault Secrets Officer, Key Vault Secrets User." + } + }, + "secretName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the secret that you want to create." + }, + "value": "GEN-UNIQUE" + }, + "secretValue": { + "type": "secureString", + "metadata": { + "description": "Specifies the value of the secret that you want to create." + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "variables": { + "roleIdMapping": { + "Key Vault Administrator": "00482a5a-887f-4fb3-b363-3b7fe8e74483", + "Key Vault Certificates Officer": "a4417e6f-fecd-4de8-b567-7b0420556985", + "Key Vault Crypto Officer": "14b46e9e-c2b7-41b4-b07b-48a6ebf60603", + "Key Vault Crypto Service Encryption User": "e147488a-f6f5-4113-8e2d-b22465e65bf6", + "Key Vault Crypto User": "12338af0-0e69-4776-bea7-57ae8d297424", + "Key Vault Reader": "21090545-7ca7-4776-b22c-e363652d74d2", + "Key Vault Secrets Officer": "b86a8fe4-44ce-4948-aee5-eccb2c155cd7", + "Key Vault Secrets User": "4633458b-17de-408a-b874-0445c86b69e6" + } + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "enableRbacAuthorization": true, + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2021-04-01-preview", + "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]", + "properties": { + "value": "GEN-UNIQUE" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.KeyVault/vaults/{0}', parameters('keyVaultName'))]", + "name": "[guid(variables('roleIdMapping')[parameters('roleName')], parameters('objectId'), resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName')))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleIdMapping')[parameters('roleName')])]", + "principalId": "GEN-AZUREAD-OBJECTID", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ] + } + ], + "outputs": { + "secretUri": { + "type": "string", + "value": "[reference(resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), parameters('secretName'))).secretUriWithVersion]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT138 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT138 new file mode 100644 index 0000000..75bcf1c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT138 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/jumpbox-resources.json" + ], + "timestamp": 1642962888063, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/jumpbox-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT138", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT138", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespace": { + "type": "string", + "defaultValue": "jumpbox", + "metadata": { + "description": "The namespace prefix for resources created by this template" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "Subnet object for provisioning resources in (expects properties name as the subnet name, and vnet as the virtual network name on the object)" + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Existing Storage Account where the Virtual Machine's disks will be placed" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "Elasticsearch deployment platform settings" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1380 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1380 new file mode 100644 index 0000000..9db8dfb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1380 @@ -0,0 +1,1317 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-private-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962907302, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1380", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.keyvault/vaults/secrets", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1380", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all the resources." + } + }, + "virtualNetworkName": { + "defaultValue": "UbuntuVnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network hosting the virtual machine." + } + }, + "virtualNetworkAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the virtual network hosting the virtual machine." + } + }, + "subnetName": { + "defaultValue": "DefaultSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the virtual machine." + } + }, + "subnetAddressPrefix": { + "defaultValue": "10.0.0.0/24", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the virtual machine." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('boot', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS", + "Premium_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ], + "metadata": { + "description": "Defines the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "The size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Specifies the base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Specifies the sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "scriptFileName": { + "type": "string", + "defaultValue": "test-key-vault-private-endpoint.sh", + "metadata": { + "description": "Specifies the script to download from the URI specified by the scriptFilePath parameter." + } + }, + "deployLogAnalytics": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to deploy a Log Analytics workspace to monitor the health and performance of the virtual machine." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the globally unique name of the Log Analytics workspace." + }, + "value": "GEN-UNIQUE" + }, + "workspaceSku": { + "type": "string", + "allowedValues": [ + "PerGB2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "defaultValue": "PerGB2018", + "metadata": { + "description": "Specifies the SKU of the Log Analytics workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('vault', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the key vault." + } + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": true, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": true, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": true, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "enableSoftDelete": { + "type": "bool", + "defaultValue": true, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether the 'soft delete' functionality is enabled for this key vault. If it's not set to any value(true or false) when creating new key vault, it will be set to true by default. Once set to true, it cannot be reverted to false." + } + }, + "softDeleteRetentionInDays": { + "type": "int", + "defaultValue": 90, + "metadata": { + "description": "Specifies the softDelete data retention days. It accepts >=7 and <=90." + } + }, + "enableRbacAuthorization": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Controls how data actions are authorized. When true, the key vault will use Role Based Access Control (RBAC) for authorization of data actions, and the access policies specified in vault properties will be ignored (warning: this is a preview feature). When false, the key vault will use the access policies specified in vault properties, and any policy stored on Azure Resource Manager will be ignored. If null or not specified, the vault is created with the default value of false. Note that management actions are always authorized with RBAC." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "get", + "create", + "delete", + "list", + "update", + "import", + "backup", + "restore", + "recover" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "get", + "list", + "set", + "delete", + "backup", + "restore", + "recover" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "certificatesPermissions": { + "type": "array", + "defaultValue": [ + "get", + "list", + "delete", + "create", + "import", + "update", + "managecontacts", + "getissuers", + "listissuers", + "setissuers", + "deleteissuers", + "manageissuers", + "backup", + "recover" + ], + "metadata": { + "description": "Specifies the permissions to certificates in the vault. Valid values are: all, get, list, set, delete, managecontacts, getissuers, listissuers, setissuers, deleteissuers, manageissuers, backup, and recover." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "secretsArray": { + "type": "array", + "defaultValue": [ + { + "secretName": "secret1", + "secretValue": "value1" + }, + { + "secretName": "secret2", + "secretValue": "value2" + }, + { + "secretName": "secret3", + "secretValue": "value3" + } + ], + "metadata": { + "description": "Specifies all secrets {\"secretName\":\"\",\"secretValue\":\"\"} wrapped in a secure object." + } + }, + "keyVaultPrivateEndpointName": { + "type": "string", + "defaultValue": "KeyVaultPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to key vault." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + } + }, + "variables": { + "nicName": "TestVmNic", + "nsgName": "DefaultSubnetNsg", + "publicIPAddressName": "TestVmPublicIp", + "publicIPAddressType": "Dynamic", + "workspaceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet", + "publicIpId": "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "nicId": "Microsoft.Network/networkInterfaces/TestVmNic", + "vnetId": "Microsoft.Network/virtualNetworks/UbuntuVnet", + "nsgId": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg", + "vmId": "Microsoft.Compute/virtualMachines/TestVm", + "customScriptId": "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "omsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "keyVaultId": "Microsoft.KeyVault/vaults/[concat('vault', uniqueString(resourceGroup().id))]", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "keyVaultPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "blobPublicDNSZoneForwarder": "[concat('.blob.', environment().suffixes.storage)]", + "keyVaultPrivateDnsZoneName": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "blobPrivateDnsZoneName": "[concat('privatelink', variables('blobPublicDNSZoneForwarder'))]", + "keyVaultPrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "keyVaultServiceEndpoint": "[concat(parameters('keyVaultName'), environment().suffixes.keyvaultDns)]", + "blobServicePrimaryEndpoint": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]", + "keyVaultPrivateEndpointId": "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "keyVaultPrivateEndpointGroupName": "vault", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "azureEnvironment": "[environment().name]", + "keyVaultPrivateDnsZoneGroupName": "KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup", + "blobPrivateDnsZoneGroupName": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup", + "keyVaultPrivateDnsZoneGroupId": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup" + }, + "resources": [ + { + "apiVersion": "2019-09-01", + "type": "Microsoft.KeyVault/vaults", + "name": "[concat('vault', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm" + ], + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "Standard", + "family": "A" + }, + "enabledForDeployment": true, + "enabledForTemplateDeployment": true, + "enabledForDiskEncryption": true, + "enableSoftDelete": true, + "softDeleteRetentionInDays": 90, + "enableRbacAuthorization": false, + "accessPolicies": [ + { + "tenantId": "[subscription().tenantId]", + "objectId": "[reference(variables('vmId'), '2019-12-01', 'Full').identity.principalId]", + "permissions": { + "keys": [ + "get", + "create", + "delete", + "list", + "update", + "import", + "backup", + "restore", + "recover" + ], + "secrets": [ + "get", + "list", + "set", + "delete", + "backup", + "restore", + "recover" + ], + "certificates": [ + "get", + "list", + "delete", + "create", + "import", + "update", + "managecontacts", + "getissuers", + "listissuers", + "setissuers", + "deleteissuers", + "manageissuers", + "backup", + "recover" + ] + } + } + ] + } + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.KeyVault/vaults/secrets", + "name": "[concat(parameters('keyVaultName'), '/', parameters('secretsArray')[copyIndex()].secretName)]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('vault', uniqueString(resourceGroup().id))]" + ], + "properties": { + "value": "secretsArray)[copyIndex(" + } + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.KeyVault/vaults/secrets", + "name": "[concat(parameters('keyVaultName'), '/', parameters('secretsArray')[copyIndex()].secretName)]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('vault', uniqueString(resourceGroup().id))]" + ], + "properties": { + "value": "secretsArray)[copyIndex(" + } + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.KeyVault/vaults/secrets", + "name": "[concat(parameters('keyVaultName'), '/', parameters('secretsArray')[copyIndex()].secretName)]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('vault', uniqueString(resourceGroup().id))]" + ], + "properties": { + "value": "secretsArray)[copyIndex(" + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('boot', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "TestVmPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(toLower(parameters('vmName')), uniquestring(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "DefaultSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "UbuntuVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TestVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "Microsoft.Network/virtualNetworks/UbuntuVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/TestVmPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "TestVm", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "Microsoft.Network/networkInterfaces/TestVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "TestVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 100, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 10, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('vmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TestVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/CustomScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.KeyVault/vaults/[concat('vault', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint", + "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', parameters('scriptFileName'), ' ', variables('keyVaultServiceEndpoint'), ' ', variables('blobServicePrimaryEndpoint'), ' ', variables('azureEnvironment'))]" + } + } + }, + { + "condition": true, + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "condition": true, + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "condition": true, + "apiVersion": "2020-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + } + }, + "resources": [ + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "Kern", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "kern", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "Syslog", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "syslog", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "User", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "user", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SampleSyslogCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslogCollection", + "properties": { + "state": "Enabled" + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "DiskPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Used Inodes" + }, + { + "counterName": "Free Megabytes" + }, + { + "counterName": "% Used Space" + }, + { + "counterName": "Disk Transfers/sec" + }, + { + "counterName": "Disk Reads/sec" + }, + { + "counterName": "Disk Writes/sec" + }, + { + "counterName": "Disk Read Bytes/sec" + }, + { + "counterName": "Disk Write Bytes/sec" + } + ], + "objectName": "Logical Disk", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "ProcessorPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Processor Time" + }, + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "% IO Wait Time" + }, + { + "counterName": "% Idle Time" + }, + { + "counterName": "% Interrupt Time" + } + ], + "objectName": "Processor", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "ProcessPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "Used Memory" + }, + { + "counterName": "Virtual Shared Memory" + } + ], + "objectName": "Process", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SystemPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Processes" + } + ], + "objectName": "System", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "NetworkPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Total Bytes Transmitted" + }, + { + "counterName": "Total Bytes Received" + }, + { + "counterName": "Total Bytes" + }, + { + "counterName": "Total Packets Transmitted" + }, + { + "counterName": "Total Packets Received" + }, + { + "counterName": "Total Rx Errors" + }, + { + "counterName": "Total Tx Errors" + }, + { + "counterName": "Total Collisions" + } + ], + "objectName": "Network", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "MemorydataSources", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Available MBytes Memory" + }, + { + "counterName": "% Available Memory" + }, + { + "counterName": "Used Memory MBytes" + }, + { + "counterName": "% Used Memory" + } + ], + "objectName": "Memory", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SampleLinuxPerfCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceCollection", + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('keyVaultPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "Microsoft.Network/virtualNetworks/UbuntuVnet" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('blobPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('vnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "KeyVaultPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.KeyVault/vaults/[concat('vault', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "KeyVaultPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.KeyVault/vaults/[concat('vault', uniqueString(resourceGroup().id))]", + "groupIds": [ + "vault" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat('vault', uniqueString(resourceGroup().id))][if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('vault', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ], + "outputs": { + "keyVaultPrivateEndpoint": { + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', parameters('keyVaultPrivateEndpointName')), '2020-04-01', 'Full')]", + "type": "object" + }, + "blobStorageAccountPrivateEndpoint": { + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', parameters('blobStorageAccountPrivateEndpointName')), '2020-04-01', 'Full')]", + "type": "object" + }, + "keyVault": { + "value": "[reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName')), '2019-09-01', 'Full')]", + "type": "object" + }, + "blobStorageAccount": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('blobStorageAccountName')), '2019-06-01', 'Full')]", + "type": "object" + }, + "adminUsername": { + "value": "[parameters('adminUsername')]", + "type": "string" + }, + "workspaceName": { + "value": "[parameters('workspaceName')]", + "type": "string" + }, + "scriptFileUri": { + "value": "[variables('scriptFileUri')]", + "type": "string" + }, + "environment": { + "value": "[environment()]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1381 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1381 new file mode 100644 index 0000000..3946295 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1381 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-secret-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-secret-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962907314, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-secret-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-secret-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1381", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1381", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "5501251910940394095" + } + }, + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "skuName": { + "type": "string", + "defaultValue": "standard", + "allowedValues": [ + "standard", + "premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "secretsObject": { + "type": "secureObject", + "metadata": { + "description": "Specifies all secrets {\"secretName\":\"\",\"secretValue\":\"\"} wrapped in a secure object." + }, + "value": { + "secrets": [ + { + "secretName": "exampleSecret1", + "secretValue": "secretVaule1" + }, + { + "secretName": "exampleSecret2", + "secretValue": "secretValue2" + } + ] + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "enabledForDeployment": false, + "enabledForTemplateDeployment": false, + "enabledForDiskEncryption": false, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "list" + ], + "secrets": [ + "list" + ] + } + } + ], + "sku": { + "name": "standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2021-04-01-preview", + "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretsObject').secrets[copyIndex()].secretName)]", + "properties": { + "value": "secretsObject).secrets[copyIndex(" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2021-04-01-preview", + "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretsObject').secrets[copyIndex()].secretName)]", + "properties": { + "value": "secretsObject).secrets[copyIndex(" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1382 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1382 new file mode 100644 index 0000000..064de4b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1382 @@ -0,0 +1,65 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/nested/sqlserver.json" + ], + "timestamp": 1642962907322, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/nested/sqlserver.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1382", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1382", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminLogin": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "location": { + "type": "string" + } + }, + "variables": { + "sqlServerName": "[concat('sql-', uniqueString(resourceGroup().id, 'sql'))]" + }, + "resources": [ + { + "name": "[variables('sqlServerName')]", + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-11-01-preview", + "location": "location", + "properties": { + "administratorLogin": "adminLogin", + "administratorLoginPassword": "adminPassword" + } + } + ], + "outputs": { + "sqlFQDN": { + "type": "string", + "value": "[reference(variables('sqlServerName')).fullyQualifiedDomainName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1383 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1383 new file mode 100644 index 0000000..8a99795 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1383 @@ -0,0 +1,123 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/azuredeploy.parameters.json" + ], + "timestamp": 1642962907331, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-use-dynamic-id/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1383", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1383", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location where the resources will be deployed." + } + }, + "vaultName": { + "type": "string", + "metadata": { + "description": "The name of the keyvault that contains the secret." + }, + "value": "GEN-KEYVAULT-NAME" + }, + "secretName": { + "type": "string", + "metadata": { + "description": "The name of the secret." + }, + "value": "GEN-KEYVAULT-PASSWORD-SECRET-NAME" + }, + "vaultResourceGroupName": { + "type": "string", + "metadata": { + "description": "The name of the resource group that contains the keyvault." + }, + "value": "GEN-KEYVAULT-RESOURCEGROUP-NAME" + }, + "vaultSubscription": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "The name of the subscription that contains the keyvault." + }, + "value": "GEN-KEYVAULT-SUBSCRIPTION-ID" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "dynamicSecret", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('./nested/sqlserver.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "adminLogin": { + "value": "ghuser" + }, + "adminPassword": { + "reference": { + "keyVault": { + "id": "GEN-KEYVAULT-SUBSCRIPTION-ID/GEN-KEYVAULT-RESOURCEGROUP-NAME/Microsoft.KeyVault/vaults/GEN-KEYVAULT-NAME" + }, + "secretName": "GEN-KEYVAULT-PASSWORD-SECRET-NAME" + } + } + } + } + } + ], + "outputs": { + "sqlFQDN": { + "type": "string", + "value": "[reference('dynamicSecret').outputs.sqlFQDN.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1384 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1384 new file mode 100644 index 0000000..f0ead49 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1384 @@ -0,0 +1,211 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-with-logging-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-with-logging-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962907338, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/key-vault-with-logging-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/key-vault-with-logging-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1384", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1384", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "14128899252285887828" + } + }, + "parameters": { + "keyVaultName": { + "type": "string", + "defaultValue": "[format('kv-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the key vault." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "all" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "all" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "vaultSku": { + "type": "string", + "defaultValue": "standard", + "allowedValues": [ + "standard", + "premium" + ], + "metadata": { + "description": "Specifies the SKU for the key vault" + } + }, + "logsRetentionInDays": { + "type": "int", + "defaultValue": 0, + "maxValue": 365, + "minValue": 0, + "metadata": { + "description": "Specifies the number of days that logs are gonna be kept. If you do not want to apply any retention policy and retain data forever, set value to 0." + } + }, + "protectWithLocks": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the resources should be locked to prevent deletion." + } + } + }, + "functions": [], + "variables": { + "diagnosticStorageAccountName": "[format('diagst{0}', uniqueString(subscription().id, resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "[format('kv-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Key Vault with logging" + }, + "properties": { + "sku": { + "name": "standard", + "family": "A" + }, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "all" + ], + "secrets": [ + "all" + ] + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-06-01", + "name": "[format('diagst{0}', uniqueString(subscription().id, resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "tags": { + "displayName": "[format('Key Vault {0} diagnostics storage account', parameters('keyVaultName'))]" + } + }, + { + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.KeyVault/vaults/{0}', parameters('keyVaultName'))]", + "name": "service", + "properties": { + "storageAccountId": "Microsoft.Storage/storageAccounts/[format('diagst{0}', uniqueString(subscription().id, resourceGroup().id))]", + "logs": [ + { + "category": "AuditEvent", + "enabled": true, + "retentionPolicy": { + "enabled": true, + "days": 0 + } + } + ] + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/[format('kv-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[format('diagst{0}', uniqueString(subscription().id, resourceGroup().id))]" + ] + }, + { + "condition": true, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2017-04-01", + "scope": "[format('Microsoft.KeyVault/vaults/{0}', parameters('keyVaultName'))]", + "name": "keyVaultDoNotDelete", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/[format('kv-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "condition": true, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2017-04-01", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', variables('diagnosticStorageAccountName'))]", + "name": "storageDoNotDelete", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('diagst{0}', uniqueString(subscription().id, resourceGroup().id))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1385 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1385 new file mode 100644 index 0000000..43390fd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1385 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907345, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1385", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1385", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object Id of the AD user. Get using Get-AzureRmADUser or Get-AzureRmADServicePrincipal cmdlets." + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Permissions to keys in the vault. Valid values are: all, create, import, update, get, list, delete, backup, restore, encrypt, decrypt, wrapkey, unwrapkey, sign, and verify." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies the SKU for the key vault." + } + } + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "name": "GEN-UNIQUE", + "apiVersion": "2019-09-01", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "tenantId": "[subscription().tenantId]", + "objectId": "GEN-AZUREAD-OBJECTID", + "permissions": { + "keys": [ + "list" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + } + } + } + ], + "outputs": { + "keyVaultName": { + "type": "string", + "value": "[parameters('keyVaultName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1386 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1386 new file mode 100644 index 0000000..dd21443 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1386 @@ -0,0 +1,87 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/azuredeploy.json", + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/azuredeploy.parameters.json" + ], + "timestamp": 1642962907353, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/azuredeploy.json", + "/quickstarts/microsoft.keyvault/keyvault-add-access-policy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1386", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/accesspolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1386", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GET-PREREQ-keyVaultName" + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + } + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "name": "GET-PREREQ-keyVaultName/add", + "apiVersion": "2019-09-01", + "properties": { + "accessPolicies": [ + { + "tenantId": "[subscription().tenantId]", + "objectId": "GEN-AZUREAD-OBJECTID", + "permissions": { + "secrets": [ + "list" + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1387 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1387 new file mode 100644 index 0000000..e414a3d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1387 @@ -0,0 +1,110 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.keyvault/managed-hsm-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/managed-hsm-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962907359, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.keyvault/managed-hsm-create/azuredeploy.json", + "/quickstarts/microsoft.keyvault/managed-hsm-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1387", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/managedhsms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1387", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "8316669892710789539" + } + }, + "parameters": { + "managedHSMName": { + "type": "string", + "metadata": { + "description": "String specifying the name of the managed HSM." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "String specifying the Azure location where the managed HSM should be created." + } + }, + "initialAdminObjectIds": { + "type": "array", + "metadata": { + "description": "Array specifying the objectIDs associated with a list of initial administrators." + }, + "value": [ + "GEN-AZUREAD-OBJECTID" + ] + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "String specifying the Azure Active Directory tenant ID that should be used for authenticating requests to the managed HSM." + } + }, + "softRetentionInDays": { + "type": "int", + "defaultValue": 7, + "maxValue": 90, + "minValue": 7, + "metadata": { + "description": "Specifies the number of days that managed Key Vault will be kept recoverable if deleted. If you do not want to have soft delete enabled, set value to 0." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.KeyVault/managedHSMs", + "apiVersion": "2021-04-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_B1", + "family": "B" + }, + "properties": { + "enableSoftDelete": "[greater(parameters('softRetentionInDays'), 0)]", + "softDeleteRetentionInDays": "[if(equals(parameters('softRetentionInDays'), 0), null(), parameters('softRetentionInDays'))]", + "enablePurgeProtection": false, + "tenantId": "[subscription().tenantId]", + "initialAdminObjectIds": [ + "GEN-AZUREAD-OBJECTID" + ], + "publicNetworkAccess": "Enabled", + "networkAcls": { + "bypass": "None", + "defaultAction": "Allow" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1388 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1388 new file mode 100644 index 0000000..2cd5483 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1388 @@ -0,0 +1,146 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.kubernetes/aks/azuredeploy.json", + "/quickstarts/microsoft.kubernetes/aks/azuredeploy.parameters.json" + ], + "timestamp": 1642962907367, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.kubernetes/aks/azuredeploy.json", + "/quickstarts/microsoft.kubernetes/aks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1388", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1388", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "14640985186631737095" + } + }, + "parameters": { + "clusterName": { + "type": "string", + "defaultValue": "aks101cluster", + "metadata": { + "description": "The name of the Managed Cluster resource." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Managed Cluster resource." + } + }, + "dnsPrefix": { + "type": "string", + "metadata": { + "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN." + }, + "value": "GEN-UNIQUE" + }, + "osDiskSizeGB": { + "type": "int", + "defaultValue": 0, + "maxValue": 1023, + "minValue": 0, + "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": { + "type": "int", + "defaultValue": 3, + "maxValue": 50, + "minValue": 1, + "metadata": { + "description": "The number of nodes for the cluster." + } + }, + "agentVMSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the Virtual Machine." + } + }, + "linuxAdminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Linux Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "sshRSAPublicKey": { + "type": "string", + "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'" + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "dnsPrefix": "GEN-UNIQUE", + "agentPoolProfiles": [ + { + "name": "agentpool", + "osDiskSizeGB": 0, + "count": 3, + "vmSize": "Standard_D2s_v3", + "osType": "Linux", + "mode": "System" + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + } + } + ], + "outputs": { + "controlPlaneFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName'))).fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1389 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1389 new file mode 100644 index 0000000..6dbd368 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1389 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.kubernetes/aks-vmss-systemassigned-identity/azuredeploy.json", + "/quickstarts/microsoft.kubernetes/aks-vmss-systemassigned-identity/azuredeploy.parameters.json" + ], + "timestamp": 1642962907376, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.kubernetes/aks-vmss-systemassigned-identity/azuredeploy.json", + "/quickstarts/microsoft.kubernetes/aks-vmss-systemassigned-identity/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1389", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1389", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "aksClusterName": { + "type": "string", + "defaultValue": "aks101cluster-vmss", + "metadata": { + "description": "The name of the Managed Cluster resource." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "The location of AKS resource." + } + }, + "dnsPrefix": { + "type": "string", + "metadata": { + "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN." + }, + "value": "GEN-UNIQUE" + }, + "osDiskSizeGB": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Disk size (in GiB) 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." + }, + "minValue": 0, + "maxValue": 1023 + }, + "agentCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The number of nodes for the cluster. 1 Node is enough for Dev/Test and minimum 3 nodes, is recommended for Production" + }, + "minValue": 1, + "maxValue": 100 + }, + "agentVMSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the Virtual Machine." + } + }, + "osType": { + "type": "string", + "defaultValue": "Linux", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "The type of operating system." + } + } + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.ContainerService/managedClusters", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "tags": { + "displayname": "AKS Cluster" + }, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "enableRBAC": true, + "dnsPrefix": "GEN-UNIQUE", + "agentPoolProfiles": [ + { + "name": "agentpool", + "osDiskSizeGB": 0, + "count": 3, + "vmSize": "Standard_D2s_v3", + "osType": "Linux", + "storageProfile": "ManagedDisks", + "type": "VirtualMachineScaleSets", + "mode": "System" + } + ] + } + } + ], + "outputs": { + "controlPlaneFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerService/managedClusters/', parameters('aksClusterName'))).fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT139 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT139 new file mode 100644 index 0000000..e6b2ae0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT139 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/kibana-resources.json" + ], + "timestamp": 1642962888075, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/kibana-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT139", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT139", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespace": { + "type": "string", + "defaultValue": "kibana", + "metadata": { + "description": "The namespace prefix for resources created by this template" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "Subnet object for provisioning resources in (expects properties name as the subnet name, and vnet as the virtual network name on the object)" + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Existing Storage Account where the Virtual Machine's disks will be placed" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "Platform and OS settings" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1390 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1390 new file mode 100644 index 0000000..b1fa55a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1390 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.kusto/kusto-cluster-database/azuredeploy.json", + "/quickstarts/microsoft.kusto/kusto-cluster-database/azuredeploy.parameters.json" + ], + "timestamp": 1642962907384, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.kusto/kusto-cluster-database/azuredeploy.json", + "/quickstarts/microsoft.kusto/kusto-cluster-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1390", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.kusto/clusters/databases", + "microsoft.kusto/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1390", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusters_kustocluster_name": { + "type": "string", + "defaultValue": "[concat('kusto', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the cluster to create" + } + }, + "databases_kustodb_name": { + "type": "string", + "defaultValue": "kustodb", + "metadata": { + "description": "Name of the database to create" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "name": "[concat('kusto', uniqueString(resourceGroup().id))]/kustodb", + "type": "Microsoft.Kusto/clusters/databases", + "apiVersion": "2020-06-14", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Kusto/clusters/[concat('kusto', uniqueString(resourceGroup().id))]" + ], + "properties": { + "softDeletePeriodInDays": 365, + "hotCachePeriodInDays": 31 + } + }, + { + "name": "[concat('kusto', uniqueString(resourceGroup().id))]", + "type": "Microsoft.Kusto/clusters", + "sku": { + "name": "Standard_D8_v3", + "tier": "Standard", + "capacity": 2 + }, + "apiVersion": "2020-06-14", + "location": "[resourceGroup().location]", + "tags": { + "Created By": "GitHub quickstart template" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1391 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1391 new file mode 100644 index 0000000..c66c099 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1391 @@ -0,0 +1,188 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.kusto/kusto-vnet/azuredeploy.json", + "/quickstarts/microsoft.kusto/kusto-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962907393, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.kusto/kusto-vnet/azuredeploy.json", + "/quickstarts/microsoft.kusto/kusto-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1391", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.kusto/clusters", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1391", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "defaultValue": "[concat('kusto', uniqueString(resourceGroup().id))]" + }, + "dataManagementPublicIpName": { + "type": "string", + "defaultValue": "dm-pip" + }, + "enginePublicIpName": { + "type": "string", + "defaultValue": "engine-pip" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard_D8_v3" + }, + "skuTier": { + "type": "string", + "defaultValue": "Standard" + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vnet" + } + }, + "variables": { + "dataManagementPublicIpId": "Microsoft.Network/publicIPAddresses/dm-pip", + "enginePublicIpId": "Microsoft.Network/publicIPAddresses/engine-pip", + "nsgName": "azureDataExplorerNsg", + "nsgId": "Microsoft.Network/networkSecurityGroups/azureDataExplorerNsg", + "routeTableName": "azureDataExplorerRt", + "routeTableId": "Microsoft.Network/routeTables/azureDataExplorerRt", + "publicIpAllocationMethod": "Static", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/vnet/subnet", + "vnetId": "Microsoft.Network/virtualNetworks/vnet" + }, + "resources": [ + { + "type": "Microsoft.Kusto/Clusters", + "sku": { + "name": "Standard_D8_v3", + "tier": "Standard" + }, + "name": "[concat('kusto', uniqueString(resourceGroup().id))]", + "apiVersion": "2020-06-14", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/engine-pip", + "Microsoft.Network/publicIPAddresses/dm-pip", + "Microsoft.Network/virtualNetworks/vnet" + ], + "location": "[resourceGroup().location]", + "properties": { + "virtualNetworkConfiguration": { + "subnetId": "Microsoft.Network/virtualNetworks/subnets/vnet/subnet", + "enginePublicIpId": "Microsoft.Network/publicIPAddresses/engine-pip", + "dataManagementPublicIpId": "Microsoft.Network/publicIPAddresses/dm-pip" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "azureDataExplorerNsg", + "location": "[resourceGroup().location]" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/routeTables", + "name": "azureDataExplorerRt", + "location": "[resourceGroup().location]" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "dm-pip", + "sku": { + "name": "Standard" + }, + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "engine-pip", + "sku": { + "name": "Standard" + }, + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "azureDataExplorerNsg", + "azureDataExplorerRt" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/20", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/azureDataExplorerNsg" + }, + "routeTable": { + "id": "Microsoft.Network/routeTables/azureDataExplorerRt" + }, + "delegations": [ + { + "name": "AzureDataExplorer", + "properties": { + "serviceName": "Microsoft.Kusto/clusters" + } + } + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1392 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1392 new file mode 100644 index 0000000..86486a4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1392 @@ -0,0 +1,315 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/integration-service-environment/azuredeploy.json", + "/quickstarts/microsoft.logic/integration-service-environment/azuredeploy.parameters.json" + ], + "timestamp": 1642962907401, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/integration-service-environment/azuredeploy.json", + "/quickstarts/microsoft.logic/integration-service-environment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1392", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/integrationserviceenvironments/managedapis", + "microsoft.network/virtualnetworks", + "microsoft.logic/integrationserviceenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1392", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "integrationServiceEnvironmentName": { + "type": "string", + "metadata": { + "description": "The name of the Integration Service Environment." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "integrationServiceEnvironmentSku": { + "type": "string", + "defaultValue": "Developer", + "allowedValues": [ + "Developer", + "Premium" + ], + "metadata": { + "description": "The SKU for the Integration Service Environment, either Developer or Premium." + }, + "value": "Developer" + }, + "skuCapacity": { + "defaultValue": 0, + "type": "int", + "metadata": { + "description": "The number of scale units for the Integration Service Environment. 0 is the base unit." + } + }, + "accessEndpointType": { + "type": "string", + "defaultValue": "External", + "allowedValues": [ + "Internal", + "External" + ], + "metadata": { + "description": "The type of access endpoint to use for the Integration Service Environment. The endpoint determine whether request or webhook triggers on logic apps in the Integration Service Environment can receive calls from outside the virtual network." + }, + "value": "External" + }, + "managedConnectors": { + "type": "array", + "metadata": { + "description": "The list of managed connectors to deploy into the ISE in JSON array format (e.g. [\"sql\", \"ftp\" ...]). The values must be from this list: sql;ftp;azureblob;azurefile;azurequeues;azuretables;sftpwithssh;edifact;x12;servicebus;documentdb;eventhubs;mq;sqldw;db2;smtp;si3270" + }, + "value": [ + "servicebus", + "azureblob" + ] + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "The name of the VNET for ISE to be deployed into." + }, + "value": "GEN-UNIQUE-8" + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/22", + "metadata": { + "description": "The VNET address prefix. For example, 10.0.0.0/22." + }, + "value": "10.0.0.0/22" + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.0.1.0/26", + "metadata": { + "description": "The prefix for the first ISE subnet. For example, 10.0.1.0/26." + }, + "value": "10.0.1.0/26" + }, + "subnet1Name": { + "type": "string", + "defaultValue": "Subnet1", + "metadata": { + "description": "The name of the first ISE subnet." + } + }, + "subnet2Prefix": { + "type": "string", + "defaultValue": "10.0.1.64/26", + "metadata": { + "description": "The prefix for the second ISE subnet. For example, 10.0.1.64/26." + }, + "value": "10.0.1.64/26" + }, + "subnet2Name": { + "type": "string", + "defaultValue": "Subnet2", + "metadata": { + "description": "The name of the second ISE subnet." + } + }, + "subnet3Prefix": { + "type": "string", + "defaultValue": "10.0.1.128/26", + "metadata": { + "description": "The prefix for the third ISE subnet. For example, 10.0.1.128/26." + }, + "value": "10.0.1.128/26" + }, + "subnet3Name": { + "type": "string", + "defaultValue": "Subnet3", + "metadata": { + "description": "The name of the third ISE subnet." + } + }, + "subnet4Prefix": { + "type": "string", + "defaultValue": "10.0.1.192/26", + "metadata": { + "description": "The prefix for the fourth ISE subnet. For example, 10.0.1.192/26." + }, + "value": "10.0.1.192/26" + }, + "subnet4Name": { + "type": "string", + "defaultValue": "Subnet4", + "metadata": { + "description": "The name of the fourth ISE subnet." + } + }, + "rebuildVNET": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "After the first deployment, you don't need to recreate the VNET. When set to false this will skip the VNET and subnet deployment." + } + } + }, + "resources": [ + { + "condition": true, + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/22" + ] + } + }, + "resources": [ + { + "condition": true, + "apiVersion": "2020-05-01", + "type": "subnets", + "location": "[resourceGroup().location]", + "name": "Subnet1", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8" + ], + "properties": { + "addressPrefix": "10.0.1.0/26", + "delegations": [ + { + "name": "integrationServiceEnvironments", + "properties": { + "serviceName": "Microsoft.Logic/integrationServiceEnvironments" + } + } + ] + } + }, + { + "condition": true, + "apiVersion": "2020-05-01", + "type": "subnets", + "location": "[resourceGroup().location]", + "name": "Subnet2", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet1" + ], + "properties": { + "addressPrefix": "10.0.1.64/26" + } + }, + { + "condition": true, + "apiVersion": "2020-05-01", + "type": "subnets", + "location": "[resourceGroup().location]", + "name": "Subnet3", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet2" + ], + "properties": { + "addressPrefix": "10.0.1.128/26" + } + }, + { + "condition": true, + "apiVersion": "2020-05-01", + "type": "subnets", + "location": "[resourceGroup().location]", + "name": "Subnet4", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet3" + ], + "properties": { + "addressPrefix": "10.0.1.192/26" + } + } + ] + }, + { + "type": "Microsoft.Logic/integrationServiceEnvironments", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet1", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet2", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet3", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet4" + ], + "sku": { + "name": "Developer", + "capacity": 0 + }, + "properties": { + "networkConfiguration": { + "accessEndpoint": { + "type": "External" + }, + "subnets": [ + { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet1" + }, + { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet2" + }, + { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet3" + }, + { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/Subnet4" + } + ] + } + } + }, + { + "apiVersion": "2019-05-01", + "type": "Microsoft.Logic/integrationServiceEnvironments/ManagedApis", + "name": "[concat(parameters('integrationServiceEnvironmentName'), '/', parameters('managedConnectors')[copyindex()])]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Logic/integrationServiceEnvironments//GEN-UNIQUE" + ], + "properties": {} + }, + { + "apiVersion": "2019-05-01", + "type": "Microsoft.Logic/integrationServiceEnvironments/ManagedApis", + "name": "[concat(parameters('integrationServiceEnvironmentName'), '/', parameters('managedConnectors')[copyindex()])]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Logic/integrationServiceEnvironments//GEN-UNIQUE" + ], + "properties": {} + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1393 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1393 new file mode 100644 index 0000000..e68eb76 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1393 @@ -0,0 +1,207 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-and-function-app/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-and-function-app/azuredeploy.parameters.json" + ], + "timestamp": 1642962907409, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-and-function-app/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-and-function-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1393", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.logic/workflows", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1393", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "LogicAppName": { + "type": "string", + "defaultValue": "[concat('logic-app-', uniqueString(resourceGroup().id))]", + "minLength": 1, + "maxLength": 80, + "metadata": { + "description": "Name of the Logic App." + } + }, + "functionAppName": { + "type": "string", + "defaultValue": "[concat('fn-app-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the function app to create. Must be globally unique." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "repoUrl": "https://github.com/AzureBytes/functionshttpecho.git", + "branch": "master", + "functionName": "Echo", + "hostingPlanName": "[concat('fn-app-', uniqueString(resourceGroup().id))]", + "storageAccountName": "[concat('azfunctions', uniquestring(resourceGroup().id))]", + "LogicAppLocation": "[resourceGroup().location]", + "storageAccountType": "Standard_LRS" + }, + "resources": [ + { + "name": "[concat('logic-app-', uniqueString(resourceGroup().id))]", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "apiVersion": "2019-05-01", + "dependsOn": [ + "Microsoft.Web/sites/sourcecontrols/[concat('fn-app-', uniqueString(resourceGroup().id))]/web" + ], + "tags": { + "displayName": "LogicApp" + }, + "properties": { + "definition": { + "actions": { + "Azure_Function": { + "type": "Function", + "inputs": { + "body": "@triggerBody()", + "function": { + "id": "Microsoft.Web/sites/functions/[concat('fn-app-', uniqueString(resourceGroup().id))]/Echo" + } + } + }, + "Response": { + "type": "Response", + "inputs": { + "statusCode": 200, + "body": "@body('Azure_Function')" + }, + "runAfter": { + "Azure_Function": [ + "Succeeded" + ] + } + } + }, + "parameters": {}, + "triggers": { + "Request": { + "type": "Request", + "kind": "Http", + "inputs": {} + } + }, + "contentVersion": "1.0.0.0", + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": {} + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Y1", + "tier": "Dynamic" + }, + "properties": { + "name": "[variables('hostingPlanName')]", + "computeMode": "Dynamic" + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/sites", + "name": "[concat('fn-app-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsDashboard", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(parameters('functionAppName'))]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~1" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "6.5.0" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "Microsoft.Web/Sites/[concat('fn-app-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "RepoUrl": "https://github.com/AzureBytes/functionshttpecho.git", + "branch": "master", + "IsManualIntegration": true + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1394 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1394 new file mode 100644 index 0000000..baf395c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1394 @@ -0,0 +1,1293 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-as2-send-receive/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-as2-send-receive/azuredeploy.parameters.json" + ], + "timestamp": 1642962907417, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-as2-send-receive/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-as2-send-receive/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1394", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/integrationaccounts/agreements", + "microsoft.web/connections", + "microsoft.logic/integrationaccounts", + "microsoft.logic/workflows", + "microsoft.logic/integrationaccounts/partners" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1394", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "contosoIntegrationAccountName": { + "type": "string", + "defaultValue": "ContosoIntegrationAccount", + "minLength": 1, + "maxLength": 80, + "metadata": { + "description": "Name of the Integration Account." + } + }, + "fabrikamIntegrationAccountName": { + "type": "string", + "defaultValue": "FabrikamIntegrationAccount", + "minLength": 1, + "maxLength": 80, + "metadata": { + "description": "Name of the Integration Account." + } + }, + "contosoAS2ReceiveLogicAppName": { + "type": "string", + "defaultValue": "Contoso-AS2Receive", + "minLength": 1, + "maxLength": 80, + "metadata": { + "description": "Name of the Logic App." + } + }, + "fabrikamSalesAS2SendLogicAppName": { + "type": "string", + "defaultValue": "FabrikamSales-AS2Send", + "minLength": 1, + "maxLength": 80, + "metadata": { + "description": "Name of the Logic App." + } + }, + "fabrikamFinanceAS2SendLogicAppName": { + "type": "string", + "defaultValue": "FabrikamFinance-AS2Send", + "minLength": 1, + "maxLength": 80, + "metadata": { + "description": "Name of the Logic App." + } + }, + "fabrikamFinanceAS2ReceiveMDNLogicAppName": { + "type": "string", + "defaultValue": "FabrikamFinance-AS2ReceiveMDN", + "minLength": 1, + "maxLength": 80, + "metadata": { + "description": "Name of the Logic App." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Logic App." + } + }, + "contoso_AS2_Connection_Name": { + "type": "string", + "defaultValue": "Contoso-AS2", + "metadata": { + "description": "Name of the AS2 connection." + } + }, + "fabrikam_AS2_Connection_Name": { + "type": "string", + "defaultValue": "Fabrikam-AS2", + "metadata": { + "description": "Name of the AS2 connection." + } + } + }, + "variables": { + "as2Id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]" + }, + "resources": [ + { + "properties": {}, + "sku": { + "name": "Standard" + }, + "tags": { + "displayName": "Contoso Integration Account" + }, + "name": "ContosoIntegrationAccount", + "type": "Microsoft.Logic/integrationAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2019-05-01" + }, + { + "properties": {}, + "sku": { + "name": "Standard" + }, + "tags": { + "displayName": "Fabrikam Integration Account" + }, + "name": "FabrikamIntegrationAccount", + "type": "Microsoft.Logic/integrationAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2019-05-01" + }, + { + "properties": { + "partnerType": "B2B", + "content": { + "b2b": { + "businessIdentities": [ + { + "qualifier": "ZZ", + "value": "99" + }, + { + "qualifier": "AS2Identity", + "value": "Contoso" + } + ] + } + } + }, + "name": "ContosoIntegrationAccount/Contoso", + "type": "Microsoft.Logic/integrationAccounts/partners", + "apiVersion": "2016-06-01", + "dependsOn": [ + "ContosoIntegrationAccount" + ] + }, + { + "properties": { + "partnerType": "B2B", + "content": { + "b2b": { + "businessIdentities": [ + { + "qualifier": "ZZ", + "value": "99" + }, + { + "qualifier": "AS2Identity", + "value": "Contoso" + } + ] + } + } + }, + "name": "FabrikamIntegrationAccount/Contoso", + "type": "Microsoft.Logic/integrationAccounts/partners", + "apiVersion": "2016-06-01", + "dependsOn": [ + "FabrikamIntegrationAccount" + ] + }, + { + "properties": { + "partnerType": "B2B", + "content": { + "b2b": { + "businessIdentities": [ + { + "qualifier": "ZZ", + "value": "98" + }, + { + "qualifier": "AS2Identity", + "value": "FabrikamSales" + } + ] + } + } + }, + "name": "ContosoIntegrationAccount/FabrikamSales", + "type": "Microsoft.Logic/integrationAccounts/partners", + "apiVersion": "2016-06-01", + "dependsOn": [ + "ContosoIntegrationAccount" + ] + }, + { + "properties": { + "partnerType": "B2B", + "content": { + "b2b": { + "businessIdentities": [ + { + "qualifier": "ZZ", + "value": "98" + }, + { + "qualifier": "AS2Identity", + "value": "FabrikamSales" + } + ] + } + } + }, + "name": "FabrikamIntegrationAccount/FabrikamSales", + "type": "Microsoft.Logic/integrationAccounts/partners", + "apiVersion": "2016-06-01", + "dependsOn": [ + "FabrikamIntegrationAccount" + ] + }, + { + "properties": { + "partnerType": "B2B", + "content": { + "b2b": { + "businessIdentities": [ + { + "qualifier": "ZZ", + "value": "97" + }, + { + "qualifier": "AS2Identity", + "value": "FabrikamFinance" + } + ] + } + } + }, + "name": "ContosoIntegrationAccount/FabrikamFinance", + "type": "Microsoft.Logic/integrationAccounts/partners", + "apiVersion": "2016-06-01", + "dependsOn": [ + "ContosoIntegrationAccount" + ] + }, + { + "properties": { + "partnerType": "B2B", + "content": { + "b2b": { + "businessIdentities": [ + { + "qualifier": "ZZ", + "value": "97" + }, + { + "qualifier": "AS2Identity", + "value": "FabrikamFinance" + } + ] + } + } + }, + "name": "FabrikamIntegrationAccount/FabrikamFinance", + "type": "Microsoft.Logic/integrationAccounts/partners", + "apiVersion": "2016-06-01", + "dependsOn": [ + "FabrikamIntegrationAccount" + ] + }, + { + "properties": { + "hostPartner": "Contoso", + "guestPartner": "FabrikamSales", + "hostIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + }, + "guestIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamSales" + }, + "agreementType": "AS2", + "content": { + "aS2": { + "receiveAgreement": { + "protocolSettings": { + "messageConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": true, + "keepHttpConnectionAlive": true, + "unfoldHttpHeaders": true + }, + "acknowledgementConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": false, + "keepHttpConnectionAlive": false, + "unfoldHttpHeaders": false + }, + "mdnSettings": { + "needMDN": false, + "signMDN": false, + "sendMDNAsynchronously": false, + "dispositionNotificationTo": "http://localhost", + "signOutboundMDNIfOptional": false, + "sendInboundMDNToMessageBox": true, + "micHashingAlgorithm": "SHA2256" + }, + "securitySettings": { + "overrideGroupSigningCertificate": false, + "enableNRRForInboundEncodedMessages": false, + "enableNRRForInboundDecodedMessages": false, + "enableNRRForOutboundMDN": false, + "enableNRRForOutboundEncodedMessages": false, + "enableNRRForOutboundDecodedMessages": false, + "enableNRRForInboundMDN": false + }, + "validationSettings": { + "overrideMessageProperties": false, + "encryptMessage": false, + "signMessage": false, + "compressMessage": false, + "checkDuplicateMessage": false, + "interchangeDuplicatesValidityDays": 5, + "checkCertificateRevocationListOnSend": false, + "checkCertificateRevocationListOnReceive": false, + "encryptionAlgorithm": "DES3" + }, + "envelopeSettings": { + "messageContentType": "text/plain", + "transmitFileNameInMimeHeader": false, + "fileNameTemplate": "%FILE().ReceivedFileName%", + "suspendMessageOnFileNameGenerationError": true, + "autogenerateFileName": false + }, + "errorSettings": { + "suspendDuplicateMessage": false, + "resendIfMDNNotReceived": false + } + }, + "senderBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamSales" + }, + "receiverBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + } + }, + "sendAgreement": { + "protocolSettings": { + "messageConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": true, + "keepHttpConnectionAlive": true, + "unfoldHttpHeaders": true + }, + "acknowledgementConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": false, + "keepHttpConnectionAlive": false, + "unfoldHttpHeaders": false + }, + "mdnSettings": { + "needMDN": false, + "signMDN": false, + "sendMDNAsynchronously": false, + "dispositionNotificationTo": "http://localhost", + "signOutboundMDNIfOptional": false, + "sendInboundMDNToMessageBox": true, + "micHashingAlgorithm": "SHA2256" + }, + "securitySettings": { + "overrideGroupSigningCertificate": false, + "enableNRRForInboundEncodedMessages": false, + "enableNRRForInboundDecodedMessages": false, + "enableNRRForOutboundMDN": false, + "enableNRRForOutboundEncodedMessages": false, + "enableNRRForOutboundDecodedMessages": false, + "enableNRRForInboundMDN": false + }, + "validationSettings": { + "overrideMessageProperties": false, + "encryptMessage": false, + "signMessage": false, + "compressMessage": false, + "checkDuplicateMessage": false, + "interchangeDuplicatesValidityDays": 5, + "checkCertificateRevocationListOnSend": false, + "checkCertificateRevocationListOnReceive": false, + "encryptionAlgorithm": "DES3" + }, + "envelopeSettings": { + "messageContentType": "text/plain", + "transmitFileNameInMimeHeader": false, + "fileNameTemplate": "%FILE().ReceivedFileName%", + "suspendMessageOnFileNameGenerationError": true, + "autogenerateFileName": false + }, + "errorSettings": { + "suspendDuplicateMessage": false, + "resendIfMDNNotReceived": false + } + }, + "senderBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + }, + "receiverBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamSales" + } + } + } + } + }, + "name": "ContosoIntegrationAccount/Contoso-FabrikamSales", + "type": "Microsoft.Logic/integrationAccounts/agreements", + "apiVersion": "2016-06-01", + "dependsOn": [ + "ContosoIntegrationAccount" + ] + }, + { + "properties": { + "hostPartner": "FabrikamSales", + "guestPartner": "Contoso", + "hostIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamSales" + }, + "guestIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + }, + "agreementType": "AS2", + "content": { + "aS2": { + "receiveAgreement": { + "protocolSettings": { + "messageConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": true, + "keepHttpConnectionAlive": true, + "unfoldHttpHeaders": true + }, + "acknowledgementConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": false, + "keepHttpConnectionAlive": false, + "unfoldHttpHeaders": false + }, + "mdnSettings": { + "needMDN": false, + "signMDN": false, + "sendMDNAsynchronously": false, + "dispositionNotificationTo": "http://localhost", + "signOutboundMDNIfOptional": false, + "sendInboundMDNToMessageBox": true, + "micHashingAlgorithm": "SHA2256" + }, + "securitySettings": { + "overrideGroupSigningCertificate": false, + "enableNRRForInboundEncodedMessages": false, + "enableNRRForInboundDecodedMessages": false, + "enableNRRForOutboundMDN": false, + "enableNRRForOutboundEncodedMessages": false, + "enableNRRForOutboundDecodedMessages": false, + "enableNRRForInboundMDN": false + }, + "validationSettings": { + "overrideMessageProperties": false, + "encryptMessage": false, + "signMessage": false, + "compressMessage": false, + "checkDuplicateMessage": false, + "interchangeDuplicatesValidityDays": 5, + "checkCertificateRevocationListOnSend": false, + "checkCertificateRevocationListOnReceive": false, + "encryptionAlgorithm": "DES3" + }, + "envelopeSettings": { + "messageContentType": "text/plain", + "transmitFileNameInMimeHeader": false, + "fileNameTemplate": "%FILE().ReceivedFileName%", + "suspendMessageOnFileNameGenerationError": true, + "autogenerateFileName": false + }, + "errorSettings": { + "suspendDuplicateMessage": false, + "resendIfMDNNotReceived": false + } + }, + "senderBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + }, + "receiverBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamSales" + } + }, + "sendAgreement": { + "protocolSettings": { + "messageConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": true, + "keepHttpConnectionAlive": true, + "unfoldHttpHeaders": true + }, + "acknowledgementConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": false, + "keepHttpConnectionAlive": false, + "unfoldHttpHeaders": false + }, + "mdnSettings": { + "needMDN": true, + "signMDN": false, + "sendMDNAsynchronously": false, + "dispositionNotificationTo": "http://localhost", + "signOutboundMDNIfOptional": false, + "sendInboundMDNToMessageBox": true, + "micHashingAlgorithm": "SHA2256" + }, + "securitySettings": { + "overrideGroupSigningCertificate": false, + "enableNRRForInboundEncodedMessages": false, + "enableNRRForInboundDecodedMessages": false, + "enableNRRForOutboundMDN": false, + "enableNRRForOutboundEncodedMessages": false, + "enableNRRForOutboundDecodedMessages": false, + "enableNRRForInboundMDN": false + }, + "validationSettings": { + "overrideMessageProperties": false, + "encryptMessage": false, + "signMessage": false, + "compressMessage": false, + "checkDuplicateMessage": false, + "interchangeDuplicatesValidityDays": 5, + "checkCertificateRevocationListOnSend": false, + "checkCertificateRevocationListOnReceive": false, + "encryptionAlgorithm": "DES3" + }, + "envelopeSettings": { + "messageContentType": "text/plain", + "transmitFileNameInMimeHeader": false, + "fileNameTemplate": "%FILE().ReceivedFileName%", + "suspendMessageOnFileNameGenerationError": true, + "autogenerateFileName": false + }, + "errorSettings": { + "suspendDuplicateMessage": false, + "resendIfMDNNotReceived": false + } + }, + "senderBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamSales" + }, + "receiverBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + } + } + } + } + }, + "name": "FabrikamIntegrationAccount/FabrikamSales-Contoso", + "type": "Microsoft.Logic/integrationAccounts/agreements", + "apiVersion": "2016-06-01", + "dependsOn": [ + "FabrikamIntegrationAccount" + ] + }, + { + "properties": { + "hostPartner": "Contoso", + "guestPartner": "FabrikamFinance", + "hostIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + }, + "guestIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamFinance" + }, + "agreementType": "AS2", + "content": { + "aS2": { + "receiveAgreement": { + "protocolSettings": { + "messageConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": true, + "keepHttpConnectionAlive": true, + "unfoldHttpHeaders": true + }, + "acknowledgementConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": false, + "keepHttpConnectionAlive": false, + "unfoldHttpHeaders": false + }, + "mdnSettings": { + "needMDN": false, + "signMDN": false, + "sendMDNAsynchronously": false, + "dispositionNotificationTo": "http://localhost", + "signOutboundMDNIfOptional": false, + "sendInboundMDNToMessageBox": true, + "micHashingAlgorithm": "SHA2256" + }, + "securitySettings": { + "overrideGroupSigningCertificate": false, + "enableNRRForInboundEncodedMessages": false, + "enableNRRForInboundDecodedMessages": false, + "enableNRRForOutboundMDN": false, + "enableNRRForOutboundEncodedMessages": false, + "enableNRRForOutboundDecodedMessages": false, + "enableNRRForInboundMDN": false + }, + "validationSettings": { + "overrideMessageProperties": false, + "encryptMessage": false, + "signMessage": false, + "compressMessage": false, + "checkDuplicateMessage": false, + "interchangeDuplicatesValidityDays": 5, + "checkCertificateRevocationListOnSend": false, + "checkCertificateRevocationListOnReceive": false, + "encryptionAlgorithm": "DES3" + }, + "envelopeSettings": { + "messageContentType": "text/plain", + "transmitFileNameInMimeHeader": false, + "fileNameTemplate": "%FILE().ReceivedFileName%", + "suspendMessageOnFileNameGenerationError": true, + "autogenerateFileName": false + }, + "errorSettings": { + "suspendDuplicateMessage": false, + "resendIfMDNNotReceived": false + } + }, + "senderBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamFinance" + }, + "receiverBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + } + }, + "sendAgreement": { + "protocolSettings": { + "messageConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": true, + "keepHttpConnectionAlive": true, + "unfoldHttpHeaders": true + }, + "acknowledgementConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": false, + "keepHttpConnectionAlive": false, + "unfoldHttpHeaders": false + }, + "mdnSettings": { + "needMDN": false, + "signMDN": false, + "sendMDNAsynchronously": false, + "dispositionNotificationTo": "http://localhost", + "signOutboundMDNIfOptional": false, + "sendInboundMDNToMessageBox": true, + "micHashingAlgorithm": "SHA2256" + }, + "securitySettings": { + "overrideGroupSigningCertificate": false, + "enableNRRForInboundEncodedMessages": false, + "enableNRRForInboundDecodedMessages": false, + "enableNRRForOutboundMDN": false, + "enableNRRForOutboundEncodedMessages": false, + "enableNRRForOutboundDecodedMessages": false, + "enableNRRForInboundMDN": false + }, + "validationSettings": { + "overrideMessageProperties": false, + "encryptMessage": false, + "signMessage": false, + "compressMessage": false, + "checkDuplicateMessage": false, + "interchangeDuplicatesValidityDays": 5, + "checkCertificateRevocationListOnSend": false, + "checkCertificateRevocationListOnReceive": false, + "encryptionAlgorithm": "DES3" + }, + "envelopeSettings": { + "messageContentType": "text/plain", + "transmitFileNameInMimeHeader": false, + "fileNameTemplate": "%FILE().ReceivedFileName%", + "suspendMessageOnFileNameGenerationError": true, + "autogenerateFileName": false + }, + "errorSettings": { + "suspendDuplicateMessage": false, + "resendIfMDNNotReceived": false + } + }, + "senderBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + }, + "receiverBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamFinance" + } + } + } + } + }, + "name": "ContosoIntegrationAccount/Contoso-FabrikamFinance", + "type": "Microsoft.Logic/integrationAccounts/agreements", + "apiVersion": "2016-06-01", + "dependsOn": [ + "ContosoIntegrationAccount" + ] + }, + { + "name": "Contoso-AS2Receive", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Contoso AS2 Receive" + }, + "apiVersion": "2019-05-01", + "properties": { + "state": "Enabled", + "integrationAccount": { + "id": "Microsoft.Logic/integrationAccounts/ContosoIntegrationAccount" + }, + "definition": { + "actions": { + "Check_MDN_Expected": { + "type": "If", + "expression": "@equals(body('Decode_AS2_message')?['AS2Message']?['MdnExpected'], 'Expected')", + "actions": { + "Check_MDN_Type": { + "type": "If", + "expression": "@equals(body('Decode_AS2_message')?['OutgoingMdn']?['MdnType'], 'Async')", + "actions": { + "Send_200_OK_for_Async_MDN": { + "type": "Response", + "inputs": { + "statusCode": 200 + } + }, + "Send_Async_MDN": { + "type": "Http", + "inputs": { + "method": "POST", + "uri": "@{body('Decode_AS2_message')?['OutgoingMdn']?['ReceiptDeliveryOption']}", + "headers": "@body('Decode_AS2_message')?['OutgoingMdn']?['OutboundHeaders']", + "body": "@base64ToBinary(body('Decode_AS2_message')?['OutgoingMdn']?['Content'])" + }, + "runAfter": { + "Send_200_OK_for_Async_MDN": [ + "Succeeded" + ] + } + } + }, + "else": { + "actions": { + "Send_Sync_MDN": { + "type": "Response", + "inputs": { + "statusCode": 200, + "headers": "@body('Decode_AS2_message')?['OutgoingMdn']?['OutboundHeaders']", + "body": "@base64ToBinary(body('Decode_AS2_message')?['OutgoingMdn']?['Content'])" + } + } + } + } + } + }, + "runAfter": { + "Decode_AS2_message": [ + "Succeeded" + ] + }, + "else": { + "actions": { + "Send_200_OK": { + "type": "Response", + "inputs": { + "statusCode": 200 + } + } + } + } + }, + "Decode_AS2_message": { + "type": "ApiConnection", + "inputs": { + "host": { + "api": { + "runtimeUrl": "https://logic-apis-[resourceGroup().location].azure-apim.net/apim/as2" + }, + "connection": { + "name": "@parameters('$connections')['as2']['connectionId']" + } + }, + "method": "post", + "body": "@triggerBody()", + "path": "/decode", + "headers": "@triggerOutputs()['headers']" + } + } + }, + "parameters": { + "$connections": { + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "Request", + "kind": "Http" + } + }, + "contentVersion": "1.0.0.0", + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "as2": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]", + "connectionId": "[concat(resourceGroup().id, '/providers/Microsoft.Web/connections/', parameters('contoso_AS2_Connection_Name'))]", + "connectionName": "Contoso-AS2" + } + } + } + } + }, + "dependsOn": [ + "ContosoIntegrationAccount", + "Microsoft.Web/connections/Contoso-AS2" + ] + }, + { + "name": "FabrikamSales-AS2Send", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Fabrikam Sales AS2 Send" + }, + "apiVersion": "2019-05-01", + "properties": { + "state": "Enabled", + "integrationAccount": { + "id": "Microsoft.Logic/integrationAccounts/FabrikamIntegrationAccount" + }, + "definition": { + "actions": { + "HTTP": { + "inputs": { + "method": "POST", + "uri": "[listCallbackURL(resourceId('Microsoft.Logic/workflows', parameters('contosoAS2ReceiveLogicAppName')), '2019-05-01').value]", + "headers": { + "AS2-From": "FabrikamSales", + "AS2-To": "Contoso", + "Message-Id": "@guid()", + "content-type": "text/plain" + }, + "body": "Fabrikam Sales - sample message" + }, + "type": "Http" + } + }, + "parameters": { + "$connections": { + "type": "Object" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Hour", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "contentVersion": "1.0.0.0", + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "as2": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]", + "connectionId": "[concat(resourceGroup().id, '/providers/Microsoft.Web/connections/', parameters('fabrikam_AS2_Connection_Name'))]", + "connectionName": "Fabrikam-AS2" + } + } + } + } + }, + "dependsOn": [ + "FabrikamIntegrationAccount", + "Microsoft.Web/connections/Fabrikam-AS2", + "Contoso-AS2Receive" + ] + }, + { + "name": "FabrikamFinance-AS2Send", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Fabrikam Finance AS2 Send" + }, + "apiVersion": "2019-05-01", + "properties": { + "state": "Enabled", + "integrationAccount": { + "id": "Microsoft.Logic/integrationAccounts/FabrikamIntegrationAccount" + }, + "definition": { + "actions": { + "Encode_to_AS2_message": { + "inputs": { + "body": "Fabrikam Finance - sample message", + "host": { + "api": { + "runtimeUrl": "https://logic-apis-[resourceGroup().location].azure-apim.net/apim/as2" + }, + "connection": { + "name": "@parameters('$connections')['as2']['connectionId']" + } + }, + "method": "post", + "path": "/encode", + "queries": { + "as2From": "FabrikamFinance", + "as2To": "Contoso" + } + }, + "type": "ApiConnection" + }, + "HTTP": { + "inputs": { + "body": "@base64ToBinary(body('Encode_to_AS2_message')?['AS2Message']?['Content'])", + "headers": "@body('Encode_to_AS2_message')?['AS2Message']?['OutboundHeaders']", + "method": "POST", + "uri": "[listCallbackURL(resourceId('Microsoft.Logic/workflows', parameters('contosoAS2ReceiveLogicAppName')), '2019-05-01').value]" + }, + "runAfter": { + "Encode_to_AS2_message": [ + "Succeeded" + ] + }, + "type": "Http" + } + }, + "parameters": { + "$connections": { + "type": "Object" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Hour", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "contentVersion": "1.0.0.0", + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "as2": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]", + "connectionId": "[concat(resourceGroup().id, '/providers/Microsoft.Web/connections/', parameters('fabrikam_AS2_Connection_Name'))]", + "connectionName": "Fabrikam-AS2" + } + } + } + } + }, + "dependsOn": [ + "FabrikamIntegrationAccount", + "Microsoft.Web/connections/Fabrikam-AS2", + "Contoso-AS2Receive" + ] + }, + { + "name": "FabrikamFinance-AS2ReceiveMDN", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Fabrikam Finance AS2 Receive MDN" + }, + "apiVersion": "2019-05-01", + "properties": { + "state": "Enabled", + "integrationAccount": { + "id": "Microsoft.Logic/integrationAccounts/FabrikamIntegrationAccount" + }, + "definition": { + "actions": { + "Decode_AS2_message": { + "type": "ApiConnection", + "inputs": { + "host": { + "api": { + "runtimeUrl": "https://logic-apis-[resourceGroup().location].azure-apim.net/apim/as2" + }, + "connection": { + "name": "@parameters('$connections')['as2']['connectionId']" + } + }, + "method": "post", + "body": "@triggerBody()", + "path": "/decode", + "headers": "@triggerOutputs()['headers']" + } + }, + "Response": { + "inputs": { + "statusCode": 200 + }, + "runAfter": { + "Decode_AS2_message": [ + "Succeeded" + ] + }, + "type": "Response" + } + }, + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "Request", + "kind": "Http" + } + }, + "contentVersion": "1.0.0.0", + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "as2": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]", + "connectionId": "[concat(resourceGroup().id, '/providers/Microsoft.Web/connections/', parameters('fabrikam_AS2_Connection_Name'))]", + "connectionName": "Fabrikam-AS2" + } + } + } + } + }, + "dependsOn": [ + "FabrikamIntegrationAccount", + "Microsoft.Web/connections/Fabrikam-AS2", + "Contoso-AS2Receive" + ] + }, + { + "properties": { + "hostPartner": "FabrikamFinance", + "guestPartner": "Contoso", + "hostIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamFinance" + }, + "guestIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + }, + "agreementType": "AS2", + "content": { + "aS2": { + "receiveAgreement": { + "protocolSettings": { + "messageConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": true, + "keepHttpConnectionAlive": true, + "unfoldHttpHeaders": true + }, + "acknowledgementConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": false, + "keepHttpConnectionAlive": false, + "unfoldHttpHeaders": false + }, + "mdnSettings": { + "needMDN": false, + "signMDN": false, + "sendMDNAsynchronously": false, + "dispositionNotificationTo": "http://localhost", + "signOutboundMDNIfOptional": false, + "sendInboundMDNToMessageBox": true, + "micHashingAlgorithm": "SHA2256" + }, + "securitySettings": { + "overrideGroupSigningCertificate": false, + "enableNRRForInboundEncodedMessages": false, + "enableNRRForInboundDecodedMessages": false, + "enableNRRForOutboundMDN": false, + "enableNRRForOutboundEncodedMessages": false, + "enableNRRForOutboundDecodedMessages": false, + "enableNRRForInboundMDN": false + }, + "validationSettings": { + "overrideMessageProperties": false, + "encryptMessage": false, + "signMessage": false, + "compressMessage": false, + "checkDuplicateMessage": false, + "interchangeDuplicatesValidityDays": 5, + "checkCertificateRevocationListOnSend": false, + "checkCertificateRevocationListOnReceive": false, + "encryptionAlgorithm": "DES3" + }, + "envelopeSettings": { + "messageContentType": "text/plain", + "transmitFileNameInMimeHeader": false, + "fileNameTemplate": "%FILE().ReceivedFileName%", + "suspendMessageOnFileNameGenerationError": true, + "autogenerateFileName": false + }, + "errorSettings": { + "suspendDuplicateMessage": false, + "resendIfMDNNotReceived": false + } + }, + "senderBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + }, + "receiverBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamFinance" + } + }, + "sendAgreement": { + "protocolSettings": { + "messageConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": true, + "keepHttpConnectionAlive": true, + "unfoldHttpHeaders": true + }, + "acknowledgementConnectionSettings": { + "ignoreCertificateNameMismatch": false, + "supportHttpStatusCodeContinue": false, + "keepHttpConnectionAlive": false, + "unfoldHttpHeaders": false + }, + "mdnSettings": { + "needMDN": true, + "signMDN": false, + "sendMDNAsynchronously": true, + "receiptDeliveryUrl": "[listCallbackURL(resourceId('Microsoft.Logic/workflows', parameters('fabrikamFinanceAS2ReceiveMDNLogicAppName')), '2019-05-01').value]", + "dispositionNotificationTo": "http://localhost", + "signOutboundMDNIfOptional": false, + "sendInboundMDNToMessageBox": true, + "micHashingAlgorithm": "SHA2256" + }, + "securitySettings": { + "overrideGroupSigningCertificate": false, + "enableNRRForInboundEncodedMessages": false, + "enableNRRForInboundDecodedMessages": false, + "enableNRRForOutboundMDN": false, + "enableNRRForOutboundEncodedMessages": false, + "enableNRRForOutboundDecodedMessages": false, + "enableNRRForInboundMDN": false + }, + "validationSettings": { + "overrideMessageProperties": false, + "encryptMessage": false, + "signMessage": false, + "compressMessage": false, + "checkDuplicateMessage": false, + "interchangeDuplicatesValidityDays": 5, + "checkCertificateRevocationListOnSend": false, + "checkCertificateRevocationListOnReceive": false, + "encryptionAlgorithm": "DES3" + }, + "envelopeSettings": { + "messageContentType": "text/plain", + "transmitFileNameInMimeHeader": false, + "fileNameTemplate": "%FILE().ReceivedFileName%", + "suspendMessageOnFileNameGenerationError": true, + "autogenerateFileName": false + }, + "errorSettings": { + "suspendDuplicateMessage": false, + "resendIfMDNNotReceived": false + } + }, + "senderBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "FabrikamFinance" + }, + "receiverBusinessIdentity": { + "qualifier": "AS2Identity", + "value": "Contoso" + } + } + } + } + }, + "name": "FabrikamIntegrationAccount/FabrikamFinance-Contoso", + "type": "Microsoft.Logic/integrationAccounts/agreements", + "apiVersion": "2016-06-01", + "dependsOn": [ + "FabrikamIntegrationAccount", + "FabrikamFinance-AS2ReceiveMDN" + ] + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "Contoso-AS2", + "location": "[resourceGroup().location]", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]" + }, + "displayName": "Contoso AS2 connection", + "parameterValues": { + "integrationAccountId": "Microsoft.Logic/integrationAccounts/ContosoIntegrationAccount", + "integrationAccountUrl": "[listCallbackURL(resourceId('Microsoft.Logic/integrationAccounts', parameters('contosoIntegrationAccountName')), '2019-05-01').value]" + } + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "Fabrikam-AS2", + "location": "[resourceGroup().location]", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]" + }, + "displayName": "Fabrikam AS2 connection", + "parameterValues": { + "integrationAccountId": "Microsoft.Logic/integrationAccounts/FabrikamIntegrationAccount", + "integrationAccountUrl": "[listCallbackURL(resourceId('Microsoft.Logic/integrationAccounts', parameters('fabrikamIntegrationAccountName')), '2019-05-01').value]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1395 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1395 new file mode 100644 index 0000000..6f508a8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1395 @@ -0,0 +1,488 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-b2b-disaster-recovery-replication/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-b2b-disaster-recovery-replication/azuredeploy.parameters.json" + ], + "timestamp": 1642962907429, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-b2b-disaster-recovery-replication/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-b2b-disaster-recovery-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1395", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/integrationaccounts", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1395", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "AS2_DR_LogicApp_Name": { + "type": "string", + "defaultValue": "as2-dr", + "value": "GEN-UNIQUE-10" + }, + "Edifact_DR_LogicApp_Name": { + "type": "string", + "defaultValue": "edifact-dr", + "value": "GEN-UNIQUE-10" + }, + "X12_DR_LogicApp_Name": { + "type": "string", + "defaultValue": "x12-dr", + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Logic App." + } + }, + "Primary_IntegrationAccountResourceGroup": { + "type": "string", + "defaultValue": "[resourcegroup().name]" + }, + "Primary_IntegrationAccountName": { + "type": "string", + "metadata": { + "description": "Integration Account Name" + }, + "value": "GEN-UNIQUE-10" + }, + "Secondary_IntegrationAccountName": { + "type": "string", + "metadata": { + "description": "Integration Account Name" + }, + "value": "GEN-UNIQUE-10" + }, + "AS2_Primary_Connection_Name": { + "type": "string", + "defaultValue": "as2-primary", + "value": "GEN-UNIQUE-10" + }, + "AS2_Primary_Connection_DisplayName": { + "type": "string", + "defaultValue": "as2-primary", + "value": "GEN-UNIQUE-10" + }, + "AS2_Secondary_Connection_Name": { + "type": "string", + "defaultValue": "as2-secondary", + "value": "GEN-UNIQUE-10" + }, + "AS2_Secondary_Connection_DisplayName": { + "type": "string", + "defaultValue": "as2-secondary", + "value": "GEN-UNIQUE-10" + }, + "Edifact_Primary_Connection_Name": { + "type": "string", + "defaultValue": "edifact-primary", + "value": "GEN-UNIQUE-10" + }, + "Edifact_Primary_Connection_DisplayName": { + "type": "string", + "defaultValue": "edifact-primary", + "value": "GEN-UNIQUE-10" + }, + "Edifact_Secondary_Connection_Name": { + "type": "string", + "defaultValue": "edifact-secondary", + "value": "GEN-UNIQUE-10" + }, + "Edifact_Secondary_Connection_DisplayName": { + "type": "string", + "defaultValue": "edifact-secondary", + "value": "GEN-UNIQUE-10" + }, + "X12_Primary_Connection_Name": { + "type": "string", + "defaultValue": "x12-primary", + "value": "GEN-UNIQUE-10" + }, + "X12_Primary_Connection_DisplayName": { + "type": "string", + "defaultValue": "x12-primary", + "value": "GEN-UNIQUE-10" + }, + "X12_Secondary_Connection_Name": { + "type": "string", + "defaultValue": "x12-secondary", + "value": "GEN-UNIQUE-10" + }, + "X12_Secondary_Connection_DisplayName": { + "type": "string", + "defaultValue": "x12-secondary", + "value": "GEN-UNIQUE-10" + } + }, + "variables": { + "as2id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]", + "edifactid": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'edifact')]", + "x12id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'x12')]" + }, + "resources": [ + { + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Add_or_update_MIC_contents": { + "type": "ApiConnection", + "inputs": { + "body": "@triggerBody()", + "host": { + "connection": { + "name": "@parameters('$connections')['as2-secondary']['connectionId']" + } + }, + "method": "put", + "path": "/createOrUpdateMicValues" + } + } + }, + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_a_MIC_value_is_created": { + "recurrence": { + "frequency": "Minute", + "interval": 1 + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['as2-primary']['connectionId']" + } + }, + "method": "get", + "path": "/triggers/onCreatedMicValues" + } + } + }, + "contentVersion": "1.0.0.0", + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "as2-primary": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]", + "connectionId": "Microsoft.Web/connections/GEN-UNIQUE-10", + "connectionName": "GEN-UNIQUE-10" + }, + "as2-secondary": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]", + "connectionId": "Microsoft.Web/connections/GEN-UNIQUE-10", + "connectionName": "GEN-UNIQUE-10" + } + } + } + } + }, + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "apiVersion": "2019-05-01", + "dependsOn": [ + "Microsoft.Web/connections/GEN-UNIQUE-10", + "Microsoft.Web/connections/GEN-UNIQUE-10" + ] + }, + { + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Add_or_update_control_numbers": { + "type": "ApiConnection", + "inputs": { + "body": "@triggerBody()", + "host": { + "connection": { + "name": "@parameters('$connections')['edifact-secondary']['connectionId']" + } + }, + "method": "put", + "path": "/controlnumbers" + } + } + }, + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_a_control_number_is_modified": { + "recurrence": { + "frequency": "Minute", + "interval": 1 + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['edifact-primary']['connectionId']" + } + }, + "method": "get", + "path": "/triggers/onmodifiedcontrolnumber" + } + } + }, + "contentVersion": "1.0.0.0", + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "edifact-primary": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'edifact')]", + "connectionId": "Microsoft.Web/connections/GEN-UNIQUE-10", + "connectionName": "GEN-UNIQUE-10" + }, + "edifact-secondary": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'edifact')]", + "connectionId": "Microsoft.Web/connections/GEN-UNIQUE-10", + "connectionName": "GEN-UNIQUE-10" + } + } + } + } + }, + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "apiVersion": "2019-05-01", + "dependsOn": [ + "Microsoft.Web/connections/GEN-UNIQUE-10", + "Microsoft.Web/connections/GEN-UNIQUE-10" + ] + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Logic/integrationAccounts", + "apiVersion": "2016-06-01", + "location": "[resourceGroup().location]", + "properties": {}, + "sku": { + "name": "Standard" + } + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Logic/integrationAccounts", + "apiVersion": "2016-06-01", + "location": "[resourceGroup().location]", + "properties": {}, + "sku": { + "name": "Standard" + } + }, + { + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Add_or_update_control_numbers": { + "type": "ApiConnection", + "inputs": { + "body": "@triggerBody()", + "host": { + "connection": { + "name": "@parameters('$connections')['x12-secondary']['connectionId']" + } + }, + "method": "put", + "path": "/controlNumbers" + } + } + }, + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_a_control_number_is_modified": { + "recurrence": { + "frequency": "Minute", + "interval": 1 + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['x12-primary']['connectionId']" + } + }, + "method": "get", + "path": "/triggers/onModifiedControlNumber" + } + } + }, + "contentVersion": "1.0.0.0", + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "x12-secondary": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'x12')]", + "connectionId": "Microsoft.Web/connections/GEN-UNIQUE-10", + "connectionName": "GEN-UNIQUE-10" + }, + "x12-primary": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'x12')]", + "connectionId": "Microsoft.Web/connections/GEN-UNIQUE-10", + "connectionName": "GEN-UNIQUE-10" + } + } + } + } + }, + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "apiVersion": "2019-05-01", + "dependsOn": [ + "Microsoft.Web/connections/GEN-UNIQUE-10", + "Microsoft.Web/connections/GEN-UNIQUE-10" + ] + }, + { + "type": "MICROSOFT.WEB/CONNECTIONS", + "apiVersion": "2016-06-01", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Logic/integrationaccounts/GEN-UNIQUE-10" + ], + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]" + }, + "displayName": "GEN-UNIQUE-10", + "parameterValues": { + "integrationAccountId": "[resourcegroup().name]/Microsoft.Logic/integrationaccounts/GEN-UNIQUE-10", + "integrationAccountUrl": "[listCallbackURL(resourceId(parameters('Primary_IntegrationAccountResourceGroup'), 'Microsoft.Logic/integrationaccounts', parameters('Primary_IntegrationAccountName')), '2019-05-01').value]" + } + } + }, + { + "type": "MICROSOFT.WEB/CONNECTIONS", + "apiVersion": "2016-06-01", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Logic/integrationaccounts/GEN-UNIQUE-10" + ], + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'as2')]" + }, + "displayName": "GEN-UNIQUE-10", + "parameterValues": { + "integrationAccountId": "Microsoft.Logic/integrationaccounts/GEN-UNIQUE-10", + "integrationAccountUrl": "[listCallbackURL(resourceId('Microsoft.Logic/integrationaccounts', parameters('Secondary_IntegrationAccountName')), '2019-05-01').value]" + } + } + }, + { + "type": "MICROSOFT.WEB/CONNECTIONS", + "apiVersion": "2016-06-01", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'edifact')]" + }, + "displayName": "GEN-UNIQUE-10", + "parameterValues": { + "integrationAccountId": "[resourcegroup().name]/Microsoft.Logic/integrationaccounts/GEN-UNIQUE-10", + "integrationAccountUrl": "[listCallbackURL(resourceId(parameters('Primary_IntegrationAccountResourceGroup'), 'Microsoft.Logic/integrationaccounts', parameters('Primary_IntegrationAccountName')), '2019-05-01').value]" + } + } + }, + { + "type": "MICROSOFT.WEB/CONNECTIONS", + "apiVersion": "2016-06-01", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'edifact')]" + }, + "displayName": "GEN-UNIQUE-10", + "parameterValues": { + "integrationAccountId": "Microsoft.Logic/integrationaccounts/GEN-UNIQUE-10", + "integrationAccountUrl": "[listCallbackURL(resourceId('Microsoft.Logic/integrationaccounts', parameters('Secondary_IntegrationAccountName')), '2019-05-01').value]" + } + } + }, + { + "type": "MICROSOFT.WEB/CONNECTIONS", + "apiVersion": "2016-06-01", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'x12')]" + }, + "displayName": "GEN-UNIQUE-10", + "parameterValues": { + "integrationAccountId": "[resourcegroup().name]/Microsoft.Logic/integrationaccounts/GEN-UNIQUE-10", + "integrationAccountUrl": "[listCallbackURL(resourceId(parameters('Primary_IntegrationAccountResourceGroup'), 'Microsoft.Logic/integrationaccounts', parameters('Primary_IntegrationAccountName')), '2019-05-01').value]" + } + } + }, + { + "type": "MICROSOFT.WEB/CONNECTIONS", + "apiVersion": "2016-06-01", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'x12')]" + }, + "displayName": "GEN-UNIQUE-10", + "parameterValues": { + "integrationAccountId": "Microsoft.Logic/integrationaccounts/GEN-UNIQUE-10", + "integrationAccountUrl": "[listCallbackURL(resourceId('Microsoft.Logic/integrationaccounts', parameters('Secondary_IntegrationAccountName')), '2019-05-01').value]" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1396 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1396 new file mode 100644 index 0000000..2ce7059 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1396 @@ -0,0 +1,751 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-correlation-using-servicebus/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-correlation-using-servicebus/azuredeploy.parameters.json" + ], + "timestamp": 1642962907437, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-correlation-using-servicebus/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-correlation-using-servicebus/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1396", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows", + "microsoft.servicebus/namespaces/topics", + "microsoft.servicebus/namespaces/authorizationrules", + "microsoft.servicebus/namespaces/topics/subscriptions", + "microsoft.servicebus/namespaces/topics/subscriptions/rules", + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1396", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespace": { + "defaultValue": "[uniqueString(resourceGroup().id, deployment().name)]", + "type": "string", + "metadata": { + "description": "The Service Bus namespace name. This value should be globally unique!" + }, + "value": "GEN-UNIQUE" + }, + "clientLogicApp": { + "defaultValue": "ClientLogicApp", + "type": "string", + "metadata": { + "description": "Name of the client Logic App" + } + }, + "backendLogicApp": { + "defaultValue": "BackendLogicApp", + "type": "string", + "metadata": { + "description": "Name of the backend Logic App" + } + }, + "transformationLogicApp": { + "defaultValue": "TransformationLogicApp", + "type": "string", + "metadata": { + "description": "Name of the transformation Logic App" + } + }, + "messageRoutingTopic": { + "defaultValue": "messagerouting", + "type": "string", + "metadata": { + "description": "The name of the topic for routing messages." + } + }, + "clientLogicAppSubscription": { + "defaultValue": "ToClientLogicApp", + "type": "string", + "metadata": { + "description": "The name of the topic subscription towards the client Logic App." + } + }, + "backendLogicAppSubscription": { + "defaultValue": "ToBackendLogicApp", + "type": "string", + "metadata": { + "description": "The name of the topic subscription towards the backend Logic App." + } + }, + "transformationLogicAppSubscription": { + "defaultValue": "ToTransformationLogicApp", + "type": "string", + "metadata": { + "description": "The name of the topic subscription towards the transformation Logic App." + } + }, + "serviceBusConnection": { + "defaultValue": "servicebus", + "type": "string", + "metadata": { + "description": "The name of the connection to Service Bus created for Logic Apps." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "name": "BackendLogicApp", + "apiVersion": "2019-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/servicebus" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_a_message_is_received_in_a_topic_subscription_(peek-lock)": { + "recurrence": { + "frequency": "Second", + "interval": 30 + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "get", + "path": "/@{encodeURIComponent(encodeURIComponent(messagerouting))}/subscriptions/@{encodeURIComponent(To, parameters(backendLogicApp),)}/messages/head/peek", + "queries": { + "sessionId": "Next Available", + "subscriptionType": "Main" + } + } + } + }, + "actions": { + "Complete_the_message_in_a_topic_subscription": { + "runAfter": { + "Send_message": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "delete", + "path": "/@{encodeURIComponent(encodeURIComponent(messagerouting))}/subscriptions/@{encodeURIComponent(To, parameters(backendLogicApp),)}/messages/complete", + "queries": { + "lockToken": "@triggerBody()?['LockToken']", + "sessionId": "@triggerBody()?['SessionId']", + "subscriptionType": "Main" + } + } + }, + "HTTP": { + "type": "Http", + "inputs": { + "body": "@base64ToString(triggerBody()?['ContentData'])", + "headers": { + "Content-Type": "application/json" + }, + "method": "POST", + "uri": "https://demo5633756.mockable.io/order" + } + }, + "Send_message": { + "runAfter": { + "HTTP": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": { + "ContentData": "@{base64(concat('{','\n',' \"Content\":',body('HTTP'),',','\n',' \"StatusCode\":',outputs('HTTP')['statusCode'],'\n','}'))}", + "ContentType": "application/json", + "Properties": { + "Source": "BackendLogicApp" + }, + "SessionId": "@triggerBody()?['SessionId']" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "post", + "path": "/@{encodeURIComponent(encodeURIComponent('messagerouting'))}/messages", + "queries": { + "systemProperties": "None" + } + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "servicebus": { + "connectionId": "Microsoft.Web/connections/servicebus", + "connectionName": "servicebus", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'servicebus')]" + } + } + } + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "name": "ClientLogicApp", + "apiVersion": "2019-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/servicebus" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "Request", + "kind": "Http", + "inputs": { + "schema": { + "properties": { + "Amount": { + "type": "string" + }, + "Customer": { + "type": "string" + }, + "Product": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "actions": { + "For_each": { + "foreach": "@body('Get_messages_from_a_topic_subscription_(peek-lock)')", + "actions": { + "Complete_the_message_in_a_topic_subscription": { + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "delete", + "path": "/@{encodeURIComponent(encodeURIComponent(messagerouting))}/subscriptions/@{encodeURIComponent(To, parameters(clientLogicApp),)}/messages/complete", + "queries": { + "lockToken": "@items('For_each')?['LockToken']", + "sessionId": "@items('For_each')?['SessionId']", + "subscriptionType": "Main" + } + } + } + }, + "runAfter": { + "Response": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "Get_messages_from_a_topic_subscription_(peek-lock)": { + "runAfter": { + "Send_message": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "get", + "path": "/@{encodeURIComponent(encodeURIComponent(messagerouting))}/subscriptions/@{encodeURIComponent(To, parameters(clientLogicApp),)}/messages/batch/peek", + "queries": { + "maxMessageCount": 1, + "sessionId": "@variables('MyUniqueIdentifier')", + "subscriptionType": "Main" + } + } + }, + "Initialize_variable": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "MyUniqueIdentifier", + "type": "string", + "value": "@{guid()}" + } + ] + } + }, + "Parse_JSON": { + "runAfter": { + "Get_messages_from_a_topic_subscription_(peek-lock)": [ + "Succeeded" + ] + }, + "type": "ParseJson", + "inputs": { + "content": "@base64ToString(body('Get_messages_from_a_topic_subscription_(peek-lock)')?[0]?['ContentData'])", + "schema": { + "properties": { + "Content": { + "properties": { + "MyBackendResponse": { + "type": "string" + } + }, + "type": "object" + }, + "StatusCode": { + "type": "integer" + } + }, + "type": "object" + } + } + }, + "Response": { + "runAfter": { + "Parse_JSON": [ + "Succeeded" + ] + }, + "type": "Response", + "kind": "Http", + "inputs": { + "body": "@body('Parse_JSON')?['Content']", + "statusCode": "@body('Parse_JSON')?['StatusCode']" + } + }, + "Send_message": { + "runAfter": { + "Initialize_variable": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": { + "ContentData": "@{base64(triggerBody())}", + "ContentType": "application/json", + "Properties": { + "Source": "ClientLogicApp" + }, + "SessionId": "@variables('MyUniqueIdentifier')" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "post", + "path": "/@{encodeURIComponent(encodeURIComponent('messagerouting'))}/messages", + "queries": { + "systemProperties": "None" + } + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "servicebus": { + "connectionId": "Microsoft.Web/connections/servicebus", + "connectionName": "servicebus", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'servicebus')]" + } + } + } + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "name": "TransformationLogicApp", + "apiVersion": "2019-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/servicebus" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_a_message_is_received_in_a_topic_subscription_(peek-lock)": { + "recurrence": { + "frequency": "Second", + "interval": 30 + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "get", + "path": "/@{encodeURIComponent(encodeURIComponent(messagerouting))}/subscriptions/@{encodeURIComponent(To, parameters(transformationLogicApp),)}/messages/head/peek", + "queries": { + "sessionId": "Next Available", + "subscriptionType": "Main" + } + } + } + }, + "actions": { + "Complete_the_message_in_a_topic_subscription": { + "runAfter": { + "Send_message": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "delete", + "path": "/@{encodeURIComponent(encodeURIComponent(messagerouting))}/subscriptions/@{encodeURIComponent(To, parameters(transformationLogicApp),)}/messages/complete", + "queries": { + "lockToken": "@triggerBody()?['LockToken']", + "sessionId": "@triggerBody()?['SessionId']", + "subscriptionType": "Main" + } + } + }, + "Compose": { + "runAfter": { + "Parse_JSON": [ + "Succeeded" + ] + }, + "type": "Compose", + "inputs": { + "AmountOrdered": "@{body('Parse_JSON')?['Amount']}", + "CustomerName": "@{body('Parse_JSON')?['Customer']}", + "OrderedProduct": "@{body('Parse_JSON')?['Product']}" + } + }, + "Parse_JSON": { + "type": "ParseJson", + "inputs": { + "content": "@base64ToString(triggerBody()?['ContentData'])", + "schema": { + "properties": { + "Amount": { + "type": "string" + }, + "Customer": { + "type": "string" + }, + "Product": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "Send_message": { + "runAfter": { + "Compose": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": { + "ContentData": "@{base64(outputs('Compose'))}", + "ContentType": "application/json", + "Properties": { + "Source": "TransformationLogicApp" + }, + "SessionId": "@triggerBody()?['SessionId']" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "post", + "path": "/@{encodeURIComponent(encodeURIComponent('messagerouting'))}/messages", + "queries": { + "systemProperties": "None" + } + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "servicebus": { + "connectionId": "Microsoft.Web/connections/servicebus", + "connectionName": "servicebus", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'servicebus')]" + } + } + } + } + } + }, + { + "type": "Microsoft.ServiceBus/namespaces", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "name": "GEN-UNIQUE", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "properties": { + "metricId": "[concat(subscription().subscriptionId, ':router', parameters('serviceBusNamespace'))]", + "createdAt": "2018-04-07T12:06:43.41Z", + "updatedAt": "2018-04-07T12:07:09.597Z", + "serviceBusEndpoint": "https://GEN-UNIQUE.servicebus.windows.net:443/", + "status": "Active" + } + }, + { + "type": "Microsoft.Web/connections", + "name": "servicebus", + "apiVersion": "2016-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/AuthorizationRules/GEN-UNIQUE/RootManageSharedAccessKey" + ], + "properties": { + "displayName": "Router", + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'servicebus')]" + }, + "parameterValues": { + "connectionString": "[listKeys(resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', parameters('serviceBusNamespace'), 'RootManageSharedAccessKey'), '2017-04-01').primaryConnectionString]" + } + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/AuthorizationRules", + "name": "GEN-UNIQUE/RootManageSharedAccessKey", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE" + ], + "properties": { + "rights": [ + "Listen", + "Manage", + "Send" + ] + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics", + "name": "GEN-UNIQUE/messagerouting", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE" + ], + "properties": { + "defaultMessageTimeToLive": "P14D", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "enableBatchedOperations": true, + "status": "Active", + "supportOrdering": false, + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", + "enablePartitioning": true, + "enableExpress": false + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions", + "name": "GEN-UNIQUE/messagerouting/ToBackendLogicApp", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE", + "Microsoft.ServiceBus/namespaces/topics/GEN-UNIQUE/messagerouting" + ], + "properties": { + "lockDuration": "PT30S", + "requiresSession": true, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "deadLetteringOnFilterEvaluationExceptions": false, + "maxDeliveryCount": 10, + "status": "Active", + "enableBatchedOperations": false, + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S" + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions", + "name": "GEN-UNIQUE/messagerouting/ToClientLogicApp", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE", + "Microsoft.ServiceBus/namespaces/topics/GEN-UNIQUE/messagerouting" + ], + "properties": { + "lockDuration": "PT30S", + "requiresSession": true, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "deadLetteringOnFilterEvaluationExceptions": false, + "maxDeliveryCount": 10, + "status": "Active", + "enableBatchedOperations": false, + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S" + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions", + "name": "GEN-UNIQUE/messagerouting/ToTransformationLogicApp", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE", + "Microsoft.ServiceBus/namespaces/topics/GEN-UNIQUE/messagerouting" + ], + "properties": { + "lockDuration": "PT30S", + "requiresSession": true, + "defaultMessageTimeToLive": "P14D", + "deadLetteringOnMessageExpiration": false, + "deadLetteringOnFilterEvaluationExceptions": false, + "maxDeliveryCount": 10, + "status": "Active", + "enableBatchedOperations": false, + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S" + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions/rules", + "name": "GEN-UNIQUE/messagerouting/ToBackendLogicApp/RouteToBackendLogicApp", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE", + "Microsoft.ServiceBus/namespaces/topics/GEN-UNIQUE/messagerouting", + "Microsoft.ServiceBus/namespaces/topics/subscriptions/GEN-UNIQUE/messagerouting/ToBackendLogicApp" + ], + "properties": { + "filterType": "SqlFilter", + "sqlFilter": { + "sqlExpression": "Source='TransformationLogicApp'" + } + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions/rules", + "name": "GEN-UNIQUE/messagerouting/ToClientLogicApp/RouteToClientLogicApp", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE", + "Microsoft.ServiceBus/namespaces/topics/GEN-UNIQUE/messagerouting", + "Microsoft.ServiceBus/namespaces/topics/subscriptions/GEN-UNIQUE/messagerouting/ToClientLogicApp" + ], + "properties": { + "filterType": "SqlFilter", + "sqlFilter": { + "sqlExpression": "Source='BackendLogicApp'" + } + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions/rules", + "name": "GEN-UNIQUE/messagerouting/ToTransformationLogicApp/RouteToTransformationLogicApp", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE", + "Microsoft.ServiceBus/namespaces/topics/GEN-UNIQUE/messagerouting", + "Microsoft.ServiceBus/namespaces/topics/subscriptions/GEN-UNIQUE/messagerouting/ToTransformationLogicApp" + ], + "properties": { + "filterType": "SqlFilter", + "sqlFilter": { + "sqlExpression": "Source='ClientLogicApp'" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1397 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1397 new file mode 100644 index 0000000..bbe25ac --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1397 @@ -0,0 +1,115 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-create/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962907446, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-create/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1397", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1397", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "6960855688496991779" + } + }, + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name of the logic app to create." + }, + "value": "GEN-UNIQUE" + }, + "testUri": { + "type": "string", + "defaultValue": "https://status.azure.com/en-us/status/", + "metadata": { + "description": "A test URI" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "frequency": "Hour", + "interval": "1", + "type": "recurrence", + "actionType": "http", + "method": "GET", + "workflowSchema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "GEN-UNIQUE" + }, + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "testUri": { + "type": "string", + "defaultValue": "https://status.azure.com/en-us/status/" + } + }, + "triggers": { + "recurrence": { + "type": "recurrence", + "recurrence": { + "frequency": "Hour", + "interval": "1" + } + } + }, + "actions": { + "actionType": { + "type": "http", + "inputs": { + "method": "GET", + "uri": "https://status.azure.com/en-us/status/" + } + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1398 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1398 new file mode 100644 index 0000000..eee3a34 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1398 @@ -0,0 +1,220 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-custom-api/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-custom-api/azuredeploy.parameters.json" + ], + "timestamp": 1642962907456, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-custom-api/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-custom-api/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1398", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1398", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "tenantId": { + "type": "string", + "metadata": { + "description": "The tenant ID that you Azure subscription is in." + }, + "value": "00000000-0000-0000-0000-000000000000" + }, + "webAppName": { + "type": "string", + "metadata": { + "description": "The name of the Web app." + }, + "value": "GEN-UNIQUE" + }, + "webAppClientId": { + "type": "string", + "metadata": { + "description": "The client ID of the application identity that is used to secure the Web app." + }, + "value": "00000000-0000-0000-0000-000000000000" + }, + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name of the logic app to create." + }, + "value": "LogicAppName" + }, + "logicAppClientID": { + "type": "string", + "metadata": { + "description": "The client ID of the application identity that the Logic app has to call your Web app." + } + }, + "logicAppClientSecret": { + "type": "securestring", + "metadata": { + "description": "The client secret (key or password) of the application identity that the Logic app has to call your Web app." + }, + "value": "password" + }, + "svcPlanName": { + "type": "string", + "defaultValue": "Plan", + "metadata": { + "description": "The name of the App Service plan to create for hosting the logic app." + }, + "value": "Plan" + }, + "sku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Free", + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "The pricing tier for the App Service plan." + }, + "value": "Standard" + }, + "svcPlanSize": { + "defaultValue": "S1", + "type": "string", + "metadata": { + "description": "The instance size of the app." + }, + "value": "S1" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "logicAppClientId": { + "value": "00000000-0000-0000-0000-000000000000" + } + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "Plan", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "tier": "Standard", + "capacity": 1 + } + }, + { + "type": "Microsoft.Web/sites", + "kind": "api", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "resources": [ + { + "apiVersion": "2018-11-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE" + ], + "properties": { + "siteAuthEnabled": true, + "siteAuthSettings": { + "clientId": "00000000-0000-0000-0000-000000000000", + "issuer": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/" + } + } + } + ], + "dependsOn": [ + "Microsoft.Web/serverfarms//Plan" + ], + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/Plan" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "LogicAppName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "clientSecret": { + "type": "SecureString", + "defaultValue": "<>" + } + }, + "triggers": { + "recurrence": { + "type": "recurrence", + "recurrence": { + "frequency": "Hour", + "interval": 1 + } + } + }, + "actions": { + "pingSite": { + "type": "Http", + "inputs": { + "uri": "[concat('https://', reference(resourceId('Microsoft.Web/sites', parameters('webAppName'))).hostNames[0])]", + "method": "Get", + "authentication": { + "type": "ActiveDirectoryOAuth", + "tenant": "00000000-0000-0000-0000-000000000000", + "audience": "00000000-0000-0000-0000-000000000000", + "clientId": "00000000-0000-0000-0000-000000000000", + "secret": "@parameters('clientSecret')" + } + } + } + }, + "outputs": { + "result": { + "type": "string", + "value": "@actions('pingSite').code" + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "clientSecret": { + "value": "password" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1399 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1399 new file mode 100644 index 0000000..39e353c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1399 @@ -0,0 +1,263 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-ftp-to-blob/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-ftp-to-blob/azuredeploy.parameters.json" + ], + "timestamp": 1642962907464, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-ftp-to-blob/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-ftp-to-blob/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1399", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1399", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name of the logic app." + }, + "value": "LogicAppName" + }, + "azureBlobAccountName": { + "type": "string", + "metadata": { + "description": "Account name of the Azure Blob storage account." + } + }, + "azureBlobAccessKey": { + "type": "securestring", + "metadata": { + "description": "Account key of the Azure Blob storage account." + } + }, + "azureBlobConnectionName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Blob connection being created." + } + }, + "ftpServerAddress": { + "type": "string", + "metadata": { + "description": "The address of the FTP server." + } + }, + "ftpUsername": { + "type": "string", + "metadata": { + "description": "The username for the FTP server." + } + }, + "ftpPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the FTP server." + } + }, + "ftpServerPort": { + "type": "int", + "defaultValue": 21, + "metadata": { + "description": "The port for the FTP server." + } + }, + "ftpConnectionName": { + "type": "string", + "metadata": { + "description": "The name of the FTP connection being created." + }, + "value": "ftpConnection" + }, + "ftpFolderPath": { + "type": "string", + "defaultValue": "/", + "metadata": { + "description": "The path to the FTP folder you want to listen to." + }, + "value": "/" + }, + "blobContainerPath": { + "type": "string", + "defaultValue": "/mycontainer", + "metadata": { + "description": "The container/path of the folder you want to add files to." + }, + "value": "/mycontainer" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "azureblobaccountName": { + "value": "GEN-UNIQUE" + }, + "azureblobaccessKey": { + "value": "GEN-PASSWORD" + }, + "azureblobConnectionName": { + "value": "azureblobConnection" + }, + "ftpserverAddress": { + "value": "ftp://server.com" + }, + "ftpuserName": { + "value": "user" + }, + "ftppassword": { + "value": "GEN-PASSWORD" + }, + "ftpserverPort": { + "value": 21 + } + }, + "variables": { + "ftpisssl": true, + "ftpisBinaryTransportftpisssl": true, + "ftpdisableCertificateValidation": true + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "location": "[resourceGroup().location]", + "name": "ftpConnection", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'ftp')]" + }, + "displayName": "ftp", + "parameterValues": { + "serverAddress": "ftpServerAddress", + "userName": "ftpUsername", + "password": "ftpPassword", + "serverPort": 21, + "isssl": true, + "isBinaryTransport": true, + "disableCertificateValidation": true + } + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "location": "[resourceGroup().location]", + "name": "azureBlobConnectionName", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azureblob')]" + }, + "displayName": "azureblob", + "parameterValues": { + "accountName": "azureBlobAccountName", + "accessKey": "azureBlobAccessKey" + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "LogicAppName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/azureBlobConnectionName", + "Microsoft.Web/connections/ftpConnection" + ], + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_a_file_is_added_or_modified": { + "recurrence": { + "frequency": "Minute", + "interval": 1 + }, + "metadata": { + "[base64(parameters('ftpFolderPath'))]": "/" + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['ftp']['connectionId']" + } + }, + "method": "get", + "path": "/datasets/default/triggers/onupdatedfile", + "queries": { + "folderId": "[base64(parameters('ftpFolderPath'))]" + } + } + } + }, + "actions": { + "Create_file": { + "type": "ApiConnection", + "inputs": { + "body": "@triggerBody()", + "host": { + "connection": { + "name": "@parameters('$connections')['azureblob']['connectionId']" + } + }, + "method": "post", + "path": "/datasets/default/files", + "queries": { + "folderPath": "/mycontainer", + "name": "@{triggerOutputs()['headers']['x-ms-file-name']}" + } + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azureblob": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azureblob')]", + "connectionId": "Microsoft.Web/connections/azureBlobConnectionName" + }, + "ftp": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'ftp')]", + "connectionId": "Microsoft.Web/connections/ftpConnection" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT14 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT14 new file mode 100644 index 0000000..1f91d8e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT14 @@ -0,0 +1,108 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-module-use/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain-module-use/azuredeploy.parameters.json" + ], + "timestamp": 1642962883425, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-module-use/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain-module-use/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT14", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT14", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for the AD VMs" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "Admin password for the AD VMs" + } + }, + "domainName": { + "type": "string", + "metadata": { + "description": "Domain name for the AD Controller, must be multi-segmented by periods, e.g. 'corp.mydomain.com' or 'contoso.local'" + }, + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "metadata": { + "description": "PublicIp DNS prefix for the AD Controller" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + } + }, + "resources": [ + { + "name": "createADController", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/active-directory-new-domain/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "adminPassword" + }, + "domainName": { + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": { + "output": { + "type": "object", + "value": "[reference('createADController').outputs]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT140 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT140 new file mode 100644 index 0000000..9f405a7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT140 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/master-nodes-resources.json" + ], + "timestamp": 1642962888352, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/master-nodes-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT140", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT140", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + } + }, + "authSet": { + "type": "object", + "metadata": { + "description": "Authentication information" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "subnet": { + "type": "object", + "metadata": { + "description": "The VNET and Subnet to deploy the nodes in to" + } + }, + "masterNodesIpPrefix": { + "type": "string", + "metadata": { + "description": "IP Prefix used to append index for static addresses" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Size of the Elasticsearch master nodes" + } + }, + "osSettings": { + "type": "object", + "metadata": { + "description": "Elasticsearch deployment platform settings" + } + }, + "namespace": { + "type": "string", + "metadata": { + "description": "Namespace for resources created by this template" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "authSet": { + "type": "object", + "value": "[parameters('authSet')]" + }, + "storageSettings": { + "type": "object", + "value": "[parameters('storageSettings')]" + }, + "subnet": { + "type": "object", + "value": "[parameters('subnet')]" + }, + "masterNodesIpPrefix": { + "type": "string", + "value": "[parameters('masterNodesIpPrefix')]" + }, + "vmSize": { + "type": "string", + "value": "[parameters('vmSize')]" + }, + "osSettings": { + "type": "object", + "value": "[parameters('osSettings')]" + }, + "namespace": { + "type": "string", + "value": "[parameters('namespace')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1400 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1400 new file mode 100644 index 0000000..ee83b1e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1400 @@ -0,0 +1,171 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-sendgrid/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-sendgrid/azuredeploy.parameters.json" + ], + "timestamp": 1642962907474, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-sendgrid/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-sendgrid/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1400", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1400", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name for the logic app." + }, + "value": "sendgridApp" + }, + "sendgridApiKey": { + "type": "securestring", + "metadata": { + "description": "The SendGrid API key from the SendGrid service." + } + }, + "sendgridName": { + "type": "string", + "metadata": { + "description": "The name for the SendGrid connection." + }, + "value": "sendgridConnection" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sendgridapiKey": { + "value": "GEN-PASSWORD" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "location": "[resourceGroup().location]", + "name": "sendgridConnection", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'sendgrid')]" + }, + "displayName": "sendgrid", + "parameterValues": { + "apiKey": "sendgridApiKey" + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "sendgridApp", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/sendgridConnection" + ], + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "request", + "kind": "http", + "inputs": { + "schema": { + "properties": { + "emailbody": { + "type": "string" + }, + "from": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "subject", + "emailbody" + ], + "type": "object", + "\uff04schema": "http://json-schema.org/draft-04/schema#" + } + } + } + }, + "actions": { + "Send_email": { + "type": "ApiConnection", + "inputs": { + "body": { + "body": "@{triggerBody()['emailbody']}", + "from": "@{triggerBody()['from']}", + "ishtml": false, + "subject": "@{triggerBody()['subject']}", + "to": "@{triggerBody()['to']}" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['sendgrid']['connectionId']" + } + }, + "method": "post", + "path": "/api/mail.send.json" + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "sendgrid": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'sendgrid')]", + "connectionId": "Microsoft.Web/connections/sendgridConnection" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1401 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1401 new file mode 100644 index 0000000..bfd0b43 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1401 @@ -0,0 +1,178 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-sql-proc/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-sql-proc/azuredeploy.parameters.json" + ], + "timestamp": 1642962907484, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logic-app-sql-proc/azuredeploy.json", + "/quickstarts/microsoft.logic/logic-app-sql-proc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1401", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1401", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name of the logic app." + }, + "value": "LogicAppName" + }, + "sqlConnectionName": { + "type": "string", + "metadata": { + "description": "The name of the SQL connection being created." + }, + "value": "MySQLConnection" + }, + "sqlServer": { + "type": "string", + "metadata": { + "description": "The URI of the SQL Server" + }, + "value": "myserver.database.windows.net" + }, + "sqlDatabase": { + "type": "string", + "metadata": { + "description": "The name of the SQL database." + }, + "value": "mydatabase" + }, + "sqlUser": { + "type": "string", + "metadata": { + "description": "The username for the SQL server." + }, + "value": "user" + }, + "sqlPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the SQL server." + }, + "value": "GEN-PASSWORD" + }, + "sqlProcedure": { + "type": "string", + "metadata": { + "description": "The procedure to run." + }, + "value": "[dbo].[uspMyProcedure]" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "singleQuote": "'" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "location": "[resourceGroup().location]", + "name": "MySQLConnection", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'sql')]" + }, + "displayName": "sql_connection", + "parameterValues": { + "server": "myserver.database.windows.net", + "database": "mydatabase", + "authType": "windows", + "username": "user", + "password": "GEN-PASSWORD" + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "LogicAppName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/MySQLConnection" + ], + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Hour", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "Execute_stored_procedure": { + "type": "ApiConnection", + "inputs": { + "host": { + "api": { + "runtimeUrl": "https://logic-apis-[resourceGroup().location].azure-apim.net/apim/sql" + }, + "connection": { + "name": "@parameters('$connections')['sql']['connectionId']" + } + }, + "method": "post", + "path": "/datasets/default/procedures/@{encodeURIComponent(encodeURIComponent(, variables(singleQuote), parameters(sqlProcedure), variables(singleQuote), ))}" + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "sql": { + "connectionId": "Microsoft.Web/connections/MySQLConnection", + "connectionName": "MySQLConnection", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'sql')]" + } + } + } + } + }, + "resources": [] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1402 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1402 new file mode 100644 index 0000000..525fe3c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1402 @@ -0,0 +1,711 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.logic/logicapps-jobscheduler/azuredeploy.json", + "/quickstarts/microsoft.logic/logicapps-jobscheduler/azuredeploy.parameters.json" + ], + "timestamp": 1642962907492, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.logic/logicapps-jobscheduler/azuredeploy.json", + "/quickstarts/microsoft.logic/logicapps-jobscheduler/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1402", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1402", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "CreateTimerJobLogicAppName": { + "type": "string", + "minLength": 1, + "defaultValue": "CreateTimerJob", + "metadata": { + "description": "The name of the logic app that creates timer jobs." + } + }, + "TimerJobLogicAppName": { + "type": "string", + "minLength": 1, + "defaultValue": "TimerJob", + "metadata": { + "description": "The name of the logic app that runs timer jobs." + } + } + }, + "resources": [ + { + "name": "CreateTimerJob", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "LogicApp" + }, + "apiVersion": "2019-05-01", + "dependsOn": [ + "Microsoft.Logic/workflows/TimerJob" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "triggers": { + "manual": { + "correlation": { + "clientTrackingId": "@triggerBody()['timerjobid']" + }, + "type": "Request", + "kind": "Http", + "inputs": { + "schema": { + "properties": { + "jobRecurrence": { + "properties": { + "count": { + "minimum": -1, + "title": "count (jobRecurrence)", + "type": "integer" + }, + "endTime": { + "title": "endTime (jobRecurrence)", + "type": "string" + }, + "frequency": { + "enum": [ + "second", + "minute", + "hour", + "day", + "week", + "month" + ], + "title": "frequency (jobRecurrence)", + "type": "string" + }, + "interval": { + "title": "interval (jobRecurrence)", + "type": "integer" + } + }, + "required": [ + "frequency", + "interval" + ], + "type": "object" + }, + "jobStatus": { + "properties": { + "executionCount": { + "title": "executionCount (jobStatus)", + "type": "integer" + }, + "faultedCount": { + "title": "faultedCount (jobStatus)", + "type": "integer" + }, + "lastExecutionTime": { + "title": "lastExecutionTime (jobStatus)", + "type": "string" + }, + "nextExecutionTime": { + "title": "nextExecutionTime (jobStatus)", + "type": "string" + } + }, + "type": "object" + }, + "startTime": { + "type": "string" + }, + "timerjobid": { + "type": "string" + } + }, + "required": [ + "jobRecurrence", + "timerjobid" + ], + "type": "object" + } + } + } + }, + "actions": { + "If_not_past_endTime_or_exceeds_count": { + "actions": { + "Catch_TimerJob_error": { + "actions": { + "Terminate_failed_to_create_job": { + "runAfter": { + "Timer_job_failed_response": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runError": { + "message": "Failed to create timer job" + }, + "runStatus": "Failed" + } + }, + "Timer_job_failed_response": { + "type": "Response", + "kind": "Http", + "inputs": { + "body": "Failed to create timer job", + "statusCode": 400 + } + } + }, + "runAfter": { + "TimerJob": [ + "Failed", + "TimedOut" + ] + }, + "type": "Scope" + }, + "Created_Response": { + "runAfter": { + "TimerJob": [ + "Succeeded" + ] + }, + "type": "Response", + "kind": "Http", + "inputs": { + "body": "Next execution time will be at @{variables('nextTime')}", + "statusCode": 201 + } + }, + "TimerJob": { + "type": "Workflow", + "inputs": { + "body": { + "jobRecurrence": { + "count": "@triggerBody()?['jobRecurrence']?['count']", + "endTime": "@triggerBody()?['jobRecurrence']?['endTime']", + "frequency": "@triggerBody()?['jobRecurrence']?['frequency']", + "interval": "@triggerBody()?['jobRecurrence']?['interval']" + }, + "jobStatus": { + "executionCount": "@triggerBody()?['jobStatus']?['executionCount']", + "faultedCount": "@triggerBody()?['jobStatus']?['faultedCount']", + "lastExecutionTime": "@triggerBody()?['jobStatus']?['lastExecutionTime']", + "nextExecutionTime": "@variables('nextTime')" + }, + "startTime": "@triggerBody()?['startTime']", + "timerjobid": "@triggerBody()['timerjobid']" + }, + "host": { + "triggerName": "manual", + "workflow": { + "id": "Microsoft.Logic/workflows/TimerJob" + } + } + } + } + }, + "runAfter": { + "Initialize_nextTime": [ + "Succeeded" + ] + }, + "else": { + "actions": { + "Cancelled": { + "runAfter": { + "Exceeded_Criteria_Response": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Cancelled" + } + }, + "Exceeded_Criteria_Response": { + "type": "Response", + "kind": "Http", + "inputs": { + "body": "Job completion criteria met.\nDetails: \nEither\nendTime(@{triggerBody()?['jobRecurrence']?['endTime']}) < Next execution time(@{variables('nextTime')})\nOR\ncount(@{triggerBody()?['jobRecurrence']?['count']}) > execution count (@{triggerBody()?['jobStatus']?['executionCount']})", + "statusCode": 409 + } + } + } + }, + "expression": { + "and": [ + { + "or": [ + { + "equals": [ + "@coalesce(triggerBody()?['jobRecurrence']?['endTime'],-1)", + -1 + ] + }, + { + "less": [ + "@variables('nextTime')", + "@{triggerBody()?['jobRecurrence']?['endTime']}" + ] + } + ] + }, + { + "or": [ + { + "equals": [ + "@coalesce(triggerBody()?['jobRecurrence']?['count'],-1)", + -1 + ] + }, + { + "greater": [ + "@coalesce(triggerBody()?['jobRecurrence']?['count'],1)", + "@coalesce(triggerBody()?['jobStatus']?['executionCount'],0)" + ] + } + ] + } + ] + }, + "type": "If" + }, + "Initialize_nextTime": { + "runAfter": { + "Initialize_startTime": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "nextTime", + "type": "string", + "value": "@{addToTime(coalesce(triggerBody()?['jobStatus']?['lastExecutionTime'],variables('startTime')),triggerBody()['jobRecurrence']['interval'],triggerBody()['jobRecurrence']['frequency'])}" + } + ] + } + }, + "Initialize_startTime": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "startTime", + "type": "string", + "value": "@{if(less(coalesce(triggerBody()?['startTime'],utcNow()),utcNow()),utcNow(),coalesce(triggerBody()?['startTime'],utcNow()))}" + } + ] + } + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + }, + { + "name": "TimerJob", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "LogicApp" + }, + "apiVersion": "2019-05-01", + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "triggers": { + "manual": { + "correlation": { + "clientTrackingId": "@triggerBody()['timerjobid']" + }, + "type": "Request", + "kind": "Http", + "inputs": { + "schema": { + "properties": { + "jobRecurrence": { + "properties": { + "count": { + "minimum": -1, + "title": "count (jobRecurrence)", + "type": "integer" + }, + "endTime": { + "title": "endTime (jobRecurrence)", + "type": "string" + }, + "frequency": { + "enum": [ + "second", + "minute", + "hour", + "day", + "week", + "month" + ], + "title": "frequency (jobRecurrence)", + "type": "string" + }, + "interval": { + "title": "interval (jobRecurrence)", + "type": "integer" + } + }, + "required": [ + "frequency", + "interval" + ], + "type": "object" + }, + "jobStatus": { + "properties": { + "executionCount": { + "title": "executionCount (jobStatus)", + "type": "integer" + }, + "faultedCount": { + "title": "faultedCount (jobStatus)", + "type": "integer" + }, + "lastExecutionTime": { + "title": "lastExecutionTime (jobStatus)", + "type": "string" + }, + "nextExecutionTime": { + "title": "nextExecutionTime (jobStatus)", + "type": "string" + } + }, + "required": [ + "nextExecutionTime" + ], + "type": "object" + }, + "startTime": { + "type": "string" + }, + "timerjobid": { + "type": "string" + } + }, + "required": [ + "timerjobid", + "jobRecurrence", + "jobStatus" + ], + "type": "object" + } + } + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "nestedTemplate", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Logic/workflows/CreateTimerJob" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "name": "TimerJob", + "type": "Microsoft.Logic/workflows", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "LogicApp" + }, + "apiVersion": "2019-05-01", + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "triggers": { + "manual": { + "correlation": { + "clientTrackingId": "@triggerBody()['timerjobid']" + }, + "type": "Request", + "kind": "Http", + "inputs": { + "schema": { + "properties": { + "jobRecurrence": { + "properties": { + "count": { + "minimum": -1, + "title": "count (jobRecurrence)", + "type": "integer" + }, + "endTime": { + "title": "endTime (jobRecurrence)", + "type": "string" + }, + "frequency": { + "enum": [ + "second", + "minute", + "hour", + "day", + "week", + "month" + ], + "title": "frequency (jobRecurrence)", + "type": "string" + }, + "interval": { + "title": "interval (jobRecurrence)", + "type": "integer" + } + }, + "required": [ + "frequency", + "interval" + ], + "type": "object" + }, + "jobStatus": { + "properties": { + "executionCount": { + "title": "executionCount (jobStatus)", + "type": "integer" + }, + "faultedCount": { + "title": "faultedCount (jobStatus)", + "type": "integer" + }, + "lastExecutionTime": { + "title": "lastExecutionTime (jobStatus)", + "type": "string" + }, + "nextExecutionTime": { + "title": "nextExecutionTime (jobStatus)", + "type": "string" + } + }, + "required": [ + "nextExecutionTime" + ], + "type": "object" + }, + "startTime": { + "type": "string" + }, + "timerjobid": { + "type": "string" + } + }, + "required": [ + "timerjobid", + "jobRecurrence", + "jobStatus" + ], + "type": "object" + } + } + } + }, + "actions": { + "CreateTimerJob": { + "runAfter": { + "On_Error": [ + "Succeeded", + "Skipped", + "Failed", + "TimedOut" + ] + }, + "type": "Workflow", + "inputs": { + "body": { + "jobRecurrence": { + "count": "@triggerBody()?['jobRecurrence']?['count']", + "endTime": "@triggerBody()?['jobRecurrence']?['endTime']", + "frequency": "@triggerBody()['jobRecurrence']['frequency']", + "interval": "@triggerBody()['jobRecurrence']['interval']" + }, + "jobStatus": { + "executionCount": "@add(1,coalesce(triggerBody()?['jobStatus']?['executionCount'],0))", + "faultedCount": "@variables('faultedCount')", + "lastExecutionTime": "@triggerBody()?['jobStatus']?['nextExecutionTime']" + }, + "startTime": "@triggerBody()?['startTime']", + "timerjobid": "@triggerBody()['timerjobid']" + }, + "host": { + "triggerName": "manual", + "workflow": { + "id": "Microsoft.Logic/workflows/CreateTimerJob" + } + } + } + }, + "Delay_until_nextExecutionTime": { + "runAfter": { + "Response": [ + "Succeeded" + ] + }, + "type": "Wait", + "inputs": { + "until": { + "timestamp": "@triggerBody()?['jobStatus']?['nextExecutionTime']" + } + } + }, + "If_CreateTimerJob_failed_and_no_next_recurrence": { + "runAfter": { + "CreateTimerJob": [ + "Failed" + ] + }, + "else": { + "actions": { + "Create_next_job_error_failed": { + "type": "Terminate", + "inputs": { + "runError": { + "message": "Failed to create the next timer job" + }, + "runStatus": "Failed" + } + } + } + }, + "expression": { + "and": [ + { + "equals": [ + "@actionOutputs('CreateTimerJob')['statusCode']", + 409 + ] + } + ] + }, + "type": "If", + "description": "If CreateTimerJob fails with a 409 (conflict) then recurrence completion criteria is met" + }, + "Increment_faultedCount": { + "runAfter": { + "Job": [ + "Failed", + "TimedOut" + ] + }, + "type": "IncrementVariable", + "inputs": { + "name": "faultedCount", + "value": 1 + } + }, + "Initialize_faultedCount": { + "runAfter": { + "Delay_until_nextExecutionTime": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "faultedCount", + "type": "Integer", + "value": "@triggerBody()?['jobStatus']?['faultedCount']" + } + ] + } + }, + "Job": { + "actions": { + "HTTP": { + "type": "Http", + "inputs": { + "method": "GET", + "uri": "https://api.chucknorris.io/jokes/random?category=dev" + } + } + }, + "runAfter": { + "Initialize_faultedCount": [ + "Succeeded" + ] + }, + "type": "Scope", + "description": "Executes the set of actions defined for the timer job" + }, + "On_Error": { + "runAfter": { + "Increment_faultedCount": [ + "Succeeded" + ] + }, + "type": "Scope", + "description": "Executes the set of actions if main job actions has fails to execute" + }, + "Response": { + "type": "Response", + "kind": "Http", + "inputs": { + "body": { + "jobid": "@workflow().run.name" + }, + "schema": { + "properties": { + "jobid": { + "type": "string" + } + }, + "type": "object" + }, + "statusCode": 200 + } + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1403 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1403 new file mode 100644 index 0000000..8e70279 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1403 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907503, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1403", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datalakestore/accounts", + "microsoft.resources/deployments", + "microsoft.datalakeanalytics/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1403", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adlAnalyticsName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Analytics account to create." + }, + "value": "GEN-UNIQUE" + }, + "adlStoreName": { + "type": "string", + "metadata": { + "description": "The name of the Data Lake Store account to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + }, + "value": "eastus2" + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.DataLakeStore/accounts", + "location": "eastus2", + "apiVersion": "2016-11-01" + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.DataLakeAnalytics/accounts", + "location": "eastus2", + "apiVersion": "2016-11-01", + "dependsOn": [ + "Microsoft.DataLakeStore/accounts/GEN-UNIQUE" + ], + "properties": { + "defaultDataLakeStoreAccount": "GEN-UNIQUE", + "dataLakeStoreAccounts": [ + { + "name": "GEN-UNIQUE" + } + ] + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "ml", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/machine-learning-workspace/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus2" + } + } + } + } + ], + "outputs": { + "adlAnalyticsName": { + "type": "string", + "value": "[parameters('adlAnalyticsName')]" + }, + "workspaceName": { + "type": "string", + "value": "[reference('ml').outputs.workspaceName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1404 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1404 new file mode 100644 index 0000000..01f9633 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1404 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/azuredeploy.parameters.json" + ], + "timestamp": 1642962907510, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-adla/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1404", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1404", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Workspace which will contain this compute." + }, + "value": "GET-PREREQ-workspaceName" + }, + "computeName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Compute cluster." + }, + "value": "GEN-UNIQUE-8" + }, + "adlAnalyticsName": { + "type": "string", + "metadata": { + "description": "The name of the datalake analytics account to attach the compute target to." + }, + "value": "GET-PREREQ-adlAnalyticsName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + }, + "value": "eastus2" + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2018-11-19", + "name": "GET-PREREQ-workspaceName/GEN-UNIQUE-8", + "location": "eastus2", + "properties": { + "computeType": "DataLakeAnalytics", + "resourceId": "Microsoft.DataLakeAnalytics/accounts/GET-PREREQ-adlAnalyticsName" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1405 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1405 new file mode 100644 index 0000000..d14d69e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1405 @@ -0,0 +1,216 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907517, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1405", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerservice/managedclusters", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1405", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the Managed Cluster resource." + }, + "value": "GEN-UNIQUE" + }, + "osDiskSizeGB": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "Disk size (in GB) to provision for each of the agent pool nodes. This value minimun 30 to 1023. Specifying 100 is the default value required to be attached to Azure ML." + }, + "minValue": 30, + "maxValue": 1023 + }, + "agentCount": { + "type": "int", + "defaultValue": 6, + "metadata": { + "description": "The number of nodes for the cluster." + }, + "minValue": 1, + "maxValue": 50 + }, + "podCidr": { + "type": "string", + "defaultValue": "10.244.0.0/16", + "metadata": { + "description": "A CIDR notation IP range from which to assign pod IPs when kubenet is used" + } + }, + "serviceCidr": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs." + } + }, + "dnsServiceIP": { + "type": "string", + "defaultValue": "10.0.0.10", + "metadata": { + "description": "An IP address assigned to the Kubernetes DNS service" + } + }, + "dockerBridgeCidr": { + "type": "string", + "defaultValue": "172.17.0.1/16", + "metadata": { + "description": "A specific IP address and netmask for the Docker bridge, using standard CIDR notation." + } + }, + "agentVMSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "The size of the VM instances." + } + }, + "kuberneteVersion": { + "type": "string", + "defaultValue": "1.20.7", + "metadata": { + "description": "Supported Azure Kubernetes version" + } + }, + "clientId": { + "type": "string", + "defaultValue": "msi", + "metadata": { + "description": "The client id to use for this aks cluster" + } + }, + "linuxAdminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Linux Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "sshRSAPublicKey": { + "type": "string", + "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'" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Free" + }, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "kubernetesVersion": "1.20.7", + "dnsPrefix": "GEN-UNIQUE", + "agentPoolProfiles": [ + { + "name": "agentpool", + "count": 6, + "vmSize": "Standard_D4_v3", + "osDiskSizeGB": 100, + "maxPods": 110, + "type": "VirtualMachineScaleSets", + "orchestratorVersion": "1.20.7", + "mode": "System", + "osType": "Linux" + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "servicePrincipalProfile": { + "clientId": "msi" + }, + "nodeResourceGroup": "[concat('MC_', resourceGroup().name,'_', parameters('clusterName'), '_',parameters('location'))]", + "enableRBAC": true, + "networkProfile": { + "networkPlugin": "kubenet", + "loadBalancerSku": "Basic", + "podCidr": "10.244.0.0/16", + "serviceCidr": "10.0.0.0/16", + "dnsServiceIP": "10.0.0.10", + "dockerBridgeCidr": "172.17.0.1/16", + "outboundType": "loadBalancer" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "ml", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/machine-learning-workspace/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": { + "clusterName": { + "type": "string", + "value": "[parameters('clusterName')]" + }, + "workspaceName": { + "type": "string", + "value": "[reference('ml').outputs.workspaceName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1406 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1406 new file mode 100644 index 0000000..12abcdc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1406 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/azuredeploy.parameters.json" + ], + "timestamp": 1642962907525, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-aks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1406", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1406", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Workspace which will contain this compute." + }, + "value": "GET-PREREQ-workspaceName" + }, + "computeName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Compute cluster." + }, + "value": "GEN-UNIQUE-8" + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the aks cluster to attach the compute target to." + }, + "value": "GET-PREREQ-clusterName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2021-01-01", + "name": "GET-PREREQ-workspaceName/GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "computeType": "AKS", + "resourceId": "Microsoft.ContainerService/managedClusters/GET-PREREQ-clusterName" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1407 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1407 new file mode 100644 index 0000000..b6ca0b8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1407 @@ -0,0 +1,264 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907531, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1407", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1407", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "projectName": { + "type": "string", + "metadata": { + "description": "Specifies a name for generating resource names." + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the virtual machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Specifies a username for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "adminPublicKey": { + "type": "string", + "metadata": { + "description": "Specifies the SSH rsa public key file as a string. Use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vNetName": "GEN-UNIQUE-8-vnet", + "vNetAddressPrefixes": "10.0.0.0/16", + "vNetSubnetName": "default", + "vNetSubnetAddressPrefix": "10.0.0.0/24", + "vmName": "GEN-UNIQUE-8-vm", + "publicIPAddressName": "GEN-UNIQUE-8-ip", + "networkInterfaceName": "GEN-UNIQUE-8-nic", + "networkSecurityGroupName": "GEN-UNIQUE-8-nsg" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "ml", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/machine-learning-workspace/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh_rule", + "properties": { + "description": "Locks inbound down to ssh default port 22.", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 123, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8-ip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + }, + "sku": { + "name": "Basic" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8-vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8-ip", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8-vnet", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8-ip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8-vnet/default" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8-vm", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "adminPassword", + "linuxConfiguration": { + "disablePasswordAuthentication": false, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "fromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic" + } + ] + } + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[reference('ml').outputs.workspaceName.value]" + }, + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "vmName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1408 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1408 new file mode 100644 index 0000000..0aec2af --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1408 @@ -0,0 +1,104 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/azuredeploy.parameters.json" + ], + "timestamp": 1642962907540, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-dsvm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1408", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1408", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "computeName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Compute." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the virtual machine." + }, + "value": "GET-PREREQ-vmName" + }, + "username": { + "type": "securestring", + "metadata": { + "description": "The username needed to access the virtual machine." + }, + "value": "GET-PREREQ-adminUsername" + }, + "sshPort": { + "defaultValue": 22, + "type": "int", + "metadata": { + "description": "The exposed port for the resource. Defaults to 22." + } + }, + "password": { + "type": "securestring", + "metadata": { + "description": "The password needed to access the virtual machine." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Workspace which will contain this compute." + }, + "value": "GET-PREREQ-workspaceName" + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2021-04-01", + "name": "GET-PREREQ-workspaceName/GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "computeType": "VirtualMachine", + "resourceId": "Microsoft.Compute/virtualMachines/GET-PREREQ-vmName", + "properties": { + "sshPort": 22, + "administratorAccount": { + "username": "GET-PREREQ-adminUsername", + "password": "password" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1409 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1409 new file mode 100644 index 0000000..115600c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1409 @@ -0,0 +1,295 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907548, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1409", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1409", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE-8" + }, + "clusterType": { + "type": "string", + "allowedValues": [ + "hadoop", + "intractivehive", + "hbase", + "storm", + "spark" + ], + "metadata": { + "description": "The type of the HDInsight cluster to create." + }, + "value": "hadoop" + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "These name of key vault to associate with machine learning workspace." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "These name of with Azure Machine Learning Workspace." + }, + "value": "GEN-UNIQUE" + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "These name of application insights to associate with machine learning workspace." + } + }, + "clusterLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HeadNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "WorkerNodeVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "This is the worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + } + }, + "variables": { + "defaultStorageAccount": { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Standard_LRS" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "(defaultStorageAccount).name", + "location": "[resourceGroup().location]", + "apiVersion": "2021-01-01", + "sku": { + "name": "(defaultStorageAccount).type" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name" + ], + "identity": { + "type": "systemAssigned" + }, + "sku": { + "tier": "basic", + "name": "basic" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + }, + { + "name": "GEN-UNIQUE-8", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/(defaultStorageAccount).name" + ], + "properties": { + "clusterVersion": "3.6", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name)).primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-8", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-06-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "sshPassword" + } + } + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "sshPassword" + } + } + } + ] + } + } + } + ], + "outputs": { + "sshUserName": { + "type": "string", + "value": "[parameters('sshUserName')]" + }, + "workspaceName": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "clusterName": { + "type": "string", + "value": "[parameters('clusterName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT141 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT141 new file mode 100644 index 0000000..996f7d6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT141 @@ -0,0 +1,82 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/shared-resources.json" + ], + "timestamp": 1642962888391, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/test/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT141", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT141", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "description": "Network settings object" + } + }, + "loadBalancerType": { + "type": "string", + "defaultValue": "internal", + "allowedValues": [ + "internal", + "external" + ], + "metadata": { + "description": "Load balancer setting (internal/external)" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "description": "Storage Account Settings" + } + }, + "ilbIpAddress": { + "type": "string", + "metadata": { + "description": "The static IP address to use with the internal load balancer configuration" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "networkSettings": { + "type": "object", + "value": "[parameters('networkSettings')]" + }, + "loadBalancerType": { + "type": "string", + "value": "[parameters('loadBalancerType')]" + }, + "storageSettings": { + "type": "object", + "value": "[parameters('storageSettings')]" + }, + "ilbIpAddress": { + "type": "string", + "value": "[parameters('ilbIpAddress')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1410 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1410 new file mode 100644 index 0000000..10dc067 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1410 @@ -0,0 +1,104 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/azuredeploy.parameters.json" + ], + "timestamp": 1642962907559, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-attach-hdi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1410", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1410", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "computeName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Compute." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "The clusterName of the Azure HDInsight cluster." + }, + "value": "GET-PREREQ-clusterName" + }, + "username": { + "type": "securestring", + "metadata": { + "description": "The username needed to access the virtual machine." + }, + "value": "GET-PREREQ-sshUserName" + }, + "sshPort": { + "defaultValue": 22, + "type": "int", + "metadata": { + "description": "The exposed port for the resource. Defaults to 22." + } + }, + "password": { + "type": "securestring", + "metadata": { + "description": "The password needed to access the virtual machine." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Workspace which will contain this compute." + }, + "value": "GET-PREREQ-workspaceName" + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2020-01-01", + "name": "GET-PREREQ-workspaceName/GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "computeType": "HDInsight", + "resourceId": "Microsoft.HDInsight/clusters/GET-PREREQ-clusterName", + "properties": { + "sshPort": 22, + "administratorAccount": { + "username": "GET-PREREQ-sshUserName", + "password": "password" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1411 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1411 new file mode 100644 index 0000000..8d8799b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1411 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907567, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1411", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1411", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('keyvault',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to be created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('insights',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('storage',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('keyvault',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('insights',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('insights',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('keyvault',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('storage',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('storage',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('keyvault',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('insights',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1412 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1412 new file mode 100644 index 0000000..1162ff7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1412 @@ -0,0 +1,202 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/azuredeploy.parameters.json" + ], + "timestamp": 1642962907576, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-akscompute/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1412", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1412", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "computeName": { + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + }, + "value": "GEN-UNIQUE-8" + }, + "dnsServiceIP": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "vnetResourceGroupName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the resource group which holds the VNET to which you want to inject your compute in." + } + }, + "vnetName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the vnet which you want to inject your compute in." + } + }, + "subnetName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the subnet inside the VNET which you want to inject your compute in." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "dockerBridgeCidr": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "serviceCidr": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "agentVmSize": { + "defaultValue": "Standard_D4_v3", + "type": "string", + "metadata": { + "description": "The Azure VM size of the agent VM nodes. This cannot be changed once the cluster is created." + } + }, + "agentCount": { + "defaultValue": 6, + "type": "Int", + "metadata": { + "description": "The number of agent nodes in the Container Service.." + } + }, + "cert": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The SSL cert data in PEM format encoded as base64 string" + } + }, + "key": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The SSL key data in PEM format encoded as base64 string." + } + }, + "cname": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The CName of the cert." + } + }, + "leafDomainLabel": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The leaf domain label of public endpoint." + } + }, + "overwriteExistingDomain": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "Value indicating whether to overwrite existing domain label." + } + }, + "renew": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "Value indicating whether to renew certificate." + } + }, + "sslStatus": { + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled", + "Auto" + ], + "type": "string", + "metadata": { + "description": "SSL status. Allowed values are Enabled and Disabled." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + }, + "value": "GET-PREREQ-workspaceName" + } + }, + "variables": { + "aksNetworkingConfiguration": { + "subnetId": "parameters('vnetResourceGroupName')/Microsoft.Network/virtualNetworks/subnets/ parameters('vnetName')/ parameters('subnetName')", + "serviceCidr": "", + "dnsServiceIP": "", + "dockerBridgeCidr": "" + }, + "sslConfiguration": { + "status": "Disabled", + "cert": "", + "key": "", + "cname": "", + "leafDomainLabel": "", + "overwriteExistingDomain": false, + "renew": false + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2021-01-01", + "name": "GET-PREREQ-workspaceName/GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "computeType": "AKS", + "properties": { + "agentVmSize": "Standard_D4_v3", + "agentCount": 6, + "sslConfiguration": "[if(equals(parameters('sslStatus'),'Disabled'), json('null'), variables('sslConfiguration'))]", + "aksNetworkingConfiguration": "[if(and(not(empty(parameters('vnetResourceGroupName'))),not(empty(parameters('vnetName'))),not(empty(parameters('subnetName'))),not(empty(parameters('serviceCidr'))),not(empty(parameters('dnsServiceIP'))),not(empty(parameters('dockerBridgeCidr')))), variables('aksNetworkingConfiguration'), json('null'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1413 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1413 new file mode 100644 index 0000000..df19eda --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1413 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907583, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1413", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1413", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1414 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1414 new file mode 100644 index 0000000..4572cfd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1414 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/azuredeploy.parameters.json" + ], + "timestamp": 1642962907590, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-amlcompute/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1414", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1414", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Workspace which will contain this compute." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning Compute cluster." + }, + "value": "GEN-UNIQUE-8" + }, + "minNodeCount": { + "defaultValue": 0, + "type": "int", + "metadata": { + "description": "The minimum number of nodes to use on the cluster. If not specified, defaults to 0" + } + }, + "maxNodeCount": { + "defaultValue": 1, + "type": "int", + "metadata": { + "description": " The maximum number of nodes to use on the cluster. If not specified, defaults to 4." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + }, + "adminUserName": { + "type": "securestring", + "metadata": { + "description": "The name of the administrator user account which can be used to SSH into nodes. It must only contain lower case alphabetic characters [a-z]." + }, + "value": "cannothavenums" + }, + "adminUserPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the administrator user account." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "defaultValue": "Standard_D4s_v3", + "type": "string", + "metadata": { + "description": " The size of agent VMs. More details can be found here: https://aka.ms/azureml-vm-details." + } + }, + "vnetResourceGroupName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the resource group which holds the VNET to which you want to inject your compute in." + } + }, + "vnetName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the vnet which you want to inject your compute in." + } + }, + "subnetName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the subnet inside the VNET which you want to inject your compute in." + } + } + }, + "variables": { + "subnet": { + "id": "parameters('vnetResourceGroupName')/Microsoft.Network/virtualNetworks/subnets/ parameters('vnetName')/ parameters('subnetName')" + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-8", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "properties": { + "computeType": "AmlCompute", + "properties": { + "vmSize": "Standard_D4s_v3", + "scaleSettings": { + "minNodeCount": 0, + "maxNodeCount": 1 + }, + "userAccountCredentials": { + "adminUserName": "cannothavenums", + "adminUserPassword": "GEN-PASSWORD" + }, + "subnet": "[if(and(not(empty(parameters('vnetResourceGroupName'))),not(empty(parameters('vnetName'))),not(empty(parameters('subnetName')))), variables('subnet'), json('null'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1415 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1415 new file mode 100644 index 0000000..192659b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1415 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907597, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1415", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1415", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1416 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1416 new file mode 100644 index 0000000..4d51f20 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1416 @@ -0,0 +1,235 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/azuredeploy.parameters.json" + ], + "timestamp": 1642962907604, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-compute-create-computeinstance/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1416", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1416", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace to which compute instance will be deployed" + }, + "value": "GET-PREREQ-workspaceName" + }, + "computeName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning compute instance to be deployed" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "Location of the Azure Machine Learning workspace." + } + }, + "vmSize": { + "defaultValue": "Standard_DS3_v2", + "type": "string", + "metadata": { + "description": "The VM size for compute instance" + } + }, + "vnetResourceGroupName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the resource group which holds the VNET to which you want to inject your compute instance in." + } + }, + "vnetName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the vnet which you want to inject your compute instance in." + } + }, + "subnetName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the subnet inside the VNET which you want to inject your compute instance in." + } + }, + "tenantId": { + "defaultValue": "[subscription().tenantId]", + "type": "string", + "metadata": { + "description": "AAD tenant id of the user to which compute instance is assigned to" + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "AAD object id of the user to which compute instance is assigned to" + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "inlineCommand": { + "type": "string", + "defaultValue": "ls", + "metadata": { + "description": "inline command" + } + }, + "creationScript.cmdArguments": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the cmd arguments of the creation script in the storage volume of the Compute Instance." + } + }, + "schedules": { + "type": "object", + "metadata": { + "description": "Specifies the schedule policies for the compute instance" + }, + "value": { + "computeStartStop": [ + { + "triggerType": "Cron", + "cron": { + "timeZone": "UTC", + "expression": "0 18 * * *" + }, + "action": "Stop", + "status": "Enabled" + }, + { + "triggerType": "Cron", + "cron": { + "timeZone": "UTC", + "expression": "0 8 * * *" + }, + "action": "Start", + "status": "Enabled" + }, + { + "triggerType": "Recurrence", + "recurrence": { + "frequency": "Day", + "interval": 1, + "timeZone": "UTC", + "schedule": { + "hours": [ + 17 + ], + "minutes": [ + 0 + ] + } + }, + "action": "Stop", + "status": "Enabled" + } + ] + } + } + }, + "variables": { + "subnet": { + "id": "parameters('vnetResourceGroupName')/Microsoft.Network/virtualNetworks/subnets/ parameters('vnetName')/ parameters('subnetName')" + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "name": "GET-PREREQ-workspaceName/GEN-UNIQUE-8", + "apiVersion": "2021-07-01", + "location": "[resourceGroup().location]", + "properties": { + "computeType": "ComputeInstance", + "properties": { + "vmSize": "Standard_DS3_v2", + "subnet": "[if(and(not(empty(parameters('vnetResourceGroupName'))),not(empty(parameters('vnetName'))),not(empty(parameters('subnetName')))), variables('subnet'), json('null'))]", + "personalComputeInstanceSettings": { + "assignedUser": { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "[subscription().tenantId]" + } + }, + "setupScripts": { + "scripts": { + "creationScript": { + "scriptSource": "inline", + "scriptData": "[base64(parameters('inlineCommand'))]", + "scriptArguments": "" + } + } + }, + "schedules": { + "computeStartStop": [ + { + "triggerType": "Cron", + "cron": { + "timeZone": "UTC", + "expression": "0 18 * * *" + }, + "action": "Stop", + "status": "Enabled" + }, + { + "triggerType": "Cron", + "cron": { + "timeZone": "UTC", + "expression": "0 8 * * *" + }, + "action": "Start", + "status": "Enabled" + }, + { + "triggerType": "Recurrence", + "recurrence": { + "frequency": "Day", + "interval": 1, + "timeZone": "UTC", + "schedule": { + "hours": [ + 17 + ], + "minutes": [ + 0 + ] + } + }, + "action": "Stop", + "status": "Enabled" + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1417 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1417 new file mode 100644 index 0000000..901869a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1417 @@ -0,0 +1,204 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907612, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1417", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.machinelearningservices/workspaces/datastores", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1417", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "datastoreName": { + "type": "string", + "defaultValue": "[concat('dstore',uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "The datastore name." + }, + "value": "GEN-UNIQUE-10" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "containerName": { + "type": "string", + "defaultValue": "[concat('container',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The container name." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "name": "default/[concat('container',uniqueString(resourceGroup().id))]", + "dependsOn": [ + "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]" + ] + } + ] + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, deployment().name))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GEN-UNIQUE/GEN-UNIQUE-10", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, deployment().name))]" + ], + "properties": { + "DataStoreType": "blob", + "AccountName": "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "ContainerName": "[concat('container',uniqueString(resourceGroup().id))]", + "AccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "datastoreResource": { + "type": "string", + "value": "[parameters('datastoreName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1418 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1418 new file mode 100644 index 0000000..0851f31 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1418 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/azuredeploy.parameters.json" + ], + "timestamp": 1642962907619, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-relative-path/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1418", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1418", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datasetName": { + "type": "string", + "metadata": { + "description": "The name of the dataset." + }, + "value": "GEN-UNIQUE-12" + }, + "datasetDescription": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The description for the dataset." + } + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The datastore name." + }, + "value": "GET-PREREQ-datastoreResource" + }, + "relativePath": { + "type": "string", + "metadata": { + "description": "Path within the datastore" + }, + "value": "GEN-UNIQUE-4" + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Optional : Provide JSON object with 'key,value' pairs to add as tags on dataset. Example- {\"sampleTag1\": \"tagValue1\", \"sampleTag2\": \"tagValue2\"}" + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : Skip validation that ensures data can be loaded from the dataset before registration." + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datasets", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "SkipValidation": true, + "DatasetType": "file", + "Parameters": { + "Path": { + "DataPath": { + "RelativePath": "GEN-UNIQUE-4", + "DatastoreName": "GET-PREREQ-datastoreResource" + } + } + }, + "Registration": { + "Description": "", + "Tags": {} + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1419 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1419 new file mode 100644 index 0000000..a205025 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1419 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907626, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1419", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1419", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT142 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT142 new file mode 100644 index 0000000..b25d830 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT142 @@ -0,0 +1,1455 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch/azuredeploy.json", + "/application-workloads/elastic/elasticsearch/azuredeploy.parameters.json" + ], + "timestamp": 1642962888455, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch/azuredeploy.json", + "/application-workloads/elastic/elasticsearch/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT142", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT142", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Admin password used when provisioning virtual machines" + }, + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "es-vnet", + "metadata": { + "description": "Virtual Network" + } + }, + "OS": { + "type": "string", + "defaultValue": "ubuntu", + "allowedValues": [ + "ubuntu", + "centos", + "windows" + ], + "metadata": { + "description": "The operating system to deploy Elasticsearch cluster on" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Whether to use a password or ssh key (Linux only) as authentication" + } + }, + "sshPublicKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The public ssh key to use for authentication (Linux only)" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "loadBalancerType": { + "type": "string", + "defaultValue": "internal", + "allowedValues": [ + "internal", + "external" + ], + "metadata": { + "description": "Setup the load balancer internal or external. If you are setting up Elasticsearch on an external endpoint you will need to secure your nodes with a product like Elasticsearch Shield" + } + }, + "jumpboxEnabled": { + "type": "string", + "defaultValue": "yes", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Optionally add a virtual machine to the deployment which you can use to connect and manage virtual machines on the internal network" + } + }, + "vmClientNodeCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "metadata": { + "description": "Number of Elasticsearch client nodes to provision (Setting this to zero puts the data nodes on the load balancer)" + } + }, + "vmSizeClientNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D8s_v3" + ], + "metadata": { + "description": "Size of the Elasticsearch cluster client nodes" + } + }, + "vmSizeMasterNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D8s_v3" + ], + "metadata": { + "description": "Size of the Elasticsearch master nodes" + } + }, + "vmSizeDataNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3" + ], + "metadata": { + "description": "Size of the Elasticsearch data nodes" + } + }, + "vmDataNodeCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "esClusterName": { + "type": "string", + "defaultValue": "elasticsearch", + "metadata": { + "description": "The name of the Elasticsearch cluster" + } + }, + "esVersion": { + "type": "string", + "defaultValue": "2.3.1", + "allowedValues": [ + "2.3.1", + "2.2.2", + "2.1.2", + "1.7.5" + ], + "metadata": { + "description": "Elasticsearch version to install" + } + }, + "afs": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Setup an Azure File Service share to store the Elasticsearch data (ubuntu, elasticsearch 2.x only)" + } + }, + "marvel": { + "type": "string", + "defaultValue": "yes", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install the Marvel agent in the cluster" + } + }, + "marvelCluster": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Build a standalone 3 node cluster for Marvel data" + } + }, + "kibana": { + "type": "string", + "defaultValue": "yes", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Provision a machine with Kibana on it" + } + }, + "sense": { + "type": "string", + "defaultValue": "yes", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install the Sense plugin (2.x only, requires Kibana)" + } + }, + "jmeterAgent": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install the JMeter Server Agent on each node (Ubuntu only)" + } + }, + "cloudAzure": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install the cloud-azure plugin, which enables Azure backups" + } + }, + "cloudAzureStorageAccount": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The name of the storage account to use for the cloud-azure plugin" + } + }, + "cloudAzureStorageKey": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The storage account key used to access the storage account listed above" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "Change this value to your repo name if deploying from a fork" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "nestedTemplatesFolderName": "nestedtemplates", + "sharedScriptsLocation": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/", + "storageAccountPrefix": "[concat(substring(uniqueString(resourceGroup().id, parameters('esClusterName')), 0, 6), substring(parameters('esClusterName'), 0, 3))]", + "storageAccountNameAFS": "[concat(variables('storageAccountPrefix'), 'afs')]", + "storageAccountNameShared": "[concat(variables('storageAccountPrefix'), 'sh')]", + "masterNodesIpPrefix": "10.0.0.1", + "marvelNodesIpPrefix": "10.0.2.2", + "kibanaIPPrefix": { + "yes": "10.0.2.2", + "no": "10.0.0.1" + }, + "kibanaIP": "[concat('http://', variables('kibanaIPPrefix')[parameters('marvelCluster')], '0:9200')]", + "networkSettings": { + "virtualNetworkName": "es-vnet", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "master": { + "name": "master", + "prefix": "10.0.0.0/24", + "vnet": "es-vnet" + }, + "data": { + "name": "data", + "prefix": "10.0.1.0/24", + "vnet": "es-vnet" + }, + "other": { + "name": "other", + "prefix": "10.0.2.0/24", + "vnet": "es-vnet" + } + } + }, + "esSettings": { + "clusterName": "elasticsearch", + "marvelClusterName": "elasticsearch-marvel", + "version": "2.3.1", + "discoveryHosts": "10.0.0.1-3", + "marvelHosts": "10.0.2.2-3" + }, + "sharedTemplateFileName": "shared-resources.json", + "masterTemplateFileName": "master-nodes-resources.json", + "marvelTemplates": { + "yes": "marvel-nodes-resources.json", + "no": "empty-resources.json" + }, + "clientTemplates": [ + "empty-resources.json", + "client-nodes-resources.json" + ], + "marvelTemplateFileName": "(marvelTemplates)[parameters(marvelCluster)]", + "clientTemplateFileName": "(clientTemplates)[mod(add(parameters(vmClientNodeCount), 2), add(parameters(vmClientNodeCount), 1))]", + "lbBackEndPoolsAdded": { + "backendPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/es-load-balancer/LBBE" + } + ] + }, + "lbBackendPoolsRemoved": { + "backendPools": [] + }, + "dataLBSettingOptions": [ + { + "backendPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/es-load-balancer/LBBE" + } + ] + }, + { + "backendPools": [] + } + ], + "dataLBSettings": "(dataLBSettingOptions)[mod(add(parameters(vmClientNodeCount), 2), add(parameters(vmClientNodeCount), 1))]", + "jumpboxTemplate": { + "yes": "jumpbox-resources.json", + "no": "empty-resources.json" + }, + "jumpboxTemplateFileName": "(jumpboxTemplate)[parameters(jumpboxEnabled)]", + "senseParam": { + "yes": " -s ", + "no": "" + }, + "marvelParam": { + "ubuntu": { + "yes": " -m ", + "no": "" + }, + "centos": { + "yes": " -m ", + "no": "" + }, + "windows": { + "yes": " -m ", + "no": "" + } + }, + "afsParam": { + "ubuntu": { + "yes": "[concat(' -a ', variables('storageAccountNameAFS'), ' -c -k ')]", + "no": "[concat(' -a ', variables('storageAccountNameAFS'), ' -k ')]" + }, + "centos": { + "yes": "", + "no": "" + }, + "windows": { + "yes": "", + "no": "" + } + }, + "marvelExportParam": { + "ubuntu": { + "yes": " -e 10.0.2.2-3", + "no": "" + }, + "centos": { + "yes": " -e 10.0.2.2-3", + "no": "" + }, + "windows": { + "yes": " -marvelEndpoints 10.0.2.2-3", + "no": "" + } + }, + "jmeterParam": { + "yes": " -j ", + "no": "" + }, + "cloudAzureParam": { + "yes": " -po parameters('cloudAzureStorageAccount') -r parameters('cloudAzureStorageKey') ", + "no": "" + }, + "cloudAzureParamValue": "(cloudAzureParam)[parameters(cloudAzure)]", + "marvelExportParamValue": "(marvelExportParam)[parameters(OS)][parameters(marvelCluster)]", + "senseParamValue": "(senseParam)[parameters(sense)]", + "marvelParamValue": "(marvelParam)[parameters(OS)][parameters(marvel)]", + "jmeterParamValue": "(jmeterParam)[parameters(jmeterAgent)]", + "afsParamValue": "(afsParam)[parameters(OS)][parameters(afs)]", + "kibanaTemplates": { + "yes": "kibana-resources.json", + "no": "empty-resources.json" + }, + "kibanaTemplateFileName": "(kibanaTemplates)[parameters(kibana)]", + "ubuntuScripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-ubuntu-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "centosScripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "windowsScripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-windows-install.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "authSet": { + "password": "GEN-PASSWORD", + "sshKey": "GEN-SSH-PUB-KEY", + "type": "sshPublicKey" + }, + "configurationObject": { + "password": {}, + "sshPublicKey": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "osFamily": { + "ubuntu": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": "(configurationObject)[parameters(authenticationType)]", + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-ubuntu-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -wn (esSettings).marvelClusterName -v (esSettings).version -d (esSettings).marvelHosts -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-ubuntu-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -xn (esSettings).clusterName -v (esSettings).version -d (esSettings).discoveryHosts(marvelParam)[parameters(OS)][parameters(marvel)](jmeterParam)[parameters(jmeterAgent)](cloudAzureParam)[parameters(cloudAzure)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)](afsParam)[parameters(OS)][parameters(afs)]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-ubuntu-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -yn (esSettings).clusterName -v (esSettings).version -d (esSettings).discoveryHosts(marvelParam)[parameters(OS)][parameters(marvel)](jmeterParam)[parameters(jmeterAgent)](cloudAzureParam)[parameters(cloudAzure)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)](afsParam)[parameters(OS)][parameters(afs)]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-ubuntu-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -zn (esSettings).clusterName -v (esSettings).version -d (esSettings).discoveryHosts(marvelParam)[parameters(OS)][parameters(marvel)](jmeterParam)[parameters(jmeterAgent)](cloudAzureParam)[parameters(cloudAzure)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)](afsParam)[parameters(OS)][parameters(afs)]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-ubuntu-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "bash kibana-install.sh -v (esSettings).version(marvelParam)[parameters(OS)][parameters(marvel)](senseParam)[parameters(sense)] -t [concat('http://', variables('kibanaIPPrefix')[parameters('marvelCluster')], '0:9200')]" + } + } + } + }, + "centos": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "linuxConfiguration": "(configurationObject)[parameters(authenticationType)]", + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-centos-install.sh -wn (esSettings).marvelClusterName -v (esSettings).version -d (esSettings).marvelHosts -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-centos-install.sh -xn (esSettings).clusterName -v (esSettings).version -d (esSettings).discoveryHosts(marvelParam)[parameters(OS)][parameters(marvel)](jmeterParam)[parameters(jmeterAgent)](cloudAzureParam)[parameters(cloudAzure)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)](afsParam)[parameters(OS)][parameters(afs)]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-centos-install.sh -yn (esSettings).clusterName -v (esSettings).version -d (esSettings).discoveryHosts(marvelParam)[parameters(OS)][parameters(marvel)](jmeterParam)[parameters(jmeterAgent)](cloudAzureParam)[parameters(cloudAzure)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)](afsParam)[parameters(OS)][parameters(afs)]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-centos-install.sh -zn (esSettings).clusterName -v (esSettings).version -d (esSettings).discoveryHosts(marvelParam)[parameters(OS)][parameters(marvel)](jmeterParam)[parameters(jmeterAgent)](cloudAzureParam)[parameters(cloudAzure)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)](afsParam)[parameters(OS)][parameters(afs)]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/kibana-centos-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "commandToExecute": "bash kibana-centos-install.sh -v (esSettings).version(marvelParam)[parameters(OS)][parameters(marvel)](senseParam)[parameters(sense)] -t [concat('http://', variables('kibanaIPPrefix')[parameters('marvelCluster')], '0:9200')]" + } + } + } + }, + "windows": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "linuxConfiguration": "", + "managementPort": "3389", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-windows-install.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell.exe -File elasticsearch-windows-install.ps1 -elasticSearchVersion (esSettings).version -elasticClusterName (esSettings).marvelClusterName -discoveryEndpoints (esSettings).marvelHosts -marvelOnlyNode -storageKey " + } + }, + "master": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-windows-install.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell.exe -File elasticsearch-windows-install.ps1 -elasticSearchVersion (esSettings).version -elasticClusterName (esSettings).clusterName -discoveryEndpoints (esSettings).discoveryHosts(cloudAzureParam)[parameters(cloudAzure)](marvelParam)[parameters(OS)][parameters(marvel)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)] -masterOnlyNode -storageKey " + } + }, + "client": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-windows-install.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell.exe -File elasticsearch-windows-install.ps1 -elasticSearchVersion (esSettings).version -elasticClusterName (esSettings).clusterName -discoveryEndpoints (esSettings).discoveryHosts(cloudAzureParam)[parameters(cloudAzure)](marvelParam)[parameters(OS)][parameters(marvel)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)] -clientOnlyNode -storageKey " + } + }, + "data": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elasticsearch-windows-install.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell.exe -File elasticsearch-windows-install.ps1 -elasticSearchVersion (esSettings).version -elasticClusterName (esSettings).clusterName -discoveryEndpoints (esSettings).discoveryHosts(cloudAzureParam)[parameters(cloudAzure)](marvelParam)[parameters(OS)][parameters(marvel)](marvelExportParam)[parameters(OS)][parameters(marvelCluster)] -dataOnlyNode -storageKey " + } + } + } + } + }, + "osSettings": "(osFamily)[parameters(OS)]", + "dataSkuSettings": { + "Standard_D2_v3": { + "dataDisks": 2, + "nodesPerStorageAccount": 6, + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v3": { + "dataDisks": 8, + "nodesPerStorageAccount": 3, + "storageAccountType": "Standard_LRS" + }, + "Standard_D8_v3": { + "dataDisks": 16, + "nodesPerStorageAccount": 2, + "storageAccountType": "Standard_LRS" + }, + "Standard_D2s_v3": { + "dataDisks": 2, + "nodesPerStorageAccount": 6, + "storageAccountType": "Premium_LRS" + }, + "Standard_D4s_v3": { + "dataDisks": 8, + "nodesPerStorageAccount": 4, + "storageAccountType": "Premium_LRS" + }, + "Standard_D8s_v3": { + "dataDisks": 16, + "nodesPerStorageAccount": 2, + "storageAccountType": "Premium_LRS" + }, + "Standard_D16s_v3": { + "dataDisks": 16, + "nodesPerStorageAccount": 2, + "storageAccountType": "Premium_LRS" + }, + "Standard_A2": { + "dataDisks": 4, + "nodesPerStorageAccount": 6, + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "dataDisks": 8, + "nodesPerStorageAccount": 4, + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "dataDisks": 16, + "nodesPerStorageAccount": 2, + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "dataDisks": 16, + "nodesPerStorageAccount": 2, + "storageAccountType": "Standard_LRS" + } + }, + "nodesPerStorageAccount": "(dataSkuSettings)[parameters(vmSizeDataNodes)].nodesPerStorageAccount", + "storageBinPackMap": [ + "[div(sub(add(1, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(2, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(3, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(4, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(5, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(6, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(7, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(8, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(9, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(10, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(11, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(12, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(13, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(14, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(15, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(16, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(17, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(18, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(19, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(20, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(21, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(22, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(23, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(24, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(25, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(26, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(27, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(28, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(29, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(30, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(31, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(32, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(33, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(34, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(35, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(36, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(37, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(38, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(39, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(40, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(51, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(52, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(53, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(54, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(55, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(56, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(57, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(58, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(59, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(60, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]" + ], + "dataNodeStorageSettings": { + "count": "[div(sub(add(parameters('vmDataNodeCount'), variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "mapping": [ + "[div(sub(add(1, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(2, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(3, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(4, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(5, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(6, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(7, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(8, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(9, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(10, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(11, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(12, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(13, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(14, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(15, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(16, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(17, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(18, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(19, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(20, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(21, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(22, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(23, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(24, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(25, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(26, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(27, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(28, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(29, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(30, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(31, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(32, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(33, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(34, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(35, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(36, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(37, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(38, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(39, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(40, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(51, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(52, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(53, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(54, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(55, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(56, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(57, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(58, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(59, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(60, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]" + ], + "accountType": "(dataSkuSettings)[parameters(vmSizeDataNodes)].storageAccountType", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + }, + "dataTemplateFileName": { + "afs-yes": "data-nodes-0disk-resources.json", + "afs-no": "[concat('data-nodes-', string(variables('dataSkuSettings')[parameters('vmSizeDataNodes')].dataDisks), 'disk-resources.json')]" + }, + "dataTemplateFileNameValue": "(dataTemplateFileName)[concat(afs-, parameters(afs))]" + }, + "resources": [ + { + "name": "master-nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesFolderName'), '/', variables('masterTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageSettings": { + "value": { + "count": "[div(sub(add(parameters('vmDataNodeCount'), variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "mapping": [ + "[div(sub(add(1, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(2, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(3, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(4, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(5, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(6, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(7, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(8, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(9, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(10, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(11, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(12, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(13, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(14, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(15, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(16, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(17, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(18, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(19, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(20, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(21, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(22, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(23, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(24, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(25, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(26, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(27, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(28, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(29, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(30, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(31, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(32, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(33, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(34, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(35, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(36, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(37, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(38, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(39, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(40, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(51, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(52, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(53, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(54, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(55, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(56, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(57, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(58, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(59, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(60, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]" + ], + "accountType": "(dataSkuSettings)[parameters(vmSizeDataNodes)].storageAccountType", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "sshKey": "GEN-SSH-PUB-KEY", + "type": "sshPublicKey" + } + }, + "masterNodesIpPrefix": { + "value": "10.0.0.1" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "subnet": { + "value": "(networkSettings).subnet.master" + }, + "osSettings": { + "value": "(osFamily)[parameters(OS)]" + }, + "namespace": { + "value": "elasticsearch-master" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "marvel-nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesFolderName'), '/', variables('marvelTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + } + } + }, + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesFolderName'), '/', variables('sharedTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "es-vnet", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "master": { + "name": "master", + "prefix": "10.0.0.0/24", + "vnet": "es-vnet" + }, + "data": { + "name": "data", + "prefix": "10.0.1.0/24", + "vnet": "es-vnet" + }, + "other": { + "name": "other", + "prefix": "10.0.2.0/24", + "vnet": "es-vnet" + } + } + } + }, + "storageSettings": { + "value": { + "count": "[div(sub(add(parameters('vmDataNodeCount'), variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "mapping": [ + "[div(sub(add(1, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(2, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(3, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(4, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(5, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(6, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(7, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(8, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(9, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(10, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(11, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(12, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(13, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(14, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(15, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(16, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(17, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(18, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(19, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(20, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(21, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(22, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(23, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(24, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(25, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(26, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(27, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(28, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(29, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(30, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(31, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(32, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(33, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(34, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(35, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(36, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(37, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(38, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(39, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(40, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(51, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(52, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(53, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(54, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(55, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(56, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(57, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(58, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(59, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(60, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]" + ], + "accountType": "(dataSkuSettings)[parameters(vmSizeDataNodes)].storageAccountType", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "loadBalancerType": { + "value": "internal" + }, + "ilbIpAddress": { + "value": "10.0.2.100" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "client-nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesFolderName'), '/', variables('clientTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "sshKey": "GEN-SSH-PUB-KEY", + "type": "sshPublicKey" + } + }, + "storageSettings": { + "value": { + "count": "[div(sub(add(parameters('vmDataNodeCount'), variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "mapping": [ + "[div(sub(add(1, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(2, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(3, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(4, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(5, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(6, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(7, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(8, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(9, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(10, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(11, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(12, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(13, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(14, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(15, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(16, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(17, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(18, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(19, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(20, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(21, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(22, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(23, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(24, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(25, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(26, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(27, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(28, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(29, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(30, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(31, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(32, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(33, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(34, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(35, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(36, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(37, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(38, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(39, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(40, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(51, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(52, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(53, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(54, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(55, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(56, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(57, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(58, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(59, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(60, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]" + ], + "accountType": "(dataSkuSettings)[parameters(vmSizeDataNodes)].storageAccountType", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "subnet": { + "value": "(networkSettings).subnet.other" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "osSettings": { + "value": "(osFamily)[parameters(OS)]" + }, + "vmCount": { + "value": 1 + }, + "lbBackendPools": { + "value": { + "backendPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/es-load-balancer/LBBE" + } + ] + } + }, + "namespace": { + "value": "elasticsearch-client" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "data-nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesFolderName'), '/', variables('dataTemplateFileNameValue'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "sshKey": "GEN-SSH-PUB-KEY", + "type": "sshPublicKey" + } + }, + "storageSettings": { + "value": { + "count": "[div(sub(add(parameters('vmDataNodeCount'), variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "mapping": [ + "[div(sub(add(1, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(2, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(3, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(4, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(5, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(6, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(7, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(8, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(9, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(10, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(11, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(12, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(13, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(14, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(15, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(16, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(17, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(18, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(19, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(20, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(21, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(22, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(23, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(24, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(25, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(26, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(27, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(28, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(29, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(30, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(31, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(32, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(33, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(34, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(35, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(36, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(37, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(38, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(39, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(40, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(51, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(52, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(53, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(54, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(55, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(56, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(57, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(58, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(59, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]", + "[div(sub(add(60, variables('nodesPerStorageAccount')), 1), variables('nodesPerStorageAccount'))]" + ], + "accountType": "(dataSkuSettings)[parameters(vmSizeDataNodes)].storageAccountType", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "subnet": { + "value": "(networkSettings).subnet.data" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "vmCount": { + "value": 3 + }, + "namespace": { + "value": "elasticsearch-data" + }, + "osSettings": { + "value": "(osFamily)[parameters(OS)]" + }, + "lbBackendPools": { + "value": "(dataLBSettingOptions)[mod(add(parameters(vmClientNodeCount), 2), add(parameters(vmClientNodeCount), 1))]" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "jumpbox", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesFolderName'), '/', variables('jumpboxTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "sshKey": "GEN-SSH-PUB-KEY", + "type": "sshPublicKey" + } + }, + "subnet": { + "value": "(networkSettings).subnet.other" + }, + "osSettings": { + "value": "(osFamily)[parameters(OS)]" + }, + "namespace": { + "value": "elasticsearch-jumpbox" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "kibana", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesFolderName'), '/', variables('kibanaTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "sshKey": "GEN-SSH-PUB-KEY", + "type": "sshPublicKey" + } + }, + "subnet": { + "value": "(networkSettings).subnet.other" + }, + "osSettings": { + "value": "(osFamily)[parameters(OS)]" + }, + "namespace": { + "value": "elasticsearch-kibana" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1420 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1420 new file mode 100644 index 0000000..4d6a812 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1420 @@ -0,0 +1,108 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/azuredeploy.parameters.json" + ], + "timestamp": 1642962907634, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-file-from-web-url/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1420", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1420", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "httpUrl": { + "type": "string", + "metadata": { + "description": "The Http URL." + }, + "value": "https://thisShouldBeUrlThatContainActualValidData" + }, + "datasetName": { + "type": "string", + "metadata": { + "description": "The name of the dataset." + }, + "value": "GEN-UNIQUE-12" + }, + "datasetDescription": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The description for the dataset." + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Optional : Provide JSON object with 'key,value' pairs to add as tags on dataset. Example- {\"sampleTag1\": \"tagValue1\", \"sampleTag2\": \"tagValue2\"}" + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : Skip validation that ensures data can be loaded from the dataset before registration." + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datasets", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "SkipValidation": true, + "DatasetType": "file", + "Parameters": { + "Path": { + "HttpUrl": "https://thisShouldBeUrlThatContainActualValidData" + } + }, + "Registration": { + "Description": "", + "Tags": {} + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1421 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1421 new file mode 100644 index 0000000..6bedead --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1421 @@ -0,0 +1,204 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907646, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1421", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.machinelearningservices/workspaces/datastores", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1421", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "datastoreName": { + "type": "string", + "defaultValue": "[concat('dstore',uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "The datastore name." + }, + "value": "GEN-UNIQUE-10" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "containerName": { + "type": "string", + "defaultValue": "[concat('container',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The container name." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "name": "default/[concat('container',uniqueString(resourceGroup().id))]", + "dependsOn": [ + "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]" + ] + } + ] + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, deployment().name))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GEN-UNIQUE/GEN-UNIQUE-10", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, deployment().name))]" + ], + "properties": { + "DataStoreType": "blob", + "AccountName": "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "ContainerName": "[concat('container',uniqueString(resourceGroup().id))]", + "AccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "datastoreResource": { + "type": "string", + "value": "[parameters('datastoreName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1422 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1422 new file mode 100644 index 0000000..725fdcc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1422 @@ -0,0 +1,187 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/azuredeploy.parameters.json" + ], + "timestamp": 1642962907653, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-relative-path/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1422", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1422", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datasetName": { + "type": "string", + "metadata": { + "description": "The name of the dataset." + }, + "value": "GEN-UNIQUE-12" + }, + "datasetDescription": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The description for the dataset." + } + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The datastore name." + }, + "value": "GET-PREREQ-datastoreResource" + }, + "relativePath": { + "type": "string", + "metadata": { + "description": "Path within the datastore" + }, + "value": "GEN-UNIQUE-4" + }, + "sourceType": { + "type": "string", + "defaultValue": "delimited_files", + "allowedValues": [ + "delimited_files", + "json_lines_files", + "parquet_files" + ], + "metadata": { + "description": "Data source type" + } + }, + "separator": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional: The separator used to split columns for 'delimited_files' sourceType, default to ',' for 'delimited_files'" + } + }, + "header": { + "type": "string", + "defaultValue": "all_files_have_same_headers", + "allowedValues": [ + "all_files_have_same_headers", + "only_first_file_has_headers", + "no_headers", + "combine_all_files_headers" + ], + "metadata": { + "description": "Optional : Header type. Defaults to 'all_files_have_same_headers'" + } + }, + "partitionFormat": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": " Optional : The partition information of each path will be extracted into columns based on the specified format. Format part '{column_name}' creates string column, and '{column_name:yyyy/MM/dd/HH/mm/ss}' creates datetime column, where 'yyyy', 'MM', 'dd', 'HH', 'mm' and 'ss' are used to extract year, month, day, hour, minute and second for the datetime type. The format should start from the position of first partition key until the end of file path. For example, given the path '../USA/2019/01/01/data.parquet' where the partition is by country/region and time, partition_format='/{CountryOrRegion}/{PartitionDate:yyyy/MM/dd}/data.csv' creates a string column'CountryOrRegion' with the value 'USA' and a datetime column 'PartitionDate' with the value '2019-01-01" + } + }, + "fineGrainTimestamp": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Column name to be used as FineGrainTimestamp" + } + }, + "coarseGrainTimestamp": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Column name to be used as CoarseGrainTimestamp. Can only be used if 'fineGrainTimestamp' is specified and cannot be same as 'fineGrainTimestamp'." + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Optional : Provide JSON object with 'key,value' pairs to add as tags on dataset. Example- {\"sampleTag1\": \"tagValue1\", \"sampleTag2\": \"tagValue2\"}" + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : Skip validation that ensures data can be loaded from the dataset before registration." + }, + "value": true + }, + "includePath": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : Boolean to keep path information as column in the dataset. Defaults to False. This is useful when reading multiple files, and want to know which file a particular record originated from, or to keep useful information in file path." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datasets", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "SkipValidation": true, + "DatasetType": "tabular", + "Parameters": { + "Header": "all_files_have_same_headers", + "IncludePath": false, + "PartitionFormat": "", + "Path": { + "DataPath": { + "RelativePath": "GEN-UNIQUE-4", + "DatastoreName": "GET-PREREQ-datastoreResource" + } + }, + "Separator": "", + "SourceType": "delimited_files" + }, + "Registration": { + "Description": "", + "Tags": {} + }, + "TimeSeries": { + "FineGrainTimestamp": "", + "CoarseGrainTimestamp": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1423 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1423 new file mode 100644 index 0000000..9c33ba1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1423 @@ -0,0 +1,188 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907664, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1423", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.machinelearningservices/workspaces/datastores", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1423", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "datastoreName": { + "type": "string", + "defaultValue": "[concat('dstore',uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "The datastore name." + }, + "value": "GEN-UNIQUE-10" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, deployment().name))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, deployment().name))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GEN-UNIQUE/GEN-UNIQUE-10", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE" + ], + "properties": { + "DataStoreType": "sqldb", + "SkipValidation": true, + "DatabaseName": "[concat('database',uniqueString(resourceGroup().id))]", + "ServerName": "[concat('servername',uniqueString(resourceGroup().id))]", + "Username": "[concat('dstore',uniqueString(resourceGroup().id))]", + "Password": "[concat('dstore',uniqueString(resourceGroup().id, deployment().name))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "datastoreResource": { + "type": "string", + "value": "[parameters('datastoreName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1424 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1424 new file mode 100644 index 0000000..e5fddc2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1424 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/azuredeploy.parameters.json" + ], + "timestamp": 1642962907671, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-sql-query/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1424", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1424", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datasetName": { + "type": "string", + "metadata": { + "description": "The name of the dataset." + }, + "value": "GEN-UNIQUE-12" + }, + "datasetDescription": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The description for the dataset." + } + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The SQL/PostgreSQL/MySQL datastore name." + }, + "value": "GET-PREREQ-datastoreResource" + }, + "sqlQuery": { + "type": "string", + "metadata": { + "description": "SQL Quey" + }, + "value": "GEN-UNIQUE-12" + }, + "fineGrainTimestamp": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Column name to be used as FineGrainTimestamp" + } + }, + "coarseGrainTimestamp": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Column name to be used as CoarseGrainTimestamp. Can only be used if 'fineGrainTimestamp' is specified and cannot be same as 'fineGrainTimestamp'." + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Optional : Provide JSON object with 'key,value' pairs to add as tags on dataset. Example- {\"sampleTag1\": \"tagValue1\", \"sampleTag2\": \"tagValue2\"}" + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : Skip validation that ensures data can be loaded from the dataset before registration." + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datasets", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "SkipValidation": true, + "DatasetType": "tabular", + "Parameters": { + "Query": { + "Query": "GEN-UNIQUE-12", + "DatastoreName": "GET-PREREQ-datastoreResource" + }, + "SourceType": "sql_query" + }, + "Registration": { + "Description": "", + "Tags": {} + }, + "TimeSeries": { + "FineGrainTimestamp": "", + "CoarseGrainTimestamp": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1425 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1425 new file mode 100644 index 0000000..8b63081 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1425 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907680, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1425", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1425", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1426 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1426 new file mode 100644 index 0000000..eab1b3b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1426 @@ -0,0 +1,169 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/azuredeploy.parameters.json" + ], + "timestamp": 1642962907686, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-tabular-from-web-url/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1426", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datasets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1426", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "httpUrl": { + "type": "string", + "metadata": { + "description": "The Http URL." + }, + "value": "https://thisShouldBeUrlThatContainActualValidData" + }, + "datasetName": { + "type": "string", + "metadata": { + "description": "The name of the dataset." + }, + "value": "GEN-UNIQUE-12" + }, + "datasetDescription": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The description for the dataset." + } + }, + "sourceType": { + "type": "string", + "defaultValue": "delimited_files", + "allowedValues": [ + "delimited_files", + "json_lines_files", + "parquet_files" + ], + "metadata": { + "description": "Data source type" + } + }, + "separator": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional: The separator used to split columns for 'delimited_files' sourceType, default to ',' for 'delimited_files'" + } + }, + "header": { + "type": "string", + "defaultValue": "all_files_have_same_headers", + "allowedValues": [ + "all_files_have_same_headers", + "only_first_file_has_headers", + "no_headers", + "combine_all_files_headers" + ], + "metadata": { + "description": "Optional : Header type. Defaults to 'all_files_have_same_headers'" + } + }, + "fineGrainTimestamp": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Column name to be used as FineGrainTimestamp" + } + }, + "coarseGrainTimestamp": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Column name to be used as CoarseGrainTimestamp. Can only be used if 'fineGrainTimestamp' is specified and cannot be same as 'fineGrainTimestamp'." + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Optional : Provide JSON object with 'key,value' pairs to add as tags on dataset. Example- {\"sampleTag1\": \"tagValue1\", \"sampleTag2\": \"tagValue2\"}" + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : Skip validation that ensures data can be loaded from the dataset before registration." + }, + "value": true + }, + "includePath": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : Boolean to keep path information as column in the dataset. Defaults to False. This is useful when reading multiple files, and want to know which file a particular record originated from, or to keep useful information in file path." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datasets", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "SkipValidation": true, + "DatasetType": "tabular", + "Parameters": { + "Header": "all_files_have_same_headers", + "IncludePath": false, + "Path": { + "HttpUrl": "https://thisShouldBeUrlThatContainActualValidData" + }, + "Separator": "", + "SourceType": "delimited_files" + }, + "Registration": { + "Description": "", + "Tags": {} + }, + "TimeSeries": { + "FineGrainTimestamp": "", + "CoarseGrainTimestamp": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1427 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1427 new file mode 100644 index 0000000..044dfcd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1427 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-workspace-multiple-dataset-datastore/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-workspace-multiple-dataset-datastore/azuredeploy.parameters.json" + ], + "timestamp": 1642962907693, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-workspace-multiple-dataset-datastore/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dataset-create-workspace-multiple-dataset-datastore/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1427", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.machinelearningservices/workspaces/datasets", + "microsoft.machinelearningservices/workspaces/datastores", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1427", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies name of workspace to create in Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope" + ], + "metadata": { + "description": "Specifies the location for all resources." + }, + "value": "westus" + }, + "datastoreCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Specifies the number of datastores to be created." + } + }, + "datasetCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Specifies the number of datasets to be created." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "containerName": { + "type": "string", + "defaultValue": "[concat('container',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The container name." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "westus", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "name": "default/[concat('container',uniqueString(resourceGroup().id))]", + "dependsOn": [ + "[concat('sa',uniqueString(resourceGroup().id))]" + ] + } + ] + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "westus", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[if(equals(parameters('location'),'westcentralus'),'southcentralus', parameters('location'))]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "westus", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GEN-UNIQUE/datastorecopyIndex()", + "apiVersion": "2020-05-01-preview", + "location": "westus", + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "copy": { + "name": "datastoreCopy", + "count": "[int(parameters('datastoreCount'))]" + }, + "properties": { + "DataStoreType": "blob", + "AccountName": "[concat('sa',uniqueString(resourceGroup().id))]", + "ContainerName": "[concat('container',uniqueString(resourceGroup().id))]", + "AccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value]" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/datasets", + "name": "GEN-UNIQUE/datasetcopyIndex()", + "apiVersion": "2020-05-01-preview", + "location": "westus", + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE" + ], + "copy": { + "name": "datasetCopy", + "count": "[int(parameters('datasetCount'))]" + }, + "properties": { + "DatasetType": "file", + "Parameters": { + "Path": { + "DataPath": { + "RelativePath": "/", + "DatastoreName": "workspaceblobstore" + } + } + }, + "Registration": { + "Description": "Multiple datasets" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1428 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1428 new file mode 100644 index 0000000..e35165b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1428 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907701, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1428", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1428", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1429 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1429 new file mode 100644 index 0000000..9dfb891 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1429 @@ -0,0 +1,144 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/azuredeploy.parameters.json" + ], + "timestamp": 1642962907708, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1429", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1429", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The name of the datastore, case insensitive, can only contain alphanumeric characters and underscore" + }, + "value": "GEN-UNIQUE-12" + }, + "adlsStoreName": { + "type": "string", + "metadata": { + "description": "The ADLS store name." + }, + "value": "GEN-UNIQUE-12" + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "The service principal Tenant ID." + } + }, + "clientId": { + "type": "string", + "metadata": { + "description": "The service principal's client/application ID." + }, + "value": "GEN-GUID" + }, + "clientSecret": { + "type": "securestring", + "metadata": { + "description": "The service principal's secret." + }, + "value": "GEN-PASSWORD" + }, + "resourceUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Determines what operations will be performed on the data lake store." + }, + "value": "https://datalake.azure.net/" + }, + "authorityUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Authority url used to authenticate the user." + }, + "value": "https://login.microsoftonline.com" + }, + "adlsStoreSubscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "Optional : The ID of the subscription the ADLS store belongs to. Defaults to selected subscription" + } + }, + "adlsStoreResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Optional : The resource group the ADLS store belongs to. Defaults to selected resource group" + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : If set to true, the call will skip Datastore validation. Defaults to false" + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "DataStoreType": "adls", + "SkipValidation": true, + "ClientId": "GEN-GUID", + "ClientSecret": "GEN-PASSWORD", + "StoreName": "GEN-UNIQUE-12", + "TenantId": "[subscription().tenantId]", + "ResourceUrl": "https://datalake.azure.net/", + "AuthorityUrl": "https://login.microsoftonline.com", + "AdlsSubscriptionId": "[subscription().subscriptionId]", + "AdlsResourceGroup": "[resourceGroup().name]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT143 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT143 new file mode 100644 index 0000000..a40b98b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT143 @@ -0,0 +1,1362 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch-jmeter/prereqs/prereq.azuredeploy.json", + "/application-workloads/elastic/elasticsearch-jmeter/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962888532, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch-jmeter/prereqs/prereq.azuredeploy.json", + "/application-workloads/elastic/elasticsearch-jmeter/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT143", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT143", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password used when provisioning virtual machines" + }, + "value": "GEN-PASSWORD" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM." + } + } + }, + "variables": { + "esClusterName": "elasticsearch", + "_artifactsLocation": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch", + "nestedTemplatesFolderName": "nestedtemplates", + "scriptsLocation": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/", + "sharedScriptsLocation": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/", + "storageAccountPrefix": "[concat('st',uniqueString(resourceGroup().id))]", + "storageAccountNameAFS": "[concat(variables('storageAccountPrefix'), 'afs')]", + "storageAccountNameShared": "[concat(variables('storageAccountPrefix'), 'sh')]", + "networkSettings": { + "virtualNetworkName": "es-vnet", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "master": { + "name": "master", + "prefix": "10.0.0.0/24", + "vnet": "es-vnet" + }, + "data": { + "name": "data", + "prefix": "10.0.1.0/24", + "vnet": "es-vnet" + }, + "other": { + "name": "other", + "prefix": "10.0.2.0/24", + "vnet": "es-vnet" + } + } + }, + "lbBackEndPoolsAdded": { + "backendPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/es-load-balancer/LBBE" + } + ] + }, + "lbBackendPoolsRemoved": { + "backendPools": [] + }, + "dataLBSettings": { + "backendPools": [] + }, + "ubuntuScripts": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/elasticsearch-ubuntu-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/kibana-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "authSet": { + "password": "GEN-PASSWORD", + "type": "password" + }, + "ubuntuSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": {}, + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/elasticsearch-ubuntu-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/kibana-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -wn elasticsearch-marvel -v 2.3.1 -d 10.0.2.2-3 -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/elasticsearch-ubuntu-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/kibana-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -xn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/elasticsearch-ubuntu-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/kibana-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -yn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/elasticsearch-ubuntu-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/kibana-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -zn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/elasticsearch-ubuntu-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/scripts/kibana-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/afs-utils-0.1.sh" + ], + "commandToExecute": "bash kibana-install.sh -v 2.3.1 -m -s -t http://10.0.0.10:9200" + } + } + } + }, + "osSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": {}, + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -wn elasticsearch-marvel -v 2.3.1 -d 10.0.2.2-3 -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -xn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -yn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -zn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash kibana-install.sh -v 2.3.1 -m -s -t http://10.0.0.10:9200" + } + } + } + }, + "storageBinPackMap": [ + "[div(sub(add(1, 4), 1), 4)]", + "[div(sub(add(2, 4), 1), 4)]", + "[div(sub(add(3, 4), 1), 4)]", + "[div(sub(add(4, 4), 1), 4)]", + "[div(sub(add(5, 4), 1), 4)]", + "[div(sub(add(6, 4), 1), 4)]", + "[div(sub(add(7, 4), 1), 4)]", + "[div(sub(add(8, 4), 1), 4)]", + "[div(sub(add(9, 4), 1), 4)]", + "[div(sub(add(10, 4), 1), 4)]", + "[div(sub(add(11, 4), 1), 4)]", + "[div(sub(add(12, 4), 1), 4)]", + "[div(sub(add(13, 4), 1), 4)]", + "[div(sub(add(14, 4), 1), 4)]", + "[div(sub(add(15, 4), 1), 4)]", + "[div(sub(add(16, 4), 1), 4)]", + "[div(sub(add(17, 4), 1), 4)]", + "[div(sub(add(18, 4), 1), 4)]", + "[div(sub(add(19, 4), 1), 4)]", + "[div(sub(add(20, 4), 1), 4)]", + "[div(sub(add(21, 4), 1), 4)]", + "[div(sub(add(22, 4), 1), 4)]", + "[div(sub(add(23, 4), 1), 4)]", + "[div(sub(add(24, 4), 1), 4)]", + "[div(sub(add(25, 4), 1), 4)]", + "[div(sub(add(26, 4), 1), 4)]", + "[div(sub(add(27, 4), 1), 4)]", + "[div(sub(add(28, 4), 1), 4)]", + "[div(sub(add(29, 4), 1), 4)]", + "[div(sub(add(30, 4), 1), 4)]", + "[div(sub(add(31, 4), 1), 4)]", + "[div(sub(add(32, 4), 1), 4)]", + "[div(sub(add(33, 4), 1), 4)]", + "[div(sub(add(34, 4), 1), 4)]", + "[div(sub(add(35, 4), 1), 4)]", + "[div(sub(add(36, 4), 1), 4)]", + "[div(sub(add(37, 4), 1), 4)]", + "[div(sub(add(38, 4), 1), 4)]", + "[div(sub(add(39, 4), 1), 4)]", + "[div(sub(add(40, 4), 1), 4)]", + "[div(sub(add(51, 4), 1), 4)]", + "[div(sub(add(52, 4), 1), 4)]", + "[div(sub(add(53, 4), 1), 4)]", + "[div(sub(add(54, 4), 1), 4)]", + "[div(sub(add(55, 4), 1), 4)]", + "[div(sub(add(56, 4), 1), 4)]", + "[div(sub(add(57, 4), 1), 4)]", + "[div(sub(add(58, 4), 1), 4)]", + "[div(sub(add(59, 4), 1), 4)]", + "[div(sub(add(60, 4), 1), 4)]" + ], + "dataNodeStorageSettings": { + "count": "[div(sub(add(3, 4), 1), 4)]", + "mapping": [ + "[div(sub(add(1, 4), 1), 4)]", + "[div(sub(add(2, 4), 1), 4)]", + "[div(sub(add(3, 4), 1), 4)]", + "[div(sub(add(4, 4), 1), 4)]", + "[div(sub(add(5, 4), 1), 4)]", + "[div(sub(add(6, 4), 1), 4)]", + "[div(sub(add(7, 4), 1), 4)]", + "[div(sub(add(8, 4), 1), 4)]", + "[div(sub(add(9, 4), 1), 4)]", + "[div(sub(add(10, 4), 1), 4)]", + "[div(sub(add(11, 4), 1), 4)]", + "[div(sub(add(12, 4), 1), 4)]", + "[div(sub(add(13, 4), 1), 4)]", + "[div(sub(add(14, 4), 1), 4)]", + "[div(sub(add(15, 4), 1), 4)]", + "[div(sub(add(16, 4), 1), 4)]", + "[div(sub(add(17, 4), 1), 4)]", + "[div(sub(add(18, 4), 1), 4)]", + "[div(sub(add(19, 4), 1), 4)]", + "[div(sub(add(20, 4), 1), 4)]", + "[div(sub(add(21, 4), 1), 4)]", + "[div(sub(add(22, 4), 1), 4)]", + "[div(sub(add(23, 4), 1), 4)]", + "[div(sub(add(24, 4), 1), 4)]", + "[div(sub(add(25, 4), 1), 4)]", + "[div(sub(add(26, 4), 1), 4)]", + "[div(sub(add(27, 4), 1), 4)]", + "[div(sub(add(28, 4), 1), 4)]", + "[div(sub(add(29, 4), 1), 4)]", + "[div(sub(add(30, 4), 1), 4)]", + "[div(sub(add(31, 4), 1), 4)]", + "[div(sub(add(32, 4), 1), 4)]", + "[div(sub(add(33, 4), 1), 4)]", + "[div(sub(add(34, 4), 1), 4)]", + "[div(sub(add(35, 4), 1), 4)]", + "[div(sub(add(36, 4), 1), 4)]", + "[div(sub(add(37, 4), 1), 4)]", + "[div(sub(add(38, 4), 1), 4)]", + "[div(sub(add(39, 4), 1), 4)]", + "[div(sub(add(40, 4), 1), 4)]", + "[div(sub(add(51, 4), 1), 4)]", + "[div(sub(add(52, 4), 1), 4)]", + "[div(sub(add(53, 4), 1), 4)]", + "[div(sub(add(54, 4), 1), 4)]", + "[div(sub(add(55, 4), 1), 4)]", + "[div(sub(add(56, 4), 1), 4)]", + "[div(sub(add(57, 4), 1), 4)]", + "[div(sub(add(58, 4), 1), 4)]", + "[div(sub(add(59, 4), 1), 4)]", + "[div(sub(add(60, 4), 1), 4)]" + ], + "accountType": "Standard_LRS", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "resources": [ + { + "name": "master-nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/nestedtemplates/master-nodes-resources.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageSettings": { + "value": { + "count": "[div(sub(add(3, 4), 1), 4)]", + "mapping": [ + "[div(sub(add(1, 4), 1), 4)]", + "[div(sub(add(2, 4), 1), 4)]", + "[div(sub(add(3, 4), 1), 4)]", + "[div(sub(add(4, 4), 1), 4)]", + "[div(sub(add(5, 4), 1), 4)]", + "[div(sub(add(6, 4), 1), 4)]", + "[div(sub(add(7, 4), 1), 4)]", + "[div(sub(add(8, 4), 1), 4)]", + "[div(sub(add(9, 4), 1), 4)]", + "[div(sub(add(10, 4), 1), 4)]", + "[div(sub(add(11, 4), 1), 4)]", + "[div(sub(add(12, 4), 1), 4)]", + "[div(sub(add(13, 4), 1), 4)]", + "[div(sub(add(14, 4), 1), 4)]", + "[div(sub(add(15, 4), 1), 4)]", + "[div(sub(add(16, 4), 1), 4)]", + "[div(sub(add(17, 4), 1), 4)]", + "[div(sub(add(18, 4), 1), 4)]", + "[div(sub(add(19, 4), 1), 4)]", + "[div(sub(add(20, 4), 1), 4)]", + "[div(sub(add(21, 4), 1), 4)]", + "[div(sub(add(22, 4), 1), 4)]", + "[div(sub(add(23, 4), 1), 4)]", + "[div(sub(add(24, 4), 1), 4)]", + "[div(sub(add(25, 4), 1), 4)]", + "[div(sub(add(26, 4), 1), 4)]", + "[div(sub(add(27, 4), 1), 4)]", + "[div(sub(add(28, 4), 1), 4)]", + "[div(sub(add(29, 4), 1), 4)]", + "[div(sub(add(30, 4), 1), 4)]", + "[div(sub(add(31, 4), 1), 4)]", + "[div(sub(add(32, 4), 1), 4)]", + "[div(sub(add(33, 4), 1), 4)]", + "[div(sub(add(34, 4), 1), 4)]", + "[div(sub(add(35, 4), 1), 4)]", + "[div(sub(add(36, 4), 1), 4)]", + "[div(sub(add(37, 4), 1), 4)]", + "[div(sub(add(38, 4), 1), 4)]", + "[div(sub(add(39, 4), 1), 4)]", + "[div(sub(add(40, 4), 1), 4)]", + "[div(sub(add(51, 4), 1), 4)]", + "[div(sub(add(52, 4), 1), 4)]", + "[div(sub(add(53, 4), 1), 4)]", + "[div(sub(add(54, 4), 1), 4)]", + "[div(sub(add(55, 4), 1), 4)]", + "[div(sub(add(56, 4), 1), 4)]", + "[div(sub(add(57, 4), 1), 4)]", + "[div(sub(add(58, 4), 1), 4)]", + "[div(sub(add(59, 4), 1), 4)]", + "[div(sub(add(60, 4), 1), 4)]" + ], + "accountType": "Standard_LRS", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "type": "password" + } + }, + "masterNodesIpPrefix": { + "value": "10.0.0.1" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "subnet": { + "value": "(networkSettings).subnet.master" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": {}, + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -wn elasticsearch-marvel -v 2.3.1 -d 10.0.2.2-3 -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -xn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -yn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -zn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash kibana-install.sh -v 2.3.1 -m -s -t http://10.0.0.10:9200" + } + } + } + } + }, + "namespace": { + "value": "elasticsearch-master" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "marvel-nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/nestedtemplates/empty-resources.json", + "contentVersion": "1.0.0.0" + } + } + }, + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/nestedtemplates/shared-resources.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "es-vnet", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "master": { + "name": "master", + "prefix": "10.0.0.0/24", + "vnet": "es-vnet" + }, + "data": { + "name": "data", + "prefix": "10.0.1.0/24", + "vnet": "es-vnet" + }, + "other": { + "name": "other", + "prefix": "10.0.2.0/24", + "vnet": "es-vnet" + } + } + } + }, + "storageSettings": { + "value": { + "count": "[div(sub(add(3, 4), 1), 4)]", + "mapping": [ + "[div(sub(add(1, 4), 1), 4)]", + "[div(sub(add(2, 4), 1), 4)]", + "[div(sub(add(3, 4), 1), 4)]", + "[div(sub(add(4, 4), 1), 4)]", + "[div(sub(add(5, 4), 1), 4)]", + "[div(sub(add(6, 4), 1), 4)]", + "[div(sub(add(7, 4), 1), 4)]", + "[div(sub(add(8, 4), 1), 4)]", + "[div(sub(add(9, 4), 1), 4)]", + "[div(sub(add(10, 4), 1), 4)]", + "[div(sub(add(11, 4), 1), 4)]", + "[div(sub(add(12, 4), 1), 4)]", + "[div(sub(add(13, 4), 1), 4)]", + "[div(sub(add(14, 4), 1), 4)]", + "[div(sub(add(15, 4), 1), 4)]", + "[div(sub(add(16, 4), 1), 4)]", + "[div(sub(add(17, 4), 1), 4)]", + "[div(sub(add(18, 4), 1), 4)]", + "[div(sub(add(19, 4), 1), 4)]", + "[div(sub(add(20, 4), 1), 4)]", + "[div(sub(add(21, 4), 1), 4)]", + "[div(sub(add(22, 4), 1), 4)]", + "[div(sub(add(23, 4), 1), 4)]", + "[div(sub(add(24, 4), 1), 4)]", + "[div(sub(add(25, 4), 1), 4)]", + "[div(sub(add(26, 4), 1), 4)]", + "[div(sub(add(27, 4), 1), 4)]", + "[div(sub(add(28, 4), 1), 4)]", + "[div(sub(add(29, 4), 1), 4)]", + "[div(sub(add(30, 4), 1), 4)]", + "[div(sub(add(31, 4), 1), 4)]", + "[div(sub(add(32, 4), 1), 4)]", + "[div(sub(add(33, 4), 1), 4)]", + "[div(sub(add(34, 4), 1), 4)]", + "[div(sub(add(35, 4), 1), 4)]", + "[div(sub(add(36, 4), 1), 4)]", + "[div(sub(add(37, 4), 1), 4)]", + "[div(sub(add(38, 4), 1), 4)]", + "[div(sub(add(39, 4), 1), 4)]", + "[div(sub(add(40, 4), 1), 4)]", + "[div(sub(add(51, 4), 1), 4)]", + "[div(sub(add(52, 4), 1), 4)]", + "[div(sub(add(53, 4), 1), 4)]", + "[div(sub(add(54, 4), 1), 4)]", + "[div(sub(add(55, 4), 1), 4)]", + "[div(sub(add(56, 4), 1), 4)]", + "[div(sub(add(57, 4), 1), 4)]", + "[div(sub(add(58, 4), 1), 4)]", + "[div(sub(add(59, 4), 1), 4)]", + "[div(sub(add(60, 4), 1), 4)]" + ], + "accountType": "Standard_LRS", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "loadBalancerType": { + "value": "internal" + }, + "ilbIpAddress": { + "value": "10.0.2.100" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "client-nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/nestedtemplates/client-nodes-resources.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "type": "password" + } + }, + "storageSettings": { + "value": { + "count": "[div(sub(add(3, 4), 1), 4)]", + "mapping": [ + "[div(sub(add(1, 4), 1), 4)]", + "[div(sub(add(2, 4), 1), 4)]", + "[div(sub(add(3, 4), 1), 4)]", + "[div(sub(add(4, 4), 1), 4)]", + "[div(sub(add(5, 4), 1), 4)]", + "[div(sub(add(6, 4), 1), 4)]", + "[div(sub(add(7, 4), 1), 4)]", + "[div(sub(add(8, 4), 1), 4)]", + "[div(sub(add(9, 4), 1), 4)]", + "[div(sub(add(10, 4), 1), 4)]", + "[div(sub(add(11, 4), 1), 4)]", + "[div(sub(add(12, 4), 1), 4)]", + "[div(sub(add(13, 4), 1), 4)]", + "[div(sub(add(14, 4), 1), 4)]", + "[div(sub(add(15, 4), 1), 4)]", + "[div(sub(add(16, 4), 1), 4)]", + "[div(sub(add(17, 4), 1), 4)]", + "[div(sub(add(18, 4), 1), 4)]", + "[div(sub(add(19, 4), 1), 4)]", + "[div(sub(add(20, 4), 1), 4)]", + "[div(sub(add(21, 4), 1), 4)]", + "[div(sub(add(22, 4), 1), 4)]", + "[div(sub(add(23, 4), 1), 4)]", + "[div(sub(add(24, 4), 1), 4)]", + "[div(sub(add(25, 4), 1), 4)]", + "[div(sub(add(26, 4), 1), 4)]", + "[div(sub(add(27, 4), 1), 4)]", + "[div(sub(add(28, 4), 1), 4)]", + "[div(sub(add(29, 4), 1), 4)]", + "[div(sub(add(30, 4), 1), 4)]", + "[div(sub(add(31, 4), 1), 4)]", + "[div(sub(add(32, 4), 1), 4)]", + "[div(sub(add(33, 4), 1), 4)]", + "[div(sub(add(34, 4), 1), 4)]", + "[div(sub(add(35, 4), 1), 4)]", + "[div(sub(add(36, 4), 1), 4)]", + "[div(sub(add(37, 4), 1), 4)]", + "[div(sub(add(38, 4), 1), 4)]", + "[div(sub(add(39, 4), 1), 4)]", + "[div(sub(add(40, 4), 1), 4)]", + "[div(sub(add(51, 4), 1), 4)]", + "[div(sub(add(52, 4), 1), 4)]", + "[div(sub(add(53, 4), 1), 4)]", + "[div(sub(add(54, 4), 1), 4)]", + "[div(sub(add(55, 4), 1), 4)]", + "[div(sub(add(56, 4), 1), 4)]", + "[div(sub(add(57, 4), 1), 4)]", + "[div(sub(add(58, 4), 1), 4)]", + "[div(sub(add(59, 4), 1), 4)]", + "[div(sub(add(60, 4), 1), 4)]" + ], + "accountType": "Standard_LRS", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "subnet": { + "value": "(networkSettings).subnet.other" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": {}, + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -wn elasticsearch-marvel -v 2.3.1 -d 10.0.2.2-3 -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -xn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -yn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -zn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash kibana-install.sh -v 2.3.1 -m -s -t http://10.0.0.10:9200" + } + } + } + } + }, + "vmCount": { + "value": 1 + }, + "lbBackendPools": { + "value": { + "backendPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/es-load-balancer/LBBE" + } + ] + } + }, + "namespace": { + "value": "elasticsearch-client" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "data-nodes", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/nestedtemplates/data-nodes-4disk-resources.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "type": "password" + } + }, + "storageSettings": { + "value": { + "count": "[div(sub(add(3, 4), 1), 4)]", + "mapping": [ + "[div(sub(add(1, 4), 1), 4)]", + "[div(sub(add(2, 4), 1), 4)]", + "[div(sub(add(3, 4), 1), 4)]", + "[div(sub(add(4, 4), 1), 4)]", + "[div(sub(add(5, 4), 1), 4)]", + "[div(sub(add(6, 4), 1), 4)]", + "[div(sub(add(7, 4), 1), 4)]", + "[div(sub(add(8, 4), 1), 4)]", + "[div(sub(add(9, 4), 1), 4)]", + "[div(sub(add(10, 4), 1), 4)]", + "[div(sub(add(11, 4), 1), 4)]", + "[div(sub(add(12, 4), 1), 4)]", + "[div(sub(add(13, 4), 1), 4)]", + "[div(sub(add(14, 4), 1), 4)]", + "[div(sub(add(15, 4), 1), 4)]", + "[div(sub(add(16, 4), 1), 4)]", + "[div(sub(add(17, 4), 1), 4)]", + "[div(sub(add(18, 4), 1), 4)]", + "[div(sub(add(19, 4), 1), 4)]", + "[div(sub(add(20, 4), 1), 4)]", + "[div(sub(add(21, 4), 1), 4)]", + "[div(sub(add(22, 4), 1), 4)]", + "[div(sub(add(23, 4), 1), 4)]", + "[div(sub(add(24, 4), 1), 4)]", + "[div(sub(add(25, 4), 1), 4)]", + "[div(sub(add(26, 4), 1), 4)]", + "[div(sub(add(27, 4), 1), 4)]", + "[div(sub(add(28, 4), 1), 4)]", + "[div(sub(add(29, 4), 1), 4)]", + "[div(sub(add(30, 4), 1), 4)]", + "[div(sub(add(31, 4), 1), 4)]", + "[div(sub(add(32, 4), 1), 4)]", + "[div(sub(add(33, 4), 1), 4)]", + "[div(sub(add(34, 4), 1), 4)]", + "[div(sub(add(35, 4), 1), 4)]", + "[div(sub(add(36, 4), 1), 4)]", + "[div(sub(add(37, 4), 1), 4)]", + "[div(sub(add(38, 4), 1), 4)]", + "[div(sub(add(39, 4), 1), 4)]", + "[div(sub(add(40, 4), 1), 4)]", + "[div(sub(add(51, 4), 1), 4)]", + "[div(sub(add(52, 4), 1), 4)]", + "[div(sub(add(53, 4), 1), 4)]", + "[div(sub(add(54, 4), 1), 4)]", + "[div(sub(add(55, 4), 1), 4)]", + "[div(sub(add(56, 4), 1), 4)]", + "[div(sub(add(57, 4), 1), 4)]", + "[div(sub(add(58, 4), 1), 4)]", + "[div(sub(add(59, 4), 1), 4)]", + "[div(sub(add(60, 4), 1), 4)]" + ], + "accountType": "Standard_LRS", + "afs": "[variables('storageAccountNameAFS')]", + "shared": "[variables('storageAccountNameShared')]", + "prefix": "[concat(variables('storageAccountPrefix'), 'da')]" + } + }, + "subnet": { + "value": "(networkSettings).subnet.data" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "vmCount": { + "value": 3 + }, + "namespace": { + "value": "elasticsearch-data" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": {}, + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -wn elasticsearch-marvel -v 2.3.1 -d 10.0.2.2-3 -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -xn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -yn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -zn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash kibana-install.sh -v 2.3.1 -m -s -t http://10.0.0.10:9200" + } + } + } + } + }, + "lbBackendPools": { + "value": { + "backendPools": [] + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "jumpbox", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/nestedtemplates/jumpbox-resources.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "type": "password" + } + }, + "subnet": { + "value": "(networkSettings).subnet.other" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": {}, + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -wn elasticsearch-marvel -v 2.3.1 -d 10.0.2.2-3 -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -xn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -yn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -zn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash kibana-install.sh -v 2.3.1 -m -s -t http://10.0.0.10:9200" + } + } + } + } + }, + "namespace": { + "value": "elasticsearch-jumpbox" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "kibana", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/nestedtemplates/kibana-resources.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "authSet": { + "value": { + "password": "GEN-PASSWORD", + "type": "password" + } + }, + "subnet": { + "value": "(networkSettings).subnet.other" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "linuxConfiguration": {}, + "managementPort": "22", + "extensionSettings": { + "marvel": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash elasticsearch-ubuntu-install.sh -wn elasticsearch-marvel -v 2.3.1 -d 10.0.2.2-3 -k " + } + }, + "master": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -xn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "client": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -yn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "data": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "[concat('bash elasticsearch-ubuntu-install.sh -zn elasticsearch -v 2.3.1 -d 10.0.0.1-3 -m -a ', variables('storageAccountNameAFS'), ' -k ')]" + } + }, + "kibana": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "autoUpgradeMinorVersion": true, + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[concat(variables('scriptsLocation'), 'elasticsearch-ubuntu-install.sh', '')]", + "[concat(variables('scriptsLocation'), 'kibana-install.sh', '')]", + "[concat(variables('sharedScriptsLocation'), 'vm-disk-utils-0.1.sh')]", + "[concat(variables('sharedScriptsLocation'), 'afs-utils-0.1.sh')]" + ], + "commandToExecute": "bash kibana-install.sh -v 2.3.1 -m -s -t http://10.0.0.10:9200" + } + } + } + } + }, + "namespace": { + "value": "elasticsearch-kibana" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": { + "existingVnetName": { + "type": "string", + "value": "es-vnet" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1430 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1430 new file mode 100644 index 0000000..d0946d6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1430 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907715, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1430", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1430", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1431 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1431 new file mode 100644 index 0000000..07e674c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1431 @@ -0,0 +1,152 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/azuredeploy.parameters.json" + ], + "timestamp": 1642962907723, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-adls-gen2/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1431", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1431", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The name of the datastore, case insensitive, can only contain alphanumeric characters and underscore" + }, + "value": "GEN-UNIQUE-12" + }, + "accountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account." + }, + "value": "GEN-UNIQUE-12" + }, + "fileSystem": { + "type": "string", + "metadata": { + "description": "The file system name of the ADLS Gen2." + }, + "value": "GEN-UNIQUE-12" + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "The service principal Tenant ID." + } + }, + "clientId": { + "type": "string", + "metadata": { + "description": "The service principal's client/application ID." + }, + "value": "GEN-GUID" + }, + "clientSecret": { + "type": "securestring", + "metadata": { + "description": "The service principal's secret." + }, + "value": "GEN-PASSWORD" + }, + "storageAccountSubscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "Optional : The subscription ID of the storage account. Defaults to selected subscription" + } + }, + "storageAccountResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Optional : The resource group of the storage account. Defaults to selected resource group" + } + }, + "resourceUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Determines what operations will be performed on the data lake store." + }, + "value": "https://storage.azure.com/" + }, + "authorityUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Authority url used to authenticate the user." + }, + "value": "https://login.microsoftonline.com" + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : If set to true, the call will skip Datastore validation. Defaults to false" + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "DataStoreType": "adls-gen2", + "SkipValidation": true, + "ClientId": "GEN-GUID", + "ClientSecret": "GEN-PASSWORD", + "FileSystem": "GEN-UNIQUE-12", + "AccountName": "GEN-UNIQUE-12", + "TenantId": "[subscription().tenantId]", + "ResourceUrl": "https://storage.azure.com/", + "AuthorityUrl": "https://login.microsoftonline.com", + "SubscriptionId": "[subscription().subscriptionId]", + "ResourceGroupName": "[resourceGroup().name]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1432 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1432 new file mode 100644 index 0000000..ce67148 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1432 @@ -0,0 +1,162 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907732, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1432", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1432", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "storageAccountResource": { + "type": "string", + "value": "[parameters('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1433 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1433 new file mode 100644 index 0000000..d889217 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1433 @@ -0,0 +1,130 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/azuredeploy.parameters.json" + ], + "timestamp": 1642962907743, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-blob/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1433", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1433", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The name of the datastore, case insensitive, can only contain alphanumeric characters and underscore" + }, + "value": "GEN-UNIQUE-10" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account." + }, + "value": "GET-PREREQ-storageAccountResource" + }, + "containerName": { + "type": "string", + "metadata": { + "description": "The name of the azure blob container." + }, + "value": "GEN-UNIQUE-8" + }, + "authenticationType": { + "type": "string", + "defaultValue": "SAS token", + "allowedValues": [ + "SAS token", + "Account Key" + ], + "metadata": { + "description": "Authentication type" + } + }, + "sasTokenOrAccountKey": { + "type": "securestring", + "metadata": { + "description": "Storage account SAS token or Account Key" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountSubscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "Optional : The subscription ID of the storage account. Defaults to selected subscription" + } + }, + "storageAccountResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Optional : The resource group of the storage account. Defaults to selected resource group" + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : If set to true, the call will skip datastore validation. Defaults to false" + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-10", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "DataStoreType": "blob", + "SkipValidation": true, + "AccountName": "GET-PREREQ-storageAccountResource", + "ContainerName": "GEN-UNIQUE-8", + "AccountKey": "[if(equals(parameters('authenticationType'), 'Account Key'), parameters('sasTokenOrAccountKey'), json('null'))]", + "SasToken": "[if(equals(parameters('authenticationType'), 'SAS token'), parameters('sasTokenOrAccountKey'), json('null'))]", + "StorageAccountSubscriptionId": "[subscription().subscriptionId]", + "StorageAccountResourceGroup": "[resourceGroup().name]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1434 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1434 new file mode 100644 index 0000000..f74246b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1434 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907752, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1434", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1434", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2020-08-01-preview", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1435 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1435 new file mode 100644 index 0000000..253d528 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1435 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/azuredeploy.parameters.json" + ], + "timestamp": 1642962907759, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-dbfs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1435", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1435", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The name of the datastore, case insensitive, can only contain alphanumeric characters and underscore" + }, + "value": "GEN-UNIQUE-8" + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + false, + true + ], + "metadata": { + "description": "Optional : If set to true, the call will skip Datastore validation. Defaults to false" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-8", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "DataStoreType": "dbfs", + "SkipValidation": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1436 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1436 new file mode 100644 index 0000000..0011dc4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1436 @@ -0,0 +1,162 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907766, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1436", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1436", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2020-08-01-preview", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "storageAccountResource": { + "type": "string", + "value": "[parameters('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1437 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1437 new file mode 100644 index 0000000..c7ee8f1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1437 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/azuredeploy.parameters.json" + ], + "timestamp": 1642962907774, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-file/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1437", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1437", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The name of the datastore, case insensitive, can only contain alphanumeric characters and underscore" + }, + "value": "GEN-UNIQUE-8" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account." + }, + "value": "GET-PREREQ-storageAccountResource" + }, + "fileShareName": { + "type": "string", + "metadata": { + "description": "The name of the file share." + }, + "value": "GEN-UNIQUE-8" + }, + "authenticationType": { + "type": "string", + "defaultValue": "SAS token", + "allowedValues": [ + "SAS token", + "Account Key" + ], + "metadata": { + "description": "Authentication type" + } + }, + "sasTokenOrAccountKey": { + "type": "securestring", + "metadata": { + "description": "Storage account SAS token or Account Key" + }, + "value": "GEN-PASSWORD" + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : If set to true, the call will skip datastore validation. Defaults to false" + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-8", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "DataStoreType": "file", + "SkipValidation": true, + "AccountName": "GET-PREREQ-storageAccountResource", + "ShareName": "GEN-UNIQUE-8", + "AccountKey": "[if(equals(parameters('authenticationType'), 'Account Key'), parameters('sasTokenOrAccountKey'), json('null'))]", + "SasToken": "[if(equals(parameters('authenticationType'), 'SAS token'), parameters('sasTokenOrAccountKey'), json('null'))]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1438 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1438 new file mode 100644 index 0000000..6e25f8b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1438 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907781, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1438", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1438", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2020-08-01-preview", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1439 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1439 new file mode 100644 index 0000000..5112a82 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1439 @@ -0,0 +1,126 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/azuredeploy.parameters.json" + ], + "timestamp": 1642962907788, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1439", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1439", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The name of the datastore, case insensitive, can only contain alphanumeric characters and underscore" + }, + "value": "GEN-UNIQUE-12" + }, + "serverName": { + "type": "string", + "metadata": { + "description": "The MySQL server name." + }, + "value": "GEN-UNIQUE-12" + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The database name." + }, + "value": "GEN-UNIQUE-12" + }, + "userId": { + "type": "string", + "metadata": { + "description": "The user ID." + }, + "value": "GEN-UNIQUE-12" + }, + "password": { + "type": "securestring", + "metadata": { + "description": "The password." + }, + "value": "GEN-PASSWORD" + }, + "port": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The port number. Defaults to 3306" + } + }, + "endpoint": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The endpoint of the server. Defaults to mysql.database.azure.com." + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : If set to true, the call will skip Datastore validation. Defaults to false" + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "DataStoreType": "mysqldb", + "SkipValidation": true, + "DatabaseName": "GEN-UNIQUE-12", + "Password": "GEN-PASSWORD", + "ServerName": "GEN-UNIQUE-12", + "UserId": "GEN-UNIQUE-12", + "Port": "", + "Endpoint": "" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT144 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT144 new file mode 100644 index 0000000..419fe03 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT144 @@ -0,0 +1,466 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elastic/elasticsearch-jmeter/azuredeploy.json", + "/application-workloads/elastic/elasticsearch-jmeter/azuredeploy.parameters.json" + ], + "timestamp": 1642962888545, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elastic/elasticsearch-jmeter/azuredeploy.json", + "/application-workloads/elastic/elasticsearch-jmeter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT144", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT144", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE-8" + }, + "existingVirtualNetworkName": { + "type": "string", + "defaultValue": "es-vnet", + "metadata": { + "description": "Existing virtual network name to deploy into which contains Elasticsearch nodes" + }, + "value": "GET-PREREQ-existingVnetName" + }, + "subNodeCount": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "metadata": { + "description": "Number of subordinate JMeter nodes to provision" + } + }, + "subNodeSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7" + ], + "metadata": { + "description": "Size of the subordinate JMeter nodes" + } + }, + "bossNodeSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_A2", + "Standard_A3", + "Standard_A4" + ], + "metadata": { + "description": "Size of the boss JMeter node" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "jarball": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch-jmeter/resources/jarball.zip", + "metadata": { + "description": "The location of the test library and jar dependencies. This is extracted to every node under /opt/jmeter/apache-jmeter-2.13/lib/junit" + } + }, + "testpack": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch-jmeter/resources/testpack.zip", + "metadata": { + "description": "The location of the test jmx and run properties. This is extracted to the JMeter master node only, in /opt/jmeter" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "resourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group used for the deployment." + } + } + }, + "variables": { + "storageAccountName": "[concat(substring(uniqueString(resourceGroup().id, 'jmeter'), 0, 6), 'jmeter')]", + "bossNodeIp": "10.0.4.10", + "subNodesIpPrefix": "10.0.4.2", + "networkSettings": { + "virtualNetworkName": "GET-PREREQ-existingVnetName", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "jmeter": { + "name": "jmeter", + "prefix": "10.0.4.0/24", + "vnet": "GET-PREREQ-existingVnetName" + } + } + }, + "subnetRef": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVnetName/jmeter", + "nicName": "jmeter-nic", + "vmName": "jmeter-vm", + "settings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "managementPort": "22", + "extensionSettings": { + "boss": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('jmeter-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash jmeter-install.sh -mr 10.0.4.2-2 -j https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch-jmeter/resources/jarball.zip -t https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch-jmeter/resources/testpack.zip" + } + }, + "sub": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('jmeter-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash jmeter-install.sh -j https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch-jmeter/resources/jarball.zip" + } + } + } + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "jmeter-pip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "jmeter-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "(settings).managementPort", + "destinationPortRange": "(settings).managementPort", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "(networkSettings).virtualNetworkName/jmeter", + "location": "[resourceGroup().location]", + "properties": { + "addressPrefix": "(networkSettings).subnet.jmeter.prefix" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "jmeter-nic-subcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "subNodesNicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/(networkSettings).virtualNetworkName/jmeter" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigsub", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.4.2copyindex()", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVnetName/jmeter" + } + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "jmeter-nic-boss", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//jmeter-pip", + "Microsoft.Network/networkSecurityGroups//jmeter-nsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigboss", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.4.10", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/jmeter-pip" + }, + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVnetName/jmeter" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/jmeter-nsg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jmeter-vm-boss", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('nicName'), '-boss'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "jmeter-boss", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "(settings).imageReference", + "osDisk": { + "name": "jmeter-vm-boss_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jmeter-nic-boss" + } + ] + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "jmeter-vm-boss/installjmeter", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//jmeter-vm-boss" + ], + "properties": { + "publisher": "(settings).extensionSettings.boss.publisher", + "type": "(settings).extensionSettings.boss.type", + "typeHandlerVersion": "(settings).extensionSettings.boss.typeHandlerVersion", + "settings": { + "fileUris": "(settings).extensionSettings.boss.settings.fileUris", + "commandToExecute": "(settings).extensionSettings.boss.settings.commandToExecute" + } + } + } + ] + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jmeter-vm-subcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "subVmLoop", + "count": 2 + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('nicName'), '-sub', copyindex()))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "jmeter-subcopyIndex()", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "(settings).imageReference", + "osDisk": { + "name": "jmeter-vm-subcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jmeter-nic-subcopyindex()" + } + ] + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "jmeter-vm-subcopyindex()/installjmeter", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//jmeter-vm-subcopyindex()" + ], + "properties": { + "publisher": "(settings).extensionSettings.sub.publisher", + "type": "(settings).extensionSettings.sub.type", + "typeHandlerVersion": "(settings).extensionSettings.sub.typeHandlerVersion", + "settings": { + "fileUris": "(settings).extensionSettings.sub.settings.fileUris", + "commandToExecute": "(settings).extensionSettings.sub.settings.commandToExecute" + } + } + } + ] + } + ], + "outputs": { + "boss-pip": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses/', 'jmeter-pip')).ipAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1440 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1440 new file mode 100644 index 0000000..79b7155 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1440 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907795, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1440", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1440", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2020-08-01-preview", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1441 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1441 new file mode 100644 index 0000000..5fffab4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1441 @@ -0,0 +1,134 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/azuredeploy.parameters.json" + ], + "timestamp": 1642962907803, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-psql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1441", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1441", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The name of the datastore, case insensitive, can only contain alphanumeric characters and underscore" + }, + "value": "GEN-UNIQUE-12" + }, + "serverName": { + "type": "string", + "metadata": { + "description": "The PostgreSQL server name." + }, + "value": "GEN-UNIQUE-12" + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The database name." + }, + "value": "GEN-UNIQUE-12" + }, + "userId": { + "type": "string", + "metadata": { + "description": "The user ID." + }, + "value": "GEN-UNIQUE-12" + }, + "password": { + "type": "securestring", + "metadata": { + "description": "The password." + }, + "value": "GEN-PASSWORD" + }, + "port": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The port number. Defaults to 5432" + } + }, + "endpoint": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The endpoint of the server. Defaults to postgres.database.azure.com." + } + }, + "enforceSSL": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Optional : This sets the ssl value of the server. Defaults to true if not set." + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : If set to true, the call will skip Datastore validation. Defaults to false" + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "DataStoreType": "psqldb", + "SkipValidation": true, + "DatabaseName": "GEN-UNIQUE-12", + "Password": "GEN-PASSWORD", + "ServerName": "GEN-UNIQUE-12", + "UserId": "GEN-UNIQUE-12", + "Port": "", + "Endpoint": "", + "EnforceSSL": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1442 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1442 new file mode 100644 index 0000000..4319d2d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1442 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907810, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1442", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1442", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant ID of the subscription. Get using Get-AzureRmSubscription cmdlet or Get Subscription API." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceResource": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1443 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1443 new file mode 100644 index 0000000..6ceea11 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1443 @@ -0,0 +1,155 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/azuredeploy.parameters.json" + ], + "timestamp": 1642962907818, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-datastore-create-sql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1443", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/datastores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1443", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace which will hold this datastore target." + }, + "value": "GET-PREREQ-workspaceResource" + }, + "datastoreName": { + "type": "string", + "metadata": { + "description": "The name of the datastore, case insensitive, can only contain alphanumeric characters and underscore" + }, + "value": "GEN-UNIQUE-12" + }, + "sqlServerName": { + "type": "string", + "metadata": { + "description": "The SQL server name." + }, + "value": "GEN-UNIQUE-12" + }, + "authenticationType": { + "type": "string", + "defaultValue": "SQL Authentication", + "allowedValues": [ + "SQL Authentication", + "Service principal" + ], + "metadata": { + "description": "Authentication type" + } + }, + "userNameOrClientId": { + "type": "string", + "metadata": { + "description": "The username of the database user or service principal/application ID." + }, + "value": "GEN-UNIQUE-12" + }, + "passwordOrClientSecret": { + "type": "securestring", + "metadata": { + "description": "The password of the database user or service principal's secret." + }, + "value": "GEN-PASSWORD" + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "This is ignored if SQL Authentication is selected." + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The database name." + }, + "value": "GEN-UNIQUE-10" + }, + "authorityUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Authority url used to authenticate the user." + } + }, + "resourceUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : Determines what operations will be performed on the database." + } + }, + "endpoint": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional : The endpoint of the sql server." + } + }, + "skipValidation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Optional : If set to true, the call will skip datastore validation. Defaults to false" + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/datastores", + "name": "GET-PREREQ-workspaceResource/GEN-UNIQUE-12", + "apiVersion": "2020-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "DataStoreType": "sqldb", + "SkipValidation": true, + "DatabaseName": "GEN-UNIQUE-10", + "ServerName": "GEN-UNIQUE-12", + "UserName": "[if(equals(parameters('authenticationType'), 'SQL Authentication'), parameters('userNameOrClientId'), json('null'))]", + "Password": "[if(equals(parameters('authenticationType'), 'SQL Authentication'), parameters('passwordOrClientSecret'), json('null'))]", + "TenantId": "[if(equals(parameters('authenticationType'), 'Service principal'), parameters('tenantId'), json('null'))]", + "ClientId": "[if(equals(parameters('authenticationType'), 'Service principal'), parameters('userNameOrClientId'), json('null'))]", + "ClientSecret": "[if(equals(parameters('authenticationType'), 'Service principal'), parameters('passwordOrClientSecret'), json('null'))]", + "AuthorityUrl": "", + "ResourceUrl": "", + "Endpoint": "" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1444 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1444 new file mode 100644 index 0000000..00aae5e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1444 @@ -0,0 +1,155 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907828, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1444", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.managedidentity/userassignedidentities", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.containerregistry/registries" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1444", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "resourceName": { + "type": "string", + "metadata": { + "description": "user assigned identity name" + }, + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "storage account name" + }, + "value": "GEN-UNIQUE" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "keyvault name" + }, + "value": "GEN-UNIQUE" + }, + "containerRegistryName": { + "type": "string", + "metadata": { + "description": "container registry name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "location": "[resourceGroup().location]" + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "properties": { + "accessTier": "Hot", + "supportsHttpsTrafficOnly": true + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "enableRbacAuthorization": false, + "enableSoftDelete": false, + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "accessPolicies": [], + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "properties": { + "adminUserEnabled": true + } + } + ], + "outputs": { + "identityName": { + "type": "string", + "value": "[parameters('resourceName')]" + }, + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "keyVaultName": { + "type": "string", + "value": "[parameters('keyVaultName')]" + }, + "containerRegistryName": { + "type": "string", + "value": "[parameters('containerRegistryName')]" + }, + "resourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1445 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1445 new file mode 100644 index 0000000..7df1224 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1445 @@ -0,0 +1,402 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/azuredeploy.parameters.json" + ], + "timestamp": 1642962907835, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-dependencies-role-assignment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1445", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1445", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "primaryUserAssignedIdentityResourceGroup": { + "type": "String", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group of User Assigned Identity passed in workspace.properties.primaryUserAssignedIdentity." + }, + "value": "GET-PREREQ-resourceGroup" + }, + "primaryUserAssignedIdentityName": { + "type": "String", + "metadata": { + "description": "Resource name of User Assigned Identity passed in workspace.properties.primaryUserAssignedIdentity." + }, + "value": "GET-PREREQ-identityName" + }, + "assignWorkspaceResourceGroup": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "If assign AML workspace resource group permissions." + }, + "value": true + }, + "workspaceResourceGroup": { + "defaultValue": "[resourceGroup().name]", + "type": "String", + "metadata": { + "description": "Resource group of AML workspace resource group." + } + }, + "assignWorkspaceKeyVault": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "If assign AML workspace keyvault permissions." + }, + "value": true + }, + "workspaceKeyVaultResourceGroup": { + "defaultValue": "[resourceGroup().name]", + "type": "String", + "metadata": { + "description": "Resource group of AML workspace key vault." + }, + "value": "GET-PREREQ-resourceGroup" + }, + "workspaceKeyVaultName": { + "type": "String", + "metadata": { + "description": "Resource name of AML workspace key vault." + }, + "value": "GET-PREREQ-keyVaultName" + }, + "assignWorkspaceStorageAccount": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "If assign AML workspace storage account permissions." + }, + "value": true + }, + "workspaceStorageAccountResourceGroup": { + "defaultValue": "[resourceGroup().name]", + "type": "String", + "metadata": { + "description": "Resource group of AML workspace storage account." + }, + "value": "GET-PREREQ-resourceGroup" + }, + "workspaceStorageAccountName": { + "defaultValue": "", + "type": "String", + "metadata": { + "description": "Resource name of AML workspace storage account." + }, + "value": "GET-PREREQ-storageAccountName" + }, + "assignWorkspaceContainerRegistry": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "If assign AML workspace container registry permissions." + }, + "value": true + }, + "workspaceContainerRegistryResourceGroup": { + "defaultValue": "[resourceGroup().name]", + "type": "String", + "metadata": { + "description": "Resource group of AML workspace container registry." + }, + "value": "GET-PREREQ-resourceGroup" + }, + "workspaceContainerRegistryName": { + "defaultValue": "", + "type": "String", + "metadata": { + "description": "Resource name of AML workspace container registry." + }, + "value": "GET-PREREQ-containerRegistryName" + }, + "assignWorkspaceDataBrick": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "If assign AML workspace linked Azure DataBrick permissions." + } + }, + "workspaceDataBrickResourceGroup": { + "defaultValue": "[resourceGroup().name]", + "type": "String", + "metadata": { + "description": "Resource group of AML workspace linked Azure DataBrick." + } + }, + "workspaceDataBrickName": { + "defaultValue": "", + "type": "String", + "metadata": { + "description": "Resource name of AML workspace linked Azure DataBrick." + } + }, + "assignWorkspaceCMKKeyVault": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "If assign keyvault that hosts data encryption key of cmk workspace permissions." + }, + "value": true + }, + "workspaceCMKKeyVaultResourceGroup": { + "defaultValue": "[resourceGroup().name]", + "type": "String", + "metadata": { + "description": "Resource group of keyvault that hosts data encryption key of cmk workspace." + }, + "value": "GET-PREREQ-resourceGroup" + }, + "workspaceCMKKeyVaultName": { + "defaultValue": "", + "type": "String", + "metadata": { + "description": "Resource name of keyvault that hosts data encryption key of cmk workspace." + }, + "value": "GET-PREREQ-keyVaultName" + } + }, + "variables": { + "primaryUserAssignedIdentity": "GET-PREREQ-resourceGroup/microsoft.managedidentity/userassignedidentities/GET-PREREQ-identityName", + "workspaceResourceGroup": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('workspaceResourceGroup'))]", + "workspaceKeyVault": "GET-PREREQ-resourceGroup/microsoft.keyvault/vaults/GET-PREREQ-keyVaultName", + "workspaceStorageAccount": "GET-PREREQ-resourceGroup/microsoft.storage/storageaccounts/GET-PREREQ-storageAccountName", + "workspaceContainerRegistry": "GET-PREREQ-resourceGroup/Microsoft.ContainerRegistry/registries/GET-PREREQ-containerRegistryName", + "workspaceDataBrick": "[resourceGroup().name]/Microsoft.Databricks/workspaces/ parameters('workspaceDataBrickName')", + "workspaceCMKKeyVault": "GET-PREREQ-resourceGroup/microsoft.keyvault/vaults/GET-PREREQ-keyVaultName", + "contributorRoleDefinition": "b24988ac-6180-42a0-ab88-20f7382dd24c", + "storageBlobDataContributorRoleDefinition": "ba92f5b4-2d11-453d-a403-e96b0029c9fe", + "keyVaultAdministratorRoleDefinition": "00482a5a-887f-4fb3-b363-3b7fe8e74483", + "workspaceResourceGroupContributorRoleName": "[guid(variables('workspaceResourceGroup'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "workspaceStorageAccountContributorRoleName": "[guid(variables('workspaceStorageAccount'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "workspaceStorageAccountBlobDataContributorRoleName": "[guid(variables('workspaceStorageAccount'), variables('primaryUserAssignedIdentity'), variables('storageBlobDataContributorRoleDefinition'))]", + "workspaceKeyVaultAdministratorRoleName": "[guid(variables('workspaceKeyVault'), variables('primaryUserAssignedIdentity'), variables('keyVaultAdministratorRoleDefinition'))]", + "workspaceContainerRegistryContributorRoleName": "[guid(variables('workspaceContainerRegistry'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "workspaceDataBrickContributorRoleName": "[guid(variables('workspaceDataBrick'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "workspaceCMKKeyVaultContributorRoleName": "[guid(variables('workspaceCMKKeyVault'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "keyvaultTemplate", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "GET-PREREQ-resourceGroup", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": true, + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "apiVersion": "2019-09-01", + "name": "GET-PREREQ-keyVaultName/add", + "properties": { + "accessPolicies": [ + { + "tenantId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').tenantId]", + "objectId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').principalId]", + "permissions": { + "secrets": [ + "get", + "list", + "set", + "delete", + "recover", + "backup", + "restore" + ] + } + } + ] + } + }, + { + "condition": true, + "scope": "Microsoft.KeyVault/vaults/GET-PREREQ-keyVaultName", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('workspaceKeyVault'), variables('primaryUserAssignedIdentity'), variables('keyVaultAdministratorRoleDefinition'))]", + "properties": { + "roleDefinitionId": "[extensionResourceId(variables('workspaceKeyVault'), 'Microsoft.Authorization/roleDefinitions', variables('keyVaultAdministratorRoleDefinition'))]", + "principalId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').principalId]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "storageAccountTemplate", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "GET-PREREQ-resourceGroup", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": true, + "scope": "Microsoft.Storage/storageAccounts/GET-PREREQ-storageAccountName", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('workspaceStorageAccount'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "properties": { + "roleDefinitionId": "[extensionResourceId(variables('workspaceStorageAccount'), 'Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinition'))]", + "principalId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "condition": true, + "scope": "Microsoft.Storage/storageAccounts/GET-PREREQ-storageAccountName", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('workspaceStorageAccount'), variables('primaryUserAssignedIdentity'), variables('storageBlobDataContributorRoleDefinition'))]", + "properties": { + "roleDefinitionId": "[extensionResourceId(variables('workspaceStorageAccount'), 'Microsoft.Authorization/roleDefinitions', variables('storageBlobDataContributorRoleDefinition'))]", + "principalId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').principalId]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "databrickTemplate", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "[resourceGroup().name]", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": false, + "scope": "Microsoft.Databricks/workspaces/ parameters('workspaceDataBrickName')", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('workspaceDataBrick'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "properties": { + "roleDefinitionId": "[extensionResourceId(variables('workspaceDataBrick'), 'Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinition'))]", + "principalId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').principalId]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "containerRegistryTemplate", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "GET-PREREQ-resourceGroup", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": true, + "scope": "Microsoft.ContainerRegistry/registries/GET-PREREQ-containerRegistryName", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('workspaceContainerRegistry'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "properties": { + "roleDefinitionId": "[extensionResourceId(variables('workspaceContainerRegistry'), 'Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinition'))]", + "principalId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').principalId]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "cmkKeyvaultTemplate", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "GET-PREREQ-resourceGroup", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": true, + "scope": "Microsoft.KeyVault/vaults/GET-PREREQ-keyVaultName", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('workspaceCMKKeyVault'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "properties": { + "roleDefinitionId": "[extensionResourceId(variables('workspaceCMKKeyVault'), 'Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinition'))]", + "principalId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').principalId]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "workspaceResourceGroupTemplate", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "[resourceGroup().name]", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": true, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('workspaceResourceGroup'), variables('primaryUserAssignedIdentity'), variables('contributorRoleDefinition'))]", + "properties": { + "roleDefinitionId": "[extensionResourceId(variables('workspaceResourceGroup'), 'Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinition'))]", + "principalId": "[reference(variables('primaryUserAssignedIdentity'), '2018-11-30').principalId]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1446 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1446 new file mode 100644 index 0000000..fc89061 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1446 @@ -0,0 +1,2329 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure/azuredeploy.parameters.json" + ], + "timestamp": 1642962907844, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1446", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1446", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "14565441295447500401" + } + }, + "parameters": { + "prefix": { + "type": "string", + "metadata": { + "description": "Prefix for all resource names." + }, + "maxLength": 10, + "minLength": 2, + "value": "GEN-UNIQUE-6" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region used for the deployment of all resources." + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Set of tags to apply to all resources." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/16", + "metadata": { + "description": "Virtual network address prefix" + } + }, + "trainingSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/24", + "metadata": { + "description": "Training subnet address prefix" + } + }, + "scoringSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.1.0/24", + "metadata": { + "description": "Scoring subnet address prefix" + } + }, + "azureBastionSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.250.0/27", + "metadata": { + "description": "Bastion subnet address prefix" + } + }, + "deployJumphost": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Deploy a Bastion jumphost to access the network-isolated environment?" + } + }, + "dsvmJumpboxUsername": { + "type": "string", + "metadata": { + "description": "Jumphost virtual machine username" + }, + "value": "GEN-UNIQUE-12" + }, + "dsvmJumpboxPassword": { + "type": "secureString", + "metadata": { + "description": "Jumphost virtual machine password" + }, + "minLength": 8, + "value": "GEN-PASSWORD" + }, + "amlComputePublicIp": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable public IP for Azure Machine Learning compute nodes" + } + } + }, + "functions": [], + "variables": { + "name": "[toLower(format('{0}', parameters('prefix')))]", + "uniqueSuffix": "[substring(uniqueString(resourceGroup().id), 0, 4)]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('nsg-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "tags": { + "value": {} + }, + "nsgName": { + "value": "[format('nsg-{0}-{1}', variables('name'), variables('uniqueSuffix'))]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "5724756153718803515" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "tags": { + "type": "object", + "metadata": { + "description": "Tags to add to the resources" + } + }, + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the network security group" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "nsgName", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "securityRules": [ + { + "name": "BatchNodeManagement", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "29876-29877", + "sourceAddressPrefix": "BatchNodeManagement", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "AzureMachineLearning", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "44224", + "sourceAddressPrefix": "AzureMachineLearning", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "AzureActiveDirectory", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "AzureActiveDirectory", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "AzureMachineLearningOutbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "AzureMachineLearning", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "AzureResourceManager", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "AzureResourceManager", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "AzureStorageAccount", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "[format('Storage.{0}', parameters('location'))]", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "AzureFrontDoor", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "AzureFrontDoor.FrontEnd", + "access": "Allow", + "priority": 180, + "direction": "Outbound" + } + }, + { + "name": "AzureContainerRegistry", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "[format('AzureContainerRegistry.{0}', parameters('location'))]", + "access": "Allow", + "priority": 190, + "direction": "Outbound" + } + }, + { + "name": "MicrosoftContainerRegistry", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "MicrosoftContainerRegistry", + "access": "Allow", + "priority": 200, + "direction": "Outbound" + } + } + ] + } + } + ], + "outputs": { + "networkSecurityGroup": { + "type": "string", + "value": "Microsoft.Network/networkSecurityGroups/nsgName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "[format('vnet-{0}-{1}', variables('name'), variables('uniqueSuffix'))]" + }, + "networkSecurityGroupId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', format('nsg-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.networkSecurityGroup.value]" + }, + "vnetAddressPrefix": { + "value": "192.168.0.0/16" + }, + "trainingSubnetPrefix": { + "value": "192.168.0.0/24" + }, + "scoringSubnetPrefix": { + "value": "192.168.1.0/24" + }, + "tags": { + "value": {} + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "10591746188748759881" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Tags to add to the resources" + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the virtual network resource" + } + }, + "networkSecurityGroupId": { + "type": "string", + "metadata": { + "description": "Group ID of the network security group" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/16", + "metadata": { + "description": "Virtual network address prefix" + } + }, + "trainingSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/24", + "metadata": { + "description": "Training subnet address prefix" + } + }, + "scoringSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.1.0/24", + "metadata": { + "description": "Scoring subnet address prefix" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "virtualNetworkName", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.0.0/16" + ] + }, + "subnets": [ + { + "name": "snet-training", + "properties": { + "addressPrefix": "192.168.0.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled", + "networkSecurityGroup": { + "id": "networkSecurityGroupId" + } + } + }, + { + "name": "snet-scoring", + "properties": { + "addressPrefix": "192.168.1.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled", + "serviceEndpoints": [ + { + "service": "Microsoft.KeyVault" + }, + { + "service": "Microsoft.ContainerRegistry" + }, + { + "service": "Microsoft.Storage" + } + ], + "networkSecurityGroup": { + "id": "networkSecurityGroupId" + } + } + } + ] + } + } + ], + "outputs": { + "id": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/virtualNetworkName" + }, + "name": { + "type": "string", + "value": "virtualNetworkName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', format('nsg-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('kv-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "keyvaultName": { + "value": "[format('kv-{0}-{1}', variables('name'), variables('uniqueSuffix'))]" + }, + "keyvaultPleName": { + "value": "[format('ple-{0}-{1}-kv', variables('name'), variables('uniqueSuffix'))]" + }, + "subnetId": { + "value": "[format('{0}/subnets/snet-training', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "virtualNetworkId": { + "value": "[format('{0}', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "tags": { + "value": {} + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "12636422013707223001" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Azure Region to deploy the resrouce group into" + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Tags to apply to the Key Vault Instance" + } + }, + "keyvaultName": { + "type": "string", + "metadata": { + "description": "The name of the Key Vault" + } + }, + "keyvaultPleName": { + "type": "string", + "metadata": { + "description": "The name of the Key Vault private link endpoint" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The Subnet ID where the Key Vault Private Link is to be created" + } + }, + "virtualNetworkId": { + "type": "string", + "metadata": { + "description": "The VNet ID where the Key Vault Private Link is to be created" + } + } + }, + "functions": [], + "variables": { + "privateDnsZoneName": "[format('privatelink{0}', environment().suffixes.keyvaultDns)]" + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "keyvaultName", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "createMode": "default", + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "enableSoftDelete": true, + "enableRbacAuthorization": true, + "enablePurgeProtection": true, + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Deny" + }, + "sku": { + "family": "A", + "name": "standard" + }, + "softDeleteRetentionInDays": 7, + "tenantId": "[subscription().tenantId]" + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-11-01", + "name": "keyvaultPleName", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "privateLinkServiceConnections": [ + { + "name": "keyvaultPleName", + "properties": { + "groupIds": [ + "vault" + ], + "privateLinkServiceId": "Microsoft.KeyVault/vaults/keyvaultName" + } + } + ], + "subnet": { + "id": "subnetId" + } + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/keyvaultName" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "privateDnsZoneName", + "location": "global" + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "[format('{0}/vault-PrivateDnsZoneGroup', parameters('keyvaultPleName'))]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "privateDnsZoneName", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privateDnsZoneName" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privateDnsZoneName", + "Microsoft.Network/privateEndpoints/keyvaultPleName" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[format('{0}/{1}', variables('privateDnsZoneName'), uniqueString(resourceId('Microsoft.KeyVault/vaults', parameters('keyvaultName'))))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "virtualNetworkId" + } + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/keyvaultName", + "Microsoft.Network/privateDnsZones/privateDnsZoneName" + ] + } + ], + "outputs": { + "keyvaultId": { + "type": "string", + "value": "Microsoft.KeyVault/vaults/keyvaultName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('st{0}{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "storageName": { + "value": "[format('st{0}{1}', variables('name'), variables('uniqueSuffix'))]" + }, + "storagePleBlobName": { + "value": "[format('ple-{0}-{1}-st-blob', variables('name'), variables('uniqueSuffix'))]" + }, + "storagePleFileName": { + "value": "[format('ple-{0}-{1}-st-file', variables('name'), variables('uniqueSuffix'))]" + }, + "storageSkuName": { + "value": "Standard_LRS" + }, + "subnetId": { + "value": "[format('{0}/subnets/snet-training', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "virtualNetworkId": { + "value": "[format('{0}', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "tags": { + "value": {} + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "14988990043174041597" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "tags": { + "type": "object", + "metadata": { + "description": "Tags to add to the resources" + } + }, + "storageName": { + "type": "string", + "metadata": { + "description": "Name of the storage account" + } + }, + "storagePleBlobName": { + "type": "string", + "metadata": { + "description": "Name of the storage blob private link endpoint" + } + }, + "storagePleFileName": { + "type": "string", + "metadata": { + "description": "Name of the storage file private link endpoint" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the subnet" + } + }, + "virtualNetworkId": { + "type": "string", + "metadata": { + "description": "Resource ID of the virtual network" + } + }, + "storageSkuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Storage SKU" + }, + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_GZRS", + "Standard_RAGRS", + "Standard_RAGZRS", + "Premium_LRS", + "Premium_ZRS" + ] + } + }, + "functions": [], + "variables": { + "storageNameCleaned": "[replace(parameters('storageName'), '-', '')]", + "blobPrivateDnsZoneName": "[format('privatelink.blob.{0}', environment().suffixes.storage)]", + "filePrivateDnsZoneName": "[format('privatelink.file.{0}', environment().suffixes.storage)]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "storageNameCleaned", + "location": "[resourceGroup().location]", + "tags": {}, + "sku": { + "name": "storageSkuName" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "allowBlobPublicAccess": false, + "allowCrossTenantReplication": false, + "allowSharedKeyAccess": true, + "encryption": { + "keySource": "Microsoft.Storage", + "requireInfrastructureEncryption": false, + "services": { + "blob": { + "enabled": true, + "keyType": "Account" + }, + "file": { + "enabled": true, + "keyType": "Account" + }, + "queue": { + "enabled": true, + "keyType": "Service" + }, + "table": { + "enabled": true, + "keyType": "Service" + } + } + }, + "isHnsEnabled": false, + "isNfsV3Enabled": false, + "keyPolicy": { + "keyExpirationPeriodInDays": 7 + }, + "largeFileSharesState": "Disabled", + "minimumTlsVersion": "TLS1_2", + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Deny" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-11-01", + "name": "storagePleBlobName", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "privateLinkServiceConnections": [ + { + "name": "storagePleBlobName", + "properties": { + "groupIds": [ + "blob" + ], + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/storageNameCleaned", + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "Auto-Approved", + "actionsRequired": "None" + } + } + } + ], + "subnet": { + "id": "subnetId" + } + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/storageNameCleaned" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-11-01", + "name": "storagePleFileName", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "privateLinkServiceConnections": [ + { + "name": "storagePleFileName", + "properties": { + "groupIds": [ + "file" + ], + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/storageNameCleaned", + "privateLinkServiceConnectionState": { + "status": "Approved", + "description": "Auto-Approved", + "actionsRequired": "None" + } + } + } + ], + "subnet": { + "id": "subnetId" + } + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/storageNameCleaned" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "blobPrivateDnsZoneName", + "location": "global" + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "[format('{0}/blob-PrivateDnsZoneGroup', parameters('storagePleBlobName'))]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "blobPrivateDnsZoneName", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/blobPrivateDnsZoneName" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/blobPrivateDnsZoneName", + "Microsoft.Network/privateEndpoints/storagePleBlobName" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[format('{0}/{1}', variables('blobPrivateDnsZoneName'), uniqueString(resourceId('Microsoft.Storage/storageAccounts', variables('storageNameCleaned'))))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "virtualNetworkId" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/blobPrivateDnsZoneName", + "Microsoft.Storage/storageAccounts/storageNameCleaned" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "filePrivateDnsZoneName", + "location": "global" + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "[format('{0}/flie-PrivateDnsZoneGroup', parameters('storagePleFileName'))]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "filePrivateDnsZoneName", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/filePrivateDnsZoneName" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/filePrivateDnsZoneName", + "Microsoft.Network/privateEndpoints/storagePleFileName" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[format('{0}/{1}', variables('filePrivateDnsZoneName'), uniqueString(resourceId('Microsoft.Storage/storageAccounts', variables('storageNameCleaned'))))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "virtualNetworkId" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/filePrivateDnsZoneName", + "Microsoft.Storage/storageAccounts/storageNameCleaned" + ] + } + ], + "outputs": { + "storageId": { + "type": "string", + "value": "Microsoft.Storage/storageAccounts/storageNameCleaned" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('cr{0}{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "containerRegistryName": { + "value": "[format('cr{0}{1}', variables('name'), variables('uniqueSuffix'))]" + }, + "containerRegistryPleName": { + "value": "[format('ple-{0}-{1}-cr', variables('name'), variables('uniqueSuffix'))]" + }, + "subnetId": { + "value": "[format('{0}/subnets/snet-training', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "virtualNetworkId": { + "value": "[format('{0}', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "tags": { + "value": {} + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "1520760919535861853" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "tags": { + "type": "object", + "metadata": { + "description": "Tags to add to the resources" + } + }, + "containerRegistryName": { + "type": "string", + "metadata": { + "description": "Container registry name" + } + }, + "containerRegistryPleName": { + "type": "string", + "metadata": { + "description": "Container registry private link endpoint name" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the subnet" + } + }, + "virtualNetworkId": { + "type": "string", + "metadata": { + "description": "Resource ID of the virtual network" + } + } + }, + "functions": [], + "variables": { + "containerRegistryNameCleaned": "[replace(parameters('containerRegistryName'), '-', '')]", + "privateDnsZoneName": "[format('privatelink{0}', environment().suffixes.acrLoginServer)]", + "groupName": "registry" + }, + "resources": [ + { + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2020-11-01-preview", + "name": "containerRegistryNameCleaned", + "location": "[resourceGroup().location]", + "tags": {}, + "sku": { + "name": "Premium" + }, + "properties": { + "adminUserEnabled": true, + "anonymousPullEnabled": false, + "dataEndpointEnabled": false, + "networkRuleBypassOptions": "AzureServices", + "networkRuleSet": { + "defaultAction": "Deny" + }, + "policies": { + "quarantinePolicy": { + "status": "enabled" + }, + "retentionPolicy": { + "status": "enabled", + "days": 7 + }, + "trustPolicy": { + "status": "disabled", + "type": "Notary" + } + }, + "publicNetworkAccess": "Disabled", + "zoneRedundancy": "Disabled" + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-11-01", + "name": "containerRegistryPleName", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "privateLinkServiceConnections": [ + { + "name": "containerRegistryPleName", + "properties": { + "groupIds": [ + "groupName" + ], + "privateLinkServiceId": "Microsoft.ContainerRegistry/registries/containerRegistryNameCleaned" + } + } + ], + "subnet": { + "id": "subnetId" + } + }, + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/containerRegistryNameCleaned" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "privateDnsZoneName", + "location": "global" + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}-PrivateDnsZoneGroup', parameters('containerRegistryPleName'), variables('groupName'))]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "privateDnsZoneName", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privateDnsZoneName" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privateDnsZoneName", + "Microsoft.Network/privateEndpoints/containerRegistryPleName" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[format('{0}/{1}', variables('privateDnsZoneName'), uniqueString(resourceId('Microsoft.ContainerRegistry/registries', variables('containerRegistryNameCleaned'))))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "virtualNetworkId" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privateDnsZoneName", + "Microsoft.ContainerRegistry/registries/containerRegistryNameCleaned" + ] + } + ], + "outputs": { + "containerRegistryId": { + "type": "string", + "value": "Microsoft.ContainerRegistry/registries/containerRegistryNameCleaned" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('appi-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "applicationInsightsName": { + "value": "[format('appi-{0}-{1}', variables('name'), variables('uniqueSuffix'))]" + }, + "tags": { + "value": {} + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "17382591072791361067" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Tags to add to the resources" + } + }, + "applicationInsightsName": { + "type": "string", + "metadata": { + "description": "Application Insights resource name" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "applicationInsightsName", + "location": "[resourceGroup().location]", + "tags": {}, + "kind": "web", + "properties": { + "Application_Type": "web", + "DisableIpMasking": false, + "DisableLocalAuth": false, + "Flow_Type": "Bluefield", + "ForceCustomerStorageForProfiler": false, + "ImmediatePurgeDataOn30Days": true, + "IngestionMode": "ApplicationInsights", + "publicNetworkAccessForIngestion": "Enabled", + "publicNetworkAccessForQuery": "Disabled", + "Request_Source": "rest" + } + } + ], + "outputs": { + "applicationInsightsId": { + "type": "string", + "value": "Microsoft.Insights/components/applicationInsightsName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('mlw-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "machineLearningName": { + "value": "[format('mlw-{0}-{1}', variables('name'), variables('uniqueSuffix'))]" + }, + "machineLearningFriendlyName": { + "value": "Private link endpoint sample workspace" + }, + "machineLearningDescription": { + "value": "This is an example workspace having a private link endpoint." + }, + "location": { + "value": "[resourceGroup().location]" + }, + "prefix": { + "value": "[toLower(format('{0}', parameters('prefix')))]" + }, + "tags": { + "value": {} + }, + "applicationInsightsId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', format('appi-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.applicationInsightsId.value]" + }, + "containerRegistryId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', format('cr{0}{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.containerRegistryId.value]" + }, + "keyVaultId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', format('kv-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.keyvaultId.value]" + }, + "storageAccountId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', format('st{0}{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.storageId.value]" + }, + "subnetId": { + "value": "[format('{0}/subnets/snet-training', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "computeSubnetId": { + "value": "[format('{0}/subnets/snet-training', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "aksSubnetId": { + "value": "[format('{0}/subnets/snet-scoring', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "virtualNetworkId": { + "value": "[format('{0}', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "machineLearningPleName": { + "value": "[format('ple-{0}-{1}-mlw', variables('name'), variables('uniqueSuffix'))]" + }, + "amlComputePublicIp": { + "value": true + }, + "mlAksName": { + "value": "[format('aks-{0}-{1}', variables('name'), variables('uniqueSuffix'))]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "5261050574578415030" + } + }, + "parameters": { + "prefix": { + "type": "string", + "metadata": { + "description": "Prefix for resource names" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "tags": { + "type": "object", + "metadata": { + "description": "Tags to add to the resources" + } + }, + "machineLearningName": { + "type": "string", + "metadata": { + "description": "Machine learning workspace name" + } + }, + "machineLearningFriendlyName": { + "type": "string", + "defaultValue": "machineLearningName", + "metadata": { + "description": "Machine learning workspace display name" + } + }, + "machineLearningDescription": { + "type": "string", + "metadata": { + "description": "Machine learning workspace description" + } + }, + "mlAksName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Kubernetes services resource to create and attached to the machine learning workspace" + } + }, + "applicationInsightsId": { + "type": "string", + "metadata": { + "description": "Resource ID of the application insights resource" + } + }, + "containerRegistryId": { + "type": "string", + "metadata": { + "description": "Resource ID of the container registry resource" + } + }, + "keyVaultId": { + "type": "string", + "metadata": { + "description": "Resource ID of the key vault resource" + } + }, + "storageAccountId": { + "type": "string", + "metadata": { + "description": "Resource ID of the storage account resource" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the subnet resource" + } + }, + "computeSubnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the compute subnet" + } + }, + "aksSubnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the Azure Kubernetes services resource" + } + }, + "virtualNetworkId": { + "type": "string", + "metadata": { + "description": "Resource ID of the virtual network" + } + }, + "machineLearningPleName": { + "type": "string", + "metadata": { + "description": "Machine learning workspace private link endpoint name" + } + }, + "amlComputePublicIp": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable public IP for Azure Machine Learning compute nodes" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2021-04-01", + "name": "machineLearningName", + "location": "[resourceGroup().location]", + "tags": {}, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "friendlyName": "machineLearningFriendlyName", + "description": "machineLearningDescription", + "applicationInsights": "applicationInsightsId", + "containerRegistry": "containerRegistryId", + "keyVault": "keyVaultId", + "storageAccount": "storageAccountId", + "imageBuildCompute": "cluster001", + "allowPublicAccessWhenBehindVnet": false + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "machineLearningNetworking", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "tags": { + "value": {} + }, + "virtualNetworkId": { + "value": "virtualNetworkId" + }, + "workspaceArmId": { + "value": "Microsoft.MachineLearningServices/workspaces/machineLearningName" + }, + "subnetId": { + "value": "subnetId" + }, + "machineLearningPleName": { + "value": "machineLearningPleName" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "17531978814905497831" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "machineLearningPleName": { + "type": "string", + "metadata": { + "description": "Machine learning workspace private link endpoint name" + } + }, + "virtualNetworkId": { + "type": "string", + "metadata": { + "description": "Resource ID of the virtual network resource" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the subnet resource" + } + }, + "workspaceArmId": { + "type": "string", + "metadata": { + "description": "Resource ID of the machine learning workspace" + } + }, + "tags": { + "type": "object", + "metadata": { + "description": "Tags to add to the resources" + } + } + }, + "functions": [], + "variables": { + "privateDnsZoneName": { + "azureusgovernment": "privatelink.api.ml.azure.us", + "azurechinacloud": "privatelink.api.ml.azure.cn", + "azurecloud": "privatelink.api.azureml.ms" + }, + "privateAznbDnsZoneName": { + "azureusgovernment": "privatelink.notebooks.usgovcloudapi.net", + "azurechinacloud": "privatelink.notebooks.chinacloudapi.cn", + "azurecloud": "privatelink.notebooks.azure.net" + } + }, + "resources": [ + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-11-01", + "name": "machineLearningPleName", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "privateLinkServiceConnections": [ + { + "name": "machineLearningPleName", + "properties": { + "groupIds": [ + "amlworkspace" + ], + "privateLinkServiceId": "workspaceArmId" + } + } + ], + "subnet": { + "id": "subnetId" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "(privateDnsZoneName)[toLower(environment().name)]", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[format('{0}/{1}', variables('privateDnsZoneName')[toLower(environment().name)], uniqueString(parameters('workspaceArmId')))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "virtualNetworkId" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName')[toLower(environment().name)])]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "(privateAznbDnsZoneName)[toLower(environment().name)]", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[format('{0}/{1}', variables('privateAznbDnsZoneName')[toLower(environment().name)], uniqueString(parameters('workspaceArmId')))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "virtualNetworkId" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', variables('privateAznbDnsZoneName')[toLower(environment().name)])]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "[format('{0}/amlworkspace-PrivateDnsZoneGroup', parameters('machineLearningPleName'))]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "(privateDnsZoneName)[environment().name]", + "properties": { + "privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName')[toLower(environment().name)])]" + } + }, + { + "name": "(privateAznbDnsZoneName)[environment().name]", + "properties": { + "privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('privateAznbDnsZoneName')[toLower(environment().name)])]" + } + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName')[toLower(environment().name)])]", + "Microsoft.Network/privateEndpoints/machineLearningPleName", + "[resourceId('Microsoft.Network/privateDnsZones', variables('privateAznbDnsZoneName')[toLower(environment().name)])]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/machineLearningName" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "machineLearningComputes", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "machineLearning": { + "value": "machineLearningName" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "computeSubnetId": { + "value": "computeSubnetId" + }, + "aksName": { + "value": "mlAksName" + }, + "aksSubnetId": { + "value": "aksSubnetId" + }, + "prefix": { + "value": "GEN-UNIQUE-6" + }, + "tags": { + "value": {} + }, + "amlComputePublicIp": { + "value": true + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "1624514256460089621" + } + }, + "parameters": { + "prefix": { + "type": "string", + "metadata": { + "description": "Prefix for resource names" + } + }, + "machineLearning": { + "type": "string", + "metadata": { + "description": "Azure Machine Learning workspace to create the compute resources in" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "tags": { + "type": "object", + "metadata": { + "description": "Tags to add to the resources" + } + }, + "computeSubnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the compute subnet" + } + }, + "aksName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Kubernetes services resource" + } + }, + "aksSubnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the Azure Kubernetes services resource" + } + }, + "amlComputePublicIp": { + "type": "bool", + "metadata": { + "description": "Resource ID of the Azure Kubernetes services resource" + } + }, + "amlComputeDefaultVmSize": { + "type": "string", + "defaultValue": "Standard_Ds3_v2", + "metadata": { + "description": "VM size for the default compute cluster" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2021-07-01", + "name": "[format('{0}/cluster001', parameters('machineLearning'))]", + "location": "[resourceGroup().location]", + "tags": {}, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "computeType": "AmlCompute", + "computeLocation": "[resourceGroup().location]", + "description": "Machine Learning cluster 001", + "disableLocalAuth": true, + "properties": { + "vmPriority": "Dedicated", + "vmSize": "amlComputeDefaultVmSize", + "enableNodePublicIp": true, + "isolatedNetwork": false, + "osType": "Linux", + "remoteLoginPortPublicAccess": "Disabled", + "scaleSettings": { + "minNodeCount": 0, + "maxNodeCount": 5, + "nodeIdleTimeBeforeScaleDown": "PT120S" + }, + "subnet": { + "id": "computeSubnetId" + } + } + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2021-07-01", + "name": "[format('{0}/{1}-ci001', parameters('machineLearning'), parameters('prefix'))]", + "location": "[resourceGroup().location]", + "tags": {}, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "computeType": "ComputeInstance", + "computeLocation": "[resourceGroup().location]", + "description": "Machine Learning compute instance 001", + "disableLocalAuth": true, + "properties": { + "applicationSharingPolicy": "Personal", + "computeInstanceAuthorizationType": "personal", + "sshSettings": { + "sshPublicAccess": "Disabled" + }, + "subnet": { + "id": "computeSubnetId" + }, + "vmSize": "amlComputeDefaultVmSize" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "aksName", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "tags": { + "value": {} + }, + "aksClusterName": { + "value": "aksName" + }, + "computeName": { + "value": "aksName" + }, + "aksSubnetId": { + "value": "aksSubnetId" + }, + "workspaceName": { + "value": "machineLearning" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "12038476238490937868" + } + }, + "parameters": { + "aksClusterName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Kubernetes Service cluster" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "tags": { + "type": "object", + "metadata": { + "description": "Tags to add to the resources" + } + }, + "aksSubnetId": { + "type": "string", + "metadata": { + "description": "Resource ID for the Azure Kubernetes Service subnet" + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Machine Learning workspace" + } + }, + "computeName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Machine Learning attached compute" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2020-07-01", + "name": "aksClusterName", + "location": "[resourceGroup().location]", + "tags": {}, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "kubernetesVersion": "1.20.7", + "dnsPrefix": "[format('{0}-dns', parameters('aksClusterName'))]", + "agentPoolProfiles": [ + { + "name": "[toLower('agentpool')]", + "count": 3, + "vmSize": "Standard_DS2_v2", + "osDiskSizeGB": 128, + "vnetSubnetID": "aksSubnetId", + "maxPods": 110, + "osType": "Linux", + "mode": "System", + "type": "VirtualMachineScaleSets" + } + ], + "enableRBAC": true, + "networkProfile": { + "networkPlugin": "kubenet", + "serviceCidr": "10.0.0.0/16", + "dnsServiceIP": "10.0.0.10", + "dockerBridgeCidr": "172.17.0.1/16", + "loadBalancerSku": "standard" + }, + "apiServerAccessProfile": { + "enablePrivateCluster": true + } + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2021-01-01", + "name": "[format('{0}/{1}', parameters('workspaceName'), parameters('computeName'))]", + "location": "[resourceGroup().location]", + "properties": { + "computeType": "AKS", + "resourceId": "Microsoft.ContainerService/managedClusters/aksClusterName", + "properties": { + "aksNetworkingConfiguration": { + "subnetId": "aksSubnetId" + } + } + }, + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/aksClusterName" + ] + } + ], + "outputs": { + "aksResourceId": { + "type": "string", + "value": "Microsoft.ContainerService/managedClusters/aksClusterName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/machineLearningName", + "Microsoft.Resources/deployments/machineLearningNetworking" + ] + } + ], + "outputs": { + "machineLearningId": { + "type": "string", + "value": "Microsoft.MachineLearningServices/workspaces/machineLearningName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', format('appi-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]", + "[resourceId('Microsoft.Resources/deployments', format('cr{0}{1}-deployment', variables('name'), variables('uniqueSuffix')))]", + "[resourceId('Microsoft.Resources/deployments', format('kv-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]", + "[resourceId('Microsoft.Resources/deployments', format('st{0}{1}-deployment', variables('name'), variables('uniqueSuffix')))]", + "[resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]" + ] + }, + { + "condition": true, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('vm-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualMachineName": { + "value": "[format('vm-{0}-{1}', variables('name'), variables('uniqueSuffix'))]" + }, + "subnetId": { + "value": "[format('{0}/subnets/snet-training', reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.id.value)]" + }, + "adminUsername": { + "value": "GEN-UNIQUE-12" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "networkSecurityGroupId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', format('nsg-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.networkSecurityGroup.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "14144773516215032849" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region of the deployment" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "Resource ID of the subnet" + } + }, + "networkSecurityGroupId": { + "type": "string", + "metadata": { + "description": "Network Security Group Resource ID" + } + }, + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "Virtual machine name" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_DS3_v2", + "metadata": { + "description": "Virtual machine size" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Virtual machine admin username" + } + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "Virtual machine admin password" + }, + "minLength": 8 + } + }, + "functions": [], + "variables": { + "aadLoginExtensionName": "AADLoginForWindows" + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-03-01", + "name": "[format('{0}-nic', parameters('virtualMachineName'))]", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + } + } + ], + "networkSecurityGroup": { + "id": "networkSecurityGroupId" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-03-01", + "name": "virtualMachineName", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "imageReference": { + "publisher": "microsoft-dsvm", + "offer": "dsvm-win-2019", + "sku": "server-2019", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', format('{0}-nic', parameters('virtualMachineName')))]" + } + ] + }, + "osProfile": { + "computerName": "virtualMachineName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword", + "windowsConfiguration": { + "enableAutomaticUpdates": true, + "provisionVMAgent": true, + "patchSettings": { + "enableHotpatching": false, + "patchMode": "AutomaticByOS" + } + } + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true + } + } + }, + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', format('{0}-nic', parameters('virtualMachineName')))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-03-01", + "name": "[format('{0}/{1}', parameters('virtualMachineName'), variables('aadLoginExtensionName'))]", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.ActiveDirectory", + "type": "aadLoginExtensionName", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/virtualMachineName" + ] + } + ], + "outputs": { + "dsvmId": { + "type": "string", + "value": "Microsoft.Compute/virtualMachines/virtualMachineName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', format('nsg-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]", + "[resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]" + ] + }, + { + "condition": true, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('bas-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "bastionHostName": { + "value": "[format('bas-{0}-{1}', variables('name'), variables('uniqueSuffix'))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "vnetName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix'))), '2020-06-01').outputs.name.value]" + }, + "addressPrefix": { + "value": "192.168.250.0/27" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "6308129535924756775" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Azure region where the Bastion should be deployed" + } + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "Virtual network name" + } + }, + "addressPrefix": { + "type": "string", + "defaultValue": "192.168.250.0/27", + "metadata": { + "description": "The address prefix to use for the Bastion subnet" + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "pip-bastion", + "metadata": { + "description": "The name of the Bastion public IP address" + } + }, + "bastionHostName": { + "type": "string", + "defaultValue": "bastion-jumpbox", + "metadata": { + "description": "The name of the Bastion host" + } + } + }, + "functions": [], + "variables": { + "subnetName": "AzureBastionSubnet" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2021-02-01", + "name": "[format('{0}/{1}', parameters('vnetName'), variables('subnetName'))]", + "properties": { + "addressPrefix": "addressPrefix", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "publicIpName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/bastionHosts", + "apiVersion": "2021-03-01", + "name": "bastionHostName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', split(format('{0}/{1}', parameters('vnetName'), variables('subnetName')), '/')[0], split(format('{0}/{1}', parameters('vnetName'), variables('subnetName')), '/')[1])]" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIpName" + } + } + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/subnets', split(format('{0}/{1}', parameters('vnetName'), variables('subnetName')), '/')[0], split(format('{0}/{1}', parameters('vnetName'), variables('subnetName')), '/')[1])]", + "Microsoft.Network/publicIPAddresses/publicIpName" + ] + } + ], + "outputs": { + "bastionId": { + "type": "string", + "value": "Microsoft.Network/bastionHosts/bastionHostName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', format('vnet-{0}-{1}-deployment', variables('name'), variables('uniqueSuffix')))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1447 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1447 new file mode 100644 index 0000000..30de6d1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1447 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/logicapproleassignments.json" + ], + "timestamp": 1642962907860, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/logicapproleassignments.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1447", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1447", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string" + } + }, + "variables": { + "contributor": "b24988ac-6180-42a0-ab88-20f7382dd24c", + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "roleAssignmentName": "[guid(resourceId('Microsoft.Logic/workflows', parameters('logicAppName')), resourceGroup().id, variables('roleDefinitionId'))]" + }, + "resources": [ + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceId('Microsoft.Logic/workflows', parameters('logicAppName')), resourceGroup().id, variables('roleDefinitionId'))]", + "properties": { + "principalId": "[reference(resourceId('Microsoft.Logic/workflows', parameters('logicAppName')), '2019-05-01', 'full').identity.principalId]", + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1448 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1448 new file mode 100644 index 0000000..8e59ec8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1448 @@ -0,0 +1,341 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/pausetemplate.json" + ], + "timestamp": 1642962907867, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/pausetemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1448", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1448", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "companyTla": { + "type": "string" + }, + "deploymentType": { + "type": "string" + }, + "LogicAppName": { + "type": "string" + }, + "Frequency": { + "type": "string" + }, + "TIME_ZONE": { + "type": "string" + }, + "PauseTime": { + "type": "string" + } + }, + "variables": { + "pauseTimeHour": "[split(substring(parameters('PauseTime'), 11, 5), ':')[0]]", + "recurrenceHours": [ + "[split(substring(parameters('PauseTime'), 11, 5), ':')[0]]" + ], + "recurrenceMinutes": [ + 0 + ], + "pauseTimeString": "[substring(parameters('PauseTime'), 0, 8)]", + "dailySchedule": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "weekdaySchedule": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "recurrenceSchedule": "[if(equals(parameters('Frequency'), 'Weekdays'), variables('weekdaySchedule'), variables('dailySchedule'))]", + "synapseWorkspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "synapseName": "[toLower(concat(parameters('companyTla'),parameters('deploymentType')))]", + "synapseSQLPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "getRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}?api-version=2019-06-01-preview", + "pauseRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}/pause?api-version=2019-06-01-preview", + "aqcRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['WorkspaceName']}/sqlpools/@{variables('RestAPIVariables')['SQLPoolName']}/dataWarehouseUserActivities/current?api-version=2019-06-01-preview", + "managementEndpoint": "[environment().resourceManager]" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "LogicAppName", + "location": "location", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Initialize_API_variables": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "RestAPIVariables", + "type": "Object", + "value": { + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "sqlPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "ResourceGroupName": "[resourceGroup().name]", + "SubscriptionId": "[subscription().subscriptionId]", + "TenantId": "[subscription().tenantId]", + "ScheduleTimeZone": "TIME_ZONE", + "PauseTime": "[substring(parameters('PauseTime'), 0, 8)]" + } + } + ] + } + }, + "Initialize_ActiveQueryCount_variable": { + "inputs": { + "variables": [ + { + "name": "ActiveQueryCount", + "type": "Integer", + "value": 1 + } + ] + }, + "runAfter": { + "Initialize_API_variables": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Get_Synapse_state": { + "type": "Http", + "inputs": { + "method": "GET", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + }, + "runAfter": { + "Initialize_ActiveQueryCount_variable": [ + "Succeeded" + ] + } + }, + "Parse_JSON": { + "inputs": { + "content": "@body('Get_Synapse_state')", + "schema": { + "properties": { + "id": { + "type": "string" + }, + "location": { + "type": "string" + }, + "name": { + "type": "string" + }, + "properties": { + "properties": { + "collation": { + "type": "string" + }, + "creationDate": { + "type": "string" + }, + "maxSizeBytes": { + "type": "integer" + }, + "provisioningState": { + "type": "string" + }, + "restorePointInTime": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "sku": { + "properties": { + "capacity": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "runAfter": { + "Get_Synapse_state": [ + "Succeeded" + ] + }, + "type": "ParseJson" + }, + "PauseSynapseIfOnline": { + "type": "If", + "expression": { + "and": [ + { + "equals": [ + "@body('Get_Synapse_state')['properties']['status']", + "Online" + ] + } + ] + }, + "actions": { + "Pause_SQL_Pool": { + "type": "Http", + "inputs": { + "method": "POST", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}/pause?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + }, + "runAfter": { + "Until_ZeroActiveQueries": [ + "Succeeded" + ] + } + }, + "Until_ZeroActiveQueries": { + "type": "Until", + "expression": "@equals(variables('ActiveQueryCount'), 0)", + "limit": { + "count": 3, + "timeout": "PT3H" + }, + "actions": { + "GetActiveQueryCount": { + "type": "Http", + "inputs": { + "method": "GET", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['WorkspaceName']}/sqlpools/@{variables('RestAPIVariables')['SQLPoolName']}/dataWarehouseUserActivities/current?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + } + }, + "Update_ActiveQueryCount_variable": { + "type": "SetVariable", + "inputs": { + "name": "ActiveQueryCount", + "value": "@body('GetActiveQueryCount')['properties']['activeQueriesCount']" + }, + "runAfter": { + "GetActiveQueryCount": [ + "Succeeded" + ] + } + }, + "Wait5minsIfActiveQuery": { + "type": "If", + "actions": { + "Wait_5mins": { + "inputs": { + "interval": { + "count": 5, + "unit": "Minute" + } + }, + "type": "Wait" + } + }, + "expression": { + "and": [ + { + "greater": [ + "@variables('ActiveQueryCount')", + 0 + ] + } + ] + }, + "runAfter": { + "Update_ActiveQueryCount_variable": [ + "Succeeded" + ] + } + } + } + } + }, + "runAfter": { + "Parse_JSON": [ + "Succeeded" + ] + } + } + }, + "triggers": { + "Recurrence": { + "type": "Recurrence", + "recurrence": { + "frequency": "Week", + "interval": 1, + "timeZone": "TIME_ZONE", + "startTime": "2019-01-01T00:00:00Z", + "schedule": { + "weekDays": "[if(equals(parameters('Frequency'), 'Weekdays'), variables('weekdaySchedule'), variables('dailySchedule'))]", + "hours": [ + "[split(substring(parameters('PauseTime'), 11, 5), ':')[0]]" + ], + "minutes": [ + 0 + ] + } + } + } + }, + "contentVersion": "1.0.0.0", + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1449 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1449 new file mode 100644 index 0000000..8f48063 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1449 @@ -0,0 +1,257 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/resumetemplate.json" + ], + "timestamp": 1642962907876, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/nestedtemplates/resumetemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1449", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1449", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "companyTla": { + "type": "string" + }, + "deploymentType": { + "type": "string" + }, + "LogicAppName": { + "type": "string" + }, + "Frequency": { + "type": "string" + }, + "TIME_ZONE": { + "type": "string" + }, + "ResumeTime": { + "type": "string" + } + }, + "variables": { + "resumeTimeHour": "[split(substring(parameters('resumeTime'), 11, 5), ':')[0]]", + "recurrenceHours": [ + "[split(substring(parameters('resumeTime'), 11, 5), ':')[0]]" + ], + "recurrenceMinutes": [ + 0 + ], + "dailySchedule": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "weekdaySchedule": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "recurrenceSchedule": "[if(equals(parameters('Frequency'), 'Weekdays'), variables('weekdaySchedule'), variables('dailySchedule'))]", + "resumeTimeString": "[substring(parameters('ResumeTime'), 0, 8)]", + "synapseWorkspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "synapseName": "[toLower(concat(parameters('companyTla'),parameters('deploymentType')))]", + "synapseSQLPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "managementEndpoint": "[environment().resourceManager]", + "getRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}?api-version=2019-06-01-preview", + "resumeRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}/resume?api-version=2019-06-01-preview" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "LogicAppName", + "location": "location", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Initialize_API_variables": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "RestAPIVariables", + "type": "Object", + "value": { + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "sqlPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "ResourceGroupName": "[resourceGroup().name]", + "SubscriptionId": "[subscription().subscriptionId]", + "TenantId": "[subscription().tenantId]", + "ScheduleTimeZone": "TIME_ZONE", + "ResumeTime": "[substring(parameters('ResumeTime'), 0, 8)]" + } + } + ] + } + }, + "Get_Synapse_state": { + "type": "Http", + "inputs": { + "method": "GET", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + }, + "runAfter": { + "Initialize_API_Variables": [ + "Succeeded" + ] + } + }, + "Parse_JSON": { + "inputs": { + "content": "@body('Get_Synapse_state')", + "schema": { + "properties": { + "id": { + "type": "string" + }, + "location": { + "type": "string" + }, + "name": { + "type": "string" + }, + "properties": { + "properties": { + "collation": { + "type": "string" + }, + "creationDate": { + "type": "string" + }, + "maxSizeBytes": { + "type": "integer" + }, + "provisioningState": { + "type": "string" + }, + "restorePointInTime": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "sku": { + "properties": { + "capacity": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "runAfter": { + "Get_Synapse_state": [ + "Succeeded" + ] + }, + "type": "ParseJson" + }, + "ResumeSynapseIfOnline": { + "type": "If", + "expression": { + "and": [ + { + "equals": [ + "@body('Get_Synapse_state')['properties']['status']", + "Paused" + ] + } + ] + }, + "actions": { + "Resume_SQL_Pool": { + "type": "Http", + "inputs": { + "method": "POST", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}/resume?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + } + } + }, + "runAfter": { + "Parse_JSON": [ + "Succeeded" + ] + } + } + }, + "triggers": { + "Recurrence": { + "type": "Recurrence", + "recurrence": { + "frequency": "Week", + "interval": 1, + "timeZone": "TIME_ZONE", + "startTime": "2019-01-01T00:00:00Z", + "schedule": { + "weekDays": "[if(equals(parameters('Frequency'), 'Weekdays'), variables('weekdaySchedule'), variables('dailySchedule'))]", + "hours": [ + "[split(substring(parameters('resumeTime'), 11, 5), ':')[0]]" + ], + "minutes": [ + 0 + ] + } + } + } + }, + "contentVersion": "1.0.0.0", + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1450 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1450 new file mode 100644 index 0000000..631f5e4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1450 @@ -0,0 +1,853 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907883, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1450", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.authorization/roleassignments", + "microsoft.machinelearningservices/workspaces", + "microsoft.synapse/workspaces/sqlpools", + "microsoft.synapse/workspaces/bigdatapools", + "microsoft.synapse/workspaces", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1450", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSASToken": { + "type": "securestring", + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope" + ], + "metadata": { + "description": "Location for your deployment." + }, + "value": "eastus2" + }, + "companyTla": { + "type": "string", + "metadata": { + "description": "This is a Three Letter Acronym for your company name. 'CON' for Contoso for example." + }, + "value": "GEN-UNIQUE-3" + }, + "allowAllConnections": { + "type": "string", + "allowedValues": [ + "true", + "false" + ], + "defaultValue": "true" + }, + "sparkDeployment": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "'True' deploys an Apache Spark pool as well as a SQL pool. 'False' does not deploy an Apache Spark pool." + } + }, + "sparkNodeSize": { + "type": "string", + "defaultValue": "Medium", + "allowedValues": [ + "Small", + "Medium", + "Large" + ], + "metadata": { + "description": "This parameter will determine the node size if SparkDeployment is true" + } + }, + "deploymentType": { + "type": "string", + "defaultValue": "poc", + "allowedValues": [ + "devtest", + "poc", + "prod", + "shared" + ], + "metadata": { + "description": "Specify deployment type: DevTest, POC, Prod, Shared. This will also be used in the naming convention." + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The username of the SQL Administrator" + }, + "value": "GEN-UNIQUE-6" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the SQL Administrator" + }, + "value": "GEN-PASSWORD" + }, + "sku": { + "type": "string", + "defaultValue": "DW100c", + "allowedValues": [ + "DW100c", + "DW200c", + "DW300c", + "DW400c", + "DW500c", + "DW1000c", + "DW1500c", + "DW2000c", + "DW2500c", + "DW3000c" + ], + "metadata": { + "description": "Select the SKU of the SQL pool." + } + }, + "metadataSync": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Choose whether you want to synchronise metadata." + } + }, + "Frequency": { + "type": "string", + "defaultValue": "Weekdays", + "allowedValues": [ + "Daily", + "Weekdays" + ], + "metadata": { + "description": "Choose whether to run schedule every day of the week, or only on weekdays" + } + }, + "TIME_ZONE": { + "type": "string", + "defaultValue": "Eastern Standard Time", + "allowedValues": [ + "Dateline Standard Time", + "Samoa Standard Time", + "Hawaiian Standard Time", + "Alaskan Standard Time", + "Pacific Standard Time", + "Mountain Standard Time", + "Mexico Standard Time 2", + "Central Standard Time", + "Canada Central Standard Time", + "Mexico Standard Time", + "Central America Standard Time", + "Eastern Standard Time", + "Atlantic Standard Time", + "Newfoundland and Labrador Standard Time", + "E. South America Standard Time", + "S.A. Eastern Standard Time", + "Greenland Standard Time", + "Mid-Atlantic Standard Time", + "Azores Standard Time", + "Cape Verde Standard Time", + "GMT Standard Time", + "Greenwich Standard Time", + "Central Europe Standard Time", + "Central European Standard Time", + "Romance Standard Time", + "W. Europe Standard Time", + "W. Central Africa Standard Time", + "E. Europe Standard Time", + "Egypt Standard Time", + "FLE Standard Time", + "GTB Standard Time", + "Israel Standard Time", + "South Africa Standard Time", + "Russian Standard Time", + "Arab Standard Time", + "E. Africa Standard Time", + "Arabic Standard Time", + "Iran Standard Time", + "Arabian Standard Time", + "Caucasus Standard Time", + "Transitional Islamic State of Afghanistan Standard Time", + "Ekaterinburg Standard Time", + "West Asia Standard Time", + "India Standard Time", + "Nepal Standard Time", + "Central Asia Standard Time", + "Sri Lanka Standard Time", + "Myanmar Standard Time", + "North Asia Standard Time", + "China Standard Time", + "Singapore Standard Time", + "Taipei Standard Time", + "North Asia East Standard Time", + "Korea Standard Time", + "Tokyo Standard Time", + "Yakutsk Standard Time", + "Tasmania Standard Time", + "Vladivostok Standard Time", + "West Pacific Standard Time", + "Central Pacific Standard Time", + "Fiji Islands Standard Time", + "New Zealand Standard Time", + "Tonga Standard Time" + ], + "metadata": { + "description": "Timezone for the schedule. Consult https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx for more information" + } + }, + "ResumeTime": { + "type": "string", + "defaultValue": "09:00 PM ( 21:00 )", + "allowedValues": [ + "12:00 AM ( 0:00 )", + "01:00 AM ( 1:00 )", + "02:00 AM ( 2:00 )", + "03:00 AM ( 3:00 )", + "04:00 AM ( 4:00 )", + "05:00 AM ( 5:00 )", + "06:00 AM ( 6:00 )", + "07:00 AM ( 7:00 )", + "08:00 AM ( 8:00 )", + "09:00 AM ( 9:00 )", + "10:00 AM ( 10:00 )", + "11:00 AM ( 11:00 )", + "12:00 PM ( 12:00 )", + "01:00 PM ( 13:00 )", + "02:00 PM ( 14:00 )", + "03:00 PM ( 15:00 )", + "04:00 PM ( 16:00 )", + "05:00 PM ( 17:00 )", + "06:00 PM ( 18:00 )", + "07:00 PM ( 19:00 )", + "08:00 PM ( 20:00 )", + "09:00 PM ( 21:00 )", + "10:00 PM ( 22:00 )", + "11:00 PM ( 23:00 )" + ], + "metadata": { + "description": "Time of Day when the data warehouse will be resumed" + } + }, + "PauseTime": { + "type": "string", + "defaultValue": "05:00 PM ( 17:00 )", + "allowedValues": [ + "12:00 AM ( 0:00 )", + "01:00 AM ( 1:00 )", + "02:00 AM ( 2:00 )", + "03:00 AM ( 3:00 )", + "04:00 AM ( 4:00 )", + "05:00 AM ( 5:00 )", + "06:00 AM ( 6:00 )", + "07:00 AM ( 7:00 )", + "08:00 AM ( 8:00 )", + "09:00 AM ( 9:00 )", + "10:00 AM ( 10:00 )", + "11:00 AM ( 11:00 )", + "12:00 PM ( 12:00 )", + "01:00 PM ( 13:00 )", + "02:00 PM ( 14:00 )", + "03:00 PM ( 15:00 )", + "04:00 PM ( 16:00 )", + "05:00 PM ( 17:00 )", + "06:00 PM ( 18:00 )", + "07:00 PM ( 19:00 )", + "08:00 PM ( 20:00 )", + "09:00 PM ( 21:00 )", + "10:00 PM ( 22:00 )", + "11:00 PM ( 23:00 )" + ], + "metadata": { + "description": "Time of day when the data warehouse will be paused" + } + }, + "amlWorkspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "amlSku": { + "type": "string", + "defaultValue": "basic", + "allowedValues": [ + "basic", + "enterprise" + ], + "metadata": { + "description": "Specifies the sku, also referred as 'edition' of the Azure Machine Learning workspace." + }, + "value": "basic" + }, + "storageAccountNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ] + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id))]" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS", + "Premium_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ] + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]" + }, + "keyVaultNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not a key vault should be provisioned." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id))]" + }, + "keyVaultResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]" + }, + "applicationInsightsNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ] + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id))]" + }, + "applicationInsightsResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]" + }, + "containerRegistry": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The container registry resource id if you want to create a link to the workspace." + } + }, + "adbWorkspace": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Azure Databrick workspace resource id to be linked to the workspace" + } + }, + "confidential_data": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Specifies that the Azure Machine Learning workspace holds highly confidential data." + } + }, + "encryption_status": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Specifies if the Azure Machine Learning workspace should be encrypted with customer managed key." + } + }, + "cmk_keyvault": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the customer managed keyVault arm id." + } + }, + "resource_cmk_uri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies if the customer managed keyvault key uri." + } + } + }, + "variables": { + "synapseName": "[toLower(concat(parameters('companyTla'),parameters('deploymentType')))]", + "dlsName": "[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]", + "dlsFsName": "[toLower(concat(variables('dlsName'),'fs1'))]", + "sqlPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "sparkPoolName": "[toLower('synasp1')]", + "logicApps": [ + "SynapsePauseSchedule", + "SynapseResumeSchedule" + ], + "tenantId": "[subscription().tenantId]", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "logicAppPauseDeployment", + "properties": { + "mode": "Incremental", + "templatelink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/pausetemplate.json', parameters('_artifactsLocationSASToken')))]" + }, + "parameters": { + "logicAppName": { + "value": "(logicApps)[0]" + }, + "Frequency": { + "value": "Weekdays" + }, + "companyTla": { + "value": "GEN-UNIQUE-3" + }, + "deploymentType": { + "value": "poc" + }, + "TIME_ZONE": { + "value": "Eastern Standard Time" + }, + "PauseTime": { + "value": "05:00 PM ( 17:00 )" + }, + "location": { + "value": "eastus2" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "logicAppResumeDeployment", + "properties": { + "mode": "Incremental", + "templatelink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/resumetemplate.json', parameters('_artifactsLocationSASToken')))]" + }, + "parameters": { + "logicAppName": { + "value": "(logicApps)[1]" + }, + "Frequency": { + "value": "Weekdays" + }, + "companyTla": { + "value": "GEN-UNIQUE-3" + }, + "deploymentType": { + "value": "poc" + }, + "TIME_ZONE": { + "value": "Eastern Standard Time" + }, + "ResumeTime": { + "value": "09:00 PM ( 21:00 )" + }, + "location": { + "value": "eastus2" + } + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]", + "location": "eastus2", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "supportsHttpsTrafficOnly": true, + "isHnsEnabled": true + }, + "resources": [ + { + "name": "default/[toLower(concat(variables('dlsName'),'fs1'))]", + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "dependsOn": [ + "[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]" + ], + "properties": { + "publicAccess": "None" + } + } + ] + }, + { + "type": "Microsoft.Synapse/workspaces", + "apiVersion": "2019-06-01-preview", + "name": "[toLower(concat(variables('synapseName'),'ws1'))]", + "location": "eastus2", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]", + "[toLower(concat(variables('dlsName'),'fs1'))]" + ], + "properties": { + "defaultDataLakeStorage": { + "accountUrl": "[reference(variables('dlsName')).primaryEndpoints.dfs]", + "filesystem": "[toLower(concat(variables('dlsName'),'fs1'))]" + }, + "sqlAdministratorLogin": "GEN-UNIQUE-6", + "sqlAdministratorLoginPassword": "GEN-PASSWORD", + "managedVirtualNetwork": "default" + }, + "resources": [ + { + "condition": false, + "type": "firewallrules", + "apiVersion": "2019-06-01-preview", + "name": "allowAll", + "location": "eastus2", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "type": "firewallrules", + "apiVersion": "2019-06-01-preview", + "name": "AllowAllWindowsAzureIps", + "location": "eastus2", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "type": "managedIdentitySqlControlSettings", + "apiVersion": "2019-06-01-preview", + "name": "default", + "location": "eastus2", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "grantSqlControlToManagedIdentity": { + "desiredState": "Enabled" + } + } + } + ] + }, + { + "type": "Microsoft.Synapse/workspaces/sqlPools", + "apiVersion": "2019-06-01-preview", + "name": "[toLower(concat(variables('synapseName'),'ws1'))]/[toLower(concat(variables('workspaceName'),'p1'))]", + "location": "eastus2", + "sku": { + "name": "DW100c" + }, + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "createMode": "Default", + "collation": "SQL_Latin1_General_CP1_CI_AS" + }, + "resources": [ + { + "condition": false, + "type": "metadataSync", + "apiVersion": "2019-06-01-preview", + "name": "config", + "location": "eastus2", + "dependsOn": [ + "[toLower(concat(variables('workspaceName'),'p1'))]" + ], + "properties": { + "Enabled": false + } + } + ] + }, + { + "condition": false, + "type": "Microsoft.Synapse/workspaces/bigDataPools", + "apiVersion": "2019-06-01-preview", + "name": "[toLower(concat(variables('synapseName'),'ws1'))]/[toLower('synasp1')]", + "location": "eastus2", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "nodeCount": 5, + "nodeSizeFamily": "MemoryOptimized", + "nodeSize": "Medium", + "autoScale": { + "enabled": true, + "minNodeCount": 3, + "maxNodeCount": 40 + }, + "autoPause": { + "enabled": true, + "delayInMinutes": 15 + }, + "sparkVersion": "2.4" + } + }, + { + "scope": "Microsoft.Storage/storageAccounts/[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(uniqueString(variables('dlsName')))]", + "location": "eastus2", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe", + "principalId": "[reference(resourceId('Microsoft.Synapse/workspaces', variables('workspaceName')), '2019-06-01-preview', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "MSIRBACOnResourceGroup0", + "dependsOn": [ + "logicAppResumeDeployment", + "logicAppPauseDeployment" + ], + "properties": { + "mode": "Incremental", + "templatelink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/logicapproleassignments.json', parameters('_artifactsLocationSASToken')))]" + }, + "parameters": { + "logicAppName": { + "value": "(logicApps)[0]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "MSIRBACOnResourceGroup1", + "dependsOn": [ + "logicAppResumeDeployment", + "logicAppPauseDeployment" + ], + "properties": { + "mode": "Incremental", + "templatelink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/logicapproleassignments.json', parameters('_artifactsLocationSASToken')))]" + }, + "parameters": { + "logicAppName": { + "value": "(logicApps)[1]" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "name": "[concat('sa',uniqueString(resourceGroup().id))]", + "location": "eastus2", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "condition": false, + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id))]", + "location": "eastus2", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "condition": false, + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id))]", + "location": "[if(or(equals(parameters('location'),'eastus2'), equals(parameters('location'),'westcentralus')),'southcentralus',parameters('location'))]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "eastus2", + "dependsOn": [ + "[resourceGroup().name]/Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "[resourceGroup().name]/Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "[resourceGroup().name]/Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "sku": { + "tier": "basic", + "name": "basic" + }, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id))]", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id))]", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id))]", + "containerRegistry": "[if(empty(parameters('containerRegistry')), json('null'), parameters('containerRegistry'))]", + "adbWorkspace": "[if(empty(parameters('adbWorkspace')), json('null'), parameters('adbWorkspace'))]", + "encryption": { + "status": "Disabled", + "keyVaultProperties": { + "keyVaultArmId": "", + "keyIdentifier": "" + } + }, + "hbiWorkspace": "false" + } + } + ], + "outputs": { + "synapseWorkspaceResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Synapse/workspaces', variables('workspaceName'))]" + }, + "sparkPoolName": { + "type": "string", + "value": "[variables('sparkPoolName')]" + }, + "amlWorkspaceName": { + "type": "string", + "value": "[parameters('amlWorkspaceName')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + }, + "amlWorkspace": { + "type": "object", + "value": "[reference(parameters('amlWorkspaceName'), '2020-04-01-preview', 'Full')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1451 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1451 new file mode 100644 index 0000000..490e1d5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1451 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962907897, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-linkedservice-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1451", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes", + "microsoft.machinelearningservices/workspaces/linkedservices" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1451", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "amlWorkspaceName": { + "type": "string", + "metadata": { + "description": "Name of the existing AML workspace to create the linked service." + }, + "value": "GET-PREREQ-amlWorkspaceName" + }, + "linkName": { + "type": "string", + "defaultValue": "link1", + "metadata": { + "description": "Name of the LinkedService" + } + }, + "synapseWorkspaceResourceId": { + "type": "string", + "metadata": { + "description": "ResourceId of the existing Synapse workspace which you want to link to the aml workspace by linked service." + }, + "value": "GET-PREREQ-synapseWorkspaceResourceId" + }, + "sparkPools": { + "type": "array", + "metadata": { + "description": "Spark pools you want to attach to the aml workspace, in such format: [ {\"computeName\":\"compute1\", \"poolName\":\"sparkPool1\"}, ... ]. Pool name is the name of spark pool shown in Synapse workspace, while compute name is the alias for this pool after it is attached to aml workspace." + }, + "value": [ + { + "computeName": "sparkPool1", + "poolName": "GET-PREREQ-sparkPoolName" + } + ] + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralindia", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southcentralus", + "southeastasia", + "uksouth", + "westcentralus", + "westeurope", + "westus", + "westus2" + ], + "metadata": { + "description": "Location(aka region) of the LinkedService" + }, + "value": "GET-PREREQ-location" + } + }, + "variables": { + "synapseWorkspaceName": "[substring(parameters('synapseWorkspaceResourceId'), add(lastIndexOf(parameters('synapseWorkspaceResourceId'), '/'), 1))]" + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/linkedServices", + "apiVersion": "2020-09-01-preview", + "name": "GET-PREREQ-amlWorkspaceName/link1", + "location": "GET-PREREQ-location", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "linkedServiceResourceId": "GET-PREREQ-synapseWorkspaceResourceId" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2018-11-19", + "name": "[concat(parameters('amlWorkspaceName'), '/', parameters('sparkPools')[copyIndex()].computeName)]", + "location": "GET-PREREQ-location", + "properties": { + "resourceId": "[resourceId(reference(parameters('synapseWorkspaceResourceId'), '2019-06-01-preview', 'Full').subscriptionId, reference(parameters('synapseWorkspaceResourceId'), '2019-06-01-preview', 'Full').resourceGroupName, 'Microsoft.Synapse/workspaces/bigDataPools', variables('synapseWorkspaceName'), parameters('sparkPools')[copyIndex()].poolName)]", + "computeType": "SynapseSpark" + } + } + ], + "outputs": { + "SaiPrincipalId": { + "type": "string", + "value": "[reference(parameters('linkName'), '2020-04-01-preview', 'Full').identity.principalId]", + "metadata": { + "description": "PrincipalId of the SAI(System Assigned Identity) of the LinkedService, please use this to asssign roles." + } + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1452 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1452 new file mode 100644 index 0000000..6208d08 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1452 @@ -0,0 +1,201 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-private-ip/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-private-ip/azuredeploy.parameters.json" + ], + "timestamp": 1642962907905, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-private-ip/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-private-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1452", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.machinelearningservices/workspaces/computes", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1452", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "defaultValue": "[concat('workspace', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning service workspace." + } + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope" + ], + "metadata": { + "description": "Specifies the location for all resources." + }, + "value": "westus" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "Specifies the VM size of the agents." + } + }, + "agentCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Specifies the agent count." + } + } + }, + "variables": { + "storageAccountName": "[concat('sa',uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "keyVaultName": "[concat('kv',uniqueString(resourceGroup().id))]", + "tenantId": "[subscription().tenantId]", + "applicationInsightsName": "[concat('ai',uniqueString(resourceGroup().id))]", + "containerRegistryName": "[concat('cr',uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('storageAccountName')]", + "location": "westus", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[variables('keyVaultName')]", + "location": "westus", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[variables('applicationInsightsName')]", + "location": "[if(or(equals(parameters('location'),'eastus2'),equals(parameters('location'),'westcentralus')),'southcentralus',parameters('location'))]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-05-01", + "name": "[variables('containerRegistryName')]", + "location": "westus", + "sku": { + "name": "Standard" + }, + "properties": { + "adminUserEnabled": true + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2021-04-01", + "name": "[concat('workspace', uniqueString(resourceGroup().id))]", + "location": "westus", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", + "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]", + "[resourceId('Microsoft.ContainerRegistry/registries', variables('containerRegistryName'))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "[concat('workspace', uniqueString(resourceGroup().id))]", + "keyVault": "[resourceId('Microsoft.KeyVault/vaults',variables('keyVaultName'))]", + "applicationInsights": "[resourceId('Microsoft.Insights/components',variables('applicationInsightsName'))]", + "containerRegistry": "[resourceId('Microsoft.ContainerRegistry/registries',variables('containerRegistryName'))]", + "storageAccount": "[resourceId('Microsoft.Storage/storageAccounts/',variables('storageAccountName'))]" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2021-04-01", + "name": "[concat('workspace', uniqueString(resourceGroup().id))]/compute-with-ilb", + "location": "westus", + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/[concat('workspace', uniqueString(resourceGroup().id))]" + ], + "properties": { + "computeType": "AKS", + "computeLocation": "westus", + "properties": { + "agentVMSize": "Standard_D4_v3", + "agentCount": 3, + "loadBalancerType": "InternalLoadBalancer" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1453 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1453 new file mode 100644 index 0000000..d434de0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1453 @@ -0,0 +1,217 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aci/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aci/azuredeploy.parameters.json" + ], + "timestamp": 1642962907913, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aci/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aci/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1453", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/services" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1453", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webserviceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Machine Learning Web Service. This resource will be created in the same resource group as the workspace." + }, + "value": "GEN-UNIQUE-8" + }, + "workspaceName": { + "type": "string", + "defaultValue": "mlworkspace", + "metadata": { + "description": "The name of the Azure Machine Learning Workspace." + }, + "value": "GET-PREREQ-workspaceName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + }, + "environmentName": { + "type": "string", + "metadata": { + "description": "Name of Azure Machine Learning Environment for deployment. See https://docs.microsoft.com/en-us/azure/machine-learning/how-to-use-environments and https://docs.microsoft.com/en-us/azure/machine-learning/resource-curated-environments ." + }, + "value": "AzureML-Scikit-learn-0.20.3" + }, + "environmentVersion": { + "type": "string", + "metadata": { + "description": "Version of Azure Machine Learning Environment for deployment." + }, + "value": "3" + }, + "cpu": { + "type": "string", + "metadata": { + "description": "The default number of CPU cores to allocate for this Webservice. Can be a decimal." + }, + "value": "0.5" + }, + "cpuLimit": { + "type": "string", + "metadata": { + "description": "The max number of CPU cores this Webservice is allowed to use. Can be a decimal." + }, + "value": "1" + }, + "gpu": { + "type": "int", + "metadata": { + "description": "The number of gpu cores to allocate for this Webservice" + }, + "value": 0 + }, + "memoryInGB": { + "type": "string", + "metadata": { + "description": "The amount of memory (in GB) to allocate for this Webservice. Can be a decimal." + }, + "value": "1.0" + }, + "driverProgram": { + "type": "string", + "metadata": { + "description": "Relative path of a file from storage account that contains the code to run for service." + }, + "value": "mlassets/Driver.py" + }, + "models": { + "type": "array", + "metadata": { + "description": "Details of the models to be deployed. Each model must have the following properties: 'name'(name of the model), 'path'(relative path of a file from storage account linked to Workspace), 'mimeType'(MIME type of Model content. For more details about MIME type, please open https://www.iana.org/assignments/media-types/media-types.xhtml), 'framework'(framework of the model, use Custom if unsure) and 'frameworkVersion'(framework version of the model)." + }, + "value": [ + { + "name": "sklearn_regression_model.pkl", + "path": "mlassets/sklearn_regression_model.pkl", + "mimeType": "application/x-python", + "framework": "ScikitLearn", + "frameworkVersion": "0.20.3" + } + ] + }, + "authEnabled": { + "type": "bool", + "metadata": { + "description": "Whether or not to enable key auth for this Webservice." + }, + "value": true + }, + "tokenAuthEnabled": { + "type": "bool", + "metadata": { + "description": "Whether or not to enable token auth for this Webservice. Only applicable when deploying to AKS." + }, + "value": false + }, + "primaryKey": { + "type": "securestring", + "metadata": { + "description": "A primary auth key to use for this Webservice." + }, + "value": "primary-key" + }, + "secondaryKey": { + "type": "securestring", + "metadata": { + "description": "A secondary auth key to use for this Webservice." + }, + "value": "secondary-key" + }, + "scoringTimeoutMilliSeconds": { + "type": "int", + "metadata": { + "description": "A timeout to enforce for scoring calls to this Webservice." + }, + "value": 60000 + }, + "appInsightsEnabled": { + "type": "bool", + "metadata": { + "description": "Whether or not to enable AppInsights for this Webservice." + }, + "value": false + } + }, + "variables": { + "driverProgram": "[trim(parameters('driverProgram'))]", + "driverProgramFileName": "[last(split(trim(parameters('driverProgram')), '/'))]", + "assets": [ + { + "mimeType": "application/x-python", + "url": "[if(startsWith(variables('driverProgram'), '/'), concat('aml://storage', variables('driverProgram')), concat('aml://storage/', variables('driverProgram')))]" + } + ], + "copy": [ + { + "name": "models", + "count": 20, + "mode": "serial", + "input": { + "name": "models)[copyIndex(models", + "url": "[if(startsWith(parameters('models')[copyIndex('models')].path, '/'), concat('aml://storage', parameters('models')[copyIndex('models')].path), concat('aml://storage/', parameters('models')[copyIndex('models')].path))]", + "mimeType": "models)[copyIndex(models", + "framework": "models)[copyIndex(models", + "frameworkVersion": "models)[copyIndex(models" + } + } + ] + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/services", + "apiVersion": "2020-05-01-preview", + "name": "GET-PREREQ-workspaceName/GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "environmentImageRequest": { + "models": "[ variables('models')]", + "driverProgram": "[if(empty(variables('driverProgramFileName')), json('null'), variables('driverProgramFileName'))]", + "assets": "[if(empty(variables('driverProgramFileName')), json('null'), variables('assets'))]", + "environmentReference": "[if(not(or(empty(parameters('environmentName')), empty(parameters('environmentVersion')))), createObject('name', parameters('environmentName'), 'version', parameters('environmentVersion')), json('null'))]" + }, + "scoringTimeoutMs": 60000, + "appInsightsEnabled": false, + "authEnabled": true, + "aadAuthEnabled": false, + "keys": "[if(not(or(empty(parameters('primaryKey')), empty(parameters('secondaryKey')))), createObject('primaryKey', parameters('primaryKey'), 'secondaryKey', parameters('secondaryKey')), json('null'))]", + "ContainerResourceRequirements": { + "cpu": "0.5", + "cpuLimit": "1", + "gpu": 0, + "memoryInGB": "1.0" + }, + "computeType": "ACI" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1454 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1454 new file mode 100644 index 0000000..7603dd6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1454 @@ -0,0 +1,199 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/prereqs/101-machine-learning-compute-create-akscompute-azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907923, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/prereqs/101-machine-learning-compute-create-akscompute-azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1454", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/computes" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1454", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "computeName": { + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "dnsServiceIP": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "vnetResourceGroupName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the resource group which holds the VNET to which you want to inject your compute in." + } + }, + "vnetName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the vnet which you want to inject your compute in." + } + }, + "subnetName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "Name of the subnet inside the VNET which you want to inject your compute in." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "dockerBridgeCidr": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "serviceCidr": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + }, + "agentVmSize": { + "defaultValue": "Standard_D4_v3", + "type": "string", + "metadata": { + "description": "The Azure VM size of the agent VM nodes. This cannot be changed once the cluster is created." + } + }, + "agentCount": { + "defaultValue": 6, + "type": "Int", + "metadata": { + "description": "The number of agent nodes in the Container Service.." + } + }, + "cert": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The SSL cert data in PEM format encoded as base64 string" + } + }, + "key": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The SSL key data in PEM format encoded as base64 string." + } + }, + "cname": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The CName of the cert." + } + }, + "leafDomainLabel": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The leaf domain label of public endpoint." + } + }, + "overwriteExistingDomain": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "Value indicating whether to overwrite existing domain label." + } + }, + "renew": { + "defaultValue": false, + "type": "Bool", + "metadata": { + "description": "Value indicating whether to renew certificate." + } + }, + "sslStatus": { + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled", + "Auto" + ], + "type": "string", + "metadata": { + "description": "SSL status. Allowed values are Enabled and Disabled." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "The exposed port for the compute instance." + } + } + }, + "variables": { + "aksNetworkingConfiguration": { + "subnetId": "parameters('vnetResourceGroupName')/Microsoft.Network/virtualNetworks/subnets/ parameters('vnetName')/ parameters('subnetName')", + "serviceCidr": "", + "dnsServiceIP": "", + "dockerBridgeCidr": "" + }, + "sslConfiguration": { + "status": "Disabled", + "cert": "", + "key": "", + "cname": "", + "leafDomainLabel": "", + "overwriteExistingDomain": false, + "renew": false + } + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/computes", + "apiVersion": "2021-04-01", + "name": "workspaceName/computeName", + "location": "location", + "properties": { + "computeType": "AKS", + "properties": { + "agentVmSize": "Standard_D4_v3", + "agentCount": 6, + "sslConfiguration": "[if(equals(parameters('sslStatus'),'Disabled'), json('null'), variables('sslConfiguration'))]", + "aksNetworkingConfiguration": "[if(and(not(empty(parameters('vnetResourceGroupName'))),not(empty(parameters('vnetName'))),not(empty(parameters('subnetName'))),not(empty(parameters('serviceCidr'))),not(empty(parameters('dnsServiceIP'))),not(empty(parameters('dockerBridgeCidr')))), variables('aksNetworkingConfiguration'), json('null'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1455 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1455 new file mode 100644 index 0000000..69fcd68 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1455 @@ -0,0 +1,313 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/azuredeploy.parameters.json" + ], + "timestamp": 1642962907931, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-service-create-aks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1455", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces/services" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1455", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webserviceName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Machine Learning Web Service. This resource will be created in the same resource group as the workspace." + }, + "value": "GEN-UNIQUE-8" + }, + "workspaceName": { + "type": "string", + "defaultValue": "mlworkspace", + "metadata": { + "description": "The name of the Azure Machine Learning Workspace." + }, + "value": "GET-PREREQ-workspaceName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + }, + "environmentName": { + "type": "string", + "metadata": { + "description": "Name of Azure Machine Learning Environment for deployment. See https://docs.microsoft.com/en-us/azure/machine-learning/how-to-use-environments and https://docs.microsoft.com/en-us/azure/machine-learning/resource-curated-environments ." + }, + "value": "AzureML-Scikit-learn-0.20.3" + }, + "environmentVersion": { + "type": "string", + "metadata": { + "description": "Version of Azure Machine Learning Environment for deployment." + }, + "value": "3" + }, + "cpu": { + "type": "string", + "metadata": { + "description": "The default number of CPU cores to allocate for this Webservice. Can be a decimal." + }, + "value": "0.5" + }, + "cpuLimit": { + "type": "string", + "metadata": { + "description": "The max number of CPU cores this Webservice is allowed to use. Can be a decimal." + }, + "value": "1" + }, + "gpu": { + "type": "int", + "metadata": { + "description": "The number of gpu cores to allocate for this Webservice" + }, + "value": 0 + }, + "memoryInGB": { + "type": "string", + "metadata": { + "description": "The amount of memory (in GB) to allocate for this Webservice. Can be a decimal." + }, + "value": "1.0" + }, + "driverProgram": { + "type": "string", + "metadata": { + "description": "Relative path of a file from storage account that contains the code to run for service." + }, + "value": "mlassets/Driver.py" + }, + "models": { + "type": "array", + "metadata": { + "description": "Details of the models to be deployed. Each model must have the following properties: 'name'(name of the model), 'path'(relative path of a file from storage account linked to Workspace), 'mimeType'(MIME type of Model content. For more details about MIME type, please open https://www.iana.org/assignments/media-types/media-types.xhtml), 'framework'(framework of the model, use Custom if unsure) and 'frameworkVersion'(framework version of the model)." + }, + "value": [ + { + "name": "sklearn_regression_model.pkl", + "path": "mlassets/sklearn_regression_model.pkl", + "mimeType": "application/x-python", + "framework": "ScikitLearn", + "frameworkVersion": "0.20.3" + } + ] + }, + "authEnabled": { + "type": "bool", + "metadata": { + "description": "Whether or not to enable key auth for this Webservice." + }, + "value": true + }, + "tokenAuthEnabled": { + "type": "bool", + "metadata": { + "description": "Whether or not to enable token auth for this Webservice. " + }, + "value": false + }, + "primaryKey": { + "type": "securestring", + "metadata": { + "description": "A primary auth key to use for this Webservice." + }, + "value": "primary-key" + }, + "secondaryKey": { + "type": "securestring", + "metadata": { + "description": "A secondary auth key to use for this Webservice." + }, + "value": "secondary-key" + }, + "scoringTimeoutMilliSeconds": { + "type": "int", + "metadata": { + "description": "A timeout to enforce for scoring calls to this Webservice." + }, + "value": 60000 + }, + "appInsightsEnabled": { + "type": "bool", + "metadata": { + "description": "Whether or not to enable AppInsights for this Webservice." + }, + "value": false + }, + "computeTarget": { + "type": "string", + "metadata": { + "description": "Name of compute target." + }, + "value": "GET-PREREQ-computeName" + }, + "namespace": { + "type": "string", + "metadata": { + "description": "Kubernetes namespace in which to deploy the service: up to 63 lowercase alphanumeric ('a'-'z', '0'-'9') and hyphen ('-') characters. The first and last characters cannot be hyphens." + }, + "value": "default" + }, + "numReplicas": { + "type": "int", + "metadata": { + "description": "The number of containers to allocate for this Webservice. No default, if this parameter is not set then the autoscaler is enabled by default." + }, + "value": 1 + }, + "autoScaleEnabled": { + "type": "bool", + "metadata": { + "description": "Whether or not to enable autoscaling for this Webservice. Defaults to True if num_replicas is None." + }, + "value": false + }, + "autoScaleMinReplicas": { + "type": "int", + "metadata": { + "description": "The minimum number of containers to use when autoscaling this Webservice." + }, + "value": 1 + }, + "autoScaleMaxReplicas": { + "type": "int", + "metadata": { + "description": "The maximum number of containers to use when autoscaling this Webservice." + }, + "value": 2 + }, + "autoscaleTargetUtilization": { + "type": "int", + "metadata": { + "description": "The target utilization (in percent out of 100) the autoscaler should attempt to maintain for this Webservice." + }, + "value": 70 + }, + "autoscaleRefreshSeconds": { + "type": "int", + "metadata": { + "description": "How often the autoscaler should attempt to scale this Webservice." + }, + "value": 1 + }, + "periodSeconds": { + "type": "int", + "metadata": { + "description": "How often (in seconds) to perform the liveness probe." + }, + "value": 10 + }, + "initialDelaySeconds": { + "type": "int", + "metadata": { + "description": "Number of seconds after the container has started before liveness probes are initiated." + }, + "value": 310 + }, + "timeoutSeconds": { + "type": "int", + "metadata": { + "description": "Number of seconds after which the liveness probe times out." + }, + "value": 2 + }, + "failureThreshold": { + "type": "int", + "metadata": { + "description": "When a pod starts and the liveness probe fails, Kubernetes will try --failure-threshold times before giving up." + }, + "value": 2 + }, + "successThreshold": { + "type": "int", + "metadata": { + "description": "Minimum consecutive successes for the liveness probe to be considered successful after having failed." + }, + "value": 1 + } + }, + "variables": { + "driverProgram": "[trim(parameters('driverProgram'))]", + "driverProgramFileName": "[last(split(trim(parameters('driverProgram')), '/'))]", + "assets": [ + { + "mimeType": "application/x-python", + "url": "[if(startsWith(variables('driverProgram'), '/'), concat('aml://storage', variables('driverProgram')), concat('aml://storage/', variables('driverProgram')))]" + } + ], + "copy": [ + { + "name": "models", + "count": 20, + "mode": "serial", + "input": { + "name": "models)[copyIndex(models", + "url": "[if(startsWith(parameters('models')[copyIndex('models')].path, '/'), concat('aml://storage', parameters('models')[copyIndex('models')].path), concat('aml://storage/', parameters('models')[copyIndex('models')].path))]", + "mimeType": "models)[copyIndex(models", + "framework": "models)[copyIndex(models", + "frameworkVersion": "models)[copyIndex(models" + } + } + ] + }, + "resources": [ + { + "type": "Microsoft.MachineLearningServices/workspaces/services", + "apiVersion": "2020-05-01-preview", + "name": "GET-PREREQ-workspaceName/GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "environmentImageRequest": { + "models": "[ variables('models')]", + "driverProgram": "[if(empty(variables('driverProgramFileName')), json('null'), variables('driverProgramFileName'))]", + "assets": "[if(empty(variables('driverProgramFileName')), json('null'), variables('assets'))]", + "environmentReference": "[if(not(or(empty(parameters('environmentName')), empty(parameters('environmentVersion')))), createObject('name', parameters('environmentName'), 'version', parameters('environmentVersion')), json('null'))]" + }, + "scoringTimeoutMs": 60000, + "appInsightsEnabled": false, + "authEnabled": true, + "aadAuthEnabled": false, + "keys": "[if(not(or(empty(parameters('primaryKey')), empty(parameters('secondaryKey')))), createObject('primaryKey', parameters('primaryKey'), 'secondaryKey', parameters('secondaryKey')), json('null'))]", + "ContainerResourceRequirements": { + "cpu": "0.5", + "cpuLimit": "1", + "gpu": 0, + "memoryInGB": "1.0" + }, + "computeType": "AKS", + "computeName": "GET-PREREQ-computeName", + "numReplicas": 1, + "autoScaler": "[if(parameters('autoScaleEnabled'), createObject('autoscaleEnabled', parameters('autoScaleEnabled'), 'minReplicas', int(parameters('autoScaleMinReplicas')), 'maxReplicas', int(parameters('autoScaleMaxReplicas')), 'targetUtilization', int(parameters('autoscaleTargetUtilization')), 'refreshPeriodInSeconds', int(parameters('autoscaleRefreshSeconds'))), json('null'))]", + "namespace": "default", + "livenessProbeRequirements": "[createObject('periodSeconds', parameters('periodSeconds'), 'initialDelaySeconds', parameters('initialDelaySeconds'), 'timeoutSeconds' , parameters('timeoutSeconds'), 'failureThreshold', parameters('failureThreshold'), 'successThreshold', parameters('successThreshold'))]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1456 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1456 new file mode 100644 index 0000000..d8619d4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1456 @@ -0,0 +1,194 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.parameters.json" + ], + "timestamp": 1642962907938, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1456", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1456", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Specifies the name of the deployment." + }, + "value": "GEN-UNIQUE-8" + }, + "environment": { + "type": "string", + "metadata": { + "description": "Specifies the name of the environment." + }, + "value": "GEN-UNIQUE-3" + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope", + "usgovvirginia" + ], + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location of the Azure Machine Learning workspace and dependent resources." + } + }, + "hbi_workspace": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Specifies whether to reduce telemetry collection and enable additional encryption." + } + } + }, + "variables": { + "tenantId": "[subscription().tenantId]", + "storageAccountName": "stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVaultName": "kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsightsName": "appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistryName": "crGEN-UNIQUE-8GEN-UNIQUE-3", + "workspaceName": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "storageAccount": "Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVault": "Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsights": "Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistry": "Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "stGEN-UNIQUE-8GEN-UNIQUE-3", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [], + "enableSoftDelete": true + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "location": "[if(or(equals(parameters('location'),'eastus2'), equals(parameters('location'),'westcentralus')),'southcentralus',parameters('location'))]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.ContainerRegistry/registries", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "name": "crGEN-UNIQUE-8GEN-UNIQUE-3", + "apiVersion": "2019-12-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "adminUserEnabled": true + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "identity": { + "type": "systemAssigned" + }, + "name": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3" + ], + "properties": { + "friendlyName": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "storageAccount": "Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVault": "Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsights": "Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistry": "Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3", + "hbiWorkspace": "false" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1457 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1457 new file mode 100644 index 0000000..7f542bf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1457 @@ -0,0 +1,194 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962907943, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1457", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1457", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Specifies the name of the deployment." + }, + "value": "GEN-UNIQUE-8" + }, + "environment": { + "type": "string", + "metadata": { + "description": "Specifies the name of the environment." + }, + "value": "GEN-UNIQUE-3" + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope", + "usgovvirginia" + ], + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location of the Azure Machine Learning workspace and dependent resources." + } + }, + "hbi_workspace": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Specifies whether to reduce telemetry collection and enable additional encryption." + } + } + }, + "variables": { + "tenantId": "[subscription().tenantId]", + "storageAccountName": "stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVaultName": "kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsightsName": "appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistryName": "crGEN-UNIQUE-8GEN-UNIQUE-3", + "workspaceName": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "storageAccount": "Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVault": "Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsights": "Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistry": "Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "stGEN-UNIQUE-8GEN-UNIQUE-3", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [], + "enableSoftDelete": true + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "location": "[if(or(equals(parameters('location'),'eastus2'), equals(parameters('location'),'westcentralus')),'southcentralus',parameters('location'))]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.ContainerRegistry/registries", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "name": "crGEN-UNIQUE-8GEN-UNIQUE-3", + "apiVersion": "2019-12-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "adminUserEnabled": true + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "identity": { + "type": "systemAssigned" + }, + "name": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3" + ], + "properties": { + "friendlyName": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "storageAccount": "Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVault": "Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsights": "Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistry": "Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3", + "hbiWorkspace": "false" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1458 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1458 new file mode 100644 index 0000000..3f88159 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1458 @@ -0,0 +1,208 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962907949, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1458", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/keys", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1458", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + }, + "value": "eastus2" + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "cosmosDbId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of the 'Azure Cosmos DB' principal." + }, + "value": "GEN-COSMOS-DB-SP-OBJECTID" + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "keyName": { + "type": "string", + "defaultValue": "mykey", + "metadata": { + "description": "The name off the key that will contain encryption info for Azure Machine Learning and Cosmos DB." + }, + "value": "testkey" + } + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "name": "GEN-UNIQUE", + "apiVersion": "2021-04-01-preview", + "location": "eastus2", + "properties": { + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "enableSoftDelete": true, + "enablePurgeProtection": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "GEN-COSMOS-DB-SP-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "get", + "wrapKey", + "unwrapKey" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/keys", + "name": "GEN-UNIQUE/testkey", + "apiVersion": "2021-04-01-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ], + "properties": { + "kty": "RSA", + "keyOps": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ] + } + } + ], + "outputs": { + "cmk_keyvault": { + "type": "string", + "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]" + }, + "cmk_keyvault_key_uri": { + "type": "string", + "value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('keyVaultName'), parameters('keyName'))).keyUriWithVersion]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1459 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1459 new file mode 100644 index 0000000..8c2a662 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1459 @@ -0,0 +1,208 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "timestamp": 1642962907957, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1459", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/keys", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1459", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + }, + "value": "usgovvirginia" + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "cosmosDbId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of the 'Azure Cosmos DB' principal." + }, + "value": "GEN-COSMOS-DB-SP-OBJECTID" + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "keyName": { + "type": "string", + "defaultValue": "mykey", + "metadata": { + "description": "The name off the key that will contain encryption info for Azure Machine Learning and Cosmos DB." + }, + "value": "testkey" + } + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "name": "GEN-UNIQUE", + "apiVersion": "2021-04-01-preview", + "location": "usgovvirginia", + "properties": { + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "enableSoftDelete": true, + "enablePurgeProtection": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "GEN-COSMOS-DB-SP-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "get", + "wrapKey", + "unwrapKey" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/keys", + "name": "GEN-UNIQUE/testkey", + "apiVersion": "2021-04-01-preview", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ], + "properties": { + "kty": "RSA", + "keyOps": [ + "encrypt", + "decrypt", + "sign", + "verify", + "wrapKey", + "unwrapKey" + ] + } + } + ], + "outputs": { + "cmk_keyvault": { + "type": "string", + "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]" + }, + "cmk_keyvault_key_uri": { + "type": "string", + "value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('keyVaultName'), parameters('keyName'))).keyUriWithVersion]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT146 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT146 new file mode 100644 index 0000000..686e248 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT146 @@ -0,0 +1,439 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elk/diagnostics-eventhub-elk/azuredeploy.json", + "/application-workloads/elk/diagnostics-eventhub-elk/azuredeploy.parameters.json" + ], + "timestamp": 1642962888585, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elk/diagnostics-eventhub-elk/azuredeploy.json", + "/application-workloads/elk/diagnostics-eventhub-elk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT146", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT146", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "esClusterName": { + "type": "string", + "defaultValue": "elasticsearch", + "metadata": { + "description": "The name of the Elasticsearch cluster." + } + }, + "esVersion": { + "type": "string", + "defaultValue": "2.3.1", + "metadata": { + "description": "Elasticsearch version to install." + } + }, + "vmClientNodeCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of Elasticsearch client nodes to provision (Setting this to zero puts the data nodes on the load balancer)" + } + }, + "vmDataNodeCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "vmSizeMasterNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch cluster master nodes" + } + }, + "vmSizeClientNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch cluster client nodes" + } + }, + "vmSizeDataNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch cluster data nodes" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.4-LTS", + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "existingEHNamespace": { + "type": "string", + "metadata": { + "description": "Existing Event Hub namespace." + }, + "value": "namespace" + }, + "existingEHSharedAccessKeyName": { + "type": "string", + "metadata": { + "description": "Existing Event Hub shared access key name." + }, + "value": "key1" + }, + "existingEHSharedAccessKey": { + "type": "string", + "metadata": { + "description": "Existing Event Hub shared access key." + }, + "value": "access-key" + }, + "existingEHEntityPath": { + "type": "string", + "metadata": { + "description": "Existing Event Hub entity path." + }, + "value": "entity" + }, + "existingEHPartitions": { + "type": "int", + "metadata": { + "description": "Existing Event Hub partitions." + }, + "value": 4 + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Change this value to your repo name if deploying from a fork" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Default VM Size" + } + }, + "esTemplateDeploy": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/azuredeploy.json", + "metadata": { + "description": "Path to Elastic Search Deployment" + } + } + }, + "variables": { + "storageAccountPrefix": "[concat(substring(uniqueString(resourceGroup().id, parameters('esClusterName')), 0, 6), substring(parameters('esClusterName'), 0, 3))]", + "storageAccountName": "[concat(variables('storageAccountPrefix'), 'log')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "storageAccountType": "Standard_LRS", + "vmName": "logstashvm1", + "vmNicName": "logstashvm1-nic", + "vmNsgName": "logstashvm1-nsg", + "vmPipName": "logstashvm1-pip", + "virtualNetworkName": "elkvnet2", + "esHost": "10.0.2.100", + "esTemplateBase": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/", + "esDeploymentName": "esDeploymentForDiagnosticsEventHubELK" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "name": "esDeploymentForDiagnosticsEventHubELK", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "elkvnet2" + }, + "OS": { + "value": "ubuntu" + }, + "authenticationType": { + "value": "password" + }, + "sshPublicKey": { + "value": "" + }, + "loadBalancerType": { + "value": "internal" + }, + "jumpbox": { + "value": "Yes" + }, + "vmClientNodeCount": { + "value": 1 + }, + "vmSizeClientNodes": { + "value": "Standard_D2_v3" + }, + "vmSizeMasterNodes": { + "value": "Standard_D2_v3" + }, + "vmSizeDataNodes": { + "value": "Standard_D2_v3" + }, + "vmDataNodeCount": { + "value": 1 + }, + "esClusterName": { + "value": "elasticsearch" + }, + "esVersion": { + "value": "2.3.1" + }, + "afs": { + "value": "no" + }, + "marvel": { + "value": "no" + }, + "marvelCluster": { + "value": "no" + }, + "vmSizeMarvelNodes": { + "value": "Standard_D2_v3" + }, + "kibana": { + "value": "yes" + }, + "sense": { + "value": "no" + }, + "jmeterAgent": { + "value": "no" + }, + "cloudAzure": { + "value": "no" + }, + "cloudAzureStorageAccount": { + "value": "" + }, + "cloudAzureStorageKey": { + "value": "" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "logstashvm1-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "22", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "logstashvm1-pip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "logstashvm1-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/esDeploymentForDiagnosticsEventHubELK", + "Microsoft.Network/networkSecurityGroups/logstashvm1-nsg", + "Microsoft.Network/publicIPAddresses/logstashvm1-pip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/logstashvm1-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/elkvnet2/other" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/logstashvm1-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2016-01-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "StorageAccount" + }, + "properties": {} + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "logstashvm1", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('vmNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "logstashvm1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "osDisk": { + "name": "logstashvm1_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/logstashvm1-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "logstashvm1/InstallEventHubELK", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/logstashvm1", + "Microsoft.Resources/deployments/esDeploymentForDiagnosticsEventHubELK" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/logstash-eventhub-install-ubuntu.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash logstash-eventhub-install-ubuntu.sh -n namespace -a key1 -k access-key -e entity -p 4 -i 10.0.2.100" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1460 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1460 new file mode 100644 index 0000000..7fb9aa6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1460 @@ -0,0 +1,229 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.parameters.json" + ], + "timestamp": 1642962907964, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1460", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1460", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Specifies the name of the deployment." + }, + "value": "GEN-UNIQUE-8" + }, + "environment": { + "type": "string", + "metadata": { + "description": "Specifies the name of the environment." + }, + "value": "GEN-UNIQUE-3" + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the location of the Azure Machine Learning workspace and dependent resources." + }, + "value": "eastus2" + }, + "hbi_workspace": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Specifies whether to reduce telemetry collection and enable additional encryption." + } + }, + "encryption_status": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Specifies if the Azure Machine Learning workspace should be encrypted with the customer managed key." + } + }, + "cmk_keyvault_id": { + "type": "string", + "metadata": { + "description": "Specifies the customer managed keyvault Resource Manager ID." + }, + "value": "GET-PREREQ-cmk_keyvault" + }, + "cmk_keyvault_key_uri": { + "type": "string", + "metadata": { + "description": "Specifies the customer managed keyvault key uri." + }, + "value": "GET-PREREQ-cmk_keyvault_key_uri" + } + }, + "variables": { + "tenantId": "[subscription().tenantId]", + "storageAccountName": "stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVaultName": "kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsightsName": "appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "resourceGroupName": "[resourceGroup().name]", + "containerRegistryName": "crGEN-UNIQUE-8GEN-UNIQUE-3", + "workspaceName": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistry": "[resourceGroup().name]/Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "stGEN-UNIQUE-8GEN-UNIQUE-3", + "location": "eastus2", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "location": "eastus2", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [], + "enableSoftDelete": true, + "enablePurgeProtection": true + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "location": "[if(or(equals(parameters('location'),'eastus2'), equals(parameters('location'),'westcentralus')),'southcentralus',parameters('location'))]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.ContainerRegistry/registries", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "name": "crGEN-UNIQUE-8GEN-UNIQUE-3", + "apiVersion": "2019-12-01-preview", + "location": "eastus2", + "properties": { + "adminUserEnabled": true + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "identity": { + "type": "systemAssigned" + }, + "name": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "location": "eastus2", + "dependsOn": [ + "[resourceGroup().name]/Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "[resourceGroup().name]/Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "[resourceGroup().name]/Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "[resourceGroup().name]/Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3" + ], + "properties": { + "friendlyName": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistry": "[resourceGroup().name]/Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3", + "hbiWorkspace": "true", + "encryption": { + "status": "Enabled", + "keyVaultProperties": { + "keyVaultArmId": "GET-PREREQ-cmk_keyvault", + "keyIdentifier": "GET-PREREQ-cmk_keyvault_key_uri" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1461 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1461 new file mode 100644 index 0000000..e1044ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1461 @@ -0,0 +1,229 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962907973, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-cmk/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1461", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1461", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Specifies the name of the deployment." + }, + "value": "GEN-UNIQUE-8" + }, + "environment": { + "type": "string", + "metadata": { + "description": "Specifies the name of the environment." + }, + "value": "GEN-UNIQUE-3" + }, + "location": { + "type": "string", + "allowedValues": [ + "australiaeast", + "brazilsouth", + "canadacentral", + "centralus", + "eastasia", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northcentralus", + "northeurope", + "southeastasia", + "southcentralus", + "uksouth", + "westcentralus", + "westus", + "westus2", + "westeurope", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the location of the Azure Machine Learning workspace and dependent resources." + }, + "value": "usgovvirginia" + }, + "hbi_workspace": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Specifies whether to reduce telemetry collection and enable additional encryption." + } + }, + "encryption_status": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Specifies if the Azure Machine Learning workspace should be encrypted with the customer managed key." + } + }, + "cmk_keyvault_id": { + "type": "string", + "metadata": { + "description": "Specifies the customer managed keyvault Resource Manager ID." + }, + "value": "GET-PREREQ-cmk_keyvault" + }, + "cmk_keyvault_key_uri": { + "type": "string", + "metadata": { + "description": "Specifies the customer managed keyvault key uri." + }, + "value": "GET-PREREQ-cmk_keyvault_key_uri" + } + }, + "variables": { + "tenantId": "[subscription().tenantId]", + "storageAccountName": "stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVaultName": "kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsightsName": "appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "resourceGroupName": "[resourceGroup().name]", + "containerRegistryName": "crGEN-UNIQUE-8GEN-UNIQUE-3", + "workspaceName": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistry": "[resourceGroup().name]/Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "stGEN-UNIQUE-8GEN-UNIQUE-3", + "location": "usgovvirginia", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "location": "usgovvirginia", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [], + "enableSoftDelete": true, + "enablePurgeProtection": true + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "location": "[if(or(equals(parameters('location'),'eastus2'), equals(parameters('location'),'westcentralus')),'southcentralus',parameters('location'))]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.ContainerRegistry/registries", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "name": "crGEN-UNIQUE-8GEN-UNIQUE-3", + "apiVersion": "2019-12-01-preview", + "location": "usgovvirginia", + "properties": { + "adminUserEnabled": true + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-03-01", + "identity": { + "type": "systemAssigned" + }, + "name": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "location": "usgovvirginia", + "dependsOn": [ + "[resourceGroup().name]/Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "[resourceGroup().name]/Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "[resourceGroup().name]/Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "[resourceGroup().name]/Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3" + ], + "properties": { + "friendlyName": "mlwGEN-UNIQUE-8GEN-UNIQUE-3", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/stGEN-UNIQUE-8GEN-UNIQUE-3", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/kv-GEN-UNIQUE-8-GEN-UNIQUE-3", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/appi-GEN-UNIQUE-8-GEN-UNIQUE-3", + "containerRegistry": "[resourceGroup().name]/Microsoft.ContainerRegistry/registries/crGEN-UNIQUE-8GEN-UNIQUE-3", + "hbiWorkspace": "true", + "encryption": { + "status": "Enabled", + "keyVaultProperties": { + "keyVaultArmId": "GET-PREREQ-cmk_keyvault", + "keyIdentifier": "GET-PREREQ-cmk_keyvault_key_uri" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1462 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1462 new file mode 100644 index 0000000..909ace4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1462 @@ -0,0 +1,1101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.parameters.json" + ], + "timestamp": 1642962907979, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1462", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1462", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dashboardName": { + "type": "string", + "defaultValue": "Azure ML WS Monitoring", + "metadata": { + "description": "Display Name of the Dashboard" + }, + "value": "Azure ML WS Monitoring" + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Name of the existing Log Analytics Workspace" + }, + "value": "" + }, + "logAnalyticsWorkspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the existing Log Analytics Workspace Resource Group" + }, + "value": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "variables": { + "dashboardID": "[concat(uniquestring(resourceGroup().id), uniquestring(parameters('dashboardName')))]" + }, + "resources": [ + { + "name": "[variables('dashboardID')]", + "type": "Microsoft.Portal/dashboards", + "location": "[resourceGroup().location]", + "apiVersion": "2020-09-01-preview", + "tags": { + "hidden-title": "Azure ML WS Monitoring" + }, + "properties": { + "lenses": [ + { + "order": 0, + "parts": [ + { + "position": { + "x": 0, + "y": 0, + "colSpan": 13, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "4246be30-72ef-406c-83b9-f22c19279bee", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P30D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "isOptional": true + }, + { + "name": "Query", + "value": "// Get failed jobs \nAmlComputeJobEvent\n| where EventType in (\"JobSubmitted\", \"JobFailed\", \"JobSucceeded\") \n| summarize count=count() by EventType, Hourly=bin(TimeGenerated, 1day) \n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "Hourly", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count", + "type": "long" + } + ], + "splitBy": [ + { + "name": "EventType", + "type": "string" + } + ], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "PartTitle": "Jobs statistics", + "IsQueryContainTimeRange": false + } + } + } + }, + { + "position": { + "x": 13, + "y": 0, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "scope", + "value": "[concat('/subscriptions/',subscription().subscriptionId)]" + }, + { + "name": "scopeName", + "value": "Machine Learning Workspaces" + }, + { + "name": "view", + "value": { + "currency": "USD", + "dateRange": "Last30Days", + "query": { + "type": "ActualCost", + "dataSet": { + "granularity": "Daily", + "aggregation": { + "totalCost": { + "name": "Cost", + "function": "Sum" + }, + "totalCostUSD": { + "name": "CostUSD", + "function": "Sum" + } + }, + "sorting": [ + { + "direction": "ascending", + "name": "UsageDate" + } + ], + "grouping": [ + { + "type": "Dimension", + "name": "ResourceId" + } + ] + }, + "timeframe": "None" + }, + "chart": "Line", + "accumulated": "false", + "pivots": [ + { + "type": "Dimension", + "name": "ServiceName" + }, + { + "type": "Dimension", + "name": "ResourceLocation" + }, + { + "type": "Dimension", + "name": "ResourceGroupName" + } + ], + "scope": "[concat('/subscriptions/',subscription().subscriptionId)]", + "kpis": [ + { + "type": "Budget", + "id": "COST_NAVIGATOR.BUDGET_OPTIONS.NONE", + "enabled": true, + "extendedProperties": { + "name": "COST_NAVIGATOR.BUDGET_OPTIONS.NONE" + } + }, + { + "type": "Forecast", + "enabled": false + } + ], + "displayName": "DailyCosts" + }, + "isOptional": true + }, + { + "name": "externalState", + "isOptional": true + } + ], + "type": "Extension/Microsoft_Azure_CostManagement/PartType/CostAnalysisPinPart", + "deepLink": "[concat('#blade/Microsoft_Azure_CostManagement/Menu/costanalysis/scope/%2Fsubscriptions%2F',subscription().subscriptionId,'/open/costanalysisv3.resources')]" + } + }, + { + "position": { + "x": 0, + "y": 4, + "colSpan": 8, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "7581891a-c35b-4da5-b716-3180f888016e", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "// Get failed jobs \nAmlComputeJobEvent\n| where EventType == \"JobFailed\" \n| project JobName, TimeGenerated, ClusterId, EventType, ExecutionState, ToolType, JobErrorMessage, ErrorDetails, ExperimentName\n| summarize Count=count() by ExperimentName", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "ExperimentName", + "type": "string" + }, + "yAxis": [ + { + "name": "Count", + "type": "long" + } + ], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "PartTitle": "Job failures by experiments", + "IsQueryContainTimeRange": false + } + } + } + }, + { + "position": { + "x": 8, + "y": 4, + "colSpan": 5, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "140dd980-317a-4b8a-821b-cb192c4337e1", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "isOptional": true + }, + { + "name": "Query", + "value": "AmlComputeClusterEvent \n| where ClusterType == \"DSI\" and EventType ==\"CreateOperationCompleted\" //and split(_ResourceId, \"/\")[-1]==\"\" \n| project ClusterName, TimeCreated=TimeGenerated \n| summarize Last_Time_Created=arg_max(TimeCreated, *) by ClusterName \n| join kind = leftouter (AmlComputeClusterEvent \n | where ClusterType == \"DSI\" and EventType ==\"DeleteOperationCompleted\" \n | project ClusterName, TimeGenerated \n | summarize Last_Time_Deleted=arg_max(TimeGenerated, *) by ClusterName) \n on ClusterName \n| where (Last_Time_Created>Last_Time_Deleted or isnull(Last_Time_Deleted)) and Last_Time_Created < ago(1days) \n| project ClusterName, Last_Time_Created, Last_Time_Deleted \n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "AnalyticsGrid", + "isOptional": true + }, + { + "name": "SpecificChart", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "isOptional": true + }, + { + "name": "LegendOptions", + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": true, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "GridColumnsWidth": { + "ClusterName": "114px", + "Last_Time_Created": "148px", + "Last_Time_Deleted": "150px" + }, + "PartTitle": "Existing compute instances creation time" + } + } + } + }, + { + "position": { + "x": 13, + "y": 4, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "10b83005-63df-4b00-9d8e-11531a10d5d3", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P1D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "// Count datasets reads \n// Count datasets reads grouped by users and datasets. \nAmlDataSetEvent\n| where split(OperationName, \"/\")[-1]==\"READ\" and AmlDatasetId !=\"\"\n| extend Identity=(parse_json(Identity))\n| project AmlDatasetId, UserName=Identity.UserName\n| summarize Count=count() by AmlDatasetId, UserName=tostring(UserName)\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "UserName", + "type": "string" + }, + "yAxis": [ + { + "name": "Count", + "type": "long" + } + ], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "PartTitle": "Datasets accessed by users", + "Dimensions": { + "xAxis": { + "name": "UserName", + "type": "string" + }, + "yAxis": [ + { + "name": "Count", + "type": "long" + } + ], + "splitBy": [ + { + "name": "AmlDatasetId", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + { + "position": { + "x": 0, + "y": 8, + "colSpan": 12, + "rowSpan": 5 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "37cae416-f4aa-4306-a119-d229cc9f1776", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P7D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "// Display top longest job runs. \nAmlComputeJobEvent\n| where OperationName == \"JobSubmitted\" \n| join kind = inner (AmlComputeJobEvent\n | where OperationName == \"JobSucceeded\"\n | project StopTime=TimeGenerated, JobId)\n on JobId \n| project Duration_hours=(StopTime - TimeGenerated) / 1hour, ExperimentName, WorkspaceName, ClusterName, JobName\n| top 10 by Duration_hours desc nulls last\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "AnalyticsGrid", + "isOptional": true + }, + { + "name": "SpecificChart", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "isOptional": true + }, + { + "name": "LegendOptions", + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "GridColumnsWidth": { + "Average_Duration_Minutes": "236px", + "JobName": "292px", + "ExperimentName": "279px", + "ClusterName": "122px" + }, + "PartTitle": "Top longest job runs", + "IsQueryContainTimeRange": false + } + } + } + }, + { + "position": { + "x": 12, + "y": 8, + "colSpan": 7, + "rowSpan": 5 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "12302e63-15cb-4edb-b3e6-a9b983890cb9", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P30D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "isOptional": true + }, + { + "name": "Query", + "value": "// Plot compute cluster utilization \n// Plot recent compute cluster CPU utilization over time for specific cluster. \nAmlComputeCpuGpuUtilization\n| summarize Utilization=avg(todecimal(Utilization)) by NodeId, DeviceType, Hourly=bin(TimeGenerated, 1hour) \n| join kind = inner (AmlComputeJobEvent\n | where NodeId!=\"\" and EventType ==\"JobSucceeded\" \n | project NodeId, ClusterName)\n on NodeId \n| summarize Utilization=avg(todecimal(Utilization)) by Hourly, NodeId, DeviceType, ClusterName\n| project Hourly, Utilization, ClusterName, DeviceType\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "Hourly", + "type": "datetime" + }, + "yAxis": [ + { + "name": "Utilization", + "type": "decimal" + } + ], + "splitBy": [ + { + "name": "ClusterName", + "type": "string" + } + ], + "aggregation": "Average" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "PartTitle": "Compute clusters CPU/GPU utilization", + "IsQueryContainTimeRange": false + } + } + } + }, + { + "position": { + "x": 0, + "y": 13, + "colSpan": 9, + "rowSpan": 5 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "5008b375-22ae-4baf-b7a1-ab2e71420fdc", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P1D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "AmlComputeClusterEvent\n| project TimeGenerated, WorkspaceName=split(_ResourceId, \"/\")[-1], ClusterName, ClusterType, VmSize, VmPriority, \n InitialNodeCount , IdleNodeCount, RunningNodeCount, PreparingNodeCount, MinimumNodeCount, MaximumNodeCount , CurrentNodeCount, TargetNodeCount \n|summarize round(sum(RunningNodeCount),1), round(sum(IdleNodeCount),1) by Hourly=bin(TimeGenerated, 60m) \n| render timechart\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "AnalyticsGrid", + "isOptional": true + }, + { + "name": "SpecificChart", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "isOptional": true + }, + { + "name": "LegendOptions", + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "ControlType": "FrameControlChart", + "SpecificChart": "Line", + "PartTitle": "Total cluster nodes count", + "Dimensions": { + "xAxis": { + "name": "Hourly", + "type": "datetime" + }, + "yAxis": [ + { + "name": "sum_RunningNodeCount", + "type": "real" + }, + { + "name": "sum_IdleNodeCount", + "type": "real" + } + ], + "aggregation": "Sum" + }, + "LegendOptions": { + "isEnabled": true, + "position": "Bottom" + } + } + } + } + }, + { + "position": { + "x": 9, + "y": 13, + "colSpan": 10, + "rowSpan": 5 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "148bab67-530b-49f8-ba1f-83347c25146f", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P7D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "// Get number of running nodes across workspaces and clusters. \nAmlComputeClusterEvent\n| where ClusterType != 'DSI' and TargetNodeCount > 0\n| summarize avgRunningNodes=avg(TargetNodeCount), maxRunningNodes=max(TargetNodeCount) by Workspace=tostring(split(_ResourceId, \"/\")[8]), ClusterName, VmSize, VmPriority\n| sort by maxRunningNodes\n| limit 10\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "AnalyticsGrid", + "isOptional": true + }, + { + "name": "SpecificChart", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "PartSubTitle", + "isOptional": true + }, + { + "name": "Dimensions", + "isOptional": true + }, + { + "name": "LegendOptions", + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "GridColumnsWidth": { + "VmSize": "176px", + "ClusterName": "116px", + "VmPriority": "115px" + }, + "PartTitle": "Top clusters with the largest number of nodes" + } + }, + "partHeader": { + "title": "Top clusters with the largest number of nodes" + } + } + } + ] + } + ], + "metadata": { + "model": { + "timeRange": { + "value": { + "relative": { + "duration": 24, + "timeUnit": 1 + } + }, + "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange" + }, + "filterLocale": { + "value": "en-us" + }, + "filters": { + "value": { + "MsPortalFx_TimeRange": { + "model": { + "format": "utc", + "granularity": "auto", + "relative": "30d" + }, + "displayCache": { + "name": "UTC Time", + "value": "Past 30 days" + } + } + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1463 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1463 new file mode 100644 index 0000000..8f51e30 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1463 @@ -0,0 +1,1101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962907998, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-monitoring-dashboard/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1463", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1463", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dashboardName": { + "type": "string", + "defaultValue": "Azure ML WS Monitoring", + "metadata": { + "description": "Display Name of the Dashboard" + }, + "value": "Azure ML WS Monitoring" + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Name of the existing Log Analytics Workspace" + }, + "value": "" + }, + "logAnalyticsWorkspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the existing Log Analytics Workspace Resource Group" + }, + "value": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Azure Machine Learning Workspace." + } + } + }, + "variables": { + "dashboardID": "[concat(uniquestring(resourceGroup().id), uniquestring(parameters('dashboardName')))]" + }, + "resources": [ + { + "name": "[variables('dashboardID')]", + "type": "Microsoft.Portal/dashboards", + "location": "[resourceGroup().location]", + "apiVersion": "2020-09-01-preview", + "tags": { + "hidden-title": "Azure ML WS Monitoring" + }, + "properties": { + "lenses": [ + { + "order": 0, + "parts": [ + { + "position": { + "x": 0, + "y": 0, + "colSpan": 13, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "4246be30-72ef-406c-83b9-f22c19279bee", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P30D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "isOptional": true + }, + { + "name": "Query", + "value": "// Get failed jobs \nAmlComputeJobEvent\n| where EventType in (\"JobSubmitted\", \"JobFailed\", \"JobSucceeded\") \n| summarize count=count() by EventType, Hourly=bin(TimeGenerated, 1day) \n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "Hourly", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count", + "type": "long" + } + ], + "splitBy": [ + { + "name": "EventType", + "type": "string" + } + ], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "PartTitle": "Jobs statistics", + "IsQueryContainTimeRange": false + } + } + } + }, + { + "position": { + "x": 13, + "y": 0, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "scope", + "value": "[concat('/subscriptions/',subscription().subscriptionId)]" + }, + { + "name": "scopeName", + "value": "Machine Learning Workspaces" + }, + { + "name": "view", + "value": { + "currency": "USD", + "dateRange": "Last30Days", + "query": { + "type": "ActualCost", + "dataSet": { + "granularity": "Daily", + "aggregation": { + "totalCost": { + "name": "Cost", + "function": "Sum" + }, + "totalCostUSD": { + "name": "CostUSD", + "function": "Sum" + } + }, + "sorting": [ + { + "direction": "ascending", + "name": "UsageDate" + } + ], + "grouping": [ + { + "type": "Dimension", + "name": "ResourceId" + } + ] + }, + "timeframe": "None" + }, + "chart": "Line", + "accumulated": "false", + "pivots": [ + { + "type": "Dimension", + "name": "ServiceName" + }, + { + "type": "Dimension", + "name": "ResourceLocation" + }, + { + "type": "Dimension", + "name": "ResourceGroupName" + } + ], + "scope": "[concat('/subscriptions/',subscription().subscriptionId)]", + "kpis": [ + { + "type": "Budget", + "id": "COST_NAVIGATOR.BUDGET_OPTIONS.NONE", + "enabled": true, + "extendedProperties": { + "name": "COST_NAVIGATOR.BUDGET_OPTIONS.NONE" + } + }, + { + "type": "Forecast", + "enabled": false + } + ], + "displayName": "DailyCosts" + }, + "isOptional": true + }, + { + "name": "externalState", + "isOptional": true + } + ], + "type": "Extension/Microsoft_Azure_CostManagement/PartType/CostAnalysisPinPart", + "deepLink": "[concat('#blade/Microsoft_Azure_CostManagement/Menu/costanalysis/scope/%2Fsubscriptions%2F',subscription().subscriptionId,'/open/costanalysisv3.resources')]" + } + }, + { + "position": { + "x": 0, + "y": 4, + "colSpan": 8, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "7581891a-c35b-4da5-b716-3180f888016e", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "// Get failed jobs \nAmlComputeJobEvent\n| where EventType == \"JobFailed\" \n| project JobName, TimeGenerated, ClusterId, EventType, ExecutionState, ToolType, JobErrorMessage, ErrorDetails, ExperimentName\n| summarize Count=count() by ExperimentName", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "ExperimentName", + "type": "string" + }, + "yAxis": [ + { + "name": "Count", + "type": "long" + } + ], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "PartTitle": "Job failures by experiments", + "IsQueryContainTimeRange": false + } + } + } + }, + { + "position": { + "x": 8, + "y": 4, + "colSpan": 5, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "140dd980-317a-4b8a-821b-cb192c4337e1", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "isOptional": true + }, + { + "name": "Query", + "value": "AmlComputeClusterEvent \n| where ClusterType == \"DSI\" and EventType ==\"CreateOperationCompleted\" //and split(_ResourceId, \"/\")[-1]==\"\" \n| project ClusterName, TimeCreated=TimeGenerated \n| summarize Last_Time_Created=arg_max(TimeCreated, *) by ClusterName \n| join kind = leftouter (AmlComputeClusterEvent \n | where ClusterType == \"DSI\" and EventType ==\"DeleteOperationCompleted\" \n | project ClusterName, TimeGenerated \n | summarize Last_Time_Deleted=arg_max(TimeGenerated, *) by ClusterName) \n on ClusterName \n| where (Last_Time_Created>Last_Time_Deleted or isnull(Last_Time_Deleted)) and Last_Time_Created < ago(1days) \n| project ClusterName, Last_Time_Created, Last_Time_Deleted \n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "AnalyticsGrid", + "isOptional": true + }, + { + "name": "SpecificChart", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "isOptional": true + }, + { + "name": "LegendOptions", + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": true, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "GridColumnsWidth": { + "ClusterName": "114px", + "Last_Time_Created": "148px", + "Last_Time_Deleted": "150px" + }, + "PartTitle": "Existing compute instances creation time" + } + } + } + }, + { + "position": { + "x": 13, + "y": 4, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "10b83005-63df-4b00-9d8e-11531a10d5d3", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P1D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "// Count datasets reads \n// Count datasets reads grouped by users and datasets. \nAmlDataSetEvent\n| where split(OperationName, \"/\")[-1]==\"READ\" and AmlDatasetId !=\"\"\n| extend Identity=(parse_json(Identity))\n| project AmlDatasetId, UserName=Identity.UserName\n| summarize Count=count() by AmlDatasetId, UserName=tostring(UserName)\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "UserName", + "type": "string" + }, + "yAxis": [ + { + "name": "Count", + "type": "long" + } + ], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "PartTitle": "Datasets accessed by users", + "Dimensions": { + "xAxis": { + "name": "UserName", + "type": "string" + }, + "yAxis": [ + { + "name": "Count", + "type": "long" + } + ], + "splitBy": [ + { + "name": "AmlDatasetId", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + { + "position": { + "x": 0, + "y": 8, + "colSpan": 12, + "rowSpan": 5 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "37cae416-f4aa-4306-a119-d229cc9f1776", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P7D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "// Display top longest job runs. \nAmlComputeJobEvent\n| where OperationName == \"JobSubmitted\" \n| join kind = inner (AmlComputeJobEvent\n | where OperationName == \"JobSucceeded\"\n | project StopTime=TimeGenerated, JobId)\n on JobId \n| project Duration_hours=(StopTime - TimeGenerated) / 1hour, ExperimentName, WorkspaceName, ClusterName, JobName\n| top 10 by Duration_hours desc nulls last\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "AnalyticsGrid", + "isOptional": true + }, + { + "name": "SpecificChart", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "isOptional": true + }, + { + "name": "LegendOptions", + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "GridColumnsWidth": { + "Average_Duration_Minutes": "236px", + "JobName": "292px", + "ExperimentName": "279px", + "ClusterName": "122px" + }, + "PartTitle": "Top longest job runs", + "IsQueryContainTimeRange": false + } + } + } + }, + { + "position": { + "x": 12, + "y": 8, + "colSpan": 7, + "rowSpan": 5 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "12302e63-15cb-4edb-b3e6-a9b983890cb9", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P30D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "isOptional": true + }, + { + "name": "Query", + "value": "// Plot compute cluster utilization \n// Plot recent compute cluster CPU utilization over time for specific cluster. \nAmlComputeCpuGpuUtilization\n| summarize Utilization=avg(todecimal(Utilization)) by NodeId, DeviceType, Hourly=bin(TimeGenerated, 1hour) \n| join kind = inner (AmlComputeJobEvent\n | where NodeId!=\"\" and EventType ==\"JobSucceeded\" \n | project NodeId, ClusterName)\n on NodeId \n| summarize Utilization=avg(todecimal(Utilization)) by Hourly, NodeId, DeviceType, ClusterName\n| project Hourly, Utilization, ClusterName, DeviceType\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "Hourly", + "type": "datetime" + }, + "yAxis": [ + { + "name": "Utilization", + "type": "decimal" + } + ], + "splitBy": [ + { + "name": "ClusterName", + "type": "string" + } + ], + "aggregation": "Average" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "PartTitle": "Compute clusters CPU/GPU utilization", + "IsQueryContainTimeRange": false + } + } + } + }, + { + "position": { + "x": 0, + "y": 13, + "colSpan": 9, + "rowSpan": 5 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "5008b375-22ae-4baf-b7a1-ab2e71420fdc", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P1D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "AmlComputeClusterEvent\n| project TimeGenerated, WorkspaceName=split(_ResourceId, \"/\")[-1], ClusterName, ClusterType, VmSize, VmPriority, \n InitialNodeCount , IdleNodeCount, RunningNodeCount, PreparingNodeCount, MinimumNodeCount, MaximumNodeCount , CurrentNodeCount, TargetNodeCount \n|summarize round(sum(RunningNodeCount),1), round(sum(IdleNodeCount),1) by Hourly=bin(TimeGenerated, 60m) \n| render timechart\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "AnalyticsGrid", + "isOptional": true + }, + { + "name": "SpecificChart", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "Dimensions", + "isOptional": true + }, + { + "name": "LegendOptions", + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "ControlType": "FrameControlChart", + "SpecificChart": "Line", + "PartTitle": "Total cluster nodes count", + "Dimensions": { + "xAxis": { + "name": "Hourly", + "type": "datetime" + }, + "yAxis": [ + { + "name": "sum_RunningNodeCount", + "type": "real" + }, + { + "name": "sum_IdleNodeCount", + "type": "real" + } + ], + "aggregation": "Sum" + }, + "LegendOptions": { + "isEnabled": true, + "position": "Bottom" + } + } + } + } + }, + { + "position": { + "x": 9, + "y": 13, + "colSpan": 10, + "rowSpan": 5 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('logAnalyticsWorkspaceResourceGroup'),'/providers/microsoft.operationalinsights/workspaces/',parameters('logAnalyticsWorkspaceName'))]" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "value": "148bab67-530b-49f8-ba1f-83347c25146f", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "P7D", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "// Get number of running nodes across workspaces and clusters. \nAmlComputeClusterEvent\n| where ClusterType != 'DSI' and TargetNodeCount > 0\n| summarize avgRunningNodes=avg(TargetNodeCount), maxRunningNodes=max(TargetNodeCount) by Workspace=tostring(split(_ResourceId, \"/\")[8]), ClusterName, VmSize, VmPriority\n| sort by maxRunningNodes\n| limit 10\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "AnalyticsGrid", + "isOptional": true + }, + { + "name": "SpecificChart", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Analytics", + "isOptional": true + }, + { + "name": "PartSubTitle", + "isOptional": true + }, + { + "name": "Dimensions", + "isOptional": true + }, + { + "name": "LegendOptions", + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "GridColumnsWidth": { + "VmSize": "176px", + "ClusterName": "116px", + "VmPriority": "115px" + }, + "PartTitle": "Top clusters with the largest number of nodes" + } + }, + "partHeader": { + "title": "Top clusters with the largest number of nodes" + } + } + } + ] + } + ], + "metadata": { + "model": { + "timeRange": { + "value": { + "relative": { + "duration": 24, + "timeUnit": 1 + } + }, + "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange" + }, + "filterLocale": { + "value": "en-us" + }, + "filters": { + "value": { + "MsPortalFx_TimeRange": { + "model": { + "format": "utc", + "granularity": "auto", + "relative": "30d" + }, + "displayCache": { + "name": "UTC Time", + "value": "Past 30 days" + } + } + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1464 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1464 new file mode 100644 index 0000000..ba2e8d2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1464 @@ -0,0 +1,819 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962908012, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1464", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.insights/components", + "microsoft.keyvault/vaults", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1464", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "metadata": { + "description": "Specifies the location for workspace." + }, + "value": "westcentralus" + }, + "identityType": { + "type": "string", + "defaultValue": "systemAssigned", + "allowedValues": [ + "systemAssigned", + "userAssigned", + "systemAssigned,userAssigned" + ], + "metadata": { + "description": "Specifies the identity type of the Azure Machine Learning workspace." + } + }, + "primaryUserAssignedIdentityResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Specifies the resource group of user assigned identity that represents the Azure Machine Learing workspace." + } + }, + "primaryUserAssignedIdentityName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the name of user assigned identity that represents the Azure Machine Learing workspace." + } + }, + "cmkUserAssignedIdentityResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Specifies the resource group of user assigned identity that needs to be used to access the key for encryption." + } + }, + "cmkUserAssignedIdentityName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the name of user assigned identity that needs to be used to access the key for encryption." + } + }, + "tagValues": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Tags for workspace, will also be populated if provisioning new dependent resources." + } + }, + "storageAccountOption": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not a new storage should be provisioned." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of the storage account." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ] + }, + "storageAccountBehindVNet": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "Determines whether or not to put the storage account behind VNet" + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the storage account if using existing one" + } + }, + "keyVaultOption": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not a new key vault should be provisioned." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of the key vault." + } + }, + "keyVaultBehindVNet": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "Determines whether or not to put the storage account behind VNet" + } + }, + "keyVaultResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the key vault if using existing one" + } + }, + "applicationInsightsOption": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not new ApplicationInsights should be provisioned." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of ApplicationInsights." + } + }, + "applicationInsightsResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the application insights if using existing one." + } + }, + "containerRegistryOption": { + "type": "string", + "defaultValue": "none", + "allowedValues": [ + "new", + "existing", + "none" + ], + "metadata": { + "description": "Determines whether or not a new container registry should be provisioned." + }, + "value": "new" + }, + "containerRegistryName": { + "type": "string", + "defaultValue": "[concat('cr',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "The container registry bind to the workspace." + } + }, + "containerRegistrySku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "value": "Premium" + }, + "containerRegistryResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the container registry if using existing one." + } + }, + "containerRegistryBehindVNet": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "Determines whether or not to put container registry behind VNet." + } + }, + "vnetOption": { + "type": "string", + "defaultValue": "[if(equals(parameters('privateEndpointType'), 'none'), 'none', 'new')]", + "allowedValues": [ + "new", + "existing", + "none" + ], + "metadata": { + "description": "Determines whether or not a new VNet should be provisioned." + } + }, + "vnetName": { + "type": "string", + "defaultValue": "[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of the VNet" + } + }, + "vnetResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the VNET if using existing one." + } + }, + "vnetLocation": { + "type": "string", + "defaultValue": "[parameters('location')]", + "metadata": { + "description": "Required if existing VNET location differs from workspace location" + } + }, + "addressPrefixes": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "Address prefix of the virtual network" + } + }, + "subnetOption": { + "type": "string", + "defaultValue": "[if(or(not(equals(parameters('privateEndpointType'), 'none')), equals(parameters('vnetOption'), 'new')), 'new', 'none')]", + "allowedValues": [ + "new", + "existing", + "none" + ], + "metadata": { + "description": "Determines whether or not a new subnet should be provisioned." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix of the virtual network" + } + }, + "adbWorkspace": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Azure Databrick workspace to be linked to the workspace" + } + }, + "confidential_data": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Specifies that the Azure Machine Learning workspace holds highly confidential data." + } + }, + "encryption_status": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Specifies if the Azure Machine Learning workspace should be encrypted with customer managed key." + } + }, + "cmk_keyvault": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the customer managed keyVault arm id. Required when encryption is enabled" + } + }, + "resource_cmk_uri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies if the customer managed keyvault key uri. Required when encryption is enabled" + } + }, + "privateEndpointType": { + "type": "string", + "defaultValue": "none", + "allowedValues": [ + "AutoApproval", + "ManualApproval", + "none" + ], + "value": "AutoApproval" + }, + "encryption_cosmosdb_armid": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies customer managed cosmosDB for CMK workspace" + } + }, + "encryption_storage_armid": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies customer managed storage for CMK workspace" + } + }, + "encryption_search_armid": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies customer managed search for CMK workspace" + } + }, + "storageAccountBehindVnet": { + "value": "true" + }, + "keyVaultBehindVnet": { + "value": "true" + } + }, + "variables": { + "tenantId": "[subscription().tenantId]", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "containerRegistry": "[resourceGroup().name]/Microsoft.ContainerRegistry/registries/[concat('cr',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "vnet": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "subnet": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "privateDnsZoneName": { + "azureusgovernment": "privatelink.api.ml.azure.us", + "azurechinacloud": "privatelink.api.ml.azure.cn", + "azurecloud": "privatelink.api.azureml.ms" + }, + "privateAznbDnsZoneName": { + "azureusgovernment": "privatelink.notebooks.usgovcloudapi.net", + "azurecloud": "privatelink.notebooks.azure.net", + "azurechinacloud": "privatelink.notebooks.chinacloudapi.cn" + }, + "privateEndpointName": "GEN-UNIQUE-PrivateEndpoint", + "enablePE": "[not(equals(parameters('privateEndpointType'), 'none'))]", + "networkRuleSetBehindVNet": { + "defaultAction": "deny", + "virtualNetworkRules": [ + { + "action": "Allow", + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + } + ] + }, + "subnetPolicyForPE": { + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + }, + "serviceEndpointsAll": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.KeyVault" + }, + { + "service": "Microsoft.ContainerRegistry" + } + ], + "serviceEndpointsAzureChinaCloud": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.KeyVault" + } + ], + "privateEndpointSettings": { + "name": "GEN-UNIQUE-PrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE", + "groupIds": [ + "amlworkspace" + ] + } + }, + "defaultPEConnections": "[array(variables('privateEndpointSettings'))]", + "userAssignedIdentities": "[union(variables('userAssignedIdentitiesPrimary'), variables('userAssignedIdentitiesCmk'))]", + "userAssignedIdentityPrimary": { + "[variables('primaryUserAssignedIdentity')]": {} + }, + "userAssignedIdentitiesPrimary": "[if(not(equals(parameters('primaryUserAssignedIdentityName'), '')), variables('userAssignedIdentityPrimary'), json('{}'))]", + "primaryUserAssignedIdentity": "[resourceGroup().name]/Microsoft.ManagedIdentity/userAssignedIdentities/ parameters('primaryUserAssignedIdentityName')", + "userAssignedIdentityCmk": { + "[variables('cmkUserAssignedIdentity')]": {} + }, + "userAssignedIdentitiesCmk": "[if(not(equals(parameters('cmkUserAssignedIdentityName'), '')), variables('userAssignedIdentityCmk'), json('{}'))]", + "cmkUserAssignedIdentity": "[resourceGroup().name]/Microsoft.ManagedIdentity/userAssignedIdentities/ parameters('cmkUserAssignedIdentityName')", + "encryptionUserAssignedIdentity": { + "userAssignedIdentity": "[resourceGroup().name]/Microsoft.ManagedIdentity/userAssignedIdentities/ parameters('cmkUserAssignedIdentityName')" + }, + "encryptionIdentity": "[if(not(equals(parameters('cmkUserAssignedIdentityName'), '')), variables('encryptionUserAssignedIdentity'), json('{}'))]", + "azAppInsightsLocationMap": { + "eastasia": "eastasia", + "southeastasia": "southeastasia", + "centralus": "southcentralus", + "eastus": "eastus", + "eastus2": "eastus2", + "westus": "westus", + "northcentralus": "northcentralus", + "southcentralus": "southcentralus", + "northeurope": "northeurope", + "westeurope": "westeurope", + "japanwest": "japanwest", + "japaneast": "japaneast", + "brazilsouth": "brazilsouth", + "australiaeast": "australiaeast", + "australiasoutheast": "australiasoutheast", + "southindia": "southindia", + "centralindia": "centralindia", + "westindia": "westindia", + "canadacentral": "canadacentral", + "canadaeast": "canadaeast", + "uksouth": "uksouth", + "ukwest": "ukwest", + "francecentral": "francecentral", + "westcentralus": "southcentralus", + "westus2": "westus2", + "koreacentral": "koreacentral", + "koreasouth": "koreasouth", + "eastus2euap": "southcentralus", + "centraluseuap": "southcentralus", + "usgovarizona": "usgovarizona", + "usgovvirginia": "usgovvirginia", + "chinaeast2": "chinaeast2" + }, + "appInsightsLocation": "(azAppInsightsLocationMap)[parameters(location)]" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "westcentralus", + "tags": {}, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "properties": { + "addressPrefix": "10.0.0.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "serviceEndpoints": "[if(equals(toLower(environment().name), 'azurechinacloud'), variables('serviceEndpointsAzureChinaCloud'), variables('serviceEndpointsAll') )]" + } + }, + { + "condition": "[and(equals(parameters('subnetOption'), 'existing'), not(equals(parameters('privateEndpointType'), 'none')))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "UpdateSubnetPolicy", + "resourceGroup": "[resourceGroup().name]", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "properties": "[if(and(equals(parameters('subnetOption'), 'existing'), not(equals(parameters('privateEndpointType'), 'none'))), union(reference(variables('subnet'), '2020-06-01'), variables('subnetPolicyForPE')), json('null'))]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "westcentralus", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "tags": {}, + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true, + "networkAcls": "[if(equals(parameters('storageAccountBehindVNet'), 'true'), variables('networkRuleSetBehindVNet'), json('null'))]" + } + }, + { + "condition": false, + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "westcentralus", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "tags": {}, + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [], + "networkAcls": "[if(equals(parameters('keyVaultBehindVNet'), 'true'), variables('networkRuleSetBehindVNet'), json('null'))]" + } + }, + { + "condition": false, + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "name": "[concat('cr',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "westcentralus", + "sku": { + "name": "Premium" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "tags": {}, + "properties": { + "adminUserEnabled": true, + "networkRuleSet": "[if(equals(parameters('containerRegistryBehindVNet'), 'true'), variables('networkRuleSetBehindVNet'), json('null'))]" + } + }, + { + "condition": false, + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "(azAppInsightsLocationMap)[parameters(location)]", + "kind": "web", + "tags": {}, + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-09-01-preview", + "name": "GEN-UNIQUE", + "location": "westcentralus", + "identity": { + "type": "systemAssigned", + "userAssignedIdentities": "[if(or(equals(parameters('identityType'), 'userAssigned'), equals(parameters('identityType'), 'systemAssigned,userAssigned')), variables('userAssignedIdentities'), json('null'))]" + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "Microsoft.ContainerRegistry/registries/[concat('cr',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "tags": {}, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "containerRegistry": "[if(not(equals(parameters('containerRegistryOption'), 'none')), variables('containerRegistry'), json('null'))]", + "adbWorkspace": "[if(empty(parameters('adbWorkspace')), json('null'), parameters('adbWorkspace'))]", + "primaryUserAssignedIdentity": "[if(equals(parameters('identityType'), 'userAssigned'), variables('primaryUserAssignedIdentity'), json('null'))]", + "encryption": { + "status": "Disabled", + "identity": "[if(not(equals(parameters('cmkUserAssignedIdentityName'), '')), variables('encryptionUserAssignedIdentity'), json('{}'))]", + "keyVaultProperties": { + "keyVaultArmId": "", + "keyIdentifier": "" + }, + "CosmosDbArmId": "", + "StorageAccountArmId": "", + "SearchAccountArmId": "" + }, + "hbiWorkspace": "false" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "DeployPrivateEndpoints", + "resourceGroup": "[resourceGroup().name]", + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE", + "Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": "[not(equals(parameters('privateEndpointType'), 'none'))]", + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-PrivateEndpoint", + "location": "[parameters('location')]", + "tags": {}, + "properties": { + "privateLinkServiceConnections": "[if(equals(parameters('privateEndpointType'), 'AutoApproval'), variables('defaultPEConnections'), json('null'))]", + "manualPrivateLinkServiceConnections": "[if(equals(parameters('privateEndpointType'), 'ManualApproval'), variables('defaultPEConnections'), json('null'))]", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "(privateDnsZoneName)[toLower(environment().name)]", + "location": "global", + "dependsOn": [ + "[resourceGroup().name]/Microsoft.Network/privateEndpoints/GEN-UNIQUE-PrivateEndpoint" + ], + "tags": {}, + "properties": {} + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "(privateAznbDnsZoneName)[toLower(environment().name)]", + "location": "global", + "dependsOn": [ + "[resourceGroup().name]/Microsoft.Network/privateEndpoints/GEN-UNIQUE-PrivateEndpoint" + ], + "tags": {}, + "properties": {} + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[concat(variables('privateDnsZoneName')[toLower(environment().name)], '/', uniqueString(variables('vnet')))]", + "location": "global", + "dependsOn": [ + "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]", + "(privateDnsZoneName)[toLower(environment().name)]" + ], + "tags": {}, + "properties": { + "virtualNetwork": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + }, + "registrationEnabled": false + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[concat(variables('privateAznbDnsZoneName')[toLower(environment().name)], '/', uniqueString(variables('vnet')))]", + "location": "global", + "dependsOn": [ + "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]", + "(privateAznbDnsZoneName)[toLower(environment().name)]" + ], + "tags": {}, + "properties": { + "virtualNetwork": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + }, + "registrationEnabled": false + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-PrivateEndpoint/default", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]", + "(privateAznbDnsZoneName)[toLower(environment().name)]", + "(privateDnsZoneName)[toLower(environment().name)]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "privatelink-api-azureml-ms", + "properties": { + "privateDnsZoneId": "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateDnsZones', variables('privateDnsZoneName')[toLower(environment().name)])]" + } + }, + { + "name": "privatelink-notebooks-azure-net", + "properties": { + "privateDnsZoneId": "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateDnsZones', variables('privateAznbDnsZoneName')[toLower(environment().name)])]" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1465 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1465 new file mode 100644 index 0000000..64843bc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1465 @@ -0,0 +1,819 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962908023, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json", + "/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1465", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.machinelearningservices/workspaces", + "microsoft.containerregistry/registries", + "microsoft.storage/storageaccounts", + "microsoft.insights/components", + "microsoft.keyvault/vaults", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1465", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "metadata": { + "description": "Specifies the location for workspace." + }, + "value": "usgovarizona" + }, + "identityType": { + "type": "string", + "defaultValue": "systemAssigned", + "allowedValues": [ + "systemAssigned", + "userAssigned", + "systemAssigned,userAssigned" + ], + "metadata": { + "description": "Specifies the identity type of the Azure Machine Learning workspace." + } + }, + "primaryUserAssignedIdentityResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Specifies the resource group of user assigned identity that represents the Azure Machine Learing workspace." + } + }, + "primaryUserAssignedIdentityName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the name of user assigned identity that represents the Azure Machine Learing workspace." + } + }, + "cmkUserAssignedIdentityResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Specifies the resource group of user assigned identity that needs to be used to access the key for encryption." + } + }, + "cmkUserAssignedIdentityName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the name of user assigned identity that needs to be used to access the key for encryption." + } + }, + "tagValues": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Tags for workspace, will also be populated if provisioning new dependent resources." + } + }, + "storageAccountOption": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not a new storage should be provisioned." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of the storage account." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ] + }, + "storageAccountBehindVNet": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "Determines whether or not to put the storage account behind VNet" + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the storage account if using existing one" + } + }, + "keyVaultOption": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not a new key vault should be provisioned." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of the key vault." + } + }, + "keyVaultBehindVNet": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "Determines whether or not to put the storage account behind VNet" + } + }, + "keyVaultResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the key vault if using existing one" + } + }, + "applicationInsightsOption": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not new ApplicationInsights should be provisioned." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of ApplicationInsights." + } + }, + "applicationInsightsResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the application insights if using existing one." + } + }, + "containerRegistryOption": { + "type": "string", + "defaultValue": "none", + "allowedValues": [ + "new", + "existing", + "none" + ], + "metadata": { + "description": "Determines whether or not a new container registry should be provisioned." + }, + "value": "new" + }, + "containerRegistryName": { + "type": "string", + "defaultValue": "[concat('cr',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "The container registry bind to the workspace." + } + }, + "containerRegistrySku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "value": "Premium" + }, + "containerRegistryResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the container registry if using existing one." + } + }, + "containerRegistryBehindVNet": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "Determines whether or not to put container registry behind VNet." + } + }, + "vnetOption": { + "type": "string", + "defaultValue": "[if(equals(parameters('privateEndpointType'), 'none'), 'none', 'new')]", + "allowedValues": [ + "new", + "existing", + "none" + ], + "metadata": { + "description": "Determines whether or not a new VNet should be provisioned." + } + }, + "vnetName": { + "type": "string", + "defaultValue": "[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of the VNet" + } + }, + "vnetResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group name of the VNET if using existing one." + } + }, + "vnetLocation": { + "type": "string", + "defaultValue": "[parameters('location')]", + "metadata": { + "description": "Required if existing VNET location differs from workspace location" + } + }, + "addressPrefixes": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "Address prefix of the virtual network" + } + }, + "subnetOption": { + "type": "string", + "defaultValue": "[if(or(not(equals(parameters('privateEndpointType'), 'none')), equals(parameters('vnetOption'), 'new')), 'new', 'none')]", + "allowedValues": [ + "new", + "existing", + "none" + ], + "metadata": { + "description": "Determines whether or not a new subnet should be provisioned." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix of the virtual network" + } + }, + "adbWorkspace": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Azure Databrick workspace to be linked to the workspace" + } + }, + "confidential_data": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Specifies that the Azure Machine Learning workspace holds highly confidential data." + } + }, + "encryption_status": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Specifies if the Azure Machine Learning workspace should be encrypted with customer managed key." + } + }, + "cmk_keyvault": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the customer managed keyVault arm id. Required when encryption is enabled" + } + }, + "resource_cmk_uri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies if the customer managed keyvault key uri. Required when encryption is enabled" + } + }, + "privateEndpointType": { + "type": "string", + "defaultValue": "none", + "allowedValues": [ + "AutoApproval", + "ManualApproval", + "none" + ], + "value": "AutoApproval" + }, + "encryption_cosmosdb_armid": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies customer managed cosmosDB for CMK workspace" + } + }, + "encryption_storage_armid": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies customer managed storage for CMK workspace" + } + }, + "encryption_search_armid": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies customer managed search for CMK workspace" + } + }, + "storageAccountBehindVnet": { + "value": "true" + }, + "keyVaultBehindVnet": { + "value": "true" + } + }, + "variables": { + "tenantId": "[subscription().tenantId]", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "containerRegistry": "[resourceGroup().name]/Microsoft.ContainerRegistry/registries/[concat('cr',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "vnet": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "subnet": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "privateDnsZoneName": { + "azureusgovernment": "privatelink.api.ml.azure.us", + "azurechinacloud": "privatelink.api.ml.azure.cn", + "azurecloud": "privatelink.api.azureml.ms" + }, + "privateAznbDnsZoneName": { + "azureusgovernment": "privatelink.notebooks.usgovcloudapi.net", + "azurecloud": "privatelink.notebooks.azure.net", + "azurechinacloud": "privatelink.notebooks.chinacloudapi.cn" + }, + "privateEndpointName": "GEN-UNIQUE-PrivateEndpoint", + "enablePE": "[not(equals(parameters('privateEndpointType'), 'none'))]", + "networkRuleSetBehindVNet": { + "defaultAction": "deny", + "virtualNetworkRules": [ + { + "action": "Allow", + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + } + ] + }, + "subnetPolicyForPE": { + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + }, + "serviceEndpointsAll": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.KeyVault" + }, + { + "service": "Microsoft.ContainerRegistry" + } + ], + "serviceEndpointsAzureChinaCloud": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.KeyVault" + } + ], + "privateEndpointSettings": { + "name": "GEN-UNIQUE-PrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE", + "groupIds": [ + "amlworkspace" + ] + } + }, + "defaultPEConnections": "[array(variables('privateEndpointSettings'))]", + "userAssignedIdentities": "[union(variables('userAssignedIdentitiesPrimary'), variables('userAssignedIdentitiesCmk'))]", + "userAssignedIdentityPrimary": { + "[variables('primaryUserAssignedIdentity')]": {} + }, + "userAssignedIdentitiesPrimary": "[if(not(equals(parameters('primaryUserAssignedIdentityName'), '')), variables('userAssignedIdentityPrimary'), json('{}'))]", + "primaryUserAssignedIdentity": "[resourceGroup().name]/Microsoft.ManagedIdentity/userAssignedIdentities/ parameters('primaryUserAssignedIdentityName')", + "userAssignedIdentityCmk": { + "[variables('cmkUserAssignedIdentity')]": {} + }, + "userAssignedIdentitiesCmk": "[if(not(equals(parameters('cmkUserAssignedIdentityName'), '')), variables('userAssignedIdentityCmk'), json('{}'))]", + "cmkUserAssignedIdentity": "[resourceGroup().name]/Microsoft.ManagedIdentity/userAssignedIdentities/ parameters('cmkUserAssignedIdentityName')", + "encryptionUserAssignedIdentity": { + "userAssignedIdentity": "[resourceGroup().name]/Microsoft.ManagedIdentity/userAssignedIdentities/ parameters('cmkUserAssignedIdentityName')" + }, + "encryptionIdentity": "[if(not(equals(parameters('cmkUserAssignedIdentityName'), '')), variables('encryptionUserAssignedIdentity'), json('{}'))]", + "azAppInsightsLocationMap": { + "eastasia": "eastasia", + "southeastasia": "southeastasia", + "centralus": "southcentralus", + "eastus": "eastus", + "eastus2": "eastus2", + "westus": "westus", + "northcentralus": "northcentralus", + "southcentralus": "southcentralus", + "northeurope": "northeurope", + "westeurope": "westeurope", + "japanwest": "japanwest", + "japaneast": "japaneast", + "brazilsouth": "brazilsouth", + "australiaeast": "australiaeast", + "australiasoutheast": "australiasoutheast", + "southindia": "southindia", + "centralindia": "centralindia", + "westindia": "westindia", + "canadacentral": "canadacentral", + "canadaeast": "canadaeast", + "uksouth": "uksouth", + "ukwest": "ukwest", + "francecentral": "francecentral", + "westcentralus": "southcentralus", + "westus2": "westus2", + "koreacentral": "koreacentral", + "koreasouth": "koreasouth", + "eastus2euap": "southcentralus", + "centraluseuap": "southcentralus", + "usgovarizona": "usgovarizona", + "usgovvirginia": "usgovvirginia", + "chinaeast2": "chinaeast2" + }, + "appInsightsLocation": "(azAppInsightsLocationMap)[parameters(location)]" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "usgovarizona", + "tags": {}, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "properties": { + "addressPrefix": "10.0.0.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "serviceEndpoints": "[if(equals(toLower(environment().name), 'azurechinacloud'), variables('serviceEndpointsAzureChinaCloud'), variables('serviceEndpointsAll') )]" + } + }, + { + "condition": "[and(equals(parameters('subnetOption'), 'existing'), not(equals(parameters('privateEndpointType'), 'none')))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "UpdateSubnetPolicy", + "resourceGroup": "[resourceGroup().name]", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "properties": "[if(and(equals(parameters('subnetOption'), 'existing'), not(equals(parameters('privateEndpointType'), 'none'))), union(reference(variables('subnet'), '2020-06-01'), variables('subnetPolicyForPE')), json('null'))]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "usgovarizona", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "tags": {}, + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true, + "networkAcls": "[if(equals(parameters('storageAccountBehindVNet'), 'true'), variables('networkRuleSetBehindVNet'), json('null'))]" + } + }, + { + "condition": false, + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "tags": {}, + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "accessPolicies": [], + "networkAcls": "[if(equals(parameters('keyVaultBehindVNet'), 'true'), variables('networkRuleSetBehindVNet'), json('null'))]" + } + }, + { + "condition": false, + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "name": "[concat('cr',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "usgovarizona", + "sku": { + "name": "Premium" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "tags": {}, + "properties": { + "adminUserEnabled": true, + "networkRuleSet": "[if(equals(parameters('containerRegistryBehindVNet'), 'true'), variables('networkRuleSetBehindVNet'), json('null'))]" + } + }, + { + "condition": false, + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "location": "(azAppInsightsLocationMap)[parameters(location)]", + "kind": "web", + "tags": {}, + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-09-01-preview", + "name": "GEN-UNIQUE", + "location": "usgovarizona", + "identity": { + "type": "systemAssigned", + "userAssignedIdentities": "[if(or(equals(parameters('identityType'), 'userAssigned'), equals(parameters('identityType'), 'systemAssigned,userAssigned')), variables('userAssignedIdentities'), json('null'))]" + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "Microsoft.ContainerRegistry/registries/[concat('cr',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "tags": {}, + "properties": { + "friendlyName": "GEN-UNIQUE", + "storageAccount": "[resourceGroup().name]/Microsoft.Storage/storageAccounts/[concat('sa',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "keyVault": "[resourceGroup().name]/Microsoft.KeyVault/vaults/[concat('kv',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "applicationInsights": "[resourceGroup().name]/Microsoft.Insights/components/[concat('ai',uniqueString(resourceGroup().id, parameters('workspaceName')))]", + "containerRegistry": "[if(not(equals(parameters('containerRegistryOption'), 'none')), variables('containerRegistry'), json('null'))]", + "adbWorkspace": "[if(empty(parameters('adbWorkspace')), json('null'), parameters('adbWorkspace'))]", + "primaryUserAssignedIdentity": "[if(equals(parameters('identityType'), 'userAssigned'), variables('primaryUserAssignedIdentity'), json('null'))]", + "encryption": { + "status": "Disabled", + "identity": "[if(not(equals(parameters('cmkUserAssignedIdentityName'), '')), variables('encryptionUserAssignedIdentity'), json('{}'))]", + "keyVaultProperties": { + "keyVaultArmId": "", + "keyIdentifier": "" + }, + "CosmosDbArmId": "", + "StorageAccountArmId": "", + "SearchAccountArmId": "" + }, + "hbiWorkspace": "false" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "DeployPrivateEndpoints", + "resourceGroup": "[resourceGroup().name]", + "dependsOn": [ + "Microsoft.MachineLearningServices/workspaces/GEN-UNIQUE", + "Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": "[not(equals(parameters('privateEndpointType'), 'none'))]", + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-PrivateEndpoint", + "location": "[parameters('location')]", + "tags": {}, + "properties": { + "privateLinkServiceConnections": "[if(equals(parameters('privateEndpointType'), 'AutoApproval'), variables('defaultPEConnections'), json('null'))]", + "manualPrivateLinkServiceConnections": "[if(equals(parameters('privateEndpointType'), 'ManualApproval'), variables('defaultPEConnections'), json('null'))]", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]/[concat('sn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "(privateDnsZoneName)[toLower(environment().name)]", + "location": "global", + "dependsOn": [ + "[resourceGroup().name]/Microsoft.Network/privateEndpoints/GEN-UNIQUE-PrivateEndpoint" + ], + "tags": {}, + "properties": {} + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "(privateAznbDnsZoneName)[toLower(environment().name)]", + "location": "global", + "dependsOn": [ + "[resourceGroup().name]/Microsoft.Network/privateEndpoints/GEN-UNIQUE-PrivateEndpoint" + ], + "tags": {}, + "properties": {} + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[concat(variables('privateDnsZoneName')[toLower(environment().name)], '/', uniqueString(variables('vnet')))]", + "location": "global", + "dependsOn": [ + "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]", + "(privateDnsZoneName)[toLower(environment().name)]" + ], + "tags": {}, + "properties": { + "virtualNetwork": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + }, + "registrationEnabled": false + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[concat(variables('privateAznbDnsZoneName')[toLower(environment().name)], '/', uniqueString(variables('vnet')))]", + "location": "global", + "dependsOn": [ + "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]", + "(privateAznbDnsZoneName)[toLower(environment().name)]" + ], + "tags": {}, + "properties": { + "virtualNetwork": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/[concat('vn',uniqueString(resourceGroup().id, parameters('workspaceName')))]" + }, + "registrationEnabled": false + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-PrivateEndpoint/default", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]", + "(privateAznbDnsZoneName)[toLower(environment().name)]", + "(privateDnsZoneName)[toLower(environment().name)]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "privatelink-api-azureml-ms", + "properties": { + "privateDnsZoneId": "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateDnsZones', variables('privateDnsZoneName')[toLower(environment().name)])]" + } + }, + { + "name": "privatelink-notebooks-azure-net", + "properties": { + "privateDnsZoneId": "[resourceid(parameters('vnetResourceGroupName'), 'Microsoft.Network/privateDnsZones', variables('privateAznbDnsZoneName')[toLower(environment().name)])]" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1466 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1466 new file mode 100644 index 0000000..11631b1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1466 @@ -0,0 +1,79 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.maps/maps-create/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962908033, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-create/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1466", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.maps/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1466", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accountName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "The name for your Azure Maps account. This value must be globally unique." + } + }, + "pricingTier": { + "type": "string", + "allowedValues": [ + "S0", + "S1", + "G2" + ], + "defaultValue": "G2", + "metadata": { + "description": "The pricing tier for the account. Use S0 for small-scale development. Use S1 or G2 for large-scale applications." + } + }, + "kind": { + "type": "string", + "allowedValues": [ + "Gen1", + "Gen2" + ], + "defaultValue": "Gen2", + "metadata": { + "description": "The pricing tier for the account. Use Gen1 for small-scale development. Use Gen2 for large-scale applications." + } + } + }, + "resources": [ + { + "name": "[uniqueString(resourceGroup().id)]", + "type": "Microsoft.Maps/accounts", + "apiVersion": "2021-02-01", + "location": "global", + "sku": { + "name": "G2" + }, + "kind": "Gen2" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1467 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1467 new file mode 100644 index 0000000..2b8bf6a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1467 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962908041, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1467", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1467", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "westus2", + "northeurope", + "westcentralus", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the location for all the resources." + }, + "value": "eastus" + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('vault', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "userAssignedIdentityName": { + "type": "string", + "defaultValue": "[concat('identity', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for your managed identity resource." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the set of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get", + "set" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + } + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[concat('identity', uniqueString(resourceGroup().id))]", + "location": "eastus" + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "GEN-UNIQUE", + "location": "eastus", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "Standard", + "family": "A" + }, + "enabledForTemplateDeployment": true, + "accessPolicies": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ] + } + } + ] + } + } + ], + "outputs": { + "userIdentityResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName'))]" + }, + "userAssignedIdentityPrincipalId": { + "type": "string", + "value": "[reference(parameters('userAssignedIdentityName')).principalId]" + }, + "keyVaultName": { + "type": "string", + "value": "[parameters('keyVaultName')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1468 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1468 new file mode 100644 index 0000000..2fa7828 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1468 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "timestamp": 1642962908052, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1468", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1468", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "westus2", + "northeurope", + "westcentralus", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the location for all the resources." + }, + "value": "usgovvirginia" + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('vault', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "userAssignedIdentityName": { + "type": "string", + "defaultValue": "[concat('identity', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for your managed identity resource." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the set of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list", + "get", + "set" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + } + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[concat('identity', uniqueString(resourceGroup().id))]", + "location": "usgovvirginia" + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "GEN-UNIQUE", + "location": "usgovvirginia", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "Standard", + "family": "A" + }, + "enabledForTemplateDeployment": true, + "accessPolicies": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ] + } + } + ] + } + } + ], + "outputs": { + "userIdentityResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName'))]" + }, + "userAssignedIdentityPrincipalId": { + "type": "string", + "value": "[reference(parameters('userAssignedIdentityName')).principalId]" + }, + "keyVaultName": { + "type": "string", + "value": "[parameters('keyVaultName')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1469 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1469 new file mode 100644 index 0000000..7ac4488 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1469 @@ -0,0 +1,215 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.parameters.json" + ], + "timestamp": 1642962908064, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1469", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.maps/accounts", + "microsoft.maps/accounts/providers/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1469", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "westus2", + "northeurope", + "westcentralus", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the location for all the resources." + }, + "value": "GET-PREREQ-location" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the resourceId of the key vault." + }, + "value": "GET-PREREQ-keyVaultName" + }, + "accountName": { + "type": "string", + "defaultValue": "[concat('map', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the Azure Maps account." + } + }, + "userAssignedIdentityResourceId": { + "type": "string", + "metadata": { + "description": "Specifies the resourceId for the user assigned managed identity resource." + }, + "value": "GET-PREREQ-userIdentityResourceId" + }, + "userAssignedIdentityPrincipalId": { + "type": "string", + "metadata": { + "description": "Specifies the resourceId for the user assigned managed identity resource." + }, + "value": "GET-PREREQ-userAssignedIdentityPrincipalId" + }, + "pricingTier": { + "type": "string", + "allowedValues": [ + "S0", + "S1", + "G2" + ], + "defaultValue": "G2", + "metadata": { + "description": "The pricing tier for the account. Use S0 for small-scale development. Use S1 or G2 for large-scale applications." + } + }, + "kind": { + "type": "string", + "allowedValues": [ + "Gen1", + "Gen2" + ], + "defaultValue": "Gen2", + "metadata": { + "description": "The pricing tier for the account. Use Gen1 for small-scale development. Use Gen2 for large-scale applications." + } + }, + "startDateTime": { + "type": "string", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "Current Universal DateTime in ISO 8601 'u' format to be used as start of the SAS Token." + } + }, + "duration": { + "type": "string", + "defaultValue": "P1Y", + "metadata": { + "description": "The duration of the SAS Token, P1Y is maximum, ISO 8601 format is expected." + } + }, + "maxRatePerSecond": { + "type": "int", + "defaultValue": 500, + "minValue": 1, + "maxValue": 500, + "metadata": { + "description": "The approximate maximum rate per second the SAS token can be used." + } + }, + "signingKey": { + "type": "string", + "defaultValue": "primaryKey", + "allowedValues": [ + "primaryKey", + "seconaryKey" + ], + "metadata": { + "description": "The specified signing key which will be used to create the SAS Token." + } + }, + "allowedOrigins": { + "type": "array", + "defaultValue": [], + "maxLength": 10, + "metadata": { + "description": "The specified application's web host header origins (example: https://www.azure.com) which the Maps account allows for Cross Origin Resource Sharing (CORS)." + } + } + }, + "variables": { + "accountId": "Microsoft.Maps/accounts/[concat('map', uniqueString(resourceGroup().id))]", + "AzureMapsDataReader": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '423170ca-a8f6-4b0f-8487-9e4eb8f49bfa')]", + "sasParameters": { + "signingKey": "primaryKey", + "principalId": "GET-PREREQ-userAssignedIdentityPrincipalId", + "maxRatePerSecond": 500, + "start": "[utcNow('u')]", + "expiry": "[dateTimeAdd(parameters('startDateTime'), parameters('duration'))]" + } + }, + "resources": [ + { + "type": "Microsoft.Maps/accounts", + "apiVersion": "2021-12-01-preview", + "name": "[concat('map', uniqueString(resourceGroup().id))]", + "location": "GET-PREREQ-location", + "sku": { + "name": "G2" + }, + "kind": "Gen2", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[parameters('userAssignedIdentityResourceId')]": {} + } + }, + "properties": { + "cors": { + "corsRules": [ + { + "allowedOrigins": [] + } + ] + } + } + }, + { + "type": "Microsoft.Maps/accounts/providers/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[concat(parameters('accountName'), '/Microsoft.Authorization/', guid(parameters('userAssignedIdentityPrincipalId'), variables('AzureMapsDataReader'), resourceId('Microsoft.Maps/accounts', parameters('accountName'))))]", + "dependsOn": [ + "[concat('map', uniqueString(resourceGroup().id))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '423170ca-a8f6-4b0f-8487-9e4eb8f49bfa')]", + "principalId": "GET-PREREQ-userAssignedIdentityPrincipalId", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2021-04-01-preview", + "name": "GET-PREREQ-keyVaultName/[concat('map', uniqueString(resourceGroup().id))]", + "dependsOn": [ + "Microsoft.Maps/accounts/[concat('map', uniqueString(resourceGroup().id))]" + ], + "tags": { + "signingKey": "(sasParameters).signingKey", + "start": "(sasParameters).start", + "expiry": "(sasParameters).expiry" + }, + "properties": { + "value": "[listSas(variables('accountId'), '2021-12-01-preview', variables('sasParameters')).accountSasToken]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT147 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT147 new file mode 100644 index 0000000..616358c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT147 @@ -0,0 +1,448 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elk/diagnostics-with-elk/azuredeploy.json", + "/application-workloads/elk/diagnostics-with-elk/azuredeploy.parameters.json" + ], + "timestamp": 1642962888594, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elk/diagnostics-with-elk/azuredeploy.json", + "/application-workloads/elk/diagnostics-with-elk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT147", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT147", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "esClusterName": { + "type": "string", + "defaultValue": "elasticsearch", + "metadata": { + "description": "The name of the Elasticsearch cluster." + } + }, + "esVersion": { + "type": "string", + "defaultValue": "2.3.1", + "allowedValues": [ + "2.3.1", + "2.2.2", + "2.1.2", + "1.7.5" + ], + "metadata": { + "description": "Elasticsearch version to install." + } + }, + "vmClientNodeCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "metadata": { + "description": "Number of Elasticsearch client nodes to provision (Setting this to zero puts the data nodes on the load balancer)" + } + }, + "vmDataNodeCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of Elasticsearch data nodes" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "vmSizeMarvelNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch cluster marvel nodes" + } + }, + "vmSizeMasterNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch cluster master nodes" + } + }, + "vmSizeClientNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch cluster client nodes" + } + }, + "vmSizeDataNodes": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Elasticsearch cluster data nodes" + } + }, + "encodedConfigString": { + "type": "string", + "defaultValue": "na", + "metadata": { + "description": "Base64 encoded string which is the Logstash configuration. If you don't want to enter a custom Logstash configuration and would like to use the logstash-input-azurewadtable plugin set this to 'na'." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "existingDiagnosticsStorageAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Existing diagnostics storage account name." + }, + "value": "w12de01rg4510" + }, + "existingDiagnosticsStorageAccountKey": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Existing diagnostics storage account key." + }, + "value": "YoFFNYFdAs0S5eWEoZVxeWZxCihrXJDcm0Ukom/QDOFCq/8rW46ffCLuvi8QYnq1lctghZmULYUDK3fmwe+Pkg==" + }, + "existingDiagnosticsStorageTableNames": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "List of existing tables containing diagnostics data separated by semicolon (;)." + }, + "value": "WADMetricsPT1MP10DV2S20160415" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountPrefix": "[concat(substring(uniqueString(resourceGroup().id, parameters('esClusterName')), 0, 6), substring(parameters('esClusterName'), 0, 3))]", + "storageAccountName": "[concat(variables('storageAccountPrefix'), 'log')]", + "extensionName": "ELKSimple", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "storageAccountType": "Standard_LRS", + "vmName": "logstashvm1", + "vmNicName": "logstashvm1-nic", + "vmNsgName": "logstashvm1-nsg", + "vmPipName": "logstashvm1-pip", + "virtualNetworkName": "elkvnet2", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/elkvnet2/other", + "esHost": "10.0.2.100", + "elkCommonArtifactsLocation": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/", + "esDeploymentName": "esDeploymentForDiagnosticsWithELK" + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "name": "esDeploymentForDiagnosticsWithELK", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/elastic/elasticsearch/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "elkvnet2" + }, + "OS": { + "value": "ubuntu" + }, + "authenticationType": { + "value": "password" + }, + "sshPublicKey": { + "value": "" + }, + "loadBalancerType": { + "value": "internal" + }, + "jumpbox": { + "value": "Yes" + }, + "vmClientNodeCount": { + "value": 1 + }, + "vmSizeClientNodes": { + "value": "Standard_D2_v3" + }, + "vmSizeMasterNodes": { + "value": "Standard_D2_v3" + }, + "vmSizeDataNodes": { + "value": "Standard_D2_v3" + }, + "vmDataNodeCount": { + "value": 1 + }, + "esClusterName": { + "value": "elasticsearch" + }, + "esVersion": { + "value": "2.3.1" + }, + "afs": { + "value": "no" + }, + "marvel": { + "value": "no" + }, + "marvelCluster": { + "value": "no" + }, + "vmSizeMarvelNodes": { + "value": "Standard_D2_v3" + }, + "kibana": { + "value": "yes" + }, + "sense": { + "value": "no" + }, + "jmeterAgent": { + "value": "no" + }, + "cloudAzure": { + "value": "no" + }, + "cloudAzureStorageAccount": { + "value": "" + }, + "cloudAzureStorageKey": { + "value": "" + } + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "logstashvm1-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "22", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "logstashvm1-pip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "logstashvm1-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/esDeploymentForDiagnosticsWithELK", + "Microsoft.Network/networkSecurityGroups/logstashvm1-nsg", + "Microsoft.Network/publicIPAddresses/logstashvm1-pip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/logstashvm1-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/elkvnet2/other" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/logstashvm1-nsg" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "StorageAccount" + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "logstashvm1", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('vmNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "logstashvm1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "logstashvm1_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/logstashvm1-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "logstashvm1/ELKSimple", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/logstashvm1", + "Microsoft.Resources/deployments/esDeploymentForDiagnosticsWithELK" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/elk-simple-install-ubuntu.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash ./elk-simple-install-ubuntu.sh -e na -a w12de01rg4510 -k YoFFNYFdAs0S5eWEoZVxeWZxCihrXJDcm0Ukom/QDOFCq/8rW46ffCLuvi8QYnq1lctghZmULYUDK3fmwe+Pkg== -t WADMetricsPT1MP10DV2S20160415 -i 10.0.2.100" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1470 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1470 new file mode 100644 index 0000000..459da01 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1470 @@ -0,0 +1,215 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962908078, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.json", + "/quickstarts/microsoft.maps/maps-use-sas/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1470", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/secrets", + "microsoft.maps/accounts", + "microsoft.maps/accounts/providers/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1470", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "westus2", + "northeurope", + "westcentralus", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the location for all the resources." + }, + "value": "GET-PREREQ-location" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the resourceId of the key vault." + }, + "value": "GET-PREREQ-keyVaultName" + }, + "accountName": { + "type": "string", + "defaultValue": "[concat('map', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the Azure Maps account." + } + }, + "userAssignedIdentityResourceId": { + "type": "string", + "metadata": { + "description": "Specifies the resourceId for the user assigned managed identity resource." + }, + "value": "GET-PREREQ-userIdentityResourceId" + }, + "userAssignedIdentityPrincipalId": { + "type": "string", + "metadata": { + "description": "Specifies the resourceId for the user assigned managed identity resource." + }, + "value": "GET-PREREQ-userAssignedIdentityPrincipalId" + }, + "pricingTier": { + "type": "string", + "allowedValues": [ + "S0", + "S1", + "G2" + ], + "defaultValue": "G2", + "metadata": { + "description": "The pricing tier for the account. Use S0 for small-scale development. Use S1 or G2 for large-scale applications." + } + }, + "kind": { + "type": "string", + "allowedValues": [ + "Gen1", + "Gen2" + ], + "defaultValue": "Gen2", + "metadata": { + "description": "The pricing tier for the account. Use Gen1 for small-scale development. Use Gen2 for large-scale applications." + } + }, + "startDateTime": { + "type": "string", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "Current Universal DateTime in ISO 8601 'u' format to be used as start of the SAS Token." + } + }, + "duration": { + "type": "string", + "defaultValue": "P1Y", + "metadata": { + "description": "The duration of the SAS Token, P1Y is maximum, ISO 8601 format is expected." + } + }, + "maxRatePerSecond": { + "type": "int", + "defaultValue": 500, + "minValue": 1, + "maxValue": 500, + "metadata": { + "description": "The approximate maximum rate per second the SAS token can be used." + } + }, + "signingKey": { + "type": "string", + "defaultValue": "primaryKey", + "allowedValues": [ + "primaryKey", + "seconaryKey" + ], + "metadata": { + "description": "The specified signing key which will be used to create the SAS Token." + } + }, + "allowedOrigins": { + "type": "array", + "defaultValue": [], + "maxLength": 10, + "metadata": { + "description": "The specified application's web host header origins (example: https://www.azure.com) which the Maps account allows for Cross Origin Resource Sharing (CORS)." + } + } + }, + "variables": { + "accountId": "Microsoft.Maps/accounts/[concat('map', uniqueString(resourceGroup().id))]", + "AzureMapsDataReader": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '423170ca-a8f6-4b0f-8487-9e4eb8f49bfa')]", + "sasParameters": { + "signingKey": "primaryKey", + "principalId": "GET-PREREQ-userAssignedIdentityPrincipalId", + "maxRatePerSecond": 500, + "start": "[utcNow('u')]", + "expiry": "[dateTimeAdd(parameters('startDateTime'), parameters('duration'))]" + } + }, + "resources": [ + { + "type": "Microsoft.Maps/accounts", + "apiVersion": "2021-12-01-preview", + "name": "[concat('map', uniqueString(resourceGroup().id))]", + "location": "GET-PREREQ-location", + "sku": { + "name": "G2" + }, + "kind": "Gen2", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[parameters('userAssignedIdentityResourceId')]": {} + } + }, + "properties": { + "cors": { + "corsRules": [ + { + "allowedOrigins": [] + } + ] + } + } + }, + { + "type": "Microsoft.Maps/accounts/providers/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[concat(parameters('accountName'), '/Microsoft.Authorization/', guid(parameters('userAssignedIdentityPrincipalId'), variables('AzureMapsDataReader'), resourceId('Microsoft.Maps/accounts', parameters('accountName'))))]", + "dependsOn": [ + "[concat('map', uniqueString(resourceGroup().id))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '423170ca-a8f6-4b0f-8487-9e4eb8f49bfa')]", + "principalId": "GET-PREREQ-userAssignedIdentityPrincipalId", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2021-04-01-preview", + "name": "GET-PREREQ-keyVaultName/[concat('map', uniqueString(resourceGroup().id))]", + "dependsOn": [ + "Microsoft.Maps/accounts/[concat('map', uniqueString(resourceGroup().id))]" + ], + "tags": { + "signingKey": "(sasParameters).signingKey", + "start": "(sasParameters).start", + "expiry": "(sasParameters).expiry" + }, + "properties": { + "value": "[listSas(variables('accountId'), '2021-12-01-preview', variables('sasParameters')).accountSasToken]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1471 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1471 new file mode 100644 index 0000000..36727dd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1471 @@ -0,0 +1,93 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.media/media-services-create/azuredeploy.json", + "/quickstarts/microsoft.media/media-services-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962908102, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.media/media-services-create/azuredeploy.json", + "/quickstarts/microsoft.media/media-services-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1471", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.media/mediaservices", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1471", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "18131581614460584422" + } + }, + "parameters": { + "mediaServiceName": { + "type": "string", + "defaultValue": "[format('mediaService{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Media Services account. A Media Services account name is globally unique, all lowercase letters or numbers with no spaces." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "storageAccountName": "[format('storage{0}', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Media/mediaservices", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "storageAccounts": [ + { + "id": "Microsoft.Storage/storageAccounts/[format('storage{0}', uniqueString(resourceGroup().id))]", + "type": "Primary" + } + ] + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('storage{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1472 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1472 new file mode 100644 index 0000000..29e8da9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1472 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.json", + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962908128, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.json", + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1472", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.migrate/migrateprojects/solutions", + "microsoft.migrate/migrateprojects" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1472", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "migrateProjectName": { + "type": "string", + "maxLength": 13, + "metadata": { + "description": "Specifies a name for creating the migrate project." + }, + "value": "SampleProject" + }, + "location": { + "type": "string", + "allowedValues": [ + "centralus", + "eastasia", + "northeurope", + "westeurope", + "westus2", + "australiasoutheast", + "uksouth", + "ukwest", + "canadacentral", + "centralindia", + "southindia", + "japaneast", + "japanwest", + "brazilsouth", + "koreasouth", + "koreacentral", + "francecentral", + "switzerlandnorth", + "australiaeast", + "southeastasia", + "centraluseuap", + "eastus2euap", + "canadaeast", + "southcentralus", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the location for all resources." + }, + "value": "westus2" + } + }, + "resources": [ + { + "type": "Microsoft.Migrate/MigrateProjects", + "apiVersion": "2020-05-01", + "name": "SampleProject", + "location": "westus2", + "tags": { + "Migrate Project": "SampleProject" + }, + "properties": {} + }, + { + "type": "Microsoft.Migrate/MigrateProjects/Solutions", + "apiVersion": "2020-05-01", + "name": "SampleProject/Servers-Assessment-ServerAssessment", + "dependsOn": [ + "Microsoft.Migrate/MigrateProjects/SampleProject" + ], + "properties": { + "tool": "ServerAssessment", + "purpose": "Assessment", + "goal": "Servers", + "status": "Active" + } + }, + { + "type": "Microsoft.Migrate/MigrateProjects/Solutions", + "apiVersion": "2020-05-01", + "name": "SampleProject/Servers-Discovery-ServerDiscovery", + "dependsOn": [ + "Microsoft.Migrate/MigrateProjects/SampleProject" + ], + "properties": { + "tool": "ServerDiscovery", + "purpose": "Discovery", + "goal": "Servers", + "status": "Inactive" + } + }, + { + "type": "Microsoft.Migrate/MigrateProjects/Solutions", + "apiVersion": "2020-05-01", + "name": "SampleProject/Servers-Migration-ServerMigration", + "dependsOn": [ + "Microsoft.Migrate/MigrateProjects/SampleProject" + ], + "properties": { + "tool": "ServerMigration", + "purpose": "Migration", + "goal": "Servers", + "status": "Active" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1473 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1473 new file mode 100644 index 0000000..44c79fc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1473 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.json", + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962908143, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.json", + "/quickstarts/microsoft.migrate/migrate-project-create/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1473", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.migrate/migrateprojects/solutions", + "microsoft.migrate/migrateprojects" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1473", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "migrateProjectName": { + "type": "string", + "maxLength": 13, + "metadata": { + "description": "Specifies a name for creating the migrate project." + }, + "value": "GovProject" + }, + "location": { + "type": "string", + "allowedValues": [ + "centralus", + "eastasia", + "northeurope", + "westeurope", + "westus2", + "australiasoutheast", + "uksouth", + "ukwest", + "canadacentral", + "centralindia", + "southindia", + "japaneast", + "japanwest", + "brazilsouth", + "koreasouth", + "koreacentral", + "francecentral", + "switzerlandnorth", + "australiaeast", + "southeastasia", + "centraluseuap", + "eastus2euap", + "canadaeast", + "southcentralus", + "usgovvirginia", + "usgovarizona" + ], + "metadata": { + "description": "Specifies the location for all resources." + }, + "value": "usgovvirginia" + } + }, + "resources": [ + { + "type": "Microsoft.Migrate/MigrateProjects", + "apiVersion": "2020-05-01", + "name": "GovProject", + "location": "usgovvirginia", + "tags": { + "Migrate Project": "GovProject" + }, + "properties": {} + }, + { + "type": "Microsoft.Migrate/MigrateProjects/Solutions", + "apiVersion": "2020-05-01", + "name": "GovProject/Servers-Assessment-ServerAssessment", + "dependsOn": [ + "Microsoft.Migrate/MigrateProjects/GovProject" + ], + "properties": { + "tool": "ServerAssessment", + "purpose": "Assessment", + "goal": "Servers", + "status": "Active" + } + }, + { + "type": "Microsoft.Migrate/MigrateProjects/Solutions", + "apiVersion": "2020-05-01", + "name": "GovProject/Servers-Discovery-ServerDiscovery", + "dependsOn": [ + "Microsoft.Migrate/MigrateProjects/GovProject" + ], + "properties": { + "tool": "ServerDiscovery", + "purpose": "Discovery", + "goal": "Servers", + "status": "Inactive" + } + }, + { + "type": "Microsoft.Migrate/MigrateProjects/Solutions", + "apiVersion": "2020-05-01", + "name": "GovProject/Servers-Migration-ServerMigration", + "dependsOn": [ + "Microsoft.Migrate/MigrateProjects/GovProject" + ], + "properties": { + "tool": "ServerMigration", + "purpose": "Migration", + "goal": "Servers", + "status": "Active" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1474 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1474 new file mode 100644 index 0000000..bfd989a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1474 @@ -0,0 +1,265 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.netapp/anf-nfs-volume/azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-nfs-volume/azuredeploy.parameters.json" + ], + "timestamp": 1642962908156, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.netapp/anf-nfs-volume/azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-nfs-volume/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1474", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.netapp/netappaccounts/capacitypools", + "microsoft.network/virtualnetworks", + "microsoft.netapp/netappaccounts/capacitypools/volumes", + "microsoft.netapp/netappaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1474", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Same Location of resource group for all resources in the same deployment." + } + }, + "netAppAccountName": { + "defaultValue": "[concat('anfacc', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Name for the Account. The account name must be unique within the subscription" + } + }, + "netAppPoolName": { + "defaultValue": "[concat('pool', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Name for the capacity pool. The capacity pool name must be unique for each NetApp account." + } + }, + "poolSizeBytes": { + "type": "int", + "defaultValue": 4398046511104, + "minValue": 4398046511104, + "maxValue": 549755813888000, + "metadata": { + "description": "Size of the capacity pool. The minimum size is 4 TiB." + } + }, + "netAppVolumeName": { + "defaultValue": "[concat('volume', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Name for the NFS Volume. A volume name must be unique within each capacity pool. It must be at aleast three characters long and you can use any alphanumeric characters." + } + }, + "volSizeBytes": { + "type": "int", + "defaultValue": 107374182400, + "minValue": 107374182400, + "maxValue": 109951162777600, + "metadata": { + "description": "Amount of logical storage that is allocated to the volume." + } + }, + "virtualNetworkName": { + "defaultValue": "[concat('anfvnet', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Name of the Virtual Network (VNet) from which you want to access the volume. The VNet must have a subnet delegated to Azure NetApp Files." + } + }, + "vnetAddressPrefix": { + "type": "String", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual Network address range." + } + }, + "allowedClients": { + "type": "string", + "defaultValue": "0.0.0.0/0", + "metadata": { + "description": "Root Access to the volume." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "[concat('anfsubnet', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Subnet name that you want to use for the volume. The subnet must be delegated to Azure NetApp Files." + } + }, + "subnetAddressPrefix": { + "type": "String", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet address range." + } + }, + "serviceLevel": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Premium", + "Ultra", + "Standard" + ], + "metadata": { + "description": "Target performance for the capacity pool. Service level: Ultra, Premium, or Standard." + } + }, + "protocolTypes": { + "type": "string", + "defaultValue": "NFSv3", + "allowedValues": [ + "NFSv3", + "NFSv4.1" + ], + "metadata": { + "description": "NFS version (NFSv3 or NFSv4.1) for the volume." + } + }, + "unixReadOnly": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + false, + true + ], + "metadata": { + "description": "Read only flag." + } + }, + "unixReadWrite": { + "type": "bool", + "defaultValue": true, + "allowedValues": [ + false, + true + ], + "metadata": { + "description": "Read/write flag." + } + }, + "snapshotDirectoryVisible": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + false, + true + ], + "metadata": { + "description": "Snapshot directory visible flag." + } + } + }, + "variables": { + "capacityPoolName": "[concat('anfacc', uniqueString(resourceGroup().id))]/[concat('pool', uniqueString(resourceGroup().id))]", + "volumeName": "[concat('anfacc', uniqueString(resourceGroup().id))]/[concat('pool', uniqueString(resourceGroup().id))]/[concat('volume', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "[concat('anfvnet', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[concat('anfsubnet', uniqueString(resourceGroup().id))]", + "properties": { + "addressPrefix": "10.0.0.0/24", + "delegations": [ + { + "name": "NetAppDelegation", + "properties": { + "serviceName": "Microsoft.NetApp/volumes" + } + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.NetApp/netAppAccounts", + "apiVersion": "2020-06-01", + "name": "[concat('anfacc', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.NetApp/netAppAccounts/capacityPools", + "apiVersion": "2020-06-01", + "name": "[concat('anfacc', uniqueString(resourceGroup().id))]/[concat('pool', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.NetApp/netAppAccounts/[concat('anfacc', uniqueString(resourceGroup().id))]" + ], + "properties": { + "serviceLevel": "Standard", + "size": 4398046511104 + } + }, + { + "type": "Microsoft.NetApp/netAppAccounts/capacityPools/volumes", + "apiVersion": "2020-06-01", + "name": "[concat('anfacc', uniqueString(resourceGroup().id))]/[concat('pool', uniqueString(resourceGroup().id))]/[concat('volume', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.NetApp/netAppAccounts/capacityPools/[concat('anfacc', uniqueString(resourceGroup().id))]/[concat('pool', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/[concat('anfvnet', uniqueString(resourceGroup().id))]" + ], + "properties": { + "serviceLevel": "Standard", + "creationToken": "[concat('volume', uniqueString(resourceGroup().id))]", + "usageThreshold": 107374182400, + "exportPolicy": { + "rules": [ + { + "ruleIndex": 1, + "unixReadOnly": false, + "unixReadWrite": true, + "cifs": false, + "nfsv3": "[if(equals( parameters('protocolTypes'), 'NFSv3'),bool('true'),bool('false'))]", + "nfsv41": "[if(equals(parameters('protocolTypes'), 'NFSv4.1'),bool('true'),bool('false'))]", + "allowedClients": "0.0.0.0/0" + } + ] + }, + "protocolTypes": [ + "NFSv3" + ], + "subnetId": "Microsoft.Network/virtualNetworks/subnets/[concat('anfvnet', uniqueString(resourceGroup().id))]/[concat('anfsubnet', uniqueString(resourceGroup().id))]", + "snapshotDirectoryVisible": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1475 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1475 new file mode 100644 index 0000000..fa8af03 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1475 @@ -0,0 +1,102 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.netapp/anf-smb-volume/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-smb-volume/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962908168, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.netapp/anf-smb-volume/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-smb-volume/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1475", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1475", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "quickstarts" + }, + "adminPassword": { + "type": "secureString" + }, + "domainName": { + "type": "string", + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "name": "createADController", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/active-directory-new-domain/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "quickstarts" + }, + "adminPassword": { + "value": "adminPassword" + }, + "domainName": { + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + } + } + } + } + ], + "outputs": { + "dnsIpAddress": { + "type": "string", + "value": "[reference('createADController').outputs.dnsIpAddress.value]" + }, + "domainName": { + "type": "string", + "value": "[reference('createADController').outputs.domainName.value]" + }, + "virtualNetworkSubscriptionId": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubscriptionId.value]" + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkResourceGroupName.value]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1476 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1476 new file mode 100644 index 0000000..6dff9a6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1476 @@ -0,0 +1,254 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.netapp/anf-smb-volume/azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-smb-volume/azuredeploy.parameters.json" + ], + "timestamp": 1642962908181, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.netapp/anf-smb-volume/azuredeploy.json", + "/quickstarts/microsoft.netapp/anf-smb-volume/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1476", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.netapp/netappaccounts/capacitypools", + "microsoft.resources/deployments", + "microsoft.netapp/netappaccounts/capacitypools/volumes", + "microsoft.netapp/netappaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1476", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Same location of resource group for all resources" + } + }, + "netappAccountName": { + "defaultValue": "[concat('anfacc', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Name for the Account. The account name must be unique within the subscription" + } + }, + "adUsername": { + "type": "string", + "metadata": { + "description": "The value of Active Directory username" + }, + "value": "quickstarts" + }, + "adPassword": { + "type": "securestring", + "metadata": { + "description": "The value of Active Directory password" + } + }, + "smbServerName": { + "type": "string", + "metadata": { + "description": "SMB server name" + }, + "value": "pmcsmb" + }, + "netAppPoolName": { + "defaultValue": "[concat('pool', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Name for the capacity pool. The capacity pool name must be unique for each NetApp account." + } + }, + "poolSizeBytes": { + "type": "int", + "defaultValue": 4398046511104, + "minValue": 4398046511104, + "maxValue": 549755813888000, + "metadata": { + "description": "Size of the capacity pool. The minimum size is 4 TiB." + } + }, + "netAppVolumeName": { + "defaultValue": "[concat('volume', uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Name for the Volume. A volume name must be unique within each capacity pool. It must be at aleast three characters long and you can use any alphanumeric characters." + } + }, + "volSizeBytes": { + "type": "int", + "defaultValue": 107374182400, + "minValue": 107374182400, + "maxValue": 109951162777600, + "metadata": { + "description": "Amount of logical storage that is allocated to the volume." + } + }, + "anfSubnetName": { + "type": "string", + "defaultValue": "[concat('anfsubnet', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the subnet where the ANF volume will be created. This subnet will be delegated to Microsoft.NetApp/volumes." + } + }, + "anfSubnetAddressPrefix": { + "type": "String", + "metadata": { + "description": "Subnet address range." + }, + "value": "10.0.1.0/24" + }, + "serviceLevel": { + "type": "string", + "allowedValues": [ + "Premium", + "Ultra", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "Target performance for the capacity pool. Service level: Ultra, Premium, or Standard." + } + }, + "dnsIpAddress": { + "type": "string", + "metadata": { + "description": "IP Address of the existing AD DNS Controller" + }, + "value": "GET-PREREQ-dnsIpAddress" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "Domain name for AD" + }, + "value": "GET-PREREQ-domainName" + }, + "virtualNetworkSubscriptionId": { + "type": "string", + "metadata": { + "description": "SubscriptionId of the existing virtual network" + }, + "value": "GET-PREREQ-virtualNetworkSubscriptionId" + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "metadata": { + "description": "ResourceGroup name of the existing virtual network" + }, + "value": "GET-PREREQ-virtualNetworkResourceGroupName" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing virtual network" + }, + "value": "GET-PREREQ-virtualNetworkName" + } + }, + "resources": [ + { + "subscriptionId": "GET-PREREQ-virtualNetworkSubscriptionId", + "resourceGroup": "GET-PREREQ-virtualNetworkResourceGroupName", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "AddSubnet", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-05-01", + "name": "GET-PREREQ-virtualNetworkName/[concat('anfsubnet', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "addressPrefix": "10.0.1.0/24", + "delegations": [ + { + "name": "Microsoft.Netapp.volumes", + "properties": { + "serviceName": "Microsoft.Netapp/volumes" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.NetApp/netAppAccounts", + "apiVersion": "2020-06-01", + "name": "netAppAccountName", + "location": "[resourceGroup().location]", + "properties": { + "activeDirectories": [ + { + "username": "quickstarts", + "password": "adPassword", + "domain": "GET-PREREQ-domainName", + "dns": "GET-PREREQ-dnsIpAddress", + "smbServerName": "pmcsmb" + } + ] + } + }, + { + "type": "Microsoft.NetApp/netAppAccounts/capacityPools", + "apiVersion": "2020-06-01", + "name": "netAppAccountName/[concat('pool', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.NetApp/netAppAccounts/netAppAccountName" + ], + "properties": { + "serviceLevel": "Standard", + "size": 4398046511104 + } + }, + { + "type": "Microsoft.NetApp/netAppAccounts/capacityPools/volumes", + "apiVersion": "2020-06-01", + "name": "netAppAccountName/[concat('pool', uniqueString(resourceGroup().id))]/[concat('volume', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.NetApp/netAppAccounts/capacityPools/netAppAccountName/[concat('pool', uniqueString(resourceGroup().id))]", + "AddSubnet" + ], + "properties": { + "serviceLevel": "Standard", + "creationToken": "[concat('volume', uniqueString(resourceGroup().id))]", + "usageThreshold": 107374182400, + "subnetId": "GET-PREREQ-virtualNetworkSubscriptionId/GET-PREREQ-virtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/[concat('anfsubnet', uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "smbServerFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.NetApp/netAppAccounts/capacityPools/volumes', parameters('netAppAccountName'), parameters('netAppPoolName'), parameters('netAppVolumeName'))).mountTargets[0].smbServerFQDN]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1477 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1477 new file mode 100644 index 0000000..5b0f3fc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1477 @@ -0,0 +1,314 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/aad-domainservices/azuredeploy.json", + "/quickstarts/microsoft.network/aad-domainservices/azuredeploy.parameters.json" + ], + "timestamp": 1642962908197, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/aad-domainservices/azuredeploy.json", + "/quickstarts/microsoft.network/aad-domainservices/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1477", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.aad/domainservices" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1477", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "5798446691722514607" + } + }, + "parameters": { + "domainName": { + "type": "string", + "metadata": { + "description": "Domain Name" + }, + "value": "contoso.com" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sku": { + "type": "string", + "defaultValue": "Enterprise", + "metadata": { + "description": "SKU of the AD Domain Service." + } + }, + "domainConfigurationType": { + "type": "string", + "defaultValue": "FullySynced", + "metadata": { + "description": "Domain Configuration Type." + } + }, + "filteredSync": { + "type": "string", + "defaultValue": "Disabled", + "metadata": { + "description": "Choose the filtered sync type." + } + }, + "domainServicesVnetName": { + "type": "string", + "defaultValue": "domain-services-vnet", + "metadata": { + "description": "Virtual Network Name" + } + }, + "domainServicesVnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address Prefix" + } + }, + "domainServicesSubnetName": { + "type": "string", + "defaultValue": "domain-services-subnet", + "metadata": { + "description": "Virtual Network Name" + } + }, + "domainServicesSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix" + } + } + }, + "functions": [], + "variables": { + "domainServicesNSGName": "[format('{0}-nsg', parameters('domainServicesSubnetName'))]", + "PSRemotingSlicePIPAddresses": [ + "52.180.179.108", + "52.180.177.87", + "13.75.105.168", + "52.175.18.134", + "52.138.68.41", + "52.138.65.157", + "104.41.159.212", + "104.45.138.161", + "52.169.125.119", + "52.169.218.0", + "52.187.19.1", + "52.187.120.237", + "13.78.172.246", + "52.161.110.169", + "52.174.189.149", + "40.68.160.142", + "40.83.144.56", + "13.64.151.161" + ], + "RDPIPAddresses": [ + "207.68.190.32/27", + "13.106.78.32/27", + "13.106.174.32/27", + "13.106.4.96/27" + ], + "PSRemotingSliceTIPAddresses": [ + "52.180.183.67", + "52.180.181.39", + "52.175.28.111", + "52.175.16.141", + "52.138.70.93", + "52.138.64.115", + "40.80.146.22", + "40.121.211.60", + "52.138.143.173", + "52.169.87.10", + "13.76.171.84", + "52.187.169.156", + "13.78.174.255", + "13.78.191.178", + "40.68.163.143", + "23.100.14.28", + "13.64.188.43", + "23.99.93.197" + ] + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "[format('{0}-nsg', parameters('domainServicesSubnetName'))]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowPSRemotingSliceP", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "5986", + "sourceAddressPrefixes": [ + "52.180.179.108", + "52.180.177.87", + "13.75.105.168", + "52.175.18.134", + "52.138.68.41", + "52.138.65.157", + "104.41.159.212", + "104.45.138.161", + "52.169.125.119", + "52.169.218.0", + "52.187.19.1", + "52.187.120.237", + "13.78.172.246", + "52.161.110.169", + "52.174.189.149", + "40.68.160.142", + "40.83.144.56", + "13.64.151.161" + ], + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 301, + "direction": "Inbound" + } + }, + { + "name": "AllowRDP", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefixes": [ + "207.68.190.32/27", + "13.106.78.32/27", + "13.106.174.32/27", + "13.106.4.96/27" + ], + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "AllowSyncWithAzureAD", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "AllowPSRemotingSliceT", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "5986", + "sourceAddressPrefixes": [ + "52.180.183.67", + "52.180.181.39", + "52.175.28.111", + "52.175.16.141", + "52.138.70.93", + "52.138.64.115", + "40.80.146.22", + "40.121.211.60", + "52.138.143.173", + "52.169.87.10", + "13.76.171.84", + "52.187.169.156", + "13.78.174.255", + "13.78.191.178", + "40.68.163.143", + "23.100.14.28", + "13.64.188.43", + "23.99.93.197" + ], + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 302, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "domain-services-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "domain-services-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('{0}-nsg', parameters('domainServicesSubnetName'))]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[format('{0}-nsg', parameters('domainServicesSubnetName'))]" + ] + }, + { + "type": "Microsoft.AAD/domainServices", + "apiVersion": "2020-01-01", + "name": "contoso.com", + "location": "[resourceGroup().location]", + "properties": { + "domainName": "contoso.com", + "filteredSync": "Disabled", + "domainConfigurationType": "FullySynced", + "replicaSets": [ + { + "subnetId": "Microsoft.Network/virtualNetworks/subnets/domain-services-vnet/domain-services-subnet", + "location": "[resourceGroup().location]" + } + ], + "sku": "Enterprise" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/domain-services-vnet" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1478 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1478 new file mode 100644 index 0000000..5b81f2d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1478 @@ -0,0 +1,2512 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/aks-application-gateway-ingress-controller/azuredeploy.json", + "/quickstarts/microsoft.network/aks-application-gateway-ingress-controller/azuredeploy.parameters.json" + ], + "timestamp": 1642962908211, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/aks-application-gateway-ingress-controller/azuredeploy.json", + "/quickstarts/microsoft.network/aks-application-gateway-ingress-controller/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1478", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/bastionhosts", + "microsoft.network/privateendpoints", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.operationalinsights/workspaces", + "microsoft.containerservice/managedclusters", + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/applicationgatewaywebapplicationfirewallpolicies", + "microsoft.insights/activitylogalerts", + "microsoft.compute/virtualmachines", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.containerregistry/registries", + "microsoft.network/networksecuritygroups", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1478", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "aksClusterName": { + "defaultValue": "[concat('aks-', uniqueString(resourceGroup().id))]", + "type": "string", + "metadata": { + "description": "Specifies the name of the AKS cluster." + } + }, + "aksClusterDnsPrefix": { + "defaultValue": "[parameters('aksClusterName')]", + "type": "string", + "metadata": { + "description": "Specifies the DNS prefix specified when creating the managed cluster." + } + }, + "aksClusterTags": { + "defaultValue": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "type": "object", + "metadata": { + "description": "Specifies the tags of the AKS cluster." + } + }, + "aksClusterNetworkPlugin": { + "defaultValue": "azure", + "type": "string", + "allowedValues": [ + "azure", + "kubenet" + ], + "metadata": { + "description": "Specifies the network plugin used for building Kubernetes network. - azure or kubenet." + } + }, + "aksClusterNetworkPolicy": { + "defaultValue": "azure", + "type": "string", + "allowedValues": [ + "azure", + "calico" + ], + "metadata": { + "description": "Specifies the network policy used for building Kubernetes network. - calico or azure" + } + }, + "aksClusterPodCidr": { + "defaultValue": "10.244.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the CIDR notation IP range from which to assign pod IPs when kubenet is used." + } + }, + "aksClusterServiceCidr": { + "defaultValue": "10.3.0.0/16", + "type": "string", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges." + } + }, + "aksClusterDnsServiceIP": { + "defaultValue": "10.3.0.10", + "type": "string", + "metadata": { + "description": "Specifies the IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr." + } + }, + "aksClusterDockerBridgeCidr": { + "defaultValue": "172.17.0.1/16", + "type": "string", + "metadata": { + "description": "Specifies the CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any Subnet IP ranges or the Kubernetes service address range." + } + }, + "aksClusterLoadBalancerSku": { + "defaultValue": "standard", + "type": "string", + "allowedValues": [ + "basic", + "standard" + ], + "metadata": { + "description": "Specifies the sku of the load balancer used by the virtual machine scale sets used by nodepools." + } + }, + "aksClusterOutboundType": { + "defaultValue": "loadBalancer", + "type": "string", + "allowedValues": [ + "loadBalancer", + "userDefinedRouting" + ], + "metadata": { + "description": "Specifies outbound (egress) routing method. - loadBalancer or userDefinedRouting." + } + }, + "aksClusterSkuTier": { + "type": "string", + "defaultValue": "Paid", + "allowedValues": [ + "Paid", + "Free" + ], + "metadata": { + "description": "Specifies the tier of a managed cluster SKU: Paid or Free" + } + }, + "aksClusterKubernetesVersion": { + "type": "string", + "defaultValue": "1.20.5", + "metadata": { + "description": "Specifies the version of Kubernetes specified when creating the managed cluster." + } + }, + "aksClusterAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the administrator username of Linux virtual machines." + }, + "value": "GEN-UNIQUE" + }, + "aksClusterSshPublicKey": { + "type": "string", + "metadata": { + "description": "Specifies the SSH RSA public key string for the Linux nodes." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "aadEnabled": { + "defaultValue": false, + "type": "bool", + "metadata": { + "description": "Specifies whether enabling AAD integration." + } + }, + "aadProfileTenantId": { + "defaultValue": "[subscription().tenantId]", + "type": "string", + "metadata": { + "description": "Specifies the tenant id of the Azure Active Directory used by the AKS cluster for authentication." + } + }, + "aadProfileAdminGroupObjectIDs": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the AAD group object IDs that will have admin role of the cluster." + } + }, + "aksClusterEnablePrivateCluster": { + "defaultValue": false, + "type": "bool", + "metadata": { + "description": "Specifies whether to create the cluster as a private cluster or not." + } + }, + "aadProfileManaged": { + "defaultValue": false, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable managed AAD integration." + } + }, + "aadProfileEnableAzureRBAC": { + "defaultValue": false, + "type": "bool", + "metadata": { + "description": "Specifies whether to to enable Azure RBAC for Kubernetes authorization." + } + }, + "systemNodePoolName": { + "defaultValue": "system", + "type": "string", + "metadata": { + "description": "Specifies the unique name of of the system node pool profile in the context of the subscription and resource group." + } + }, + "systemNodePoolVmSize": { + "defaultValue": "Standard_D16s_v3", + "type": "string", + "metadata": { + "description": "Specifies the vm size of nodes in the system node pool." + } + }, + "systemNodePoolOsDiskSizeGB": { + "defaultValue": 100, + "type": "int", + "metadata": { + "description": "Specifies the OS Disk Size in GB to be used to specify the disk size for every machine in the system agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.." + } + }, + "systemNodePoolAgentCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the number of agents (VMs) to host docker containers in the system node pool. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1." + } + }, + "systemNodePoolOsType": { + "defaultValue": "Linux", + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Specifies the OS type for the vms in the system node pool. Choose from Linux and Windows. Default to Linux." + } + }, + "systemNodePoolMaxPods": { + "defaultValue": 30, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of pods that can run on a node in the system node pool. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment." + } + }, + "systemNodePoolMaxCount": { + "defaultValue": 5, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of nodes for auto-scaling for the system node pool." + } + }, + "systemNodePoolMinCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the minimum number of nodes for auto-scaling for the system node pool." + } + }, + "systemNodePoolEnableAutoScaling": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable auto-scaling for the system node pool." + } + }, + "systemNodePoolScaleSetPriority": { + "defaultValue": "Regular", + "allowedValues": [ + "Spot", + "Regular" + ], + "type": "string", + "metadata": { + "description": "Specifies the virtual machine scale set priority in the system node pool: Spot or Regular." + } + }, + "systemNodePoolScaleSetEvictionPolicy": { + "defaultValue": "Delete", + "allowedValues": [ + "Delete", + "Deallocate" + ], + "type": "string", + "metadata": { + "description": "Specifies the ScaleSetEvictionPolicy to be used to specify eviction policy for spot virtual machine scale set. Default to Delete. Allowed values are Delete or Deallocate." + } + }, + "systemNodePoolNodeLabels": { + "defaultValue": {}, + "type": "object", + "metadata": { + "description": "Specifies the Agent pool node labels to be persisted across all nodes in the system node pool." + } + }, + "systemNodePoolNodeTaints": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. - string" + } + }, + "systemNodePoolType": { + "defaultValue": "VirtualMachineScaleSets", + "type": "string", + "allowedValues": [ + "VirtualMachineScaleSets", + "AvailabilitySet" + ], + "metadata": { + "description": "Specifies the type for the system node pool: VirtualMachineScaleSets or AvailabilitySet" + } + }, + "systemNodePoolAvailabilityZones": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the availability zones for the agent nodes in the system node pool. Requirese the use of VirtualMachineScaleSets as node pool type." + } + }, + "userNodePoolName": { + "defaultValue": "user", + "type": "string", + "metadata": { + "description": "Specifies the unique name of of the user node pool profile in the context of the subscription and resource group." + } + }, + "userNodePoolVmSize": { + "defaultValue": "Standard_D16s_v3", + "type": "string", + "metadata": { + "description": "Specifies the vm size of nodes in the user node pool." + } + }, + "userNodePoolOsDiskSizeGB": { + "defaultValue": 100, + "type": "int", + "metadata": { + "description": "Specifies the OS Disk Size in GB to be used to specify the disk size for every machine in the system agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.." + } + }, + "userNodePoolAgentCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the number of agents (VMs) to host docker containers in the user node pool. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1." + } + }, + "userNodePoolOsType": { + "defaultValue": "Linux", + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Specifies the OS type for the vms in the user node pool. Choose from Linux and Windows. Default to Linux." + } + }, + "userNodePoolMaxPods": { + "defaultValue": 30, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of pods that can run on a node in the user node pool. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment." + } + }, + "userNodePoolMaxCount": { + "defaultValue": 5, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of nodes for auto-scaling for the user node pool." + } + }, + "userNodePoolMinCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the minimum number of nodes for auto-scaling for the user node pool." + } + }, + "userNodePoolEnableAutoScaling": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable auto-scaling for the user node pool." + } + }, + "userNodePoolScaleSetPriority": { + "defaultValue": "Regular", + "allowedValues": [ + "Spot", + "Regular" + ], + "type": "string", + "metadata": { + "description": "Specifies the virtual machine scale set priority in the user node pool: Spot or Regular." + } + }, + "userNodePoolScaleSetEvictionPolicy": { + "defaultValue": "Delete", + "allowedValues": [ + "Delete", + "Deallocate" + ], + "type": "string", + "metadata": { + "description": "Specifies the ScaleSetEvictionPolicy to be used to specify eviction policy for spot virtual machine scale set. Default to Delete. Allowed values are Delete or Deallocate." + } + }, + "userNodePoolNodeLabels": { + "defaultValue": {}, + "type": "object", + "metadata": { + "description": "Specifies the Agent pool node labels to be persisted across all nodes in the user node pool." + } + }, + "userNodePoolNodeTaints": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. - string" + } + }, + "userNodePoolType": { + "defaultValue": "VirtualMachineScaleSets", + "type": "string", + "allowedValues": [ + "VirtualMachineScaleSets", + "AvailabilitySet" + ], + "metadata": { + "description": "Specifies the type for the user node pool: VirtualMachineScaleSets or AvailabilitySet" + } + }, + "userNodePoolAvailabilityZones": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the availability zones for the agent nodes in the user node pool. Requirese the use of VirtualMachineScaleSets as node pool type." + } + }, + "httpApplicationRoutingEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the httpApplicationRouting add-on is enabled or not." + } + }, + "aciConnectorLinuxEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the aciConnectorLinux add-on is enabled or not." + } + }, + "azurePolicyEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether the azurepolicy add-on is enabled or not." + } + }, + "kubeDashboardEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the kubeDashboard add-on is enabled or not." + } + }, + "podIdentityProfileEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the pod identity addon is enabled.." + } + }, + "autoScalerProfileScanInterval": { + "type": "string", + "defaultValue": "10s", + "metadata": { + "description": "Specifies the scan interval of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterAdd": { + "type": "string", + "defaultValue": "10m", + "metadata": { + "description": "Specifies the scale down delay after add of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterDelete": { + "type": "string", + "defaultValue": "20s", + "metadata": { + "description": "Specifies the scale down delay after delete of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterFailure": { + "type": "string", + "defaultValue": "3m", + "metadata": { + "description": "Specifies scale down delay after failure of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownUnneededTime": { + "type": "string", + "defaultValue": "10m", + "metadata": { + "description": "Specifies the scale down unneeded time of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownUnreadyTime": { + "type": "string", + "defaultValue": "20m", + "metadata": { + "description": "Specifies the scale down unready time of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileUtilizationThreshold": { + "type": "string", + "defaultValue": "0.5", + "metadata": { + "description": "Specifies the utilization threshold of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileMaxGracefulTerminationSec": { + "type": "string", + "defaultValue": "600", + "metadata": { + "description": "Specifies the max graceful termination time interval in seconds for the auto-scaler of the AKS cluster." + } + }, + "virtualNetworkName": { + "defaultValue": "[concat(parameters('aksClusterName'), 'Vnet')]", + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network." + } + }, + "virtualNetworkAddressPrefixes": { + "defaultValue": "10.0.0.0/8", + "type": "string", + "metadata": { + "description": "Specifies the address prefixes of the virtual network." + } + }, + "aksSubnetName": { + "defaultValue": "AksSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the system node pool of the AKS cluster." + } + }, + "aksSubnetAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the system node pool of the AKS cluster." + } + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "[concat(parameters('aksClusterName'), 'Workspace')]", + "metadata": { + "description": "Specifies the name of the Log Analytics Workspace." + }, + "value": "GEN-UNIQUE" + }, + "logAnalyticsSku": { + "type": "string", + "allowedValues": [ + "Free", + "Standalone", + "PerNode", + "PerGB2018" + ], + "defaultValue": "PerGB2018", + "metadata": { + "description": "Specifies the service tier of the workspace: Free, Standalone, PerNode, Per-GB." + } + }, + "logAnalyticsRetentionInDays": { + "type": "int", + "defaultValue": 60, + "metadata": { + "description": "Specifies the workspace data retention in days. -1 means Unlimited retention for the Unlimited Sku. 730 days is the maximum allowed for all other Skus." + } + }, + "vmSubnetName": { + "type": "string", + "defaultValue": "VmSubnet", + "metadata": { + "description": "Specifies the name of the subnet which contains the virtual machine." + } + }, + "vmSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Specifies the address prefix of the subnet which contains the virtual machine." + } + }, + "applicationGatewaySubnetName": { + "type": "string", + "defaultValue": "AppGatewaySubnet", + "metadata": { + "description": "Specifies the name of the subnet which contains the the Application Gateway." + } + }, + "applicationGatewaySubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.2.0.0/24", + "metadata": { + "description": "Specifies the address prefix of the subnet which contains the Application Gateway." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "Premium_ZRS", + "StandardSSD_LRS", + "StandardSSD_ZRS", + "Standard_LRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('boot', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + }, + "acrPrivateEndpointName": { + "type": "string", + "defaultValue": "AcrPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the Azure Container Registry." + } + }, + "acrName": { + "type": "string", + "defaultValue": "[concat('acr', uniqueString(resourceGroup().id))]", + "minLength": 5, + "maxLength": 50, + "metadata": { + "description": "Name of your Azure Container Registry" + } + }, + "acrAdminUserEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable admin user that have push / pull permission to the registry." + } + }, + "acrNetworkRuleSetDefaultAction": { + "type": "string", + "defaultValue": "Deny", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "The default action of allow or deny when no other rules match. Allowed values: Allow or Deny" + } + }, + "acrPublicNetworkAccess": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Whether or not public network access is allowed for the container registry. Allowed values: Enabled or Disabled" + } + }, + "acrSku": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Tier of your Azure Container Registry." + } + }, + "bastionSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.2.1.0/24", + "metadata": { + "description": "Specifies the Bastion subnet IP prefix. This prefix must be within vnet IP prefix address space." + } + }, + "bastionHostName": { + "type": "string", + "defaultValue": "[concat(parameters('aksClusterName'), 'Bastion')]", + "metadata": { + "description": "Specifies the name of the Azure Bastion resource." + } + }, + "keyVaultPrivateEndpointName": { + "type": "string", + "defaultValue": "KeyVaultPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the Key Vault." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Key Vault resource." + } + }, + "keyVaultNetworkRuleSetDefaultAction": { + "type": "string", + "defaultValue": "Deny", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "The default action of allow or deny when no other rules match. Allowed values: Allow or Deny" + } + }, + "applicationGatewayName": { + "type": "string", + "defaultValue": "[concat('appgw-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Application Gateway." + } + }, + "applicationGatewayZones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Specifies the availability zones of the Application Gateway." + } + }, + "wafPolicyName": { + "type": "String", + "defaultValue": "[concat(parameters('applicationGatewayName'), 'WafPolicy')]", + "metadata": { + "description": "Specifies the name of the WAF policy" + } + }, + "wafPolicyMode": { + "type": "string", + "defaultValue": "Prevention", + "allowedValues": [ + "Detection", + "Prevention" + ], + "metadata": { + "description": "Specifies the mode of the WAF policy." + } + }, + "wafPolicyState": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled " + ], + "metadata": { + "description": "Specifies the state of the WAF policy." + } + }, + "wafPolicyFileUploadLimitInMb": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "Specifies the maximum file upload size in Mb for the WAF policy." + } + }, + "wafPolicyMaxRequestBodySizeInKb": { + "type": "int", + "defaultValue": 128, + "metadata": { + "description": "Specifies the maximum request body size in Kb for the WAF policy." + } + }, + "wafPolicyRequestBodyCheck": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies the whether to allow WAF to check request Body." + } + }, + "wafPolicyRuleSetType": { + "type": "string", + "defaultValue": "OWASP", + "metadata": { + "description": "Specifies the rule set type." + } + }, + "wafPolicyRuleSetVersion": { + "type": "string", + "defaultValue": "3.1", + "metadata": { + "description": "Specifies the rule set version." + } + } + }, + "variables": { + "readerRoleDefinitionName": "acdd72a7-3385-48ef-bd42-f606fba81ae7", + "contributorRoleDefinitionName": "b24988ac-6180-42a0-ab88-20f7382dd24c", + "acrPullRoleDefinitionName": "7f951dda-4ed3-4680-a7ca-43fe172d538d", + "aksClusterUserDefinedManagedIdentityName": "[concat('aks-', uniqueString(resourceGroup().id))]ManagedIdentity", + "aksClusterUserDefinedManagedIdentityId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]ManagedIdentity", + "applicationGatewayUserDefinedManagedIdentityName": "[concat('appgw-', uniqueString(resourceGroup().id))]ManagedIdentity", + "applicationGatewayUserDefinedManagedIdentityId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('appgw-', uniqueString(resourceGroup().id))]ManagedIdentity", + "aadPodIdentityUserDefinedManagedIdentityName": "[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity", + "aadPodIdentityUserDefinedManagedIdentityId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity", + "vmSubnetNsgName": "VmSubnetNsg", + "vmSubnetNsgId": "Microsoft.Network/networkSecurityGroups/VmSubnetNsg", + "virtualNetworkId": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "bastionSubnetNsgName": "[concat('aks-', uniqueString(resourceGroup().id))]Bastion", + "bastionSubnetNsgId": "Microsoft.Network/networkSecurityGroups/[concat(parameters('aksClusterName'), 'Bastion')]Nsg", + "aksSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSubnet", + "vmSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet", + "applicationGatewaySubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AppGatewaySubnet", + "vmNicName": "TestVmNic", + "vmNicId": "Microsoft.Network/networkInterfaces/TestVmNic", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "blobPublicDNSZoneForwarder": "[concat('blob.', environment().suffixes.storage)]", + "blobPrivateDnsZoneName": "[concat('privatelink.', variables('blobPublicDNSZoneForwarder'))]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "blobPrivateDnsZoneGroupName": "blobPrivateDnsZoneGroup", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "vmId": "Microsoft.Compute/virtualMachines/TestVm", + "omsAgentForLinuxName": "LogAnalytics", + "omsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics", + "omsDependencyAgentForLinuxName": "DependencyAgent", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "bastionPublicIpAddressName": "[concat('aks-', uniqueString(resourceGroup().id))]Bastion", + "bastionPublicIpAddressId": "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp", + "bastionSubnetName": "AzureBastionSubnet", + "bastionSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AzureBastionSubnet", + "bastionHostId": "Microsoft.Network/bastionHosts/[concat(parameters('aksClusterName'), 'Bastion')]", + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "readerRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('readerRoleDefinitionName'))]", + "contributorRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinitionName'))]", + "acrPullRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('acrPullRoleDefinitionName'))]", + "aksContributorRoleAssignmentName": "[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('aksClusterName')))]", + "aksContributorRoleAssignmentId": "Microsoft.Authorization/roleAssignments/[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('aksClusterName')))]", + "appGwContributorRoleAssignmentName": "[guid(concat(resourceGroup().id, variables('applicationGatewayUserDefinedManagedIdentityName'), parameters('applicationGatewayName')))]", + "acrPullRoleAssignmentName": "[concat('Microsoft.Authorization/', guid(concat(resourceGroup().id, 'acrPullRoleAssignment')))]", + "containerInsightsSolutionName": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "acrPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateDnsZoneName": "privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateEndpointGroupName": "registry", + "acrPrivateDnsZoneGroupName": "registryPrivateDnsZoneGroup", + "acrPrivateDnsZoneGroupId": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/AcrPrivateEndpoint/registryPrivateDnsZoneGroup", + "acrPrivateEndpointId": "Microsoft.Network/privateEndpoints/AcrPrivateEndpoint", + "acrId": "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "aksClusterId": "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "keyVaultPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateDnsZoneName": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateEndpointId": "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint", + "keyVaultPrivateEndpointGroupName": "vault", + "keyVaultPrivateDnsZoneGroupName": "vaultPrivateDnsZoneGroup", + "keyVaultPrivateDnsZoneGroupId": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup", + "keyVaultId": "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "wafPolicyId": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/[concat(parameters('applicationGatewayName'), 'WafPolicy')]", + "applicationGatewayId": "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]", + "applicationGatewayPublicIPAddressName": "[concat('appgw-', uniqueString(resourceGroup().id))]PublicIp", + "applicationGatewayPublicIPAddressId": "Microsoft.Network/publicIPAddresses/[concat('appgw-', uniqueString(resourceGroup().id))]PublicIp", + "applicationGatewayIPConfigurationName": "applicationGatewayIPConfiguration", + "applicationGatewayFrontendIPConfigurationName": "applicationGatewayFrontendIPConfiguration", + "applicationGatewayFrontendIPConfigurationId": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayFrontendIPConfiguration", + "applicationGatewayFrontendPortName": "applicationGatewayFrontendPort", + "applicationGatewayFrontendPortId": "Microsoft.Network/applicationGateways/frontendPorts/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayFrontendPort", + "applicationGatewayHttpListenerName": "applicationGatewayHttpListener", + "applicationGatewayHttpListenerId": "Microsoft.Network/applicationGateways/httpListeners/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayHttpListener", + "applicationGatewayBackendAddressPoolName": "applicationGatewayBackendPool", + "applicationGatewayBackendAddressPoolId": "Microsoft.Network/applicationGateways/backendAddressPools/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayBackendPool", + "applicationGatewayBackendHttpSettingsName": "applicationGatewayBackendHttpSettings", + "applicationGatewayBackendHttpSettingsId": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayBackendHttpSettings", + "applicationGatewayRequestRoutingRuleName": "default", + "aadProfileConfiguration": { + "managed": false, + "enableAzureRBAC": false, + "adminGroupObjectIDs": [], + "tenantID": "[subscription().tenantId]" + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('bastionPublicIpAddressName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('bastionSubnetNsgName')]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowHttpsInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "Internet", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "AllowGatewayManagerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "GatewayManager", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "AllowLoadBalancerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "AllowBastionHostCommunicationInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "AllowSshRdpOutBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRanges": [ + "22", + "3389" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "AllowAzureCloudCommunicationOutBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "443", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 110, + "direction": "Outbound" + } + }, + { + "name": "AllowBastionHostCommunicationOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Outbound" + } + }, + { + "name": "AllowGetSessionInformationOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "destinationPortRanges": [ + "80", + "443" + ], + "access": "Allow", + "priority": 130, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 1000, + "direction": "Outbound" + } + } + ] + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[concat(parameters('aksClusterName'), 'Bastion')]Nsg", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/bastionHosts", + "name": "[concat(parameters('aksClusterName'), 'Bastion')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AzureBastionSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp" + } + } + } + ] + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/bastionHosts/[concat(parameters('aksClusterName'), 'Bastion')]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "BastionAuditLogs", + "enabled": true + } + ] + } + } + ] + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('boot', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TestVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "TestVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/TestVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "TestVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 50, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 50, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('vmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TestVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "VmSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/VmSubnetNsg", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[concat(parameters('aksClusterName'), 'Vnet')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/VmSubnetNsg", + "Microsoft.Network/networkSecurityGroups/[concat(parameters('aksClusterName'), 'Bastion')]Nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/8" + ] + }, + "subnets": [ + { + "name": "AksSubnet", + "properties": { + "addressPrefix": "10.0.0.0/16", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "VmSubnet", + "properties": { + "addressPrefix": "10.1.0.0/16", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/VmSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "AppGatewaySubnet", + "properties": { + "addressPrefix": "10.2.0.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "10.2.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[concat(parameters('aksClusterName'), 'Bastion')]Nsg" + } + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "comments": "User-Defined Managed Identity defined for the AKS cluster. Used to access the Virtual Network and other resources.", + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "name": "[variables('aksClusterUserDefinedManagedIdentityName')]", + "apiVersion": "2018-11-30", + "location": "[resourceGroup().location]" + }, + { + "comments": "User-Defined Managed Identity used by the Application Gateway is assigned. Used to access Azure Key Vault.", + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[variables('applicationGatewayUserDefinedManagedIdentityName')]", + "location": "[resourceGroup().location]" + }, + { + "comments": "User-Defined Managed Identity used by an AAD Pod Identity. Used to access Azure Key Vault.", + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[variables('aadPodIdentityUserDefinedManagedIdentityName')]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('aksClusterName')))]", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]ManagedIdentity", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinitionName'))]", + "description": "Assign the cluster user-defined managed identity contributor role on the resource group.", + "principalId": "[reference(variables('aksClusterUserDefinedManagedIdentityName')).principalId]", + "principalType": "ServicePrincipal", + "scope": "[resourceGroup().id]" + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('appgw-', uniqueString(resourceGroup().id))]ManagedIdentity", + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity" + ], + "properties": { + "accessPolicies": [ + { + "tenantId": "[reference(variables('applicationGatewayUserDefinedManagedIdentityId')).tenantId]", + "objectId": "[reference(variables('applicationGatewayUserDefinedManagedIdentityId')).principalId]", + "permissions": { + "secrets": [ + "get", + "list" + ], + "certificates": [ + "get" + ] + } + }, + { + "tenantId": "[reference(variables('aadPodIdentityUserDefinedManagedIdentityId')).tenantId]", + "objectId": "[reference(variables('aadPodIdentityUserDefinedManagedIdentityId')).principalId]", + "permissions": { + "secrets": [ + "get", + "list" + ], + "certificates": [ + "get" + ] + } + } + ], + "sku": { + "family": "A", + "name": "standard" + }, + "tenantId": "[subscription().tenantId]", + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Deny" + }, + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "enableSoftDelete": false + }, + "resources": [ + { + "name": "Microsoft.Insights/default", + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "AuditEvent", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + }, + { + "comments": "Grant the AKS cluster ingress controller pod managed identity with reader role permissions over Key Vault; paired with the Access Policy, this allows our ingress controller to pull certificates.", + "type": "providers/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[concat('Microsoft.Authorization/', guid(concat(resourceGroup().id), variables('readerRoleId')))]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('readerRoleDefinitionName'))]", + "principalId": "[reference(variables('aadPodIdentityUserDefinedManagedIdentityId')).principalId]", + "principalType": "ServicePrincipal" + } + } + ] + }, + { + "comments": "Container registry for storing docker images", + "name": "[concat('acr', uniqueString(resourceGroup().id))]", + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]" + ], + "tags": { + "displayName": "Container Registry", + "container.registry": "[concat('acr', uniqueString(resourceGroup().id))]" + }, + "sku": { + "name": "Premium", + "tier": "Premium" + }, + "properties": { + "adminUserEnabled": false, + "networkRuleSet": { + "defaultAction": "Deny" + }, + "policies": { + "quarantinePolicy": { + "status": "disabled" + }, + "trustPolicy": { + "type": "Notary", + "status": "disabled" + }, + "retentionPolicy": { + "days": 15, + "status": "enabled" + } + }, + "publicNetworkAccess": "Enabled", + "encryption": { + "status": "disabled" + }, + "dataEndpointEnabled": true, + "networkRuleBypassOptions": "AzureServices" + }, + "resources": [ + { + "type": "providers/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[variables('acrPullRoleAssignmentName')]", + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('acrPullRoleDefinitionName'))]", + "principalId": "[reference(variables('aksClusterId'), '2020-12-01', 'Full').properties.identityProfile.kubeletidentity.objectId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "metrics": [ + { + "timeGrain": "PT1M", + "category": "AllMetrics", + "enabled": true + } + ], + "logs": [ + { + "category": "ContainerRegistryRepositoryEvents", + "enabled": true + }, + { + "category": "ContainerRegistryLoginEvents", + "enabled": true + } + ] + } + } + ] + }, + { + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2020-12-01", + "name": "[concat('aks-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[variables('aksClusterUserDefinedManagedIdentityId')]": {} + } + }, + "tags": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup", + "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/AcrPrivateEndpoint/registryPrivateDnsZoneGroup", + "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]", + "Microsoft.Authorization/roleAssignments/[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('aksClusterName')))]" + ], + "properties": { + "kubernetesVersion": "1.20.5", + "dnsPrefix": "[parameters('aksClusterName')]", + "sku": { + "name": "Basic", + "tier": "Paid" + }, + "agentPoolProfiles": [ + { + "name": "[tolower(parameters('systemNodePoolName'))]", + "count": 3, + "vmSize": "Standard_D16s_v3", + "osDiskSizeGB": 100, + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSubnet", + "maxPods": 30, + "osType": "Linux", + "maxCount": 5, + "minCount": 3, + "scaleSetPriority": "Regular", + "scaleSetEvictionPolicy": "Delete", + "enableAutoScaling": true, + "mode": "System", + "type": "VirtualMachineScaleSets", + "availabilityZones": [], + "nodeLabels": {}, + "nodeTaints": [] + }, + { + "name": "[tolower(parameters('userNodePoolName'))]", + "count": 3, + "vmSize": "Standard_D16s_v3", + "osDiskSizeGB": 100, + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSubnet", + "maxPods": 30, + "osType": "Linux", + "maxCount": 5, + "minCount": 3, + "scaleSetPriority": "Regular", + "scaleSetEvictionPolicy": "Delete", + "enableAutoScaling": true, + "mode": "User", + "type": "VirtualMachineScaleSets", + "availabilityZones": [], + "nodeLabels": {}, + "nodeTaints": [] + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "addonProfiles": { + "httpApplicationRouting": { + "enabled": false + }, + "omsagent": { + "enabled": true, + "config": { + "logAnalyticsWorkspaceResourceID": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + } + }, + "aciConnectorLinux": { + "enabled": false + }, + "azurepolicy": { + "enabled": true, + "config": { + "version": "v2" + } + }, + "kubeDashboard": { + "enabled": false + }, + "ingressApplicationGateway": { + "config": { + "applicationGatewayId": "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]" + }, + "enabled": true, + "identity": { + "clientId": "[reference(variables('applicationGatewayUserDefinedManagedIdentityId')).clientId]", + "objectId": "[reference(variables('applicationGatewayUserDefinedManagedIdentityId')).principalId]", + "resourceId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('appgw-', uniqueString(resourceGroup().id))]ManagedIdentity" + } + } + }, + "podIdentityProfile": { + "enabled": false + }, + "enableRBAC": true, + "networkProfile": { + "networkPlugin": "azure", + "networkPolicy": "azure", + "podCidr": "10.244.0.0/16", + "serviceCidr": "10.3.0.0/16", + "dnsServiceIP": "10.3.0.10", + "dockerBridgeCidr": "172.17.0.1/16", + "outboundType": "loadBalancer", + "loadBalancerSku": "standard", + "loadBalancerProfile": "[json('null')]" + }, + "aadProfile": "[if(parameters('aadEnabled'), variables('aadProfileConfiguration'), json('null'))]", + "autoScalerProfile": { + "scan-interval": "10s", + "scale-down-delay-after-add": "10m", + "scale-down-delay-after-delete": "20s", + "scale-down-delay-after-failure": "3m", + "scale-down-unneeded-time": "10m", + "scale-down-unready-time": "20m", + "scale-down-utilization-threshold": "0.5", + "max-graceful-termination-sec": "600" + }, + "apiServerAccessProfile": { + "enablePrivateCluster": false + } + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "kube-apiserver", + "enabled": true + }, + { + "category": "kube-audit", + "enabled": true + }, + { + "category": "kube-audit-admin", + "enabled": true + }, + { + "category": "kube-controller-manager", + "enabled": true + }, + { + "category": "kube-scheduler", + "enabled": true + }, + { + "category": "cluster-autoscaler", + "enabled": true + }, + { + "category": "guard", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + } + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + }, + "retentionInDays": 60 + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "name": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "location": "[resourceGroup().location]", + "dependsOn": [ + "microsoft.operationalinsights/workspaces/GEN-UNIQUE" + ], + "plan": { + "name": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "promotionCode": "", + "product": "OMSGallery/ContainerInsights", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "microsoft.operationalinsights/workspaces/GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('blobPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('virtualNetworkId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('keyVaultPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('acrPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "blobPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobStorageAccountPrivateEndpointId')]", + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "KeyVaultPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "KeyVaultPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "groupIds": [ + "vault" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "vaultPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]" + } + } + ] + } + } + ] + }, + { + "condition": false, + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "AcrPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "AcrPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "groupIds": [ + "registry" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "condition": false, + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "registryPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "Microsoft.Network/privateEndpoints/AcrPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]" + } + } + ] + } + } + ] + }, + { + "type": "microsoft.insights/activityLogAlerts", + "apiVersion": "2017-04-01", + "name": "AllAzureAdvisorAlert", + "location": "Global", + "properties": { + "scopes": [ + "[resourceGroup().id]" + ], + "condition": { + "allOf": [ + { + "field": "category", + "equals": "Recommendation" + }, + { + "field": "operationName", + "equals": "Microsoft.Advisor/recommendations/available/action" + } + ] + }, + "enabled": true, + "description": "All azure advisor alerts" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('applicationGatewayPublicIPAddressName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies", + "apiVersion": "2020-06-01", + "name": "[concat(parameters('applicationGatewayName'), 'WafPolicy')]", + "location": "[resourceGroup().location]", + "properties": { + "customRules": [ + { + "name": "BlockMe", + "priority": 1, + "ruleType": "MatchRule", + "action": "Block", + "matchConditions": [ + { + "matchVariables": [ + { + "variableName": "QueryString" + } + ], + "operator": "Contains", + "negationConditon": false, + "matchValues": [ + "blockme" + ] + } + ] + }, + { + "name": "BlockEvilBot", + "priority": 2, + "ruleType": "MatchRule", + "action": "Block", + "matchConditions": [ + { + "matchVariables": [ + { + "variableName": "RequestHeaders", + "selector": "User-Agent" + } + ], + "operator": "Contains", + "negationConditon": false, + "matchValues": [ + "evilbot" + ], + "transforms": [ + "Lowercase" + ] + } + ] + } + ], + "policySettings": { + "requestBodyCheck": true, + "maxRequestBodySizeInKb": 128, + "fileUploadLimitInMb": 100, + "mode": "Prevention", + "state": "Enabled" + }, + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "OWASP", + "ruleSetVersion": "3.1" + } + ] + } + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2020-05-01", + "name": "[concat('appgw-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.Network/publicIPAddresses/[concat('appgw-', uniqueString(resourceGroup().id))]PublicIp", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/[concat(parameters('applicationGatewayName'), 'WafPolicy')]" + ], + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[variables('applicationGatewayUserDefinedManagedIdentityId')]": {} + } + }, + "zones": [], + "properties": { + "sku": { + "name": "WAF_v2", + "tier": "WAF_v2" + }, + "gatewayIPConfigurations": [ + { + "name": "applicationGatewayIPConfiguration", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AppGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "applicationGatewayFrontendIPConfiguration", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat('appgw-', uniqueString(resourceGroup().id))]PublicIp" + } + } + } + ], + "frontendPorts": [ + { + "name": "applicationGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "autoscaleConfiguration": { + "minCapacity": 0, + "maxCapacity": 10 + }, + "enableHttp2": false, + "probes": [ + { + "name": "defaultHttpProbe", + "properties": { + "protocol": "Http", + "path": "/", + "interval": 30, + "timeout": 30, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": true, + "minServers": 0 + } + }, + { + "name": "defaultHttpsProbe", + "properties": { + "protocol": "Https", + "path": "/", + "interval": 30, + "timeout": 30, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": true, + "minServers": 0 + } + } + ], + "backendAddressPools": [ + { + "name": "applicationGatewayBackendPool" + } + ], + "backendHttpSettingsCollection": [ + { + "name": "applicationGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "applicationGatewayHttpListener", + "properties": { + "firewallPolicy": { + "id": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/[concat(parameters('applicationGatewayName'), 'WafPolicy')]" + }, + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayFrontendIPConfiguration" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "default", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayBackendHttpSettings" + } + } + } + ], + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Prevention", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.1", + "requestBodyCheck": true, + "maxRequestBodySizeInKb": 128, + "fileUploadLimitInMb": 100 + }, + "firewallPolicy": { + "id": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/[concat(parameters('applicationGatewayName'), 'WafPolicy')]" + } + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "dependsOn": [ + "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "ApplicationGatewayAccessLog", + "enabled": true + }, + { + "category": "ApplicationGatewayPerformanceLog", + "enabled": true + }, + { + "category": "ApplicationGatewayFirewallLog", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + } + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(concat(resourceGroup().id, variables('applicationGatewayUserDefinedManagedIdentityName'), parameters('applicationGatewayName')))]", + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinitionName'))]", + "principalId": "[reference(variables('aksClusterId'), '2020-12-01', 'Full').properties.addonProfiles.ingressApplicationGateway.identity.objectId]", + "principalType": "ServicePrincipal", + "scope": "[resourceGroup().id]" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1479 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1479 new file mode 100644 index 0000000..57340b6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1479 @@ -0,0 +1,781 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-2vms-iis-ssl/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-2vms-iis-ssl/azuredeploy.parameters.json" + ], + "timestamp": 1642962908239, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-2vms-iis-ssl/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-2vms-iis-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1479", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/applicationgateways", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1479", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2012-R2-Datacenter", + "2016-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2012-R2-Datacenter, 2016-Datacenter." + } + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The virtual machine size. Allowed values: Standard_A1, Standard_A2, Standard_A3." + } + }, + "applicationGatewaySize": { + "type": "string", + "allowedValues": [ + "WAF_Medium", + "WAF_Large" + ], + "defaultValue": "WAF_Medium", + "metadata": { + "description": "Application Gateway size" + } + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + } + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Prevention", + "metadata": { + "description": "WAF Mode" + } + }, + "frontendCertData": { + "type": "string", + "metadata": { + "description": "Base-64 encoded form of the .pfx file. This is the cert terminating on the Application Gateway." + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "frontendCertPassword": { + "type": "securestring", + "metadata": { + "description": "Password for .pfx certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "backendCertData": { + "type": "string", + "metadata": { + "description": "Base-64 encoded form of the .pfx file. This is the cert installed on the web servers." + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "backendCertPassword": { + "type": "securestring", + "metadata": { + "description": "Password for .pfx certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "backendPublicKeyData": { + "type": "string", + "metadata": { + "description": "Base-64 encoded form of the .cer file. This is the public key for the cert on the web servers." + }, + "value": "GEN-SELFSIGNED-CERT-CERDATA" + }, + "backendCertDnsName": { + "type": "string", + "metadata": { + "description": "DNS name of the backend cert" + }, + "value": "GEN-SELFSIGNED-CERT-DNSNAME" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-vmss-windows-webapp-dsc-autoscale." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "vm1NicName": "vm1Nic", + "vm2NicName": "vm2Nic", + "addressPrefix": "10.0.0.0/16", + "webSubnetName": "WebSubnet", + "webSubnetPrefix": "10.0.0.0/24", + "appGatewaySubnetName": "AppGatewaySubnet", + "appGatewaySubnetPrefix": "10.0.1.0/24", + "vm1PublicIPAddressName": "vm1PublicIP", + "vm1PublicIPAddressType": "Dynamic", + "vm2PublicIPAddressName": "vm2PublicIP", + "vm2PublicIPAddressType": "Dynamic", + "vm1IpAddress": "10.0.0.4", + "vm2IpAddress": "10.0.0.5", + "vm1Name": "iisvm1", + "vm2Name": "iisvm2", + "vmSize": "Standard_D2_v3", + "virtualNetworkName": "MyVNet", + "webSubnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNet/WebSubnet", + "webAvailabilitySetName": "IISAvailabilitySet", + "webNsgName": "WebNSG", + "appGwNsgName": "AppGwNSG", + "applicationGatewayName": "ApplicationGateway", + "appGwPublicIpName": "ApplicationGatewayPublicIp", + "appGatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNet/AppGatewaySubnet", + "appGwPublicIPRef": "Microsoft.Network/publicIPAddresses/ApplicationGatewayPublicIp", + "wafEnabled": true, + "wafMode": "Prevention", + "wafRuleSetType": "OWASP", + "wafRuleSetVersion": "3.0", + "dscZipFullPath": "[uri(parameters('_artifactsLocation'), concat('DSC/iisInstall.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "webConfigFullPath": "[uri(parameters('_artifactsLocation'), concat('artifacts/web.config', parameters('_artifactsLocationSasToken')))]", + "vm1DefaultHtmFullPath": "[uri(parameters('_artifactsLocation'), concat('artifacts/vm1.default.htm', parameters('_artifactsLocationSasToken')))]", + "vm2DefaultHtmFullPath": "[uri(parameters('_artifactsLocation'), concat('artifacts/vm2.default.htm', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "comments": "Availability set for the web servers", + "type": "Microsoft.Compute/availabilitySets", + "sku": { + "name": "Aligned" + }, + "name": "IISAvailabilitySet", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "platformUpdateDomainCount": 5, + "platformFaultDomainCount": 2, + "virtualMachines": [ + { + "id": "Microsoft.Compute/virtualMachines/iisvm1" + }, + { + "id": "Microsoft.Compute/virtualMachines/iisvm2" + } + ] + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/iisvm1", + "Microsoft.Compute/virtualMachines/iisvm2" + ] + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "vm1PublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "vm2PublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2017-03-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "ApplicationGatewayPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "WebNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow80", + "properties": { + "description": "Allow 80 from local VNet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Allow443", + "properties": { + "description": "Allow 443 from local VNet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "AllowRDP", + "properties": { + "description": "Allow RDP from everywhere", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "AppGwNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow80", + "properties": { + "description": "Allow 80 from Internet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Allow443", + "properties": { + "description": "Allow 443 from Internet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "AllowAppGwProbes", + "properties": { + "description": "Allow ports for App Gw probes", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "65503-65534 ", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//WebNSG", + "Microsoft.Network/networkSecurityGroups//AppGwNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "WebSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/WebNSG" + } + } + }, + { + "name": "AppGatewaySubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/AppGwNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "vm1Nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//vm1PublicIP", + "Microsoft.Network/virtualNetworks//MyVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigVm1", + "properties": { + "privateIPAddress": "10.0.0.4", + "privateIPAllocationMethod": "Static", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vm1PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNet/WebSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "vm2Nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//vm2PublicIP", + "Microsoft.Network/virtualNetworks//MyVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigVm2", + "properties": { + "privateIPAddress": "10.0.0.5", + "privateIPAllocationMethod": "Static", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vm2PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNet/WebSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "iisvm1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//vm1Nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "iisvm1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "iisvm1", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vm1Nic" + } + ] + } + }, + "resources": [ + { + "name": "Microsoft.Powershell.DSC", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2016-04-30-preview", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/iisvm1" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "configuration": { + "url": "[uri(parameters('_artifactsLocation'), concat('DSC/iisInstall.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "script": "iisInstall.ps1", + "function": "InstallIIS" + }, + "configurationArguments": { + "nodeName": "iisvm1", + "vmNumber": "vm1", + "backendCert": "GEN-SELFSIGNED-CERT-PFXDATA", + "backendCertPw": "GEN-SELFSIGNED-CERT-PASSWORD", + "backendCertDnsName": "GEN-SELFSIGNED-CERT-DNSNAME", + "webConfigPath": "[uri(parameters('_artifactsLocation'), concat('artifacts/web.config', parameters('_artifactsLocationSasToken')))]", + "defaultHtmPath": "[uri(parameters('_artifactsLocation'), concat('artifacts/vm1.default.htm', parameters('_artifactsLocationSasToken')))]" + } + } + } + } + ] + }, + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "iisvm2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//vm2Nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "iisvm2", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "iisvm2", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vm2Nic" + } + ] + } + }, + "resources": [ + { + "name": "Microsoft.Powershell.DSC", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2016-04-30-preview", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/iisvm2" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "configuration": { + "url": "[uri(parameters('_artifactsLocation'), concat('DSC/iisInstall.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "script": "iisInstall.ps1", + "function": "InstallIIS" + }, + "configurationArguments": { + "nodeName": "iisvm2", + "vmNumber": "vm2", + "backendCert": "GEN-SELFSIGNED-CERT-PFXDATA", + "backendCertPw": "GEN-SELFSIGNED-CERT-PASSWORD", + "backendCertDnsName": "GEN-SELFSIGNED-CERT-DNSNAME", + "webConfigPath": "[uri(parameters('_artifactsLocation'), concat('artifacts/web.config', parameters('_artifactsLocationSasToken')))]", + "defaultHtmPath": "[uri(parameters('_artifactsLocation'), concat('artifacts/vm2.default.htm', parameters('_artifactsLocationSasToken')))]" + } + } + } + } + ] + }, + { + "apiVersion": "2017-06-01", + "name": "ApplicationGateway", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//MyVNet", + "Microsoft.Network/publicIPAddresses//ApplicationGatewayPublicIp" + ], + "properties": { + "sku": { + "name": "WAF_Medium", + "tier": "WAF", + "capacity": 2 + }, + "sslCertificates": [ + { + "name": "appGatewayFrontEndSslCert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNet/AppGatewaySubnet" + } + } + } + ], + "authenticationCertificates": [ + { + "properties": { + "data": "GEN-SELFSIGNED-CERT-CERDATA" + }, + "name": "appGatewayBackendCert" + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ApplicationGatewayPublicIp" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort80", + "properties": { + "Port": 80 + } + }, + { + "name": "appGatewayFrontendPort443", + "properties": { + "Port": 443 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.0.4" + }, + { + "IpAddress": "10.0.0.5" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + }, + { + "name": "appGatewayBackendHttpsSettings", + "properties": { + "Port": 443, + "Protocol": "Https", + "CookieBasedAffinity": "Disabled", + "AuthenticationCertificates": [ + { + "Id": "Microsoft.Network/applicationGateways/authenticationCertificates/ApplicationGateway/appGatewayBackendCert" + } + ] + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/ApplicationGateway/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/ApplicationGateway/appGatewayFrontendPort80" + }, + "Protocol": "Http" + } + }, + { + "name": "appGatewayHttpsListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/ApplicationGateway/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/ApplicationGateway/appGatewayFrontendPort443" + }, + "Protocol": "Https", + "SslCertificate": { + "Id": "Microsoft.Network/applicationGateways/sslCertificates/ApplicationGateway/appGatewayFrontEndSslCert" + } + } + } + ], + "requestRoutingRules": [ + { + "Name": "HTTPRule", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/ApplicationGateway/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/ApplicationGateway/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/ApplicationGateway/appGatewayBackendHttpSettings" + } + } + }, + { + "Name": "HTTPSRule", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/ApplicationGateway/appGatewayHttpsListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/ApplicationGateway/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/ApplicationGateway/appGatewayBackendHttpsSettings" + } + } + } + ], + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Prevention", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.0" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT148 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT148 new file mode 100644 index 0000000..7dbe5dc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT148 @@ -0,0 +1,310 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/elk/docker-kibana-elasticsearch/azuredeploy.json", + "/application-workloads/elk/docker-kibana-elasticsearch/azuredeploy.parameters.json" + ], + "timestamp": 1642962888603, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/elk/docker-kibana-elasticsearch/azuredeploy.json", + "/application-workloads/elk/docker-kibana-elasticsearch/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT148", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT148", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-13" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04-LTS", + "OSDiskName": "osdiskfordockersimple", + "nsgName": "myNSG", + "nicName": "myVMNic", + "extensionName": "DockerExtension", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmStorageAccountContainerName": "vhds", + "vmName": "MyDockerVM", + "vmSize": "Standard_D2_v3", + "virtualNetworkName": "MyVNET", + "nsgID": "Microsoft.Network/networkSecurityGroups/myNSG", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/myNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "myNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "http", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "5601", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyDockerVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE", + "Microsoft.Network/networkInterfaces/myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MyDockerVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyDockerVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyDockerVM/DockerExtension", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/MyDockerVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "compose": { + "elasticsearch": { + "image": "elasticsearch", + "ports": [ + "9200:9200" + ] + }, + "kibana": { + "image": "kibana", + "ports": [ + "5601:5601" + ], + "links": [ + "elasticsearch:elasticsearch" + ] + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1480 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1480 new file mode 100644 index 0000000..931b1ed --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1480 @@ -0,0 +1,299 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962908257, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1480", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1480", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Virtual Network name" + }, + "value": "GEN-UNIQUE" + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual Network address range" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet1", + "metadata": { + "description": "Subnet Name" + }, + "value": "GEN-UNIQUE" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "applicationGatewayName": { + "type": "string", + "defaultValue": "applicationGateway1", + "metadata": { + "description": "Application Gateway name" + }, + "value": "GEN-UNIQUE" + }, + "applicationGatewaySize": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Small", + "metadata": { + "description": "Application Gateway size" + }, + "value": "Standard_Small" + }, + "applicationGatewayInstanceCount": { + "type": "int", + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "defaultValue": 2, + "metadata": { + "description": "Application Gateway instance count" + }, + "value": 1 + }, + "frontendPort": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Application Gateway front end port" + }, + "value": 80 + }, + "backendPort": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Application Gateway back end port" + }, + "value": 80 + }, + "backendIPAddresses": { + "type": "array", + "defaultValue": [ + { + "IpAddress": "10.0.0.4" + }, + { + "IpAddress": "10.0.0.5" + } + ], + "metadata": { + "description": "Backend pool ip addresses" + }, + "value": [ + { + "IpAddress": "10.0.0.7" + }, + { + "IpAddress": "10.0.0.8" + }, + { + "IpAddress": "10.0.0.9" + } + ] + }, + "cookieBasedAffinity": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Disabled", + "metadata": { + "description": "Cookie based affinity" + }, + "value": "Disabled" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE" + ], + "properties": { + "sku": { + "name": "Standard_Small", + "tier": "Standard", + "capacity": 1 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GEN-UNIQUE" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GEN-UNIQUE" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.0.7" + }, + { + "IpAddress": "10.0.0.8" + }, + { + "IpAddress": "10.0.0.9" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIpConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/GEN-UNIQUE/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/GEN-UNIQUE/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/GEN-UNIQUE/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/GEN-UNIQUE/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/GEN-UNIQUE/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1481 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1481 new file mode 100644 index 0000000..4480d39 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1481 @@ -0,0 +1,328 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-key-vault-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962908271, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-key-vault-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1481", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.keyvault/vaults/secrets", + "microsoft.network/applicationgateways", + "microsoft.keyvault/vaults", + "microsoft.managedidentity/userassignedidentities" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1481", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "skuName": { + "type": "string", + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + }, + "value": "Standard_v2" + }, + "backendIpAddress1": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 1" + }, + "value": "10.0.0.10" + }, + "backendIpAddress2": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 2" + }, + "value": "10.0.0.11" + }, + "Secrets": { + "type": "array", + "metadata": { + "description": "An array of json objects like this : {'name':name, 'value':value}" + }, + "value": [ + { + "name": "sslcert", + "value": "MIIRVQIBAzCCERsGCSqGSIb3DQEHAaCCEQwEghEIMIIRBDCCB2sGCSqGSIb3DQEHAaCCB1wEggdYMIIHVDCCB1AGCyqGSIb3DQEMCgEDoIIHIjCCBx4GCiqGSIb3DQEJFgGgggcOBIIHCjCCBwYwggTuoAMCAQICCQChEXZZY/PUSzANBgkqhkiG9w0BAQsFADCCAQYxJjAkBgNVBAMUHSouZWFzdGFzaWEuY2xvdWRhcHAuYXp1cmUuY29tMQswCQYDVQQGEwJYWDERMA8GA1UEBxMIRnVuIExhbmQxKDAmBgNVBAoTH015Q28gTExDIExURCBJTkMgKGQuYi5hLiBPdXJDbykxEjAQBgNVBAsTCVNTTCBEZXB0LjELMAkGA1UECBMCWVkxJDAiBgkqhkiG9w0BCQEWFXNzbC1hZG1pbkBleGFtcGxlLmNvbTERMA8GA1UEKRMISm9obiBEb2UxDDAKBgNVBAQTA0RvZTENMAsGA1UEKhMESm9objEMMAoGA1UEKxMDSlhEMQ0wCwYDVQQuEwRzb21lMB4XDTE3MDYyMTAwMjQ0OVoXDTE4MDYyMTAwMjQ0OVowggEGMSYwJAYDVQQDFB0qLmVhc3Rhc2lhLmNsb3VkYXBwLmF6dXJlLmNvbTELMAkGA1UEBhMCWFgxETAPBgNVBAcTCEZ1biBMYW5kMSgwJgYDVQQKEx9NeUNvIExMQyBMVEQgSU5DIChkLmIuYS4gT3VyQ28pMRIwEAYDVQQLEwlTU0wgRGVwdC4xCzAJBgNVBAgTAllZMSQwIgYJKoZIhvcNAQkBFhVzc2wtYWRtaW5AZXhhbXBsZS5jb20xETAPBgNVBCkTCEpvaG4gRG9lMQwwCgYDVQQEEwNEb2UxDTALBgNVBCoTBEpvaG4xDDAKBgNVBCsTA0pYRDENMAsGA1UELhMEc29tZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOAqs0EnltLy3CRS2jwAUcv+2mos72bYWgx1j5jpmBAtprBwJ9zZPN7oeYKPPygUU565Cm14pue4WrVS3UJQYq2BX5IBeIyDksFFOsbWCbkGhBLyXaDFaTAQmOVqG+9zHL+PQzp9auxwmqZH/WseLN7fTbm4xY3RkUFUrSdCEVRKpOT0t2CToXHNLFv2HwAsaf4Scw+jmvpi4unJ1TG3CDsIvKjZezGLHWgTH7HM9ibs6z6tqMeuqAMTTBUnYFH+e31o5JaNerm7tOdIRUCxjvzhjxocYYvLhwZWLw3m1kuhvFhyldDIKaSOagpHP8PeHi0jqBaxGIfv0gxLBiGvI5y+VSFffo4ZJcnKyJLsQ5lt/1GxLJP6eGANmA0jB6FagjO5qxQPrDjime9ZpVyotnldKLjQB6sOL2HdPIvOp3dMTZ5r+q7kDSggpYOb3eB1JvWsWZR5SKkRVxps3p/eYaHDuO2xeQ9F/VhEIYtUjp2LXiAopF7mofNk2yHopEPRScpgchPH/0kScMsTY5yuE/BaiRIFwp8YR++54f6EzTO7zSu1zdBbX8hjGpVkgzR53DcaO0aqZ2+dZgkXTmI4zRkeL31yeu/PtV+sCztvrBkMsgmgAaXZG79WPuvV4Wfx3eWXSJPchA1NC9Y2D9NXeimhF3Tgno2YL0WY1ix1vjr1AgMBAAGjczBxMBMGA1UdJQQMMAoGCCsGAQUFBwMBMFoGA1UdEQRTMFGCDWV4YW1wbGUxMS5jb22CDWV4YW1wbGUyMi5jb22CMTNmYTUyMDcxLTRiNzctNDBlZC05ODJkLTM2ZWY4ODQxZWM2MC5jbG91ZGFwcC5uZXQwDQYJKoZIhvcNAQELBQADggIBAHYS7e9jKUU71YfNmMJG/wOw5XC2aG5cjNTq48jkcUf39NgpKMmrfVQ39XO/5mXIPBwbI8CKsQuavNRWtjr+EWuEfxLlBAbj5/hdWpKU3BjXsU8KFiZhrAbU7f0yhfT513NjU7zU6awvZNOuBd2LNpBtY3LpXdlXd/5nclDoVSLQ1itPGZ9NQXibr4Z1l9QVHp+SDWTCiQSQ/7gqMwxBCzpJ5r17CDuTwDhEb6SOV4/08zTuJQzMJRilWrCU0iY6YNADLvsDYrIulDiaeyfLNUerht4BEwEEevdN3qFGXKm9V122h2hn+taQZdwbwJjQ3rFj74B6HeVKR4rev7ucauT1dGjmOP3nTCqxfpJtrYdyMPtav1tDzd6f+LSaPCJ3FinAjZxvWELhUaXMMNOQH3gQuog5zaXnvs5U7p3+homk3UxjICjLactvWjNATnJbzww2b11xMCAAVtUwDAfM7xqu9pe46isEX9mZwXzI0DdpX77bISlEr0f9TiS1BpN8SuoPxbbJSK152z40TCdJci0jpkykrsF7AjUpWGy/YecFu4+K7S3rT4s1N+VgYclFr2BINwDfbuHZ6a16O9nDsDVGK4v8hEn7pk+1dvWzt4ApsLOC99i2AETRGWS4WiyGixdDyeo/BTGnS175nNZc6Q1nT1yc9PxeN1CMJflb725bMRswGQYJKoZIhvcNAQkVMQwECgAAAAAAAAAAAA4wggmRBgkqhkiG9w0BBwGgggmCBIIJfjCCCXowggl2BgsqhkiG9w0BDAoBAaCCCUgwgglEAgEAMA0GCSqGSIb3DQEBAQUABIIJLjCCCSoCAQACggIBAOAqs0EnltLy3CRS2jwAUcv+2mos72bYWgx1j5jpmBAtprBwJ9zZPN7oeYKPPygUU565Cm14pue4WrVS3UJQYq2BX5IBeIyDksFFOsbWCbkGhBLyXaDFaTAQmOVqG+9zHL+PQzp9auxwmqZH/WseLN7fTbm4xY3RkUFUrSdCEVRKpOT0t2CToXHNLFv2HwAsaf4Scw+jmvpi4unJ1TG3CDsIvKjZezGLHWgTH7HM9ibs6z6tqMeuqAMTTBUnYFH+e31o5JaNerm7tOdIRUCxjvzhjxocYYvLhwZWLw3m1kuhvFhyldDIKaSOagpHP8PeHi0jqBaxGIfv0gxLBiGvI5y+VSFffo4ZJcnKyJLsQ5lt/1GxLJP6eGANmA0jB6FagjO5qxQPrDjime9ZpVyotnldKLjQB6sOL2HdPIvOp3dMTZ5r+q7kDSggpYOb3eB1JvWsWZR5SKkRVxps3p/eYaHDuO2xeQ9F/VhEIYtUjp2LXiAopF7mofNk2yHopEPRScpgchPH/0kScMsTY5yuE/BaiRIFwp8YR++54f6EzTO7zSu1zdBbX8hjGpVkgzR53DcaO0aqZ2+dZgkXTmI4zRkeL31yeu/PtV+sCztvrBkMsgmgAaXZG79WPuvV4Wfx3eWXSJPchA1NC9Y2D9NXeimhF3Tgno2YL0WY1ix1vjr1AgMBAAECggIBAAnRFOSHjU1ToVxd3HzALtTWJk58BUfltZvSEiXKJQSgWypi3vwG72l7mMak60kgCsFqrRA6NmTzZ9WE+XeL+aZLghnswpC0ulqIY5iNiwN1S5dg0cTWoFKgh3GUggCsc9fXuEP5dhNAoyUhBfII8kIYWVkGxG//e3L2+FY9yHB+jFYSeW1bSbioGYc1cgoZ59JekHdg3MqWRgWi9xkkQNIFAe4LCCAVTYZfQAYTSbxOp8ao6DlGZskrsStD/C3bDSFi1I/bRkKX+8YdHhtFK1PbtN6Z25O5qAIZCBp9v2i0foEJE5J/EYPJUM9+a0ZylbO4WgYUX1Skpfgv2ObkupRvo18dJdV0yToSN7U5R8sL21SBWkbK6/vs9o0UyX1K/2FDVMCWDzjsTJI0LNW0hSgfJLclzNUMxnpJvvVk2pTF5j7AHbS+sBS9BTKOz6go0GhNe57VxVhmuigIGx4isV6qP7mEGa9jDSwE2F49022KRRAwlDfzwFeSVAVGud4CH1jY8b04Pr8PdjYeuu80keH75kTupuyxVzjSsXenDIiJ+ABTEJpdT0NQJ9a2C57eZMbhluZIiEcOmBicE4AKxEen+gJ/vE2b3aEhL2o96G+IcQ93rdXpK1WAyMjRYPL9Xh4C2aMqQHvxfEua+48YuncdH2c73eYRikekTKVHXPgJAoIBAQD/LUpaPsjBtFkc0RUFPgbZ6z9uHtX5wcZThhX5u6VihLTHRCfY68Xi2G6u9S++0Y3yWczKRC7ay0UmA3etl/B72wMegToIhLf8Qedgz+7OS7TPVejzQxDT8linCfvf3hbg4Wn9ciJktJ0WUiTLvuC/vAcnfxqh4VjtMbw+ijQX/ln04pR0VgY0ALvb2SVYS1MfG4aTHLs5+7/beDMnxtNeBgvpjqLFHMEZeetM6x3bJboRgk1vrviiRyjPCG6Bg1GLyL3v/dnws/zhW1CDTzdsrca6ZXp13soDXGZyZw+rNIJhO/tRvvoXNcLPhHmOS0cLRAAwFRB+QB4mpk8bH0VDAoIBAQDg482ykRDtPGE1Y9QolMvgCsMrytSNZj8EPas5H45jrp7+tcga8Fm1lnbJ0KeHsuk/6xUvsFIiTpwSRdJROukReMrnCKH0+FgjgLoFsc3uKi8IjNRAm/fasK+7M+IX4+8t6Y21hoZqEJ50mW15f7GVWLxFFBfZsBKluXz3x+7mTuuqqSwERwa7AGuK780wOSIoURr5tRzA3qLxTCZMxjCwgYXsoeH0T3XyHDdkodGUOBHI4Dt3Ja400YXRzsWqajXMaQZbK3AgAovAHPgvYTZ2wQN//Fy2y524XgHlMYahi6aPGcvAf6k+vBxihAeE5WZHdqhPvqglJGOxUF7enN9nAoIBAQC9OwDgW57UxsEutX45HP5HrESljQhw5loEpnK1d4n1vSOygcBrBK0CxC2QYRK/FveEuUM828NDTWpB/mBJw1r6/jcZ8ArxNjqaPuUuzgPxyAKVnsfZXeqkwhssBCNcqH2e1oqbAICw3Z+AZfoTfcF9bhqAF6nQUiR4AWHvnt1yzZQ4Ha6pdwGynrixGB6xk2pYrzjk73GIVkC4qDKHVNJ571H2KWhbdC9ejSMJL3I8iYWqZk62e7K15L9GiKIqOQ/H8V2pEz8DWPY2yFi0h5I6bcPphkeCEW0NgQAX5oWgGJh3Mtv0iwM7IwsMiNj7xKcym4LoJTbN6Q5y6vHO0ymxAoIBAQCqy7gULuJpGltFfhzJ+T/hVqslnjTRct7XLLLWfmXYxO0RyyM/elzXcX+kBGjHwZQuLC75+fJXBda4dfimIpSR5WhMEJ1X/CiMRh6BZqlcgQMZfkNREmMp3tiH136V4FFtUByEybdZ5GdDbKbdCKLpJuxNllYKyRNQc9A6KskAdt26ziKU2RB+g3Ipobf3MN0FO5u+G9PLkwqzMb9AvaCK3MPGlKeTsamFB/L15YPTCsZPBiWDdsWYbawxTNWIeIOFTBo8sX/Ff8l9TUMcULtZc3th/1q2pWuScysDUxrJo9MKiW/aMdpqv9ja5SUExGhqS+7GKalwE/P23XA/p2pvAoIBAFPn3JY9nwcv6TsAIy20+YngsxrzbFN4EkAUGA0lpEoPMFu0uTxeDoABuXpcgAEUB6ddUSdBsRhBzp5uqLVkjGp9XfxocwcERMwW1If+AAn7Tj/MVLZRnWse3TOOQDQ7vYnzynd7W+xRHsgzdo1KBnBs0E78+rlda1Nu8uYRm8JF86jE8Zt7GSSLIL5ShmiDkt1yb2fb8cAhk26G0YZj1uLxnEgcdxx1vGnt8CoPLVPXPVve5hH4zmDva528/G82HFQcqBYS+x/koASmnuizjo/eSIaHaQ4b6VQT/KNd1GkqSlPpO5B6fjPU7fQxmyFe+JKxZB+Y2FYOL3VAK5u5imUxGzAZBgkqhkiG9w0BCRUxDAQKAAAAAAAAAAAADjAxMCEwCQYFKw4DAhoFAAQU6BhefxjNHPzxpw9msnPRnSsWkAEECC0glcdVy371AgIIAA==" + } + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the KeyVault to provision" + } + }, + "identityName": { + "type": "string", + "defaultValue": "[concat('id-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the user assigned identity" + } + }, + "applicationGatewayName": { + "type": "string", + "defaultValue": "[concat('app-gw-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the application gateway" + } + } + }, + "variables": { + "virtualNetworkName": "gw-vnet", + "subnetName": "default", + "publicIpAddressName": "gw-ip", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/gw-vnet/default", + "publicIPRef": "Microsoft.Network/publicIPAddresses/publicIPAddressName", + "identityID": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('id-', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "name": "[concat('id-', uniqueString(resourceGroup().id))]", + "apiVersion": "2018-11-30", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('id-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "sku": { + "name": "standard", + "family": "A" + }, + "tenantId": "[reference(variables('identityID')).tenantId]", + "accessPolicies": [ + { + "tenantId": "[reference(variables('identityID')).tenantId]", + "objectId": "[reference(variables('identityID')).principalId]", + "permissions": { + "secrets": [ + "get" + ] + } + } + ], + "enableSoftDelete": true + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "[concat(parameters('keyVaultName'), '/', parameters('Secrets')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('kv-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "value": "Secrets)[copyIndex(", + "recoveryLevel": "Purgeable" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "publicIPAddressName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "gw-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/applicationGateways", + "name": "[concat('app-gw-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/gw-vnet", + "Microsoft.Network/publicIPAddresses/publicIPAddressName", + "Microsoft.KeyVault/vaults/[concat('kv-', uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[variables('identityID')]": {} + } + }, + "properties": { + "sku": { + "name": "Standard_v2", + "tier": "Standard_v2", + "capacity": 2 + }, + "sslCertificates": [ + { + "name": "appGatewaySslCert", + "properties": { + "keyVaultSecretId": "[concat(reference(parameters('keyVaultName')).vaultUri,'secrets/sslcert')]" + } + } + ], + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/gw-vnet/default" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 443 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.0.10" + }, + { + "IpAddress": "10.0.0.11" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[concat('app-gw-', uniqueString(resourceGroup().id))]/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/[concat('app-gw-', uniqueString(resourceGroup().id))]/appGatewayFrontendPort" + }, + "Protocol": "Https", + "SslCertificate": { + "Id": "Microsoft.Network/applicationGateways/sslCertificates/[concat('app-gw-', uniqueString(resourceGroup().id))]/appGatewaySslCert" + } + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/[concat('app-gw-', uniqueString(resourceGroup().id))]/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/[concat('app-gw-', uniqueString(resourceGroup().id))]/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[concat('app-gw-', uniqueString(resourceGroup().id))]/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1482 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1482 new file mode 100644 index 0000000..4e276a4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1482 @@ -0,0 +1,346 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-multihosting/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-multihosting/azuredeploy.parameters.json" + ], + "timestamp": 1642962908288, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-multihosting/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-multihosting/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1482", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1482", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + }, + "value": "Standard_Small" + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "backendIpAddress1": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 1" + }, + "value": "10.0.1.10" + }, + "backendIpAddress2": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 2" + }, + "value": "10.0.1.11" + }, + "hostName1": { + "type": "string", + "metadata": { + "description": "HostName for listener 1" + }, + "value": "GEN-SELFSIGNED-CERT-DNSNAME" + }, + "hostName2": { + "type": "string", + "metadata": { + "description": "HostName for listener 2" + }, + "value": "GEN-SELFSIGNED-CERT-DNSNAME" + }, + "certData1": { + "type": "securestring", + "metadata": { + "description": "Base-64 encoded form of the .pfx file" + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certPassword1": { + "type": "securestring", + "metadata": { + "description": "Password for .pfx certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "certData2": { + "type": "securestring", + "metadata": { + "description": "Base-64 encoded form of the .pfx file" + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certPassword2": { + "type": "securestring", + "metadata": { + "description": "Password for .pfx certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet", + "publicIPRef": "Microsoft.Network/publicIPAddresses/publicIp1" + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Small", + "tier": "Standard", + "capacity": 2 + }, + "sslCertificates": [ + { + "name": "appGatewaySslCert1", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + }, + { + "name": "appGatewaySslCert2", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort1", + "properties": { + "Port": 443 + } + }, + { + "name": "appGatewayFrontendPort2", + "properties": { + "Port": 444 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool1", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + } + ] + } + }, + { + "name": "appGatewayBackendPool2", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.11" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener1", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort1" + }, + "Protocol": "Https", + "SslCertificate": { + "Id": "Microsoft.Network/applicationGateways/sslCertificates/applicationGateway1/appGatewaySslCert1" + }, + "HostName": "GEN-SELFSIGNED-CERT-DNSNAME", + "RequireServerNameIndication": true + } + }, + { + "name": "appGatewayHttpListener2", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort2" + }, + "Protocol": "Https", + "SslCertificate": { + "Id": "Microsoft.Network/applicationGateways/sslCertificates/applicationGateway1/appGatewaySslCert2" + }, + "HostName": "GEN-SELFSIGNED-CERT-DNSNAME", + "RequireServerNameIndication": true + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "Id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener1" + }, + "backendAddressPool": { + "Id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool1" + }, + "backendHttpSettings": { + "Id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + }, + { + "Name": "rule2", + "properties": { + "RuleType": "Basic", + "httpListener": { + "Id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener2" + }, + "backendAddressPool": { + "Id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool2" + }, + "backendHttpSettings": { + "Id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1483 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1483 new file mode 100644 index 0000000..1a0c079 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1483 @@ -0,0 +1,279 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-path-override/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-path-override/azuredeploy.parameters.json" + ], + "timestamp": 1642962908302, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-path-override/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-path-override/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1483", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1483", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/28" + }, + "applicationGatewaySize": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "application gateway size" + }, + "value": "Standard_Medium" + }, + "capacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "backend1": { + "type": "string", + "metadata": { + "description": "URL of Azure Web App 1" + }, + "value": "backend1" + }, + "backendPath": { + "type": "string", + "metadata": { + "description": "When forwarding a request, the match result of the path defined in UrlPathMap will be appended to the path defined in BackendHttpSettings." + }, + "value": "/path/" + }, + "pathMatch1": { + "type": "string", + "metadata": { + "description": "Path match string for Path Rule 1" + }, + "value": "/images/*" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/28" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Medium", + "tier": "Standard", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "backend1" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "Path": "/path/" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "urlPathMaps": [ + { + "name": "urlPathMap1", + "properties": { + "defaultBackendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "defaultBackendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + }, + "pathRules": [ + { + "name": "pathRule1", + "properties": { + "paths": [ + "/images/*" + ], + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "PathBasedRouting", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "urlPathMap": { + "id": "Microsoft.Network/applicationGateways/urlPathMaps/applicationGateway1/urlPathMap1" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1484 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1484 new file mode 100644 index 0000000..b53a296 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1484 @@ -0,0 +1,338 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-probe/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-probe/azuredeploy.parameters.json" + ], + "timestamp": 1642962908315, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-probe/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-probe/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1484", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1484", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/28" + }, + "applicationGatewaySize": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "application gateway size" + }, + "value": "Standard_Medium" + }, + "capacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "backend1": { + "type": "string", + "metadata": { + "description": "Backend 1" + }, + "value": "backend1" + }, + "probeEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Probe Enabled" + }, + "value": true + }, + "healthyStatusCodes": { + "type": "string", + "metadata": { + "description": "Status codes for which the backend is healthy." + }, + "value": "200-399" + }, + "probeProtocol": { + "type": "string", + "allowedValues": [ + "http", + "https" + ], + "defaultValue": "http", + "metadata": { + "description": "Probe protocol to use." + }, + "value": "http" + }, + "probeHost": { + "type": "string", + "metadata": { + "description": "Host header to send to the backend." + }, + "value": "probehost.contoso.com" + }, + "probePath": { + "type": "string", + "metadata": { + "description": "Path invoked on the backend." + }, + "value": "/" + }, + "probeIntervalInSeconds": { + "type": "int", + "metadata": { + "description": "Interval between probes in seconds." + }, + "value": 30 + }, + "probeTimeoutInSeconds": { + "type": "int", + "metadata": { + "description": "Timeout of a probe request in seconds." + }, + "value": 20 + }, + "probeUnhealthyThreshold": { + "type": "int", + "metadata": { + "description": "Maximum number of probe attempts until a backend is marked unhealthy." + }, + "value": 3 + }, + "probePickHostNameFromBackendHttpSettings": { + "type": "bool", + "metadata": { + "description": "If set to true the host will be taken from the BackendHttpSettings or the backend address if BackendHttpSettings does not specify a custom host header." + }, + "value": false + }, + "probeMinServersAvailable": { + "type": "int", + "metadata": { + "description": "Minimum number of servers that are kept in healthy state regardless of probe results." + }, + "value": 0 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/28" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Medium", + "tier": "Standard", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "backend1" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "ProbeEnabled": true, + "Probe": { + "id": "Microsoft.Network/applicationGateways/probes/applicationGateway1/Probe1" + } + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ], + "probes": [ + { + "Name": "Probe1", + "properties": { + "Protocol": "http", + "Path": "/", + "Host": "probehost.contoso.com", + "Interval": 30, + "Timeout": 20, + "UnhealthyThreshold": 3, + "MinServers": 0, + "Match": { + "StatusCodes": [ + "200-399" + ] + }, + "PickHostNameFromBackendHttpSettings": false + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1485 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1485 new file mode 100644 index 0000000..b346e59 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1485 @@ -0,0 +1,236 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-public-ip/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-public-ip/azuredeploy.parameters.json" + ], + "timestamp": 1642962908328, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-public-ip/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-public-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1485", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1485", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + }, + "value": "Standard_Small" + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "backendIpAddress1": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 1" + }, + "value": "10.0.1.10" + }, + "backendIpAddress2": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 2" + }, + "value": "10.0.1.11" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Small", + "tier": "Standard", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + }, + { + "IpAddress": "10.0.1.11" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1486 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1486 new file mode 100644 index 0000000..05488ac --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1486 @@ -0,0 +1,262 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-public-ip-ssl-offload/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-public-ip-ssl-offload/azuredeploy.parameters.json" + ], + "timestamp": 1642962908340, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-public-ip-ssl-offload/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-public-ip-ssl-offload/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1486", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1486", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + }, + "value": "Standard_Small" + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "backendIpAddress1": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 1" + }, + "value": "10.0.1.10" + }, + "backendIpAddress2": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 2" + }, + "value": "10.0.1.11" + }, + "certData": { + "type": "string", + "metadata": { + "description": "Base-64 encoded form of the .pfx file" + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certPassword": { + "type": "securestring", + "metadata": { + "description": "Password for .pfx certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Small", + "tier": "Standard", + "capacity": 2 + }, + "sslCertificates": [ + { + "name": "appGatewaySslCert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 443 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + }, + { + "IpAddress": "10.0.1.11" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Https", + "SslCertificate": { + "id": "Microsoft.Network/applicationGateways/sslCertificates/applicationGateway1/appGatewaySslCert" + } + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1487 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1487 new file mode 100644 index 0000000..5383e5a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1487 @@ -0,0 +1,396 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-redirect/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-redirect/azuredeploy.parameters.json" + ], + "timestamp": 1642962908353, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-redirect/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-redirect/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1487", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1487", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "virtual network name" + }, + "value": "appGwVnet" + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "virtual network address range" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet1", + "metadata": { + "description": "Subnet Name" + }, + "value": "appGwSubnet" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "applicationGatewayName": { + "type": "string", + "defaultValue": "applicationGateway1", + "metadata": { + "description": "application gateway name" + }, + "value": "basicRedirectGw" + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + }, + "value": "Standard_Medium" + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "application gateway instance count" + }, + "value": 1 + }, + "backendIpAddress1": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 1" + }, + "value": "10.0.1.10" + }, + "backendIpAddress2": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 2" + }, + "value": "10.0.1.10" + }, + "pathMatch1": { + "type": "string", + "metadata": { + "description": "Path match string for Path Rule 1" + }, + "value": "/*" + }, + "certData": { + "type": "string", + "metadata": { + "description": "Base-64 encoded form of the .pfx file" + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certPassword": { + "type": "securestring", + "metadata": { + "description": "Password for .pfx certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "publicIPAddressName": "publicIpbasicRedirectGw" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIpbasicRedirectGw", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "appGwVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGwSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "basicRedirectGw", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//appGwVnet", + "Microsoft.Network/publicIPAddresses//publicIpbasicRedirectGw" + ], + "properties": { + "sku": { + "name": "Standard_Medium", + "tier": "Standard", + "capacity": 1 + }, + "sslCertificates": [ + { + "name": "appGatewaySslCert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/appGwVnet/appGwSubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIpbasicRedirectGw" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendHttpPort1", + "properties": { + "Port": 80 + } + }, + { + "name": "appGatewayFrontendHttpsPort1", + "properties": { + "Port": 443 + } + }, + { + "name": "appGatewayFrontendHttpPort2", + "properties": { + "Port": 8080 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool1", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + } + ] + } + }, + { + "name": "appGatewayBackendPool2", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener1", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/basicRedirectGw/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/basicRedirectGw/appGatewayFrontendHttpPort1" + }, + "Protocol": "Http" + } + }, + { + "name": "appGatewayHttpsListener1", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/basicRedirectGw/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/basicRedirectGw/appGatewayFrontendHttpsPort1" + }, + "Protocol": "Https", + "SslCertificate": { + "id": "Microsoft.Network/applicationGateways/sslCertificates/basicRedirectGw/appGatewaySslCert" + } + } + }, + { + "name": "appGatewayHttpListener2", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/basicRedirectGw/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/basicRedirectGw/appGatewayFrontendHttpPort2" + }, + "Protocol": "Http" + } + } + ], + "redirectConfigurations": [ + { + "Name": "redirectConfig1", + "properties": { + "redirectType": "Temporary", + "targetListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/basicRedirectGw/appGatewayHttpsListener1" + } + } + }, + { + "Name": "redirectConfig2", + "properties": { + "redirectType": "Temporary", + "targetUrl": "http://www.bing.com" + } + } + ], + "urlPathMaps": [ + { + "name": "urlPathMap1", + "properties": { + "defaultRedirectConfiguration": { + "id": "Microsoft.Network/applicationGateways/redirectConfigurations/basicRedirectGw/redirectConfig2" + }, + "pathRules": [ + { + "name": "pathRule1", + "properties": { + "paths": [ + "/*" + ], + "redirectConfiguration": { + "id": "Microsoft.Network/applicationGateways/redirectConfigurations/basicRedirectGw/redirectConfig1" + } + } + } + ] + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/basicRedirectGw/appGatewayHttpListener1" + }, + "redirectConfiguration": { + "id": "Microsoft.Network/applicationGateways/redirectConfigurations/basicRedirectGw/redirectConfig1" + } + } + }, + { + "Name": "rule2", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners//basicRedirectGw/appGatewayHttpsListener1" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools//basicRedirectGw/appGatewayBackendPool1" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection//basicRedirectGw/appGatewayBackendHttpSettings" + } + } + }, + { + "Name": "rule3", + "properties": { + "RuleType": "PathBasedRouting", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners//basicRedirectGw/appGatewayHttpListener2" + }, + "urlPathMap": { + "id": "Microsoft.Network/applicationGateways/urlPathMaps//basicRedirectGw/urlPathMap1" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1488 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1488 new file mode 100644 index 0000000..e326906 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1488 @@ -0,0 +1,282 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-rewrite/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-rewrite/azuredeploy.parameters.json" + ], + "timestamp": 1642962908366, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-rewrite/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-rewrite/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1488", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1488", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + } + }, + "skuName": { + "type": "string", + "defaultValue": "standard_v2", + "metadata": { + "description": "Sku Name" + } + }, + "backendIpAddress1": { + "type": "string", + "defaultValue": "10.0.1.10", + "metadata": { + "description": "IP Address for Backend Server 1" + }, + "value": "10.0.1.13" + }, + "applicationGatewayName": { + "type": "string", + "defaultValue": "[concat(resourceGroup().name, '-appgw')]", + "metadata": { + "description": "Application Gateway Name" + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "PublicIp", + "metadata": { + "description": "Public IP Address Name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Location For the resources" + } + } + }, + "variables": { + "virtualNetworkName": "[concat(resourceGroup().name, '-vnet')]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "PublicIp", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat('appgw-vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.0.0.0/28" + } + } + ] + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2020-05-01", + "name": "[concat(resourceGroup().name, '-appgw')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/publicIPAddresses/', parameters('publicIPAddressName'))]" + ], + "properties": { + "sku": { + "name": "standard_v2", + "tier": "Standard_v2", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), 'subnet1')]" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIp" + } + } + } + ], + "frontendPorts": [ + { + "name": "HttpPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.13" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "PickHostNameFromBackendAddress": true, + "probe": { + "id": "Microsoft.Network/applicationGateways/probes/[concat(resourceGroup().name, '-appgw')]/HttpCustomProbe" + } + } + } + ], + "httpListeners": [ + { + "name": "HttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[concat(resourceGroup().name, '-appgw')]/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/[concat(resourceGroup().name, '-appgw')]/HttpPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "HttpRule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/[concat(resourceGroup().name, '-appgw')]/HttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/[concat(resourceGroup().name, '-appgw')]/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[concat(resourceGroup().name, '-appgw')]/appGatewayBackendHttpSettings" + }, + "rewriteRuleSet": { + "id": "Microsoft.Network/applicationGateways/rewriteRuleSets/[concat(resourceGroup().name, '-appgw')]/rewriteRuleSet1" + } + } + } + ], + "rewriteRuleSets": [ + { + "name": "RewriteRuleSet1", + "properties": { + "rewriteRules": [ + { + "name": "RWRule1", + "actionSet": { + "requestHeaderConfigurations": [ + { + "headerName": "Accept-Charset", + "headerValue": "utf-8" + } + ], + "responseHeaderConfigurations": [ + { + "headerName": "Content-Type", + "headerValue": "text/html; charset=utf-8" + } + ] + } + } + ] + }, + "type": "Microsoft.Network/applicationGateways/rewriteRuleSets" + } + ], + "probes": [ + { + "name": "HttpCustomProbe", + "properties": { + "protocol": "Http", + "path": "/", + "interval": 30, + "timeout": 30, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": true, + "minServers": 0, + "match": { + "statusCodes": [ + "200-399" + ] + } + }, + "type": "Microsoft.Network/applicationGateways/probes" + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1489 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1489 new file mode 100644 index 0000000..7a240be --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1489 @@ -0,0 +1,286 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-sslpolicy-custom/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-sslpolicy-custom/azuredeploy.parameters.json" + ], + "timestamp": 1642962908375, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-sslpolicy-custom/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-sslpolicy-custom/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1489", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1489", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + }, + "value": "Standard_Small" + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "backendIpAddress1": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 1" + }, + "value": "10.0.1.10" + }, + "backendIpAddress2": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 2" + }, + "value": "10.0.1.11" + }, + "certData": { + "type": "securestring", + "metadata": { + "description": "Base-64 encoded form of the .pfx file" + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certPassword": { + "type": "securestring", + "metadata": { + "description": "Password for .pfx certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet", + "publicIPRef": "Microsoft.Network/publicIPAddresses/publicIp1" + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Small", + "tier": "Standard", + "capacity": 2 + }, + "sslCertificates": [ + { + "name": "appGatewaySslCert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 443 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + }, + { + "IpAddress": "10.0.1.11" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Https", + "SslCertificate": { + "Id": "Microsoft.Network/applicationGateways/sslCertificates/applicationGateway1/appGatewaySslCert" + } + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "Id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "Id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "Id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ], + "sslPolicy": { + "policyType": "Custom", + "minProtocolVersion": "TLSv1_1", + "cipherSuites": [ + "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", + "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", + "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", + "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", + "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", + "TLS_RSA_WITH_AES_256_GCM_SHA384", + "TLS_RSA_WITH_AES_128_GCM_SHA256", + "TLS_RSA_WITH_AES_256_CBC_SHA256", + "TLS_RSA_WITH_AES_128_CBC_SHA256", + "TLS_RSA_WITH_AES_256_CBC_SHA", + "TLS_RSA_WITH_AES_128_CBC_SHA" + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT149 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT149 new file mode 100644 index 0000000..ebe343d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT149 @@ -0,0 +1,397 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/episerver/episerver-cms-in-azure/azuredeploy.json", + "/application-workloads/episerver/episerver-cms-in-azure/azuredeploy.parameters.json" + ], + "timestamp": 1642962888623, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/episerver/episerver-cms-in-azure/azuredeploy.json", + "/application-workloads/episerver/episerver-cms-in-azure/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT149", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.servicebus/namespaces", + "microsoft.sql/servers", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT149", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "WebApplicationWebAppName": { + "type": "string", + "minLength": 1, + "defaultValue": "[concat('episervercmsapp', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the WebApp Running EPiServer" + }, + "value": "GEN-UNIQUE" + }, + "WebApplication-HostingPlanNameName": { + "type": "string", + "minLength": 1, + "defaultValue": "[concat('hostingplan', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the App Service Hosting Plan" + }, + "value": "GEN-UNIQUE" + }, + "WebApplication-HostingPlanNameSKU": { + "type": "string", + "allowedValues": [ + "F1", + "D1", + "B1", + "S1", + "P1" + ], + "defaultValue": "F1", + "metadata": { + "description": "Describes the pricing name of the Hosting Plan" + }, + "value": "S1" + }, + "WebApplication-HostingPlanTierSKU": { + "type": "string", + "allowedValues": [ + "Free", + "Shared", + "Basic", + "Standard", + "Premium" + ], + "defaultValue": "Free", + "metadata": { + "description": "Describes the pricing tier of the Hosting Plan" + }, + "value": "Standard" + }, + "WebApplication-HostingPlanNameWorkerSize": { + "type": "string", + "allowedValues": [ + "0", + "1", + "2" + ], + "defaultValue": "0", + "metadata": { + "description": "Describes the WorkerSize level of the Hosting Plan" + }, + "value": "1" + }, + "StorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "Describes the Storage Account Type" + } + }, + "StorageAccountName": { + "type": "string", + "defaultValue": "[concat('epistorage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Storage Account" + }, + "value": "GEN-UNIQUE" + }, + "sqlserverName": { + "type": "string", + "defaultValue": "[concat('sqlserver', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Sql Server" + }, + "value": "GEN-UNIQUE" + }, + "sqlserverAdminLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the Sql Admin Account" + }, + "value": "azureuser" + }, + "sqlserverAdminLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Password of the Sql Admin Account" + }, + "value": "GEN-PASSWORD" + }, + "SQL-DatabaseName": { + "type": "string", + "minLength": 1, + "defaultValue": "episerverdb", + "metadata": { + "description": "Name of the Sql Database" + }, + "value": "GEN-UNIQUE" + }, + "SQL-DatabaseCollation": { + "type": "string", + "minLength": 1, + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "Describes the performance level for SQL Databse Collation" + } + }, + "SQL-DatabaseEdition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Describes the performance level for SQL Database Edition" + } + }, + "SQL-DatabaseRequestedServiceObjectiveName": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "S0", + "S1", + "S2", + "P1", + "P2", + "P3" + ], + "metadata": { + "description": "Describes the performance level for Edition" + } + }, + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The messaging tier for service Bus namespace" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "location": "[resourceGroup().location]", + "defaultSASKeyName": "RootManageSharedAccessKey", + "defaultAuthRuleResourceId": "Microsoft.ServiceBus/namespaces/authorizationRules/GEN-UNIQUE/RootManageSharedAccessKey", + "storageAccountApiVersion": "2015-06-15", + "serviceBusApiVersion": "2015-08-01", + "storageId": "Microsoft.Storage/storageAccounts/GEN-UNIQUE", + "storageConnectionStringPrefix": "DefaultEndpointsProtocol=https;AccountName=GEN-UNIQUE;AccountKey=" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "tags": { + "displayName": "WebApplication-HostingPlanName" + }, + "sku": { + "name": "S1", + "tier": "Standard" + }, + "properties": { + "name": "GEN-UNIQUE", + "workerSize": "1", + "numberOfWorkers": 1 + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "apiVersion": "2015-08-01", + "dependsOn": [ + "Microsoft.Web/serverfarms//GEN-UNIQUE", + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Sql/servers//GEN-UNIQUE", + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('WebApplication-HostingPlanNameName'))]": "Resource", + "displayName": "WebApplication-WebApp" + }, + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms//GEN-UNIQUE", + "webSocketsEnabled": true, + "alwaysOn": false + }, + "resources": [ + { + "name": "connectionstrings", + "type": "config", + "apiVersion": "2015-08-01", + "dependsOn": [ + "Microsoft.Web/sites//GEN-UNIQUE" + ], + "tags": { + "displayName": "WebApplication-WebApp-ConnectionStrings" + }, + "properties": { + "EPiServerAzureBlobs": { + "value": "[concat(variables('storageConnectionStringPrefix'), listkeys(variables('storageId'), variables('storageAccountApiVersion')).key1)]", + "type": "Custom" + }, + "EPiServerAzureEvents": { + "value": "[listkeys(variables('defaultAuthRuleResourceId'), variables('serviceBusApiVersion')).primaryConnectionString]", + "type": "Custom" + }, + "EPiServerDB": { + "value": "[concat('Server=tcp:', reference(resourceId('Microsoft.Sql/servers/', parameters('sqlserverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('SQL-DatabaseName'), ';User Id=', parameters('sqlserverAdminLogin'), '@', parameters('sqlserverName'), ';Password=', parameters('sqlserverAdminLoginPassword'), ';Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True')]", + "type": "SQLAzure" + } + } + }, + { + "name": "appsettings", + "type": "config", + "apiVersion": "2015-08-01", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "tags": { + "displayName": "WebApplication-WebApp-ApplicationSettings" + }, + "properties": { + "episerver:ReadOnlyConfigurationAPI": "True" + } + }, + { + "name": "web", + "type": "config", + "apiVersion": "2015-08-01", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "tags": { + "displayName": "WebApplication-WebApp-GeneralSettings" + }, + "properties": { + "webSocketsEnabled": "True", + "alwaysOn": "True" + } + } + ] + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "tags": { + "displayName": "StorageAccount" + }, + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "apiVersion": "2014-04-01", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "properties": { + "administratorLogin": "azureuser", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "apiVersion": "2014-04-01", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "GEN-UNIQUE", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2014-04-01", + "dependsOn": [ + "GEN-UNIQUE" + ], + "tags": { + "displayName": "SQL-Database" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + } + ], + "tags": { + "displayName": "SQL-Server" + }, + "type": "Microsoft.Sql/servers" + }, + { + "apiVersion": "2015-08-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "kind": "Messaging", + "tags": { + "displayName": "ServiceBus" + }, + "sku": { + "name": "Standard", + "tier": "Standard" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1490 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1490 new file mode 100644 index 0000000..45972c9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1490 @@ -0,0 +1,268 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-sslpolicy-predefined/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-sslpolicy-predefined/azuredeploy.parameters.json" + ], + "timestamp": 1642962908385, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-sslpolicy-predefined/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-sslpolicy-predefined/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1490", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1490", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + }, + "value": "Standard_Small" + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "backendIpAddress1": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 1" + }, + "value": "10.0.1.10" + }, + "backendIpAddress2": { + "type": "string", + "metadata": { + "description": "IP Address for Backend Server 2" + }, + "value": "10.0.1.11" + }, + "certData": { + "type": "securestring", + "metadata": { + "description": "Base-64 encoded form of the .pfx file" + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certPassword": { + "type": "securestring", + "metadata": { + "description": "Password for .pfx certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet", + "publicIPRef": "Microsoft.Network/publicIPAddresses/publicIp1" + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Small", + "tier": "Standard", + "capacity": 2 + }, + "sslCertificates": [ + { + "name": "appGatewaySslCert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 443 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + }, + { + "IpAddress": "10.0.1.11" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Https", + "SslCertificate": { + "Id": "Microsoft.Network/applicationGateways/sslCertificates/applicationGateway1/appGatewaySslCert" + } + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ], + "sslPolicy": { + "policyType": "Predefined", + "policyName": "AppGwSslPolicy20170401" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1491 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1491 new file mode 100644 index 0000000..2ed665c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1491 @@ -0,0 +1,318 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-url-path-based-routing/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-url-path-based-routing/azuredeploy.parameters.json" + ], + "timestamp": 1642962908394, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-url-path-based-routing/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-url-path-based-routing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1491", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1491", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + }, + "value": "Standard_Small" + }, + "capacity": { + "type": "int", + "minValue": 1, + "maxValue": 10, + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "backendIpAddressDefault": { + "type": "string", + "metadata": { + "description": "IP Address of Default Backend Server" + }, + "value": "10.0.1.10" + }, + "backendIpAddressForPathRule1": { + "type": "string", + "metadata": { + "description": "IP Address of Backend Server for Path Rule 1 match" + }, + "value": "10.0.1.11" + }, + "backendIpAddressForPathRule2": { + "type": "string", + "metadata": { + "description": "IP Address of Backend Server for Path Rule 2 match" + }, + "value": "10.0.1.12" + }, + "pathMatch1": { + "type": "string", + "metadata": { + "description": "Path match string for Path Rule 1" + }, + "value": "/images*" + }, + "pathMatch2": { + "type": "string", + "metadata": { + "description": "Path match string for Path Rule 2" + }, + "value": "/videos*" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet", + "publicIPRef": "Microsoft.Network/publicIPAddresses/publicIp1" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/virtualNetwork1", + "Microsoft.Network/publicIPAddresses/publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Small", + "tier": "Standard", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendPublicIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort80", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPoolDefault", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + } + ] + } + }, + { + "name": "appGatewayBackendPool1", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.11" + } + ] + } + }, + { + "name": "appGatewayBackendPool2", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.12" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendPublicIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort80" + }, + "Protocol": "Http" + } + } + ], + "urlPathMaps": [ + { + "name": "urlPathMap1", + "properties": { + "defaultBackendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPoolDefault" + }, + "defaultBackendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + }, + "pathRules": [ + { + "name": "pathRule1", + "properties": { + "paths": [ + "/images*" + ], + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool1" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + }, + { + "name": "pathRule2", + "properties": { + "paths": [ + "/videos*" + ], + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool2" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "PathBasedRouting", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "urlPathMap": { + "id": "Microsoft.Network/applicationGateways/urlPathMaps/applicationGateway1/urlPathMap1" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1492 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1492 new file mode 100644 index 0000000..aa0fdb4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1492 @@ -0,0 +1,287 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-v2-autoscale-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-v2-autoscale-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962908406, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-v2-autoscale-create/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-v2-autoscale-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1492", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1492", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "11446106675501358382" + } + }, + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "Application-Vnet", + "metadata": { + "description": "Virtual Network name" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual Network address range" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "ApplicationGatewaySubnet", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet address range" + } + }, + "applicationGatewayName": { + "type": "string", + "defaultValue": "applicationGatewayV2", + "metadata": { + "description": "Application Gateway name" + } + }, + "minCapacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Minimum instance count for Application Gateway" + } + }, + "maxCapacity": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "Maximum instance count for Application Gateway" + } + }, + "frontendPort": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Application Gateway Frontend port" + }, + "value": 80 + }, + "backendPort": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Application gateway Backend port" + }, + "value": 80 + }, + "backendIPAddresses": { + "type": "array", + "defaultValue": [ + { + "IpAddress": "10.0.0.4" + }, + { + "IpAddress": "10.0.0.5" + } + ], + "metadata": { + "description": "Back end pool ip addresses" + } + }, + "cookieBasedAffinity": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Cookie based affinity" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "appGwPublicIpName": "[format('{0}-pip', parameters('applicationGatewayName'))]", + "appGwSize": "Standard_v2" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "Application-Vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "ApplicationGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[format('{0}-pip', parameters('applicationGatewayName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2020-06-01", + "name": "applicationGatewayV2", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Standard_v2", + "tier": "Standard_v2" + }, + "autoscaleConfiguration": { + "minCapacity": 2, + "maxCapacity": 10 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Application-Vnet/ApplicationGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[format('{0}-pip', parameters('applicationGatewayName'))]" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "backendAddresses": [ + { + "IpAddress": "10.0.0.4" + }, + { + "IpAddress": "10.0.0.5" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "port": 80, + "protocol": "Http", + "cookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGatewayV2/appGatewayFrontendIP" + }, + "frontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGatewayV2/appGatewayFrontendPort" + }, + "protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "name": "rule1", + "properties": { + "ruleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGatewayV2/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGatewayV2/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGatewayV2/appGatewayBackendHttpSettings" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[format('{0}-pip', parameters('applicationGatewayName'))]", + "Microsoft.Network/virtualNetworks/Application-Vnet" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1493 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1493 new file mode 100644 index 0000000..082e670 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1493 @@ -0,0 +1,292 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf/azuredeploy.parameters.json" + ], + "timestamp": 1642962908421, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1493", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1493", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources that is created by this template." + } + }, + "vNetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Specifies the address prefix for the Virtual Network." + } + }, + "vNetSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Specifies the subnet prefix" + } + }, + "applicationGatewaySize": { + "type": "string", + "allowedValues": [ + "WAF_v2" + ], + "defaultValue": "WAF_v2", + "metadata": { + "description": "Specifies the application gateway SKU name." + } + }, + "applicationGatewayCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "defaultValue": 2, + "metadata": { + "description": "Specifies the number of the application gateway instances." + } + }, + "backendIpAddress1": { + "type": "string", + "defaultValue": "10.0.1.10", + "metadata": { + "description": "IP Address for Backend Server 1" + } + }, + "backendIpAddress2": { + "type": "string", + "defaultValue": "10.0.1.11", + "metadata": { + "description": "IP Address for Backend Server 2" + } + }, + "wafEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "WAF Enabled" + } + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Detection", + "metadata": { + "description": "WAF Mode" + } + }, + "wafRuleSetType": { + "type": "string", + "allowedValues": [ + "OWASP" + ], + "defaultValue": "OWASP", + "metadata": { + "description": "WAF Rule Set Type" + } + }, + "wafRuleSetVersion": { + "type": "string", + "allowedValues": [ + "2.2.9", + "3.0" + ], + "defaultValue": "3.0", + "metadata": { + "description": "WAF Rule Set Version" + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//virtualNetwork1/appGatewaySubnet", + "publicIPRef": "Microsoft.Network/publicIPAddresses/publicIp1" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/28" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "virtualNetwork1", + "publicIp1" + ], + "properties": { + "sku": { + "name": "WAF_v2", + "tier": "WAF_v2", + "capacity": "applicationGateWayCapacity" + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.0.1.10" + }, + { + "IpAddress": "10.0.1.11" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ], + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Detection", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.0" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1494 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1494 new file mode 100644 index 0000000..55767d2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1494 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962908429, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1494", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1494", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet-1 Prefix" + }, + "value": "10.0.0.0/24" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "virtualNetworkName": "virtualNetwork1", + "subnetName": "subnet1" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVnetName": { + "type": "string", + "value": "[variables('virtualNetworkName')]" + }, + "existingVnetResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingSubnetName": { + "type": "string", + "value": "[variables('subnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1495 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1495 new file mode 100644 index 0000000..5a62b5b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1495 @@ -0,0 +1,742 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/azuredeploy.parameters.json" + ], + "timestamp": 1642962908436, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-waf-firewall-policy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1495", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/applicationgatewaywebapplicationfirewallpolicies", + "microsoft.network/applicationgateways", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1495", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "4164055307593774784" + } + }, + "parameters": { + "applicationGatewayName": { + "type": "string", + "defaultValue": "appGw01", + "metadata": { + "description": "Application gateway name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Application gateway location" + } + }, + "tier": { + "type": "string", + "defaultValue": "WAF_v2", + "allowedValues": [ + "Standard", + "WAF", + "Standard_v2", + "WAF_v2" + ], + "metadata": { + "description": "Application gateway tier" + } + }, + "sku": { + "type": "string", + "defaultValue": "WAF_v2", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large", + "WAF_Medium", + "WAF_Large", + "Standard_v2", + "WAF_v2" + ], + "metadata": { + "description": "Application gateway sku" + } + }, + "http2Enabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable HTTP/2 support" + } + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "maxValue": 32, + "minValue": 1, + "metadata": { + "description": "Capacity (instance count) of application gateway" + } + }, + "autoScaleMaxCapacity": { + "type": "int", + "defaultValue": 10, + "maxValue": 32, + "minValue": 1, + "metadata": { + "description": "Autoscale capacity (instance count) of application gateway" + } + }, + "publicIpAddressName": { + "type": "string", + "defaultValue": "appGwpublicIp", + "metadata": { + "description": "Public ip address name" + } + }, + "vNetSubscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "Virutal network subscription id" + } + }, + "existingVnetResourceGroup": { + "type": "string", + "metadata": { + "description": "Virutal network resource group" + }, + "value": "GET-PREREQ-existingVnetResourceGroup" + }, + "existingVnetName": { + "type": "string", + "metadata": { + "description": "Virutal network name" + }, + "value": "GET-PREREQ-existingVnetName" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Application gateway subnet name" + }, + "value": "GET-PREREQ-existingSubnetName" + }, + "sslCertificates": { + "type": "array", + "defaultValue": [], + "metadata": { + "name": "Certificate name", + "keyVaultResourceId": "Key vault resource id", + "secretName": "Secret name", + "description": "Array containing ssl certificates" + } + }, + "trustedRootCertificates": { + "type": "array", + "defaultValue": [], + "metadata": { + "name": "Certificate name", + "keyVaultResourceId": "Key vault resource id", + "secretName": "Secret name", + "description": "Array containing trusted root certificates" + } + }, + "httpListeners": { + "type": "array", + "defaultValue": [ + { + "name": "HttpListener01", + "protocol": "Http", + "frontEndPort": "port_80", + "firewallPolicy": "Enabled" + } + ], + "metadata": { + "name": "Listener name", + "protocol": "Listener protocol", + "frontEndPort": "Front end port name", + "sslCertificate": "SSL certificate name", + "hostNames": "Array containing host names", + "firewallPolicy": "Enabled/Disabled. Configures firewall policy on listener", + "description": "Array containing http listeners" + } + }, + "backendAddressPools": { + "type": "array", + "defaultValue": [ + { + "name": "BackendPool01", + "backendAddresses": [ + { + "ipAddress": "10.1.2.3" + } + ] + } + ], + "metadata": { + "name": "Backend address pool name", + "backendAddresses": "Array containing backend addresses", + "description": "Array containing backend address pools" + } + }, + "backendHttpSettings": { + "type": "array", + "defaultValue": [ + { + "name": "BackendHttpSetting01", + "port": 80, + "protocol": "Http", + "cookieBasedAffinity": "Enabled", + "affinityCookieName": "CookieAffinity01", + "requestTimeout": 300, + "connectionDraining": { + "drainTimeoutInSec": 60, + "enabled": true + } + } + ], + "metadata": { + "name": "Backend http setting name", + "port": "integer containing port number", + "protocol": "Backend http setting protocol", + "cookieBasedAffinity": "Enabled/Disabled. Configures cookie based affinity.", + "requestTimeout": "Integer containing backend http setting request timeout", + "connectionDraining": { + "drainTimeoutInSec": "Integer containing connection drain timeout in seconds", + "enabled": "Bool to enable connection draining" + }, + "trustedRootCertificate": "Trusted root certificate name", + "hostName": "Backend http setting host name", + "probeName": "Custom probe name", + "description": "Array containing backend http settings" + } + }, + "rules": { + "type": "array", + "defaultValue": [ + { + "name": "Rule01", + "ruleType": "Basic", + "listener": "HttpListener01", + "backendPool": "BackendPool01", + "backendHttpSettings": "BackendHttpSetting01" + } + ], + "metadata": { + "name": "Rule name", + "ruleType": "Rule type", + "listener": "Http listener name", + "backendPool": "Backend pool name", + "backendHttpSettings": "Backend http setting name", + "redirectConfiguration": "Redirection configuration name", + "description": "Array containing request routing rules" + } + }, + "redirectConfigurations": { + "type": "array", + "defaultValue": [], + "metadata": { + "name": "Redirecton name", + "redirectType": "Redirect type", + "targetUrl": "Target URL", + "includePath": "Bool to include path", + "includeQueryString": "Bool to include query string", + "requestRoutingRule": "Name of request routing rule to associate redirection configuration", + "description": "Array containing redirect configurations" + } + }, + "frontEndPorts": { + "type": "array", + "defaultValue": [ + { + "name": "port_80", + "port": 80 + } + ], + "metadata": { + "name": "Front port name", + "port": "Integer containing port number", + "description": "Array containing front end ports" + } + }, + "customProbes": { + "type": "array", + "defaultValue": [], + "metadata": { + "name": "Custom probe name", + "protocol": "Custom probe protocol", + "host": "Host name", + "path": "Probe path", + "interval": "Integer containing probe interval", + "timeout": "Integer containing probe timeout", + "unhealthyThreshold": "Integer containing probe unhealthy threshold", + "pickHostNameFromBackendHttpSettings": "Bool to enable pick host name from backend settings", + "minServers": "Integer containing min servers", + "match": { + "statusCodes": [ + "Custom probe status codes" + ] + }, + "description": "Array containing custom probes" + } + }, + "managedIdentityResourceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Resource id of an existing user assigned managed identity to associate with the application gateway" + } + }, + "enableWebApplicationFirewall": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable web application firewall" + } + }, + "firewallPolicyName": { + "type": "string", + "defaultValue": "FirewallPolicy01", + "metadata": { + "description": "Name of the firewall policy. Only required if enableWebApplicationFirewall is set to true" + } + }, + "firewallPolicySettings": { + "type": "object", + "defaultValue": { + "requestBodyCheck": true, + "maxRequestBodySizeInKb": 128, + "fileUploadLimitInMb": 100, + "state": "Enabled", + "mode": "Detection" + }, + "metadata": { + "requestBodyCheck": "Bool to enable request body check", + "maxRequestBodySizeInKb": "Integer containing max request body size in kb", + "fileUploadLimitInMb": "Integer containing file upload limit in mb", + "state": "Enabled/Disabled. Configures firewall policy settings", + "mode": "Sets the detection mode", + "description": "Array containing the firewall policy settings. Only required if enableWebApplicationFirewall is set to true" + } + }, + "firewallPolicyCustomRules": { + "type": "array", + "defaultValue": [], + "metadata": { + "action": "Type of actions", + "matchConditions": "Array containing match conditions", + "name": "Custom rule name", + "priority": "Integer containing priority", + "ruleType": "Rule type", + "description": "Array containing the firewall policy custom rules. Only required if enableWebApplicationFirewall is set to true" + } + }, + "firewallPolicyManagedRuleSets": { + "type": "array", + "defaultValue": [ + { + "ruleSetType": "OWASP", + "ruleSetVersion": "3.2" + } + ], + "metadata": { + "ruleSetType": "Rule set type", + "ruleSetVersion": "Rule set version", + "description": "Array containing the firewall policy managed rule sets. Only required if enableWebApplicationFirewall is set to true" + } + }, + "firewallPolicyManagedRuleExclusions": { + "type": "array", + "defaultValue": [], + "metadata": { + "matchVariable": "Variable to be excluded", + "selector": "String specifying exclusions", + "selectorMatchOperator": "Exclusion operator", + "description": "Array containing the firewall policy managed rule exclusions. Only required if enableWebApplicationFirewall is set to true" + } + }, + "enableDeleteLock": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable delete lock" + } + }, + "enableDiagnostics": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable diagnostic logs" + } + }, + "diagnosticStorageAccountId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Storage account resource id. Only required if enableDiagnostics is set to true" + } + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Log analytics workspace resource id. Only required if enableDiagnostics is set to true" + } + } + }, + "variables": { + "publicIpLockName": "[format('{0}-lck', parameters('publicIpAddressName'))]", + "publicIpDiagnosticsName": "[format('{0}-dgs', parameters('publicIpAddressName'))]", + "appGatewayLockName": "[format('{0}-lck', parameters('applicationGatewayName'))]", + "appGatewayDiagnosticsName": "[format('{0}-dgs', parameters('applicationGatewayName'))]", + "gatewayIpConfigurationName": "appGatewayIpConfig", + "frontendIpConfigurationName": "appGwPublicFrontendIp" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-03-01", + "name": "appGwpublicIp", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "condition": false, + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.Network/publicIPAddresses/{0}', parameters('publicIpAddressName'))]", + "name": "[format('{0}-dgs', parameters('publicIpAddressName'))]", + "properties": { + "workspaceId": "[if(empty(parameters('logAnalyticsWorkspaceId')), null(), parameters('logAnalyticsWorkspaceId'))]", + "storageAccountId": "[if(empty(parameters('diagnosticStorageAccountId')), null(), parameters('diagnosticStorageAccountId'))]", + "logs": [ + { + "category": "DDoSProtectionNotifications", + "enabled": true + }, + { + "category": "DDoSMitigationFlowLogs", + "enabled": true + }, + { + "category": "DDoSMitigationReports", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/appGwpublicIp" + ] + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2017-04-01", + "scope": "[format('Microsoft.Network/publicIPAddresses/{0}', parameters('publicIpAddressName'))]", + "name": "[format('{0}-lck', parameters('publicIpAddressName'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/appGwpublicIp" + ] + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2021-03-01", + "name": "appGw01", + "location": "[resourceGroup().location]", + "identity": "[if(not(empty(parameters('managedIdentityResourceId'))), createObject('type', 'UserAssigned', 'userAssignedIdentities', createObject(format('{0}', parameters('managedIdentityResourceId')), createObject())), null())]", + "properties": { + "copy": [ + { + "name": "frontendPorts", + "count": 27, + "input": { + "name": "frontEndPorts)[copyIndex(frontendPorts", + "properties": { + "port": "frontEndPorts)[copyIndex(frontendPorts" + } + } + }, + { + "name": "probes", + "count": 26, + "input": { + "name": "customProbes)[copyIndex(probes", + "properties": { + "protocol": "customProbes)[copyIndex(probes", + "host": "customProbes)[copyIndex(probes", + "path": "customProbes)[copyIndex(probes", + "interval": "customProbes)[copyIndex(probes", + "timeout": "customProbes)[copyIndex(probes", + "unhealthyThreshold": "customProbes)[copyIndex(probes", + "pickHostNameFromBackendHttpSettings": "customProbes)[copyIndex(probes", + "minServers": "customProbes)[copyIndex(probes", + "match": "customProbes)[copyIndex(probes" + } + } + }, + { + "name": "backendAddressPools", + "count": 33, + "input": { + "name": "backendAddressPools)[copyIndex(backendAddressPools", + "properties": { + "backendAddresses": "backendAddressPools)[copyIndex(backendAddressPools" + } + } + }, + { + "name": "trustedRootCertificates", + "count": 37, + "input": { + "name": "trustedRootCertificates)[copyIndex(trustedRootCertificates", + "properties": { + "keyVaultSecretId": "[format('{0}secrets/{1}', reference(parameters('trustedRootCertificates')[copyIndex('trustedRootCertificates')].keyVaultResourceId, '2021-10-01').vaultUri, parameters('trustedRootCertificates')[copyIndex('trustedRootCertificates')].secretName)]" + } + } + }, + { + "name": "sslCertificates", + "count": 29, + "input": { + "name": "sslCertificates)[copyIndex(sslCertificates", + "properties": { + "keyVaultSecretId": "[format('{0}secrets/{1}', reference(parameters('sslCertificates')[copyIndex('sslCertificates')].keyVaultResourceId, '2021-10-01').vaultUri, parameters('sslCertificates')[copyIndex('sslCertificates')].secretName)]" + } + } + }, + { + "name": "backendHttpSettingsCollection", + "count": 33, + "input": { + "name": "backendHttpSettings)[copyIndex(backendHttpSettingsCollection", + "properties": { + "port": "backendHttpSettings)[copyIndex(backendHttpSettingsCollection", + "protocol": "backendHttpSettings)[copyIndex(backendHttpSettingsCollection", + "cookieBasedAffinity": "backendHttpSettings)[copyIndex(backendHttpSettingsCollection", + "affinityCookieName": "[if(contains(parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')], 'affinityCookieName'), parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')].affinityCookieName, null())]", + "requestTimeout": "backendHttpSettings)[copyIndex(backendHttpSettingsCollection", + "connectionDraining": "backendHttpSettings)[copyIndex(backendHttpSettingsCollection", + "probe": "[if(contains(parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')], 'probeName'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/applicationGateways/probes', parameters('applicationGatewayName'), parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')].probeName))), null())]", + "trustedRootCertificates": "[if(contains(parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')], 'trustedRootCertificate'), json(format('[{{\"id\": \"{0}\"}}]', resourceId('Microsoft.Network/applicationGateways/trustedRootCertificates', parameters('applicationGatewayName'), parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')].trustedRootCertificate))), null())]", + "hostName": "[if(contains(parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')], 'hostName'), parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')].hostName, null())]", + "pickHostNameFromBackendAddress": "[if(contains(parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')], 'pickHostNameFromBackendAddress'), parameters('backendHttpSettings')[copyIndex('backendHttpSettingsCollection')].pickHostNameFromBackendAddress, false())]" + } + } + }, + { + "name": "httpListeners", + "count": 27, + "input": { + "name": "httpListeners)[copyIndex(httpListeners", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/appGw01/appGwPublicFrontendIp" + }, + "frontendPort": { + "id": "[resourceId('Microsoft.Network/applicationGateways/frontendPorts', parameters('applicationGatewayName'), parameters('httpListeners')[copyIndex('httpListeners')].frontEndPort)]" + }, + "protocol": "httpListeners)[copyIndex(httpListeners", + "sslCertificate": "[if(contains(parameters('httpListeners')[copyIndex('httpListeners')], 'sslCertificate'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/applicationGateways/sslCertificates', parameters('applicationGatewayName'), parameters('httpListeners')[copyIndex('httpListeners')].sslCertificate))), null())]", + "hostNames": "[if(contains(parameters('httpListeners')[copyIndex('httpListeners')], 'hostNames'), parameters('httpListeners')[copyIndex('httpListeners')].hostNames, null())]", + "hostName": "[if(contains(parameters('httpListeners')[copyIndex('httpListeners')], 'hostName'), parameters('httpListeners')[copyIndex('httpListeners')].hostName, null())]", + "requireServerNameIndication": "[if(contains(parameters('httpListeners')[copyIndex('httpListeners')], 'requireServerNameIndication'), parameters('httpListeners')[copyIndex('httpListeners')].requireServerNameIndication, false())]", + "firewallPolicy": "[if(contains(parameters('httpListeners')[copyIndex('httpListeners')], 'firewallPolicy'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', if(equals(parameters('firewallPolicyName'), ''), 'placeholdervalue', parameters('firewallPolicyName'))))), null())]" + } + } + }, + { + "name": "requestRoutingRules", + "count": 19, + "input": { + "name": "rules)[copyIndex(requestRoutingRules", + "properties": { + "ruleType": "rules)[copyIndex(requestRoutingRules", + "httpListener": "[if(contains(parameters('rules')[copyIndex('requestRoutingRules')], 'listener'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/applicationGateways/httpListeners', parameters('applicationGatewayName'), parameters('rules')[copyIndex('requestRoutingRules')].listener))), null())]", + "backendAddressPool": "[if(contains(parameters('rules')[copyIndex('requestRoutingRules')], 'backendPool'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/applicationGateways/backendAddressPools', parameters('applicationGatewayName'), parameters('rules')[copyIndex('requestRoutingRules')].backendPool))), null())]", + "backendHttpSettings": "[if(contains(parameters('rules')[copyIndex('requestRoutingRules')], 'backendHttpSettings'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection', parameters('applicationGatewayName'), parameters('rules')[copyIndex('requestRoutingRules')].backendHttpSettings))), null())]", + "redirectConfiguration": "[if(contains(parameters('rules')[copyIndex('requestRoutingRules')], 'redirectConfiguration'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/applicationGateways/redirectConfigurations', parameters('applicationGatewayName'), parameters('rules')[copyIndex('requestRoutingRules')].redirectConfiguration))), null())]" + } + } + }, + { + "name": "redirectConfigurations", + "count": 36, + "input": { + "name": "redirectConfigurations)[copyIndex(redirectConfigurations", + "properties": { + "redirectType": "redirectConfigurations)[copyIndex(redirectConfigurations", + "targetUrl": "redirectConfigurations)[copyIndex(redirectConfigurations", + "targetListener": "[if(contains(parameters('redirectConfigurations')[copyIndex('redirectConfigurations')], 'targetListener'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/applicationGateways/httpListeners', parameters('applicationGatewayName'), parameters('redirectConfigurations')[copyIndex('redirectConfigurations')].targetListener))), null())]", + "includePath": "redirectConfigurations)[copyIndex(redirectConfigurations", + "includeQueryString": "redirectConfigurations)[copyIndex(redirectConfigurations", + "requestRoutingRules": [ + { + "id": "[resourceId('Microsoft.Network/applicationGateways/requestRoutingRules', parameters('applicationGatewayName'), parameters('redirectConfigurations')[copyIndex('redirectConfigurations')].requestRoutingRule)]" + } + ] + } + } + } + ], + "sku": { + "name": "WAF_v2", + "tier": "WAF_v2" + }, + "autoscaleConfiguration": { + "minCapacity": 2, + "maxCapacity": 10 + }, + "enableHttp2": true, + "webApplicationFirewallConfiguration": "[if(parameters('enableWebApplicationFirewall'), createObject('enabled', if(equals(parameters('firewallPolicySettings').state, 'Enabled'), true(), false()), 'firewallMode', parameters('firewallPolicySettings').mode, 'ruleSetType', 'OWASP', 'ruleSetVersion', '3.2'), null())]", + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "[subscription().subscriptionId]/GET-PREREQ-existingVnetResourceGroup/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVnetName/GET-PREREQ-existingSubnetName" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGwPublicFrontendIp", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/appGwpublicIp" + } + } + } + ], + "firewallPolicy": "[if(parameters('enableWebApplicationFirewall'), createObject('id', resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', if(equals(parameters('firewallPolicyName'), ''), 'placeholdervalue', parameters('firewallPolicyName')))), null())]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies', if(equals(parameters('firewallPolicyName'), ''), 'placeholdervalue', parameters('firewallPolicyName')))]", + "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIpAddressName'))]" + ] + }, + { + "condition": false, + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.Network/applicationGateways/{0}', parameters('applicationGatewayName'))]", + "name": "[format('{0}-dgs', parameters('applicationGatewayName'))]", + "properties": { + "workspaceId": "[if(empty(parameters('logAnalyticsWorkspaceId')), null(), parameters('logAnalyticsWorkspaceId'))]", + "storageAccountId": "[if(empty(parameters('diagnosticStorageAccountId')), null(), parameters('diagnosticStorageAccountId'))]", + "logs": [ + { + "category": "ApplicationGatewayAccessLog", + "enabled": true + }, + { + "category": "ApplicationGatewayPerformanceLog", + "enabled": true + }, + { + "category": "ApplicationGatewayFirewallLog", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + }, + "dependsOn": [ + "Microsoft.Network/applicationGateways/appGw01" + ] + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2017-04-01", + "scope": "[format('Microsoft.Network/applicationGateways/{0}', parameters('applicationGatewayName'))]", + "name": "[format('{0}-lck', parameters('applicationGatewayName'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.Network/applicationGateways/appGw01" + ] + }, + { + "condition": true, + "type": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies", + "apiVersion": "2021-03-01", + "name": "[if(equals(parameters('firewallPolicyName'), ''), 'placeholdervalue', parameters('firewallPolicyName'))]", + "location": "[resourceGroup().location]", + "properties": { + "customRules": [], + "policySettings": { + "requestBodyCheck": true, + "maxRequestBodySizeInKb": 128, + "fileUploadLimitInMb": 100, + "state": "Enabled", + "mode": "Detection" + }, + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "OWASP", + "ruleSetVersion": "3.2" + } + ], + "exclusions": [] + } + } + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('applicationGatewayName')]" + }, + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Network/applicationGateways', parameters('applicationGatewayName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1496 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1496 new file mode 100644 index 0000000..a2c87f2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1496 @@ -0,0 +1,436 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.parameters.json" + ], + "timestamp": 1642962908446, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1496", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.resources/deployments", + "microsoft.network/applicationgateways", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1496", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "DNS of the WebApp" + }, + "value": "GEN-UNIQUE" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + } + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-12" + }, + "administratorLoginPassword": { + "type": "securestring", + "minLength": 8, + "maxLength": 128, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "databaseSkuName": { + "type": "string", + "defaultValue": "GP_Gen5_8", + "metadata": { + "description": "Azure database for MySQL sku name" + } + }, + "databaseSkuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for MySQL sku family" + } + }, + "databaseSkuSizeMB": { + "type": "int", + "allowedValues": [ + 102400, + 51200 + ], + "defaultValue": 51200, + "metadata": { + "description": "Azure database for MySQL Sku Size" + } + }, + "databaseSkuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "metadata": { + "description": "Azure database for MySQL pricing tier" + } + }, + "mysqlVersion": { + "type": "string", + "allowedValues": [ + "5.6", + "5.7" + ], + "defaultValue": "5.6", + "metadata": { + "description": "MySQL version" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "GEN-UNIQUE-agw", + "publicIPAddressName": "GEN-UNIQUE-pip", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet", + "publicIPRef": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-pip", + "databaseName": "GEN-UNIQUEdb", + "serverName": "GEN-UNIQUEmysqlserver", + "hostingPlanName": "GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-pip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + }, + "sku": { + "name": "Standard" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/28" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE-agw", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-pip", + "Microsoft.Web/sites//GEN-UNIQUE" + ], + "properties": { + "sku": { + "name": "Standard_v2", + "tier": "Standard_v2", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-pip" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "[reference(parameters('siteName')).defaultHostName]" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "PickHostNameFromBackendAddress": true, + "ProbeEnabled": true, + "Probe": { + "id": "Microsoft.Network/applicationGateways/probes//GEN-UNIQUE-agw/Probe1" + } + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations//GEN-UNIQUE-agw/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts//GEN-UNIQUE-agw/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners//GEN-UNIQUE-agw/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools//GEN-UNIQUE-agw/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection//GEN-UNIQUE-agw/appGatewayBackendHttpSettings" + } + } + } + ], + "probes": [ + { + "Name": "Probe1", + "properties": { + "Protocol": "Http", + "Path": "/", + "Interval": 30, + "Timeout": 10, + "UnhealthyThreshold": 3, + "MinServers": 0, + "PickHostNameFromBackendHttpSettings": true + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "name": "fetchIpAddress", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "GEN-UNIQUE-agw" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('fetchIpAddress.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "publicIPAddressId": { + "value": "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-pip" + } + } + } + }, + { + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUEserviceplan", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HostingPlan" + }, + "sku": { + "name": "S1", + "capacity": "1" + }, + "properties": { + "name": "GEN-UNIQUEserviceplan" + } + }, + { + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUEserviceplan" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "type": "config", + "name": "connectionstrings", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "DefaultConnection": { + "value": "[concat('Database=', variables('databaseName'), ';Data Source=', reference(resourceId('Microsoft.DBforMySQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]", + "type": "MySql" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "config", + "name": "web", + "dependsOn": [ + "GEN-UNIQUE", + "fetchIpAddress" + ], + "properties": { + "ipSecurityRestrictions": [ + { + "ipAddress": "[concat(reference('fetchIpAddress').outputs.ipAddress.value,'/32')]" + } + ] + } + } + ] + }, + { + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEmysqlserver", + "properties": { + "createMode": "Default", + "version": "5.6", + "administratorLogin": "GEN-UNIQUE-12", + "administratorLoginPassword": "GEN-PASSWORD", + "storageMB": 51200 + }, + "sku": { + "name": "GP_Gen5_8", + "tier": "GeneralPurpose", + "size": 51200, + "family": "Gen5" + }, + "type": "Microsoft.DBforMySQL/servers", + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforMySQL/servers//GEN-UNIQUEmysqlserver" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEmysqlserverfirewall", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "name": "GEN-UNIQUEdb", + "type": "databases", + "apiVersion": "2017-12-01", + "properties": { + "charset": "utf8", + "collation": "utf8_general_ci" + }, + "dependsOn": [ + "Microsoft.DBforMySQL/servers//GEN-UNIQUEmysqlserver" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1497 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1497 new file mode 100644 index 0000000..9c120ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1497 @@ -0,0 +1,55 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/fetchIpAddress.json", + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.parameters.json" + ], + "timestamp": 1642962908459, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/fetchIpAddress.json", + "/quickstarts/microsoft.network/application-gateway-webapp-iprestriction/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1497", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1497", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPAddressId": { + "type": "string", + "defaultValue": "nestedPublicIp" + }, + "siteName": { + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "value": "GEN-UNIQUE-12" + }, + "administratorLoginPassword": { + "value": "GEN-PASSWORD" + } + }, + "resources": [], + "outputs": { + "ipAddress": { + "value": "[reference(parameters('publicIPAddressId'), '2020-05-01').ipAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1498 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1498 new file mode 100644 index 0000000..fec9430 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1498 @@ -0,0 +1,279 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapps/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-webapps/azuredeploy.parameters.json" + ], + "timestamp": 1642962908466, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-gateway-webapps/azuredeploy.json", + "/quickstarts/microsoft.network/application-gateway-webapps/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1498", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1498", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix for the Virtual Network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/28", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/28" + }, + "applicationGatewaySize": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "application gateway size" + }, + "value": "Standard_Medium" + }, + "capacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + }, + "value": 2 + }, + "azureWebapp1": { + "type": "string", + "metadata": { + "description": "URL of Azure Web App 1" + } + }, + "azureWebapp2": { + "type": "string", + "metadata": { + "description": "URL of Azure Web App 2" + } + }, + "probeEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Probe Enabled" + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "azureWebApp1": { + "value": "abc.azurewebsites.net" + }, + "azureWebApp2": { + "value": "def.azurewebsites.net" + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "publicIp1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/28" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "sku": { + "name": "Standard_Medium", + "tier": "Standard", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "abc.azurewebsites.net" + }, + { + "IpAddress": "def.azurewebsites.net" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "PickHostNameFromBackendAddress": true, + "ProbeEnabled": true, + "Probe": { + "id": "Microsoft.Network/applicationGateways/probes/applicationGateway1/Probe1" + } + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ], + "probes": [ + { + "Name": "Probe1", + "properties": { + "Protocol": "Http", + "Path": "/", + "Interval": 30, + "Timeout": 10, + "UnhealthyThreshold": 3, + "MinServers": 0, + "PickHostNameFromBackendHttpSettings": true + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1499 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1499 new file mode 100644 index 0000000..305b096 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1499 @@ -0,0 +1,331 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/application-security-group/azuredeploy.json", + "/quickstarts/microsoft.network/application-security-group/azuredeploy.parameters.json" + ], + "timestamp": 1642962908475, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/application-security-group/azuredeploy.json", + "/quickstarts/microsoft.network/application-security-group/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1499", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/applicationsecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1499", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation when they're located in a storage account with private access." + }, + "defaultValue": "" + }, + "vmName": { + "type": "string", + "defaultValue": "VM", + "metadata": { + "description": "VM Name" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM Size" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "vnetName": "vnet", + "vNetAddressSpace": "10.0.0.0/16", + "subnetName": "subnet01", + "subnetAdressPrefix": "10.0.0.0/24", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/vnet/subnet01", + "asgName": "webServersAsg", + "asgId": "Microsoft.Network/applicationSecurityGroups/webServersAsg", + "nsgName": "webNsg", + "nsgId": "Microsoft.Network/networkSecurityGroups/webNsg", + "pipName": "webServerPip", + "pipId": "Microsoft.Network/publicIPAddresses/webServerPip", + "imageInfo": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.9", + "version": "latest" + }, + "vmStorageType": "StandardSSD_LRS", + "scriptUrl": "[uri(parameters('_artifactsLocation'), concat('install_nginx.sh', parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + } + }, + "resources": [ + { + "comments": "Application Security Group", + "name": "webServersAsg", + "type": "Microsoft.Network/applicationSecurityGroups", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "comments": "Network Security Group", + "name": "webNsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "webServersAsg" + ], + "properties": { + "securityRules": [ + { + "name": "AllowHttpAll", + "properties": { + "description": "Allow http traffic to web servers", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "direction": "Inbound", + "access": "Allow", + "priority": 100, + "protocol": "Tcp", + "destinationPortRange": "80", + "destinationApplicationSecurityGroups": [ + { + "id": "Microsoft.Network/applicationSecurityGroups/webServersAsg" + } + ] + } + }, + { + "name": "AllowSshAll", + "properties": { + "description": "Allow SSH traffic to web servers", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "direction": "Inbound", + "access": "Allow", + "priority": 200, + "protocol": "Tcp", + "destinationPortRange": "22", + "destinationApplicationSecurityGroups": [ + { + "id": "Microsoft.Network/applicationSecurityGroups/webServersAsg" + } + ] + } + } + ] + } + }, + { + "comments": "Virtual Network", + "name": "vNetName", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "webNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet01", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/webNsg" + } + } + } + ] + } + }, + { + "comments": "Public Ip Address", + "name": "webServerPip", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Web Server Network Interface", + "name": "VM-NIC", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "dependsOn": [ + "vNetName", + "webServerPip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/webServerPip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/subnet01" + }, + "applicationSecurityGroups": [ + { + "id": "Microsoft.Network/applicationSecurityGroups/webServersAsg" + } + ] + } + } + ] + } + }, + { + "comments": "Linux Web Server", + "name": "VM", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/VM-NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "VM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.9", + "version": "latest" + }, + "osDisk": { + "name": "VM-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VM-NIC" + } + ] + } + } + }, + { + "comments": "Installs NGNIX", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "VM/linuxconfig", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "VM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_nginx.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install_nginx.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT15 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT15 new file mode 100644 index 0000000..7bda055 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT15 @@ -0,0 +1,92 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/configureADNextDC.json" + ], + "timestamp": 1642962883432, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/configureADNextDC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT15", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT15", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adNextDCVMName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "DNSServer": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "domainName": { + "type": "string" + }, + "adNextDCConfigurationFunction": { + "type": "string" + }, + "adNextDCConfigurationModulesURL": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "adNextDCVMName/PrepareNextDC", + "apiVersion": "2019-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesURL": "adNextDCConfigurationModulesURL", + "configurationFunction": "adNextDCConfigurationFunction", + "properties": { + "domainName": "domainName", + "DNSServer": "DNSServer", + "DNSForwarder": "DNSServer", + "adminCreds": { + "userName": "adminUserName", + "password": "privateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT150 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT150 new file mode 100644 index 0000000..349db2f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT150 @@ -0,0 +1,270 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ethereum/ethereum-cpp-on-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/ethereum-cpp-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962888673, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ethereum/ethereum-cpp-on-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/ethereum-cpp-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT150", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT150", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountNamePrefix": { + "type": "string", + "metadata": { + "description": "Name prefix of the Storage Account" + }, + "value": "GEN-UNIQUE-11" + }, + "vmDnsPrefix": { + "type": "string", + "metadata": { + "description": "This is the unique DNS name of the for the public IP for your VM" + }, + "value": "GEN-UNIQUE-11" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "This is the the username you wish to assign to your VMs admin account" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "nicName": "VMNic", + "addressPrefix": "10.0.0.0/16", + "imagePublisher": "Canonical", + "imageVersion": "latest", + "imageSKU": "14.04.5-LTS", + "imageOffer": "UbuntuServer", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "publicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-11", + "virtualNetworkName": "WPVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1", + "storageAccountName": "[replace(replace(tolower(concat(parameters('storageAccountNamePrefix'), uniquestring(resourceGroup().id))), '-',''),'.','')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[replace(replace(tolower(concat(parameters('storageAccountNamePrefix'), uniquestring(resourceGroup().id))), '-',''),'.','')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-11" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "WPVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIP", + "Microsoft.Network/virtualNetworks//WPVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[replace(replace(tolower(concat(parameters('storageAccountNamePrefix'), uniquestring(resourceGroup().id))), '-',''),'.','')]", + "Microsoft.Network/networkInterfaces//VMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-11", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-11_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-11/newuserscript", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-11" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('configure-eth-cpp.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh configure-eth-cpp.sh GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1500 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1500 new file mode 100644 index 0000000..c0b4eb5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1500 @@ -0,0 +1,169 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azure-bastion/azuredeploy.json", + "/quickstarts/microsoft.network/azure-bastion/azuredeploy.parameters.json" + ], + "timestamp": 1642962908483, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azure-bastion/azuredeploy.json", + "/quickstarts/microsoft.network/azure-bastion/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1500", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworks/subnets", + "microsoft.network/bastionhosts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1500", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "739219365683048694" + } + }, + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "vnet01", + "metadata": { + "description": "Name of new or existing vnet to which Azure Bastion should be deployed" + } + }, + "vnetIpPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "IP prefix for available addresses in vnet address space" + } + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Specify whether to provision new vnet or deploy to existing vnet" + } + }, + "bastionSubnetIpPrefix": { + "type": "string", + "defaultValue": "10.1.1.0/27", + "metadata": { + "description": "Bastion subnet IP prefix MUST be within vnet IP prefix address space" + } + }, + "bastionHostName": { + "type": "string", + "metadata": { + "description": "Name of Azure Bastion resource" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region for Bastion and virtual network" + } + } + }, + "functions": [], + "variables": { + "publicIpAddressName": "[format('{0}-pip', parameters('bastionHostName'))]", + "bastionSubnetName": "AzureBastionSubnet" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "[format('{0}-pip', parameters('bastionHostName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "vnet01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "10.1.1.0/27" + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}', parameters('vnetName'), variables('bastionSubnetName'))]", + "properties": { + "addressPrefix": "10.1.1.0/27" + } + }, + { + "type": "Microsoft.Network/bastionHosts", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet01/AzureBastionSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[format('{0}-pip', parameters('bastionHostName'))]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet01", + "Microsoft.Network/publicIPAddresses/[format('{0}-pip', parameters('bastionHostName'))]", + "Microsoft.Network/virtualNetworks/subnets/vnet01/AzureBastionSubnet" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1501 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1501 new file mode 100644 index 0000000..7aa7fc6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1501 @@ -0,0 +1,328 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azure-bastion-nsg/azuredeploy.json", + "/quickstarts/microsoft.network/azure-bastion-nsg/azuredeploy.parameters.json" + ], + "timestamp": 1642962908492, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azure-bastion-nsg/azuredeploy.json", + "/quickstarts/microsoft.network/azure-bastion-nsg/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1501", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.network/bastionhosts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1501", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnet-name": { + "type": "string", + "defaultValue": "vnet01", + "metadata": { + "description": "Name of new or existing vnet to which Azure Bastion should be deployed" + } + }, + "vnet-ip-prefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "IP prefix for available addresses in vnet address space" + } + }, + "vnet-new-or-existing": { + "type": "string", + "allowedValues": [ + "new", + "existing" + ], + "defaultValue": "new", + "metadata": { + "description": "Specify whether to provision new vnet or deploy to existing vnet" + } + }, + "bastion-subnet-ip-prefix": { + "type": "string", + "defaultValue": "10.1.1.0/27", + "metadata": { + "description": "Bastion subnet IP prefix MUST be within vnet IP prefix address space" + } + }, + "bastion-host-name": { + "type": "string", + "metadata": { + "description": "Name of Azure Bastion resource" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region for Bastion and virtual network" + } + } + }, + "variables": { + "public-ip-address-name": "GEN-UNIQUE-8-pip", + "bastion-subnet-name": "AzureBastionSubnet", + "nsg-name": "GEN-UNIQUE-8-nsg" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIpAddresses", + "name": "GEN-UNIQUE-8-pip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-8-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowHttpsInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "Internet", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "AllowGatewayManagerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "GatewayManager", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "AllowLoadBalancerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "AllowBastionHostCommunicationInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "AllowSshRdpOutBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRanges": [ + "22", + "3389" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "AllowAzureCloudCommunicationOutBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "443", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 110, + "direction": "Outbound" + } + }, + { + "name": "AllowBastionHostCommunicationOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Outbound" + } + }, + { + "name": "AllowGetSessionInformationOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "destinationPortRanges": [ + "80", + "443" + ], + "access": "Allow", + "priority": 130, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 1000, + "direction": "Outbound" + } + } + ] + } + }, + { + "condition": false, + "apiVersion": "2020-07-01", + "name": "vnet01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "10.1.1.0/27", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + } + } + } + ] + } + }, + { + "condition": false, + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "vnet01/AzureBastionSubnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + ], + "properties": { + "addressPrefix": "10.1.1.0/27", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/bastionHosts", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-8-pip", + "Microsoft.Network/virtualNetworks/vnet01", + "Microsoft.Network/virtualNetworks/subnets/vnet01/AzureBastionSubnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet01/AzureBastionSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-8-pip" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1502 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1502 new file mode 100644 index 0000000..8d82fac --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1502 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azure-dns-new-zone/azuredeploy.json", + "/quickstarts/microsoft.network/azure-dns-new-zone/azuredeploy.parameters.json" + ], + "timestamp": 1642962908501, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azure-dns-new-zone/azuredeploy.json", + "/quickstarts/microsoft.network/azure-dns-new-zone/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1502", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/dnszones", + "microsoft.network/dnszones/a" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1502", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newZoneName": { + "type": "string", + "defaultValue": "[concat(uniqueString(resourceGroup().id), '.azurequickstart.org')]", + "metadata": { + "description": "The name of the DNS zone to be created. Must have at least 2 segements, e.g. hostname.org" + } + }, + "newRecordName": { + "type": "string", + "defaultValue": "www", + "metadata": { + "description": "The name of the DNS record to be created. The name is relative to the zone, not the FQDN." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/dnsZones", + "apiVersion": "2018-05-01", + "name": "[concat(uniqueString(resourceGroup().id), '.azurequickstart.org')]", + "location": "global" + }, + { + "type": "Microsoft.Network/dnsZones/A", + "apiVersion": "2018-05-01", + "name": "[concat(uniqueString(resourceGroup().id), '.azurequickstart.org')]/www", + "location": "global", + "dependsOn": [ + "[concat(uniqueString(resourceGroup().id), '.azurequickstart.org')]" + ], + "properties": { + "TTL": 3600, + "ARecords": [ + { + "ipv4Address": "1.2.3.4" + }, + { + "ipv4Address": "1.2.3.5" + } + ] + } + } + ], + "outputs": { + "nameServers": { + "type": "array", + "value": "[reference(parameters('newZoneName')).nameServers]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1503 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1503 new file mode 100644 index 0000000..3d9b278 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1503 @@ -0,0 +1,2756 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azure-firewall-dns-proxy/azuredeploy.json", + "/quickstarts/microsoft.network/azure-firewall-dns-proxy/azuredeploy.parameters.json" + ], + "timestamp": 1642962908509, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azure-firewall-dns-proxy/azuredeploy.json", + "/quickstarts/microsoft.network/azure-firewall-dns-proxy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1503", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/bastionhosts", + "microsoft.network/privateendpoints", + "microsoft.compute/availabilitysets", + "microsoft.network/routetables", + "microsoft.network/azurefirewalls", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/firewallpolicies/rulecollectiongroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.network/networksecuritygroups", + "microsoft.network/firewallpolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1503", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adlsStorageAccountName": { + "type": "string", + "defaultValue": "[concat('adls', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique DNS Name for the ADLS Gen 2 storage account." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('blob', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the test file system and the boot diagnostics logs of the virtual machines." + } + }, + "adlsStorageAccountNetworkAclsDefaultAction": { + "type": "string", + "defaultValue": "Deny", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "Specifies the default action of allow or deny when no other rules match for the ADLS storage account." + } + }, + "blobStorageAccountNetworkAclsDefaultAction": { + "type": "string", + "defaultValue": "Deny", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "Allow or disallow public access to all blobs or containers in the Blob storage account. The default interpretation is true for this property." + } + }, + "adlsStorageAccountAllowBlobPublicAccess": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Allow or disallow public access to all blobs or containers in the ADLS storage account. The default interpretation is true for this property." + } + }, + "blobStorageAccountAllowBlobPublicAccess": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Allow or disallow public access to all blobs or containers in the Blob storage account. The default interpretation is true for this property." + } + }, + "deployCustomDnsForwarder": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specify whether deploy a custom DNS forwarder in the Hub Virtual Network. Default value is false." + } + }, + "dnsAvailabilitySetName": { + "type": "string", + "defaultValue": "[concat('availabilityset', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Availability Set used by the DNS virtual machine." + } + }, + "dnsVmName": { + "type": "string", + "defaultValue": "DnsVm", + "metadata": { + "description": "Specifies the name of the DNS virtual machine." + } + }, + "devVmName": { + "type": "string", + "defaultValue": "DevVm", + "metadata": { + "description": "Specifies the name of the virtual machine in the Development Virtual Network." + } + }, + "prodVmName": { + "type": "string", + "defaultValue": "ProdVm", + "metadata": { + "description": "Specifies the name of the virtual machine in the Production Virtual Network." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "16.04.0-LTS", + "18.04-LTS" + ], + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "Premium_ZRS", + "StandardSSD_LRS", + "StandardSSD_ZRS", + "Standard_LRS" + ], + "metadata": { + "description": "Defines the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "The size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Specifies the base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Specifies the sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "adlsStorageAccountAdlsPrivateEndpointName": { + "type": "string", + "defaultValue": "AdlsStorageAccountAdlsPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the adls private endpoint to the adls storage account." + } + }, + "adlsStorageAccountBlobPrivateEndpointName": { + "type": "string", + "defaultValue": "AdlsStorageAccountBlobPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the blob private endpoint to the adls storage account." + } + }, + "blobStorageAccountBlobPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountBlobPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the blob private endpoint to the boot diagnostics storage account." + } + }, + "privateDnsZoneName": { + "type": "string", + "defaultValue": "contoso.corp", + "metadata": { + "description": "Private DNS Zone name." + } + }, + "workspaceName": { + "type": "string", + "defaultValue": "[concat('loganalytics', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "the name of the Log Analytics workspace." + } + }, + "workspaceSku": { + "type": "string", + "defaultValue": "PerGB2018", + "allowedValues": [ + "Free", + "Standard", + "Premium", + "PerNode", + "PerGB2018", + "Standalone", + "CapacityReservation" + ], + "metadata": { + "description": "The sku of the Log Analytics workspace." + } + }, + "firewallName": { + "type": "string", + "defaultValue": "HubFirewall", + "metadata": { + "description": "The name of the Azure Firewall." + } + }, + "firewallAvailabilityZones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "numberOfFirewallPublicIPAddresses": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of public IP addresses for the Azure Firewall" + } + }, + "createDnatRuleCollection": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether create DNAT rule collection in the Azure Firewall policy or not." + } + }, + "deployVpnGateway": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether deploy a VPN Gateway in the Hub or not." + } + }, + "gatewaySku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Basic", + "HighPerformance", + "Standard", + "UltraPerformance", + "VpnGw1", + "VpnGw2", + "VpnGw3", + "VpnGw4", + "VpnGw5", + "VpnGw1AZ", + "VpnGw2AZ", + "VpnGw3AZ", + "VpnGw4AZ", + "VpnGw5AZ", + "ErGw1AZ", + "ErGw2AZ", + "ErGw3AZ" + ], + "metadata": { + "description": "The SKU of the Gateway, if deployed" + } + }, + "gatewayType": { + "type": "string", + "defaultValue": "Vpn", + "allowedValues": [ + "Vpn", + "ExpressRoute" + ], + "metadata": { + "description": "The type of this virtual network gateway. - Vpn or ExpressRoute" + } + }, + "vpnType": { + "type": "string", + "defaultValue": "RouteBased", + "allowedValues": [ + "PolicyBased", + "RouteBased" + ], + "metadata": { + "description": "The type of this virtual network gateway. - PolicyBased or RouteBased" + } + }, + "enableBgp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Whether BGP is enabled for this virtual network gateway or not." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "hubVnetName": { + "type": "string", + "defaultValue": "HubVnet" + }, + "hubVnetAddressPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/16" + }, + "hubVnetFirewallSubnetName": { + "type": "string", + "defaultValue": "AzureFirewallSubnet", + "metadata": { + "description": "The name of the Firewall subnet." + } + }, + "hubVnetFirewallSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/26", + "metadata": { + "description": "The address prefix of the Firewall subnet." + } + }, + "hubVnetCommonSubnetName": { + "type": "string", + "defaultValue": "CommonSubnet", + "metadata": { + "description": "The name of the Management subnet." + } + }, + "hubVnetCommonSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.1.0/24", + "metadata": { + "description": "The address prefix of the Management subnet." + } + }, + "hubVnetGatewaySubnetName": { + "type": "string", + "defaultValue": "GatewaySubnet", + "metadata": { + "description": "The name of the Development Virtual Network." + } + }, + "hubVnetGatewaySubnetPrefix": { + "type": "string", + "defaultValue": "192.168.15.224/27", + "metadata": { + "description": "The address prefix of the Gateway subnet." + } + }, + "gatewayName": { + "type": "string", + "defaultValue": "HubVpnGateway", + "metadata": { + "description": "The name of gateway." + } + }, + "devVnetName": { + "type": "string", + "defaultValue": "DevelopmentVNet", + "metadata": { + "description": "The name of the Development Virtual Network." + } + }, + "devVnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The address prefix of the Development Virtual Network." + } + }, + "prodVnetName": { + "type": "string", + "defaultValue": "ProductionVNet", + "metadata": { + "description": "The name of the Production Virtual Network." + } + }, + "prodVnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "The address prefix of the Production Virtual Network." + } + }, + "devVnetDefaultSubnetName": { + "type": "string", + "defaultValue": "DefaultSubnet", + "metadata": { + "description": "The name of the Workload subnet." + } + }, + "devVNetDefaultSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The address prefix of the Workload subnet in the Development Virtual Network." + } + }, + "prodVnetDefaultSubnetName": { + "type": "string", + "defaultValue": "DefaultSubnet", + "metadata": { + "description": "The name of the Workload subnet." + } + }, + "prodVNetDefaultSubnetPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "The address prefix of the Workload subnet in the Production Virtual Network." + } + }, + "hubVnetBastionSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.4.0/24", + "metadata": { + "description": "Specifies the Bastion subnet IP prefix. This prefix must be within vnet IP prefix address space." + } + }, + "bastionHostName": { + "type": "string", + "defaultValue": "[concat('bastion', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Azure Bastion resource." + } + }, + "firewallPolicyName": { + "type": "string", + "defaultValue": "[concat(parameters('firewallName'), 'Policy')]", + "metadata": { + "description": "The name of the Firewall Policy uased by the Azure Firewall" + } + } + }, + "variables": { + "bastionPublicIpAddressName": "[concat('bastion', uniqueString(resourceGroup().id))]PublicIp", + "bastionPublicIpAddressId": "Microsoft.Network/publicIPAddresses/[concat('bastion', uniqueString(resourceGroup().id))]PublicIp", + "bastionSubnetName": "AzureBastionSubnet", + "bastionSubnetId": "Microsoft.Network/virtualNetworks/subnets/HubVnet/AzureBastionSubnet", + "gatewayPublicIpName": "HubVpnGatewayPublicIp", + "hubVnetGatewaySubnetId": "Microsoft.Network/virtualNetworks/subnets/HubVnet/GatewaySubnet", + "hubVnetCommonSubnetId": "Microsoft.Network/virtualNetworks/subnets/HubVnet/CommonSubnet", + "hubVnetFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/HubVnet/AzureFirewallSubnet", + "devVnetDefaultSubnetId": "Microsoft.Network/virtualNetworks/subnets/DevelopmentVNet/DefaultSubnet", + "prodVnetDefaultSubnetId": "Microsoft.Network/virtualNetworks/subnets/ProductionVNet/DefaultSubnet", + "hubVnetId": "Microsoft.Network/virtualNetworks/HubVnet", + "devVnetId": "Microsoft.Network/virtualNetworks/DevelopmentVNet", + "prodVnetId": "Microsoft.Network/virtualNetworks/ProductionVNet", + "gatewayId": "Microsoft.Network/virtualNetworkGateways/HubVpnGateway", + "dnsVmNicName": "DnsVmNic", + "devVmNicName": "DevVmNic", + "prodVmNicName": "ProdVmNic", + "dnsVmNicId": "Microsoft.Network/networkInterfaces/DnsVmNic", + "devVmNicId": "Microsoft.Network/networkInterfaces/DevVmNic", + "prodVmNicId": "Microsoft.Network/networkInterfaces/ProdVmNic", + "dnsVmId": "Microsoft.Compute/virtualMachines/DnsVm", + "devVmId": "Microsoft.Compute/virtualMachines/DevVm", + "prodVmId": "Microsoft.Compute/virtualMachines/ProdVm", + "gatewayPublicIpId": "Microsoft.Network/publicIPAddresses/HubVpnGatewayPublicIp", + "hubVnetCommonSubnetNsgName": "HubVnetCommonSubnetNsg", + "hubVnetBastionSubnetNsgName": "HubVnetAzureBastionSubnetNsg", + "devVnetDefaultSubnetNsgName": "DevelopmentVNetDefaultSubnetNsg", + "prodVnetDefaultSubnetNsgName": "ProductionVNetDefaultSubnetNsg", + "hubVnetCommonSubnetNsgId": "Microsoft.Network/networkSecurityGroups/HubVnetCommonSubnetNsg", + "hubVnetBastionSubnetNsgId": "Microsoft.Network/networkSecurityGroups/HubVnetAzureBastionSubnetNsg", + "devVnetDefaultSubnetNsgId": "Microsoft.Network/networkSecurityGroups/DevelopmentVNetDefaultSubnetNsg", + "prodVnetDefaultSubnetNsgId": "Microsoft.Network/networkSecurityGroups/ProductionVNetDefaultSubnetNsg", + "devVnetDefaultSubnetRouteTableName": "DevelopmentVNetDefaultSubnetRouteTable", + "prodVnetDefaultSubnetRouteTableName": "ProductionVNetDefaultSubnetRouteTable", + "devVnetDefaultSubnetRouteTableId": "Microsoft.Network/routeTables/DevelopmentVNetDefaultSubnetRouteTable", + "prodVnetDefaultSubnetRouteTableId": "Microsoft.Network/routeTables/ProductionVNetDefaultSubnetRouteTable", + "firewallPublicIPNamePrefix": "HubFirewallPublicIP", + "azureFirewallPublicIpId": "Microsoft.Network/publicIPAddresses/HubFirewallPublicIP", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('hubVnetFirewallSubnetId')))]", + "firewallId": "Microsoft.Network/azureFirewalls/HubFirewall", + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/contoso.corp", + "workspaceId": "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "firewallPolicyId": "Microsoft.Network/firewallPolicies/[concat(parameters('firewallName'), 'Policy')]", + "firewallPolicyDefaultNetworkRuleCollectionGroupName": "HubFirewallPolicy", + "firewallPolicyDefaultDnatRuleCollectionGroupName": "HubFirewallPolicy", + "firewallPolicyDefaultNetworkRuleCollectionGroupId": "Microsoft.Network/firewallPolicies/ruleCollectionGroups/[concat(parameters('firewallName'), 'Policy')]/DefaultNetworkRuleCollectionGroup", + "devContributorRoleAssignmentGuid": "[guid(concat('devcontributor', resourceGroup().id, parameters('devVmName')))]", + "prodContributorRoleAssignmentGuid": "[guid(concat('prodcontributor', resourceGroup().id, parameters('prodVmName')))]", + "devContributorRoleAssignmentId": "Microsoft.Authorization/roleAssignments/[guid(concat('devcontributor', resourceGroup().id, parameters('devVmName')))]", + "prodContributorRoleAssignmentId": "Microsoft.Authorization/roleAssignments/[guid(concat('prodcontributor', resourceGroup().id, parameters('prodVmName')))]", + "devStorageBlobDataContributorRoleAssignmentGuid": "[guid(concat('devStorageBlobDataContributor', resourceGroup().id, parameters('devVmName')))]", + "prodStorageBlobDataContributorRoleAssignmentGuid": "[guid(concat('prodStorageBlobDataContributor', resourceGroup().id, parameters('prodVmName')))]", + "devStorageBlobDataContributorRoleAssignmentId": "Microsoft.Authorization/roleAssignments/[guid(concat('devStorageBlobDataContributor', resourceGroup().id, parameters('devVmName')))]", + "prodStorageBlobDataContributorRoleAssignmentId": "Microsoft.Authorization/roleAssignments/[guid(concat('prodStorageBlobDataContributor', resourceGroup().id, parameters('prodVmName')))]", + "contributorRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "storageBlobDataContributorRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "dnsCustomScriptId": "Microsoft.Compute/virtualMachines/extensions/DnsVm/CustomScript", + "devCustomScriptId": "Microsoft.Compute/virtualMachines/extensions/DevVm/CustomScript", + "prodCustomScriptId": "Microsoft.Compute/virtualMachines/extensions/ProdVm/CustomScript", + "dnsOmsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/DnsVm/LogAnalytics", + "devOmsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/DevVm/LogAnalytics", + "prodOmsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/ProdVm/LogAnalytics", + "dnsAvailabilitySetId": "Microsoft.Compute/availabilitySets/[concat('availabilityset', uniqueString(resourceGroup().id))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "adlsStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('adls', uniqueString(resourceGroup().id))]", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('blob', uniquestring(resourceGroup().id))]", + "adlsPublicDNSZoneForwarder": "[concat('.dfs.', environment().suffixes.storage)]", + "blobPublicDNSZoneForwarder": "[concat('.blob.', environment().suffixes.storage)]", + "adlsPrivateDnsZoneName": "[concat('privatelink', variables('adlsPublicDNSZoneForwarder'))]", + "blobPrivateDnsZoneName": "[concat('privatelink', variables('blobPublicDNSZoneForwarder'))]", + "adlsPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('adlsPrivateDnsZoneName'))]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "adlsServicePrimaryEndpoint": "[concat(parameters('adlsStorageAccountName'), variables('adlsPublicDNSZoneForwarder'))]", + "blobServicePrimaryEndpoint": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]", + "adlsStorageAccountAdlsPrivateEndpointId": "Microsoft.Network/privateEndpoints/AdlsStorageAccountAdlsPrivateEndpoint", + "adlsStorageAccountBlobPrivateEndpointId": "Microsoft.Network/privateEndpoints/AdlsStorageAccountBlobPrivateEndpoint", + "blobStorageAccountBlobPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountBlobPrivateEndpoint", + "adlsGroupName": "dfs", + "blobGroupName": "blob", + "dnsVmScriptFileName": "configure-custom-dns-forwarder.sh", + "testVmScriptFileName": "test-dns-and-private-endpoints.sh", + "dnsVmScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/', variables('dnsVmScriptFileName'), parameters('_artifactsLocationSasToken')))]", + "testVmScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/', variables('testVmScriptFileName'), parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('adls', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "StorageV2", + "properties": { + "networkAcls": { + "defaultAction": "Deny", + "bypass": "AzureServices" + }, + "allowBlobPublicAccess": true + } + }, + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('blob', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "networkAcls": { + "defaultAction": "Deny", + "bypass": "AzureServices" + }, + "allowBlobPublicAccess": true + } + }, + { + "comments": "Network Security Group for the Subnets of the Hub Virtual Network", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "HubVnetCommonSubnetNsg", + "location": "[resourceGroup().location]", + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/HubVnetCommonSubnetNsg", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "comments": "Network Security Group for the Subnets of the Development Virtual Network", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "DevelopmentVNetDefaultSubnetNsg", + "location": "[resourceGroup().location]", + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/DevelopmentVNetDefaultSubnetNsg", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "comments": "Network Security Group for the Subnets of the Production Virtual Network", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "ProductionVNetDefaultSubnetNsg", + "location": "[resourceGroup().location]", + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/ProductionVNetDefaultSubnetNsg", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "comments": "Network Security Group for Azure Bastion", + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "HubVnetAzureBastionSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowHttpsInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "Internet", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "AllowGatewayManagerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "GatewayManager", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "AllowLoadBalancerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "AllowBastionHostCommunicationInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "AllowSshRdpOutBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRanges": [ + "22", + "3389" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "AllowAzureCloudCommunicationOutBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "443", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 110, + "direction": "Outbound" + } + }, + { + "name": "AllowBastionHostCommunicationOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Outbound" + } + }, + { + "name": "AllowGetSessionInformationOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "destinationPortRanges": [ + "80", + "443" + ], + "access": "Allow", + "priority": 130, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 1000, + "direction": "Outbound" + } + } + ] + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/HubVnetAzureBastionSubnetNsg", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "comments": "Azure Bastion Public IP Address", + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('bastionPublicIpAddressName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "comments": "Azure Bastion Host", + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/bastionHosts", + "name": "[concat('bastion', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[concat('bastion', uniqueString(resourceGroup().id))]PublicIp", + "Microsoft.Network/virtualNetworks/HubVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IpConfiguration", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/HubVnet/AzureBastionSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat('bastion', uniqueString(resourceGroup().id))]PublicIp" + } + } + } + ] + } + }, + { + "comments": "Hub Virtual Network", + "type": "Microsoft.Network/virtualNetworks", + "name": "HubVnet", + "apiVersion": "2020-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/HubVnetCommonSubnetNsg", + "Microsoft.Network/networkSecurityGroups/HubVnetAzureBastionSubnetNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.0.0/16" + ] + }, + "subnets": [ + { + "name": "CommonSubnet", + "properties": { + "addressPrefix": "192.168.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/HubVnetCommonSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "192.168.4.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/HubVnetAzureBastionSubnetNsg" + } + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "192.168.15.224/27" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "192.168.0.0/26" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "comments": "Development Virtual Network", + "type": "Microsoft.Network/virtualNetworks", + "name": "DevelopmentVNet", + "apiVersion": "2020-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/azureFirewalls/HubFirewall", + "Microsoft.Network/networkSecurityGroups/DevelopmentVNetDefaultSubnetNsg", + "Microsoft.Network/routeTables/DevelopmentVNetDefaultSubnetRouteTable" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "dhcpOptions": { + "dnsServers": [ + "[reference(variables('firewallId')).ipConfigurations[0].properties.privateIPAddress]" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/DevelopmentVNetDefaultSubnetRouteTable" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DevelopmentVNetDefaultSubnetNsg" + } + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "comments": "Production Virtual Network", + "type": "Microsoft.Network/virtualNetworks", + "name": "ProductionVNet", + "apiVersion": "2020-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/azureFirewalls/HubFirewall", + "Microsoft.Network/networkSecurityGroups/ProductionVNetDefaultSubnetNsg", + "Microsoft.Network/routeTables/ProductionVNetDefaultSubnetRouteTable" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "dhcpOptions": { + "dnsServers": [ + "[reference(variables('firewallId')).ipConfigurations[0].properties.privateIPAddress]" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/ProductionVNetDefaultSubnetRouteTable" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ProductionVNetDefaultSubnetNsg" + } + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "comments": "Virtual network peering from the Hub Virtual Network to the Development Virtual Network", + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "HubVnet/HubVnetToDevelopmentVNetPeering", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/HubVnet", + "Microsoft.Network/virtualNetworks/DevelopmentVNet", + "Microsoft.Network/virtualNetworkGateways/HubVpnGateway" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/DevelopmentVNet" + } + } + }, + { + "comments": "Virtual network peering from the Hub Virtual Network to the Production Virtual Network", + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "HubVnet/HubVnetToProductionVNetPeering", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/HubVnet", + "Microsoft.Network/virtualNetworks/ProductionVNet", + "Microsoft.Network/virtualNetworkGateways/HubVpnGateway" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/ProductionVNet" + } + } + }, + { + "comments": "Virtual network peering from the Development Virtual Network to the Hub Virtual Network", + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "DevelopmentVNet/DevelopmentVNetToHubVnetPeering", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/HubVnet", + "Microsoft.Network/virtualNetworks/DevelopmentVNet", + "Microsoft.Network/virtualNetworkGateways/HubVpnGateway" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/HubVnet" + } + } + }, + { + "comments": "Virtual Network Peering from the Production Virtual Network to the Hub Virtual Network", + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "ProductionVNet/ProductionVNetToHubVnetPeering", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/HubVnet", + "Microsoft.Network/virtualNetworks/ProductionVNet", + "Microsoft.Network/virtualNetworkGateways/HubVpnGateway" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/HubVnet" + } + } + }, + { + "comments": "Virtual Network Gateway Public IP Address", + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-04-01", + "name": "HubVpnGatewayPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Virtual Network Gateway", + "condition": false, + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-04-01", + "name": "HubVpnGateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/HubVpnGatewayPublicIp", + "Microsoft.Network/virtualNetworks/HubVnet" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/HubVnet/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/HubVpnGatewayPublicIp" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": false + } + }, + { + "condition": false, + "type": "Microsoft.Compute/availabilitySets", + "comments": "Thi is the availability set for creating a HA cluster, run the template multiple times to get multiple DNS servers", + "name": "[concat('availabilityset', uniqueString(resourceGroup().id))]", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + } + }, + { + "condition": false, + "type": "Microsoft.Network/networkInterfaces", + "name": "DnsVmNic", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/HubVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "vmIpConfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/HubVnet/CommonSubnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Compute/virtualMachines", + "name": "DnsVm", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/availabilitySets/[concat('availabilityset', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateEndpoints/BlobStorageAccountBlobPrivateEndpoint", + "Microsoft.Network/networkInterfaces/DnsVmNic" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/[concat('availabilityset', uniqueString(resourceGroup().id))]" + }, + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "DnsVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "DnsVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 100, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 10, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('dnsVmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/DnsVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "DnsVm/CustomScript", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/DnsVm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', variables('dnsVmScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "./configure-custom-dns-forwarder.sh" + } + } + }, + { + "condition": false, + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "DnsVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/DnsVm", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/virtualMachines/extensions/DnsVm/CustomScript" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "condition": false, + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "DnsVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/DnsVm", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/virtualMachines/extensions/DnsVm/CustomScript", + "Microsoft.Compute/virtualMachines/extensions/DnsVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "DevVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/DevelopmentVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/DevelopmentVNet/DefaultSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-04-01-preview", + "type": "Microsoft.Authorization/roleAssignments", + "name": "[guid(concat('devcontributor', resourceGroup().id, parameters('devVmName')))]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/DevVm" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "[reference(variables('devVmId'), '2020-06-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]" + } + }, + { + "apiVersion": "2020-04-01-preview", + "type": "Microsoft.Authorization/roleAssignments", + "name": "[guid(concat('devStorageBlobDataContributor', resourceGroup().id, parameters('devVmName')))]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/DevVm" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "principalId": "[reference(variables('devVmId'), '2020-06-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "DevVm", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/privateEndpoints/AdlsStorageAccountAdlsPrivateEndpoint", + "Microsoft.Network/privateEndpoints/AdlsStorageAccountBlobPrivateEndpoint", + "Microsoft.Network/privateEndpoints/BlobStorageAccountBlobPrivateEndpoint", + "Microsoft.Network/networkInterfaces/DevVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "DevVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "DevVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 100, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 10, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('devVmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/DevVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "DevVm/CustomScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/DevVm", + "Microsoft.Authorization/roleAssignments/[guid(concat('devcontributor', resourceGroup().id, parameters('devVmName')))]", + "Microsoft.Authorization/roleAssignments/[guid(concat('devStorageBlobDataContributor', resourceGroup().id, parameters('devVmName')))]", + "Microsoft.Network/firewallPolicies/ruleCollectionGroups/[concat(parameters('firewallName'), 'Policy')]/DefaultNetworkRuleCollectionGroup" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.1", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', variables('testVmScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', variables('testVmScriptFileName'), ' ', parameters('privateDnsZoneName'), ' ', parameters('devVmName'), ' ', parameters('prodVmName'), ' ', variables('adlsServicePrimaryEndpoint'), ' ', variables('blobServicePrimaryEndpoint'))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "DevVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/DevVm", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/virtualMachines/extensions/DevVm/CustomScript" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "DevVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/DevVm", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/virtualMachines/extensions/DevVm/CustomScript", + "Microsoft.Compute/virtualMachines/extensions/DevVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "ProdVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/ProductionVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/ProductionVNet/DefaultSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-04-01-preview", + "type": "Microsoft.Authorization/roleAssignments", + "name": "[guid(concat('prodcontributor', resourceGroup().id, parameters('prodVmName')))]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ProdVm" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "[reference(variables('prodVmId'), '2020-06-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]" + } + }, + { + "apiVersion": "2020-04-01-preview", + "type": "Microsoft.Authorization/roleAssignments", + "name": "[guid(concat('prodStorageBlobDataContributor', resourceGroup().id, parameters('prodVmName')))]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ProdVm" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "principalId": "[reference(variables('prodVmId'), '2020-06-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "ProdVm", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/privateEndpoints/AdlsStorageAccountAdlsPrivateEndpoint", + "Microsoft.Network/privateEndpoints/AdlsStorageAccountBlobPrivateEndpoint", + "Microsoft.Network/privateEndpoints/BlobStorageAccountBlobPrivateEndpoint", + "Microsoft.Network/networkInterfaces/ProdVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "ProdVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "ProdVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 100, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 10, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('prodVmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ProdVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "ProdVm/CustomScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ProdVm", + "Microsoft.Authorization/roleAssignments/[guid(concat('prodcontributor', resourceGroup().id, parameters('prodVmName')))]", + "Microsoft.Authorization/roleAssignments/[guid(concat('prodStorageBlobDataContributor', resourceGroup().id, parameters('prodVmName')))]", + "Microsoft.Network/firewallPolicies/ruleCollectionGroups/[concat(parameters('firewallName'), 'Policy')]/DefaultNetworkRuleCollectionGroup" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.1", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', variables('testVmScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', variables('testVmScriptFileName'), ' ', parameters('privateDnsZoneName'), ' ', parameters('devVmName'), ' ', parameters('prodVmName'), ' ', variables('adlsServicePrimaryEndpoint'), ' ', variables('blobServicePrimaryEndpoint'))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "ProdVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ProdVm", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/virtualMachines/extensions/ProdVm/CustomScript" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "ProdVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ProdVm", + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]", + "Microsoft.Compute/virtualMachines/extensions/ProdVm/CustomScript", + "Microsoft.Compute/virtualMachines/extensions/ProdVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "comments": "Azure Firewall Public IP Addresses", + "name": "[if(equals(parameters('numberOfFirewallPublicIPAddresses'), 1), variables('firewallPublicIPNamePrefix'), concat(variables('firewallPublicIPNamePrefix'), add(copyIndex(), 1)))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-04-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "publicIpCopy", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "comments": "Azure Firewall Policy", + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/firewallPolicies", + "name": "[concat(parameters('firewallName'), 'Policy')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/DnsVmNic" + ], + "properties": { + "dnsSettings": { + "enableProxy": true, + "servers": "[if(parameters('deployCustomDnsForwarder'), createArray(reference(variables('dnsVmNicId')).ipConfigurations[0].properties.privateIPAddress), createArray())]" + }, + "threatIntelMode": "Alert" + } + }, + { + "comments": "Azure Firewall", + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/azureFirewalls", + "name": "HubFirewall", + "location": "[resourceGroup().location]", + "zones": "[if(equals(length(parameters('firewallAvailabilityZones')), 0), json('null'), parameters('firewallAvailabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/firewallPolicies/[concat(parameters('firewallName'), 'Policy')]", + "Microsoft.Network/virtualNetworks/HubVnet", + "publicIpCopy" + ], + "properties": { + "copy": [ + { + "name": "ipConfigurations", + "count": 1, + "input": { + "name": "[if(equals(parameters('numberOfFirewallPublicIPAddresses'), 1), 'IpConfiguration', concat('IpConfiguration', copyIndex('ipConfigurations')))]", + "properties": { + "subnet": "[if(equals(copyIndex('ipConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[if(equals(parameters('numberOfFirewallPublicIPAddresses'), 1), variables('azureFirewallPublicIpId'), concat(variables('azureFirewallPublicIpId'), add(copyIndex('ipConfigurations'), 1)))]" + } + } + } + } + ], + "firewallPolicy": { + "id": "Microsoft.Network/firewallPolicies/[concat(parameters('firewallName'), 'Policy')]" + } + } + }, + { + "comments": "Azure Firewall Policy Network Rule Collection", + "name": "HubFirewallPolicy", + "type": "Microsoft.Network/firewallPolicies/ruleCollectionGroups", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/firewallPolicies/[concat(parameters('firewallName'), 'Policy')]", + "Microsoft.Network/azureFirewalls/HubFirewall", + "Microsoft.Network/virtualNetworks/HubVnet", + "Microsoft.Network/virtualNetworks/DevelopmentVNet", + "Microsoft.Network/virtualNetworks/ProductionVNet" + ], + "properties": { + "priority": "200", + "ruleCollections": [ + { + "name": "VnetToVnetNetworkRules", + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "priority": "100", + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "Allow-DevelopmentVNet-DefaultSubnet-To-ProductionVNet-DefaultSubnet-Traffic", + "ruleType": "NetworkRule", + "ipProtocols": [ + "Any" + ], + "sourceAddresses": [ + "10.1.0.0/16" + ], + "destinationAddresses": [ + "10.0.0.0/16" + ], + "destinationPorts": [ + "*" + ] + }, + { + "name": "Allow-ProductionVNet-DefaultSubnet-To-DevelopmentVNet-DefaultSubnet-Traffic", + "ruleType": "NetworkRule", + "ipProtocols": [ + "Any" + ], + "sourceAddresses": [ + "10.0.0.0/16" + ], + "destinationAddresses": [ + "10.1.0.0/16" + ], + "destinationPorts": [ + "*" + ] + } + ] + }, + { + "name": "VnetToInternet", + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "priority": "200", + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "Allow-HubVnet-CommonSubnet-Internet-Traffic", + "ruleType": "NetworkRule", + "ipProtocols": [ + "TCP" + ], + "sourceAddresses": [ + "192.168.1.0/24" + ], + "destinationAddresses": [ + "*" + ], + "destinationPorts": [ + "80", + "443" + ] + }, + { + "name": "Allow-ProductionVNet-DefaultSubnet-Internet-Traffic", + "ruleType": "NetworkRule", + "ipProtocols": [ + "TCP" + ], + "sourceAddresses": [ + "10.1.0.0/24" + ], + "destinationAddresses": [ + "*" + ], + "destinationPorts": [ + "80", + "443" + ] + }, + { + "name": "Allow-DevelopmentVNet-DefaultSubnet-Internet-Traffic", + "ruleType": "NetworkRule", + "ipProtocols": [ + "TCP" + ], + "sourceAddresses": [ + "10.0.0.0/24" + ], + "destinationAddresses": [ + "*" + ], + "destinationPorts": [ + "80", + "443" + ] + } + ] + } + ] + } + }, + { + "condition": true, + "comments": "Azure Firewall Policy NAT Rule Collection", + "name": "HubFirewallPolicy", + "type": "Microsoft.Network/firewallPolicies/ruleCollectionGroups", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/firewallPolicies/[concat(parameters('firewallName'), 'Policy')]", + "Microsoft.Network/azureFirewalls/HubFirewall", + "Microsoft.Network/firewallPolicies/ruleCollectionGroups/[concat(parameters('firewallName'), 'Policy')]/DefaultNetworkRuleCollectionGroup", + "Microsoft.Network/networkInterfaces/DevVmNic", + "Microsoft.Network/networkInterfaces/ProdVmNic" + ], + "properties": { + "priority": "100", + "ruleCollections": [ + { + "name": "VirtualMachineNatRules", + "ruleCollectionType": "FirewallPolicyNatRuleCollection", + "priority": "300", + "action": { + "type": "Dnat" + }, + "rules": [ + { + "name": "DevVm-Rdp-Nat-Rule", + "ruleType": "NatRule", + "sourceAddresses": [ + "*" + ], + "destinationAddresses": [ + "[reference(resourceId('Microsoft.Network/publicIPAddresses', if(equals(parameters('numberOfFirewallPublicIPAddresses'), 1), variables('firewallPublicIPNamePrefix'), concat(variables('firewallPublicIPNamePrefix'), add(copyIndex(), 1))))).ipAddress]" + ], + "destinationPorts": [ + "4001" + ], + "ipProtocols": [ + "TCP" + ], + "translatedAddress": "[reference(variables('devVmNicId')).ipConfigurations[0].properties.privateIPAddress]", + "translatedPort": "22" + }, + { + "name": "ProdVm-Rdp-Nat-Rule", + "ruleType": "NatRule", + "sourceAddresses": [ + "*" + ], + "destinationAddresses": [ + "[reference(resourceId('Microsoft.Network/publicIPAddresses', if(equals(parameters('numberOfFirewallPublicIPAddresses'), 1), variables('firewallPublicIPNamePrefix'), concat(variables('firewallPublicIPNamePrefix'), add(copyIndex(), 1))))).ipAddress]" + ], + "destinationPorts": [ + "4002" + ], + "ipProtocols": [ + "TCP" + ], + "translatedAddress": "[reference(variables('prodVmNicId')).ipConfigurations[0].properties.privateIPAddress]", + "translatedPort": "22" + } + ] + } + ] + } + }, + { + "comments": "Route Table for the Subnet(s) of the Development Virtual Network", + "type": "Microsoft.Network/routeTables", + "name": "DevelopmentVNetDefaultSubnetRouteTable", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/azureFirewalls/HubFirewall" + ], + "properties": { + "disableBgpRoutePropagation": "[not(parameters('enableBgp'))]", + "routes": [ + { + "name": "RouteTrafficToHubFirewall", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "[reference(variables('firewallId')).ipConfigurations[0].properties.privateIPAddress]" + } + } + ] + } + }, + { + "comments": "Route Table for the Subnet(s) of the Production Virtual Network", + "type": "Microsoft.Network/routeTables", + "name": "ProductionVNetDefaultSubnetRouteTable", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/azureFirewalls/HubFirewall" + ], + "properties": { + "disableBgpRoutePropagation": "[not(parameters('enableBgp'))]", + "routes": [ + { + "name": "RouteTrafficToHubFirewall", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "[reference(variables('firewallId')).ipConfigurations[0].properties.privateIPAddress]" + } + } + ] + } + }, + { + "comments": "Private DNS Zone used to the Virtual Machines in the Hub, Production, and Development Virtual Networks", + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "contoso.corp", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + }, + "resources": [ + { + "comments": "Virtual Network Link between the Private DNS Zone the Production Virtual Network", + "type": "virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "LinkToProductionVNet", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/contoso.corp", + "Microsoft.Network/virtualNetworks/ProductionVNet" + ], + "properties": { + "registrationEnabled": true, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/ProductionVNet" + } + } + }, + { + "comments": "Virtual Network Link between the Private DNS Zone the Hub Virtual Network", + "type": "virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "LinkToHubVnet", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/contoso.corp", + "Microsoft.Network/virtualNetworks/HubVnet" + ], + "properties": { + "registrationEnabled": true, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/HubVnet" + } + } + }, + { + "comments": "Virtual Network Link between the Private DNS Zone the Development Virtual Network", + "type": "virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "LinkToDevelopmentVNet", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/contoso.corp", + "Microsoft.Network/virtualNetworks/DevelopmentVNet" + ], + "properties": { + "registrationEnabled": true, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/DevelopmentVNet" + } + } + } + ] + }, + { + "comments": "Log Analytics Workspace", + "apiVersion": "2020-08-01", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "[concat('loganalytics', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "name": "AgentHealthAssessment(, parameters(workspaceName),)", + "type": "Microsoft.OperationsManagement/solutions", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//[concat('loganalytics', uniqueString(resourceGroup().id))]" + }, + "plan": { + "name": "AgentHealthAssessment(, parameters(workspaceName),)", + "publisher": "Microsoft", + "product": "OMSGallery/AgentHealthAssessment", + "promotionCode": "" + } + }, + { + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "name": "InfrastructureInsights(, parameters(workspaceName),)", + "type": "Microsoft.OperationsManagement/solutions", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//[concat('loganalytics', uniqueString(resourceGroup().id))]" + }, + "plan": { + "name": "InfrastructureInsights(, parameters(workspaceName),)", + "publisher": "Microsoft", + "product": "OMSGallery/InfrastructureInsights", + "promotionCode": "" + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "Kern", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "kern", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "Syslog", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "syslog", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "User", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "user", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "SampleSyslogCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxSyslogCollection", + "properties": { + "state": "Enabled" + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "DiskPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Used Inodes" + }, + { + "counterName": "Free Megabytes" + }, + { + "counterName": "% Used Space" + }, + { + "counterName": "Disk Transfers/sec" + }, + { + "counterName": "Disk Reads/sec" + }, + { + "counterName": "Disk Writes/sec" + }, + { + "counterName": "Disk Read Bytes/sec" + }, + { + "counterName": "Disk Write Bytes/sec" + } + ], + "objectName": "Logical Disk", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "ProcessorPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Processor Time" + }, + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "% IO Wait Time" + }, + { + "counterName": "% Idle Time" + }, + { + "counterName": "% Interrupt Time" + } + ], + "objectName": "Processor", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "ProcessPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "Used Memory" + }, + { + "counterName": "Virtual Shared Memory" + } + ], + "objectName": "Process", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "SystemPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Processes" + } + ], + "objectName": "System", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "NetworkPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Total Bytes Transmitted" + }, + { + "counterName": "Total Bytes Received" + }, + { + "counterName": "Total Bytes" + }, + { + "counterName": "Total Packets Transmitted" + }, + { + "counterName": "Total Packets Received" + }, + { + "counterName": "Total Rx Errors" + }, + { + "counterName": "Total Tx Errors" + }, + { + "counterName": "Total Collisions" + } + ], + "objectName": "Network", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "MemorydataSources", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Available MBytes Memory" + }, + { + "counterName": "% Available Memory" + }, + { + "counterName": "Used Memory MBytes" + }, + { + "counterName": "% Used Memory" + } + ], + "objectName": "Memory", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "SampleLinuxPerfCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[concat('loganalytics', uniqueString(resourceGroup().id))]" + ], + "kind": "LinuxPerformanceCollection", + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[variables('adlsPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + }, + "resources": [ + { + "type": "virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat('link_to_', toLower(parameters('HubVnetName')))]", + "location": "global", + "dependsOn": [ + "[variables('adlsPrivateDnsZoneId')]", + "[variables('hubVnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/HubVnet" + } + } + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + }, + "resources": [ + { + "type": "virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat('link_to_', toLower(parameters('HubVnetName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('hubVnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/HubVnet" + } + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "AdlsStorageAccountAdlsPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/HubVnet", + "Microsoft.Storage/storageAccounts/[concat('adls', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "AdlsStorageAccountAdlsPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('adls', uniqueString(resourceGroup().id))]", + "groupIds": [ + "dfs" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/HubVnet/CommonSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "PrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('adlsPrivateDnsZoneId')]", + "[variables('adlsStorageAccountAdlsPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('adlsPrivateDnsZoneId')]" + } + } + ] + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "AdlsStorageAccountBlobPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/HubVnet", + "Microsoft.Storage/storageAccounts/[concat('adls', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "AdlsStorageAccountBlobPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('adls', uniqueString(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/HubVnet/CommonSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "PrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "BlobPrivateDnsZoneId", + "Microsoft.Network/privateEndpoints/AdlsStorageAccountBlobPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "BlobPrivateDnsZoneId" + } + } + ] + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "BlobStorageAccountBlobPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/HubVnet", + "Microsoft.Storage/storageAccounts/[concat('blob', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountBlobPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('blob', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/HubVnet/CommonSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "PrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountBlobPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1504 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1504 new file mode 100644 index 0000000..ab7fc62 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1504 @@ -0,0 +1,336 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-apprule-netrule-ipgroups/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-apprule-netrule-ipgroups/azuredeploy.parameters.json" + ], + "timestamp": 1642962908530, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-apprule-netrule-ipgroups/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-apprule-netrule-ipgroups/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1504", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/firewallpolicies/rulecollectiongroups", + "microsoft.network/firewallpolicies", + "microsoft.network/ipgroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1504", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "[concat('vnet', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Virtual network name" + }, + "value": "GEN-VNET-TEST-01" + }, + "firewallName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Azure Firewall name" + }, + "value": "GEN-FIREWALL-TEST-01" + }, + "numberOfPublicIPAddresses": { + "type": "int", + "defaultValue": 2, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of public IP addresses for the Azure Firewall" + } + }, + "availabilityZones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "infraipgroup": { + "defaultValue": "[concat(parameters('location'),'-infra-ipgroup','-',uniqueString(resourceGroup().id))]", + "type": "String" + }, + "workloadipgroup": { + "defaultValue": "[concat(parameters('location'),'-workload-ipgroup','-',uniqueString(resourceGroup().id))]", + "type": "String" + }, + "firewallPolicyName": { + "defaultValue": "[concat(parameters('firewallName'),'-','firewallPolicy')]", + "type": "String" + } + }, + "variables": { + "vnetAddressPrefix": "10.10.0.0/24", + "azureFirewallSubnetPrefix": "10.10.0.0/25", + "publicIPNamePrefix": "publicIP", + "azurepublicIpname": "publicIP", + "azureFirewallSubnetName": "AzureFirewallSubnet", + "azureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-TEST-01/AzureFirewallSubnet", + "azureFirewallPublicIpId": "Microsoft.Network/publicIPAddresses/publicIP", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]", + "copy": [ + { + "name": "azureFirewallIpConfigurations", + "count": 2, + "input": { + "name": "[concat('IpConf', copyIndex('azureFirewallIpConfigurations'))]", + "properties": { + "subnet": "[if(equals(copyIndex('azureFirewallIpConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[concat(variables('azureFirewallPublicIpId'), add(copyIndex('azureFirewallIpConfigurations'), 1))]" + } + } + } + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/ipGroups", + "apiVersion": "2019-12-01", + "name": "[concat(parameters('location'),'-workload-ipgroup','-',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "ipAddresses": [ + "10.20.0.0/24", + "10.30.0.0/24" + ] + } + }, + { + "type": "Microsoft.Network/ipGroups", + "apiVersion": "2019-12-01", + "name": "[concat(parameters('location'),'-infra-ipgroup','-',uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "ipAddresses": [ + "10.40.0.0/24", + "10.50.0.0/24" + ] + } + }, + { + "name": "GEN-VNET-TEST-01", + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "GEN-VNET-TEST-01" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.0.0/24" + ] + }, + "subnets": [ + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.10.0.0/25" + } + } + ], + "enableDdosProtection": false + } + }, + { + "name": "[concat(variables('azurepublicIpname'), add(copyIndex(), 1))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-04-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + }, + "copy": { + "name": "publicIpCopy", + "count": 2 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/firewallPolicies", + "name": "[concat(parameters('firewallName'),'-','firewallPolicy')]", + "location": "[resourceGroup().location]", + "properties": { + "threatIntelMode": "Alert" + } + }, + { + "type": "Microsoft.Network/firewallPolicies/ruleCollectionGroups", + "apiVersion": "2020-05-01", + "name": "[concat(parameters('firewallName'),'-','firewallPolicy')]/DefaultNetworkRuleCollectionGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-workload-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-infra-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/firewallPolicies/[concat(parameters('firewallName'),'-','firewallPolicy')]" + ], + "properties": { + "priority": 200, + "ruleCollections": [ + { + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "action": { + "type": "Allow" + }, + "name": "azure-global-services-nrc", + "priority": 1250, + "rules": [ + { + "ruleType": "NetworkRule", + "name": "time-windows", + "ipProtocols": [ + "UDP" + ], + "destinationAddresses": [ + "13.86.101.172" + ], + "sourceIpGroups": [ + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-workload-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-infra-ipgroup','-',uniqueString(resourceGroup().id))]" + ], + "destinationPorts": [ + "123" + ] + } + ] + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/firewallPolicies/ruleCollectionGroups", + "name": "[concat(parameters('firewallName'),'-','firewallPolicy')]/DefaultApplicationRuleCollectionGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-workload-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-infra-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/firewallPolicies/ruleCollectionGroups/[concat(parameters('firewallName'),'-','firewallPolicy')]/DefaultNetworkRuleCollectionGroup" + ], + "properties": { + "priority": 300, + "ruleCollections": [ + { + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "name": "global-rule-url-arc", + "priority": 1000, + "action": { + "type": "Allow" + }, + "rules": [ + { + "ruleType": "ApplicationRule", + "name": "winupdate-rule-01", + "protocols": [ + { + "protocolType": "Https", + "port": 443 + }, + { + "protocolType": "Http", + "port": 80 + } + ], + "fqdnTags": [ + "WindowsUpdate" + ], + "terminateTLS": false, + "sourceIpGroups": [ + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-workload-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-infra-ipgroup','-',uniqueString(resourceGroup().id))]" + ] + } + ] + }, + { + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "action": { + "type": "Allow" + }, + "name": "Global-rules-arc", + "priority": 1202, + "rules": [ + { + "ruleType": "ApplicationRule", + "name": "global-rule-01", + "protocols": [ + { + "protocolType": "Https", + "port": 443 + } + ], + "targetFqdns": [ + "www.microsoft.com" + ], + "terminateTLS": false, + "sourceIpGroups": [ + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-workload-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-infra-ipgroup','-',uniqueString(resourceGroup().id))]" + ] + } + ] + } + ] + } + }, + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/azureFirewalls", + "name": "GEN-FIREWALL-TEST-01", + "location": "[resourceGroup().location]", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-TEST-01", + "publicIpCopy", + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-workload-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat(parameters('location'),'-infra-ipgroup','-',uniqueString(resourceGroup().id))]", + "Microsoft.Network/firewallPolicies/[concat(parameters('firewallName'),'-','firewallPolicy')]", + "Microsoft.Network/firewallPolicies/ruleCollectionGroups/[concat(parameters('firewallName'),'-','firewallPolicy')]/DefaultNetworkRuleCollectionGroup", + "Microsoft.Network/firewallPolicies/ruleCollectionGroups/[concat(parameters('firewallName'),'-','firewallPolicy')]/DefaultApplicationRuleCollectionGroup" + ], + "properties": { + "ipConfigurations": "azureFirewallIpConfigurations", + "firewallPolicy": { + "id": "Microsoft.Network/firewallPolicies/[concat(parameters('firewallName'),'-','firewallPolicy')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1505 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1505 new file mode 100644 index 0000000..9ed0f69 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1505 @@ -0,0 +1,542 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-ipgroups/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-ipgroups/azuredeploy.parameters.json" + ], + "timestamp": 1642962908539, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-ipgroups/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-firewallpolicy-ipgroups/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1505", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/firewallpolicies", + "microsoft.network/ipgroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1505", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "[concat('vnet', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "virtual network name" + } + }, + "ipgroups_name1": { + "defaultValue": "[concat('ipgroup1', uniqueString(resourceGroup().id))]", + "type": "String" + }, + "ipgroups_name2": { + "defaultValue": "[concat('ipgroup2', uniqueString(resourceGroup().id))]", + "type": "String" + }, + "firewallPolicyName": { + "defaultValue": "[concat('firewallPolicy', uniqueString(resourceGroup().id))]", + "type": "String" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of VM" + } + }, + "availabilityZones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "numberOfFirewallPublicIPAddresses": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of public IP addresses for the Azure Firewall" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vnetAddressPrefix": "10.0.0.0/16", + "serversSubnetPrefix": "10.0.2.0/24", + "azureFirewallSubnetPrefix": "10.0.1.0/24", + "jumpboxSubnetPrefix": "10.0.0.0/24", + "nextHopIP": "10.0.1.4", + "azureFirewallSubnetName": "AzureFirewallSubnet", + "jumpBoxSubnetName": "JumpboxSubnet", + "serversSubnetName": "ServersSubnet", + "jumpBoxPublicIPAddressName": "JumpHostPublicIP", + "jumpBoxNsgName": "JumpHostNSG", + "jumpBoxNicName": "JumpHostNic", + "jumpBoxSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/JumpboxSubnet", + "serverNicName": "ServerNic", + "serverSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/ServersSubnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sajumpbox')]", + "azfwRouteTableName": "AzfwRouteTable", + "firewallName": "firewall1", + "publicIPNamePrefix": "publicIP", + "azureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/AzureFirewallSubnet", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]", + "copy": [ + { + "name": "azureFirewallIpConfigurations", + "count": 1, + "input": { + "name": "[concat('IpConf', copyIndex('azureFirewallIpConfigurations'))]", + "properties": { + "subnet": "[if(equals(copyIndex('azureFirewallIpConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPNamePrefix'), add(copyIndex('azureFirewallIpConfigurations'), 1)))]" + } + } + } + } + ], + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "ServersSubnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Network/ipGroups", + "apiVersion": "2019-12-01", + "name": "[concat('ipgroup1', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "ipAddresses": [ + "13.73.64.64/26", + "13.73.208.128/25", + "52.126.194.0/23" + ] + } + }, + { + "type": "Microsoft.Network/ipGroups", + "apiVersion": "2019-12-01", + "name": "[concat('ipgroup2', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "ipAddresses": [ + "12.0.0.0/24", + "13.9.0.0/24" + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/routeTables", + "name": "AzfwRouteTable", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "AzfwDefaultRoute", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.0.1.4" + } + } + ] + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('serversSubnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "ServersSubnet-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "name": "[concat('vnet', uniqueString(resourceGroup().id))]", + "apiVersion": "2019-12-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/routeTables/AzfwRouteTable", + "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + ], + "tags": { + "displayName": "[concat('vnet', uniqueString(resourceGroup().id))]" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "JumpboxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + }, + { + "name": "ServersSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/AzfwRouteTable" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + } + } + } + ] + } + }, + { + "name": "[concat(variables('publicIPNamePrefix'), add(copyIndex(), 1))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "publicIpCopy", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "name": "JumpHostPublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "JumpHostNSG", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "myNetworkSecurityGroupRuleSSH", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "JumpBoxNicName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/JumpHostPublicIP", + "Microsoft.Network/virtualNetworks/[concat('vnet', uniqueString(resourceGroup().id))]", + "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/JumpHostPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/JumpboxSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "ServerNicName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat('vnet', uniqueString(resourceGroup().id))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/ServersSubnet" + } + } + } + ] + } + }, + { + "name": "JumpBox", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-03-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('JumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "JumpBox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/JumpBoxNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "name": "Server", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-03-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('ServerNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "Server", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ServerNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/firewallPolicies", + "name": "[concat('firewallPolicy', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "threatIntelMode": "Alert" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "ruleCollectionGroups", + "name": "RuleCollectionGroup1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/ipGroups/[concat('ipgroup1', uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat('ipgroup2', uniqueString(resourceGroup().id))]", + "Microsoft.Network/firewallPolicies/[concat('firewallPolicy', uniqueString(resourceGroup().id))]" + ], + "properties": { + "priority": 100, + "ruleCollections": [ + { + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "name": "Example-Filter-Rule", + "action": { + "type": "Deny" + }, + "priority": 1000, + "rules": [ + { + "ruleType": "NetworkRule", + "name": "network-rule1", + "ipProtocols": [ + "TCP" + ], + "destinationPorts": [ + "*" + ], + "sourceIpGroups": [ + "Microsoft.Network/ipGroups/[concat('ipgroup1', uniqueString(resourceGroup().id))]" + ], + "destinationIpGroups": [ + "Microsoft.Network/ipGroups/[concat('ipgroup2', uniqueString(resourceGroup().id))]" + ] + } + ] + } + ] + } + } + ] + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.Network/azureFirewalls", + "name": "firewall1", + "location": "[resourceGroup().location]", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat('vnet', uniqueString(resourceGroup().id))]", + "Microsoft.Network/firewallPolicies/[concat('firewallPolicy', uniqueString(resourceGroup().id))]", + "publicIpCopy" + ], + "properties": { + "ipConfigurations": "azureFirewallIpConfigurations", + "firewallPolicy": { + "id": "Microsoft.Network/firewallPolicies/[concat('firewallPolicy', uniqueString(resourceGroup().id))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1506 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1506 new file mode 100644 index 0000000..365e3e8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1506 @@ -0,0 +1,553 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-ipgroups-and-linux-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-ipgroups-and-linux-jumpbox/azuredeploy.parameters.json" + ], + "timestamp": 1642962908547, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-ipgroups-and-linux-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-ipgroups-and-linux-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1506", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/ipgroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1506", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "[concat('vnet', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "virtual network name" + } + }, + "ipgroups_name1": { + "defaultValue": "[concat('ipgroup1', uniqueString(resourceGroup().id))]", + "type": "String" + }, + "ipgroups_name2": { + "defaultValue": "[concat('ipgroup2', uniqueString(resourceGroup().id))]", + "type": "String" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "numberOfFirewallPublicIPAddresses": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of public IP addresses for the Azure Firewall" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vnetAddressPrefix": "10.0.0.0/16", + "serversSubnetPrefix": "10.0.2.0/24", + "azureFirewallSubnetPrefix": "10.0.1.0/24", + "jumpboxSubnetPrefix": "10.0.0.0/24", + "nextHopIP": "10.0.1.4", + "azureFirewallSubnetName": "AzureFirewallSubnet", + "jumpBoxSubnetName": "JumpboxSubnet", + "serversSubnetName": "ServersSubnet", + "jumpBoxPublicIPAddressName": "JumpHostPublicIP", + "jumpBoxNsgName": "JumpHostNSG", + "jumpBoxNicName": "JumpHostNic", + "jumpBoxSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/JumpboxSubnet", + "serverNicName": "ServerNic", + "serverSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/ServersSubnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sajumpbox')]", + "azfwRouteTableName": "AzfwRouteTable", + "firewallName": "firewall1", + "publicIPNamePrefix": "publicIP", + "azureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/AzureFirewallSubnet", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]", + "copy": [ + { + "name": "azureFirewallIpConfigurations", + "count": 1, + "input": { + "name": "[concat('IpConf', copyIndex('azureFirewallIpConfigurations'))]", + "properties": { + "subnet": "[if(equals(copyIndex('azureFirewallIpConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPNamePrefix'), add(copyIndex('azureFirewallIpConfigurations'), 1)))]" + } + } + } + } + ], + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "ServersSubnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Network/ipGroups", + "apiVersion": "2020-06-01", + "name": "[concat('ipgroup1', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "ipAddresses": [ + "13.73.64.64/26", + "13.73.208.128/25", + "52.126.194.0/23" + ] + } + }, + { + "type": "Microsoft.Network/ipGroups", + "apiVersion": "2020-06-01", + "name": "[concat('ipgroup2', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "ipAddresses": [ + "12.0.0.0/24", + "13.9.0.0/24" + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-06-01", + "name": "AzfwRouteTable", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "AzfwDefaultRoute", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.0.1.4" + } + } + ] + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('serversSubnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "ServersSubnet-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "[concat('vnet', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/routeTables/AzfwRouteTable", + "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + ], + "tags": { + "displayName": "[concat('vnet', uniqueString(resourceGroup().id))]" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "JumpboxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + }, + { + "name": "ServersSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/AzfwRouteTable" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[concat(variables('publicIPNamePrefix'), add(copyIndex(), 1))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "publicIpCopy", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "JumpHostPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "JumpHostNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "myNetworkSecurityGroupRuleSSH", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "JumpBoxNicName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/JumpHostPublicIP", + "Microsoft.Network/virtualNetworks/[concat('vnet', uniqueString(resourceGroup().id))]", + "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/JumpHostPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/JumpboxSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "ServerNicName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat('vnet', uniqueString(resourceGroup().id))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat('vnet', uniqueString(resourceGroup().id))]/ServersSubnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "JumpBox", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('JumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "JumpBox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/JumpBoxNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "Server", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('ServerNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "Server", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ServerNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Network/azureFirewalls", + "apiVersion": "2020-06-01", + "name": "firewall1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/ipGroups/[concat('ipgroup1', uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat('ipgroup2', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/[concat('vnet', uniqueString(resourceGroup().id))]", + "publicIpCopy" + ], + "properties": { + "ipConfigurations": "azureFirewallIpConfigurations", + "applicationRuleCollections": [ + { + "name": "appRc1", + "properties": { + "priority": 101, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "someAppRule", + "protocols": [ + { + "protocolType": "Http", + "port": 8080 + } + ], + "targetFqdns": [ + "*bing.com" + ], + "sourceIpGroups": [ + "Microsoft.Network/ipGroups/[concat('ipgroup1', uniqueString(resourceGroup().id))]" + ] + }, + { + "name": "someOtherAppRule", + "protocols": [ + { + "protocolType": "Mssql", + "port": 1433 + } + ], + "targetFqdns": [ + "[concat('sql1', environment().suffixes.sqlServerHostname)]" + ], + "sourceIpGroups": [ + "Microsoft.Network/ipGroups/[concat('ipgroup1', uniqueString(resourceGroup().id))]", + "Microsoft.Network/ipGroups/[concat('ipgroup2', uniqueString(resourceGroup().id))]" + ] + } + ] + } + } + ], + "networkRuleCollections": [ + { + "name": "netRc1", + "properties": { + "priority": 200, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "networkRule", + "description": "desc1", + "protocols": [ + "UDP", + "TCP", + "ICMP" + ], + "sourceAddresses": [ + "10.0.0.0", + "111.1.0.0/23" + ], + "sourceIpGroups": [ + "Microsoft.Network/ipGroups/[concat('ipgroup1', uniqueString(resourceGroup().id))]" + ], + "destinationIpGroups": [ + "Microsoft.Network/ipGroups/[concat('ipgroup2', uniqueString(resourceGroup().id))]" + ], + "destinationPorts": [ + "90" + ] + } + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1507 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1507 new file mode 100644 index 0000000..5550456 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1507 @@ -0,0 +1,233 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-zones/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962908555, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-create-with-zones/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-create-with-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1507", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1507", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "test-vnet", + "metadata": { + "description": "Virtual network name" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual network address range" + } + }, + "azureFirewallSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "AzureFirewallSubnet prefix" + } + }, + "firewallName": { + "type": "string", + "defaultValue": "firewall1", + "metadata": { + "description": "Azure Firewall name" + } + }, + "numberOfPublicIPAddresses": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of public IP addresses" + } + }, + "publicIPNamePrefix": { + "type": "string", + "defaultValue": "publicIP", + "metadata": { + "description": "Public IP address name prefix - will be auto suffixed with a number (e.g. publicIP1)" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources. Only certain regions support zones." + }, + "value": "East US" + }, + "availabilityZones": { + "type": "array", + "defaultValue": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + } + }, + "variables": { + "azureFirewallSubnetName": "AzureFirewallSubnet", + "azureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/AzureFirewallSubnet", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]", + "copy": [ + { + "name": "azureFirewallIpConfigurations", + "count": 1, + "input": { + "name": "[concat('IpConf', copyIndex('azureFirewallIpConfigurations'))]", + "properties": { + "subnet": "[if(equals(copyIndex('azureFirewallIpConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('publicIPNamePrefix'), add(copyIndex('azureFirewallIpConfigurations'), 1)))]" + } + } + } + } + ] + }, + "resources": [ + { + "name": "test-vnet", + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "East US", + "tags": { + "displayName": "test-vnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "name": "[concat(parameters('publicIPNamePrefix'), add(copyIndex(), 1))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "location": "East US", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + }, + "copy": { + "name": "publicIpCopy", + "count": 1 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/azureFirewalls", + "name": "firewall1", + "location": "East US", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//test-vnet", + "publicIpCopy" + ], + "properties": { + "ipConfigurations": "azureFirewallIpConfigurations", + "applicationRuleCollections": [ + { + "name": "appRc1", + "properties": { + "priority": 101, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "appRule1", + "protocols": [ + { + "port": 80, + "protocolType": "http" + } + ], + "targetFqdns": [ + "www.microsoft.com" + ], + "sourceAddresses": [ + "10.0.0.0/24" + ] + } + ] + } + } + ], + "networkRuleCollections": [ + { + "name": "netRc1", + "properties": { + "priority": 200, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "netRule1", + "protocols": [ + "TCP" + ], + "sourceAddresses": [ + "10.0.0.0/24" + ], + "destinationAddresses": [ + "*" + ], + "destinationPorts": [ + "8000-8999" + ] + } + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1508 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1508 new file mode 100644 index 0000000..e917e26 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1508 @@ -0,0 +1,722 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-forced-tunneling/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-forced-tunneling/azuredeploy.parameters.json" + ], + "timestamp": 1642962908562, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-forced-tunneling/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-forced-tunneling/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1508", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1508", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "from-vnet", + "metadata": { + "description": "virtual network name to tunnel from" + } + }, + "tunnelToVirtualNetworkName": { + "type": "string", + "defaultValue": "to-vnet", + "metadata": { + "description": "virtual network name to tunnel to" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources, the location must support Availability Zones if required." + } + }, + "availabilityZones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "numberOfFirewallPublicIPAddresses": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of public IP addresses for the Azure Firewall" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vnetAddressPrefix": "10.0.0.0/16", + "serversSubnetPrefix": "10.0.2.0/24", + "azureFirewallSubnetPrefix": "10.0.1.0/24", + "azureFirewallMgmtSubnetPrefix": "10.0.3.0/24", + "jumpboxSubnetPrefix": "10.0.0.0/24", + "nextHopIP": "10.0.1.4", + "tunnelToVnetAddressPrefix": "172.16.0.0/16", + "tunnelToAzureFirewallSubnetPrefix": "172.16.1.0/24", + "tunnelToNextHopIP": "172.16.1.4", + "tunnelToPublicIpName": "tunnelToPIP", + "azureFirewallSubnetName": "AzureFirewallSubnet", + "azureFirewallMgmtSubnetName": "AzureFirewallManagementSubnet", + "jumpBoxSubnetName": "JumpboxSubnet", + "serversSubnetName": "ServersSubnet", + "jumpBoxPublicIPAddressName": "JumpHostPublicIP", + "jumpBoxNsgName": "JumpHostNSG", + "jumpBoxNicName": "JumpHostNic", + "jumpBoxSubnetId": "Microsoft.Network/virtualNetworks/subnets/from-vnet/JumpboxSubnet", + "serverNicName": "ServerNic", + "serverSubnetId": "Microsoft.Network/virtualNetworks/subnets/from-vnet/ServersSubnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sajumpbox')]", + "azfwRouteTableName": "AzfwRouteTable", + "firewallName": "firewall1", + "tunnelToFirewallName": "tunnelToFirewall", + "publicIPNamePrefix": "AzFwDataPublicIP", + "managementPublicIpName": "AzFwManagementPublicIP", + "managementPublicIpId": "Microsoft.Network/publicIPAddresses/AzFwManagementPublicIP", + "azureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/from-vnet/AzureFirewallSubnet", + "tunnelToAzureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/to-vnet/AzureFirewallSubnet", + "azureFirewallMgmtSubnetId": "Microsoft.Network/virtualNetworks/subnets/from-vnet/AzureFirewallManagementSubnet", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]", + "copy": [ + { + "name": "azureFirewallIpConfigurations", + "count": 1, + "input": { + "name": "[concat('IpConf', copyIndex('azureFirewallIpConfigurations'))]", + "properties": { + "subnet": "[if(equals(copyIndex('azureFirewallIpConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPNamePrefix'), add(copyIndex('azureFirewallIpConfigurations'), 1)))]" + } + } + } + } + ], + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2019-04-01", + "name": "AzfwRouteTable", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "AzfwDefaultRoute", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.0.1.4" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2019-04-01", + "name": "TunnelToRouteTable", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "TunnelToDefaultRoute", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "172.16.1.4" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "from-vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/routeTables/AzfwRouteTable", + "Microsoft.Network/routeTables/TunnelToRouteTable" + ], + "tags": { + "displayName": "from-vnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "JumpboxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "AzureFirewallManagementSubnet", + "properties": { + "addressPrefix": "10.0.3.0/24" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/TunnelToRouteTable" + } + } + }, + { + "name": "ServersSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/AzfwRouteTable" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "to-vnet", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "to-vnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "172.16.0.0/16" + ] + }, + "subnets": [ + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "172.16.1.0/24" + } + } + ] + } + }, + { + "comments": "This is the peering from vnet1 to vnet2", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2020-05-01", + "name": "from-vnet/TunnelToPeering", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/to-vnet", + "Microsoft.Network/virtualNetworks/from-vnet" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/to-vnet" + } + } + }, + { + "comments": "This is the peering from vnet2 to vnet1", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2020-05-01", + "name": "to-vnet/TunnelFromPeering", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/to-vnet", + "Microsoft.Network/virtualNetworks/from-vnet" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": false, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/from-vnet" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-04-01", + "name": "[concat(variables('publicIPNamePrefix'), add(copyIndex(), 1))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "publicIpCopy", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-04-01", + "name": "AzFwManagementPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-04-01", + "name": "tunnelToPIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-04-01", + "name": "JumpHostPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-04-01", + "name": "JumpHostNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "myNetworkSecurityGroupRuleSSH", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "name": "JumpBoxNicName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/JumpHostPublicIP", + "Microsoft.Network/virtualNetworks/from-vnet", + "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/JumpHostPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/from-vnet/JumpboxSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "name": "ServerNicName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/from-vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/from-vnet/ServersSubnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "JumpBox", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('JumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "JumpBox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/JumpBoxNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "Server", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('ServerNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "Server", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ServerNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Network/azureFirewalls", + "apiVersion": "2020-07-01", + "name": "firewall1", + "location": "[resourceGroup().location]", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/from-vnet", + "publicIpCopy" + ], + "properties": { + "ipConfigurations": "azureFirewallIpConfigurations", + "managementIpConfiguration": { + "name": "ManagementIpConf", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/from-vnet/AzureFirewallManagementSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/AzFwManagementPublicIP" + } + } + }, + "applicationRuleCollections": [ + { + "name": "appRc1", + "properties": { + "priority": 101, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "appRule1", + "protocols": [ + { + "port": "80", + "protocolType": "http" + }, + { + "port": "443", + "protocolType": "https" + } + ], + "targetFqdns": [ + "*" + ] + } + ] + } + } + ], + "networkRuleCollections": [ + { + "name": "netRc1", + "properties": { + "priority": 200, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "netRule1", + "protocols": [ + "TCP" + ], + "sourceAddresses": [ + "10.0.2.0/24" + ], + "destinationAddresses": [ + "*" + ], + "destinationPorts": [ + "*" + ] + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/azureFirewalls", + "name": "tunnelToFirewall", + "location": "[resourceGroup().location]", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/to-vnet", + "Microsoft.Network/publicIPAddresses/tunnelToPIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "tunnelToPIP", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/tunnelToPIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/to-vnet/AzureFirewallSubnet" + } + } + } + ], + "applicationRuleCollections": [ + { + "name": "appRc1", + "properties": { + "priority": 101, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "appRule1", + "protocols": [ + { + "port": "80", + "protocolType": "http" + }, + { + "port": "443", + "protocolType": "https" + } + ], + "targetFqdns": [ + "*microsoft.com" + ] + } + ] + } + } + ], + "networkRuleCollections": [ + { + "name": "netRc1", + "properties": { + "priority": 200, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "netRule1", + "protocols": [ + "TCP" + ], + "sourceAddresses": [ + "10.0.1.0/24" + ], + "destinationAddresses": [ + "*" + ], + "destinationPorts": [ + "8000-8999" + ] + } + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1509 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1509 new file mode 100644 index 0000000..b5b8d4d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1509 @@ -0,0 +1,534 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-premium/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-premium/azuredeploy.parameters.json" + ], + "timestamp": 1642962908570, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-premium/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-premium/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1509", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/firewallpolicies/rulecollectiongroups", + "microsoft.compute/virtualmachines", + "microsoft.network/bastionhosts", + "microsoft.network/firewallpolicies", + "microsoft.keyvault/vaults/secrets", + "microsoft.resources/deploymentscripts", + "microsoft.keyvault/vaults", + "microsoft.managedidentity/userassignedidentities", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1509", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "Size of virtual machine sizes" + } + }, + "remoteAccessUsername": { + "type": "string", + "metadata": { + "description": "Username for remote access" + }, + "value": "GEN-UNIQUE" + }, + "remoteAccessPassword": { + "type": "securestring", + "metadata": { + "description": "Password for remote access" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Deployment location" + } + }, + "sigOverrideParam1": { + "type": "string", + "metadata": { + "description": "Intruder Detection - Signature Overrodes Id 1" + }, + "defaultValue": "2024897" + }, + "sigOverrideParam2": { + "type": "string", + "metadata": { + "description": "Intruder Detection - Signature Overrodes Id 2" + }, + "defaultValue": "2024898" + } + }, + "variables": { + "vnetAddressSpace": "10.0.0.0/16", + "workerAddressSpace": "10.0.10.0/24", + "workerPrivateIPAddress": "10.0.10.10", + "bastionAddressSpace": "10.0.20.0/24", + "firewallAddressSpace": "10.0.100.0/24", + "firewallPrivateIPAddress": "10.0.100.4", + "keyVaultName": "[concat('fw-quick-', uniqueString(subscription().id, resourceGroup().id))]", + "keyVaultCASecretName": "CACert" + }, + "resources": [ + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "CreateAndDeployCertificates", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "properties": { + "forceUpdateTag": "2", + "azPowerShellVersion": "3.0", + "scriptContent": "# Write the config to file\n$opensslConfig=@'\n[ req ]\ndefault_bits = 4096\ndistinguished_name = req_distinguished_name\nstring_mask = utf8only\ndefault_md = sha512\n\n[ req_distinguished_name ]\ncountryName = Country Name (2 letter code)\nstateOrProvinceName = State or Province Name\nlocalityName = Locality Name\n0.organizationName = Organization Name\norganizationalUnitName = Organizational Unit Name\ncommonName = Common Name\nemailAddress = Email Address\n\n[ rootCA_ext ]\nsubjectKeyIdentifier = hash\nauthorityKeyIdentifier = keyid:always,issuer\nbasicConstraints = critical, CA:true\nkeyUsage = critical, digitalSignature, cRLSign, keyCertSign\n\n[ interCA_ext ]\nsubjectKeyIdentifier = hash\nauthorityKeyIdentifier = keyid:always,issuer\nbasicConstraints = critical, CA:true, pathlen:1\nkeyUsage = critical, digitalSignature, cRLSign, keyCertSign\n\n[ server_ext ]\nsubjectKeyIdentifier = hash\nauthorityKeyIdentifier = keyid:always,issuer\nbasicConstraints = critical, CA:false\nkeyUsage = critical, digitalSignature\nextendedKeyUsage = serverAuth\n'@\n\nSet-Content -Path openssl.cnf -Value $opensslConfig\n\n# Create root CA\nopenssl req -x509 -new -nodes -newkey rsa:4096 -keyout rootCA.key -sha256 -days 3650 -out rootCA.crt -subj '/C=US/ST=US/O=Self Signed/CN=Self Signed Root CA' -config openssl.cnf -extensions rootCA_ext\n\n# Create intermediate CA request\nopenssl req -new -nodes -newkey rsa:4096 -keyout interCA.key -sha256 -out interCA.csr -subj '/C=US/ST=US/O=Self Signed/CN=Self Signed Intermediate CA'\n\n# Sign on the intermediate CA\nopenssl x509 -req -in interCA.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out interCA.crt -days 3650 -sha256 -extfile openssl.cnf -extensions interCA_ext\n\n# Export the intermediate CA into PFX\nopenssl pkcs12 -export -out interCA.pfx -inkey interCA.key -in interCA.crt -password 'pass:'\n\n# Convert the PFX and public key into base64\n$interCa = [Convert]::ToBase64String((Get-Content -Path interCA.pfx -AsByteStream -Raw))\n$rootCa = [Convert]::ToBase64String((Get-Content -Path rootCA.crt -AsByteStream -Raw))\n\n# Assign outputs\n$DeploymentScriptOutputs = @{}\n$DeploymentScriptOutputs['interca'] = $interCa\n$DeploymentScriptOutputs['rootca'] = $rootCa\n", + "timeout": "PT5M", + "cleanupPreference": "OnSuccess", + "retentionInterval": "P1D" + } + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "DemoIdentity", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[variables('keyVaultName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/DemoIdentity" + ], + "properties": { + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', 'DemoIdentity'), '2018-11-30').principalId]", + "tenantId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', 'DemoIdentity'), '2018-11-30').tenantId]", + "permissions": { + "secrets": [ + "get", + "list" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "[concat(variables('keyVaultName'), '/', variables('keyVaultCASecretName'))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", + "[resourceId('Microsoft.Resources/deploymentScripts', 'CreateAndDeployCertificates')]" + ], + "properties": { + "value": "[reference('CreateAndDeployCertificates').outputs.interca]" + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-05-01", + "name": "WorkerRoute", + "location": "[resourceGroup().location]", + "properties": { + "routes": [ + { + "name": "WorkerRouteFirewall", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.0.100.4" + } + } + ], + "disableBgpRoutePropagation": false + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "DemoVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/routeTables/WorkerRoute" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "WorkerSubnet", + "properties": { + "addressPrefix": "10.0.10.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/WorkerRoute" + } + } + }, + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "10.0.20.0/24" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.0.100.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "name": "WorkerNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/DemoVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "WorkerIPConfiguration", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/DemoVnet/WorkerSubnet" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.10.10" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "WorkerVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/WorkerNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "20h1-pro", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "WorkerVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/WorkerNIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-06-01", + "name": "WorkerVM/Bootstrap", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/WorkerVM", + "Microsoft.Resources/deploymentScripts/CreateAndDeployCertificates" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.7", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "[concat('echo ', reference('CreateAndDeployCertificates').outputs.rootca, ' > c:\\root.pem.base64 && powershell \"Set-Content -Path c:\\root.pem -Value ([Text.Encoding]::UTF8.GetString([convert]::FromBase64String((Get-Content -Path c:\\root.pem.base64))))\" && certutil -addstore root c:\\root.pem')]" + } + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-07-01", + "name": "BastionPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/bastionHosts", + "apiVersion": "2020-07-01", + "name": "DemoBastion", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/DemoVnet", + "Microsoft.Network/publicIpAddresses/BastionPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "BastionIpConfiguration", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/DemoVnet/AzureBastionSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIpAddresses/BastionPublicIP" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-07-01", + "name": "FirewallPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/firewallPolicies", + "apiVersion": "2020-07-01", + "name": "DemoFirewallPolicy", + "location": "[resourceGroup().location]", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', 'DemoIdentity')]": {} + } + }, + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('keyVaultCASecretName'))]", + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', 'DemoIdentity')]" + ], + "properties": { + "sku": { + "tier": "Premium" + }, + "transportSecurity": { + "certificateAuthority": { + "name": "CACert", + "keyVaultSecretId": "[concat(reference(resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName')), '2019-09-01').vaultUri, 'secrets/', variables('keyVaultCASecretName'), '/')]" + } + }, + "intrusionDetection": { + "mode": "Alert", + "configuration": { + "signatureOverrides": [ + { + "id": "2024897", + "mode": "Deny" + }, + { + "id": "2024898", + "mode": "Alert" + } + ], + "bypassTrafficSettings": [ + { + "name": "SecretBypass", + "protocol": "TCP", + "sourceAddresses": [ + "*" + ], + "destinationAddresses": [ + "1.1.1.1" + ], + "destinationPorts": [ + "80" + ] + } + ] + } + } + } + }, + { + "type": "Microsoft.Network/firewallPolicies/ruleCollectionGroups", + "apiVersion": "2020-07-01", + "name": "DemoFirewallPolicy/PolicyRules", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/firewallPolicies/DemoFirewallPolicy" + ], + "properties": { + "priority": 200, + "ruleCollections": [ + { + "name": "AllowWeb", + "priority": 101, + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "action": { + "type": "Allow" + }, + "rules": [ + { + "ruleType": "ApplicationRule", + "name": "AllowAzure", + "protocols": [ + { + "protocolType": "Https", + "port": 443 + } + ], + "targetFqdns": [ + "*azure.com", + "*microsoft.com" + ], + "sourceAddresses": [ + "*" + ], + "terminateTLS": true + }, + { + "ruleType": "ApplicationRule", + "name": "AllowNews", + "protocols": [ + { + "protocolType": "Https", + "port": 443 + } + ], + "webCategories": [ + "business", + "webbasedemail" + ], + "sourceAddresses": [ + "*" + ], + "terminateTLS": true + } + ] + }, + { + "name": "BlockPage", + "priority": 100, + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "action": { + "type": "Deny" + }, + "rules": [ + { + "ruleType": "ApplicationRule", + "name": "BlockAzureEvents", + "protocols": [ + { + "protocolType": "Https", + "port": 443 + } + ], + "targetUrls": [ + "azure.microsoft.com/en-us/community/events", + "azure.microsoft.com/en-us/community/events/*" + ], + "sourceAddresses": [ + "*" + ], + "terminateTLS": true + } + ] + } + ] + } + }, + { + "type": "Microsoft.Network/azureFirewalls", + "apiVersion": "2020-07-01", + "name": "DemoFirewall", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/DemoVnet", + "Microsoft.Network/publicIpAddresses/FirewallPublicIP", + "Microsoft.Network/firewallPolicies/DemoFirewallPolicy", + "Microsoft.Network/firewallPolicies/ruleCollectionGroups/DemoFirewallPolicy/PolicyRules" + ], + "properties": { + "ipConfigurations": [ + { + "name": "FirewallIPConfiguration", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/DemoVnet/AzureFirewallSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/FirewallPublicIP" + } + } + } + ], + "firewallPolicy": { + "id": "Microsoft.Network/firewallPolicies/DemoFirewallPolicy" + }, + "sku": { + "name": "AZFW_VNet", + "tier": "Premium" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT151 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT151 new file mode 100644 index 0000000..2d73432 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT151 @@ -0,0 +1,338 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ethereum/ethereum-studio-docker-standalone-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/ethereum-studio-docker-standalone-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962888682, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ethereum/ethereum-studio-docker-standalone-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/ethereum-studio-docker-standalone-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT151", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT151", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_A1" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "defaultValue": "[deployment().properties.templateLink.uri]", + "type": "string", + "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": { + "defaultValue": "", + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "14.04.5-LTS", + "nsgName": "myNSG", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "IDEStandaloneDocker", + "vmSize": "Standard_A1", + "virtualNetworkName": "MyVNET", + "nsgID": "Microsoft.Network/networkSecurityGroups/myNSG", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/myNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "myNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "http", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "sandbox", + "properties": { + "description": "Allow Sandbox", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8555", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "ide-app", + "properties": { + "description": "Allow IDE app", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "IDEStandaloneDocker", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "IDEStandaloneDocker", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "IDEStandaloneDocker_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "IDEStandaloneDocker/installcustomscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//IDEStandaloneDocker" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1510 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1510 new file mode 100644 index 0000000..da3aa6a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1510 @@ -0,0 +1,518 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-sandbox-linux/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-sandbox-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962908577, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-sandbox-linux/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-sandbox-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1510", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1510", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "test-vnet", + "metadata": { + "description": "virtual network name" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources, the location must support Availability Zones if required." + }, + "value": "eastus2" + }, + "availabilityZones": { + "type": "array", + "defaultValue": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "privateRanges": { + "type": "string", + "defaultValue": "IANAPrivateRanges", + "metadata": { + "description": "Ip prefixes to which traffic won't be SNAT'ed." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "numberOfFirewallPublicIPAddresses": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of public IP addresses for the Azure Firewall" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vnetAddressPrefix": "10.0.0.0/16", + "serversSubnetPrefix": "10.0.2.0/24", + "azureFirewallSubnetPrefix": "10.0.1.0/24", + "jumpboxSubnetPrefix": "10.0.0.0/24", + "nextHopIP": "10.0.1.4", + "azureFirewallSubnetName": "AzureFirewallSubnet", + "jumpBoxSubnetName": "JumpboxSubnet", + "serversSubnetName": "ServersSubnet", + "jumpBoxPublicIPAddressName": "JumpHostPublicIP", + "jumpBoxNsgName": "JumpHostNSG", + "jumpBoxNicName": "JumpHostNic", + "jumpBoxSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/JumpboxSubnet", + "serverNicName": "ServerNic", + "serverSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/ServersSubnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sajumpbox')]", + "azfwRouteTableName": "AzfwRouteTable", + "firewallName": "firewall1", + "publicIPNamePrefix": "publicIP", + "azureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/AzureFirewallSubnet", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]", + "copy": [ + { + "name": "azureFirewallIpConfigurations", + "count": 1, + "input": { + "name": "[concat('IpConf', copyIndex('azureFirewallIpConfigurations'))]", + "properties": { + "subnet": "[if(equals(copyIndex('azureFirewallIpConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPNamePrefix'), add(copyIndex('azureFirewallIpConfigurations'), 1)))]" + } + } + } + } + ], + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "ServersSubnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "eastus2", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/routeTables", + "name": "AzfwRouteTable", + "apiVersion": "2019-04-01", + "location": "eastus2", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "AzfwDefaultRoute", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.0.1.4" + } + } + ] + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('serversSubnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "ServersSubnet-nsg", + "location": "eastus2", + "properties": {} + }, + { + "name": "test-vnet", + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/routeTables/AzfwRouteTable", + "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + ], + "tags": { + "displayName": "test-vnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "JumpboxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + }, + { + "name": "ServersSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/AzfwRouteTable" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + } + } + } + ] + } + }, + { + "name": "[concat(variables('publicIPNamePrefix'), add(copyIndex(), 1))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-04-01", + "location": "eastus2", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "publicIpCopy", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "name": "JumpHostPublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-04-01", + "location": "eastus2", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "JumpHostNSG", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-04-01", + "location": "eastus2", + "properties": { + "securityRules": [ + { + "name": "myNetworkSecurityGroupRuleSSH", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "JumpBoxNicName", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/JumpHostPublicIP", + "Microsoft.Network/virtualNetworks/test-vnet", + "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/JumpHostPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/test-vnet/JumpboxSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "ServerNicName", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/test-vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/test-vnet/ServersSubnet" + } + } + } + ] + } + }, + { + "name": "JumpBox", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "location": "eastus2", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('JumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "JumpBox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/JumpBoxNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "name": "Server", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "location": "eastus2", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('ServerNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "Server", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ServerNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/azureFirewalls", + "name": "firewall1", + "location": "eastus2", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/test-vnet", + "publicIpCopy" + ], + "properties": { + "ipConfigurations": "azureFirewallIpConfigurations", + "applicationRuleCollections": [ + { + "name": "appRc1", + "properties": { + "priority": 101, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "appRule1", + "protocols": [ + { + "port": "80", + "protocolType": "http" + }, + { + "port": "443", + "protocolType": "https" + } + ], + "targetFqdns": [ + "*microsoft.com" + ] + } + ] + } + } + ], + "networkRuleCollections": [ + { + "name": "netRc1", + "properties": { + "priority": 200, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "netRule1", + "protocols": [ + "TCP" + ], + "sourceAddresses": [ + "10.0.2.0/24" + ], + "destinationAddresses": [ + "*" + ], + "destinationPorts": [ + "8000-8999" + ] + } + ] + } + } + ], + "additionalProperties": { + "Network.SNAT.PrivateRanges": "IANAPrivateRanges" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1511 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1511 new file mode 100644 index 0000000..26feeaf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1511 @@ -0,0 +1,552 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-with-firewallpolicy-sandbox-linux/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-with-firewallpolicy-sandbox-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962908587, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-with-firewallpolicy-sandbox-linux/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-with-firewallpolicy-sandbox-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1511", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/firewallpolicies", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1511", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "test-vnet", + "metadata": { + "description": "virtual network name" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources, the location must support Availability Zones if required." + }, + "value": "eastus2" + }, + "availabilityZones": { + "type": "array", + "defaultValue": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "numberOfFirewallPublicIPAddresses": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of public IP addresses for the Azure Firewall" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vnetAddressPrefix": "10.0.0.0/16", + "serversSubnetPrefix": "10.0.2.0/24", + "azureFirewallSubnetPrefix": "10.0.1.0/24", + "jumpboxSubnetPrefix": "10.0.0.0/24", + "nextHopIP": "10.0.1.4", + "azureFirewallSubnetName": "AzureFirewallSubnet", + "jumpBoxSubnetName": "JumpboxSubnet", + "serversSubnetName": "ServersSubnet", + "jumpBoxPublicIPAddressName": "JumpHostPublicIP", + "jumpBoxNsgName": "JumpHostNSG", + "jumpBoxNicName": "JumpHostNic", + "jumpBoxSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/JumpboxSubnet", + "serverNicName": "ServerNic", + "serverSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/ServersSubnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sajumpbox')]", + "azfwRouteTableName": "AzfwRouteTable", + "firewallName": "firewall1", + "firewallPolicyName": "firewallPolicy1", + "publicIPNamePrefix": "publicIP", + "azureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/AzureFirewallSubnet", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]", + "copy": [ + { + "name": "azureFirewallIpConfigurations", + "count": 1, + "input": { + "name": "[concat('IpConf', copyIndex('azureFirewallIpConfigurations'))]", + "properties": { + "subnet": "[if(equals(copyIndex('azureFirewallIpConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPNamePrefix'), add(copyIndex('azureFirewallIpConfigurations'), 1)))]" + } + } + } + } + ], + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "ServersSubnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "eastus2", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/routeTables", + "name": "AzfwRouteTable", + "apiVersion": "2020-05-01", + "location": "eastus2", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "AzfwDefaultRoute", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.0.1.4" + } + } + ] + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('serversSubnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "ServersSubnet-nsg", + "location": "eastus2", + "properties": {} + }, + { + "name": "test-vnet", + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/routeTables/AzfwRouteTable", + "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + ], + "tags": { + "displayName": "test-vnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "JumpboxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + }, + { + "name": "ServersSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/AzfwRouteTable" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + } + } + } + ] + } + }, + { + "name": "[concat(variables('publicIPNamePrefix'), add(copyIndex(), 1))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "location": "eastus2", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "publicIpCopy", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "name": "JumpHostPublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "location": "eastus2", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "JumpHostNSG", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "location": "eastus2", + "properties": { + "securityRules": [ + { + "name": "myNetworkSecurityGroupRuleSSH", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "JumpBoxNicName", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/JumpHostPublicIP", + "Microsoft.Network/virtualNetworks/test-vnet", + "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/JumpHostPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/test-vnet/JumpboxSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "ServerNicName", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/test-vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/test-vnet/ServersSubnet" + } + } + } + ] + } + }, + { + "name": "JumpBox", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "location": "eastus2", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('JumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "JumpBox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/JumpBoxNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "name": "Server", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "location": "eastus2", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('ServerNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "Server", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ServerNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/firewallPolicies", + "name": "firewallPolicy1", + "location": "eastus2", + "properties": { + "threatIntelMode": "Alert" + }, + "resources": [ + { + "apiVersion": "2020-04-01", + "type": "ruleGroups", + "name": "NetworkRG", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/firewallPolicies/firewallPolicy1", + "Microsoft.Network/firewallPolicies/ruleGroups/firewallPolicy1/AppRG" + ], + "properties": { + "priority": 100, + "rules": [ + { + "name": "NetworkRule1", + "conditionType": "Network", + "ruleType": "FirewallPolicyFilterRule", + "action": { + "type": "Allow" + }, + "priority": 230, + "ruleConditions": [ + { + "name": "NetRC1", + "ipProtocols": [ + "TCP" + ], + "destinationPorts": [ + "80" + ], + "sourceAddresses": [ + "*" + ], + "destinationAddresses": [ + "*" + ], + "ruleConditionType": "NetworkRuleCondition" + } + ] + } + ] + } + }, + { + "apiVersion": "2020-04-01", + "type": "ruleGroups", + "name": "AppRG", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/firewallPolicies/firewallPolicy1" + ], + "properties": { + "priority": 200, + "rules": [ + { + "name": "AppRule1", + "priority": 4444, + "ruleType": "FirewallPolicyFilterRule", + "action": { + "type": "Allow" + }, + "ruleConditions": [ + { + "ruleConditionType": "ApplicationRuleCondition", + "name": "AppRC1", + "protocols": [ + { + "protocolType": "Http", + "port": 8000 + } + ], + "targetFqdns": [ + "*" + ], + "sourceAddresses": [ + "*" + ] + } + ] + } + ] + } + } + ] + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/azureFirewalls", + "name": "firewall1", + "location": "eastus2", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/test-vnet", + "Microsoft.Network/firewallPolicies/firewallPolicy1", + "Microsoft.Network/firewallPolicies/ruleGroups/firewallPolicy1/AppRG", + "Microsoft.Network/firewallPolicies/ruleGroups/firewallPolicy1/NetworkRG", + "publicIpCopy" + ], + "properties": { + "ipConfigurations": "azureFirewallIpConfigurations", + "firewallPolicy": { + "id": "Microsoft.Network/firewallPolicies/firewallPolicy1" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1512 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1512 new file mode 100644 index 0000000..72359ba --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1512 @@ -0,0 +1,498 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-with-zones-sandbox/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-with-zones-sandbox/azuredeploy.parameters.json" + ], + "timestamp": 1642962908597, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/azurefirewall-with-zones-sandbox/azuredeploy.json", + "/quickstarts/microsoft.network/azurefirewall-with-zones-sandbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1512", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1512", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "test-vnet", + "metadata": { + "description": "virtual network name" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "East US" + }, + "availabilityZones": { + "type": "array", + "defaultValue": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "numberOfFirewallPublicIPAddresses": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of public IP addresses for the Azure Firewall" + } + }, + "jumpBoxSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "serverSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine." + } + } + }, + "variables": { + "vnetAddressPrefix": "10.0.0.0/16", + "serversSubnetPrefix": "10.0.2.0/24", + "azureFirewallSubnetPrefix": "10.0.1.0/24", + "jumpboxSubnetPrefix": "10.0.0.0/24", + "nextHopIP": "10.0.1.4", + "azureFirewallSubnetName": "AzureFirewallSubnet", + "jumpBoxSubnetName": "JumpboxSubnet", + "serversSubnetName": "ServersSubnet", + "jumpBoxPublicIPAddressName": "JumpHostPublicIP", + "jumpBoxNsgName": "JumpHostNSG", + "jumpBoxNicName": "JumpHostNic", + "jumpBoxSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/JumpboxSubnet", + "serverNicName": "ServerNic", + "serverSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/ServersSubnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sajumpbox')]", + "azfwRouteTableName": "AzfwRouteTable", + "firewallName": "firewall1", + "publicIPNamePrefix": "publicIP", + "azureFirewallSubnetId": "Microsoft.Network/virtualNetworks/subnets/test-vnet/AzureFirewallSubnet", + "azureFirewallSubnetJSON": "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]", + "copy": [ + { + "name": "azureFirewallIpConfigurations", + "count": 1, + "input": { + "name": "[concat('IpConf', copyIndex('azureFirewallIpConfigurations'))]", + "properties": { + "subnet": "[if(equals(copyIndex('azureFirewallIpConfigurations'), 0), variables('azureFirewallSubnetJSON'), json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPNamePrefix'), add(copyIndex('azureFirewallIpConfigurations'), 1)))]" + } + } + } + } + ], + "networkSecurityGroupName": "ServersSubnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "East US", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-06-01", + "name": "AzfwRouteTable", + "location": "East US", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "AzfwDefaultRoute", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.0.1.4" + } + } + ] + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('serversSubnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "ServersSubnet-nsg", + "location": "East US", + "properties": {} + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "test-vnet", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/routeTables/AzfwRouteTable", + "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + ], + "tags": { + "displayName": "test-vnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "JumpboxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + }, + { + "name": "ServersSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/AzfwRouteTable" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ServersSubnet-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[concat(variables('publicIPNamePrefix'), add(copyIndex(), 1))]", + "location": "East US", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "publicIpCopy", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "JumpHostPublicIP", + "location": "East US", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "JumpHostNSG", + "location": "East US", + "properties": { + "securityRules": [ + { + "name": "myNetworkSecurityGroupRuleRDP", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "JumpBoxNicName", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//JumpHostPublicIP", + "Microsoft.Network/virtualNetworks//test-vnet", + "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/JumpHostPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/test-vnet/JumpboxSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/JumpHostNSG" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "ServerNicName", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//test-vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/test-vnet/ServersSubnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "JumpBox", + "location": "East US", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('JumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "osType": "Windows", + "createOption": "FromImage", + "diskSizeGB": 127 + } + }, + "osProfile": { + "computerName": "JumpBox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/JumpBoxNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "Server", + "location": "East US", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('ServerNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "osType": "Windows", + "createOption": "FromImage", + "diskSizeGB": 127 + } + }, + "osProfile": { + "computerName": "Server", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ServerNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Network/azureFirewalls", + "apiVersion": "2020-06-01", + "name": "firewall1", + "location": "East US", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/test-vnet", + "publicIpCopy" + ], + "properties": { + "ipConfigurations": "azureFirewallIpConfigurations", + "applicationRuleCollections": [ + { + "name": "appRc1", + "properties": { + "priority": 101, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "appRule1", + "protocols": [ + { + "port": 80, + "protocolType": "http" + }, + { + "port": 443, + "protocolType": "https" + } + ], + "targetFqdns": [ + "www.microsoft.com" + ], + "sourceAddresses": [ + "10.0.2.0/24" + ] + } + ] + } + } + ], + "networkRuleCollections": [ + { + "name": "netRc1", + "properties": { + "priority": 200, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "netRule1", + "protocols": [ + "TCP" + ], + "sourceAddresses": [ + "10.0.2.0/24" + ], + "destinationAddresses": [ + "*" + ], + "destinationPorts": [ + "8000-8999" + ] + } + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1513 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1513 new file mode 100644 index 0000000..a485f0c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1513 @@ -0,0 +1,359 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/bastion-hub-spoke-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/bastion-hub-spoke-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962908606, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/bastion-hub-spoke-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/bastion-hub-spoke-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1513", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/bastionhosts", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1513", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "The location of all resources" + } + }, + "vNetHubName": { + "type": "string", + "defaultValue": "vnet-hub", + "metadata": { + "description": "The name of the Hub vNet" + } + }, + "vNetSpokeName": { + "type": "string", + "defaultValue": "vnet-spoke", + "metadata": { + "description": "The name of the Spoke vNet" + } + }, + "vmName": { + "type": "string", + "defaultValue": "vm1", + "metadata": { + "description": "The name of the Virtual Machine" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "The size of the Virtual Machine" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The administrator username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account that will be used for boot diagnostics" + }, + "value": "GEN-UNIQUE" + }, + "bastionHostName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Bastion host" + }, + "defaultValue": "bastion1" + } + }, + "functions": [], + "variables": { + "vNetHubPrefix": "10.0.0.0/16", + "subnetBastionName": "AzureBastionSubnet", + "subnetBastionPrefix": "10.0.0.0/27", + "vNetSpokePrefix": "10.1.0.0/16", + "subnetSpokeName": "Subnet-1", + "subnetSpokePrefix": "10.1.0.0/24", + "bastionPublicIPName": "pip-bastion-01", + "vmPublicIPName": "pip-vm1-01", + "nsgName": "nsg-subnet-1" + }, + "resources": [ + { + "name": "vnet-hub", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "10.0.0.0/27" + } + } + ] + } + }, + { + "name": "vnet-spoke", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.1.0.0/24" + } + } + ] + } + }, + { + "name": "vnet-hub/peering-to-vnet-spoke", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet-hub", + "Microsoft.Network/virtualNetworks/vnet-spoke" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": false, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/vnet-spoke" + } + } + }, + { + "name": "vnet-spoke/peering-to-vnet-hub", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet-hub", + "Microsoft.Network/virtualNetworks/vnet-spoke" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": false, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/vnet-hub" + } + } + }, + { + "name": "nsg-subnet-1", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow-Inbound-HTTPS", + "properties": { + "description": "Allows inbound traffic for HTTPS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "pip-bastion-01", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + }, + "sku": { + "name": "Standard" + } + }, + { + "name": "pip-vm1-01", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + }, + "sku": { + "name": "Standard" + } + }, + { + "name": "bastion1", + "type": "Microsoft.Network/bastionHosts", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/pip-bastion-01" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-hub/AzureBastionSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pip-bastion-01" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "ipconfig1" + } + ] + } + }, + { + "name": "[toLower(parameters('storageAccountName'))]", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "name": "vm1-nic-01", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet-spoke", + "Microsoft.Network/networkSecurityGroups/nsg-subnet-1", + "Microsoft.Network/publicIPAddresses/pip-vm1-01" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-spoke/Subnet-1" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pip-vm1-01" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-subnet-1" + } + } + }, + { + "name": "vm1", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmName'),'-nic-01'))]", + "[resourceId('Microsoft.Storage/storageAccounts',toLower(parameters('storageAccountName')))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "vm1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "vm1-os-01", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vm1-nic-01" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', toLower(parameters('storageAccountName')))).primaryEndpoints.blob]" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1514 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1514 new file mode 100644 index 0000000..424a739 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1514 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/create-and-enable-ddos-protection-plans/azuredeploy.json", + "/quickstarts/microsoft.network/create-and-enable-ddos-protection-plans/azuredeploy.parameters.json" + ], + "timestamp": 1642962908615, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/create-and-enable-ddos-protection-plans/azuredeploy.json", + "/quickstarts/microsoft.network/create-and-enable-ddos-protection-plans/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1514", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/ddosprotectionplans", + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1514", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "9918449524011037935" + } + }, + "parameters": { + "ddosProtectionPlanName": { + "type": "string", + "metadata": { + "description": "Specify a DDoS protection plan name." + }, + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Specify a DDoS virtual network name." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify a location for the resources." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "172.17.0.0/16", + "metadata": { + "description": "Specify the virtual network address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "172.17.0.0/24", + "metadata": { + "description": "Specify the virtual network subnet prefix" + } + }, + "ddosProtectionPlanEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable DDoS protection plan." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/ddosProtectionPlans", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "172.17.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "172.17.0.0/24" + } + } + ], + "enableDdosProtection": true, + "ddosProtectionPlan": { + "id": "Microsoft.Network/ddosProtectionPlans/GEN-UNIQUE" + } + }, + "dependsOn": [ + "Microsoft.Network/ddosProtectionPlans/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1515 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1515 new file mode 100644 index 0000000..f77c255 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1515 @@ -0,0 +1,103 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962908622, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1515", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1515", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "vnetLocal": "local-vnet", + "vnetRemote": "remote-vnet" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "local-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "remote-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "11.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "11.0.0.0/24" + } + } + ] + } + } + ], + "outputs": { + "vnetLocal": { + "type": "string", + "value": "[variables('vnetLocal')]" + }, + "vnetRemote": { + "type": "string", + "value": "[variables('vnetRemote')]" + }, + "vnetRemoteResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1516 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1516 new file mode 100644 index 0000000..0208189 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1516 @@ -0,0 +1,82 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/azuredeploy.json", + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/azuredeploy.parameters.json" + ], + "timestamp": 1642962908629, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/azuredeploy.json", + "/quickstarts/microsoft.network/existing-vnet-to-vnet-peering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1516", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks/virtualnetworkpeerings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1516", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "17718844949536163305" + } + }, + "parameters": { + "existingLocalVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Set the local VNet name" + }, + "value": "GET-PREREQ-vnetLocal" + }, + "existingRemoteVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Set the remote VNet name" + }, + "value": "GET-PREREQ-vnetRemote" + }, + "existingRemoteVirtualNetworkResourceGroupName": { + "type": "string", + "metadata": { + "description": "Sets the remote VNet Resource group" + }, + "value": "GET-PREREQ-vnetRemoteResourceGroup" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2021-02-01", + "name": "[format('{0}/peering-to-remote-vnet', parameters('existingLocalVirtualNetworkName'))]", + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": false, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "GET-PREREQ-vnetRemoteResourceGroup/Microsoft.Network/virtualNetworks/GET-PREREQ-vnetRemote" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1517 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1517 new file mode 100644 index 0000000..84d41ea --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1517 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-create/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962908641, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-create/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1517", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/expressroutecircuits" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1517", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "16925925632640183045" + } + }, + "parameters": { + "circuitName": { + "type": "string", + "metadata": { + "description": "This is the name of the ExpressRoute circuit" + }, + "value": "GEN-UNIQUE" + }, + "serviceProviderName": { + "type": "string", + "metadata": { + "description": "This is the name of the ExpressRoute Service Provider. It must exactly match one of the Service Providers from List ExpressRoute Service Providers API call." + }, + "value": "Equinix" + }, + "peeringLocation": { + "type": "string", + "metadata": { + "description": "This is the name of the peering location and not the ARM resource location. It must exactly match one of the available peering locations from List ExpressRoute Service Providers API call." + }, + "value": "Silicon Valley" + }, + "bandwidthInMbps": { + "type": "int", + "metadata": { + "description": "This is the bandwidth in Mbps of the circuit being created. It must exactly match one of the available bandwidth offers List ExpressRoute Service Providers API call." + }, + "value": 500 + }, + "skuTier": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Chosen SKU Tier of ExpressRoute circuit. Choose from Premium or Standard SKU tiers." + }, + "value": "Premium" + }, + "skuFamily": { + "type": "string", + "defaultValue": "MeteredData", + "allowedValues": [ + "MeteredData", + "UnlimitedData" + ], + "metadata": { + "description": "Chosen SKU family of ExpressRoute circuit. Choose from MeteredData or UnlimitedData SKU families." + }, + "value": "MeteredData" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/expressRouteCircuits", + "apiVersion": "2021-02-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "[format('{0}_{1}', parameters('skuTier'), parameters('skuFamily'))]", + "tier": "Premium", + "family": "MeteredData" + }, + "properties": { + "serviceProviderProperties": { + "serviceProviderName": "Equinix", + "peeringLocation": "Silicon Valley", + "bandwidthInMbps": 500 + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1518 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1518 new file mode 100644 index 0000000..07a8944 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1518 @@ -0,0 +1,181 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-public-private-peering/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-public-private-peering/azuredeploy.parameters.json" + ], + "timestamp": 1642962908652, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-public-private-peering/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-public-private-peering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1518", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/expressroutecircuits" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1518", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "circuitName": { + "type": "string", + "metadata": { + "description": "This is the name of the ExpressRoute circuit." + }, + "value": "SampleTestCircuit6" + }, + "serviceProviderName": { + "type": "string", + "metadata": { + "description": "This is the name of the ExpressRoute Service Provider. It must exactly match one of the Service Providers from List ExpressRoute Service Providers API call." + }, + "value": "Equinix" + }, + "peeringLocation": { + "type": "string", + "metadata": { + "description": "This is the name of the peering location and not the ARM resource location. It must exactly match one of the available peering locations from List ExpressRoute Service Providers API call." + }, + "value": "Silicon Valley" + }, + "bandwidthInMbps": { + "type": "int", + "metadata": { + "description": "This is the bandwidth in Mbps of the circuit being created. It must exactly match one of the available bandwidth offers List ExpressRoute Service Providers API call." + }, + "value": 500 + }, + "sku_tier": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Chosen SKU Tier of ExpressRoute circuit. Choose from Premium or Standard SKU tiers." + }, + "value": "Premium" + }, + "sku_family": { + "type": "string", + "defaultValue": "MeteredData", + "allowedValues": [ + "MeteredData", + "UnlimitedData" + ], + "metadata": { + "description": "Chosen SKU family of ExpressRoute circuit. Choose from MeteredData or UnlimitedData SKU families." + }, + "value": "MeteredData" + }, + "peeringType": { + "type": "string", + "defaultValue": "AzurePrivatePeering", + "allowedValues": [ + "AzurePrivatePeering", + "AzurePublicPeering", + "MicrosoftPeering" + ], + "metadata": { + "description": "BGP peering type for the Circuit. Choose from AzurePrivatePeering, AzurePublicPeering or MicrosoftPeering." + }, + "value": "AzurePrivatePeering" + }, + "sharedKey": { + "type": "string", + "metadata": { + "description": "The shared key for peering configuration. Router does MD5 hash comparison to validate the packets sent by BGP connection. This parameter is optional and can be removed from peering configuration if not required." + }, + "value": "secretkey" + }, + "peerASN": { + "type": "int", + "metadata": { + "description": "The autonomous system number of the customer/connectivity provider." + }, + "value": 100 + }, + "primaryPeerAddressPrefix": { + "type": "string", + "metadata": { + "description": "/30 subnet used to configure IP addresses for interfaces on Link1." + }, + "value": "192.168.1.0/30" + }, + "secondaryPeerAddressPrefix": { + "type": "string", + "metadata": { + "description": "/30 subnet used to configure IP addresses for interfaces on Link2." + }, + "value": "192.168.2.0/30" + }, + "vlanId": { + "type": "int", + "metadata": { + "description": "Specifies the identifier that is used to identify the customer." + }, + "value": 200 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/expressRouteCircuits", + "name": "SampleTestCircuit6", + "location": "[resourceGroup().location]", + "tags": { + "key1": "value1", + "key2": "value2" + }, + "sku": { + "name": "Premium_MeteredData", + "tier": "Premium", + "family": "MeteredData" + }, + "properties": { + "serviceProviderProperties": { + "serviceProviderName": "Equinix", + "peeringLocation": "Silicon Valley", + "bandwidthInMbps": 500 + }, + "peerings": [ + { + "name": "AzurePrivatePeering", + "properties": { + "peeringType": "AzurePrivatePeering", + "sharedKey": "secretkey", + "peerASN": 100, + "primaryPeerAddressPrefix": "192.168.1.0/30", + "secondaryPeerAddressPrefix": "192.168.2.0/30", + "vlanId": 200 + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1519 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1519 new file mode 100644 index 0000000..10dc209 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1519 @@ -0,0 +1,228 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-vnet-connection/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-vnet-connection/azuredeploy.parameters.json" + ], + "timestamp": 1642962908668, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/expressroute-circuit-vnet-connection/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-circuit-vnet-connection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1519", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1519", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "gatewayType": { + "type": "string", + "defaultValue": "ExpressRoute", + "allowedValues": [ + "ExpressRoute" + ], + "metadata": { + "description": "The type of gateway to deploy. For connecting to ExpressRoute circuits, the gateway must be of type ExpressRoute. Other types are Vpn." + } + }, + "connectionType": { + "type": "string", + "defaultValue": "ExpressRoute", + "allowedValues": [ + "ExpressRoute" + ], + "metadata": { + "description": "The type of connection. For connecting to ExpressRoute circuits, the connectionType must be of type ExpressRoute. Other types are IPsec and Vnet2Vnet." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the virtual network to create." + }, + "value": "ERVnet" + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "The address space in CIDR notation for the new virtual network." + }, + "value": "192.188.0.0/24" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the first subnet in the new virtual network." + }, + "value": "Subnet1" + }, + "gatewaySubnet": { + "type": "string", + "defaultValue": "GatewaySubnet", + "allowedValues": [ + "GatewaySubnet" + ], + "metadata": { + "description": "The name of the subnet where Gateway is to be deployed. This must always be named GatewaySubnet." + } + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "The address range in CIDR notation for the first subnet." + }, + "value": "192.188.0.0/27" + }, + "gatewaySubnetPrefix": { + "type": "string", + "metadata": { + "description": "The address range in CIDR notation for the Gateway subnet. For ExpressRoute enabled Gateways, this must be minimum of /28." + }, + "value": "192.188.0.32/27" + }, + "gatewayPublicIPName": { + "type": "string", + "metadata": { + "description": "The resource name given to the public IP attached to the gateway." + }, + "value": "ERGwPIP" + }, + "gatewayName": { + "type": "string", + "metadata": { + "description": "The resource name given to the ExpressRoute gateway." + }, + "value": "ERGw" + }, + "connectionName": { + "type": "string", + "metadata": { + "description": "The resource name given to the Connection which links VNet Gateway to ExpressRoute circuit." + }, + "value": "ERConnection" + }, + "circuitName": { + "type": "string", + "metadata": { + "description": "The name of the ExpressRoute circuit with which the VNet Gateway needs to connect. The Circuit must be already created successfully and must have its circuitProvisioningState property set to 'Enabled', and serviceProviderProvisioningState property set to 'Provisioned'. The Circuit must also have a BGP Peering of type AzurePrivatePeering." + }, + "value": "TestCircuit" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets//ERVnet/GatewaySubnet", + "routingWeight": 3 + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "ERVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.188.0.0/24" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "192.188.0.0/27" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "192.188.0.32/27" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "ERGwPIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "ERGw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/ERGwPIP", + "Microsoft.Network/virtualNetworks/ERVnet" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//ERVnet/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ERGwPIP" + } + }, + "name": "vnetGatewayConfig" + } + ], + "gatewayType": "ExpressRoute" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/connections", + "name": "ERConnection", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/ERGw" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/ERGw" + }, + "peer": { + "id": "Microsoft.Network/expressRouteCircuits/TestCircuit" + }, + "connectionType": "ExpressRoute", + "routingWeight": 3 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT152 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT152 new file mode 100644 index 0000000..fdaaa0d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT152 @@ -0,0 +1,250 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ethereum/go-ethereum-on-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/go-ethereum-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962888692, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ethereum/go-ethereum-on-ubuntu/azuredeploy.json", + "/application-workloads/ethereum/go-ethereum-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT152", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT152", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDnsPrefix": { + "type": "string", + "metadata": { + "description": "This is the unique DNS name of the for the public IP for your VM" + }, + "value": "GEN-UNIQUE-11" + }, + "adminUsername": { + "type": "string", + "defaultValue": "gethuser", + "metadata": { + "description": "This is the the username you wish to assign to your VMs admin account" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of VM" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "nicName": "VMNic", + "addressPrefix": "10.0.0.0/16", + "imagePublisher": "Canonical", + "imageVersion": "latest", + "imageSKU": "14.04.5-LTS", + "imageOffer": "UbuntuServer", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "publicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-11", + "virtualNetworkName": "WPVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-11" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "WPVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIP", + "Microsoft.Network/virtualNetworks/WPVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/VMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-11", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-11_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-11/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-11" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('configure-geth.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh configure-geth.sh GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1520 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1520 new file mode 100644 index 0000000..728ee7a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1520 @@ -0,0 +1,387 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/expressroute-private-peering-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-private-peering-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962908681, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/expressroute-private-peering-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/expressroute-private-peering-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1520", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/networksecuritygroups", + "microsoft.network/expressroutecircuits", + "microsoft.network/expressroutecircuits/peerings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1520", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources deployed in the ARM template" + } + }, + "erpeeringLocation": { + "type": "string", + "defaultValue": "Washington DC", + "metadata": { + "description": "ExpressRoute peering location" + } + }, + "erCircuitName": { + "type": "string", + "defaultValue": "er-ckt01", + "metadata": { + "description": "Name of the ExpressRoute circuit" + } + }, + "serviceProviderName": { + "type": "string", + "defaultValue": "Equinix", + "metadata": { + "description": "Name of the ExpressRoute provider" + } + }, + "erSKU_Tier": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Premium", + "Standard" + ], + "metadata": { + "description": "Tier ExpressRoute circuit" + } + }, + "erSKU_Family": { + "type": "string", + "defaultValue": "MeteredData", + "allowedValues": [ + "MeteredData", + "UnlimitedData" + ], + "metadata": { + "description": "Billing model ExpressRoute circuit" + } + }, + "bandwidthInMbps": { + "type": "int", + "defaultValue": 50, + "allowedValues": [ + 50, + 100, + 200, + 500, + 1000, + 2000, + 5000, + 10000 + ], + "metadata": { + "description": "Bandwidth ExpressRoute circuit" + } + }, + "peerASN": { + "type": "int", + "defaultValue": 65001, + "metadata": { + "description": "autonomous system number used to create private peering between the customer edge router and MSEE routers" + } + }, + "primaryPeerAddressPrefix": { + "type": "string", + "defaultValue": "192.168.10.16/30", + "metadata": { + "description": "point-to-point network prefix of primary link between the customer edge router and MSEE router" + } + }, + "secondaryPeerAddressPrefix": { + "type": "string", + "defaultValue": "192.168.10.20/30", + "metadata": { + "description": "point-to-point network prefix of secondary link between the customer edge router and MSEE router" + } + }, + "vlanId": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "VLAN Id used between the customer edge routers and MSEE routers. primary and secondary link have the same VLAN Id" + } + }, + "vnetName": { + "type": "string", + "defaultValue": "vnet1", + "metadata": { + "description": "name of the Virtual Network" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "subnet1", + "metadata": { + "description": "name of the subnet" + } + }, + "vnetAddressSpace": { + "type": "string", + "defaultValue": "10.10.10.0/24", + "metadata": { + "description": "address space assigned to the Virtual Network" + } + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.10.10.0/25", + "metadata": { + "description": "network prefix assigned to the subnet" + } + }, + "gatewaySubnetPrefix": { + "type": "string", + "defaultValue": "10.10.10.224/27", + "metadata": { + "description": "network prefixes assigned to the gateway subnet. It has to be a network prefix with mask /27 or larger" + } + }, + "gatewayName": { + "type": "string", + "defaultValue": "er-gw", + "metadata": { + "description": "name of the ExpressRoute Gateway" + } + }, + "gatewaySku": { + "type": "string", + "defaultValue": "HighPerformance", + "allowedValues": [ + "Standard", + "HighPerformance", + "UltraPerformance", + "ErGw1AZ", + "ErGw2AZ", + "ErGw3AZ" + ], + "metadata": { + "description": "ExpressRoute Gateway SKU" + } + } + }, + "variables": { + "location": "[resourceGroup().location]", + "erlocation": "[resourceGroup().location]", + "erCircuitName": "er-ckt01", + "serviceProviderName": "Equinix", + "erpeeringLocation": "Washington DC", + "erSKU_Tier": "Premium", + "erSKU_Family": "MeteredData", + "erSKU_Name": "Premium_MeteredData", + "bandwidthInMbps": 50, + "peerASN": 65001, + "primaryPeerAddressPrefix": "192.168.10.16/30", + "secondaryPeerAddressPrefix": "192.168.10.20/30", + "vlanId": 100, + "vnetName": "vnet1", + "subnet1Name": "subnet1", + "vnetAddressSpace": "10.10.10.0/24", + "subnet1Prefix": "10.10.10.0/25", + "gatewaySubnetPrefix": "10.10.10.224/27", + "gatewayName": "er-gw", + "gatewayPublicIPName": "er-gw-pubIP", + "gatewaySku": "HighPerformance", + "nsg": "nsg" + }, + "resources": [ + { + "comments": "Create the ER circuit", + "type": "Microsoft.Network/expressRouteCircuits", + "apiVersion": "2020-06-01", + "name": "er-ckt01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium_MeteredData", + "tier": "Premium", + "family": "MeteredData" + }, + "properties": { + "serviceProviderProperties": { + "serviceProviderName": "Equinix", + "peeringLocation": "Washington DC", + "bandwidthInMbps": 50 + }, + "allowClassicOperations": false + } + }, + { + "comments": "Create ER private peering", + "type": "Microsoft.Network/expressRouteCircuits/peerings", + "apiVersion": "2020-06-01", + "name": "er-ckt01/AzurePrivatePeering", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/expressRouteCircuits/er-ckt01" + ], + "properties": { + "peeringType": "AzurePrivatePeering", + "peerASN": 65001, + "primaryPeerAddressPrefix": "192.168.10.16/30", + "secondaryPeerAddressPrefix": "192.168.10.20/30", + "vlanId": 100 + } + }, + { + "comments": "NSG applied to the subnets in VNet1", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH-rule", + "properties": { + "description": "allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 500, + "direction": "Inbound" + } + }, + { + "name": "RDP-rule", + "properties": { + "description": "allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 600, + "direction": "Inbound" + } + } + ] + } + }, + { + "comments": "it builds a Virtual Network with GatewaySubnet", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnet1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.10.0/24" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.10.10.0/25", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg" + } + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.10.10.224/27" + } + } + ] + } + }, + { + "comments": "public IP of the ExpressRoute Gateway. Only public IP Dynamic allocation is supported", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "er-gw-pubIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "ExpressRoute Gateway in the GatewaySubnet", + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-06-01", + "name": "er-gw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/er-gw-pubIP", + "Microsoft.Network/virtualNetworks/vnet1" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet1/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/er-gw-pubIP" + } + }, + "name": "gwIPconf" + } + ], + "gatewayType": "ExpressRoute", + "sku": { + "name": "HighPerformance", + "tier": "HighPerformance" + }, + "vpnType": "RouteBased" + } + } + ], + "outputs": { + "erCircuitName": { + "type": "string", + "value": "[variables('erCircuitName')]" + }, + "gatewayName": { + "type": "string", + "value": "[variables('gatewayName')]" + }, + "gatewaySku": { + "type": "string", + "value": "[variables('gatewaySku')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1521 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1521 new file mode 100644 index 0000000..cb80060 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1521 @@ -0,0 +1,147 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962908695, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1521", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1521", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the VNET." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the VNET." + } + }, + "gatewaySubnetName": { + "type": "string", + "defaultValue": "GatewaySubnet", + "metadata": { + "description": "Name of the gateway subnet." + } + } + }, + "variables": { + "vnetName": "GEN-UNIQUEvnet", + "pipName": "GEN-UNIQUEpip", + "gatewayName": "GEN-UNIQUEgw" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUEvnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUEvnetsubnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.1.1.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ], + "enableDdosProtection": false + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUEpip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUEgw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUEvnet" + ], + "properties": { + "enablePrivateIpAddress": false, + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses//GEN-UNIQUEpip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUEvnet/GatewaySubnet" + } + } + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "vpnGatewayGeneration": "Generation1" + } + } + ], + "outputs": { + "existingGatewayId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworkGateways', variables('gatewayName'))]" + }, + "existingVnetLocation": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1522 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1522 new file mode 100644 index 0000000..ec7d19d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1522 @@ -0,0 +1,186 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962908706, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1522", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1522", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sharedKey": { + "type": "string", + "metadata": { + "description": "Shared key for the VNET connection." + }, + "value": "GEN-UNIQUE" + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the VNET." + }, + "value": "GEN-UNIQUE" + }, + "vnetLocation": { + "type": "string", + "metadata": { + "description": "Location of the VNET." + }, + "value": "eastus" + }, + "existingVnetLocation": { + "type": "string", + "metadata": { + "description": "Location of the existing VNET." + }, + "value": "GET-PREREQ-existingVnetLocation" + }, + "existingGatewayId": { + "type": "string", + "metadata": { + "description": "ID of the existing gateway." + }, + "value": "GET-PREREQ-existingGatewayId" + }, + "gatewaySubnetName": { + "type": "string", + "defaultValue": "GatewaySubnet", + "metadata": { + "description": "Name of the gateway subnet." + } + } + }, + "variables": { + "vnetName": "GEN-UNIQUE-vnet", + "pipName": "GEN-UNIQUE-pip", + "gatewayName": "GEN-UNIQUE-gw" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-vnet", + "location": "eastus", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-vnet-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ], + "enableDdosProtection": false + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-pip", + "location": "eastus", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-gw", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "enablePrivateIpAddress": false, + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/GatewaySubnet" + } + } + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "vpnGatewayGeneration": "Generation1" + } + }, + { + "type": "Microsoft.Network/connections", + "apiVersion": "2020-11-01", + "name": "connection", + "location": "GET-PREREQ-existingVnetLocation", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE-gw" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "GET-PREREQ-existingGatewayId" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE-gw" + }, + "connectionType": "Vnet2Vnet", + "connectionProtocol": "IKEv2", + "routingWeight": 0, + "sharedKey": "GEN-UNIQUE", + "enableBgp": false, + "useLocalAzureIpAddress": false, + "usePolicyBasedTrafficSelectors": false, + "expressRouteGatewayBypass": false, + "dpdTimeoutSeconds": 45, + "connectionMode": "Default" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1523 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1523 new file mode 100644 index 0000000..af62a33 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1523 @@ -0,0 +1,186 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962908721, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/extend-vnet-to-multi-vnet/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1523", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1523", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sharedKey": { + "type": "string", + "metadata": { + "description": "Shared key for the VNET connection." + }, + "value": "GEN-UNIQUE" + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the VNET." + }, + "value": "GEN-UNIQUE" + }, + "vnetLocation": { + "type": "string", + "metadata": { + "description": "Location of the VNET." + }, + "value": "usgovtexas" + }, + "existingVnetLocation": { + "type": "string", + "metadata": { + "description": "Location of the existing VNET." + }, + "value": "GET-PREREQ-existingVnetLocation" + }, + "existingGatewayId": { + "type": "string", + "metadata": { + "description": "ID of the existing gateway." + }, + "value": "GET-PREREQ-existingGatewayId" + }, + "gatewaySubnetName": { + "type": "string", + "defaultValue": "GatewaySubnet", + "metadata": { + "description": "Name of the gateway subnet." + } + } + }, + "variables": { + "vnetName": "GEN-UNIQUE-vnet", + "pipName": "GEN-UNIQUE-pip", + "gatewayName": "GEN-UNIQUE-gw" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-vnet", + "location": "usgovtexas", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-vnet-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ], + "enableDdosProtection": false + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-pip", + "location": "usgovtexas", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-gw", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "enablePrivateIpAddress": false, + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/GatewaySubnet" + } + } + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "vpnGatewayGeneration": "Generation1" + } + }, + { + "type": "Microsoft.Network/connections", + "apiVersion": "2020-11-01", + "name": "connection", + "location": "GET-PREREQ-existingVnetLocation", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE-gw" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "GET-PREREQ-existingGatewayId" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE-gw" + }, + "connectionType": "Vnet2Vnet", + "connectionProtocol": "IKEv2", + "routingWeight": 0, + "sharedKey": "GEN-UNIQUE", + "enableBgp": false, + "useLocalAzureIpAddress": false, + "usePolicyBasedTrafficSelectors": false, + "expressRouteGatewayBypass": false, + "dpdTimeoutSeconds": 45, + "connectionMode": "Default" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1524 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1524 new file mode 100644 index 0000000..38d0495 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1524 @@ -0,0 +1,1041 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-api-management/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-api-management/azuredeploy.parameters.json" + ], + "timestamp": 1642962908733, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-api-management/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-api-management/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1524", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service/loggers", + "microsoft.apimanagement/service", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.network/frontdoors", + "microsoft.apimanagement/service/providers/diagnosticsettings", + "microsoft.network/networksecuritygroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/frontdoors/providers/diagnosticsettings", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1524", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Azure resources." + } + }, + "virtualNetwork": { + "type": "object", + "defaultValue": { + "name": "FrontDoorApimSampleVnet", + "addressPrefixes": [ + "10.0.0.0/16" + ], + "subnets": [ + { + "name": "ApiManagementSubnet", + "addressPrefix": "10.0.0.0/24", + "nsg": "FrontDoorApimSampleNsg" + } + ] + }, + "metadata": { + "description": "Specifies the Virtual Network configuration." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Name of the Log Analytics workspace." + }, + "value": "GEN-UNIQUE-20" + }, + "workspaceSku": { + "type": "string", + "allowedValues": [ + "PerGB2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "defaultValue": "Standalone", + "metadata": { + "description": "Pricing tier: PerGB2018 or legacy tiers (Free, Standalone, PerNode, Standard or Premium) which are not available to all customers." + } + }, + "appInsightsName": { + "type": "string", + "metadata": { + "description": "The name of your Application Insights resource used by API Management." + }, + "value": "GEN-UNIQUE-20" + }, + "apimServiceName": { + "type": "string", + "metadata": { + "description": "The name of your API Management service." + }, + "value": "GEN-UNIQUE-20" + }, + "apimPublisherEmail": { + "type": "string", + "defaultValue": "admin@contoso.com", + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "apimPublisherName": { + "type": "string", + "defaultValue": "Contoso", + "metadata": { + "description": "The name of the publisher." + }, + "value": "templateTest" + }, + "apimSku": { + "type": "string", + "allowedValues": [ + "Developer", + "Premium" + ], + "defaultValue": "Developer", + "metadata": { + "description": "The pricing tier of this API Management service. Only Developer and Premium are supported when deploying into a shared VNET." + } + }, + "apimCapacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of deployed units of the SKU." + } + }, + "frontDoorName": { + "type": "string", + "minLength": 5, + "maxLength": 64, + "metadata": { + "description": "Name of the Azure Front Door which is globally unique. Min length: 5. Max length: 64" + }, + "value": "GEN-UNIQUE-20" + }, + "frontDoorEnforceCertificateNameCheck": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Whether to enforce certificate name check on HTTPS requests to all backend pools. No effect on non-HTTPS requests. - Enabled or Disabled" + } + }, + "frontDoorFrontendEndpoint": { + "type": "object", + "defaultValue": { + "name": "MainFrontendEndpoint", + "sessionAffinityEnabledState": "Disabled", + "sessionAffinityTtlSeconds": 0 + }, + "metadata": { + "description": "This parameter contains the name and properties of the frontend endpoint." + } + }, + "frontDoorBackendPool": { + "type": "object", + "defaultValue": { + "name": "ApimBackendPool", + "loadBalancerName": "ApimLoadBalancer" + }, + "metadata": { + "description": "This parameter contains the name and properties of the Application Gateway Backend Pool" + } + }, + "frontDoorRoutingRule": { + "type": "object", + "defaultValue": { + "name": "ApimRoutingRule", + "acceptedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "customForwardingPath": "/", + "forwardingProtocol": "MatchRequest", + "cacheConfiguration": { + "queryParameterStripDirective": "StripNone", + "dynamicCompression": "Enabled" + } + }, + "metadata": { + "description": "This parameter contains the name and properties of the routing rule." + } + }, + "frontDoorHealthProbeSettings": { + "type": "object", + "defaultValue": { + "name": "ApimHealthProbeSettings", + "intervalInSeconds": 30, + "path": "/status-0123456789abcdef", + "protocol": "Https" + }, + "metadata": { + "description": "This parameter contains the name and properties of the health probe settings." + } + }, + "deployWaf": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to deploy a global WAF policy in Front Door." + } + }, + "wafPolicyName": { + "type": "string", + "defaultValue": "FrontDoorApimSampleWaf", + "metadata": { + "description": "The name of the WAF policy" + } + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Prevention", + "metadata": { + "description": "Describes if it is in detection mode or prevention mode at policy level." + } + }, + "allowTrafficOnlyFromFrontDoor": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to allow traffic to API Management public endpoints only from Front Door." + }, + "value": false + } + }, + "variables": { + "nsgId": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('virtualNetwork').subnets[0].nsg)]", + "vnetId": "Microsoft.Network/virtualNetworks/FrontDoorApimSampleVnet", + "apimId": "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "appInsightsId": "Microsoft.Insights/components/GEN-UNIQUE-20", + "apimSubnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetwork').name, parameters('virtualNetwork').subnets[0].name)]", + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "loggerId": "Microsoft.ApiManagement/service/loggers/GEN-UNIQUE-20/GEN-UNIQUE-20", + "frontDoorId": "Microsoft.Network/frontdoors/GEN-UNIQUE-20", + "frontDoorBackendPoolId": "Microsoft.Network/frontdoors/backendPools/GEN-UNIQUE-20/ApimBackendPool", + "frontDoorHealthProbeSettingsId": "Microsoft.Network/frontdoors/healthProbeSettings/GEN-UNIQUE-20/ApimHealthProbeSettings", + "frontDoorLoadBalancerId": "Microsoft.Network/frontdoors/loadBalancingSettings/GEN-UNIQUE-20/ApimLoadBalancer", + "frontDoorFrontedEndpointId": "Microsoft.Network/frontdoors/frontendEndpoints/GEN-UNIQUE-20/MainFrontendEndpoint", + "wafPolicyId": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/FrontDoorApimSampleWaf", + "mockApiId": "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/mockApi", + "postmanEchoApiId": "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/postmanEchoApi", + "customProductId": "Microsoft.ApiManagement/service/products/GEN-UNIQUE-20/custom", + "testMethodId": "Microsoft.ApiManagement/service/apis/operations/GEN-UNIQUE-20/mockApi/test", + "frontDoorSuffix": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurefd.us', environment().suffixes.azureFrontDoorEndpointSuffix)]", + "frontDoorHostName": "[concat(toLower(parameters('frontDoorName')), '.', variables('frontDoorSuffix'))]" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "GEN-UNIQUE-20", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Standalone" + } + }, + "resources": [] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "FrontDoorApimSampleNsg", + "apiVersion": "2019-09-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ClientCommunicationToAPIManagementInbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "[if(parameters('allowTrafficOnlyFromFrontDoor'), 'AzureFrontDoor.Backend', 'Internet')]", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "SecureClientCommunicationToAPIManagementInbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "[if(parameters('allowTrafficOnlyFromFrontDoor'), 'AzureFrontDoor.Backend', 'Internet')]", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "ManagementEndpointForAzurePortalAndPowershellInbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3443", + "sourceAddressPrefix": "ApiManagement", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "DependencyOnRedisCacheInbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "AzureInfrastructureLoadBalancer", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 180, + "direction": "Inbound" + } + }, + { + "name": "DependencyOnAzureSQLOutbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Sql", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "DependencyForLogToEventHubPolicyOutbound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "5671", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "EventHub", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "DependencyOnRedisCacheOutbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "DependencyOnAzureFileShareForGitOutbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "445", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "PublishDiagnosticLogsAndMetricsOutbound", + "properties": { + "description": "APIM Logs and Metrics for consumption by admins and your IT team are all part of the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureMonitor", + "access": "Allow", + "priority": 185, + "direction": "Outbound", + "destinationPortRanges": [ + "443", + "12000", + "1886" + ] + } + }, + { + "name": "ConnectToSmtpRelayForSendingEmailsOutbound", + "properties": { + "description": "APIM features the ability to generate email traffic as part of the data plane and the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 190, + "direction": "Outbound", + "destinationPortRanges": [ + "25", + "587", + "25028" + ] + } + }, + { + "name": "AuthenticateToAzureActiveDirectoryOutbound", + "properties": { + "description": "Connect to Azure Active Directory for Developer Portal Authentication or for Oauth2 flow during any Proxy Authentication", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureActiveDirectory", + "access": "Allow", + "priority": 200, + "direction": "Outbound", + "destinationPortRanges": [ + "80", + "443" + ] + } + }, + { + "name": "DependencyOnAzureStorageOutbound", + "properties": { + "description": "APIM service dependency on Azure Blob and Azure Table Storage", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "PublishMonitoringLogsOutbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 300, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "FrontDoorApimSampleVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('virtualNetwork').subnets[0].nsg)]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "copy": [ + { + "name": "subnets", + "count": 36, + "input": { + "name": "virtualNetwork).subnets[copyIndex(subnets", + "properties": { + "addressPrefix": "virtualNetwork).subnets[copyIndex(subnets", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('virtualNetwork').subnets[copyIndex('subnets')].nsg)]" + } + } + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-20", + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "location": "[resourceGroup().location]", + "kind": "web", + "tags": { + "name": "GEN-UNIQUE-20", + "resource": "GEN-UNIQUE-20", + "service": "Application Insights" + }, + "properties": { + "Application_Type": "web", + "Request_Source": "rest" + } + }, + { + "type": "Microsoft.ApiManagement/service/loggers", + "name": "GEN-UNIQUE-20/GEN-UNIQUE-20", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20" + ], + "properties": { + "loggerType": "applicationInsights", + "description": "Logger resources to APIM", + "credentials": { + "instrumentationKey": "[reference(variables('appInsightsId'), '2015-05-01').InstrumentationKey]" + } + } + }, + { + "name": "GEN-UNIQUE-20", + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "tags": { + "name": "GEN-UNIQUE-20", + "service": "APIM" + }, + "sku": { + "name": "Developer", + "capacity": 1 + }, + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/FrontDoorApimSampleVnet" + ], + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "templateTest", + "virtualNetworkType": "External", + "virtualNetworkConfiguration": { + "subnetResourceId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetwork').name, parameters('virtualNetwork').subnets[0].name)]" + } + }, + "resources": [ + { + "apiVersion": "2019-12-01", + "type": "products", + "name": "custom", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/mockApi", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/postmanEchoApi" + ], + "properties": { + "displayName": "Custom", + "description": "Subscribers have completely unlimited access to the API. Administrator approval is required.", + "subscriptionRequired": true, + "approvalRequired": false, + "subscriptionsLimit": 1, + "state": "published" + }, + "resources": [ + { + "apiVersion": "2019-12-01", + "type": "apis", + "name": "mockApi", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/mockApi", + "Microsoft.ApiManagement/service/products/GEN-UNIQUE-20/custom" + ], + "properties": { + "displayName": "Mock API", + "apiRevision": "1", + "description": "This is a Mock API.", + "subscriptionRequired": true, + "path": "mock", + "protocols": [ + "https", + "http" + ], + "subscriptionKeyParameterNames": { + "header": "Ocp-Apim-Subscription-Key", + "query": "subscription-key" + }, + "isCurrent": true + } + }, + { + "apiVersion": "2019-12-01", + "type": "apis", + "name": "postmanEchoApi", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/postmanEchoApi", + "Microsoft.ApiManagement/service/products/GEN-UNIQUE-20/custom" + ], + "properties": { + "displayName": "Postman Echo API", + "apiRevision": "1", + "description": "This is the Postman Echo API.", + "subscriptionRequired": true, + "serviceUrl": "https://postman-echo.com", + "path": "postman-echo", + "protocols": [ + "https", + "http" + ], + "subscriptionKeyParameterNames": { + "header": "Ocp-Apim-Subscription-Key", + "query": "subscription-key" + }, + "isCurrent": true + } + } + ] + }, + { + "type": "apis", + "name": "mockApi", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20" + ], + "properties": { + "displayName": "Mock API", + "apiRevision": "1", + "description": "This is a Mock API.", + "subscriptionRequired": true, + "path": "mock", + "protocols": [ + "https", + "http" + ], + "subscriptionKeyParameterNames": { + "header": "Ocp-Apim-Subscription-Key", + "query": "subscription-key" + }, + "isCurrent": true + }, + "resources": [ + { + "type": "operations", + "name": "test", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/mockApi" + ], + "properties": { + "displayName": "Test", + "method": "GET", + "urlTemplate": "/test", + "description": "This method always return 200.", + "responses": [ + { + "statusCode": 200, + "description": "The GET mock methods always returns a given response", + "representations": [ + { + "contentType": "application/json", + "sample": "{\"company\": \"Contoso\"\"api\": \"Mock API\"\"method\": \"GET\"\"operation\": \"test\"}" + } + ] + } + ] + }, + "resources": [ + { + "name": "policy", + "type": "policies", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/mockApi", + "Microsoft.ApiManagement/service/apis/operations/GEN-UNIQUE-20/mockApi/test" + ], + "properties": { + "value": "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n", + "format": "xml" + } + } + ] + }, + { + "apiVersion": "2019-12-01", + "type": "policies", + "name": "policy", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/mockApi" + ], + "properties": { + "format": "xml", + "value": "\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t*\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tGET\r\n\t\t\t\tPOST\r\n\t\t\t\tPUT\r\n\t\t\t\tDELETE\r\n\t\t\t\tHEAD\r\n\t\t\t\tOPTIONS\r\n\t\t\t\tPATCH\r\n\t\t\t\tTRACE\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t
*
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
*
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n
" + } + }, + { + "type": "diagnostics", + "name": "applicationinsights", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/loggers/GEN-UNIQUE-20/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/mockApi" + ], + "properties": { + "alwaysLog": "allErrors", + "loggerId": "Microsoft.ApiManagement/service/loggers/GEN-UNIQUE-20/GEN-UNIQUE-20", + "sampling": { + "samplingType": "fixed", + "percentage": 100 + }, + "enableHttpCorrelationHeaders": true + } + } + ] + }, + { + "type": "apis", + "name": "postmanEchoApi", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20" + ], + "properties": { + "displayName": "Postman Echo API", + "apiRevision": "1", + "description": "This is the Postman Echo API.", + "subscriptionRequired": true, + "serviceUrl": "https://postman-echo.com", + "path": "postman-echo", + "protocols": [ + "https", + "http" + ], + "subscriptionKeyParameterNames": { + "header": "Ocp-Apim-Subscription-Key", + "query": "subscription-key" + }, + "isCurrent": true + }, + "resources": [ + { + "type": "operations", + "name": "get", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/postmanEchoApi" + ], + "properties": { + "displayName": "GET Request", + "method": "GET", + "urlTemplate": "/get", + "description": "The HTTP GET request method is meant to retrieve data from a server. The data is identified by a unique URI (Uniform Resource Identifier). " + } + }, + { + "apiVersion": "2019-12-01", + "type": "policies", + "name": "policy", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/postmanEchoApi" + ], + "properties": { + "format": "xml", + "value": "\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t*\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tGET\r\n\t\t\t\tPOST\r\n\t\t\t\tPUT\r\n\t\t\t\tDELETE\r\n\t\t\t\tHEAD\r\n\t\t\t\tOPTIONS\r\n\t\t\t\tPATCH\r\n\t\t\t\tTRACE\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t
*
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
*
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n
" + } + }, + { + "type": "diagnostics", + "name": "applicationinsights", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/loggers/GEN-UNIQUE-20/GEN-UNIQUE-20", + "Microsoft.ApiManagement/service/apis/GEN-UNIQUE-20/postmanEchoApi" + ], + "properties": { + "alwaysLog": "allErrors", + "loggerId": "Microsoft.ApiManagement/service/loggers/GEN-UNIQUE-20/GEN-UNIQUE-20", + "sampling": { + "samplingType": "fixed", + "percentage": 100 + }, + "enableHttpCorrelationHeaders": true + } + } + ] + } + ] + }, + { + "type": "Microsoft.ApiManagement/service/providers/diagnosticsettings", + "name": "GEN-UNIQUE-20/Microsoft.Insights/service", + "apiVersion": "2016-09-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "logs": [ + { + "category": "GatewayLogs", + "enabled": true, + "retentionPolicy": { + "enabled": true, + "days": 0 + } + } + ], + "metrics": [ + { + "category": "AllMetrics", + "timeGrain": "PT1M", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + }, + { + "condition": true, + "apiVersion": "2019-03-01", + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "name": "FrontDoorApimSampleWaf", + "location": "global", + "properties": { + "policySettings": { + "mode": "Prevention", + "enabledState": "Enabled" + }, + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + } + ] + } + } + }, + { + "type": "Microsoft.Network/frontdoors", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE-20", + "location": "Global", + "dependsOn": [ + "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/FrontDoorApimSampleWaf" + ], + "properties": { + "backendPoolsSettings": { + "enforceCertificateNameCheck": "Disabled", + "sendRecvTimeoutSeconds": 120 + }, + "enabledState": "Enabled", + "resourceState": "Enabled", + "backendPools": [ + { + "name": "ApimBackendPool", + "properties": { + "backends": [ + { + "address": "[reference(resourceId('Microsoft.ApiManagement/service', parameters('apimServiceName'))).hostnameConfigurations[0].hostName]", + "httpPort": 80, + "httpsPort": 443, + "priority": 1, + "weight": 100, + "backendHostHeader": "[reference(resourceId('Microsoft.ApiManagement/service', parameters('apimServiceName'))).hostnameConfigurations[0].hostName]" + } + ], + "healthProbeSettings": { + "id": "Microsoft.Network/frontdoors/healthProbeSettings/GEN-UNIQUE-20/ApimHealthProbeSettings" + }, + "loadBalancingSettings": { + "id": "Microsoft.Network/frontdoors/loadBalancingSettings/GEN-UNIQUE-20/ApimLoadBalancer" + } + } + } + ], + "healthProbeSettings": [ + { + "name": "ApimHealthProbeSettings", + "properties": { + "intervalInSeconds": 30, + "path": "/status-0123456789abcdef", + "protocol": "Https" + } + } + ], + "frontendEndpoints": [ + { + "name": "MainFrontendEndpoint", + "properties": { + "hostName": "[variables('frontDoorHostName')]", + "sessionAffinityEnabledState": "Disabled", + "sessionAffinityTtlSeconds": 0, + "resourceState": "Enabled", + "webApplicationFirewallPolicyLink": { + "id": "[if(parameters('deployWaf'), variables('wafPolicyId'), json('null'))]" + } + } + } + ], + "loadBalancingSettings": [ + { + "name": "ApimLoadBalancer", + "properties": { + "additionalLatencyMilliseconds": 0, + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "routingRules": [ + { + "name": "ApimRoutingRule", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontdoors/frontendEndpoints/GEN-UNIQUE-20/MainFrontendEndpoint" + } + ], + "acceptedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "customForwardingPath": "/", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontdoors/backendPools/GEN-UNIQUE-20/ApimBackendPool" + }, + "cacheConfiguration": { + "queryParameterStripDirective": "StripNone", + "dynamicCompression": "Enabled" + } + } + } + } + ], + "friendlyName": "GEN-UNIQUE-20" + } + }, + { + "type": "Microsoft.Network/frontdoors/providers/diagnosticsettings", + "name": "GEN-UNIQUE-20/Microsoft.Insights/service", + "apiVersion": "2016-09-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/frontdoors/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "logs": [ + { + "category": "FrontdoorAccessLog", + "enabled": true, + "retentionPolicy": { + "enabled": true, + "days": 0 + } + }, + { + "category": "FrontdoorWebApplicationFirewallLog", + "enabled": true, + "retentionPolicy": { + "enabled": true, + "days": 0 + } + } + ], + "metrics": [ + { + "category": "AllMetrics", + "timeGrain": "PT1M", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ], + "outputs": { + "apiManagement": { + "value": "[reference(resourceId('Microsoft.ApiManagement/service', parameters('apimServiceName')), '2019-12-01', 'Full')]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1525 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1525 new file mode 100644 index 0000000..50fdfa3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1525 @@ -0,0 +1,155 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-basic/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-basic/azuredeploy.parameters.json" + ], + "timestamp": 1642962908750, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-basic/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-basic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1525", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1525", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the frontdoor resource." + }, + "value": "GEN-UNIQUE" + }, + "backendAddress": { + "type": "string", + "metadata": { + "description": "The hostname of the backend. Must be an IP address or FQDN." + }, + "value": "GEN-CUSTOM-FQDN-NAME" + } + }, + "variables": { + "frontEndEndpointName": "frontEndEndpoint", + "loadBalancingSettingsName": "loadBalancingSettings", + "healthProbeSettingsName": "healthProbeSettings", + "routingRuleName": "routingRule", + "backendPoolName": "backendPool" + }, + "resources": [ + { + "type": "Microsoft.Network/frontDoors", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "frontEndEndpoint", + "properties": { + "hostName": "[format('{0}.azurefd.net', parameters('frontDoorName'))]", + "sessionAffinityEnabledState": "Disabled" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + } + ], + "backendPools": [ + { + "name": "backendPool", + "properties": { + "backends": [ + { + "address": "GEN-CUSTOM-FQDN-NAME", + "backendHostHeader": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings" + } + } + } + ], + "routingRules": [ + { + "name": "routingRule", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontEndEndpoints/GEN-UNIQUE/frontEndEndpoint" + } + ], + "acceptedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backEndPools/GEN-UNIQUE/backendPool" + } + }, + "enabledState": "Enabled" + } + } + ] + } + } + ], + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.1.62928", + "templateHash": "18373952488220977176" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1526 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1526 new file mode 100644 index 0000000..8efdd94 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1526 @@ -0,0 +1,263 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-caching/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-caching/azuredeploy.parameters.json" + ], + "timestamp": 1642962908766, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-caching/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-caching/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1526", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1526", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the frontdoor resource." + }, + "value": "GEN-UNIQUE" + }, + "backendPools1": { + "type": "object", + "metadata": { + "description": "Details of the backend pool 1 for the Azure Front Door" + }, + "value": { + "name": "backendPool1", + "backends": [ + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + }, + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 2, + "enabledState": "Enabled" + } + ] + } + }, + "backendPools2": { + "type": "object", + "metadata": { + "description": "Details of the backend pool 2 for the Azure Front Door" + }, + "value": { + "name": "backendPool2", + "backends": [ + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + }, + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 2, + "enabledState": "Enabled" + } + ] + } + } + }, + "variables": { + "frontdoorLocation": "global", + "frontDoorSuffix": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurefd.us', environment().suffixes.azureFrontDoorEndpointSuffix)]", + "frontDoorHostName": "[concat(toLower(parameters('frontDoorName')), '.', variables('frontDoorSuffix'))]" + }, + "resources": [ + { + "apiVersion": "2020-01-01", + "type": "Microsoft.Network/frontDoors", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*", + "/site1/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backendPools/GEN-UNIQUE/backendPool1" + } + }, + "enabledState": "Enabled" + } + }, + { + "name": "routingRule2", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Https" + ], + "patternsToMatch": [ + "/site2/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backendPools/GEN-UNIQUE/backendPool2" + } + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + }, + { + "name": "healthProbeSettings2", + "properties": { + "path": "/", + "protocol": "Https", + "intervalInSeconds": 60 + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + }, + { + "name": "loadBalancingSettings2", + "properties": { + "sampleSize": 2, + "successfulSamplesRequired": 1 + } + } + ], + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "copy": [ + { + "name": "backends", + "count": 36, + "input": { + "address": "backendPools1).backends[copyIndex(backends", + "httpPort": "backendPools1).backends[copyIndex(backends", + "httpsPort": "backendPools1).backends[copyIndex(backends", + "weight": "backendPools1).backends[copyIndex(backends", + "priority": "backendPools1).backends[copyIndex(backends", + "enabledState": "backendPools1).backends[copyIndex(backends" + } + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings1" + } + } + }, + { + "name": "backendPool2", + "properties": { + "copy": [ + { + "name": "backends", + "count": 36, + "input": { + "address": "backendPools2).backends[copyIndex(backends", + "httpPort": "backendPools2).backends[copyIndex(backends", + "httpsPort": "backendPools2).backends[copyIndex(backends", + "weight": "backendPools2).backends[copyIndex(backends", + "priority": "backendPools2).backends[copyIndex(backends", + "enabledState": "backendPools2).backends[copyIndex(backends" + } + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings2" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings2" + } + } + } + ], + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "properties": { + "hostName": "[variables('frontDoorHostName')]", + "sessionAffinityEnabledState": "Disabled", + "sessionAffinityTtlSeconds": 0 + } + } + ], + "enabledState": "Enabled" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1527 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1527 new file mode 100644 index 0000000..8645533 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1527 @@ -0,0 +1,260 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-multiple-backends/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-multiple-backends/azuredeploy.parameters.json" + ], + "timestamp": 1642962908780, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-multiple-backends/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-multiple-backends/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1527", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1527", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the frontdoor resource." + }, + "value": "GEN-UNIQUE" + }, + "backendPools1": { + "type": "object", + "metadata": { + "description": "Details of the backend pool 1 for the Azure Front Door" + }, + "value": { + "name": "backendPool1", + "backends": [ + { + "address": "contoso.com", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + }, + { + "address": "contoso.com", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + } + ] + } + }, + "backendPools2": { + "type": "object", + "metadata": { + "description": "Details of the backend pool 2 for the Azure Front Door" + }, + "value": { + "name": "backendPool2", + "backends": [ + { + "address": "contoso.com", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + }, + { + "address": "contoso.com", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + } + ] + } + } + }, + "variables": { + "frontdoorLocation": "global" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/frontDoors", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*", + "/site1/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backendPools/GEN-UNIQUE/backendPool1" + } + }, + "enabledState": "Enabled" + } + }, + { + "name": "routingRule2", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Https" + ], + "patternsToMatch": [ + "/site2/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backendPools/GEN-UNIQUE/backendPool2" + } + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + }, + { + "name": "healthProbeSettings2", + "properties": { + "path": "/", + "protocol": "Https", + "intervalInSeconds": 60 + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + }, + { + "name": "loadBalancingSettings2", + "properties": { + "sampleSize": 2, + "successfulSamplesRequired": 1 + } + } + ], + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "copy": [ + { + "name": "backends", + "count": 36, + "input": { + "address": "backendPools1).backends[copyIndex(backends", + "httpPort": "backendPools1).backends[copyIndex(backends", + "httpsPort": "backendPools1).backends[copyIndex(backends", + "weight": "backendPools1).backends[copyIndex(backends", + "priority": "backendPools1).backends[copyIndex(backends", + "enabledState": "backendPools1).backends[copyIndex(backends" + } + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings1" + } + } + }, + { + "name": "backendPool2", + "properties": { + "copy": [ + { + "name": "backends", + "count": 36, + "input": { + "address": "backendPools2).backends[copyIndex(backends", + "httpPort": "backendPools2).backends[copyIndex(backends", + "httpsPort": "backendPools2).backends[copyIndex(backends", + "weight": "backendPools2).backends[copyIndex(backends", + "priority": "backendPools2).backends[copyIndex(backends", + "enabledState": "backendPools2).backends[copyIndex(backends" + } + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings2" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings2" + } + } + } + ], + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "properties": { + "hostName": "GEN-UNIQUE.azurefd.net", + "sessionAffinityEnabledState": "Disabled" + } + } + ], + "enabledState": "Enabled" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1528 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1528 new file mode 100644 index 0000000..a9b2f20 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1528 @@ -0,0 +1,145 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-redirect/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-redirect/azuredeploy.parameters.json" + ], + "timestamp": 1642962908792, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-create-redirect/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-create-redirect/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1528", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1528", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "13314341665938652159" + } + }, + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the frontdoor resource." + }, + "value": "GEN-UNIQUE" + }, + "backendAddress": { + "type": "string", + "metadata": { + "description": "The hostname of the backend. Must be an IP address or FQDN." + }, + "value": "GEN-CUSTOM-FQDN-NAME" + } + }, + "resources": [ + { + "type": "Microsoft.Network/frontDoors", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "routingRules": [ + { + "name": "httptohttps", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration", + "redirectProtocol": "HttpsOnly", + "redirectType": "Moved" + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "GEN-CUSTOM-FQDN-NAME", + "backendHostHeader": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "properties": { + "hostName": "[format('{0}.azurefd.net', parameters('frontDoorName'))]", + "sessionAffinityEnabledState": "Disabled" + } + } + ], + "enabledState": "Enabled" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1529 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1529 new file mode 100644 index 0000000..f4e6531 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1529 @@ -0,0 +1,192 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-custom-domain/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-custom-domain/azuredeploy.parameters.json" + ], + "timestamp": 1642962908810, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-custom-domain/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-custom-domain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1529", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors", + "microsoft.network/frontdoors/frontendendpoints/customhttpsconfiguration" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1529", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "14804954580338012947" + } + }, + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door resource." + }, + "value": "GEN-FRONTDOOR-NAME" + }, + "customDomainName": { + "type": "string", + "metadata": { + "description": "The custom domain name to associate with your Front Door." + }, + "value": "GEN-FRONTDOOR-CUSTOM-HOSTNAME" + }, + "backendAddress": { + "type": "string", + "metadata": { + "description": "The hostname of the backend. Must be a public IP address or FQDN." + }, + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + } + }, + "functions": [], + "variables": { + "frontEndEndpointDefaultHostName": "[format('{0}.azurefd.net', parameters('frontDoorName'))]", + "frontEndEndpointDefaultName": "[replace(variables('frontEndEndpointDefaultHostName'), '.', '-')]", + "frontEndEndpointCustomName": "[replace(parameters('customDomainName'), '.', '-')]", + "loadBalancingSettingsName": "loadBalancingSettings", + "healthProbeSettingsName": "healthProbeSettings", + "routingRuleName": "routingRule", + "backendPoolName": "backendPool" + }, + "resources": [ + { + "type": "Microsoft.Network/frontDoors", + "apiVersion": "2020-01-01", + "name": "GEN-FRONTDOOR-NAME", + "location": "global", + "properties": { + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "[replace(variables('frontEndEndpointDefaultHostName'), '.', '-')]", + "properties": { + "hostName": "[format('{0}.azurefd.net', parameters('frontDoorName'))]", + "sessionAffinityEnabledState": "Disabled" + } + }, + { + "name": "[replace(parameters('customDomainName'), '.', '-')]", + "properties": { + "hostName": "GEN-FRONTDOOR-CUSTOM-HOSTNAME", + "sessionAffinityEnabledState": "Disabled" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + } + ], + "backendPools": [ + { + "name": "backendPool", + "properties": { + "backends": [ + { + "address": "GEN-STATIC-WEBSITE-HOST-NAME", + "backendHostHeader": "GEN-STATIC-WEBSITE-HOST-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-FRONTDOOR-NAME/loadBalancingSettings" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-FRONTDOOR-NAME/healthProbeSettings" + } + } + } + ], + "routingRules": [ + { + "name": "routingRule", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontEndEndpoints/GEN-FRONTDOOR-NAME/[replace(variables('frontEndEndpointDefaultHostName'), '.', '-')]" + }, + { + "id": "Microsoft.Network/frontDoors/frontEndEndpoints/GEN-FRONTDOOR-NAME/[replace(parameters('customDomainName'), '.', '-')]" + } + ], + "acceptedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backEndPools/GEN-FRONTDOOR-NAME/backendPool" + } + }, + "enabledState": "Enabled" + } + } + ] + } + }, + { + "type": "Microsoft.Network/frontdoors/frontendEndpoints/customHttpsConfiguration", + "apiVersion": "2020-07-01", + "name": "[format('{0}/{1}/{2}', parameters('frontDoorName'), variables('frontEndEndpointCustomName'), 'default')]", + "properties": { + "protocolType": "ServerNameIndication", + "certificateSource": "FrontDoor", + "frontDoorCertificateSourceParameters": { + "certificateType": "Dedicated" + }, + "minimumTlsVersion": "1.2" + }, + "dependsOn": [ + "Microsoft.Network/frontDoors/GEN-FRONTDOOR-NAME" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT153 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT153 new file mode 100644 index 0000000..6351ec0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT153 @@ -0,0 +1,264 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/expanse/go-expanse-on-ubuntu/azuredeploy.json", + "/application-workloads/expanse/go-expanse-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962888743, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/expanse/go-expanse-on-ubuntu/azuredeploy.json", + "/application-workloads/expanse/go-expanse-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT153", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT153", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "This is the unique DNS name of the for the public IP for your VM" + }, + "value": "GEN-UNIQUE-11" + }, + "adminUsername": { + "type": "string", + "defaultValue": "gethuser", + "metadata": { + "description": "This is the the username you wish to assign to your VMs admin account" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "nicName": "VMNic", + "addressPrefix": "10.0.0.0/16", + "imagePublisher": "Canonical", + "imageVersion": "latest", + "imageSKU": "14.04.5-LTS", + "imageOffer": "UbuntuServer", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "publicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-11", + "virtualNetworkName": "WPVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'expanse')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-11" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "WPVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIP", + "Microsoft.Network/virtualNetworks//WPVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-11", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-11_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-11/newuserscript", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-11" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('setup.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setup.sh GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1530 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1530 new file mode 100644 index 0000000..6bb3705 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1530 @@ -0,0 +1,217 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-custom-domain-customer-certificate/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-custom-domain-customer-certificate/azuredeploy.parameters.json" + ], + "timestamp": 1642962908823, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-custom-domain-customer-certificate/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-custom-domain-customer-certificate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1530", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors", + "microsoft.network/frontdoors/frontendendpoints/customhttpsconfiguration" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1530", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "13492360287604246242" + } + }, + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door resource." + }, + "value": "GEN-FRONTDOOR-NAME" + }, + "customDomainName": { + "type": "string", + "metadata": { + "description": "The custom domain name to associate with your Front Door." + }, + "value": "GEN-FRONTDOOR-CUSTOM-HOSTNAME" + }, + "certificateKeyVaultResourceId": { + "type": "string", + "metadata": { + "description": "The fully qualified resource ID of the Key Vault that contains the custom domain's certificate." + }, + "value": "GEN-KEYVAULT-RESOURCE-ID" + }, + "certificateKeyVaultSecretName": { + "type": "string", + "metadata": { + "description": "The name of the Key Vault secret that contains the custom domain's certificate." + }, + "value": "GEN-KEYVAULT-SSL-SECRET-NAME" + }, + "certificateKeyVaultSecretVersion": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The version of the Key Vault secret that contains the custom domain's certificate." + } + }, + "backendAddress": { + "type": "string", + "metadata": { + "description": "The hostname of the backend. Must be a public IP address or FQDN." + }, + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + } + }, + "functions": [], + "variables": { + "frontEndEndpointDefaultHostName": "[format('{0}.azurefd.net', parameters('frontDoorName'))]", + "frontEndEndpointDefaultName": "[replace(variables('frontEndEndpointDefaultHostName'), '.', '-')]", + "frontEndEndpointCustomName": "[replace(parameters('customDomainName'), '.', '-')]", + "loadBalancingSettingsName": "loadBalancingSettings", + "healthProbeSettingsName": "healthProbeSettings", + "routingRuleName": "routingRule", + "backendPoolName": "backendPool" + }, + "resources": [ + { + "type": "Microsoft.Network/frontDoors", + "apiVersion": "2020-01-01", + "name": "GEN-FRONTDOOR-NAME", + "location": "global", + "properties": { + "enabledState": "Enabled", + "frontendEndpoints": [ + { + "name": "[replace(variables('frontEndEndpointDefaultHostName'), '.', '-')]", + "properties": { + "hostName": "[format('{0}.azurefd.net', parameters('frontDoorName'))]", + "sessionAffinityEnabledState": "Disabled" + } + }, + { + "name": "[replace(parameters('customDomainName'), '.', '-')]", + "properties": { + "hostName": "GEN-FRONTDOOR-CUSTOM-HOSTNAME", + "sessionAffinityEnabledState": "Disabled" + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + } + ], + "backendPools": [ + { + "name": "backendPool", + "properties": { + "backends": [ + { + "address": "GEN-STATIC-WEBSITE-HOST-NAME", + "backendHostHeader": "GEN-STATIC-WEBSITE-HOST-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-FRONTDOOR-NAME/loadBalancingSettings" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-FRONTDOOR-NAME/healthProbeSettings" + } + } + } + ], + "routingRules": [ + { + "name": "routingRule", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontEndEndpoints/GEN-FRONTDOOR-NAME/[replace(variables('frontEndEndpointDefaultHostName'), '.', '-')]" + }, + { + "id": "Microsoft.Network/frontDoors/frontEndEndpoints/GEN-FRONTDOOR-NAME/[replace(parameters('customDomainName'), '.', '-')]" + } + ], + "acceptedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backEndPools/GEN-FRONTDOOR-NAME/backendPool" + } + }, + "enabledState": "Enabled" + } + } + ] + } + }, + { + "type": "Microsoft.Network/frontdoors/frontendEndpoints/customHttpsConfiguration", + "apiVersion": "2020-07-01", + "name": "[format('{0}/{1}/{2}', parameters('frontDoorName'), variables('frontEndEndpointCustomName'), 'default')]", + "properties": { + "protocolType": "ServerNameIndication", + "certificateSource": "AzureKeyVault", + "keyVaultCertificateSourceParameters": { + "vault": { + "id": "GEN-KEYVAULT-RESOURCE-ID" + }, + "secretName": "GEN-KEYVAULT-SSL-SECRET-NAME", + "secretVersion": "[if(equals(parameters('certificateKeyVaultSecretVersion'), ''), null(), parameters('certificateKeyVaultSecretVersion'))]" + }, + "minimumTlsVersion": "1.2" + }, + "dependsOn": [ + "Microsoft.Network/frontDoors/GEN-FRONTDOOR-NAME" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1531 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1531 new file mode 100644 index 0000000..f597f88 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1531 @@ -0,0 +1,111 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-geo-filtering/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-geo-filtering/azuredeploy.parameters.json" + ], + "timestamp": 1642962908839, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-geo-filtering/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-geo-filtering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1531", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1531", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "wafPolicyName": { + "type": "string", + "metadata": { + "description": "The name of the WAF policy" + }, + "value": "GEN-UNIQUE" + }, + "GeofilteringAction": { + "type": "string", + "allowedValues": [ + "Allow", + "Block", + "Log" + ], + "metadata": { + "description": "Type of Action based on the match filter. Must be Allow, Block or Log." + }, + "value": "Block" + }, + "GeoMatch": { + "type": "string", + "metadata": { + "description": "The geographical region to be matched based on ISO 3166-1 alpha-2" + }, + "value": "CH" + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Detection", + "metadata": { + "description": "Describes if it is in detection mode or prevention mode at policy level." + } + } + }, + "variables": { + "wafLocation": "global" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "policySettings": { + "mode": "Detection", + "enabledState": "Enabled" + }, + "customRules": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "ruleType": "MatchRule", + "matchConditions": [ + { + "matchVariable": "RemoteAddr", + "operator": "GeoMatch", + "matchValue": [ + "CH" + ] + } + ], + "action": "Block" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1532 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1532 new file mode 100644 index 0000000..9fa03e4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1532 @@ -0,0 +1,183 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-health-probes/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-health-probes/azuredeploy.parameters.json" + ], + "timestamp": 1642962908850, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-health-probes/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-health-probes/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1532", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1532", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "15183626171325419306" + } + }, + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the frontdoor resource." + }, + "value": "GEN-UNIQUE" + }, + "backendAddress": { + "type": "string", + "metadata": { + "description": "The hostname of the backend. Must be an IP address or FQDN." + }, + "value": "GEN-CUSTOM-FQDN-NAME" + }, + "healthProbeName": { + "type": "string", + "metadata": { + "description": "Name of the Health probe settings associated with this Front Door instance." + }, + "value": "healthProbeSettings1" + }, + "healthProbePath": { + "type": "string", + "metadata": { + "description": "The path to use for the health probe. Default is /" + }, + "value": "/" + }, + "healthProbeProtocol": { + "type": "string", + "allowedValues": [ + "Http", + "Https" + ], + "metadata": { + "description": "Protocol scheme to use for this probe. Must be Http or Https." + }, + "value": "Http" + }, + "healthProbeIntervalInSeconds": { + "type": "int", + "metadata": { + "description": "The number of seconds between health probes." + }, + "value": 120 + } + }, + "variables": { + "frontdoorLocation": "global", + "frontDoorSuffix": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurefd.us', environment().suffixes.azureFrontDoorEndpointSuffix)]", + "frontDoorHostName": "[format('{0}.{1}', toLower(parameters('frontDoorName')), variables('frontDoorSuffix'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/frontDoors", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backendPools/GEN-UNIQUE/backendPool1" + } + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "properties": { + "hostName": "[format('{0}.{1}', toLower(parameters('frontDoorName')), variables('frontDoorSuffix'))]", + "sessionAffinityEnabledState": "Disabled" + } + } + ], + "enabledState": "Enabled" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1533 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1533 new file mode 100644 index 0000000..5f2d1f8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1533 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-managed-waf-ruleset/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-managed-waf-ruleset/azuredeploy.parameters.json" + ], + "timestamp": 1642962908861, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-managed-waf-ruleset/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-managed-waf-ruleset/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1533", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1533", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "wafPolicyName": { + "type": "string", + "metadata": { + "description": "The name of the WAF policy" + }, + "value": "GEN-UNIQUE" + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Detection", + "metadata": { + "description": "Describes if it is in detection mode or prevention mode at policy level." + } + } + }, + "variables": { + "wafLocation": "global" + }, + "resources": [ + { + "apiVersion": "2019-03-01", + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "policySettings": { + "mode": "Detection", + "enabledState": "Enabled" + }, + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1534 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1534 new file mode 100644 index 0000000..a5c9435 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1534 @@ -0,0 +1,464 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-app-service-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-app-service-private-link/azuredeploy.parameters.json" + ], + "timestamp": 1642962908872, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-app-service-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-app-service-private-link/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1534", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1534", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "eastus", + "westus2", + "southcentralus" + ], + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource. When using Private Link origins with Front Door Premium during the preview period, there is a limited set of regions available for use. See https://docs.microsoft.com/en-us/azure/frontdoor/standard-premium/concept-private-link#limitations for more details." + }, + "value": "eastus" + }, + "appName": { + "type": "string", + "defaultValue": "[format('myapp-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the App Service application to create. This must be globally unique." + } + }, + "appServicePlanSkuName": { + "type": "string", + "defaultValue": "P1v2", + "metadata": { + "description": "The name of the SKU to use when creating the App Service plan. This must be a SKU that is compatible with private endpoints, i.e. P1v2 or better." + } + }, + "appServicePlanCapacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of worker instances of your App Service plan that should be provisioned." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + } + }, + "functions": [], + "variables": { + "frontDoorSkuName": "Premium_AzureFrontDoor" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "appService", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "eastus" + }, + "appName": { + "value": "[format('myapp-{0}', uniqueString(resourceGroup().id))]" + }, + "appServicePlanSkuName": { + "value": "P1v2" + }, + "appServicePlanCapacity": { + "value": 1 + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "eastus", + "westus2", + "southcentralus" + ], + "metadata": { + "description": "The location into which the App Service resources should be deployed. When using Private Link origins with Front Door Premium during the preview period, there is a limited set of regions available for use. See https://docs.microsoft.com/en-us/azure/frontdoor/standard-premium/concept-private-link#limitations for more details." + } + }, + "appName": { + "type": "string", + "metadata": { + "description": "The name of the App Service application to create. This must be globally unique." + } + }, + "appServicePlanSkuName": { + "type": "string", + "metadata": { + "description": "The name of the SKU to use when creating the App Service plan. This must be a SKU that is compatible with private endpoints, i.e. P1v2 or better." + } + }, + "appServicePlanCapacity": { + "type": "int", + "metadata": { + "description": "The number of worker instances of your App Service plan that should be provisioned." + } + } + }, + "functions": [], + "variables": { + "appServicePlanName": "AppServicePlan" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "appServicePlanName", + "location": "eastus", + "sku": { + "name": "P1v2", + "capacity": 1 + }, + "kind": "app" + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[format('myapp-{0}', uniqueString(resourceGroup().id))]", + "location": "eastus", + "kind": "app", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/appServicePlanName" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/appServicePlanName" + ] + } + ], + "outputs": { + "appHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]" + }, + "appServiceResourceId": { + "type": "string", + "value": "Microsoft.Web/sites/[format('myapp-{0}', uniqueString(resourceGroup().id))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "front-door", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "skuName": { + "value": "Premium_AzureFrontDoor" + }, + "endpointName": { + "value": "[format('afd-{0}', uniqueString(resourceGroup().id))]" + }, + "originHostName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'appService'), '2019-10-01').outputs.appHostName.value]" + }, + "privateEndpointResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'appService'), '2019-10-01').outputs.appServiceResourceId.value]" + }, + "privateLinkResourceType": { + "value": "sites" + }, + "privateEndpointLocation": { + "value": "eastus" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting to the origin." + } + }, + "originPath": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The path that should be used when connecting to the origin." + } + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile. If you use Private Link this must be set to `Premium_AzureFrontDoor`." + } + }, + "originForwardingProtocol": { + "type": "string", + "defaultValue": "HttpsOnly", + "allowedValues": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "metadata": { + "description": "The protocol that should be used when connecting from Front Door to the origin." + } + }, + "privateEndpointResourceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource ID of the Private Link resource (e.g. an App Service application, Azure Storage account, etc). If you are not using Private Link then this should be empty." + } + }, + "privateLinkResourceType": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource type of the Private Link resource. The allowed value will depend on the specific Private Link resource type you are using. If you are not using Private Link then this should be empty." + } + }, + "privateEndpointLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the location of the Private Link resource. If you are not using Private Link then this should be empty." + } + } + }, + "functions": [], + "variables": { + "isPrivateLinkOrigin": "[not(equals(parameters('privateEndpointResourceId'), ''))]", + "privateLinkOriginDetails": { + "privateLink": { + "id": "privateEndpointResourceId" + }, + "groupId": "[if(not(equals(parameters('privateLinkResourceType'), '')), parameters('privateLinkResourceType'), null())]", + "privateLinkLocation": "privateEndpointLocation", + "requestMessage": "Please approve this connection." + }, + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "profileName", + "location": "global", + "sku": { + "name": "skuName" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "originHostName", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "originHostName", + "priority": 1, + "weight": 1000, + "sharedPrivateLinkResource": "[if(variables('isPrivateLinkOrigin'), variables('privateLinkOriginDetails'), null())]" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName" + }, + "originPath": "[if(not(equals(parameters('originPath'), '')), parameters('originPath'), null())]", + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "originForwardingProtocol", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/profileName/endpointName", + "Microsoft.Cdn/profiles/originGroups/origins/profileName/originGroupName/originName", + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + }, + "frontDoorId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('profileName'))).frontdoorId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/appService" + ] + } + ], + "outputs": { + "appServiceHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'appService'), '2019-10-01').outputs.appHostName.value]" + }, + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'front-door'), '2019-10-01').outputs.frontDoorEndpointHostName.value]" + } + }, + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.126.58533", + "templateHash": "17448041684581779699" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1535 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1535 new file mode 100644 index 0000000..c5e696f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1535 @@ -0,0 +1,565 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-function-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-function-private-link/azuredeploy.parameters.json" + ], + "timestamp": 1642962908885, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-function-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-function-private-link/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1535", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1535", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "eastus", + "westus2", + "southcentralus" + ], + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource. When using Private Link origins with Front Door Premium during the preview period, there is a limited set of regions available for use. See https://docs.microsoft.com/en-us/azure/frontdoor/standard-premium/concept-private-link#limitations for more details." + }, + "value": "eastus" + }, + "appName": { + "type": "string", + "defaultValue": "[format('fn-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Functins application to create. This must be globally unique." + } + }, + "functionAppServicePlanSkuName": { + "type": "string", + "defaultValue": "EP1", + "metadata": { + "description": "The SKU name to use for Azure Functions. This must be a SKU that is compatible with private endpoints, i.e. EP1 or better." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + } + }, + "functions": [], + "variables": { + "frontDoorSkuName": "Premium_AzureFrontDoor" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "function", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "eastus" + }, + "appName": { + "value": "[format('fn-{0}', uniqueString(resourceGroup().id))]" + }, + "functionPlanSkuName": { + "value": "EP1" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the Azure Functions resources should be deployed." + } + }, + "appName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Functions application to create. This must be globally unique." + } + }, + "functionRuntime": { + "type": "string", + "defaultValue": "dotnet", + "metadata": { + "description": "The application runtime that the function app uses." + } + }, + "functionPlanSkuName": { + "type": "string", + "metadata": { + "description": "The name of the SKU to use when creating the Azure Functions plan. Common SKUs include Y1 (consumption) and EP1, EP2, and EP3 (premium)." + } + } + }, + "functions": [], + "variables": { + "appServicePlanName": "FunctionPlan", + "appInsightsName": "AppInsights", + "storageAccountName": "[format('fnstor{0}', uniqueString(resourceGroup().id, parameters('appName')))]", + "functionPlanKind": "[if(equals(parameters('functionPlanSkuName'), 'Y1'), 'functionapp', 'elastic')]", + "functionName": "MyHttpTriggeredFunction" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "storageAccountName", + "location": "eastus", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "file": { + "keyType": "Account", + "enabled": true + }, + "blob": { + "keyType": "Account", + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "appInsightsName", + "location": "eastus", + "kind": "web", + "properties": { + "Application_Type": "web", + "publicNetworkAccessForIngestion": "Enabled", + "publicNetworkAccessForQuery": "Enabled" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "appServicePlanName", + "location": "eastus", + "kind": "functionPlanKind", + "sku": { + "name": "functionPlanSkuName" + }, + "properties": {} + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[format('fn-{0}', uniqueString(resourceGroup().id))]", + "location": "eastus", + "kind": "functionapp", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/appServicePlanName", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightsName'))).InstrumentationKey]" + }, + { + "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", + "value": "[format('InstrumentationKey={0}', reference(resourceId('Microsoft.Insights/components', variables('appInsightsName'))).InstrumentationKey)]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "functionRuntime" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "AzureWebJobsDisableHomepage", + "value": "true" + } + ] + }, + "httpsOnly": true + }, + "dependsOn": [ + "Microsoft.Insights/components/appInsightsName", + "Microsoft.Web/serverfarms/appServicePlanName", + "Microsoft.Storage/storageAccounts/storageAccountName" + ] + }, + { + "type": "Microsoft.Web/sites/functions", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('appName'), variables('functionName'))]", + "properties": { + "config": { + "disabled": false, + "bindings": [ + { + "name": "req", + "type": "httpTrigger", + "direction": "in", + "authLevel": "anonymous", + "methods": [ + "get" + ] + }, + { + "name": "$return", + "type": "http", + "direction": "out" + } + ] + }, + "files": { + "run.csx": " #r \"Newtonsoft.Json\"\n using System.Net;\n using Microsoft.AspNetCore.Mvc;\n using Microsoft.Extensions.Primitives;\n using Newtonsoft.Json;\n \n public static async Task Run(HttpRequest req, ILogger log)\n {\n log.LogInformation(\"C# HTTP trigger function processed a request.\");\n string name = req.Query[\"name\"];\n string requestBody = await new StreamReader(req.Body).ReadToEndAsync();\n dynamic data = JsonConvert.DeserializeObject(requestBody);\n name = name ?? data?.name;\n \n string responseMessage = string.IsNullOrEmpty(name)\n ? \"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.\"\n : $\"Hello, {name}. This HTTP triggered function executed successfully.\";\n \n return new OkObjectResult(responseMessage);\n }\n " + } + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('fn-{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "outputs": { + "functionAppHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]" + }, + "functionName": { + "type": "string", + "value": "functionName" + }, + "functionAppResourceId": { + "type": "string", + "value": "Microsoft.Web/sites/[format('fn-{0}', uniqueString(resourceGroup().id))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "front-door", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "skuName": { + "value": "Premium_AzureFrontDoor" + }, + "endpointName": { + "value": "[format('afd-{0}', uniqueString(resourceGroup().id))]" + }, + "originHostName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'function'), '2019-10-01').outputs.functionAppHostName.value]" + }, + "privateEndpointResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'function'), '2019-10-01').outputs.functionAppResourceId.value]" + }, + "privateLinkResourceType": { + "value": "sites" + }, + "privateEndpointLocation": { + "value": "eastus" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting to the origin." + } + }, + "originPath": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The path that should be used when connecting to the origin." + } + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile. If you use Private Link this must be set to `Premium_AzureFrontDoor`." + } + }, + "originForwardingProtocol": { + "type": "string", + "defaultValue": "HttpsOnly", + "allowedValues": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "metadata": { + "description": "The protocol that should be used when connecting from Front Door to the origin." + } + }, + "privateEndpointResourceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource ID of the Private Link resource (e.g. an App Service application, Azure Storage account, etc). If you are not using Private Link then this should be empty." + } + }, + "privateLinkResourceType": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource type of the Private Link resource. The allowed value will depend on the specific Private Link resource type you are using. If you are not using Private Link then this should be empty." + } + }, + "privateEndpointLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the location of the Private Link resource. If you are not using Private Link then this should be empty." + } + } + }, + "functions": [], + "variables": { + "isPrivateLinkOrigin": "[not(equals(parameters('privateEndpointResourceId'), ''))]", + "privateLinkOriginDetails": { + "privateLink": { + "id": "privateEndpointResourceId" + }, + "groupId": "[if(not(equals(parameters('privateLinkResourceType'), '')), parameters('privateLinkResourceType'), null())]", + "privateLinkLocation": "privateEndpointLocation", + "requestMessage": "Please approve this connection." + }, + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "profileName", + "location": "global", + "sku": { + "name": "skuName" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "originHostName", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "originHostName", + "priority": 1, + "weight": 1000, + "sharedPrivateLinkResource": "[if(variables('isPrivateLinkOrigin'), variables('privateLinkOriginDetails'), null())]" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName" + }, + "originPath": "[if(not(equals(parameters('originPath'), '')), parameters('originPath'), null())]", + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "originForwardingProtocol", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/profileName/endpointName", + "Microsoft.Cdn/profiles/originGroups/origins/profileName/originGroupName/originName", + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + }, + "frontDoorId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('profileName'))).frontdoorId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/function" + ] + } + ], + "outputs": { + "frontDoorEndpointFunctionUrl": { + "type": "string", + "value": "[format('https://{0}/api/{1}', reference(resourceId('Microsoft.Resources/deployments', 'front-door'), '2019-10-01').outputs.frontDoorEndpointHostName.value, reference(resourceId('Microsoft.Resources/deployments', 'function'), '2019-10-01').outputs.functionName.value)]" + }, + "functionAppFunctionUrl": { + "type": "string", + "value": "[format('https://{0}/api/{1}', reference(resourceId('Microsoft.Resources/deployments', 'function'), '2019-10-01').outputs.functionAppHostName.value, reference(resourceId('Microsoft.Resources/deployments', 'function'), '2019-10-01').outputs.functionName.value)]" + } + }, + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.126.58533", + "templateHash": "4241132101507219023" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1536 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1536 new file mode 100644 index 0000000..2925e58 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1536 @@ -0,0 +1,478 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-storage-blobs-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-storage-blobs-private-link/azuredeploy.parameters.json" + ], + "timestamp": 1642962908898, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-storage-blobs-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-storage-blobs-private-link/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1536", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1536", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "eastus", + "westus2", + "southcentralus" + ], + "metadata": { + "description": "The location into which the Azure Storage resources should be deployed. When using Private Link origins with Front Door Premium during the preview period, there is a limited set of regions available for use. See https://docs.microsoft.com/en-us/azure/frontdoor/standard-premium/concept-private-link#limitations for more details." + }, + "value": "eastus" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[format('stor{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Storage account to create. This must be globally unique." + } + }, + "storageSkuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Premium_LRS" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Azure Storage account." + } + }, + "storageBlobContainerName": { + "type": "string", + "defaultValue": "mycontainer", + "metadata": { + "description": "The name of the Azure Storage blob container to create." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + } + }, + "functions": [], + "variables": { + "frontDoorSkuName": "Premium_AzureFrontDoor" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "storage", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "eastus" + }, + "accountName": { + "value": "[format('stor{0}', uniqueString(resourceGroup().id))]" + }, + "skuName": { + "value": "Standard_LRS" + }, + "blobContainerName": { + "value": "mycontainer" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "eastus", + "westus2", + "southcentralus" + ], + "metadata": { + "description": "The location into which the Azure Storage resources should be deployed. When using Private Link origins with Front Door Premium during the preview period, there is a limited set of regions available for use. See https://docs.microsoft.com/en-us/azure/frontdoor/standard-premium/concept-private-link#limitations for more details." + } + }, + "accountName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Storage account to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Premium_LRS" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Azure Storage account." + } + }, + "blobContainerName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Storage blob container to create." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "accountName", + "location": "eastus", + "kind": "StorageV2", + "sku": { + "name": "skuName" + }, + "properties": { + "networkAcls": { + "defaultAction": "Deny" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts/blobServices/containers", + "apiVersion": "2020-08-01-preview", + "name": "[format('{0}/{1}/{2}', parameters('accountName'), 'default', parameters('blobContainerName'))]", + "properties": { + "publicAccess": "None" + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/accountName" + ] + } + ], + "outputs": { + "blobEndpointHostName": { + "type": "string", + "value": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', parameters('accountName'))).primaryEndpoints.blob, 'https://', ''), '/', '')]" + }, + "storageResourceId": { + "type": "string", + "value": "Microsoft.Storage/storageAccounts/accountName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "front-door", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "skuName": { + "value": "Premium_AzureFrontDoor" + }, + "endpointName": { + "value": "[format('afd-{0}', uniqueString(resourceGroup().id))]" + }, + "originHostName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'storage'), '2019-10-01').outputs.blobEndpointHostName.value]" + }, + "originPath": { + "value": "[format('/{0}', parameters('storageBlobContainerName'))]" + }, + "privateEndpointResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'storage'), '2019-10-01').outputs.storageResourceId.value]" + }, + "privateLinkResourceType": { + "value": "blob" + }, + "privateEndpointLocation": { + "value": "eastus" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting to the origin." + } + }, + "originPath": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The path that should be used when connecting to the origin." + } + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile. If you use Private Link this must be set to `Premium_AzureFrontDoor`." + } + }, + "originForwardingProtocol": { + "type": "string", + "defaultValue": "HttpsOnly", + "allowedValues": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "metadata": { + "description": "The protocol that should be used when connecting from Front Door to the origin." + } + }, + "privateEndpointResourceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource ID of the Private Link resource (e.g. an App Service application, Azure Storage account, etc). If you are not using Private Link then this should be empty." + } + }, + "privateLinkResourceType": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource type of the Private Link resource. The allowed value will depend on the specific Private Link resource type you are using. If you are not using Private Link then this should be empty." + } + }, + "privateEndpointLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the location of the Private Link resource. If you are not using Private Link then this should be empty." + } + } + }, + "functions": [], + "variables": { + "isPrivateLinkOrigin": "[not(equals(parameters('privateEndpointResourceId'), ''))]", + "privateLinkOriginDetails": { + "privateLink": { + "id": "privateEndpointResourceId" + }, + "groupId": "[if(not(equals(parameters('privateLinkResourceType'), '')), parameters('privateLinkResourceType'), null())]", + "privateLinkLocation": "privateEndpointLocation", + "requestMessage": "Please approve this connection." + }, + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "profileName", + "location": "global", + "sku": { + "name": "skuName" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "originHostName", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "originHostName", + "priority": 1, + "weight": 1000, + "sharedPrivateLinkResource": "[if(variables('isPrivateLinkOrigin'), variables('privateLinkOriginDetails'), null())]" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName" + }, + "originPath": "[if(not(equals(parameters('originPath'), '')), parameters('originPath'), null())]", + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "originForwardingProtocol", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/profileName/endpointName", + "Microsoft.Cdn/profiles/originGroups/origins/profileName/originGroupName/originName", + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + }, + "frontDoorId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('profileName'))).frontdoorId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/storage" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'front-door'), '2019-10-01').outputs.frontDoorEndpointHostName.value]" + }, + "blobEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'storage'), '2019-10-01').outputs.blobEndpointHostName.value]" + } + }, + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.126.58533", + "templateHash": "8757704503512633347" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1537 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1537 new file mode 100644 index 0000000..ddb1442 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1537 @@ -0,0 +1,926 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-vm-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-vm-private-link/azuredeploy.parameters.json" + ], + "timestamp": 1642962908909, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-vm-private-link/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-vm-private-link/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1537", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1537", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [ + "eastus", + "westus2", + "southcentralus" + ], + "metadata": { + "description": "The location into which the Azure Storage resources should be deployed. When using Private Link origins with Front Door Premium during the preview period, there is a limited set of regions available for use. See https://docs.microsoft.com/en-us/azure/frontdoor/standard-premium/concept-private-link#limitations for more details." + }, + "value": "eastus" + }, + "vnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the virtual network." + } + }, + "vmSubnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the VM subnet within the virtual network." + } + }, + "privateLinkServiceSubnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the Private Link service subnet within the virtual network." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The name of the SKU to use when creating the virtual machine." + } + }, + "vmOSName": { + "type": "string", + "defaultValue": "Windows2019Datacenter", + "allowedValues": [ + "Windows2016Datacenter", + "Windows2019Datacenter" + ], + "metadata": { + "description": "The name of the operating system to deploy on the virtual machine." + } + }, + "vmOSDiskStorageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "metadata": { + "description": "The type of disk and storage account to use for the virtual machine's OS disk." + } + }, + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "The administrator username to use for the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "secureString", + "metadata": { + "description": "The administrator password to use for the virtual machine." + }, + "value": "GEN-PASSWORD" + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + } + }, + "functions": [], + "variables": { + "vmImageReference": { + "Windows2019Datacenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "Windows2016Datacenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + }, + "frontDoorSkuName": "Premium_AzureFrontDoor" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "network", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "eastus" + }, + "vnetIPPrefix": { + "value": "10.0.0.0/16" + }, + "vmSubnetIPPrefix": { + "value": "10.0.0.0/24" + }, + "privateLinkServiceSubnetIPPrefix": { + "value": "10.0.1.0/24" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the virtual network resources should be deployed." + } + }, + "vnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the virtual network." + } + }, + "vmSubnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the VM subnet within the virtual network." + } + }, + "privateLinkServiceSubnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the Private Link service environment subnet within the virtual network." + } + } + }, + "functions": [], + "variables": { + "vnetName": "VNet", + "vmSubnetName": "VMs", + "privateLinkServiceSubnetName": "PrivateLinkService" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnetName", + "location": "eastus", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "vmSubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "privateLinkServiceSubnetName", + "properties": { + "addressPrefix": "10.0.1.0/24", + "privateLinkServiceNetworkPolicies": "Disabled" + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "vnetName" + }, + "vmSubnetResourceId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/vnetName/vmSubnetName" + }, + "privateLinkServiceSubnetResourceId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/vnetName/privateLinkServiceSubnetName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "load-balancer", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "eastus" + }, + "subnetResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'network'), '2019-10-01').outputs.vmSubnetResourceId.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the load balancer resources should be deployed." + } + }, + "subnetResourceId": { + "type": "string", + "metadata": { + "description": "The resource ID of the virtual network subnet that the load balancer should be deployed into." + } + } + }, + "functions": [], + "variables": { + "loadBalancerName": "MyLoadBalancer", + "frontendIPConfigurationName": "MyFrontendIPConfiguration", + "healthProbeName": "MyHealthProbe", + "backendAddressPoolName": "MyBackendAddressPool" + }, + "resources": [ + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-06-01", + "name": "loadBalancerName", + "location": "eastus", + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "frontendIPConfigurationName", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetResourceId" + } + } + } + ], + "backendAddressPools": [ + { + "name": "backendAddressPoolName" + } + ], + "probes": [ + { + "name": "healthProbeName", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 2 + } + } + ], + "loadBalancingRules": [ + { + "name": "HttpRule", + "properties": { + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancerName/frontendIPConfigurationName" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancerName/backendAddressPoolName" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancerName/healthProbeName" + } + } + } + ] + } + } + ], + "outputs": { + "frontendIPAddress": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName'))).frontendIPConfigurations[0].properties.privateIPAddress]" + }, + "frontendIPConfigurationResourceId": { + "type": "string", + "value": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancerName/frontendIPConfigurationName" + }, + "backendAddressPoolResourceId": { + "type": "string", + "value": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancerName/backendAddressPoolName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/network" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "vm", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "eastus" + }, + "subnetResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'network'), '2019-10-01').outputs.vmSubnetResourceId.value]" + }, + "vmImageReference": { + "value": "(vmImageReference)[parameters(vmOSName)]" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "vmOSDiskStorageAccountType": { + "value": "StandardSSD_LRS" + }, + "vmAdminUsername": { + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "value": "GEN-PASSWORD" + }, + "loadBalancerBackendAddressPoolResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'load-balancer'), '2019-10-01').outputs.backendAddressPoolResourceId.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the Private Link service resources should be deployed." + } + }, + "subnetResourceId": { + "type": "string", + "metadata": { + "description": "The resource ID of the virtual network subnet that the VM should be deployed into." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The name of the SKU to use when creating the virtual machine." + } + }, + "vmImageReference": { + "type": "object", + "metadata": { + "description": "The details of the image to deploy on the virtual machine." + } + }, + "vmOSDiskStorageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The type of disk and storage account to use for the virtual machine's OS disk." + } + }, + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "The administrator username to use for the virtual machine." + } + }, + "vmAdminPassword": { + "type": "secureString", + "metadata": { + "description": "The administrator password to use for the virtual machine." + } + }, + "loadBalancerBackendAddressPoolResourceId": { + "type": "string", + "metadata": { + "description": "The resource ID of the load balancer's backend address pool, which this virtual machine's NIC will be added to." + } + } + }, + "functions": [], + "variables": { + "vmName": "MyVM", + "vmNicName": "MyVM-NIC", + "vmOSDiskName": "MyVM-OSDisk" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('vmName'), 'InstallCustomScript')]", + "location": "eastus", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted Install-WindowsFeature -Name Web-Server" + } + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmName" + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "vmNicName", + "location": "eastus", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetResourceId" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "loadBalancerBackendAddressPoolResourceId" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "vmName", + "location": "eastus", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": "vmImageReference", + "osDisk": { + "name": "vmOSDiskName", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 128 + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmNicName" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/vmNicName" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/load-balancer", + "Microsoft.Resources/deployments/network" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "private-link-service", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "eastus" + }, + "subnetResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'network'), '2019-10-01').outputs.privateLinkServiceSubnetResourceId.value]" + }, + "loadBalancerFrontendIpConfigurationResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'load-balancer'), '2019-10-01').outputs.frontendIPConfigurationResourceId.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the Private Link service resources should be deployed." + } + }, + "subnetResourceId": { + "type": "string", + "metadata": { + "description": "The resource ID of the virtual network subnet that the Private Link service should be deployed into." + } + }, + "loadBalancerFrontendIpConfigurationResourceId": { + "type": "string", + "metadata": { + "description": "The resource ID of the load balancer's frontend IP configuration that should be associated with this Private Link service." + } + } + }, + "functions": [], + "variables": { + "privateLinkServiceName": "MyPrivateLinkService" + }, + "resources": [ + { + "type": "Microsoft.Network/privateLinkServices", + "apiVersion": "2020-06-01", + "name": "privateLinkServiceName", + "location": "eastus", + "properties": { + "enableProxyProtocol": false, + "loadBalancerFrontendIpConfigurations": [ + { + "id": "loadBalancerFrontendIpConfigurationResourceId" + } + ], + "ipConfigurations": [ + { + "name": "application-configuration", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv4", + "subnet": { + "id": "subnetResourceId" + }, + "primary": false + } + } + ] + } + } + ], + "outputs": { + "privateLinkServiceResourceId": { + "type": "string", + "value": "Microsoft.Network/privateLinkServices/privateLinkServiceName" + }, + "privateLinkServiceLocation": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/privateLinkServices', variables('privateLinkServiceName')), '2020-06-01', 'full').location]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/load-balancer", + "Microsoft.Resources/deployments/network" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "front-door", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "skuName": { + "value": "Premium_AzureFrontDoor" + }, + "endpointName": { + "value": "[format('afd-{0}', uniqueString(resourceGroup().id))]" + }, + "originHostName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'load-balancer'), '2019-10-01').outputs.frontendIPAddress.value]" + }, + "originForwardingProtocol": { + "value": "HttpOnly" + }, + "privateEndpointResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'private-link-service'), '2019-10-01').outputs.privateLinkServiceResourceId.value]" + }, + "privateLinkResourceType": { + "value": "" + }, + "privateEndpointLocation": { + "value": "eastus" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting to the origin." + } + }, + "originPath": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The path that should be used when connecting to the origin." + } + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile. If you use Private Link this must be set to `Premium_AzureFrontDoor`." + } + }, + "originForwardingProtocol": { + "type": "string", + "defaultValue": "HttpsOnly", + "allowedValues": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "metadata": { + "description": "The protocol that should be used when connecting from Front Door to the origin." + } + }, + "privateEndpointResourceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource ID of the Private Link resource (e.g. an App Service application, Azure Storage account, etc). If you are not using Private Link then this should be empty." + } + }, + "privateLinkResourceType": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource type of the Private Link resource. The allowed value will depend on the specific Private Link resource type you are using. If you are not using Private Link then this should be empty." + } + }, + "privateEndpointLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the location of the Private Link resource. If you are not using Private Link then this should be empty." + } + } + }, + "functions": [], + "variables": { + "isPrivateLinkOrigin": "[not(equals(parameters('privateEndpointResourceId'), ''))]", + "privateLinkOriginDetails": { + "privateLink": { + "id": "privateEndpointResourceId" + }, + "groupId": "[if(not(equals(parameters('privateLinkResourceType'), '')), parameters('privateLinkResourceType'), null())]", + "privateLinkLocation": "privateEndpointLocation", + "requestMessage": "Please approve this connection." + }, + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "profileName", + "location": "global", + "sku": { + "name": "skuName" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "originHostName", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]", + "priority": 1, + "weight": 1000, + "sharedPrivateLinkResource": "[if(variables('isPrivateLinkOrigin'), variables('privateLinkOriginDetails'), null())]" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/profileName/endpointName", + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName" + }, + "originPath": "[if(not(equals(parameters('originPath'), '')), parameters('originPath'), null())]", + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "originForwardingProtocol", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/profileName/endpointName", + "Microsoft.Cdn/profiles/originGroups/origins/profileName/originGroupName/originName", + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + }, + "frontDoorId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('profileName'))).frontdoorId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/load-balancer", + "Microsoft.Resources/deployments/private-link-service" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'front-door'), '2019-10-01').outputs.frontDoorEndpointHostName.value]" + } + }, + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.126.58533", + "templateHash": "11026282578573497498" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1538 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1538 new file mode 100644 index 0000000..3ac2771 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1538 @@ -0,0 +1,174 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-waf-managed/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-waf-managed/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962908922, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-waf-managed/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-waf-managed/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1538", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1538", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "17992937866287760601" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which the Azure Storage resources should be deployed." + } + }, + "accountName": { + "type": "string", + "defaultValue": "[format('stor{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Storage account to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Standard_GZRS", + "Premium_LRS" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Azure Storage account." + } + }, + "indexDocument": { + "type": "string", + "defaultValue": "index.htm", + "metadata": { + "description": "The name of the page to display when a user navigates to the root of your static website." + } + }, + "errorDocument404Path": { + "type": "string", + "defaultValue": "404.htm", + "metadata": { + "description": "The name of the page to display when a user attempts to navigate to a page that does not exist in your static website." + } + } + }, + "functions": [], + "variables": { + "storageAccountContributorRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '17d1049b-9a84-46fb-8f53-869881c3d3ab')]", + "storageAccountStorageBlobDataContributorRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "managedIdentityName": "StorageStaticWebsiteEnabler", + "deploymentScriptName": "EnableStorageStaticWebsite" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[format('stor{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "StorageStaticWebsiteEnabler", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', parameters('accountName'))]", + "name": "[guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('storageAccountContributorRoleDefinitionId'))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '17d1049b-9a84-46fb-8f53-869881c3d3ab')]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/StorageStaticWebsiteEnabler", + "Microsoft.Storage/storageAccounts/[format('stor{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', parameters('accountName'))]", + "name": "[guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('storageAccountStorageBlobDataContributorRoleDefinitionId'))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/StorageStaticWebsiteEnabler", + "Microsoft.Storage/storageAccounts/[format('stor{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "EnableStorageStaticWebsite", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))]": {} + } + }, + "properties": { + "azPowerShellVersion": "5.4", + "scriptContent": " param (\r\n [string] $ResourceGroupName,\r\n [string] $StorageAccountName,\r\n [string] $IndexDocument,\r\n [string] $ErrorDocument404Path\r\n )\r\n\r\n $ErrorActionPreference = 'Stop'\r\n \r\n $storageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -AccountName $StorageAccountName\r\n $ctx = $storageAccount.Context\r\n Enable-AzStorageStaticWebsite -Context $ctx -IndexDocument $IndexDocument -ErrorDocument404Path $ErrorDocument404Path\r\n\r\n New-Item $IndexDocument -Force\r\n Set-Content $IndexDocument '

Welcome

'\r\n Set-AzStorageBlobContent -Context $ctx -Container '$web' -File $IndexDocument -Blob $IndexDocument -Properties @{'ContentType' = 'text/html'}\r\n\r\n New-Item $ErrorDocument404Path -Force\r\n Set-Content $ErrorDocument404Path '

Error: 404 Not Found

'\r\n Set-AzStorageBlobContent -Context $ctx -Container '$web' -File $ErrorDocument404Path -Blob $ErrorDocument404Path -Properties @{'ContentType' = 'text/html'}\r\n ", + "cleanupPreference": "OnSuccess", + "retentionInterval": "PT4H", + "arguments": "[format('-ResourceGroupName {0} -StorageAccountName {1} -IndexDocument {2} -ErrorDocument404Path {3}', resourceGroup().name, parameters('accountName'), parameters('indexDocument'), parameters('errorDocument404Path'))]" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/StorageStaticWebsiteEnabler", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('accountName')), 'Microsoft.Authorization/roleAssignments', guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('storageAccountContributorRoleDefinitionId')))]" + ] + } + ], + "outputs": { + "staticWebsiteHostName": { + "type": "string", + "value": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', parameters('accountName'))).primaryEndpoints.web, 'https://', ''), '/', '')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1539 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1539 new file mode 100644 index 0000000..05df942 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1539 @@ -0,0 +1,349 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-waf-managed/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-waf-managed/azuredeploy.parameters.json" + ], + "timestamp": 1642962908931, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-premium-waf-managed/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-premium-waf-managed/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1539", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.operationalinsights/workspaces", + "microsoft.cdn/profiles/origingroups", + "microsoft.cdn/profiles/securitypolicies", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1539", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "7935639897813084350" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regional resources should be deployed." + } + }, + "endpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting from Front Door to the origin." + }, + "value": "GET-PREREQ-staticWebsiteHostName" + }, + "wafMode": { + "type": "string", + "defaultValue": "Prevention", + "metadata": { + "description": "The mode that the WAF should be deployed using. In 'Prevention' mode, the WAF will block requests it detects as malicious. In 'Detection' mode, the WAF will not block requests and will simply log the request." + }, + "allowedValues": [ + "Detection", + "Prevention" + ] + }, + "wafManagedRuleSets": { + "type": "array", + "defaultValue": [ + { + "ruleSetType": "Microsoft_DefaultRuleSet", + "ruleSetVersion": "1.1" + }, + { + "ruleSetType": "Microsoft_BotManagerRuleSet", + "ruleSetVersion": "1.0" + } + ], + "metadata": { + "description": "The list of managed rule sets to configure on the WAF." + } + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "[format('la-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Log Analytics workspace to create." + } + } + }, + "functions": [], + "variables": { + "skuName": "Premium_AzureFrontDoor", + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute", + "wafPolicyName": "WafPolicy", + "securityPolicyName": "SecurityPolicy" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Premium_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "GET-PREREQ-staticWebsiteHostName", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "GET-PREREQ-staticWebsiteHostName", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "apiVersion": "2020-11-01", + "name": "WafPolicy", + "location": "global", + "sku": { + "name": "Premium_AzureFrontDoor" + }, + "properties": { + "policySettings": { + "enabledState": "Enabled", + "mode": "Prevention" + }, + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "Microsoft_DefaultRuleSet", + "ruleSetVersion": "1.1" + }, + { + "ruleSetType": "Microsoft_BotManagerRuleSet", + "ruleSetVersion": "1.0" + } + ] + } + } + }, + { + "type": "Microsoft.Cdn/profiles/securityPolicies", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('securityPolicyName'))]", + "properties": { + "parameters": { + "type": "WebApplicationFirewall", + "wafPolicy": { + "id": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/WafPolicy" + }, + "associations": [ + { + "domains": [ + { + "id": "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]" + } + ], + "patternsToMatch": [ + "/*" + ] + } + ] + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/WafPolicy" + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-03-01-preview", + "name": "[format('la-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "retentionInDays": 30, + "sku": { + "name": "PerGB2018" + } + } + }, + { + "type": "microsoft.insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "scope": "[format('Microsoft.Cdn/profiles/{0}', variables('profileName'))]", + "name": "diagnosticSettings", + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]", + "logs": [ + { + "category": "FrontDoorWebApplicationFirewallLog", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + } + ] + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT154 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT154 new file mode 100644 index 0000000..afa0c89 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT154 @@ -0,0 +1,412 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/github-enterprise/github-enterprise/azuredeploy.json", + "/application-workloads/github-enterprise/github-enterprise/azuredeploy.parameters.json" + ], + "timestamp": 1642962888788, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/github-enterprise/github-enterprise/azuredeploy.json", + "/application-workloads/github-enterprise/github-enterprise/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT154", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT154", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accountPrefix": { + "type": "string", + "metadata": { + "description": "Unique prefix for your Storage Account and VM name. Must be all lower case letters or numbers. No spaces or special characters." + }, + "value": "GEN-UNIQUE-4" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the VM. This value is ignored." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "VM Size. Select an ES v3 Series VM with at least 32 GB of RAM. Default value: Standard_E4s_v3" + }, + "defaultValue": "Standard_E4s_v3", + "allowedValues": [ + "Standard_E4s_v3", + "Standard_E8s_v3", + "Standard_E16s_v3", + "Standard_E20s_v3", + "Standard_E32s_v3", + "Standard_E48s_v3", + "Standard_E64s_v3" + ], + "value": "Standard_E4s_v3" + }, + "storageDiskSizeGB": { + "type": "string", + "metadata": { + "description": "Select a Premium Storage disk capacity for your source code, in GB. Default value: 512." + }, + "defaultValue": "512", + "value": "512" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "imagePublisher": "GitHub", + "imageOffer": "GitHub-Enterprise", + "OSDiskName": "osdiskforlinuxsimple", + "nicName": "[concat(replace(replace(parameters('accountPrefix'),'.',''),'_','-'), '-nic')]", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Premium_LRS", + "storageAccountName": "[concat(replace(replace(replace(parameters('accountPrefix'),'.',''),'_',''),'-',''), 'data')]", + "publicIPAddressName": "[concat(replace(replace(parameters('accountPrefix'),'.',''),'_','-'), '-pub-ip')]", + "publicIPAddressType": "Dynamic", + "dnsNameForPublicIP": "GEN-UNIQUE-4-ghe", + "vmName": "[concat(replace(replace(parameters('accountPrefix'),'.',''),'_','-'), '-ghe-vm')]", + "virtualNetworkName": "[concat(replace(replace(parameters('accountPrefix'),'.',''),'_','-'), '-vnet')]", + "networkSecurityGroupName": "[concat(replace(replace(parameters('accountPrefix'),'.',''),'_','-'), '-nsg')]", + "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]", + "dataDiskName": "ghe-data", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-4-ghe" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('networkSecurityGroupName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "subnet": { + "id": "[variables('subnetRef')]" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "[variables('vmName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E4s_v3" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "GitHub", + "offer": "GitHub-Enterprise", + "sku": "GitHub-Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "osdiskforlinuxsimple_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "ghe-data_DataDisk1", + "diskSizeGB": "512", + "createOption": "Empty", + "lun": 0 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" + } + ] + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('networkSecurityGroupName')]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "https_8443", + "properties": { + "description": "https", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "8443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "http_8080", + "properties": { + "description": "http plain text", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "ssh_port_122", + "properties": { + "description": "Allow admin SSH", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "122", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "vpn_1194", + "properties": { + "description": "Allow VPN", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "1194", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "snmp_161", + "properties": { + "description": "Allow SNMP", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "161", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 104, + "direction": "Inbound" + } + }, + { + "name": "https_443", + "properties": { + "description": "Allow HTTPS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + }, + { + "name": "http_80", + "properties": { + "description": "Allow HTTP", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 106, + "direction": "Inbound" + } + }, + { + "name": "ssh_22", + "properties": { + "description": "Allow Git SSH", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 107, + "direction": "Inbound" + } + }, + { + "name": "git_9418", + "properties": { + "description": "Allow Git", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "9418", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 108, + "direction": "Inbound" + } + }, + { + "name": "smtp_25", + "properties": { + "description": "Allow SMTP", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "25", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 109, + "direction": "Inbound" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1540 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1540 new file mode 100644 index 0000000..7eccbb9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1540 @@ -0,0 +1,261 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-priority-lb/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-priority-lb/azuredeploy.parameters.json" + ], + "timestamp": 1642962908941, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-priority-lb/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-priority-lb/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1540", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1540", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the frontdoor resource" + }, + "value": "GEN-UNIQUE" + }, + "backendPools1": { + "type": "object", + "metadata": { + "description": "Details of the backend pool 1 for the Azure Front Door" + }, + "value": { + "name": "backendPool1", + "backends": [ + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + }, + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 2, + "enabledState": "Enabled" + } + ] + } + }, + "backendPools2": { + "type": "object", + "metadata": { + "description": "Details of the backend pool 2 for the Azure Front Door" + }, + "value": { + "name": "backendPool2", + "backends": [ + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + }, + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 2, + "enabledState": "Enabled" + } + ] + } + } + }, + "variables": { + "frontdoorLocation": "global", + "frontDoorSuffix": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurefd.us', environment().suffixes.azureFrontDoorEndpointSuffix)]", + "frontDoorHostName": "[concat(toLower(parameters('frontDoorName')), '.', variables('frontDoorSuffix'))]" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/frontDoors", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*", + "/site1/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backendPools/GEN-UNIQUE/backendPool1" + } + }, + "enabledState": "Enabled" + } + }, + { + "name": "routingRule2", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Https" + ], + "patternsToMatch": [ + "/site2/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backendPools/GEN-UNIQUE/backendPool2" + } + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + }, + { + "name": "healthProbeSettings2", + "properties": { + "path": "/", + "protocol": "Https", + "intervalInSeconds": 60 + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + }, + { + "name": "loadBalancingSettings2", + "properties": { + "sampleSize": 2, + "successfulSamplesRequired": 1 + } + } + ], + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "copy": [ + { + "name": "backends", + "count": 36, + "input": { + "address": "backendPools1).backends[copyIndex(backends", + "httpPort": "backendPools1).backends[copyIndex(backends", + "httpsPort": "backendPools1).backends[copyIndex(backends", + "weight": "backendPools1).backends[copyIndex(backends", + "priority": "backendPools1).backends[copyIndex(backends", + "enabledState": "backendPools1).backends[copyIndex(backends" + } + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings1" + } + } + }, + { + "name": "backendPool2", + "properties": { + "copy": [ + { + "name": "backends", + "count": 36, + "input": { + "address": "backendPools2).backends[copyIndex(backends", + "httpPort": "backendPools2).backends[copyIndex(backends", + "httpsPort": "backendPools2).backends[copyIndex(backends", + "weight": "backendPools2).backends[copyIndex(backends", + "priority": "backendPools2).backends[copyIndex(backends", + "enabledState": "backendPools2).backends[copyIndex(backends" + } + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings2" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings2" + } + } + } + ], + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "properties": { + "hostName": "[variables('frontDoorHostName')]" + } + } + ], + "enabledState": "Enabled" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1541 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1541 new file mode 100644 index 0000000..b30803c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1541 @@ -0,0 +1,129 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-rate-limiting/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-rate-limiting/azuredeploy.parameters.json" + ], + "timestamp": 1642962908949, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-rate-limiting/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-rate-limiting/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1541", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1541", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "wafPolicyName": { + "type": "string", + "metadata": { + "description": "The name of the WAF policy" + }, + "value": "GEN-UNIQUE" + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Detection", + "metadata": { + "description": "Describes if it is in detection mode or prevention mode at policy level." + } + }, + "rateLimitDurationInMinutes": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Defines rate limit duration. Default - 1 minute." + }, + "value": 1 + }, + "rateLimitThreshold": { + "type": "int", + "metadata": { + "description": "Defines rate limit thresold." + }, + "value": 1000 + }, + "rateLimitAction": { + "type": "string", + "allowedValues": [ + "Allow", + "Block", + "Log" + ], + "defaultValue": "Log", + "metadata": { + "description": "Type of Action based on the match filter. Must be Allow, Block or Log." + } + }, + "ipMatch": { + "type": "string", + "metadata": { + "description": "The operator to be matched." + }, + "value": "192.168.0.10" + } + }, + "variables": { + "wafLocation": "global" + }, + "resources": [ + { + "apiVersion": "2019-03-01", + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "policySettings": { + "mode": "Detection", + "enabledState": "Enabled" + }, + "customRules": { + "rules": [ + { + "name": "Rule1", + "enabledState": "Enabled", + "priority": 1, + "ruleType": "RateLimitRule", + "rateLimitThreshold": 1000, + "rateLimitDurationInMinutes": 1, + "matchConditions": [ + { + "matchVariable": "RemoteAddr", + "operator": "IPMatch", + "matchValue": [ + "192.168.0.10" + ] + } + ], + "action": "Log" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1542 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1542 new file mode 100644 index 0000000..099d0c9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1542 @@ -0,0 +1,164 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-session-affinity/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-session-affinity/azuredeploy.parameters.json" + ], + "timestamp": 1642962908974, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-session-affinity/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-session-affinity/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1542", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoors" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1542", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "frontDoorName": { + "type": "string", + "metadata": { + "description": "The name of the frontdoor resource." + }, + "value": "GEN-UNIQUE" + }, + "backendAddress": { + "type": "string", + "metadata": { + "description": "The hostname of the backend. Must be an IP address or FQDN." + }, + "value": "GEN-CUSTOM-FQDN-NAME" + }, + "sessionAffinityEnabledState": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled'." + }, + "value": "Enabled" + }, + "sessionAffinityTtlSeconds": { + "type": "int", + "metadata": { + "description": "The TTL to use in seconds for session affinity, if applicable." + }, + "value": 60 + } + }, + "variables": { + "frontdoorLocation": "global", + "frontDoorSuffix": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurefd.us', environment().suffixes.azureFrontDoorEndpointSuffix)]", + "frontDoorHostName": "[concat(toLower(parameters('frontDoorName')), '.', variables('frontDoorSuffix'))]" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/frontDoors", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "routingRules": [ + { + "name": "routingRule1", + "properties": { + "frontendEndpoints": [ + { + "id": "Microsoft.Network/frontDoors/frontendEndpoints/GEN-UNIQUE/frontendEndpoint1" + } + ], + "acceptedProtocols": [ + "Http" + ], + "patternsToMatch": [ + "/*" + ], + "routeConfiguration": { + "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration", + "forwardingProtocol": "MatchRequest", + "backendPool": { + "id": "Microsoft.Network/frontDoors/backendPools/GEN-UNIQUE/backendPool1" + } + }, + "enabledState": "Enabled" + } + } + ], + "healthProbeSettings": [ + { + "name": "healthProbeSettings1", + "properties": { + "path": "/", + "protocol": "Http", + "intervalInSeconds": 120 + } + } + ], + "loadBalancingSettings": [ + { + "name": "loadBalancingSettings1", + "properties": { + "sampleSize": 4, + "successfulSamplesRequired": 2 + } + } + ], + "backendPools": [ + { + "name": "backendPool1", + "properties": { + "backends": [ + { + "address": "GEN-CUSTOM-FQDN-NAME", + "httpPort": 80, + "httpsPort": 443, + "weight": 50, + "priority": 1, + "enabledState": "Enabled" + } + ], + "loadBalancingSettings": { + "id": "Microsoft.Network/frontDoors/loadBalancingSettings/GEN-UNIQUE/loadBalancingSettings1" + }, + "healthProbeSettings": { + "id": "Microsoft.Network/frontDoors/healthProbeSettings/GEN-UNIQUE/healthProbeSettings1" + } + } + } + ], + "frontendEndpoints": [ + { + "name": "frontendEndpoint1", + "properties": { + "hostName": "[variables('frontDoorHostName')]", + "sessionAffinityEnabledState": "Enabled", + "sessionAffinityTtlSeconds": 60 + } + } + ], + "enabledState": "Enabled" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1543 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1543 new file mode 100644 index 0000000..64465de --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1543 @@ -0,0 +1,220 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium/azuredeploy.parameters.json" + ], + "timestamp": 1642962908984, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1543", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1543", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "6456583574145527380" + } + }, + "parameters": { + "endpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + }, + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting from Front Door to the origin." + }, + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + } + }, + "functions": [], + "variables": { + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "GEN-STATIC-WEBSITE-HOST-NAME", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "GEN-STATIC-WEBSITE-HOST-NAME", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1544 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1544 new file mode 100644 index 0000000..2065403 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1544 @@ -0,0 +1,973 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-api-management-external/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-api-management-external/azuredeploy.parameters.json" + ], + "timestamp": 1642962908994, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-api-management-external/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-api-management-external/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1544", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service/policies", + "microsoft.resources/deployments", + "microsoft.apimanagement/service/namedvalues" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1544", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "3528942585642063634" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource." + } + }, + "vnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the virtual network." + } + }, + "apiManagementSubnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the API Management subnet within the virtual network." + } + }, + "apiManagementServiceName": { + "type": "string", + "defaultValue": "[format('apim-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the API Management service instance to create. This must be globally unique." + } + }, + "apiManagementPublisherName": { + "type": "string", + "defaultValue": "Contoso", + "metadata": { + "description": "The name of the API publisher. This information is used by API Management." + } + }, + "apiManagementPublisherEmail": { + "type": "string", + "defaultValue": "admin@contoso.com", + "metadata": { + "description": "The email address of the API publisher. This information is used by API Management." + } + }, + "apiManagementSku": { + "type": "string", + "defaultValue": "Developer", + "allowedValues": [ + "Developer", + "Premium" + ], + "metadata": { + "description": "The name of the SKU to use when creating the API Management service instance. This must be a SKU that supports virtual network integration." + } + }, + "apiManagementSkuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of worker instances of your API Management service that should be provisioned." + } + }, + "frontDoorProxyEndpointName": { + "type": "string", + "defaultValue": "[format('afd-proxy-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create for the API Management proxy gateway. This must be globally unique." + } + }, + "frontDoorDeveloperPortalEndpointName": { + "type": "string", + "defaultValue": "[format('afd-portal-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create for the API Management developer portal. This must be globally unique." + } + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + } + }, + "functions": [], + "variables": { + "apiManagementFrontDoorIdNamedValueName": "FrontDoorId", + "apiManagementVirtualNetworkType": "External" + }, + "resources": [ + { + "type": "Microsoft.ApiManagement/service/namedValues", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', parameters('apiManagementServiceName'), variables('apiManagementFrontDoorIdNamedValueName'))]", + "properties": { + "displayName": "FrontDoorId", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'front-door'), '2019-10-01').outputs.frontDoorId.value]", + "secret": true + }, + "dependsOn": [ + "Microsoft.Resources/deployments/api-management", + "Microsoft.Resources/deployments/front-door" + ] + }, + { + "type": "Microsoft.ApiManagement/service/policies", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', parameters('apiManagementServiceName'), 'policy')]", + "properties": { + "value": "\n \n \n {{FrontDoorId}}\n \n \n \n \n \n", + "format": "xml" + }, + "dependsOn": [ + "Microsoft.ApiManagement/service/namedValues/[format('apim-{0}', uniqueString(resourceGroup().id))]/FrontDoorId" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "network", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vnetIPPrefix": { + "value": "10.0.0.0/16" + }, + "apiManagementSubnetIPPrefix": { + "value": "10.0.0.0/24" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "8050861117654188949" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the virtual network resources should be deployed." + } + }, + "vnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the virtual network." + } + }, + "apiManagementSubnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the API Management subnet within the virtual network." + } + } + }, + "functions": [], + "variables": { + "vnetName": "VNet", + "apiManagementSubnetName": "apim", + "nsgName": "MyNSG" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnetName", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "apiManagementSubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24", + "serviceEndpoints": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + }, + { + "service": "Microsoft.ServiceBus" + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsgName" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "nsgName", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Client_communication_to_API_Management", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "AzureFrontDoor.Backend", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Secure_Client_communication_to_API_Management", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "AzureFrontDoor.Backend", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Management_endpoint_for_Azure_portal_and_Powershell", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3443", + "sourceAddressPrefix": "ApiManagement", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Azure_Storage", + "properties": { + "description": "APIM service dependency on Azure Blob and Azure Table Storage", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 130, + "direction": "Outbound" + } + }, + { + "name": "Azure_Active_Directory_and_Azure_KeyVault_dependency", + "properties": { + "description": "Connect to Azure Active Directory for Developer Portal Authentication or for Oauth2 flow during any Proxy Authentication", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureActiveDirectory", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "Access_to_Azure_SQL_endpoints", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Sql", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "Access_to_Azure_KeyVault", + "properties": { + "description": "Allow APIM service control plane access to KeyVault to refresh secrets", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureKeyVault", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "Dependency_for_Log_to_event_Hub_policy_and_monitoring_agent", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRanges": [ + "5671", + "5672", + "443" + ], + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "EventHub", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Azure_File_Share_for_GIT", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "445", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 180, + "direction": "Outbound" + } + }, + { + "name": "Health_and_Monitoring_Extension", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "443", + "12000" + ], + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 190, + "direction": "Outbound" + } + }, + { + "name": "Publish_Diagnostic_Logs_and_Metrics_Resource_Health_and_Application_Insights", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "1886", + "443" + ], + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureMonitor", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "Connect_To_SMTP_Relay_for_sending_e-mails", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "25", + "587", + "25028" + ], + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 210, + "direction": "Outbound" + } + }, + { + "name": "Access_Redis_Service_for_Cache_policies_between_machines", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 220, + "direction": "Inbound" + } + }, + { + "name": "Sync_Counters_for_Rate_Limit_policies_between_machines", + "properties": { + "protocol": "Udp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 230, + "direction": "Inbound" + } + }, + { + "name": "Azure_Infrastructure_Load_Balancer", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 240, + "direction": "Inbound" + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "vnetName" + }, + "apiManagementSubnetResourceId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/vnetName/apiManagementSubnetName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "api-management", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "serviceName": { + "value": "[format('apim-{0}', uniqueString(resourceGroup().id))]" + }, + "publisherName": { + "value": "Contoso" + }, + "publisherEmail": { + "value": "admin@contoso.com" + }, + "skuName": { + "value": "Developer" + }, + "skuCount": { + "value": 1 + }, + "subnetResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'network'), '2019-10-01').outputs.apiManagementSubnetResourceId.value]" + }, + "virtualNetworkType": { + "value": "External" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "3992877471425080918" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the API Management resources should be deployed." + } + }, + "serviceName": { + "type": "string", + "metadata": { + "description": "The name of the API Management service instance to create. This must be globally unique." + } + }, + "publisherName": { + "type": "string", + "metadata": { + "description": "The name of the API publisher. This information is used by API Management." + } + }, + "publisherEmail": { + "type": "string", + "metadata": { + "description": "The email address of the API publisher. This information is used by API Management." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Developer", + "Premium" + ], + "metadata": { + "description": "The name of the SKU to use when creating the API Management service instance. This must be a SKU that supports virtual network integration." + } + }, + "skuCount": { + "type": "int", + "metadata": { + "description": "The number of worker instances of your API Management service that should be provisioned." + } + }, + "virtualNetworkType": { + "type": "string", + "allowedValues": [ + "External", + "Internal" + ], + "metadata": { + "description": "The type of virtual network integration to deploy. In 'External' mode, a public IP address will be associated with the API Management service instance. In 'Internal' mode, the instance is only accessible using private networking." + } + }, + "subnetResourceId": { + "type": "string", + "metadata": { + "description": "The resource ID of the virtual network subnet that the API Management service instance should be deployed into." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2020-12-01", + "name": "serviceName", + "location": "[resourceGroup().location]", + "sku": { + "name": "skuName", + "capacity": "skuCount" + }, + "properties": { + "publisherName": "publisherName", + "publisherEmail": "publisherEmail", + "virtualNetworkType": "virtualNetworkType", + "virtualNetworkConfiguration": { + "subnetResourceId": "subnetResourceId" + } + } + } + ], + "outputs": { + "apiManagementInternalIPAddress": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ApiManagement/service', parameters('serviceName'))).publicIPAddresses[0]]" + }, + "apiManagementProxyHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ApiManagement/service', parameters('serviceName'))).hostnameConfigurations[0].hostName]" + }, + "apiManagementDeveloperPortalHostName": { + "type": "string", + "value": "[replace(reference(resourceId('Microsoft.ApiManagement/service', parameters('serviceName'))).developerPortalUrl, 'https://', '')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/network" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "front-door", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "skuName": { + "value": "Standard_AzureFrontDoor" + }, + "proxyEndpointName": { + "value": "[format('afd-proxy-{0}', uniqueString(resourceGroup().id))]" + }, + "developerPortalEndpointName": { + "value": "[format('afd-portal-{0}', uniqueString(resourceGroup().id))]" + }, + "proxyOriginHostName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'api-management'), '2019-10-01').outputs.apiManagementProxyHostName.value]" + }, + "developerPortalOriginHostName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'api-management'), '2019-10-01').outputs.apiManagementDeveloperPortalHostName.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "7789076445361247006" + } + }, + "parameters": { + "proxyOriginHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting to the origin for the API Management proxy gateway." + } + }, + "developerPortalOriginHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting to the origin for the API Management developer portal." + } + }, + "proxyEndpointName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door endpoint to create for the API Management proxy gateway. This must be globally unique." + } + }, + "developerPortalEndpointName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door endpoint to create for the API Management developer portal. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile. If you use Private Link this must be set to `Premium_AzureFrontDoor`." + } + } + }, + "functions": [], + "variables": { + "profileName": "FrontDoor", + "proxyOriginGroupName": "Proxy", + "developerPortalOriginGroupName": "DeveloperPortal", + "proxyOriginName": "ApiManagementProxy", + "developerPortalOriginName": "ApiManagementDeveloperPortal", + "proxyRouteName": "ProxyRoute", + "developerPortalRouteName": "DeveloperPortalRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "profileName", + "location": "global", + "sku": { + "name": "skuName" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('proxyEndpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('proxyOriginGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('proxyOriginGroupName'), variables('proxyOriginName'))]", + "properties": { + "hostName": "proxyOriginHostName", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "proxyOriginHostName", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName", + "Microsoft.Cdn/profiles/originGroups/profileName/proxyOriginGroupName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('proxyEndpointName'), variables('proxyRouteName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/profileName/proxyOriginGroupName" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "queryStringCachingBehavior": "NotSet", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName", + "Microsoft.Cdn/profiles/afdEndpoints/profileName/proxyEndpointName", + "Microsoft.Cdn/profiles/originGroups/origins/profileName/proxyOriginGroupName/proxyOriginName", + "Microsoft.Cdn/profiles/originGroups/profileName/proxyOriginGroupName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('developerPortalEndpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('developerPortalOriginGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('developerPortalOriginGroupName'), variables('developerPortalOriginName'))]", + "properties": { + "hostName": "developerPortalOriginHostName", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "developerPortalOriginHostName", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/profileName/developerPortalOriginGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('developerPortalEndpointName'), variables('developerPortalRouteName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/profileName/developerPortalOriginGroupName" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/profileName/developerPortalEndpointName", + "Microsoft.Cdn/profiles/originGroups/origins/profileName/developerPortalOriginGroupName/developerPortalOriginName", + "Microsoft.Cdn/profiles/originGroups/profileName/developerPortalOriginGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + } + ], + "outputs": { + "frontDoorId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('profileName'))).frontdoorId]" + }, + "frontDoorProxyEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('proxyEndpointName'))).hostName]" + }, + "frontDoorDeveloperPortalEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('developerPortalEndpointName'))).hostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/api-management" + ] + } + ], + "outputs": { + "frontDoorEndpointApiManagementProxyHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'front-door'), '2019-10-01').outputs.frontDoorProxyEndpointHostName.value]" + }, + "frontDoorEndpointApiManagementPortalHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'front-door'), '2019-10-01').outputs.frontDoorDeveloperPortalEndpointHostName.value]" + }, + "apiManagementProxyHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'api-management'), '2019-10-01').outputs.apiManagementProxyHostName.value]" + }, + "apiManagementPortalHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'api-management'), '2019-10-01').outputs.apiManagementDeveloperPortalHostName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1545 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1545 new file mode 100644 index 0000000..e0b8f55 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1545 @@ -0,0 +1,291 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-app-service-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-app-service-public/azuredeploy.parameters.json" + ], + "timestamp": 1642962909006, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-app-service-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-app-service-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1545", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.web/sites", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1545", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource." + } + }, + "appName": { + "type": "string", + "defaultValue": "[format('myapp-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the App Service application to create. This must be globally unique." + } + }, + "appServicePlanSkuName": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "The name of the SKU to use when creating the App Service plan." + } + }, + "appServicePlanCapacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of worker instances of your App Service plan that should be provisioned." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + } + }, + "functions": [], + "variables": { + "appServicePlanName": "AppServicePlan", + "frontDoorProfileName": "MyFrontDoor", + "frontDoorOriginGroupName": "MyOriginGroup", + "frontDoorOriginName": "MyAppServiceOrigin", + "frontDoorRouteName": "MyRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "AppServicePlan", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "capacity": 1 + }, + "kind": "app" + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[format('myapp-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "app", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan", + "httpsOnly": true, + "siteConfig": { + "ipSecurityRestrictions": [ + { + "tag": "ServiceTag", + "ipAddress": "AzureFrontDoor.Backend", + "action": "Allow", + "priority": 100, + "headers": { + "x-azure-fdid": [ + "[reference(resourceId('Microsoft.Cdn/profiles', variables('frontDoorProfileName'))).frontdoorId]" + ] + }, + "name": "Allow traffic from Front Door" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/AppServicePlan", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'), variables('frontDoorOriginName'))]", + "properties": { + "hostName": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('myapp-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'), variables('frontDoorRouteName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyAppServiceOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + } + ], + "outputs": { + "appServiceHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]" + }, + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))).hostName]" + } + }, + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.126.58533", + "templateHash": "13450059783872220843" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1546 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1546 new file mode 100644 index 0000000..b29d5ef --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1546 @@ -0,0 +1,698 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-application-gateway-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-application-gateway-public/azuredeploy.parameters.json" + ], + "timestamp": 1642962909013, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-application-gateway-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-application-gateway-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1546", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.resources/deployments", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1546", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "10789731057216224177" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource." + } + }, + "vnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the virtual network." + } + }, + "applicationGatewaySubnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the Application Gateway subnet within the virtual network." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting from Application Gateway to the origin." + }, + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + } + }, + "functions": [], + "variables": { + "frontDoorProfileName": "MyFrontDoor", + "frontDoorOriginGroupName": "MyOriginGroup", + "frontDoorOriginName": "MyOrigin", + "frontDoorRouteName": "MyRoute", + "frontDoorToApplicationGatewayProtocol": "HttpOnly" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'), variables('frontDoorOriginName'))]", + "properties": { + "hostName": "[reference(resourceId('Microsoft.Resources/deployments', 'application-gateway'), '2019-10-01').outputs.publicIPAddressHostName.value]", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "[reference(resourceId('Microsoft.Resources/deployments', 'application-gateway'), '2019-10-01').outputs.publicIPAddressHostName.value]", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Resources/deployments/application-gateway", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'), variables('frontDoorRouteName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "network", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vnetIPPrefix": { + "value": "10.0.0.0/16" + }, + "applicationGatewaySubnetIPPrefix": { + "value": "10.0.0.0/24" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "6548544479718265254" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the virtual network resources should be deployed." + } + }, + "vnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the virtual network." + } + }, + "applicationGatewaySubnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the Application Gateway subnet within the virtual network." + } + } + }, + "functions": [], + "variables": { + "vnetName": "VNet", + "applicationGatewaySubnetName": "ApplicationGateway", + "nsgName": "MyNSG" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnetName", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "applicationGatewaySubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsgName" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "nsgName", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow_Front_Door_to_send_HTTP_traffic", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "80", + "443" + ], + "sourceAddressPrefix": "AzureFrontDoor.Backend", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Allow_GWM", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "65200-65535", + "sourceAddressPrefix": "GatewayManager", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Allow_AzureLoadBalancer", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "vnetName" + }, + "applicationGatewaySubnetResourceId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/vnetName/applicationGatewaySubnetName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "application-gateway", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "backendFqdn": { + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + }, + "pickHostNameFromBackendAddress": { + "value": true + }, + "subnetResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'network'), '2019-10-01').outputs.applicationGatewaySubnetResourceId.value]" + }, + "frontDoorId": { + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('frontDoorProfileName'))).frontdoorId]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "12389454261032614681" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the Application Gateway resources should be deployed." + } + }, + "publicIPAddressDomainNameLabel": { + "type": "string", + "defaultValue": "[format('appgw{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The domain name label to attach to the Application Gateway's public IP address. This must be unique within the specified location." + } + }, + "minimumCapacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The minimum number of capacity units for the Application Gateway to use when autoscaling." + } + }, + "maximumCapacity": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "The maximum number of capacity units for the Application Gateway to use when autoscaling." + } + }, + "backendFqdn": { + "type": "string", + "metadata": { + "description": "The hostname (FQDN) of the backend to configure in Application Gateway." + } + }, + "pickHostNameFromBackendAddress": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Indicates that Application Gateway should override the host header in the request with the host name of the back-end when the request is routed from the Application Gateway to the backend." + } + }, + "subnetResourceId": { + "type": "string", + "metadata": { + "description": "The resource ID of the virtual network subnet that the Application Gateway should be deployed into." + } + }, + "frontDoorId": { + "type": "string", + "metadata": { + "description": "The unique ID associated with the Front Door profile that will send traffic to this application. The Application Gateway WAF will be configured to disallow traffic that hasn't had this ID attached to it." + } + } + }, + "functions": [], + "variables": { + "publicIPAddressName": "MyApplicationGateway-PIP", + "applicationGatewayName": "MyApplicationGateway", + "gatewayIPConfigurationName": "MyGatewayIPConfiguration", + "frontendIPConfigurationName": "MyFrontendIPConfiguration", + "frontendPort": 80, + "frontendPortName": "MyFrontendPort", + "backendPort": 80, + "backendAddressPoolName": "MyBackendAddressPool", + "backendHttpSettingName": "MyBackendHttpSetting", + "httpListenerName": "MyHttpListener", + "requestRoutingRuleName": "MyRequestRoutingRule", + "wafPolicyName": "MyWAFPolicy", + "wafPolicyManagedRuleSetType": "OWASP", + "wafPolicyManagedRuleSetVersion": "3.1" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "publicIPAddressName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "publicIPAddressDomainNameLabel" + } + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2021-02-01", + "name": "applicationGatewayName", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "WAF_v2", + "tier": "WAF_v2" + }, + "autoscaleConfiguration": { + "minCapacity": "minimumCapacity", + "maxCapacity": "maximumCapacity" + }, + "gatewayIPConfigurations": [ + { + "name": "gatewayIPConfigurationName", + "properties": { + "subnet": { + "id": "subnetResourceId" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "frontendIPConfigurationName", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ], + "frontendPorts": [ + { + "name": "frontendPortName", + "properties": { + "port": "frontendPort" + } + } + ], + "backendAddressPools": [ + { + "name": "backendAddressPoolName", + "properties": { + "backendAddresses": [ + { + "fqdn": "backendFqdn" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "backendHttpSettingName", + "properties": { + "port": "backendPort", + "protocol": "Http", + "cookieBasedAffinity": "Disabled", + "pickHostNameFromBackendAddress": "pickHostNameFromBackendAddress" + } + } + ], + "httpListeners": [ + { + "name": "httpListenerName", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGatewayName/frontendIPConfigurationName" + }, + "frontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGatewayName/frontendPortName" + }, + "firewallPolicy": { + "id": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/wafPolicyName" + }, + "protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "name": "requestRoutingRuleName", + "properties": { + "ruleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGatewayName/httpListenerName" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGatewayName/backendAddressPoolName" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGatewayName/backendHttpSettingName" + } + } + } + ], + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Prevention", + "ruleSetVersion": "wafPolicyManagedRuleSetVersion", + "ruleSetType": "wafPolicyManagedRuleSetType", + "requestBodyCheck": false + }, + "firewallPolicy": { + "id": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/wafPolicyName" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIPAddressName", + "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/wafPolicyName" + ] + }, + { + "type": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies", + "apiVersion": "2020-06-01", + "name": "wafPolicyName", + "location": "[resourceGroup().location]", + "properties": { + "policySettings": { + "mode": "Prevention", + "state": "Enabled", + "requestBodyCheck": false + }, + "customRules": [ + { + "name": "RequireCorrectFrontDoorIdHeader", + "ruleType": "MatchRule", + "priority": 1, + "action": "Block", + "matchConditions": [ + { + "matchVariables": [ + { + "variableName": "RequestHeaders", + "selector": "X-Azure-FDID" + } + ], + "negationConditon": true, + "operator": "Equal", + "matchValues": [ + "frontDoorId" + ] + } + ] + } + ], + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "wafPolicyManagedRuleSetType", + "ruleSetVersion": "wafPolicyManagedRuleSetVersion" + } + ] + } + } + } + ], + "outputs": { + "applicationGatewayResourceId": { + "type": "string", + "value": "Microsoft.Network/applicationGateways/applicationGatewayName" + }, + "publicIPAddressHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Resources/deployments/network" + ] + } + ], + "outputs": { + "applicationGatewayHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'application-gateway'), '2019-10-01').outputs.publicIPAddressHostName.value]" + }, + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))).hostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1547 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1547 new file mode 100644 index 0000000..52168a6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1547 @@ -0,0 +1,794 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-application-gateway-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-application-gateway-public/azuredeploy.parameters.json" + ], + "timestamp": 1642962909024, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-application-gateway-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-application-gateway-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1547", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.resources/deployments", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups", + "microsoft.containerinstance/containergroups", + "microsoft.network/networkprofiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1547", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "11434721622982992997" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource." + } + }, + "vnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the virtual network." + } + }, + "containerInstancesSubnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the container group subnet within the virtual network." + } + }, + "applicationGatewaySubnetIPPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the Application Gateway subnet within the virtual network." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + } + }, + "functions": [], + "variables": { + "frontDoorProfileName": "MyFrontDoor", + "frontDoorOriginGroupName": "MyOriginGroup", + "frontDoorOriginName": "MyAppServiceOrigin", + "frontDoorRouteName": "MyRoute", + "containerGroupName": "HelloWorld", + "containerName": "helloworld", + "containerImageUri": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "containerGroupNetworkProfileName": "aci-networkprofile", + "containerGroupNetworkProfileInterfaceName": "eth0", + "containerGroupNetworkProfileInterfaceIPConfigurationName": "ipconfigprofile1" + }, + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2021-03-01", + "name": "HelloWorld", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "helloworld", + "properties": { + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "ports": [ + { + "port": 80 + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 4 + } + } + } + } + ], + "restartPolicy": "OnFailure", + "osType": "Linux", + "networkProfile": { + "id": "Microsoft.Network/networkProfiles/aci-networkprofile" + } + }, + "dependsOn": [ + "Microsoft.Network/networkProfiles/aci-networkprofile" + ] + }, + { + "type": "Microsoft.Network/networkProfiles", + "apiVersion": "2021-02-01", + "name": "aci-networkprofile", + "location": "[resourceGroup().location]", + "properties": { + "containerNetworkInterfaceConfigurations": [ + { + "name": "eth0", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigprofile1", + "properties": { + "subnet": { + "id": "[reference(resourceId('Microsoft.Resources/deployments', 'network'), '2019-10-01').outputs.containerGroupSubnetResourceId.value]" + } + } + } + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Resources/deployments/network" + ] + }, + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'), variables('frontDoorOriginName'))]", + "properties": { + "hostName": "[reference(resourceId('Microsoft.Resources/deployments', 'application-gateway'), '2019-10-01').outputs.publicIPAddressHostName.value]", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "[reference(resourceId('Microsoft.Resources/deployments', 'application-gateway'), '2019-10-01').outputs.publicIPAddressHostName.value]", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Resources/deployments/application-gateway", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'), variables('frontDoorRouteName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyAppServiceOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "network", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vnetIPPrefix": { + "value": "10.0.0.0/16" + }, + "containerInstancesSubnetIPPrefix": { + "value": "10.0.0.0/24" + }, + "applicationGatewaySubnetIPPrefix": { + "value": "10.0.1.0/24" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "13692041791996661220" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the virtual network resources should be deployed." + } + }, + "vnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the virtual network." + } + }, + "containerInstancesSubnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the container group subnet within the virtual network." + } + }, + "applicationGatewaySubnetIPPrefix": { + "type": "string", + "metadata": { + "description": "The IP address prefix (CIDR range) to use when deploying the Application Gateway subnet within the virtual network." + } + } + }, + "functions": [], + "variables": { + "vnetName": "VNet", + "containerGroupSubnetName": "Containers", + "applicationGatewaySubnetName": "ApplicationGateway", + "nsgName": "MyNSG" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnetName", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "containerGroupSubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24", + "delegations": [ + { + "name": "DelegationService", + "properties": { + "serviceName": "Microsoft.ContainerInstance/containerGroups" + } + } + ] + } + }, + { + "name": "applicationGatewaySubnetName", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsgName" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "nsgName", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow_Front_Door_to_send_HTTP_traffic", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "80", + "443" + ], + "sourceAddressPrefix": "AzureFrontDoor.Backend", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Allow_GWM", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "65200-65535", + "sourceAddressPrefix": "GatewayManager", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Allow_AzureLoadBalancer", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "vnetName" + }, + "vnetResourceId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/vnetName" + }, + "applicationGatewaySubnetResourceId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/vnetName/applicationGatewaySubnetName" + }, + "containerGroupSubnetResourceId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/vnetName/containerGroupSubnetName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "application-gateway", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "backendIPAddress": { + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', variables('containerGroupName'))).ipAddress.ip]" + }, + "subnetResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'network'), '2019-10-01').outputs.applicationGatewaySubnetResourceId.value]" + }, + "frontDoorId": { + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('frontDoorProfileName'))).frontdoorId]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "13637022608544864344" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the Application Gateway resources should be deployed." + } + }, + "publicIPAddressDomainNameLabel": { + "type": "string", + "defaultValue": "[format('appgw{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The domain name label to attach to the Application Gateway's public IP address. This must be unique within the specified location." + } + }, + "minimumCapacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The minimum number of capacity units for the Application Gateway to use when autoscaling." + } + }, + "maximumCapacity": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "The maximum number of capacity units for the Application Gateway to use when autoscaling." + } + }, + "backendIPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the backend to configure in Application Gateway." + } + }, + "pickHostNameFromBackendAddress": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Indicates that Application Gateway should override the host header in the request with the host name of the back-end when the request is routed from the Application Gateway to the backend." + } + }, + "subnetResourceId": { + "type": "string", + "metadata": { + "description": "The resource ID of the virtual network subnet that the Application Gateway should be deployed into." + } + }, + "frontDoorId": { + "type": "string", + "metadata": { + "description": "The unique ID associated with the Front Door profile that will send traffic to this application. The Application Gateway WAF will be configured to disallow traffic that hasn't had this ID attached to it." + } + } + }, + "functions": [], + "variables": { + "publicIPAddressName": "MyApplicationGateway-PIP", + "applicationGatewayName": "MyApplicationGateway", + "gatewayIPConfigurationName": "MyGatewayIPConfiguration", + "frontendIPConfigurationName": "MyFrontendIPConfiguration", + "frontendPort": 80, + "frontendPortName": "MyFrontendPort", + "backendPort": 80, + "backendAddressPoolName": "MyBackendAddressPool", + "backendHttpSettingName": "MyBackendHttpSetting", + "httpListenerName": "MyHttpListener", + "requestRoutingRuleName": "MyRequestRoutingRule", + "wafPolicyName": "MyWAFPolicy", + "wafPolicyManagedRuleSetType": "OWASP", + "wafPolicyManagedRuleSetVersion": "3.1" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "publicIPAddressName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "publicIPAddressDomainNameLabel" + } + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2019-09-01", + "name": "applicationGatewayName", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "WAF_v2", + "tier": "WAF_v2" + }, + "autoscaleConfiguration": { + "minCapacity": "minimumCapacity", + "maxCapacity": "maximumCapacity" + }, + "gatewayIPConfigurations": [ + { + "name": "gatewayIPConfigurationName", + "properties": { + "subnet": { + "id": "subnetResourceId" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "frontendIPConfigurationName", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ], + "frontendPorts": [ + { + "name": "frontendPortName", + "properties": { + "port": "frontendPort" + } + } + ], + "backendAddressPools": [ + { + "name": "backendAddressPoolName", + "properties": { + "backendAddresses": [ + { + "ipAddress": "backendIPAddress" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "backendHttpSettingName", + "properties": { + "port": "backendPort", + "protocol": "Http", + "cookieBasedAffinity": "Disabled", + "pickHostNameFromBackendAddress": "pickHostNameFromBackendAddress" + } + } + ], + "httpListeners": [ + { + "name": "httpListenerName", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGatewayName/frontendIPConfigurationName" + }, + "frontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGatewayName/frontendPortName" + }, + "firewallPolicy": { + "id": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/wafPolicyName" + }, + "protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "name": "requestRoutingRuleName", + "properties": { + "ruleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGatewayName/httpListenerName" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGatewayName/backendAddressPoolName" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGatewayName/backendHttpSettingName" + } + } + } + ], + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Prevention", + "ruleSetVersion": "wafPolicyManagedRuleSetVersion", + "ruleSetType": "wafPolicyManagedRuleSetType", + "requestBodyCheck": false + }, + "firewallPolicy": { + "id": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/wafPolicyName" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIPAddressName", + "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/wafPolicyName" + ] + }, + { + "type": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies", + "apiVersion": "2020-06-01", + "name": "wafPolicyName", + "location": "[resourceGroup().location]", + "properties": { + "policySettings": { + "mode": "Prevention", + "state": "Enabled", + "requestBodyCheck": false + }, + "customRules": [ + { + "name": "RequireCorrectFrontDoorIdHeader", + "ruleType": "MatchRule", + "priority": 1, + "action": "Block", + "matchConditions": [ + { + "matchVariables": [ + { + "variableName": "RequestHeaders", + "selector": "X-Azure-FDID" + } + ], + "negationConditon": true, + "operator": "Equal", + "matchValues": [ + "frontDoorId" + ] + } + ] + } + ], + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "wafPolicyManagedRuleSetType", + "ruleSetVersion": "wafPolicyManagedRuleSetVersion" + } + ] + } + } + } + ], + "outputs": { + "applicationGatewayResourceId": { + "type": "string", + "value": "Microsoft.Network/applicationGateways/applicationGatewayName" + }, + "publicIPAddressHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.ContainerInstance/containerGroups/HelloWorld", + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Resources/deployments/network" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))).hostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1548 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1548 new file mode 100644 index 0000000..e3c8424 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1548 @@ -0,0 +1,275 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-public/azuredeploy.parameters.json" + ], + "timestamp": 1642962909035, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-container-instances-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1548", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups", + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1548", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "13826511842460355977" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + }, + "containerGroupDnsNameLabel": { + "type": "string", + "defaultValue": "[format('aci-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The DNS name for the container group." + } + } + }, + "functions": [], + "variables": { + "frontDoorProfileName": "MyFrontDoor", + "frontDoorOriginGroupName": "MyOriginGroup", + "frontDoorOriginName": "MyAppServiceOrigin", + "frontDoorRouteName": "MyRoute", + "containerGroupName": "HelloWorld", + "containerName": "helloworld", + "containerImageUri": "mcr.microsoft.com/azuredocs/aci-helloworld:latest" + }, + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2021-03-01", + "name": "HelloWorld", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "helloworld", + "properties": { + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "ports": [ + { + "port": 80 + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 4 + } + } + } + } + ], + "restartPolicy": "OnFailure", + "osType": "Linux", + "ipAddress": { + "type": "Public", + "dnsNameLabel": "[format('aci-{0}', uniqueString(resourceGroup().id))]", + "ports": [ + { + "protocol": "TCP", + "port": 80 + } + ] + } + } + }, + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'), variables('frontDoorOriginName'))]", + "properties": { + "hostName": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', variables('containerGroupName'))).ipAddress.fqdn]", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', variables('containerGroupName'))).ipAddress.fqdn]", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.ContainerInstance/containerGroups/HelloWorld", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'), variables('frontDoorRouteName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyAppServiceOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))).hostName]" + }, + "containerGroupFqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', variables('containerGroupName'))).ipAddress.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1549 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1549 new file mode 100644 index 0000000..328dfa5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1549 @@ -0,0 +1,470 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-function-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-function-public/azuredeploy.parameters.json" + ], + "timestamp": 1642962909041, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-function-public/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-function-public/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1549", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.resources/deployments", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/origingroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1549", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource." + } + }, + "functionAppName": { + "type": "string", + "defaultValue": "[format('fn-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Functions application to create. This must be globally unique." + } + }, + "functionPlanSkuName": { + "type": "string", + "defaultValue": "EP1", + "metadata": { + "description": "The name of the SKU to use when creating the Azure Functions plan." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + } + }, + "functions": [], + "variables": { + "frontDoorProfileName": "MyFrontDoor", + "frontDoorOriginGroupName": "MyOriginGroup", + "frontDoorOriginName": "MyAppServiceOrigin", + "frontDoorRouteName": "MyRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), variables('frontDoorOriginGroupName'), variables('frontDoorOriginName'))]", + "properties": { + "hostName": "[reference(resourceId('Microsoft.Resources/deployments', 'functionapp'), '2019-10-01').outputs.functionAppHostName.value]", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "[reference(resourceId('Microsoft.Resources/deployments', 'functionapp'), '2019-10-01').outputs.functionAppHostName.value]", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Resources/deployments/functionapp" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'), variables('frontDoorRouteName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyAppServiceOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "functionapp", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "appName": { + "value": "[format('fn-{0}', uniqueString(resourceGroup().id))]" + }, + "functionPlanSkuName": { + "value": "EP1" + }, + "frontDoorId": { + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('frontDoorProfileName'))).frontdoorId]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the Azure Functions resources should be deployed." + } + }, + "appName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Functions application to create. This must be globally unique." + } + }, + "functionRuntime": { + "type": "string", + "defaultValue": "dotnet", + "metadata": { + "description": "The runtime to deploy onto the Azure Functions application." + } + }, + "functionPlanSkuName": { + "type": "string", + "metadata": { + "description": "The name of the SKU to use when creating the Azure Functions plan. Common SKUs include Y1 (consumption) and EP1, EP2, and EP3 (premium)." + } + }, + "frontDoorId": { + "type": "string", + "metadata": { + "description": "The unique ID associated with the Front Door profile that will send traffic to this application. Access restrictions will be configured to disallow traffic that hasn't had this ID attached to it." + } + } + }, + "functions": [], + "variables": { + "appServicePlanName": "FunctionPlan", + "appInsightsName": "AppInsights", + "storageAccountName": "[format('fnstor{0}', uniqueString(resourceGroup().id, parameters('appName')))]", + "functionPlanKind": "[if(equals(parameters('functionPlanSkuName'), 'Y1'), 'functionapp', 'elastic')]", + "functionName": "MyHttpTriggeredFunction" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "storageAccountName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "file": { + "keyType": "Account", + "enabled": true + }, + "blob": { + "keyType": "Account", + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "appInsightsName", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web", + "publicNetworkAccessForIngestion": "Enabled", + "publicNetworkAccessForQuery": "Enabled" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "appServicePlanName", + "location": "[resourceGroup().location]", + "kind": "functionPlanKind", + "sku": { + "name": "EP1" + }, + "properties": {} + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "appName", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/appServicePlanName", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightsName'))).InstrumentationKey]" + }, + { + "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", + "value": "[format('InstrumentationKey={0}', reference(resourceId('Microsoft.Insights/components', variables('appInsightsName'))).InstrumentationKey)]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "functionRuntime" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "AzureWebJobsDisableHomepage", + "value": "true" + } + ], + "ipSecurityRestrictions": [ + { + "tag": "ServiceTag", + "ipAddress": "AzureFrontDoor.Backend", + "action": "Allow", + "priority": 100, + "headers": { + "x-azure-fdid": [ + "frontDoorId" + ] + }, + "name": "Allow traffic from Front Door" + } + ] + }, + "httpsOnly": true + }, + "dependsOn": [ + "Microsoft.Insights/components/appInsightsName", + "Microsoft.Web/serverfarms/appServicePlanName", + "Microsoft.Storage/storageAccounts/storageAccountName" + ] + }, + { + "type": "Microsoft.Web/sites/functions", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('appName'), variables('functionName'))]", + "properties": { + "config": { + "disabled": false, + "bindings": [ + { + "name": "req", + "type": "httpTrigger", + "direction": "in", + "authLevel": "anonymous", + "methods": [ + "get" + ] + }, + { + "name": "$return", + "type": "http", + "direction": "out" + } + ] + }, + "files": { + "run.csx": " #r \"Newtonsoft.Json\"\r\n using System.Net;\r\n using Microsoft.AspNetCore.Mvc;\r\n using Microsoft.Extensions.Primitives;\r\n using Newtonsoft.Json;\r\n \r\n public static async Task Run(HttpRequest req, ILogger log)\r\n {\r\n log.LogInformation(\"C# HTTP trigger function processed a request.\");\r\n string name = req.Query[\"name\"];\r\n string requestBody = await new StreamReader(req.Body).ReadToEndAsync();\r\n dynamic data = JsonConvert.DeserializeObject(requestBody);\r\n name = name ?? data?.name;\r\n \r\n string responseMessage = string.IsNullOrEmpty(name)\r\n ? \"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.\"\r\n : $\"Hello, {name}. This HTTP triggered function executed successfully.\";\r\n \r\n return new OkObjectResult(responseMessage);\r\n }\r\n " + } + }, + "dependsOn": [ + "Microsoft.Web/sites/appName" + ] + } + ], + "outputs": { + "functionAppHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', parameters('appName'))).defaultHostName]" + }, + "functionName": { + "type": "string", + "value": "functionName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + } + ], + "outputs": { + "frontDoorEndpointFunctionUrl": { + "type": "string", + "value": "[format('https://{0}/api/{1}', reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('frontDoorProfileName'), parameters('frontDoorEndpointName'))).hostName, reference(resourceId('Microsoft.Resources/deployments', 'functionapp'), '2019-10-01').outputs.functionName.value)]" + }, + "functionAppFunctionUrl": { + "type": "string", + "value": "[format('https://{0}/api/{1}', reference(resourceId('Microsoft.Resources/deployments', 'functionapp'), '2019-10-01').outputs.functionAppHostName.value, reference(resourceId('Microsoft.Resources/deployments', 'functionapp'), '2019-10-01').outputs.functionName.value)]" + } + }, + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.126.58533", + "templateHash": "9932106935421130927" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT155 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT155 new file mode 100644 index 0000000..a09e75c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT155 @@ -0,0 +1,405 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/gluster/gluster-file-system/azuredeploy.json", + "/application-workloads/gluster/gluster-file-system/azuredeploy.parameters.json" + ], + "timestamp": 1642962888807, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/gluster/gluster-file-system/azuredeploy.json", + "/application-workloads/gluster/gluster-file-system/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT155", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT155", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "hostOs": { + "type": "string", + "defaultValue": "Ubuntu", + "allowedValues": [ + "Ubuntu" + ], + "metadata": { + "description": "OS to install on the host system (Centos was removed due to breaking change)" + } + }, + "scaleNumber": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 4, + 6, + 8 + ], + "metadata": { + "description": "Number of nodes in the gluster file system" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "ssh user name" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "VM size for the nodes" + } + }, + "diskSize": { + "type": "int", + "defaultValue": 1024, + "allowedValues": [ + 32, + 64, + 128, + 256, + 512, + 1024, + 2048, + 4095 + ], + "metadata": { + "description": "The size of the datadisks to be striped. The total capacity will be this size multiplied by the number of data disks you specify." + } + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "gluster", + "metadata": { + "description": "VM name prefix, a number will be appended for each node" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "gluster-vnet", + "metadata": { + "description": "Virtual network name for the cluster" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Identifies whether to use new or existing Virtual Network" + } + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "If using existing VNet, specifies the resource group for the existing VNet" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "gluster-subnet", + "metadata": { + "description": "subnet name" + } + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "IP address in CIDR for virtual network" + } + }, + "subnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "IP address in CIDR for subnet" + } + }, + "volumeName": { + "type": "string", + "defaultValue": "gfsvol", + "metadata": { + "description": "Gluster file system volume name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "pipName": "pip", + "nicName": "nic", + "gfsSubnetRef": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/gluster-vnet/gluster-subnet", + "vmIPPrefix": "[concat(substring(parameters('subnetAddressPrefix'), 0, lastIndexOf(parameters('subnetAddressPrefix'), '.')), '.10')]", + "imageReference": { + "Ubuntu": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "CentOS": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.5", + "version": "latest" + } + }, + "customScriptFilePath": "[uri(parameters('_artifactsLocation'), concat('azuregfs.sh', parameters('_artifactsLocationSasToken')))]", + "customScriptCommandToExecute": "bash azuregfs.sh", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "gluster-vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "gluster-subnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "pipcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "pipLoop", + "count": 2 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "gluster-vnet", + "pipLoop" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pipcopyindex()" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(variables('vmIPPrefix'), copyindex())]", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/gluster-vnet/gluster-subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "glustercopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": 2 + }, + "dependsOn": [ + "nicLoop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "glustercopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "(imageReference)[parameters(hostOS)]", + "osDisk": { + "name": "glustercopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "glustercopyIndex()_DataDisk1", + "diskSizeGB": 1024, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "glustercopyIndex()_DataDisk2", + "diskSizeGB": 1024, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niccopyindex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "gfs-config", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/glustercopyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('azuregfs.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat(variables('customScriptCommandToExecute'), ' ', parameters('vmNamePrefix'), ' ', variables('vmIPPrefix'), ' ', parameters('volumeName'), ' ', copyindex(), ' ', parameters('scaleNumber'))]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1550 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1550 new file mode 100644 index 0000000..2cfb007 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1550 @@ -0,0 +1,316 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-geo-filtering/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-geo-filtering/azuredeploy.parameters.json" + ], + "timestamp": 1642962909051, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-geo-filtering/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-geo-filtering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1550", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.cdn/profiles/origingroups", + "microsoft.cdn/profiles/securitypolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1550", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "6288789075521867207" + } + }, + "parameters": { + "endpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting from Front Door to the origin." + }, + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + }, + "wafMode": { + "type": "string", + "defaultValue": "Prevention", + "allowedValues": [ + "Detection", + "Prevention" + ], + "metadata": { + "description": "The mode that the WAF should be deployed using. In \"Prevention\" mode, the WAF will block requests it detects as malicious. In \"Detection\" mode, the WAF will not block requests and will simply log the request." + } + }, + "allowedCountries": { + "type": "array", + "defaultValue": [ + "US", + "AU", + "NZ", + "ZZ" + ], + "metadata": { + "description": "The list of country codes that are allowed to access the Front Door endpoint. Country codes are specified using ISO 3166-1 alpha-2 format. [See here for a list of country codes.](https://docs.microsoft.com/azure/frontdoor/front-door-geo-filtering#countryregion-code-reference)" + } + } + }, + "functions": [], + "variables": { + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute", + "wafPolicyName": "WafPolicy", + "securityPolicyName": "SecurityPolicy" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "GEN-STATIC-WEBSITE-HOST-NAME", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "GEN-STATIC-WEBSITE-HOST-NAME", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "apiVersion": "2020-11-01", + "name": "WafPolicy", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + }, + "properties": { + "policySettings": { + "enabledState": "Enabled", + "mode": "Prevention" + }, + "customRules": { + "rules": [ + { + "name": "ApplyGeoFilter", + "priority": 100, + "enabledState": "Enabled", + "ruleType": "MatchRule", + "action": "Block", + "matchConditions": [ + { + "matchVariable": "RemoteAddr", + "operator": "GeoMatch", + "negateCondition": true, + "matchValue": [ + "US", + "AU", + "NZ", + "ZZ" + ] + } + ] + } + ] + } + } + }, + { + "type": "Microsoft.Cdn/profiles/securityPolicies", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('securityPolicyName'))]", + "properties": { + "parameters": { + "type": "WebApplicationFirewall", + "wafPolicy": { + "id": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/WafPolicy" + }, + "associations": [ + { + "domains": [ + { + "id": "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]" + } + ], + "patternsToMatch": [ + "/*" + ] + } + ] + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/WafPolicy" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1551 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1551 new file mode 100644 index 0000000..1e2d980 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1551 @@ -0,0 +1,318 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-rate-limit/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-rate-limit/azuredeploy.parameters.json" + ], + "timestamp": 1642962909061, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-rate-limit/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-rate-limit/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1551", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.cdn/profiles/origingroups", + "microsoft.cdn/profiles/securitypolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1551", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.255.40792", + "templateHash": "16546465990403916930" + } + }, + "parameters": { + "endpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting from Front Door to the origin." + }, + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + }, + "wafMode": { + "type": "string", + "defaultValue": "Prevention", + "allowedValues": [ + "Detection", + "Prevention" + ], + "metadata": { + "description": "The mode that the WAF should be deployed using. In \"Prevention\" mode, the WAF will block requests it detects as malicious. In \"Detection\" mode, the WAF will not block requests and will simply log the request." + } + }, + "rateLimitThreshold": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "The number of requests per client IP address within the specified duration." + } + }, + "rateLimitDurationInMinutes": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "The duration at which the rate limit should be applied." + } + } + }, + "functions": [], + "variables": { + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute", + "wafPolicyName": "WafPolicy", + "securityPolicyName": "SecurityPolicy", + "documentationIPAddressRange": "192.0.2.0/24" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "GEN-STATIC-WEBSITE-HOST-NAME", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "GEN-STATIC-WEBSITE-HOST-NAME", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "apiVersion": "2020-11-01", + "name": "WafPolicy", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + }, + "properties": { + "policySettings": { + "enabledState": "Enabled", + "mode": "Prevention" + }, + "customRules": { + "rules": [ + { + "name": "ApplyRateLimit", + "priority": 100, + "enabledState": "Enabled", + "ruleType": "RateLimitRule", + "rateLimitThreshold": 10, + "rateLimitDurationInMinutes": 5, + "action": "Block", + "matchConditions": [ + { + "matchVariable": "RemoteAddr", + "operator": "IPMatch", + "negateCondition": true, + "matchValue": [ + "192.0.2.0/24" + ] + } + ] + } + ] + } + } + }, + { + "type": "Microsoft.Cdn/profiles/securityPolicies", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('securityPolicyName'))]", + "properties": { + "parameters": { + "type": "WebApplicationFirewall", + "wafPolicy": { + "id": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/WafPolicy" + }, + "associations": [ + { + "domains": [ + { + "id": "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]" + } + ], + "patternsToMatch": [ + "/*" + ] + } + ] + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/WafPolicy" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1552 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1552 new file mode 100644 index 0000000..5d34ca2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1552 @@ -0,0 +1,278 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-rule-set/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-rule-set/azuredeploy.parameters.json" + ], + "timestamp": 1642962909070, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-rule-set/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-rule-set/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1552", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles/rulesets/rules", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.cdn/profiles/rulesets", + "microsoft.cdn/profiles/origingroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1552", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "endpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + }, + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting from Front Door to the origin." + }, + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + } + }, + "functions": [], + "variables": { + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute", + "ruleSetName": "MyRuleSet", + "redirectSecureTrafficToMicrosoftRuleName": "RedirectSecureTrafficToMicrosoft" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "GEN-STATIC-WEBSITE-HOST-NAME", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "GEN-STATIC-WEBSITE-HOST-NAME", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/ruleSets", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('ruleSetName'))]", + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/ruleSets/rules", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('ruleSetName'), variables('redirectSecureTrafficToMicrosoftRuleName'))]", + "properties": { + "order": 1, + "conditions": [ + { + "name": "UrlPath", + "parameters": { + "operator": "BeginsWith", + "negateCondition": false, + "matchValues": [ + "secure/" + ], + "transforms": [ + "Lowercase" + ], + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlPathMatchConditionParameters" + } + } + ], + "actions": [ + { + "name": "UrlRedirect", + "parameters": { + "redirectType": "TemporaryRedirect", + "destinationProtocol": "Https", + "customHostname": "microsoft.com", + "customPath": "/", + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlRedirectActionParameters" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Cdn/profiles/ruleSets/MyFrontDoor/MyRuleSet" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "ruleSets": [ + { + "id": "Microsoft.Cdn/profiles/ruleSets/MyFrontDoor/MyRuleSet" + } + ], + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Cdn/profiles/ruleSets/MyFrontDoor/MyRuleSet" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + } + }, + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.126.58533", + "templateHash": "17999528133028462907" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1553 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1553 new file mode 100644 index 0000000..8958ac5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1553 @@ -0,0 +1,551 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-storage-static-website/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-storage-static-website/azuredeploy.parameters.json" + ], + "timestamp": 1642962909080, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-storage-static-website/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-storage-static-website/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1553", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1553", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "648794587516266321" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[format('stor{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Storage account to create. This must be globally unique." + } + }, + "storageSkuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Standard_GZRS", + "Premium_LRS" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Azure Storage account." + } + }, + "storageStaticWebsiteIndexDocument": { + "type": "string", + "defaultValue": "index.html", + "metadata": { + "description": "The name of the page to display when a user navigates to the root of your static website." + } + }, + "storageStaticWebsiteErrorDocument404Path": { + "type": "string", + "defaultValue": "error.html", + "metadata": { + "description": "The name of the page to display when a user attempts to navigate to a page that does not exist in your static website." + } + }, + "frontDoorEndpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "storage", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "accountName": { + "value": "[format('stor{0}', uniqueString(resourceGroup().id))]" + }, + "skuName": { + "value": "Standard_LRS" + }, + "indexDocument": { + "value": "index.html" + }, + "errorDocument404Path": { + "value": "error.html" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "6712737273808846904" + } + }, + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The location into which the Azure Storage resources should be deployed." + } + }, + "accountName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Storage account to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Standard_GZRS", + "Premium_LRS" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Azure Storage account." + } + }, + "indexDocument": { + "type": "string", + "metadata": { + "description": "The name of the page to display when a user navigates to the root of your static website." + } + }, + "errorDocument404Path": { + "type": "string", + "metadata": { + "description": "The name of the page to display when a user attempts to navigate to a page that does not exist in your static website." + } + } + }, + "functions": [], + "variables": { + "storageAccountContributorRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '17d1049b-9a84-46fb-8f53-869881c3d3ab')]", + "storageAccountStorageBlobDataContributorRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "managedIdentityName": "StorageStaticWebsiteEnabler", + "deploymentScriptName": "EnableStorageStaticWebsite" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "accountName", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "skuName" + } + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "managedIdentityName", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', parameters('accountName'))]", + "name": "[guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('storageAccountContributorRoleDefinitionId'))]", + "properties": { + "roleDefinitionId": "storageAccountContributorRoleDefinitionId", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/managedIdentityName", + "Microsoft.Storage/storageAccounts/accountName" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', parameters('accountName'))]", + "name": "[guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('storageAccountStorageBlobDataContributorRoleDefinitionId'))]", + "properties": { + "roleDefinitionId": "storageAccountStorageBlobDataContributorRoleDefinitionId", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/managedIdentityName", + "Microsoft.Storage/storageAccounts/accountName" + ] + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "deploymentScriptName", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))]": {} + } + }, + "properties": { + "azPowerShellVersion": "5.4", + "scriptContent": "param (\n [string] $ResourceGroupName,\n [string] $StorageAccountName,\n [string] $IndexDocument,\n [string] $ErrorDocument404Path\n)\n\n$ErrorActionPreference = 'Stop'\n\n$storageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -AccountName $StorageAccountName\n$ctx = $storageAccount.Context\nEnable-AzStorageStaticWebsite -Context $ctx -IndexDocument $IndexDocument -ErrorDocument404Path $ErrorDocument404Path\n\nNew-Item $IndexDocument -Force\nSet-Content $IndexDocument '

Welcome

'\nSet-AzStorageBlobContent -Context $ctx -Container '$web' -File $IndexDocument -Blob $IndexDocument -Properties @{'ContentType' = 'text/html'}\n\nNew-Item $ErrorDocument404Path -Force\nSet-Content $ErrorDocument404Path '

Error: 404 Not Found

'\nSet-AzStorageBlobContent -Context $ctx -Container '$web' -File $ErrorDocument404Path -Blob $ErrorDocument404Path -Properties @{'ContentType' = 'text/html'}\n", + "cleanupPreference": "OnSuccess", + "retentionInterval": "PT4H", + "arguments": "[format('-ResourceGroupName {0} -StorageAccountName {1} -IndexDocument {2} -ErrorDocument404Path {3}', resourceGroup().name, parameters('accountName'), parameters('indexDocument'), parameters('errorDocument404Path'))]" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/managedIdentityName", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('accountName')), 'Microsoft.Authorization/roleAssignments', guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('storageAccountContributorRoleDefinitionId')))]", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('accountName')), 'Microsoft.Authorization/roleAssignments', guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), variables('storageAccountStorageBlobDataContributorRoleDefinitionId')))]" + ] + } + ], + "outputs": { + "staticWebsiteHostName": { + "type": "string", + "value": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', parameters('accountName'))).primaryEndpoints.web, 'https://', ''), '/', '')]" + }, + "storageResourceId": { + "type": "string", + "value": "Microsoft.Storage/storageAccounts/accountName" + }, + "storageLocation": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('accountName')), '2021-04-01', 'full').location]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "front-door", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "skuName": { + "value": "Standard_AzureFrontDoor" + }, + "endpointName": { + "value": "[format('afd-{0}', uniqueString(resourceGroup().id))]" + }, + "originHostName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'storage'), '2019-10-01').outputs.staticWebsiteHostName.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "9410320160873569150" + } + }, + "parameters": { + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting to the origin." + } + }, + "originPath": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The path that should be used when connecting to the origin." + } + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile. If you use Private Link this must be set to `Premium_AzureFrontDoor`." + } + }, + "originForwardingProtocol": { + "type": "string", + "defaultValue": "HttpsOnly", + "allowedValues": [ + "HttpOnly", + "HttpsOnly", + "MatchRequest" + ], + "metadata": { + "description": "The protocol that should be used when connecting from Front Door to the origin." + } + }, + "privateEndpointResourceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource ID of the Private Link resource (e.g. an App Service application, Azure Storage account, etc). If you are not using Private Link then this should be empty." + } + }, + "privateLinkResourceType": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the resource type of the Private Link resource. The allowed value will depend on the specific Private Link resource type you are using. If you are not using Private Link then this should be empty." + } + }, + "privateEndpointLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "If you are using Private Link to connect to the origin, this should specify the location of the Private Link resource. If you are not using Private Link then this should be empty." + } + } + }, + "functions": [], + "variables": { + "isPrivateLinkOrigin": "[not(equals(parameters('privateEndpointResourceId'), ''))]", + "privateLinkOriginDetails": { + "privateLink": { + "id": "privateEndpointResourceId" + }, + "groupId": "[if(not(equals(parameters('privateLinkResourceType'), '')), parameters('privateLinkResourceType'), null())]", + "privateLinkLocation": "privateEndpointLocation", + "requestMessage": "Please approve this connection." + }, + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "profileName", + "location": "global", + "sku": { + "name": "skuName" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "originHostName", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "originHostName", + "priority": 1, + "weight": 1000, + "sharedPrivateLinkResource": "[if(variables('isPrivateLinkOrigin'), variables('privateLinkOriginDetails'), null())]" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName" + }, + "originPath": "[if(not(equals(parameters('originPath'), '')), parameters('originPath'), null())]", + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "originForwardingProtocol", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/profileName/endpointName", + "Microsoft.Cdn/profiles/originGroups/origins/profileName/originGroupName/originName", + "Microsoft.Cdn/profiles/originGroups/profileName/originGroupName", + "Microsoft.Cdn/profiles/profileName" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + }, + "frontDoorId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles', variables('profileName'))).frontdoorId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/storage" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'front-door'), '2019-10-01').outputs.frontDoorEndpointHostName.value]" + }, + "storageStaticWebsiteHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'storage'), '2019-10-01').outputs.staticWebsiteHostName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1554 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1554 new file mode 100644 index 0000000..4e8dcd5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1554 @@ -0,0 +1,362 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-waf-custom/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-waf-custom/azuredeploy.parameters.json" + ], + "timestamp": 1642962909091, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-standard-premium-waf-custom/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-standard-premium-waf-custom/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1554", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/origingroups/origins", + "microsoft.cdn/profiles/afdendpoints", + "microsoft.cdn/profiles", + "microsoft.cdn/profiles/afdendpoints/routes", + "microsoft.network/frontdoorwebapplicationfirewallpolicies", + "microsoft.operationalinsights/workspaces", + "microsoft.cdn/profiles/origingroups", + "microsoft.cdn/profiles/securitypolicies", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1554", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "13209801836335547580" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which regional resources should be deployed." + } + }, + "endpointName": { + "type": "string", + "defaultValue": "[format('afd-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Front Door endpoint to create. This must be globally unique." + } + }, + "originHostName": { + "type": "string", + "metadata": { + "description": "The host name that should be used when connecting from Front Door to the origin." + }, + "value": "GEN-STATIC-WEBSITE-HOST-NAME" + }, + "frontDoorSkuName": { + "type": "string", + "defaultValue": "Standard_AzureFrontDoor", + "allowedValues": [ + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor" + ], + "metadata": { + "description": "The name of the SKU to use when creating the Front Door profile." + } + }, + "wafMode": { + "type": "string", + "defaultValue": "Prevention", + "allowedValues": [ + "Detection", + "Prevention" + ], + "metadata": { + "description": "The mode that the WAF should be deployed using. In 'Prevention' mode, the WAF will block requests it detects as malicious. In 'Detection' mode, the WAF will not block requests and will simply log the request." + } + }, + "ipAddressRangesToBlock": { + "type": "array", + "defaultValue": [ + "198.51.100.100", + "203.0.113.0/24" + ], + "metadata": { + "description": "The IP address ranges to block. Individual IP addresses can be specified as-is. Ranges should be specified using CIDR notation." + } + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "[format('la-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Log Analytics workspace to create." + } + } + }, + "functions": [], + "variables": { + "profileName": "MyFrontDoor", + "originGroupName": "MyOriginGroup", + "originName": "MyOrigin", + "routeName": "MyRoute", + "wafPolicyName": "WafPolicy", + "securityPolicyName": "SecurityPolicy" + }, + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "MyFrontDoor", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + } + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originResponseTimeoutSeconds": 240, + "enabledState": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('originGroupName'))]", + "properties": { + "loadBalancingSettings": { + "sampleSize": 4, + "successfulSamplesRequired": 3 + }, + "healthProbeSettings": { + "probePath": "/", + "probeRequestType": "HEAD", + "probeProtocol": "Http", + "probeIntervalInSeconds": 100 + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/originGroups/origins", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), variables('originGroupName'), variables('originName'))]", + "properties": { + "hostName": "GEN-STATIC-WEBSITE-HOST-NAME", + "httpPort": 80, + "httpsPort": 443, + "originHostHeader": "GEN-STATIC-WEBSITE-HOST-NAME", + "priority": 1, + "weight": 1000 + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Cdn/profiles/afdEndpoints/routes", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}/{2}', variables('profileName'), parameters('endpointName'), variables('routeName'))]", + "properties": { + "originGroup": { + "id": "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup" + }, + "supportedProtocols": [ + "Http", + "Https" + ], + "patternsToMatch": [ + "/*" + ], + "compressionSettings": { + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true + }, + "queryStringCachingBehavior": "IgnoreQueryString", + "forwardingProtocol": "HttpsOnly", + "linkToDefaultDomain": "Enabled", + "httpsRedirect": "Enabled" + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/originGroups/origins/MyFrontDoor/MyOriginGroup/MyOrigin", + "Microsoft.Cdn/profiles/originGroups/MyFrontDoor/MyOriginGroup", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + }, + { + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "apiVersion": "2020-11-01", + "name": "WafPolicy", + "location": "global", + "sku": { + "name": "Standard_AzureFrontDoor" + }, + "properties": { + "policySettings": { + "enabledState": "Enabled", + "mode": "Prevention" + }, + "customRules": { + "rules": [ + { + "name": "BlockTrafficFromIPRanges", + "priority": 100, + "enabledState": "Enabled", + "ruleType": "MatchRule", + "action": "Block", + "matchConditions": [ + { + "matchVariable": "RemoteAddr", + "operator": "IPMatch", + "matchValue": [ + "198.51.100.100", + "203.0.113.0/24" + ] + } + ] + } + ] + } + } + }, + { + "type": "Microsoft.Cdn/profiles/securityPolicies", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('securityPolicyName'))]", + "properties": { + "parameters": { + "type": "WebApplicationFirewall", + "wafPolicy": { + "id": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/WafPolicy" + }, + "associations": [ + { + "domains": [ + { + "id": "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]" + } + ], + "patternsToMatch": [ + "/*" + ] + } + ] + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/afdEndpoints/MyFrontDoor/[format('afd-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/MyFrontDoor", + "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies/WafPolicy" + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2021-06-01", + "name": "[format('la-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "retentionInDays": 30, + "sku": { + "name": "PerGB2018" + } + } + }, + { + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.Cdn/profiles/{0}', variables('profileName'))]", + "name": "diagnosticSettings", + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]", + "logs": [ + { + "category": "FrontDoorWebApplicationFirewallLog", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + } + ] + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[format('la-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Cdn/profiles/MyFrontDoor" + ] + } + ], + "outputs": { + "frontDoorEndpointHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/afdEndpoints', variables('profileName'), parameters('endpointName'))).hostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1555 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1555 new file mode 100644 index 0000000..669ee77 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1555 @@ -0,0 +1,112 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-waf-clientip/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-waf-clientip/azuredeploy.parameters.json" + ], + "timestamp": 1642962909100, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-waf-clientip/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-waf-clientip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1555", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1555", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "wafPolicyName": { + "type": "string", + "metadata": { + "description": "The name of the WAF policy" + }, + "value": "GEN-UNIQUE" + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Detection", + "metadata": { + "description": "Describes if it is in detection mode or prevention mode at policy level." + } + }, + "IPfilteringAction": { + "type": "string", + "allowedValues": [ + "Allow", + "Block", + "Log" + ], + "metadata": { + "description": "Type of Action based on the match filter. Must be Allow, Block or Log." + }, + "value": "Block" + }, + "IPMatch": { + "type": "string", + "metadata": { + "description": "The operator to be matched." + }, + "value": "192.168.0.10" + } + }, + "variables": { + "wafLocation": "global" + }, + "resources": [ + { + "apiVersion": "2019-03-01", + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "policySettings": { + "mode": "Detection", + "enabledState": "Enabled" + }, + "customRules": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "enabledState": "Enabled", + "ruleType": "MatchRule", + "matchConditions": [ + { + "matchVariable": "RemoteAddr", + "operator": "IPMatch", + "matchValue": [ + "192.168.0.10" + ] + } + ], + "action": "Block" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1556 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1556 new file mode 100644 index 0000000..1a6bb22 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1556 @@ -0,0 +1,161 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/front-door-waf-http-params/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-waf-http-params/azuredeploy.parameters.json" + ], + "timestamp": 1642962909111, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/front-door-waf-http-params/azuredeploy.json", + "/quickstarts/microsoft.network/front-door-waf-http-params/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1556", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/frontdoorwebapplicationfirewallpolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1556", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "wafPolicyName": { + "type": "string", + "metadata": { + "description": "The name of the WAF policy" + }, + "value": "GEN-UNIQUE" + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Detection", + "metadata": { + "description": "Describes if it is in detection mode or prevention mode at policy level." + } + }, + "httpRule1": { + "type": "object", + "metadata": { + "description": "Defines contents of a web application rule 1" + }, + "value": { + "name": "Rule1", + "priority": 1, + "enabledState": "Enabled", + "ruleType": "MatchRule", + "matchConditions": [ + { + "matchVariable": "RequestHeader", + "operator": "Contains", + "selector": "User-Agent", + "matchValue": [ + "Chrome/69.0.3497" + ] + } + ], + "action": "Block" + } + }, + "httpRule2": { + "type": "object", + "metadata": { + "description": "Defines contents of a web application rule 2" + }, + "value": { + "name": "Rule2", + "priority": 2, + "enabledState": "Enabled", + "ruleType": "MatchRule", + "matchConditions": [ + { + "matchVariable": "QueryString", + "operator": "Contains", + "selector": "", + "matchValue": [ + "IamAbot" + ] + } + ], + "action": "Block" + } + } + }, + "variables": { + "wafLocation": "global" + }, + "resources": [ + { + "apiVersion": "2019-03-01", + "type": "Microsoft.Network/FrontDoorWebApplicationFirewallPolicies", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "policySettings": { + "mode": "Detection", + "enabledState": "Enabled" + }, + "customRules": { + "rules": [ + { + "name": "Rule1", + "priority": 1, + "enabledState": "Enabled", + "ruleType": "MatchRule", + "copy": [ + { + "name": "matchConditions", + "count": 39, + "input": { + "matchVariable": "httpRule1).matchConditions[copyIndex(matchConditions", + "operator": "httpRule1).matchConditions[copyIndex(matchConditions", + "selector": "httpRule1).matchConditions[copyIndex(matchConditions", + "matchValue": "httpRule1).matchConditions[copyIndex(matchConditions" + } + } + ], + "action": "Block" + }, + { + "name": "Rule2", + "priority": 2, + "enabledState": "Enabled", + "ruleType": "MatchRule", + "copy": [ + { + "name": "matchConditions", + "count": 39, + "input": { + "matchVariable": "httpRule2).matchConditions[copyIndex(matchConditions", + "operator": "httpRule2).matchConditions[copyIndex(matchConditions", + "selector": "httpRule2).matchConditions[copyIndex(matchConditions", + "matchValue": "httpRule2).matchConditions[copyIndex(matchConditions" + } + } + ], + "action": "Block" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1558 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1558 new file mode 100644 index 0000000..adf0301 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1558 @@ -0,0 +1,522 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/fwm-docs-qs/azuredeploy.json", + "/quickstarts/microsoft.network/fwm-docs-qs/azuredeploy.parameters.json" + ], + "timestamp": 1642962909133, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/fwm-docs-qs/azuredeploy.json", + "/quickstarts/microsoft.network/fwm-docs-qs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1558", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/azurefirewalls", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/networkinterfaces", + "microsoft.network/publicipaddresses", + "microsoft.network/firewallpolicies/rulecollectiongroups", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/firewallpolicies", + "microsoft.network/virtualnetworks/subnets", + "microsoft.network/virtualwans", + "microsoft.network/virtualhubs/hubvirtualnetworkconnections", + "microsoft.network/virtualhubs/hubroutetables", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1558", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "String", + "metadata": { + "description": "Admin username for the servers" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "SecureString", + "metadata": { + "description": "Password for the admin account on the servers" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "String", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the virtual machine." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualWans", + "apiVersion": "2020-06-01", + "name": "VWan-01", + "location": "[resourceGroup().location]", + "properties": { + "disableVpnEncryption": false, + "allowBranchToBranchTraffic": true, + "office365LocalBreakoutCategory": "None", + "type": "Standard" + } + }, + { + "type": "Microsoft.Network/virtualHubs", + "apiVersion": "2020-06-01", + "name": "Hub-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualWans/VWan-01" + ], + "properties": { + "addressPrefix": "10.1.0.0/16", + "virtualWan": { + "id": "Microsoft.Network/virtualWans/VWan-01" + } + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-06-01", + "name": "Hub-01/hub-spoke", + "dependsOn": [ + "Microsoft.Network/azureFirewalls/AzfwTest", + "Microsoft.Network/virtualHubs/Hub-01", + "Microsoft.Network/virtualNetworks/Spoke-01", + "Microsoft.Network/virtualHubs/hubRouteTables/Hub-01/RT_VNet" + ], + "properties": { + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/Spoke-01" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": false, + "enableInternetSecurity": true, + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/Hub-01/RT_VNet" + }, + "propagatedRouteTables": { + "labels": [ + "VNet" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/Hub-01/RT_VNet" + } + ] + } + } + } + }, + { + "type": "Microsoft.Network/firewallPolicies", + "apiVersion": "2020-06-01", + "name": "Policy-01", + "location": "[resourceGroup().location]", + "properties": { + "threatIntelMode": "Alert" + } + }, + { + "type": "Microsoft.Network/firewallPolicies/ruleCollectionGroups", + "apiVersion": "2020-06-01", + "name": "Policy-01/DefaultApplicationRuleCollectionGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/firewallPolicies/Policy-01" + ], + "properties": { + "priority": 300, + "ruleCollections": [ + { + "ruleCollectionType": "FirewallPolicyFilterRuleCollection", + "name": "RC-01", + "priority": 100, + "action": { + "type": "Allow" + }, + "rules": [ + { + "ruleType": "ApplicationRule", + "name": "Allow-msft", + "sourceAddresses": [ + "*" + ], + "protocols": [ + { + "port": "80", + "protocolType": "http" + }, + { + "port": "443", + "protocolType": "https" + } + ], + "targetFqdns": [ + "*.microsoft.com" + ] + } + ] + } + ] + } + }, + { + "type": "Microsoft.Network/azureFirewalls", + "apiVersion": "2020-06-01", + "name": "AzfwTest", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualHubs/Hub-01", + "Microsoft.Network/firewallPolicies/Policy-01" + ], + "properties": { + "sku": { + "name": "AZFW_Hub", + "tier": "Standard" + }, + "hubIPAddresses": { + "publicIPs": { + "count": 1 + } + }, + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/Hub-01" + }, + "firewallPolicy": { + "id": "Microsoft.Network/firewallPolicies/Policy-01" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "Spoke-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "Spoke-01/Workload-SN", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/Spoke-01" + ], + "properties": { + "addressPrefix": "10.0.1.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "Spoke-01/Jump-SN", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/Spoke-01/Workload-SN", + "Microsoft.Network/routeTables/RT-01" + ], + "properties": { + "addressPrefix": "10.0.2.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/RT-01" + }, + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "Jump-Srv", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/netInterface-jump-srv" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "osType": "Windows", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 127 + } + }, + "osProfile": { + "computerName": "Jump-Srv", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVMAgent": true, + "enableAutomaticUpdates": true + }, + "allowExtensionOperations": true + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/netInterface-jump-srv" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "Workload-Srv", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/netInterface-workload-srv" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "osType": "Windows", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 127 + } + }, + "osProfile": { + "computerName": "Workload-Srv", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVMAgent": true, + "enableAutomaticUpdates": true + }, + "allowExtensionOperations": true + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/netInterface-workload-srv" + } + ] + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "netInterface-workload-srv", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/Spoke-01/Workload-SN", + "Microsoft.Network/networkSecurityGroups/nsg-workload-srv" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Spoke-01/Workload-SN" + }, + "primary": true, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": false, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-workload-srv" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "netInterface-jump-srv", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIP-jump-srv", + "Microsoft.Network/virtualNetworks/subnets/Spoke-01/Jump-SN", + "Microsoft.Network/networkSecurityGroups/nsg-jump-srv" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP-jump-srv" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Spoke-01/Jump-SN" + }, + "primary": true, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": false, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-jump-srv" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "nsg-jump-srv", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "RDP", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "nsg-workload-srv", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "publicIP-jump-srv", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-06-01", + "name": "RT-01", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false, + "routes": [ + { + "name": "jump-to-inet", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "Internet" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubRouteTables", + "apiVersion": "2020-06-01", + "name": "Hub-01/RT_VNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/azureFirewalls/AzfwTest" + ], + "properties": { + "routes": [ + { + "name": "Workload-SNToFirewall", + "destinationType": "CIDR", + "destinations": [ + "10.0.1.0/24" + ], + "nextHopType": "ResourceId", + "nextHop": "Microsoft.Network/azureFirewalls/AzfwTest" + }, + { + "name": "InternetToFirewall", + "destinationType": "CIDR", + "destinations": [ + "0.0.0.0/0" + ], + "nextHopType": "ResourceId", + "nextHop": "Microsoft.Network/azureFirewalls/AzfwTest" + } + ], + "labels": [ + "VNet" + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1559 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1559 new file mode 100644 index 0000000..c219e6f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1559 @@ -0,0 +1,184 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/internal-loadbalancer-create/azuredeploy.json", + "/quickstarts/microsoft.network/internal-loadbalancer-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909143, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/internal-loadbalancer-create/azuredeploy.json", + "/quickstarts/microsoft.network/internal-loadbalancer-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1559", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1559", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "address prefix" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "virtualNetworkName": "myVNet", + "subnetName": "myBackendSubnet", + "loadBalancerName": "myLoadBalancer", + "nicName": "myNIC1", + "lbsku": "Standard", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/myVNet/myBackendSubnet", + "lbrulename": "myHTTPRule", + "lbprobename": "myHealthProbe" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "myBackendSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNIC1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/loadBalancers//myLoadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNet/myBackendSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLoadBalancer/loadBalancerBackEnd" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "myLoadBalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "sku": { + "name": "lbSku" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNet" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNet/myBackendSubnet" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBackEnd" + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/myLoadBalancer/loadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLoadBalancer/loadBalancerBackEnd" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLoadBalancer/myHealthProbe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableTcpReset": true, + "disableOutboundSnat": true, + "idleTimeoutInMinutes": 15 + }, + "name": "myHTTPRule" + } + ], + "probes": [ + { + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 2 + }, + "name": "myHealthProbe" + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT156 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT156 new file mode 100644 index 0000000..c7af176 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT156 @@ -0,0 +1,350 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/grafana/Telegraf-InfluxDB-Grafana/azuredeploy.json", + "/application-workloads/grafana/Telegraf-InfluxDB-Grafana/azuredeploy.parameters.json" + ], + "timestamp": 1642962888838, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/grafana/Telegraf-InfluxDB-Grafana/azuredeploy.json", + "/application-workloads/grafana/Telegraf-InfluxDB-Grafana/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT156", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT156", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "metadata": { + "description": "Virtual Machine size" + }, + "value": "Standard_D2_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "sshPublicKey": { + "type": "string", + "metadata": { + "description": "Configure the linux machines with the SSH public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "tigDnsPrefix": { + "type": "string", + "maxLength": 50, + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "resourcePrefix": "tig", + "storageAccountName": "[concat(variables('resourcePrefix'), uniquestring(resourceGroup().id))]", + "nicName": "tigVMNic", + "subnetName": "tigSubnet", + "publicIPAddressName": "tigPublicIP", + "vmName": "tigVM", + "vmExtensionName": "tigInit", + "virtualNetworkName": "tigVNET", + "_extensionScript": "tigscript.sh", + "_configfilelocation": "[deployment().properties.templatelink.uri]scripts/Configfiles.zipparameters('_artifactsLocationSasToken')", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "tigPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('tigDnsPrefix'),uniquestring(resourceGroup().id))]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "TCP", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-3000", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3000", + "protocol": "TCP", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-8083", + "properties": { + "priority": 1002, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "8083", + "protocol": "TCP", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-8086", + "properties": { + "priority": 1003, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "8086", + "protocol": "TCP", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-8090", + "properties": { + "priority": 1004, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "8090", + "protocol": "TCP", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "tigVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "tigSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "tigVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/tigPublicIP", + "Microsoft.Network/virtualNetworks/tigVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/tigPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/tigVNET/tigSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "tigVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "tigVM", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "tigVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/tigVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2020-08-01-preview').primaryEndpoints.blob)]" + } + } + }, + "resources": [ + { + "type": "extensions", + "name": "tigInit", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/tigVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', variables('_extensionScript'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh tigscript.sh [deployment().properties.templatelink.uri]scripts/Configfiles.zipparameters('_artifactsLocationSasToken')" + } + } + } + ] + } + ], + "outputs": { + "TIGVmFQDN": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "SSH": { + "type": "string", + "value": "[concat('ssh -L 3000:localhost:3000 -L 8083:localhost:8083 ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1560 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1560 new file mode 100644 index 0000000..aa3751c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1560 @@ -0,0 +1,186 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/internal-loadbalancer-create-haports/azuredeploy.json", + "/quickstarts/microsoft.network/internal-loadbalancer-create-haports/azuredeploy.parameters.json" + ], + "timestamp": 1642962909150, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/internal-loadbalancer-create-haports/azuredeploy.json", + "/quickstarts/microsoft.network/internal-loadbalancer-create-haports/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1560", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1560", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "address prefix" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "virtualNetworkName": "myVNet", + "subnetName": "myBackendSubnet", + "loadBalancerName": "myLoadBalancer", + "nicName": "myNIC1", + "lbsku": "Standard", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/myVNet/myBackendSubnet", + "lbrulename": "myHARule", + "lbprobename": "myHealthProbe" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "myBackendSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNIC1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/loadBalancers//myLoadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNet/myBackendSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLoadBalancer/loadBalancerBackEnd" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "myLoadBalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "sku": { + "name": "lbSku" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNet" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNet/myBackendSubnet" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBackEnd" + } + ], + "loadBalancingRules": [ + { + "name": "myHARule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/myLoadBalancer/loadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLoadBalancer/loadBalancerBackEnd" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLoadBalancer/myHealthProbe" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": false, + "enableTcpReset": true, + "loadDistribution": "Default", + "disableOutboundSnat": true, + "idleTimeoutInMinutes": 15 + } + } + ], + "probes": [ + { + "name": "myHealthProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 2 + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1563 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1563 new file mode 100644 index 0000000..a54228f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1563 @@ -0,0 +1,392 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/load-balancer-ipv6-create/azuredeploy.json", + "/quickstarts/microsoft.network/load-balancer-ipv6-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909201, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/load-balancer-ipv6-create/azuredeploy.json", + "/quickstarts/microsoft.network/load-balancer-ipv6-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1563", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1563", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "dnsNameforIPv4LbIP": { + "type": "string", + "metadata": { + "description": "DNS prefix for IPv4 IP Address of the load balancer. It must be lowercase and match the regex: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Default VM size" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default VM size" + } + }, + "dnsNameforIPv6LbIP": { + "type": "string", + "metadata": { + "description": "DNS prefix for IPv6 IP Address of the load balancer. It must be lowercase and match the regex: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "vmNamePrefix": "myIPv6VM", + "nicNamePrefix": "IPv6Nic", + "availabilitySetName": "myIPv6AvSet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "myIPv4Subnet", + "subnetPrefix": "10.0.0.0/24", + "vnetName": "myIPv4VNet", + "ipv4PrivateIPAddressType": "Dynamic", + "ipv6PrivateIPAddressType": "Dynamic", + "numberOfInstances": 2, + "ipv6PublicIPAddressName": "myIPv6PublicIP", + "ipv4PublicIPAddressName": "myIPv4PublicIP", + "ipv4PublicIPAddressType": "Dynamic", + "ipv6PublicIPAddressType": "Dynamic", + "lbName": "myIPv4IPv6LB", + "ipv6FrontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myIPv4IPv6LB/LoadBalancerFrontEndIPv6", + "ipv4LbBackendPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/myIPv4IPv6LB/BackendPoolIPv4", + "ipv6LbBackendPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/myIPv4IPv6LB/BackendPoolIPv6", + "ipv4ipv6lbProbeName": "tcpProbeIPv4IPv6", + "ipv4ipv6lbProbeID": "Microsoft.Network/loadBalancers/probes/myIPv4IPv6LB/tcpProbeIPv4IPv6", + "networkSecurityGroupName": "myIPv4Subnet-nsg" + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myIPv6AvSet", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myIPv4PublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myIPv6PublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAddressVersion": "IPv6", + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "myIPv4Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/virtualNetworks", + "name": "myIPv4VNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/myIPv4Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "myIPv4Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myIPv4Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2018-01-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "IPv6Niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/myIPv4VNet", + "Microsoft.Network/loadBalancers/myIPv4IPv6LB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipv4IPConfig", + "properties": { + "privateIPAddressVersion": "IPv4", + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myIPv4VNet/myIPv4Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myIPv4IPv6LB/BackendPoolIPv4" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/myIPv4IPv6LB/RDP-VMcopyindex()" + } + ] + } + }, + { + "name": "ipv6IPConfig", + "properties": { + "privateIPAddressVersion": "IPv6", + "privateIPAllocationMethod": "Dynamic", + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myIPv4IPv6LB/BackendPoolIPv6" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2016-03-30", + "name": "myIPv4IPv6LB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myIPv4PublicIP", + "Microsoft.Network/publicIPAddresses/myIPv6PublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEndIPv4", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myIPv4PublicIP" + } + } + }, + { + "name": "LoadBalancerFrontEndIPv6", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myIPv6PublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPoolIPv4" + }, + { + "name": "BackendPoolIPv6" + } + ], + "inboundNatRules": [ + { + "name": "RDP-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myIPv4IPv6LB/LoadBalancerFrontEndIPv4" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "RDP-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myIPv4IPv6LB/LoadBalancerFrontEndIPv4" + }, + "protocol": "Tcp", + "frontendPort": 50002, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRuleIPv4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myIPv4IPv6LB/LoadBalancerFrontEndIPv4" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myIPv4IPv6LB/BackendPoolIPv4" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myIPv4IPv6LB/tcpProbeIPv4IPv6" + } + } + }, + { + "name": "LBRuleIPv6", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myIPv4IPv6LB/LoadBalancerFrontEndIPv6" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myIPv4IPv6LB/BackendPoolIPv6" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 8080, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myIPv4IPv6LB/tcpProbeIPv4IPv6" + } + } + } + ], + "probes": [ + { + "name": "tcpProbeIPv4IPv6", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myIPv6VMcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//IPv6Niccopyindex()", + "Microsoft.Compute/availabilitySets/myIPv6AvSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myIPv6AvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "myIPv6VMcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/IPv6Niccopyindex()" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1565 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1565 new file mode 100644 index 0000000..7f8b06c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1565 @@ -0,0 +1,251 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/loadbalancer-with-multivip/azuredeploy.json", + "/quickstarts/microsoft.network/loadbalancer-with-multivip/azuredeploy.parameters.json" + ], + "timestamp": 1642962909224, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/loadbalancer-with-multivip/azuredeploy.json", + "/quickstarts/microsoft.network/loadbalancer-with-multivip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1565", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1565", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsNameforLBIP": { + "type": "string", + "metadata": { + "description": "Unique DNS name" + }, + "value": "GEN-UNIQUE" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address Prefix" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet Prefix" + }, + "value": "10.0.0.0/24" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Public IP type" + }, + "value": "Dynamic" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "virtualNetworkName": "virtualNetwork1", + "publicIPAddressName1": "publicIp1", + "publicIPAddressName2": "publicIp2", + "subnetName": "subnet1", + "loadBalancerName": "loadBalancer1", + "nicName": "networkInterface1", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/subnet1", + "publicIPAddressID1": "Microsoft.Network/publicIPAddresses/publicIp1", + "publicIPAddressID2": "Microsoft.Network/publicIPAddresses/publicIp2", + "lbBackendPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer1/loadBalancerBackend", + "lbProbeID": "Microsoft.Network/loadBalancers/probes/loadBalancer1/tcpProbe", + "frontEndIPConfigID1": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer1/loadBalancerFrontEnd1", + "frontEndIPConfigID2": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer1/loadBalancerFrontEnd2" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp2", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "networkInterface1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/loadBalancers//loadBalancer1" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/subnet1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//loadBalancer1/loadBalancerBackEnd" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "loadBalancer1", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIp1", + "Microsoft.Network/publicIPAddresses//publicIp2" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + }, + { + "name": "loadBalancerFrontEnd2", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp2" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBackEnd" + } + ], + "loadBalancingRules": [ + { + "name": "LBRuleForVIP1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer1/loadBalancerFrontEnd1" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer1/loadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer1/tcpProbe" + } + } + }, + { + "name": "LBRuleForVIP2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer1/loadBalancerFrontEnd2" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer1/loadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 444, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer1/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 445, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1566 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1566 new file mode 100644 index 0000000..e80c960 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1566 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/loadbalancer-with-nat-rule/azuredeploy.json", + "/quickstarts/microsoft.network/loadbalancer-with-nat-rule/azuredeploy.parameters.json" + ], + "timestamp": 1642962909230, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/loadbalancer-with-nat-rule/azuredeploy.json", + "/quickstarts/microsoft.network/loadbalancer-with-nat-rule/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1566", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1566", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsNameforLBIP": { + "type": "string", + "metadata": { + "description": "Unique DNS name" + }, + "value": "GEN-UNIQUE" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address Prefix" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet Prefix" + }, + "value": "10.0.0.0/24" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Public IP type" + }, + "value": "Dynamic" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "virtualNetworkName": "virtualNetwork1", + "publicIPAddressName": "publicIp1", + "subnetName": "subnet1", + "loadBalancerName": "loadBalancer1", + "nicName": "networkInterface1", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/subnet1", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/publicIp1", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer1/loadBalancerFrontEnd" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "networkInterface1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/loadBalancers//loadBalancer1" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/subnet1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer1/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/loadBalancer1/RDP" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "loadBalancer1", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBackEnd" + } + ], + "inboundNatRules": [ + { + "name": "RDP", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer1/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1567 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1567 new file mode 100644 index 0000000..bddfa6b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1567 @@ -0,0 +1,374 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.json", + "/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962909238, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.json", + "/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1567", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/publicipprefixes", + "microsoft.network/natgateways", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1567", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "defaultValue": "myVM", + "type": "String", + "metadata": { + "description": "Name of the virtual machine" + } + }, + "vmsize": { + "defaultValue": "Standard_D2s_v3", + "type": "String", + "metadata": { + "description": "Size of the virtual machine" + } + }, + "vnetname": { + "defaultValue": "myVnet", + "type": "String", + "metadata": { + "description": "Name of the virtual network" + } + }, + "subnetname": { + "defaultValue": "mySubnet", + "type": "String", + "metadata": { + "description": "Name of the subnet for virtual network" + } + }, + "vnetaddressspace": { + "defaultValue": "192.168.0.0/16", + "type": "String", + "metadata": { + "description": "Address space for virtual network" + } + }, + "vnetsubnetprefix": { + "defaultValue": "192.168.0.0/24", + "type": "String", + "metadata": { + "description": "Subnet prefix for virtual network" + } + }, + "natgatewayname": { + "defaultValue": "myNATgateway", + "type": "String", + "metadata": { + "description": "Name of the NAT gateway" + } + }, + "networkinterfacename": { + "defaultValue": "myvmNIC", + "type": "String", + "metadata": { + "description": "Name of the virtual machine nic" + } + }, + "publicipname": { + "defaultValue": "myPublicIP", + "type": "String", + "metadata": { + "description": "Name of the NAT gateway public IP" + } + }, + "nsgname": { + "defaultValue": "myVMnsg", + "type": "String", + "metadata": { + "description": "Name of the virtual machine NSG" + } + }, + "publicipvmname": { + "defaultValue": "myPublicIPVM", + "type": "String", + "metadata": { + "description": "Name of the virtual machine public IP" + } + }, + "publicipprefixname": { + "defaultValue": "myPublicIPPrefix", + "type": "String", + "metadata": { + "description": "Name of the NAT gateway public IP" + } + }, + "adminusername": { + "type": "String", + "metadata": { + "description": "Administrator username for virtual machine" + }, + "value": "GEN-UNIQUE" + }, + "adminpassword": { + "type": "secureString", + "metadata": { + "description": "Administrator password for virtual machine" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "String", + "metadata": { + "description": "Name of resource group" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "myVMnsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "myPublicIPVM", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/publicIPPrefixes", + "apiVersion": "2020-06-01", + "name": "myPublicIPPrefix", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "prefixLength": 31, + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "myVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myvmNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "myVM_disk1", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 30 + } + }, + "osProfile": { + "computerName": "myVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false, + "provisionVMAgent": true + }, + "allowExtensionOperations": true + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myvmNIC" + } + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "myVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/natGateways/myNATgateway" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.0.0/16" + ] + }, + "subnets": [ + { + "name": "mySubnet", + "properties": { + "addressPrefix": "192.168.0.0/24", + "natGateway": { + "id": "Microsoft.Network/natGateways/myNATgateway" + }, + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Network/natGateways", + "apiVersion": "2020-06-01", + "name": "myNATgateway", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/publicIPPrefixes/myPublicIPPrefix" + ], + "properties": { + "idleTimeoutInMinutes": 4, + "publicIpAddresses": [ + { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + ], + "publicIpPrefixes": [ + { + "id": "Microsoft.Network/publicIPPrefixes/myPublicIPPrefix" + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-05-01", + "name": "myVnet/mySubnet", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/myVnet", + "Microsoft.Network/natGateways/myNATgateway" + ], + "properties": { + "addressPrefix": "192.168.0.0/24", + "natGateway": { + "id": "Microsoft.Network/natGateways/myNATgateway" + }, + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "myvmNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIPVM", + "Microsoft.Network/virtualNetworks/subnets/myVnet/mySubnet", + "Microsoft.Network/networkSecurityGroups/myVMnsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAddress": "192.168.0.4", + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIPVM" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVnet/mySubnet" + }, + "primary": true, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": false, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myVMnsg" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1568 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1568 new file mode 100644 index 0000000..c3a4f31 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1568 @@ -0,0 +1,170 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nat-gateway-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nat-gateway-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962909245, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nat-gateway-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nat-gateway-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1568", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/natgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1568", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "15432294146387792090" + } + }, + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "myVnet", + "metadata": { + "description": "Name of the virtual network" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "mySubnet", + "metadata": { + "description": "Name of the subnet for virtual network" + } + }, + "vnetAddressSpace": { + "type": "string", + "defaultValue": "192.168.0.0/16", + "metadata": { + "description": "Address space for virtual network" + } + }, + "vnetSubnetPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/24", + "metadata": { + "description": "Subnet prefix for virtual network" + } + }, + "natGatewayName": { + "type": "string", + "defaultValue": "myNATgateway", + "metadata": { + "description": "Name of the NAT gateway resource" + } + }, + "publicIpDns": { + "type": "string", + "defaultValue": "[format('gw-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "dns of the public ip address, leave blank for no dns" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of resources" + } + } + }, + "functions": [], + "variables": { + "publicIpName": "[format('{0}-ip', parameters('natGatewayName'))]", + "publicIpAddresses": [ + { + "id": "Microsoft.Network/publicIPAddresses/[format('{0}-ip', parameters('natGatewayName'))]" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[format('{0}-ip', parameters('natGatewayName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "[format('gw-{0}', uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/natGateways", + "apiVersion": "2020-06-01", + "name": "myNATgateway", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "idleTimeoutInMinutes": 4, + "publicIpAddresses": "[if(not(empty(parameters('publicIpDns'))), variables('publicIpAddresses'), null())]" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[format('{0}-ip', parameters('natGatewayName'))]" + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "myVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.0.0/16" + ] + }, + "subnets": [ + { + "name": "mySubnet", + "properties": { + "addressPrefix": "192.168.0.0/24", + "natGateway": { + "id": "Microsoft.Network/natGateways/myNATgateway" + }, + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + }, + "dependsOn": [ + "Microsoft.Network/natGateways/myNATgateway" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1569 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1569 new file mode 100644 index 0000000..3f4fc4f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1569 @@ -0,0 +1,102 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-create/azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909255, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-create/azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1569", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkwatchers", + "microsoft.authorization/locks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1569", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "17247934225504258064" + } + }, + "parameters": { + "networkWatcherName": { + "type": "string", + "metadata": { + "description": "Network Watcher name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of Network Watcher" + } + }, + "enableDeleteLock": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable delete lock" + } + } + }, + "functions": [], + "variables": { + "lockName": "[format('{0}-lck', parameters('networkWatcherName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkWatchers", + "apiVersion": "2021-02-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2016-09-01", + "scope": "[format('Microsoft.Network/networkWatchers/{0}', parameters('networkWatcherName'))]", + "name": "[format('{0}-lck', parameters('networkWatcherName'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.Network/networkWatchers/GEN-UNIQUE" + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('networkWatcherName')]" + }, + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Network/networkWatchers', parameters('networkWatcherName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT157 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT157 new file mode 100644 index 0000000..8dce39d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT157 @@ -0,0 +1,94 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/prereqs/prereq.azuredeploy.json", + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962888888, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/prereqs/prereq.azuredeploy.json", + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT157", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT157", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingVirtualNetworkName": "existing-vnet", + "existingSubnetName": "existing-subnet", + "location": "[resourceGroup().location]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "existing-vnet", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "existing-subnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVirtualNetworkName": { + "type": "string", + "value": "[variables('existingVirtualNetworkName')]" + }, + "existingResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingSubnetName": { + "type": "string", + "value": "[variables('existingSubnetName')]" + }, + "existingVNETLocation": { + "type": "string", + "value": "[variables('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1570 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1570 new file mode 100644 index 0000000..b03b87c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1570 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909264, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1570", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1570", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet-1 Prefix" + }, + "value": "10.0.0.0/24" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "networkSecurityGroupName": "networkSecurityGroup1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "subnet" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "networkSecurityGroup1", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "first_rule", + "properties": { + "description": "This is the first rule", + "protocol": "Tcp", + "sourcePortRange": "23-45", + "destinationPortRange": "46-56", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 123, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//networkSecurityGroup1" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSecurityGroup1" + } + } + } + ] + } + } + ], + "outputs": { + "existingNSG": { + "type": "string", + "value": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1571 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1571 new file mode 100644 index 0000000..fccfcf1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1571 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909276, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/azuredeploy.json", + "/quickstarts/microsoft.network/networkwatcher-flowLogs-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1571", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1571", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Region where you resources are located" + } + }, + "NetworkWatcherName": { + "type": "string", + "defaultValue": "[concat('NetworkWatcher_', parameters('location'))]", + "metadata": { + "description": "Name of the Network Watcher attached to your subscription. Format: NetworkWatcher_" + } + }, + "FlowLogName": { + "type": "string", + "defaultValue": "FlowLog1", + "metadata": { + "description": "Chosen name of your Flow log resource" + } + }, + "existingNSG": { + "type": "string", + "metadata": { + "description": "Resource ID of the target NSG" + }, + "value": "GET-PREREQ-existingNSG" + }, + "RetentionDays": { + "type": "int", + "defaultValue": 0, + "minValue": 0, + "maxValue": 365, + "metadata": { + "description": "Retention period in days. Default is zero which stands for permanent retention. Can be any Integer from 0 to 365" + } + }, + "FlowLogsversion": { + "type": "string", + "defaultValue": "2", + "allowedValues": [ + "1", + "2" + ], + "metadata": { + "description": "FlowLogs Version. Correct values are 1 or 2 (default)" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account type" + } + } + }, + "variables": { + "storageAccountName": "[concat('flowlogs', uniquestring(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "deployFlowLogs", + "resourceGroup": "NetworkWatcherRG", + "dependsOn": [ + "[variables('storageAccountName')]" + ], + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "NetworkWatcherName": { + "type": "string" + }, + "FlowLogName": { + "type": "string" + }, + "existingNSG": { + "type": "string" + }, + "RetentionDays": { + "type": "int" + }, + "FlowLogsversion": { + "type": "string" + }, + "storageAccountResourceId": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkWatchers/flowLogs", + "apiVersion": "2020-06-01", + "name": "[concat('NetworkWatcher_', parameters('location'))]/FlowLog1", + "location": "[resourceGroup().location]", + "properties": { + "targetResourceId": "GET-PREREQ-existingNSG", + "storageId": "storageAccountResourceId", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + }, + "format": { + "type": "JSON", + "version": "2" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "NetworkWatcherName": { + "value": "[concat('NetworkWatcher_', parameters('location'))]" + }, + "FlowLogName": { + "value": "FlowLog1" + }, + "existingNSG": { + "value": "GET-PREREQ-existingNSG" + }, + "RetentionDays": { + "value": 0 + }, + "FlowLogsversion": { + "value": "2" + }, + "storageAccountResourceId": { + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1572 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1572 new file mode 100644 index 0000000..d518a9c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1572 @@ -0,0 +1,149 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nic-publicip-dns-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nic-publicip-dns-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962909288, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nic-publicip-dns-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nic-publicip-dns-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1572", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1572", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address Prefix" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix" + }, + "value": "10.0.0.0/24" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Type of public IP address" + }, + "value": "Dynamic" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "virtualNetworkName": "virtualNetwork1", + "publicIPAddressName": "publicIp1", + "subnetName": "subnet1", + "nicName": "networkInterface1", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/subnet1" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "networkInterface1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//publicIp1" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "[resourceId ('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]" + }, + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/subnet1" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1573 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1573 new file mode 100644 index 0000000..77fd6d6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1573 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/nested/updateSubnet.json" + ], + "timestamp": 1642962909294, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/nested/updateSubnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1573", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1573", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string" + }, + "subnetName": { + "type": "string" + }, + "subnetAddressPrefix": { + "type": "string" + }, + "nsgId": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "virtualNetworkName/subnetName", + "location": "location", + "properties": { + "addressPrefix": "subnetAddressPrefix", + "networkSecurityGroup": { + "id": "nsgId" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1574 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1574 new file mode 100644 index 0000000..05bd538 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1574 @@ -0,0 +1,93 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909303, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1574", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1574", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vNetName": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vNetPrefix": "10.0.0.0/16", + "SubnetName": "default", + "SubnetPrefix": "10.0.0.0/24" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "tags": { + "displayName": "vNet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "outputs": { + "virtualNetworkResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[parameters('vNetName')]" + }, + "subnetName": { + "type": "string", + "value": "[variables('SubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1575 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1575 new file mode 100644 index 0000000..7bf4d63 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1575 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962909312, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-add-to-existing-subnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1575", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1575", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "virtualNetworkResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group where the existing VNet is located." + }, + "value": "GET-PREREQ-virtualNetworkResourceGroupName" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the existing VNet" + }, + "value": "GET-PREREQ-virtualNetworkName" + }, + "subnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "The name of the existing subnet." + }, + "value": "GET-PREREQ-subnetName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + }, + "defaultValue": "" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "new-nsg", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "name": "deploy", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "GET-PREREQ-virtualNetworkResourceGroupName", + "dependsOn": [ + "new-nsg" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/updateSubnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "GET-PREREQ-virtualNetworkName" + }, + "subnetName": { + "value": "GET-PREREQ-subnetName" + }, + "subnetAddressPrefix": { + "value": "[reference(resourceId(parameters('virtualNetworkResourceGroupName'), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName')), '2020-08-01').addressPrefix]" + }, + "nsgId": { + "value": "Microsoft.Network/networkSecurityGroups/new-nsg" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1576 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1576 new file mode 100644 index 0000000..6287967 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1576 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nsg-create-with-diagnostic-logs/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-create-with-diagnostic-logs/azuredeploy.parameters.json" + ], + "timestamp": 1642962909320, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-create-with-diagnostic-logs/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-create-with-diagnostic-logs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1576", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/locks", + "microsoft.network/networksecuritygroups", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1576", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "15695948123568299956" + } + }, + "parameters": { + "nsgName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Network security group name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Network security group location" + } + }, + "securityRules": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Array containing security rules. For properties format refer to https://docs.microsoft.com/en-us/azure/templates/microsoft.network/networksecuritygroups?tabs=bicep#securityrulepropertiesformat" + } + }, + "enableDeleteLock": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable delete lock" + } + }, + "enableDiagnostics": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable diagnostic logs" + } + }, + "diagnosticStorageAccountId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Storage account resource id. Only required if enableDiagnostics is set to true." + } + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Log analytics workspace resource id. Only required if enableDiagnostics is set to true." + } + } + }, + "functions": [], + "variables": { + "lockName": "[format('{0}-lck', parameters('nsgName'))]", + "diagnosticsName": "[format('{0}-dgs', parameters('nsgName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "properties": { + "copy": [ + { + "name": "securityRules", + "count": 27, + "input": { + "name": "securityRules)[copyIndex(securityRules", + "properties": "securityRules)[copyIndex(securityRules" + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.Network/networkSecurityGroups/{0}', parameters('nsgName'))]", + "name": "[format('{0}-dgs', parameters('nsgName'))]", + "properties": { + "workspaceId": "[if(empty(parameters('logAnalyticsWorkspaceId')), null(), parameters('logAnalyticsWorkspaceId'))]", + "storageAccountId": "[if(empty(parameters('diagnosticStorageAccountId')), null(), parameters('diagnosticStorageAccountId'))]", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[uniqueString(resourceGroup().id)]" + ] + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2017-04-01", + "scope": "[format('Microsoft.Network/networkSecurityGroups/{0}', parameters('nsgName'))]", + "name": "[format('{0}-lck', parameters('nsgName'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[uniqueString(resourceGroup().id)]" + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('nsgName')]" + }, + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('nsgName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1577 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1577 new file mode 100644 index 0000000..9ccd028 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1577 @@ -0,0 +1,314 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nsg-dmz-in-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-dmz-in-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962909327, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-dmz-in-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-dmz-in-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1577", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1577", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "First_ARM_VNet", + "metadata": { + "description": "This is your Virtual Network" + }, + "value": "First_ARM_VNet" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The CIDR address space for your Virtual Network in Azure" + }, + "value": "10.0.0.0/16" + }, + "FESubnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "This is CIDR prefix for the FrontEnd Subnet" + }, + "value": "10.0.0.0/24" + }, + "AppSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "This is CIDR prefix for the Application Subnet" + }, + "value": "10.0.1.0/24" + }, + "DBSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.2.0/24", + "metadata": { + "description": "This is CIDR prefix for the Database Subnet" + }, + "value": "10.0.2.0/24" + }, + "FENSGName": { + "type": "string", + "defaultValue": "FE_NSG", + "metadata": { + "description": "This is name of the networkSecurityGroup that will be assigned to FrontEnd Subnet" + }, + "value": "fensg" + }, + "AppNSGName": { + "type": "string", + "defaultValue": "App_NSG", + "metadata": { + "description": "This is name of the networkSecurityGroup that will be assigned to Application Subnet" + }, + "value": "appnsg" + }, + "DBNSGName": { + "type": "string", + "defaultValue": "DB_NSG", + "metadata": { + "description": "This is name of the networkSecurityGroup that will be assigned to Database Subnet" + }, + "value": "dbnsg" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "fensg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "rdp_rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web_rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "appnsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow_FE", + "properties": { + "description": "Allow FE Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "10.0.0.0/24", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Block_RDP_Internet", + "properties": { + "description": "Block RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "Block_Internet_Outbound", + "properties": { + "description": "Block Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 200, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "dbnsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow_App", + "properties": { + "description": "Allow APP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "10.0.1.0/24", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Block_FE", + "properties": { + "description": "Block FE Subnet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "10.0.0.0/24", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "Block_App", + "properties": { + "description": "Block App Subnet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "10.0.1.0/24", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "Block_Internet", + "properties": { + "description": "Block Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 200, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "First_ARM_VNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//fensg", + "Microsoft.Network/networkSecurityGroups//appnsg", + "Microsoft.Network/networkSecurityGroups//dbnsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "FESubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/fensg" + } + } + }, + { + "name": "AppSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/appnsg" + } + } + }, + { + "name": "DBSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dbnsg" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1578 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1578 new file mode 100644 index 0000000..03858b7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1578 @@ -0,0 +1,145 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909334, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1578", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1578", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet-1 Prefix" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "flowLogStorageAccountName": { + "type": "string", + "defaultValue": "[concat('flowlog', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Flow logs Storage Account Name." + } + } + }, + "variables": { + "networkSecurityGroupName": "networkSecurityGroup01", + "virtualNetworkName": "virtualNetwork01", + "subnetName": "subnet1" + }, + "resources": [ + { + "apiVersion": "2021-04-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('flowlog', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "networkSecurityGroup01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "first_rule", + "properties": { + "description": "This is the first rule", + "protocol": "Tcp", + "sourcePortRange": "23-45", + "destinationPortRange": "46-56", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 123, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "virtualNetwork01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//networkSecurityGroup01" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSecurityGroup01" + } + } + } + ] + } + } + ], + "outputs": { + "existingNsgId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" + }, + "existingFlowLogStorageAccountId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('flowLogStorageAccountName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1579 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1579 new file mode 100644 index 0000000..d07e515 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1579 @@ -0,0 +1,210 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/azuredeploy.parameters.json" + ], + "timestamp": 1642962909344, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/azuredeploy.json", + "/quickstarts/microsoft.network/nsg-flow-logs-with-traffic-analytics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1579", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1579", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "4817499997026753485" + } + }, + "parameters": { + "flowlogName": { + "type": "string", + "defaultValue": "flowlog", + "metadata": { + "description": "Flow Log name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Flow Log location" + } + }, + "networkWatcherName": { + "type": "string", + "defaultValue": "[format('NetworkWatcher_{0}', parameters('location'))]", + "metadata": { + "description": "Network Watcher name" + } + }, + "networkWatcherResourceGroup": { + "type": "string", + "defaultValue": "NetworkWatcherRG", + "metadata": { + "description": "Network Watcher Resource Group" + } + }, + "existingNsgId": { + "type": "string", + "metadata": { + "description": "Network Security Group resource id" + }, + "value": "GET-PREREQ-existingNsgId" + }, + "existingFlowLogStorageAccountId": { + "type": "string", + "metadata": { + "description": "Storage account resource id" + }, + "value": "GET-PREREQ-existingFlowLogStorageAccountId" + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Log analytics workspace resource id" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "deployFlowLogs", + "resourceGroup": "NetworkWatcherRG", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "flowlogName": { + "value": "flowlog" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "networkWatcherName": { + "value": "[format('NetworkWatcher_{0}', parameters('location'))]" + }, + "existingNsgId": { + "value": "GET-PREREQ-existingNsgId" + }, + "existingFlowLogStorageAccountId": { + "value": "GET-PREREQ-existingFlowLogStorageAccountId" + }, + "logAnalyticsWorkspaceId": { + "value": "" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "4407055582915177902" + } + }, + "parameters": { + "flowlogName": { + "type": "string", + "metadata": { + "description": "Flow Log name" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Flow Log location" + } + }, + "networkWatcherName": { + "type": "string", + "metadata": { + "description": "Network Watcher name" + } + }, + "existingNsgId": { + "type": "string", + "metadata": { + "description": "Network Security Group resource id" + } + }, + "existingFlowLogStorageAccountId": { + "type": "string", + "metadata": { + "description": "Storage account resource id" + } + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Log analytics workspace resource id" + } + } + }, + "functions": [], + "variables": { + "flowLogsStorageRetention": 60 + }, + "resources": [ + { + "type": "Microsoft.Network/networkWatchers/flowLogs", + "apiVersion": "2021-02-01", + "name": "[format('{0}/{1}', parameters('networkWatcherName'), parameters('flowlogName'))]", + "location": "[resourceGroup().location]", + "properties": { + "enabled": true, + "flowAnalyticsConfiguration": { + "networkWatcherFlowAnalyticsConfiguration": { + "enabled": "[if(empty(parameters('logAnalyticsWorkspaceId')), false(), true())]", + "trafficAnalyticsInterval": 60, + "workspaceResourceId": "[if(empty(parameters('logAnalyticsWorkspaceId')), null(), parameters('logAnalyticsWorkspaceId'))]" + } + }, + "format": { + "type": "JSON", + "version": 2 + }, + "retentionPolicy": { + "days": "flowLogsStorageRetention", + "enabled": true + }, + "storageId": "GET-PREREQ-existingFlowLogStorageAccountId", + "targetResourceId": "GET-PREREQ-existingNsgId" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT158 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT158 new file mode 100644 index 0000000..7d89175 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT158 @@ -0,0 +1,227 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/azuredeploy.json", + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962888896, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/azuredeploy.json", + "/application-workloads/guacamole/guacamole-rdp-vnc-gateway-existing-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT158", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT158", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingVNETLocation": { + "type": "string", + "metadata": { + "description": "Location of the existing VNet (in which to deploy this VM)." + }, + "value": "GET-PREREQ-existingVNETLocation" + }, + "vmName": { + "type": "string", + "defaultValue": "GuacamoleVM", + "metadata": { + "description": "Name for the Guacamole VM" + }, + "value": "GuacamoleVM" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Instance size for the Guacamole VM" + }, + "value": "Standard_A1" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username to login to the VMs" + }, + "value": "alessandro" + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "Public key for SSH authentication" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNet" + }, + "value": "GET-PREREQ-existingVirtualNetworkName" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet in the VNet you want to use" + }, + "value": "GET-PREREQ-existingSubnetName" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingSubnetName", + "osImageSku": "7.5", + "securityGroupName": "GuacamoleVM-NSG", + "nicName": "GuacamoleVM-NIC", + "publicIpAddressName": "GuacamoleVM-IP", + "sshKeyPath": "/home/alessandro/.ssh/authorized_keys", + "cloudConfig": "I2Nsb3VkLWNvbmZpZw0KY29yZW9zOg0KICB1cGRhdGU6DQogICAgcmVib290LXN0cmF0ZWd5OiBiZXN0LWVmZm9ydA0KICB1bml0czoNCiAgICAtIG5hbWU6IGRvY2tlci5zZXJ2aWNlDQogICAgICBjb21tYW5kOiBzdGFydA0KICAgIC0gbmFtZTogZG9ja2VyLWd1YWNhbW9sZS5zZXJ2aWNlDQogICAgICBjb21tYW5kOiBzdGFydA0KICAgICAgY29udGVudDogfA0KICAgICAgICBbVW5pdF0NCiAgICAgICAgRGVzY3JpcHRpb249R3VhY2Ftb2xlIHJ1bm5pbmcgb24gRG9ja2VyDQogICAgICAgIA0KICAgICAgICBSZXF1aXJlcz1kb2NrZXIuc2VydmljZSBkb2NrZXItZ3VhY2Quc2VydmljZSBkb2NrZXItbWFyaWFkYi5zZXJ2aWNlIGRvY2tlci1tYXJpYWRiLXdhaXRlci5zZXJ2aWNlDQogICAgICAgIFdhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldA0KICAgICAgICBBZnRlcj1kb2NrZXIuc2VydmljZSBuZXR3b3JrLW9ubGluZS50YXJnZXQgZG9ja2VyLWd1YWNkLnNlcnZpY2UgZG9ja2VyLW1hcmlhZGIuc2VydmljZSBkb2NrZXItbWFyaWFkYi13YWl0ZXIuc2VydmljZQ0KICAgICAgICANCiAgICAgICAgW1NlcnZpY2VdDQogICAgICAgIFJlc3RhcnQ9YWx3YXlzDQogICAgICAgIFJlc3RhcnRTZWM9Mw0KICAgICAgICBUaW1lb3V0U3RhcnRTZWM9MA0KICAgICAgICANCiAgICAgICAgRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgc29tZS1ndWFjYW1vbGUNCiAgICAgICAgRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcHVsbCBnbHlwdG9kb24vZ3VhY2Ftb2xlOmxhdGVzdA0KICAgICAgICANCiAgICAgICAgRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXA0KICAgICAgICAgIC0tbmFtZSBzb21lLWd1YWNhbW9sZSBcDQogICAgICAgICAgLS1saW5rIHNvbWUtZ3VhY2Q6Z3VhY2QgXA0KICAgICAgICAgIC0tbGluayBzb21lLW1hcmlhZGI6bXlzcWwgXA0KICAgICAgICAgIC1lIE1ZU1FMX0RBVEFCQVNFPWd1YWNhbW9sZV9kYiAgXA0KICAgICAgICAgIC1lIE1ZU1FMX1VTRVI9Z3VhY2Ftb2xlX3VzZXIgICAgXA0KICAgICAgICAgIC1lIE1ZU1FMX1BBU1NXT1JEPWJ1cnJpdG8tZ3VhY2Ftb2xlLWV4dHJhLTFkb2xsYXIgXA0KICAgICAgICAgIC1wIDgwOjgwODAgXA0KICAgICAgICAgIGdseXB0b2Rvbi9ndWFjYW1vbGU6bGF0ZXN0DQogICAgICAgIA0KICAgICAgICBFeGVjU3RvcD0vYmluL2Jhc2ggLWMgIiBcDQogICAgICAgICAgL3Vzci9iaW4vZG9ja2VyIHN0b3Agc29tZS1ndWFjYW1vbGUgfHwgdHJ1ZSBcDQogICAgICAgICAgL3Vzci9iaW4vZG9ja2VyIHJtIHNvbWUtZ3VhY2Ftb2xlIHx8IHRydWUgXA0KICAgICAgICAiDQogICAgICAgIA0KICAgICAgICBbSW5zdGFsbF0NCiAgICAgICAgV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQNCiAgICAtIG5hbWU6IGRvY2tlci1ndWFjZC5zZXJ2aWNlDQogICAgICBjb21tYW5kOiBzdGFydA0KICAgICAgY29udGVudDogfA0KICAgICAgICBbVW5pdF0NCiAgICAgICAgRGVzY3JpcHRpb249Z3VhY2QgcnVubmluZyBvbiBEb2NrZXINCiAgICAgICAgDQogICAgICAgIFJlcXVpcmVzPWRvY2tlci5zZXJ2aWNlDQogICAgICAgIFdhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldA0KICAgICAgICBBZnRlcj1kb2NrZXIuc2VydmljZSBuZXR3b3JrLW9ubGluZS50YXJnZXQNCiAgICAgICAgDQogICAgICAgIFtTZXJ2aWNlXQ0KICAgICAgICBSZXN0YXJ0PWFsd2F5cw0KICAgICAgICBSZXN0YXJ0U2VjPTMNCiAgICAgICAgVGltZW91dFN0YXJ0U2VjPTANCiAgICAgICAgDQogICAgICAgIEV4ZWNTdGFydFByZT0tL3Vzci9iaW4vZG9ja2VyIHJtIC1mIHNvbWUtZ3VhY2QNCiAgICAgICAgRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcHVsbCBnbHlwdG9kb24vZ3VhY2Q6bGF0ZXN0DQogICAgICAgIA0KICAgICAgICBFeGVjU3RhcnQ9L3Vzci9iaW4vZG9ja2VyIHJ1biBcDQogICAgICAgICAgLS1uYW1lIHNvbWUtZ3VhY2QgXA0KICAgICAgICAgIGdseXB0b2Rvbi9ndWFjZDpsYXRlc3QNCiAgICAgICAgDQogICAgICAgIEV4ZWNTdG9wPS9iaW4vYmFzaCAtYyAiIFwNCiAgICAgICAgICAvdXNyL2Jpbi9kb2NrZXIgc3RvcCBzb21lLWd1YWNkIHx8IHRydWUgXA0KICAgICAgICAgIC91c3IvYmluL2RvY2tlciBybSBzb21lLWd1YWNkIHx8IHRydWUgXA0KICAgICAgICAiDQogICAgICAgIA0KICAgICAgICBbSW5zdGFsbF0NCiAgICAgICAgV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQNCiAgICAtIG5hbWU6IGRvY2tlci1tYXJpYWRiLnNlcnZpY2UNCiAgICAgIGNvbW1hbmQ6IHN0YXJ0DQogICAgICBjb250ZW50OiB8DQogICAgICAgIFtVbml0XQ0KICAgICAgICBEZXNjcmlwdGlvbj1NYXJpYURCIHJ1bm5pbmcgb24gRG9ja2VyDQogICAgICAgIA0KICAgICAgICBSZXF1aXJlcz1kb2NrZXIuc2VydmljZQ0KICAgICAgICBXYW50cz1uZXR3b3JrLW9ubGluZS50YXJnZXQNCiAgICAgICAgQWZ0ZXI9ZG9ja2VyLnNlcnZpY2UgbmV0d29yay1vbmxpbmUudGFyZ2V0DQogICAgICAgIA0KICAgICAgICBbU2VydmljZV0NCiAgICAgICAgUmVzdGFydD1hbHdheXMNCiAgICAgICAgUmVzdGFydFNlYz0zDQogICAgICAgIFRpbWVvdXRTdGFydFNlYz0wDQogICAgICAgIA0KICAgICAgICBFeGVjU3RhcnRQcmU9L3Vzci9iaW4vY2htb2QgK3ggL29wdC9iaW4vZG9ja2VyLW1hcmlhZGIuc2gNCiAgICAgICAgRXhlY1N0YXJ0PS9vcHQvYmluL2RvY2tlci1tYXJpYWRiLnNoDQogICAgICAgIA0KICAgICAgICBFeGVjU3RvcD0vYmluL2Jhc2ggLWMgIiBcDQogICAgICAgICAgL3Vzci9iaW4vZG9ja2VyIHN0b3Agc29tZS1tYXJpYWRiIHx8IHRydWUgXA0KICAgICAgICAgIC91c3IvYmluL2RvY2tlciBybSBzb21lLW1hcmlhZGIgfHwgdHJ1ZSBcDQogICAgICAgICINCiAgICAgICAgDQogICAgICAgIFtJbnN0YWxsXQ0KICAgICAgICBXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldA0KICAgIC0gbmFtZTogZG9ja2VyLW1hcmlhZGItd2FpdGVyLnNlcnZpY2UNCiAgICAgIGNvbW1hbmQ6IHN0YXJ0DQogICAgICBjb250ZW50OiB8DQogICAgICAgIFtVbml0XQ0KICAgICAgICBEZXNjcmlwdGlvbj1XYWl0IGZvciBNYXJpYURCIHRvIGJlIGluaXRpYWxpemVkDQogICAgICAgIA0KICAgICAgICBSZXF1aXJlcz1kb2NrZXIuc2VydmljZSBkb2NrZXItbWFyaWFkYi5zZXJ2aWNlDQogICAgICAgIFdhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldA0KICAgICAgICBBZnRlcj1kb2NrZXIuc2VydmljZSBkb2NrZXItbWFyaWFkYi5zZXJ2aWNlIG5ldHdvcmstb25saW5lLnRhcmdldA0KICAgICAgICANCiAgICAgICAgW1NlcnZpY2VdDQogICAgICAgIFR5cGU9c2ltcGxlDQogICAgICAgIFJlbWFpbkFmdGVyRXhpdD10cnVlDQogICAgICAgIEV4ZWNTdGFydFByZT0vdXNyL2Jpbi9jaG1vZCAreCAvb3B0L2Jpbi9kb2NrZXItbWFyaWFkYi13YWl0ZXIuc2gNCiAgICAgICAgRXhlY1N0YXJ0PS91c3IvYmluL2Jhc2ggL29wdC9iaW4vZG9ja2VyLW1hcmlhZGItd2FpdGVyLnNoDQogICAgICAgIA0KICAgICAgICBbSW5zdGFsbF0NCiAgICAgICAgV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQNCndyaXRlX2ZpbGVzOg0KICAtIHBhdGg6IC9vcHQvYmluL2RvY2tlci1tYXJpYWRiLnNoDQogICAgb3duZXI6IHJvb3QNCiAgICBwZXJtaXNzaW9uczogJzA3NTUnDQogICAgY29udGVudDogfA0KICAgICAgICAjIS9iaW4vc2gNCiAgICAgICAgDQogICAgICAgICMgUGFyYW1ldGVycw0KICAgICAgICBJTUFHRV9OQU1FPSJtYXJpYWRiOjEwLjEiDQogICAgICAgIENPTlRBSU5FUl9OQU1FPSJzb21lLW1hcmlhZGIiDQogICAgICAgIEdVQUNBTU9MRV9JTUFHRV9OQU1FPSJnbHlwdG9kb24vZ3VhY2Ftb2xlOmxhdGVzdCINCiAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRD0ibXktc2VjcmV0LXB3Ig0KICAgICAgICBNWVNRTF9VU0VSPSJndWFjYW1vbGVfdXNlciINCiAgICAgICAgTVlTUUxfREFUQUJBU0U9Imd1YWNhbW9sZV9kYiINCiAgICAgICAgTVlTUUxfUEFTU1dPUkQ9ImJ1cnJpdG8tZ3VhY2Ftb2xlLWV4dHJhLTFkb2xsYXIiDQogICAgICAgIA0KICAgICAgICAjIFJlbW92ZSBwcmUtZXhpc3RpbmcgY29udGFpbmVycw0KICAgICAgICBkb2NrZXIgc3RvcCAkQ09OVEFJTkVSX05BTUUgfHwgdHJ1ZQ0KICAgICAgICBkb2NrZXIgcm0gJENPTlRBSU5FUl9OQU1FIHx8IHRydWUNCiAgICAgICAgDQogICAgICAgICMgUHVsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIERvY2tlciBpbWFnZQ0KICAgICAgICBkb2NrZXIgcHVsbCAkSU1BR0VfTkFNRQ0KICAgICAgICANCiAgICAgICAgIyBDaGVjayBpZiB0aGUgTXlTUUwgZGF0YWJhc2UgaGFzIGJlZW4gcHJlcGFyZWQgYWxyZWFkeQ0KICAgICAgICBpZiBbICEgLWUgL21udC9kYXRhL215c3FsL215c3FsIF07IHRoZW4NCiAgICAgICAgICAgICMgSW5pdGlhbCBkYXRhYmFzZSBjb250ZW50czogZ2VuZXJhdGUgdGhlbSBmcm9tIHRoZSBndWFjYW1vbGUgaW1hZ2UNCiAgICAgICAgICAgIFRNUF9TUUxfRklMRT0vbW50L3Jlc291cmNlL2luaXRkYi5zcWwNCiAgICAgICAgICAgIHJtIC1yZiAkVE1QX1NRTF9GSUxFICRUTVBfU1FMX0ZJTEUudG1wDQogICAgICAgICAgICBkb2NrZXIgcnVuIC0tcm0gJEdVQUNBTU9MRV9JTUFHRV9OQU1FIC9vcHQvZ3VhY2Ftb2xlL2Jpbi9pbml0ZGIuc2ggLS1teXNxbCA+ICRUTVBfU1FMX0ZJTEUNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgIyBQcmVwZW5kIGRhdGFiYXNlIG5hbWUgdG8gU1FMIHF1ZXJ5DQogICAgICAgICAgICBlY2hvICJVU0UgJE1ZU1FMX0RBVEFCQVNFOyAiIHwgY2F0IC0gJFRNUF9TUUxfRklMRSA+ICRUTVBfU1FMX0ZJTEUudG1wIFwNCiAgICAgICAgICAgICAgICAmJiBtdiAkVE1QX1NRTF9GSUxFLnRtcCAkVE1QX1NRTF9GSUxFDQogICAgICAgICAgICANCiAgICAgICAgICAgIGRvY2tlciBydW4gXA0KICAgICAgICAgICAgICAgIC0tbmFtZSAkQ09OVEFJTkVSX05BTUUgXA0KICAgICAgICAgICAgICAgIC1lIE1ZU1FMX1JPT1RfUEFTU1dPUkQ9JE1ZU1FMX1JPT1RfUEFTU1dPUkQgXA0KICAgICAgICAgICAgICAgIC1lIE1ZU1FMX0RBVEFCQVNFPSRNWVNRTF9EQVRBQkFTRSBcDQogICAgICAgICAgICAgICAgLWUgTVlTUUxfVVNFUj0kTVlTUUxfVVNFUiBcDQogICAgICAgICAgICAgICAgLWUgTVlTUUxfUEFTU1dPUkQ9JE1ZU1FMX1BBU1NXT1JEIFwNCiAgICAgICAgICAgICAgICAtdiAvbW50L2RhdGEvbXlzcWw6L3Zhci9saWIvbXlzcWwgXA0KICAgICAgICAgICAgICAgIC12ICRUTVBfU1FMX0ZJTEU6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL2d1YWNhbW9sZS5zcWwgXA0KICAgICAgICAgICAgICAgICRJTUFHRV9OQU1FDQogICAgICAgIGVsc2UNCiAgICAgICAgICAgICMgU3RhcnQgRG9ja2VyIGNvbnRhaW5lcg0KICAgICAgICAgICAgZG9ja2VyIHJ1biBcDQogICAgICAgICAgICAgICAgLS1uYW1lICRDT05UQUlORVJfTkFNRSBcDQogICAgICAgICAgICAgICAgLXYgL21udC9kYXRhL215c3FsOi92YXIvbGliL215c3FsIFwNCiAgICAgICAgICAgICAgICAkSU1BR0VfTkFNRQ0KICAgICAgICBmaQ0KICAtIHBhdGg6IC9vcHQvYmluL2RvY2tlci1tYXJpYWRiLXdhaXRlci5zaA0KICAgIG93bmVyOiByb290DQogICAgcGVybWlzc2lvbnM6ICcwNzU1Jw0KICAgIGNvbnRlbnQ6IHwNCiAgICAgICAgIyEvYmluL3NoDQogICAgICAgIA0KICAgICAgICAjIFRoaXMgc2NyaXB0IHdhaXRzIGZvciBNYXJpYURCIHRvIGJlIHJlYWR5IHRvIGFjY2VwdCBjb25uZWN0aW9ucw0KICAgICAgICANCiAgICAgICAgIyBQYXJhbWV0ZXJzDQogICAgICAgIElNQUdFX05BTUU9Im1hcmlhZGI6MTAuMSINCiAgICAgICAgQ09OVEFJTkVSX05BTUU9InNvbWUtbWFyaWFkYiINCiAgICAgICAgDQogICAgICAgICMgV2FpdCBhdCBsZWFzdCA2MCBzZWNvbmRzDQogICAgICAgIHNsZWVwIDYwDQogICAgICAgIA0KICAgICAgICAjIEtlZXAgcG9sbGluZyBkYXRhYmFzZSB1bnRpbCByZWFkeQ0KICAgICAgICB3aGlsZSAhIGRvY2tlciBydW4gLS1ybSAtLWxpbmsgJENPTlRBSU5FUl9OQU1FICRJTUFHRV9OQU1FIG15c3FsYWRtaW4gcGluZyAtaCAkQ09OVEFJTkVSX05BTUUgLS1zaWxlbnQ7IGRvDQogICAgICAgICAgICBzbGVlcCA1DQogICAgICAgIGRvbmUNCiAgICAgICAgICAgIA0KICAgICAgICAjIFdhaXQgNSBtb3JlIHNlY29uZHMgYmVmb3JlIHNlbmRpbmcgdGhlIGdyZWVuIGxpZ2h0DQogICAgICAgIHNsZWVwIDU=" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GuacamoleVM-IP", + "location": "GET-PREREQ-existingVNETLocation", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GuacamoleVM-NSG", + "location": "GET-PREREQ-existingVNETLocation", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "22", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HTTP", + "properties": { + "description": "Allows HTTP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "80", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "GuacamoleVM-NIC", + "location": "GET-PREREQ-existingVNETLocation", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIPAddressName", + "Microsoft.Network/networkSecurityGroups//GuacamoleVM-NSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingSubnetName" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GuacamoleVM-NSG" + } + } + }, + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "GuacamoleVM", + "location": "GET-PREREQ-existingVNETLocation", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GuacamoleVM-NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "GuacamoleVM", + "adminUsername": "alessandro", + "customData": "I2Nsb3VkLWNvbmZpZw0KY29yZW9zOg0KICB1cGRhdGU6DQogICAgcmVib290LXN0cmF0ZWd5OiBiZXN0LWVmZm9ydA0KICB1bml0czoNCiAgICAtIG5hbWU6IGRvY2tlci5zZXJ2aWNlDQogICAgICBjb21tYW5kOiBzdGFydA0KICAgIC0gbmFtZTogZG9ja2VyLWd1YWNhbW9sZS5zZXJ2aWNlDQogICAgICBjb21tYW5kOiBzdGFydA0KICAgICAgY29udGVudDogfA0KICAgICAgICBbVW5pdF0NCiAgICAgICAgRGVzY3JpcHRpb249R3VhY2Ftb2xlIHJ1bm5pbmcgb24gRG9ja2VyDQogICAgICAgIA0KICAgICAgICBSZXF1aXJlcz1kb2NrZXIuc2VydmljZSBkb2NrZXItZ3VhY2Quc2VydmljZSBkb2NrZXItbWFyaWFkYi5zZXJ2aWNlIGRvY2tlci1tYXJpYWRiLXdhaXRlci5zZXJ2aWNlDQogICAgICAgIFdhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldA0KICAgICAgICBBZnRlcj1kb2NrZXIuc2VydmljZSBuZXR3b3JrLW9ubGluZS50YXJnZXQgZG9ja2VyLWd1YWNkLnNlcnZpY2UgZG9ja2VyLW1hcmlhZGIuc2VydmljZSBkb2NrZXItbWFyaWFkYi13YWl0ZXIuc2VydmljZQ0KICAgICAgICANCiAgICAgICAgW1NlcnZpY2VdDQogICAgICAgIFJlc3RhcnQ9YWx3YXlzDQogICAgICAgIFJlc3RhcnRTZWM9Mw0KICAgICAgICBUaW1lb3V0U3RhcnRTZWM9MA0KICAgICAgICANCiAgICAgICAgRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgc29tZS1ndWFjYW1vbGUNCiAgICAgICAgRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcHVsbCBnbHlwdG9kb24vZ3VhY2Ftb2xlOmxhdGVzdA0KICAgICAgICANCiAgICAgICAgRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXA0KICAgICAgICAgIC0tbmFtZSBzb21lLWd1YWNhbW9sZSBcDQogICAgICAgICAgLS1saW5rIHNvbWUtZ3VhY2Q6Z3VhY2QgXA0KICAgICAgICAgIC0tbGluayBzb21lLW1hcmlhZGI6bXlzcWwgXA0KICAgICAgICAgIC1lIE1ZU1FMX0RBVEFCQVNFPWd1YWNhbW9sZV9kYiAgXA0KICAgICAgICAgIC1lIE1ZU1FMX1VTRVI9Z3VhY2Ftb2xlX3VzZXIgICAgXA0KICAgICAgICAgIC1lIE1ZU1FMX1BBU1NXT1JEPWJ1cnJpdG8tZ3VhY2Ftb2xlLWV4dHJhLTFkb2xsYXIgXA0KICAgICAgICAgIC1wIDgwOjgwODAgXA0KICAgICAgICAgIGdseXB0b2Rvbi9ndWFjYW1vbGU6bGF0ZXN0DQogICAgICAgIA0KICAgICAgICBFeGVjU3RvcD0vYmluL2Jhc2ggLWMgIiBcDQogICAgICAgICAgL3Vzci9iaW4vZG9ja2VyIHN0b3Agc29tZS1ndWFjYW1vbGUgfHwgdHJ1ZSBcDQogICAgICAgICAgL3Vzci9iaW4vZG9ja2VyIHJtIHNvbWUtZ3VhY2Ftb2xlIHx8IHRydWUgXA0KICAgICAgICAiDQogICAgICAgIA0KICAgICAgICBbSW5zdGFsbF0NCiAgICAgICAgV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQNCiAgICAtIG5hbWU6IGRvY2tlci1ndWFjZC5zZXJ2aWNlDQogICAgICBjb21tYW5kOiBzdGFydA0KICAgICAgY29udGVudDogfA0KICAgICAgICBbVW5pdF0NCiAgICAgICAgRGVzY3JpcHRpb249Z3VhY2QgcnVubmluZyBvbiBEb2NrZXINCiAgICAgICAgDQogICAgICAgIFJlcXVpcmVzPWRvY2tlci5zZXJ2aWNlDQogICAgICAgIFdhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldA0KICAgICAgICBBZnRlcj1kb2NrZXIuc2VydmljZSBuZXR3b3JrLW9ubGluZS50YXJnZXQNCiAgICAgICAgDQogICAgICAgIFtTZXJ2aWNlXQ0KICAgICAgICBSZXN0YXJ0PWFsd2F5cw0KICAgICAgICBSZXN0YXJ0U2VjPTMNCiAgICAgICAgVGltZW91dFN0YXJ0U2VjPTANCiAgICAgICAgDQogICAgICAgIEV4ZWNTdGFydFByZT0tL3Vzci9iaW4vZG9ja2VyIHJtIC1mIHNvbWUtZ3VhY2QNCiAgICAgICAgRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcHVsbCBnbHlwdG9kb24vZ3VhY2Q6bGF0ZXN0DQogICAgICAgIA0KICAgICAgICBFeGVjU3RhcnQ9L3Vzci9iaW4vZG9ja2VyIHJ1biBcDQogICAgICAgICAgLS1uYW1lIHNvbWUtZ3VhY2QgXA0KICAgICAgICAgIGdseXB0b2Rvbi9ndWFjZDpsYXRlc3QNCiAgICAgICAgDQogICAgICAgIEV4ZWNTdG9wPS9iaW4vYmFzaCAtYyAiIFwNCiAgICAgICAgICAvdXNyL2Jpbi9kb2NrZXIgc3RvcCBzb21lLWd1YWNkIHx8IHRydWUgXA0KICAgICAgICAgIC91c3IvYmluL2RvY2tlciBybSBzb21lLWd1YWNkIHx8IHRydWUgXA0KICAgICAgICAiDQogICAgICAgIA0KICAgICAgICBbSW5zdGFsbF0NCiAgICAgICAgV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQNCiAgICAtIG5hbWU6IGRvY2tlci1tYXJpYWRiLnNlcnZpY2UNCiAgICAgIGNvbW1hbmQ6IHN0YXJ0DQogICAgICBjb250ZW50OiB8DQogICAgICAgIFtVbml0XQ0KICAgICAgICBEZXNjcmlwdGlvbj1NYXJpYURCIHJ1bm5pbmcgb24gRG9ja2VyDQogICAgICAgIA0KICAgICAgICBSZXF1aXJlcz1kb2NrZXIuc2VydmljZQ0KICAgICAgICBXYW50cz1uZXR3b3JrLW9ubGluZS50YXJnZXQNCiAgICAgICAgQWZ0ZXI9ZG9ja2VyLnNlcnZpY2UgbmV0d29yay1vbmxpbmUudGFyZ2V0DQogICAgICAgIA0KICAgICAgICBbU2VydmljZV0NCiAgICAgICAgUmVzdGFydD1hbHdheXMNCiAgICAgICAgUmVzdGFydFNlYz0zDQogICAgICAgIFRpbWVvdXRTdGFydFNlYz0wDQogICAgICAgIA0KICAgICAgICBFeGVjU3RhcnRQcmU9L3Vzci9iaW4vY2htb2QgK3ggL29wdC9iaW4vZG9ja2VyLW1hcmlhZGIuc2gNCiAgICAgICAgRXhlY1N0YXJ0PS9vcHQvYmluL2RvY2tlci1tYXJpYWRiLnNoDQogICAgICAgIA0KICAgICAgICBFeGVjU3RvcD0vYmluL2Jhc2ggLWMgIiBcDQogICAgICAgICAgL3Vzci9iaW4vZG9ja2VyIHN0b3Agc29tZS1tYXJpYWRiIHx8IHRydWUgXA0KICAgICAgICAgIC91c3IvYmluL2RvY2tlciBybSBzb21lLW1hcmlhZGIgfHwgdHJ1ZSBcDQogICAgICAgICINCiAgICAgICAgDQogICAgICAgIFtJbnN0YWxsXQ0KICAgICAgICBXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldA0KICAgIC0gbmFtZTogZG9ja2VyLW1hcmlhZGItd2FpdGVyLnNlcnZpY2UNCiAgICAgIGNvbW1hbmQ6IHN0YXJ0DQogICAgICBjb250ZW50OiB8DQogICAgICAgIFtVbml0XQ0KICAgICAgICBEZXNjcmlwdGlvbj1XYWl0IGZvciBNYXJpYURCIHRvIGJlIGluaXRpYWxpemVkDQogICAgICAgIA0KICAgICAgICBSZXF1aXJlcz1kb2NrZXIuc2VydmljZSBkb2NrZXItbWFyaWFkYi5zZXJ2aWNlDQogICAgICAgIFdhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldA0KICAgICAgICBBZnRlcj1kb2NrZXIuc2VydmljZSBkb2NrZXItbWFyaWFkYi5zZXJ2aWNlIG5ldHdvcmstb25saW5lLnRhcmdldA0KICAgICAgICANCiAgICAgICAgW1NlcnZpY2VdDQogICAgICAgIFR5cGU9c2ltcGxlDQogICAgICAgIFJlbWFpbkFmdGVyRXhpdD10cnVlDQogICAgICAgIEV4ZWNTdGFydFByZT0vdXNyL2Jpbi9jaG1vZCAreCAvb3B0L2Jpbi9kb2NrZXItbWFyaWFkYi13YWl0ZXIuc2gNCiAgICAgICAgRXhlY1N0YXJ0PS91c3IvYmluL2Jhc2ggL29wdC9iaW4vZG9ja2VyLW1hcmlhZGItd2FpdGVyLnNoDQogICAgICAgIA0KICAgICAgICBbSW5zdGFsbF0NCiAgICAgICAgV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQNCndyaXRlX2ZpbGVzOg0KICAtIHBhdGg6IC9vcHQvYmluL2RvY2tlci1tYXJpYWRiLnNoDQogICAgb3duZXI6IHJvb3QNCiAgICBwZXJtaXNzaW9uczogJzA3NTUnDQogICAgY29udGVudDogfA0KICAgICAgICAjIS9iaW4vc2gNCiAgICAgICAgDQogICAgICAgICMgUGFyYW1ldGVycw0KICAgICAgICBJTUFHRV9OQU1FPSJtYXJpYWRiOjEwLjEiDQogICAgICAgIENPTlRBSU5FUl9OQU1FPSJzb21lLW1hcmlhZGIiDQogICAgICAgIEdVQUNBTU9MRV9JTUFHRV9OQU1FPSJnbHlwdG9kb24vZ3VhY2Ftb2xlOmxhdGVzdCINCiAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRD0ibXktc2VjcmV0LXB3Ig0KICAgICAgICBNWVNRTF9VU0VSPSJndWFjYW1vbGVfdXNlciINCiAgICAgICAgTVlTUUxfREFUQUJBU0U9Imd1YWNhbW9sZV9kYiINCiAgICAgICAgTVlTUUxfUEFTU1dPUkQ9ImJ1cnJpdG8tZ3VhY2Ftb2xlLWV4dHJhLTFkb2xsYXIiDQogICAgICAgIA0KICAgICAgICAjIFJlbW92ZSBwcmUtZXhpc3RpbmcgY29udGFpbmVycw0KICAgICAgICBkb2NrZXIgc3RvcCAkQ09OVEFJTkVSX05BTUUgfHwgdHJ1ZQ0KICAgICAgICBkb2NrZXIgcm0gJENPTlRBSU5FUl9OQU1FIHx8IHRydWUNCiAgICAgICAgDQogICAgICAgICMgUHVsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIERvY2tlciBpbWFnZQ0KICAgICAgICBkb2NrZXIgcHVsbCAkSU1BR0VfTkFNRQ0KICAgICAgICANCiAgICAgICAgIyBDaGVjayBpZiB0aGUgTXlTUUwgZGF0YWJhc2UgaGFzIGJlZW4gcHJlcGFyZWQgYWxyZWFkeQ0KICAgICAgICBpZiBbICEgLWUgL21udC9kYXRhL215c3FsL215c3FsIF07IHRoZW4NCiAgICAgICAgICAgICMgSW5pdGlhbCBkYXRhYmFzZSBjb250ZW50czogZ2VuZXJhdGUgdGhlbSBmcm9tIHRoZSBndWFjYW1vbGUgaW1hZ2UNCiAgICAgICAgICAgIFRNUF9TUUxfRklMRT0vbW50L3Jlc291cmNlL2luaXRkYi5zcWwNCiAgICAgICAgICAgIHJtIC1yZiAkVE1QX1NRTF9GSUxFICRUTVBfU1FMX0ZJTEUudG1wDQogICAgICAgICAgICBkb2NrZXIgcnVuIC0tcm0gJEdVQUNBTU9MRV9JTUFHRV9OQU1FIC9vcHQvZ3VhY2Ftb2xlL2Jpbi9pbml0ZGIuc2ggLS1teXNxbCA+ICRUTVBfU1FMX0ZJTEUNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgIyBQcmVwZW5kIGRhdGFiYXNlIG5hbWUgdG8gU1FMIHF1ZXJ5DQogICAgICAgICAgICBlY2hvICJVU0UgJE1ZU1FMX0RBVEFCQVNFOyAiIHwgY2F0IC0gJFRNUF9TUUxfRklMRSA+ICRUTVBfU1FMX0ZJTEUudG1wIFwNCiAgICAgICAgICAgICAgICAmJiBtdiAkVE1QX1NRTF9GSUxFLnRtcCAkVE1QX1NRTF9GSUxFDQogICAgICAgICAgICANCiAgICAgICAgICAgIGRvY2tlciBydW4gXA0KICAgICAgICAgICAgICAgIC0tbmFtZSAkQ09OVEFJTkVSX05BTUUgXA0KICAgICAgICAgICAgICAgIC1lIE1ZU1FMX1JPT1RfUEFTU1dPUkQ9JE1ZU1FMX1JPT1RfUEFTU1dPUkQgXA0KICAgICAgICAgICAgICAgIC1lIE1ZU1FMX0RBVEFCQVNFPSRNWVNRTF9EQVRBQkFTRSBcDQogICAgICAgICAgICAgICAgLWUgTVlTUUxfVVNFUj0kTVlTUUxfVVNFUiBcDQogICAgICAgICAgICAgICAgLWUgTVlTUUxfUEFTU1dPUkQ9JE1ZU1FMX1BBU1NXT1JEIFwNCiAgICAgICAgICAgICAgICAtdiAvbW50L2RhdGEvbXlzcWw6L3Zhci9saWIvbXlzcWwgXA0KICAgICAgICAgICAgICAgIC12ICRUTVBfU1FMX0ZJTEU6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL2d1YWNhbW9sZS5zcWwgXA0KICAgICAgICAgICAgICAgICRJTUFHRV9OQU1FDQogICAgICAgIGVsc2UNCiAgICAgICAgICAgICMgU3RhcnQgRG9ja2VyIGNvbnRhaW5lcg0KICAgICAgICAgICAgZG9ja2VyIHJ1biBcDQogICAgICAgICAgICAgICAgLS1uYW1lICRDT05UQUlORVJfTkFNRSBcDQogICAgICAgICAgICAgICAgLXYgL21udC9kYXRhL215c3FsOi92YXIvbGliL215c3FsIFwNCiAgICAgICAgICAgICAgICAkSU1BR0VfTkFNRQ0KICAgICAgICBmaQ0KICAtIHBhdGg6IC9vcHQvYmluL2RvY2tlci1tYXJpYWRiLXdhaXRlci5zaA0KICAgIG93bmVyOiByb290DQogICAgcGVybWlzc2lvbnM6ICcwNzU1Jw0KICAgIGNvbnRlbnQ6IHwNCiAgICAgICAgIyEvYmluL3NoDQogICAgICAgIA0KICAgICAgICAjIFRoaXMgc2NyaXB0IHdhaXRzIGZvciBNYXJpYURCIHRvIGJlIHJlYWR5IHRvIGFjY2VwdCBjb25uZWN0aW9ucw0KICAgICAgICANCiAgICAgICAgIyBQYXJhbWV0ZXJzDQogICAgICAgIElNQUdFX05BTUU9Im1hcmlhZGI6MTAuMSINCiAgICAgICAgQ09OVEFJTkVSX05BTUU9InNvbWUtbWFyaWFkYiINCiAgICAgICAgDQogICAgICAgICMgV2FpdCBhdCBsZWFzdCA2MCBzZWNvbmRzDQogICAgICAgIHNsZWVwIDYwDQogICAgICAgIA0KICAgICAgICAjIEtlZXAgcG9sbGluZyBkYXRhYmFzZSB1bnRpbCByZWFkeQ0KICAgICAgICB3aGlsZSAhIGRvY2tlciBydW4gLS1ybSAtLWxpbmsgJENPTlRBSU5FUl9OQU1FICRJTUFHRV9OQU1FIG15c3FsYWRtaW4gcGluZyAtaCAkQ09OVEFJTkVSX05BTUUgLS1zaWxlbnQ7IGRvDQogICAgICAgICAgICBzbGVlcCA1DQogICAgICAgIGRvbmUNCiAgICAgICAgICAgIA0KICAgICAgICAjIFdhaXQgNSBtb3JlIHNlY29uZHMgYmVmb3JlIHNlbmRpbmcgdGhlIGdyZWVuIGxpZ2h0DQogICAgICAgIHNsZWVwIDU=", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/alessandro/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.5", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GuacamoleVM-NIC" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1580 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1580 new file mode 100644 index 0000000..9fa2737 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1580 @@ -0,0 +1,214 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/point-to-site/azuredeploy.json", + "/quickstarts/microsoft.network/point-to-site/azuredeploy.parameters.json" + ], + "timestamp": 1642962909357, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/point-to-site/azuredeploy.json", + "/quickstarts/microsoft.network/point-to-site/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1580", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1580", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the VNet." + }, + "value": "Vnet" + }, + "vnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space for the VNet." + }, + "value": "192.168.100.0/24" + }, + "gatewaySubnetPrefix": { + "type": "string", + "metadata": { + "description": "The prefix for the GatewaySubnet where the VirtualNetworkGateway will be deployed. This must be at least /29." + }, + "value": "192.168.100.16/28" + }, + "gatewayPublicIPName": { + "type": "string", + "metadata": { + "description": "The name of the PublicIP attached to the VirtualNetworkGateway." + }, + "value": "VnetPip" + }, + "gatewayName": { + "type": "string", + "metadata": { + "description": "The name of the VirtualNetworkGateway." + }, + "value": "VnetGw" + }, + "gatewaySku": { + "type": "string", + "metadata": { + "description": "The Sku of the Gateway. This must be one of Basic, Standard or HighPerformance." + }, + "value": "Basic" + }, + "vpnClientAddressPoolPrefix": { + "type": "string", + "metadata": { + "description": "The IP address range from which VPN clients will receive an IP address when connected. Range specified must not overlap with on-premise network." + }, + "value": "10.10.8.0/24" + }, + "clientRootCertName": { + "type": "string", + "metadata": { + "description": "The name of the client root certificate used to authenticate VPN clients. This is a common name used to identify the root cert." + }, + "value": "RootCert1" + }, + "clientRootCertData": { + "type": "string", + "metadata": { + "description": "Client root certificate data used to authenticate VPN clients." + }, + "value": "MIICPzCCAaygAwIBAgIQG4WTVfGKqLxMRtKuPFJ4cDAJBgUrDgMCHQUAMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZTAeFw0xMTA2MDkyMzA0NDBaFw0zOTEyMzEyMzU5NTlaMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtPSIGf2+yUDyT8aLB6sZBg2jXKRKfFS+VnM8JX1JxR2bHb5J8vUy8O6WCwcpxqCHpSV2PIXEWNBM2ozGjcaBzMCi53Q+EQvdaGwF7LJHKSL9Iv//uFlkGoKdz6r8yL9HebTH+F6OvIQ8qNxHKtZgRhqB0gMv0dS/qigGmLcDenUCAwEAAaNkMGIwYAYDVR0BBFkwV4AQkVkBKQrptsuAIFPicVM+haExMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZYIQG4WTVfGVqLxMRtKuPFJ4cDAJBgUrDgMCHQUAA4GBAElx6ydJNP8EjIbgppSY39lJKnMWBVqP8u0HXuNc3LkGUTBu0CYNhhR+MM969uX2ykiUkENeGUHykThWJdoAp+yyPWK+/OT9poE5cvNyX5W8ql4vRgeGMew1VQzTHCSx+ZvXtKeSa31Kgf7ZeXQ/3mty1MQUKilCIZPHXqx5GILl" + }, + "revokedCertName": { + "type": "string", + "metadata": { + "description": "The name of revoked certificate, if any. This is a common name used to identify a given revoked certificate." + }, + "value": "RevokedCert1" + }, + "revokedCertThumbprint": { + "type": "string", + "metadata": { + "description": "Thumbprint of the revoked certificate. This would revoke VPN client certificates matching this thumbprint from connecting to the VNet." + }, + "value": "633EBFFBD01B6049D61E3CF059CFD940C8CE5780" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets/Vnet/GatewaySubnet" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "Vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.100.0/24" + ] + }, + "subnets": [ + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "192.168.100.16/28" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "VnetPip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "VnetGw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//VnetPip", + "Microsoft.Network/virtualNetworks//Vnet" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Vnet/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VnetPip" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": false, + "vpnClientConfiguration": { + "vpnClientAddressPool": { + "addressPrefixes": [ + "10.10.8.0/24" + ] + }, + "vpnClientRootCertificates": [ + { + "name": "RootCert1", + "properties": { + "PublicCertData": "MIICPzCCAaygAwIBAgIQG4WTVfGKqLxMRtKuPFJ4cDAJBgUrDgMCHQUAMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZTAeFw0xMTA2MDkyMzA0NDBaFw0zOTEyMzEyMzU5NTlaMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtPSIGf2+yUDyT8aLB6sZBg2jXKRKfFS+VnM8JX1JxR2bHb5J8vUy8O6WCwcpxqCHpSV2PIXEWNBM2ozGjcaBzMCi53Q+EQvdaGwF7LJHKSL9Iv//uFlkGoKdz6r8yL9HebTH+F6OvIQ8qNxHKtZgRhqB0gMv0dS/qigGmLcDenUCAwEAAaNkMGIwYAYDVR0BBFkwV4AQkVkBKQrptsuAIFPicVM+haExMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZYIQG4WTVfGVqLxMRtKuPFJ4cDAJBgUrDgMCHQUAA4GBAElx6ydJNP8EjIbgppSY39lJKnMWBVqP8u0HXuNc3LkGUTBu0CYNhhR+MM969uX2ykiUkENeGUHykThWJdoAp+yyPWK+/OT9poE5cvNyX5W8ql4vRgeGMew1VQzTHCSx+ZvXtKeSa31Kgf7ZeXQ/3mty1MQUKilCIZPHXqx5GILl" + } + } + ], + "vpnClientRevokedCertificates": [ + { + "name": "RevokedCert1", + "properties": { + "Thumbprint": "633EBFFBD01B6049D61E3CF059CFD940C8CE5780" + } + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1581 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1581 new file mode 100644 index 0000000..eb5f0d9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1581 @@ -0,0 +1,233 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/point-to-site-aad/azuredeploy.json", + "/quickstarts/microsoft.network/point-to-site-aad/azuredeploy.parameters.json" + ], + "timestamp": 1642962909369, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/point-to-site-aad/azuredeploy.json", + "/quickstarts/microsoft.network/point-to-site-aad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1581", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1581", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "6806854432718973934" + } + }, + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "VNet1", + "metadata": { + "description": "Name for the virtual network" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources" + } + }, + "frontendSubName": { + "type": "string", + "defaultValue": "FrontEnd", + "metadata": { + "description": "Name for the frontend subnet" + } + }, + "virtualNetworkPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "CIDR block representing the address space of the VNet" + } + }, + "frontendSubPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "CIDR block for the front end subnet, subset of VNet address space" + } + }, + "gatewaySubPrefix": { + "type": "string", + "defaultValue": "10.1.255.0/27", + "metadata": { + "description": "CIDR block for the gateway subnet, subset of VNet address space" + } + }, + "gatewayName": { + "type": "string", + "defaultValue": "VNet1GW", + "metadata": { + "description": "Name for the new gateway" + } + }, + "gatewayPublicIPName": { + "type": "string", + "defaultValue": "VNet1GWIP", + "metadata": { + "description": "Name for public IP resource used for the new azure gateway" + } + }, + "gatewaySku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "HighPerformance" + ], + "metadata": { + "description": "The SKU of the Gateway. This must be either Standard or HighPerformance to work with OpenVPN" + } + }, + "vpnType": { + "type": "string", + "defaultValue": "RouteBased", + "allowedValues": [ + "RouteBased", + "PolicyBased" + ], + "metadata": { + "description": "Route based (Dynamic Gateway) or Policy based (Static Gateway)" + } + }, + "vpnClientAddressPool": { + "type": "string", + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "The IP address range from which VPN clients will receive an IP address when connected. Range specified must not overlap with on-premise network" + } + } + }, + "functions": [], + "variables": { + "audienceMap": { + "AzureCloud": "41b23e61-6c1e-4545-b367-cd054e0ed4b4", + "AzureUSGovernment": "51bb15d4-3a4f-4ebf-9dca-40096fe32426", + "AzureGermanCloud": "538ee9e6-310a-468d-afef-ea97365856a9", + "AzureChinaCloud": "49f817b6-84ae-4cc0-928c-73f27289b3aa" + }, + "tenantId": "[subscription().tenantId]", + "cloud": "[environment().name]", + "audience": "(audienceMap)[variables(cloud)]", + "tenant": "[uri(environment().authentication.loginEndpoint, variables('tenantId'))]", + "issuer": "[format('https://sts.windows.net/{0}/', variables('tenantId'))]", + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets/VNet1/GatewaySubnet", + "publicIPAddressRef": "Microsoft.Network/publicIPAddresses/VNet1GWIP" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "VNet1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "FrontEnd", + "properties": { + "addressPrefix": "10.1.0.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.1.255.0/27" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2021-02-01", + "name": "VNet1GW", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNet1/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VNet1GWIP" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "vpnClientConfiguration": { + "vpnClientAddressPool": { + "addressPrefixes": [ + "172.16.0.0/24" + ] + }, + "vpnClientProtocols": [ + "OpenVPN" + ], + "vpnAuthenticationTypes": [ + "AAD" + ], + "aadTenant": "[uri(environment().authentication.loginEndpoint, variables('tenantId'))]", + "aadAudience": "(audienceMap)[variables(cloud)]", + "aadIssuer": "[format('https://sts.windows.net/{0}/', variables('tenantId'))]" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/VNet1GWIP", + "Microsoft.Network/virtualNetworks/VNet1" + ] + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-02-01", + "name": "VNet1GWIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1582 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1582 new file mode 100644 index 0000000..ddfbd85 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1582 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/private-dns-zone/azuredeploy.json", + "/quickstarts/microsoft.network/private-dns-zone/azuredeploy.parameters.json" + ], + "timestamp": 1642962909380, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/private-dns-zone/azuredeploy.json", + "/quickstarts/microsoft.network/private-dns-zone/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1582", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones/virtualnetworklinks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1582", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "16081631543207635397" + } + }, + "parameters": { + "privateDnsZoneName": { + "type": "string", + "metadata": { + "description": "Private DNS zone name" + }, + "value": "contoso.com" + }, + "vmRegistration": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic VM DNS registration in the zone" + } + }, + "vnetName": { + "type": "string", + "defaultValue": "VNet", + "metadata": { + "description": "VNet name" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "VNet Address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet Prefix" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "App", + "metadata": { + "description": "Subnet Name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-03-01", + "name": "VNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "App", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "contoso.com", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('privateDnsZoneName'), format('{0}-link', parameters('vnetName')))]", + "location": "global", + "properties": { + "registrationEnabled": true, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/VNet" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/contoso.com", + "Microsoft.Network/virtualNetworks/VNet" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1583 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1583 new file mode 100644 index 0000000..e516cce --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1583 @@ -0,0 +1,471 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/privatelink-service/azuredeploy.json", + "/quickstarts/microsoft.network/privatelink-service/azuredeploy.parameters.json" + ], + "timestamp": 1642962909390, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/privatelink-service/azuredeploy.json", + "/quickstarts/microsoft.network/privatelink-service/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1583", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/privateendpoints", + "microsoft.network/privatelinkservices" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1583", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "secureString", + "metadata": { + "description": "Password for the Virtual Machine. The password must be at least 12 characters long and have lower case, upper characters, digit and a special character (Regex match)" + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the VM" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vnetName": "myVirtualNetwork", + "vnetConsumerName": "myPEVnet", + "vnetAddressPrefix": "10.0.0.0/16", + "frontendSubnetPrefix": "10.0.1.0/24", + "frontendSubnetName": "frontendSubnet", + "backendSubnetPrefix": "10.0.2.0/24", + "backendSubnetName": "backendSubnet", + "consumerSubnetPrefix": "10.0.0.0/24", + "consumerSubnetName": "myPESubnet", + "loadbalancername": "myILB", + "backendpoolname": "myBackEndPool", + "loadBalancerFrontEndIpConfigurationName": "myFrontEnd", + "healthProbeName": "myHealthProbe", + "privateEndpointName": "myPrivateEndpoint", + "vmName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]", + "networkInterfaceName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt", + "vmConsumerName": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]", + "publicIpAddressConsumerName": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]PublicIP", + "networkInterfaceConsumerName": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]NetInt", + "osDiskType": "StandardSSD_LRS", + "privatelinkservicename": "myPLS", + "loadbalancerId": "Microsoft.Network/loadBalancers/myILB" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "myVirtualNetwork", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "frontendSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "privateLinkServiceNetworkPolicies": "Disabled" + } + }, + { + "name": "backendSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-06-01", + "name": "myILB", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "myVirtualNetwork" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "myFrontEnd", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVirtualNetwork/frontendSubnet" + } + } + } + ], + "backendAddressPools": [ + { + "name": "myBackEndPool" + } + ], + "inboundNatRules": [ + { + "name": "RDP-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/myILB/myFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "Name": "myHTTPRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/myILB/myFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myILB/myBackEndPool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancerName/myHealthProbe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15 + } + } + ], + "probes": [ + { + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 2 + }, + "name": "myHealthProbe" + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myILB" + ], + "tags": { + "displayName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVirtualNetwork/backendSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myILB/myBackEndPool" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules//myILB/RDP-VM0" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt" + ], + "tags": { + "displayName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]OsDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 128 + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-06-01", + "name": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]/installcustomscript", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "install software for Windows VM" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/[take(concat('myVm', uniqueString(resourceGroup().id)),15)]" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted Install-WindowsFeature -Name Web-Server" + } + } + }, + { + "type": "Microsoft.Network/privateLinkServices", + "apiVersion": "2020-06-01", + "name": "myPLS", + "location": "[resourceGroup().location]", + "properties": { + "enableProxyProtocol": false, + "loadBalancerFrontendIpConfigurations": [ + { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/myILB/myFrontEnd" + } + ], + "ipConfigurations": [ + { + "name": "snet-provider-default-1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv4", + "subnet": { + "id": "[reference(variables('loadbalancerId'), '2019-06-01').frontendIPConfigurations[0].properties.subnet.id]" + }, + "primary": false + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "myPEVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "myPESubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "privateEndpointNetworkPolicies": "Disabled" + } + }, + { + "name": "backendSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]PublicIP", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]PublicIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[tolower(variables('vmConsumerName'))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]NetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myPEVnet", + "Microsoft.Network/publicIPAddresses/[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]PublicIP" + ], + "tags": { + "displayName": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]NetInt" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myPEVnet/myPESubnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]NetInt" + ], + "tags": { + "displayName": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]OsDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 128 + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[take(concat('myConsumerVm', uniqueString(resourceGroup().id)),15)]NetInt" + } + ] + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-06-01", + "name": "myPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myPEVnet", + "myPLS" + ], + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myPEVnet/myPESubnet" + }, + "privateLinkServiceConnections": [ + { + "name": "myPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Network/privateLinkServices/myPLS" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1584 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1584 new file mode 100644 index 0000000..31225cf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1584 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/reserved-ip/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/reserved-ip/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909398, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/reserved-ip/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/reserved-ip/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1584", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1584", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingpipname": "[concat(uniqueString(resourceGroup().id),'pip')]", + "existingpiplabel": "[concat(uniqueString(resourceGroup().id),'pip')]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('existingpipname')]", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "comments": "Public IP used by LB", + "tags": { + "displayName": "Public IP" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[variables('existingpiplabel')]" + }, + "idleTimeoutInMinutes": 4 + } + } + ], + "outputs": { + "existingPipRgName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingPipName": { + "type": "string", + "value": "[variables('existingpipname')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1585 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1585 new file mode 100644 index 0000000..29c3339 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1585 @@ -0,0 +1,168 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/reserved-ip/azuredeploy.json", + "/quickstarts/microsoft.network/reserved-ip/azuredeploy.parameters.json" + ], + "timestamp": 1642962909408, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/reserved-ip/azuredeploy.json", + "/quickstarts/microsoft.network/reserved-ip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1585", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1585", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingRIPResourceGroupName": { + "type": "string", + "metadata": { + "description": "The name of the resource group containing your existing reserved IP." + }, + "value": "GET-PREREQ-existingPipRgName" + }, + "existingRIPName": { + "type": "string", + "metadata": { + "description": "The name of your existing reserved IP." + }, + "value": "GET-PREREQ-existingPipName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "network_LB_Public_Name": "publicLB", + "network_LB_Public_FEName": "publicLBFE", + "network_LB_Public_FEId": "Microsoft.Network/loadBalancers/frontendIPConfigurations/publicLB/publicLBFE", + "network_LB_Public_BEPoolName": "publicLBBEPool", + "network_LB_Public_NatRule_SSH_vm_Name": "fg1SSHNat", + "network_LB_Public_NatRule_SSH_vm_PublicPort": "50101", + "network_LB_Public_Name2": "publicLB2", + "network_LB_Public_FEName2": "publicLBFE2", + "network_LB_Public_FEId2": "Microsoft.Network/loadBalancers/frontendIPConfigurations/publicLB2/publicLBFE2", + "network_LB_Public_BEPoolName2": "publicLBBEPool2", + "network_LB_Public_NatRule_SSH_vm_Name2": "fg1SSHNat2", + "network_LB_Public_NatRule_SSH_vm_PublicPort2": "50101", + "network_PIP_Reserved_Name": "goliveARMPIP", + "network_PIP_Reserved_Id": "Microsoft.Network/publicIPAddresses/goliveARMPIP", + "network_PIP_Reserved_FQDN": "golivereservedip", + "network_PIP_Reserved_Id2": "GET-PREREQ-existingPipRgName/Microsoft.Network/publicIPAddresses//GET-PREREQ-existingPipName" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "goliveARMPIP", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "golivereservedip" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "publicLB", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/goliveARMPIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "publicLBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/goliveARMPIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "publicLBBEPool" + } + ], + "inboundNatRules": [ + { + "name": "fg1SSHNat", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/publicLB/publicLBFE" + }, + "protocol": "Tcp", + "frontendPort": "50101", + "backendPort": 22, + "enableFloatingIP": false + } + } + ] + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "publicLB2", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "frontendIPConfigurations": [ + { + "name": "publicLBFE2", + "properties": { + "publicIPAddress": { + "id": "GET-PREREQ-existingPipRgName/Microsoft.Network/publicIPAddresses//GET-PREREQ-existingPipName" + } + } + } + ], + "backendAddressPools": [ + { + "name": "publicLBBEPool2" + } + ], + "inboundNatRules": [ + { + "name": "fg1SSHNat2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/publicLB2/publicLBFE2" + }, + "protocol": "Tcp", + "frontendPort": "50101", + "backendPort": 22, + "enableFloatingIP": false + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1586 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1586 new file mode 100644 index 0000000..84b1b97 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1586 @@ -0,0 +1,221 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/route-server/azuredeploy.json", + "/quickstarts/microsoft.network/route-server/azuredeploy.parameters.json" + ], + "timestamp": 1642962909415, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/route-server/azuredeploy.json", + "/quickstarts/microsoft.network/route-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1586", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/virtualhubs/bgpconnections", + "microsoft.network/virtualhubs/ipconfigurations", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1586", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "14189622545852797588" + } + }, + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "routeservervnet", + "metadata": { + "description": "Name of new or existing vnet to which Azure Route Server should be deployed." + } + }, + "vnetIpPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "IP prefix for available addresses in vnet address space." + } + }, + "vnetNew_or_Existing": { + "type": "string", + "defaultValue": "New", + "allowedValues": [ + "New", + "Existing" + ], + "metadata": { + "description": "Specify whether to provision new vnet or deploy to existing vnet." + } + }, + "routeServerSubnetIpPrefix": { + "type": "string", + "defaultValue": "10.1.1.0/27", + "metadata": { + "description": "Route Server subnet IP prefix MUST be within vnet IP prefix address space." + } + }, + "publicIpNew_or_Existing": { + "type": "string", + "defaultValue": "New", + "allowedValues": [ + "New", + "Existing" + ], + "metadata": { + "description": "Specify whether to provision new standard public IP or deploy using existing standard public IP." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "routeserverpip", + "metadata": { + "description": "Name of the standard Public IP used for the Route Server" + } + }, + "firstRouteServerName": { + "type": "string", + "defaultValue": "routeserver", + "metadata": { + "description": "Name of Route Server." + } + }, + "routeServerBgpConnectionName": { + "type": "string", + "defaultValue": "conn1", + "metadata": { + "description": "Name of BGP connection." + } + }, + "peerAsn": { + "type": "int", + "defaultValue": 65002, + "metadata": { + "description": "Peer ASN connecting to." + } + }, + "peerIp": { + "type": "string", + "defaultValue": "10.0.1.4", + "metadata": { + "description": "Peer IP connecting to." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region for Route Server and virtual network." + } + } + }, + "functions": [], + "variables": { + "ipconfigName": "ipconfig1", + "routeServerSubnetName": "RouteServerSubnet" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "routeservervnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}', parameters('vnetName'), variables('routeServerSubnetName'))]", + "properties": { + "addressPrefix": "10.1.1.0/27" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/routeservervnet" + ] + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "routeserverpip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualHubs", + "apiVersion": "2020-06-01", + "name": "routeserver", + "location": "[resourceGroup().location]", + "properties": { + "sku": "Standard" + } + }, + { + "type": "Microsoft.Network/virtualHubs/ipConfigurations", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('firstRouteServerName'), variables('ipconfigName'))]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/routeservervnet/RouteServerSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/routeserverpip" + } + }, + "dependsOn": [ + "Microsoft.Network/virtualHubs/routeserver", + "Microsoft.Network/publicIPAddresses/routeserverpip", + "Microsoft.Network/virtualNetworks/subnets/routeservervnet/RouteServerSubnet" + ] + }, + { + "type": "Microsoft.Network/virtualHubs/bgpConnections", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('firstRouteServerName'), parameters('routeServerBgpConnectionName'))]", + "properties": { + "peerAsn": 65002, + "peerIp": "10.0.1.4" + }, + "dependsOn": [ + "Microsoft.Network/virtualHubs/routeserver", + "Microsoft.Network/virtualHubs/ipConfigurations/routeserver/ipconfig1" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1587 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1587 new file mode 100644 index 0000000..7883fd7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1587 @@ -0,0 +1,508 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/route-server-quagga/azuredeploy.json", + "/quickstarts/microsoft.network/route-server-quagga/azuredeploy.parameters.json" + ], + "timestamp": 1642962909424, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/route-server-quagga/azuredeploy.json", + "/quickstarts/microsoft.network/route-server-quagga/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1587", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/virtualhubs/bgpconnections", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualhubs/ipconfigurations" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1587", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "azure region where is deployed the vnet1" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "VM Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "VM Admin password" + }, + "value": "GEN-PASSWORD" + }, + "vnetName": { + "type": "string", + "defaultValue": "vnet1", + "metadata": { + "description": "Virtual Network name" + } + }, + "addressSpace1Prefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Virtual Network address space" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "RouteServerSubnet", + "metadata": { + "description": "subnet for hosting the Route Server. RouteServerSubnet is fixed name and it can't be changed." + } + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.1.1.0/24", + "metadata": { + "description": "address prefix assigned to the subnet1" + } + }, + "subnet2Name": { + "type": "string", + "defaultValue": "subnet2", + "metadata": { + "description": "name of the subnet2" + } + }, + "subnet2Prefix": { + "type": "string", + "defaultValue": "10.1.2.0/24", + "metadata": { + "description": "address prefix assigned to the subnet2" + } + }, + "subnet3Name": { + "type": "string", + "defaultValue": "subnet3", + "metadata": { + "description": "name of the subnet3" + } + }, + "subnet3Prefix": { + "type": "string", + "defaultValue": "10.1.3.0/24", + "metadata": { + "description": "address prefix assigned to the subnet3" + } + }, + "subnet4Name": { + "type": "string", + "defaultValue": "subnet4", + "metadata": { + "description": "name of the subnet4" + } + }, + "subnet4Prefix": { + "type": "string", + "defaultValue": "10.1.4.0/24", + "metadata": { + "description": "address prefix assigned to the subnet4" + } + }, + "gatewaysubnetPrefix": { + "type": "string", + "defaultValue": "10.1.5.0/24", + "metadata": { + "description": "address prefix assigned to the GatewaySubnet" + } + }, + "routeServerName": { + "type": "string", + "defaultValue": "routesrv1", + "metadata": { + "description": "Route Server name" + } + }, + "peering1IP": { + "type": "string", + "defaultValue": "10.1.4.10", + "metadata": { + "description": "private IP address of the VM running Quagga. it is the BGP remote peer of Route Server. The value is referenced in the quaggadeploy.sh script" + } + }, + "peering1ASN": { + "type": "int", + "defaultValue": 65001, + "metadata": { + "description": "ASN assigned to Quagga. The value is referenced in the script quaggadeploy.sh" + } + }, + "rsBGPconnectionName": { + "type": "string", + "defaultValue": "bgp-conn1", + "metadata": { + "description": "Route Server BGP connection name to establish the peer with Quagga" + } + }, + "vHubIPconfigName": { + "type": "string", + "defaultValue": "ipconfig1", + "metadata": { + "description": "Route Server configuration name" + } + }, + "vmName": { + "type": "string", + "defaultValue": "vm1", + "metadata": { + "description": "Virtual Machine name" + } + }, + "vmPrivIP": { + "type": "string", + "defaultValue": "10.1.4.10", + "metadata": { + "description": "private IP of the VM. This IP has to match with the IP specified in the quaggadeploy.sh bash script" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "VM Size" + } + }, + "nsgName": { + "type": "string", + "defaultValue": "nsg1", + "metadata": { + "description": "name of the network security group applied to the subnets" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.network/route-server-quagga/" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + }, + "defaultValue": "" + } + }, + "variables": { + "location": "[resourceGroup().location]", + "vnetName": "vnet1", + "addressSpace1Prefix": "10.1.0.0/16", + "subnet1Name": "RouteServerSubnet", + "subnet1Prefix": "10.1.1.0/24", + "subnet2Name": "subnet2", + "subnet2Prefix": "10.1.2.0/24", + "subnet3Name": "subnet3", + "subnet3Prefix": "10.1.3.0/24", + "subnet4Name": "subnet4", + "subnet4Prefix": "10.1.4.0/24", + "gatewaysubnetPrefix": "10.1.5.0/24", + "rsName": "routesrv1", + "peering1IP": "10.1.4.10", + "peering1ASN": 65001, + "rsBGPconnectionName": "bgp-conn1", + "subnet_rs1_Id": "Microsoft.Network/virtualNetworks/subnets/vnet1/RouteServerSubnet", + "vHubIPconfigName": "ipconfig1", + "bgpConnectionName": "routesrv1/bgp-conn1", + "rsPubIPName": "routesrv1-pubIP", + "vmName": "vm1", + "nicName": "vm1-nic", + "vmPubIPName": "vm1-pubIP", + "vmPrivIP": "10.1.4.10", + "imageReference": { + "publisher": "canonical", + "offer": "0001-com-ubuntu-server-focal", + "sku": "20_04-lts", + "version": "latest" + }, + "vmSize": "Standard_B2s", + "nsgName": "nsg1", + "scriptFolder": "scripts", + "customScriptFilePath": "[uri(parameters('_artifactsLocation'), concat(variables('scriptFolder'), '/', 'quaggadeploy.sh', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "comments": "network security group", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-03-01", + "name": "nsg1", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH-rule", + "properties": { + "description": "allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "comments": "Create VNet1. subnet1 is assigned to RouteServerSubnet. subnet4 is used for the Ubuntu VM", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-03-01", + "name": "vnet1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsg1" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "RouteServerSubnet", + "properties": { + "addressPrefix": "10.1.1.0/24" + } + }, + { + "name": "subnet2", + "properties": { + "addressPrefix": "10.1.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg1" + } + } + }, + { + "name": "subnet3", + "properties": { + "addressPrefix": "10.1.3.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg1" + } + } + }, + { + "name": "subnet4", + "properties": { + "addressPrefix": "10.1.4.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg1" + } + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.1.5.0/24" + } + } + ] + } + }, + { + "comments": "create a virtual hub object", + "type": "Microsoft.Network/virtualHubs", + "apiVersion": "2021-03-01", + "name": "routesrv1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet1" + ], + "properties": { + "sku": "Standard", + "allowBranchToBranchTraffic": true + }, + "resources": [] + }, + { + "comments": "public IP of the route server", + "type": "Microsoft.Network/publicIPAddresses", + "name": "routesrv1-pubIP", + "apiVersion": "2021-03-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "comments": "create the Route Server and attach it to the RouteServerSubnet subnet", + "type": "Microsoft.Network/virtualHubs/ipConfigurations", + "apiVersion": "2021-03-01", + "name": "routesrv1/ipconfig1", + "dependsOn": [ + "Microsoft.Network/virtualHubs/routesrv1", + "Microsoft.Network/publicIPAddresses/routesrv1-pubIP" + ], + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet1/RouteServerSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/routesrv1-pubIP" + } + } + }, + { + "comments": "name of the BGP connection configured on the Route Server. The BGP connection can be created when the Microsoft.Network/virtualHubs/ipConfigurations deployment complete.", + "type": "Microsoft.Network/virtualHubs/bgpConnections", + "apiVersion": "2021-03-01", + "name": "routesrv1/bgp-conn1", + "dependsOn": [ + "Microsoft.Network/virtualHubs/ipConfigurations/routesrv1/ipconfig1" + ], + "properties": { + "peerIp": "10.1.4.10", + "peerAsn": 65001 + } + }, + { + "comments": "public IP of the VM", + "type": "Microsoft.Network/publicIPAddresses", + "name": "vm1-pubIP", + "apiVersion": "2021-03-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Network interface of the VM attached to the subnet4", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-03-01", + "name": "vm1-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet1", + "Microsoft.Network/publicIPAddresses/vm1-pubIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconf-nic0", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.1.4.10", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vm1-pubIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet1/subnet4" + } + } + } + ], + "enableIPForwarding": true + } + }, + { + "comments": "spin up the Azure VM", + "type": "Microsoft.Compute/virtualMachines", + "name": "(vmName)", + "apiVersion": "2021-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/vm1-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "osProfile": { + "computerName": "vm1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "(imageReference).publisher", + "offer": "(imageReference).offer", + "sku": "(imageReference).sku", + "version": "(imageReference).version" + }, + "osDisk": { + "name": "vm1-OSdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "properties": { + "primary": true + }, + "id": "Microsoft.Network/networkInterfaces/vm1-nic" + } + ] + } + } + }, + { + "comments": "customer script extension to install and set up Quagga", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-07-01", + "name": "vm1/installQuagga", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vm1" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptFolder'), '/', 'quaggadeploy.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh quaggadeploy.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1588 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1588 new file mode 100644 index 0000000..ebe0571 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1588 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/route-table-create/azuredeploy.json", + "/quickstarts/microsoft.network/route-table-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909431, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/route-table-create/azuredeploy.json", + "/quickstarts/microsoft.network/route-table-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1588", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/locks", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1588", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "12468313532454153179" + } + }, + "parameters": { + "routeTableName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Route table name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Route table location" + } + }, + "disableBgpRoutePropagation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Disable the routes learned by BGP on the route table" + } + }, + "routes": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Array containing routes. For properties format refer to https://docs.microsoft.com/en-us/azure/templates/microsoft.network/routetables?tabs=bicep#routepropertiesformat" + } + }, + "enableDeleteLock": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable delete lock" + } + } + }, + "functions": [], + "variables": { + "lockName": "[format('{0}-lck', parameters('routeTableName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2021-02-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "properties": { + "copy": [ + { + "name": "routes", + "count": 20, + "input": { + "name": "routes)[copyIndex(routes", + "properties": { + "addressPrefix": "routes)[copyIndex(routes", + "hasBgpOverride": "[if(contains(parameters('routes')[copyIndex('routes')], 'hasBgpOverride'), parameters('routes')[copyIndex('routes')].hasBgpOverride, null())]", + "nextHopIpAddress": "[if(contains(parameters('routes')[copyIndex('routes')], 'nextHopIpAddress'), parameters('routes')[copyIndex('routes')].nextHopIpAddress, null())]", + "nextHopType": "routes)[copyIndex(routes" + } + } + } + ], + "disableBgpRoutePropagation": false + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2017-04-01", + "scope": "[format('Microsoft.Network/routeTables/{0}', parameters('routeTableName'))]", + "name": "[format('{0}-lck', parameters('routeTableName'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.Network/routeTables/[uniqueString(resourceGroup().id)]" + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('routeTableName')]" + }, + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Network/routeTables', parameters('routeTableName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1589 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1589 new file mode 100644 index 0000000..3e258ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1589 @@ -0,0 +1,119 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/security-group-create/azuredeploy.json", + "/quickstarts/microsoft.network/security-group-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909438, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/security-group-create/azuredeploy.json", + "/quickstarts/microsoft.network/security-group-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1589", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1589", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet-1 Prefix" + }, + "value": "10.0.0.0/24" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "networkSecurityGroupName": "networkSecurityGroup1", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "subnet" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "networkSecurityGroup1", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "first_rule", + "properties": { + "description": "This is the first rule", + "protocol": "Tcp", + "sourcePortRange": "23-45", + "destinationPortRange": "46-56", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 123, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//networkSecurityGroup1" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSecurityGroup1" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT159 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT159 new file mode 100644 index 0000000..3258f59 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT159 @@ -0,0 +1,352 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/hazelcase/hazelcast-vm-cluster/azuredeploy.json", + "/application-workloads/hazelcase/hazelcast-vm-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962888937, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/hazelcase/hazelcast-vm-cluster/azuredeploy.json", + "/application-workloads/hazelcase/hazelcast-vm-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT159", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT159", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "String", + "metadata": { + "description": "Username for Hazelcast VMs" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "type": "String", + "metadata": { + "description": "Type of authentication to use on the Hazelcast VMs." + } + }, + "adminPasswordOrKey": { + "type": "SecureString", + "metadata": { + "description": "Password or ssh key for the Hazelcast VMs." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "hazelcastVersion": { + "defaultValue": "4.0", + "allowedValues": [ + "4.0" + ], + "type": "String", + "metadata": { + "description": "Hazelcast Version" + } + }, + "clusterName": { + "defaultValue": "[concat(parameters('adminUsername'),uniqueString(resourceGroup().id))]", + "type": "String", + "metadata": { + "description": "Cluster Name for hazelcast grid" + } + }, + "dnsPrefix": { + "defaultValue": "hazelcast", + "type": "String", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "instanceCount": { + "defaultValue": 2, + "type": "Int", + "metadata": { + "description": "The number of hazelcast nodes in the grid" + } + }, + "clusterPort": { + "defaultValue": "5701", + "type": "String", + "metadata": { + "description": "The cluster port to identify this cluster" + } + }, + "vmSize": { + "defaultValue": "Standard_D2s_v3", + "type": "String", + "metadata": { + "description": "The size of each instance VM" + } + }, + "ubuntuOSVersion": { + "defaultValue": "16.04-LTS", + "allowedValues": [ + "15.10", + "16.04-LTS", + "18.04-LTS" + ], + "type": "String", + "metadata": { + "description": "The Ubuntu OS version for the Hazelcast VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "_artifactsLocation": { + "defaultValue": "[deployment().properties.templateLink.uri]", + "type": "String", + "metadata": { + "description": "The base URL for the bootstrap files" + } + }, + "_artifactsLocationSasToken": { + "defaultValue": "", + "type": "SecureString", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "String", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "hazelcastNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.1.0/24", + "publicIPAddressName": "hazelcastPubIp", + "publicIPAddressType": "Dynamic", + "vmName": "hazelcast", + "roleAssignmentName": "hazelcastRA", + "virtualNetworkName": "hazelcastVNet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "Reader": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/hazelcastVNet/Subnet", + "scriptParameters": "[concat(parameters('adminUsername'),uniqueString(resourceGroup().id))] 4.0 5701", + "bootstrapFiles": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/bootstrap_hazelcast', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/hazelcast.service', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/hazelcast.conf', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/hazelcast.xml', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install_hazelcast', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/logging.properties', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/modify_configuration', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/modify_version', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/pom.xml', parameters('_artifactsLocationSasToken')))]" + ] + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-03-01", + "name": "hazelcastVNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-03-01", + "name": "[concat(variables('publicIPAddressName'), copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "createPubIps", + "count": 2 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('dnsPrefix'), copyIndex(1), uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-03-01", + "name": "[concat(variables('nicName'), copyIndex(1))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "hazelcastVNet", + "createPubIps" + ], + "copy": { + "name": "createNics", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "[concat('ipconfig', copyIndex(1))]", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex(1)))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/hazelcastVNet/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "[concat(variables('vmName'), copyIndex(1))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "createNics" + ], + "copy": { + "name": "createVms", + "count": 2 + }, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "hazelcast", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "[concat(variables('vmName'), copyIndex(1),'_OSDisk')]", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('nicName'), copyIndex(1)))]" + } + ] + } + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-07-01", + "name": "[guid(concat(variables('roleAssignmentName'), copyIndex(1)))]", + "dependsOn": [ + "createVms" + ], + "copy": { + "name": "createRoles", + "count": 2 + }, + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines', concat(variables('vmName'), copyIndex(1))), '2019-12-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "name": "[concat(variables('vmName'), copyIndex(1),'/initHazelcast')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "createRoles" + ], + "copy": { + "name": "createExtensions", + "count": 2 + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/bootstrap_hazelcast', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/hazelcast.service', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/hazelcast.conf', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/hazelcast.xml', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install_hazelcast', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/logging.properties', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/modify_configuration', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/modify_version', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/pom.xml', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('sh bootstrap_hazelcast ', variables('scriptParameters'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1590 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1590 new file mode 100644 index 0000000..d37583b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1590 @@ -0,0 +1,438 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn/azuredeploy.parameters.json" + ], + "timestamp": 1642962909445, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1590", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/localnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1590", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vpnType": { + "type": "string", + "metadata": { + "description": "Route based (Dynamic Gateway) or Policy based (Static Gateway)" + }, + "defaultValue": "RouteBased", + "allowedValues": [ + "RouteBased", + "PolicyBased" + ] + }, + "localGatewayName": { + "type": "string", + "defaultValue": "localGateway", + "metadata": { + "description": "Arbitrary name for gateway resource representing your local/on-prem gateway" + } + }, + "localGatewayIpAddress": { + "type": "string", + "metadata": { + "description": "Public IP of your local/on-prem gateway" + }, + "value": "52.25.48.88" + }, + "localAddressPrefix": { + "type": "string", + "metadata": { + "description": "CIDR block representing the address space of your local/on-prem network's Subnet" + }, + "value": "10.0.0.0/24" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "azureVnet", + "metadata": { + "description": "Arbitrary name for the Azure Virtual Network" + } + }, + "azureVNetAddressPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "CIDR block representing the address space of the Azure VNet" + }, + "value": "10.3.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet1", + "metadata": { + "description": "Arbitrary name for the Azure Subnet" + } + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "CIDR block for VM subnet, subset of azureVNetAddressPrefix address space" + }, + "value": "10.3.0.0/24" + }, + "gatewaySubnetPrefix": { + "type": "string", + "defaultValue": "10.3.200.0/29", + "metadata": { + "description": "CIDR block for gateway subnet, subset of azureVNetAddressPrefix address space" + }, + "value": "10.3.200.0/29" + }, + "gatewayPublicIPName": { + "type": "string", + "defaultValue": "azureGatewayIP", + "metadata": { + "description": "Arbitrary name for public IP resource used for the new azure gateway" + } + }, + "gatewayName": { + "type": "string", + "defaultValue": "azureGateway", + "metadata": { + "description": "Arbitrary name for the new gateway" + } + }, + "gatewaySku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "HighPerformance" + ], + "metadata": { + "description": "The Sku of the Gateway. This must be one of Basic, Standard or HighPerformance." + } + }, + "connectionName": { + "type": "string", + "defaultValue": "Azure2Other", + "metadata": { + "description": "Arbitrary name for the new connection between Azure VNet and other network" + } + }, + "sharedKey": { + "type": "string", + "metadata": { + "description": "Shared key (PSK) for IPSec tunnel" + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "defaultValue": "node-1", + "metadata": { + "description": "Name of the sample VM to create" + } + }, + "vmImageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "VM Image SKU" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for sample VM" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSKU": "18.04-LTS", + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets/azureVnet/GatewaySubnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/azureVnet/Subnet1", + "nicName": "node-1-nic", + "vmPublicIPName": "node-1-publicIP", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/localNetworkGateways", + "name": "localGateway", + "location": "[resourceGroup().location]", + "properties": { + "localNetworkAddressSpace": { + "addressPrefixes": [ + "10.0.0.0/24" + ] + }, + "gatewayIpAddress": "52.25.48.88" + } + }, + { + "apiVersion": "2020-11-01", + "name": "Azure2Other", + "type": "Microsoft.Network/connections", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/azureGateway", + "Microsoft.Network/localNetworkGateways/localGateway" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/azureGateway" + }, + "localNetworkGateway2": { + "id": "Microsoft.Network/localNetworkGateways/localGateway" + }, + "connectionType": "IPsec", + "routingWeight": 10, + "sharedKey": "GEN-UNIQUE" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "azureVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.3.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.3.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.3.200.0/29" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "azureGatewayIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "node-1-publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "azureGateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/azureGatewayIP", + "Microsoft.Network/virtualNetworks/azureVnet" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/azureVnet/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/azureGatewayIP" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": "false" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "node-1-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/node-1-publicIP", + "Microsoft.Network/virtualNetworks/azureVnet", + "Microsoft.Network/virtualNetworkGateways/azureGateway" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/node-1-publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/azureVnet/Subnet1" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "node-1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/node-1-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "node-1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/node-1-nic" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1591 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1591 new file mode 100644 index 0000000..6de6f54 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1591 @@ -0,0 +1,280 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn-create/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909459, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn-create/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1591", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/localnetworkgateways", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/connections" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1591", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vpnType": { + "type": "string", + "metadata": { + "description": "Route based or policy based" + }, + "defaultValue": "RouteBased", + "allowedValues": [ + "RouteBased", + "PolicyBased" + ], + "value": "RouteBased" + }, + "localGatewayName": { + "type": "string", + "defaultValue": "localGateway", + "metadata": { + "description": "Arbitrary name for gateway resource representing" + }, + "value": "localGateway" + }, + "localGatewayIpAddress": { + "type": "string", + "defaultValue": "1.1.1.1", + "metadata": { + "description": "Public IP of your StrongSwan Instance" + }, + "value": "1.1.1.1" + }, + "localAddressPrefix": { + "type": "array", + "defaultValue": [ + "192.168.0.0/16", + "172.16.0.0/12" + ], + "metadata": { + "description": "CIDR block representing the address space of the OnPremise VPN network's Subnet" + }, + "value": [ + "192.168.0.0/16", + "172.16.0.0/12" + ] + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "azureVnet", + "metadata": { + "description": "Arbitrary name for the Azure Virtual Network" + }, + "value": "azureVnet" + }, + "azureVNetAddressPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "CIDR block representing the address space of the Azure VNet" + }, + "value": "10.3.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet1", + "metadata": { + "description": "Arbitrary name for the Azure Subnet" + }, + "value": "Subnet1" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.3.1.0/24", + "metadata": { + "description": "CIDR block for VM subnet, subset of azureVNetAddressPrefix address space" + }, + "value": "10.3.1.0/24" + }, + "gatewaySubnetPrefix": { + "type": "string", + "defaultValue": "10.3.200.0/29", + "metadata": { + "description": "CIDR block for gateway subnet, subset of azureVNetAddressPrefix address space" + }, + "value": "10.3.200.0/29" + }, + "gatewayPublicIPName": { + "type": "string", + "defaultValue": "azureGatewayIP", + "metadata": { + "description": "Arbitrary name for public IP resource used for the new azure gateway" + }, + "value": "azureGatewayIP" + }, + "gatewayName": { + "type": "string", + "defaultValue": "azureGateway", + "metadata": { + "description": "Arbitrary name for the new gateway" + }, + "value": "azureGateway" + }, + "gatewaySku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "HighPerformance" + ], + "metadata": { + "description": "The Sku of the Gateway. This must be one of Basic, Standard or HighPerformance." + } + }, + "connectionName": { + "type": "string", + "defaultValue": "Azure2Other", + "metadata": { + "description": "Arbitrary name for the new connection between Azure VNet and other network" + }, + "value": "Azure2Other" + }, + "sharedKey": { + "type": "securestring", + "metadata": { + "description": "Shared key (PSK) for IPSec tunnel" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets//azureVnet/GatewaySubnet" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/localNetworkGateways", + "name": "localGateway", + "location": "[resourceGroup().location]", + "properties": { + "localNetworkAddressSpace": { + "addressPrefixes": [ + "192.168.0.0/16", + "172.16.0.0/12" + ] + }, + "gatewayIpAddress": "1.1.1.1" + } + }, + { + "apiVersion": "2020-07-01", + "name": "Azure2Other", + "type": "Microsoft.Network/connections", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways//azureGateway", + "Microsoft.Network/localNetworkGateways//localGateway" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/azureGateway" + }, + "localNetworkGateway2": { + "id": "Microsoft.Network/localNetworkGateways/localGateway" + }, + "connectionType": "IPsec", + "routingWeight": 10, + "sharedKey": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "azureVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.3.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.3.1.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.3.200.0/29" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "azureGatewayIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "azureGateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//azureGatewayIP", + "Microsoft.Network/virtualNetworks//azureVnet" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//azureVnet/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/azureGatewayIP" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": "false" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1592 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1592 new file mode 100644 index 0000000..f4f2c98 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1592 @@ -0,0 +1,1120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn-fqdn-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn-fqdn-bgp/azuredeploy.parameters.json" + ], + "timestamp": 1642962909468, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/site-to-site-vpn-fqdn-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/site-to-site-vpn-fqdn-bgp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1592", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/localnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1592", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "prefix": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "naming prefix of the objects in the resource. it can be an empty string." + } + }, + "location1": { + "type": "string", + "allowedValues": [ + "canadacentral", + "francecentral", + "germanywestcentral", + "japaneast", + "centralus", + "northeurope", + "southeastasia", + "eastus", + "uksouth", + "australiaeast", + "eastus2", + "westeurope", + "southcentralus", + "westus2" + ], + "metadata": { + "description": "First Azure region with Availability Zone" + }, + "value": "eastus" + }, + "location2": { + "type": "string", + "allowedValues": [ + "canadacentral", + "francecentral", + "germanywestcentral", + "japaneast", + "centralus", + "northeurope", + "southeastasia", + "eastus", + "uksouth", + "australiaeast", + "eastus2", + "westeurope", + "southcentralus", + "westus2" + ], + "metadata": { + "description": "Second Azure region with Availability Zone" + }, + "value": "eastus" + }, + "vNet1Name": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'vnet1')]", + "metadata": { + "description": "Arbitrary name for the Azure Virtual Network 1" + } + }, + "vNet2Name": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'vnet2')]", + "metadata": { + "description": "Arbitrary name for the Azure Virtual Network 2" + } + }, + "vNet1AddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "CIDR block representing the address space of the Azure VNet 1" + } + }, + "vNet2AddressPrefix": { + "type": "string", + "defaultValue": "10.2.0.0/16", + "metadata": { + "description": "CIDR block representing the address space of the Azure VNet 2" + } + }, + "subnet11Name": { + "type": "string", + "defaultValue": "subnet11", + "metadata": { + "description": "Arbitrary name for the Azure subnet1 in VNet1" + } + }, + "subnet12Name": { + "type": "string", + "defaultValue": "subnet12", + "metadata": { + "description": "Arbitrary name for the Azure subnet2 in VNet1" + } + }, + "subnet21Name": { + "type": "string", + "defaultValue": "subnet21", + "metadata": { + "description": "Arbitrary name for the Azure subnet1 in VNet2" + } + }, + "subnet22Name": { + "type": "string", + "defaultValue": "subnet22", + "metadata": { + "description": "Arbitrary name for the Azure subnet2 in VNet2" + } + }, + "subnet11Prefix": { + "type": "string", + "defaultValue": "10.1.1.0/24", + "metadata": { + "description": "CIDR block for subnet1 in VNet1- it is a subset of vNet1AddressPrefix address space" + } + }, + "subnet12Prefix": { + "type": "string", + "defaultValue": "10.1.2.0/24", + "metadata": { + "description": "CIDR block for subnet2 in VNet1- it is a subset of vNet1AddressPrefix address space" + } + }, + "gateway1subnetPrefix": { + "type": "string", + "defaultValue": "10.1.3.0/24", + "metadata": { + "description": "CIDR block for gateway subnet- it is a subset of vNet1AddressPrefix address space" + } + }, + "subnet21Prefix": { + "type": "string", + "defaultValue": "10.2.1.0/24", + "metadata": { + "description": "CIDR block for subnet1 in VNet2- it is a subset of vNet2AddressPrefix address space" + } + }, + "subnet22Prefix": { + "type": "string", + "defaultValue": "10.2.2.0/24", + "metadata": { + "description": "CIDR block for subnet2 in VNet2- it is a subset of vNet2AddressPrefix address space" + } + }, + "gateway2subnetPrefix": { + "type": "string", + "defaultValue": "10.2.3.0/24", + "metadata": { + "description": "CIDR block for gateway subnet- it is a subset of vNet2AddressPrefix address space" + } + }, + "gateway1Name": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'gw1')]", + "metadata": { + "description": "Arbitrary name for the new gateway1" + } + }, + "gateway2Name": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'gw2')]", + "metadata": { + "description": "Arbitrary name for the new gateway2" + } + }, + "gateway1PublicIP1Name": { + "type": "string", + "defaultValue": "[concat(parameters('gateway1Name'),'IP1')]", + "metadata": { + "description": "Arbitrary name for public IP1 resource used for the new azure gateway1" + } + }, + "gateway1PublicIP2Name": { + "type": "string", + "defaultValue": "[concat(parameters('gateway1Name'),'IP2')]", + "metadata": { + "description": "Arbitrary name for public IP2 resource used for the new azure gateway1" + } + }, + "gateway2PublicIP1Name": { + "type": "string", + "defaultValue": "[concat(parameters('gateway2Name'),'IP1')]", + "metadata": { + "description": "Arbitrary name for public IP1 resource used for the new azure gateway2" + } + }, + "gateway2PublicIP2Name": { + "type": "string", + "defaultValue": "[concat(parameters('gateway2Name'),'IP2')]", + "metadata": { + "description": "Arbitrary name for public IP2 resource used for the new azure gateway2" + } + }, + "gatewaySku": { + "type": "string", + "defaultValue": "VpnGw2AZ", + "allowedValues": [ + "VpnGw1AZ", + "VpnGw2AZ", + "VpnGw3AZ", + "VpnGw4AZ", + "VpnGw5AZ" + ], + "metadata": { + "description": "The Sku of the Gateway" + } + }, + "vpnGatewayGeneration": { + "type": "string", + "defaultValue": "Generation2", + "allowedValues": [ + "Generation1", + "Generation2" + ] + }, + "asnGtw1": { + "type": "int", + "defaultValue": 65001, + "metadata": { + "description": "BGP Autonomous System Number of the VPN Gateway1 in VNet1" + } + }, + "asnGtw2": { + "type": "int", + "defaultValue": 65002, + "metadata": { + "description": "BGP Autonomous System Number of the VPN Gateway2 in VNet2" + } + }, + "localGatewayName11": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'localGateway11')]", + "metadata": { + "description": "Arbitrary name for gateway resource representing VPN gateway1-public IP1" + } + }, + "localGatewayName12": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'localGateway12')]", + "metadata": { + "description": "Arbitrary name for gateway resource representing VPN gateway1-publicIP2" + } + }, + "localGatewayName21": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'localGateway21')]", + "metadata": { + "description": "Arbitrary name for gateway resource representing VPN gateway2-publicIP1" + } + }, + "localGatewayName22": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'localGateway22')]", + "metadata": { + "description": "Arbitrary name for gateway resource representing VPN gateway2-publicIP2" + } + }, + "connectionName11-21": { + "type": "string", + "defaultValue": "[concat(parameters('gateway1Name'),'-to-', parameters('gateway2PublicIP1Name'))]", + "metadata": { + "description": "Arbitrary name for the new connection between VPN gateway1 and the remote VPN Gateway2-public IP1" + } + }, + "connectionName12-22": { + "type": "string", + "defaultValue": "[concat(parameters('gateway1Name'),'-to-', parameters('gateway2PublicIP2Name'))]", + "metadata": { + "description": "Arbitrary name for the new connection between VPN gateway1 and the remote VPN Gateway2-public IP2" + } + }, + "connectionName21-11": { + "type": "string", + "defaultValue": "[concat(parameters('gateway2Name'),'-to-', parameters('gateway1PublicIP1Name'))]", + "metadata": { + "description": "Arbitrary name for the new connection between VPN gateway2 and the remote VPN Gateway1-public IP1" + } + }, + "connectionName22-12": { + "type": "string", + "defaultValue": "[concat(parameters('gateway2Name'),'-to-', parameters('gateway1PublicIP2Name'))]", + "metadata": { + "description": "Arbitrary name for the new connection between VPN gateway2 and the remote VPN Gateway1-public IP2" + } + }, + "sharedKey": { + "type": "string", + "defaultValue": "_your_Pre-Shared-Secret", + "metadata": { + "description": "Shared key (PSK) for IPSec tunnels" + }, + "value": "GEN-PASSWORD" + }, + "vm1Name": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'vm1')]", + "metadata": { + "description": "name of the VM in subnet1 in VNet1" + } + }, + "vm2Name": { + "type": "string", + "defaultValue": "[concat(parameters('prefix'),'vm2')]", + "metadata": { + "description": "name of the VM in subnet1 in VNet2" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_B1s", + "allowedValues": [ + "Standard_B1ls", + "Standard_B1s", + "Standard_D2s_v3", + "Standard_D16s_v3" + ], + "metadata": { + "description": "Size of the Virtual Machine" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "administrator username of the VMs" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "administrator password of the VMs" + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelgtw1PubIP1": { + "type": "string", + "defaultValue": "[toLower( concat( 'gtw1-ip1-', uniqueString(resourceGroup().id) ))]", + "metadata": { + "description": "dns name of public IP1 of the VPN Gateway1. Must be lowercase. It should match with the regex: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + } + }, + "dnsLabelgtw1PubIP2": { + "type": "string", + "defaultValue": "[toLower( concat( 'gtw1-ip2-', uniqueString(resourceGroup().id) ))]", + "metadata": { + "description": "dns name of public IP2 of the VPN Gateway1. Must be lowercase. It should match with the regex: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + } + }, + "dnsLabelgtw2PubIP1": { + "type": "string", + "defaultValue": "[toLower( concat( 'gtw2-ip1-', uniqueString(resourceGroup().id) ))]", + "metadata": { + "description": "dns name of public IP1 of the VPN Gateway2. Must be lowercase. It should match with the regex: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + } + }, + "dnsLabelgtw2PubIP2": { + "type": "string", + "defaultValue": "[toLower( concat( 'gtw2-ip2-', uniqueString(resourceGroup().id) ))]", + "metadata": { + "description": "dns name of public IP2 of the VPN Gateway2. Must be lowercase. It should match with the regex: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + } + } + }, + "variables": { + "location1": "eastus", + "location2": "eastus", + "vNet1Name": "parameters('prefix')vnet1", + "vNet2Name": "parameters('prefix')vnet2", + "subnet11Name": "subnet11", + "subnet12Name": "subnet12", + "subnet21Name": "subnet21", + "subnet22Name": "subnet22", + "vNet1AddressPrefix": "10.1.0.0/16", + "vNet2AddressPrefix": "10.2.0.0/16", + "subnet11Prefix": "10.1.1.0/24", + "subnet12Prefix": "10.1.2.0/24", + "subnet21Prefix": "10.2.1.0/24", + "subnet22Prefix": "10.2.2.0/24", + "gateway1SubnetPrefix": "gateway1SubnetPrefix", + "gateway2SubnetPrefix": "gateway2SubnetPrefix", + "gateway1subnetRef": "(Microsoft.Network/virtualNetworks/subnets,variables(vNet1Name),GatewaySubnet)", + "gateway2subnetRef": "(Microsoft.Network/virtualNetworks/subnets,variables(vNet2Name),GatewaySubnet)", + "subnet11Ref": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('prefix'),'vnet1')]/subnet11", + "subnet21Ref": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('prefix'),'vnet2')]/subnet21", + "gateway1Name": "parameters('prefix')gw1", + "gateway2Name": "parameters('prefix')gw2", + "gateway1PublicIP1Name": "[concat(parameters('prefix'),'gw1')]IP1", + "gateway1PublicIP2Name": "[concat(parameters('prefix'),'gw1')]IP2", + "gateway2PublicIP1Name": "[concat(parameters('prefix'),'gw2')]IP1", + "gateway2PublicIP2Name": "[concat(parameters('prefix'),'gw2')]IP2", + "gateway2PublicIP1Id": "Microsoft.Network/publicIPAddresses/[concat(parameters('gateway2Name'),'IP1')]", + "gateway2PublicIP2Id": "Microsoft.Network/publicIPAddresses/[concat(parameters('gateway2Name'),'IP2')]", + "gateway1PublicIP1Id": "Microsoft.Network/publicIPAddresses/[concat(parameters('gateway1Name'),'IP1')]", + "gateway1PublicIP2Id": "Microsoft.Network/publicIPAddresses/[concat(parameters('gateway1Name'),'IP2')]", + "dnsLabelgtw1PubIP1": "[toLower( concat( 'gtw1-ip1-', uniqueString(resourceGroup().id) ))]", + "dnsLabelgtw1PubIP2": "[toLower( concat( 'gtw1-ip2-', uniqueString(resourceGroup().id) ))]", + "dnsLabelgtw2PubIP1": "[toLower( concat( 'gtw2-ip1-', uniqueString(resourceGroup().id) ))]", + "dnsLabelgtw2PubIP2": "[toLower( concat( 'gtw2-ip2-', uniqueString(resourceGroup().id) ))]", + "asnGtw1": 65001, + "asnGtw2": 65002, + "localGatewayName11": "parameters('prefix')localGateway11", + "localGatewayName12": "parameters('prefix')localGateway12", + "localGatewayName21": "parameters('prefix')localGateway21", + "localGatewayName22": "parameters('prefix')localGateway22", + "connectionName11-21": "[concat(parameters('prefix'),'gw1')]-to-[concat(parameters('gateway2Name'),'IP1')]", + "connectionName12-22": "[concat(parameters('prefix'),'gw1')]-to-[concat(parameters('gateway2Name'),'IP2')]", + "connectionName21-11": "[concat(parameters('prefix'),'gw2')]-to-[concat(parameters('gateway1Name'),'IP1')]", + "connectionName22-12": "[concat(parameters('prefix'),'gw2')]-to-[concat(parameters('gateway1Name'),'IP2')]", + "vpnGatewayGeneration": "Generation2", + "vm1Name": "parameters('prefix')vm1", + "vm2Name": "parameters('prefix')vm2", + "nsg1": "parameters('prefix')nsg1", + "nsg2": "parameters('prefix')nsg2", + "nic1Name": "parameters('prefix')vm1", + "nic2Name": "parameters('prefix')vm2", + "vm1PublicIPName": "parameters('prefix')vm1", + "vm2PublicIPName": "parameters('prefix')vm2", + "vmSize": "Standard_B1s", + "imageReference": { + "publisher": "Canonical", + "offer": "0001-com-ubuntu-server-focal", + "sku": "20_04-lts", + "version": "latest" + } + }, + "resources": [ + { + "comments": "network security group applied to the subnets in the VNet1", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "location": "eastus", + "name": "parameters('prefix')nsg1", + "properties": { + "securityRules": [ + { + "name": "SSH-rule", + "properties": { + "description": "allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 500, + "direction": "Inbound" + } + }, + { + "name": "RDP-rule", + "properties": { + "description": "allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 510, + "direction": "Inbound" + } + } + ] + } + }, + { + "comments": "network security group applied to the subnets in the VNet2", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')nsg2", + "location": "eastus", + "properties": { + "securityRules": [ + { + "name": "SSH-rule", + "properties": { + "description": "allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 500, + "direction": "Inbound" + } + }, + { + "name": "RDP-rule", + "properties": { + "description": "allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 510, + "direction": "Inbound" + } + } + ] + } + }, + { + "comments": "Virtual Network 1", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')vnet1", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/parameters('prefix')nsg1" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet11", + "properties": { + "addressPrefix": "10.1.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/parameters('prefix')nsg1" + } + } + }, + { + "name": "subnet12", + "properties": { + "addressPrefix": "10.1.2.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "gateway1subnetPrefix" + } + } + ] + } + }, + { + "comments": "Virtual Network 2", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')vnet2", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/parameters('prefix')nsg2" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.2.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet21", + "properties": { + "addressPrefix": "10.2.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/parameters('prefix')nsg2" + } + } + }, + { + "name": "subnet22", + "properties": { + "addressPrefix": "10.2.2.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "gateway2subnetPrefix" + } + } + ] + } + }, + { + "comments": "static public IP of the VPN Gateway1-instance 0", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')gw1", + "location": "eastus", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower( concat( 'gtw1-ip1-', uniqueString(resourceGroup().id) ))]" + } + } + }, + { + "comments": "static public IP of the VPN Gateway1- instance 1", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')gw1", + "location": "eastus", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower( concat( 'gtw1-ip2-', uniqueString(resourceGroup().id) ))]" + } + } + }, + { + "comments": "static public IP of the VPN Gateway2-instance 0", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')gw2", + "location": "eastus", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower( concat( 'gtw2-ip1-', uniqueString(resourceGroup().id) ))]" + } + } + }, + { + "comments": "static public IP of the VPN Gateway2- instance 1", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')gw2", + "location": "eastus", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower( concat( 'gtw2-ip2-', uniqueString(resourceGroup().id) ))]" + } + } + }, + { + "comments": "VPN Gateway 1- deployed in location 1", + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')gw1", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/parameters('prefix')gw1", + "Microsoft.Network/publicIPAddresses/parameters('prefix')gw1", + "Microsoft.Network/virtualNetworks/parameters('prefix')vnet1" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "gateway1SubnetRef" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('prefix')gw1" + } + }, + "name": "vnetGateway1Config1" + }, + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "gateway1SubnetRef" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('prefix')gw1" + } + }, + "name": "vnetGateway1Config2" + } + ], + "sku": { + "name": "VpnGw2AZ", + "tier": "VpnGw2AZ" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": true, + "activeActive": true, + "vpnGatewayGeneration": "Generation2", + "bgpSettings": { + "asn": 65001 + } + } + }, + { + "comments": "VPN Gateway 2- deployed in location 2", + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')gw2", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/parameters('prefix')gw2", + "Microsoft.Network/publicIPAddresses/parameters('prefix')gw2", + "Microsoft.Network/virtualNetworks/parameters('prefix')vnet2" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "gateway2SubnetRef" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('prefix')gw2" + } + }, + "name": "vnetGateway2Config1" + }, + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "gateway2SubnetRef" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('prefix')gw2" + } + }, + "name": "vnetGateway2Config2" + } + ], + "sku": { + "name": "VpnGw2AZ", + "tier": "VpnGw2AZ" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": true, + "activeActive": true, + "vpnGatewayGeneration": "Generation2", + "bgpSettings": { + "asn": 65002 + } + } + }, + { + "comments": "local network gateway in Gateway1 to connect to the remote gateway1-public IP1", + "type": "Microsoft.Network/localNetworkGateways", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')localGateway11", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw1" + ], + "properties": { + "fqdn": "[reference(variables('gateway1PublicIP1Id'),'2020-06-01').dnsSettings.fqdn]", + "bgpSettings": { + "asn": 65001, + "bgpPeeringAddress": "[first(split( reference(resourceId('Microsoft.Network/virtualNetworkGateways',variables('gateway1Name')),'2020-06-01').bgpSettings.bgpPeeringAddress , ','))]", + "peerWeight": 0 + } + } + }, + { + "comments": "local network gateway in Gateway1 to connect to the remote gateway1-public IP2", + "type": "Microsoft.Network/localNetworkGateways", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')localGateway12", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw1" + ], + "properties": { + "fqdn": "[reference(variables('gateway1PublicIP2Id'),'2020-06-01').dnsSettings.fqdn]", + "bgpSettings": { + "asn": 65001, + "bgpPeeringAddress": "[last(split( reference(resourceId('Microsoft.Network/virtualNetworkGateways',variables('gateway1Name')),'2020-06-01').bgpSettings.bgpPeeringAddress , ','))]", + "peerWeight": 0 + } + } + }, + { + "comments": "local network gateway in Gateway1 to connect to the remote gateway2 -public IP1", + "type": "Microsoft.Network/localNetworkGateways", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')localGateway21", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw2" + ], + "properties": { + "fqdn": "[reference(variables('gateway2PublicIP1Id'),'2020-06-01').dnsSettings.fqdn]", + "bgpSettings": { + "asn": 65002, + "bgpPeeringAddress": "[first(split( reference(resourceId('Microsoft.Network/virtualNetworkGateways',variables('gateway2Name')),'2020-06-01').bgpSettings.bgpPeeringAddress , ','))]", + "peerWeight": 0 + } + } + }, + { + "comments": "local network gateway in Gateway1 to connect to the remote gateway2 -public IP2", + "type": "Microsoft.Network/localNetworkGateways", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')localGateway22", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw2" + ], + "properties": { + "fqdn": "[reference(variables('gateway2PublicIP2Id'),'2020-06-01').dnsSettings.fqdn]", + "bgpSettings": { + "asn": 65002, + "bgpPeeringAddress": "[last(split( reference(resourceId('Microsoft.Network/virtualNetworkGateways',variables('gateway2Name')),'2020-06-01').bgpSettings.bgpPeeringAddress , ','))]", + "peerWeight": 0 + } + } + }, + { + "comments": "VPN connection between [Gateway1] and [Gateway2-pubIP1]", + "type": "Microsoft.Network/connections", + "apiVersion": "2020-08-01", + "name": "[concat(parameters('prefix'),'gw1')]-to-[concat(parameters('gateway2Name'),'IP1')]", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw1", + "Microsoft.Network/localNetworkGateways/parameters('prefix')localGateway21" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw1" + }, + "localNetworkGateway2": { + "id": "Microsoft.Network/localNetworkGateways/parameters('prefix')localGateway21" + }, + "connectionType": "IPsec", + "routingWeight": 0, + "sharedKey": "GEN-PASSWORD", + "enableBGP": true + } + }, + { + "comments": "VPN connection between [Gateway1] and [Gateway2-pubIP2]", + "type": "Microsoft.Network/connections", + "apiVersion": "2020-08-01", + "name": "[concat(parameters('prefix'),'gw1')]-to-[concat(parameters('gateway2Name'),'IP2')]", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw1", + "Microsoft.Network/localNetworkGateways/parameters('prefix')localGateway22" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw1" + }, + "localNetworkGateway2": { + "id": "Microsoft.Network/localNetworkGateways/parameters('prefix')localGateway22" + }, + "connectionType": "IPsec", + "routingWeight": 0, + "sharedKey": "GEN-PASSWORD", + "enableBGP": true + } + }, + { + "comments": "VPN connection between [Gateway2] and [Gateway1-pubIP1]", + "type": "Microsoft.Network/connections", + "apiVersion": "2020-08-01", + "name": "[concat(parameters('prefix'),'gw2')]-to-[concat(parameters('gateway1Name'),'IP1')]", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw2", + "Microsoft.Network/localNetworkGateways/parameters('prefix')localGateway11" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw2" + }, + "localNetworkGateway2": { + "id": "Microsoft.Network/localNetworkGateways/parameters('prefix')localGateway11" + }, + "connectionType": "IPsec", + "routingWeight": 0, + "sharedKey": "GEN-PASSWORD", + "enableBGP": true + } + }, + { + "comments": "VPN connection between [Gateway2] and [Gateway1-pubIP2]", + "type": "Microsoft.Network/connections", + "apiVersion": "2020-06-01", + "name": "[concat(parameters('prefix'),'gw2')]-to-[concat(parameters('gateway1Name'),'IP2')]", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw2", + "Microsoft.Network/localNetworkGateways/parameters('prefix')localGateway12" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/parameters('prefix')gw2" + }, + "localNetworkGateway2": { + "id": "Microsoft.Network/localNetworkGateways/parameters('prefix')localGateway12" + }, + "connectionType": "IPsec", + "routingWeight": 0, + "sharedKey": "GEN-PASSWORD", + "enableBGP": true + } + }, + { + "comments": "public IP address of the VM1", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')vm1", + "location": "eastus", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "public IP address of the VM2", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')vm2", + "location": "eastus", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "NIC of the VM1", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')vm1", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/parameters('prefix')vm1", + "Microsoft.Network/virtualNetworks/parameters('prefix')vnet1" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('prefix')vm1" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('prefix'),'vnet1')]/subnet11" + } + } + } + ] + } + }, + { + "comments": "NIC of the VM2", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "name": "parameters('prefix')vm2", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/parameters('prefix')vm2", + "Microsoft.Network/virtualNetworks/parameters('prefix')vnet2" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('prefix')vm2" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('prefix'),'vnet2')]/subnet21" + } + } + } + ] + } + }, + { + "comments": "VM1", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "parameters('prefix')vm1", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/parameters('prefix')vm1" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1s" + }, + "osProfile": { + "computerName": "parameters('prefix')vm1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "(imageReference).publisher", + "offer": "(imageReference).offer", + "sku": "(imageReference).sku", + "version": "(imageReference).version" + }, + "osDisk": { + "name": "parameters('prefix')vm1-OSdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/parameters('prefix')vm1" + } + ] + } + } + }, + { + "comments": "VM2", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "parameters('prefix')vm2", + "location": "eastus", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/parameters('prefix')vm2" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1s" + }, + "osProfile": { + "computerName": "parameters('prefix')vm2", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "(imageReference).publisher", + "offer": "(imageReference).offer", + "sku": "(imageReference).sku", + "version": "(imageReference).version" + }, + "osDisk": { + "name": "parameters('prefix')vm2-OSdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/parameters('prefix')vm2" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1593 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1593 new file mode 100644 index 0000000..4b7e735 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1593 @@ -0,0 +1,79 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/subnet-add-vnet-existing/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/subnet-add-vnet-existing/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909483, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/subnet-add-vnet-existing/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/subnet-add-vnet-existing/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1593", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1593", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "firstVNETName": "vnet-01", + "firstVNETPrefix": "10.0.0.0/16", + "firstVNETFESubnetName": "subnet01", + "firstVNETFESubnetPrefix": "10.0.1.0/24" + }, + "resources": [ + { + "name": "vnet-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2021-03-01", + "tags": { + "displayName": "firstVNET" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet01", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVNETName": { + "type": "string", + "value": "[variables('firstVNETName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1594 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1594 new file mode 100644 index 0000000..f13e490 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1594 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/subnet-add-vnet-existing/azuredeploy.json", + "/quickstarts/microsoft.network/subnet-add-vnet-existing/azuredeploy.parameters.json" + ], + "timestamp": 1642962909492, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/subnet-add-vnet-existing/azuredeploy.json", + "/quickstarts/microsoft.network/subnet-add-vnet-existing/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1594", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1594", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "10509826654560146891" + } + }, + "parameters": { + "existingVNETName": { + "type": "string", + "metadata": { + "description": "Name of the VNET to add a subnet to" + }, + "value": "GET-PREREQ-existingVNETName" + }, + "newSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet to add" + }, + "value": "newSubnet" + }, + "newSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Address space of the subnet to add" + }, + "value": "10.0.2.0/24" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2021-03-01", + "name": "[format('{0}/{1}', parameters('existingVNETName'), parameters('newSubnetName'))]", + "properties": { + "addressPrefix": "10.0.2.0/24" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1595 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1595 new file mode 100644 index 0000000..96d6948 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1595 @@ -0,0 +1,110 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909497, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1595", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/trafficmanagerprofiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1595", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "uniqueDnsName": { + "type": "string", + "metadata": { + "description": "Relative DNS name for the traffic manager profile, must be globally unique." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "TMprofileName": "ExternalEndpointExample", + "endpoint1Name": "endpoint1", + "endpoint1Target": "www.microsoft.com", + "endpoint1Location": "northeurope", + "endpoint2Name": "endpoint2", + "endpoint2Target": "www.xbox.com", + "endpoint2Location": "southcentralus" + }, + "resources": [ + { + "type": "Microsoft.Network/trafficManagerProfiles", + "apiVersion": "2018-08-01", + "name": "TMProfileName", + "location": "global", + "properties": { + "profileStatus": "Enabled", + "trafficRoutingMethod": "Performance", + "dnsConfig": { + "relativeName": "GEN-UNIQUE", + "ttl": 30 + }, + "monitorConfig": { + "protocol": "HTTPS", + "port": 443, + "path": "/", + "expectedStatusCodeRanges": [ + { + "min": 200, + "max": 202 + }, + { + "min": 301, + "max": 302 + } + ] + }, + "endpoints": [ + { + "type": "Microsoft.Network/TrafficManagerProfiles/ExternalEndpoints", + "name": "endpoint1", + "properties": { + "target": "www.microsoft.com", + "endpointStatus": "Enabled", + "endpointLocation": "northeurope" + } + }, + { + "type": "Microsoft.Network/TrafficManagerProfiles/ExternalEndpoints", + "name": "endpoint2", + "properties": { + "target": "www.xbox.com", + "endpointStatus": "Enabled", + "endpointLocation": "southcentralus" + } + } + ] + } + } + ], + "outputs": { + "existingTMProfileName": { + "type": "string", + "value": "[variables('TMprofileName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1596 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1596 new file mode 100644 index 0000000..054bc21 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1596 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962909508, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-add-external-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1596", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/trafficmanagerprofiles/externalendpoints" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1596", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingTMProfileName": { + "type": "string", + "metadata": { + "description": "Name of the traffic manager profile to add a endpoint to" + }, + "value": "GET-PREREQ-existingTMProfileName" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the endpoint to add to traffic manager profile" + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "endpointStatus": "Enabled", + "endpointMonitorStatus": "Degraded", + "endpointLocation": "westus", + "target": "www.msn.com", + "weight": "3", + "priority": "3" + }, + "resources": [ + { + "apiVersion": "2018-04-01", + "type": "Microsoft.Network/TrafficManagerProfiles/ExternalEndpoints", + "name": "GET-PREREQ-existingTMProfileName/GEN-UNIQUE", + "properties": { + "endpointStatus": "Enabled", + "endpointLocation": "westus", + "endpointMonitorStatus": "Degraded", + "target": "www.msn.com", + "weight": "3", + "priority": "3" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1597 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1597 new file mode 100644 index 0000000..41fffdd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1597 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-external-endpoint/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-external-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962909517, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-external-endpoint/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-external-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1597", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/trafficmanagerprofiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1597", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "uniqueDnsName": { + "type": "string", + "metadata": { + "description": "Relative DNS name for the traffic manager profile, must be globally unique." + }, + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "type": "Microsoft.Network/trafficManagerProfiles", + "apiVersion": "2018-08-01", + "name": "ExternalEndpointExample", + "location": "global", + "properties": { + "profileStatus": "Enabled", + "trafficRoutingMethod": "Performance", + "dnsConfig": { + "relativeName": "GEN-UNIQUE", + "ttl": 30 + }, + "monitorConfig": { + "protocol": "HTTPS", + "port": 443, + "path": "/", + "expectedStatusCodeRanges": [ + { + "min": 200, + "max": 202 + }, + { + "min": 301, + "max": 302 + } + ] + }, + "endpoints": [ + { + "type": "Microsoft.Network/TrafficManagerProfiles/ExternalEndpoints", + "name": "endpoint1", + "properties": { + "target": "www.microsoft.com", + "endpointStatus": "Enabled", + "endpointLocation": "northeurope" + } + }, + { + "type": "Microsoft.Network/TrafficManagerProfiles/ExternalEndpoints", + "name": "endpoint2", + "properties": { + "target": "docs.microsoft.com", + "endpointStatus": "Enabled", + "endpointLocation": "southcentralus" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1598 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1598 new file mode 100644 index 0000000..f306752 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1598 @@ -0,0 +1,345 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-vm/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962909524, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-vm/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1598", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/trafficmanagerprofiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1598", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "5585425876375154510" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the VM, only certain regions support zones." + } + }, + "uniqueDnsName": { + "type": "string", + "metadata": { + "description": "Relative DNS name for the traffic manager profile, must be globally unique" + }, + "value": "GEN-UNIQUE" + }, + "adminUserName": { + "type": "string", + "metadata": { + "description": "Admin user name for the Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "uniqueDnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Relative DNS Name for the Public IPs used to access the Virtual Machines, must be globally unique. An index will be appended for each instance." + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS", + "16.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 18.04-LTS, 16.04-LTS." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machine" + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "secureString", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "functions": [], + "variables": { + "numVMs": 3, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "vmName": "UbuntuVM", + "virtualNetworkName": "[format('{0}-vnet', variables('vmName'))]", + "networkSecurityGroupName": "[format('{0}-nsg', variables('vmName'))]", + "traficManagerProfileName": "[format('{0}-tm', variables('vmName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "subnetName": "Subnet", + "publicIPAddressType": "Dynamic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "[format('/home/{0}/.ssh/authorized_keys', parameters('adminUserName'))]", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "copy": { + "name": "pip", + "count": 29 + }, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-03-01", + "name": "[format('{0}{1}-pip', variables('vmName'), range(0, variables('numVMs'))[copyIndex()])]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4", + "dnsSettings": { + "domainNameLabel": "[format('{0}{1}', parameters('uniqueDnsNameForPublicIP'), range(0, variables('numVMs'))[copyIndex()])]" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-03-01", + "name": "[format('{0}-vnet', variables('vmName'))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "copy": { + "name": "nic", + "count": 29 + }, + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-03-01", + "name": "[format('{0}{1}-nic', variables('vmName'), range(0, variables('numVMs'))[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}-pip', variables('vmName'), range(0, variables('numVMs'))[range(0, variables('numVMs'))[copyIndex()]]))]" + }, + "subnet": { + "id": "[reference(resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))).subnets[0].id]" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('{0}-nsg', variables('vmName'))]" + } + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[format('{0}-nsg', variables('vmName'))]", + "[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}-pip', variables('vmName'), range(0, variables('numVMs'))[range(0, variables('numVMs'))[copyIndex()]]))]", + "Microsoft.Network/virtualNetworks/[format('{0}-vnet', variables('vmName'))]" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-03-01", + "name": "[format('{0}-nsg', variables('vmName'))]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow-HTTP", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "copy": { + "name": "vm", + "count": 29 + }, + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-07-01", + "name": "[format('{0}{1}', variables('vmName'), range(0, variables('numVMs'))[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "[format('{0}{1}', variables('vmName'), range(0, variables('numVMs'))[copyIndex()])]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "[format('{0}{1}-osdisk', variables('vmName'), range(0, variables('numVMs'))[copyIndex()])]", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', format('{0}{1}-nic', variables('vmName'), range(0, variables('numVMs'))[range(0, variables('numVMs'))[copyIndex()]]))]" + } + ] + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', format('{0}{1}-nic', variables('vmName'), range(0, variables('numVMs'))[range(0, variables('numVMs'))[copyIndex()]]))]" + ] + }, + { + "copy": { + "name": "customScript", + "count": 29 + }, + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-07-01", + "name": "[format('{0}/{1}', format('{0}{1}', variables('vmName'), range(0, variables('numVMs'))[range(0, variables('numVMs'))[copyIndex()]]), 'installcustomscript')]", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "sudo bash -c \"sudo apt-get install -f -y && sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get install -y apache2 && echo \\\"You're connected to $(hostname)\\\" | sudo tee /var/www/html/index.html\"" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', format('{0}{1}', variables('vmName'), range(0, variables('numVMs'))[range(0, variables('numVMs'))[copyIndex()]]))]" + ] + }, + { + "type": "Microsoft.Network/trafficmanagerprofiles", + "apiVersion": "2018-08-01", + "name": "[format('{0}-tm', variables('vmName'))]", + "location": "global", + "properties": { + "copy": [ + { + "name": "endpoints", + "count": 29, + "input": { + "name": "[format('endpoint{0}', range(0, variables('numVMs'))[copyIndex('endpoints')])]", + "type": "Microsoft.Network/trafficManagerProfiles/azureEndpoints", + "properties": { + "targetResourceId": "[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}-pip', variables('vmName'), range(0, variables('numVMs'))[range(0, variables('numVMs'))[copyIndex('endpoints')]]))]", + "endpointStatus": "Enabled", + "weight": 1 + } + } + } + ], + "profileStatus": "Enabled", + "trafficRoutingMethod": "Weighted", + "dnsConfig": { + "relativeName": "GEN-UNIQUE", + "ttl": 30 + }, + "monitorConfig": { + "protocol": "HTTP", + "port": 80, + "path": "/" + } + }, + "dependsOn": [ + "pip" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1599 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1599 new file mode 100644 index 0000000..c0e7266 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1599 @@ -0,0 +1,369 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-vm-zones/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-vm-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962909537, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-vm-zones/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-vm-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1599", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/trafficmanagerprofiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1599", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the VM, only certain regions support zones." + }, + "value": "West US 2" + }, + "trafficManagerDnsName": { + "type": "string", + "metadata": { + "description": "Relative DNS name for the traffic manager profile, must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "publicIpDnsName": { + "type": "string", + "metadata": { + "description": "Relative DNS Name for the Public IPs used to access the Virtual Machines, must be globally unique. An index will be appended for each instance." + }, + "value": "GEN-UNIQUE" + }, + "numberOfVms": { + "type": "int", + "defaultValue": 3, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of VMs to provision" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Size of the virtual machines" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS", + "16.04.0-LTS", + "14.04.5-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 18.04-LTS, 16.04.0-LTS, 14.04.5-LTS." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "nicName": "myVMNic", + "subnetName": "Subnet-1", + "publicIPAddressName": "myPublicIP", + "vmName": "MyUbuntuVM", + "virtualNetworkName": "MyVNET", + "networkSecurityGroupName": "MyNSG", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet-1", + "linuxImage": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "myPublicIPcopyIndex()", + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "ipLoop", + "count": 3 + }, + "location": "West US 2", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUEcopyindex()" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "MyVNET", + "location": "West US 2", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "name": "myVMNiccopyIndex()", + "copy": { + "name": "nicLoop", + "count": 3 + }, + "location": "West US 2", + "dependsOn": [ + "ipLoop", + "MyVNET", + "Microsoft.Network/networkSecurityGroups/MyNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIPcopyIndex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet-1" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/MyNSG" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "MyUbuntuVMcopyIndex()", + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "location": "West US 2", + "copy": { + "name": "vmLoop", + "count": 3 + }, + "dependsOn": [ + "nicLoop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "MyUbuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNiccopyIndex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "apiVersion": "2019-12-01", + "name": "MyUbuntuVMcopyIndex()-installcustomscript", + "location": "West US 2", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyUbuntuVMcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_apache.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install_apache.sh" + } + } + } + ] + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/trafficManagerProfiles", + "name": "VMEndpointExample", + "location": "global", + "dependsOn": [ + "ipLoop" + ], + "properties": { + "profileStatus": "Enabled", + "trafficRoutingMethod": "Weighted", + "dnsConfig": { + "relativeName": "GEN-UNIQUE", + "ttl": 30 + }, + "monitorConfig": { + "protocol": "HTTP", + "port": 80, + "path": "/" + }, + "copy": [ + { + "name": "endpoints", + "count": 3, + "input": { + "name": "[concat('endpoint', copyIndex('endpoints'))]", + "type": "Microsoft.Network/trafficManagerProfiles/azureEndpoints", + "properties": { + "targetResourceId": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIPAddressName'), copyIndex('endpoints')))]", + "endpointStatus": "Enabled", + "weight": 1 + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "MyNSG", + "location": "West US 2", + "properties": { + "securityRules": [ + { + "name": "Port_80", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + } + ], + "outputs": { + "trafficManagerFqdn": { + "type": "string", + "value": "[reference('VMEndpointExample', '2018-04-01').dnsConfig.fqdn]" + }, + "trafficManagerEndpoints": { + "type": "array", + "value": "[reference('VMEndpointExample', '2018-04-01').endpoints]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT16 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT16 new file mode 100644 index 0000000..19596fb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT16 @@ -0,0 +1,260 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/CreateAndPrepnewVM.json" + ], + "timestamp": 1642962883439, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/CreateAndPrepnewVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT16", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT16", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of existing Virtual Network" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the existing subnet in the VNET" + } + }, + "adAvailabilitySetName": { + "type": "string", + "metadata": { + "description": "Name of existing availability set for the VM" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The computer name for the new VM." + } + }, + "vmIpAddress": { + "type": "string", + "metadata": { + "description": "The IP address for the new VM" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the admin account for the VM" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account of the new VM" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the VM Created" + }, + "defaultValue": "Standard_D2s_v3" + }, + "imageSKU": { + "type": "string", + "allowedValues": [ + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "Windows Server Version" + } + }, + "diskType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "StandardSSD_LRS", + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The Storage type of the data Disks." + } + }, + "location": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources such as templates and DSC modules that the script depends on. No need to change unless you copy or fork this template." + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "SAS storage token to access _artifactsLocation. No need to change unless you copy or fork this template." + }, + "defaultValue": "" + } + }, + "variables": { + "adSubnetRef": "Microsoft.Network/virtualNetworks/subnets//virtualNetworkName/SubnetName", + "vmPublicIPName": "vmNamePublicIP", + "vmNicName": "vmNameNic", + "vmDataDisk": "vmName-managed-DataDisk1", + "vmOSDisk": "vmName-managed-OSDisk", + "vmDataDiskSize": 10, + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "scriptName": "Configure-DSC.ps1", + "scriptDownLoad": "[uri(parameters('_artifactsLocation'), concat(variables('scriptName'), parameters('_artifactsLocationSasToken')))]", + "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File ./Configure-DSC.ps1 -SkipNetworkProfileCheck $true" + }, + "resources": [ + { + "name": "vmNamePublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "location": "location", + "apiVersion": "2020-05-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(tolower(parameters('VMName')),'-',uniqueString(resourceGroup().id))]" + } + } + }, + { + "name": "vmNameNic", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//vmNamePublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "vmIPAddress", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//virtualNetworkName/SubnetName" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vmNamePublicIP" + } + } + } + ] + } + }, + { + "name": "vmName", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/vmNameNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "VMSize" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/adAvailabilitySetName" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "imageSKU", + "version": "latest" + }, + "osDisk": { + "name": "vmName-managed-OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "vmName-managed-DataDisk1", + "caching": "None", + "lun": 0, + "diskSizeGB": 10, + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmNameNic" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/vmDownloadScriptDSCModules", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmName" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptDownload" + ], + "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File ./Configure-DSC.ps1 -SkipNetworkProfileCheck $true" + } + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT160 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT160 new file mode 100644 index 0000000..a771a36 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT160 @@ -0,0 +1,161 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/cloudpakdeploy.json" + ], + "timestamp": 1642962888960, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/cloudpakdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT160", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT160", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "assembly": { + "type": "string", + "metadata": { + "description": "CloudPak assembly to install" + } + }, + "cloudPakDeploymentScriptUrl": { + "type": "string", + "metadata": { + "description": "Bastion prep script Url" + } + }, + "cloudPakDeploymentScriptFileName": { + "type": "string", + "metadata": { + "description": "Bastion prep script file name" + } + }, + "redHatTags": { + "type": "object", + "metadata": { + "description": "Red Hat Tags" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin Username" + } + }, + "ocuser": { + "type": "string", + "metadata": { + "description": "OpenShift Username" + } + }, + "ocpassword": { + "type": "securestring", + "metadata": { + "description": "OpenShift Password" + } + }, + "storageOption": { + "type": "string", + "metadata": { + "description": "Storage for CPD installation" + } + }, + "bastionHostname": { + "type": "string", + "metadata": { + "description": "Bastion Hostname" + } + }, + "projectName": { + "type": "string", + "metadata": { + "description": "Project name to deploy CloudPak for Data to" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Region where the resources should be created in" + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "Cluster resources prefix" + } + }, + "domainName": { + "type": "string", + "metadata": { + "description": "Domain name created with the App Service" + } + }, + "apiKey": { + "type": "securestring", + "metadata": { + "description": "IBM Container Registry API Key. See README on how to obtain this" + } + }, + "subscriptionChannel": { + "type": "string", + "metadata": { + "description": "Subscription channel of the CPD service operator" + } + }, + "version": { + "type": "string", + "metadata": { + "description": "CPD service version" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "bastionHostname/deployOpenshift", + "location": "location", + "apiVersion": "2021-07-01", + "tags": { + "displayName": "DeployCloudPak", + "app": "redHatTags", + "version": "redHatTags", + "platform": "redHatTags" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "cloudPakDeploymentScriptUrl" + ] + }, + "protectedSettings": { + "commandToExecute": "bash cloudPakDeploymentScriptFileName \"adminUsername\" \"ocpassword\" \"projectName\" \"storageOption\" \"assembly\" \"clusterName\" \"domainName\" \"ocuser\" \"apiKey\" \"subscriptionChannel\" \"version\"" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1600 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1600 new file mode 100644 index 0000000..c4d295c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1600 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-webapp/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-webapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962909545, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/traffic-manager-webapp/azuredeploy.json", + "/quickstarts/microsoft.network/traffic-manager-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1600", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.network/trafficmanagerprofiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1600", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "2507546902898660526" + } + }, + "parameters": { + "uniqueDnsName": { + "type": "string", + "metadata": { + "description": "Relative DNS name for the traffic manager profile, resulting FQDN will be .trafficmanager.net, must be globally unique." + }, + "value": "GEN-UNIQUE-32" + }, + "uniqueDnsNameForWebApp": { + "type": "string", + "metadata": { + "description": "Relative DNS name for the WebApps, must be globally unique. An index will be appended for each Web App." + }, + "value": "GEN-UNIQUE-32" + }, + "appServicePlanName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Plan that is being created" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "trafficManagerName": { + "type": "string", + "metadata": { + "description": "Name of the trafficManager being created" + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "tier": "Standard" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Network/trafficmanagerprofiles", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "global", + "properties": { + "profileStatus": "Enabled", + "trafficRoutingMethod": "Priority", + "dnsConfig": { + "relativeName": "GEN-UNIQUE-32", + "ttl": 30 + }, + "monitorConfig": { + "protocol": "HTTPS", + "port": 443, + "path": "/" + }, + "endpoints": [ + { + "name": "GEN-UNIQUE-32", + "type": "Microsoft.Network/trafficManagerProfiles/azureEndpoints", + "properties": { + "targetResourceId": "Microsoft.Web/sites/GEN-UNIQUE-32", + "endpointStatus": "Enabled" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE-32" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1601 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1601 new file mode 100644 index 0000000..52d1828 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1601 @@ -0,0 +1,356 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/userdefined-routes-appliance/azuredeploy.json", + "/quickstarts/microsoft.network/userdefined-routes-appliance/azuredeploy.parameters.json" + ], + "timestamp": 1642962909556, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/userdefined-routes-appliance/azuredeploy.json", + "/quickstarts/microsoft.network/userdefined-routes-appliance/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1601", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1601", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "yourusername" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "uniqueDnsPrefixForVM": { + "type": "string", + "metadata": { + "description": "Unique DNS Prefix for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "Dynamic", + "metadata": { + "description": "VM Name Prefix for the Virtual Machine." + }, + "value": "routedemo5VM" + }, + "vmsize": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "VM size" + } + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Type of public IP address" + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "VNetName": "Contoso_Network", + "Subnet1Name": "FrontendSubnet", + "Subnet2Name": "NVASubnet", + "Subnet3Name": "BackendSubnet", + "VNetAddressPrefix": "10.1.0.0/16", + "Subnet1Prefix": "10.1.0.0/24", + "Subnet2Prefix": "10.1.1.0/24", + "Subnet3Prefix": "10.1.2.0/24", + "routeTableName": "BasicNVA", + "NvmPrivateIPAddress": "10.1.1.4", + "nsgname": "DefaultNSG", + "scaleNumber": 3 + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUEcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "pubIPLoop", + "count": 3 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUEcopyIndex()" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "DefaultNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "rdp_rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "name": "BasicNVA", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "routes": [ + { + "name": "VirtualApplianceRouteToSubnet3", + "properties": { + "addressPrefix": "subnet3Prefix", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "10.1.1.4" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "Contoso_Network", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/routeTables//BasicNVA", + "Microsoft.Network/networkSecurityGroups//DefaultNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "FrontendSubnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DefaultNSG" + }, + "routeTable": { + "id": "Microsoft.Network/routeTables/BasicNVA" + } + } + }, + { + "name": "NVASubnet", + "properties": { + "addressPrefix": "10.1.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DefaultNSG" + } + } + }, + { + "name": "BackendSubnet", + "properties": { + "addressPrefix": "10.1.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DefaultNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "Nic0", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//Contoso_Network", + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE0" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE0" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Contoso_Network/FrontendSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "Nic1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE1", + "Microsoft.Network/virtualNetworks//Contoso_Network" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.1.1.4", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE1" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Contoso_Network/NVASubnet" + } + } + } + ], + "enableIPForwarding": true + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "Nic2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE2", + "Microsoft.Network/virtualNetworks//Contoso_Network" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE2" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Contoso_Network/BackendSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "routedemo5VMcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/Nic0", + "Microsoft.Network/networkInterfaces/Nic1", + "Microsoft.Network/networkInterfaces/Nic2" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "routedemo5VMcopyIndex()", + "adminUsername": "yourusername", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/NiccopyIndex()" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1602 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1602 new file mode 100644 index 0000000..fcb77b1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1602 @@ -0,0 +1,222 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan/azuredeploy.parameters.json" + ], + "timestamp": 1642962909572, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1602", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualhubs", + "microsoft.network/virtualwans", + "microsoft.network/vpngateways", + "microsoft.network/vpnsites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1602", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "9107088758412163288" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location where all resources will be created." + } + }, + "vWanName": { + "type": "string", + "defaultValue": "SampleVirtualWan", + "metadata": { + "description": "Name of the Virtual Wan." + } + }, + "vWanSku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Basic" + ], + "metadata": { + "description": "Sku of the Virtual Wan." + } + }, + "hubName": { + "type": "string", + "defaultValue": "SampleVirtualHub", + "metadata": { + "description": "Name of the Virtual Hub. A virtual hub is created inside a virtual wan." + } + }, + "vpnGatewayName": { + "type": "string", + "defaultValue": "SampleVpnGateway", + "metadata": { + "description": "Name of the VPN Gateway. A VPN Gateway is created inside a virtual hub." + } + }, + "vpnSiteName": { + "type": "string", + "defaultValue": "SampleVpnSite", + "metadata": { + "description": "Name of the vpnsite. A vpnsite represents the on-premise vpn device. A public ip address is mandatory for a VPN Site creation." + } + }, + "connectionName": { + "type": "string", + "defaultValue": "SampleVpnsiteVpnGwConnection", + "metadata": { + "description": "Name of the vpnconnection. A vpn connection is established between a vpnsite and a VPN Gateway." + } + }, + "vpnSiteAddressspaceList": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "A list of static routes corresponding to the VPN Gateway. These are configured on the VPN Gateway. Mandatory if BGP is disabled." + }, + "value": [] + }, + "vpnSitePublicIPAddress": { + "type": "string", + "metadata": { + "description": "The public IP address of a VPN Site." + }, + "value": "1.2.3.4" + }, + "vpnSiteBgpAsn": { + "type": "int", + "metadata": { + "description": "The BGP ASN number of a VPN Site. Unused if BGP is disabled." + }, + "value": 65010 + }, + "vpnSiteBgpPeeringAddress": { + "type": "string", + "metadata": { + "description": "The BGP peer IP address of a VPN Site. Unused if BGP is disabled." + }, + "value": "1.1.1.1" + }, + "hubAddressPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/24", + "metadata": { + "description": "The hub address prefix. This address prefix will be used as the address prefix for the hub vnet" + } + }, + "enableBgp": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "This needs to be set to true if BGP needs to enabled on the VPN connection." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualWans", + "apiVersion": "2021-03-01", + "name": "SampleVirtualWan", + "location": "[resourceGroup().location]", + "properties": { + "type": "Standard" + } + }, + { + "type": "Microsoft.Network/virtualHubs", + "apiVersion": "2021-03-01", + "name": "SampleVirtualHub", + "location": "[resourceGroup().location]", + "properties": { + "addressPrefix": "192.168.0.0/24", + "virtualWan": { + "id": "Microsoft.Network/virtualWans/SampleVirtualWan" + } + }, + "dependsOn": [ + "Microsoft.Network/virtualWans/SampleVirtualWan" + ] + }, + { + "type": "Microsoft.Network/vpnSites", + "apiVersion": "2021-03-01", + "name": "SampleVpnSite", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [] + }, + "bgpProperties": "[if(parameters('enableBgp'), createObject('asn', parameters('vpnSiteBgpAsn'), 'bgpPeeringAddress', parameters('vpnSiteBgpPeeringAddress'), 'peerWeight', 0), null())]", + "deviceProperties": { + "linkSpeedInMbps": 10 + }, + "ipAddress": "1.2.3.4", + "virtualWan": { + "id": "Microsoft.Network/virtualWans/SampleVirtualWan" + } + }, + "dependsOn": [ + "Microsoft.Network/virtualWans/SampleVirtualWan" + ] + }, + { + "type": "Microsoft.Network/vpnGateways", + "apiVersion": "2021-03-01", + "name": "SampleVpnGateway", + "location": "[resourceGroup().location]", + "properties": { + "connections": [ + { + "name": "SampleVpnsiteVpnGwConnection", + "properties": { + "connectionBandwidth": 10, + "enableBgp": false, + "remoteVpnSite": { + "id": "Microsoft.Network/vpnSites/SampleVpnSite" + } + } + } + ], + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/SampleVirtualHub" + }, + "bgpSettings": { + "asn": 65515 + } + }, + "dependsOn": [ + "Microsoft.Network/virtualHubs/SampleVirtualHub", + "Microsoft.Network/vpnSites/SampleVpnSite" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1603 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1603 new file mode 100644 index 0000000..1fa5a50 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1603 @@ -0,0 +1,571 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan-with-all-gateways/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan-with-all-gateways/azuredeploy.parameters.json" + ], + "timestamp": 1642962909580, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan-with-all-gateways/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan-with-all-gateways/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1603", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/vpnserverconfigurations", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/p2svpngateways", + "microsoft.network/expressroutegateways", + "microsoft.network/vpngateways", + "microsoft.network/virtualwans", + "microsoft.network/virtualhubs/hubvirtualnetworkconnections" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1603", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vWANname": { + "type": "string", + "metadata": { + "description": "Azure Virtual WAN Name" + }, + "value": "vwan1" + }, + "hub1_location": { + "type": "string", + "metadata": { + "description": "Azure Region for the first Hub" + }, + "value": "West Europe" + }, + "hub2_location": { + "type": "string", + "metadata": { + "description": "Azure Region for the second Hub" + }, + "value": "North Europe" + }, + "Hub1_S2SvpnGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Site-to-Site (S2S) VPN Gateway in the first Hub" + } + }, + "Hub2_S2SvpnGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Site-to-Site (S2S) VPN Gateway in the second Hub" + } + }, + "Hub1_ExpressRouteGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Express Route Gateway in the first Hub" + } + }, + "Hub2_ExpressRouteGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Express Route Gateway in the second Hub" + } + }, + "Hub1_P2SvpnGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Point-to-Site (P2S) VPN Gateway in the first Hub" + } + }, + "Hub2_P2SvpnGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Point-to-Site (P2S) VPN Gateway in the second Hub" + } + }, + "Hub1_PublicCertificateDataForP2S": { + "type": "string", + "metadata": { + "description": "Sample Public Certificate content for Point-to-Site (P2S) authentication in the first Hub (please provide your own once deployment is completed) " + }, + "value": "GEN-SELFSIGNED-CERT-CERDATA" + }, + "Hub2_PublicCertificateDataForP2S": { + "type": "string", + "metadata": { + "description": "Sample Public Certificate content for Point-to-Site (P2S) authentication in the second Hub (please provide your own once deployment is completed) " + }, + "value": "GEN-SELFSIGNED-CERT-CERDATA" + } + }, + "variables": { + "vwan_cfg": { + "type": "Standard" + }, + "virtual_hub1_cfg": { + "name": "vhubvnet1", + "addressSpacePrefix": "192.168.0.0/24", + "Hub1_P2SvpnClientAddressPoolPrefix": "10.4.3.0/24" + }, + "virtual_hub2_cfg": { + "name": "vhubvnet2", + "addressSpacePrefix": "192.168.1.0/24", + "Hub2_P2SvpnClientAddressPoolPrefix": "10.5.3.0/24" + }, + "vnet1_cfg": { + "name": "VNET1", + "addressSpacePrefix": "10.1.0.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.1.0.0/24" + }, + "vnet2_cfg": { + "name": "VNET2", + "addressSpacePrefix": "10.1.1.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.1.1.0/24" + }, + "vnet3_cfg": { + "name": "VNET3", + "addressSpacePrefix": "10.2.0.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.2.0.0/24" + }, + "vnet4_cfg": { + "name": "VNET4", + "addressSpacePrefix": "10.2.1.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.2.1.0/24" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualWans", + "apiVersion": "2020-05-01", + "name": "vwan1", + "location": "West Europe", + "properties": { + "allowVnetToVnetTraffic": true, + "allowBranchToBranchTraffic": true, + "type": "(vwan_cfg).type" + } + }, + { + "type": "Microsoft.Network/virtualHubs", + "apiVersion": "2020-05-01", + "name": "(virtual_hub1_cfg).name", + "location": "West Europe", + "dependsOn": [ + "Microsoft.Network/virtualWans/vwan1" + ], + "properties": { + "addressPrefix": "(virtual_hub1_cfg).addressSpacePrefix", + "virtualWan": { + "id": "Microsoft.Network/virtualWans/vwan1" + } + } + }, + { + "type": "Microsoft.Network/virtualHubs", + "apiVersion": "2020-05-01", + "name": "(virtual_hub2_cfg).name", + "location": "North Europe", + "dependsOn": [ + "Microsoft.Network/virtualWans/vwan1" + ], + "properties": { + "addressPrefix": "(virtual_hub2_cfg).addressSpacePrefix", + "virtualWan": { + "id": "Microsoft.Network/virtualWans/vwan1" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "(vnet1_cfg).name", + "location": "West Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet1_cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet1_cfg).subnetName", + "properties": { + "addressPrefix": "(vnet1_cfg).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "(vnet2_cfg).name", + "location": "West Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet2_cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet2_cfg).subnetName", + "properties": { + "addressPrefix": "(vnet2_cfg).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "(vnet3_cfg).name", + "location": "North Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet3_cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet3_cfg).subnetName", + "properties": { + "addressPrefix": "(vnet3_cfg).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "(vnet4_cfg).name", + "location": "North Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet4_cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet4_cfg).subnetName", + "properties": { + "addressPrefix": "(vnet4_cfg).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}_connection', variables('virtual_hub1_cfg').name, variables('vnet1_cfg').name)]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub1_cfg').name)]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnet1_cfg').name)]", + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub1_cfg').name))]" + ], + "properties": { + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vnet1_cfg).name" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": true, + "enableInternetSecurity": true + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}_connection', variables('virtual_hub1_cfg').name, variables('vnet2_cfg').name)]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub1_cfg').name)]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnet2_cfg').name)]", + "[resourceId('Microsoft.Network/virtualHubs/hubVirtualNetworkConnections', variables('virtual_hub1_cfg').name, format('{0}_connection', variables('vnet1_cfg').name))]" + ], + "properties": { + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vnet2_cfg).name" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": true, + "enableInternetSecurity": true + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}_connection', variables('virtual_hub2_cfg').name, variables('vnet3_cfg').name)]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub2_cfg').name)]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnet3_cfg').name)]", + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub2_cfg').name))]" + ], + "properties": { + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vnet3_cfg).name" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": true, + "enableInternetSecurity": true + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}_connection', variables('virtual_hub2_cfg').name, variables('vnet4_cfg').name)]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub2_cfg').name)]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnet4_cfg').name)]", + "[resourceId('Microsoft.Network/virtualHubs/hubVirtualNetworkConnections', variables('virtual_hub2_cfg').name, format('{0}_connection', variables('vnet3_cfg').name))]" + ], + "properties": { + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vnet4_cfg).name" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": true, + "enableInternetSecurity": true + } + }, + { + "type": "Microsoft.Network/vpnGateways", + "name": "[format('{0}_S2SvpnGW', variables('virtual_hub1_cfg').name)]", + "apiVersion": "2020-05-01", + "location": "West Europe", + "dependsOn": [ + "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name" + ], + "properties": { + "vpnGatewayScaleUnit": 1, + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name" + }, + "bgpSettings": { + "asn": 65515 + } + } + }, + { + "type": "Microsoft.Network/vpnGateways", + "name": "[format('{0}_S2SvpnGW', variables('virtual_hub2_cfg').name)]", + "apiVersion": "2020-05-01", + "location": "North Europe", + "dependsOn": [ + "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name" + ], + "properties": { + "vpnGatewayScaleUnit": 1, + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name" + }, + "bgpSettings": { + "asn": 65515 + } + } + }, + { + "type": "Microsoft.Network/expressRouteGateways", + "apiVersion": "2020-05-01", + "name": "[format('{0}_ERGW', variables('virtual_hub1_cfg').name)]", + "location": "West Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs/hubVirtualNetworkConnections', variables('virtual_hub1_cfg').name, format('{0}_connection', variables('vnet2_cfg').name))]" + ], + "properties": { + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name" + }, + "autoScaleConfiguration": { + "bounds": { + "min": 1 + } + } + } + }, + { + "type": "Microsoft.Network/expressRouteGateways", + "apiVersion": "2020-05-01", + "name": "[format('{0}_ERGW', variables('virtual_hub2_cfg').name)]", + "location": "North Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs/hubVirtualNetworkConnections', variables('virtual_hub2_cfg').name, format('{0}_connection', variables('vnet4_cfg').name))]" + ], + "properties": { + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name" + }, + "autoScaleConfiguration": { + "bounds": { + "min": 1 + } + } + } + }, + { + "type": "Microsoft.Network/vpnServerConfigurations", + "apiVersion": "2020-05-01", + "name": "[format('{0}_P2SvpnServerConfiguration', variables('virtual_hub1_cfg').name)]", + "location": "West Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/expressRouteGateways', format('{0}_ERGW', variables('virtual_hub1_cfg').name))]" + ], + "properties": { + "vpnProtocols": [ + "IkeV2", + "OpenVPN" + ], + "vpnAuthenticationTypes": [ + "Certificate" + ], + "vpnClientRootCertificates": [ + { + "name": "P2SRootCertHub1", + "publicCertData": "GEN-SELFSIGNED-CERT-CERDATA" + } + ] + } + }, + { + "type": "Microsoft.Network/vpnServerConfigurations", + "apiVersion": "2020-05-01", + "name": "[format('{0}_P2SvpnServerConfiguration', variables('virtual_hub2_cfg').name)]", + "location": "North Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/expressRouteGateways', format('{0}_ERGW', variables('virtual_hub2_cfg').name))]" + ], + "properties": { + "vpnProtocols": [ + "IkeV2", + "OpenVPN" + ], + "vpnAuthenticationTypes": [ + "Certificate" + ], + "vpnClientRootCertificates": [ + { + "name": "P2SRootCertHub2", + "publicCertData": "GEN-SELFSIGNED-CERT-CERDATA" + } + ] + } + }, + { + "type": "Microsoft.Network/p2sVpnGateways", + "apiVersion": "2020-05-01", + "name": "[format('{0}_P2Sgateway', variables('virtual_hub1_cfg').name)]", + "location": "West Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/vpnServerConfigurations', format('{0}_P2SvpnServerConfiguration', variables('virtual_hub1_cfg').name))]" + ], + "properties": { + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name" + }, + "vpnServerConfiguration": { + "id": "[resourceId('Microsoft.Network/vpnServerConfigurations', format('{0}_P2SvpnServerConfiguration', variables('virtual_hub1_cfg').name))]" + }, + "p2SConnectionConfigurations": [ + { + "name": "Hub1_P2SConnectionConfigDefault", + "properties": { + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/defaultRouteTable" + }, + "propagatedRouteTables": { + "labels": [ + "default" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/defaultRouteTable" + } + ] + } + }, + "vpnClientAddressPool": { + "addressPrefixes": [ + "(virtual_hub1_cfg).Hub1_P2SvpnClientAddressPoolPrefix" + ] + } + } + } + ], + "vpnGatewayScaleUnit": 1 + } + }, + { + "type": "Microsoft.Network/p2sVpnGateways", + "apiVersion": "2020-05-01", + "name": "[format('{0}_P2Sgateway', variables('virtual_hub2_cfg').name)]", + "location": "North Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/vpnServerConfigurations', format('{0}_P2SvpnServerConfiguration', variables('virtual_hub2_cfg').name))]" + ], + "properties": { + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name" + }, + "vpnServerConfiguration": { + "id": "[resourceId('Microsoft.Network/vpnServerConfigurations', format('{0}_P2SvpnServerConfiguration', variables('virtual_hub2_cfg').name))]" + }, + "p2SConnectionConfigurations": [ + { + "name": "Hub2_P2SConnectionConfigDefault", + "properties": { + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/defaultRouteTable" + }, + "propagatedRouteTables": { + "labels": [ + "default" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/defaultRouteTable" + } + ] + } + }, + "vpnClientAddressPool": { + "addressPrefixes": [ + "(virtual_hub2_cfg).Hub2_P2SvpnClientAddressPoolPrefix" + ] + } + } + } + ], + "vpnGatewayScaleUnit": 1 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1604 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1604 new file mode 100644 index 0000000..322b61b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1604 @@ -0,0 +1,738 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan-with-route-tables/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan-with-route-tables/azuredeploy.parameters.json" + ], + "timestamp": 1642962909591, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/virtual-wan-with-route-tables/azuredeploy.json", + "/quickstarts/microsoft.network/virtual-wan-with-route-tables/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1604", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/vpnserverconfigurations", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualhubs", + "microsoft.network/p2svpngateways", + "microsoft.network/expressroutegateways", + "microsoft.network/vpngateways", + "microsoft.network/virtualwans", + "microsoft.network/virtualhubs/hubvirtualnetworkconnections", + "microsoft.network/virtualhubs/hubroutetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1604", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vWANname": { + "type": "string", + "metadata": { + "description": "Azure Virtual WAN Name" + }, + "value": "vwan1" + }, + "hub1_location": { + "type": "string", + "metadata": { + "description": "Azure Region for the first Hub" + }, + "value": "West Europe" + }, + "hub2_location": { + "type": "string", + "metadata": { + "description": "Azure Region for the second Hub" + }, + "value": "North Europe" + }, + "Hub1_S2SvpnGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Site-to-Site (S2S) VPN Gateway in the first Hub" + } + }, + "Hub2_S2SvpnGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Site-to-Site (S2S) VPN Gateway in the second Hub" + } + }, + "Hub1_ExpressRouteGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Express Route Gateway in the first Hub" + } + }, + "Hub2_ExpressRouteGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Express Route Gateway in the second Hub" + } + }, + "Hub1_P2SvpnGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Point-to-Site (P2S) VPN Gateway in the first Hub" + } + }, + "Hub2_P2SvpnGatewayScaleUnit": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Scale Units for Point-to-Site (P2S) VPN Gateway in the second Hub" + } + }, + "Hub1_PublicCertificateDataForP2S": { + "type": "string", + "metadata": { + "description": "Sample Public Certificate content for Point-to-Site (P2S) authentication in the first Hub (please provide your own once deployment is completed) " + }, + "value": "GEN-SELFSIGNED-CERT-CERDATA" + }, + "Hub2_PublicCertificateDataForP2S": { + "type": "string", + "metadata": { + "description": "Sample Public Certificate content for Point-to-Site (P2S) authentication in the second Hub (please provide your own once deployment is completed) " + }, + "value": "GEN-SELFSIGNED-CERT-CERDATA" + } + }, + "variables": { + "vwan_cfg": { + "type": "Standard" + }, + "virtual_hub1_cfg": { + "name": "vhubvnet1", + "addressSpacePrefix": "192.168.0.0/24", + "Hub1_P2SvpnClientAddressPoolPrefix": "10.4.3.0/24" + }, + "virtual_hub2_cfg": { + "name": "vhubvnet2", + "addressSpacePrefix": "192.168.1.0/24", + "Hub2_P2SvpnClientAddressPoolPrefix": "10.5.3.0/24" + }, + "vnet1_cfg": { + "name": "VNET1", + "addressSpacePrefix": "10.1.0.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.1.0.0/24" + }, + "vnet2_cfg": { + "name": "VNET2", + "addressSpacePrefix": "10.1.1.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.1.1.0/24" + }, + "vnet3_cfg": { + "name": "VNET3", + "addressSpacePrefix": "10.2.0.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.2.0.0/24" + }, + "vnet4_cfg": { + "name": "VNET4", + "addressSpacePrefix": "10.2.1.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.2.1.0/24" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualWans", + "apiVersion": "2020-05-01", + "name": "vwan1", + "location": "West Europe", + "properties": { + "allowVnetToVnetTraffic": true, + "allowBranchToBranchTraffic": true, + "type": "(vwan_cfg).type" + } + }, + { + "type": "Microsoft.Network/virtualHubs", + "apiVersion": "2020-05-01", + "name": "(virtual_hub1_cfg).name", + "location": "West Europe", + "dependsOn": [ + "Microsoft.Network/virtualWans/vwan1" + ], + "properties": { + "addressPrefix": "(virtual_hub1_cfg).addressSpacePrefix", + "virtualWan": { + "id": "Microsoft.Network/virtualWans/vwan1" + } + } + }, + { + "type": "Microsoft.Network/virtualHubs", + "apiVersion": "2020-05-01", + "name": "(virtual_hub2_cfg).name", + "location": "North Europe", + "dependsOn": [ + "Microsoft.Network/virtualWans/vwan1" + ], + "properties": { + "addressPrefix": "(virtual_hub2_cfg).addressSpacePrefix", + "virtualWan": { + "id": "Microsoft.Network/virtualWans/vwan1" + } + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubRouteTables", + "apiVersion": "2020-05-01", + "name": "(virtual_hub1_cfg).name/defaultRouteTable", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub1_cfg').name)]", + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub1_cfg').name))]" + ], + "properties": { + "labels": [ + "default" + ] + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubRouteTables", + "apiVersion": "2020-05-01", + "name": "(virtual_hub1_cfg).name/noneRouteTable", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub1_cfg').name)]", + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub1_cfg').name))]" + ], + "properties": { + "labels": [ + "none" + ] + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubRouteTables", + "apiVersion": "2020-05-01", + "name": "(virtual_hub1_cfg).name/HUB1_RT_SHARED", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub1_cfg').name)]", + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub1_cfg').name))]" + ], + "properties": { + "labels": [ + "LBL_RT_SHARED" + ] + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubRouteTables", + "apiVersion": "2020-05-01", + "name": "(virtual_hub2_cfg).name/defaultRouteTable", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub2_cfg').name)]", + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub2_cfg').name))]" + ], + "properties": { + "labels": [ + "default" + ] + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubRouteTables", + "apiVersion": "2020-05-01", + "name": "(virtual_hub2_cfg).name/noneRouteTable", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub2_cfg').name)]", + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub2_cfg').name))]" + ], + "properties": { + "labels": [ + "none" + ] + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubRouteTables", + "apiVersion": "2020-05-01", + "name": "(virtual_hub2_cfg).name/HUB2_RT_SHARED", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub2_cfg').name)]", + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub2_cfg').name))]" + ], + "properties": { + "labels": [ + "LBL_RT_SHARED" + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "(vnet1_cfg).name", + "location": "West Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet1_cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet1_cfg).subnetName", + "properties": { + "addressPrefix": "(vnet1_cfg).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "(vnet2_cfg).name", + "location": "West Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet2_cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet2_cfg).subnetName", + "properties": { + "addressPrefix": "(vnet2_cfg).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "(vnet3_cfg).name", + "location": "North Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet3_cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet3_cfg).subnetName", + "properties": { + "addressPrefix": "(vnet3_cfg).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "(vnet4_cfg).name", + "location": "North Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet4_cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet4_cfg).subnetName", + "properties": { + "addressPrefix": "(vnet4_cfg).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}_connection', variables('virtual_hub1_cfg').name, variables('vnet1_cfg').name)]", + "dependsOn": [ + "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name", + "Microsoft.Network/virtualNetworks/(vnet1_cfg).name", + "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/defaultRouteTable", + "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/HUB1_RT_SHARED" + ], + "properties": { + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/defaultRouteTable" + }, + "propagatedRouteTables": { + "labels": [ + "default", + "LBL_RT_SHARED" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/defaultRouteTable" + }, + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/HUB1_RT_SHARED" + } + ] + } + }, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vnet1_cfg).name" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": true, + "enableInternetSecurity": true + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}_connection', variables('virtual_hub1_cfg').name, variables('vnet2_cfg').name)]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub1_cfg').name)]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnet2_cfg').name)]", + "[resourceId('Microsoft.Network/virtualHubs/hubVirtualNetworkConnections', variables('virtual_hub1_cfg').name, format('{0}_connection', variables('vnet1_cfg').name))]", + "[resourceId('Microsoft.Network/virtualHubs/hubRouteTables', variables('virtual_hub1_cfg').name, 'HUB1_RT_SHARED')]", + "[resourceId('Microsoft.Network/virtualHubs/hubRouteTables', variables('virtual_hub1_cfg').name, 'defaultRouteTable')]" + ], + "properties": { + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/HUB1_RT_SHARED" + }, + "propagatedRouteTables": { + "labels": [ + "default" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/defaultRouteTable" + } + ] + } + }, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vnet2_cfg).name" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": true, + "enableInternetSecurity": true + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}_connection', variables('virtual_hub2_cfg').name, variables('vnet3_cfg').name)]", + "dependsOn": [ + "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name", + "Microsoft.Network/virtualNetworks/(vnet3_cfg).name", + "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/HUB2_RT_SHARED", + "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/defaultRouteTable" + ], + "properties": { + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/HUB2_RT_SHARED" + }, + "propagatedRouteTables": { + "labels": [ + "default" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/defaultRouteTable" + } + ] + } + }, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vnet3_cfg).name" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": true, + "enableInternetSecurity": true + } + }, + { + "type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}_connection', variables('virtual_hub2_cfg').name, variables('vnet4_cfg').name)]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualHubs', variables('virtual_hub2_cfg').name)]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnet4_cfg').name)]", + "[resourceId('Microsoft.Network/virtualHubs/hubVirtualNetworkConnections', variables('virtual_hub2_cfg').name, format('{0}_connection', variables('vnet3_cfg').name))]", + "[resourceId('Microsoft.Network/virtualHubs/hubRouteTables', variables('virtual_hub2_cfg').name, 'HUB2_RT_SHARED')]", + "[resourceId('Microsoft.Network/virtualHubs/hubRouteTables', variables('virtual_hub2_cfg').name, 'defaultRouteTable')]" + ], + "properties": { + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/HUB2_RT_SHARED" + }, + "propagatedRouteTables": { + "labels": [ + "default" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/defaultRouteTable" + } + ] + } + }, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/(vnet4_cfg).name" + }, + "allowHubToRemoteVnetTransit": true, + "allowRemoteVnetToUseHubVnetGateways": true, + "enableInternetSecurity": true + } + }, + { + "type": "Microsoft.Network/vpnGateways", + "name": "[format('{0}_S2SvpnGW', variables('virtual_hub1_cfg').name)]", + "apiVersion": "2020-05-01", + "location": "West Europe", + "dependsOn": [ + "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name" + ], + "properties": { + "vpnGatewayScaleUnit": 1, + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name" + }, + "bgpSettings": { + "asn": 65515 + } + } + }, + { + "type": "Microsoft.Network/vpnGateways", + "name": "[format('{0}_S2SvpnGW', variables('virtual_hub2_cfg').name)]", + "apiVersion": "2020-05-01", + "location": "North Europe", + "dependsOn": [ + "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name" + ], + "properties": { + "vpnGatewayScaleUnit": 1, + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name" + }, + "bgpSettings": { + "asn": 65515 + } + } + }, + { + "type": "Microsoft.Network/expressRouteGateways", + "apiVersion": "2020-05-01", + "name": "[format('{0}_ERGW', variables('virtual_hub1_cfg').name)]", + "location": "West Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub1_cfg').name))]" + ], + "properties": { + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name" + }, + "autoScaleConfiguration": { + "bounds": { + "min": 1 + } + } + } + }, + { + "type": "Microsoft.Network/expressRouteGateways", + "apiVersion": "2020-05-01", + "name": "[format('{0}_ERGW', variables('virtual_hub2_cfg').name)]", + "location": "North Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/vpnGateways', format('{0}_S2SvpnGW', variables('virtual_hub2_cfg').name))]" + ], + "properties": { + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name" + }, + "autoScaleConfiguration": { + "bounds": { + "min": 1 + } + } + } + }, + { + "type": "Microsoft.Network/vpnServerConfigurations", + "apiVersion": "2020-05-01", + "name": "[format('{0}_P2SvpnServerConfiguration', variables('virtual_hub1_cfg').name)]", + "location": "West Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/expressRouteGateways', format('{0}_ERGW', variables('virtual_hub1_cfg').name))]" + ], + "properties": { + "vpnProtocols": [ + "IkeV2", + "OpenVPN" + ], + "vpnAuthenticationTypes": [ + "Certificate" + ], + "vpnClientRootCertificates": [ + { + "name": "P2SRootCertHub1", + "publicCertData": "GEN-SELFSIGNED-CERT-CERDATA" + } + ] + } + }, + { + "type": "Microsoft.Network/vpnServerConfigurations", + "apiVersion": "2020-05-01", + "name": "[format('{0}_P2SvpnServerConfiguration', variables('virtual_hub2_cfg').name)]", + "location": "North Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/expressRouteGateways', format('{0}_ERGW', variables('virtual_hub2_cfg').name))]" + ], + "properties": { + "vpnProtocols": [ + "IkeV2", + "OpenVPN" + ], + "vpnAuthenticationTypes": [ + "Certificate" + ], + "vpnClientRootCertificates": [ + { + "name": "P2SRootCertHub2", + "publicCertData": "GEN-SELFSIGNED-CERT-CERDATA" + } + ] + } + }, + { + "type": "Microsoft.Network/p2sVpnGateways", + "apiVersion": "2020-05-01", + "name": "[format('{0}_P2Sgateway', variables('virtual_hub1_cfg').name)]", + "location": "West Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/vpnServerConfigurations', format('{0}_P2SvpnServerConfiguration', variables('virtual_hub1_cfg').name))]", + "[resourceId('Microsoft.Network/virtualHubs/hubRouteTables', variables('virtual_hub1_cfg').name, 'HUB1_RT_SHARED')]", + "[resourceId('Microsoft.Network/virtualHubs/hubRouteTables', variables('virtual_hub1_cfg').name, 'defaultRouteTable')]" + ], + "properties": { + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub1_cfg).name" + }, + "vpnServerConfiguration": { + "id": "[resourceId('Microsoft.Network/vpnServerConfigurations', format('{0}_P2SvpnServerConfiguration', variables('virtual_hub1_cfg').name))]" + }, + "p2SConnectionConfigurations": [ + { + "name": "Hub1_P2SConnectionConfigDefault", + "properties": { + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/defaultRouteTable" + }, + "propagatedRouteTables": { + "labels": [ + "LBL_RT_SHARED", + "default" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/defaultRouteTable" + }, + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub1_cfg).name/HUB1_RT_SHARED" + } + ] + } + }, + "vpnClientAddressPool": { + "addressPrefixes": [ + "(virtual_hub1_cfg).Hub1_P2SvpnClientAddressPoolPrefix" + ] + } + } + } + ], + "vpnGatewayScaleUnit": 1 + } + }, + { + "type": "Microsoft.Network/p2sVpnGateways", + "apiVersion": "2020-05-01", + "name": "[format('{0}_P2Sgateway', variables('virtual_hub2_cfg').name)]", + "location": "North Europe", + "dependsOn": [ + "[resourceId('Microsoft.Network/vpnServerConfigurations', format('{0}_P2SvpnServerConfiguration', variables('virtual_hub2_cfg').name))]", + "[resourceId('Microsoft.Network/virtualHubs/hubRouteTables', variables('virtual_hub2_cfg').name, 'HUB2_RT_SHARED')]", + "[resourceId('Microsoft.Network/virtualHubs/hubRouteTables', variables('virtual_hub2_cfg').name, 'defaultRouteTable')]" + ], + "properties": { + "virtualHub": { + "id": "Microsoft.Network/virtualHubs/(virtual_hub2_cfg).name" + }, + "vpnServerConfiguration": { + "id": "[resourceId('Microsoft.Network/vpnServerConfigurations', format('{0}_P2SvpnServerConfiguration', variables('virtual_hub2_cfg').name))]" + }, + "p2SConnectionConfigurations": [ + { + "name": "Hub2_P2SConnectionConfigDefault", + "properties": { + "routingConfiguration": { + "associatedRouteTable": { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/defaultRouteTable" + }, + "propagatedRouteTables": { + "labels": [ + "LBL_RT_SHARED", + "default" + ], + "ids": [ + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/defaultRouteTable" + }, + { + "id": "Microsoft.Network/virtualHubs/hubRouteTables/(virtual_hub2_cfg).name/HUB2_RT_SHARED" + } + ] + } + }, + "vpnClientAddressPool": { + "addressPrefixes": [ + "(virtual_hub2_cfg).Hub2_P2SvpnClientAddressPoolPrefix" + ] + } + } + } + ], + "vpnGatewayScaleUnit": 1 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1606 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1606 new file mode 100644 index 0000000..deee4de --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1606 @@ -0,0 +1,207 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vnet-create-with-diagnostic-logs/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-create-with-diagnostic-logs/azuredeploy.parameters.json" + ], + "timestamp": 1642962909624, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-create-with-diagnostic-logs/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-create-with-diagnostic-logs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1606", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1606", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "5948937628789130063" + } + }, + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Virtual network name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Virtual network location" + } + }, + "vnetAddressSpace": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "Array containing virtual network address space(s)" + } + }, + "dnsServers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Array containing DNS Servers" + } + }, + "subnets": { + "type": "array", + "defaultValue": [ + { + "name": "subnet1", + "addressPrefix": "10.0.1.0/24", + "privateEndpointNetworkPolicies": "disabled", + "privateLinkServiceNetworkPolicies": "disabled" + } + ], + "metadata": { + "description": "Array containing subnets to create within the Virtual Network. For properties format refer to https://docs.microsoft.com/en-us/azure/templates/microsoft.network/virtualnetworks/subnets?tabs=bicep#subnetpropertiesformat" + } + }, + "enableDeleteLock": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable delete lock" + } + }, + "enableDiagnostics": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable diagnostic logs" + } + }, + "diagnosticStorageAccountId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Storage account resource id. Only required if enableDiagnostics is set to true." + } + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Log analytics workspace resource id. Only required if enableDiagnostics is set to true." + } + } + }, + "functions": [], + "variables": { + "lockName": "[format('{0}-lck', parameters('vnetName'))]", + "diagnosticsName": "[format('{0}-dgs', parameters('vnetName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "properties": { + "copy": [ + { + "name": "subnets", + "count": 21, + "input": { + "name": "subnets)[copyIndex(subnets", + "properties": { + "addressPrefix": "subnets)[copyIndex(subnets", + "delegations": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'delegation'), createArray(createObject('name', format('{0}-delegation', parameters('subnets')[copyIndex('subnets')].name), 'properties', createObject('serviceName', parameters('subnets')[copyIndex('subnets')].delegation))), createArray())]", + "natGateway": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'natGatewayId'), createObject('id', parameters('subnets')[copyIndex('subnets')].natGatewayId), null())]", + "networkSecurityGroup": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'nsgId'), createObject('id', parameters('subnets')[copyIndex('subnets')].nsgId), null())]", + "routeTable": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'udrId'), createObject('id', parameters('subnets')[copyIndex('subnets')].udrId), null())]", + "privateEndpointNetworkPolicies": "subnets)[copyIndex(subnets", + "privateLinkServiceNetworkPolicies": "subnets)[copyIndex(subnets", + "serviceEndpoints": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'serviceEndpoints'), parameters('subnets')[copyIndex('subnets')].serviceEndpoints, null())]" + } + } + } + ], + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "dhcpOptions": "[if(empty(parameters('dnsServers')), null(), createObject('dnsServers', parameters('dnsServers')))]" + } + }, + { + "condition": false, + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.Network/virtualNetworks/{0}', parameters('vnetName'))]", + "name": "[format('{0}-dgs', parameters('vnetName'))]", + "properties": { + "workspaceId": "[if(empty(parameters('logAnalyticsWorkspaceId')), null(), parameters('logAnalyticsWorkspaceId'))]", + "storageAccountId": "[if(empty(parameters('diagnosticStorageAccountId')), null(), parameters('diagnosticStorageAccountId'))]", + "logs": [ + { + "category": "VMProtectionAlerts", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[uniqueString(resourceGroup().id)]" + ] + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2017-04-01", + "scope": "[format('Microsoft.Network/virtualNetworks/{0}', parameters('vnetName'))]", + "name": "[format('{0}-lck', parameters('vnetName'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[uniqueString(resourceGroup().id)]" + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('vnetName')]" + }, + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1607 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1607 new file mode 100644 index 0000000..c2e8cc4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1607 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vnet-nsg-for-redis/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/vnet-nsg-for-redis/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909632, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-nsg-for-redis/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/vnet-nsg-for-redis/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1607", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1607", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location for the new Virtual Network." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Network." + }, + "value": "GEN-UNIQUE" + }, + "virtualNetworkPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The address space prefix for the virtual network." + } + }, + "virtualNetworkSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the subnet." + }, + "value": "GEN-UNIQUE" + }, + "virtualNetworkSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The address space prefix for the subnet." + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVirtualNetworkLocation": { + "type": "string", + "value": "[parameters('location')]" + }, + "existingVirtualNetworkResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingVirtualNetworkName": { + "type": "string", + "value": "[parameters('virtualNetworkName')]" + }, + "existingSubnetName": { + "type": "string", + "value": "[parameters('virtualNetworkSubnetName')]" + }, + "existingSubnetPrefix": { + "type": "string", + "value": "[parameters('virtualNetworkSubnetPrefix')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1608 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1608 new file mode 100644 index 0000000..295e886 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1608 @@ -0,0 +1,295 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vnet-nsg-for-redis/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-nsg-for-redis/azuredeploy.parameters.json" + ], + "timestamp": 1642962909641, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-nsg-for-redis/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-nsg-for-redis/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1608", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1608", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the existing Virtual Network and new Network Security Group." + }, + "value": "GET-PREREQ-existingVirtualNetworkLocation" + }, + "existingVirtualNetworkResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The resource group of the existing Virtual Network." + }, + "value": "GET-PREREQ-existingVirtualNetworkResourceGroupName" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the existing Virtual Network." + }, + "value": "GET-PREREQ-existingVirtualNetworkName" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the existing subnet." + }, + "value": "GET-PREREQ-existingSubnetName" + }, + "newNsgName": { + "type": "string", + "metadata": { + "description": "The name of the new Network Security Group." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "subnetId": "GET-PREREQ-existingVirtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingSubnetName" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE", + "location": "GET-PREREQ-existingVirtualNetworkLocation", + "properties": { + "securityRules": [ + { + "name": "Allow_Outbound_Storage_PKI", + "properties": { + "description": "Redis dependencies on Azure Storage/PKI (Internet)", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "80", + "443" + ], + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "access": "Allow", + "priority": 200, + "direction": "Outbound" + } + }, + { + "name": "Allow_Outbound_DNS", + "properties": { + "description": "Redis dependencies on DNS (Internet/VNet)", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "53", + "sourceAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Outbound" + } + }, + { + "name": "Allow_Outbound_RedisPortsWithinSubnet", + "properties": { + "description": "Internal communications for Redis", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "6379", + "6380", + "8443", + "10221-10231", + "20226", + "13000-13999", + "15000-15999" + ], + "sourceAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "destinationAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "access": "Allow", + "priority": 202, + "direction": "Outbound" + } + }, + { + "name": "Allow_Inbound_ClientEndpoints", + "properties": { + "description": "Client communication to Redis, Azure load balancing", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "6379", + "6380" + ], + "sourceAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "destinationAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "Allow_Inbound_ClientCommunicationWithinVNET", + "properties": { + "description": "Client communication to Redis, Azure load balancing", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "6379", + "6380", + "13000-13999", + "15000-15999" + ], + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "Allow_Inbound_LoadBalancingWithinVNET", + "properties": { + "description": "Client communication to Redis, Azure load balancing", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "6379", + "6380", + "13000-13999", + "15000-15999" + ], + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "access": "Allow", + "priority": 202, + "direction": "Inbound" + } + }, + { + "name": "Allow_Inbound_InternalRedisCommunication", + "properties": { + "description": "Internal communications for Redis", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRanges": [ + "8443", + "10221-10231", + "20226" + ], + "sourceAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "destinationAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + }, + { + "name": "Allow_Inbound_LoadBalancerToRedisInternalAddresses", + "properties": { + "description": "Internal communications for Redis", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10221-10231", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "access": "Allow", + "priority": 204, + "direction": "Inbound" + } + }, + { + "name": "Allow_Inbound_LoadBalancing", + "properties": { + "description": "Azure load balancing", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRanges": [ + "8500", + "16001" + ], + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]", + "access": "Allow", + "priority": 205, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Resources/deployments", + "name": "associateNsg", + "resourceGroup": "GET-PREREQ-existingVirtualNetworkResourceGroupName", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "GET-PREREQ-existingVirtualNetworkName/GET-PREREQ-existingSubnetName", + "location": "GET-PREREQ-existingVirtualNetworkLocation", + "properties": { + "addressPrefix": "[reference(variables('subnetId'), '2020-05-01').addressPrefix]", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "outputs": { + "existingVirtualNetworkName": { + "type": "string", + "value": "[parameters('existingVirtualNetworkName')]" + }, + "existingSubnetName": { + "type": "string", + "value": "[parameters('existingSubnetName')]" + }, + "subnetAddressPrefix": { + "type": "string", + "value": "[reference(variables('subnetId'), '2018-04-01').addressPrefix]" + }, + "newNsgName": { + "type": "string", + "value": "[parameters('newNsgName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1609 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1609 new file mode 100644 index 0000000..25a7539 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1609 @@ -0,0 +1,349 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962909653, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1609", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1609", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location1": { + "type": "string", + "metadata": { + "description": "Location where first VNET, Gateway, PublicIP and Connection will be deployed." + }, + "value": "North Europe" + }, + "location2": { + "type": "string", + "metadata": { + "description": "Location where second VNET, Gateway, PublicIP and Connection will be deployed." + }, + "value": "East US" + }, + "virtualNetworkName1": { + "type": "string", + "metadata": { + "description": "Name of the first VNET." + }, + "value": "Vnet1" + }, + "addressPrefix1": { + "type": "string", + "metadata": { + "description": "Address space for the first VNET." + }, + "value": "192.168.100.0/24" + }, + "subnet1Name1": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "description": "Name of the first subnet in the first VNET. Please note, an additional subnet called GatewaySubnet will be created where the VirtualNetworkGateway will be deployed. The name of that subnet must not be changed from GatewaySubnet." + }, + "value": "WebTier1" + }, + "subnet1Prefix1": { + "type": "string", + "metadata": { + "description": "The prefix for the first subnet in the first VNET." + }, + "value": "192.168.100.0/28" + }, + "gatewaySubnetPrefix1": { + "type": "string", + "metadata": { + "description": "The prefix for the GatewaySubnet where the first VirtualNetworkGateway will be deployed. This must be at least /29." + }, + "value": "192.168.100.16/28" + }, + "gatewayPublicIPName1": { + "type": "string", + "metadata": { + "description": "The name of the PublicIP attached to the first VirtualNetworkGateway." + }, + "value": "GEN-UNIQUE" + }, + "gatewayName1": { + "type": "string", + "metadata": { + "description": "The name of the first VirtualNetworkGateway." + }, + "value": "Vnet1Gw" + }, + "connectionName1": { + "type": "string", + "metadata": { + "description": "The name of the first connection, connecting the first VirtualNetworkGateway to the second VirtualNetworkGateway." + }, + "value": "Vnet1Connection" + }, + "virtualNetworkName2": { + "type": "string", + "metadata": { + "description": "Name of the second VNET." + }, + "value": "Vnet2" + }, + "addressPrefix2": { + "type": "string", + "metadata": { + "description": "Address space for the second VNET." + }, + "value": "192.168.101.0/24" + }, + "subnet1Name2": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "description": "Name of the first subnet in the second VNET. Please note, an additional subnet called GatewaySubnet will be created where the VirtualNetworkGateway will be deployed. The name of that subnet must not be changed from GatewaySubnet." + }, + "value": "WebTier2" + }, + "subnet1Prefix2": { + "type": "string", + "metadata": { + "description": "The prefix for the first subnet in the second VNET." + }, + "value": "192.168.101.0/28" + }, + "gatewaySubnetPrefix2": { + "type": "string", + "metadata": { + "description": "The prefix for the GatewaySubnet where the second VirtualNetworkGateway will be deployed. This must be at least /29." + }, + "value": "192.168.101.16/28" + }, + "gatewayPublicIPName2": { + "type": "string", + "metadata": { + "description": "The name of the PublicIP attached to the second VirtualNetworkGateway." + }, + "value": "GEN-UNIQUE" + }, + "gatewayName2": { + "type": "string", + "metadata": { + "description": "The name of the second VirtualNetworkGateway." + }, + "value": "Vnet2Gw" + }, + "connectionName2": { + "type": "string", + "metadata": { + "description": "The name of the second connection, connecting the second VirtualNetworkGateway to the first VirtualNetworkGateway." + }, + "value": "Vnet2Connection" + }, + "sharedKey": { + "type": "string", + "metadata": { + "description": "The shared key used to establish connection between the two VirtualNetworkGateways." + }, + "value": "secretKey" + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "Vnet1", + "location": "North Europe", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.100.0/24" + ] + }, + "subnets": [ + { + "name": "WebTier1", + "properties": { + "addressPrefix": "192.168.100.0/28" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "192.168.100.16/28" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "Vnet2", + "location": "East US", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.101.0/24" + ] + }, + "subnets": [ + { + "name": "WebTier2", + "properties": { + "addressPrefix": "192.168.101.0/28" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "192.168.101.16/28" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "North Europe", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "East US", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "Vnet1Gw", + "location": "North Europe", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE", + "Microsoft.Network/virtualNetworks//Vnet1" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Vnet1/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + } + }, + "name": "vnetGatewayConfig1" + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": false + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "Vnet2Gw", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE", + "Microsoft.Network/virtualNetworks//Vnet2" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Vnet2/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + } + }, + "name": "vnetGatewayConfig2" + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": false + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/connections", + "name": "Vnet1Connection", + "location": "North Europe", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways//Vnet1Gw", + "Microsoft.Network/virtualNetworkGateways//Vnet2Gw" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/Vnet1Gw" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/Vnet2Gw" + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "secretKey" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/connections", + "name": "Vnet2Connection", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways//Vnet1Gw", + "Microsoft.Network/virtualNetworkGateways//Vnet2Gw" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/Vnet2Gw" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/Vnet1Gw" + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "secretKey" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT161 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT161 new file mode 100644 index 0000000..8879430 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT161 @@ -0,0 +1,186 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/clusternode.json" + ], + "timestamp": 1642962888972, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/clusternode.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT161", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT161", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Datacenter Region Location" + } + }, + "sshKeyPath": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "SSH Public Key Path" + } + }, + "sshPublicKey": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "SSH Public Key" + } + }, + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Admin Username" + } + }, + "dataDiskSize": { + "type": "int", + "metadata": { + "description": "Size of Data Disk" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "VM Size" + } + }, + "hostname": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "VM Hostname" + } + }, + "role": { + "type": "string", + "metadata": { + "description": "VM Role for tag" + } + }, + "vmStorageType": { + "type": "string", + "metadata": { + "description": "VM Storage Type" + } + }, + "diagStorageAccount": { + "type": "string", + "metadata": { + "description": "Diagnostics Storage Account" + } + }, + "imageReference": { + "type": "object", + "metadata": { + "description": "Image Reference" + } + }, + "redHatTags": { + "type": "object", + "metadata": { + "description": "Red Hat Tags" + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "hostName-dataDisk", + "diskSizeGB": "dataDiskSize", + "lun": 0, + "managedDisk": { + "storageAccountType": "vmStorageType" + }, + "createOption": "Empty" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "hostname", + "location": "location", + "apiVersion": "2021-07-01", + "tags": { + "Role": "role", + "app": "redHatTags", + "version": "redHatTags" + }, + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "hostname", + "adminUsername": "adminUsername", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "sshKeyPath", + "keyData": "sshPublicKey" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": { + "name": "hostName-osdisk", + "managedDisk": { + "storageAccountType": "vmStorageType" + }, + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 256, + "osType": "Linux" + }, + "dataDisks": "[if(equals(parameters('hostName'), 'bastionNode'), json('null'), variables('dataDisks'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/hostname-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('diagStorageAccount')), '2021-06-01').primaryEndpoints['blob']]" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1610 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1610 new file mode 100644 index 0000000..04572bb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1610 @@ -0,0 +1,294 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet-bgp/azuredeploy.parameters.json" + ], + "timestamp": 1642962909664, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet-bgp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1610", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1610", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "1418584031951125500" + } + }, + "parameters": { + "sharedKey": { + "type": "secureString", + "metadata": { + "description": "The shared key used to establish connection between the two vNet Gateways." + }, + "value": "GEN-UNIQUE" + }, + "gatewaySku": { + "type": "string", + "defaultValue": "VpnGw1", + "allowedValues": [ + "Standard", + "HighPerformance", + "VpnGw1", + "VpnGw2", + "VpnGw3" + ], + "metadata": { + "description": "The SKU for the VPN Gateway. Cannot be Basic SKU." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the resources" + } + } + }, + "functions": [], + "variables": { + "vnet1cfg": { + "name": "[format('vNet1-{0}', parameters('location'))]", + "addressSpacePrefix": "10.0.0.0/23", + "subnetName": "subnet1", + "subnetPrefix": "10.0.0.0/24", + "gatewayName": "vNet1-Gateway", + "gatewaySubnetPrefix": "10.0.1.224/27", + "gatewayPublicIPName": "[format('gw1pip{0}', uniqueString(resourceGroup().id))]", + "connectionName": "vNet1-to-vNet2", + "asn": 65010 + }, + "vnet2cfg": { + "name": "[format('vnet2-{0}', parameters('location'))]", + "addressSpacePrefix": "10.0.2.0/23", + "subnetName": "subnet1", + "subnetPrefix": "10.0.2.0/24", + "gatewayName": "vnet2-Gateway", + "gatewaySubnetPrefix": "10.0.3.224/27", + "gatewayPublicIPName": "[format('gw2pip{0}', uniqueString(resourceGroup().id))]", + "connectionName": "vnet2-to-vnet1", + "asn": 65050 + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "(vnet1cfg).name", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet1cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet1cfg).subnetName", + "properties": { + "addressPrefix": "(vnet1cfg).subnetPrefix" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "(vnet1cfg).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "(vnet2cfg).name", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet2cfg).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet2cfg).subnetName", + "properties": { + "addressPrefix": "(vnet2cfg).subnetPrefix" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "(vnet2cfg).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "(vnet1cfg).gatewayPublicIPName", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "(vnet2cfg).gatewayPublicIPName", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-06-01", + "name": "(vnet1cfg).gatewayName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "vnet1GatewayConfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vnet1cfg).name/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vnet1cfg).gatewayPublicIPName" + } + } + } + ], + "gatewayType": "Vpn", + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1" + }, + "vpnType": "RouteBased", + "enableBgp": true, + "bgpSettings": { + "asn": "(vnet1cfg).asn" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/(vnet1cfg).gatewayPublicIPName", + "Microsoft.Network/virtualNetworks/(vnet1cfg).name" + ] + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-05-01", + "name": "(vnet2cfg).gatewayName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "vNet2GatewayConfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vnet2cfg).name/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vnet2cfg).gatewayPublicIPName" + } + } + } + ], + "gatewayType": "Vpn", + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1" + }, + "vpnType": "RouteBased", + "enableBgp": true, + "bgpSettings": { + "asn": "(vnet2cfg).asn" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/(vnet2cfg).gatewayPublicIPName", + "Microsoft.Network/virtualNetworks/(vnet2cfg).name" + ] + }, + { + "type": "Microsoft.Network/connections", + "apiVersion": "2020-05-01", + "name": "(vnet1cfg).connectionName", + "location": "[resourceGroup().location]", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vnet1cfg).gatewayName", + "properties": {} + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vnet2cfg).gatewayName", + "properties": {} + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "GEN-UNIQUE", + "enableBgp": true + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/(vnet1cfg).gatewayName", + "Microsoft.Network/virtualNetworkGateways/(vnet2cfg).gatewayName" + ] + }, + { + "type": "Microsoft.Network/connections", + "apiVersion": "2020-05-01", + "name": "(vnet2cfg).connectionName", + "location": "[resourceGroup().location]", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vnet2cfg).gatewayName", + "properties": {} + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vnet1cfg).gatewayName", + "properties": {} + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "GEN-UNIQUE", + "enableBgp": true + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/(vnet1cfg).gatewayName", + "Microsoft.Network/virtualNetworkGateways/(vnet2cfg).gatewayName" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1611 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1611 new file mode 100644 index 0000000..5f32da1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1611 @@ -0,0 +1,165 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet-peering/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet-peering/azuredeploy.parameters.json" + ], + "timestamp": 1642962909673, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-to-vnet-peering/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-to-vnet-peering/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1611", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworks/virtualnetworkpeerings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1611", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "5693428123113872453" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the resources" + } + }, + "vnet1Name": { + "type": "string", + "defaultValue": "vNet1", + "metadata": { + "description": "Name for vNet 1" + } + }, + "vnet2Name": { + "type": "string", + "defaultValue": "vNet2", + "metadata": { + "description": "Name for vNet 2" + } + }, + "vNet1Name": { + "value": "vNet1peeringtest" + }, + "vNet2Name": { + "value": "vNet2peeringtest" + } + }, + "functions": [], + "variables": { + "vnet1Config": { + "addressSpacePrefix": "10.0.0.0/24", + "subnetName": "subnet1", + "subnetPrefix": "10.0.0.0/24" + }, + "vnet2Config": { + "addressSpacePrefix": "192.168.0.0/24", + "subnetName": "subnet1", + "subnetPrefix": "192.168.0.0/24" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "vNet1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet1Config).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet1Config).subnetName", + "properties": { + "addressPrefix": "(vnet1Config).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}', parameters('vnet1Name'), format('{0}-{1}', parameters('vnet1Name'), parameters('vnet2Name')))]", + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": false, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/vNet2" + } + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vNet1", + "Microsoft.Network/virtualNetworks/vNet2" + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "vNet2", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vnet2Config).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vnet2Config).subnetName", + "properties": { + "addressPrefix": "(vnet2Config).subnetPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2020-05-01", + "name": "[format('{0}/{1}', parameters('vnet2Name'), format('{0}-{1}', parameters('vnet2Name'), parameters('vnet1Name')))]", + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": false, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/vNet1" + } + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vNet1", + "Microsoft.Network/virtualNetworks/vNet2" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1612 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1612 new file mode 100644 index 0000000..8ed9ff1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1612 @@ -0,0 +1,413 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vnet-transitive-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-transitive-bgp/azuredeploy.parameters.json" + ], + "timestamp": 1642962909682, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-transitive-bgp/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-transitive-bgp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1612", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1612", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sharedKey": { + "type": "securestring", + "metadata": { + "description": "The shared key used to establish connection between the two vNet Gateways." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location of the resources" + }, + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "vNet1": { + "name": "vNet1-[resourceGroup().location]", + "addressSpacePrefix": "10.0.0.0/23", + "subnetName": "subnet1", + "subnetPrefix": "10.0.0.0/24", + "gatewayName": "vNet1-Gateway", + "gatewaySubnetPrefix": "10.0.1.224/27", + "gatewayPublicIPName": "[concat('gw1pip', uniqueString(resourceGroup().id))]", + "connectionName": "vNet1-to-vNet2", + "asn": 65010 + }, + "vNet2": { + "name": "vNet2-[resourceGroup().location]", + "addressSpacePrefix": "10.0.2.0/23", + "subnetName": "subnet1", + "subnetPrefix": "10.0.2.0/24", + "gatewayName": "vNet2-Gateway", + "gatewaySubnetPrefix": "10.0.3.224/27", + "gatewayPublicIPName": "[concat('gw2pip', uniqueString(resourceGroup().id))]", + "connection1Name": "vNet2-to-vNet1", + "connection2Name": "vNet2-to-vNet3", + "asn": 65020 + }, + "vNet3": { + "name": "vNet3-[resourceGroup().location]", + "addressSpacePrefix": "10.0.4.0/23", + "subnetName": "subnet1", + "subnetPrefix": "10.0.4.0/24", + "gatewayName": "vNet3-Gateway", + "gatewaySubnetPrefix": "10.0.5.224/27", + "gatewayPublicIPName": "[concat('gw3pip', uniqueString(resourceGroup().id))]", + "connectionName": "vNet3-to-vNet2", + "asn": 65030 + }, + "gateway1SubnetRef": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/GatewaySubnet", + "gateway2SubnetRef": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/GatewaySubnet", + "gateway3SubnetRef": "Microsoft.Network/virtualNetworks/subnets/(vNet3).name/GatewaySubnet", + "gatewaySku": "Standard" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet1).name", + "location": "[resourceGroup().location]", + "comments": "This is the first vNet", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet1).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet1).subnetName", + "properties": { + "addressPrefix": "(vNet1).subnetPrefix" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "(vNet1).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet2).name", + "location": "[resourceGroup().location]", + "comments": "This is the second vNet", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet2).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet2).subnetName", + "properties": { + "addressPrefix": "(vNet2).subnetPrefix" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "(vNet2).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "(vNet3).name", + "location": "[resourceGroup().location]", + "comments": "This is the third vNet", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(vNet3).addressSpacePrefix" + ] + }, + "subnets": [ + { + "name": "(vNet3).subnetName", + "properties": { + "addressPrefix": "(vNet3).subnetPrefix" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "(vNet3).gatewaySubnetPrefix" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet1).gatewayPublicIPName", + "location": "[resourceGroup().location]", + "comments": "This is the public IP for vNet Gateway 1", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet2).gatewayPublicIPName", + "location": "[resourceGroup().location]", + "comments": "This is the public IP for vNet Gateway 2", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "(vNet3).gatewayPublicIPName", + "location": "[resourceGroup().location]", + "comments": "This is the public IP for vNet Gateway 3", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "(vNet1).gatewayName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//(vNet1).gatewayPublicIPName", + "Microsoft.Network/virtualNetworks//(vNet1).name" + ], + "comments": "This is the vNet Gateway for vNet 1", + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet1).name/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet1).gatewayPublicIPName" + } + }, + "name": "vNet1GatewayConfig" + } + ], + "gatewayType": "Vpn", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "vpnType": "RouteBased", + "enableBgp": true, + "bgpSettings": { + "asn": "(vNet1).asn" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "(vNet2).gatewayName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//(vNet2).gatewayPublicIPName", + "Microsoft.Network/virtualNetworks//(vNet2).name" + ], + "comments": "This is the vNet Gateway for vNet 2", + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet2).name/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet2).gatewayPublicIPName" + } + }, + "name": "vNet2GatewayConfig" + } + ], + "gatewayType": "Vpn", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "vpnType": "RouteBased", + "enableBgp": true, + "bgpSettings": { + "asn": "(vNet2).asn" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "(vNet3).gatewayName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//(vNet3).gatewayPublicIPName", + "Microsoft.Network/virtualNetworks//(vNet3).name" + ], + "comments": "This is the vNet Gateway for vNet 3", + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(vNet3).name/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(vNet3).gatewayPublicIPName" + } + }, + "name": "vNet3GatewayConfig" + } + ], + "gatewayType": "Vpn", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "vpnType": "RouteBased", + "enableBgp": true, + "bgpSettings": { + "asn": "(vNet3).asn" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/connections", + "name": "(vNet1).connectionName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways//(vNet1).gatewayName", + "Microsoft.Network/virtualNetworkGateways//(vNet2).gatewayName" + ], + "comments": "This is the VPN connection from Gateway 1 to Gateway 2", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet1).gatewayName" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet2).gatewayName" + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "GEN-UNIQUE", + "enableBGP": true + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/connections", + "name": "(vNet2).connection1Name", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways//(vNet1).gatewayName", + "Microsoft.Network/virtualNetworkGateways//(vNet2).gatewayName" + ], + "comments": "This is the VPN connection from Gateway 2 to Gateway 1", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet2).gatewayName" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet1).gatewayName" + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "GEN-UNIQUE", + "enableBGP": true + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/connections", + "name": "(vNet2).connection2Name", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways//(vNet2).gatewayName", + "Microsoft.Network/virtualNetworkGateways//(vNet3).gatewayName" + ], + "comments": "This is the VPN connection from Gateway 2 to Gateway 3", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet2).gatewayName" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet3).gatewayName" + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "GEN-UNIQUE", + "enableBGP": true + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/connections", + "name": "(vNet3).connectionName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways//(vNet2).gatewayName", + "Microsoft.Network/virtualNetworkGateways//(vNet3).gatewayName" + ], + "comments": "This is the VPN connection from Gateway 3 to Gateway 2", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet3).gatewayName" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/(vNet2).gatewayName" + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "GEN-UNIQUE", + "enableBGP": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1613 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1613 new file mode 100644 index 0000000..b455dc2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1613 @@ -0,0 +1,123 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vnet-two-subnets/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-two-subnets/azuredeploy.parameters.json" + ], + "timestamp": 1642962909698, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vnet-two-subnets/azuredeploy.json", + "/quickstarts/microsoft.network/vnet-two-subnets/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1613", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1613", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "17386612715415396913" + } + }, + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "VNet1", + "metadata": { + "description": "VNet name" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet 1 Prefix" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "Subnet1", + "metadata": { + "description": "Subnet 1 Name" + } + }, + "subnet2Prefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "Subnet 2 Prefix" + } + }, + "subnet2Name": { + "type": "string", + "defaultValue": "Subnet2", + "metadata": { + "description": "Subnet 2 Name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "VNet1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "Subnet2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1614 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1614 new file mode 100644 index 0000000..5ba5291 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1614 @@ -0,0 +1,192 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909708, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1614", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/localnetworkgateways", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1614", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string" + }, + "vnet_name": { + "defaultValue": "vnet", + "type": "String" + }, + "vnet_addressSpace": { + "defaultValue": "10.1.0.0/16", + "type": "String" + }, + "vnet_gatewaySubnet_addressSpace": { + "defaultValue": "10.1.0.0/27", + "type": "String" + }, + "vpnGateway_name": { + "defaultValue": "vpnGateway", + "type": "String" + }, + "vpnGateway_publicIp_name": { + "defaultValue": "vpnGateway-ip", + "type": "String" + }, + "localGateway_name": { + "defaultValue": "localGateway", + "type": "String" + }, + "localGateway_addressPrefix": { + "defaultValue": "192.168.1.0/24", + "type": "string" + }, + "localGateway_gatewayIpAddress": { + "type": "string", + "value": "1.1.1.1" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/localNetworkGateways", + "apiVersion": "2020-05-01", + "name": "localGateway", + "location": "[resourceGroup().location]", + "properties": { + "localNetworkAddressSpace": { + "addressPrefixes": [ + "192.168.1.0/24" + ] + }, + "gatewayIpAddress": "1.1.1.1" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "vpnGateway-ip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.1.0.0/27", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-05-01", + "name": "vnet/GatewaySubnet", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet" + ], + "properties": { + "addressPrefix": "10.1.0.0/27", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-05-01", + "name": "vpnGateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/vpnGateway-ip", + "Microsoft.Network/virtualNetworks/subnets/vnet/GatewaySubnet" + ], + "properties": { + "enablePrivateIpAddress": false, + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vpnGateway-ip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/GatewaySubnet" + } + } + } + ], + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": false, + "activeActive": false, + "vpnGatewayGeneration": "Generation1" + } + } + ], + "outputs": { + "vpnGateway": { + "type": "string", + "value": "[parameters('vpnGateway_name')]" + }, + "localGateway": { + "type": "string", + "value": "[parameters('localGateway_name')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1615 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1615 new file mode 100644 index 0000000..a07b85a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1615 @@ -0,0 +1,240 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/azuredeploy.json", + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/azuredeploy.parameters.json" + ], + "timestamp": 1642962909720, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/azuredeploy.json", + "/quickstarts/microsoft.network/vpn-custom-ipsec-policy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1615", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/connections" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1615", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Resource Location" + } + }, + "vpnGateway_Name": { + "type": "string", + "metadata": { + "description": "Name of existing Virtual Network Gateway to deploy the connection to" + }, + "value": "GET-PREREQ-vpnGateway" + }, + "localGateway_Name": { + "type": "string", + "metadata": { + "description": "Name of existing Local Network Gateway to deploy the connection to" + }, + "value": "GET-PREREQ-localGateway" + }, + "vpnName": { + "type": "string", + "defaultValue": "Azure-to-OnPremises", + "metadata": { + "description": "Name of the VPN connection between Azure and On-Premises (ex: AzureUKS-to-LDN)" + } + }, + "vpnProtocol": { + "type": "string", + "defaultValue": "IKEv2", + "allowedValues": [ + "IKEv1", + "IKEv2" + ], + "metadata": { + "description": "Protocol utilised by the VPN Connection (IKEv1, IKEv2)" + } + }, + "saLifeTimeSeconds": { + "type": "int", + "defaultValue": 3600, + "metadata": { + "description": "Security Association Lifetime (Seconds)" + } + }, + "saDataSizeKilobytes": { + "type": "int", + "defaultValue": 1024000000, + "metadata": { + "description": "Security Association Data Size (KB)" + } + }, + "ipsecEncryption": { + "type": "string", + "defaultValue": "AES256", + "allowedValues": [ + "None", + "DES", + "DES3", + "AES128", + "AES192", + "AES256", + "GCMAES128", + "GCMAES192", + "GCMAES256" + ], + "metadata": { + "description": "IPSec Encryption" + } + }, + "ipsecIntegrity": { + "type": "string", + "defaultValue": "SHA256", + "allowedValues": [ + "MD5", + "SHA1", + "SHA256", + "GCMAES128", + "GCMAES192", + "GCMAES256" + ], + "metadata": { + "description": "IPSec Integrity" + } + }, + "ikeEncryption": { + "type": "string", + "defaultValue": "AES256", + "allowedValues": [ + "DES", + "DES3", + "AES128", + "AES192", + "AES256", + "GCMAES256", + "GCMAES128" + ], + "metadata": { + "description": "IKE Encryption" + } + }, + "ikeIntegrity": { + "type": "string", + "defaultValue": "SHA256", + "allowedValues": [ + "MD5", + "SHA1", + "SHA256", + "SHA384", + "GCMAES256", + "GCMAES128" + ], + "metadata": { + "description": "IKE Integrity" + } + }, + "dhGroup": { + "type": "string", + "defaultValue": "DHGroup14", + "allowedValues": [ + "None", + "DHGroup1", + "DHGroup2", + "DHGroup14", + "DHGroup2048", + "ECP256", + "ECP384", + "DHGroup24" + ], + "metadata": { + "description": "Diffie-Hellman Group" + } + }, + "pfsGroup": { + "type": "string", + "defaultValue": "PFS14", + "allowedValues": [ + "None", + "PFS1", + "PFS2", + "PFS2048", + "ECP256", + "ECP384", + "PFS24", + "PFS14", + "PFSMM" + ], + "metadata": { + "description": "Perfect Forward Secrecy Group" + } + }, + "sharedKey": { + "type": "securestring", + "metadata": { + "description": "Pre-Shared Key" + }, + "value": "GEN-PASSWORD" + }, + "policyBasedTrafficSelectors": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Enable this if the OnPremises VPN endpoint needs to be configured as a Policy-Based VPN" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/connections", + "apiVersion": "2020-04-01", + "name": "Azure-to-OnPremises", + "location": "[resourceGroup().location]", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/GET-PREREQ-vpnGateway" + }, + "localNetworkGateway2": { + "id": "Microsoft.Network/localNetworkGateways/GET-PREREQ-localGateway" + }, + "connectionType": "IPsec", + "connectionProtocol": "IKEv2", + "sharedKey": "GEN-PASSWORD", + "usePolicyBasedTrafficSelectors": false, + "ipsecPolicies": [ + { + "saLifeTimeSeconds": 3600, + "saDataSizeKilobytes": 1024000000, + "ipsecEncryption": "AES256", + "ipsecIntegrity": "SHA256", + "ikeEncryption": "iKEEncryption", + "ikeIntegrity": "SHA256", + "dhGroup": "DHGroup14", + "pfsGroup": "PFS14" + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1616 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1616 new file mode 100644 index 0000000..5369a7f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1616 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.notificationhubs/notification-hub/azuredeploy.json", + "/quickstarts/microsoft.notificationhubs/notification-hub/azuredeploy.parameters.json" + ], + "timestamp": 1642962909726, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.notificationhubs/notification-hub/azuredeploy.json", + "/quickstarts/microsoft.notificationhubs/notification-hub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1616", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.notificationhubs/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1616", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "The name of the Notification Hubs namespace." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the Notification Hubs resources should be deployed." + } + } + }, + "variables": { + "hubName": "MyHub" + }, + "resources": [ + { + "type": "Microsoft.NotificationHubs/namespaces", + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Free" + }, + "kind": "NotificationHub", + "resources": [ + { + "type": "Microsoft.NotificationHubs/namespaces/notificationHubs", + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE/MyHub", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1617 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1617 new file mode 100644 index 0000000..70f4963 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1617 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.operationsmanagement/azure-sentinel/azuredeploy.json", + "/quickstarts/microsoft.operationsmanagement/azure-sentinel/azuredeploy.parameters.json" + ], + "timestamp": 1642962909733, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.operationsmanagement/azure-sentinel/azuredeploy.json", + "/quickstarts/microsoft.operationsmanagement/azure-sentinel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1617", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1617", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "14574378311890430918" + } + }, + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "retentionInDays": 7, + "sku": { + "name": "Free" + } + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "name": "[format('SecurityInsights({0})', parameters('workspaceName'))]", + "location": "[resourceGroup().location]", + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + }, + "plan": { + "name": "[format('SecurityInsights({0})', parameters('workspaceName'))]", + "product": "OMSGallery/SecurityInsights", + "publisher": "Microsoft", + "promotionCode": "" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1618 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1618 new file mode 100644 index 0000000..fbd401f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1618 @@ -0,0 +1,268 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.portal/azure-portal-dashboard/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.portal/azure-portal-dashboard/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909749, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.portal/azure-portal-dashboard/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.portal/azure-portal-dashboard/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1618", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1618", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Nano-Server", + "2016-Datacenter-with-Containers", + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "vmName": "SimpleWinVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "SimpleWinVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "SimpleWinVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + } + ], + "outputs": { + "resourcegroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "virtualmachine": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1619 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1619 new file mode 100644 index 0000000..1d44b75 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1619 @@ -0,0 +1,298 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.portal/azure-portal-dashboard/azuredeploy.json", + "/quickstarts/microsoft.portal/azure-portal-dashboard/azuredeploy.parameters.json" + ], + "timestamp": 1642962909759, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.portal/azure-portal-dashboard/azuredeploy.json", + "/quickstarts/microsoft.portal/azure-portal-dashboard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1619", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1619", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "Name of the existing virtual machine to show in the dashboard" + }, + "value": "GET-PREREQ-virtualmachine" + }, + "virtualMachineResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the resource group that contains the virtual machine" + }, + "value": "GET-PREREQ-resourcegroup" + }, + "dashboardName": { + "type": "string", + "defaultValue": "[guid(parameters('virtualMachineName'), parameters('virtualMachineResourceGroup'))]", + "metadata": { + "Description": "Resource name that Azure portal uses for the dashboard" + } + }, + "dashboardDisplayName": { + "type": "string", + "defaultValue": "Simple VM Dashboard", + "metadata": { + "description": "Name of the dashboard to display in Azure portal" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "resources": [ + { + "type": "Microsoft.Portal/dashboards", + "apiVersion": "2019-01-01-preview", + "name": "[guid(parameters('virtualMachineName'), parameters('virtualMachineResourceGroup'))]", + "location": "[resourceGroup().location]", + "tags": { + "hidden-title": "Simple VM Dashboard" + }, + "properties": { + "lenses": { + "0": { + "order": 0, + "parts": { + "0": { + "position": { + "x": 0, + "y": 0, + "rowSpan": 2, + "colSpan": 3 + }, + "metadata": { + "inputs": [], + "type": "Extension[azure]/HubsExtension/PartType/MarkdownPart", + "settings": { + "content": { + "settings": { + "content": "## Azure Virtual Machines Overview\r\nNew team members should watch this video to get familiar with Azure Virtual Machines." + } + } + } + } + }, + "1": { + "position": { + "x": 3, + "y": 0, + "rowSpan": 4, + "colSpan": 8 + }, + "metadata": { + "inputs": [], + "type": "Extension[azure]/HubsExtension/PartType/MarkdownPart", + "settings": { + "content": { + "settings": { + "content": "This is the team dashboard for the test VM we use on our team. Here are some useful links:\r\n\r\n1. [Create a Linux virtual machine](https://docs.microsoft.com/azure/virtual-machines/linux/quick-create-portal)\r\n1. [Create a Windows virtual machine](https://docs.microsoft.com/azure/virtual-machines/windows/quick-create-portal)\r\n1. [Create a virtual machine scale set](https://docs.microsoft.com/azure/virtual-machine-scale-sets/quick-create-portal)", + "title": "Test VM Dashboard", + "subtitle": "Contoso" + } + } + } + } + }, + "2": { + "position": { + "x": 0, + "y": 2, + "rowSpan": 2, + "colSpan": 3 + }, + "metadata": { + "inputs": [], + "type": "Extension[azure]/HubsExtension/PartType/VideoPart", + "settings": { + "content": { + "settings": { + "src": "https://www.youtube.com/watch?v=rOiSRkxtTeU", + "autoplay": false + } + } + } + } + }, + "3": { + "position": { + "x": 0, + "y": 4, + "rowSpan": 3, + "colSpan": 11 + }, + "metadata": { + "inputs": [ + { + "name": "queryInputs", + "value": { + "timespan": { + "duration": "PT1H" + }, + "id": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine", + "chartType": 0, + "metrics": [ + { + "name": "Percentage CPU", + "resourceId": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine" + } + ] + } + } + ], + "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart" + } + }, + "4": { + "position": { + "x": 0, + "y": 7, + "rowSpan": 2, + "colSpan": 3 + }, + "metadata": { + "inputs": [ + { + "name": "queryInputs", + "value": { + "timespan": { + "duration": "PT1H" + }, + "id": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine", + "chartType": 0, + "metrics": [ + { + "name": "Disk Read Operations/Sec", + "resourceId": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine" + }, + { + "name": "Disk Write Operations/Sec", + "resourceId": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine" + } + ] + } + } + ], + "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart" + } + }, + "5": { + "position": { + "x": 3, + "y": 7, + "rowSpan": 2, + "colSpan": 3 + }, + "metadata": { + "inputs": [ + { + "name": "queryInputs", + "value": { + "timespan": { + "duration": "PT1H" + }, + "id": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine", + "chartType": 0, + "metrics": [ + { + "name": "Disk Read Bytes", + "resourceId": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine" + }, + { + "name": "Disk Write Bytes", + "resourceId": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine" + } + ] + } + } + ], + "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart" + } + }, + "6": { + "position": { + "x": 6, + "y": 7, + "rowSpan": 2, + "colSpan": 3 + }, + "metadata": { + "inputs": [ + { + "name": "queryInputs", + "value": { + "timespan": { + "duration": "PT1H" + }, + "id": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine", + "chartType": 0, + "metrics": [ + { + "name": "Network In Total", + "resourceId": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine" + }, + { + "name": "Network Out Total", + "resourceId": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine" + } + ] + } + } + ], + "type": "Extension/Microsoft_Azure_Monitoring/PartType/MetricsChartPart" + } + }, + "7": { + "position": { + "x": 9, + "y": 7, + "rowSpan": 2, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "id", + "value": "GET-PREREQ-resourcegroup/Microsoft.Compute/virtualMachines/GET-PREREQ-virtualmachine" + } + ], + "type": "Extension/Microsoft_Azure_Compute/PartType/VirtualMachinePart", + "asset": { + "idInputName": "id", + "type": "VirtualMachine" + } + } + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT162 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT162 new file mode 100644 index 0000000..15ba8cc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT162 @@ -0,0 +1,137 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/ocs.json" + ], + "timestamp": 1642962888984, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/ocs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT162", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT162", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "installOCSImagesScriptUrl": { + "type": "string", + "metadata": { + "description": "OCS script Url" + } + }, + "installOCSScriptFileName": { + "type": "string", + "metadata": { + "description": "OCS script file name" + } + }, + "redHatTags": { + "type": "object", + "metadata": { + "description": "Red Hat Tags" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin Username" + } + }, + "bastionHostname": { + "type": "string", + "metadata": { + "description": "Bastion Hostname" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Region where the resources should be created in" + } + }, + "openshiftUsername": { + "type": "string", + "metadata": { + "description": "Openshift Username" + } + }, + "openshiftPassword": { + "type": "securestring", + "metadata": { + "description": "Openshift Password" + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "Cluster Name" + } + }, + "domainName": { + "type": "string", + "metadata": { + "description": "DNS Zone name" + } + }, + "singleZoneOrMultiZone": { + "type": "string", + "metadata": { + "description": "Single Or Multizone" + } + }, + "resourceGroupName": { + "type": "string", + "metadata": { + "description": "Resource Group name" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "bastionHostname/deployOpenshift", + "location": "location", + "apiVersion": "2021-07-01", + "tags": { + "displayName": "InstallOCS", + "app": "redHatTags", + "version": "redHatTags", + "platform": "redHatTags" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "installOCSImagesScriptUrl" + ] + }, + "protectedSettings": { + "commandToExecute": "bash installOCSScriptFileName \"adminUsername\" \"openshiftUsername\" \"openshiftPassword\" \"clusterName\" \"domainName\" \"singleZoneOrMultiZone\" \"location\" \"resourceGroupName\"" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1620 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1620 new file mode 100644 index 0000000..fb32d4b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1620 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.portal/default-shared-dashboard/azuredeploy.json", + "/quickstarts/microsoft.portal/default-shared-dashboard/azuredeploy.parameters.json" + ], + "timestamp": 1642962909768, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.portal/default-shared-dashboard/azuredeploy.json", + "/quickstarts/microsoft.portal/default-shared-dashboard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1620", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1620", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dashboardName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The name of the dashboard" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-09-01-preview", + "name": "SHARED-DASHBOARD-GEN-UNIQUE", + "type": "Microsoft.Portal/dashboards", + "location": "[resourceGroup().location]", + "tags": { + "hidden-title": "GEN-UNIQUE" + }, + "properties": { + "lenses": [ + { + "order": 0, + "parts": [ + { + "position": { + "x": 0, + "y": 0, + "colSpan": 4, + "rowSpan": 6 + }, + "metadata": { + "inputs": [ + { + "name": "resourceGroup", + "isOptional": true + }, + { + "name": "id", + "value": "[resourceGroup().id]", + "isOptional": true + } + ], + "type": "Extension/HubsExtension/PartType/ResourceGroupMapPinnedPart" + } + }, + { + "position": { + "x": 4, + "y": 0, + "rowSpan": 3, + "colSpan": 4 + }, + "metadata": { + "inputs": [], + "type": "Extension[azure]/HubsExtension/PartType/MarkdownPart", + "settings": { + "content": { + "settings": { + "content": "__Customizations__\n\nUse this dashboard to create and share the operational views of services critical to the application performing. To customize simply pin components to the dashboard and then publish when you're done. Others will see your changes when you publish and share the dashboard.\n\nYou can customize this text too. It supports plain text, __Markdown__, and even limited HTML like images and links that open in a new tab.\n", + "title": "Operations", + "subtitle": "[resourceGroup().name]" + } + } + } + } + } + ] + } + ], + "metadata": { + "model": { + "timeRange": { + "value": { + "relative": { + "duration": 24, + "timeUnit": 1 + } + }, + "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1621 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1621 new file mode 100644 index 0000000..92932f0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1621 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.powerbi/powerbi-workspace-create/azuredeploy.json", + "/quickstarts/microsoft.powerbi/powerbi-workspace-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909775, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.powerbi/powerbi-workspace-create/azuredeploy.json", + "/quickstarts/microsoft.powerbi/powerbi-workspace-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1621", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.powerbi/workspacecollections" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1621", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "powerbiWorkspaceName": { + "type": "string", + "minLength": 3, + "maxLength": 63, + "metadata": { + "description": "A unique name for the PowerBI workspace collection. It should match with the following regular expression: ^(?:[a-zA-Z0-9]+-?)+$ or it will raise an error. " + }, + "value": "GEN-UNIQUE-12" + }, + "sku": { + "type": "string", + "allowedValues": [ + "S1", + "s1" + ], + "metadata": { + "description": "provide the sku for powerbi workspace collection." + }, + "value": "S1" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2016-01-29", + "type": "Microsoft.PowerBI/workspaceCollections", + "name": "GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1" + }, + "tags": { + "ObjectName": "GEN-UNIQUE-12" + } + } + ], + "outputs": { + "powerbiWorkspaceName": { + "type": "string", + "value": "[parameters('powerbiWorkspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1622 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1622 new file mode 100644 index 0000000..b1b6b24 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1622 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.powerbidedicated/power-bi-embedded/azuredeploy.json", + "/quickstarts/microsoft.powerbidedicated/power-bi-embedded/azuredeploy.parameters.json" + ], + "timestamp": 1642962909791, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.powerbidedicated/power-bi-embedded/azuredeploy.json", + "/quickstarts/microsoft.powerbidedicated/power-bi-embedded/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1622", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.powerbidedicated/capacities" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1622", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "The capacity name, which is displayed in the Azure portal and the Power BI admin portal" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location where Power BI is hosted for your tenant" + } + }, + "sku": { + "type": "string", + "allowedValues": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6" + ], + "metadata": { + "description": "The pricing tier, which determines the v-core count and memory size for the capacity" + }, + "value": "A1" + }, + "admin": { + "type": "string", + "metadata": { + "description": "A user within your Power BI tenant, who will serve as an admin for this capacity" + }, + "value": "bmoore@azurequickstarts.onmicrosoft.com" + } + }, + "resources": [ + { + "type": "Microsoft.PowerBIDedicated/capacities", + "apiVersion": "2018-09-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "A1" + }, + "properties": { + "administration": { + "members": [ + "bmoore@azurequickstarts.onmicrosoft.com" + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1623 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1623 new file mode 100644 index 0000000..6585d93 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1623 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-classic-resource-manager-vms/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-classic-resource-manager-vms/azuredeploy.parameters.json" + ], + "timestamp": 1642962909801, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-classic-resource-manager-vms/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-classic-resource-manager-vms/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1623", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1623", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingRecoveryServicesVaultName": { + "type": "string", + "metadata": { + "description": "Name of the Existing Recovery Services Vault (Vault and VM to be protected must be in same GEO)" + }, + "value": "RSVault1" + }, + "existingProtectionContainers": { + "type": "array", + "metadata": { + "description": "Array of iaasvm protection containers. This will take different input for classic and ARM vms. e.g. iaasvmcontainer;iaasvmcontainerv2;my-resource-group;my-arm-vm for ARM vm and iaasvmcontainer;iaasvmcontainer;my-classic-vm;my-classic-vm for classic vm" + }, + "value": [ + "iaasvmcontainer;iaasvmcontainerv2;my-resource-group;my-arm-vm", + "iaasvmcontainer;iaasvmcontainer;my-classic-vm;my-classic-vm" + ] + }, + "existingProtectableItems": { + "type": "array", + "metadata": { + "description": "Array of iaasvm protectable items. This will take different input for classic and ARM vms. e.g. vm;iaasvmcontainerv2;my-resource-group;my-arm-vm for ARM vm and vm;iaasvmcontainer;my-classic-vm;my-classic-vm for classic vm" + }, + "value": [ + "vm;iaasvmcontainerv2;my-resource-group;my-arm-vm", + "vm;iaasvmcontainer;my-classic-vm;my-classic-vm" + ] + }, + "existingSourceResourceIds": { + "type": "array", + "metadata": { + "description": "Array of resourceid of iaasvm protectable items. Provide resourceids of each VMs for which you want to configure protection. e.g. /subscriptions/subscriptionid/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/vmName" + }, + "value": [ + "/subscriptions/mySubscriptionId/resourceGroups/my-resource-group/providers/Microsoft.Compute/virtualMachines/my-arm-vm", + "/subscriptions/mySubscriptionId/resourceGroups/my-classic-vm/providers/Microsoft.ClassicCompute/virtualMachines/my-classic-vm" + ] + }, + "existingBackupPolicyName": { + "type": "string", + "metadata": { + "description": "Name of existing Backup Policy in same Recovery Services Vault." + }, + "value": "BackupPolicy1" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "backupFabric": "Azure", + "protectedItemType": "Microsoft.ClassicCompute/virtualMachines" + }, + "resources": [ + { + "name": "[concat(parameters('existingRecoveryServicesVaultName'), '/', variables('backupFabric'), '/', parameters('existingProtectionContainers')[copyIndex()], '/', parameters('existingProtectableItems')[copyIndex()])]", + "apiVersion": "2016-06-01", + "location": "[resourceGroup().location]", + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "properties": { + "protectedItemType": "Microsoft.ClassicCompute/virtualMachines", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/RSVault1/BackupPolicy1", + "sourceResourceId": "existingSourceResourceIds)[copyIndex(" + } + }, + { + "name": "[concat(parameters('existingRecoveryServicesVaultName'), '/', variables('backupFabric'), '/', parameters('existingProtectionContainers')[copyIndex()], '/', parameters('existingProtectableItems')[copyIndex()])]", + "apiVersion": "2016-06-01", + "location": "[resourceGroup().location]", + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "properties": { + "protectedItemType": "Microsoft.ClassicCompute/virtualMachines", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/RSVault1/BackupPolicy1", + "sourceResourceId": "existingSourceResourceIds)[copyIndex(" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1624 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1624 new file mode 100644 index 0000000..2aec261 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1624 @@ -0,0 +1,104 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909814, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1624", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1624", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Azure Storage account." + }, + "value": "GEN-UNIQUE" + }, + "fileShareName": { + "type": "string", + "minLength": 3, + "maxLength": 63, + "metadata": { + "description": "Specifies the name of the File Share. File share names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location in which the Azure Storage resources should be deployed." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Storage/storageAccounts/fileServices/shares", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE/default/GEN-UNIQUE", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + } + ], + "outputs": { + "resourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "fileShareName": { + "type": "string", + "value": "[parameters('fileShareName')]" + }, + "storageAccountLocation": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1625 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1625 new file mode 100644 index 0000000..fc7e659 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1625 @@ -0,0 +1,308 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/azuredeploy.parameters.json" + ], + "timestamp": 1642962909828, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-file-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1625", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1625", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the existing Resource Group in which the existing Storage Account is present." + }, + "value": "GET-PREREQ-resourceGroupName" + }, + "existingStorageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the existing Storage Account in which the existing File Share to be protected is present." + }, + "value": "GET-PREREQ-storageAccountName" + }, + "existingFileShareName": { + "type": "string", + "metadata": { + "description": "Name of the existing File Share to be protected." + }, + "value": "GET-PREREQ-fileShareName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the existing Storage Account containing the existing File Share to be protected. New Recovery Services Vault will be created in this location. (Ignore if using existing Recovery Services Vault)." + }, + "value": "GET-PREREQ-storageAccountLocation" + }, + "isNewVault": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Set to true if a new Recovery Services Vault is to be created; set to false otherwise." + } + }, + "isNewPolicy": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Set to true if a new Backup Policy is to be created for the Recovery Services Vault; set to false otherwise." + } + }, + "registerStorageAccount": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Set to true if the existing Storage Account has to be registered to the Recovery Services Vault; set to false otherwise." + } + }, + "vaultName": { + "type": "string", + "defaultValue": "RSVault1", + "metadata": { + "description": "Name of the Recovery Services Vault. (Should have the same location as the Storage Account containing the File Share to be protected in case of an existing Recovery Services Vault)." + } + }, + "policyName": { + "type": "string", + "defaultValue": "DailyBackupPolicy1", + "metadata": { + "description": "Name of the Backup Policy." + } + }, + "scheduleRunTime": { + "type": "string", + "defaultValue": "05:30", + "metadata": { + "description": "Time of day when backup should be triggered in 24 hour HH:MM format, where MM must be 00 or 30. (Ignore if using existing Backup Policy)." + } + }, + "timeZone": { + "type": "string", + "defaultValue": "UTC", + "metadata": { + "description": "Any valid timezone, for example: UTC, Pacific Standard Time. Refer: https://msdn.microsoft.com/en-us/library/gg154758.aspx (Ignore if using existing Backup Policy)." + } + }, + "dailyRetentionDurationCount": { + "type": "int", + "defaultValue": 30, + "metadata": { + "description": "Number of days for which the daily backup is to be retained. (Ignore if using existing Backup Policy)." + } + }, + "daysOfTheWeek": { + "type": "array", + "defaultValue": [ + "Sunday", + "Tuesday", + "Thursday" + ], + "metadata": { + "description": "Array of days on which backup is to be performed for Weekly Retention. (Ignore if using existing Backup Policy)." + } + }, + "weeklyRetentionDurationCount": { + "type": "int", + "defaultValue": 12, + "metadata": { + "description": "Number of weeks for which the weekly backup is to be retained. (Ignore if using existing Backup Policy)." + } + }, + "monthlyRetentionDurationCount": { + "type": "int", + "defaultValue": 60, + "metadata": { + "description": "Number of months for which the monthly backup is to be retained. Backup will be performed on the 1st day of every month. (Ignore if using existing Backup Policy)." + } + }, + "monthsOfYear": { + "type": "array", + "defaultValue": [ + "January", + "May", + "September" + ], + "metadata": { + "description": "Array of months on which backup is to be performed for Yearly Retention. Backup will be performed on the 1st day of each month of year provided. (Ignore if using existing Backup Policy)." + } + }, + "yearlyRetentionDurationCount": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "Number of years for which the yearly backup is to be retained. (Ignore if using existing Backup Policy)." + } + } + }, + "variables": { + "backupFabric": "Azure", + "backupManagementType": "AzureStorage", + "scheduleRunTimes": [ + "2020-01-01T05:30:00Z" + ] + }, + "resources": [ + { + "condition": true, + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2020-02-02", + "name": "RSVault1", + "location": "GET-PREREQ-storageAccountLocation", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "condition": true, + "type": "Microsoft.RecoveryServices/vaults/backupPolicies", + "apiVersion": "2020-02-02", + "name": "RSVault1/DailyBackupPolicy1", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/RSVault1" + ], + "properties": { + "backupManagementType": "AzureStorage", + "schedulePolicy": { + "scheduleRunFrequency": "Daily", + "scheduleRunTimes": [ + "2020-01-01T05:30:00Z" + ], + "schedulePolicyType": "SimpleSchedulePolicy" + }, + "retentionPolicy": { + "dailySchedule": { + "retentionTimes": [ + "2020-01-01T05:30:00Z" + ], + "retentionDuration": { + "count": 30, + "durationType": "Days" + } + }, + "weeklySchedule": { + "daysOfTheWeek": [ + "Sunday", + "Tuesday", + "Thursday" + ], + "retentionTimes": [ + "2020-01-01T05:30:00Z" + ], + "retentionDuration": { + "count": 12, + "durationType": "Weeks" + } + }, + "monthlySchedule": { + "retentionScheduleFormatType": "Daily", + "retentionScheduleDaily": { + "daysOfTheMonth": [ + { + "date": 1, + "isLast": false + } + ] + }, + "retentionTimes": [ + "2020-01-01T05:30:00Z" + ], + "retentionDuration": { + "count": 60, + "durationType": "Months" + } + }, + "yearlySchedule": { + "retentionScheduleFormatType": "Daily", + "monthsOfYear": [ + "January", + "May", + "September" + ], + "retentionScheduleDaily": { + "daysOfTheMonth": [ + { + "date": 1, + "isLast": false + } + ] + }, + "retentionTimes": [ + "2020-01-01T05:30:00Z" + ], + "retentionDuration": { + "count": 10, + "durationType": "Years" + } + }, + "retentionPolicyType": "LongTermRetentionPolicy" + }, + "timeZone": "UTC", + "workLoadType": "AzureFileShare" + } + }, + { + "condition": true, + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers", + "apiVersion": "2020-02-02", + "name": "RSVault1/Azure/storagecontainer;Storage;GET-PREREQ-resourceGroupName;GET-PREREQ-storageAccountName", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/RSVault1" + ], + "properties": { + "backupManagementType": "AzureStorage", + "containerType": "StorageContainer", + "sourceResourceId": "GET-PREREQ-resourceGroupName/Microsoft.Storage/storageAccounts/GET-PREREQ-storageAccountName" + } + }, + { + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "apiVersion": "2020-02-02", + "name": "RSVault1/Azure/storagecontainer;Storage;GET-PREREQ-resourceGroupName;GET-PREREQ-storageAccountName/AzureFileShare;GET-PREREQ-fileShareName", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/RSVault1/Azure/storagecontainer;Storage;GET-PREREQ-resourceGroupName;GET-PREREQ-storageAccountName", + "Microsoft.RecoveryServices/vaults/backupPolicies/RSVault1/DailyBackupPolicy1", + "Microsoft.RecoveryServices/vaults/RSVault1" + ], + "properties": { + "protectedItemType": "AzureFileShareProtectedItem", + "sourceResourceId": "GET-PREREQ-resourceGroupName/Microsoft.Storage/storageAccounts/GET-PREREQ-storageAccountName", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/RSVault1/DailyBackupPolicy1", + "isInlineInquiry": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1626 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1626 new file mode 100644 index 0000000..3f3809b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1626 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-vms/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-vms/azuredeploy.parameters.json" + ], + "timestamp": 1642962909842, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-vms/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-backup-vms/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1626", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1626", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingVirtualMachinesResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group where the virtual machines are located. This can be different than resource group of the vault. " + }, + "value": "VMRG" + }, + "existingVirtualMachines": { + "type": "array", + "metadata": { + "description": "Array of Azure virtual machines. e.g. [\"vm1\",\"vm2\",\"vm3\"]" + }, + "value": [ + "VM1", + "VM2" + ] + }, + "existingRecoveryServicesVault": { + "type": "string", + "metadata": { + "description": "Recovery services vault name where the VMs will be backed up to. " + }, + "value": "RecoveryServicesVault" + }, + "existingBackupPolicy": { + "type": "string", + "defaultValue": "DefaultPolicy", + "metadata": { + "description": "Backup policy to be used to backup VMs. Backup POlicy defines the schedule of the backup and how long to retain backup copies. By default every vault comes with a 'DefaultPolicy' which canbe used here." + }, + "value": "DefaultPolicy" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "backupFabric": "Azure", + "v2VmType": "Microsoft.Compute/virtualMachines", + "v2VmContainer": "iaasvmcontainer;iaasvmcontainerv2;", + "v2Vm": "vm;iaasvmcontainerv2;" + }, + "resources": [ + { + "name": "[concat(parameters('existingRecoveryServicesVault'), '/', variables('backupFabric'), '/', variables('v2VmContainer'), concat(parameters('existingVirtualMachinesResourceGroup'),';',parameters('existingVirtualMachines')[copyIndex()]), '/', variables('v2Vm'), concat(parameters('existingVirtualMachinesResourceGroup'),';',parameters('existingVirtualMachines')[copyIndex()]))]", + "apiVersion": "2016-06-01", + "location": "[resourceGroup().location]", + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "properties": { + "protectedItemType": "Microsoft.Compute/virtualMachines", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/RecoveryServicesVault/DefaultPolicy", + "sourceResourceId": "[resourceId(subscription().subscriptionId,parameters('existingVirtualMachinesResourceGroup'),'Microsoft.Compute/virtualMachines',parameters('existingVirtualMachines')[copyIndex()])]" + } + }, + { + "name": "[concat(parameters('existingRecoveryServicesVault'), '/', variables('backupFabric'), '/', variables('v2VmContainer'), concat(parameters('existingVirtualMachinesResourceGroup'),';',parameters('existingVirtualMachines')[copyIndex()]), '/', variables('v2Vm'), concat(parameters('existingVirtualMachinesResourceGroup'),';',parameters('existingVirtualMachines')[copyIndex()]))]", + "apiVersion": "2016-06-01", + "location": "[resourceGroup().location]", + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "properties": { + "protectedItemType": "Microsoft.Compute/virtualMachines", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/RecoveryServicesVault/DefaultPolicy", + "sourceResourceId": "[resourceId(subscription().subscriptionId,parameters('existingVirtualMachinesResourceGroup'),'Microsoft.Compute/virtualMachines',parameters('existingVirtualMachines')[copyIndex()])]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1627 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1627 new file mode 100644 index 0000000..ee6981e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1627 @@ -0,0 +1,156 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.parameters.json" + ], + "timestamp": 1642962909850, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1627", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/providers/diagnosticsettings", + "microsoft.operationalinsights/workspaces", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1627", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "metadata": { + "description": "Name of the Vault" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "workspaceLocation": { + "type": "string", + "defaultValue": "", + "allowedValues": [ + "centralus", + "eastus", + "eastus2", + "northcentralus", + "northeurope", + "southcentralus", + "westcentralus", + "westeurope", + "westus", + "westus2", + "uaenorth", + "switzerlandnorth", + "uksouth", + "francecentral", + "norwayeast", + "koreacentral", + "australiasoutheast", + "australiaeast", + "japaneast", + "centralindia", + "southeastasia", + "eastasia", + "chinaeast2", + "canadacentral", + "brazilsouth", + "usgovarizona", + "usgovvirginia" + ], + "metadata": { + "description": "Specify the workspace region" + }, + "value": "westus" + } + }, + "variables": { + "omsWorkspaceName": "[concat(uniqueString(resourceGroup().id),'ws')]", + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]", + "storageAccountType": "Standard_LRS" + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2021-02-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "name": "[variables('omsWorkspaceName')]", + "location": "westus", + "properties": { + "sku": { + "name": "Free" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2017-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.RecoveryServices/vaults/providers/diagnosticSettings", + "name": "[concat(parameters('vaultName'), '/microsoft.insights/', variables('omsWorkspaceName'))]", + "apiVersion": "2017-05-01-preview", + "properties": { + "name": "[variables('omsWorkspaceName')]", + "storageAccountId": "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "workspaceId": "[resourceId('microsoft.operationalinsights/workspaces/', variables('omsWorkspaceName'))]", + "logs": [ + { + "category": "AzureBackupReport", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": false + } + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.RecoveryServices/vaults/', parameters('vaultName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('microsoft.operationalinsights/workspaces/', variables('omsWorkspaceName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1628 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1628 new file mode 100644 index 0000000..938c22e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1628 @@ -0,0 +1,156 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962909861, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-enable-diagnostics/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1628", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/providers/diagnosticsettings", + "microsoft.operationalinsights/workspaces", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1628", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "metadata": { + "description": "Name of the Vault" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "workspaceLocation": { + "type": "string", + "defaultValue": "", + "allowedValues": [ + "centralus", + "eastus", + "eastus2", + "northcentralus", + "northeurope", + "southcentralus", + "westcentralus", + "westeurope", + "westus", + "westus2", + "uaenorth", + "switzerlandnorth", + "uksouth", + "francecentral", + "norwayeast", + "koreacentral", + "australiasoutheast", + "australiaeast", + "japaneast", + "centralindia", + "southeastasia", + "eastasia", + "chinaeast2", + "canadacentral", + "brazilsouth", + "usgovarizona", + "usgovvirginia" + ], + "metadata": { + "description": "Specify the workspace region" + }, + "value": "usgovvirginia" + } + }, + "variables": { + "omsWorkspaceName": "[concat(uniqueString(resourceGroup().id),'ws')]", + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]", + "storageAccountType": "Standard_LRS" + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2021-02-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "name": "[variables('omsWorkspaceName')]", + "location": "usgovvirginia", + "properties": { + "sku": { + "name": "Free" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2017-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.RecoveryServices/vaults/providers/diagnosticSettings", + "name": "[concat(parameters('vaultName'), '/microsoft.insights/', variables('omsWorkspaceName'))]", + "apiVersion": "2017-05-01-preview", + "properties": { + "name": "[variables('omsWorkspaceName')]", + "storageAccountId": "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "workspaceId": "[resourceId('microsoft.operationalinsights/workspaces/', variables('omsWorkspaceName'))]", + "logs": [ + { + "category": "AzureBackupReport", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": false + } + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.RecoveryServices/vaults/', parameters('vaultName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('microsoft.operationalinsights/workspaces/', variables('omsWorkspaceName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1629 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1629 new file mode 100644 index 0000000..3daa4bf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1629 @@ -0,0 +1,293 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-with-backup-policies/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-with-backup-policies/azuredeploy.parameters.json" + ], + "timestamp": 1642962909870, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-with-backup-policies/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vault-with-backup-policies/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1629", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies", + "microsoft.recoveryservices/vaults/backupstorageconfig", + "microsoft.authorization/locks", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1629", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "3101295286690922993" + } + }, + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Recovery Services vault name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of Recovery Services vault" + } + }, + "enableSystemIdentity": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable system identity for Recovery Services vault" + } + }, + "sku": { + "type": "string", + "defaultValue": "RS0", + "allowedValues": [ + "Standard", + "RS0" + ], + "metadata": { + "description": "Enable system identity for Recovery Services vault" + } + }, + "storageType": { + "type": "string", + "defaultValue": "GeoRedundant", + "allowedValues": [ + "LocallyRedundant", + "GeoRedundant", + "ReadAccessGeoZoneRedundant", + "ZoneRedundant" + ], + "metadata": { + "description": "Storage replication type for Recovery Services vault" + } + }, + "enablecrossRegionRestore": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable cross region restore" + } + }, + "backupPolicies": { + "type": "array", + "defaultValue": [], + "metadata": { + "policyName": "Backup policy name", + "properties": "Object containing backup policy settings", + "description": "Array containing backup policies" + } + }, + "enableDeleteLock": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable delete lock" + } + }, + "enableDiagnostics": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable diagnostic logs" + } + }, + "diagnosticStorageAccountId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Storage account resource id. Only required if enableDiagnostics is set to true." + } + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Log analytics workspace resource id. Only required if enableDiagnostics is set to true." + } + } + }, + "functions": [], + "variables": { + "lockName": "[format('{0}-lck', parameters('vaultName'))]", + "diagnosticsName": "[format('{0}-dgs', parameters('vaultName'))]" + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2021-06-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "identity": { + "type": "[if(parameters('enableSystemIdentity'), 'SystemAssigned', 'None')]" + }, + "properties": {}, + "sku": { + "name": "RS0", + "tier": "Standard" + } + }, + { + "copy": { + "name": "backupPolicy", + "count": 28 + }, + "type": "Microsoft.RecoveryServices/vaults/backupPolicies", + "apiVersion": "2021-06-01", + "name": "[format('{0}/{1}', parameters('vaultName'), parameters('backupPolicies')[copyIndex()].policyName)]", + "location": "[resourceGroup().location]", + "properties": "backupPolicies)[copyIndex(", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/[uniqueString(resourceGroup().id)]" + ] + }, + { + "type": "Microsoft.RecoveryServices/vaults/backupstorageconfig", + "apiVersion": "2021-04-01", + "name": "[format('{0}/VaultStorageConfig', parameters('vaultName'))]", + "properties": { + "crossRegionRestoreFlag": false, + "storageType": "GeoRedundant" + }, + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/[uniqueString(resourceGroup().id)]" + ] + }, + { + "condition": false, + "type": "Microsoft.Authorization/locks", + "apiVersion": "2016-09-01", + "scope": "[format('Microsoft.RecoveryServices/vaults/{0}', parameters('vaultName'))]", + "name": "[format('{0}-lck', parameters('vaultName'))]", + "properties": { + "level": "CanNotDelete" + }, + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/[uniqueString(resourceGroup().id)]" + ] + }, + { + "condition": false, + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "scope": "[format('Microsoft.RecoveryServices/vaults/{0}', parameters('vaultName'))]", + "name": "[format('{0}-dgs', parameters('vaultName'))]", + "properties": { + "workspaceId": "", + "storageAccountId": "", + "logs": [ + { + "category": "AzureBackupReport", + "enabled": true + }, + { + "category": "AzureSiteRecoveryJobs", + "enabled": true + }, + { + "category": "AzureSiteRecoveryEvents", + "enabled": true + }, + { + "category": "AzureSiteRecoveryReplicatedItems", + "enabled": true + }, + { + "category": "AzureSiteRecoveryReplicationStats", + "enabled": true + }, + { + "category": "AzureSiteRecoveryRecoveryPoints", + "enabled": true + }, + { + "category": "AzureSiteRecoveryReplicationDataUploadRate", + "enabled": true + }, + { + "category": "AzureSiteRecoveryProtectedDiskDataChurn", + "enabled": true + }, + { + "category": "CoreAzureBackup", + "enabled": true + }, + { + "category": "CoreAzureBackup", + "enabled": true + }, + { + "category": "AddonAzureBackupJobs", + "enabled": true + }, + { + "category": "AddonAzureBackupAlerts", + "enabled": true + }, + { + "category": "AddonAzureBackupPolicy", + "enabled": true + }, + { + "category": "AddonAzureBackupStorage", + "enabled": true + }, + { + "category": "AddonAzureBackupProtectedInstance", + "enabled": true + } + ], + "metrics": [ + { + "category": "Health", + "enabled": true + } + ] + }, + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/[uniqueString(resourceGroup().id)]" + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('vaultName')]" + }, + "id": { + "type": "string", + "value": "[resourceId('Microsoft.RecoveryServices/vaults', parameters('vaultName'))]" + }, + "systemIdentityPrincipalId": { + "type": "string", + "value": "[if(parameters('enableSystemIdentity'), reference(resourceId('Microsoft.RecoveryServices/vaults', parameters('vaultName')), '2021-06-01', 'full').identity.principalId, 'None')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT163 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT163 new file mode 100644 index 0000000..cb961f4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT163 @@ -0,0 +1,288 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/openshiftdeploy.json" + ], + "timestamp": 1642962888994, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/nested/openshiftdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT163", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT163", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URL 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": "securestring", + "metadata": { + "description": "Token for the base URL 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." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Region where the resources should be created in" + } + }, + "openshiftDeploymentScriptUrl": { + "type": "string", + "metadata": { + "description": "Bastion prep script Url" + } + }, + "openshiftDeploymentScriptFileName": { + "type": "string", + "metadata": { + "description": "Bastion prep script file name" + } + }, + "masterInstanceCount": { + "type": "int", + "metadata": { + "description": "Number of OpenShift Master nodes" + } + }, + "workerInstanceCount": { + "type": "int", + "metadata": { + "description": "Number of OpenShift nodes" + } + }, + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Administrator username on all VMs" + } + }, + "openshiftUsername": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Administrator password for OpenShift Console" + } + }, + "openshiftPassword": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Administrator password for OpenShift Console" + } + }, + "aadClientId": { + "type": "string", + "metadata": { + "description": "Azure AD Client ID" + } + }, + "aadClientSecret": { + "type": "securestring", + "metadata": { + "description": "Azure AD Client Secret" + } + }, + "redHatTags": { + "type": "object", + "metadata": { + "description": "Red Hat Tags" + } + }, + "pullSecret": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "OCP Pull Secret" + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Virtual Network Cluster is deployed in" + } + }, + "virtualNetworkCIDR": { + "type": "string", + "metadata": { + "description": "Virtual Network address prefix" + } + }, + "pxSpecUrl": { + "type": "string", + "metadata": { + "description": "Portworx Spec URL" + } + }, + "storageOption": { + "type": "string", + "metadata": { + "description": "nfs or glusterfs" + } + }, + "bastionHostname": { + "type": "string", + "metadata": { + "description": "Bastion Hostname" + } + }, + "nfsIpAddress": { + "type": "string", + "metadata": { + "description": "NFS Hostname" + } + }, + "singleZoneOrMultiZone": { + "type": "string", + "metadata": { + "description": "Deploy to a Single AZ or multiple AZs" + } + }, + "dnsZone": { + "type": "string", + "metadata": { + "description": "Domain name created with the App Service" + } + }, + "dnsZoneRG": { + "type": "string", + "metadata": { + "description": "Resource Group that contains the domain name" + } + }, + "masterInstanceType": { + "type": "string", + "metadata": { + "description": "OpenShift Master VM size. Use VMs with Premium Storage support only." + } + }, + "workerInstanceType": { + "type": "string", + "metadata": { + "description": "OpenShift Node VM(s) size. Use VMs with Premium Storage support only." + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "Cluster resources prefix" + } + }, + "networkResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group for Vnet." + } + }, + "masterSubnetName": { + "type": "string", + "metadata": { + "description": "Name of new or existing master subnet" + } + }, + "workerSubnetName": { + "type": "string", + "metadata": { + "description": "Name of new or existing worker subnet" + } + }, + "enableFips": { + "type": "bool", + "metadata": { + "description": "Enable FIPS encryption" + } + }, + "privateOrPublic": { + "type": "string", + "metadata": { + "description": "Public or private facing endpoints" + } + }, + "sshPublicKey": { + "type": "string", + "metadata": { + "description": "SSH public key for all VMs" + } + }, + "enableAutoscaler": { + "type": "bool", + "metadata": { + "description": "Enable or Disable Openshift Autoscaler" + } + }, + "outboundType": { + "type": "string", + "metadata": { + "description": "Egress: Azure LoadBalancer or UserDefinedRouting" + } + }, + "existingResourceGroupName": { + "type": "string", + "metadata": { + "description": "Existing ResourceGroup for the Cluster" + } + } + }, + "variables": { + "singlequote": "'", + "tenantId": "[subscription().tenantId]", + "subscriptionId": "[subscription().subscriptionId]", + "resourceGroupName": "[resourceGroup().name]", + "cidr-prefix": "[split(parameters('virtualNetworkCIDR'), '.')[0]]", + "clusterNetworkCidr": "[split(parameters('virtualNetworkCIDR'), '.')[0]].128.0.0/14", + "hostAddressPrefix": 23, + "serviceNetworkCidr": "192.30.0.0/16" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "bastionHostname/deployOpenshift", + "location": "location", + "apiVersion": "2021-07-01", + "tags": { + "displayName": "DeployOpenshift", + "app": "redHatTags", + "version": "redHatTags", + "platform": "redHatTags" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "openshiftDeploymentScriptUrl" + ] + }, + "protectedSettings": { + "commandToExecute": "bash openshiftDeploymentScriptFileName \"adminUsername\" \"openshiftPassword\" \"sshPublicKey\" \"workerInstanceCount\" \"masterInstanceCount\" \"[subscription().subscriptionId]\" \"[subscription().tenantId]\" \"aadClientId\" \"aadClientSecret\" \"[resourceGroup().name]\" \"location\" \"virtualNetworkName\" \"pxSpecUrl\" \"storageOption\" \"nfsIpAddress\" \"singleZoneOrMultiZone\" \"_artifactsLocation\" \"_artifactsLocationSasToken\" \"dnsZone\" \"masterInstanceType\" \"workerInstanceType\" \"clusterName\" \"[split(parameters('virtualNetworkCIDR'), '.')[0]].128.0.0/14\" \"23\" \"virtualNetworkCIDR\" \"192.30.0.0/16\" \"dnsZoneRG\" \"networkResourceGroup\" \"masterSubnetName\" \"workerSubnetName\" 'pullSecret' \"enableFips\" \"privateOrPublic\" \"openshiftUsername\" \"enableAutoscaler\" \"outboundType\" \"existingResourceGroupName\"" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1630 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1630 new file mode 100644 index 0000000..0365b26 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1630 @@ -0,0 +1,311 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vm-and-configure-backup/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vm-and-configure-backup/azuredeploy.parameters.json" + ], + "timestamp": 1642962909882, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vm-and-configure-backup/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-create-vm-and-configure-backup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1630", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.recoveryservices/vaults", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1630", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "17779840117539428846" + } + }, + "parameters": { + "projectName": { + "type": "string", + "maxLength": 8, + "metadata": { + "description": "Specifies a name for generating resource names." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the administrator username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "Specifies the administrator password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Specifies the unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "Virtual machine size." + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Nano-Server", + "2016-Datacenter-with-Containers", + "2016-Datacenter", + "2019-Datacenter", + "2019-Datacenter-Core", + "2019-Datacenter-Core-smalldisk", + "2019-Datacenter-Core-with-Containers", + "2019-Datacenter-Core-with-Containers-smalldisk", + "2019-Datacenter-smalldisk", + "2019-Datacenter-with-Containers", + "2019-Datacenter-with-Containers-smalldisk" + ], + "metadata": { + "description": "Specifies the Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + } + }, + "functions": [], + "variables": { + "storageAccountName": "[format('{0}store', parameters('projectName'))]", + "networkInterfaceName": "[format('{0}-nic', parameters('projectName'))]", + "vNetAddressPrefix": "10.0.0.0/16", + "vNetSubnetName": "default", + "vNetSubnetAddressPrefix": "10.0.0.0/24", + "publicIPAddressName": "[format('{0}-ip', parameters('projectName'))]", + "vmName": "[format('{0}-vm', parameters('projectName'))]", + "vNetName": "[format('{0}-vnet', parameters('projectName'))]", + "vaultName": "[format('{0}-vault', parameters('projectName'))]", + "backupFabric": "Azure", + "backupPolicyName": "DefaultPolicy", + "protectionContainer": "[format('iaasvmcontainer;iaasvmcontainerv2;{0};{1}', resourceGroup().name, variables('vmName'))]", + "protectedItem": "[format('vm;iaasvmcontainerv2;{0};{1}', resourceGroup().name, variables('vmName'))]", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-06-01", + "name": "[format('{0}store', parameters('projectName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[format('{0}-ip', parameters('projectName'))]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "[format('{0}-vnet', parameters('projectName'))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "[format('{0}-nic', parameters('projectName'))]", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[format('{0}-ip', parameters('projectName'))]" + }, + "subnet": { + "id": "[format('{0}/subnets/{1}', resourceId('Microsoft.Network/virtualNetworks', variables('vNetName')), variables('vNetSubnetName'))]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[format('{0}-ip', parameters('projectName'))]", + "Microsoft.Network/virtualNetworks/[format('{0}-vnet', parameters('projectName'))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "[format('{0}-vm', parameters('projectName'))]", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "[format('{0}-vm', parameters('projectName'))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[format('{0}-nic', parameters('projectName'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[format('{0}-nic', parameters('projectName'))]", + "Microsoft.Storage/storageAccounts/[format('{0}store', parameters('projectName'))]" + ] + }, + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2020-02-02", + "name": "[format('{0}-vault', parameters('projectName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "apiVersion": "2020-02-02", + "name": "[format('{0}/{1}/{2}/{3}', variables('vaultName'), variables('backupFabric'), variables('protectionContainer'), variables('protectedItem'))]", + "properties": { + "protectedItemType": "Microsoft.Compute/virtualMachines", + "policyId": "[format('{0}/backupPolicies/{1}', resourceId('Microsoft.RecoveryServices/vaults', variables('vaultName')), variables('backupPolicyName'))]", + "sourceResourceId": "Microsoft.Compute/virtualMachines/[format('{0}-vm', parameters('projectName'))]" + }, + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/[format('{0}-vault', parameters('projectName'))]", + "Microsoft.Compute/virtualMachines/[format('{0}-vm', parameters('projectName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1631 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1631 new file mode 100644 index 0000000..7dbcf9e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1631 @@ -0,0 +1,247 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-daily-backup-policy-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-daily-backup-policy-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909889, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-daily-backup-policy-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-daily-backup-policy-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1631", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1631", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "3874023297883573661" + } + }, + "parameters": { + "vaultName": { + "type": "string", + "metadata": { + "description": "Name of the Recovery Services Vault" + }, + "value": "RSvault1" + }, + "policyName": { + "type": "string", + "metadata": { + "description": "Name of the Backup Policy" + }, + "value": "DailyBackupPolicy1" + }, + "scheduleRunTimes": { + "type": "array", + "metadata": { + "description": "Times in day when backup should be triggered. e.g. 01:00 or 13:00. Must be an array, however for IaaS VMs only one value is valid. This will be used in LTR too for daily, weekly, monthly and yearly backup." + }, + "value": [ + "2017-01-26T05:30:00Z" + ] + }, + "timeZone": { + "type": "string", + "metadata": { + "description": "Any Valid timezone, for example:UTC, Pacific Standard Time. Refer: https://msdn.microsoft.com/en-us/library/gg154758.aspx" + }, + "value": "UTC" + }, + "instantRpRetentionRangeInDays": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "Number of days Instant Recovery Point should be retained" + } + }, + "dailyRetentionDurationCount": { + "type": "int", + "metadata": { + "description": "Number of days you want to retain the backup" + }, + "value": 104 + }, + "daysOfTheWeek": { + "type": "array", + "metadata": { + "description": "Backup will run on array of Days like, Monday, Tuesday etc. Applies in Weekly retention only." + }, + "value": [ + "Sunday", + "Tuesday", + "Thursday" + ] + }, + "weeklyRetentionDurationCount": { + "type": "int", + "metadata": { + "description": "Number of weeks you want to retain the backup" + }, + "value": 104 + }, + "monthlyRetentionDurationCount": { + "type": "int", + "metadata": { + "description": "Number of months you want to retain the backup" + }, + "value": 60 + }, + "monthsOfYear": { + "type": "array", + "metadata": { + "description": "Array of Months for Yearly Retention" + }, + "value": [ + "January", + "March", + "August" + ] + }, + "yearlyRetentionDurationCount": { + "type": "int", + "metadata": { + "description": "Number of years you want to retain the backup" + }, + "value": 10 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2020-10-01", + "name": "RSvault1", + "location": "[resourceGroup().location]", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "apiVersion": "2016-06-01", + "name": "[format('{0}/{1}', parameters('vaultName'), parameters('policyName'))]", + "type": "Microsoft.RecoveryServices/vaults/backupPolicies", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/RSvault1" + ], + "location": "[resourceGroup().location]", + "properties": { + "backupManagementType": "AzureIaasVM", + "instantRpRetentionRangeInDays": 2, + "schedulePolicy": { + "scheduleRunFrequency": "Daily", + "scheduleRunTimes": [ + "2017-01-26T05:30:00Z" + ], + "schedulePolicyType": "SimpleSchedulePolicy" + }, + "retentionPolicy": { + "dailySchedule": { + "retentionTimes": [ + "2017-01-26T05:30:00Z" + ], + "retentionDuration": { + "count": 104, + "durationType": "Days" + } + }, + "weeklySchedule": { + "daysOfTheWeek": [ + "Sunday", + "Tuesday", + "Thursday" + ], + "retentionTimes": [ + "2017-01-26T05:30:00Z" + ], + "retentionDuration": { + "count": 104, + "durationType": "Weeks" + } + }, + "monthlySchedule": { + "retentionScheduleFormatType": "Daily", + "retentionScheduleDaily": { + "daysOfTheMonth": [ + { + "date": 1, + "isLast": false + } + ] + }, + "retentionTimes": [ + "2017-01-26T05:30:00Z" + ], + "retentionDuration": { + "count": 60, + "durationType": "Months" + } + }, + "yearlySchedule": { + "retentionScheduleFormatType": "Daily", + "monthsOfYear": [ + "January", + "March", + "August" + ], + "retentionScheduleDaily": { + "daysOfTheMonth": [ + { + "date": 1, + "isLast": false + } + ] + }, + "retentionTimes": [ + "2017-01-26T05:30:00Z" + ], + "retentionDuration": { + "count": 10, + "durationType": "Years" + } + }, + "retentionPolicyType": "LongTermRetentionPolicy" + }, + "timeZone": "UTC" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1632 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1632 new file mode 100644 index 0000000..ada9ed3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1632 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-basic/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-basic/azuredeploy.parameters.json" + ], + "timestamp": 1642962909897, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-basic/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-basic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1632", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1632", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "390286357197585268" + } + }, + "parameters": { + "vaultName": { + "type": "string", + "metadata": { + "description": "Name of the Vault" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2020-10-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": {}, + "sku": { + "name": "RS0", + "tier": "Standard" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1633 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1633 new file mode 100644 index 0000000..1c9abf5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1633 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909909, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vault-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1633", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backupstorageconfig" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1633", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "7944106905432231543" + } + }, + "parameters": { + "vaultName": { + "type": "string", + "metadata": { + "description": "Name of the Vault" + }, + "value": "GEN-UNIQUE" + }, + "enableCRR": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable CRR (Works if vault has not registered any backup instance)" + } + }, + "vaultStorageType": { + "type": "string", + "defaultValue": "GeoRedundant", + "allowedValues": [ + "LocallyRedundant", + "GeoRedundant" + ], + "metadata": { + "description": "Change Vault Storage Type (Works if vault has not registered any backup instance)" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "skuName": "RS0", + "skuTier": "Standard" + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2020-02-02", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "type": "Microsoft.RecoveryServices/vaults/backupstorageconfig", + "apiVersion": "2020-02-02", + "name": "[format('{0}/{1}', parameters('vaultName'), 'vaultstorageconfig')]", + "properties": { + "StorageModelType": "GeoRedundant", + "CrossRegionRestoreFlag": true + }, + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1634 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1634 new file mode 100644 index 0000000..11f0612 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1634 @@ -0,0 +1,352 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909916, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1634", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.sqlvirtualmachine/sqlvirtualmachines", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1634", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "value": "sqlvmbackupdemo" + }, + "virtualMachineSize": { + "type": "string", + "value": "Standard_B2s" + }, + "adminUsername": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "type": "string", + "value": "GEN-VNET-NAME" + }, + "networkInterfaceName": { + "type": "string", + "value": "sqlvmbackupdemo-ni" + }, + "networkSecurityGroupName": { + "type": "string", + "value": "sqlvmbackupdemo-nsg" + }, + "adminPassword": { + "type": "securestring", + "value": "GEN-PASSWORD" + }, + "addressPrefix": { + "type": "string", + "value": "10.3.0.0/16" + }, + "subnetName": { + "type": "string", + "value": "GEN-VNET-SUBNET1-NAME" + }, + "subnetPrefix": { + "type": "string", + "value": "10.3.0.0/24" + }, + "publicIpAddressName": { + "type": "string", + "value": "sqlvmbackupdemo-ip" + }, + "publicIpAddressType": { + "type": "string", + "value": "Dynamic" + }, + "publicIpAddressSku": { + "type": "string", + "value": "Basic" + }, + "sqlConnectivityType": { + "type": "string", + "value": "Public" + }, + "sqlPortNumber": { + "type": "int", + "value": 1433 + }, + "sqlStorageDisksCount": { + "type": "int", + "value": 1 + }, + "sqlStorageWorkloadType": { + "type": "string", + "value": "GENERAL" + }, + "sqlStorageDisksConfigurationType": { + "type": "string", + "value": "NEW" + }, + "sqlStorageStartingDeviceId": { + "type": "int", + "value": 2 + }, + "sqlAutopatchingDayOfWeek": { + "type": "string", + "value": "Sunday" + }, + "sqlAutopatchingStartHour": { + "type": "string", + "value": "2" + }, + "sqlAutopatchingWindowDuration": { + "type": "string", + "value": "60" + }, + "sqlAuthenticationLogin": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "sqlAuthenticationPassword": { + "type": "securestring", + "value": "GEN-PASSWORD" + }, + "rServicesEnabled": { + "type": "string", + "value": "false" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "sqlvmbackupdemo", + "apiVersion": "2018-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sqlvmbackupdemo-ni" + ], + "properties": { + "osProfile": { + "computerName": "sqlvmbackupdemo", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": "true" + } + }, + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2016SP1-WS2016", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [ + { + "createOption": "empty", + "lun": 0, + "diskSizeGB": "1023", + "caching": "ReadOnly", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sqlvmbackupdemo-ni" + } + ] + } + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "name": "sqlvmbackupdemo", + "apiVersion": "2017-03-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/sqlvmbackupdemo", + "Microsoft.Compute/virtualMachines/sqlvmbackupdemo" + ], + "properties": { + "virtualMachineResourceId": "Microsoft.Compute/virtualMachines/sqlvmbackupdemo", + "AutoPatchingSettings": { + "Enable": true, + "DayOfWeek": "Sunday", + "MaintenanceWindowStartingHour": "2", + "MaintenanceWindowDuration": "60" + }, + "KeyVaultCredentialSettings": { + "Enable": false, + "CredentialName": "" + }, + "ServerConfigurationsManagementSettings": { + "SQLConnectivityUpdateSettings": { + "ConnectivityType": "Public", + "Port": 1433, + "SQLAuthUpdateUserName": "GEN-UNIQUE", + "SQLAuthUpdatePassword": "GEN-PASSWORD" + }, + "SQLWorkloadTypeUpdateSettings": { + "SQLWorkloadType": "GENERAL" + }, + "SQLStorageUpdateSettings": { + "DiskCount": 1, + "DiskConfigurationType": "NEW", + "StartingDeviceID": 2 + }, + "AdditionalFeaturesServerConfigurations": { + "IsRServicesEnabled": "false" + } + } + } + }, + { + "name": "GEN-VNET-NAME", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2018-08-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.3.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.3.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "sqlvmbackupdemo-ni", + "apiVersion": "2018-10-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME", + "Microsoft.Network/publicIpAddresses/sqlvmbackupdemo-ip", + "Microsoft.Network/networkSecurityGroups/sqlvmbackupdemo-nsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/sqlvmbackupdemo-ip" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sqlvmbackupdemo-nsg" + } + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "sku": { + "name": "Basic" + }, + "name": "sqlvmbackupdemo-ip", + "apiVersion": "2018-08-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIpAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "sqlvmbackupdemo-nsg", + "apiVersion": "2018-08-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "RDP", + "properties": { + "priority": 300, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389" + } + }, + { + "name": "default-allow-sql", + "properties": { + "priority": 1500, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "1433" + } + } + ] + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "virtualMachineName": { + "type": "string", + "value": "[parameters('virtualMachineName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1635 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1635 new file mode 100644 index 0000000..f8e5c95 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1635 @@ -0,0 +1,234 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/azuredeploy.parameters.json" + ], + "timestamp": 1642962909926, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-vm-workload-backup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1635", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1635", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "SqlBackupDemoVault", + "metadata": { + "description": "Name of the Vault" + } + }, + "vmResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource group of Compute VM containing the workload" + } + }, + "vmName": { + "type": "string", + "defaultValue": "sqlvmbackupdemo", + "metadata": { + "description": "Name of the Compute VM containing the workload" + } + }, + "policyName": { + "type": "string", + "metadata": { + "description": "Backup Policy Name" + }, + "value": "DailyFullHourlyLogDemo" + }, + "databaseInstanceName": { + "type": "string", + "metadata": { + "description": "Name of database server instance" + }, + "value": "mssqlserver" + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "Name of protectable data source i.e. Database Name" + }, + "value": "msdb" + }, + "isNewVault": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Conditional parameter for New or Existing Vault" + }, + "value": true + }, + "isNewPolicy": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Conditional parameter for New or Existing Backup Policy" + }, + "value": true + }, + "workloadType": { + "type": "string", + "defaultValue": "SQLDataBase", + "allowedValues": [ + "SQLDataBase" + ], + "metadata": { + "description": "Workload type which is installed in VM and Pre-Registration Steps are performed" + } + }, + "protectedItemType": { + "type": "string", + "defaultValue": "AzureVmWorkloadSQLDatabaseProtectedItem", + "allowedValues": [ + "AzureVmWorkloadSQLDatabaseProtectedItem" + ], + "metadata": { + "description": "Protected Item (Database) type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "skuName": "RS0", + "skuTier": "Standard", + "backupFabric": "Azure", + "containerType": "VMAppContainer", + "backupManagementType": "AzureWorkload" + }, + "resources": [ + { + "condition": true, + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2018-01-10", + "name": "SqlBackupDemoVault", + "location": "[resourceGroup().location]", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers", + "apiVersion": "2018-01-10", + "name": "SqlBackupDemoVault/Azure/VMAppContainer;compute;[resourceGroup().name];sqlvmbackupdemo", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults//SqlBackupDemoVault" + ], + "properties": { + "containerType": "VMAppContainer", + "backupManagementType": "AzureWorkload", + "workloadType": "SQLDataBase", + "friendlyName": "sqlvmbackupdemo", + "sourceResourceId": "[resourceGroup().name]/Microsoft.Compute/virtualMachines/sqlvmbackupdemo" + } + }, + { + "condition": true, + "type": "Microsoft.RecoveryServices/vaults/backupPolicies", + "apiVersion": "2018-01-10", + "name": "SqlBackupDemoVault/DailyFullHourlyLogDemo", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults//SqlBackupDemoVault" + ], + "properties": { + "backupManagementType": "AzureWorkload", + "workloadType": "SQLDataBase", + "settings": { + "timeZone": "UTC", + "issqlcompression": false, + "isCompression": false + }, + "subProtectionPolicy": [ + { + "policyType": "Full", + "schedulePolicy": { + "schedulePolicyType": "SimpleSchedulePolicy", + "scheduleRunFrequency": "Daily", + "scheduleRunTimes": [ + "2019-03-24T16:00:00Z" + ], + "scheduleWeeklyFrequency": 0 + }, + "retentionPolicy": { + "retentionPolicyType": "LongTermRetentionPolicy", + "dailySchedule": { + "retentionTimes": [ + "2019-03-24T16:00:00Z" + ], + "retentionDuration": { + "count": 30, + "durationType": "Days" + } + } + } + }, + { + "policyType": "Log", + "schedulePolicy": { + "schedulePolicyType": "LogSchedulePolicy", + "scheduleFrequencyInMins": 60 + }, + "retentionPolicy": { + "retentionPolicyType": "SimpleRetentionPolicy", + "retentionDuration": { + "count": 30, + "durationType": "Days" + } + } + } + ] + } + }, + { + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "apiVersion": "2018-01-10", + "name": "SqlBackupDemoVault/Azure/VMAppContainer;compute;[resourceGroup().name];sqlvmbackupdemo/SQLDataBase;mssqlserver;msdb", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/SqlBackupDemoVault", + "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/SqlBackupDemoVault/Azure/VMAppContainer;compute;[resourceGroup().name];sqlvmbackupdemo" + ], + "properties": { + "backupManagementType": "AzureWorkload", + "workloadType": "SQLDataBase", + "protectedItemType": "AzureVmWorkloadSQLDatabaseProtectedItem", + "friendlyName": "msdb", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/SqlBackupDemoVault/DailyFullHourlyLogDemo" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1636 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1636 new file mode 100644 index 0000000..0f13064 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1636 @@ -0,0 +1,282 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-weekly-backup-policy-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-weekly-backup-policy-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962909934, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.recoveryservices/recovery-services-weekly-backup-policy-create/azuredeploy.json", + "/quickstarts/microsoft.recoveryservices/recovery-services-weekly-backup-policy-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1636", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1636", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "16164887463485918606" + } + }, + "parameters": { + "vaultName": { + "type": "string", + "metadata": { + "description": "Name of the Recovery Services Vault" + }, + "value": "RSvault1" + }, + "policyName": { + "type": "string", + "metadata": { + "description": "Name of the Backup Policy" + }, + "value": "WeeklyBackupPolicy1" + }, + "scheduleRunDays": { + "type": "array", + "metadata": { + "description": "Backup Schedule will run on array of Days like, Monday, Tuesday etc. Applies in Weekly Backup Type only." + }, + "value": [ + "Sunday", + "Tuesday", + "Thursday" + ] + }, + "scheduleRunTimes": { + "type": "array", + "metadata": { + "description": "Times in day when backup should be triggered. e.g. 01:00, 13:00. This will be used in LTR too for daily, weekly, monthly and yearly backup." + }, + "value": [ + "2016-09-21T05:30:00Z" + ] + }, + "timeZone": { + "type": "string", + "metadata": { + "description": "Any Valid timezone, for example:UTC, Pacific Standard Time. Refer: https://msdn.microsoft.com/en-us/library/gg154758.aspx" + }, + "value": "UTC" + }, + "weeklyRetentionDurationCount": { + "type": "int", + "metadata": { + "description": "Number of weeks you want to retain the backup" + }, + "value": 104 + }, + "daysOfTheWeekForMontlyRetention": { + "type": "array", + "metadata": { + "description": "Array of Days for Monthly Retention (Min One or Max all values from scheduleRunDays, but not any other days which are not part of scheduleRunDays)" + }, + "value": [ + "Sunday", + "Tuesday" + ] + }, + "weeksOfTheMonthForMonthlyRetention": { + "type": "array", + "metadata": { + "description": "Array of Weeks for Monthly Retention - First, Second, Third, Fourth, Last" + }, + "value": [ + "First", + "Third" + ] + }, + "monthlyRetentionDurationCount": { + "type": "int", + "metadata": { + "description": "Number of months you want to retain the backup" + }, + "value": 60 + }, + "monthsOfYear": { + "type": "array", + "metadata": { + "description": "Array of Months for Yearly Retention" + }, + "value": [ + "January", + "March", + "August" + ] + }, + "daysOfTheWeekForYearlyRetention": { + "type": "array", + "metadata": { + "description": "Array of Days for Yearly Retention (Min One or Max all values from scheduleRunDays, but not any other days which are not part of scheduleRunDays)" + }, + "value": [ + "Sunday", + "Tuesday" + ] + }, + "weeksOfTheMonthForYearlyRetention": { + "type": "array", + "metadata": { + "description": "Array of Weeks for Yearly Retention - First, Second, Third, Fourth, Last" + }, + "value": [ + "First", + "Third" + ] + }, + "yearlyRetentionDurationCount": { + "type": "int", + "metadata": { + "description": "Number of years you want to retain the backup" + }, + "value": 10 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2020-10-01", + "name": "RSvault1", + "location": "[resourceGroup().location]", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "apiVersion": "2016-06-01", + "name": "[format('{0}/{1}', parameters('vaultName'), parameters('policyName'))]", + "type": "Microsoft.RecoveryServices/vaults/backupPolicies", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/RSvault1" + ], + "location": "[resourceGroup().location]", + "properties": { + "backupManagementType": "AzureIaasVM", + "instantRpRetentionRangeInDays": 5, + "schedulePolicy": { + "scheduleRunFrequency": "Weekly", + "scheduleRunDays": [ + "Sunday", + "Tuesday", + "Thursday" + ], + "scheduleRunTimes": [ + "2016-09-21T05:30:00Z" + ], + "schedulePolicyType": "SimpleSchedulePolicy" + }, + "retentionPolicy": { + "weeklySchedule": { + "daysOfTheWeek": [ + "Sunday", + "Tuesday", + "Thursday" + ], + "retentionTimes": [ + "2016-09-21T05:30:00Z" + ], + "retentionDuration": { + "count": 104, + "durationType": "Weeks" + } + }, + "monthlySchedule": { + "retentionScheduleFormatType": "Weekly", + "retentionScheduleDaily": { + "daysOfTheMonth": [ + { + "date": 1, + "isLast": false + } + ] + }, + "retentionScheduleWeekly": { + "daysOfTheWeek": [ + "Sunday", + "Tuesday" + ], + "weeksOfTheMonth": [ + "First", + "Third" + ] + }, + "retentionTimes": [ + "2016-09-21T05:30:00Z" + ], + "retentionDuration": { + "count": 60, + "durationType": "Months" + } + }, + "yearlySchedule": { + "retentionScheduleFormatType": "Weekly", + "monthsOfYear": [ + "January", + "March", + "August" + ], + "retentionScheduleDaily": { + "daysOfTheMonth": [ + { + "date": 1, + "isLast": false + } + ] + }, + "retentionScheduleWeekly": { + "daysOfTheWeek": [ + "Sunday", + "Tuesday" + ], + "weeksOfTheMonth": [ + "First", + "Third" + ] + }, + "retentionTimes": [ + "2016-09-21T05:30:00Z" + ], + "retentionDuration": { + "count": 10, + "durationType": "Years" + } + }, + "retentionPolicyType": "LongTermRetentionPolicy" + }, + "timeZone": "UTC" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1637 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1637 new file mode 100644 index 0000000..aed7bdc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1637 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-all-resources/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-all-resources/azuredeploy.parameters.json" + ], + "timestamp": 1642962909942, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-all-resources/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-all-resources/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1637", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1637", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Relay namespace" + }, + "value": "GEN-UNIQUE" + }, + "wcfRelayName": { + "type": "string", + "metadata": { + "description": "Name of the WCF Relay" + }, + "value": "GEN-UNIQUE" + }, + "wcfRelayType": { + "type": "string", + "allowedValues": [ + "NetTcp", + "Http" + ], + "metadata": { + "description": "WCF Relay Type. It could be any of the types: NetTcp/Http" + }, + "value": "NetTcp" + }, + "hybridConnectionName": { + "type": "string", + "metadata": { + "description": "Name of the HybridConnection" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Relay/Namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "wcfRelays", + "dependsOn": [ + "Microsoft.Relay/namespaces/GEN-UNIQUE" + ], + "properties": { + "relayType": "NetTcp", + "requiresClientAuthorization": "false", + "requiresTransportSecurity": "false", + "userMetadata": "Meta Data supplied by user for wcfRelays" + } + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "HybridConnections", + "dependsOn": [ + "Microsoft.Relay/namespaces/GEN-UNIQUE" + ], + "properties": { + "requiresClientAuthorization": "true", + "userMetadata": "Meta Data supplied by user hybridConnections" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1638 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1638 new file mode 100644 index 0000000..df06826 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1638 @@ -0,0 +1,129 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-hybridconnection/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-hybridconnection/azuredeploy.parameters.json" + ], + "timestamp": 1642962909950, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-hybridconnection/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-hybridconnection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1638", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1638", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Relay namespace" + }, + "value": "GEN-UNIQUE" + }, + "namespaceAuthorizationRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Namespace AuthorizationRule" + }, + "value": "GEN-UNIQUE" + }, + "hybridConnectionName": { + "type": "string", + "metadata": { + "description": "Name of the HybridConnection" + }, + "value": "GEN-UNIQUE" + }, + "hybridConnectionAuthorizationRuleName": { + "type": "string", + "metadata": { + "description": "Name of the HybridConnection AuthorizationRule" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "namespaceAuthRuleName": "GEN-UNIQUE/GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.Relay/Namespaces", + "location": "[resourceGroup().location]", + "kind": "Relay", + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "HybridConnections", + "dependsOn": [ + "Microsoft.Relay/namespaces//GEN-UNIQUE" + ], + "properties": { + "requiresClientAuthorization": "true", + "userMetadata": "Meta Data supplied by user hybridConnections" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "authorizationRules", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "Rights": [ + "Listen" + ] + } + } + ] + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "type": "Microsoft.Relay/namespaces/authorizationRules", + "dependsOn": [ + "Microsoft.Relay/namespaces//GEN-UNIQUE" + ], + "properties": { + "Rights": [ + "Send" + ] + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1639 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1639 new file mode 100644 index 0000000..1d0f1af --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1639 @@ -0,0 +1,145 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-wcfrelay/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-wcfrelay/azuredeploy.parameters.json" + ], + "timestamp": 1642962909958, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-wcfrelay/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-authrule-namespace-and-wcfrelay/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1639", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1639", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Relay namespace" + }, + "value": "GEN-UNIQUE" + }, + "namespaceAuthorizationRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Namespace AuthorizationRule" + }, + "value": "GEN-UNIQUE" + }, + "wcfrelayName": { + "type": "string", + "metadata": { + "description": "Name of the WcfRelay" + }, + "value": "GEN-UNIQUE" + }, + "wcfRelayType": { + "type": "string", + "allowedValues": [ + "NetTcp", + "Http" + ], + "metadata": { + "description": "WCF Relay Type. It could be any of the types: NetTcp/Http" + }, + "value": "NetTcp" + }, + "wcfrelayAuthorizationRuleName": { + "type": "string", + "metadata": { + "description": "Name of the WcfRelay AuthorizationRule" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "location": "[resourceGroup().location]", + "apiVersion": "2017-04-01", + "namespaceAuthRuleName": "GEN-UNIQUE/GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.Relay/Namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "WcfRelays", + "dependsOn": [ + "Microsoft.Relay/namespaces//GEN-UNIQUE" + ], + "properties": { + "relayType": "NetTcp", + "requiresClientAuthorization": "false", + "requiresTransportSecurity": "false", + "userMetadata": "Meta Data supplied by user for wcfRelays" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "authorizationRules", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "Rights": [ + "Listen" + ] + } + } + ] + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "type": "Microsoft.Relay/namespaces/authorizationRules", + "dependsOn": [ + "Microsoft.Relay/namespaces//GEN-UNIQUE" + ], + "properties": { + "Rights": [ + "Send" + ] + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT164 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT164 new file mode 100644 index 0000000..6ae7da4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT164 @@ -0,0 +1,239 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/prereqs/prereq.azuredeploy.json", + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962889004, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/prereqs/prereq.azuredeploy.json", + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT164", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.domainregistration/domains", + "microsoft.network/dnszones" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT164", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "key1": { + "type": "string", + "value": "DNRA" + }, + "key2": { + "type": "string", + "value": "DNPA" + }, + "AgreedBy": { + "type": "string", + "value": "172.1.0.168:5000" + }, + "AgreedAt": { + "type": "string", + "value": "2020-07-09T15:52:14.3666389Z" + }, + "Address1": { + "type": "string", + "value": "123 address line1" + }, + "Address2": { + "type": "string", + "value": "" + }, + "City": { + "type": "string", + "value": "San Jose" + }, + "Country": { + "type": "string", + "value": "US" + }, + "PostalCode": { + "type": "string", + "value": "95134" + }, + "State": { + "type": "string", + "value": "California" + }, + "Email": { + "type": "string", + "value": "abc_email@gmail.com" + }, + "Fax": { + "type": "string", + "value": "" + }, + "JobTitle": { + "type": "string", + "value": "" + }, + "NameFirst": { + "type": "string", + "value": "tim" + }, + "NameLast": { + "type": "string", + "value": "watson" + }, + "NameMiddle": { + "type": "string", + "value": "" + }, + "Organization": { + "type": "string", + "value": "IBM" + }, + "Phone": { + "type": "string", + "value": "+1.1234567890" + }, + "autoRenew": { + "type": "bool", + "value": false + }, + "targetDnsType": { + "type": "string", + "value": "AzureDns" + }, + "dnsZoneName": { + "type": "string", + "defaultValue": "[concat(uniqueString(resourceGroup().id), '.net')]" + } + }, + "variables": { + "dnsZoneRG": "[resourceGroup().name]" + }, + "resources": [ + { + "type": "Microsoft.DomainRegistration/domains", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Network/dnszones/[concat(uniqueString(resourceGroup().id), '.net')]" + ], + "name": "[concat(uniqueString(resourceGroup().id), '.net')]", + "location": "global", + "Properties": { + "Consent": { + "AgreementKeys": [ + "DNRA", + "DNPA" + ], + "AgreedBy": "172.1.0.168:5000", + "AgreedAt": "2020-07-09T15:52:14.3666389Z" + }, + "ContactAdmin": { + "AddressMailing": { + "Address1": "123 address line1", + "Address2": "", + "City": "San Jose", + "Country": "US", + "PostalCode": "95134", + "State": "California" + }, + "Email": "abc_email@gmail.com", + "Fax": "", + "JobTitle": "", + "NameFirst": "tim", + "NameLast": "watson", + "NameMiddle": "", + "Organization": "IBM", + "Phone": "+1.1234567890" + }, + "ContactBilling": { + "AddressMailing": { + "Address1": "123 address line1", + "Address2": "", + "City": "San Jose", + "Country": "US", + "PostalCode": "95134", + "State": "California" + }, + "Email": "abc_email@gmail.com", + "Fax": "", + "JobTitle": "", + "NameFirst": "tim", + "NameLast": "watson", + "NameMiddle": "", + "Organization": "IBM", + "Phone": "+1.1234567890" + }, + "ContactRegistrant": { + "AddressMailing": { + "Address1": "123 address line1", + "Address2": "", + "City": "San Jose", + "Country": "US", + "PostalCode": "95134", + "State": "California" + }, + "Email": "abc_email@gmail.com", + "Fax": "", + "JobTitle": "", + "NameFirst": "tim", + "NameLast": "watson", + "NameMiddle": "", + "Organization": "IBM", + "Phone": "+1.1234567890" + }, + "ContactTech": { + "AddressMailing": { + "Address1": "123 address line1", + "Address2": "", + "City": "San Jose", + "Country": "US", + "PostalCode": "95134", + "State": "California" + }, + "Email": "abc_email@gmail.com", + "Fax": "", + "JobTitle": "", + "NameFirst": "tim", + "NameLast": "watson", + "NameMiddle": "", + "Organization": "IBM", + "Phone": "+1.1234567890" + }, + "privacy": true, + "autoRenew": false, + "targetDnsType": "AzureDns", + "dnsZoneId": "Microsoft.Network/dnszones/[concat(uniqueString(resourceGroup().id), '.net')]" + } + }, + { + "type": "Microsoft.Network/dnszones", + "name": "[concat(uniqueString(resourceGroup().id), '.net')]", + "apiVersion": "2018-05-01", + "location": "global", + "properties": {} + } + ], + "outputs": { + "dnsZone": { + "type": "string", + "value": "[parameters('dnsZoneName')]" + }, + "dnsZoneRG": { + "type": "string", + "value": "[variables('dnsZoneRG')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1640 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1640 new file mode 100644 index 0000000..aec79ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1640 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-hybridconnection/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-hybridconnection/azuredeploy.parameters.json" + ], + "timestamp": 1642962909965, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-hybridconnection/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-hybridconnection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1640", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1640", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Relay namespace" + }, + "value": "GEN-UNIQUE" + }, + "hybridConnectionName": { + "type": "string", + "metadata": { + "description": "Name of the HybridConnection" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.Relay/Namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "HybridConnections", + "dependsOn": [ + "Microsoft.Relay/namespaces/GEN-UNIQUE" + ], + "properties": { + "requiresClientAuthorization": "true", + "userMetadata": "Meta Data supplied by user for hybridConnections" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1641 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1641 new file mode 100644 index 0000000..ff87b60 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1641 @@ -0,0 +1,61 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-namespace/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-namespace/azuredeploy.parameters.json" + ], + "timestamp": 1642962909973, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-namespace/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-namespace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1641", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1641", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nameSpace": { + "type": "string", + "metadata": { + "description": "Name of the Azure Relay namespace" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.Relay/Namespaces", + "location": "[resourceGroup().location]", + "kind": "Relay", + "properties": {} + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1642 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1642 new file mode 100644 index 0000000..01722ba --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1642 @@ -0,0 +1,97 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-wcfrelay/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-wcfrelay/azuredeploy.parameters.json" + ], + "timestamp": 1642962909979, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.relay/azure-relay-create-wcfrelay/azuredeploy.json", + "/quickstarts/microsoft.relay/azure-relay-create-wcfrelay/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1642", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.relay/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1642", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Relay namespace" + }, + "value": "GEN-UNIQUE" + }, + "wcfRelayName": { + "type": "string", + "metadata": { + "description": "Name of the WCF Relay" + }, + "value": "GEN-UNIQUE" + }, + "wcfRelayType": { + "type": "string", + "allowedValues": [ + "NetTcp", + "Http" + ], + "metadata": { + "description": "WCF Relay Type. It could be any of the types: NetTcp/Http" + }, + "value": "NetTcp" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.Relay/Namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "wcfRelays", + "dependsOn": [ + "Microsoft.Relay/namespaces/GEN-UNIQUE" + ], + "properties": { + "relayType": "NetTcp", + "requiresClientAuthorization": "false", + "requiresTransportSecurity": "false", + "userMetadata": "Meta Data supplied by user for wcfRelays" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1643 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1643 new file mode 100644 index 0000000..2bc6c20 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1643 @@ -0,0 +1,90 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909986, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1643", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1643", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accessPolicies": { + "type": "array", + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "secrets": [ + "set" + ] + } + } + ] + } + }, + "resources": [ + { + "name": "prereqs", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "accessPolicies": { + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "secrets": [ + "set" + ] + } + } + ] + } + } + } + } + ], + "outputs": { + "vaultName": { + "type": "string", + "value": "[reference('prereqs').outputs.vaultName.value]" + }, + "vaultResourceGroup": { + "type": "string", + "value": "[reference('prereqs').outputs.vaultResourceGroup.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1644 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1644 new file mode 100644 index 0000000..4417b13 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1644 @@ -0,0 +1,218 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/azuredeploy.json", + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/azuredeploy.parameters.json" + ], + "timestamp": 1642962909993, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/azuredeploy.json", + "/quickstarts/microsoft.resources/deployment-script-ssh-key-gen/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1644", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.authorization/roleassignments", + "microsoft.managedidentity/userassignedidentities", + "microsoft.resources/deploymentscripts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1644", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location for the script resource." + } + }, + "newGuid": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "forceUpdateTag property, used to force the execution of the script resource when no other properties have changed." + } + }, + "passPhrase": { + "type": "string", + "minLength": 6, + "maxLength": 64, + "metadata": { + "description": "Passphrase used when generating the key pair." + }, + "value": "GEN-UNIQUE" + }, + "vaultName": { + "type": "string", + "metadata": { + "description": "The name of the keyVault to store the keys in." + }, + "value": "GET-PREREQ-vaultName" + }, + "secretName": { + "type": "string", + "defaultValue": "privateKey", + "metadata": { + "description": "The name of the secret in keyVault to store the keys in." + } + }, + "vaultResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The resourceGroup for the keyVault." + }, + "value": "GET-PREREQ-vaultResourceGroup" + }, + "vaultSubscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "The subscriptionId for the keyVault." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "scriptName": "createKeys", + "identityName": "scratch", + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "roleDefinitionName": "[guid(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName')), variables('roleDefinitionId'), resourceGroup().id)]" + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "name": "scratch", + "apiVersion": "2018-11-30", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName')), variables('roleDefinitionId'), resourceGroup().id)]", + "dependsOn": [ + "scratch" + ], + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "principalId": "[reference(variables('identityName')).principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "createKeys", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[guid(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName')), variables('roleDefinitionId'), resourceGroup().id)]" + ], + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {} + } + }, + "kind": "AzureCLI", + "properties": { + "forceUpdateTag": "[newGuid()]", + "AzCliVersion": "2.0.80", + "timeout": "PT30M", + "retentionInterval": "P1D", + "cleanupPreference": "OnSuccess", + "arguments": "GEN-UNIQUE", + "primaryScriptUri": "[uri(parameters('_artifactsLocation'), concat('new-key.sh', parameters('_artifactsLocationSasToken')))]" + } + }, + { + "apiVersion": "2019-09-01", + "name": "storeSshKeys", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "GET-PREREQ-vaultResourceGroup", + "subscriptionId": "[subscription().subscriptionId]", + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "keys": { + "value": "[reference(variables('scriptName')).outputs.keyinfo]" + }, + "vaultName": { + "value": "GET-PREREQ-vaultName" + }, + "secretName": { + "value": "privateKey" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "keys": { + "type": "secureObject" + }, + "vaultName": { + "type": "string" + }, + "secretName": { + "type": "string" + } + }, + "resources": [ + { + "name": "GET-PREREQ-vaultName/privateKey", + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "properties": { + "value": "keys" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "outputs": { + "outputs": { + "type": "string", + "value": "[reference(variables('scriptName')).outputs.keyinfo.publicKey]" + }, + "status": { + "type": "object", + "value": "[reference(variables('scriptName')).status]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1645 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1645 new file mode 100644 index 0000000..c090cf9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1645 @@ -0,0 +1,130 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962909999, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1645", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/templatespecs" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1645", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "templateSpecName": { + "type": "string", + "defaultValue": "ManagedDisk", + "metadata": { + "description": "Name of the templateSpec" + } + }, + "templateSpecVersion": { + "type": "string", + "defaultValue": "0.1", + "metadata": { + "description": "Version for this instance of the templateSpec" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "name": "ManagedDisk", + "type": "Microsoft.Resources/templateSpecs", + "apiVersion": "2019-06-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "description": "A basic templateSpec - creates a managed disk.", + "displayName": "Managed Disk (Standard_LRS)" + }, + "resources": [ + { + "name": "0.1", + "type": "versions", + "apiVersion": "2019-06-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "ManagedDisk" + ], + "properties": { + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "diskName": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/disks", + "name": "[[parameters('diskName')]", + "apiVersion": "2020-05-01", + "location": "[[parameters('location')]", + "sku": { + "name": "Standard_LRS" + }, + "properties": { + "creationData": { + "createOption": "Empty" + }, + "diskSizeGB": 64 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ] + } + ], + "outputs": { + "templateSpecName": { + "type": "string", + "value": "[parameters('templateSpecName')]" + }, + "templateSpecVersion": { + "type": "string", + "value": "[parameters('templateSpecVersion')]" + }, + "templateSpecResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "templateSpecSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1646 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1646 new file mode 100644 index 0000000..21bce3c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1646 @@ -0,0 +1,94 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-create/azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910007, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-create/azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1646", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1646", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "templateSpecSubscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "SubscriptionId of the subscription that contains the templateSpec to deploy" + }, + "value": "GET-PREREQ-templateSpecSubscriptionId" + }, + "templateSpecResourceGroupName": { + "type": "string", + "metadata": { + "description": "Name of the resourceGroup that contains the templateSpec" + }, + "value": "GET-PREREQ-templateSpecResourceGroupName" + }, + "templateSpecName": { + "type": "string", + "metadata": { + "description": "Name of the templateSpec" + }, + "value": "GET-PREREQ-templateSpecName" + }, + "templateSpecVersion": { + "type": "string", + "metadata": { + "description": "Version for this instance of the templateSpec" + }, + "value": "GET-PREREQ-templateSpecVersion" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources created by the templateSpec." + } + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[format('{0}-{1}-deployment', parameters('templateSpecName'), parameters('templateSpecVersion'))]", + "properties": { + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "diskName": { + "value": "disk-from-templateSpec" + } + }, + "templateLink": { + "id": "GET-PREREQ-templateSpecSubscriptionId/GET-PREREQ-templateSpecResourceGroupName/Microsoft.Resources/templateSpecs/versions/GET-PREREQ-templateSpecName/GET-PREREQ-templateSpecVersion" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1647 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1647 new file mode 100644 index 0000000..2e991e7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1647 @@ -0,0 +1,119 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-migrate-create/nested/managed-disk-templatespec.json" + ], + "timestamp": 1642962910015, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-migrate-create/nested/managed-disk-templatespec.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1647", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/templatespecs" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1647", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "templateSpecName": { + "type": "string", + "defaultValue": "ManagedDisk", + "metadata": { + "description": "Name of the templateSpec" + } + }, + "templateSpecVersion": { + "type": "string", + "defaultValue": "0.1", + "metadata": { + "description": "Version for this instance of the templateSpec" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "name": "ManagedDisk", + "type": "Microsoft.Resources/templateSpecs", + "apiVersion": "2021-05-01", + "location": "location", + "properties": { + "description": "A basic templateSpec - creates a managed disk.", + "displayName": "Managed Disk (Standard_LRS)" + }, + "resources": [ + { + "name": "0.1", + "type": "versions", + "apiVersion": "2021-05-01", + "location": "location", + "dependsOn": [ + "ManagedDisk" + ], + "properties": { + "mainTemplate": { + "contentVersion": "1.0.0.0", + "parameters": { + "diskName": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/disks", + "name": "[[parameters('diskName')]", + "apiVersion": "2020-06-30", + "location": "[[parameters('location')]", + "sku": { + "name": "Standard_LRS" + }, + "properties": { + "creationData": { + "createOption": "Empty" + }, + "diskSizeGB": 64 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ] + } + ], + "outputs": { + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Resources/templateSpecs/versions', parameters('templateSpecName'), parameters('templateSpecVersion'))]" + }, + "mainTemplate": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Resources/templateSpecs/versions', parameters('templateSpecName'), parameters('templateSpecVersion'))).mainTemplate]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1648 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1648 new file mode 100644 index 0000000..682f6e6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1648 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-migrate-create/azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-migrate-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910025, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.resources/templatespec-migrate-create/azuredeploy.json", + "/quickstarts/microsoft.resources/templatespec-migrate-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1648", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1648", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "templateSpecFiles": { + "type": "array", + "metadata": { + "description": "An array of template files to deploy." + }, + "value": [ + "nested/managed-disk-templatespec.json" + ] + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "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." + } + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('templateSpec-', replace(last(split(parameters('templateSpecFiles')[copyIndex()], '/')), '.json', ''))]", + "properties": { + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "relativePath": "[concat(parameters('templateSpecFiles')[copyIndex()], parameters('_artifactsLocationSasToken'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1649 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1649 new file mode 100644 index 0000000..5075ffe --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1649 @@ -0,0 +1,178 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.scheduler/scheduler-webapp/azuredeploy.json", + "/quickstarts/microsoft.scheduler/scheduler-webapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962910034, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.scheduler/scheduler-webapp/azuredeploy.json", + "/quickstarts/microsoft.scheduler/scheduler-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1649", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.scheduler/jobcollections", + "microsoft.web/serverfarms", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1649", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "appSvcPlanName": { + "type": "string", + "metadata": { + "description": "The name of the App Service Plan that will host the Web App." + }, + "value": "GEN-UNIQUE-6" + }, + "svcPlanSize": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "The instance size of the App Service Plan." + } + }, + "svcPlanSku": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "The pricing tier of the App Service plan." + } + }, + "webAppName": { + "type": "string", + "metadata": { + "description": "The name of the Web App." + }, + "value": "GEN-UNIQUE" + }, + "jobCollectionName": { + "type": "string", + "metadata": { + "description": "The name of the job collection." + }, + "value": "GEN-UNIQUE-10" + }, + "jobName": { + "type": "string", + "metadata": { + "description": "The name of the job." + }, + "value": "GEN-UNIQUE-10" + }, + "sku": { + "type": "object", + "defaultValue": { + "name": "Standard" + }, + "metadata": { + "description": "sku for job collection." + } + } + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-6", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1", + "tier": "S1", + "capacity": 1 + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverFarms//GEN-UNIQUE-6" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "GEN-UNIQUE-6" + } + }, + { + "apiVersion": "2016-03-01", + "type": "Microsoft.Scheduler/jobCollections", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Standard" + } + }, + "resources": [ + { + "apiVersion": "2016-03-01", + "type": "jobs", + "name": "GEN-UNIQUE-10", + "dependsOn": [ + "Microsoft.Scheduler/jobCollections//GEN-UNIQUE-10" + ], + "properties": { + "state": "Enabled", + "action": { + "type": "Http", + "request": { + "uri": "[concat('http://', reference(resourceId('Microsoft.Web/sites', parameters('webAppName'))).hostNames[0])]", + "method": "GET", + "retryPolicy": { + "retryType": "None" + } + } + }, + "recurrence": { + "interval": 1, + "frequency": "Week", + "schedule": { + "weekDays": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "hours": [ + 10, + 12 + ], + "minutes": [ + 0, + 30 + ] + } + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT165 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT165 new file mode 100644 index 0000000..c06f51a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT165 @@ -0,0 +1,2337 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/azuredeploy.json", + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/azuredeploy.parameters.json" + ], + "timestamp": 1642962889031, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/azuredeploy.json", + "/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT165", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.recoveryservices/vaults", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/virtualnetworks/providers/roleassignments", + "microsoft.network/networksecuritygroups", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.storage/storageaccounts", + "microsoft.authorization/roledefinitions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT165", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URL 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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/ibm-cloud-pak/ibm-cloud-pak-for-data/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Token for the base URL 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." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "Region where the resources should be created in" + }, + "defaultValue": "[resourceGroup().location]" + }, + "aadClientId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Azure AD Client ID" + }, + "value": "see readme.md for details on how to create the SP" + }, + "aadClientSecret": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Azure AD Client Secret" + }, + "value": "see readme.md for details on how to create the SP" + }, + "adminUsername": { + "type": "string", + "minLength": 4, + "metadata": { + "description": "Administrator username on Bastion VM" + }, + "value": "GEN-UNIQUE" + }, + "bastionVmSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "Bastion Host VM size. Use VMs with Premium Storage support only." + } + }, + "publicBootnodeIP": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Attach a public IP to the bastion/bootnode" + } + }, + "sshPublicKey": { + "type": "string", + "metadata": { + "description": "SSH public key for all VMs" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "masterInstanceCount": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 3, + 5 + ], + "metadata": { + "description": "Number of OpenShift masters." + } + }, + "workerInstanceCount": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "metadata": { + "description": "Number of OpenShift nodes" + } + }, + "masterVmSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "OpenShift Master VM size. Use VMs with Premium Storage support only." + } + }, + "workerVmSize": { + "type": "string", + "defaultValue": "Standard_D16s_v3", + "metadata": { + "description": "OpenShift Node VM(s) size. Use VMs with Premium Storage support only." + } + }, + "newOrExistingNetwork": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Deploy in new cluster or in existing cluster. If existing cluster, make sure the new resources are in the same zone" + } + }, + "existingVnetResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource Group for Existing Vnet." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNet", + "metadata": { + "description": "Name of new or existing virtual network" + } + }, + "virtualNetworkCIDR": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "VNet Address Prefix. Minimum address prefix is /24" + } + }, + "masterSubnetName": { + "type": "string", + "defaultValue": "masterSubnet", + "metadata": { + "description": "Name of new or existing master subnet" + } + }, + "masterSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "Master subnet address prefix" + } + }, + "workerSubnetName": { + "type": "string", + "defaultValue": "workerSubnet", + "metadata": { + "description": "Name of new or existing worker subnet" + } + }, + "workerSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.2.0/24", + "metadata": { + "description": "Worker subnet address prefix" + } + }, + "bastionSubnetName": { + "type": "string", + "defaultValue": "bastionSubnet", + "metadata": { + "description": "Name of new or existing bastion subnet" + } + }, + "bastionSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.3.0/27", + "metadata": { + "description": "Worker subnet address prefix" + } + }, + "singleZoneOrMultiZone": { + "type": "string", + "defaultValue": "az", + "allowedValues": [ + "az", + "noha" + ], + "metadata": { + "description": "Deploy to a Single AZ or multiple AZs" + }, + "value": "noha" + }, + "dnsZone": { + "type": "string", + "metadata": { + "description": "Domain name created with the App Service" + }, + "value": "GET-PREREQ-dnsZone" + }, + "dnsZoneRG": { + "type": "string", + "metadata": { + "description": "Resource Group that contains the domain name" + }, + "value": "GET-PREREQ-dnsZoneRG" + }, + "pullSecret": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Openshift PullSecret JSON Blob" + } + }, + "clusterName": { + "type": "string", + "defaultValue": "myocp", + "metadata": { + "description": "Cluster resources prefix" + } + }, + "openshiftUsername": { + "type": "string", + "metadata": { + "description": "OpenShift login username" + }, + "value": "GEN-UNIQUE" + }, + "openshiftPassword": { + "type": "securestring", + "minLength": 8, + "metadata": { + "description": "OpenShift login password" + }, + "value": "GEN-PASSWORD" + }, + "enableFips": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable FIPS encryption" + } + }, + "enableAutoscaler": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable or Disable Openshift Autoscaler" + } + }, + "outboundType": { + "type": "string", + "defaultValue": "Loadbalancer", + "allowedValues": [ + "Loadbalancer", + "UserDefinedRouting" + ], + "metadata": { + "description": "Egress: Azure LoadBalancer or UserDefinedRouting" + } + }, + "clusterResourceGroupName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "ResourceGroup for the Cluster. An empty resource group should be created before and the name has to be passed here. If no value passed, then the openshift installer will create a resource group based on the cluster name." + }, + "value": "GEN-UNIQUE" + }, + "storageOption": { + "type": "string", + "defaultValue": "nfs", + "allowedValues": [ + "portworx", + "nfs", + "ocs", + "none" + ] + }, + "pxSpecUrl": { + "type": "string", + "metadata": { + "description": "Portworx Spec URL. See README on how to generate the URL" + }, + "defaultValue": "" + }, + "enableNfsBackup": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Enable Backup on NFS node" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1024, + "allowedValues": [ + 512, + 1024, + 2048 + ], + "metadata": { + "description": "Size of Datadisk in GB for NFS storage" + } + }, + "privateOrPublicEndpoints": { + "type": "string", + "defaultValue": "public", + "allowedValues": [ + "public", + "private" + ], + "metadata": { + "description": "Public or private facing endpoints" + } + }, + "projectName": { + "type": "string", + "defaultValue": "zen", + "metadata": { + "description": "Openshift Namespace to deploy project" + } + }, + "installWatsonStudioLocal": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install Watson Studio Library" + } + }, + "installWatsonMachineLearning": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install Watson Machine Learning" + } + }, + "installWatsonKnowledgeCatalog": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install Watson Knowledge Catalog" + } + }, + "installDataVirtualization": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install Data Virtualization" + } + }, + "installCognosDashboard": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install Cognos Dashboard" + } + }, + "installWatsonOpenscale": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install Watson OpenScale and Watson Machine Learning" + } + }, + "installAnalyticsEngine": { + "type": "string", + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ], + "metadata": { + "description": "Install AnalyticsEngine (Spark)" + } + }, + "apiKey": { + "type": "securestring", + "metadata": { + "description": "IBM Container Registry API Key. See README on how to obtain this" + } + }, + "cloudPakLicenseAgreement": { + "type": "string", + "defaultValue": "reject", + "allowedValues": [ + "accept", + "reject" + ], + "metadata": { + "description": "Accept License Agreement: https://ibm.biz/Bdq6KP" + } + } + }, + "variables": { + "networkResourceGroup": "[resourceGroup().name]", + "redHatTags": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + }, + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-RAW", + "version": "latest" + }, + "bastionHostname": "bastionNode", + "nfsHostname": "nfsNode", + "nfsVmSize": "Standard_D8s_v3", + "workerSecurityGroupName": "worker-nsg", + "masterSecurityGroupName": "master-nsg", + "bastionSecurityGroupName": "bastion-nsg", + "vTrue": true, + "diagStorageAccountName": "[concat('diag', uniqueString(resourceGroup().id))]", + "bastionPublicIpDnsLabel": "[concat('bastiondns', uniqueString(resourceGroup().id))]", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "clusterNodeDeploymentTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/clusternode.json', parameters('_artifactsLocationSasToken')))]", + "openshiftDeploymentTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/openshiftdeploy.json', parameters('_artifactsLocationSasToken')))]", + "openshiftDeploymentScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployOpenShift.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakDeploymentTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "cloudPakDeploymentScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakLite.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakDeploymentScriptFileName": "deployCloudPakLite.sh", + "cloudPakCCSScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakCCS.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakCCSScriptFileName": "deployCloudPakCCS.sh", + "cloudPakWSLScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWSL.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakWSLScriptFileName": "deployCloudPakWSL.sh", + "cloudPakDB2UScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakDB2U.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakDB2UScriptFileName": "deployCloudPakDB2U.sh", + "cloudPakDB2aaServiceScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakDB2aaService.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakDB2aaServiceScriptFileName": "deployCloudPakDB2aaService.sh", + "cloudPakDMCScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakDMC.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakDMCScriptFileName": "deployCloudPakDMC.sh", + "cloudPakDVScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakDV.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakDVScriptFileName": "deployCloudPakDV.sh", + "cloudPakCDEScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakCDE.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakCDEScriptFileName": "deployCloudPakCDE.sh", + "cloudPakWMLScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWML.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakWMLScriptFileName": "deployCloudPakWML.sh", + "cloudPakWOSScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWOS.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakWOSScriptFileName": "deployCloudPakWOS.sh", + "cloudPakAnalyticsEngineScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakAnalyticsEngine.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakAnalyticsEngineScriptFileName": "deployCloudPakAnalyticsEngine.sh", + "cloudPakWKCCoreScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWKCCore.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakWKCCoreScriptFileName": "deployCloudPakWKCCore.sh", + "cloudPakWKCIISScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWKCIIS.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakWKCIISScriptFileName": "deployCloudPakWKCIIS.sh", + "cloudPakWKCUGScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWKCUG.sh', parameters('_artifactsLocationSasToken')))]", + "cloudPakWKCUGScriptFileName": "deployCloudPakWKCUG.sh", + "cloudPakConfigScriptFileName": "openshiftCloudPakConfig.sh", + "cloudPakConfigScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/openshiftCloudPakConfig.sh', parameters('_artifactsLocationSasToken')))]", + "nfsInstallScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/setup-nfs.sh', parameters('_artifactsLocationSasToken')))]", + "openshiftDeploymentScriptFileName": "deployOpenShift.sh", + "nfsInstallScriptFileName": "setup-nfs.sh", + "installOCSDeploymentScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/install-ocs.sh', parameters('_artifactsLocationSasToken')))]", + "installOCSDeploymentTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/ocs.json', parameters('_artifactsLocationSasToken')))]", + "installOCSScriptFileName": "install-ocs.sh", + "vaultName": "nfsNode-vault", + "backupFabric": "Azure", + "backupPolicyName": "DefaultPolicy", + "protectionContainer": "[concat('iaasvmcontainer;iaasvmcontainerv2;', resourceGroup().name, ';', variables('nfsHostname'))]", + "protectedItem": "[concat('vm;iaasvmcontainerv2;', resourceGroup().name, ';', variables('nfsHostname'))]", + "deployOpenshiftExt": "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "publicIpId": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('bastionPublicIpDnsLabel'))]" + }, + "networkReadAction": [ + "Microsoft.Network/virtualNetworks/read" + ], + "roleDefName": "[guid(subscription().id, string(variables('networkReadAction')))]" + }, + "resources": [ + { + "type": "Microsoft.Authorization/roleDefinitions", + "apiVersion": "2018-07-01", + "name": "[guid(subscription().id, string(variables('networkReadAction')))]", + "properties": { + "roleName": "Custom Role - VirtualNetwork Read", + "description": "Network vnet read Role Definition", + "type": "customRole", + "isCustom": true, + "permissions": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/read" + ] + } + ], + "assignableScopes": [ + "[resourceGroup().id]" + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks/providers/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[concat(parameters('virtualNetworkName'), '/Microsoft.Authorization/', guid(resourceGroup().id, deployment().name, parameters('aadClientId')))]", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/[guid(subscription().id, string(variables('networkReadAction')))]", + "principalId": "see readme.md for details on how to create the SP", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/myVNet" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "pid-06f07fff-296b-5beb-9092-deab0c6bb8ea", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-05-01", + "name": "myVNet", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualNetwork", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "bastionSubnet", + "properties": { + "addressPrefix": "10.0.3.0/27", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//bastion-nsg" + } + } + }, + { + "name": "masterSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//master-nsg" + } + } + }, + { + "name": "workerSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//worker-nsg" + } + } + } + ] + }, + "dependsOn": [ + "bastion-nsg", + "master-nsg", + "worker-nsg" + ] + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-05-01", + "name": "[variables('bastionPublicIpDnsLabel')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "tags": { + "displayName": "BastionPublicIP", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[variables('bastionPublicIpDnsLabel')]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-05-01", + "name": "bastionNode-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('bastionSecurityGroupName'))]", + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('bastionPublicIpDnsLabel'))]" + ], + "tags": { + "displayName": "BastionNetworkInterface", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "ipConfigurations": [ + { + "name": "bastionNodeipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/myVNet/bastionSubnet" + }, + "publicIPAddress": "[if(equals(parameters('publicBootnodeIP'), variables('vTrue')), variables('publicIpId'), json('null'))]" + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/bastion-nsg" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-05-01", + "name": "nfsNode-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNet", + "Microsoft.Network/networkSecurityGroups//worker-nsg" + ], + "tags": { + "displayName": "NFSNetworkInterface", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "ipConfigurations": [ + { + "name": "nfsNodeipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/myVNet/workerSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/worker-nsg" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-05-01", + "name": "bastion-nsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "BastionNSG", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "securityRules": [ + { + "name": "allowSSHin_all", + "properties": { + "description": "Allow SSH in from all locations", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-06-01", + "name": "[variables('diagStorageAccountName')]", + "location": "[resourceGroup().location]", + "kind": "Storage", + "tags": { + "displayName": "[variables('diagStorageAccountName')]", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "BastionVmDeployment", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('diagStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('bastionHostname'), '-nic'))]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/clusternode.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "sshKeyPath": { + "value": "/home/GEN-UNIQUE/.ssh/authorized_keys" + }, + "sshPublicKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "dataDiskSize": { + "value": 1024 + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "vmSize": { + "value": "Standard_D8s_v3" + }, + "hostname": { + "value": "bastionNode" + }, + "role": { + "value": "bootnode" + }, + "vmStorageType": { + "value": "Premium_LRS" + }, + "diagStorageAccount": { + "value": "[variables('diagStorageAccountName')]" + }, + "imageReference": { + "value": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-RAW", + "version": "latest" + } + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + } + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-05-01", + "name": "master-nsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "MasterNSG", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "securityRules": [ + { + "name": "allowHTTPS_all", + "properties": { + "description": "Allow HTTPS connections from all locations", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-05-01", + "name": "worker-nsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "WorkerNSG", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "securityRules": [ + { + "name": "allowHTTPS_all", + "properties": { + "description": "Allow HTTPS connections from all locations", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "allowHTTPIn_all", + "properties": { + "description": "Allow HTTP connections from all locations", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + }, + { + "name": "allowNFS_network", + "properties": { + "description": "Allow NFS server connections from within the network only", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "2049", + "sourceAddressPrefixes": [ + "10.0.0.0/16" + ], + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 400, + "direction": "Inbound" + } + }, + { + "name": "allowRPC_network", + "properties": { + "description": "Allow rpcbind connections from within the network only", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "111", + "sourceAddressPrefixes": [ + "10.0.0.0/16" + ], + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 410, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "OpenShiftDeployment", + "dependsOn": [ + "BastionVmDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/openshiftdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "[uri(parameters('_artifactsLocation'), '.')]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "openshiftDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployOpenShift.sh', parameters('_artifactsLocationSasToken')))]" + }, + "openshiftDeploymentScriptFileName": { + "value": "deployOpenShift.sh" + }, + "masterInstanceCount": { + "value": 3 + }, + "workerInstanceCount": { + "value": 3 + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "openshiftUsername": { + "value": "GEN-UNIQUE" + }, + "openshiftPassword": { + "value": "GEN-PASSWORD" + }, + "aadClientId": { + "value": "see readme.md for details on how to create the SP" + }, + "aadClientSecret": { + "value": "see readme.md for details on how to create the SP" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "sshPublicKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "pullSecret": { + "value": "pullSecret" + }, + "virtualNetworkName": { + "value": "myVNet" + }, + "virtualNetworkCIDR": { + "value": null + }, + "pxSpecUrl": { + "value": "" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "nfsIpAddress": { + "value": "[if(equals(parameters('storageOption'), 'nfs'),reference(resourceId('Microsoft.Network/networkInterfaces', concat(variables('nfsHostname'), '-nic'))).ipConfigurations[0].properties.privateIPAddress, '')]" + }, + "singleZoneOrMultiZone": { + "value": "noha" + }, + "dnsZone": { + "value": "GET-PREREQ-dnsZone" + }, + "dnsZoneRG": { + "value": "GET-PREREQ-dnsZoneRG" + }, + "masterInstanceType": { + "value": "Standard_D8s_v3" + }, + "workerInstanceType": { + "value": "Standard_D16s_v3" + }, + "clusterName": { + "value": "myocp" + }, + "networkResourceGroup": { + "value": "[resourceGroup().name]" + }, + "masterSubnetName": { + "value": "masterSubnet" + }, + "workerSubnetName": { + "value": "workerSubnet" + }, + "enableFips": { + "value": true + }, + "privateOrPublic": { + "value": "[if(equals(parameters('privateOrPublicEndpoints'), 'private'), 'Internal', 'External')]" + }, + "enableAutoscaler": { + "value": false + }, + "outboundType": { + "value": "Loadbalancer" + }, + "existingResourceGroupName": { + "value": "GEN-UNIQUE" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "OCSDeployment", + "dependsOn": [ + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/ocs.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "installOCSImagesScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/install-ocs.sh', parameters('_artifactsLocationSasToken')))]" + }, + "installOCSScriptFileName": { + "value": "install-ocs.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "openshiftUsername": { + "value": "GEN-UNIQUE" + }, + "openshiftPassword": { + "value": "GEN-PASSWORD" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "singleZoneOrMultiZone": { + "value": "noha" + }, + "resourceGroupName": { + "value": "[resourceGroup().name]" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "nfsVmDeployment", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('diagStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('nfsHostname'), '-nic'))]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/clusternode.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "sshKeyPath": { + "value": "/home/GEN-UNIQUE/.ssh/authorized_keys" + }, + "sshPublicKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "dataDiskSize": { + "value": 1024 + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "vmSize": { + "value": "Standard_D8s_v3" + }, + "hostname": { + "value": "nfsNode" + }, + "role": { + "value": "datanode" + }, + "vmStorageType": { + "value": "Premium_LRS" + }, + "diagStorageAccount": { + "value": "[variables('diagStorageAccountName')]" + }, + "imageReference": { + "value": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-RAW", + "version": "latest" + } + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-07-01", + "name": "nfsNode/installNfsServer", + "location": "[resourceGroup().location]", + "dependsOn": [ + "nfsVmDeployment" + ], + "tags": { + "displayName": "InstallNfsServer", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup-nfs.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash setup-nfs.sh" + } + } + }, + { + "condition": false, + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2021-04-01", + "name": "nfsNode-vault", + "location": "[resourceGroup().location]", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "condition": false, + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "apiVersion": "2021-07-01", + "name": "[concat(variables('vaultName'), '/', variables('backupFabric'), '/', variables('protectionContainer'), '/', variables('protectedItem'))]", + "dependsOn": [ + "nfsVmDeployment", + "Microsoft.RecoveryServices/vaults/nfsNode-vault" + ], + "properties": { + "protectedItemType": "Microsoft.Compute/virtualMachines", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/nfsNode-vault/DefaultPolicy", + "sourceResourceId": "Microsoft.Compute/virtualMachines/nfsNode" + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-07-01", + "name": "bastionNode/deployOpenshift", + "location": "[resourceGroup().location]", + "dependsOn": [ + "BastionVmDeployment", + "OpenShiftDeployment" + ], + "tags": { + "displayName": "CloudPakConfig", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/openshiftCloudPakConfig.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', variables('cloudPakConfigScriptFileName'), ' \"', uri(parameters('_artifactsLocation'), '.'), '\"', ' \"', parameters('_artifactsLocationSasToken'), '\"', ' \"', parameters('adminUsername'), '\"', ' \"', parameters('workerInstanceCount'), '\"', ' \"', parameters('projectName'), '\"', ' \"', parameters('apiKey'), '\"', ' \"', parameters('enableFips'), '\"')]" + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakLiteDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "lite" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakLite.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakLite.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v2.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), or(equals(parameters('installWatsonStudioLocal'), 'yes'),equals(parameters('installWatsonKnowledgeCatalog'), 'yes'),equals(parameters('installWatsonMachineLearning'), 'yes'),equals(parameters('installDataVirtualization'), 'yes'),equals(parameters('installCognosDashboard'), 'yes')))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakCCSDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakLiteDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "lite" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakCCS.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakCCS.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'),or(equals(parameters('installDataVirtualization'), 'yes'),equals(parameters('installWatsonKnowledgeCatalog'), 'yes')))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakDB2UDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakCCSDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "lite" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakDB2U.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakDB2U.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'),equals(parameters('installWatsonKnowledgeCatalog'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakDB2aaServiceDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakDB2UDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "lite" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakDB2aaService.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakDB2aaService.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installDataVirtualization'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakDMCDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakDB2aaServiceDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "lite" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakDMC.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakDMC.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installDataVirtualization'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakDVDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakDMCDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "dv" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakDV.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakDV.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.7" + }, + "version": { + "value": "1.7.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installCognosDashboard'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakCDEDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakDVDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "cde" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakCDE.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakCDE.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installWatsonStudioLocal'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakWSLDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakCDEDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "wsl" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWSL.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakWSL.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v2.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installWatsonMachineLearning'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakWMLDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakWSLDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "wml" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWML.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakWML.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.1" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installWatsonKnowledgeCatalog'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakWKCCoreDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakWMLDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "wkc-core" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWKCCore.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakWKCCore.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installWatsonKnowledgeCatalog'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakWKCIISDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakWKCCoreDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "wkc-iis" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWKCIIS.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakWKCIIS.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installWatsonKnowledgeCatalog'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakWKCUGDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakWKCIISDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "wkc-ug" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWKCUG.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakWKCUG.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1.0" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installWatsonOpenscale'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakWOSDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakWKCUGDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "aiopenscale" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakWOS.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakWOS.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "v1" + }, + "version": { + "value": "4.0.2" + } + } + } + }, + { + "condition": "[and(equals(parameters('cloudPakLicenseAgreement'), 'accept'), equals(parameters('installAnalyticsEngine'), 'yes'))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "CloudPakAnalyticsEngineDeployment", + "dependsOn": [ + "nfsVmDeployment", + "OpenShiftDeployment", + "Microsoft.Compute/virtualMachines/bastionNode/extensions/deployOpenshift", + "CloudPakWOSDeployment", + "OCSDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/cloudpakdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "assembly": { + "value": "analyticsengine" + }, + "cloudPakDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployCloudPakAnalyticsEngine.sh', parameters('_artifactsLocationSasToken')))]" + }, + "cloudPakDeploymentScriptFileName": { + "value": "deployCloudPakAnalyticsEngine.sh" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.5.x", + "platform": "AzurePublic" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "ocuser": { + "value": "GEN-UNIQUE" + }, + "ocpassword": { + "value": "GEN-PASSWORD" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "projectName": { + "value": "zen" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "clusterName": { + "value": "myocp" + }, + "domainName": { + "value": "GET-PREREQ-dnsZone" + }, + "apiKey": { + "value": "apiKey" + }, + "subscriptionChannel": { + "value": "stable-v1" + }, + "version": { + "value": "4.0.2" + } + } + } + } + ], + "outputs": { + "Openshift Console URL": { + "type": "string", + "value": "[concat('https://console-openshift-console.apps.', parameters('clusterName'), '.', parameters('dnsZone'))]" + }, + "Cloud Pak for Data URL": { + "type": "string", + "value": "[concat('https://', parameters('projectName'), '-cpd-', parameters('projectName'), '.apps.', parameters('clusterName'), '.', parameters('dnsZone'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1650 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1650 new file mode 100644 index 0000000..ff98ab2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1650 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.search/azure-search-create/azuredeploy.json", + "/quickstarts/microsoft.search/azure-search-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910043, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.search/azure-search-create/azuredeploy.json", + "/quickstarts/microsoft.search/azure-search-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1650", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.search/searchservices" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1650", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "5181348332962837883" + } + }, + "parameters": { + "name": { + "type": "string", + "maxLength": 60, + "minLength": 2, + "metadata": { + "description": "Service name must only contain lowercase letters, digits or dashes, cannot use dash as the first two or last one characters, cannot contain consecutive dashes, and is limited between 2 and 60 characters in length." + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "defaultValue": "standard", + "metadata": { + "description": "The pricing tier of the search service you want to create (for example, basic or standard)." + }, + "allowedValues": [ + "free", + "basic", + "standard", + "standard2", + "standard3", + "storage_optimized_l1", + "storage_optimized_l2" + ], + "value": "standard" + }, + "replicaCount": { + "type": "int", + "defaultValue": 1, + "maxValue": 12, + "minValue": 1, + "metadata": { + "description": "Replicas distribute search workloads across the service. You need at least two replicas to support high availability of query workloads (not applicable to the free tier)." + }, + "value": 1 + }, + "partitionCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 3, + 4, + 6, + 12 + ], + "metadata": { + "description": "Partitions allow for scaling of document count as well as faster indexing by sharding your index over multiple search units." + }, + "value": 1 + }, + "hostingMode": { + "type": "string", + "defaultValue": "default", + "allowedValues": [ + "default", + "highDensity" + ], + "metadata": { + "description": "Applicable only for SKUs set to standard3. You can set this property to enable a single, high density partition that allows up to 1000 indexes, which is much higher than the maximum indexes allowed for any other SKU." + }, + "value": "default" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Search/searchServices", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "standard" + }, + "properties": { + "replicaCount": 1, + "partitionCount": 1, + "hostingMode": "default" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1651 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1651 new file mode 100644 index 0000000..d63dcbb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1651 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910050, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1651", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1651", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name for the logic app." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "request", + "kind": "http", + "inputs": { + "schema": { + "properties": { + "emailbody": { + "type": "string" + }, + "from": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "subject", + "emailbody" + ], + "type": "object", + "\uff04schema": "http://json-schema.org/draft-04/schema#" + } + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": {} + } + } + ], + "outputs": { + "logicAppName": { + "type": "string", + "value": "[parameters('logicAppName')]" + }, + "logicAppResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1652 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1652 new file mode 100644 index 0000000..13424ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1652 @@ -0,0 +1,153 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/azuredeploy.parameters.json" + ], + "timestamp": 1642962910056, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-alertnamecontains/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1652", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.security/automations" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1652", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationName": { + "type": "string", + "minLength": 3, + "maxLength": 24, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the automation" + } + }, + "logicAppName": { + "type": "string", + "minLength": 3, + "value": "GET-PREREQ-logicAppName" + }, + "logicAppResourceGroupName": { + "type": "string", + "minLength": 3, + "value": "GET-PREREQ-logicAppResourceGroupName" + }, + "subscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "The Azure resource GUID id of the subscription" + } + }, + "alertSettings": { + "type": "object", + "metadata": { + "description": "The alert settings object used for deploying the automation" + }, + "value": { + "name": "alertSettings", + "alertSeverityMapping": [ + { + "expectedValue": "Virtual machine", + "jpath": "AlertDisplayName", + "severity": "high", + "operator": "Contains" + }, + { + "expectedValue": "Virtual machine", + "jpath": "AlertDisplayName", + "severity": "medium", + "operator": "Contains" + }, + { + "expectedValue": "Virtual machine", + "jpath": "AlertDisplayName", + "severity": "low", + "operator": "Contains" + } + ] + } + } + }, + "variables": { + "automationDescription": "automation description for subscription {0}", + "scopeDescription": "automation scope for subscription {0}" + }, + "resources": [ + { + "type": "Microsoft.Security/automations", + "apiVersion": "2019-01-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "description": "[format(variables('automationDescription'),'{0}', parameters('subscriptionId'))]", + "isEnabled": true, + "actions": [ + { + "actionType": "LogicApp", + "logicAppResourceId": "Microsoft.Logic/workflows/GET-PREREQ-logicAppName", + "uri": "[listCallbackURL(resourceId(parameters('subscriptionId'), parameters('logicAppResourceGroupName'), 'Microsoft.Logic/workflows/triggers', parameters('logicAppName'), 'manual'), '2019-05-01').value]" + } + ], + "scopes": [ + { + "description": "[format(variables('scopeDescription'),'{0}', parameters('subscriptionId'))]", + "scopePath": "[subscription().id]" + } + ], + "sources": [ + { + "eventSource": "Alerts", + "eventVersionType": "Api", + "copy": [ + { + "name": "ruleSets", + "count": 48, + "input": { + "rules": [ + { + "propertyJPath": "alertSettings).alertSeverityMapping[copyIndex(ruleSets", + "propertyType": "string", + "expectedValue": "alertSettings).alertSeverityMapping[copyIndex(ruleSets", + "operator": "alertSettings).alertSeverityMapping[copyIndex(ruleSets" + }, + { + "propertyJPath": "Severity", + "propertyType": "string", + "expectedValue": "alertSettings).alertSeverityMapping[copyIndex(ruleSets", + "operator": "Equals" + } + ] + } + } + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1653 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1653 new file mode 100644 index 0000000..df964a2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1653 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910063, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1653", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1653", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name for the logic app." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "request", + "kind": "http", + "inputs": { + "schema": { + "properties": { + "emailbody": { + "type": "string" + }, + "from": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "subject", + "emailbody" + ], + "type": "object", + "\uff04schema": "http://json-schema.org/draft-04/schema#" + } + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": {} + } + } + ], + "outputs": { + "logicAppName": { + "type": "string", + "value": "[parameters('logicAppName')]" + }, + "logicAppResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1654 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1654 new file mode 100644 index 0000000..a49c861 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1654 @@ -0,0 +1,153 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/azuredeploy.parameters.json" + ], + "timestamp": 1642962910069, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-alerts/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1654", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.security/automations" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1654", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationName": { + "type": "string", + "minLength": 3, + "maxLength": 24, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the automation" + } + }, + "logicAppName": { + "type": "string", + "minLength": 3, + "value": "GET-PREREQ-logicAppName" + }, + "logicAppResourceGroupName": { + "type": "string", + "minLength": 3, + "value": "GET-PREREQ-logicAppResourceGroupName" + }, + "subscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "The Azure resource GUID id of the subscription" + } + }, + "alertSettings": { + "type": "object", + "metadata": { + "description": "The alert settings object used for deploying the automation" + }, + "value": { + "name": "alertSettings", + "alertSeverityMapping": [ + { + "expectedValue": "3.", + "jpath": "Version", + "severity": "high", + "operator": "Contains" + }, + { + "expectedValue": "3.", + "jpath": "Version", + "severity": "medium", + "operator": "Contains" + }, + { + "expectedValue": "3.", + "jpath": "Version", + "severity": "low", + "operator": "Contains" + } + ] + } + } + }, + "variables": { + "automationDescription": "automation description for subscription {0}", + "scopeDescription": "automation scope for subscription {0}" + }, + "resources": [ + { + "apiVersion": "2019-01-01-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "type": "Microsoft.Security/automations", + "properties": { + "description": "[format(variables('automationDescription'),'{0}', parameters('subscriptionId'))]", + "isEnabled": true, + "actions": [ + { + "actionType": "LogicApp", + "logicAppResourceId": "Microsoft.Logic/workflows/GET-PREREQ-logicAppName", + "uri": "[listCallbackURL(resourceId(parameters('subscriptionId'), parameters('logicAppResourceGroupName'), 'Microsoft.Logic/workflows/triggers', parameters('logicAppName'), 'manual'), '2019-05-01').value]" + } + ], + "scopes": [ + { + "description": "[format(variables('scopeDescription'),'{0}', parameters('subscriptionId'))]", + "scopePath": "[subscription().id]" + } + ], + "sources": [ + { + "eventSource": "Alerts", + "eventVersionType": "Api", + "copy": [ + { + "name": "ruleSets", + "count": 48, + "input": { + "rules": [ + { + "propertyJPath": "alertSettings).alertSeverityMapping[copyIndex(ruleSets", + "propertyType": "string", + "expectedValue": "alertSettings).alertSeverityMapping[copyIndex(ruleSets", + "operator": "alertSettings).alertSeverityMapping[copyIndex(ruleSets" + }, + { + "propertyJPath": "Severity", + "propertyType": "string", + "expectedValue": "alertSettings).alertSeverityMapping[copyIndex(ruleSets", + "operator": "Equals" + } + ] + } + } + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1655 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1655 new file mode 100644 index 0000000..6b48f40 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1655 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910076, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1655", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1655", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name for the logic app." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "request", + "kind": "http", + "inputs": { + "schema": { + "properties": { + "emailbody": { + "type": "string" + }, + "from": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "subject", + "emailbody" + ], + "type": "object", + "\uff04schema": "http://json-schema.org/draft-04/schema#" + } + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": {} + } + } + ], + "outputs": { + "logicAppName": { + "type": "string", + "value": "[parameters('logicAppName')]" + }, + "logicAppResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1656 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1656 new file mode 100644 index 0000000..b17e16a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1656 @@ -0,0 +1,153 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/azuredeploy.parameters.json" + ], + "timestamp": 1642962910083, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-all-recommendations/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1656", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.security/automations" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1656", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationName": { + "type": "string", + "minLength": 3, + "maxLength": 24, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the automation" + } + }, + "logicAppName": { + "type": "string", + "minLength": 3, + "value": "GET-PREREQ-logicAppName" + }, + "logicAppResourceGroupName": { + "type": "string", + "minLength": 3, + "value": "GET-PREREQ-logicAppResourceGroupName" + }, + "subscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "The Azure resource GUID id of the subscription" + } + }, + "assessmentSettings": { + "type": "object", + "metadata": { + "description": "The object used for deploying the automation" + }, + "value": { + "name": "assessmentSettings", + "assessmentSeverityMapping": [ + { + "assessmentName": "Microsoft.Security/Assessments", + "jpath": "type", + "state": "healthy", + "operator": "Contains" + }, + { + "assessmentName": "Microsoft.Security/Assessments", + "jpath": "type", + "state": "unhealthy", + "operator": "Contains" + }, + { + "assessmentName": "Microsoft.Security/Assessments", + "jpath": "type", + "state": "notapplicable", + "operator": "Contains" + } + ] + } + } + }, + "variables": { + "automationDescription": "automation description for subscription {0}", + "scopeDescription": "automation scope for subscription {0}" + }, + "resources": [ + { + "apiVersion": "2019-01-01-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "type": "Microsoft.Security/automations", + "properties": { + "description": "[format(variables('automationDescription'),'{0}', parameters('subscriptionId'))]", + "isEnabled": true, + "actions": [ + { + "actionType": "LogicApp", + "logicAppResourceId": "Microsoft.Logic/workflows/GET-PREREQ-logicAppName", + "uri": "[listCallbackURL(resourceId(parameters('subscriptionId'), parameters('logicAppResourceGroupName'), 'Microsoft.Logic/workflows/triggers', parameters('logicAppName'), 'manual'), '2019-05-01').value]" + } + ], + "scopes": [ + { + "description": "[format(variables('scopeDescription'),'{0}', parameters('subscriptionId'))]", + "scopePath": "[subscription().id]" + } + ], + "sources": [ + { + "eventSource": "Assessments", + "eventVersionType": "Api", + "copy": [ + { + "name": "ruleSets", + "count": 58, + "input": { + "rules": [ + { + "propertyJPath": "assessmentSettings).assessmentSeverityMapping[copyIndex(ruleSets", + "propertyType": "string", + "expectedValue": "assessmentSettings).assessmentSeverityMapping[copyIndex(ruleSets", + "operator": "assessmentSettings).assessmentSeverityMapping[copyIndex(ruleSets" + }, + { + "propertyJPath": "properties.status.code", + "propertyType": "string", + "expectedValue": "assessmentSettings).assessmentSeverityMapping[copyIndex(ruleSets", + "operator": "Contains" + } + ] + } + } + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1657 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1657 new file mode 100644 index 0000000..a18c103 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1657 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910090, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1657", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1657", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name for the logic app." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "request", + "kind": "http", + "inputs": { + "schema": { + "properties": { + "emailbody": { + "type": "string" + }, + "from": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "subject", + "emailbody" + ], + "type": "object", + "\uff04schema": "http://json-schema.org/draft-04/schema#" + } + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": {} + } + } + ], + "outputs": { + "logicAppName": { + "type": "string", + "value": "[parameters('logicAppName')]" + }, + "logicAppResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1658 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1658 new file mode 100644 index 0000000..88f8d55 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1658 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/azuredeploy.parameters.json" + ], + "timestamp": 1642962910097, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/azuredeploy.json", + "/quickstarts/microsoft.security/securitycenter-create-automation-for-specific-recommendations/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1658", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.security/automations" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1658", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationName": { + "type": "string", + "minLength": 3, + "maxLength": 24, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the automation" + } + }, + "logicAppName": { + "type": "string", + "minLength": 3, + "value": "GET-PREREQ-logicAppName" + }, + "logicAppResourceGroupName": { + "type": "string", + "minLength": 3, + "value": "GET-PREREQ-logicAppResourceGroupName" + }, + "subscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "The Azure resource GUID id of the subscription" + } + }, + "assessmentSettings": { + "type": "object", + "metadata": { + "description": "The object used for deploying the automation" + }, + "value": { + "name": "assessmentSettings", + "assessmentSeverityMapping": [ + { + "assessmentName": "4fb67663-9ab9-475d-b026-8c544cced439", + "jpath": "name", + "state": "unhealthy", + "operator": "Contains" + } + ] + } + } + }, + "variables": { + "automationDescription": "automation description for subscription {0}", + "scopeDescription": "automation scope for subscription {0}" + }, + "resources": [ + { + "apiVersion": "2019-01-01-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "type": "Microsoft.Security/automations", + "properties": { + "description": "[format(variables('automationDescription'),'{0}', parameters('subscriptionId'))]", + "isEnabled": true, + "actions": [ + { + "actionType": "LogicApp", + "logicAppResourceId": "Microsoft.Logic/workflows/GET-PREREQ-logicAppName", + "uri": "[listCallbackURL(resourceId(parameters('subscriptionId'), parameters('logicAppResourceGroupName'), 'Microsoft.Logic/workflows/triggers', parameters('logicAppName'), 'manual'), '2019-05-01').value]" + } + ], + "scopes": [ + { + "description": "[format(variables('scopeDescription'),'{0}', parameters('subscriptionId'))]", + "scopePath": "[subscription().id]" + } + ], + "sources": [ + { + "eventSource": "Assessments", + "eventVersionType": "Api", + "copy": [ + { + "name": "ruleSets", + "count": 58, + "input": { + "rules": [ + { + "propertyJPath": "assessmentSettings).assessmentSeverityMapping[copyIndex(ruleSets", + "propertyType": "string", + "expectedValue": "assessmentSettings).assessmentSeverityMapping[copyIndex(ruleSets", + "operator": "assessmentSettings).assessmentSeverityMapping[copyIndex(ruleSets" + }, + { + "propertyJPath": "properties.status.code", + "propertyType": "string", + "expectedValue": "assessmentSettings).assessmentSeverityMapping[copyIndex(ruleSets", + "operator": "Contains" + } + ] + } + } + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1659 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1659 new file mode 100644 index 0000000..be2c7f0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1659 @@ -0,0 +1,176 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910106, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1659", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/providers/alertrules", + "microsoft.operationalinsights/workspaces/providers/onboardingstates" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1659", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Name of the Log Analytics workspace" + }, + "value": "GEN-UNIQUE" + }, + "ruleName": { + "type": "string", + "metadata": { + "description": "Name of the analytics rule" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "ruleId": "[uniqueString(parameters('ruleName'))]" + }, + "resources": [ + { + "apiVersion": "2017-03-15-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "tags": {}, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + }, + { + "name": "GEN-UNIQUE/Microsoft.SecurityInsights/default", + "type": "Microsoft.OperationalInsights/workspaces/providers/onboardingStates", + "apiVersion": "2021-03-01-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "properties": {} + }, + { + "type": "Microsoft.OperationalInsights/workspaces/providers/alertRules", + "name": "GEN-UNIQUE/Microsoft.SecurityInsights/[uniqueString(parameters('ruleName'))]", + "apiVersion": "2021-03-01-preview", + "kind": "Scheduled", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/providers/onboardingStates/GEN-UNIQUE/Microsoft.SecurityInsights/default" + ], + "properties": { + "displayName": "Known IRIDIUM IP", + "description": "IRIDIUM command and control IP. Identifies a match across various data feeds for IP IOCs related to the IRIDIUM activity group.", + "severity": "High", + "enabled": true, + "query": "let IPList = dynamic([\"154.223.45.38\",\"185.141.207.140\",\"185.234.73.19\",\"216.245.210.106\",\"51.91.48.210\",\"46.255.230.229\"]);\n(union isfuzzy=true\n(CommonSecurityLog\n| where isnotempty(SourceIP) or isnotempty(DestinationIP)\n| where SourceIP in (IPList) or DestinationIP in (IPList) or Message has_any (IPList)\n| extend IPMatch = case(SourceIP in (IPList), \"SourceIP\", DestinationIP in (IPList), \"DestinationIP\", \"Message\") \n| summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated) by SourceIP, DestinationIP, DeviceProduct, DeviceAction, Message, Protocol, SourcePort, DestinationPort, DeviceAddress, DeviceName, IPMatch\n| extend timestamp = StartTimeUtc, IPCustomEntity = case(IPMatch == \"SourceIP\", SourceIP, IPMatch == \"DestinationIP\", DestinationIP, \"IP in Message Field\") \n),\n(OfficeActivity\n|extend SourceIPAddress = ClientIP, Account = UserId\n| where SourceIPAddress in (IPList)\n| extend timestamp = TimeGenerated , IPCustomEntity = SourceIPAddress , AccountCustomEntity = Account\n),\n(DnsEvents \n| extend DestinationIPAddress = IPAddresses, Host = Computer\n| where DestinationIPAddress has_any (IPList) \n| extend timestamp = TimeGenerated, IPCustomEntity = DestinationIPAddress, HostCustomEntity = Host\n),\n(imDns \n| extend DestinationIPAddress = DnsResponseName, Host = Dvc\n| where DestinationIPAddress has_any (IPList) \n| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr, HostCustomEntity = Host\n),\n(VMConnection \n| where isnotempty(SourceIp) or isnotempty(DestinationIp) \n| where SourceIp in (IPList) or DestinationIp in (IPList) \n| extend IPMatch = case( SourceIp in (IPList), \"SourceIP\", DestinationIp in (IPList), \"DestinationIP\", \"None\") \n| extend timestamp = TimeGenerated , IPCustomEntity = case(IPMatch == \"SourceIP\", SourceIp, IPMatch == \"DestinationIP\", DestinationIp, \"None\"), Host = Computer\n),\n(Event\n| where Source == \"Microsoft-Windows-Sysmon\"\n| where EventID == 3\n| extend EvData = parse_xml(EventData)\n| extend EventDetail = EvData.DataItem.EventData.Data\n| extend SourceIP = EventDetail.[9].[\"#text\"], DestinationIP = EventDetail.[14].[\"#text\"]\n| where SourceIP in (IPList) or DestinationIP in (IPList) \n| extend IPMatch = case( SourceIP in (IPList), \"SourceIP\", DestinationIP in (IPList), \"DestinationIP\", \"None\") \n| extend timestamp = TimeGenerated, AccountCustomEntity = UserName, HostCustomEntity = Computer , IPCustomEntity = case(IPMatch == \"SourceIP\", SourceIP, IPMatch == \"DestinationIP\", DestinationIP, \"None\")\n),\n(SigninLogs\n| where isnotempty(IPAddress)\n| where IPAddress in (IPList)\n| extend timestamp = TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress\n),\n(AADNonInteractiveUserSignInLogs\n| where isnotempty(IPAddress)\n| where IPAddress in (IPList)\n| extend timestamp = TimeGenerated, AccountCustomEntity = UserPrincipalName, IPCustomEntity = IPAddress\n),\n(W3CIISLog \n| where isnotempty(cIP)\n| where cIP in (IPList)\n| extend timestamp = TimeGenerated, IPCustomEntity = cIP, HostCustomEntity = Computer, AccountCustomEntity = csUserName\n),\n(AzureActivity \n| where isnotempty(CallerIpAddress)\n| where CallerIpAddress in (IPList)\n| extend timestamp = TimeGenerated, IPCustomEntity = CallerIpAddress, AccountCustomEntity = Caller\n),\n(\nAWSCloudTrail\n| where isnotempty(SourceIpAddress)\n| where SourceIpAddress in (IPList)\n| extend timestamp = TimeGenerated, IPCustomEntity = SourceIpAddress, AccountCustomEntity = UserIdentityUserName\n),\n(\nAzureDiagnostics\n| where ResourceType == \"AZUREFIREWALLS\"\n| where Category == \"AzureFirewallApplicationRule\"\n| parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' DestinationPort '. Action:' Action\n| where isnotempty(DestinationHost)\n| where DestinationHost has_any (IPList) \n| extend DestinationIP = DestinationHost \n| extend IPCustomEntity = SourceHost\n),\n(\nAzureDiagnostics\n| where ResourceType == \"AZUREFIREWALLS\"\n| where Category == \"AzureFirewallNetworkRule\"\n| parse msg_s with Protocol 'request from ' SourceHost ':' SourcePort 'to ' DestinationHost ':' DestinationPort '. Action:' Action\n| where isnotempty(DestinationHost)\n| where DestinationHost has_any (IPList) \n| extend DestinationIP = DestinationHost \n| extend IPCustomEntity = SourceHost\n)\n)", + "queryFrequency": "P1D", + "queryPeriod": "P1D", + "triggerOperator": "GreaterThan", + "triggerThreshold": 0, + "suppressionDuration": "PT5H", + "suppressionEnabled": false, + "tactics": [ + "CommandAndControl" + ], + "alertRuleTemplateName": "7ee72a9e-2e54-459c-bc8a-8c08a6532a63", + "incidentConfiguration": { + "createIncident": true, + "groupingConfiguration": { + "enabled": false, + "reopenClosedIncident": false, + "lookbackDuration": "PT5H", + "matchingMethod": "AllEntities", + "groupByEntities": [], + "groupByAlertDetails": [], + "groupByCustomDetails": [] + } + }, + "eventGroupingSettings": { + "aggregationKind": "SingleAlert" + }, + "alertDetailsOverride": { + "alertDisplayNameFormat": "Known IRIDIUM IP: {{IPCustomEntity}}", + "alertDescriptionFormat": "Alert generated at {{TimeGenerated}}", + "alertTacticsColumnName": null, + "alertSeverityColumnName": "Severity" + }, + "customDetails": { + "Group": "AADGroupId" + }, + "entityMappings": [ + { + "entityType": "Account", + "fieldMappings": [ + { + "identifier": "FullName", + "columnName": "AccountCustomEntity" + } + ] + }, + { + "entityType": "Host", + "fieldMappings": [ + { + "identifier": "FullName", + "columnName": "HostCustomEntity" + } + ] + }, + { + "entityType": "IP", + "fieldMappings": [ + { + "identifier": "Address", + "columnName": "IPCustomEntity" + } + ] + } + ] + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "ruleId": { + "type": "string", + "value": "[variables('ruleId')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT166 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT166 new file mode 100644 index 0000000..ece063b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT166 @@ -0,0 +1,416 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/azuredatafactory.json" + ], + "timestamp": 1642962889077, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/azuredatafactory.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT166", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.datafactory/datafactories" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT166", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlDWServerName": { + "type": "string", + "metadata": { + "description": "Ex- inforp2ptest" + } + }, + "location": { + "type": "string", + "defaultValue": "eastus", + "metadata": { + "description": "The location where all azure resources will be deployed." + } + }, + "sqlDWDBName": { + "type": "string", + "metadata": { + "description": "SQL Datawarehouse Database Name" + } + }, + "sqlDWDBAdminName": { + "type": "string", + "metadata": { + "description": "Sql Data Warehouse User Name" + } + }, + "sqlDWAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Sql Data Warehouse Password" + } + }, + "dataFactoryName": { + "type": "string", + "metadata": { + "description": "Name of the data factory. It must be globally unique" + } + }, + "start": { + "type": "string", + "metadata": { + "description": "Start time of the data slice. ex: 2014-06-01T18:00:00" + } + }, + "end": { + "type": "string", + "metadata": { + "description": "end time of the data slice. ex: 2014-06-01T18:00:00" + } + }, + "tableName": { + "type": "string", + "defaultValue": "bi9" + }, + "inputFolderPath": { + "type": "string", + "defaultValue": "adfgetstarted/inputdata" + }, + "outputFolderPath": { + "type": "string", + "defaultValue": "adfgetstarted/inputdata" + }, + "adfstorageAccountName": { + "type": "string" + }, + "apiVersion": { + "type": "string", + "defaultValue": "2015-10-01" + }, + "storageLinkedServiceName": { + "type": "string", + "defaultValue": "AzureStorageLinkedService" + }, + "hdInsightOnDemandLinkedServiceName": { + "type": "string", + "defaultValue": "HDInsightOnDemandLinkedService" + }, + "azureSqlDWLinkedServiceName": { + "type": "string", + "defaultValue": "AzureSqlDWLinkedService" + }, + "blobInputDataset": { + "type": "string", + "defaultValue": "AzureBlobInput" + }, + "blobOutputDataset": { + "type": "string", + "defaultValue": "AzureBlobOutput" + }, + "sqlDWOutputDataset": { + "type": "string", + "defaultValue": "AzureSqlDWOutput" + }, + "azureSqlDWLinkedServiceConnectionString": { + "type": "string", + "defaultValue": "" + }, + "clusterSize": { + "type": "int", + "defaultValue": 1 + }, + "version": { + "type": "string", + "defaultValue": "3.2" + }, + "timeToLive": { + "type": "string", + "defaultValue": "00:45:00" + }, + "frequency": { + "type": "string", + "defaultValue": "Hour" + }, + "interval": { + "type": "int", + "defaultValue": 1 + }, + "writeBatchSize": { + "type": "int", + "defaultValue": 0 + }, + "writeBatchTimeout": { + "type": "string", + "defaultValue": "00:00:00" + }, + "timeout": { + "type": "string", + "defaultValue": "01:00:00" + }, + "script": { + "type": "string", + "defaultValue": "" + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": { + "storageApiVersion": "2015-06-15" + }, + "resources": [ + { + "name": "dataFactoryName", + "apiVersion": "2015-10-01", + "type": "Microsoft.DataFactory/datafactories", + "location": "westus", + "tags": { + "displayName": "VM Storage Accounts", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "resources": [ + { + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/dataFactoryName" + ], + "type": "linkedservices", + "name": "AzureStorageLinkedService", + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureStorage", + "typeProperties": { + "connectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('adfstorageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('adfstorageAccountName')),variables('storageApiVersion')).key1)]" + } + } + }, + { + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/dataFactoryName" + ], + "type": "linkedservices", + "name": "hivestoredlinkedservice", + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureStorage", + "typeProperties": { + "connectionString": "DefaultEndpointsProtocol=https;AccountName=hivestorage45;AccountKey=HxaJ9xKgO3/1PS5bRO6fc+rTdS+KXWhGsxLubXweQaw75qbFu3AWHwuR6IggpKZeXtspV+RYfffDtFBO5pMRXA==" + } + } + }, + { + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/dataFactoryName", + "Microsoft.DataFactory/dataFactories/dataFactoryName/linkedservices/AzureStorageLinkedService" + ], + "type": "linkedservices", + "name": "HDInsightOnDemandLinkedService", + "apiVersion": "2015-10-01", + "properties": { + "type": "HDInsightOnDemand", + "typeProperties": { + "clusterSize": 1, + "version": "3.2", + "timeToLive": "00:45:00", + "osType": "windows", + "linkedServiceName": "AzureStorageLinkedService" + } + } + }, + { + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/dataFactoryName" + ], + "type": "linkedservices", + "name": "AzureSqlDWLinkedService", + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureSqlDW", + "typeProperties": { + "connectionString": "" + } + } + }, + { + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/dataFactoryName", + "Microsoft.DataFactory/dataFactories/dataFactoryName/linkedServices/AzureStorageLinkedService" + ], + "type": "datasets", + "name": "AzureBlobInput", + "apiVersion": "2015-10-01", + "properties": { + "type": "AzureBlob", + "linkedServiceName": "AzureStorageLinkedService", + "typeProperties": { + "folderPath": "adfgetstarted/inputdata", + "format": { + "type": "TextFormat", + "columnDelimiter": "," + } + }, + "availability": { + "frequency": "Hour", + "interval": 1 + }, + "external": true, + "policy": {} + } + }, + { + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/dataFactoryName", + "Microsoft.DataFactory/dataFactories/dataFactoryName/linkedServices/AzureStorageLinkedService" + ], + "type": "datasets", + "name": "AzureBlobOutput", + "apiVersion": "2015-10-01", + "properties": { + "published": false, + "type": "AzureBlob", + "linkedServiceName": "AzureStorageLinkedService", + "typeProperties": { + "folderPath": "adfgetstarted/inputdata", + "format": { + "type": "TextFormat", + "columnDelimiter": "," + } + }, + "availability": { + "frequency": "Hour", + "interval": 1 + } + } + }, + { + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/dataFactoryName", + "Microsoft.DataFactory/dataFactories/dataFactoryName/linkedServices/AzureSqlDWLinkedService" + ], + "type": "datasets", + "name": "AzureSqlDWOutput", + "apiVersion": "2015-10-01", + "properties": { + "published": false, + "type": "AzureSqlDWTable", + "linkedServiceName": "AzureSqlDWLinkedService", + "typeProperties": { + "tableName": "bi9" + }, + "availability": { + "frequency": "Hour", + "interval": 1 + } + } + }, + { + "dependsOn": [ + "Microsoft.DataFactory/dataFactories/dataFactoryName", + "Microsoft.DataFactory/dataFactories/dataFactoryName/linkedServices/AzureStorageLinkedService", + "Microsoft.DataFactory/dataFactories/dataFactoryName/linkedServices/HDInsightOnDemandLinkedService", + "Microsoft.DataFactory/dataFactories/dataFactoryName/linkedServices/AzureSqlDWLinkedService", + "Microsoft.DataFactory/dataFactories/dataFactoryName/datasets/AzureBlobInput", + "Microsoft.DataFactory/dataFactories/dataFactoryName/datasets/AzureBlobOutput", + "Microsoft.DataFactory/dataFactories/dataFactoryName/datasets/AzureSqlDWOutput" + ], + "type": "datapipelines", + "name": "dataFactoryName", + "apiVersion": "2015-10-01", + "properties": { + "description": "My first Azure Data Factory pipeline", + "activities": [ + { + "type": "HDInsightHive", + "typeProperties": { + "scriptPath": "adfgetstarted/script/hiveinfop2p.hql", + "scriptLinkedService": "hivestoredlinkedservice", + "defines": { + "inputtable": "wasb://adfgetstarted@adfstorageAccountName.blob.core.windows.net/inputdata", + "partitionedtable": "wasb://adfgetstarted@adfstorageAccountName.blob.core.windows.net/partitioneddata" + } + }, + "inputs": [ + { + "name": "AzureBlobInput" + } + ], + "outputs": [ + { + "name": "AzureBlobOutput" + } + ], + "policy": { + "concurrency": 1, + "retry": 3 + }, + "scheduler": { + "frequency": "Hour", + "interval": 1 + }, + "name": "RunSampleHiveActivity", + "linkedServiceName": "HDInsightOnDemandLinkedService" + }, + { + "type": "Copy", + "typeProperties": { + "source": { + "type": "BlobSource" + }, + "sink": { + "type": "SqlDWSink", + "writeBatchSize": 0, + "writeBatchTimeout": "00:00:00" + } + }, + "inputs": [ + { + "name": "AzureBlobOutput" + } + ], + "outputs": [ + { + "name": "AzureSqlDWOutput" + } + ], + "policy": { + "timeout": "01:00:00", + "concurrency": 1 + }, + "scheduler": { + "frequency": "Hour", + "interval": 1 + }, + "name": "AzureBlobtoSQLDW", + "description": "Copy Activity" + } + ], + "start": "start", + "end": "end", + "isPaused": false + } + } + ] + } + ], + "outputs": { + "ucpConsoleAddress": { + "value": "[parameters('script')]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1660 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1660 new file mode 100644 index 0000000..cdf2fd3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1660 @@ -0,0 +1,145 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/azuredeploy.json", + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/azuredeploy.parameters.json" + ], + "timestamp": 1642962910114, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/azuredeploy.json", + "/quickstarts/microsoft.securityinsights/sentinel-automation-rule/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1660", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.securityinsights/automationrules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1660", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingWorkspaceName": { + "type": "string", + "metadata": { + "description": "The name of the Sentinel workspace where the automation rule will be deployed" + }, + "value": "GET-PREREQ-workspaceName" + }, + "automationRuleName": { + "type": "string", + "metadata": { + "description": "The name of the automation rule that will be deployed" + }, + "value": "GEN-UNIQUE" + }, + "existingRuleId": { + "type": "string", + "metadata": { + "description": "The analytics rule GUID that is used in the triggering conditions. Feel free to remove the condition below if you don't need it." + }, + "value": "GET-PREREQ-ruleId" + } + }, + "variables": { + "automationRuleGuid": "[uniqueString(parameters('automationRuleName'))]" + }, + "resources": [ + { + "type": "Microsoft.SecurityInsights/automationRules", + "name": "[uniqueString(parameters('automationRuleName'))]", + "scope": "Microsoft.OperationalInsights/workspaces/GET-PREREQ-workspaceName", + "apiVersion": "2019-01-01-preview", + "properties": { + "displayName": "GEN-UNIQUE", + "order": 2, + "triggeringLogic": { + "isEnabled": true, + "expirationTimeUtc": null, + "triggersOn": "Incidents", + "triggersWhen": "Created", + "conditions": [ + { + "conditionType": "Property", + "conditionProperties": { + "propertyName": "IncidentRelatedAnalyticRuleIds", + "operator": "Contains", + "propertyValues": [ + "Microsoft.OperationalInsights/workspaces/providers/alertRules/GET-PREREQ-workspaceName/Microsoft.SecurityInsights/GET-PREREQ-ruleId" + ] + } + }, + { + "conditionType": "Property", + "conditionProperties": { + "propertyName": "IncidentSeverity", + "operator": "Equals", + "propertyValues": [ + "High" + ] + } + }, + { + "conditionType": "Property", + "conditionProperties": { + "propertyName": "IncidentTactics", + "operator": "Contains", + "propertyValues": [ + "InitialAccess", + "Execution" + ] + } + }, + { + "conditionType": "Property", + "conditionProperties": { + "propertyName": "IncidentTitle", + "operator": "Contains", + "propertyValues": [ + "urgent" + ] + } + } + ] + }, + "actions": [ + { + "order": 2, + "actionType": "ModifyProperties", + "actionConfiguration": { + "status": "Closed", + "classification": "Undetermined", + "classificationReason": null + } + }, + { + "order": 3, + "actionType": "ModifyProperties", + "actionConfiguration": { + "labels": [ + { + "labelName": "tag" + } + ] + } + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1661 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1661 new file mode 100644 index 0000000..14f597c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1661 @@ -0,0 +1,159 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/scheduler-service-bus/azuredeploy.json", + "/quickstarts/microsoft.servicebus/scheduler-service-bus/azuredeploy.parameters.json" + ], + "timestamp": 1642962910122, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/scheduler-service-bus/azuredeploy.json", + "/quickstarts/microsoft.servicebus/scheduler-service-bus/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1661", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.scheduler/jobcollections", + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1661", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "The suffix to add to resource names that require global uniqueness." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the Service Bus and Azure Scheduler resources should be deployed." + } + }, + "queueName": { + "type": "string", + "defaultValue": "autoposted", + "metadata": { + "description": "The name of the queue that should have the messages automatically posted to it. The queue will be created by the template deployment if it doesn't already exist." + } + }, + "messageContents": { + "type": "string", + "defaultValue": "mymessage", + "metadata": { + "description": "The contents of the message to post to the queue." + } + }, + "postRecurrence": { + "type": "object", + "defaultValue": { + "interval": 1, + "frequency": "Minute" + }, + "metadata": { + "description": "The frequency at which the message should be posted to the queue." + } + } + }, + "variables": { + "serviceBusNamespaceName": "GEN-UNIQUE", + "queueSendOnlyKeyName": "Scheduler", + "schedulerJobCollectionName": "QueuePoster", + "schedulerJobName": "PostMessage" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "apiVersion": "2021-01-01-preview", + "location": "[resourceGroup().location]", + "properties": {}, + "resources": [ + { + "name": "autoposted", + "type": "queues", + "apiVersion": "2018-01-01-preview", + "resources": [ + { + "name": "Scheduler", + "type": "authorizationRules", + "apiVersion": "2018-01-01-preview", + "properties": { + "rights": [ + "Send" + ] + }, + "dependsOn": [ + "autoposted" + ] + } + ], + "dependsOn": [ + "GEN-UNIQUE" + ] + } + ] + }, + { + "name": "QueuePoster", + "type": "Microsoft.Scheduler/jobCollections", + "apiVersion": "2016-03-01", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Standard" + } + }, + "resources": [ + { + "type": "jobs", + "name": "PostMessage", + "apiVersion": "2016-03-01", + "dependsOn": [ + "Microsoft.Scheduler/jobCollections/QueuePoster", + "Scheduler" + ], + "properties": { + "state": "Enabled", + "action": { + "type": "ServiceBusQueue", + "serviceBusQueueMessage": { + "namespace": "GEN-UNIQUE", + "queueName": "autoposted", + "transportType": "AMQP", + "authentication": { + "sasKey": "[listKeys(variables('queueSendOnlyKeyName'), '2018-01-01-preview').primaryKey]", + "sasKeyName": "[listKeys(variables('queueSendOnlyKeyName'), '2018-01-01-preview').keyName]", + "type": "SharedAccessKey" + }, + "message": "mymessage" + } + }, + "recurrence": { + "interval": 1, + "frequency": "Minute" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1662 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1662 new file mode 100644 index 0000000..ae42ee1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1662 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-authrule-namespace-and-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-authrule-namespace-and-queue/azuredeploy.parameters.json" + ], + "timestamp": 1642962910130, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-authrule-namespace-and-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-authrule-namespace-and-queue/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1662", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces/authorizationrules", + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1662", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "namespaceAuthorizationRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Namespace AuthorizationRule" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusQueueName": { + "type": "string", + "metadata": { + "description": "Name of the Queue" + }, + "value": "GEN-UNIQUE" + }, + "queueAuthorizationRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Queue AuthorizationRule" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "namespaceAuthRuleName": "GEN-UNIQUE/GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "Queues", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": "1024", + "requiresDuplicateDetection": "false", + "requiresSession": "false", + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "deadLetteringOnMessageExpiration": "false", + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": "10", + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", + "enablePartitioning": "false", + "enableExpress": "false" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "AuthorizationRules", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "rights": [ + "Listen" + ] + } + } + ] + } + ] + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces/authorizationRules", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "properties": { + "rights": [ + "Send" + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1663 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1663 new file mode 100644 index 0000000..97ab46d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1663 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace/azuredeploy.parameters.json" + ], + "timestamp": 1642962910138, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1663", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1663", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusSku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The messaging tier for service Bus namespace" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {} + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1664 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1664 new file mode 100644 index 0000000..7beb60c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1664 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.json" + ], + "timestamp": 1642962910144, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1664", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1664", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceNamePrimary": { + "type": "string", + "metadata": { + "description": "Name of Service Bus namespace" + }, + "value": "GEN-UNIQUE-12" + }, + "serviceBusNamespaceNameSecondary": { + "type": "string", + "metadata": { + "description": "Name of Service Bus namespace" + }, + "value": "GEN-UNIQUE-13" + }, + "aliasName": { + "type": "string", + "metadata": { + "description": "Name of Geo-Recovery Configuration Alias " + }, + "value": "GEN-UNIQUE" + }, + "locationSecondaryNamepsace": { + "type": "string", + "metadata": { + "description": "Location of Secondary namespace" + }, + "value": "southcentralus" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of Primary namespace" + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-13", + "type": "Microsoft.ServiceBus/Namespaces", + "location": "southcentralus", + "sku": { + "name": "Premium", + "tier": "Premium", + "capacity": 4 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + }, + { + "apiVersion": "2018-01-01-preview", + "type": "Microsoft.ServiceBus/Namespaces", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE-13" + ], + "name": "GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium", + "tier": "Premium", + "capacity": 4 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "disasterRecoveryConfigs", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE-12" + ], + "properties": { + "partnerNamespace": "Microsoft.ServiceBus/Namespaces/GEN-UNIQUE-13" + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1665 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1665 new file mode 100644 index 0000000..a2363f2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1665 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962910151, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-namespace-geo-recoveryconfiguration/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1665", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1665", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceNamePrimary": { + "type": "string", + "metadata": { + "description": "Name of Service Bus namespace" + }, + "value": "GEN-UNIQUE-12" + }, + "serviceBusNamespaceNameSecondary": { + "type": "string", + "metadata": { + "description": "Name of Service Bus namespace" + }, + "value": "GEN-UNIQUE-13" + }, + "aliasName": { + "type": "string", + "metadata": { + "description": "Name of Geo-Recovery Configuration Alias " + }, + "value": "GEN-UNIQUE" + }, + "locationSecondaryNamepsace": { + "type": "string", + "metadata": { + "description": "Location of Secondary namespace" + }, + "value": "usgovtexas" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of Primary namespace" + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-13", + "type": "Microsoft.ServiceBus/Namespaces", + "location": "usgovtexas", + "sku": { + "name": "Premium", + "tier": "Premium", + "capacity": 4 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + } + }, + { + "apiVersion": "2018-01-01-preview", + "type": "Microsoft.ServiceBus/Namespaces", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE-13" + ], + "name": "GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium", + "tier": "Premium", + "capacity": 4 + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "disasterRecoveryConfigs", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE-12" + ], + "properties": { + "partnerNamespace": "Microsoft.ServiceBus/Namespaces/GEN-UNIQUE-13" + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1666 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1666 new file mode 100644 index 0000000..57497d9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1666 @@ -0,0 +1,100 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-queue/azuredeploy.parameters.json" + ], + "timestamp": 1642962910157, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-queue/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1666", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/queues" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1666", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "16254364616677220399" + } + }, + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusQueueName": { + "type": "string", + "metadata": { + "description": "Name of the Queue" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ServiceBus/namespaces", + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {} + }, + { + "type": "Microsoft.ServiceBus/namespaces/queues", + "apiVersion": "2017-04-01", + "name": "[format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName'))]", + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "requiresSession": false, + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "deadLetteringOnMessageExpiration": false, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": 10, + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", + "enablePartitioning": false, + "enableExpress": false + }, + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1667 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1667 new file mode 100644 index 0000000..8a58365 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1667 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-topic-and-subscription/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-topic-and-subscription/azuredeploy.parameters.json" + ], + "timestamp": 1642962910162, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-topic-and-subscription/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-topic-and-subscription/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1667", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1667", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "service_BusNamespace_Name": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusTopicName": { + "type": "string", + "metadata": { + "description": "Name of the Topic" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusSubscriptionName": { + "type": "string", + "metadata": { + "description": "Name of the Subscription" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "topics", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "properties": { + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "duplicateDetectionHistoryTimeWindow": "PT10M", + "enableBatchedOperations": false, + "supportOrdering": false, + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", + "enablePartitioning": false, + "enableExpress": false + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "Subscriptions", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "lockDuration": "PT1M", + "requiresSession": false, + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "deadLetteringOnMessageExpiration": false, + "maxDeliveryCount": 10, + "enableBatchedOperations": false, + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S" + } + } + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1668 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1668 new file mode 100644 index 0000000..e1536f3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1668 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-topic-subscription-rule/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-topic-subscription-rule/azuredeploy.parameters.json" + ], + "timestamp": 1642962910168, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-create-topic-subscription-rule/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-create-topic-subscription-rule/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1668", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1668", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE-12" + }, + "serviceBusTopicName": { + "type": "string", + "metadata": { + "description": "Name of the Topic" + }, + "value": "GEN-UNIQUE-13" + }, + "serviceBusSubscriptionName": { + "type": "string", + "metadata": { + "description": "Name of the Subscription" + }, + "value": "GEN-UNIQUE-14" + }, + "serviceBusRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Rule" + }, + "value": "GEN-UNIQUE-15" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-12", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-13", + "type": "topics", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE-12" + ], + "properties": { + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "maxSizeInMegabytes": "1024", + "requiresDuplicateDetection": "false", + "duplicateDetectionHistoryTimeWindow": "PT10M", + "enableBatchedOperations": "false", + "supportOrdering": "false", + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", + "enablePartitioning": "false", + "enableExpress": "false" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-14", + "type": "Subscriptions", + "dependsOn": [ + "GEN-UNIQUE-13" + ], + "properties": { + "lockDuration": "PT1M", + "requiresSession": "false", + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "deadLetteringOnMessageExpiration": "false", + "maxDeliveryCount": "10", + "enableBatchedOperations": "false", + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-15", + "type": "Rules", + "dependsOn": [ + "GEN-UNIQUE-14" + ], + "properties": { + "filterType": "SqlFilter", + "sqlFilter": { + "sqlExpression": "FilterTag = 'true'", + "requiresPreprocessing": "false" + } + } + } + ] + } + ] + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1669 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1669 new file mode 100644 index 0000000..0c9452e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1669 @@ -0,0 +1,61 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace/azuredeploy.parameters.json" + ], + "timestamp": 1642962910175, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1669", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1669", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus Namespace" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "properties": {}, + "resources": [] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT167 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT167 new file mode 100644 index 0000000..25ee46f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT167 @@ -0,0 +1,193 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/contcreate-automation.json" + ], + "timestamp": 1642962889131, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/contcreate-automation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT167", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT167", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationAccountName": { + "type": "string" + }, + "sku": { + "type": "string", + "defaultValue": "Free", + "allowedValues": [ + "Free", + "Basic" + ] + }, + "runbookName": { + "type": "string" + }, + "credential1Name": { + "defaultValue": "Azure_RM_Account_Credentials", + "type": "string" + }, + "cred1Username": { + "type": "string", + "defaultValue": "ash@sysgaininc.onmicrosoft.com" + }, + "cred1Password": { + "type": "securestring" + }, + "jobIdCont": { + "type": "string", + "metadata": { + "description": "Generate a Job ID (GUID) from https://www.guidgenerator.com/online-guid-generator.aspx " + } + }, + "location": { + "type": "string", + "defaultValue": "East US 2", + "allowedValues": [ + "Japan East", + "North Europe", + "South Central US", + "West Europe", + "Southeast Asia", + "East US 2" + ], + "metadata": { + "description": "Automation Service Location" + } + }, + "scriptUri": { + "type": "string" + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + }, + "metadata": { + "description": "Tag Values" + } + }, + "adfStorageAccKey": { + "type": "string" + }, + "adfStorageAccName": { + "type": "string" + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "resources": [ + { + "name": "automationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "sku": { + "name": "Free" + } + }, + "resources": [ + { + "name": "runbookName", + "type": "runbooks", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName" + ], + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "runbookType": "Script", + "logProgress": false, + "logVerbose": false, + "description": null, + "publishContentLink": { + "uri": "scriptUri", + "version": "1.0.0.0" + } + } + }, + { + "name": "Azure_RM_Account_Credentials", + "type": "credentials", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName" + ], + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "userName": "ash@sysgaininc.onmicrosoft.com", + "password": "cred1Password" + } + }, + { + "name": "automationAccountName/jobIdCont", + "type": "Microsoft.Automation/automationAccounts/jobs", + "apiVersion": "2015-10-31", + "location": "East US 2", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "runbook": { + "name": "runbookName" + }, + "parameters": { + "adfStorageAccName": "adfStorageAccName", + "adfStorageAccKey": "adfStorageAccKey" + } + }, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName", + "Microsoft.Automation/automationAccounts/runbooks/automationAccountName/runbookName", + "Microsoft.Automation/automationAccounts/credentials/automationAccountName/Azure_RM_Account_Credentials" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1670 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1670 new file mode 100644 index 0000000..3cc558d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1670 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.parameters.json" + ], + "timestamp": 1642962910182, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1670", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/ipfilterrules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1670", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "ipFilterRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Authorization rule" + }, + "value": "GEN-UNIQUE" + }, + "ipFilterAction": { + "type": "string", + "allowedValues": [ + "Reject", + "Accept" + ], + "defaultValue": "Accept", + "metadata": { + "description": "IP Filter Action" + } + }, + "IpMask": { + "type": "string", + "defaultValue": "10.0.1.0/32", + "metadata": { + "description": "IP Mask" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "location for Namespace" + }, + "value": "eastus2" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "eastus2", + "sku": { + "name": "Premium", + "tier": "Premium" + }, + "properties": {} + }, + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces/IPFilterRules", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "properties": { + "FilterName": "GEN-UNIQUE", + "Action": "Accept", + "IpMask": "10.0.1.0/32" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1671 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1671 new file mode 100644 index 0000000..3d79caa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1671 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962910193, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-ipfilter/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1671", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/ipfilterrules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1671", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "ipFilterRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Authorization rule" + }, + "value": "GEN-UNIQUE" + }, + "ipFilterAction": { + "type": "string", + "allowedValues": [ + "Reject", + "Accept" + ], + "defaultValue": "Accept", + "metadata": { + "description": "IP Filter Action" + } + }, + "IpMask": { + "type": "string", + "defaultValue": "10.0.1.0/32", + "metadata": { + "description": "IP Mask" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "location for Namespace" + }, + "value": "usgovvirginia" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "usgovvirginia", + "sku": { + "name": "Premium", + "tier": "Premium" + }, + "properties": {} + }, + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces/IPFilterRules", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "properties": { + "FilterName": "GEN-UNIQUE", + "Action": "Accept", + "IpMask": "10.0.1.0/32" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1672 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1672 new file mode 100644 index 0000000..8a8c4da --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1672 @@ -0,0 +1,126 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-vnet/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962910202, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-namespace-vnet/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-namespace-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1672", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/virtualnetworkrules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1672", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "9817738463388419579" + } + }, + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE-11" + }, + "vnetRuleName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Rule" + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Sub Net" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for Namespace" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ServiceBus/namespaces", + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium", + "tier": "Premium" + }, + "properties": {} + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "[format('{0}-vn', parameters('vnetRuleName'))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/23" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/23", + "serviceEndpoints": [ + { + "service": "Microsoft.ServiceBus" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/virtualnetworkrules", + "apiVersion": "2018-01-01-preview", + "name": "[format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('vnetRuleName'))]", + "properties": { + "virtualNetworkSubnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', format('{0}-vn', parameters('vnetRuleName')), parameters('subnetName'))]" + }, + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]", + "[resourceId('Microsoft.Network/virtualNetworks', format('{0}-vn', parameters('vnetRuleName')))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1673 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1673 new file mode 100644 index 0000000..aeb3a96 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1673 @@ -0,0 +1,108 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-pn-ar/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-pn-ar/azuredeploy.parameters.json" + ], + "timestamp": 1642962910209, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-pn-ar/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-pn-ar/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1673", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces/authorizationrules", + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1673", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "premiumNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Event Hub namespace" + }, + "value": "GEN-UNIQUE" + }, + "skuCapacity": { + "type": "int", + "allowedValues": [ + 1, + 2, + 4 + ], + "defaultValue": 1, + "metadata": { + "description": "MessagingUnits for premium namespace" + }, + "value": 1 + }, + "namespaceSASKeyName": { + "type": "string", + "metadata": { + "description": "Name of the Namespace AuthorizationRule" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "customSASKeyName": "GEN-UNIQUE/GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "kind": "Messaging", + "sku": { + "name": "Premium", + "tier": "Premium", + "capacity": 1 + }, + "properties": { + "createACSNamespace": true + } + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces/authorizationRules", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "properties": { + "Rights": [ + "Send", + "Listen", + "Manage" + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1674 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1674 new file mode 100644 index 0000000..3af5f1d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1674 @@ -0,0 +1,1083 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-private-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962910218, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1674", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.servicebus/namespaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1674", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all the resources." + } + }, + "virtualNetworkName": { + "defaultValue": "UbuntuVnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network hosting the virtual machine." + } + }, + "virtualNetworkAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the virtual network hosting the virtual machine." + } + }, + "subnetName": { + "defaultValue": "DefaultSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the virtual machine." + } + }, + "subnetAddressPrefix": { + "defaultValue": "10.0.0.0/24", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the virtual machine." + } + }, + "serviceBusNamespaceName": { + "type": "string", + "defaultValue": "[concat('servicebus', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Service Bus namespace." + } + }, + "serviceBusNamespaceZoneRedundant": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enabling this property creates a Premium Service Bus Namespace in regions supported availability zones." + } + }, + "serviceBusNamespaceCapacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Specifies the messaging units for the Service Bus namespace. For Premium tier, capacity are 1,2 and 4." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('boot', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS", + "Premium_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Specifies the base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Specifies the sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "scriptFileName": { + "type": "string", + "defaultValue": "servicebus_nslookup.sh", + "metadata": { + "description": "The name of the script to download from the URI specified by the scriptFilePath parameter." + } + }, + "deployLogAnalytics": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to deploy a Log Analytics workspace to monitor the health and performance of the virtual machine." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the globally unique name of the Log Analytics workspace." + }, + "value": "GEN-UNIQUE" + }, + "workspaceSku": { + "type": "string", + "allowedValues": [ + "PerGB2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "defaultValue": "PerGB2018", + "metadata": { + "description": "Specifies the SKU of the Log Analytics workspace." + } + }, + "serviceBusNamespacePrivateEndpointName": { + "type": "string", + "defaultValue": "ServiceBusNamespacePrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the Service Bus Namespace" + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + } + }, + "variables": { + "customScriptExtensionName": "CustomScript", + "omsAgentForLinuxName": "LogAnalytics", + "nicName": "TestVmNic", + "nsgName": "DefaultSubnetNsg", + "publicIPAddressName": "TestVmPublicIp", + "publicIPAddressType": "Dynamic", + "workspaceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet", + "publicIpId": "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "nicId": "Microsoft.Network/networkInterfaces/TestVmNic", + "vnetId": "Microsoft.Network/virtualNetworks/UbuntuVnet", + "nsgId": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg", + "vmId": "Microsoft.Compute/virtualMachines/TestVm", + "customScriptId": "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "omsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "serviceBusNamespaceId": "Microsoft.ServiceBus/namespaces/[concat('servicebus', uniquestring(resourceGroup().id))]", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "serviceBusPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "blobPublicDNSZoneForwarder": "[concat('.blob.', environment().suffixes.storage)]", + "serviceBusNamespacePrivateDnsZoneName": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "blobPrivateDnsZoneName": "[concat('privatelink', variables('blobPublicDNSZoneForwarder'))]", + "serviceBusNamespacePrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "serviceBusNamespaceEndpoint": "[concat('servicebus', uniquestring(resourceGroup().id))][if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "blobServicePrimaryEndpoint": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]", + "serviceBusNamespacePrivateEndpointId": "Microsoft.Network/privateEndpoints/ServiceBusNamespacePrivateEndpoint", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "serviceBusNamespacePrivateEndpointGroupName": "namespace", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "serviceBusNamespacePrivateDnsZoneGroup": "ServiceBusNamespacePrivateEndpoint/namespacePrivateDnsZoneGroup", + "blobPrivateDnsZoneGroup": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "[concat('servicebus', uniquestring(resourceGroup().id))]", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium", + "tier": "Premium", + "capacity": 1 + }, + "properties": { + "zoneRedundant": false + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('boot', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "TestVmPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(toLower(parameters('vmName')), uniquestring(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "DefaultSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "UbuntuVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TestVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "Microsoft.Network/virtualNetworks/UbuntuVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/TestVmPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "TestVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateEndpoints/ServiceBusNamespacePrivateEndpoint", + "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "Microsoft.Network/networkInterfaces/TestVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "TestVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 50, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 50, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('vmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TestVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/CustomScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', parameters('scriptFileName'), ' ', variables('serviceBusNamespaceEndpoint'), ' ', variables('blobServicePrimaryEndpoint'))]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "condition": true, + "apiVersion": "2020-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + } + }, + "resources": [ + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "Kern", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "kern", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "Syslog", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "syslog", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "User", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "user", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SampleSyslogCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslogCollection", + "properties": { + "state": "Enabled" + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "DiskPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Used Inodes" + }, + { + "counterName": "Free Megabytes" + }, + { + "counterName": "% Used Space" + }, + { + "counterName": "Disk Transfers/sec" + }, + { + "counterName": "Disk Reads/sec" + }, + { + "counterName": "Disk Writes/sec" + }, + { + "counterName": "Disk Read Bytes/sec" + }, + { + "counterName": "Disk Write Bytes/sec" + } + ], + "objectName": "Logical Disk", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "ProcessorPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Processor Time" + }, + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "% IO Wait Time" + }, + { + "counterName": "% Idle Time" + }, + { + "counterName": "% Interrupt Time" + } + ], + "objectName": "Processor", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "ProcessPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "Used Memory" + }, + { + "counterName": "Virtual Shared Memory" + } + ], + "objectName": "Process", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SystemPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Processes" + } + ], + "objectName": "System", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "NetworkPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Total Bytes Transmitted" + }, + { + "counterName": "Total Bytes Received" + }, + { + "counterName": "Total Bytes" + }, + { + "counterName": "Total Packets Transmitted" + }, + { + "counterName": "Total Packets Received" + }, + { + "counterName": "Total Rx Errors" + }, + { + "counterName": "Total Tx Errors" + }, + { + "counterName": "Total Collisions" + } + ], + "objectName": "Network", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "MemorydataSources", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Available MBytes Memory" + }, + { + "counterName": "% Available Memory" + }, + { + "counterName": "Used Memory MBytes" + }, + { + "counterName": "% Used Memory" + } + ], + "objectName": "Memory", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SampleLinuxPerfCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceCollection", + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('serviceBusNamespacePrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "Microsoft.Network/virtualNetworks/UbuntuVnet" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('blobPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('vnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "ServiceBusNamespacePrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.ServiceBus/namespaces/[concat('servicebus', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "ServiceBusNamespacePrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.ServiceBus/namespaces/[concat('servicebus', uniquestring(resourceGroup().id))]", + "groupIds": [ + "namespace" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat('servicebus', uniquestring(resourceGroup().id))][if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "ServiceBusNamespacePrivateEndpoint/namespacePrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]", + "Microsoft.Network/privateEndpoints/ServiceBusNamespacePrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.servicebus.usgovcloudapi.net', '.servicebus.windows.net')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ], + "outputs": { + "serviceBusNamespacePrivateEndpoint": { + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', parameters('serviceBusNamespacePrivateEndpointName')), '2020-04-01', 'Full')]", + "type": "object" + }, + "blobStorageAccountPrivateEndpoint": { + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', parameters('blobStorageAccountPrivateEndpointName')), '2020-04-01', 'Full')]", + "type": "object" + }, + "serviceBusNamespace": { + "value": "[reference(resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName')), '2018-01-01-preview', 'Full')]", + "type": "object" + }, + "blobStorageAccount": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('blobStorageAccountName')), '2019-06-01', 'Full')]", + "type": "object" + }, + "adminUsername": { + "value": "[parameters('adminUsername')]", + "type": "string" + }, + "workspaceName": { + "value": "[parameters('workspaceName')]", + "type": "string" + }, + "scriptFileUri": { + "value": "[variables('scriptFileUri')]", + "type": "string" + }, + "environment": { + "value": "[environment()]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1675 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1675 new file mode 100644 index 0000000..1512c0b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1675 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-queue/azuredeploy.parameters.json" + ], + "timestamp": 1642962910227, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-queue/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-queue/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1675", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1675", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusQueueName1": { + "type": "string", + "metadata": { + "description": "Name of the Queue" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusQueueName2": { + "type": "string", + "metadata": { + "description": "Name of the Queue" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "Queues", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": "1024", + "requiresDuplicateDetection": "false", + "requiresSession": "false", + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "deadLetteringOnMessageExpiration": "false", + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": "10", + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", + "enablePartitioning": "false", + "enableExpress": "false" + } + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "Queues", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces/GEN-UNIQUE", + "Microsoft.ServiceBus/namespaces/Queues//GEN-UNIQUE/GEN-UNIQUE" + ], + "properties": { + "lockDuration": "PT5M", + "maxSizeInMegabytes": "1024", + "requiresDuplicateDetection": "false", + "requiresSession": "false", + "defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S", + "deadLetteringOnMessageExpiration": "false", + "duplicateDetectionHistoryTimeWindow": "PT10M", + "maxDeliveryCount": "10", + "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", + "enablePartitioning": "false", + "enableExpress": "false", + "forwardTo": "GEN-UNIQUE", + "forwardDeadLetteredMessagesTo": "GEN-UNIQUE" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1676 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1676 new file mode 100644 index 0000000..dfd8cd9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1676 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic/azuredeploy.parameters.json" + ], + "timestamp": 1642962910233, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1676", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1676", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus Namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusTopicName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus Topic" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "topics", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "properties": { + "path": "GEN-UNIQUE" + }, + "resources": [] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1677 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1677 new file mode 100644 index 0000000..1024d15 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1677 @@ -0,0 +1,123 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription/azuredeploy.parameters.json" + ], + "timestamp": 1642962910239, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1677", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1677", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusTopicName1": { + "type": "string", + "metadata": { + "description": "Name of the Topic" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusTopicName2": { + "type": "string", + "metadata": { + "description": "Name of the Topic" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusSubscriptionName": { + "type": "string", + "metadata": { + "description": "Name of the Subscription" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "topics", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "properties": { + "path": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "topics", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "properties": { + "path": "GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "Subscriptions", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "properties": { + "forwardTo": "GEN-UNIQUE", + "forwardDeadLetteredMessagesTo": "GEN-UNIQUE" + } + } + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1678 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1678 new file mode 100644 index 0000000..cdc5d88 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1678 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription-sqlfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription-sqlfilter/azuredeploy.parameters.json" + ], + "timestamp": 1642962910246, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription-sqlfilter/azuredeploy.json", + "/quickstarts/microsoft.servicebus/servicebus-topic-subscription-sqlfilter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1678", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1678", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceBusNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus Namespace" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusTopicName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus Topic" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusTopicSubscriptionName": { + "type": "string", + "metadata": { + "description": "Name of the Service Bus Topic Subscription" + }, + "value": "GEN-UNIQUE" + }, + "serviceBusTopicSubscriptionSqlFilter": { + "type": "string", + "metadata": { + "description": "The SQL Filter of the Service Bus Topic Subscription" + }, + "value": "[property-name] = 'value'" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.ServiceBus/namespaces", + "location": "[resourceGroup().location]", + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "topics", + "dependsOn": [ + "Microsoft.ServiceBus/namespaces//GEN-UNIQUE" + ], + "properties": { + "path": "GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "subscriptions", + "dependsOn": [ + "GEN-UNIQUE" + ], + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE-filter", + "type": "Rules", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "filter": { + "sqlExpression": "[property-name] = 'value'" + } + } + } + ] + } + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1679 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1679 new file mode 100644 index 0000000..f67fd4e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1679 @@ -0,0 +1,680 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicefabric/5-vm-ubuntu-1-nodetypes-secure/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/5-vm-ubuntu-1-nodetypes-secure/azuredeploy.parameters.json" + ], + "timestamp": 1642962910253, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicefabric/5-vm-ubuntu-1-nodetypes-secure/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/5-vm-ubuntu-1-nodetypes-secure/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1679", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.servicefabric/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1679", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Cluster" + } + }, + "clusterName": { + "type": "string", + "defaultValue": "[concat('sf-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only" + }, + "value": "GEN-UNIQUE" + }, + "adminUserName": { + "type": "string", + "metadata": { + "description": "Remote desktop user Id" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Remote desktop user password. Must be a strong password" + }, + "value": "GEN-PASSWORD" + }, + "vmImagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "VM image Publisher" + } + }, + "vmImageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "VM image offer" + } + }, + "vmImageSku": { + "type": "string", + "defaultValue": "16.04-LTS", + "metadata": { + "description": "VM image SKU" + } + }, + "vmImageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "VM image version" + } + }, + "loadBalancedAppPort1": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Input endpoint1 for the application to use. Replace it with what your application uses" + } + }, + "loadBalancedAppPort2": { + "type": "int", + "defaultValue": 8081, + "metadata": { + "description": "Input endpoint2 for the application to use. Replace it with what your application uses" + } + }, + "clusterProtectionLevel": { + "type": "string", + "allowedValues": [ + "None", + "Sign", + "EncryptAndSign" + ], + "defaultValue": "EncryptAndSign", + "metadata": { + "description": "Protection level.Three values are allowed - EncryptAndSign, Sign, None. It is best to keep the default of EncryptAndSign, unless you have a need not to" + } + }, + "certificateStoreValue": { + "type": "string", + "allowedValues": [ + "My" + ], + "defaultValue": "My", + "metadata": { + "description": "The store name where the cert will be deployed in the virtual machine" + } + }, + "certificateThumbprint": { + "type": "string", + "metadata": { + "description": "Certificate Thumbprint" + }, + "value": "GEN-SF-CERT-THUMBPRINT" + }, + "sourceVaultValue": { + "type": "string", + "metadata": { + "description": "Resource Id of the key vault, is should be in the format of /subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/" + }, + "value": "GEN-KEYVAULT-RESOURCE-ID" + }, + "certificateUrlValue": { + "type": "string", + "metadata": { + "description": "Refers to the location URL in your key vault where the certificate was uploaded" + }, + "value": "GEN-SF-CERT-URL" + }, + "storageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Replication option for the VM image storage account" + } + }, + "supportLogStorageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Replication option for the support log storage account" + } + }, + "applicationDiagnosticsStorageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Replication option for the application diagnostics storage account" + } + }, + "nt0InstanceCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Instance count for node type" + } + }, + "vmNodeType0Size": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM Type" + } + }, + "storageAccountEndPoint": { + "type": "string", + "metadata": { + "description": "Location of the Cluster" + }, + "value": "https://core.windows.net/" + } + }, + "variables": { + "computeLocation": "[resourceGroup().location]", + "dnsName": "GEN-UNIQUE", + "vmName": "vm", + "virtualNetworkName": "VNet", + "addressPrefix": "10.0.0.0/16", + "nicName": "NIC", + "lbIPName": "PublicIP-LB-FE", + "overProvision": "false", + "nt0applicationStartPort": "20000", + "nt0applicationEndPort": "30000", + "nt0ephemeralStartPort": "49152", + "nt0ephemeralEndPort": "65534", + "nt0fabricTcpGatewayPort": "19000", + "nt0fabricHttpGatewayPort": "19080", + "subnet0Name": "Subnet-0", + "subnet0Prefix": "10.0.0.0/24", + "subnet0Ref": "Microsoft.Network/virtualNetworks/subnets//VNet/Subnet-0", + "supportLogStorageAccountName": "[toLower( concat( uniqueString(resourceGroup().id),'2'))]", + "applicationDiagnosticsStorageAccountName": "[toLower(concat('wad',uniqueString(resourceGroup().id), '3' ))]", + "wadlogs": "", + "wadperfcounters1": "", + "wadperfcounters2": "", + "wadcfgxstart": "", + "vmNodeType0Name": "[toLower(concat('NT1', variables('vmName')))]", + "wadmetricsresourceid0": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',resourceGroup().name ,'/providers/','Microsoft.Compute/virtualMachineScaleSets/', variables('vmNodeType0Name'))]" + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[toLower( concat( uniqueString(resourceGroup().id),'2'))]", + "location": "[resourceGroup().location]", + "properties": {}, + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[toLower(concat('wad',uniqueString(resourceGroup().id), '3' ))]", + "location": "[resourceGroup().location]", + "properties": {}, + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-0", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "PublicIP-LB-FE-[toLower(concat('NT1', variables('vmName')))]", + "location": "[resourceGroup().location]", + "properties": { + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/loadBalancers", + "name": "LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/PublicIP-LB-FE-[toLower(concat('NT1', variables('vmName')))]" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerIPConfig", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIP-LB-FE-[toLower(concat('NT1', variables('vmName')))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBEAddressPool", + "properties": {} + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + }, + "backendPort": "19000", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPort": "19000", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/FabricGatewayProbe" + }, + "protocol": "Tcp" + } + }, + { + "name": "LBHttpRule", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + }, + "backendPort": "19080", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPort": "19080", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/FabricHttpGatewayProbe" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule1", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + }, + "backendPort": 80, + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": "5", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/AppPortProbe1" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule2", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + }, + "backendPort": 8081, + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPort": 8081, + "idleTimeoutInMinutes": "5", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/AppPortProbe2" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "FabricGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "19000", + "protocol": "Tcp" + } + }, + { + "name": "FabricHttpGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "19080", + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe1", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 80, + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe2", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 8081, + "protocol": "Tcp" + } + } + ], + "inboundNatPools": [ + { + "name": "LoadBalancerBEAddressNatPool", + "properties": { + "backendPort": "22", + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPortRangeEnd": "4500", + "frontendPortRangeStart": "3389", + "protocol": "Tcp" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(concat('NT1', variables('vmName')))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/VNet", + "Microsoft.Network/loadBalancers/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]", + "Microsoft.Storage/storageAccounts/[toLower( concat( uniqueString(resourceGroup().id),'2'))]", + "Microsoft.Storage/storageAccounts/[toLower(concat('wad',uniqueString(resourceGroup().id), '3' ))]" + ], + "properties": { + "overprovision": "false", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "ServiceFabricNodeVmExt_vmNodeType0Name", + "properties": { + "type": "ServiceFabricLinuxNode", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2020-08-01-preview').keys[0]]", + "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2020-08-01-preview').keys[1]]" + }, + "publisher": "Microsoft.Azure.ServiceFabric", + "settings": { + "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", + "nodeTypeRef": "[toLower(concat('NT1', variables('vmName')))]", + "durabilityLevel": "Bronze", + "enableParallelJobs": true, + "nicPrefixOverride": "10.0.0.0/24", + "certificate": { + "thumbprint": "GEN-SF-CERT-THUMBPRINT", + "x509StoreName": "My" + } + }, + "typeHandlerVersion": "1.0" + } + }, + { + "name": "VMDiagnosticsVmExt_vmNodeType0Name", + "properties": { + "type": "LinuxDiagnostic", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "storageAccountName": "[toLower(concat('wad',uniqueString(resourceGroup().id), '3' ))]", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2020-08-01-preview').keys[0]]", + "storageAccountEndPoint": "https://core.windows.net/" + }, + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "xmlCfg": "[base64(concat(variables('wadcfgxstart'),variables('wadmetricsresourceid0'),variables('wadcfgxend')))]", + "StorageAccount": "[toLower(concat('wad',uniqueString(resourceGroup().id), '3' ))]" + }, + "typeHandlerVersion": "2.3" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "NIC-0", + "properties": { + "ipConfigurations": [ + { + "name": "NIC-0", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressNatPool" + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//VNet/Subnet-0" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminPassword": "GEN-PASSWORD", + "adminUsername": "adminUsername", + "computernamePrefix": "[toLower(concat('NT1', variables('vmName')))]", + "secrets": [ + { + "sourceVault": { + "id": "GEN-KEYVAULT-RESOURCE-ID" + }, + "vaultCertificates": [ + { + "certificateUrl": "GEN-SF-CERT-URL" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + } + } + } + } + }, + "sku": { + "name": "Standard_D2_v3", + "capacity": 5, + "tier": "Standard" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2017-07-01-preview", + "type": "Microsoft.ServiceFabric/clusters", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[toLower( concat( uniqueString(resourceGroup().id),'2'))]" + ], + "properties": { + "addonFeatures": [ + "DnsService", + "RepairManager" + ], + "certificate": { + "thumbprint": "GEN-SF-CERT-THUMBPRINT", + "x509StoreName": "My" + }, + "clusterState": "Default", + "diagnosticsStorageAccountConfig": { + "blobEndpoint": "[reference(variables('supportLogStorageAccountName'), '2020-08-01-preview').primaryEndpoints['blob']]", + "protectedAccountKeyName": "StorageAccountKey1", + "queueEndpoint": "[reference(variables('supportLogStorageAccountName'), '2020-08-01-preview').primaryEndpoints['queue']]", + "storageAccountName": "[toLower( concat( uniqueString(resourceGroup().id),'2'))]", + "tableEndpoint": "[reference(variables('supportLogStorageAccountName'), '2020-08-01-preview').primaryEndpoints['table']]" + }, + "fabricSettings": [ + { + "parameters": [ + { + "name": "ClusterProtectionLevel", + "value": "EncryptAndSign" + } + ], + "name": "Security" + } + ], + "managementEndpoint": "[concat('https://',reference(resourceId('Microsoft.Network/publicIPAddresses',concat(variables('lbIPName'),'-',variables('vmNodeType0Name')))).dnsSettings.fqdn,':',variables('nt0fabricHttpGatewayPort'))]", + "nodeTypes": [ + { + "name": "[toLower(concat('NT1', variables('vmName')))]", + "applicationPorts": { + "endPort": "30000", + "startPort": "20000" + }, + "clientConnectionEndpointPort": "19000", + "durabilityLevel": "Bronze", + "ephemeralPorts": { + "endPort": "65534", + "startPort": "49152" + }, + "httpGatewayEndpointPort": "19080", + "isPrimary": true, + "vmInstanceCount": 5 + } + ], + "provisioningState": "Default", + "reliabilityLevel": "Silver", + "upgradeMode": "Automatic", + "vmImage": "Linux" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + } + ], + "outputs": { + "clusterProperties": { + "value": "[reference(parameters('clusterName'))]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT168 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT168 new file mode 100644 index 0000000..7e311e5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT168 @@ -0,0 +1,197 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/createtableautomationjob.json" + ], + "timestamp": 1642962889138, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/createtableautomationjob.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT168", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT168", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "jobId": { + "type": "string", + "metadata": { + "description": "Unique GUID" + } + }, + "sqlDWServerName": { + "type": "string", + "defaultValue": "testdwserver234.database.windows.net", + "metadata": { + "description": "Ex- inforp2ptest.database.windows.net" + } + }, + "sqlDWDBName": { + "type": "string", + "defaultValue": "testdwdb234", + "metadata": { + "description": "SQL Datawarehouse Database Name" + } + }, + "sqlDWDBAdminName": { + "type": "string", + "defaultValue": "sysgain", + "metadata": { + "description": "Sql Data Warehouse User Name" + } + }, + "sqlDWAdminPassword": { + "type": "securestring", + "defaultValue": "Sysga1n4205!", + "metadata": { + "description": "Sql Data Warehouse Password" + } + }, + "accountName": { + "type": "string", + "metadata": { + "description": "Name of the automation account. It should be unique" + } + }, + "credentialName": { + "type": "string", + "metadata": { + "description": "Name for credentials" + } + }, + "runbookName": { + "type": "string", + "defaultValue": "createtable", + "metadata": { + "description": "Name of the runbook" + } + }, + "location": { + "type": "string", + "defaultValue": "South Central US" + }, + "scriptUri": { + "type": "string" + }, + "runbookDescription": { + "type": "string", + "defaultValue": "Create a Database Table in User provided Datawarehouse" + }, + "sku": { + "type": "string", + "defaultValue": "Basic" + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Automation/automationAccounts", + "name": "accountName", + "apiVersion": "2015-01-01-preview", + "location": "South Central US", + "tags": { + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "createtable", + "type": "runbooks", + "apiVersion": "2015-01-01-preview", + "location": "South Central US", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/accountName" + ], + "tags": { + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "runbookType": "Script", + "logProgress": false, + "logVerbose": false, + "description": "Create a Database Table in User provided Datawarehouse", + "publishContentLink": { + "uri": "scriptUri", + "version": "1.0.0.0" + } + } + }, + { + "name": "credentialName", + "type": "credentials", + "apiVersion": "2015-01-01-preview", + "location": "South Central US", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/accountName" + ], + "tags": { + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "userName": "sysgain", + "password": "Sysga1n4205!" + } + }, + { + "name": "accountName/jobId", + "type": "Microsoft.Automation/automationAccounts/jobs", + "apiVersion": "2015-10-31", + "location": "South Central US", + "tags": { + "key": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "runbook": { + "name": "createtable" + }, + "parameters": { + "credentialName": "credentialName", + "ServerName": "testdwserver234.database.windows.net.database.windows.net", + "DatabaseName": "testdwdb234", + "DBUsername": "sysgain", + "DBPassword": "Sysga1n4205!" + } + }, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/accountName", + "Microsoft.Automation/automationAccounts/credentials/accountName/credentialName", + "Microsoft.Automation/automationAccounts/runbooks/accountName/createtable" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1680 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1680 new file mode 100644 index 0000000..45b8523 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1680 @@ -0,0 +1,681 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicefabric/service-fabric-secure-cluster-5-node-1-nodetype/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/service-fabric-secure-cluster-5-node-1-nodetype/azuredeploy.parameters.json" + ], + "timestamp": 1642962910262, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicefabric/service-fabric-secure-cluster-5-node-1-nodetype/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/service-fabric-secure-cluster-5-node-1-nodetype/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1680", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.servicefabric/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1680", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Cluster" + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Remote desktop user Id" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Remote desktop user password. Must be a strong password" + }, + "value": "GEN-PASSWORD" + }, + "vmImagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "VM image Publisher" + } + }, + "vmImageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "VM image offer" + } + }, + "vmImageSku": { + "type": "string", + "defaultValue": "2019-Datacenter", + "metadata": { + "description": "VM image SKU" + } + }, + "vmImageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "VM image version" + } + }, + "loadBalancedAppPort1": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Input endpoint1 for the application to use. Replace it with what your application uses" + } + }, + "loadBalancedAppPort2": { + "type": "int", + "defaultValue": 8081, + "metadata": { + "description": "Input endpoint2 for the application to use. Replace it with what your application uses" + } + }, + "certificateStoreValue": { + "type": "string", + "defaultValue": "My", + "allowedValues": [ + "My" + ], + "metadata": { + "description": "The store name where the cert will be deployed in the virtual machine" + } + }, + "certificateThumbprint": { + "type": "string", + "metadata": { + "description": "Certificate Thumbprint" + }, + "value": "GEN-SF-CERT-THUMBPRINT" + }, + "sourceVaultResourceId": { + "type": "string", + "metadata": { + "description": "Resource Id of the key vault, is should be in the format of /subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/" + }, + "value": "GEN-KEYVAULT-RESOURCE-ID" + }, + "certificateUrlValue": { + "type": "string", + "metadata": { + "description": "Refers to the location URL in your key vault where the certificate was uploaded" + }, + "value": "GEN-SF-CERT-URL" + }, + "clusterProtectionLevel": { + "type": "string", + "defaultValue": "EncryptAndSign", + "allowedValues": [ + "None", + "Sign", + "EncryptAndSign" + ], + "metadata": { + "description": "Protection level.Three values are allowed - EncryptAndSign, Sign, None. It is best to keep the default of EncryptAndSign, unless you have a need not to" + } + }, + "nt0InstanceCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Instance count for node type" + } + }, + "nodeDataDrive": { + "type": "string", + "defaultValue": "Temp", + "allowedValues": [ + "OS", + "Temp" + ], + "metadata": { + "description": "The drive to use to store data on a cluster node." + } + }, + "nodeTypeSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The VM size to use for cluster nodes." + } + } + }, + "variables": { + "dnsName": "GEN-UNIQUE", + "vmName": "vm", + "virtualNetworkName": "VNet", + "addressPrefix": "10.0.0.0/16", + "nicName": "NIC", + "lbIPName": "PublicIP-LB-FE", + "overProvision": false, + "nt0applicationStartPort": "20000", + "nt0applicationEndPort": "30000", + "nt0ephemeralStartPort": "49152", + "nt0ephemeralEndPort": "65534", + "nt0fabricTcpGatewayPort": "19000", + "nt0fabricHttpGatewayPort": "19080", + "subnet0Name": "Subnet-0", + "subnet0Prefix": "10.0.0.0/24", + "subnet0Ref": "Microsoft.Network/virtualNetworks/subnets//VNet/Subnet-0", + "supportLogStorageAccountName": "[concat( uniqueString(resourceGroup().id),'2')]", + "applicationDiagnosticsStorageAccountName": "[concat(uniqueString(resourceGroup().id), '3' )]", + "lbName": "LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]", + "lbIPConfig0": "Microsoft.Network/loadBalancers/frontendIPConfigurations//LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig", + "lbPoolID0": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool", + "lbProbeID0": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/FabricGatewayProbe", + "lbHttpProbeID0": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/FabricHttpGatewayProbe", + "lbNatPoolID0": "Microsoft.Network/loadBalancers/inboundNatPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressNatPool", + "vmNodeType0Name": "[toLower(concat('NT1', variables('vmName')))]", + "vmNodeType0Size": "Standard_D2_v3" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[variables('supportLogStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + }, + "properties": {} + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('applicationDiagnosticsStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + }, + "properties": {} + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "VNet", + "location": "[resourceGroup().location]", + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-0", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "PublicIP-LB-FE", + "location": "[resourceGroup().location]", + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + }, + "properties": { + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + }, + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-05-01", + "name": "LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "PublicIP-LB-FE" + ], + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerIPConfig", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIP-LB-FE" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBEAddressPool", + "properties": {} + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + }, + "backendPort": "19000", + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPort": "19000", + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/FabricGatewayProbe" + }, + "protocol": "Tcp" + } + }, + { + "name": "LBHttpRule", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + }, + "backendPort": "19080", + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPort": "19080", + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/FabricHttpGatewayProbe" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule1", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/AppPortProbe1" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule2", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + }, + "backendPort": 8081, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPort": 8081, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/AppPortProbe2" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "FabricGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "19000", + "protocol": "Tcp" + } + }, + { + "name": "FabricHttpGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "19080", + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe1", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 80, + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe2", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 8081, + "protocol": "Tcp" + } + } + ], + "inboundNatPools": [ + { + "name": "LoadBalancerBEAddressNatPool", + "properties": { + "backendPort": 3389, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerIPConfig" + }, + "frontendPortRangeEnd": 4500, + "frontendPortRangeStart": 3389, + "protocol": "Tcp" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-06-01", + "name": "[toLower(concat('NT1', variables('vmName')))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_D2_v3", + "capacity": 5, + "tier": "Standard" + }, + "dependsOn": [ + "[variables('virtualNetworkName')]", + "[variables('lbName')]", + "[variables('supportLogStorageAccountName')]", + "[variables('applicationDiagnosticsStorageAccountName')]" + ], + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "ServiceFabricNodeVmExt_vmNodeType0Name", + "properties": { + "type": "ServiceFabricNode", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2021-01-01').keys[0].value]", + "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2021-01-01').keys[1].value]" + }, + "publisher": "Microsoft.Azure.ServiceFabric", + "settings": { + "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", + "nodeTypeRef": "[toLower(concat('NT1', variables('vmName')))]", + "dataPath": "[concat(if(equals(parameters('nodeDataDrive'), 'OS'), 'C', 'D'), ':\\\\SvcFab')]", + "durabilityLevel": "Silver", + "nicPrefixOverride": "10.0.0.0/24", + "certificate": { + "thumbprint": "GEN-SF-CERT-THUMBPRINT", + "x509StoreName": "My" + } + }, + "typeHandlerVersion": "1.0" + } + }, + { + "name": "VMDiagnosticsVmExt_vmNodeType0Name", + "properties": { + "type": "IaaSDiagnostics", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2021-01-01').keys[0].value]", + "storageAccountEndPoint": "[concat('https://', environment().suffixes.storage)]" + }, + "publisher": "Microsoft.Azure.Diagnostics", + "settings": { + "WadCfg": { + "DiagnosticMonitorConfiguration": { + "overallQuotaInMB": "50000", + "EtwProviders": { + "EtwEventSourceProviderConfiguration": [ + { + "provider": "Microsoft-ServiceFabric-Actors", + "scheduledTransferKeywordFilter": "1", + "scheduledTransferPeriod": "PT5M", + "DefaultEvents": { + "eventDestination": "ServiceFabricReliableActorEventTable" + } + }, + { + "provider": "Microsoft-ServiceFabric-Services", + "scheduledTransferPeriod": "PT5M", + "DefaultEvents": { + "eventDestination": "ServiceFabricReliableServiceEventTable" + } + } + ], + "EtwManifestProviderConfiguration": [ + { + "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8", + "scheduledTransferLogLevelFilter": "Information", + "scheduledTransferKeywordFilter": "4611686018427387904", + "scheduledTransferPeriod": "PT5M", + "DefaultEvents": { + "eventDestination": "ServiceFabricSystemEventTable" + } + } + ] + } + } + }, + "StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]" + }, + "typeHandlerVersion": "1.5" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "NIC-0", + "properties": { + "ipConfigurations": [ + { + "name": "NIC-0", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressPool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/LB-GEN-UNIQUE-[toLower(concat('NT1', variables('vmName')))]/LoadBalancerBEAddressNatPool" + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//VNet/Subnet-0" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminPassword": "GEN-PASSWORD", + "adminUsername": "GEN-UNIQUE", + "computernamePrefix": "[toLower(concat('NT1', variables('vmName')))]", + "secrets": [ + { + "sourceVault": { + "id": "GEN-KEYVAULT-RESOURCE-ID" + }, + "vaultCertificates": [ + { + "certificateStore": "My", + "certificateUrl": "GEN-SF-CERT-URL" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "caching": "ReadOnly", + "createOption": "FromImage" + } + } + } + } + }, + { + "apiVersion": "2019-03-01", + "type": "Microsoft.ServiceFabric/clusters", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('supportLogStorageAccountName')]" + ], + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + }, + "properties": { + "certificate": { + "thumbprint": "GEN-SF-CERT-THUMBPRINT", + "x509StoreName": "My" + }, + "clusterState": "Default", + "diagnosticsStorageAccountConfig": { + "blobEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')), '2021-01-01').primaryEndpoints.blob]", + "protectedAccountKeyName": "StorageAccountKey1", + "queueEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')), '2021-01-01').primaryEndpoints.queue]", + "storageAccountName": "[variables('supportLogStorageAccountName')]", + "tableEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')), '2021-01-01').primaryEndpoints.table]" + }, + "fabricSettings": [ + { + "parameters": [ + { + "name": "ClusterProtectionLevel", + "value": "EncryptAndSign" + } + ], + "name": "Security" + } + ], + "managementEndpoint": "[concat('https://',reference(variables('lbIPName')).dnsSettings.fqdn,':',variables('nt0fabricHttpGatewayPort'))]", + "nodeTypes": [ + { + "name": "[toLower(concat('NT1', variables('vmName')))]", + "applicationPorts": { + "endPort": "30000", + "startPort": "20000" + }, + "clientConnectionEndpointPort": "19000", + "durabilityLevel": "Silver", + "ephemeralPorts": { + "endPort": "65534", + "startPort": "49152" + }, + "httpGatewayEndpointPort": "19080", + "isPrimary": true, + "vmInstanceCount": 5 + } + ], + "provisioningState": "Default", + "reliabilityLevel": "Silver", + "upgradeMode": "Automatic", + "vmImage": "Windows" + } + } + ], + "outputs": { + "clusterProperties": { + "value": "[reference(parameters('clusterName'))]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1681 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1681 new file mode 100644 index 0000000..d0832af --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1681 @@ -0,0 +1,1734 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.servicefabric/service-fabric-secure-nsg-cluster-65-node-3-nodetype/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/service-fabric-secure-nsg-cluster-65-node-3-nodetype/azuredeploy.parameters.json" + ], + "timestamp": 1642962910271, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.servicefabric/service-fabric-secure-nsg-cluster-65-node-3-nodetype/azuredeploy.json", + "/quickstarts/microsoft.servicefabric/service-fabric-secure-nsg-cluster-65-node-3-nodetype/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1681", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups", + "microsoft.servicefabric/clusters", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1681", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Cluster" + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Remote desktop user Id" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Remote desktop user password. Must be a strong password" + }, + "value": "GEN-PASSWORD" + }, + "vmImagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "VM image Publisher" + } + }, + "vmImageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "VM image offer" + } + }, + "vmImageSku": { + "type": "string", + "defaultValue": "2019-Datacenter", + "metadata": { + "description": "VM image SKU" + } + }, + "vmImageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "VM image version" + } + }, + "loadBalancedAppPort1": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Input endpoint1 for the application to use. Replace it with what your application uses" + } + }, + "loadBalancedAppPort2": { + "type": "int", + "defaultValue": 8081, + "metadata": { + "description": "Input endpoint2 for the application to use. Replace it with what your application uses" + } + }, + "clusterProtectionLevel": { + "type": "string", + "allowedValues": [ + "None", + "Sign", + "EncryptAndSign" + ], + "defaultValue": "EncryptAndSign", + "metadata": { + "description": "Protection level.Three values are allowed - EncryptAndSign, Sign, None. It is best to keep the default of EncryptAndSign, unless you have a need not to" + } + }, + "certificateStoreValue": { + "type": "string", + "allowedValues": [ + "My" + ], + "defaultValue": "My", + "metadata": { + "description": "The store name where the cert will be deployed in the virtual machine" + } + }, + "certificateThumbprint": { + "type": "string", + "metadata": { + "description": "X.509 SHA-1 Certificate Thumbprint" + }, + "value": "GEN-SF-CERT-THUMBPRINT" + }, + "sourceVaultValue": { + "type": "string", + "metadata": { + "description": "Resource Id of the key vault, is should be in the format of /subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/" + }, + "value": "GEN-KEYVAULT-RESOURCE-ID" + }, + "certificateUrlValue": { + "type": "string", + "metadata": { + "description": "Refers to the location URL in your key vault where the certificate was uploaded.>" + }, + "value": "GEN-SF-CERT-URL" + }, + "diskType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS" + ], + "defaultValue": "StandardSSD_LRS", + "metadata": { + "description": "Replication option for the VM image disks" + } + }, + "supportLogStorageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Replication option for the support log storage account" + } + }, + "nt0InstanceCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Instance count for node type" + } + }, + "nt1InstanceCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Instance count for node type" + } + }, + "nt2InstanceCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Instance count for node type" + } + } + }, + "variables": { + "dnsName": "[toLower(parameters('clusterName'))]", + "vmName": "vm", + "virtualNetworkName": "VNet", + "addressPrefix": "10.0.0.0/16", + "nicName": "NIC", + "lbIPName": "PublicIP-LB-FE", + "overProvision": "false", + "nodeSettings": [ + { + "applicationStartPort": "20000", + "applicationEndPort": "30000", + "ephemeralStartPort": "49152", + "ephemeralEndPort": "65534", + "fabricTcpGatewayPort": "19000", + "fabricHttpGatewayPort": "19080", + "vmNodeTypeName": "[toLower(concat('SF', variables('vmName')))]", + "vmNodeTypeSize": "Standard_D2_v3", + "instanceCount": 5 + }, + { + "applicationStartPort": "20000", + "applicationEndPort": "30000", + "ephemeralStartPort": "49152", + "ephemeralEndPort": "65534", + "fabricTcpGatewayPort": "19000", + "fabricHttpGatewayPort": "19080", + "vmNodeTypeName": "[toLower(concat('NT1', variables('vmName')))]", + "vmNodeTypeSize": "Standard_D2_v3", + "instanceCount": 5 + }, + { + "applicationStartPort": "20000", + "applicationEndPort": "30000", + "ephemeralStartPort": "49152", + "ephemeralEndPort": "65534", + "fabricTcpGatewayPort": "19000", + "fabricHttpGatewayPort": "19080", + "vmNodeTypeName": "[toLower(concat('NT2', variables('vmName')))]", + "vmNodeTypeSize": "Standard_D2_v3", + "instanceCount": 5 + } + ], + "subnetSettings": [ + { + "subnetName": "Subnet-0", + "subnetPrefix": "10.0.0.0/24" + }, + { + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.1.0/24" + }, + { + "subnetName": "Subnet-2", + "subnetPrefix": "10.0.2.0/24" + } + ], + "supportLogStorageAccountName": "[toLower( concat( uniqueString(resourceGroup().id),'2'))]", + "lbIPNameUrl": "PublicIP-LB-FE-0" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[toLower( concat( uniqueString(resourceGroup().id),'2'))]", + "location": "[resourceGroup().location]", + "properties": {}, + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups/', concat('nsg-', variables('subnetSettings')[0].subnetName))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', concat('nsg-', variables('subnetSettings')[1].subnetName))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', concat('nsg-', variables('subnetSettings')[2].subnetName))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "copy": [ + { + "name": "subnets", + "count": 27, + "input": { + "name": "(subnetSettings)[copyIndex(subnets)].subnetName", + "properties": { + "addressPrefix": "(subnetSettings)[copyIndex(subnets)].subnetPrefix", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat('nsg-', variables('subnetSettings')[copyIndex('subnets')].subnetName))]" + } + } + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "PublicIP-LB-FE-0", + "location": "[resourceGroup().location]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('clusterName'))]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/loadBalancers", + "name": "[concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[0].vmNodeTypeName)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//PublicIP-LB-FE-0" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerIPConfig", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIP-LB-FE-0" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBEAddressPool", + "properties": {} + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat('LB','-', parameters('clusterName'), '-', variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": "(nodeSettings)[0].fabricTcpGatewayPort", + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": "(nodeSettings)[0].fabricTcpGatewayPort", + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[0].vmNodeTypeName), 'FabricGatewayProbe')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "LBHttpRule", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat('LB','-', parameters('clusterName'), '-', variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": "(nodeSettings)[0].fabricHttpGatewayPort", + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": "(nodeSettings)[0].fabricHttpGatewayPort", + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', concat('LB','-', parameters('clusterName'), '-', variables('nodeSettings')[0].vmNodeTypeName), 'FabricHttpGatewayProbe')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule1", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat('LB','-', parameters('clusterName'), '-', variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[0].vmNodeTypeName), 'AppPortProbe1')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule2", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat('LB','-', parameters('clusterName'), '-', variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": 8081, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": 8081, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[0].vmNodeTypeName), 'AppPortProbe1')]" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "FabricGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "(nodeSettings)[0].fabricTcpGatewayPort", + "protocol": "Tcp" + } + }, + { + "name": "FabricHttpGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "(nodeSettings)[0].fabricHttpGatewayPort", + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe1", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 80, + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe2", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 8081, + "protocol": "Tcp" + } + } + ], + "inboundNatPools": [ + { + "name": "LoadBalancerBEAddressNatPool", + "properties": { + "backendPort": 3389, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPortRangeEnd": 4500, + "frontendPortRangeStart": 3389, + "protocol": "Tcp" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[concat('nsg-', variables('subnetSettings')[0].subnetName)]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allowSvcFabSMB", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "445", + "direction": "Inbound", + "priority": 3950, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow SMB traffic within the net, used by fabric to move packages around" + } + }, + { + "name": "allowSvcFabCluser", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "1025-1027", + "direction": "Inbound", + "priority": 3920, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow ports within vnet that are used by the fabric to talk between nodes" + } + }, + { + "name": "allowSvcFabEphemeral", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "[concat(variables('nodeSettings')[0].ephemeralStartPort, '-', variables('nodeSettings')[0].ephemeralEndPort)]", + "direction": "Inbound", + "priority": 3930, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow fabric ephemeral ports within the vnet" + } + }, + { + "name": "allowSvcFabPortal", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "(nodeSettings)[0].fabricHttpGatewayPort", + "direction": "Inbound", + "priority": 3900, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow port used to access the fabric cluster web portal" + } + }, + { + "name": "allowSvcFabClient", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "(nodeSettings)[0].fabricTcpGatewayPort", + "direction": "Inbound", + "priority": 3910, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow port used by the fabric client (includes powershell)" + } + }, + { + "name": "allowSvcFabApplication", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "[concat(variables('nodeSettings')[0].applicationStartPort, '-', variables('nodeSettings')[0].applicationEndPort)]", + "direction": "Inbound", + "priority": 3940, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow fabric application ports within the vnet" + } + }, + { + "name": "blockAll", + "properties": { + "access": "Deny", + "destinationAddressPrefix": "*", + "destinationPortRange": "*", + "direction": "Inbound", + "priority": 4095, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "block all traffic except what we've explicitly allowed" + } + }, + { + "name": "allowVNetRDP", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389-4500", + "direction": "Inbound", + "priority": 3960, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow RDP within the net" + } + }, + { + "name": "allowAppPort1", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": 80, + "direction": "Inbound", + "priority": 2001, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow public application port 1" + } + }, + { + "name": "allowAppPort2", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": 8081, + "direction": "Inbound", + "priority": 2002, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow public application port 2" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "(nodeSettings)[0].vmNodeTypeName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VNet", + "[resourceId('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[0].vmNodeTypeName))]", + "Microsoft.Storage/storageAccounts//[toLower( concat( uniqueString(resourceGroup().id),'2'))]" + ], + "properties": { + "overprovision": "false", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "ServiceFabricNodeVmExt_vmNodeType0Name", + "properties": { + "type": "ServiceFabricNode", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2021-04-01').keys[0].value]", + "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2021-04-01').keys[1].value]" + }, + "publisher": "Microsoft.Azure.ServiceFabric", + "settings": { + "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", + "nodeTypeRef": "(nodeSettings)[0].vmNodeTypeName", + "dataPath": "D:\\SvcFab", + "durabilityLevel": "Bronze", + "nicPrefixOverride": "(subnetSettings)[0].subnetPrefix", + "certificate": { + "thumbprint": "GEN-SF-CERT-THUMBPRINT", + "x509StoreName": "My" + } + }, + "typeHandlerVersion": "1.0" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "NIC-0", + "properties": { + "ipConfigurations": [ + { + "name": "NIC-0", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat('LB','-', parameters('clusterName'), '-', variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[0].vmNodeTypeName), 'LoadBalancerBEAddressNatPool')]" + } + ], + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetSettings')[0].subnetName)]" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminPassword": "GEN-PASSWORD", + "adminUsername": "GEN-UNIQUE", + "computernamePrefix": "(nodeSettings)[0].vmNodeTypeName", + "secrets": [ + { + "sourceVault": { + "id": "GEN-KEYVAULT-RESOURCE-ID" + }, + "vaultCertificates": [ + { + "certificateStore": "My", + "certificateUrl": "GEN-SF-CERT-URL" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + } + } + }, + "sku": { + "name": "(nodeSettings)[0].vmNodeTypeSize", + "capacity": "(nodeSettings)[0].instanceCount", + "tier": "Standard" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "PublicIP-LB-FE-1", + "location": "[resourceGroup().location]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('clusterName'))]-web" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/loadBalancers", + "name": "[concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[1].vmNodeTypeName)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//PublicIP-LB-FE-1" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerIPConfig", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIP-LB-FE-1" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBEAddressPool", + "properties": {} + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": "(nodeSettings)[1].fabricTcpGatewayPort", + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": "(nodeSettings)[1].fabricTcpGatewayPort", + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'FabricGatewayProbe')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "LBHttpRule", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": "(nodeSettings)[1].fabricHttpGatewayPort", + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": "(nodeSettings)[1].fabricHttpGatewayPort", + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'FabricHttpGatewayProbe')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule1", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'AppPortProbe1')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule2", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": 8081, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": 8081, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes',concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[1].vmNodeTypeName), 'AppPortProbe2')]" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "FabricGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "(nodeSettings)[1].fabricTcpGatewayPort", + "protocol": "Tcp" + } + }, + { + "name": "FabricHttpGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "(nodeSettings)[1].fabricHttpGatewayPort", + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe1", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 80, + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe2", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 8081, + "protocol": "Tcp" + } + } + ], + "inboundNatPools": [ + { + "name": "LoadBalancerBEAddressNatPool", + "properties": { + "backendPort": 3389, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPortRangeEnd": 4500, + "frontendPortRangeStart": 3389, + "protocol": "Tcp" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[concat('nsg-', variables('subnetSettings')[1].subnetName)]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allowSvcFabSMB", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "445", + "direction": "Inbound", + "priority": 3950, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow SMB traffic within the net, used by fabric to move packages around" + } + }, + { + "name": "allowSvcFabCluser", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "1025-1027", + "direction": "Inbound", + "priority": 3920, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow ports within vnet that are used by the fabric to talk between nodes" + } + }, + { + "name": "allowSvcFabEphemeral", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "[concat(variables('nodeSettings')[1].ephemeralStartPort, '-', variables('nodeSettings')[1].ephemeralEndPort)]", + "direction": "Inbound", + "priority": 3930, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow fabric ephemeral ports within the vnet" + } + }, + { + "name": "allowSvcFabPortal", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "(nodeSettings)[1].fabricHttpGatewayPort", + "direction": "Inbound", + "priority": 3900, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow port used to access the fabric cluster web portal" + } + }, + { + "name": "allowSvcFabClient", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "(nodeSettings)[1].fabricTcpGatewayPort", + "direction": "Inbound", + "priority": 3910, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow port used by the fabric client (includes powershell)" + } + }, + { + "name": "allowSvcFabApplication", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "[concat(variables('nodeSettings')[1].applicationStartPort, '-', variables('nodeSettings')[1].applicationEndPort)]", + "direction": "Inbound", + "priority": 3940, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow fabric application ports within the vnet" + } + }, + { + "name": "blockAll", + "properties": { + "access": "Deny", + "destinationAddressPrefix": "*", + "destinationPortRange": "*", + "direction": "Inbound", + "priority": 4095, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "block all traffic except what we've explicitly allowed" + } + }, + { + "name": "allowVNetRDP", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389-4500", + "direction": "Inbound", + "priority": 3960, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow RDP within the net" + } + }, + { + "name": "allowAppPort1", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": 80, + "direction": "Inbound", + "priority": 2001, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow public application port 1" + } + }, + { + "name": "allowAppPort2", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": 8081, + "direction": "Inbound", + "priority": 2002, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow public application port 2" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "(nodeSettings)[1].vmNodeTypeName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VNet", + "[resourceId('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[1].vmNodeTypeName))]", + "Microsoft.Storage/storageAccounts//[toLower( concat( uniqueString(resourceGroup().id),'2'))]" + ], + "properties": { + "overprovision": "false", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "ServiceFabricNodeVmExt_vmNodeType1Name", + "properties": { + "type": "ServiceFabricNode", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2021-04-01').keys[0].value]", + "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2021-04-01').keys[1].value]" + }, + "publisher": "Microsoft.Azure.ServiceFabric", + "settings": { + "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", + "nodeTypeRef": "(nodeSettings)[1].vmNodeTypeName", + "dataPath": "D:\\SvcFab", + "durabilityLevel": "Bronze", + "nicPrefixOverride": "(subnetSettings)[1].subnetPrefix", + "certificate": { + "thumbprint": "GEN-SF-CERT-THUMBPRINT", + "x509StoreName": "My" + } + }, + "typeHandlerVersion": "1.0" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "NIC-1", + "properties": { + "ipConfigurations": [ + { + "name": "NIC-1", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[1].vmNodeTypeName), 'LoadBalancerBEAddressNatPool')]" + } + ], + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetSettings')[1].subnetName)]" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminPassword": "GEN-PASSWORD", + "adminUsername": "GEN-UNIQUE", + "computernamePrefix": "(nodeSettings)[1].vmNodeTypeName", + "secrets": [ + { + "sourceVault": { + "id": "GEN-KEYVAULT-RESOURCE-ID" + }, + "vaultCertificates": [ + { + "certificateStore": "My", + "certificateUrl": "GEN-SF-CERT-URL" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + } + } + }, + "sku": { + "name": "(nodeSettings)[1].vmNodeTypeSize", + "capacity": "(nodeSettings)[1].instanceCount", + "tier": "Standard" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "PublicIP-LB-FE-2", + "location": "[resourceGroup().location]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('clusterName'))]-backend" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/loadBalancers", + "name": "[concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[2].vmNodeTypeName)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//PublicIP-LB-FE-2" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerIPConfig", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIP-LB-FE-2" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBEAddressPool", + "properties": {} + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": "(nodeSettings)[2].fabricTcpGatewayPort", + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": "(nodeSettings)[2].fabricTcpGatewayPort", + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes',concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[2].vmNodeTypeName), 'FabricGatewayProbe')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "LBHttpRule", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": "(nodeSettings)[2].fabricHttpGatewayPort", + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": "(nodeSettings)[2].fabricHttpGatewayPort", + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes',concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[2].vmNodeTypeName), 'FabricHttpGatewayProbe')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule1", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName),'AppPortProbe1')]" + }, + "protocol": "Tcp" + } + }, + { + "name": "AppPortLBRule2", + "properties": { + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + }, + "backendPort": 8081, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPort": 8081, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes',concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[2].vmNodeTypeName),'AppPortProbe2')]" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "FabricGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "(nodeSettings)[2].fabricTcpGatewayPort", + "protocol": "Tcp" + } + }, + { + "name": "FabricHttpGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "(nodeSettings)[2].fabricHttpGatewayPort", + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe1", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 80, + "protocol": "Tcp" + } + }, + { + "name": "AppPortProbe2", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 8081, + "protocol": "Tcp" + } + } + ], + "inboundNatPools": [ + { + "name": "LoadBalancerBEAddressNatPool", + "properties": { + "backendPort": 3389, + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerIPConfig')]" + }, + "frontendPortRangeEnd": 4500, + "frontendPortRangeStart": 3389, + "protocol": "Tcp" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[concat('nsg-', variables('subnetSettings')[2].subnetName)]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allowSvcFabSMB", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "445", + "direction": "Inbound", + "priority": 3950, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow SMB traffic within the net, used by fabric to move packages around" + } + }, + { + "name": "allowSvcFabCluser", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "1025-1027", + "direction": "Inbound", + "priority": 3920, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow ports within vnet that are used by the fabric to talk between nodes" + } + }, + { + "name": "allowSvcFabEphemeral", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "[concat(variables('nodeSettings')[2].ephemeralStartPort, '-', variables('nodeSettings')[2].ephemeralEndPort)]", + "direction": "Inbound", + "priority": 3930, + "protocol": "*", + "sourceAddressPrefix": "VirtualNetwork", + "sourcePortRange": "*", + "description": "allow fabric ephemeral ports within the vnet" + } + }, + { + "name": "allowSvcFabPortal", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "(nodeSettings)[2].fabricHttpGatewayPort", + "direction": "Inbound", + "priority": 3900, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow port used to access the fabric cluster web portal" + } + }, + { + "name": "allowSvcFabClient", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "(nodeSettings)[2].fabricTcpGatewayPort", + "direction": "Inbound", + "priority": 3910, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow port used by the fabric client (includes powershell)" + } + }, + { + "name": "allowSvcFabApplication", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "[concat(variables('nodeSettings')[2].applicationStartPort, '-', variables('nodeSettings')[2].applicationEndPort)]", + "direction": "Inbound", + "priority": 3940, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow fabric application ports within the vnet" + } + }, + { + "name": "blockAll", + "properties": { + "access": "Deny", + "destinationAddressPrefix": "*", + "destinationPortRange": "*", + "direction": "Inbound", + "priority": 4095, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow fabric application ports within the vnet" + } + }, + { + "name": "allowVNetRDP", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389-4500", + "direction": "Inbound", + "priority": 3960, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow RDP within the net" + } + }, + { + "name": "allowAppPort1", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": 80, + "direction": "Inbound", + "priority": 2001, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow public application port 1" + } + }, + { + "name": "allowAppPort2", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": 8081, + "direction": "Inbound", + "priority": 2002, + "protocol": "*", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "description": "allow public application port 2" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "(nodeSettings)[2].vmNodeTypeName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VNet", + "[resourceId('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[2].vmNodeTypeName))]", + "Microsoft.Storage/storageAccounts//[toLower( concat( uniqueString(resourceGroup().id),'2'))]" + ], + "properties": { + "overprovision": "false", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "ServiceFabricNodeVmExt_vmNodeType2Name", + "properties": { + "type": "ServiceFabricNode", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2021-04-01').keys[0].value]", + "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2021-04-01').keys[1].value]" + }, + "publisher": "Microsoft.Azure.ServiceFabric", + "settings": { + "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", + "nodeTypeRef": "(nodeSettings)[2].vmNodeTypeName", + "dataPath": "D:\\SvcFab", + "durabilityLevel": "Bronze", + "nicPrefixOverride": "(subnetSettings)[2].subnetPrefix", + "certificate": { + "thumbprint": "GEN-SF-CERT-THUMBPRINT", + "x509StoreName": "My" + } + }, + "typeHandlerVersion": "1.0" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "NIC-2", + "properties": { + "ipConfigurations": [ + { + "name": "NIC-2", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools',concat('LB','-', parameters('clusterName'),'-', variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerBEAddressPool')]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools',concat('LB','-', parameters('clusterName'),'-',variables('nodeSettings')[2].vmNodeTypeName), 'LoadBalancerBEAddressNatPool')]" + } + ], + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetSettings')[2].subnetName)]" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminPassword": "GEN-PASSWORD", + "adminUsername": "GEN-UNIQUE", + "computernamePrefix": "(nodeSettings)[2].vmNodeTypeName", + "secrets": [ + { + "sourceVault": { + "id": "GEN-KEYVAULT-RESOURCE-ID" + }, + "vaultCertificates": [ + { + "certificateStore": "My", + "certificateUrl": "GEN-SF-CERT-URL" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + } + } + }, + "sku": { + "name": "(nodeSettings)[2].vmNodeTypeSize", + "capacity": "(nodeSettings)[2].instanceCount", + "tier": "Standard" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2018-02-01", + "type": "Microsoft.ServiceFabric/clusters", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[toLower( concat( uniqueString(resourceGroup().id),'2'))]" + ], + "properties": { + "certificate": { + "thumbprint": "GEN-SF-CERT-THUMBPRINT", + "x509StoreName": "My" + }, + "clusterState": "Default", + "diagnosticsStorageAccountConfig": { + "blobEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), '2021-04-01').primaryEndpoints.blob]", + "protectedAccountKeyName": "StorageAccountKey1", + "queueEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), '2021-04-01').primaryEndpoints.queue]", + "storageAccountName": "[toLower( concat( uniqueString(resourceGroup().id),'2'))]", + "tableEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), '2021-04-01').primaryEndpoints.table]" + }, + "fabricSettings": [ + { + "parameters": [ + { + "name": "ClusterProtectionLevel", + "value": "EncryptAndSign" + } + ], + "name": "Security" + } + ], + "managementEndpoint": "[concat('https://', reference(variables('lbIPNameUrl')).dnsSettings.fqdn,':',variables('nodeSettings')[0].fabricHttpGatewayPort)]", + "copy": [ + { + "name": "nodeTypes", + "count": 25, + "input": { + "name": "(nodeSettings)[copyIndex(nodeTypes)].vmNodeTypeName", + "applicationPorts": { + "endPort": "(nodeSettings)[copyIndex(nodeTypes)].applicationEndPort", + "startPort": "(nodeSettings)[copyIndex(nodeTypes)].applicationStartPort" + }, + "clientConnectionEndpointPort": "(nodeSettings)[copyIndex(nodeTypes)].fabricTcpGatewayPort", + "durabilityLevel": "Bronze", + "ephemeralPorts": { + "endPort": "(nodeSettings)[copyIndex(nodeTypes)].ephemeralEndPort", + "startPort": "(nodeSettings)[copyIndex(nodeTypes)].ephemeralStartPort" + }, + "httpGatewayEndpointPort": "(nodeSettings)[copyIndex(nodeTypes)].fabricHttpGatewayPort", + "isPrimary": true, + "vmInstanceCount": "(nodeSettings)[0].instanceCount" + } + } + ], + "provisioningState": "Default", + "reliabilityLevel": "Silver", + "upgradeMode": "Automatic", + "vmImage": "Windows" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "GEN-UNIQUE" + } + } + ], + "outputs": { + "clusterProperties": { + "value": "[reference(parameters('clusterName'))]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1682 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1682 new file mode 100644 index 0000000..16edda8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1682 @@ -0,0 +1,196 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.signalrservice/signalr/azuredeploy.json", + "/quickstarts/microsoft.signalrservice/signalr/azuredeploy.parameters.json" + ], + "timestamp": 1642962910288, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.signalrservice/signalr/azuredeploy.json", + "/quickstarts/microsoft.signalrservice/signalr/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1682", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.signalrservice/signalr" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1682", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "The globally unique name of the SignalR resource to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the SignalR resource." + } + }, + "pricingTier": { + "type": "string", + "defaultValue": "Standard_S1", + "allowedValues": [ + "Free_F1", + "Standard_S1" + ], + "metadata": { + "description": "The pricing tier of the SignalR resource." + } + }, + "capacity": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 5, + 10, + 20, + 50, + 100 + ], + "metadata": { + "description": "The number of SignalR Unit." + } + }, + "serviceMode": { + "type": "string", + "defaultValue": "Default", + "allowedValues": [ + "Default", + "Serverless", + "Classic" + ], + "metadata": { + "description": "Visit https://github.com/Azure/azure-signalr/blob/dev/docs/faq.md#service-mode to understand SignalR Service Mode." + } + }, + "enableConnectivityLogs": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ] + }, + "enableMessagingLogs": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ] + }, + "enableLiveTrace": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ] + }, + "allowedOrigins": { + "type": "array", + "defaultValue": [ + "https://foo.com", + "https://bar.com" + ], + "metadata": { + "description": "Set the list of origins that should be allowed to make cross-origin calls." + } + } + }, + "resources": [ + { + "type": "Microsoft.SignalRService/SignalR", + "apiVersion": "2020-07-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "capacity": 1, + "name": "Standard_S1" + }, + "kind": "SignalR", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "tls": { + "clientCertEnabled": false + }, + "features": [ + { + "flag": "ServiceMode", + "value": "Default" + }, + { + "flag": "EnableConnectivityLogs", + "value": "true" + }, + { + "flag": "EnableMessagingLogs", + "value": "true" + }, + { + "flag": "EnableLiveTrace", + "value": "true" + } + ], + "cors": { + "allowedOrigins": [ + "https://foo.com", + "https://bar.com" + ] + }, + "networkACLs": { + "defaultAction": "deny", + "publicNetwork": { + "allow": [ + "ClientConnection" + ] + }, + "privateEndpoints": [ + { + "name": "mySignalRService.1fa229cd-bf3f-47f0-8c49-afb36723997e", + "allow": [ + "ServerConnection" + ] + } + ] + }, + "upstream": { + "templates": [ + { + "categoryPattern": "*", + "eventPattern": "connect,disconnect", + "hubPattern": "*", + "urlTemplate": "https://example.com/chat/api/connect" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1683 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1683 new file mode 100644 index 0000000..3699166 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1683 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application/artifacts/ManagedAppZip/mainTemplate.json" + ], + "timestamp": 1642962910295, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application/artifacts/ManagedAppZip/mainTemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1683", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1683", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name for the Hello World managed application" + } + } + }, + "variables": { + "storageAccountId": "Microsoft.Storage/storageAccounts/storageAccountName" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storageAccountName", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + } + ], + "outputs": { + "storageEndpoint": { + "type": "string", + "value": "[reference(variables('storageAccountId'), '2019-04-01').primaryEndpoints.blob]" + }, + "storageAccountId": { + "type": "string", + "value": "[variables('storageAccountId')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1684 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1684 new file mode 100644 index 0000000..881611c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1684 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application/azuredeploy.parameters.json" + ], + "timestamp": 1642962910303, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1684", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.solutions/applicationdefinitions", + "microsoft.solutions/applications" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1684", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "applicationName": { + "type": "string", + "metadata": { + "description": "Managed application name" + }, + "defaultValue": "helloWorldApplication", + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name" + }, + "value": "GEN-UNIQUE" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "value": "Standard_LRS" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "lockLevel": "None", + "description": "Sample Managed application definition", + "displayName": "Sample Managed application definition", + "managedApplicationDefinitionName": "GEN-UNIQUE_ApplicationDefinition", + "packageFileUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/ManagedAppZip/pkg.zip', parameters('_artifactsLocationSasToken')))]", + "managedResourceGroupId": "[concat(subscription().id,'/resourceGroups/', concat(parameters('applicationName'),'_managed'))]", + "applicationDefinitionResourceId": "Microsoft.Solutions/applicationDefinitions/GEN-UNIQUE_ApplicationDefinition" + }, + "resources": [ + { + "type": "Microsoft.Solutions/applicationDefinitions", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE_ApplicationDefinition", + "location": "[resourceGroup().location]", + "properties": { + "lockLevel": "None", + "description": "Sample Managed application definition", + "displayName": "Sample Managed application definition", + "packageFileUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/ManagedAppZip/pkg.zip', parameters('_artifactsLocationSasToken')))]" + } + }, + { + "type": "Microsoft.Solutions/applications", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "ServiceCatalog", + "dependsOn": [ + "Microsoft.Solutions/applicationDefinitions//GEN-UNIQUE_ApplicationDefinition" + ], + "properties": { + "managedResourceGroupId": "[variables('managedResourceGroupId')]", + "applicationDefinitionId": "Microsoft.Solutions/applicationDefinitions/GEN-UNIQUE_ApplicationDefinition", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "storageAccountName": { + "value": "GEN-UNIQUE" + }, + "storageAccountType": { + "value": "Standard_LRS" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1685 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1685 new file mode 100644 index 0000000..0ade171 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1685 @@ -0,0 +1,69 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/artifacts/ManagedAppZip/linkedtemplates/storageAccountdeploy.json" + ], + "timestamp": 1642962910310, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/artifacts/ManagedAppZip/linkedtemplates/storageAccountdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1685", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1685", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name for the Hello World managed application" + } + } + }, + "variables": { + "storageAccountId": "Microsoft.Storage/storageAccounts/storageAccountName" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storageAccountName", + "apiVersion": "2019-06-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + } + ], + "outputs": { + "storageEndpoint": { + "type": "string", + "value": "[reference(variables('storageAccountId'), '2019-04-01').primaryEndpoints.blob]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1686 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1686 new file mode 100644 index 0000000..af6b6ee --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1686 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/artifacts/ManagedAppZip/mainTemplate.json" + ], + "timestamp": 1642962910316, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/artifacts/ManagedAppZip/mainTemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1686", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1686", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name for the Hello World managed application" + } + } + }, + "variables": { + "deploymentName": "linkedTemplate", + "_deploymentLink": "[deployment().properties.templateLink.uri]" + }, + "resources": [ + { + "apiVersion": "2019-09-01", + "name": "linkedTemplate", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('_deploymentLink'), 'linkedtemplates/storageAccountdeploy.json')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "storageAccountName": { + "value": "storageAccountName" + } + } + } + } + ], + "outputs": { + "storageEndpoint": { + "type": "string", + "value": "[reference(variables('deploymentName')).outputs.storageEndpoint.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1687 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1687 new file mode 100644 index 0000000..7f8d0a2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1687 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/azuredeploy.parameters.json" + ], + "timestamp": 1642962910321, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application-with-linked-templates/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1687", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.solutions/applicationdefinitions", + "microsoft.solutions/applications" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1687", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "applicationName": { + "type": "string", + "metadata": { + "description": "Managed application name" + }, + "defaultValue": "helloWorldApplication", + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name" + }, + "value": "GEN-UNIQUE" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "value": "Standard_LRS" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "lockLevel": "None", + "description": "Sample Managed application definition", + "displayName": "Sample Managed application definition", + "managedApplicationDefinitionName": "GEN-UNIQUE_ApplicationDefinition", + "packageFileUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/ManagedAppZip/pkg.zip', parameters('_artifactsLocationSasToken')))]", + "managedResourceGroupId": "[concat(subscription().id,'/resourceGroups/', concat(parameters('applicationName'),'_managed'))]", + "applicationDefinitionResourceId": "Microsoft.Solutions/applicationDefinitions/GEN-UNIQUE_ApplicationDefinition" + }, + "resources": [ + { + "type": "Microsoft.Solutions/applicationDefinitions", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE_ApplicationDefinition", + "location": "[resourceGroup().location]", + "properties": { + "lockLevel": "None", + "description": "Sample Managed application definition", + "displayName": "Sample Managed application definition", + "packageFileUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/ManagedAppZip/pkg.zip', parameters('_artifactsLocationSasToken')))]" + } + }, + { + "type": "Microsoft.Solutions/applications", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "ServiceCatalog", + "dependsOn": [ + "Microsoft.Solutions/applicationDefinitions//GEN-UNIQUE_ApplicationDefinition" + ], + "properties": { + "managedResourceGroupId": "[variables('managedResourceGroupId')]", + "applicationDefinitionId": "Microsoft.Solutions/applicationDefinitions/GEN-UNIQUE_ApplicationDefinition", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "storageAccountName": { + "value": "GEN-UNIQUE" + }, + "storageAccountType": { + "value": "Standard_LRS" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1688 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1688 new file mode 100644 index 0000000..9c0eb20 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1688 @@ -0,0 +1,181 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/artifacts/ManagedAppZip/mainTemplate.json" + ], + "timestamp": 1642962910326, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/artifacts/ManagedAppZip/mainTemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1688", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.storage/storageaccounts", + "microsoft.insights/metricalerts", + "microsoft.insights/actiongroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1688", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name for the Hello World managed application" + } + } + }, + "variables": { + "storageAccountId": "Microsoft.Storage/storageAccounts/storageAccountName", + "metricAlertSuffix": "availability-over-0", + "metricAlertName": "storageAccountName-availability-over-0", + "metricAlertDescription": "Availability over 0", + "activityLogAlertSuffix": "keys-regeneration", + "activityLogAlertName": "storageAccountName-keys-regeneration", + "activityLogAlertDescription": "Used capacity over 0", + "actionGroupName": "sa-ama-test-ag", + "actionGroupShortName": "saamaag", + "actionGroupId": "Microsoft.Insights/actionGroups/sa-ama-test-ag" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storageAccountName", + "apiVersion": "2019-06-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Insights/actionGroups", + "apiVersion": "2019-06-01", + "name": "sa-ama-test-ag", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/storageAccountName" + ], + "location": "Global", + "properties": { + "enabled": true, + "groupShortName": "saamaag" + } + }, + { + "type": "Microsoft.Insights/metricAlerts", + "name": "storageAccountName-availability-over-0", + "apiVersion": "2018-03-01", + "location": "global", + "dependsOn": [ + "Microsoft.Insights/actionGroups/sa-ama-test-ag" + ], + "properties": { + "description": "Availability over 0", + "severity": 4, + "enabled": true, + "scopes": [ + "Microsoft.Storage/storageAccounts/storageAccountName" + ], + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "templateType": 8, + "criteria": { + "allOf": [ + { + "threshold": 0, + "name": "Metric1", + "metricNamespace": "Microsoft.Storage/storageAccounts", + "metricName": "Availability", + "operator": "GreaterThan", + "timeAggregation": "Average", + "monitorTemplateType": 8 + } + ], + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria" + }, + "autoMitigate": true, + "actions": [ + { + "actionGroupId": "Microsoft.Insights/actionGroups/sa-ama-test-ag" + } + ] + } + }, + { + "type": "Microsoft.Insights/activityLogAlerts", + "name": "storageAccountName-keys-regeneration", + "apiVersion": "2017-04-01", + "location": "global", + "dependsOn": [ + "Microsoft.Insights/actionGroups/sa-ama-test-ag" + ], + "properties": { + "scopes": [ + "[subscription().id]" + ], + "description": "Used capacity over 0", + "condition": { + "allOf": [ + { + "field": "category", + "equals": "Administrative" + }, + { + "field": "resourceId", + "equals": "Microsoft.Storage/storageAccounts/storageAccountName" + }, + { + "field": "operationName", + "equals": "Microsoft.Storage/storageAccounts/regeneratekey/action" + }, + { + "field": "status", + "equals": "Started" + } + ] + }, + "actions": { + "actionGroups": [ + { + "actionGroupId": "Microsoft.Insights/actionGroups/sa-ama-test-ag" + } + ] + }, + "enabled": true + } + } + ], + "outputs": { + "storageEndpoint": { + "type": "string", + "value": "[reference(variables('storageAccountId'), '2019-06-01').primaryEndpoints.blob]" + }, + "storageAccountId": { + "type": "string", + "value": "[variables('storageAccountId')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1689 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1689 new file mode 100644 index 0000000..7336258 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1689 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/azuredeploy.parameters.json" + ], + "timestamp": 1642962910332, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/azuredeploy.json", + "/quickstarts/microsoft.solutions/managed-application-with-metrics-and-alerts/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1689", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.solutions/applicationdefinitions", + "microsoft.solutions/applications" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1689", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "applicationName": { + "type": "string", + "metadata": { + "description": "Managed application name" + }, + "defaultValue": "applicationWithMetricsAndAlerts", + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name" + }, + "value": "GEN-UNIQUE" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "value": "Standard_LRS" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "applicationDefinitionName": "GEN-UNIQUE_definition", + "lockLevel": "None", + "description": "Sample managed application definition with metrics and alerts", + "displayName": "Sample managed application definition with metrics and alerts", + "packageFileUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/ManagedAppZip/pkg.zip', parameters('_artifactsLocationSasToken')))]", + "managedResourceGroupId": "[concat(subscription().id,'/resourceGroups/', concat(parameters('applicationName'),'_managed'))]", + "applicationDefinitionResourceId": "Microsoft.Solutions/applicationDefinitions/GEN-UNIQUE_definition" + }, + "resources": [ + { + "type": "Microsoft.Solutions/applicationDefinitions", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE_definition", + "location": "[resourceGroup().location]", + "properties": { + "lockLevel": "None", + "description": "Sample managed application definition with metrics and alerts", + "displayName": "Sample managed application definition with metrics and alerts", + "packageFileUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/ManagedAppZip/pkg.zip', parameters('_artifactsLocationSasToken')))]" + } + }, + { + "type": "Microsoft.Solutions/applications", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "ServiceCatalog", + "dependsOn": [ + "Microsoft.Solutions/applicationDefinitions/GEN-UNIQUE_definition" + ], + "properties": { + "managedResourceGroupId": "[variables('managedResourceGroupId')]", + "applicationDefinitionId": "Microsoft.Solutions/applicationDefinitions/GEN-UNIQUE_definition", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "storageAccountName": { + "value": "GEN-UNIQUE" + }, + "storageAccountType": { + "value": "Standard_LRS" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT169 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT169 new file mode 100644 index 0000000..8598ab0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT169 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-csa-extension.json" + ], + "timestamp": 1642962889209, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-csa-extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT169", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT169", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "fileUris": { + "type": "string" + }, + "arguments": { + "type": "securestring", + "defaultValue": " " + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": { + "UriFileNamePieces": "[split(parameters('fileUris'), '/')]", + "firstFileNameString": "(UriFileNamePieces)[sub(length(variables(UriFileNamePieces)), 1)]", + "firstFileNameBreakString": "[split(variables('firstFileNameString'), '?')]", + "firstFileName": "(firstFileNameBreakString)[0]" + }, + "resources": [ + { + "name": "vmName/CustomScriptExtension", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "location", + "tags": { + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "apiVersion": "2015-06-15", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.7", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "[split(parameters('fileUris'), ' ')]" + }, + "protectedSettings": { + "commandToExecute": "[concat ('powershell -ExecutionPolicy Unrestricted -File ', variables('firstFileName'), ' ', parameters('arguments'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1690 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1690 new file mode 100644 index 0000000..dfb322b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1690 @@ -0,0 +1,336 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/private-endpoint-sql/azuredeploy.json", + "/quickstarts/microsoft.sql/private-endpoint-sql/azuredeploy.parameters.json" + ], + "timestamp": 1642962910339, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/private-endpoint-sql/azuredeploy.json", + "/quickstarts/microsoft.sql/private-endpoint-sql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1690", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.sql/servers/databases", + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1690", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL logical server" + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL logical server." + }, + "value": "GEN-PASSWORD" + }, + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "secureString", + "metadata": { + "description": "Password for the Virtual Machine. The password must be at least 12 characters long and have lower case, upper characters, digit and a special character (Regex match)" + }, + "value": "GEN-PASSWORD" + }, + "VmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the VM" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vnetName": "myVirtualNetwork", + "vnetAddressPrefix": "10.0.0.0/16", + "subnet1Prefix": "10.0.0.0/24", + "subnet1Name": "mySubnet", + "sqlServerName": "[concat('sqlserver', uniqueString(resourceGroup().id))]", + "databaseName": "[concat(variables('sqlServerName'),'/sample-db')]", + "privateEndpointName": "myPrivateEndpoint", + "privateDnsZoneName": "[concat('privatelink', environment().suffixes.sqlServerHostname)]", + "pvtendpointdnsgroupname": "myPrivateEndpoint/mydnsgroupname", + "vmName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]", + "publicIpAddressName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]PublicIP", + "networkInterfaceName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt", + "osDiskType": "StandardSSD_LRS" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "name": "[variables('sqlServerName')]", + "location": "[resourceGroup().location]", + "kind": "v12.0", + "tags": { + "displayName": "[variables('sqlServerName')]" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0", + "publicNetworkAccess": "Disabled" + }, + "resources": [] + }, + { + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2020-02-02-preview", + "name": "[variables('databaseName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Basic", + "capacity": 5 + }, + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]" + ], + "tags": { + "displayName": "[variables('databaseName')]" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": 104857600, + "requestedServiceObjectiveName": "Basic", + "sampleName": "AdventureWorksLT" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "myVirtualNetwork", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + } + }, + "resources": [ + { + "type": "subnets", + "apiVersion": "2020-06-01", + "name": "mySubnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myVirtualNetwork" + ], + "properties": { + "addressPrefix": "10.0.0.0/24", + "privateEndpointNetworkPolicies": "Disabled" + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-06-01", + "name": "myPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('vnetName')]", + "[variables('sqlServerName')]" + ], + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVirtualNetwork/mySubnet" + }, + "privateLinkServiceConnections": [ + { + "name": "myPrivateEndpoint", + "properties": { + "privateLinkServiceId": "[resourceId('Microsoft.Sql/servers',variables('sqlServerName'))]", + "groupIds": [ + "sqlServer" + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "[variables('privateDnsZoneName')]", + "location": "global", + "dependsOn": [ + "myVirtualNetwork" + ], + "properties": "" + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[concat(variables('privateDnsZoneName'), '/', variables('privateDnsZoneName'), '-link')]", + "location": "global", + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/myVirtualNetwork" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "myPrivateEndpoint/mydnsgroupname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]", + "[variables('privateEndpointName')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config1", + "properties": { + "privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]PublicIP", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]PublicIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[tolower(variables('vmName'))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[take(concat('myVm', uniqueString(resourceGroup().id)),15)]PublicIP", + "Microsoft.Network/virtualNetworks/myVirtualNetwork" + ], + "tags": { + "displayName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[take(concat('myVm', uniqueString(resourceGroup().id)),15)]PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVirtualNetwork/mySubnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt" + ], + "tags": { + "displayName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[take(concat('myVm', uniqueString(resourceGroup().id)),15)]OsDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "diskSizeGB": 128 + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[take(concat('myVm', uniqueString(resourceGroup().id)),15)]NetInt" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1691 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1691 new file mode 100644 index 0000000..04ec03f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1691 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-blob-storage/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-blob-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962910346, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-blob-storage/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-blob-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1691", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1691", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string", + "defaultValue": "[concat('sql-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the SQL server" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sqlaudit', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the auditing storage account." + } + }, + "isStorageBehindVnet": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable Auditing to storage behind Virtual Network or firewall rules. The user deploying the template must have an administrator or owner permissions." + } + }, + "isMSDevOpsAuditEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable Auditing of Microsoft support operations (DevOps)" + } + } + }, + "variables": { + "StorageBlobContributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "uniqueRoleGuid": "[guid(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('sqlServerName')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('sqlaudit', uniqueString(resourceGroup().id))]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "[if(parameters('isStorageBehindVnet'), 'Deny', 'Allow')]" + } + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts/providers/roleAssignments", + "apiVersion": "2020-03-01-preview", + "name": "[concat('sqlaudit', uniqueString(resourceGroup().id))]/Microsoft.Authorization/[guid(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('sqlServerName')))]", + "dependsOn": [ + "Microsoft.Sql/servers/[concat('sql-', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sqlaudit', uniqueString(resourceGroup().id))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "principalId": "[reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName')), '2020-08-01-preview', 'Full').identity.principalId]", + "scope": "Microsoft.Storage/storageAccounts/[concat('sqlaudit', uniqueString(resourceGroup().id))]", + "principalType": "ServicePrincipal" + } + } + ] + }, + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "name": "[concat('sql-', uniqueString(resourceGroup().id))]", + "identity": "[if(parameters('isStorageBehindVnet'), json('{\"type\":\"SystemAssigned\"}'), json('null'))]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "tags": { + "displayName": "[concat('sql-', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "auditingSettings", + "apiVersion": "2019-06-01-preview", + "name": "DefaultAuditingSettings", + "dependsOn": [ + "[concat('sql-', uniqueString(resourceGroup().id))]", + "[concat('sqlaudit', uniqueString(resourceGroup().id))]", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments/', variables('uniqueRoleGuid'))]" + ], + "properties": { + "state": "Enabled", + "storageEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').PrimaryEndpoints.Blob]", + "storageAccountAccessKey": "[if(parameters('isStorageBehindVnet'), json('null'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]", + "storageAccountSubscriptionId": "[subscription().subscriptionId]", + "isStorageSecondaryKeyInUse": false + } + }, + { + "condition": false, + "type": "devOpsAuditingSettings", + "apiVersion": "2020-08-01-preview", + "name": "Default", + "dependsOn": [ + "[concat('sql-', uniqueString(resourceGroup().id))]", + "[concat('sqlaudit', uniqueString(resourceGroup().id))]", + "[guid(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('sqlServerName')))]" + ], + "properties": { + "state": "Enabled", + "storageEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').PrimaryEndpoints.Blob]", + "storageAccountAccessKey": "[if(parameters('isStorageBehindVnet'), json('null'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value)]", + "storageAccountSubscriptionId": "[subscription().subscriptionId]", + "isStorageSecondaryKeyInUse": false + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1692 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1692 new file mode 100644 index 0000000..878ecc1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1692 @@ -0,0 +1,205 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-eventhub/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-eventhub/azuredeploy.parameters.json" + ], + "timestamp": 1642962910353, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-eventhub/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1692", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1692", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string", + "defaultValue": "[concat('server-', uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "Name of the SQL server" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "eventHubName": { + "type": "string", + "defaultValue": "eventhub", + "metadata": { + "description": "The name of the event hub." + } + }, + "eventHubNamespaceName": { + "type": "string", + "defaultValue": "[concat('namespace', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Event Hubs namespace." + } + }, + "eventhubAuthorizationRuleName": { + "type": "string", + "defaultValue": "RootManageSharedAccessKey", + "metadata": { + "description": "Name of Namespace Authorization Rule." + } + }, + "isMSDevopsAuditEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable Auditing of Microsoft support operations (DevOps)" + } + } + }, + "variables": { + "diagnosticSettingsName": "SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1" + }, + "resources": [ + { + "apiVersion": "2018-01-01-preview", + "name": "[concat('namespace', uniqueString(resourceGroup().id))]", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2017-04-01", + "name": "eventhub", + "type": "eventhubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces/[concat('namespace', uniqueString(resourceGroup().id))]" + ] + } + ] + }, + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2019-06-01-preview", + "location": "[resourceGroup().location]", + "name": "[concat('server-', uniqueString(resourceGroup().id, deployment().name))]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "tags": { + "DisplayName": "[concat('server-', uniqueString(resourceGroup().id, deployment().name))]" + }, + "resources": [ + { + "type": "databases", + "apiVersion": "2019-06-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('server-', uniqueString(resourceGroup().id, deployment().name))]" + ], + "name": "master", + "properties": {} + }, + { + "type": "databases/providers/diagnosticSettings", + "name": "master/microsoft.insights/SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1", + "dependsOn": [ + "[concat('server-', uniqueString(resourceGroup().id, deployment().name))]", + "Microsoft.EventHub/namespaces/[concat('namespace', uniqueString(resourceGroup().id))]", + "Microsoft.Sql/servers/databases/[concat('server-', uniqueString(resourceGroup().id, deployment().name))]/master" + ], + "apiVersion": "2017-05-01-preview", + "properties": { + "name": "SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1", + "eventHubAuthorizationRuleId": "Microsoft.EventHub/namespaces/authorizationRules/[concat('namespace', uniqueString(resourceGroup().id))]/RootManageSharedAccessKey", + "eventHubName": "eventhub", + "logs": [ + { + "category": "SQLSecurityAuditEvents", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": false + } + }, + { + "condition": false, + "category": "DevOpsOperationsAudit", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": false + } + } + ] + } + }, + { + "apiVersion": "2017-03-01-preview", + "type": "auditingSettings", + "name": "DefaultAuditingSettings", + "dependsOn": [ + "[concat('server-', uniqueString(resourceGroup().id, deployment().name))]" + ], + "properties": { + "State": "Enabled", + "isAzureMonitorTargetEnabled": true + } + }, + { + "condition": false, + "type": "devOpsAuditingSettings", + "apiVersion": "2020-08-01-preview", + "name": "Default", + "dependsOn": [ + "[concat('server-', uniqueString(resourceGroup().id, deployment().name))]" + ], + "properties": { + "State": "Enabled", + "isAzureMonitorTargetEnabled": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1693 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1693 new file mode 100644 index 0000000..3919a00 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1693 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.parameters.json" + ], + "timestamp": 1642962910367, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1693", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1693", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string", + "metadata": { + "description": "Name of the SQL server" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "omsWorkspaceName": { + "type": "string", + "defaultValue": "[concat('omsworkspace', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Log Analytics workspace name" + }, + "value": "GEN-UNIQUE" + }, + "workspaceRegion": { + "type": "string", + "metadata": { + "description": "Specify the region for your OMS workspace" + }, + "value": "East US" + }, + "omsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Select the SKU for OMS workspace" + } + }, + "isMSDevOpsAuditEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable Auditing of Microsoft support operations (DevOps)" + } + } + }, + "variables": { + "diagnosticSettingsName": "SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "East US", + "properties": { + "sku": { + "name": "free" + } + } + }, + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2019-06-01-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "tags": { + "DisplayName": "GEN-UNIQUE" + }, + "resources": [ + { + "type": "databases", + "apiVersion": "2017-03-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "name": "master", + "properties": {} + }, + { + "type": "databases/providers/diagnosticSettings", + "name": "master/microsoft.insights/SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1", + "dependsOn": [ + "GEN-UNIQUE", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Sql/servers/databases/GEN-UNIQUE/master" + ], + "apiVersion": "2017-05-01-preview", + "properties": { + "name": "SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1", + "workspaceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "logs": [ + { + "category": "SQLSecurityAuditEvents", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": false + } + }, + { + "condition": false, + "category": "DevOpsOperationsAudit", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": false + } + } + ] + } + }, + { + "apiVersion": "2017-03-01-preview", + "type": "auditingSettings", + "name": "DefaultAuditingSettings", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE" + ], + "properties": { + "State": "Enabled", + "isAzureMonitorTargetEnabled": true + } + }, + { + "condition": false, + "type": "devOpsAuditingSettings", + "apiVersion": "2020-08-01-preview", + "name": "Default", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "State": "Enabled", + "isAzureMonitorTargetEnabled": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1694 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1694 new file mode 100644 index 0000000..bd332d0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1694 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962910377, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-auditing-server-policy-to-oms/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1694", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1694", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string", + "metadata": { + "description": "Name of the SQL server" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "omsWorkspaceName": { + "type": "string", + "defaultValue": "[concat('omsworkspace', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Log Analytics workspace name" + }, + "value": "GEN-UNIQUE" + }, + "workspaceRegion": { + "type": "string", + "metadata": { + "description": "Specify the region for your OMS workspace" + }, + "value": "usgovvirginia" + }, + "omsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Select the SKU for OMS workspace" + } + }, + "isMSDevOpsAuditEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable Auditing of Microsoft support operations (DevOps)" + } + } + }, + "variables": { + "diagnosticSettingsName": "SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "usgovvirginia", + "properties": { + "sku": { + "name": "free" + } + } + }, + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2019-06-01-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "tags": { + "DisplayName": "GEN-UNIQUE" + }, + "resources": [ + { + "type": "databases", + "apiVersion": "2017-03-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "name": "master", + "properties": {} + }, + { + "type": "databases/providers/diagnosticSettings", + "name": "master/microsoft.insights/SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1", + "dependsOn": [ + "GEN-UNIQUE", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Sql/servers/databases/GEN-UNIQUE/master" + ], + "apiVersion": "2017-05-01-preview", + "properties": { + "name": "SQLSecurityAuditEvents_3d229c42-c7e7-4c97-9a99-ec0d0d8b86c1", + "workspaceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "logs": [ + { + "category": "SQLSecurityAuditEvents", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": false + } + }, + { + "condition": false, + "category": "DevOpsOperationsAudit", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": false + } + } + ] + } + }, + { + "apiVersion": "2017-03-01-preview", + "type": "auditingSettings", + "name": "DefaultAuditingSettings", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE" + ], + "properties": { + "State": "Enabled", + "isAzureMonitorTargetEnabled": true + } + }, + { + "condition": false, + "type": "devOpsAuditingSettings", + "apiVersion": "2020-08-01-preview", + "name": "Default", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "State": "Enabled", + "isAzureMonitorTargetEnabled": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1695 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1695 new file mode 100644 index 0000000..7b3cdb3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1695 @@ -0,0 +1,153 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-data-warehouse-transparent-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-data-warehouse-transparent-encryption-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910385, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-data-warehouse-transparent-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-data-warehouse-transparent-encryption-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1695", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.sql/servers/databases", + "microsoft.sql/servers/databases/transparentdataencryption" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1695", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string", + "defaultValue": "[concat('sql', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The SQL Logical Server name." + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "databasesName": { + "type": "string", + "metadata": { + "description": "The name of the Database." + }, + "value": "GEN-UNIQUE" + }, + "transparentDataEncryption": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enable/Disable Transparent Data Encryption" + } + }, + "capacity": { + "type": "int", + "metadata": { + "description": "DW Performance Level expressed in DTU (i.e. 900 DTU = DW100c)" + }, + "minValue": 900, + "maxValue": 54000, + "value": 9000 + }, + "databaseCollation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "The SQL Database collation." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Resource location" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2021-05-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "v12.0", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0", + "publicNetworkAccess": "Enabled", + "restrictOutboundNetworkAccess": "Disabled" + } + }, + { + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2021-05-01-preview", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "sku": { + "name": "DataWarehouse", + "tier": "DataWarehouse", + "capacity": 9000 + }, + "kind": "v12.0,user,datawarehouse,gen2", + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "catalogCollation": "SQL_Latin1_General_CP1_CI_AS", + "readScale": "Disabled", + "requestedBackupStorageRedundancy": "Geo", + "isLedgerOn": false + } + }, + { + "type": "Microsoft.Sql/servers/databases/transparentDataEncryption", + "apiVersion": "2021-05-01-preview", + "name": "GEN-UNIQUE/GEN-UNIQUE/Current", + "dependsOn": [ + "Microsoft.Sql/servers/databases/GEN-UNIQUE/GEN-UNIQUE", + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "state": "Enabled" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1696 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1696 new file mode 100644 index 0000000..b2c4b29 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1696 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-database/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-database/azuredeploy.parameters.json" + ], + "timestamp": 1642962910393, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-database/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1696", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.sql/servers/databases" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1696", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "83557446380333556" + } + }, + "parameters": { + "serverName": { + "type": "string", + "defaultValue": "[uniqueString('sql', resourceGroup().id)]", + "metadata": { + "description": "The name of the SQL logical server." + }, + "value": "GEN-UNIQUE" + }, + "sqlDBName": { + "type": "string", + "defaultValue": "SampleDB", + "metadata": { + "description": "The name of the SQL Database." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL logical server." + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "secureString", + "metadata": { + "description": "The administrator password of the SQL logical server." + }, + "value": "GEN-PASSWORD" + } + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2021-05-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD" + } + }, + { + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2021-05-01-preview", + "name": "[format('{0}/{1}', parameters('serverName'), parameters('sqlDBName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1697 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1697 new file mode 100644 index 0000000..d7ccdf3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1697 @@ -0,0 +1,149 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-database-transparent-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-database-transparent-encryption-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910402, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-database-transparent-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-database-transparent-encryption-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1697", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1697", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "transparentDataEncryption": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Enabled", + "metadata": { + "description": "Enable or disable Transparent Data Encryption (TDE) for the database." + }, + "value": "Enabled" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sqlServerName": "[concat('sqlserver', uniqueString(subscription().id, resourceGroup().id))]", + "databaseName": "sample-db-with-tde", + "databaseEdition": "Basic", + "databaseCollation": "SQL_Latin1_General_CP1_CI_AS", + "databaseServiceObjectiveName": "Basic" + }, + "resources": [ + { + "name": "[variables('sqlServerName')]", + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "SqlServer" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "name": "sample-db-with-tde", + "type": "databases", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Database" + }, + "properties": { + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "requestedServiceObjectiveName": "Basic" + }, + "dependsOn": [ + "[variables('sqlServerName')]" + ], + "resources": [ + { + "comments": "Transparent Data Encryption", + "name": "current", + "type": "transparentDataEncryption", + "apiVersion": "2017-03-01-preview", + "properties": { + "status": "Enabled" + }, + "dependsOn": [ + "sample-db-with-tde" + ] + } + ] + }, + { + "name": "AllowAllMicrosoftAzureIps", + "type": "firewallrules", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + }, + "dependsOn": [ + "[variables('sqlServerName')]" + ] + } + ] + } + ], + "outputs": { + "sqlServerFqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Sql/servers/', variables('sqlServerName'))).fullyQualifiedDomainName]" + }, + "databaseName": { + "type": "string", + "value": "[variables('databaseName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1698 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1698 new file mode 100644 index 0000000..452388e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1698 @@ -0,0 +1,246 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-elastic-pool-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-elastic-pool-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910412, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-elastic-pool-create/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-elastic-pool-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1698", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.sql/servers/elasticpools", + "microsoft.sql/servers/databases", + "microsoft.sql/servers/firewallrules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1698", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "administratorLogin": { + "type": "string", + "metadata": { + "description": "The SQL Server administrator login" + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The SQL Server administrator login password." + }, + "value": "GEN-PASSWORD" + }, + "serverName": { + "type": "string", + "metadata": { + "description": "The SQL Server name." + }, + "value": "GEN-UNIQUE" + }, + "elasticPoolName": { + "type": "string", + "metadata": { + "description": "The Elastic Pool name." + }, + "value": "GEN-UNIQUE" + }, + "edition": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Basic", + "Standard", + "Premium", + "GP_Gen5", + "BC_Gen5" + ], + "metadata": { + "description": "The Elastic Pool edition." + }, + "value": "Standard" + }, + "capacity": { + "type": "int", + "metadata": { + "description": "The Elastic Pool DTU or nomber of vcore." + }, + "value": 100 + }, + "databaseCapacityMin": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "The Elastic Pool database capacity min." + }, + "value": 0 + }, + "databaseCapacityMax": { + "type": "int", + "metadata": { + "description": "The Elastic Pool database capacity max." + }, + "value": 100 + }, + "databasesNames": { + "type": "array", + "defaultValue": [ + "db1", + "db2" + ], + "metadata": { + "description": "The SQL Databases names." + }, + "value": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ] + }, + "databaseCollation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "The SQL Database collation." + }, + "value": "SQL_Latin1_General_CP1_CI_AS" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "editionToSkuMap": { + "Basic": { + "name": "BasicPool", + "tier": "Basic" + }, + "Standard": { + "name": "StandardPool", + "tier": "Standard" + }, + "Premium": { + "name": "PremiumPool", + "tier": "Premium" + }, + "GP_Gen5": { + "family": "Gen5", + "name": "GP_Gen5", + "tier": "GeneralPurpose" + }, + "BC_Gen5": { + "family": "Gen5", + "name": "BC_Gen5", + "tier": "BusinessCritical" + } + }, + "skuName": "(editionToSkuMap)[parameters(edition)].name", + "skuTier": "(editionToSkuMap)[parameters(edition)].tier" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + } + }, + { + "type": "Microsoft.Sql/servers/elasticPools", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "sku": { + "name": "(editionToSkuMap)[parameters(edition)].name", + "tier": "(editionToSkuMap)[parameters(edition)].tier", + "capacity": 100 + }, + "properties": { + "perDatabaseSettings": { + "minCapacity": 0, + "maxCapacity": 100 + } + } + }, + { + "type": "Microsoft.Sql/servers/databases", + "name": "[concat(parameters('serverName'), '/', parameters('databasesNames')[copyIndex()])]", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE", + "Microsoft.Sql/servers/elasticpools/GEN-UNIQUE/GEN-UNIQUE" + ], + "sku": { + "name": "ElasticPool", + "tier": "(editionToSkuMap)[parameters(edition)].tier", + "capacity": 0 + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "elasticPoolId": "Microsoft.Sql/servers/elasticpools/GEN-UNIQUE/GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Sql/servers/databases", + "name": "[concat(parameters('serverName'), '/', parameters('databasesNames')[copyIndex()])]", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE", + "Microsoft.Sql/servers/elasticpools/GEN-UNIQUE/GEN-UNIQUE" + ], + "sku": { + "name": "ElasticPool", + "tier": "(editionToSkuMap)[parameters(edition)].tier", + "capacity": 0 + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "elasticPoolId": "Microsoft.Sql/servers/elasticpools/GEN-UNIQUE/GEN-UNIQUE" + } + }, + { + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE/AllowAllWindowsAzureIps", + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + }, + "type": "Microsoft.Sql/servers/firewallrules" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1699 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1699 new file mode 100644 index 0000000..83cc6b9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1699 @@ -0,0 +1,207 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-logical-server/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-logical-server/azuredeploy.parameters.json" + ], + "timestamp": 1642962910428, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-logical-server/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-logical-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1699", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.storage/storageaccounts", + "microsoft.authorization/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1699", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serverName": { + "type": "string", + "defaultValue": "[uniqueString('sql', resourceGroup().id)]", + "metadata": { + "description": "The name of the SQL logical server." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL logical server." + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL logical server." + }, + "value": "GEN-PASSWORD" + }, + "enableADS": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Enable Advanced Data Security, the user deploying the template must have an administrator or owner permissions." + } + }, + "allowAzureIPs": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Allow Azure services to access server." + } + }, + "connectionType": { + "defaultValue": "Default", + "allowedValues": [ + "Default", + "Redirect", + "Proxy" + ], + "type": "string", + "metadata": { + "description": "SQL logical server connection type." + } + } + }, + "variables": { + "serverResourceGroupName": "[resourceGroup().name]", + "subscriptionId": "[subscription().subscriptionId]", + "uniqueStorage": "[uniqueString(variables('subscriptionId'), variables('serverResourceGroupName'), parameters('location'))]", + "storageName": "[tolower(concat('sqlva', variables('uniqueStorage')))]", + "uniqueRoleGuid": "[guid(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('serverName')))]", + "StorageBlobContributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "identity": "[if(parameters('enableADS'), json('{\"type\":\"SystemAssigned\"}'), json('null'))]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "condition": true, + "type": "firewallRules", + "apiVersion": "2020-02-02-preview", + "name": "AllowAllWindowsAzureIps", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + }, + { + "condition": true, + "type": "securityAlertPolicies", + "apiVersion": "2020-02-02-preview", + "name": "Default", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "state": "Enabled", + "emailAccountAdmins": true + } + }, + { + "condition": true, + "type": "vulnerabilityAssessments", + "apiVersion": "2020-02-02-preview", + "name": "Default", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE", + "Microsoft.Sql/servers/securityAlertPolicies/GEN-UNIQUE/Default", + "Microsoft.Storage/storageAccounts/[tolower(concat('sqlva', variables('uniqueStorage')))]" + ], + "properties": { + "storageContainerPath": "[if(parameters('enableADS'), concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))).primaryEndpoints.blob, 'vulnerability-assessment'), json('null'))]", + "recurringScans": { + "isEnabled": true, + "emailSubscriptionAdmins": true + } + } + }, + { + "type": "connectionPolicies", + "apiVersion": "2014-04-01", + "name": "Default", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "connectionType": "Default" + } + } + ] + }, + { + "condition": true, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[tolower(concat('sqlva', variables('uniqueStorage')))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "minimumTlsVersion": "TLS1_2", + "supportsHttpsTrafficOnly": "true", + "allowBlobPublicAccess": "false" + } + }, + { + "condition": true, + "scope": "Microsoft.Storage/storageAccounts/[tolower(concat('sqlva', variables('uniqueStorage')))]", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), variables('storageBlobContributor'), resourceId('Microsoft.Sql/servers', parameters('serverName')))]", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE", + "Microsoft.Storage/storageAccounts/[tolower(concat('sqlva', variables('uniqueStorage')))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]", + "principalId": "[reference(resourceId('Microsoft.Sql/servers', parameters('serverName')), '2020-02-02-preview', 'Full').identity.principalId]", + "scope": "Microsoft.Storage/storageAccounts/[tolower(concat('sqlva', variables('uniqueStorage')))]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT17 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT17 new file mode 100644 index 0000000..dce32f9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT17 @@ -0,0 +1,100 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/createChildDomain.json" + ], + "timestamp": 1642962883451, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/createChildDomain.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT17", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT17", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "ParentDomainName": { + "type": "string" + }, + "ChildDomainName": { + "type": "string" + }, + "DnsForwarder": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "" + }, + "location": { + "type": "string" + } + }, + "variables": { + "adChildDomainDC1ModulesURL": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateADChildDomainDC1.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "adChildDomainDC1ConfigurationFunction": "CreateADChildDomainDC1.ps1\\CreateADChildDomainDC1" + }, + "resources": [ + { + "name": "vmName/CreateADChildDomain1", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateADChildDomainDC1.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "CreateADChildDomainDC1.ps1\\CreateADChildDomainDC1", + "Properties": { + "ParentDomainName": "parentDomainName", + "ChildDomainName": "childDomainName", + "DnsForwarder": "DnsForwarder", + "AdminCreds": { + "UserName": "adminUserName", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "adminPassword" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT170 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT170 new file mode 100644 index 0000000..48684fc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT170 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-nsg.json" + ], + "timestamp": 1642962889250, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-nsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT170", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT170", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "westus", + "allowedValues": [ + "brazilsouth", + "eastasia", + "eastus", + "japaneast", + "japanwest", + "northcentralus", + "northeurope", + "southcentralus", + "westeurope", + "westus", + "southeastasia", + "centralus", + "eastus2" + ], + "metadata": { + "description": "Deployments Location" + } + }, + "networkApiVersion": { + "type": "string", + "defaultValue": "2016-03-30", + "allowedValues": [ + "2015-05-01-preview", + "2015-06-15", + "2016-03-30" + ], + "metadata": { + "description": "API Version for the Network Resources" + } + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + } + }, + "networkSecurityGroupsName": { + "type": "string", + "defaultValue": "wowza-nsg", + "metadata": { + "description": " Virtual machine name" + } + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "wowza-nsg", + "apiVersion": "2016-03-30", + "location": "westus", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "securityRules": [ + { + "name": "HTTP", + "properties": { + "priority": 1010, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "80", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-rdp", + "properties": { + "priority": 1020, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1700 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1700 new file mode 100644 index 0000000..f8d56c8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1700 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-logical-server-aad-only-auth/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-logical-server-aad-only-auth/azuredeploy.parameters.json" + ], + "timestamp": 1642962910435, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-logical-server-aad-only-auth/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-logical-server-aad-only-auth/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1700", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1700", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "server": { + "type": "string", + "defaultValue": "[uniqueString('sql', resourceGroup().id)]", + "metadata": { + "description": "The name of the SQL logical server." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "aad_admin_name": { + "type": "String", + "metadata": { + "description": "The name of the Azure AD admin for the SQL server." + }, + "value": "TestAADAdminName" + }, + "aad_admin_objectid": { + "type": "String", + "metadata": { + "description": "The Object ID of the Azure AD admin." + }, + "value": "2783f20a-c246-48ea-ac14-ff887ac00000" + }, + "aad_admin_tenantid": { + "type": "String", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "The Tenant ID of the Azure Active Directory" + } + }, + "aad_admin_type": { + "defaultValue": "User", + "allowedValues": [ + "User", + "Group", + "Application" + ], + "type": "String", + "value": "User" + }, + "aad_only_auth": { + "defaultValue": true, + "type": "Bool", + "value": true + } + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-11-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "administrators": { + "login": "TestAADAdminName", + "sid": "2783f20a-c246-48ea-ac14-ff887ac00000", + "tenantId": "[subscription().tenantId]", + "principalType": "User", + "azureADOnlyAuthentication": true + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1701 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1701 new file mode 100644 index 0000000..84daf76 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1701 @@ -0,0 +1,282 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-managed-instance-azure-environment/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-managed-instance-azure-environment/azuredeploy.parameters.json" + ], + "timestamp": 1642962910442, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-managed-instance-azure-environment/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-managed-instance-azure-environment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1701", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1701", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "MyNewVNet", + "metadata": { + "description": "The name of new Azure VNet where you can deploy Azure Sql Managed Instances and the resources that use them" + }, + "value": "GEN-VNET-NAME" + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "VNet IP address range (VNet prefix)" + } + }, + "defaultSubnetName": { + "type": "string", + "defaultValue": "Default", + "metadata": { + "description": "The name of default subnet for VNet (used to deploy VMs, web, and other client apps - no Managed Instances). You can delete this subnet later if you don't need it." + } + }, + "defaultSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Default subnet address range (subnet prefix)" + } + }, + "managedInstanceSubnetName": { + "type": "string", + "defaultValue": "ManagedInstances", + "metadata": { + "description": "The name of the subnet dedicated to Azure SQL Managed Instances" + } + }, + "managedInstanceSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "IP Address range in the subnet dedicated to Azure SQL Managed Instances" + } + }, + "nsgForManagedInstanceSubnet": { + "type": "string", + "defaultValue": "nsgManagedInstance", + "metadata": { + "description": "Name of network security group dedicated to managed instance subnet" + } + }, + "routeTableForManagedInstanceSubnet": { + "type": "string", + "defaultValue": "rtManagedInstance", + "metadata": { + "description": "The name of the existing or new route table that enables access to Azure SQL Managed Instance Management Service that controls the instance, manages backups and other maintenance operations" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure data center location where all resources will be deployed" + } + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsgManagedInstance", + "Microsoft.Network/routeTables/rtManagedInstance" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "ManagedInstances", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgManagedInstance" + }, + "routeTable": { + "id": "Microsoft.Network/routeTables/rtManagedInstance" + }, + "delegations": [ + { + "name": "miDelegation", + "properties": { + "serviceName": "Microsoft.Sql/managedInstances" + } + } + ] + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgManagedInstance", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow_tds_inbound", + "properties": { + "description": "Allow access to data", + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "allow_redirect_inbound", + "properties": { + "description": "Allow inbound redirect traffic to Managed Instance inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000-11999", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1100, + "direction": "Inbound" + } + }, + { + "name": "allow_geodr_inbound", + "properties": { + "description": "Allow inbound geodr traffic inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "5022", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1200, + "direction": "Inbound" + } + }, + { + "name": "deny_all_inbound", + "properties": { + "description": "Deny all other inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Inbound" + } + }, + { + "name": "allow_linkedserver_outbound", + "properties": { + "description": "Allow outbound linkedserver traffic inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 1000, + "direction": "Outbound" + } + }, + { + "name": "allow_redirect_outbound", + "properties": { + "description": "Allow outbound redirect traffic to Managed Instance inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000-11999", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 1100, + "direction": "Outbound" + } + }, + { + "name": "allow_geodr_outbound", + "properties": { + "description": "Allow outbound geodr traffic inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "5022", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 1200, + "direction": "Outbound" + } + }, + { + "name": "deny_all_outbound", + "properties": { + "description": "Deny all other outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2019-04-01", + "name": "rtManagedInstance", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1702 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1702 new file mode 100644 index 0000000..95fe0c2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1702 @@ -0,0 +1,164 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-threat-detection-db-policy-multiple-databases/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-threat-detection-db-policy-multiple-databases/azuredeploy.parameters.json" + ], + "timestamp": 1642962910449, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-threat-detection-db-policy-multiple-databases/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-threat-detection-db-policy-multiple-databases/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1702", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.sql/servers/databases" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1702", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serverName": { + "type": "string", + "defaultValue": "[concat('server-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name for the SQL server" + } + }, + "databaseNames": { + "type": "array", + "defaultValue": [ + "[concat('db-', uniqueString(resourceGroup().id), '-1')]", + "[concat('db-', uniqueString(resourceGroup().id), '-2')]" + ], + "metadata": { + "description": "Array of names for the SQL databases" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for server and DBs" + } + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "Username for admin" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for admin" + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "databaseServerName": "[toLower(parameters('serverName'))]", + "databaseNames": [ + "[concat('db-', uniqueString(resourceGroup().id), '-1')]", + "[concat('db-', uniqueString(resourceGroup().id), '-2')]" + ], + "databaseServerLocation": "[resourceGroup().location]", + "databaseServerAdminLogin": "GEN-UNIQUE", + "databaseServerAdminLoginPassword": "GEN-PASSWORD" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "name": "[toLower(parameters('serverName'))]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "tags": { + "DisplayName": "[toLower(parameters('serverName'))]" + } + }, + { + "apiVersion": "2020-02-02-preview", + "type": "Microsoft.Sql/servers/databases", + "sku": { + "name": "S0", + "tier": "Standard" + }, + "kind": "v12.0,user", + "location": "[resourceGroup().location]", + "name": "[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]", + "dependsOn": [ + "Microsoft.Sql/servers/[toLower(parameters('serverName'))]" + ], + "tags": { + "DisplayName": "[toLower(parameters('serverName'))]" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2020-02-02-preview", + "type": "securityAlertPolicies", + "name": "default", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers/databases', variables('databaseServerName'), variables('databaseNames')[copyIndex()])]" + ], + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "apiVersion": "2020-02-02-preview", + "type": "Microsoft.Sql/servers/databases", + "sku": { + "name": "S0", + "tier": "Standard" + }, + "kind": "v12.0,user", + "location": "[resourceGroup().location]", + "name": "[concat(string(variables('databaseServerName')), '/', string(variables('databaseNames')[copyIndex()]))]", + "dependsOn": [ + "Microsoft.Sql/servers/[toLower(parameters('serverName'))]" + ], + "tags": { + "DisplayName": "[toLower(parameters('serverName'))]" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2020-02-02-preview", + "type": "securityAlertPolicies", + "name": "default", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers/databases', variables('databaseServerName'), variables('databaseNames')[copyIndex()])]" + ], + "properties": { + "state": "Enabled" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1703 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1703 new file mode 100644 index 0000000..d7750c1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1703 @@ -0,0 +1,174 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.parameters.json" + ], + "timestamp": 1642962910458, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1703", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1703", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerPrimaryName": { + "type": "string", + "metadata": { + "description": "The name of the primary SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerPrimaryAdminUsername": { + "type": "string", + "metadata": { + "description": "The administrator username of the primary SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerPrimaryAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the primary SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "sqlServerSecondaryName": { + "type": "string", + "metadata": { + "description": "The name of the secondary SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerSecondaryRegion": { + "type": "string", + "metadata": { + "description": "The location of the secondary SQL Server." + }, + "value": "westeurope" + }, + "sqlServerSecondaryAdminUsername": { + "type": "string", + "metadata": { + "description": "The administrator username of the secondary SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerSecondaryAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the secondary SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "sqlFailoverGroupName": { + "type": "string", + "metadata": { + "description": "The name of the failover group." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sqlDatabaseName": "MyData", + "sqlDatabaseServiceObjective": "Basic", + "sqlDatabaseEdition": "Basic" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "kind": "v12.0", + "name": "GEN-UNIQUE", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "apiVersion": "2020-02-02-preview", + "type": "failoverGroups", + "name": "GEN-UNIQUE", + "properties": { + "serverName": "GEN-UNIQUE", + "partnerServers": [ + { + "id": "Microsoft.Sql/servers/GEN-UNIQUE" + } + ], + "readWriteEndpoint": { + "failoverPolicy": "Automatic", + "failoverWithDataLossGracePeriodMinutes": 60 + }, + "readOnlyEndpoint": { + "failoverPolicy": "Disabled" + }, + "databases": [ + "Microsoft.Sql/servers/databases/GEN-UNIQUE/MyData" + ] + }, + "dependsOn": [ + "GEN-UNIQUE", + "Microsoft.Sql/servers/databases/GEN-UNIQUE/MyData", + "Microsoft.Sql/servers/GEN-UNIQUE" + ] + }, + { + "name": "MyData", + "type": "databases", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "edition": "Basic", + "requestedServiceObjectiveName": "Basic" + } + } + ] + }, + { + "type": "Microsoft.Sql/servers", + "kind": "v12.0", + "name": "GEN-UNIQUE", + "apiVersion": "2020-02-02-preview", + "location": "westeurope", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1704 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1704 new file mode 100644 index 0000000..cec6bd1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1704 @@ -0,0 +1,174 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962910465, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.json", + "/quickstarts/microsoft.sql/sql-with-failover-group/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1704", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1704", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerPrimaryName": { + "type": "string", + "metadata": { + "description": "The name of the primary SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerPrimaryAdminUsername": { + "type": "string", + "metadata": { + "description": "The administrator username of the primary SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerPrimaryAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the primary SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "sqlServerSecondaryName": { + "type": "string", + "metadata": { + "description": "The name of the secondary SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerSecondaryRegion": { + "type": "string", + "metadata": { + "description": "The location of the secondary SQL Server." + }, + "value": "usgovtexas" + }, + "sqlServerSecondaryAdminUsername": { + "type": "string", + "metadata": { + "description": "The administrator username of the secondary SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerSecondaryAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the secondary SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "sqlFailoverGroupName": { + "type": "string", + "metadata": { + "description": "The name of the failover group." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sqlDatabaseName": "MyData", + "sqlDatabaseServiceObjective": "Basic", + "sqlDatabaseEdition": "Basic" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "kind": "v12.0", + "name": "GEN-UNIQUE", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "apiVersion": "2020-02-02-preview", + "type": "failoverGroups", + "name": "GEN-UNIQUE", + "properties": { + "serverName": "GEN-UNIQUE", + "partnerServers": [ + { + "id": "Microsoft.Sql/servers/GEN-UNIQUE" + } + ], + "readWriteEndpoint": { + "failoverPolicy": "Automatic", + "failoverWithDataLossGracePeriodMinutes": 60 + }, + "readOnlyEndpoint": { + "failoverPolicy": "Disabled" + }, + "databases": [ + "Microsoft.Sql/servers/databases/GEN-UNIQUE/MyData" + ] + }, + "dependsOn": [ + "GEN-UNIQUE", + "Microsoft.Sql/servers/databases/GEN-UNIQUE/MyData", + "Microsoft.Sql/servers/GEN-UNIQUE" + ] + }, + { + "name": "MyData", + "type": "databases", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "edition": "Basic", + "requestedServiceObjectiveName": "Basic" + } + } + ] + }, + { + "type": "Microsoft.Sql/servers", + "kind": "v12.0", + "name": "GEN-UNIQUE", + "apiVersion": "2020-02-02-preview", + "location": "usgovtexas", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1705 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1705 new file mode 100644 index 0000000..7ee43eb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1705 @@ -0,0 +1,294 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962910472, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1705", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.sql/managedinstances", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1705", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "12536359447865472095" + } + }, + "parameters": { + "managedInstanceName": { + "type": "string", + "metadata": { + "description": "Enter managed instance name." + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "Enter user name." + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "secureString", + "metadata": { + "description": "Enter password." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Enter location. If you leave this field blank resource group location would be used." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "SQLMI-VNET", + "metadata": { + "description": "Enter virtual network name. If you leave this field blank name will be created by the template." + } + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Enter virtual network address prefix." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "ManagedInstance", + "metadata": { + "description": "Enter subnet name." + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Enter subnet address prefix." + } + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5", + "allowedValues": [ + "GP_Gen5", + "BC_Gen5" + ], + "metadata": { + "description": "Enter sku name." + } + }, + "vCores": { + "type": "int", + "defaultValue": 16, + "allowedValues": [ + 8, + 16, + 24, + 32, + 40, + 64, + 80 + ], + "metadata": { + "description": "Enter number of vCores." + } + }, + "storageSizeInGB": { + "type": "int", + "defaultValue": 256, + "maxValue": 8192, + "minValue": 32, + "metadata": { + "description": "Enter storage size." + } + }, + "licenseType": { + "type": "string", + "defaultValue": "LicenseIncluded", + "allowedValues": [ + "BasePrice", + "LicenseIncluded" + ], + "metadata": { + "description": "Enter license type." + } + } + }, + "functions": [], + "variables": { + "networkSecurityGroupName": "[format('SQLMI-{0}-NSG', parameters('managedInstanceName'))]", + "routeTableName": "[format('SQLMI-{0}-Route-Table', parameters('managedInstanceName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "[format('SQLMI-{0}-NSG', parameters('managedInstanceName'))]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow_tds_inbound", + "properties": { + "description": "Allow access to data", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "allow_redirect_inbound", + "properties": { + "description": "Allow inbound redirect traffic to Managed Instance inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000-11999", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1100, + "direction": "Inbound" + } + }, + { + "name": "deny_all_inbound", + "properties": { + "description": "Deny all other inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Inbound" + } + }, + { + "name": "deny_all_outbound", + "properties": { + "description": "Deny all other outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-06-01", + "name": "[format('SQLMI-{0}-Route-Table', parameters('managedInstanceName'))]", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "SQLMI-VNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "ManagedInstance", + "properties": { + "addressPrefix": "10.0.0.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/[format('SQLMI-{0}-Route-Table', parameters('managedInstanceName'))]" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('SQLMI-{0}-NSG', parameters('managedInstanceName'))]" + }, + "delegations": [ + { + "name": "managedInstanceDelegation", + "properties": { + "serviceName": "Microsoft.Sql/managedInstances" + } + } + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[format('SQLMI-{0}-NSG', parameters('managedInstanceName'))]", + "Microsoft.Network/routeTables/[format('SQLMI-{0}-Route-Table', parameters('managedInstanceName'))]" + ] + }, + { + "type": "Microsoft.Sql/managedInstances", + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5" + }, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/SQLMI-VNET/ManagedInstance", + "storageSizeInGB": 256, + "vCores": 16, + "licenseType": "LicenseIncluded" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/SQLMI-VNET" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1706 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1706 new file mode 100644 index 0000000..517601d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1706 @@ -0,0 +1,414 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-diagnostic-settings/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-diagnostic-settings/azuredeploy.parameters.json" + ], + "timestamp": 1642962910489, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-diagnostic-settings/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-diagnostic-settings/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1706", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.eventhub/namespaces", + "microsoft.operationalinsights/workspaces", + "microsoft.sql/managedinstances", + "microsoft.storage/storageaccounts", + "microsoft.network/routetables", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1706", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "managedInstanceName": { + "type": "string", + "metadata": { + "description": "Enter managed instance name." + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "Enter user name." + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Enter password." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Enter location. If you leave this field blank resource group location would be used." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "SQLMI-VNET", + "metadata": { + "description": "Enter virtual network name. If you leave this field blank name will be created by the template." + } + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Enter virtual network address prefix." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "ManagedInstance", + "metadata": { + "description": "Enter subnet name." + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Enter subnet address prefix." + } + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5", + "allowedValues": [ + "GP_Gen5", + "BC_Gen5" + ], + "metadata": { + "description": "Enter sku name." + } + }, + "vCores": { + "type": "int", + "defaultValue": 4, + "allowedValues": [ + 4, + 8, + 16, + 24, + 32, + 40, + 64, + 80 + ], + "metadata": { + "description": "Enter number of vCores." + } + }, + "storageSizeInGB": { + "type": "int", + "defaultValue": 256, + "minValue": 32, + "maxValue": 8192, + "metadata": { + "description": "Enter storage size." + } + }, + "licenseType": { + "type": "string", + "defaultValue": "LicenseIncluded", + "allowedValues": [ + "BasePrice", + "LicenseIncluded" + ], + "metadata": { + "description": "Enter license type." + } + }, + "diagnosticSettingName": { + "type": "string", + "defaultValue": "Send to all locations", + "metadata": { + "description": "Enter the name for diagnostic settings configuration." + } + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "[concat('sqlmi-laws-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Enter the name of diagnostic workspace." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sqlmisa', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Enter the name of storage account" + } + }, + "eventhubAuthorizationRuleName": { + "type": "string", + "defaultValue": "RootManageSharedAccessKey", + "metadata": { + "description": "Name of Namespace Authorization Rule." + } + }, + "eventHubNamespaceName": { + "type": "string", + "defaultValue": "[concat('sqlmi-eh-space-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Event Hubs namespace." + } + }, + "eventHubName": { + "type": "string", + "defaultValue": "[concat('sqlmi-eh-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Event Hubs namespace." + } + } + }, + "variables": { + "networkSecurityGroupName": "SQLMI-GEN-UNIQUE-NSG", + "routeTableName": "SQLMI-GEN-UNIQUE-Route-Table" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "SQLMI-GEN-UNIQUE-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow_tds_inbound", + "properties": { + "description": "Allow access to data", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "allow_redirect_inbound", + "properties": { + "description": "Allow inbound redirect traffic to Managed Instance inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000-11999", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1100, + "direction": "Inbound" + } + }, + { + "name": "deny_all_inbound", + "properties": { + "description": "Deny all other inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Inbound" + } + }, + { + "name": "deny_all_outbound", + "properties": { + "description": "Deny all other outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-06-01", + "name": "SQLMI-GEN-UNIQUE-Route-Table", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "SQLMI-VNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "SQLMI-GEN-UNIQUE-Route-Table", + "SQLMI-GEN-UNIQUE-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "ManagedInstance", + "properties": { + "addressPrefix": "10.0.0.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/SQLMI-GEN-UNIQUE-Route-Table" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SQLMI-GEN-UNIQUE-NSG" + }, + "delegations": [ + { + "name": "miDelegation", + "properties": { + "serviceName": "Microsoft.Sql/managedInstances" + } + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Sql/managedInstances", + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5" + }, + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "SQLMI-VNET" + ], + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/SQLMI-VNET/ManagedInstance", + "storageSizeInGB": 256, + "vCores": 4, + "licenseType": "LicenseIncluded" + } + }, + { + "apiVersion": "2018-01-01-preview", + "name": "[concat('sqlmi-eh-space-', uniqueString(resourceGroup().id))]", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2021-01-01-preview", + "name": "[concat('sqlmi-eh-', uniqueString(resourceGroup().id))]", + "type": "eventhubs", + "dependsOn": [ + "Microsoft.EventHub/namespaces/[concat('sqlmi-eh-space-', uniqueString(resourceGroup().id))]" + ] + } + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[concat('sqlmisa', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "[concat('sqlmi-laws-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + }, + "retentionInDays": "120", + "features": { + "searchVersion": 1, + "legacy": 0, + "enableLogAccessUsingOnlyResourcePermissions": "true" + } + } + }, + { + "scope": "Microsoft.sql/managedInstances/GEN-UNIQUE", + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Send to all locations", + "dependsOn": [ + "GEN-UNIQUE", + "[concat('sqlmisa', uniqueString(resourceGroup().id))]", + "[concat('sqlmi-laws-', uniqueString(resourceGroup().id))]", + "Microsoft.EventHub/namespaces/[concat('sqlmi-eh-space-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces/[concat('sqlmi-laws-', uniqueString(resourceGroup().id))]", + "storageAccountId": "Microsoft.Storage/storageAccounts/[concat('sqlmisa', uniqueString(resourceGroup().id))]", + "eventHubAuthorizationRuleId": "Microsoft.EventHub/namespaces/authorizationRules/[concat('sqlmi-eh-space-', uniqueString(resourceGroup().id))]/RootManageSharedAccessKey", + "eventHubName": "[concat('sqlmi-eh-', uniqueString(resourceGroup().id))]", + "logs": [ + { + "category": "ResourceUsageStats", + "enabled": true + }, + { + "category": "DevOpsOperationsAudit", + "enabled": true + }, + { + "category": "SQLSecurityAuditEvents", + "enabled": true + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1707 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1707 new file mode 100644 index 0000000..0c501f2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1707 @@ -0,0 +1,469 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-jumpbox/azuredeploy.parameters.json" + ], + "timestamp": 1642962910499, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-jumpbox/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1707", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.sql/managedinstances", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1707", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "managedInstanceName": { + "type": "string", + "metadata": { + "description": "Enter managed instance name." + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "Enter user name." + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Enter password." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Enter location. If you leave this field blank resource group location would be used." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "SQLMI-VNET", + "metadata": { + "description": "Enter virtual network name. If you leave this field blank name will be created by the template." + } + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Enter virtual network address prefix." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "ManagedInstance", + "metadata": { + "description": "Enter subnet name." + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Enter subnet address prefix." + } + }, + "managementSubnetName": { + "type": "string", + "defaultValue": "Management", + "metadata": { + "description": "Enter management subnet name." + } + }, + "managementSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "Enter management subnet address prefix." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "GP_Gen5", + "BC_Gen5" + ], + "defaultValue": "GP_Gen5", + "metadata": { + "description": "Enter sku name." + } + }, + "vCores": { + "type": "int", + "defaultValue": 16, + "allowedValues": [ + 8, + 16, + 24, + 32, + 40, + 64, + 80 + ], + "metadata": { + "description": "Enter number of vCores." + } + }, + "storageSizeInGB": { + "type": "int", + "defaultValue": 256, + "minValue": 32, + "maxValue": 8192, + "metadata": { + "description": "Enter storage size." + } + }, + "licenseType": { + "type": "string", + "defaultValue": "LicenseIncluded", + "allowedValues": [ + "BasePrice", + "LicenseIncluded" + ], + "metadata": { + "description": "Enter license type." + } + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "Enter virtual machine size." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "networkSecurityGroupName": "SQLMI-GEN-UNIQUE-NSG", + "routeTableName": "SQLMI-GEN-UNIQUE-Route-Table", + "virtualMachineName": "[concat(take(parameters('managedInstanceName'),13), 'JB')]", + "networkInterfaceName": "SQLMI-GEN-UNIQUE-JB-NIC", + "publicIpAddressName": "SQLMI-GEN-UNIQUE-JB-IP", + "jbNetworkSecurityGroupName": "SQLMI-GEN-UNIQUE-JB-NSG", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('installSSMS.ps1', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "SQLMI-GEN-UNIQUE-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow_tds_inbound", + "properties": { + "description": "Allow access to data", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "allow_redirect_inbound", + "properties": { + "description": "Allow inbound redirect traffic to Managed Instance inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000-11999", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1100, + "direction": "Inbound" + } + }, + { + "name": "deny_all_inbound", + "properties": { + "description": "Deny all other inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Inbound" + } + }, + { + "name": "deny_all_outbound", + "properties": { + "description": "Deny all other outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "name": "SQLMI-GEN-UNIQUE-Route-Table", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false + } + }, + { + "name": "SQLMI-VNET", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-06-01", + "dependsOn": [ + "SQLMI-GEN-UNIQUE-Route-Table", + "SQLMI-GEN-UNIQUE-NSG" + ], + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "ManagedInstance", + "properties": { + "addressPrefix": "10.0.0.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/SQLMI-GEN-UNIQUE-Route-Table" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SQLMI-GEN-UNIQUE-NSG" + }, + "delegations": [ + { + "name": "miDelegation", + "properties": { + "serviceName": "Microsoft.Sql/managedInstances" + } + } + ] + } + }, + { + "name": "Management", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Sql/managedInstances", + "apiVersion": "2019-06-01-preview", + "dependsOn": [ + "SQLMI-VNET" + ], + "identity": { + "type": "SystemAssigned" + }, + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "sku": { + "name": "GP_Gen5" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/SQLMI-VNET/ManagedInstance", + "storageSizeInGB": 256, + "vCores": 16, + "licenseType": "LicenseIncluded" + } + }, + { + "name": "[variables('virtualMachineName')]", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "SQLMI-GEN-UNIQUE-JB-NIC" + ], + "properties": { + "osProfile": { + "computerName": "[variables('virtualMachineName')]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": "true" + } + }, + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/SQLMI-GEN-UNIQUE-JB-NIC" + } + ] + } + }, + "resources": [ + { + "name": "SetupSSMS", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2019-12-01", + "dependsOn": [ + "[variables('virtualMachineName')]" + ], + "tags": { + "displayName": "SetupSSMS" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('installSSMS.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File installSSMS.ps1" + } + } + } + ] + }, + { + "name": "SQLMI-GEN-UNIQUE-JB-NIC", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "SQLMI-VNET", + "SQLMI-GEN-UNIQUE-JB-IP", + "SQLMI-GEN-UNIQUE-JB-NSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/SQLMI-VNET/Management" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/SQLMI-GEN-UNIQUE-JB-IP" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SQLMI-GEN-UNIQUE-JB-NSG" + } + } + }, + { + "name": "SQLMI-GEN-UNIQUE-JB-IP", + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIpAllocationMethod": "Dynamic" + }, + "sku": { + "name": "Basic" + } + }, + { + "name": "SQLMI-GEN-UNIQUE-JB-NSG", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "RDP", + "properties": { + "priority": 300, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1708 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1708 new file mode 100644 index 0000000..5843f8e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1708 @@ -0,0 +1,391 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-point-to-site-vpn/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-point-to-site-vpn/azuredeploy.parameters.json" + ], + "timestamp": 1642962910509, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-point-to-site-vpn/azuredeploy.json", + "/quickstarts/microsoft.sql/sqlmi-new-vnet-w-point-to-site-vpn/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1708", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/networksecuritygroups", + "microsoft.sql/managedinstances", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1708", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "managedInstanceName": { + "type": "string", + "metadata": { + "description": "Enter managed instance name." + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "Enter user name." + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Enter password." + }, + "value": "GEN-PASSWORD" + }, + "publicRootCertData": { + "type": "string", + "metadata": { + "description": "Client root certificate data used to authenticate VPN clients." + }, + "value": "MIICPzCCAaygAwIBAgIQG4WTVfGKqLxMRtKuPFJ4cDAJBgUrDgMCHQUAMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZTAeFw0xMTA2MDkyMzA0NDBaFw0zOTEyMzEyMzU5NTlaMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtPSIGf2+yUDyT8aLB6sZBg2jXKRKfFS+VnM8JX1JxR2bHb5J8vUy8O6WCwcpxqCHpSV2PIXEWNBM2ozGjcaBzMCi53Q+EQvdaGwF7LJHKSL9Iv//uFlkGoKdz6r8yL9HebTH+F6OvIQ8qNxHKtZgRhqB0gMv0dS/qigGmLcDenUCAwEAAaNkMGIwYAYDVR0BBFkwV4AQkVkBKQrptsuAIFPicVM+haExMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZYIQG4WTVfGVqLxMRtKuPFJ4cDAJBgUrDgMCHQUAA4GBAElx6ydJNP8EjIbgppSY39lJKnMWBVqP8u0HXuNc3LkGUTBu0CYNhhR+MM969uX2ykiUkENeGUHykThWJdoAp+yyPWK+/OT9poE5cvNyX5W8ql4vRgeGMew1VQzTHCSx+ZvXtKeSa31Kgf7ZeXQ/3mty1MQUKilCIZPHXqx5GILl" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Enter location. If you leave this field blank resource group location would be used." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "SQLMI-VNET", + "metadata": { + "description": "Enter virtual network name. If you leave this field blank name will be created by the template." + } + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Enter virtual network address prefix." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "ManagedInstance", + "metadata": { + "description": "Enter subnet name." + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Enter subnet address prefix." + } + }, + "gatewaySubnetPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/28", + "metadata": { + "description": "The prefix for the GatewaySubnet where the VirtualNetworkGateway will be deployed. This must be at least /29." + } + }, + "vpnClientAddressPoolPrefix": { + "type": "string", + "defaultValue": "192.168.0.0/24", + "metadata": { + "description": "The IP address range from which VPN clients will receive an IP address when connected. Range specified must not overlap with on-premise network." + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "GP_Gen5", + "BC_Gen5" + ], + "defaultValue": "GP_Gen5", + "metadata": { + "description": "Enter sku name." + } + }, + "vCores": { + "type": "int", + "defaultValue": 16, + "allowedValues": [ + 8, + 16, + 24, + 32, + 40, + 64, + 80 + ], + "metadata": { + "description": "Enter number of vCores." + } + }, + "storageSizeInGB": { + "type": "int", + "defaultValue": 256, + "minValue": 32, + "maxValue": 8192, + "metadata": { + "description": "Enter storage size." + } + }, + "licenseType": { + "type": "string", + "defaultValue": "LicenseIncluded", + "allowedValues": [ + "BasePrice", + "LicenseIncluded" + ], + "metadata": { + "description": "Enter license type." + } + } + }, + "variables": { + "networkSecurityGroupName": "SQLMI-GEN-UNIQUE-NSG", + "routeTableName": "SQLMI-GEN-UNIQUE-Route-Table", + "gatewayPublicIpAddressName": "SQLMI-GEN-UNIQUE-Gateway-IP", + "gatewayName": "SQLMI-GEN-UNIQUE-Gateway", + "gatewaySku": "Basic", + "gatewaySubnetName": "GatewaySubnet", + "clientRootCertName": "RootCert" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "SQLMI-GEN-UNIQUE-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow_tds_inbound", + "properties": { + "description": "Allow access to data", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "allow_redirect_inbound", + "properties": { + "description": "Allow inbound redirect traffic to Managed Instance inside the virtual network", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000-11999", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1100, + "direction": "Inbound" + } + }, + { + "name": "deny_all_inbound", + "properties": { + "description": "Deny all other inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Inbound" + } + }, + { + "name": "allow_misubnet_outbound", + "properties": { + "description": "Allow outbound traffic inside the subnet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 200, + "direction": "Outbound" + } + }, + { + "name": "deny_all_outbound", + "properties": { + "description": "Deny all other outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 4096, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "name": "SQLMI-GEN-UNIQUE-Route-Table", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "properties": { + "disableBgpRoutePropagation": false + } + }, + { + "name": "SQLMI-VNET", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-06-01", + "dependsOn": [ + "SQLMI-GEN-UNIQUE-Route-Table", + "SQLMI-GEN-UNIQUE-NSG" + ], + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "ManagedInstance", + "properties": { + "addressPrefix": "10.0.0.0/24", + "routeTable": { + "id": "Microsoft.Network/routeTables/SQLMI-GEN-UNIQUE-Route-Table" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SQLMI-GEN-UNIQUE-NSG" + }, + "delegations": [ + { + "name": "miDelegation", + "properties": { + "serviceName": "Microsoft.Sql/managedInstances" + } + } + ] + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.0.1.0/28" + } + } + ] + } + }, + { + "type": "Microsoft.Sql/managedInstances", + "apiVersion": "2019-06-01-preview", + "dependsOn": [ + "SQLMI-VNET" + ], + "identity": { + "type": "SystemAssigned" + }, + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "sku": { + "name": "GP_Gen5" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/SQLMI-VNET/ManagedInstance", + "storageSizeInGB": 256, + "vCores": 16, + "licenseType": "LicenseIncluded" + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "SQLMI-GEN-UNIQUE-Gateway-IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "SQLMI-GEN-UNIQUE-Gateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//SQLMI-GEN-UNIQUE-Gateway-IP", + "Microsoft.Network/virtualNetworks//SQLMI-VNET" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/SQLMI-VNET/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/SQLMI-GEN-UNIQUE-Gateway-IP" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": "false", + "vpnClientConfiguration": { + "vpnClientAddressPool": { + "addressPrefixes": [ + "192.168.0.0/24" + ] + }, + "vpnClientRootCertificates": [ + { + "name": "RootCert", + "properties": { + "PublicCertData": "MIICPzCCAaygAwIBAgIQG4WTVfGKqLxMRtKuPFJ4cDAJBgUrDgMCHQUAMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZTAeFw0xMTA2MDkyMzA0NDBaFw0zOTEyMzEyMzU5NTlaMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtPSIGf2+yUDyT8aLB6sZBg2jXKRKfFS+VnM8JX1JxR2bHb5J8vUy8O6WCwcpxqCHpSV2PIXEWNBM2ozGjcaBzMCi53Q+EQvdaGwF7LJHKSL9Iv//uFlkGoKdz6r8yL9HebTH+F6OvIQ8qNxHKtZgRhqB0gMv0dS/qigGmLcDenUCAwEAAaNkMGIwYAYDVR0BBFkwV4AQkVkBKQrptsuAIFPicVM+haExMC8xLTArBgNVBAMTJFN5ZG5leUF6dXJlQXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZYIQG4WTVfGVqLxMRtKuPFJ4cDAJBgUrDgMCHQUAA4GBAElx6ydJNP8EjIbgppSY39lJKnMWBVqP8u0HXuNc3LkGUTBu0CYNhhR+MM969uX2ykiUkENeGUHykThWJdoAp+yyPWK+/OT9poE5cvNyX5W8ql4vRgeGMew1VQzTHCSx+ZvXtKeSa31Kgf7ZeXQ/3mty1MQUKilCIZPHXqx5GILl" + } + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1709 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1709 new file mode 100644 index 0000000..f9963de --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1709 @@ -0,0 +1,491 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup/nested/join-cluster.json" + ], + "timestamp": 1642962910518, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup/nested/join-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1709", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sqlvirtualmachine/sqlvirtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1709", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "existingVirtualMachineNames": { + "type": "array" + }, + "sqlServerLicenseType": { + "type": "string" + }, + "existingVmResourceGroup": { + "type": "string" + }, + "groupResourceId": { + "type": "string" + }, + "domainAccountPassword": { + "type": "securestring" + }, + "sqlServicePassword": { + "type": "securestring" + } + }, + "variables": {}, + "resources": [ + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + }, + { + "name": "[trim(parameters('existingVirtualMachineNames')[copyIndex()])]", + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "location": "location", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'),'Microsoft.Compute/virtualMachines', trim(parameters('existingVirtualMachineNames')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType", + "SqlVirtualMachineGroupResourceId": "groupResourceId", + "WSFCDomainCredentials": { + "ClusterBootstrapAccountPassword": "domainAccountPassword", + "ClusterOperatorAccountPassword": "domainAccountPassword", + "SqlServiceAccountPassword": "sqlServicePassword" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT171 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT171 new file mode 100644 index 0000000..4c27792 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT171 @@ -0,0 +1,272 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-signup-automation.json" + ], + "timestamp": 1642962889264, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/info-signup-automation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT171", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT171", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationAccountName": { + "type": "string" + }, + "sku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Free", + "Basic" + ] + }, + "runbookName": { + "type": "string" + }, + "credential1Name": { + "defaultValue": "Azure_RM_Account_Credentials", + "type": "string" + }, + "cred1Username": { + "type": "string", + "defaultValue": "ash@sysgaininc.onmicrosoft.com" + }, + "cred1Password": { + "type": "securestring" + }, + "jobIdSignup": { + "type": "string", + "metadata": { + "description": "Generate a Job ID (GUID) from https://www.guidgenerator.com/ " + } + }, + "location": { + "type": "string", + "defaultValue": "East US 2", + "allowedValues": [ + "Japan East", + "North Europe", + "South Central US", + "West Europe", + "Southeast Asia", + "East US 2" + ], + "metadata": { + "description": "Automation Service Location" + } + }, + "runbookUrl": { + "defaultValue": "https://raw.githubusercontent.com/sysgain/informatica-p2p/master/runbooks/info-restapi-signup.ps1 ", + "type": "string" + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + }, + "metadata": { + "description": "Tag Values" + } + }, + "ip": { + "type": "string" + }, + "sysgain_ms_email": { + "type": "string" + }, + "sysgain_ms_password": { + "type": "securestring" + }, + "user_email": { + "type": "string" + }, + "informatica_user_name": { + "type": "string", + "metadata": { + "description": "The same email id used for user_email" + } + }, + "informatica_user_password": { + "type": "securestring" + }, + "user_firstname": { + "type": "string" + }, + "user_lastname": { + "type": "string" + }, + "user_title": { + "type": "string" + }, + "user_phone": { + "type": "string" + }, + "org_name": { + "type": "string" + }, + "org_address": { + "type": "string" + }, + "org_city": { + "type": "string" + }, + "org_state": { + "type": "string" + }, + "org_zipcode": { + "type": "string" + }, + "org_country": { + "type": "string" + }, + "org_employees": { + "type": "string", + "defaultValue": "5001_", + "allowedValues": [ + "0_10", + "11_25", + "26_50", + "51_100", + "101_500", + "501_1000", + "1001_5000", + "5001_" + ] + }, + "client_id": { + "type": "string" + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "resources": [ + { + "name": "automationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "runbookName", + "type": "runbooks", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName" + ], + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "runbookType": "Script", + "logProgress": false, + "logVerbose": false, + "description": null, + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/sysgain/informatica-p2p/master/runbooks/info-restapi-signup.ps1 ", + "version": "1.0.0.0" + } + } + }, + { + "name": "Azure_RM_Account_Credentials", + "type": "credentials", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName" + ], + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "userName": "ash@sysgaininc.onmicrosoft.com", + "password": "cred1Password" + } + }, + { + "name": "automationAccountName/jobIdSignup", + "type": "Microsoft.Automation/automationAccounts/jobs", + "apiVersion": "2015-10-31", + "location": "East US 2", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "runbook": { + "name": "runbookName" + }, + "parameters": { + "ip": "ip", + "sysgain_ms_email": "sysgain_ms_email", + "sysgain_ms_password": "sysgain_ms_password", + "informatica_user_name": "informatica_user_name", + "user_email": "user_email", + "informatica_user_password": "informatica_user_password", + "user_firstname": "user_firstname", + "user_lastname": "user_lastname", + "user_title": "user_title", + "user_phone": "user_phone", + "org_name": "org_name", + "org_address": "org_address", + "org_city": "org_city", + "org_state": "org_state", + "org_zipcode": "org_zipcode", + "org_country": "org_country", + "org_employees": "5001_", + "client_id": "client_id" + } + }, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName", + "Microsoft.Automation/automationAccounts/runbooks/automationAccountName/runbookName", + "Microsoft.Automation/automationAccounts/credentials/automationAccountName/Azure_RM_Account_Credentials" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1710 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1710 new file mode 100644 index 0000000..914c20e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1710 @@ -0,0 +1,634 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup/azuredeploy.json" + ], + "timestamp": 1642962910527, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1710", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.sqlvirtualmachine/sqlvirtualmachines", + "microsoft.sqlvirtualmachine/sqlvirtualmachinegroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1710", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "failoverClusterName": { + "type": "string", + "maxLength": 15, + "metadata": { + "description": "Specify the Windows Failover Cluster Name" + } + }, + "existingVmList": { + "type": "string", + "metadata": { + "description": "Specify comma separated list of names of SQL Server VM's to participate in the Availability Group (e.g. SQLVM1, SQLVM2). OS underneath should be at least WS 2016." + } + }, + "sqlServerLicenseType": { + "allowedValues": [ + "PAYG", + "AHUB" + ], + "type": "string", + "metadata": { + "description": "Specify the SQL Server License type for all VM's." + } + }, + "existingVmResourceGroup": { + "type": "string", + "metadata": { + "description": "Specify resourcegroup name for existing Vms." + }, + "defaultValue": "[resourceGroup().name]" + }, + "sqlServerImageType": { + "allowedValues": [ + "SQL2017-WS2016", + "SQL2016-WS2016", + "SQL2019-WS2019" + ], + "type": "string", + "metadata": { + "description": "Select the version of SQL Server Image type" + } + }, + "existingFullyQualifiedDomainName": { + "type": "string", + "metadata": { + "description": "Specify the Fully Qualified Domain Name under which the Failover Cluster will be created. The VM's should already be joined to it. (e.g. contoso.com)" + } + }, + "existingOuPath": { + "type": "string", + "metadata": { + "description": "Specify an optional Organizational Unit (OU) on AD Domain where the CNO (Computer Object for Cluster Name) will be created (e.g. OU=testou,OU=testou2,DC=contoso,DC=com). Default is empty." + }, + "defaultValue": "" + }, + "existingDomainAccount": { + "type": "string", + "metadata": { + "description": "Specify the account for WS failover cluster creation in UPN format (e.g. example@contoso.com). This account can either be a Domain Admin or at least have permissions to create Computer Objects in default or specified OU." + } + }, + "domainAccountPassword": { + "type": "SecureString", + "metadata": { + "description": "Specify the password for the domain account" + } + }, + "existingSqlServiceAccount": { + "type": "string", + "metadata": { + "description": "Specify the domain account under which SQL Server service will run for AG setup in UPN format (e.g. sqlservice@contoso.com)" + } + }, + "sqlServicePassword": { + "type": "SecureString", + "metadata": { + "description": "Specify the password for Sql Server service account" + } + }, + "cloudWitnessName": { + "type": "string", + "metadata": { + "description": "Specify the name of the storage account to be used for creating Cloud Witness for Windows server failover cluster" + }, + "defaultValue": "[concat('clwitness', uniqueString(resourceGroup().id))]" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "Location of resources that the script is dependent on such as linked templates and DSC modules" + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + }, + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "existingVMListArray": "[split(parameters('existingVmList'),',')]", + "GroupResourceId": "Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/failoverClusterName", + "joinClusterTemplateURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup//nested/join-cluster.jsonparameters('_artifactsLocationSasToken')" + }, + "resources": [ + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "[trim(variables('existingVMListArray')[copyIndex()])]", + "location": "[resourceGroup().location]", + "properties": { + "virtualMachineResourceId": "[resourceId(parameters('existingVmResourceGroup'), 'Microsoft.Compute/virtualMachines', trim(variables('existingVMListArray')[copyIndex()]))]", + "sqlServerLicenseType": "sqlServerLicenseType" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2018-07-01", + "name": "[concat('clwitness', uniqueString(resourceGroup().id))]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "location": "[resourceGroup().location]", + "properties": { + "accessTier": "Hot", + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups", + "apiVersion": "2017-03-01-preview", + "name": "failoverClusterName", + "location": "[resourceGroup().location]", + "properties": { + "SqlImageOffer": "sqlServerImageType", + "SqlImageSku": "Enterprise", + "WsfcDomainProfile": { + "DomainFqdn": "existingFullyQualifiedDomainName", + "OuPath": "", + "ClusterBootstrapAccount": "existingDomainAccount", + "ClusterOperatorAccount": "existingDomainAccount", + "SqlServiceAccount": "existingSqlServiceAccount", + "StorageAccountUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('cloudWitnessName')), '2018-07-01').primaryEndpoints['blob']]", + "StorageAccountPrimaryKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('cloudWitnessName')), '2018-07-01').keys[0].value]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-03-01", + "name": "joincluster", + "dependsOn": [ + "failoverClusterName", + "[concat('clwitness', uniqueString(resourceGroup().id))]", + "sqlvirtualMachineLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.sqlvirtualmachine/sql-vm-ag-setup//nested/join-cluster.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "existingVirtualMachineNames": { + "value": "[split(parameters('existingVmList'),',')]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "sqlServerLicenseType": { + "value": "sqlServerLicenseType" + }, + "existingVmResourceGroup": { + "value": "[resourceGroup().name]" + }, + "groupResourceId": { + "value": "groupResourceId" + }, + "domainAccountPassword": { + "value": "domainAccountPassword" + }, + "sqlServicePassword": { + "value": "sqlServicePassword" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1711 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1711 new file mode 100644 index 0000000..a66bd21 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1711 @@ -0,0 +1,148 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-aglistener-setup/azuredeploy.json" + ], + "timestamp": 1642962910535, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-aglistener-setup/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1711", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sqlvirtualmachine/sqlvirtualmachinegroups/availabilitygrouplisteners" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1711", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingFailoverClusterName": { + "type": "string", + "metadata": { + "description": "Specify the name of the failover cluster" + } + }, + "existingSqlAvailabilityGroup": { + "type": "string", + "metadata": { + "description": "Specify the name of SQL Availability Group for which listener is being created" + } + }, + "existingVmList": { + "type": "string", + "metadata": { + "description": "Specify the Virtual machine list participating in SQL Availability Group e.g. VM1, VM2. Maximum number is 6." + } + }, + "Listener": { + "type": "string", + "metadata": { + "description": "Specify a name for the listener for SQL Availability Group" + }, + "defaultValue": "aglistener" + }, + "ListenerPort": { + "type": "Int", + "metadata": { + "description": "Specify the port for listener" + }, + "defaultValue": 1433 + }, + "ListenerIp": { + "type": "string", + "metadata": { + "description": "Specify the available private IP address for the listener from the subnet the existing Vms are part of." + }, + "defaultValue": "10.0.0.7" + }, + "existingVnetResourcegroup": { + "defaultValue": "[resourcegroup().name]", + "type": "string", + "metadata": { + "description": "Specify the resourcegroup for virtual network" + } + }, + "existingVnet": { + "type": "string", + "metadata": { + "description": "Specify the virtual network for Listener IP Address" + } + }, + "existingSubnet": { + "type": "string", + "metadata": { + "description": "Specify the subnet under Vnet for Listener IP address" + } + }, + "existingInternalLoadBalancer": { + "type": "string", + "metadata": { + "description": "Name of existing internal load balancer for the AG listener. Choose Standard Sku if the VMs are not in an availability set." + } + }, + "ProbePort": { + "type": "Int", + "metadata": { + "description": "Specify the load balancer port number (e.g. 59999)" + }, + "defaultValue": 59999 + }, + "Location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + }, + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "LoadBalancerResourceId": "Microsoft.Network/loadBalancers/existingInternalLoadBalancer", + "SubnetResourceId": "[concat(resourceid(parameters('existingVnetResourcegroup'),'Microsoft.Network/virtualNetworks', parameters('existingVnet')), '/subnets/', parameters('existingSubnet'))]", + "VmArray": "[split(parameters('existingVmList'),',')]", + "VM0": "[if(less(0, length(variables('VmArray'))), createArray(resourceId('Microsoft.SqlVirtualMachine/sqlVirtualMachines', trim(variables('VmArray')[0]))), json('[]'))]", + "VM1": "[if(less(1, length(variables('VmArray'))), createArray(resourceId('Microsoft.SqlVirtualMachine/sqlVirtualMachines', trim(variables('VmArray')[1]))), json('[]'))]", + "VM2": "[if(less(2, length(variables('VmArray'))), createArray(resourceId('Microsoft.SqlVirtualMachine/sqlVirtualMachines', trim(variables('VmArray')[2]))), json('[]'))]", + "VM3": "[if(less(3, length(variables('VmArray'))), createArray(resourceId('Microsoft.SqlVirtualMachine/sqlVirtualMachines', trim(variables('VmArray')[3]))), json('[]'))]", + "VM4": "[if(less(4, length(variables('VmArray'))), createArray(resourceId('Microsoft.SqlVirtualMachine/sqlVirtualMachines', trim(variables('VmArray')[4]))), json('[]'))]", + "VM5": "[if(less(5, length(variables('VmArray'))), createArray(resourceId('Microsoft.SqlVirtualMachine/sqlVirtualMachines', trim(variables('VmArray')[5]))), json('[]'))]", + "SqlVmResourceIdList": "[union(variables('VM0'), variables('VM1'), variables('VM2'), variables('VM3'), variables('VM4'), variables('VM5'))]" + }, + "resources": [ + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/availabilityGroupListeners", + "name": "existingFailoverClusterName/aglistener", + "apiVersion": "2017-03-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "AvailabilityGroupName": "existingSqlAvailabilityGroup", + "LoadBalancerConfigurations": [ + { + "privateIPAddress": { + "IpAddress": "10.0.0.7", + "SubnetResourceId": "[variables('SubnetResourceId')]" + }, + "LoadBalancerResourceId": "Microsoft.Network/loadBalancers/existingInternalLoadBalancer", + "ProbePort": 59999, + "SqlVirtualMachineInstances": "[union(variables('VM0'), variables('VM1'), variables('VM2'), variables('VM3'), variables('VM4'), variables('VM5'))]" + } + ], + "Port": 1433 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1712 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1712 new file mode 100644 index 0000000..11d8849 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1712 @@ -0,0 +1,87 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910542, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1712", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1712", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "firstVNETName": "vnet-01", + "firstVNETPrefix": "10.0.0.0/16", + "firstVNETFESubnetName": "subnet01", + "firstVNETFESubnetPrefix": "10.0.1.0/24" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnet-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "firstVNET" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet01", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVirtualNetworkName": { + "type": "string", + "value": "[variables('firstVNETName')]" + }, + "existingSubnetName": { + "type": "string", + "value": "[variables('firstVNETFESubnetName')]" + }, + "existingVnetResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1713 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1713 new file mode 100644 index 0000000..c5cd6b4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1713 @@ -0,0 +1,370 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962910548, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1713", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.sqlvirtualmachine/sqlvirtualmachines", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1713", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "String", + "defaultValue": "myVM", + "metadata": { + "description": "The name of the VM" + }, + "value": "GEN-UNIQUE-10" + }, + "virtualMachineSize": { + "type": "String", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "The virtual machine size." + } + }, + "existingVirtualNetworkName": { + "type": "String", + "metadata": { + "description": "Specify the name of an existing VNet in the same resource group" + }, + "value": "GET-PREREQ-existingVirtualNetworkName" + }, + "existingVnetResourceGroup": { + "type": "String", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Specify the resrouce group of the existing VNet" + }, + "value": "GET-PREREQ-existingVnetResourceGroup" + }, + "existingSubnetName": { + "type": "String", + "metadata": { + "description": "Specify the name of the Subnet Name" + }, + "value": "GET-PREREQ-existingSubnetName" + }, + "imageOffer": { + "type": "String", + "defaultValue": "sql2019-ws2019", + "allowedValues": [ + "sql2019-ws2019", + "sql2017-ws2019", + "SQL2017-WS2016", + "SQL2016SP1-WS2016", + "SQL2016SP2-WS2016", + "SQL2014SP3-WS2012R2", + "SQL2014SP2-WS2012R2" + ], + "metadata": { + "description": "Windows Server and SQL Offer" + } + }, + "sqlSku": { + "type": "String", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Enterprise", + "SQLDEV", + "Web", + "Express" + ], + "metadata": { + "description": "SQL Server Sku" + } + }, + "adminUsername": { + "type": "String", + "metadata": { + "description": "The admin user name of the VM" + }, + "value": "GEN-UNIQUE-10" + }, + "adminPassword": { + "type": "SecureString", + "metadata": { + "description": "The admin password of the VM" + }, + "value": "GEN-PASSWORD" + }, + "storageWorkloadType": { + "type": "String", + "defaultValue": "General", + "allowedValues": [ + "General", + "OLTP", + "DW" + ], + "metadata": { + "description": "SQL Server Workload Type" + } + }, + "sqlDataDisksCount": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 8, + "metadata": { + "description": "Amount of data disks (1TB each) for SQL Data files" + } + }, + "dataPath": { + "type": "String", + "defaultValue": "F:\\SQLData", + "metadata": { + "description": "Path for SQL Data files. Please choose drive letter from F to Z, and other drives from A to E are reserved for system" + } + }, + "sqlLogDisksCount": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 8, + "metadata": { + "description": "Amount of data disks (1TB each) for SQL Log files" + } + }, + "logPath": { + "type": "String", + "defaultValue": "G:\\SQLLog", + "metadata": { + "description": "Path for SQL Log files. Please choose drive letter from F to Z and different than the one used for SQL data. Drive letter from A to E are reserved for system" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "networkInterfaceName": "GEN-UNIQUE-10-nic", + "networkSecurityGroupName": "GEN-UNIQUE-10-nsg", + "networkSecurityGroupRules": [ + { + "name": "RDP", + "properties": { + "priority": 300, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389" + } + } + ], + "publicIpAddressName": "[concat(parameters('virtualMachineName'), '-publicip-', uniqueString(parameters('virtualMachineName')))]", + "publicIpAddressType": "Dynamic", + "publicIpAddressSku": "Basic", + "diskConfigurationType": "NEW", + "nsgId": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-nsg", + "subnetRef": "[resourceID(parameters('existingVNetResourceGroup'), 'Microsoft.Network/virtualNetWorks/subnets', parameters('existingVirtualNetworkName'), parameters('existingSubNetName'))]", + "dataDisksLuns": "[array(range(0 ,parameters('sqlDataDisksCount')))]", + "logDisksLuns": "[array(range(parameters('sqlDataDisksCount'), parameters('sqlLogDisksCount')))]", + "dataDisks": { + "createOption": "empty", + "caching": "ReadOnly", + "writeAcceleratorEnabled": false, + "storageAccountType": "Premium_LRS", + "diskSizeGB": 1023 + }, + "tempDbPath": "D:\\SQLTemp" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-06-01", + "name": "[variables('publicIpAddressName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIpAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-10-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "RDP", + "properties": { + "priority": 300, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-10-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('networkSecurityGroupName'))]", + "[resourceId('Microsoft.Network/publicIpAddresses/', variables('publicIpAddressName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "[resourceID(parameters('existingVNetResourceGroup'), 'Microsoft.Network/virtualNetWorks/subnets', parameters('existingVirtualNetworkName'), parameters('existingSubNetName'))]" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIpAddressName'))]" + } + } + } + ], + "enableAcceleratedNetworking": true, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-10-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D8s_v3" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "sql2019-ws2019", + "sku": "Standard", + "version": "latest" + }, + "copy": [ + { + "name": "dataDisks", + "count": "[add(parameters('sqlDataDisksCount'), parameters('sqlLogDisksCount'))]", + "input": { + "lun": "[copyIndex('dataDisks')]", + "createOption": "(dataDisks).createOption", + "caching": "[if(greaterOrEquals(copyIndex('dataDisks'), parameters('sqlDataDisksCount')) ,'None', variables('dataDisks').caching )]", + "writeAcceleratorEnabled": "(dataDisks).writeAcceleratorEnabled", + "diskSizeGB": "(dataDisks).diskSizeGB", + "managedDisk": { + "storageAccountType": "(dataDisks).storageAccountType" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-nic" + } + ] + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "enableAutomaticUpdates": true, + "provisionVmAgent": true + } + } + } + }, + { + "type": "Microsoft.SqlVirtualMachine/SqlVirtualMachines", + "apiVersion": "2017-03-01-preview", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10" + ], + "properties": { + "virtualMachineResourceId": "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10", + "sqlManagement": "Full", + "SqlServerLicenseType": "PAYG", + "StorageConfigurationSettings": { + "DiskConfigurationType": "NEW", + "StorageWorkloadType": "General", + "SQLDataSettings": { + "LUNs": "dataDisksLUNs", + "DefaultFilePath": "F:\\SQLData" + }, + "SQLLogSettings": { + "Luns": "logDisksLUNs", + "DefaultFilePath": "G:\\SQLLog" + }, + "SQLTempDbSettings": { + "DefaultFilePath": "D:\\SQLTemp" + } + } + } + } + ], + "outputs": { + "adminUsername": { + "type": "String", + "value": "[parameters('adminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1714 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1714 new file mode 100644 index 0000000..e90060f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1714 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage-ultrassd/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage-ultrassd/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910556, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage-ultrassd/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.sqlvirtualmachine/sql-vm-new-storage-ultrassd/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1714", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1714", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + }, + "defaultValue": "[resourceGroup().location]", + "value": "eastus2" + } + }, + "variables": { + "firstVNETName": "[concat('vnet-', uniqueString(resourceGroup().id, deployment().name))]", + "firstVNETPrefix": "10.0.0.0/16", + "firstVNETFESubnetName": "subnet01", + "firstVNETFESubnetPrefix": "10.0.1.0/24" + }, + "resources": [ + { + "name": "[variables('firstVNETName')]", + "type": "Microsoft.Network/virtualNetworks", + "location": "eastus2", + "apiVersion": "2020-05-01", + "tags": { + "displayName": "firstVNET" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet01", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVirtualNetworkName": { + "type": "string", + "value": "[variables('firstVNETName')]" + }, + "existingSubnetName": { + "type": "string", + "value": "[variables('firstVNETFESubnetName')]" + }, + "existingVnetResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1716 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1716 new file mode 100644 index 0000000..1c8af6c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1716 @@ -0,0 +1,1063 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/blob-storage-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.storage/blob-storage-private-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962910572, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/blob-storage-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.storage/blob-storage-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1716", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1716", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all the resources." + } + }, + "virtualNetworkName": { + "defaultValue": "UbuntuVnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network hosting the virtual machine." + } + }, + "virtualNetworkAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the virtual network hosting the virtual machine." + } + }, + "subnetName": { + "defaultValue": "DefaultSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the virtual machine." + } + }, + "subnetAddressPrefix": { + "defaultValue": "10.0.0.0/24", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the virtual machine." + } + }, + "adlsStorageAccountName": { + "type": "string", + "defaultValue": "[concat('adls', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique DNS Name for the ADLS Gen 2 storage account." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('boot', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "azadmin", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS", + "Premium_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Specifies the base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Specifies the sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "scriptFileName": { + "type": "string", + "defaultValue": "nslookup.sh", + "metadata": { + "description": "The name of the script to download from the URI specified by the scriptFilePath parameter." + } + }, + "deployLogAnalytics": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to deploy a Log Analytics workspace to monitor the health and performance of the virtual machine." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the globally unique name of the Log Analytics workspace." + }, + "value": "GEN-UNIQUE" + }, + "workspaceSku": { + "type": "string", + "allowedValues": [ + "PerGB2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "defaultValue": "PerGB2018", + "metadata": { + "description": "Specifies the SKU of the Log Analytics workspace." + } + }, + "adlsStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "AdlsStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the storage account." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + } + }, + "variables": { + "nicName": "TestVmNic", + "nsgName": "DefaultSubnetNsg", + "publicIPAddressName": "TestVmPublicIp", + "publicIPAddressType": "Dynamic", + "workspaceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet", + "publicIpId": "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "nicId": "Microsoft.Network/networkInterfaces/TestVmNic", + "vnetId": "Microsoft.Network/virtualNetworks/UbuntuVnet", + "nsgId": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg", + "vmId": "Microsoft.Compute/virtualMachines/TestVm", + "customScriptId": "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "omsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "adlsStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('adls', uniquestring(resourceGroup().id))]", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "adlsPublicDNSZoneForwarder": "[concat('.dfs.', environment().suffixes.storage)]", + "blobPublicDNSZoneForwarder": "[concat('.blob.', environment().suffixes.storage)]", + "adlsPrivateDnsZoneName": "[concat('privatelink', variables('adlsPublicDNSZoneForwarder'))]", + "blobPrivateDnsZoneName": "[concat('privatelink', variables('blobPublicDNSZoneForwarder'))]", + "adlsPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('adlsPrivateDnsZoneName'))]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "adlsServicePrimaryEndpoint": "[concat(parameters('adlsStorageAccountName'), variables('adlsPublicDNSZoneForwarder'))]", + "blobServicePrimaryEndpoint": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]", + "adlsStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/AdlsStorageAccountPrivateEndpoint", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "adlsStorageAccountPrivateEndpointGroupName": "dfs", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "adlsPrivateDnsZoneGroup": "AdlsStorageAccountPrivateEndpoint/dfsPrivateDnsZoneGroup", + "blobPrivateDnsZoneGroup": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup" + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('adls', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('boot', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "TestVmPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(toLower(parameters('vmName')), uniquestring(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "DefaultSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "UbuntuVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TestVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "Microsoft.Network/virtualNetworks/UbuntuVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/TestVmPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "TestVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateEndpoints/AdlsStorageAccountPrivateEndpoint", + "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "Microsoft.Network/networkInterfaces/TestVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "TestVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 50, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 50, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('vmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TestVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/CustomScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', parameters('scriptFileName'), ' ', variables('adlsServicePrimaryEndpoint'), ' ', variables('blobServicePrimaryEndpoint'))]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "condition": true, + "apiVersion": "2020-03-01-preview", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + } + }, + "resources": [ + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "Kern", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "kern", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "Syslog", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "syslog", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "User", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "user", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SampleSyslogCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslogCollection", + "properties": { + "state": "Enabled" + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "DiskPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Used Inodes" + }, + { + "counterName": "Free Megabytes" + }, + { + "counterName": "% Used Space" + }, + { + "counterName": "Disk Transfers/sec" + }, + { + "counterName": "Disk Reads/sec" + }, + { + "counterName": "Disk Writes/sec" + }, + { + "counterName": "Disk Read Bytes/sec" + }, + { + "counterName": "Disk Write Bytes/sec" + } + ], + "objectName": "Logical Disk", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "ProcessorPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Processor Time" + }, + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "% IO Wait Time" + }, + { + "counterName": "% Idle Time" + }, + { + "counterName": "% Interrupt Time" + } + ], + "objectName": "Processor", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "ProcessPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "Used Memory" + }, + { + "counterName": "Virtual Shared Memory" + } + ], + "objectName": "Process", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SystemPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Processes" + } + ], + "objectName": "System", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "NetworkPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Total Bytes Transmitted" + }, + { + "counterName": "Total Bytes Received" + }, + { + "counterName": "Total Bytes" + }, + { + "counterName": "Total Packets Transmitted" + }, + { + "counterName": "Total Packets Received" + }, + { + "counterName": "Total Rx Errors" + }, + { + "counterName": "Total Tx Errors" + }, + { + "counterName": "Total Collisions" + } + ], + "objectName": "Network", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "MemorydataSources", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Available MBytes Memory" + }, + { + "counterName": "% Available Memory" + }, + { + "counterName": "Used Memory MBytes" + }, + { + "counterName": "% Used Memory" + } + ], + "objectName": "Memory", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-03-01-preview", + "type": "dataSources", + "name": "SampleLinuxPerfCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceCollection", + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "[variables('adlsPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('adlsPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('adlsPrivateDnsZoneId')]", + "[variables('vnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('blobPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('vnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "AdlsStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.Storage/storageAccounts/[concat('adls', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "AdlsStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('adls', uniquestring(resourceGroup().id))]", + "groupIds": [ + "dfs" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat(parameters('adlsStorageAccountName'), variables('adlsPublicDNSZoneForwarder'))]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "AdlsStorageAccountPrivateEndpoint/dfsPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('adlsPrivateDnsZoneId')]", + "[variables('adlsStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('adlsPrivateDnsZoneId')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ], + "outputs": { + "adlsStorageAccountPrivateEndpoint": { + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', parameters('adlsStorageAccountPrivateEndpointName')), '2020-04-01', 'Full')]", + "type": "object" + }, + "blobStorageAccountPrivateEndpoint": { + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', parameters('blobStorageAccountPrivateEndpointName')), '2020-04-01', 'Full')]", + "type": "object" + }, + "adlsStorageAccount": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('adlsStorageAccountName')), '2019-06-01', 'Full')]", + "type": "object" + }, + "blobStorageAccount": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('blobStorageAccountName')), '2019-06-01', 'Full')]", + "type": "object" + }, + "adminUsername": { + "value": "[parameters('adminUsername')]", + "type": "string" + }, + "workspaceName": { + "value": "[parameters('workspaceName')]", + "type": "string" + }, + "scriptFileUri": { + "value": "[variables('scriptFileUri')]", + "type": "string" + }, + "environment": { + "value": "[environment()]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1717 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1717 new file mode 100644 index 0000000..d03342e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1717 @@ -0,0 +1,1082 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/file-share-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.storage/file-share-private-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962910582, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/file-share-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.storage/file-share-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1717", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.operationalinsights/workspaces", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1717", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all the resources." + } + }, + "virtualNetworkName": { + "defaultValue": "UbuntuVnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network hosting the virtual machine." + } + }, + "virtualNetworkAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the virtual network hosting the virtual machine." + } + }, + "subnetName": { + "defaultValue": "DefaultSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the virtual machine." + } + }, + "subnetAddressPrefix": { + "defaultValue": "10.0.0.0/24", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the virtual machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "azadmin", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "Premium_ZRS", + "StandardSSD_LRS", + "StandardSSD_ZRS", + "Standard_LRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Specifies the base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Specifies the sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "scriptFileName": { + "type": "string", + "defaultValue": "file_nslookup.sh", + "metadata": { + "description": "Specifies the script to download from the URI specified by the _artifactsLocation parameter." + } + }, + "deployLogAnalytics": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to deploy a Log Analytics workspace to monitor the health and performance of the virtual machine." + } + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the globally unique name of the Log Analytics workspace." + }, + "value": "GEN-UNIQUE" + }, + "workspaceSku": { + "type": "string", + "allowedValues": [ + "PerGB2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "defaultValue": "PerGB2018", + "metadata": { + "description": "Specifies the SKU of the Log Analytics workspace." + } + }, + "fileStorageAccountName": { + "type": "string", + "defaultValue": "[concat('file', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Azure Storage account hosting the File Share." + } + }, + "fileShareName": { + "type": "string", + "defaultValue": "documents", + "minLength": 3, + "maxLength": 63, + "metadata": { + "description": "Specifies the name of the File Share. File share names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only." + } + }, + "shareQuota": { + "type": "int", + "defaultValue": 5120, + "metadata": { + "description": "Specifies the maximum size of the share, in gigabytes. Must be greater than 0, and less than or equal to 5TB (5120). For Large File Shares, the maximum size is 102400." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('boot', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "fileStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "FileSharePrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + }, + "networkAclsDefaultAction": { + "type": "string", + "defaultValue": "Deny", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "Allow or disallow public access to all blobs or containers in the storage accounts. The default interpretation is true for this property." + } + }, + "allowBlobPublicAccess": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Allow or disallow public access to all blobs or containers in the storage accounts. The default interpretation is true for this property." + } + } + }, + "variables": { + "fileStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('file', uniquestring(resourceGroup().id))]", + "fileShareId": "Microsoft.Storage/storageAccounts/fileServices/shares/[concat('file', uniquestring(resourceGroup().id))]/default/documents", + "customScriptExtensionName": "CustomScript", + "omsAgentForLinuxName": "LogAnalytics", + "nicName": "TestVmNic", + "nsgName": "DefaultSubnetNsg", + "publicIPAddressName": "TestVmPublicIp", + "publicIPAddressType": "Dynamic", + "workspaceId": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet", + "publicIpId": "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "nicId": "Microsoft.Network/networkInterfaces/TestVmNic", + "vnetId": "Microsoft.Network/virtualNetworks/UbuntuVnet", + "nsgId": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg", + "vmId": "Microsoft.Compute/virtualMachines/TestVm", + "customScriptId": "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "omsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "filePublicDNSZoneForwarder": "[concat('.file.', environment().suffixes.storage)]", + "blobPublicDNSZoneForwarder": "[concat('.blob.', environment().suffixes.storage)]", + "filePrivateDnsZoneName": "[concat('privatelink', variables('filePublicDNSZoneForwarder'))]", + "blobPrivateDnsZoneName": "[concat('privatelink', variables('blobPublicDNSZoneForwarder'))]", + "filePrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('filePrivateDnsZoneName'))]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "fileServicePrimaryEndpoint": "[concat(parameters('fileStorageAccountName'), variables('filePublicDNSZoneForwarder'))]", + "blobServicePrimaryEndpoint": "[concat(parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]", + "fileStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/FileSharePrivateEndpoint", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "fileStorageAccountPrivateEndpointGroupName": "file", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "filePrivateDnsZoneGroup": "FileSharePrivateEndpoint/filePrivateDnsZoneGroup", + "blobPrivateDnsZoneGroup": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('file', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "networkAcls": { + "defaultAction": "Deny", + "bypass": "AzureServices" + }, + "allowBlobPublicAccess": true + } + }, + { + "type": "Microsoft.Storage/storageAccounts/fileServices/shares", + "apiVersion": "2021-01-01", + "name": "[concat('file', uniquestring(resourceGroup().id))]/default/documents", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[concat('file', uniquestring(resourceGroup().id))]" + ], + "properties": { + "shareQuota": 5120 + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "FileSharePrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[concat('file', uniquestring(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/fileServices/shares/[concat('file', uniquestring(resourceGroup().id))]/default/documents" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "FileSharePrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('file', uniquestring(resourceGroup().id))]", + "groupIds": [ + "file" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "FileSharePrivateEndpoint/filePrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('filePrivateDnsZoneId')]", + "[variables('fileStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('filePrivateDnsZoneId')]" + } + } + ] + } + }, + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('boot', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "networkAcls": { + "defaultAction": "Deny", + "bypass": "AzureServices" + }, + "allowBlobPublicAccess": true + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "TestVmPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(toLower(parameters('vmName')), uniquestring(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "DefaultSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "UbuntuVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/DefaultSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TestVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/TestVmPublicIp", + "Microsoft.Network/virtualNetworks/UbuntuVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/TestVmPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "TestVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateEndpoints/FileSharePrivateEndpoint", + "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "Microsoft.Network/networkInterfaces/TestVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "TestVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 50, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 50, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('vmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TestVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/CustomScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('scriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', parameters('scriptFileName'), ' ', variables('fileServicePrimaryEndpoint'), ' ', variables('blobServicePrimaryEndpoint'))]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-08-01').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-08-01').primarySharedKey]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/CustomScript", + "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "condition": true, + "apiVersion": "2020-08-01", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "Kern", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "kern", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "Syslog", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "syslog", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "User", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "user", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "SampleSyslogCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxSyslogCollection", + "properties": { + "state": "Enabled" + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "DiskPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Used Inodes" + }, + { + "counterName": "Free Megabytes" + }, + { + "counterName": "% Used Space" + }, + { + "counterName": "Disk Transfers/sec" + }, + { + "counterName": "Disk Reads/sec" + }, + { + "counterName": "Disk Writes/sec" + }, + { + "counterName": "Disk Read Bytes/sec" + }, + { + "counterName": "Disk Write Bytes/sec" + } + ], + "objectName": "Logical Disk", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "ProcessorPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Processor Time" + }, + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "% IO Wait Time" + }, + { + "counterName": "% Idle Time" + }, + { + "counterName": "% Interrupt Time" + } + ], + "objectName": "Processor", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "ProcessPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% User Time" + }, + { + "counterName": "% Privileged Time" + }, + { + "counterName": "Used Memory" + }, + { + "counterName": "Virtual Shared Memory" + } + ], + "objectName": "Process", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "SystemPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Processes" + } + ], + "objectName": "System", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "NetworkPerfCounters", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Total Bytes Transmitted" + }, + { + "counterName": "Total Bytes Received" + }, + { + "counterName": "Total Bytes" + }, + { + "counterName": "Total Packets Transmitted" + }, + { + "counterName": "Total Packets Received" + }, + { + "counterName": "Total Rx Errors" + }, + { + "counterName": "Total Tx Errors" + }, + { + "counterName": "Total Collisions" + } + ], + "objectName": "Network", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "MemorydataSources", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "Available MBytes Memory" + }, + { + "counterName": "% Available Memory" + }, + { + "counterName": "Used Memory MBytes" + }, + { + "counterName": "% Used Memory" + } + ], + "objectName": "Memory", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2020-08-01", + "type": "dataSources", + "name": "SampleLinuxPerfCollection1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "kind": "LinuxPerformanceCollection", + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[variables('filePrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('filePrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('filePrivateDnsZoneId')]", + "[variables('vnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('blobPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('vnetId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/UbuntuVnet" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/UbuntuVnet", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/UbuntuVnet/DefaultSubnet" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-06-01", + "name": "BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1718 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1718 new file mode 100644 index 0000000..5e98125 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1718 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910595, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1718", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1718", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "11316749979286655376" + } + }, + "parameters": { + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Premium_LRS", + "Premium_ZRS", + "Standard_GRS", + "Standard_GZRS", + "Standard_LRS", + "Standard_RAGRS", + "Standard_RAGZRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Storage Account" + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-06-01", + "name": "[format('store{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "storageAccountId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1719 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1719 new file mode 100644 index 0000000..fa5efe3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1719 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-account-service-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-account-service-encryption-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910603, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-account-service-encryption-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-account-service-encryption-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1719", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1719", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "12868867817539537697" + } + }, + "parameters": { + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Premium_LRS", + "Premium_ZRS", + "Standard_GRS", + "Standard_GZRS", + "Standard_LRS", + "Standard_RAGRS", + "Standard_RAGZRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account type." + }, + "value": "Standard_LRS" + }, + "blobEncryptionEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable or disable Blob encryption at Rest." + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Storage Account" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('store{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": { + "encryption": { + "keySource": "Microsoft.Storage", + "services": { + "blob": { + "enabled": true + } + } + } + } + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "storageAccountId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT172 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT172 new file mode 100644 index 0000000..a830385 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT172 @@ -0,0 +1,127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/network-interface.json" + ], + "timestamp": 1642962889328, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/network-interface.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT172", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT172", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "westus", + "metadata": { + "description": "Network Security Group Deployment Location" + } + }, + "networkApiVersion": { + "type": "string", + "defaultValue": "2015-06-15", + "metadata": { + "description": "API Version for the Network Resources" + } + }, + "networkInterfaceName": { + "type": "string", + "defaultValue": "networkInterface", + "metadata": { + "description": "Network Interface Name" + } + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + }, + "metadata": { + "description": "Tag Values" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "networkSecurityGroup", + "metadata": { + "description": "Network Security Group Name" + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "publicIPAddress", + "metadata": { + "description": "Public IP Address Name" + } + }, + "subnetRef": { + "type": "string", + "defaultValue": "subnetRef", + "metadata": { + "description": "subnet reference where the Network Interface is being Deployed" + } + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "comments": "Network Interface Resource", + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "networkInterface", + "location": "westus", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSecurityGroup" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddress" + }, + "subnet": { + "id": "subnetRef" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1720 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1720 new file mode 100644 index 0000000..090ac31 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1720 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-advanced-threat-protection-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-advanced-threat-protection-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910611, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-advanced-threat-protection-create/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-advanced-threat-protection-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1720", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.security/advancedthreatprotectionsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1720", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "270720347454094462" + } + }, + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name must be unique across all existing storage account names in Azure. It must be 3 to 24 characters long, and can contain only lowercase letters and numbers." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Storage account location, default is same as resource group location." + } + }, + "storageAccountReplication": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Premium_LRS", + "Premium_ZRS", + "Standard_GRS", + "Standard_GZRS", + "Standard_LRS", + "Standard_RAGRS", + "Standard_RAGZRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage account replication, for more info see 'https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy'." + } + }, + "advancedThreatProtectionEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable or disable Advanced Threat Protection." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "condition": true, + "type": "Microsoft.Security/advancedThreatProtectionSettings", + "apiVersion": "2019-01-01", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', parameters('storageAccountName'))]", + "name": "current", + "properties": { + "isEnabled": true + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "storageAccountId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1721 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1721 new file mode 100644 index 0000000..98184d2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1721 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-container/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-container/azuredeploy.parameters.json" + ], + "timestamp": 1642962910619, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-container/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-container/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1721", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/blobservices/containers", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1721", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "11901795112433599647" + } + }, + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Storage account." + }, + "value": "GEN-UNIQUE" + }, + "containerName": { + "type": "string", + "defaultValue": "logs", + "metadata": { + "description": "Specifies the name of the blob container." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location in which the Azure Storage resources should be deployed." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Storage/storageAccounts/blobServices/containers", + "apiVersion": "2021-06-01", + "name": "[format('{0}/default/{1}', parameters('storageAccountName'), parameters('containerName'))]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1722 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1722 new file mode 100644 index 0000000..e33e8c8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1722 @@ -0,0 +1,156 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-encryption-and-retention/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-encryption-and-retention/azuredeploy.parameters.json" + ], + "timestamp": 1642962910628, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-encryption-and-retention/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-encryption-and-retention/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1722", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.storage/storageaccounts/blobservices" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1722", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "18183208779267923528" + } + }, + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Storage account name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Storage account location" + } + }, + "storageSku": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS", + "Premium_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ], + "metadata": { + "description": "Storage account sku" + } + }, + "storageKind": { + "type": "string", + "defaultValue": "StorageV2", + "allowedValues": [ + "Storage", + "StorageV2", + "BlobStorage", + "FileStorage", + "BlockBlobStorage" + ], + "metadata": { + "description": "Storage account kind" + } + }, + "storageTier": { + "type": "string", + "defaultValue": "Hot", + "allowedValues": [ + "Hot", + "Cool" + ], + "metadata": { + "description": "Storage account access tier, Hot for frequently accessed data or Cool for infreqently accessed data" + } + }, + "deleteRetentionPolicy": { + "type": "int", + "defaultValue": 7, + "maxValue": 365, + "minValue": 1, + "metadata": { + "description": "Amount of days the soft deleted data is stored and available for recovery" + } + }, + "blobEncryptionEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable blob encryption at rest" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "encryption": { + "keySource": "Microsoft.Storage", + "services": { + "blob": { + "enabled": true + } + } + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts/blobServices", + "apiVersion": "2021-04-01", + "name": "[format('{0}/{1}', parameters('storageAccountName'), 'default')]", + "properties": { + "deleteRetentionPolicy": { + "enabled": true, + "days": 7 + } + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1723 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1723 new file mode 100644 index 0000000..3be781a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1723 @@ -0,0 +1,188 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-encryption-with-cmk/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-encryption-with-cmk/azuredeploy.parameters.json" + ], + "timestamp": 1642962910637, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-blob-encryption-with-cmk/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-blob-encryption-with-cmk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1723", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/keys", + "microsoft.managedidentity/userassignedidentities", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1723", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "8265204902282047639" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which the resources should be deployed." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "The Tenant Id that should be used throughout the deployment." + } + }, + "userAssignedIdentityName": { + "type": "string", + "metadata": { + "description": "The name of the User Assigned Identity." + }, + "value": "GEN-UNIQUE" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "The name of the Key Vault." + }, + "value": "GEN-UNIQUE" + }, + "keyVaultKeyName": { + "type": "string", + "metadata": { + "description": "Name of the key in the Key Vault" + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the Storage Account" + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-06-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "standard", + "family": "A" + }, + "enableSoftDelete": true, + "enablePurgeProtection": true, + "enabledForDeployment": true, + "enabledForDiskEncryption": true, + "enabledForTemplateDeployment": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "unwrapKey", + "wrapKey", + "get" + ] + }, + "objectId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName'))).principalId]" + } + ] + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.KeyVault/vaults/keys", + "apiVersion": "2021-06-01-preview", + "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('keyVaultKeyName'))]", + "properties": { + "attributes": { + "enabled": true + }, + "keySize": 4096, + "kty": "RSA" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[format('{0}', resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName')))]": {} + } + }, + "properties": { + "accessTier": "Hot", + "supportsHttpsTrafficOnly": true, + "minimumTlsVersion": "TLS1_2", + "encryption": { + "identity": { + "userAssignedIdentity": "Microsoft.ManagedIdentity/userAssignedIdentities/GEN-UNIQUE" + }, + "services": { + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Keyvault", + "keyvaultproperties": { + "keyname": "GEN-KEYVAULT-ENCRYPTION-KEY", + "keyvaulturi": "[if(endsWith(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri, '/'), substring(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri, 0, sub(length(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri), 1)), reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri)]" + } + } + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE", + "Microsoft.KeyVault/vaults/keys/GEN-UNIQUE/GEN-KEYVAULT-ENCRYPTION-KEY", + "Microsoft.ManagedIdentity/userAssignedIdentities/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1724 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1724 new file mode 100644 index 0000000..f31f8c5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1724 @@ -0,0 +1,93 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-file-share/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-file-share/azuredeploy.parameters.json" + ], + "timestamp": 1642962910643, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-file-share/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-file-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1724", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1724", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "3369765991499277236" + } + }, + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Azure Storage account." + }, + "value": "GEN-UNIQUE" + }, + "fileShareName": { + "type": "string", + "maxLength": 63, + "minLength": 3, + "metadata": { + "description": "Specifies the name of the File Share. File share names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location in which the Azure Storage resources should be deployed." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + }, + "properties": { + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Storage/storageAccounts/fileServices/shares", + "apiVersion": "2021-04-01", + "name": "[format('{0}/default/{1}', parameters('storageAccountName'), parameters('fileShareName'))]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1725 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1725 new file mode 100644 index 0000000..db3b647 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1725 @@ -0,0 +1,94 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-multi-blob-container/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-multi-blob-container/azuredeploy.parameters.json" + ], + "timestamp": 1642962910649, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-multi-blob-container/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-multi-blob-container/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1725", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/blobservices/containers", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1725", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "17206955797783750068" + } + }, + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Storage account." + }, + "value": "GEN-UNIQUE" + }, + "containerPrefix": { + "type": "string", + "defaultValue": "logs", + "metadata": { + "description": "Specifies the prefix of the blob container names." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location in which the Azure Storage resources should be deployed." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + }, + "properties": { + "accessTier": "Hot" + } + }, + { + "copy": { + "name": "containers", + "count": 11 + }, + "type": "Microsoft.Storage/storageAccounts/blobServices/containers", + "apiVersion": "2021-04-01", + "name": "[format('{0}/default/{1}{2}', parameters('storageAccountName'), parameters('containerPrefix'), range(0, 3)[copyIndex()])]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1726 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1726 new file mode 100644 index 0000000..c5b3090 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1726 @@ -0,0 +1,104 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-multi-file-share/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-multi-file-share/azuredeploy.parameters.json" + ], + "timestamp": 1642962910658, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-multi-file-share/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-multi-file-share/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1726", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1726", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "14786869818577584965" + } + }, + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Azure Storage account." + }, + "value": "GEN-UNIQUE" + }, + "sharePrefix": { + "type": "string", + "defaultValue": "logs", + "metadata": { + "description": "Specifies the prefix of the file share names." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location in which the Azure Storage resources should be deployed." + } + }, + "shareCopy": { + "type": "int", + "defaultValue": 1, + "maxValue": 100, + "minValue": 1, + "metadata": { + "description": "Specifies the number of file shares to be created." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + }, + "properties": { + "accessTier": "Hot" + } + }, + { + "copy": { + "name": "fileShares", + "count": 33 + }, + "type": "Microsoft.Storage/storageAccounts/fileServices/shares", + "apiVersion": "2021-04-01", + "name": "[format('{0}/default/{1}{2}', parameters('storageAccountName'), parameters('sharePrefix'), range(0, parameters('shareCopy'))[copyIndex()])]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1727 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1727 new file mode 100644 index 0000000..5e18b03 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1727 @@ -0,0 +1,191 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storage/storage-static-website/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-static-website/azuredeploy.parameters.json" + ], + "timestamp": 1642962910664, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storage/storage-static-website/azuredeploy.json", + "/quickstarts/microsoft.storage/storage-static-website/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1727", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1727", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "6050322035502316178" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which the resources should be deployed." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[format('stor{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the storage account to use for site hosting." + } + }, + "storageSku": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "The storage account sku name." + }, + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Premium_LRS" + ] + }, + "indexDocumentPath": { + "type": "string", + "defaultValue": "index.html", + "metadata": { + "description": "The path to the web index document." + } + }, + "indexDocumentContents": { + "type": "string", + "defaultValue": "

Example static website

", + "metadata": { + "description": "The contents of the web index document." + } + }, + "errorDocument404Path": { + "type": "string", + "defaultValue": "error.html", + "metadata": { + "description": "The path to the web error document." + } + }, + "errorDocument404Contents": { + "type": "string", + "defaultValue": "

Example 404 error page

", + "metadata": { + "description": "The contents of the web error document." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('stor{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "DeploymentScript", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Storage/storageAccounts/{0}', parameters('storageAccountName'))]", + "name": "[guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', 'DeploymentScript'), subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '17d1049b-9a84-46fb-8f53-869881c3d3ab'))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '17d1049b-9a84-46fb-8f53-869881c3d3ab')]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', 'DeploymentScript')).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/DeploymentScript", + "Microsoft.Storage/storageAccounts/[format('stor{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "deploymentScript", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', 'DeploymentScript')]": {} + } + }, + "properties": { + "azPowerShellVersion": "3.0", + "scriptContent": "$ErrorActionPreference = 'Stop'\n$storageAccount = Get-AzStorageAccount -ResourceGroupName $env:ResourceGroupName -AccountName $env:StorageAccountName\n\n# Enable the static website feature on the storage account.\n$ctx = $storageAccount.Context\nEnable-AzStorageStaticWebsite -Context $ctx -IndexDocument $env:IndexDocumentPath -ErrorDocument404Path $env:ErrorDocument404Path\n\n# Add the two HTML pages.\n$tempIndexFile = New-TemporaryFile\nSet-Content $tempIndexFile $env:IndexDocumentContents -Force\nSet-AzStorageBlobContent -Context $ctx -Container '$web' -File $tempIndexFile -Blob $env:IndexDocumentPath -Properties @{'ContentType' = 'text/html'} -Force\n\n$tempErrorDocument404File = New-TemporaryFile\nSet-Content $tempErrorDocument404File $env:ErrorDocument404Contents -Force\nSet-AzStorageBlobContent -Context $ctx -Container '$web' -File $tempErrorDocument404File -Blob $env:ErrorDocument404Path -Properties @{'ContentType' = 'text/html'} -Force\n", + "retentionInterval": "PT4H", + "environmentVariables": [ + { + "name": "ResourceGroupName", + "value": "[resourceGroup().name]" + }, + { + "name": "StorageAccountName", + "value": "[format('stor{0}', uniqueString(resourceGroup().id))]" + }, + { + "name": "IndexDocumentPath", + "value": "index.html" + }, + { + "name": "IndexDocumentContents", + "value": "

Example static website

" + }, + { + "name": "ErrorDocument404Path", + "value": "error.html" + }, + { + "name": "ErrorDocument404Contents", + "value": "

Example 404 error page

" + } + ] + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/DeploymentScript", + "[extensionResourceId(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'Microsoft.Authorization/roleAssignments', guid(resourceGroup().id, resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', 'DeploymentScript'), subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '17d1049b-9a84-46fb-8f53-869881c3d3ab')))]", + "Microsoft.Storage/storageAccounts/[format('stor{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "outputs": { + "staticWebsiteUrl": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))).primaryEndpoints.web]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1728 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1728 new file mode 100644 index 0000000..31ebd55 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1728 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910673, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1728", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.compute/disks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1728", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "WestUS2" + }, + "principalId": { + "type": "string", + "metadata": { + "description": "Specifies the principal ID of StoragePool Resource Provider." + }, + "value": "29601168-364b-46da-8c0a-d8b461ffa47a" + }, + "availabilityZone": { + "defaultValue": 1, + "type": "string", + "allowedValues": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Availability zone to deploy the managed disk and Disk Pool" + }, + "value": "1" + } + }, + "variables": { + "existingVnetName": "vnet", + "existingSubnetName": "diskpool-subnet", + "existingManagedDiskName": "disk-1", + "diskPoolOperatorRoleDefinitionId": "60fc6e62547942d48bf467625fcc2840", + "roleAssignmentGuid": "[guid(variables('diskPoolOperatorRoleDefinitionId'), parameters('principalId'), resourceGroup().id)]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-08-01", + "location": "WestUS2", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "diskpool-subnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "delegations": [ + { + "name": "StoragePoolDelegation", + "properties": { + "serviceName": "Microsoft.StoragePool/diskPools" + } + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Compute/disks", + "apiVersion": "2020-09-30", + "name": "disk-1", + "location": "WestUS2", + "sku": { + "name": "Premium_LRS" + }, + "zones": [ + "1" + ], + "properties": { + "creationData": { + "createOption": "Empty" + }, + "diskSizeGB": 1024, + "maxShares": 2 + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "name": "[guid(variables('diskPoolOperatorRoleDefinitionId'), parameters('principalId'), resourceGroup().id)]", + "dependsOn": [ + "Microsoft.Compute/disks//disk-1" + ], + "apiVersion": "2020-04-01-preview", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/60fc6e62547942d48bf467625fcc2840", + "principalId": "29601168-364b-46da-8c0a-d8b461ffa47a", + "principalType": "ServicePrincipal" + } + } + ], + "outputs": { + "existingVnetName": { + "type": "string", + "value": "[variables('existingVnetName')]" + }, + "existingSubnetName": { + "type": "string", + "value": "[variables('existingSubnetName')]" + }, + "existingResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingManagedDiskName": { + "type": "string", + "value": "[variables('existingManagedDiskName')]" + }, + "existingManagedDiskAvailabilityZone": { + "type": "string", + "value": "[parameters('availabilityZone')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1729 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1729 new file mode 100644 index 0000000..e2a415b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1729 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/azuredeploy.json", + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/azuredeploy.parameters.json" + ], + "timestamp": 1642962910680, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/azuredeploy.json", + "/quickstarts/microsoft.storagepool/diskpool-create-entry-level/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1729", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storagepool/diskpools", + "microsoft.storagepool/diskpools/iscsitargets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1729", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "657559697202475547" + } + }, + "parameters": { + "diskPoolLocation": { + "type": "string", + "allowedValues": [ + "AustraliaEast", + "CanadaCentral", + "CentralUS", + "EastUS", + "JapanEast", + "NorthEurope", + "SouthCentralUS", + "SoutheastAsia", + "UKSouth", + "WestEurope", + "WestUS2" + ], + "metadata": { + "description": "Location of the Disk Pool" + }, + "value": "GET-PREREQ-location" + }, + "diskPoolSku": { + "type": "string", + "defaultValue": "Standard_S1", + "allowedValues": [ + "Basic_B1", + "Standard_S1", + "Premium_P1" + ], + "metadata": { + "description": "Sku of the Disk Pool" + }, + "value": "Standard_S1" + }, + "diskPoolName": { + "type": "string", + "defaultValue": "diskpool-01", + "maxLength": 30, + "minLength": 7, + "metadata": { + "description": "Name of the Disk Pool" + }, + "value": "GEN-UNIQUE" + }, + "diskPoolAvailabilityZone": { + "type": "string", + "metadata": { + "description": "Availability zone to deploy the Disk Pool" + }, + "value": "GET-PREREQ-existingManagedDiskAvailabilityZone" + }, + "existingManagedDiskName": { + "type": "string", + "defaultValue": "disk-1", + "metadata": { + "description": "Name of the managed disk (512 sector size) to create and export as an iSCSI LUN in the Disk Pool" + }, + "value": "GET-PREREQ-existingManagedDiskName" + }, + "targetName": { + "type": "string", + "defaultValue": "iscsi-target-01", + "maxLength": 40, + "minLength": 5, + "metadata": { + "description": "Name of the iSCSI Target" + }, + "value": "GEN-UNIQUE" + }, + "existingResourceGroupName": { + "type": "string", + "metadata": { + "description": "Name of the resourceGroup for the existing virtual network and disk to deploy the Disk Pool." + }, + "value": "GET-PREREQ-existingResourceGroupName" + }, + "existingVnetName": { + "type": "string", + "metadata": { + "description": "Name of the existing virtual network to deploy the Disk Pool into." + }, + "value": "GET-PREREQ-existingVnetName" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the existing subnet to deploy the Disk Pool into." + }, + "value": "GET-PREREQ-existingSubnetName" + } + }, + "functions": [], + "variables": { + "subnetId": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('existingResourceGroupName')), 'Microsoft.Network/virtualNetworks/subnets', parameters('existingVnetName'), parameters('existingSubnetName'))]", + "diskId": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('existingResourceGroupName')), 'Microsoft.Compute/disks', parameters('existingManagedDiskName'))]" + }, + "resources": [ + { + "type": "Microsoft.StoragePool/diskPools", + "apiVersion": "2021-08-01", + "name": "GEN-UNIQUE", + "sku": { + "name": "Standard_S1" + }, + "location": "GET-PREREQ-location", + "properties": { + "availabilityZones": [ + "GET-PREREQ-existingManagedDiskAvailabilityZone" + ], + "subnetId": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('existingResourceGroupName')), 'Microsoft.Network/virtualNetworks/subnets', parameters('existingVnetName'), parameters('existingSubnetName'))]", + "disks": [ + { + "id": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('existingResourceGroupName')), 'Microsoft.Compute/disks', parameters('existingManagedDiskName'))]" + } + ] + } + }, + { + "type": "Microsoft.StoragePool/diskPools/iscsiTargets", + "apiVersion": "2021-08-01", + "name": "[format('{0}/{1}', parameters('diskPoolName'), parameters('targetName'))]", + "properties": { + "targetIqn": "iqn.2021-04.org.microsoft.com:target", + "aclMode": "Dynamic", + "luns": [ + { + "managedDiskAzureResourceId": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('existingResourceGroupName')), 'Microsoft.Compute/disks', parameters('existingManagedDiskName'))]", + "name": "lun0" + } + ] + }, + "dependsOn": [ + "Microsoft.StoragePool/diskPools/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT173 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT173 new file mode 100644 index 0000000..df5d6c8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT173 @@ -0,0 +1,100 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/public-ip.json" + ], + "timestamp": 1642962889381, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/public-ip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT173", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT173", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "westus", + "metadata": { + "description": "Public IP Deployment Location" + } + }, + "networkApiVersion": { + "type": "string", + "defaultValue": "2015-06-15", + "metadata": { + "description": "API Version for the Network Resources" + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "publicIPAddress", + "metadata": { + "description": "Public IP Address Name" + } + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + }, + "metadata": { + "description": "Tag Values" + } + }, + "publicIPdnsPrefix": { + "type": "string", + "defaultValue": "publicdnsprefix", + "metadata": { + "description": "Public IP DNS Prefix" + } + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "comments": "Public IP Address Resource", + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddress", + "location": "westus", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "publicdnsprefix" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1730 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1730 new file mode 100644 index 0000000..033178b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1730 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.streamanalytics/streamanalytics-create/azuredeploy.json", + "/quickstarts/microsoft.streamanalytics/streamanalytics-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910693, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.streamanalytics/streamanalytics-create/azuredeploy.json", + "/quickstarts/microsoft.streamanalytics/streamanalytics-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1730", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.streamanalytics/streamingjobs" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1730", + "collection": "armtemplate", + "json": { + "contentVersion": "1.1.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "streamAnalyticsJobName": { + "type": "string", + "minLength": 3, + "maxLength": 63, + "metadata": { + "description": "Stream Analytics Job Name, can contain alphanumeric characters and hypen and must be 3-63 characters long" + }, + "value": "StreamAnalyticsJobName" + }, + "numberOfStreamingUnits": { + "type": "int", + "minValue": 1, + "maxValue": 48, + "allowedValues": [ + 1, + 3, + 6, + 12, + 18, + 24, + 30, + 36, + 42, + 48 + ], + "metadata": { + "description": "Number of Streaming Units" + }, + "value": 1 + } + }, + "resources": [ + { + "type": "Microsoft.StreamAnalytics/StreamingJobs", + "apiVersion": "2019-06-01", + "name": "StreamAnalyticsJobName", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "standard" + }, + "outputErrorPolicy": "stop", + "eventsOutOfOrderPolicy": "adjust", + "eventsOutOfOrderMaxDelayInSeconds": 0, + "eventsLateArrivalMaxDelayInSeconds": 5, + "dataLocale": "en-US", + "transformation": { + "name": "Transformation", + "properties": { + "streamingUnits": 1, + "query": "SELECT\r\n *\r\nINTO\r\n [YourOutputAlias]\r\nFROM\r\n [YourInputAlias]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1731 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1731 new file mode 100644 index 0000000..8da6e1f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1731 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/logicapproleassignments.json" + ], + "timestamp": 1642962910704, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/logicapproleassignments.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1731", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1731", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string" + } + }, + "variables": { + "contributor": "b24988ac-6180-42a0-ab88-20f7382dd24c", + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "roleAssignmentName": "[guid(parameters('logicAppName'), resourceGroup().id, variables('roleDefinitionId'))]" + }, + "resources": [ + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(parameters('logicAppName'), resourceGroup().id, variables('roleDefinitionId'))]", + "properties": { + "principalId": "[reference(resourceId('Microsoft.Logic/workflows', parameters('logicAppName')), '2019-05-01', 'full').identity.principalId]", + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1732 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1732 new file mode 100644 index 0000000..17ea241 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1732 @@ -0,0 +1,341 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/pausetemplate.json" + ], + "timestamp": 1642962910711, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/pausetemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1732", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1732", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "companyTla": { + "type": "string" + }, + "deploymentType": { + "type": "string" + }, + "LogicAppName": { + "type": "string" + }, + "Frequency": { + "type": "string" + }, + "TIME_ZONE": { + "type": "string" + }, + "PauseTime": { + "type": "string" + } + }, + "variables": { + "pauseTimeHour": "[split(substring(parameters('PauseTime'), 11, 5), ':')[0]]", + "recurrenceHours": [ + "[split(substring(parameters('PauseTime'), 11, 5), ':')[0]]" + ], + "recurrenceMinutes": [ + 0 + ], + "pauseTimeString": "[substring(parameters('PauseTime'), 0, 8)]", + "dailySchedule": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "weekdaySchedule": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "recurrenceSchedule": "[if(equals(parameters('Frequency'), 'Weekdays'), variables('weekdaySchedule'), variables('dailySchedule'))]", + "synapseWorkspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "synapseName": "[toLower(concat(parameters('companyTla'),parameters('deploymentType')))]", + "synapseSQLPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "getRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}?api-version=2019-06-01-preview", + "pauseRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}/pause?api-version=2019-06-01-preview", + "aqcRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['WorkspaceName']}/sqlpools/@{variables('RestAPIVariables')['SQLPoolName']}/dataWarehouseUserActivities/current?api-version=2019-06-01-preview", + "managementEndpoint": "[environment().resourceManager]" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "LogicAppName", + "location": "location", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Initialize_API_variables": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "RestAPIVariables", + "type": "Object", + "value": { + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "sqlPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "ResourceGroupName": "[resourceGroup().name]", + "SubscriptionId": "[subscription().subscriptionId]", + "TenantId": "[subscription().tenantId]", + "ScheduleTimeZone": "TIME_ZONE", + "PauseTime": "[substring(parameters('PauseTime'), 0, 8)]" + } + } + ] + } + }, + "Initialize_ActiveQueryCount_variable": { + "inputs": { + "variables": [ + { + "name": "ActiveQueryCount", + "type": "Integer", + "value": 1 + } + ] + }, + "runAfter": { + "Initialize_API_variables": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Get_Synapse_state": { + "type": "Http", + "inputs": { + "method": "GET", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + }, + "runAfter": { + "Initialize_ActiveQueryCount_variable": [ + "Succeeded" + ] + } + }, + "Parse_JSON": { + "inputs": { + "content": "@body('Get_Synapse_state')", + "schema": { + "properties": { + "id": { + "type": "string" + }, + "location": { + "type": "string" + }, + "name": { + "type": "string" + }, + "properties": { + "properties": { + "collation": { + "type": "string" + }, + "creationDate": { + "type": "string" + }, + "maxSizeBytes": { + "type": "integer" + }, + "provisioningState": { + "type": "string" + }, + "restorePointInTime": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "sku": { + "properties": { + "capacity": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "runAfter": { + "Get_Synapse_state": [ + "Succeeded" + ] + }, + "type": "ParseJson" + }, + "PauseSynapseIfOnline": { + "type": "If", + "expression": { + "and": [ + { + "equals": [ + "@body('Get_Synapse_state')['properties']['status']", + "Online" + ] + } + ] + }, + "actions": { + "Pause_SQL_Pool": { + "type": "Http", + "inputs": { + "method": "POST", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}/pause?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + }, + "runAfter": { + "Until_ZeroActiveQueries": [ + "Succeeded" + ] + } + }, + "Until_ZeroActiveQueries": { + "type": "Until", + "expression": "@equals(variables('ActiveQueryCount'), 0)", + "limit": { + "count": 3, + "timeout": "PT3H" + }, + "actions": { + "GetActiveQueryCount": { + "type": "Http", + "inputs": { + "method": "GET", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['WorkspaceName']}/sqlpools/@{variables('RestAPIVariables')['SQLPoolName']}/dataWarehouseUserActivities/current?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + } + }, + "Update_ActiveQueryCount_variable": { + "type": "SetVariable", + "inputs": { + "name": "ActiveQueryCount", + "value": "@body('GetActiveQueryCount')['properties']['activeQueriesCount']" + }, + "runAfter": { + "GetActiveQueryCount": [ + "Succeeded" + ] + } + }, + "Wait5minsIfActiveQuery": { + "type": "If", + "actions": { + "Wait_5mins": { + "inputs": { + "interval": { + "count": 5, + "unit": "Minute" + } + }, + "type": "Wait" + } + }, + "expression": { + "and": [ + { + "greater": [ + "@variables('ActiveQueryCount')", + 0 + ] + } + ] + }, + "runAfter": { + "Update_ActiveQueryCount_variable": [ + "Succeeded" + ] + } + } + } + } + }, + "runAfter": { + "Parse_JSON": [ + "Succeeded" + ] + } + } + }, + "triggers": { + "Recurrence": { + "type": "Recurrence", + "recurrence": { + "frequency": "Week", + "interval": 1, + "timeZone": "TIME_ZONE", + "startTime": "2019-01-01T00:00:00Z", + "schedule": { + "weekDays": "[if(equals(parameters('Frequency'), 'Weekdays'), variables('weekdaySchedule'), variables('dailySchedule'))]", + "hours": [ + "[split(substring(parameters('PauseTime'), 11, 5), ':')[0]]" + ], + "minutes": [ + 0 + ] + } + } + } + }, + "contentVersion": "1.0.0.0", + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1733 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1733 new file mode 100644 index 0000000..9148b95 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1733 @@ -0,0 +1,257 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/resumetemplate.json" + ], + "timestamp": 1642962910721, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/nestedtemplates/resumetemplate.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1733", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1733", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "companyTla": { + "type": "string" + }, + "deploymentType": { + "type": "string" + }, + "LogicAppName": { + "type": "string" + }, + "Frequency": { + "type": "string" + }, + "TIME_ZONE": { + "type": "string" + }, + "ResumeTime": { + "type": "string" + } + }, + "variables": { + "resumeTimeHour": "[split(substring(parameters('resumeTime'), 11, 5), ':')[0]]", + "recurrenceHours": [ + "[split(substring(parameters('resumeTime'), 11, 5), ':')[0]]" + ], + "recurrenceMinutes": [ + 0 + ], + "dailySchedule": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "weekdaySchedule": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" + ], + "recurrenceSchedule": "[if(equals(parameters('Frequency'), 'Weekdays'), variables('weekdaySchedule'), variables('dailySchedule'))]", + "resumeTimeString": "[substring(parameters('ResumeTime'), 0, 8)]", + "synapseWorkspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "synapseName": "[toLower(concat(parameters('companyTla'),parameters('deploymentType')))]", + "synapseSQLPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "managementEndpoint": "[environment().resourceManager]", + "getRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}?api-version=2019-06-01-preview", + "resumeRESTAPI": "subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}/resume?api-version=2019-06-01-preview" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "LogicAppName", + "location": "location", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "state": "Enabled", + "definition": { + "actions": { + "Initialize_API_variables": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "RestAPIVariables", + "type": "Object", + "value": { + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "sqlPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "ResourceGroupName": "[resourceGroup().name]", + "SubscriptionId": "[subscription().subscriptionId]", + "TenantId": "[subscription().tenantId]", + "ScheduleTimeZone": "TIME_ZONE", + "ResumeTime": "[substring(parameters('ResumeTime'), 0, 8)]" + } + } + ] + } + }, + "Get_Synapse_state": { + "type": "Http", + "inputs": { + "method": "GET", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + }, + "runAfter": { + "Initialize_API_Variables": [ + "Succeeded" + ] + } + }, + "Parse_JSON": { + "inputs": { + "content": "@body('Get_Synapse_state')", + "schema": { + "properties": { + "id": { + "type": "string" + }, + "location": { + "type": "string" + }, + "name": { + "type": "string" + }, + "properties": { + "properties": { + "collation": { + "type": "string" + }, + "creationDate": { + "type": "string" + }, + "maxSizeBytes": { + "type": "integer" + }, + "provisioningState": { + "type": "string" + }, + "restorePointInTime": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "sku": { + "properties": { + "capacity": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "runAfter": { + "Get_Synapse_state": [ + "Succeeded" + ] + }, + "type": "ParseJson" + }, + "ResumeSynapseIfOnline": { + "type": "If", + "expression": { + "and": [ + { + "equals": [ + "@body('Get_Synapse_state')['properties']['status']", + "Paused" + ] + } + ] + }, + "actions": { + "Resume_SQL_Pool": { + "type": "Http", + "inputs": { + "method": "POST", + "uri": "[environment().resourceManager]subscriptions/@{variables('RestAPIVariables')['SubscriptionId']}/resourceGroups/@{variables('RestAPIVariables')['ResourceGroupName']}/providers/Microsoft.Synapse/workspaces/@{variables('RestAPIVariables')['workspaceName']}/sqlPools/@{variables('RestAPIVariables')['sqlPoolName']}/resume?api-version=2019-06-01-preview", + "authentication": { + "type": "ManagedServiceIdentity" + } + } + } + }, + "runAfter": { + "Parse_JSON": [ + "Succeeded" + ] + } + } + }, + "triggers": { + "Recurrence": { + "type": "Recurrence", + "recurrence": { + "frequency": "Week", + "interval": 1, + "timeZone": "TIME_ZONE", + "startTime": "2019-01-01T00:00:00Z", + "schedule": { + "weekDays": "[if(equals(parameters('Frequency'), 'Weekdays'), variables('weekdaySchedule'), variables('dailySchedule'))]", + "hours": [ + "[split(substring(parameters('resumeTime'), 11, 5), ':')[0]]" + ], + "minutes": [ + 0 + ] + } + } + } + }, + "contentVersion": "1.0.0.0", + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1734 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1734 new file mode 100644 index 0000000..6a86f95 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1734 @@ -0,0 +1,583 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/azuredeploy.json", + "/quickstarts/microsoft.synapse/synapse-poc/azuredeploy.parameters.json" + ], + "timestamp": 1642962910729, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.synapse/synapse-poc/azuredeploy.json", + "/quickstarts/microsoft.synapse/synapse-poc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1734", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.authorization/roleassignments", + "microsoft.synapse/workspaces/sqlpools", + "microsoft.synapse/workspaces/bigdatapools", + "microsoft.synapse/workspaces", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1734", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSASToken": { + "type": "securestring", + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for your deployment." + } + }, + "companyTla": { + "type": "string", + "metadata": { + "description": "This is a Three Letter Acronym for your company name. 'CON' for Contoso for example." + }, + "value": "GEN-UNIQUE-3" + }, + "allowAllConnections": { + "type": "string", + "allowedValues": [ + "true", + "false" + ], + "defaultValue": "true" + }, + "sparkDeployment": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "true", + "false" + ], + "metadata": { + "description": "'True' deploys an Apache Spark pool as well as a SQL pool. 'False' does not deploy an Apache Spark pool." + } + }, + "sparkNodeSize": { + "type": "string", + "defaultValue": "Medium", + "allowedValues": [ + "Small", + "Medium", + "Large" + ], + "metadata": { + "description": "This parameter will determine the node size if SparkDeployment is true" + } + }, + "deploymentType": { + "type": "string", + "defaultValue": "poc", + "allowedValues": [ + "devtest", + "poc", + "prod", + "shared" + ], + "metadata": { + "description": "Specify deployment type: DevTest, POC, Prod, Shared. This will also be used in the naming convention." + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The username of the SQL Administrator" + }, + "value": "GEN-UNIQUE-6" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the SQL Administrator" + }, + "value": "GEN-PASSWORD" + }, + "sku": { + "type": "string", + "defaultValue": "DW100c", + "allowedValues": [ + "DW100c", + "DW200c", + "DW300c", + "DW400c", + "DW500c", + "DW1000c", + "DW1500c", + "DW2000c", + "DW2500c", + "DW3000c" + ], + "metadata": { + "description": "Select the SKU of the SQL pool." + } + }, + "metadataSync": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Choose whether you want to synchronise metadata." + } + }, + "Frequency": { + "type": "string", + "defaultValue": "Weekdays", + "allowedValues": [ + "Daily", + "Weekdays" + ], + "metadata": { + "description": "Choose whether to run schedule every day of the week, or only on weekdays" + } + }, + "TIME_ZONE": { + "type": "string", + "defaultValue": "Eastern Standard Time", + "allowedValues": [ + "Dateline Standard Time", + "Samoa Standard Time", + "Hawaiian Standard Time", + "Alaskan Standard Time", + "Pacific Standard Time", + "Mountain Standard Time", + "Mexico Standard Time 2", + "Central Standard Time", + "Canada Central Standard Time", + "Mexico Standard Time", + "Central America Standard Time", + "Eastern Standard Time", + "Atlantic Standard Time", + "Newfoundland and Labrador Standard Time", + "E. South America Standard Time", + "S.A. Eastern Standard Time", + "Greenland Standard Time", + "Mid-Atlantic Standard Time", + "Azores Standard Time", + "Cape Verde Standard Time", + "GMT Standard Time", + "Greenwich Standard Time", + "Central Europe Standard Time", + "Central European Standard Time", + "Romance Standard Time", + "W. Europe Standard Time", + "W. Central Africa Standard Time", + "E. Europe Standard Time", + "Egypt Standard Time", + "FLE Standard Time", + "GTB Standard Time", + "Israel Standard Time", + "South Africa Standard Time", + "Russian Standard Time", + "Arab Standard Time", + "E. Africa Standard Time", + "Arabic Standard Time", + "Iran Standard Time", + "Arabian Standard Time", + "Caucasus Standard Time", + "Transitional Islamic State of Afghanistan Standard Time", + "Ekaterinburg Standard Time", + "West Asia Standard Time", + "India Standard Time", + "Nepal Standard Time", + "Central Asia Standard Time", + "Sri Lanka Standard Time", + "Myanmar Standard Time", + "North Asia Standard Time", + "China Standard Time", + "Singapore Standard Time", + "Taipei Standard Time", + "North Asia East Standard Time", + "Korea Standard Time", + "Tokyo Standard Time", + "Yakutsk Standard Time", + "Tasmania Standard Time", + "Vladivostok Standard Time", + "West Pacific Standard Time", + "Central Pacific Standard Time", + "Fiji Islands Standard Time", + "New Zealand Standard Time", + "Tonga Standard Time" + ], + "metadata": { + "description": "Timezone for the schedule. Consult https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx for more information" + } + }, + "ResumeTime": { + "type": "string", + "defaultValue": "09:00 PM ( 21:00 )", + "allowedValues": [ + "12:00 AM ( 0:00 )", + "01:00 AM ( 1:00 )", + "02:00 AM ( 2:00 )", + "03:00 AM ( 3:00 )", + "04:00 AM ( 4:00 )", + "05:00 AM ( 5:00 )", + "06:00 AM ( 6:00 )", + "07:00 AM ( 7:00 )", + "08:00 AM ( 8:00 )", + "09:00 AM ( 9:00 )", + "10:00 AM ( 10:00 )", + "11:00 AM ( 11:00 )", + "12:00 PM ( 12:00 )", + "01:00 PM ( 13:00 )", + "02:00 PM ( 14:00 )", + "03:00 PM ( 15:00 )", + "04:00 PM ( 16:00 )", + "05:00 PM ( 17:00 )", + "06:00 PM ( 18:00 )", + "07:00 PM ( 19:00 )", + "08:00 PM ( 20:00 )", + "09:00 PM ( 21:00 )", + "10:00 PM ( 22:00 )", + "11:00 PM ( 23:00 )" + ], + "metadata": { + "description": "Time of Day when the data warehouse will be resumed" + } + }, + "PauseTime": { + "type": "string", + "defaultValue": "05:00 PM ( 17:00 )", + "allowedValues": [ + "12:00 AM ( 0:00 )", + "01:00 AM ( 1:00 )", + "02:00 AM ( 2:00 )", + "03:00 AM ( 3:00 )", + "04:00 AM ( 4:00 )", + "05:00 AM ( 5:00 )", + "06:00 AM ( 6:00 )", + "07:00 AM ( 7:00 )", + "08:00 AM ( 8:00 )", + "09:00 AM ( 9:00 )", + "10:00 AM ( 10:00 )", + "11:00 AM ( 11:00 )", + "12:00 PM ( 12:00 )", + "01:00 PM ( 13:00 )", + "02:00 PM ( 14:00 )", + "03:00 PM ( 15:00 )", + "04:00 PM ( 16:00 )", + "05:00 PM ( 17:00 )", + "06:00 PM ( 18:00 )", + "07:00 PM ( 19:00 )", + "08:00 PM ( 20:00 )", + "09:00 PM ( 21:00 )", + "10:00 PM ( 22:00 )", + "11:00 PM ( 23:00 )" + ], + "metadata": { + "description": "Time of day when the data warehouse will be paused" + } + } + }, + "variables": { + "synapseName": "[toLower(concat(parameters('companyTla'),parameters('deploymentType')))]", + "dlsName": "[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]", + "dlsFsName": "[toLower(concat(variables('dlsName'),'fs1'))]", + "sqlPoolName": "[toLower(concat(variables('workspaceName'),'p1'))]", + "workspaceName": "[toLower(concat(variables('synapseName'),'ws1'))]", + "sparkPoolName": "[toLower('synasp1')]", + "logicApps": [ + "SynapsePauseSchedule", + "SynapseResumeSchedule" + ] + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "logicAppPauseDeployment", + "properties": { + "mode": "Incremental", + "templatelink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/pausetemplate.json', parameters('_artifactsLocationSASToken')))]" + }, + "parameters": { + "logicAppName": { + "value": "(logicApps)[0]" + }, + "Frequency": { + "value": "Weekdays" + }, + "companyTla": { + "value": "GEN-UNIQUE-3" + }, + "deploymentType": { + "value": "poc" + }, + "TIME_ZONE": { + "value": "Eastern Standard Time" + }, + "PauseTime": { + "value": "05:00 PM ( 17:00 )" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "logicAppResumeDeployment", + "properties": { + "mode": "Incremental", + "templatelink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/resumetemplate.json', parameters('_artifactsLocationSASToken')))]" + }, + "parameters": { + "logicAppName": { + "value": "(logicApps)[1]" + }, + "Frequency": { + "value": "Weekdays" + }, + "companyTla": { + "value": "GEN-UNIQUE-3" + }, + "deploymentType": { + "value": "poc" + }, + "TIME_ZONE": { + "value": "Eastern Standard Time" + }, + "ResumeTime": { + "value": "09:00 PM ( 21:00 )" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "supportsHttpsTrafficOnly": true, + "isHnsEnabled": true + }, + "resources": [ + { + "name": "default/[toLower(concat(variables('dlsName'),'fs1'))]", + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "dependsOn": [ + "[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]" + ], + "properties": { + "publicAccess": "None" + } + } + ] + }, + { + "type": "Microsoft.Synapse/workspaces", + "apiVersion": "2019-06-01-preview", + "name": "[toLower(concat(variables('synapseName'),'ws1'))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]", + "[toLower(concat(variables('dlsName'),'fs1'))]" + ], + "properties": { + "defaultDataLakeStorage": { + "accountUrl": "[reference(variables('dlsName')).primaryEndpoints.dfs]", + "filesystem": "[toLower(concat(variables('dlsName'),'fs1'))]" + }, + "sqlAdministratorLogin": "GEN-UNIQUE-6", + "sqlAdministratorLoginPassword": "GEN-PASSWORD", + "managedVirtualNetwork": "default" + }, + "resources": [ + { + "condition": false, + "type": "firewallrules", + "apiVersion": "2019-06-01-preview", + "name": "allowAll", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "type": "firewallrules", + "apiVersion": "2019-06-01-preview", + "name": "AllowAllWindowsAzureIps", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "type": "managedIdentitySqlControlSettings", + "apiVersion": "2019-06-01-preview", + "name": "default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "grantSqlControlToManagedIdentity": { + "desiredState": "Enabled" + } + } + } + ] + }, + { + "type": "Microsoft.Synapse/workspaces/sqlPools", + "apiVersion": "2019-06-01-preview", + "name": "[toLower(concat(variables('synapseName'),'ws1'))]/[toLower(concat(variables('workspaceName'),'p1'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "DW100c" + }, + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "createMode": "Default", + "collation": "SQL_Latin1_General_CP1_CI_AS" + }, + "resources": [ + { + "condition": false, + "type": "metadataSync", + "apiVersion": "2019-06-01-preview", + "name": "config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[toLower(concat(variables('workspaceName'),'p1'))]" + ], + "properties": { + "Enabled": false + } + } + ] + }, + { + "condition": false, + "type": "Microsoft.Synapse/workspaces/bigDataPools", + "apiVersion": "2019-06-01-preview", + "name": "[toLower(concat(variables('synapseName'),'ws1'))]/[toLower('synasp1')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "nodeCount": 5, + "nodeSizeFamily": "MemoryOptimized", + "nodeSize": "Medium", + "autoScale": { + "enabled": true, + "minNodeCount": 3, + "maxNodeCount": 40 + }, + "autoPause": { + "enabled": true, + "delayInMinutes": 15 + }, + "sparkVersion": "2.4" + } + }, + { + "scope": "Microsoft.Storage/storageAccounts/[toLower(concat('dls',parameters('companyTla'),parameters('deploymentType')))]", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(uniqueString(variables('dlsName')))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[toLower(concat(variables('synapseName'),'ws1'))]" + ], + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe", + "principalId": "[reference(resourceId('Microsoft.Synapse/workspaces', variables('workspaceName')), '2019-06-01-preview', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "MSIRBACOnResourceGroup0", + "dependsOn": [ + "logicAppResumeDeployment", + "logicAppPauseDeployment" + ], + "properties": { + "mode": "Incremental", + "templatelink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/logicapproleassignments.json', parameters('_artifactsLocationSASToken')))]" + }, + "parameters": { + "logicAppName": { + "value": "(logicApps)[0]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "MSIRBACOnResourceGroup1", + "dependsOn": [ + "logicAppResumeDeployment", + "logicAppPauseDeployment" + ], + "properties": { + "mode": "Incremental", + "templatelink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/logicapproleassignments.json', parameters('_artifactsLocationSASToken')))]" + }, + "parameters": { + "logicAppName": { + "value": "(logicApps)[1]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1735 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1735 new file mode 100644 index 0000000..a140c68 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1735 @@ -0,0 +1,368 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-payg-with-iothub/azuredeploy.json", + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-payg-with-iothub/azuredeploy.parameters.json" + ], + "timestamp": 1642962910738, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-payg-with-iothub/azuredeploy.json", + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-payg-with-iothub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1735", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.timeseriesinsights/environments/accesspolicies", + "microsoft.devices/iothubs/eventhubendpoints/consumergroups", + "microsoft.devices/iothubs", + "microsoft.timeseriesinsights/environments", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1735", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "iotHubNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new IoT Hub should be provisioned." + } + }, + "iotHubResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "If you have an existing IotHub provide the name here. Defaults to the same resource group as the TSI environnment." + } + }, + "iotHubName": { + "type": "string", + "defaultValue": "[concat('tsi', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "The name of the source IoT hub." + }, + "value": "GEN-UNIQUE" + }, + "iotHubSku": { + "type": "string", + "defaultValue": "S1", + "allowedValues": [ + "F1", + "S1", + "S2", + "S3", + "B1", + "B2", + "B3" + ], + "metadata": { + "description": "The name of the IoT hub Sku." + } + }, + "iotHubSkuTier": { + "type": "string", + "defaultValue": "Standard", + "metadata": { + "description": "The billing tier for the IoT hub." + } + }, + "consumerGroupName": { + "type": "string", + "defaultValue": "tsiquickstart", + "metadata": { + "description": "The name of the consumer group that the Time Series Insights service will use to read the data from the event hub. NOTE: To avoid resource contention, this consumer group must be dedicated to the Time Series Insights service and not shared with other readers." + }, + "value": "GEN-UNIQUE" + }, + "environmentName": { + "type": "string", + "defaultValue": "tsiquickstart", + "maxLength": 90, + "metadata": { + "description": "Name of the environment. The name cannot include: '<', '>', '%', '&', ':', '\\', '?', '/' and any control characters. All other characters are allowed." + }, + "value": "GEN-UNIQUE" + }, + "environmentDisplayName": { + "type": "string", + "defaultValue": "tsiquickstart", + "maxLength": 90, + "metadata": { + "description": "An optional friendly name to show in tooling or user interfaces instead of the environment name." + } + }, + "environmentSkuName": { + "type": "string", + "defaultValue": "L1", + "allowedValues": [ + "L1" + ], + "metadata": { + "description": "The name of the sku. For more information, see https://azure.microsoft.com/pricing/details/time-series-insights/" + } + }, + "environmentKind": { + "type": "string", + "defaultValue": "LongTerm", + "allowedValues": [ + "LongTerm" + ], + "metadata": { + "description": "The Time Series Environment kind." + } + }, + "environmentSkuCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "The unit capacity of the Sku. For more information, see https://azure.microsoft.com/pricing/details/time-series-insights/" + } + }, + "environmentTimeSeriesIdProperties": { + "type": "array", + "maxLength": 3, + "metadata": { + "description": "Time Series ID acts as a partition key for your data and as a primary key for your time series model. It is important that you specify the appropriate Time Series Property ID during environment creation, since you can't change it later. Note that the Property ID is case sensitive. You can use 1-3 keys: one is required, but up to three can be used to create a composite." + }, + "value": [ + { + "name": "GEN-UNIQUE", + "type": "string" + } + ] + }, + "eventSourceName": { + "type": "string", + "defaultValue": "tsiquickstart", + "maxLength": 90, + "metadata": { + "description": "Name of the event source child resource. The name cannot include: '<', '>', '%', '&', ':', '\\', '?', '/' and any control characters. All other characters are allowed." + }, + "value": "GEN-UNIQUE" + }, + "eventSourceDisplayName": { + "type": "string", + "defaultValue": "tsiquickstart", + "maxLength": 90, + "metadata": { + "description": "An optional friendly name to show in tooling or user interfaces instead of the event source name." + } + }, + "eventSourceTimestampPropertyName": { + "type": "string", + "defaultValue": "", + "maxLength": 90, + "metadata": { + "description": "The event property that will be used as the event source's timestamp. If a value isn't specified for timestampPropertyName, or if null or empty-string is specified, the event creation time will be used." + } + }, + "eventSourceKeyName": { + "type": "string", + "defaultValue": "service", + "metadata": { + "description": "The name of the shared access key that the Time Series Insights service will use to connect to the event hub." + } + }, + "accessPolicyReaderObjectIds": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "A list of object ids of the users or applications in AAD that should have Reader access to the environment. The service principal objectId can be obtained by calling the Get-AzureRMADUser or the Get-AzureRMADServicePrincipal cmdlets. Creating an access policy for AAD groups is not yet supported." + } + }, + "accessPolicyContributorObjectIds": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "A list of object ids of the users or applications in AAD that should have Contributor access to the environment. The service principal objectId can be obtained by calling the Get-AzureRMADUser or the Get-AzureRMADServicePrincipal cmdlets. Creating an access policy for AAD groups is not yet supported." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account type for L1 TSI environments." + } + }, + "warmStoreDataRetention": { + "type": "string", + "defaultValue": "P7D", + "metadata": { + "description": "ISO duration between 7 and 31 days. Remove the 'warmStoreConfiguration' property from the envrionment to delete the warm store." + } + } + }, + "variables": { + "environmentTagsValue": { + "displayName": "tsiquickstart" + }, + "eventSourceTagsValue": { + "displayName": "tsiquickstart" + }, + "eventSourceResourceId": "[resourceGroup().name]/Microsoft.Devices/IotHubs/GEN-UNIQUE", + "storageAccountName": "[concat('tsi', uniquestring(resourceGroup().id))]" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Devices/IotHubs", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "tier": "Standard", + "capacity": 1 + } + }, + { + "condition": false, + "type": "Microsoft.Devices/iotHubs/eventhubEndpoints/ConsumerGroups", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE/events/GEN-UNIQUE", + "dependsOn": [ + "Microsoft.Devices/iothubs/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.TimeSeriesInsights/environments", + "apiVersion": "2018-08-15-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "LongTerm", + "tags": { + "displayName": "tsiquickstart" + }, + "properties": { + "storageConfiguration": { + "accountName": "[variables('storageAccountName')]", + "managementKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value]" + }, + "timeSeriesIdProperties": [ + { + "name": "GEN-UNIQUE", + "type": "string" + } + ], + "warmStoreConfiguration": { + "dataRetention": "P7D" + } + }, + "sku": { + "name": "L1", + "capacity": 1 + }, + "resources": [ + { + "type": "eventsources", + "apiVersion": "2018-08-15-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "Microsoft.IoTHub", + "dependsOn": [ + "Microsoft.TimeSeriesInsights/environments/GEN-UNIQUE", + "Microsoft.Devices/IotHubs/GEN-UNIQUE", + "Microsoft.Devices/IotHubs/eventHubEndpoints/ConsumerGroups/GEN-UNIQUE/events/GEN-UNIQUE" + ], + "tags": { + "displayName": "tsiquickstart" + }, + "properties": { + "eventSourceResourceId": "[resourceGroup().name]/Microsoft.Devices/IotHubs/GEN-UNIQUE", + "iotHubName": "GEN-UNIQUE", + "consumerGroupName": "GEN-UNIQUE", + "keyName": "service", + "sharedAccessKey": "[listkeys(resourceId('Microsoft.Devices/IoTHubs/IotHubKeys', parameters('iotHubName'), parameters('eventSourceKeyName')), '2020-03-01').primaryKey]", + "timestampPropertyName": "" + } + } + ] + }, + { + "condition": "[not(empty(parameters('accessPolicyReaderObjectIds')))]", + "type": "Microsoft.TimeSeriesInsights/environments/accesspolicies", + "apiVersion": "2018-08-15-preview", + "name": "GEN-UNIQUE/readerAccessPolicycopyIndex()", + "dependsOn": [ + "Microsoft.TimeSeriesInsights/environments/GEN-UNIQUE" + ], + "copy": { + "name": "accessPolicyReaderCopy", + "count": "[if(empty(parameters('accessPolicyReaderObjectIds')), 1, length(parameters('accessPolicyReaderObjectIds')))]" + }, + "properties": { + "principalObjectId": "accessPolicyReaderObjectIds)[copyIndex(", + "roles": [ + "Reader" + ] + } + }, + { + "condition": "[not(empty(parameters('accessPolicyContributorObjectIds')))]", + "type": "Microsoft.TimeSeriesInsights/environments/accesspolicies", + "apiVersion": "2018-08-15-preview", + "name": "GEN-UNIQUE/contributorAccessPolicycopyIndex()", + "dependsOn": [ + "Microsoft.TimeSeriesInsights/environments/GEN-UNIQUE" + ], + "copy": { + "name": "accessPolicyContributorCopy", + "count": "[if(empty(parameters('accessPolicyContributorObjectIds')), 1, length(parameters('accessPolicyContributorObjectIds')))]" + }, + "properties": { + "principalObjectId": "accessPolicyContributorObjectIds)[copyIndex(", + "roles": [ + "Contributor" + ] + } + }, + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2018-11-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + } + ], + "outputs": { + "dataAccessFQDN": { + "value": "[reference(resourceId('Microsoft.TimeSeriesInsights/environments', parameters('environmentName'))).dataAccessFQDN]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1736 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1736 new file mode 100644 index 0000000..ef78175 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1736 @@ -0,0 +1,333 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-with-eventhub/azuredeploy.json", + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-with-eventhub/azuredeploy.parameters.json" + ], + "timestamp": 1642962910747, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-with-eventhub/azuredeploy.json", + "/quickstarts/microsoft.timeseriesinsights/timeseriesinsights-environment-with-eventhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1736", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.timeseriesinsights/environments", + "microsoft.timeseriesinsights/environments/accesspolicies", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1736", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventHubNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new Event Hub is provisioned." + } + }, + "eventHubResourceGroup": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "If you have an existing Event Hub provide the Resource Group name here." + } + }, + "eventHubNamespaceName": { + "type": "string", + "defaultValue": "tsiquickstartns", + "metadata": { + "description": "The namespace of the source event hub." + }, + "value": "GEN-UNIQUE" + }, + "eventHubName": { + "type": "string", + "defaultValue": "tsiquickstarteh", + "metadata": { + "description": "The name of the source event hub." + }, + "value": "GEN-UNIQUE" + }, + "consumerGroupName": { + "type": "string", + "defaultValue": "tsiquickstart", + "metadata": { + "description": "The name of the consumer group that the Time Series Insights service will use to read the data from the event hub. NOTE: To avoid resource contention, this consumer group must be dedicated to the Time Series Insights service and not shared with other readers." + }, + "value": "GEN-UNIQUE" + }, + "environmentName": { + "type": "string", + "maxLength": 90, + "defaultValue": "tsiquickstart", + "metadata": { + "description": "Name of the environment. The name cannot include: '<', '>', '%', '&', ':', '\\', '?', '/' and any control characters. All other characters are allowed." + }, + "value": "GEN-UNIQUE" + }, + "environmentDisplayName": { + "type": "string", + "defaultValue": "tsiquickstart", + "maxLength": 90, + "metadata": { + "description": "An optional friendly name to show in tooling or user interfaces instead of the environment name." + } + }, + "environmentSkuName": { + "type": "string", + "defaultValue": "S1", + "allowedValues": [ + "S1", + "S2" + ], + "metadata": { + "description": "The name of the sku. For more information, see https://azure.microsoft.com/pricing/details/time-series-insights/" + } + }, + "environmentSkuCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "The unit capacity of the Sku. For more information, see https://azure.microsoft.com/pricing/details/time-series-insights/" + } + }, + "environmentDataRetentionTime": { + "type": "string", + "defaultValue": "P30D", + "metadata": { + "description": "The minimum timespan the environment\u2019s events will be available for query. The value must be specified in the ISO 8601 format, e.g. \"P30D\" for a retention policy of 30 days." + } + }, + "eventSourceName": { + "type": "string", + "defaultValue": "tsiquickstart", + "maxLength": 90, + "metadata": { + "description": "Name of the event source child resource. The name cannot include: '<', '>', '%', '&', ':', '\\', '?', '/' and any control characters. All other characters are allowed." + }, + "value": "GEN-UNIQUE" + }, + "eventSourceDisplayName": { + "type": "string", + "defaultValue": "tsiquickstart", + "maxLength": 90, + "metadata": { + "description": "An optional friendly name to show in tooling or user interfaces instead of the event source name." + } + }, + "eventSourceTimestampPropertyName": { + "type": "string", + "defaultValue": "", + "maxLength": 90, + "metadata": { + "description": "The event property that will be used as the event source's timestamp. If a value isn't specified for timestampPropertyName, or if null or empty-string is specified, the event creation time will be used." + } + }, + "eventSourceKeyName": { + "type": "string", + "defaultValue": "manage", + "metadata": { + "description": "The name of the shared access key that the Time Series Insights service will use to connect to the event hub." + } + }, + "accessPolicyReaderObjectIds": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "A list of object ids of the users or applications in AAD that should have Reader access to the environment. The service principal objectId can be obtained by calling the Get-AzureRMADUser or the Get-AzureRMADServicePrincipal cmdlets. Creating an access policy for AAD groups is not yet supported." + } + }, + "accessPolicyContributorObjectIds": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "A list of object ids of the users or applications in AAD that should have Contributor access to the environment. The service principal objectId can be obtained by calling the Get-AzureRMADUser or the Get-AzureRMADServicePrincipal cmdlets. Creating an access policy for AAD groups is not yet supported." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "environmentTagsOptions": [ + null, + { + "displayName": "tsiquickstart" + } + ], + "environmentTagsValue": "(environmentTagsOptions)[length(take(parameters(environmentDisplayName), 1))]", + "eventSourceTagsOptions": [ + null, + { + "displayName": "tsiquickstart" + } + ], + "eventSourceTagsValue": "(eventSourceTagsOptions)[length(take(parameters(eventSourceDisplayName), 1))]", + "eventSourceResourceId": "[resourceGroup().name]/Microsoft.EventHub/Namespaces/EventHubs/GEN-UNIQUE/GEN-UNIQUE" + }, + "resources": [ + { + "condition": false, + "apiVersion": "2021-01-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.EventHub/namespaces", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "isAutoInflateEnabled": true, + "maximumThroughputUnits": 20 + }, + "resources": [ + { + "condition": false, + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "eventhubs", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "messageRetentionInDays": 7, + "partitionCount": 4 + }, + "resources": [ + { + "condition": false, + "type": "authorizationRules", + "name": "manage", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "rights": [ + "Listen", + "Send", + "Manage" + ] + } + }, + { + "condition": false, + "apiVersion": "2017-04-01", + "name": "GEN-UNIQUE", + "type": "consumergroups", + "dependsOn": [ + "GEN-UNIQUE" + ] + } + ] + } + ] + }, + { + "type": "Microsoft.TimeSeriesInsights/environments", + "name": "GEN-UNIQUE", + "apiVersion": "2017-11-15", + "location": "[resourceGroup().location]", + "properties": { + "dataRetentionTime": "P30D" + }, + "sku": { + "name": "S1", + "capacity": 1 + }, + "tags": "(environmentTagsOptions)[length(take(parameters(environmentDisplayName), 1))]", + "resources": [ + { + "type": "eventsources", + "name": "GEN-UNIQUE", + "apiVersion": "2017-11-15", + "location": "[resourceGroup().location]", + "kind": "Microsoft.EventHub", + "dependsOn": [ + "Microsoft.TimeSeriesInsights/environments//GEN-UNIQUE", + "Microsoft.EventHub/Namespaces/GEN-UNIQUE", + "Microsoft.EventHub/Namespaces/EventHubs/ConsumerGroups/GEN-UNIQUE/GEN-UNIQUE/GEN-UNIQUE", + "Microsoft.EventHub/Namespaces/EventHubs/AuthorizationRules/GEN-UNIQUE/GEN-UNIQUE/manage" + ], + "properties": { + "eventSourceResourceId": "[resourceGroup().name]/Microsoft.EventHub/Namespaces/EventHubs/GEN-UNIQUE/GEN-UNIQUE", + "eventHubName": "GEN-UNIQUE", + "serviceBusNamespace": "GEN-UNIQUE", + "consumerGroupName": "GEN-UNIQUE", + "keyName": "manage", + "sharedAccessKey": "[listkeys(resourceId(parameters('eventHubResourceGroup'), 'Microsoft.EventHub/Namespaces/EventHubs/AuthorizationRules', parameters('eventHubNamespaceName'), parameters('eventHubName'), parameters('eventSourceKeyName')), '2021-01-01-preview').primaryKey]", + "timestampPropertyName": "" + }, + "tags": "(eventSourceTagsOptions)[length(take(parameters(eventSourceDisplayName), 1))]" + } + ] + }, + { + "condition": "[not(empty(parameters('accessPolicyReaderObjectIds')))]", + "type": "Microsoft.TimeSeriesInsights/environments/accessPolicies", + "name": "GEN-UNIQUE/readerAccessPolicycopyIndex()", + "copy": { + "name": "accessPolicyReaderCopy", + "count": "[if(empty(parameters('accessPolicyReaderObjectIds')), 1, length(parameters('accessPolicyReaderObjectIds')))]" + }, + "apiVersion": "2017-11-15", + "dependsOn": [ + "Microsoft.TimeSeriesInsights/environments//GEN-UNIQUE" + ], + "properties": { + "principalObjectId": "accessPolicyReaderObjectIds)[copyIndex(", + "roles": [ + "Reader" + ] + } + }, + { + "condition": "[not(empty(parameters('accessPolicyContributorObjectIds')))]", + "type": "Microsoft.TimeSeriesInsights/environments/accessPolicies", + "name": "GEN-UNIQUE/contributorAccessPolicycopyIndex()", + "copy": { + "name": "accessPolicyContributorCopy", + "count": "[if(empty(parameters('accessPolicyContributorObjectIds')), 1, length(parameters('accessPolicyContributorObjectIds')))]" + }, + "apiVersion": "2017-11-15", + "dependsOn": [ + "Microsoft.TimeSeriesInsights/environments//GEN-UNIQUE" + ], + "properties": { + "principalObjectId": "accessPolicyContributorObjectIds)[copyIndex(", + "roles": [ + "Contributor" + ] + } + } + ], + "outputs": { + "dataAccessFQDN": { + "value": "[reference(resourceId('Microsoft.TimeSeriesInsights/environments', parameters('environmentName'))).dataAccessFQDN]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1737 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1737 new file mode 100644 index 0000000..ba56f93 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1737 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/app-function/azuredeploy.json", + "/quickstarts/microsoft.web/app-function/azuredeploy.parameters.json" + ], + "timestamp": 1642962910755, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-function/azuredeploy.json", + "/quickstarts/microsoft.web/app-function/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1737", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1737", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "defaultValue": "[concat('FuncApp-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of you Web Site." + }, + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "String", + "defaultValue": "[concat('store', uniqueString(resourceGroup().id))]", + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "hostingPlanName": "[concat('hpn-', resourceGroup().name)]", + "storageAccountid": "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Web/sites", + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUE", + "kind": "functionapp,linux", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" + ], + "properties": { + "name": "GEN-UNIQUE", + "siteConfig": { + "appSettings": [ + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "python" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2019-06-01').keys[0].value)]" + } + ] + }, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "clientAffinityEnabled": false + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "kind": "linux", + "properties": { + "reserved": true + }, + "sku": { + "Tier": "Standard", + "Name": "S1" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1738 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1738 new file mode 100644 index 0000000..d35c353 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1738 @@ -0,0 +1,177 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/app-service-certificate-standard/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-certificate-standard/azuredeploy.parameters.json" + ], + "timestamp": 1642962910763, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-certificate-standard/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-certificate-standard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1738", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.certificateregistration/certificateorders/certificates", + "microsoft.web/certificates", + "microsoft.certificateregistration/certificateorders", + "microsoft.web/sites/domainownershipidentifiers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1738", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "certificateOrderName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Certificate" + }, + "value": "changeme" + }, + "productType": { + "type": "string", + "allowedValues": [ + "StandardDomainValidatedSsl", + "StandardDomainValidatedWildCardSsl" + ], + "defaultValue": "StandardDomainValidatedSsl", + "metadata": { + "description": "App Service Certificate type" + }, + "value": "StandardDomainValidatedSsl" + }, + "existingKeyVaultId": { + "type": "string", + "metadata": { + "description": "Existing Key Vault resource Id that already has access policies to allow Microsoft.CertificateRegistration and Microsoft.Web RPs to perform required operations on secret (Checkout README.md for more information)" + }, + "value": "/subscriptions/changeme/resourceGroups/changeme/providers/Microsoft.KeyVault/vaults/changeme" + }, + "existingAppName": { + "type": "string", + "metadata": { + "description": "Existing App name to use for verification and assignment. This App should have the domain assigned as a custom domain" + }, + "value": "changeme" + }, + "rootHostname": { + "type": "string", + "metadata": { + "description": "Hostname for App Service Certificate. The root and www subdomain should be assigned to the Web App as custom domains" + }, + "value": "changeme.com" + }, + "existingAppLocation": { + "type": "string", + "metadata": { + "description": "App location" + }, + "value": "changeme" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "distinguishedName": "CN=changeme.com", + "wwwHostname": "www.changeme.com" + }, + "resources": [ + { + "type": "Microsoft.CertificateRegistration/certificateOrders", + "name": "changeme", + "apiVersion": "2015-08-01", + "location": "global", + "properties": { + "DistinguishedName": "CN=changeme.com", + "ValidityInYears": 1, + "ProductType": "StandardDomainValidatedSsl" + } + }, + { + "type": "Microsoft.Web/sites/domainOwnershipIdentifiers", + "name": "changeme/changeme", + "apiVersion": "2016-08-01", + "location": "changeme", + "dependsOn": [ + "Microsoft.CertificateRegistration/certificateOrders/changeme" + ], + "properties": { + "id": "[reference(resourceId('Microsoft.CertificateRegistration/certificateOrders', parameters('certificateOrderName'))).DomainVerificationToken]" + } + }, + { + "type": "Microsoft.CertificateRegistration/certificateOrders/certificates", + "name": "changeme/changeme", + "apiVersion": "2015-08-01", + "location": "global", + "dependsOn": [ + "Microsoft.CertificateRegistration/certificateOrders/changeme", + "Microsoft.Web/sites/domainOwnershipIdentifiers/changeme/changeme" + ], + "properties": { + "keyVaultId": "/subscriptions/changeme/resourceGroups/changeme/providers/Microsoft.KeyVault/vaults/changeme", + "keyVaultSecretName": "changeme" + } + }, + { + "type": "Microsoft.Web/certificates", + "name": "changeme", + "apiVersion": "2015-08-01", + "location": "changeme", + "dependsOn": [ + "Microsoft.CertificateRegistration/certificateOrders/certificates/changeme/changeme" + ], + "properties": { + "keyVaultId": "/subscriptions/changeme/resourceGroups/changeme/providers/Microsoft.KeyVault/vaults/changeme", + "keyVaultSecretName": "changeme" + } + }, + { + "type": "Microsoft.Web/sites", + "name": "changeme", + "apiVersion": "2015-08-01", + "location": "changeme", + "dependsOn": [ + "Microsoft.Web/certificates/changeme" + ], + "properties": { + "name": "changeme", + "hostNameSslStates": [ + { + "name": "changeme.com", + "sslState": 1, + "thumbprint": "[reference(resourceId('Microsoft.CertificateRegistration/certificateOrders', parameters('certificateOrderName'))).SignedCertificate.Thumbprint]", + "toUpdate": true + }, + { + "name": "www.changeme.com", + "sslState": 1, + "thumbprint": "[reference(resourceId('Microsoft.CertificateRegistration/certificateOrders', parameters('certificateOrderName'))).SignedCertificate.Thumbprint]", + "toUpdate": true + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1739 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1739 new file mode 100644 index 0000000..bb29cd4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1739 @@ -0,0 +1,177 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/app-service-certificate-wildcard/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-certificate-wildcard/azuredeploy.parameters.json" + ], + "timestamp": 1642962910771, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-certificate-wildcard/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-certificate-wildcard/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1739", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.certificateregistration/certificateorders/certificates", + "microsoft.web/certificates", + "microsoft.certificateregistration/certificateorders", + "microsoft.domainregistration/domains/domainownershipidentifiers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1739", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "certificateOrderName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Certificate" + }, + "value": "changeme" + }, + "productType": { + "type": "string", + "allowedValues": [ + "StandardDomainValidatedSsl", + "StandardDomainValidatedWildCardSsl" + ], + "defaultValue": "StandardDomainValidatedWildCardSsl", + "metadata": { + "description": "App Service Certificate type" + }, + "value": "StandardDomainValidatedWildCardSsl" + }, + "existingKeyVaultId": { + "type": "string", + "metadata": { + "description": "Existing Key Vault resource Id that already has access policies to allow Microsoft.CertificateRegistration and Microsoft.Web RPs to perform required operations on secret (Checkout README.md for more information)" + }, + "value": "/subscriptions/changeme/resourceGroups/changeme/providers/Microsoft.KeyVault/vaults/changeme" + }, + "existingAppName": { + "type": "string", + "metadata": { + "description": "Existing App name to use for creating SSL bindings. This App should have the domain assigned as a custom domain" + }, + "value": "changeme" + }, + "rootHostname": { + "type": "string", + "metadata": { + "description": "Hostname for App Service Certificate. The root and www subdomain should be assigned to the Web App as custom domains" + }, + "value": "changeme.com" + }, + "existingAppLocation": { + "type": "string", + "metadata": { + "description": "App location" + }, + "value": "changeme" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "distinguishedName": "CN=*.changeme.com", + "wwwHostname": "www.changeme.com" + }, + "resources": [ + { + "type": "Microsoft.CertificateRegistration/certificateOrders", + "name": "changeme", + "apiVersion": "2015-08-01", + "location": "global", + "properties": { + "DistinguishedName": "CN=*.changeme.com", + "ValidityInYears": 1, + "ProductType": "StandardDomainValidatedWildCardSsl" + } + }, + { + "type": "Microsoft.DomainRegistration/domains/domainOwnershipIdentifiers", + "name": "changeme.com/changeme", + "apiVersion": "2015-04-01", + "location": "global", + "dependsOn": [ + "Microsoft.CertificateRegistration/certificateOrders/changeme" + ], + "properties": { + "ownershipId": "[reference(resourceId('Microsoft.CertificateRegistration/certificateOrders', parameters('certificateOrderName'))).DomainVerificationToken]" + } + }, + { + "type": "Microsoft.CertificateRegistration/certificateOrders/certificates", + "name": "changeme/changeme", + "apiVersion": "2015-08-01", + "location": "global", + "dependsOn": [ + "Microsoft.CertificateRegistration/certificateOrders/changeme", + "Microsoft.DomainRegistration/domains/domainOwnershipIdentifiers/changeme.com/changeme" + ], + "properties": { + "keyVaultId": "/subscriptions/changeme/resourceGroups/changeme/providers/Microsoft.KeyVault/vaults/changeme", + "keyVaultSecretName": "changeme" + } + }, + { + "type": "Microsoft.Web/certificates", + "name": "changeme", + "apiVersion": "2015-08-01", + "location": "changeme", + "dependsOn": [ + "Microsoft.CertificateRegistration/certificateOrders/certificates/changeme/changeme" + ], + "properties": { + "keyVaultId": "/subscriptions/changeme/resourceGroups/changeme/providers/Microsoft.KeyVault/vaults/changeme", + "keyVaultSecretName": "changeme" + } + }, + { + "type": "Microsoft.Web/sites", + "name": "changeme", + "apiVersion": "2015-08-01", + "location": "changeme", + "dependsOn": [ + "Microsoft.Web/certificates/changeme" + ], + "properties": { + "name": "changeme", + "hostNameSslStates": [ + { + "name": "changeme.com", + "sslState": 1, + "thumbprint": "[reference(resourceId('Microsoft.CertificateRegistration/certificateOrders', parameters('certificateOrderName'))).SignedCertificate.Thumbprint]", + "toUpdate": true + }, + { + "name": "www.changeme.com", + "sslState": 1, + "thumbprint": "[reference(resourceId('Microsoft.CertificateRegistration/certificateOrders', parameters('certificateOrderName'))).SignedCertificate.Thumbprint]", + "toUpdate": true + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT174 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT174 new file mode 100644 index 0000000..d1f909d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT174 @@ -0,0 +1,163 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/sqldatawarehouse.json" + ], + "timestamp": 1642962889463, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/sqldatawarehouse.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT174", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT174", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "South Central US", + "metadata": { + "description": "The location where all azure resources will be deployed." + } + }, + "sqlDWServerName": { + "type": "string", + "metadata": { + "description": "SQL Datawarehouse Server Name, should be a unique name" + } + }, + "sqlDWDBAdminName": { + "type": "string", + "metadata": { + "description": "SQL Datawarehouse Admin Name" + } + }, + "sqlDWAdminPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Datawarehouse Admin password. Ex: Testadmin@123" + } + }, + "sqlDWDBName": { + "type": "string", + "defaultValue": "testdwdb", + "metadata": { + "description": "SQL Datawarehouse Database Name" + } + }, + "serviceLevelObjective": { + "type": "string", + "defaultValue": "DW100" + }, + "startIpAddress": { + "type": "string", + "defaultValue": "0.0.0.0" + }, + "endIpAddress": { + "type": "string", + "defaultValue": "255.255.255.255" + }, + "sql-api-version": { + "type": "string", + "defaultValue": "2014-04-01" + }, + "sqldb-api-version": { + "type": "string", + "defaultValue": "2015-05-01-preview" + }, + "sqlfirewallrules-api-version": { + "type": "string", + "defaultValue": "2014-04-01" + }, + "collation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS" + }, + "maxSizeBytes": { + "type": "string", + "defaultValue": "10995116277760" + }, + "version": { + "type": "string", + "defaultValue": "12.0" + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "name": "sqlDWServerName", + "type": "Microsoft.Sql/servers", + "location": "South Central US", + "apiVersion": "2014-04-01", + "tags": { + "displayName": "VM Storage Accounts", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "administratorLogin": "sqlDWDBAdminName", + "administratorLoginPassword": "sqlDWAdminPassword", + "version": "12.0" + }, + "resources": [ + { + "name": "testdwdb", + "type": "databases", + "location": "South Central US", + "apiVersion": "2015-05-01-preview", + "tags": { + "displayName": "VM Storage Accounts", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "dependsOn": [ + "Microsoft.Sql/servers/sqlDWServerName" + ], + "properties": { + "edition": "DataWarehouse", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "10995116277760", + "serviceLevelObjective": "DW100" + } + }, + { + "apiVersion": "2014-04-01", + "dependsOn": [ + "Microsoft.Sql/servers/sqlDWServerName" + ], + "location": "South Central US", + "name": "AllowAllAzureIps", + "properties": { + "endIpAddress": "255.255.255.255", + "startIpAddress": "0.0.0.0" + }, + "type": "firewallrules" + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1740 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1740 new file mode 100644 index 0000000..34e2a6d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1740 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/app-service-docs-linux/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-docs-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962910780, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-docs-linux/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-docs-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1740", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1740", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('webApp-', uniqueString(resourceGroup().id))]", + "minLength": 2, + "metadata": { + "description": "Web app name." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sku": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "The SKU of App Service Plan." + } + }, + "linuxFxVersion": { + "type": "string", + "defaultValue": "DOTNETCORE|3.0", + "metadata": { + "description": "The Runtime stack of current web app" + } + }, + "repoUrl": { + "type": "string", + "defaultValue": " ", + "metadata": { + "description": "Optional Git Repo URL" + } + } + }, + "variables": { + "appServicePlanPortalName": "AppServicePlan-GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "AppServicePlan-GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1" + }, + "kind": "linux", + "properties": { + "reserved": true + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE" + ], + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE", + "siteConfig": { + "linuxFxVersion": "DOTNETCORE|3.0" + }, + "resources": [ + { + "condition": "[contains(parameters('repoUrl'),'http')]", + "type": "sourcecontrols", + "apiVersion": "2020-06-01", + "name": "web", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "repoUrl": " ", + "branch": "master", + "isManualIntegration": true + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1741 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1741 new file mode 100644 index 0000000..75fb633 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1741 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/app-service-docs-windows/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-docs-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962910789, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-docs-windows/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-docs-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1741", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1741", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('webApp-', uniqueString(resourceGroup().id))]", + "minLength": 2, + "metadata": { + "description": "Web app name." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sku": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "The SKU of App Service Plan." + } + }, + "language": { + "type": "string", + "defaultValue": ".net", + "allowedValues": [ + ".net", + "php", + "node", + "html" + ], + "metadata": { + "description": "The language stack of the app." + } + }, + "helloWorld": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "true = deploy a sample Hello World app." + } + }, + "repoUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional Git Repo URL" + } + } + }, + "variables": { + "appServicePlanPortalName": "AppServicePlan-GEN-UNIQUE", + "gitRepoReference": { + ".net": "https://github.com/Azure-Samples/app-service-web-dotnet-get-started", + "node": "https://github.com/Azure-Samples/nodejs-docs-hello-world", + "php": "https://github.com/Azure-Samples/php-docs-hello-world", + "html": "https://github.com/Azure-Samples/html-docs-hello-world" + }, + "gitRepoUrl": "[if(bool(parameters('helloWorld')), variables('gitRepoReference')[toLower(parameters('language'))], parameters('repoUrl'))]", + "configReference": { + ".net": { + "comments": ".Net app. No additional configuration needed." + }, + "html": { + "comments": "HTML app. No additional configuration needed." + }, + "php": { + "phpVersion": "7.4" + }, + "node": { + "appSettings": [ + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "12.15.0" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "AppServicePlan-GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE" + ], + "properties": { + "siteConfig": "(configReference)[parameters(language)]", + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE" + }, + "resources": [ + { + "condition": "[contains(variables('gitRepoUrl'),'http')]", + "type": "sourcecontrols", + "apiVersion": "2020-06-01", + "name": "web", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "repoUrl": "[if(bool(parameters('helloWorld')), variables('gitRepoReference')[toLower(parameters('language'))], parameters('repoUrl'))]", + "branch": "master", + "isManualIntegration": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1742 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1742 new file mode 100644 index 0000000..efb105c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1742 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910799, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1742", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/hostnamebindings", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1742", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "domainName": { + "type": "string", + "metadata": { + "description": "Type your domain name. Ex.: contoso.com" + }, + "value": "GEN-CUSTOM-FQDN-NAME" + }, + "websiteName": { + "type": "string", + "metadata": { + "description": "Web App name that will host the Custom Domain. This name should be unique in Azure." + }, + "value": "GEN-CUSTOM-WEBAPP-NAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which the resources should be deployed." + } + } + }, + "variables": { + "sku": "s1", + "workerSize": "0", + "AppServicePlanName": "[format('plan-{0}', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "name": "[format('plan-{0}', uniqueString(resourceGroup().id))]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "sku": { + "name": "s1", + "capacity": "0" + }, + "properties": { + "name": "[format('plan-{0}', uniqueString(resourceGroup().id))]" + } + }, + { + "apiVersion": "2020-12-01", + "name": "GEN-CUSTOM-WEBAPP-NAME", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/[format('plan-{0}', uniqueString(resourceGroup().id))]" + ], + "properties": { + "serverFarmId": "[format('plan-{0}', uniqueString(resourceGroup().id))]" + } + }, + { + "apiVersion": "2020-12-01", + "name": "GEN-CUSTOM-WEBAPP-NAME/GEN-CUSTOM-FQDN-NAME", + "type": "Microsoft.Web/sites/hostNameBindings", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/[format('plan-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Web/sites/GEN-CUSTOM-WEBAPP-NAME" + ], + "properties": { + "azureResourceName": "GEN-CUSTOM-WEBAPP-NAME", + "azureResourceType": "Website", + "customHostNameDnsRecordType": "A", + "hostNameType": "Managed", + "siteName": "GEN-CUSTOM-WEBAPP-NAME" + } + } + ], + "outputs": { + "domainName": { + "type": "string", + "value": "[parameters('domainName')]" + }, + "websiteName": { + "type": "string", + "value": "[parameters('websiteName')]" + }, + "rgName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "AppServicePlanName": { + "type": "string", + "value": "[variables('AppServicePlanName')]" + }, + "manualSteps": { + "type": "object", + "value": { + "comment1": "An 'A' record named '@' with the ipAddress must be created manually.", + "ipAddress": "[reference(parameters('websiteName'),'2020-12-01', 'Full').properties.inboundIpAddress]", + "comment2": "A 'TXT' record named 'ausid' with the value of the customDomainVerificationId must be manually created.", + "customDomainVerificationId": "[reference(parameters('websiteName'),'2020-12-01', 'Full').properties.customDomainVerificationId]" + } + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1743 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1743 new file mode 100644 index 0000000..246fea3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1743 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/azuredeploy.parameters.json" + ], + "timestamp": 1642962910809, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-managed-certificate-apex/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1743", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1743", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "SubjectName": { + "type": "string", + "metadata": { + "description": "Subject name of the certificate." + }, + "value": "GET-PREREQ-domainName" + }, + "AppServicePlanName": { + "type": "string", + "metadata": { + "description": "App Service Plan Name where certificate will be imported to." + }, + "value": "GET-PREREQ-AppServicePlanName" + }, + "Location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of app service plan." + } + }, + "resourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resourceGroup." + } + }, + "resourceGroup": { + "value": "demo" + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "name": "GET-PREREQ-domainName-GET-PREREQ-AppServicePlanName", + "type": "Microsoft.Web/certificates", + "properties": { + "serverFarmId": "[resourceGroup().name]/Microsoft.Web/serverfarms//GET-PREREQ-AppServicePlanName", + "canonicalName": "GET-PREREQ-domainName", + "domainValidationMethod": "http-token" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1744 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1744 new file mode 100644 index 0000000..8f3e8ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1744 @@ -0,0 +1,130 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/app-service-regional-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-regional-vnet-integration/azuredeploy.parameters.json" + ], + "timestamp": 1642962910817, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/app-service-regional-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/app-service-regional-vnet-integration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1744", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1744", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.63.48766", + "templateHash": "7153102444456594205" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which all resources should be deployed." + } + }, + "appName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "The name of the app to create." + } + } + }, + "functions": [], + "variables": { + "appServicePlanName": "[format('{0}{1}', parameters('appName'), uniqueString(subscription().subscriptionId))]", + "vnetName": "[format('{0}vnet', parameters('appName'))]", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "[format('{0}sn', parameters('appName'))]", + "subnetAddressPrefix": "10.0.0.0/24", + "appServicePlanSku": "S1" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[format('{0}{1}', parameters('appName'), uniqueString(subscription().subscriptionId))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1" + }, + "kind": "app" + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "[format('{0}vnet', parameters('appName'))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[format('{0}sn', parameters('appName'))]", + "properties": { + "addressPrefix": "10.0.0.0/24", + "delegations": [ + { + "name": "delegation", + "properties": { + "serviceName": "Microsoft.Web/serverFarms" + } + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2021-01-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "kind": "app", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/[format('{0}{1}', parameters('appName'), uniqueString(subscription().subscriptionId))]", + "virtualNetworkSubnetId": "[reference(resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))).subnets[0].id]", + "httpsOnly": true, + "siteConfig": { + "vnetRouteAllEnabled": true, + "http20Enabled": true + } + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/[format('{0}{1}', parameters('appName'), uniqueString(subscription().subscriptionId))]", + "Microsoft.Network/virtualNetworks/[format('{0}vnet', parameters('appName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1745 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1745 new file mode 100644 index 0000000..c781b99 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1745 @@ -0,0 +1,818 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/asev2-appservice-sql-vpngw/azuredeploy.json", + "/quickstarts/microsoft.web/asev2-appservice-sql-vpngw/azuredeploy.parameters.json" + ], + "timestamp": 1642962910827, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/asev2-appservice-sql-vpngw/azuredeploy.json", + "/quickstarts/microsoft.web/asev2-appservice-sql-vpngw/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1745", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.network/networkinterfaces", + "microsoft.network/publicipaddresses", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.network/virtualnetworkgateways", + "microsoft.sql/servers", + "microsoft.web/sites/config", + "microsoft.compute/virtualmachines", + "microsoft.web/hostingenvironments", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts", + "microsoft.insights/components", + "microsoft.keyvault/vaults", + "microsoft.web/serverfarms", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1745", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "stackName": { + "type": "String", + "metadata": { + "description": "A generic name for all your resources created with this ARM Template." + }, + "value": "GEN-UNIQUE" + }, + "aadUserObjectId": { + "type": "string", + "metadata": { + "description": "Object Id of your AAD user or whoever needs access to resources such as KeyVault." + }, + "value": "GEN-GUID" + }, + "aadUsername": { + "type": "string", + "metadata": { + "description": "Name of your AAD user or whoever needs access to resources such as Azure SQL." + }, + "value": "GEN-GUID" + }, + "loginUser": { + "type": "string", + "metadata": { + "description": "The administrator password of the VM and SQL Server." + } + }, + "p2sRootCert": { + "type": "string", + "metadata": { + "description": "Certificate used for the P2S VPN." + }, + "value": "GEN-SELFSIGNED-CERT-CERDATA" + }, + "loginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the VM and SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "privateDbDnsZoneName": { + "type": "string", + "defaultValue": "[concat('privatelink', environment().suffixes.sqlServerHostname)]", + "metadata": { + "description": "Private DNS zone name for database." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all the resources created." + } + }, + "workerPool": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of worker pool for App Service." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_B2ms", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "frontendSubnet": { + "type": "string", + "defaultValue": "frontend", + "metadata": { + "description": "Name of frontend subnet." + } + }, + "backendSubnet": { + "type": "string", + "defaultValue": "backend", + "metadata": { + "description": "Name of backend subnet." + } + }, + "gatewaySubnet": { + "type": "string", + "defaultValue": "GatewaySubnet", + "metadata": { + "description": "Name of gateway subnet." + } + }, + "LoginUser": { + "value": "GEN-GUID" + } + }, + "variables": { + "location": "[resourceGroup().location]", + "vnetName": "GEN-UNIQUE-vnet", + "databaseName": "appdb", + "databaseEdition": "Basic", + "databaseCollation": "SQL_Latin1_General_CP1_CI_AS", + "databaseServiceObjectiveName": "Basic", + "workerPool": 1, + "numberOfWorkersFromWorkerPool": 1, + "nicName": "GEN-UNIQUEvmnic", + "privateDbEndpointName": "GEN-UNIQUEpvenp", + "privateDbDnsZoneName": "[concat('privatelink', environment().suffixes.sqlServerHostname)]", + "privateDbDnsGroupName": "GEN-UNIQUEpvenp/mydnsgroupname", + "privateHost1DnsZoneName": "(parameters(stackName),.appserviceenvironment.net)", + "gatewayPublicIPName": "GEN-UNIQUEgwpip", + "gatewayName": "GEN-UNIQUEgw", + "vpnClientAddressPoolPrefix": "172.15.0.0/24", + "vmName": "[substring(parameters('stackName'),0,10)]", + "loginUser": "[substring(parameters('loginUser'),0,8)]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "172.16.0.0/16" + ] + }, + "enableDdosProtection": false, + "enableVmProtection": false, + "subnets": [ + { + "name": "frontend", + "properties": { + "addressPrefix": "172.16.0.0/24", + "serviceEndpoints": [ + { + "service": "Microsoft.Sql" + } + ], + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + } + }, + { + "name": "backend", + "properties": { + "addressPrefix": "172.16.1.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "172.16.255.0/27", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-vnet/frontend", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "addressPrefix": "172.16.0.0/24", + "serviceEndpoints": [ + { + "service": "Microsoft.Sql" + } + ], + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-vnet/backend", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "addressPrefix": "172.16.1.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-vnet/GatewaySubnet", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "addressPrefix": "172.16.255.0/27", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Disabled" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "GEN-UNIQUE", + "kind": "ASEV2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/frontend" + ], + "properties": { + "internalLoadBalancingMode": 3, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/frontend" + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet", + "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/frontend" + ], + "tags": { + "displayName": "SqlServer" + }, + "properties": { + "administratorLogin": "[substring(parameters('loginUser'),0,8)]", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0", + "publicNetworkAccess": "Enabled" + }, + "resources": [ + { + "name": "appdb", + "type": "databases", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Database" + }, + "sku": { + "name": "Basic", + "tier": "Basic", + "capacity": 5 + }, + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "requestedServiceObjectiveName": "Basic" + }, + "resources": [ + { + "comments": "Transparent Data Encryption", + "name": "current", + "type": "transparentDataEncryption", + "apiVersion": "2017-03-01-preview", + "dependsOn": [ + "appdb" + ], + "properties": { + "status": "Enabled" + } + } + ] + }, + { + "name": "AllowAllMicrosoftAzureIps", + "type": "firewallrules", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + }, + { + "type": "Microsoft.Sql/servers/virtualNetworkRules", + "apiVersion": "2020-08-01-preview", + "name": "GEN-UNIQUE/allow-frontend", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "virtualNetworkSubnetId": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/frontend", + "ignoreMissingVnetServiceEndpoint": false + } + }, + { + "type": "administrators", + "name": "activeDirectory", + "apiVersion": "2020-08-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE" + ], + "properties": { + "administratorType": "ActiveDirectory", + "login": "GEN-GUID", + "sid": "GEN-GUID", + "tenantId": "[subscription().tenantId]" + } + } + ] + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "enableRbacAuthorization": false, + "enableSoftDelete": false, + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "tenantId": "[subscription().tenantId]", + "objectId": "GEN-GUID", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ] + } + }, + { + "tenantId": "[reference(resourceId('Microsoft.Web/sites', parameters('stackName')), '2018-02-01', 'Full').identity.tenantId]", + "objectId": "[reference(resourceId('Microsoft.Web/sites', parameters('stackName')), '2018-02-01', 'Full').identity.principalId]", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ] + } + } + ], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/hostingEnvironments/GEN-UNIQUE" + ], + "properties": { + "name": "GEN-UNIQUE", + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/GEN-UNIQUE" + } + }, + "sku": { + "name": "I1", + "tier": "Isolated", + "size": "I1", + "family": "I", + "capacity": 1 + } + }, + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Web/serverFarms//GEN-UNIQUE", + "Microsoft.Insights/components//GEN-UNIQUE" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverFarms/GEN-UNIQUE", + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/GEN-UNIQUE" + }, + "siteConfig": { + "appSettings": [ + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components/', parameters('stackName')), '2018-05-01-preview').InstrumentationKey]" + }, + { + "name": "ApplicationInsightsAgent_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "XDT_MicrosoftApplicationInsights_Mode", + "value": "default" + }, + { + "name": "DiagnosticServices_EXTENSION_VERSION", + "value": "disabled" + }, + { + "name": "APPINSIGHTS_PROFILERFEATURE_VERSION", + "value": "disabled" + }, + { + "name": "APPINSIGHTS_SNAPSHOTFEATURE_VERSION", + "value": "disabled" + }, + { + "name": "InstrumentationEngine_EXTENSION_VERSION", + "value": "disabled" + }, + { + "name": "SnapshotDebugger_EXTENSION_VERSION", + "value": "disabled" + }, + { + "name": "XDT_MicrosoftApplicationInsights_BaseExtensions", + "value": "disabled" + } + ] + } + } + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE/web", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "netFrameworkVersion": "v5.0" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUEvmnic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "GEN-UNIQUEvmip", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/backend" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "[substring(parameters('stackName'),0,10)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUEvmnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B2ms" + }, + "osProfile": { + "computerName": "[substring(parameters('stackName'),0,10)]vm", + "adminUsername": "[substring(parameters('loginUser'),0,8)]", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter-Core-smalldisk", + "version": "latest" + }, + "osDisk": { + "name": "(parameters(stackName),vmdisk)", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUEvmnic" + } + ] + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[substring(parameters('stackName'),0,10)]/Antimalware", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//[substring(parameters('stackName'),0,10)]" + ], + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "IaaSAntimalware", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "AntimalwareEnabled": "true", + "Exclusions": { + "Extensions": ".log;.ldf", + "Paths": "D:\\IISlogs;D:\\DatabaseLogs", + "Processes": "mssence.svc" + }, + "RealtimeProtectionEnabled": "true", + "ScheduledScanSettings": { + "isEnabled": "true", + "scanType": "Quick", + "day": 7, + "time": 120 + } + } + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2019-04-01", + "name": "GEN-UNIQUEpvenp", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet", + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/backend" + }, + "privateLinkServiceConnections": [ + { + "name": "GEN-UNIQUEpvenp", + "properties": { + "privateLinkServiceId": "Microsoft.Sql/servers/GEN-UNIQUE", + "groupIds": [ + "sqlServer" + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[variables('privateDbDnsZoneName')]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('privateDbDnsZoneName'), '/', variables('privateDbDnsZoneName'), '-link')]", + "location": "global", + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDbDnsZoneName'))]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUEpvenp/mydnsgroupname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDbDnsZoneName'))]", + "[variables('privateDbEndpointName')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config1", + "properties": { + "privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDbDnsZoneName'))]" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUEgwpip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "GEN-UNIQUEgw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUEgwpip", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-vnet" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUEgwpip" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": "false", + "vpnClientConfiguration": { + "vpnClientAddressPool": { + "addressPrefixes": [ + "172.15.0.0/24" + ] + }, + "vpnClientRootCertificates": [ + { + "name": "P2SRootCert", + "properties": { + "publicCertData": "GEN-SELFSIGNED-CERT-CERDATA" + } + } + ] + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2020-08-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "minimumTlsVersion": "TLS1_2", + "allowBlobPublicAccess": true, + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "file": { + "keyType": "Account", + "enabled": true + }, + "blob": { + "keyType": "Account", + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Hot" + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "name": "default/scripts", + "dependsOn": [ + "GEN-UNIQUE" + ] + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "(parameters(stackName),.appserviceenvironment.net)", + "location": "global", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "(parameters(stackName),.appserviceenvironment.net)/(parameters(stackName),.appserviceenvironment.net)-link", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/(parameters(stackName),.appserviceenvironment.net)", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + } + } + }, + { + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE", + "type": "microsoft.insights/components", + "location": "[resourceGroup().location]", + "properties": { + "ApplicationId": "GEN-UNIQUE" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1746 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1746 new file mode 100644 index 0000000..6abd064 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1746 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910835, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1746", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1746", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vnetName": "vnet01", + "subnetName": "subnet01" + }, + "resources": [ + { + "name": "vnet01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet01", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "[variables('vnetName')]" + }, + "subnetName": { + "type": "string", + "value": "[variables('subnetName')]" + }, + "resourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1747 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1747 new file mode 100644 index 0000000..d5ca95c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1747 @@ -0,0 +1,214 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/azuredeploy.json", + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/azuredeploy.parameters.json" + ], + "timestamp": 1642962910842, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/azuredeploy.json", + "/quickstarts/microsoft.web/asev2-ilb-with-web-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1747", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1747", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "1558977717465604389" + } + }, + "parameters": { + "aseName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment" + }, + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the vnet" + }, + "value": "GET-PREREQ-vnetName" + }, + "vnetResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name that contains the vnet" + }, + "value": "GET-PREREQ-resourceGroupName" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + }, + "value": "GET-PREREQ-subnetName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources" + } + }, + "internalLoadBalancingMode": { + "type": "string", + "defaultValue": "Web, Publishing", + "allowedValues": [ + "None", + "Publishing", + "Web", + "Web, Publishing" + ], + "metadata": { + "description": "None: public VIP only. Publishing: only ports 80/443 are mapped to ILB VIP. Web: only FTP ports are mapped to ILB VIP: Web,Publishing: ports 80/443 and FTP ports are mapped to an ILB VIP." + } + }, + "dnsSuffix": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Used when deploying an ILB enabled ASE. Set this to the root domain associated with the ASE. For example: contoso.com" + } + }, + "siteName": { + "type": "string", + "metadata": { + "description": "The name of the web app that will be created." + }, + "value": "GEN-UNIQUE" + }, + "appServicePlanName": { + "type": "string", + "metadata": { + "description": "The name of the App Service plan to use for hosting the web app." + }, + "value": "GEN-UNIQUE" + }, + "owner": { + "type": "string", + "metadata": { + "description": "The owner of the resource will be used for tagging." + }, + "value": "Owner" + }, + "numberOfWorkers": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Defines the number of workers from the worker pool that will be used by the app service plan." + } + }, + "workerPool": { + "type": "string", + "defaultValue": "1", + "allowedValues": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Defines which worker pool's (WP1, WP2 or WP3) resources will be used for the app service plan." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Web/hostingEnvironments", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "kind": "ASEV2", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "ASE Environment", + "usage": "Hosting PaaS applications", + "category": "Environment", + "owner": "Owner" + }, + "properties": { + "ipsslAddressCount": 0, + "internalLoadBalancingMode": "Web, Publishing", + "dnsSuffix": "", + "virtualNetwork": { + "id": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('vnetResourceGroupName')), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]" + } + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "ASE Hosting Plan", + "usage": "Hosting Plan within ASE", + "category": "Hosting", + "owner": "Owner" + }, + "properties": { + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/GEN-UNIQUE" + } + }, + "sku": { + "name": "[format('I{0}', parameters('workerPool'))]", + "tier": "Isolated", + "size": "[format('I{0}', parameters('workerPool'))]", + "family": "I", + "capacity": 1 + }, + "dependsOn": [ + "Microsoft.Web/hostingEnvironments/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "ASE Web App", + "usage": "Web App Hosted within ASE", + "category": "Web App", + "owner": "Owner" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/GEN-UNIQUE" + } + }, + "dependsOn": [ + "Microsoft.Web/hostingEnvironments/GEN-UNIQUE", + "Microsoft.Web/serverfarms/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1748 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1748 new file mode 100644 index 0000000..06ed740 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1748 @@ -0,0 +1,209 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/container-app-create/azuredeploy.json", + "/quickstarts/microsoft.web/container-app-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962910849, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/container-app-create/azuredeploy.json", + "/quickstarts/microsoft.web/container-app-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1748", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.web/kubeenvironments", + "microsoft.web/containerapps" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1748", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "6220213040958471409" + } + }, + "parameters": { + "containerAppName": { + "type": "string", + "defaultValue": "[format('containerapp-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the container app." + } + }, + "containerAppEnvName": { + "type": "string", + "defaultValue": "[format('containerapp-env-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the container app environment." + } + }, + "containerAppLogAnalyticsName": { + "type": "string", + "defaultValue": "[format('containerapp-log-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the log analytics workspace." + } + }, + "location": { + "type": "string", + "allowedValues": [ + "northcentralusstage", + "eastus", + "northeurope", + "canadacentral" + ], + "metadata": { + "description": "Specifies the location for all resources." + }, + "value": "canadacentral" + }, + "containerImage": { + "type": "string", + "defaultValue": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", + "metadata": { + "description": "Specifies the docker container image to deploy." + } + }, + "targetPort": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Specifies the container port." + } + }, + "cpuCore": { + "type": "string", + "defaultValue": "0.5", + "metadata": { + "description": "Number of CPU cores the container can use. Can be with a maximum of two decimals." + } + }, + "memorySize": { + "type": "string", + "defaultValue": "1", + "metadata": { + "description": "Amount of memory (in gibibytes, GiB) allocated to the container up to 4GiB. Can be with a maximum of two decimals. Ratio with CPU cores must be equal to 2." + } + }, + "minReplica": { + "type": "int", + "defaultValue": 1, + "maxValue": 25, + "minValue": 0, + "metadata": { + "description": "Minimum number of replicas that will be deployed" + } + }, + "maxReplica": { + "type": "int", + "defaultValue": 3, + "maxValue": 25, + "minValue": 0, + "metadata": { + "description": "Maximum number of replicas that will be deployed" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-10-01", + "name": "[format('containerapp-log-{0}', uniqueString(resourceGroup().id))]", + "location": "canadacentral", + "properties": { + "sku": { + "name": "PerGB2018" + } + } + }, + { + "type": "Microsoft.Web/kubeEnvironments", + "apiVersion": "2021-02-01", + "name": "[format('containerapp-env-{0}', uniqueString(resourceGroup().id))]", + "location": "canadacentral", + "kind": "containerenvironment", + "properties": { + "type": "managed", + "internalLoadBalancerEnabled": false, + "appLogsConfiguration": { + "destination": "log-analytics", + "logAnalyticsConfiguration": { + "customerId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces', parameters('containerAppLogAnalyticsName'))).customerId]", + "sharedKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces', parameters('containerAppLogAnalyticsName')), '2020-10-01').primarySharedKey]" + } + } + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[format('containerapp-log-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/containerApps", + "apiVersion": "2021-03-01", + "name": "[format('containerapp-{0}', uniqueString(resourceGroup().id))]", + "location": "canadacentral", + "properties": { + "kubeEnvironmentId": "Microsoft.Web/kubeEnvironments/[format('containerapp-env-{0}', uniqueString(resourceGroup().id))]", + "configuration": { + "ingress": { + "external": true, + "targetport": 80, + "allowInsecure": false, + "traffic": [ + { + "latestRevision": true, + "weight": 100 + } + ] + } + }, + "template": { + "revisionSuffix": "firstrevision", + "containers": [ + { + "name": "[format('containerapp-{0}', uniqueString(resourceGroup().id))]", + "image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", + "resources": { + "cpu": "0.5", + "memory": "[format('{0}Gi', parameters('memorySize'))]" + } + } + ], + "scale": { + "minReplica": 1, + "maxReplica": 3 + } + } + }, + "dependsOn": [ + "Microsoft.Web/kubeEnvironments/[format('containerapp-env-{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "outputs": { + "containerAppFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/containerApps', parameters('containerAppName'))).configuration.ingress.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1749 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1749 new file mode 100644 index 0000000..d7c4986 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1749 @@ -0,0 +1,283 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/create-ase-with-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/create-ase-with-webapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962910859, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/create-ase-with-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/create-ase-with-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1749", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1749", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "ASE-ipSslAddressCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of IP addresses for the IP-SSL address pool." + } + }, + "ASE-frontEndSize": { + "type": "string", + "allowedValues": [ + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Medium", + "metadata": { + "description": "Instance size for the front-end pool. Maps to P2,P3,P4." + } + }, + "ASE-frontEndCount": { + "type": "int", + "defaultValue": 2, + "minValue": 2, + "maxValue": 100, + "metadata": { + "description": "Number of instances in the front-end pool. Minimum of two." + } + }, + "ASE-workerPoolOneInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool one. Maps to P1,P2,P3,P4." + } + }, + "ASE-workerPoolOneInstanceCount": { + "type": "int", + "defaultValue": 2, + "minValue": 2, + "maxValue": 100, + "metadata": { + "description": "Number of instances in worker pool one. Minimum of two." + } + }, + "ASE-workerPoolTwoInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool two. Maps to P1,P2,P3,P4." + } + }, + "ASE-workerPoolTwoInstanceCount": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Number of instances in worker pool two. Can be zero if not using worker pool two." + } + }, + "ASE-workerPoolThreeInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool three. Maps to P1,P2,P3,P4." + } + }, + "ASE-workerPoolThreeInstanceCount": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Number of instances in worker pool three. Can be zero if not using worker pool three." + } + }, + "ASE-APP-SERVICE-workerPool": { + "type": "string", + "allowedValues": [ + "1", + "2", + "3" + ], + "defaultValue": "1", + "metadata": { + "description": "Defines which worker pool's (WP1, WP2 or WP3) resources will be used for the app service plan." + } + }, + "ASE-APP-SERVICE-numberOfWorkersFromWorkerPool": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Defines the number of workers from the worker pool that will be used by the app service plan." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "ASE-VNETPrefix": "10.0.0.0/16", + "ASE-VNETSubnet1Name": "Subnet-1", + "ASE-VNETSubnet1Prefix": "10.0.0.0/24", + "ASE-VNETSubnet2Name": "Subnet-2", + "ASE-VNETSubnet2Prefix": "10.0.1.0/24", + "ASE-WEB-APP-Name": "[concat('ASE-WEB-APP', uniqueString(resourceGroup().id))]", + "ASE-Name": "[concat('ASE', uniqueString(resourceGroup().id))]", + "ASE-VNET-Name": "[concat('ASE-VNET', uniqueString(resourceGroup().id))]", + "ASE-SERVICE-Name": "[concat('ASE-SERVICE', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "name": "[variables('ASE-VNET-Name')]", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "tags": { + "displayName": "ASE-VNET" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "Subnet-2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "[variables('ASE-Name')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks', variables('ASE-VNET-Name'))]" + ], + "tags": { + "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('ASE-SERVICE-Name')))]": "Resource", + "[concat('hidden-related:', resourceId('Microsoft.Web/sites', variables('ASE-WEB-APP-Name')))]": "Resource", + "displayName": "ASE" + }, + "properties": { + "name": "[variables('ASE-Name')]", + "location": "[resourceGroup().location]", + "ipSslAddressCount": 1, + "virtualNetwork": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('ASE-VNET-Name'), variables('ASE-VNETSubnet1Name'))]" + }, + "multiSize": "Medium", + "multiRoleCount": 2, + "workerPools": [ + { + "workerSizeId": 0, + "workerSize": "Small", + "workerCount": 2 + }, + { + "workerSizeId": 1, + "workerSize": "Small", + "workerCount": 0 + }, + { + "workerSizeId": 2, + "workerSize": "Small", + "workerCount": 0 + } + ] + } + }, + { + "name": "[variables('ASE-SERVICE-Name')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "apiVersion": "2019-08-01", + "dependsOn": [ + "[resourceId('Microsoft.Web/hostingEnvironments', variables('ASE-Name'))]" + ], + "tags": { + "displayName": "ASE-APP-SERVICE-APP" + }, + "properties": { + "name": "[variables('ASE-SERVICE-Name')]", + "hostingEnvironment": "[variables('ASE-Name')]", + "hostingEnvironmentId": "[resourceId('Microsoft.Web/hostingEnvironments', variables('ASE-Name'))]" + }, + "sku": { + "name": "P1", + "tier": "Premium", + "size": "P1", + "family": "P", + "capacity": 1 + } + }, + { + "name": "[variables('ASE-WEB-APP-Name')]", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "apiVersion": "2019-08-01", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('ASE-SERVICE-Name'))]" + ], + "tags": { + "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('ASE-SERVICE-Name')))]": "Resource", + "displayName": "ASE-WEB-APP" + }, + "properties": { + "name": "[variables('ASE-WEB-APP-Name')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('ASE-SERVICE-Name'))]", + "hostingEnvironment": "[variables('ASE-Name')]", + "hostingEnvironmentId": "[resourceId('Microsoft.Web/hostingEnvironments', variables('ASE-Name'))]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT175 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT175 new file mode 100644 index 0000000..c7ac537 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT175 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/storage.json" + ], + "timestamp": 1642962889497, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/storage.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT175", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT175", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Storage Account Name" + } + }, + "storageApiVersion": { + "type": "string", + "defaultValue": "2015-06-15", + "allowedValues": [ + "2015-05-01-preview", + "2015-06-15" + ], + "metadata": { + "description": "API Version for the Storage Account" + } + }, + "location": { + "type": "string", + "defaultValue": "westus", + "metadata": { + "description": "Storage Account Deployment Location" + } + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + }, + "metadata": { + "description": "Tag Values" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "Stoarge Account Type" + } + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "comments": "Storage Account Resource", + "type": "Microsoft.Storage/storageAccounts", + "name": "", + "apiVersion": "2015-06-15", + "location": "westus", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "accountType": "Standard_LRS" + } + } + ], + "outputs": { + "primaryKey": { + "type": "string", + "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2015-06-15').key1]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1750 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1750 new file mode 100644 index 0000000..7909d11 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1750 @@ -0,0 +1,148 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/documentdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/documentdb-webapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962910867, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/documentdb-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/documentdb-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1750", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.documentdb/databaseaccounts", + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1750", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "databaseAccountName": { + "type": "string", + "metadata": { + "description": "The Azure Cosmos DB database account name." + }, + "value": "GEN-UNIQUE" + }, + "appSvcPlanName": { + "type": "string", + "metadata": { + "description": "The name of the App Service Plan that will host the Web App." + }, + "value": "GEN-UNIQUE" + }, + "svcPlanSize": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "The instance size of the App Service Plan." + }, + "value": "F1" + }, + "svcPlanSku": { + "type": "string", + "allowedValues": [ + "Free", + "Shared", + "Basic", + "Standard", + "Premium" + ], + "defaultValue": "Free", + "metadata": { + "description": "The pricing tier of the App Service plan." + }, + "value": "Free" + }, + "webAppName": { + "type": "string", + "metadata": { + "description": "The name of the Web App." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "databaseAccountTier": "Standard" + }, + "resources": [ + { + "apiVersion": "2020-09-01", + "type": "Microsoft.DocumentDb/databaseAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE", + "databaseAccountOfferType": "Standard", + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0 + } + ] + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2015-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1", + "tier": "Free", + "capacity": 1 + } + }, + { + "type": "Microsoft.Web/Sites", + "apiVersion": "2015-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverFarms//GEN-UNIQUE" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "GEN-UNIQUE", + "siteConfig": { + "phpVersion": "off", + "appSettings": [ + { + "Name": "DOCUMENTDB_ENDPOINT", + "Value": "[reference(resourceId('Microsoft.DocumentDb/databaseAccounts/', parameters('databaseAccountName'))).documentEndpoint]" + }, + { + "Name": "DOCUMENTDB_PRIMARY_KEY", + "Value": "[listKeys(resourceId('Microsoft.DocumentDb/databaseAccounts', parameters('databaseAccountName')), '2020-09-01').primaryMasterKey]" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1751 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1751 new file mode 100644 index 0000000..ae67c9c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1751 @@ -0,0 +1,192 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.parameters.json" + ], + "timestamp": 1642962910875, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1751", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1751", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "metadata": { + "description": "The name of the function app that you wish to create." + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "allowedValues": [ + "D1", + "F1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P1V2", + "P2V2", + "P3V2", + "I1", + "I2", + "I3", + "Y1" + ], + "defaultValue": "S1", + "metadata": { + "description": "The pricing tier for the hosting plan." + } + }, + "workerSize": { + "type": "string", + "allowedValues": [ + "0", + "1", + "2" + ], + "defaultValue": "0", + "metadata": { + "description": "The instance size of the hosting plan (small, medium, or large)." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Application Insights" + }, + "value": "eastus" + } + }, + "variables": { + "functionAppName": "GEN-UNIQUE", + "hostingPlanName": "GEN-UNIQUE", + "applicationInsightsName": "GEN-UNIQUE", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'functions')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE", + "location": "eastus", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" + }, + "properties": { + "ApplicationId": "GEN-UNIQUE", + "Request_Source": "IbizaWebAppExtensionCreate" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "Name": "S1" + }, + "properties": { + "name": "GEN-UNIQUE", + "workerSize": "0", + "numberOfWorkers": 1 + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/sites", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "clientAffinityEnabled": false, + "siteConfig": { + "alwaysOn": true + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "resources": [ + { + "apiVersion": "2018-11-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]", + "FUNCTIONS_EXTENSION_VERSION": "~3" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1752 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1752 new file mode 100644 index 0000000..f6dade9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1752 @@ -0,0 +1,192 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962910890, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dedicated/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1752", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1752", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "metadata": { + "description": "The name of the function app that you wish to create." + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "allowedValues": [ + "D1", + "F1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P1V2", + "P2V2", + "P3V2", + "I1", + "I2", + "I3", + "Y1" + ], + "defaultValue": "S1", + "metadata": { + "description": "The pricing tier for the hosting plan." + } + }, + "workerSize": { + "type": "string", + "allowedValues": [ + "0", + "1", + "2" + ], + "defaultValue": "0", + "metadata": { + "description": "The instance size of the hosting plan (small, medium, or large)." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Application Insights" + }, + "value": "usgovvirginia" + } + }, + "variables": { + "functionAppName": "GEN-UNIQUE", + "hostingPlanName": "GEN-UNIQUE", + "applicationInsightsName": "GEN-UNIQUE", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'functions')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE", + "location": "usgovvirginia", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" + }, + "properties": { + "ApplicationId": "GEN-UNIQUE", + "Request_Source": "IbizaWebAppExtensionCreate" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "Name": "S1" + }, + "properties": { + "name": "GEN-UNIQUE", + "workerSize": "0", + "numberOfWorkers": 1 + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/sites", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "clientAffinityEnabled": false, + "siteConfig": { + "alwaysOn": true + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "resources": [ + { + "apiVersion": "2018-11-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]", + "FUNCTIONS_EXTENSION_VERSION": "~3" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1753 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1753 new file mode 100644 index 0000000..bfe2e7d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1753 @@ -0,0 +1,177 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.parameters.json" + ], + "timestamp": 1642962910901, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1753", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1753", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "defaultValue": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the function app that you wish to create." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Application Insights" + }, + "value": "eastus" + }, + "runtime": { + "type": "string", + "defaultValue": "node", + "allowedValues": [ + "node", + "dotnet", + "java" + ], + "metadata": { + "description": "The language worker runtime to load in the function app." + } + } + }, + "variables": { + "functionAppName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "applicationInsightsName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'azfunctions')]", + "functionWorkerRuntime": "node" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Y1", + "tier": "Dynamic" + }, + "properties": { + "name": "[variables('hostingPlanName')]", + "computeMode": "Dynamic" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[variables('functionAppName')]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(variables('functionAppName'))]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~10" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + } + ] + } + } + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[variables('applicationInsightsName')]", + "location": "eastus", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" + }, + "properties": { + "ApplicationId": "[variables('applicationInsightsName')]", + "Request_Source": "IbizaWebAppExtensionCreate" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1754 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1754 new file mode 100644 index 0000000..67a868b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1754 @@ -0,0 +1,177 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962910908, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1754", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1754", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "defaultValue": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the function app that you wish to create." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Application Insights" + }, + "value": "usgovvirginia" + }, + "runtime": { + "type": "string", + "defaultValue": "node", + "allowedValues": [ + "node", + "dotnet", + "java" + ], + "metadata": { + "description": "The language worker runtime to load in the function app." + } + } + }, + "variables": { + "functionAppName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "applicationInsightsName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'azfunctions')]", + "functionWorkerRuntime": "node" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Y1", + "tier": "Dynamic" + }, + "properties": { + "name": "[variables('hostingPlanName')]", + "computeMode": "Dynamic" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[variables('functionAppName')]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(variables('functionAppName'))]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~10" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + } + ] + } + } + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[variables('applicationInsightsName')]", + "location": "usgovvirginia", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" + }, + "properties": { + "ApplicationId": "[variables('applicationInsightsName')]", + "Request_Source": "IbizaWebAppExtensionCreate" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1755 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1755 new file mode 100644 index 0000000..950a197 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1755 @@ -0,0 +1,219 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.parameters.json" + ], + "timestamp": 1642962910922, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1755", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/slots", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1755", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "defaultValue": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the function app that you wish to create." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Application Insights" + }, + "value": "eastus" + }, + "runtime": { + "type": "string", + "defaultValue": "node", + "allowedValues": [ + "node", + "dotnet", + "java" + ], + "metadata": { + "description": "The language worker runtime to load in the function app." + } + } + }, + "variables": { + "functionAppName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "applicationInsightsName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'azfunctions')]", + "functionWorkerRuntime": "node" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Y1", + "tier": "Dynamic" + }, + "properties": { + "name": "[variables('hostingPlanName')]", + "computeMode": "Dynamic" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[variables('functionAppName')]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(variables('functionAppName'))]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~10" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + } + ] + } + } + }, + { + "type": "Microsoft.Web/sites/slots", + "apiVersion": "2020-06-01", + "name": "[concat(variables('functionAppName'), '/deployment')]", + "kind": "functionapp", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]" + ], + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~10" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + } + ] + } + } + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[variables('applicationInsightsName')]", + "location": "eastus", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" + }, + "properties": { + "ApplicationId": "[variables('applicationInsightsName')]", + "Request_Source": "IbizaWebAppExtensionCreate" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1756 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1756 new file mode 100644 index 0000000..c9b4343 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1756 @@ -0,0 +1,219 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962910928, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-create-dynamic-slot/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1756", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/slots", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1756", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "defaultValue": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the function app that you wish to create." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Application Insights" + }, + "value": "usgovvirginia" + }, + "runtime": { + "type": "string", + "defaultValue": "node", + "allowedValues": [ + "node", + "dotnet", + "java" + ], + "metadata": { + "description": "The language worker runtime to load in the function app." + } + } + }, + "variables": { + "functionAppName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "applicationInsightsName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'azfunctions')]", + "functionWorkerRuntime": "node" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Y1", + "tier": "Dynamic" + }, + "properties": { + "name": "[variables('hostingPlanName')]", + "computeMode": "Dynamic" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[variables('functionAppName')]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(variables('functionAppName'))]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~10" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + } + ] + } + } + }, + { + "type": "Microsoft.Web/sites/slots", + "apiVersion": "2020-06-01", + "name": "[concat(variables('functionAppName'), '/deployment')]", + "kind": "functionapp", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]" + ], + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~10" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', variables('applicationInsightsName')), '2020-02-02-preview').InstrumentationKey]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + } + ] + } + } + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[variables('applicationInsightsName')]", + "location": "usgovvirginia", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites', variables('applicationInsightsName')))]": "Resource" + }, + "properties": { + "ApplicationId": "[variables('applicationInsightsName')]", + "Request_Source": "IbizaWebAppExtensionCreate" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1757 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1757 new file mode 100644 index 0000000..a22c117 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1757 @@ -0,0 +1,182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-app-dedicated-github-deploy/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-dedicated-github-deploy/azuredeploy.parameters.json" + ], + "timestamp": 1642962910936, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-dedicated-github-deploy/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-dedicated-github-deploy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1757", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1757", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "defaultValue": "[concat('funtionapp-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the function app that you wish to create." + } + }, + "sku": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "The pricing tier for the hosting plan." + } + }, + "workerSize": { + "type": "string", + "allowedValues": [ + "0", + "1", + "2" + ], + "defaultValue": "0", + "metadata": { + "description": "The instance size of the hosting plan (small, medium, or large)." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "repoURL": { + "type": "string", + "defaultValue": "https://github.com/AzureBytes/functionshttpecho.git", + "metadata": { + "description": "The URL for the GitHub repository that contains the project to deploy." + } + }, + "branch": { + "type": "string", + "defaultValue": "master", + "metadata": { + "description": "The branch of the GitHub repository to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "functionAppName": "[concat('funtionapp-', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[concat('funtionapp-', uniqueString(resourceGroup().id))]-plan", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'functions')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1" + }, + "properties": { + "workerSize": "0", + "numberOfWorkers": 1 + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Web/sites", + "name": "[variables('functionAppName')]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "name": "[variables('functionAppName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "clientAffinityEnabled": false, + "siteConfig": { + "alwaysOn": true, + "cors": { + "allowedOrigins": [ + "*" + ] + }, + "appSettings": [ + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~1" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value,';')]" + }, + { + "name": "AzureWebJobsDashboard", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value,';')]" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2018-11-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', variables('functionAppName'))]" + ], + "properties": { + "RepoUrl": "https://github.com/AzureBytes/functionshttpecho.git", + "branch": "master", + "IsManualIntegration": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1758 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1758 new file mode 100644 index 0000000..587278a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1758 @@ -0,0 +1,596 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-app-storage-private-endpoints/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-storage-private-endpoints/azuredeploy.parameters.json" + ], + "timestamp": 1642962910944, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-app-storage-private-endpoints/azuredeploy.json", + "/quickstarts/microsoft.web/function-app-storage-private-endpoints/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1758", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.web/sites/networkconfig", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1758", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "8462918231759969902" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location into which the resources should be deployed." + } + }, + "functionAppName": { + "type": "string", + "defaultValue": "[format('func-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Function app." + } + }, + "functionAppPlanName": { + "type": "string", + "defaultValue": "[format('plan-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Azure Function hosting plan." + } + }, + "functionPlanOS": { + "type": "string", + "defaultValue": "Windows", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "Specifies the OS used for the Azure Function hosting plan." + } + }, + "functionAppPlanSku": { + "type": "string", + "defaultValue": "EP1", + "allowedValues": [ + "EP1", + "EP2", + "EP3" + ], + "metadata": { + "description": "Specifies the Azure Function hosting plan SKU." + } + }, + "functionStorageAccountName": { + "type": "string", + "defaultValue": "[format('st{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the backend Azure storage account used by the Azure Function app." + } + }, + "vnetName": { + "type": "string", + "defaultValue": "[format('vnet-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the virtual network for virtual network integration." + } + }, + "functionSubnetName": { + "type": "string", + "defaultValue": "snet-func", + "metadata": { + "description": "The name of the virtual network subnet to be associated with the Azure Function app." + } + }, + "privateEndpointSubnetName": { + "type": "string", + "defaultValue": "snet-pe", + "metadata": { + "description": "The name of the virtual network subnet used for allocating IP addresses for private endpoints." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.100.0.0/16", + "metadata": { + "description": "The IP adddress space used for the virtual network." + } + }, + "functionSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.100.0.0/24", + "metadata": { + "description": "The IP address space used for the Azure Function integration subnet." + } + }, + "privateEndpointSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.100.1.0/24", + "metadata": { + "description": "The IP address space used for the private endpoints." + } + } + }, + "functions": [], + "variables": { + "applicationInsightsName": "[format('appi-{0}', uniqueString(resourceGroup().id))]", + "privateStorageFileDnsZoneName": "[format('privatelink.file.{0}', environment().suffixes.storage)]", + "privateEndpointStorageFileName": "[format('{0}-file-private-endpoint', parameters('functionStorageAccountName'))]", + "privateStorageTableDnsZoneName": "[format('privatelink.table.{0}', environment().suffixes.storage)]", + "privateEndpointStorageTableName": "[format('{0}-table-private-endpoint', parameters('functionStorageAccountName'))]", + "privateStorageBlobDnsZoneName": "[format('privatelink.blob.{0}', environment().suffixes.storage)]", + "privateEndpointStorageBlobName": "[format('{0}-blob-private-endpoint', parameters('functionStorageAccountName'))]", + "privateStorageQueueDnsZoneName": "[format('privatelink.queue.{0}', environment().suffixes.storage)]", + "privateEndpointStorageQueueName": "[format('{0}-queue-private-endpoint', parameters('functionStorageAccountName'))]", + "functionContentShareName": "function-content-share", + "isReserved": "[if(equals(parameters('functionPlanOS'), 'Linux'), true(), false())]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "[format('vnet-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.100.0.0/16" + ] + }, + "subnets": [ + { + "name": "snet-func", + "properties": { + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "delegations": [ + { + "name": "webapp", + "properties": { + "serviceName": "Microsoft.Web/serverFarms" + } + } + ], + "addressPrefix": "10.100.0.0/24" + } + }, + { + "name": "snet-pe", + "properties": { + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "addressPrefix": "10.100.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[format('privatelink.file.{0}', environment().suffixes.storage)]", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[format('privatelink.blob.{0}', environment().suffixes.storage)]", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[format('privatelink.queue.{0}', environment().suffixes.storage)]", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[format('privatelink.table.{0}', environment().suffixes.storage)]", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('privateStorageFileDnsZoneName'), format('{0}-link', variables('privateStorageFileDnsZoneName')))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[format('privatelink.file.{0}', environment().suffixes.storage)]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('privateStorageBlobDnsZoneName'), format('{0}-link', variables('privateStorageBlobDnsZoneName')))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[format('privatelink.blob.{0}', environment().suffixes.storage)]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('privateStorageTableDnsZoneName'), format('{0}-link', variables('privateStorageTableDnsZoneName')))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[format('privatelink.table.{0}', environment().suffixes.storage)]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('privateStorageQueueDnsZoneName'), format('{0}-link', variables('privateStorageQueueDnsZoneName')))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[format('privatelink.queue.{0}', environment().suffixes.storage)]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}/{1}', variables('privateEndpointStorageFileName'), 'filePrivateDnsZoneGroup')]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/[format('privatelink.file.{0}', environment().suffixes.storage)]" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[format('privatelink.file.{0}', environment().suffixes.storage)]", + "Microsoft.Network/privateEndpoints/[format('{0}-file-private-endpoint', parameters('functionStorageAccountName'))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}/{1}', variables('privateEndpointStorageBlobName'), 'blobPrivateDnsZoneGroup')]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/[format('privatelink.blob.{0}', environment().suffixes.storage)]" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[format('privatelink.blob.{0}', environment().suffixes.storage)]", + "Microsoft.Network/privateEndpoints/[format('{0}-blob-private-endpoint', parameters('functionStorageAccountName'))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}/{1}', variables('privateEndpointStorageTableName'), 'tablePrivateDnsZoneGroup')]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/[format('privatelink.table.{0}', environment().suffixes.storage)]" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[format('privatelink.table.{0}', environment().suffixes.storage)]", + "Microsoft.Network/privateEndpoints/[format('{0}-table-private-endpoint', parameters('functionStorageAccountName'))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}/{1}', variables('privateEndpointStorageQueueName'), 'tablePrivateDnsZoneGroup')]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/[format('privatelink.queue.{0}', environment().suffixes.storage)]" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[format('privatelink.queue.{0}', environment().suffixes.storage)]", + "Microsoft.Network/privateEndpoints/[format('{0}-queue-private-endpoint', parameters('functionStorageAccountName'))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2021-02-01", + "name": "[format('{0}-file-private-endpoint', parameters('functionStorageAccountName'))]", + "location": "[resourceGroup().location]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', uniqueString(resourceGroup().id))]/snet-pe" + }, + "privateLinkServiceConnections": [ + { + "name": "MyStorageFilePrivateLinkConnection", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]", + "groupIds": [ + "file" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2021-02-01", + "name": "[format('{0}-table-private-endpoint', parameters('functionStorageAccountName'))]", + "location": "[resourceGroup().location]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', uniqueString(resourceGroup().id))]/snet-pe" + }, + "privateLinkServiceConnections": [ + { + "name": "MyStorageTablePrivateLinkConnection", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]", + "groupIds": [ + "table" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2021-02-01", + "name": "[format('{0}-queue-private-endpoint', parameters('functionStorageAccountName'))]", + "location": "[resourceGroup().location]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', uniqueString(resourceGroup().id))]/snet-pe" + }, + "privateLinkServiceConnections": [ + { + "name": "MyStorageQueuePrivateLinkConnection", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]", + "groupIds": [ + "queue" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2021-02-01", + "name": "[format('{0}-blob-private-endpoint', parameters('functionStorageAccountName'))]", + "location": "[resourceGroup().location]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', uniqueString(resourceGroup().id))]/snet-pe" + }, + "privateLinkServiceConnections": [ + { + "name": "MyStorageBlobPrivateLinkConnection", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[format('st{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + }, + "properties": { + "networkAcls": { + "bypass": "None", + "defaultAction": "Deny" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts/fileServices/shares", + "apiVersion": "2021-04-01", + "name": "[format('{0}/default/{1}', parameters('functionStorageAccountName'), variables('functionContentShareName'))]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('st{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[format('appi-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2021-01-01", + "name": "[format('plan-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "EP1", + "tier": "ElasticPremium", + "size": "EP1", + "family": "EP" + }, + "kind": "elastic", + "properties": { + "maximumElasticWorkerCount": 20, + "reserved": "[if(equals(parameters('functionPlanOS'), 'Linux'), true(), false())]" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2021-01-01", + "name": "[format('func-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "[if(variables('isReserved'), 'functionapp,linux', 'functionapp')]", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/[format('plan-{0}', uniqueString(resourceGroup().id))]", + "reserved": "[if(equals(parameters('functionPlanOS'), 'Linux'), true(), false())]", + "siteConfig": { + "functionsRuntimeScaleMonitoringEnabled": true, + "linuxFxVersion": "[if(variables('isReserved'), 'dotnet|3.1', json('null'))]", + "appSettings": [ + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))).InstrumentationKey]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}', parameters('functionStorageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('functionStorageAccountName')), '2021-02-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}', parameters('functionStorageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('functionStorageAccountName')), '2021-02-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "dotnet" + }, + { + "name": "WEBSITE_VNET_ROUTE_ALL", + "value": "1" + }, + { + "name": "WEBSITE_CONTENTOVERVNET", + "value": "1" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "function-content-share" + } + ] + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares', split(format('{0}/default/{1}', parameters('functionStorageAccountName'), variables('functionContentShareName')), '/')[0], split(format('{0}/default/{1}', parameters('functionStorageAccountName'), variables('functionContentShareName')), '/')[1], split(format('{0}/default/{1}', parameters('functionStorageAccountName'), variables('functionContentShareName')), '/')[2])]", + "[resourceId('Microsoft.Web/serverfarms', parameters('functionAppPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', parameters('functionStorageAccountName'))]", + "[resourceId('Microsoft.Network/privateDnsZones/virtualNetworkLinks', variables('privateStorageBlobDnsZoneName'), format('{0}-link', variables('privateStorageBlobDnsZoneName')))]", + "[resourceId('Microsoft.Network/privateEndpoints/privateDnsZoneGroups', variables('privateEndpointStorageBlobName'), 'blobPrivateDnsZoneGroup')]", + "[resourceId('Microsoft.Network/privateEndpoints/privateDnsZoneGroups', variables('privateEndpointStorageFileName'), 'filePrivateDnsZoneGroup')]", + "[resourceId('Microsoft.Network/privateDnsZones/virtualNetworkLinks', variables('privateStorageQueueDnsZoneName'), format('{0}-link', variables('privateStorageQueueDnsZoneName')))]", + "[resourceId('Microsoft.Network/privateEndpoints/privateDnsZoneGroups', variables('privateEndpointStorageQueueName'), 'tablePrivateDnsZoneGroup')]", + "[resourceId('Microsoft.Network/privateDnsZones/virtualNetworkLinks', variables('privateStorageTableDnsZoneName'), format('{0}-link', variables('privateStorageTableDnsZoneName')))]", + "[resourceId('Microsoft.Network/privateEndpoints/privateDnsZoneGroups', variables('privateEndpointStorageTableName'), 'tablePrivateDnsZoneGroup')]" + ] + }, + { + "type": "Microsoft.Web/sites/networkConfig", + "apiVersion": "2021-01-01", + "name": "[format('{0}/{1}', parameters('functionAppName'), 'virtualNetwork')]", + "properties": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', uniqueString(resourceGroup().id))]/snet-func", + "swiftSupported": true + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('func-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1759 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1759 new file mode 100644 index 0000000..a9868eb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1759 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-http-trigger/azuredeploy.json", + "/quickstarts/microsoft.web/function-http-trigger/azuredeploy.parameters.json" + ], + "timestamp": 1642962910955, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-http-trigger/azuredeploy.json", + "/quickstarts/microsoft.web/function-http-trigger/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1759", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.keyvault/vaults/secrets", + "microsoft.web/sites/functions", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1759", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "875047576570933390" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies region of all resources." + } + }, + "appNameSuffix": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Suffix for function app, storage account, and key vault names." + } + }, + "keyVaultSku": { + "type": "string", + "defaultValue": "Standard", + "metadata": { + "description": "Key Vault SKU name." + } + }, + "storageSku": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Storage account SKU name." + } + } + }, + "functions": [], + "variables": { + "functionAppName": "[format('fn-{0}', parameters('appNameSuffix'))]", + "appServicePlanName": "FunctionPlan", + "appInsightsName": "AppInsights", + "storageAccountName": "[format('fnstor{0}', replace(parameters('appNameSuffix'), '-', ''))]", + "functionNameComputed": "MyHttpTriggeredFunction", + "functionRuntime": "dotnet", + "keyVaultName": "[format('kv{0}', replace(parameters('appNameSuffix'), '-', ''))]", + "functionAppKeySecretName": "FunctionAppHostKey" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('fnstor{0}', replace(parameters('appNameSuffix'), '-', ''))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "file": { + "keyType": "Account", + "enabled": true + }, + "blob": { + "keyType": "Account", + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "AppInsights", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web", + "publicNetworkAccessForIngestion": "Enabled", + "publicNetworkAccessForQuery": "Enabled" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "FunctionPlan", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "sku": { + "name": "Y1" + }, + "properties": {} + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "[format('fn-{0}', parameters('appNameSuffix'))]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/FunctionPlan", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsStorage", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').keys[0].value)]" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightsName'))).InstrumentationKey]" + }, + { + "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", + "value": "[format('InstrumentationKey={0}', reference(resourceId('Microsoft.Insights/components', variables('appInsightsName'))).InstrumentationKey)]" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "dotnet" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + } + ] + }, + "httpsOnly": true + }, + "dependsOn": [ + "Microsoft.Insights/components/AppInsights", + "Microsoft.Web/serverfarms/FunctionPlan", + "Microsoft.Storage/storageAccounts/[format('fnstor{0}', replace(parameters('appNameSuffix'), '-', ''))]" + ] + }, + { + "type": "Microsoft.Web/sites/functions", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', variables('functionAppName'), variables('functionNameComputed'))]", + "properties": { + "config": { + "disabled": false, + "bindings": [ + { + "name": "req", + "type": "httpTrigger", + "direction": "in", + "authLevel": "function", + "methods": [ + "get" + ] + }, + { + "name": "$return", + "type": "http", + "direction": "out" + } + ] + }, + "files": { + "run.csx": "#r \"Newtonsoft.Json\"\r\n\r\nusing System.Net;\r\nusing Microsoft.AspNetCore.Mvc;\r\nusing Microsoft.Extensions.Primitives;\r\nusing Newtonsoft.Json;\r\n\r\npublic static async Task Run(HttpRequest req, ILogger log)\r\n{\r\n log.LogInformation(\"C# HTTP trigger function processed a request.\");\r\n\r\n string name = req.Query[\"name\"];\r\n\r\n string requestBody = await new StreamReader(req.Body).ReadToEndAsync();\r\n dynamic data = JsonConvert.DeserializeObject(requestBody);\r\n name = name ?? data?.name;\r\n\r\n string responseMessage = string.IsNullOrEmpty(name)\r\n ? \"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.\"\r\n : $\"Hello, {name}. This HTTP triggered function executed successfully.\";\r\n\r\n return new OkObjectResult(responseMessage);\r\n}" + } + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('fn-{0}', parameters('appNameSuffix'))]" + ] + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[format('kv{0}', replace(parameters('appNameSuffix'), '-', ''))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "family": "A", + "name": "Standard" + }, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "[format('{0}/{1}', variables('keyVaultName'), variables('functionAppKeySecretName'))]", + "properties": { + "value": "[listKeys(format('{0}/host/default', resourceId('Microsoft.Web/sites', variables('functionAppName'))), '2020-12-01').functionKeys.default]" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('fn-{0}', parameters('appNameSuffix'))]", + "Microsoft.KeyVault/vaults/[format('kv{0}', replace(parameters('appNameSuffix'), '-', ''))]" + ] + } + ], + "outputs": { + "functionAppHostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', variables('functionAppName'))).defaultHostName]" + }, + "functionName": { + "type": "string", + "value": "[variables('functionNameComputed')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT176 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT176 new file mode 100644 index 0000000..98b038c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT176 @@ -0,0 +1,196 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/virtual-machine-with-plan.json" + ], + "timestamp": 1642962889521, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/virtual-machine-with-plan.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT176", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT176", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "westus", + "metadata": { + "description": "Network Security Group Deployment Location" + } + }, + "computeApiVersion": { + "type": "string", + "defaultValue": "2015-06-15", + "allowedValues": [ + "2015-05-01-preview", + "2015-06-15" + ], + "metadata": { + "description": "API Version for the Compute Resources" + } + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + }, + "metadata": { + "description": "Tag Values" + } + }, + "vmName": { + "type": "string", + "defaultValue": "vmName", + "metadata": { + "description": "Virtual Machine Name" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Virtual Machine Size" + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "sysgain", + "metadata": { + "description": "Admin Username of Virtual Machine to SSH or RDP" + } + }, + "adminPassword": { + "type": "securestring", + "defaultValue": "Sysga1n4205!", + "metadata": { + "description": "Admin Password of Virtual Machine to SSH or RDP" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": " ", + "metadata": { + "description": "Virtual Machine Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": " ", + "metadata": { + "description": "Virtual Machine Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": " ", + "metadata": { + "description": "Virtual Machine Image SKU" + } + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "Virtual Machine Image Version" + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "storageAccountName", + "metadata": { + "description": "Storage Account Name" + } + }, + "vmStorageAccountContainerName": { + "type": "string", + "defaultValue": "vhds", + "metadata": { + "description": "Caintainer name in the storage account" + } + }, + "networkInterfaceName": { + "type": "string", + "defaultValue": "networkInterfaceName", + "metadata": { + "description": "Network Security Group Name" + } + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "comments": "Virtual Machine Resource", + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "westus", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "plan": { + "name": " ", + "product": " ", + "publisher": " " + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "sysgain", + "adminPassword": "Sysga1n4205!" + }, + "storageProfile": { + "imageReference": { + "publisher": " ", + "offer": " ", + "sku": " ", + "version": "latest" + }, + "osDisk": { + "name": "vmName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkInterfaceName" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1760 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1760 new file mode 100644 index 0000000..a415e55 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1760 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.parameters.json" + ], + "timestamp": 1642962910963, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1760", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.web/sites/networkconfig", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1760", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "1628325295337612928" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources except Application Insights." + } + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Application Insights." + }, + "value": "eastus" + }, + "runtime": { + "type": "string", + "defaultValue": "node", + "allowedValues": [ + "node", + "dotnet", + "java" + ], + "metadata": { + "description": "The language worker runtime to load in the function app." + } + }, + "appName": { + "type": "string", + "defaultValue": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the function app that you wish to create." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "The name of the virtual network to be created." + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the subnet to be created within the virtual network." + }, + "value": "GEN-VNET-SUBNET1-NAME" + } + }, + "functions": [], + "variables": { + "vnetAddressPrefix": "10.0.0.0/16", + "subnetAddressPrefix": "10.0.0.0/24", + "functionAppName": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "storageAccountName": "[format('{0}azfunctions', uniqueString(resourceGroup().id))]", + "functionWorkerRuntime": "node" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24", + "delegations": [ + { + "name": "delegation", + "properties": { + "serviceName": "Microsoft.Web/serverFarms" + } + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('{0}azfunctions', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "location": "eastus", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "EP1", + "tier": "ElasticPremium" + }, + "kind": "elastic", + "properties": { + "maximumElasticWorkerCount": 20 + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "siteConfig": { + "appSettings": [ + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('Microsoft.Insights/components', variables('functionAppName'))).InstrumentationKey]" + }, + { + "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", + "value": "[format('InstrumentationKey={0}', reference(resourceId('Microsoft.Insights/components', variables('functionAppName'))).InstrumentationKey)]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix= {1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2};', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~12" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Insights/components/[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Web/serverfarms/[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[format('{0}azfunctions', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ] + }, + { + "type": "Microsoft.Web/sites/networkConfig", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('functionAppName'), 'virtualNetwork')]", + "properties": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "swiftSupported": true + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1761 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1761 new file mode 100644 index 0000000..8f0d2ce --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1761 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962910970, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.json", + "/quickstarts/microsoft.web/function-premium-vnet-integration/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1761", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.web/sites/networkconfig", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1761", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "1628325295337612928" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources except Application Insights." + } + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Application Insights." + }, + "value": "usgovvirginia" + }, + "runtime": { + "type": "string", + "defaultValue": "node", + "allowedValues": [ + "node", + "dotnet", + "java" + ], + "metadata": { + "description": "The language worker runtime to load in the function app." + } + }, + "appName": { + "type": "string", + "defaultValue": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the function app that you wish to create." + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "The name of the virtual network to be created." + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the subnet to be created within the virtual network." + }, + "value": "GEN-VNET-SUBNET1-NAME" + } + }, + "functions": [], + "variables": { + "vnetAddressPrefix": "10.0.0.0/16", + "subnetAddressPrefix": "10.0.0.0/24", + "functionAppName": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "storageAccountName": "[format('{0}azfunctions', uniqueString(resourceGroup().id))]", + "functionWorkerRuntime": "node" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24", + "delegations": [ + { + "name": "delegation", + "properties": { + "serviceName": "Microsoft.Web/serverFarms" + } + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[format('{0}azfunctions', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "location": "usgovvirginia", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "EP1", + "tier": "ElasticPremium" + }, + "kind": "elastic", + "properties": { + "maximumElasticWorkerCount": 20 + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "siteConfig": { + "appSettings": [ + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('Microsoft.Insights/components', variables('functionAppName'))).InstrumentationKey]" + }, + { + "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", + "value": "[format('InstrumentationKey={0}', reference(resourceId('Microsoft.Insights/components', variables('functionAppName'))).InstrumentationKey)]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix= {1};AccountKey={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2};', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "node" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "~12" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Insights/components/[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Web/serverfarms/[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[format('{0}azfunctions', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ] + }, + { + "type": "Microsoft.Web/sites/networkConfig", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('functionAppName'), 'virtualNetwork')]", + "properties": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "swiftSupported": true + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('fnapp{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1762 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1762 new file mode 100644 index 0000000..1bea835 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1762 @@ -0,0 +1,318 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/functions-managed-identity/azuredeploy.json", + "/quickstarts/microsoft.web/functions-managed-identity/azuredeploy.parameters.json" + ], + "timestamp": 1642962910977, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/functions-managed-identity/azuredeploy.json", + "/quickstarts/microsoft.web/functions-managed-identity/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1762", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.storage/storageaccounts", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1762", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "functionAppName": { + "type": "string", + "defaultValue": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specify the name of the function application" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the location for the function application resources" + } + }, + "runtimeStack": { + "type": "string", + "defaultValue": "powershell", + "allowedValues": [ + "powershell", + "dotnet", + "node", + "java" + ], + "metadata": { + "description": "Pick the language runtime that you want enabled" + } + }, + "timezone": { + "type": "string", + "defaultValue": "UTC", + "allowedValues": [ + "Dateline Standard Time", + "UTC-11", + "Aleutian Standard Time", + "Hawaiian Standard Time", + "Marquesas Standard Time", + "Alaskan Standard Time", + "UTC-09", + "Pacific Standard Time (Mexico)", + "UTC-08", + "Pacific Standard Time", + "US Mountain Standard Time", + "Mountain Standard Time (Mexico)", + "Mountain Standard Time", + "Central America Standard Time", + "Central Standard Time", + "Easter Island Standard Time", + "Central Standard Time (Mexico)", + "Canada Central Standard Time", + "SA Pacific Standard Time", + "Eastern Standard Time (Mexico)", + "Eastern Standard Time", + "Haiti Standard Time", + "Cuba Standard Time", + "US Eastern Standard Time", + "Turks And Caicos Standard Time", + "Paraguay Standard Time", + "Atlantic Standard Time", + "Venezuela Standard Time", + "Central Brazilian Standard Time", + "SA Western Standard Time", + "Pacific SA Standard Time", + "Newfoundland Standard Time", + "Tocantins Standard Time", + "E. South America Standard Time", + "SA Eastern Standard Time", + "Argentina Standard Time", + "Greenland Standard Time", + "Montevideo Standard Time", + "Magallanes Standard Time", + "Saint Pierre Standard Time", + "Bahia Standard Time", + "UTC-02", + "Mid-Atlantic Standard Time", + "Azores Standard Time", + "Cape Verde Standard Time", + "UTC", + "Morocco Standard Time", + "GMT Standard Time", + "Greenwich Standard Time", + "W. Europe Standard Time", + "Central Europe Standard Time", + "Romance Standard Time", + "Sao Tome Standard Time", + "Central European Standard Time", + "W. Central Africa Standard Time", + "Jordan Standard Time", + "GTB Standard Time", + "Middle East Standard Time", + "Egypt Standard Time", + "E. Europe Standard Time", + "Syria Standard Time", + "West Bank Standard Time", + "South Africa Standard Time", + "FLE Standard Time", + "Israel Standard Time", + "Kaliningrad Standard Time", + "Sudan Standard Time", + "Libya Standard Time", + "Namibia Standard Time", + "Arabic Standard Time", + "Turkey Standard Time", + "Arab Standard Time", + "Belarus Standard Time", + "Russian Standard Time", + "E. Africa Standard Time", + "Iran Standard Time", + "Arabian Standard Time", + "Astrakhan Standard Time", + "Azerbaijan Standard Time", + "Russia Time Zone 3", + "Mauritius Standard Time", + "Saratov Standard Time", + "Georgian Standard Time", + "Caucasus Standard Time", + "Afghanistan Standard Time", + "West Asia Standard Time", + "Ekaterinburg Standard Time", + "Pakistan Standard Time", + "India Standard Time", + "Sri Lanka Standard Time", + "Nepal Standard Time", + "Central Asia Standard Time", + "Bangladesh Standard Time", + "Omsk Standard Time", + "Myanmar Standard Time", + "SE Asia Standard Time", + "Altai Standard Time", + "W. Mongolia Standard Time", + "North Asia Standard Time", + "N. Central Asia Standard Time", + "Tomsk Standard Time", + "China Standard Time", + "North Asia East Standard Time", + "Singapore Standard Time", + "W. Australia Standard Time", + "Taipei Standard Time", + "Ulaanbaatar Standard Time", + "Aus Central W. Standard Time", + "Transbaikal Standard Time", + "Tokyo Standard Time", + "North Korea Standard Time", + "Korea Standard Time", + "Yakutsk Standard Time", + "Cen. Australia Standard Time", + "AUS Central Standard Time", + "E. Australia Standard Time", + "AUS Eastern Standard Time", + "West Pacific Standard Time", + "Tasmania Standard Time", + "Vladivostok Standard Time", + "Lord Howe Standard Time", + "Bougainville Standard Time", + "Russia Time Zone 10", + "Magadan Standard Time", + "Norfolk Standard Time", + "Sakhalin Standard Time", + "Central Pacific Standard Time", + "Russia Time Zone 11", + "New Zealand Standard Time", + "UTC+12", + "Fiji Standard Time", + "Kamchatka Standard Time", + "Chatham Islands Standard Time", + "UTC+13", + "Tonga Standard Time", + "Samoa Standard Time", + "Line Islands Standard Time" + ], + "metadata": { + "description": "Pick the timezone to use for the function" + } + } + }, + "variables": { + "hostingPlanName": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "storageAccountName": "[concat('storage', uniquestring(resourceGroup().id))]", + "insightsLocation": { + "AzureCloud": "eastus", + "AzureUSGovernment": "usgovvirginia" + } + }, + "resources": [ + { + "name": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "type": "Microsoft.Web/sites", + "apiVersion": "2019-08-01", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('microsoft.insights/components', parameters('functionAppName'))]" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "siteConfig": { + "appSettings": [ + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "powershell" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', parameters('functionAppName')), '2018-05-01-preview').InstrumentationKey]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(parameters('functionAppName'))]" + }, + { + "name": "WEBSITE_TIME_ZONE", + "value": "UTC" + } + ] + }, + "name": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "clientAffinityEnabled": false, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "properties": { + "name": "[variables('hostingPlanName')]" + }, + "sku": { + "name": "Y1", + "tier": "Dynamic", + "size": "Y1", + "family": "Y", + "capacity": 0 + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2018-05-01-preview", + "name": "[concat('fnapp', uniqueString(resourceGroup().id))]", + "type": "Microsoft.Insights/components", + "location": "(insightsLocation)[environment().name]", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites/', parameters('functionAppName')))]": "Resource" + }, + "properties": { + "ApplicationId": "[concat('fnapp', uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "principalId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', parameters('functionAppName')), '2019-08-01', 'Full').identity.principalId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1763 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1763 new file mode 100644 index 0000000..df81a5b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1763 @@ -0,0 +1,109 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/logic-app-transform-function/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/logic-app-transform-function/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962910988, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/logic-app-transform-function/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/logic-app-transform-function/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1763", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1763", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageName": "[concat('stor',uniqueString(resourceGroup().id))]", + "name": "[concat('fap',uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Web/sites", + "name": "[variables('name')]", + "apiVersion": "2019-08-01", + "location": "[resourceGroup().location]", + "kind": "functionapp", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]" + ], + "properties": { + "name": "[variables('name')]", + "siteConfig": { + "appSettings": [ + { + "name": "AzureWebJobsDashboard", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~1" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageName')), '2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[concat(toLower(variables('name')), '9158330da53d')]" + }, + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "6.5.0" + } + ] + }, + "clientAffinityEnabled": false + } + } + ], + "outputs": { + "existingFunctionAppName": { + "type": "string", + "value": "[variables('name')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1764 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1764 new file mode 100644 index 0000000..e416efa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1764 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/logic-app-transform-function/azuredeploy.json", + "/quickstarts/microsoft.web/logic-app-transform-function/azuredeploy.parameters.json" + ], + "timestamp": 1642962910998, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/logic-app-transform-function/azuredeploy.json", + "/quickstarts/microsoft.web/logic-app-transform-function/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1764", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/functions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1764", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingFunctionAppName": { + "type": "string", + "metadata": { + "description": "The name of the function container in which the function has to be created." + }, + "value": "GET-PREREQ-existingFunctionAppName" + }, + "functionName": { + "type": "string", + "defaultValue": "transformfunction", + "metadata": { + "description": "The name of the function." + } + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "GET-PREREQ-existingFunctionAppName/transformfunction", + "type": "Microsoft.Web/sites/functions", + "properties": { + "config": { + "bindings": [ + { + "name": "req", + "webHookType": "genericJson", + "direction": "in", + "type": "httpTrigger" + }, + { + "name": "res", + "direction": "out", + "type": "http" + } + ] + }, + "files": { + "IntegrationXsltException.csx": "//-----------------------------------------------------------------------\r\n// \r\n// All rights reserved.\r\n// \r\n//-----------------------------------------------------------------------\r\n\r\nusing System;\r\nusing System.Net;\r\n\r\n[System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Design\", \"CA1032:ImplementStandardExceptionConstructors\", Justification = \"Not needed.\")]\r\n[System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Usage\", \"CA2237:MarkISerializableTypesWithSerializable\", Justification = \"Not needed.\")]\r\npublic class IntegrationXsltException : Exception\r\n{\r\n public IntegrationXsltException()\r\n {\r\n }\r\n\r\n public IntegrationXsltException(string message) : base(message, null)\r\n {\r\n this.StatusCode = HttpStatusCode.InternalServerError;\r\n }\r\n\r\n public IntegrationXsltException(HttpStatusCode statusCode, string message)\r\n : base(message)\r\n {\r\n this.StatusCode = statusCode;\r\n }\r\n\r\n public IntegrationXsltException(HttpStatusCode statusCode, string message, Exception innerException)\r\n : base(message, innerException)\r\n {\r\n this.StatusCode = statusCode;\r\n }\r\n\r\n public HttpStatusCode StatusCode { get; set; }\r\n}", + "ContentHash.csx": "//-----------------------------------------------------------------------\r\n// \r\n// All rights reserved.\r\n// \r\n//-----------------------------------------------------------------------\r\n\r\nusing Newtonsoft.Json;\r\n\r\npublic class ContentHash\r\n{\r\n public string Algorithm { get; set; }\r\n\r\n public string Value { get; set; }\r\n}\r\n", + "XsltHelper.csx": "//-----------------------------------------------------------------------\r\n// \r\n// All rights reserved.\r\n// \r\n//-----------------------------------------------------------------------\r\n\r\n#load \"ContentEnvelope.csx\"\r\n#load \"ContentHash.csx\"\r\n#load \"ContentLinkDefinition.csx\"\r\n#load \"HttpRequestMessageExtensions.csx\"\r\n#load \"IntegrationXsltException.csx\"\r\n#load \"Validation.csx\"\r\n#load \"XsltInput.csx\"\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Net.Http;\r\nusing System.Runtime.Caching;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Xml;\r\nusing System.Xml.Linq;\r\nusing System.Xml.Xsl;\r\nusing Newtonsoft.Json;\r\nusing Newtonsoft.Json.Linq;\r\n\r\npublic static class XsltHelper\r\n{\r\n\tprivate static readonly MemoryCache CompiledTransformCache = new MemoryCache(\"CompiledTransformCache\");\r\n\r\n\tprivate static readonly CacheItemPolicy CachePolicy = new CacheItemPolicy()\r\n\t{\r\n\t\tSlidingExpiration = new TimeSpan(24, 0, 0)\r\n\t};\r\n\r\n\tpublic static async Task Transform(HttpRequestMessage request, CancellationToken cancellationToken)\r\n\t{\r\n\t\tvar transformRequest = await XsltHelper.GetXsltInput(request, cancellationToken).ConfigureAwait(continueOnCapturedContext: false);\r\n\r\n\t\tValidation.XslTransformRequest(transformRequest);\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tusing (var mapContent = await XsltHelper.GetMapContent(transformRequest.MapContentLink.Uri, cancellationToken).ConfigureAwait(continueOnCapturedContext: false))\r\n\t\t\tusing (var seekableMapContent = new MemoryStream())\r\n\t\t\t{\r\n\t\t\t\tawait mapContent.CopyToAsync(seekableMapContent).ConfigureAwait(continueOnCapturedContext: false);\r\n\r\n\t\t\t\tseekableMapContent.Position = 0;\r\n\r\n\t\t\t\t// NOTE(rarayudu): Using stream readers to take care of encoding issues.\r\n\t\t\t\t// In logic apps RP, we are always storing the schema/map contents using UTF8 encdoing. This will create problems for XMLs which have encoding of type other than UTF8.\r\n\t\t\t\t// Another possibility is to read the content as string and use the StringReader. - Not following that as don't want to load the entire string incase if the schema is large.\r\n\t\t\t\tusing (var transformStreamReader = new StreamReader(stream: seekableMapContent, detectEncodingFromByteOrderMarks: true))\r\n\t\t\t\t{\r\n\t\t\t\t\tvar arguments = XsltHelper.GetXsltArguments(\r\n\t\t\t\t\t\txsltParameters: transformRequest.XsltParameters,\r\n\t\t\t\t\t\ttransformStreamReader: transformStreamReader);\r\n\r\n\t\t\t\t\tvar inputXmlContent = transformRequest.Content.Type == JTokenType.String\r\n\t\t\t\t\t\t? Encoding.UTF8.GetBytes(transformRequest.Content.ToObject())\r\n\t\t\t\t\t\t: transformRequest.Content.ToObject().DecodeAsBytes();\r\n\r\n\t\t\t\t\tvar settings = new XsltSettings(enableDocumentFunction: true, enableScript: true);\r\n\r\n\t\t\t\t\t// NOTE(rarayudu): Set the transform stream reader stream postion to start for the XslCompiledTransform.\r\n\t\t\t\t\ttransformStreamReader.BaseStream.Position = 0;\r\n\r\n\t\t\t\t\tusing (var inputXmlStream = new MemoryStream(inputXmlContent))\r\n\t\t\t\t\tusing (var inputXmlStreamReader = new StreamReader(stream: inputXmlStream, detectEncodingFromByteOrderMarks: true))\r\n\t\t\t\t\tusing (var inputXmlReader = XmlReader.Create(inputXmlStreamReader))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar xsltCompiler = GetCompiledTransformFromCache(mapAbsolutePath: transformRequest.MapContentLink.Uri.AbsolutePath, mapVersion: transformRequest.MapContentLink.ContentVersion);\r\n\r\n\t\t\t\t\t\tif (xsltCompiler == null)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tusing (var transformXmlReader = XmlReader.Create(transformStreamReader))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\txsltCompiler = new XslCompiledTransform();\r\n\t\t\t\t\t\t\t\txsltCompiler.Load(transformXmlReader, settings, new XmlUrlResolver());\r\n\r\n\t\t\t\t\t\t\t\tXsltHelper.CompiledTransformCache.Set(\r\n\t\t\t\t\t\t\t\t\tkey: transformRequest.MapContentLink.Uri.AbsolutePath,\r\n\t\t\t\t\t\t\t\t\tvalue: new TransformCachedItem(mapVersion: transformRequest.MapContentLink.ContentVersion, compiledTransform: xsltCompiler),\r\n\t\t\t\t\t\t\t\t\tpolicy: CachePolicy);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tusing (var outputStream = new MemoryStream())\r\n\t\t\t\t\t\tusing (var outputXmlWriter = XmlWriter.Create(outputStream))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\txsltCompiler.Transform(inputXmlReader, arguments, outputXmlWriter);\r\n\r\n\t\t\t\t\t\t\treturn HttpRequestMessageExtensions.CreateXmlResponse(\r\n\t\t\t\t\t\t\t\trequest: request,\r\n\t\t\t\t\t\t\t\tstatusCode: HttpStatusCode.OK,\r\n\t\t\t\t\t\t\t\tcontent: new ByteArrayContent(outputStream.ToArray()));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (XmlException ex)\r\n\t\t{\r\n\t\t\tthrow new IntegrationXsltException(\r\n\t\t\t\tstatusCode: HttpStatusCode.BadRequest,\r\n\t\t\t\tmessage: string.Format(CultureInfo.InvariantCulture, \"An error occurred while processing input xml. '{0}'\", ex.Message),\r\n\t\t\t\tinnerException: ex);\r\n\t\t}\r\n\t\tcatch (XsltException ex)\r\n\t\t{\r\n\t\t\tthrow new IntegrationXsltException(\r\n\t\t\t\tstatusCode: HttpStatusCode.BadRequest,\r\n\t\t\t\tmessage: string.Format(CultureInfo.InvariantCulture, \"An error occurred while processing map. '{0}'\", ex.Message),\r\n\t\t\t\tinnerException: ex);\r\n\t\t}\r\n\t\tcatch (IntegrationXsltException)\r\n\t\t{\r\n\t\t\tXsltHelper.CompiledTransformCache.Remove(key: transformRequest.MapContentLink.Uri.AbsolutePath);\r\n\r\n\t\t\tthrow;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static async Task GetXsltInput(HttpRequestMessage request, CancellationToken cancellationToken)\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\treturn await request.Content.ReadAsAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);\r\n\t\t}\r\n\t\tcatch (Exception ex)\r\n\t\t{\r\n\t\t\tif (ex is FormatException || ex is ArgumentException || ex is JsonException)\r\n\t\t\t{\r\n\t\t\t\tthrow new IntegrationXsltException(\r\n\t\t\t\t\tstatusCode: HttpStatusCode.BadRequest,\r\n\t\t\t\t\tmessage: string.Format(CultureInfo.InvariantCulture, \"The request content is not valid and could not be deserialized: '{0}'\", ex.Message),\r\n\t\t\t\t\tinnerException: ex);\r\n\t\t\t}\r\n\r\n\t\t\tthrow;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static async Task GetMapContent(Uri mapContentLink, CancellationToken cancellationToken)\r\n\t{\r\n\t\tvar httpClient = new HttpClient();\r\n\t\tvar response = await httpClient.GetAsync(mapContentLink, cancellationToken).ConfigureAwait(continueOnCapturedContext: false);\r\n\r\n\t\tif (response.StatusCode != HttpStatusCode.OK)\r\n\t\t{\r\n\t\t\tvar responseContent = response.Content != null\r\n\t\t\t\t? await response.Content.ReadAsStringAsync().ConfigureAwait(continueOnCapturedContext: false)\r\n\t\t\t\t: string.Empty;\r\n\r\n\t\t\tthrow new IntegrationXsltException(\r\n\t\t\t\tstatusCode: response.StatusCode,\r\n\t\t\t\tmessage: string.Format(CultureInfo.InvariantCulture, \"An error occurred while fetching the map content using the content link: '{0}'. Error: '{1}'\", mapContentLink, responseContent));\r\n\t\t}\r\n\r\n\t\treturn await response.Content.ReadAsStreamAsync().ConfigureAwait(continueOnCapturedContext: false);\r\n\t}\r\n\r\n\tprivate static XsltArgumentList GetXsltArguments(IDictionary xsltParameters, StreamReader transformStreamReader)\r\n\t{\r\n\t\tvar arguments = new XsltArgumentList();\r\n\t\tif (xsltParameters != null)\r\n\t\t{\r\n\t\t\tforeach (KeyValuePair parameter in xsltParameters)\r\n\t\t\t{\r\n\t\t\t\tif (parameter.Key.Contains(':'))\r\n\t\t\t\t{\r\n\t\t\t\t\tvar splitArgument = parameter.Key.Split(':');\r\n\t\t\t\t\tif (splitArgument.Length == 2)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t transformStreamReader.BaseStream.Position = 0;\r\n\t\t\t\t\t\targuments.AddParam(splitArgument[1], GetParameterNamespace(splitArgument[0], transformStreamReader), parameter.Value ?? string.Empty);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\targuments.AddParam(parameter.Key, string.Empty, parameter.Value ?? string.Empty);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\targuments.AddParam(parameter.Key, string.Empty, parameter.Value ?? string.Empty);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn arguments;\r\n\t}\r\n\r\n\tprivate static string GetParameterNamespace(string namespacePrefix, TextReader transformStreamReader)\r\n\t{\r\n\t\tvar xsltDocument = XDocument.Load(transformStreamReader);\r\n\t\tif (xsltDocument.Root != null)\r\n\t\t{\r\n\t\t\tvar namespaceOfPrefix = xsltDocument.Root.GetNamespaceOfPrefix(namespacePrefix);\r\n\t\t\treturn namespaceOfPrefix != null ? namespaceOfPrefix.NamespaceName : string.Empty;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthrow new IntegrationXsltException(HttpStatusCode.BadRequest, \"The provided map is not valid.\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static XslCompiledTransform GetCompiledTransformFromCache(string mapAbsolutePath, string mapVersion)\r\n\t{\r\n\t\tif (CompiledTransformCache.Contains(mapAbsolutePath))\r\n\t\t{\r\n\t\t\tvar cachedData = (TransformCachedItem)CompiledTransformCache.Get(key: mapAbsolutePath);\r\n\r\n\t\t\tif (cachedData.MapVersion == mapVersion)\r\n\t\t\t{\r\n\t\t\t\treturn cachedData.CompiledTransform;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate class TransformCachedItem\r\n\t{\r\n\t\tpublic TransformCachedItem(string mapVersion, XslCompiledTransform compiledTransform)\r\n\t\t{\r\n\t\t\tthis.MapVersion = mapVersion;\r\n\t\t\tthis.CompiledTransform = compiledTransform;\r\n\t\t}\r\n\r\n\t\tpublic string MapVersion { get; set; }\r\n\r\n\t\tpublic XslCompiledTransform CompiledTransform { get; set; }\r\n\t}\r\n}", + "HttpRequestMessageExtensions.csx": "//-----------------------------------------------------------------------\r\n// \r\n// All rights reserved.\r\n// \r\n//-----------------------------------------------------------------------\r\n\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics.CodeAnalysis;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Net.Http;\r\nusing System.Net.Http.Headers;\r\n\r\npublic static class HttpRequestMessageExtensions\r\n{\r\n public static readonly string HeaderClientRequestId = \"x-ms-client-request-id\";\r\n\r\n [SuppressMessage(\"Microsoft.Design\", \"CA1062:Validate arguments of public methods\", Justification = \"By design. As this is a extension method caller has to take care of it.\")]\r\n public static string GetClientRequestId(HttpRequestMessage request)\r\n {\r\n return HttpRequestMessageExtensions.GetFirstOrDefaultHeader(request: request, name: HttpRequestMessageExtensions.HeaderClientRequestId, defaultValue: string.Empty);\r\n }\r\n\r\n [SuppressMessage(\"Microsoft.Design\", \"CA1026:DefaultParametersShouldNotBeUsed\", Justification = \"By design\")]\r\n [SuppressMessage(\"Microsoft.Design\", \"CA1062:Validate arguments of public methods\", Justification = \"By design. As this is a extension method caller has to take care of it.\")]\r\n public static string GetFirstOrDefaultHeader(HttpRequestMessage request, string name, string defaultValue = null)\r\n {\r\n IEnumerable values = (IEnumerable)null;\r\n\r\n if (request.Headers.TryGetValues(name, out values) && values.Any())\r\n {\r\n return values.First();\r\n }\r\n\r\n return defaultValue;\r\n }\r\n\r\n [SuppressMessage(\"Microsoft.Design\", \"CA1062:Validate arguments of public methods\", Justification = \"By design. As this is a extension method caller has to take care of it.\")]\r\n public static HttpResponseMessage CreateXmlResponse(HttpRequestMessage request, HttpStatusCode statusCode, HttpContent content)\r\n {\r\n var response = request.CreateResponse(statusCode);\r\n\r\n try\r\n {\r\n if (content != null)\r\n {\r\n response.Content = content;\r\n response.Content.Headers.ContentType = new MediaTypeHeaderValue(\"application/xml\");\r\n }\r\n }\r\n catch\r\n {\r\n response.Dispose();\r\n response = null;\r\n throw;\r\n }\r\n\r\n return response;\r\n }\r\n}\r\n", + "run.csx": "#r \"Newtonsoft.Json\"\r\n#r \"System.Xml.Linq\"\r\n#r \"System.Runtime.Caching\"\r\n\r\n#load \"XsltHelper.csx\"\r\n#load \"HttpRequestMessageExtensions.csx\"\r\n#load \"IntegrationXsltException.csx\"\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Net;\r\nusing System.Net.Http;\r\nusing System.Net.Http.Headers;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Xml;\r\nusing System.Xml.Linq;\r\nusing System.Xml.Xsl;\r\nusing Newtonsoft.Json;\r\nusing Newtonsoft.Json.Linq;\r\n\r\npublic static async Task Run(HttpRequestMessage req, TraceWriter log, CancellationToken token)\r\n{\r\n var clientRequestId = string.Empty;\r\n\r\n try\r\n {\r\n clientRequestId = HttpRequestMessageExtensions.GetClientRequestId(request: req);\r\n log.Info(string.Format(\"Executing transform operation. client request id: '{0}'\", clientRequestId));\r\n return await XsltHelper.Transform(req, token).ConfigureAwait(continueOnCapturedContext: false);\r\n }\r\n catch (IntegrationXsltException ex)\r\n {\r\n log.Info(string.Format(\"An exception occurred while performing transform. client request id: '{0}' and exception: '{1}'\", clientRequestId, ex.ToString()));\r\n return req.CreateErrorResponse(ex.StatusCode, ex.Message);\r\n }\r\n catch (Exception ex)\r\n {\r\n log.Info(string.Format(\"An exception occurred while performing transform. client request id: '{0}' and exception: '{1}'\", clientRequestId, ex.ToString()));\r\n throw;\r\n }\r\n}\r\n", + "XsltInput.csx": "//-----------------------------------------------------------------------\r\n// \r\n// All rights reserved.\r\n// \r\n//-----------------------------------------------------------------------\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing Newtonsoft.Json.Linq;\r\n\r\npublic class XsltInput\r\n{\r\n public JToken Content { get; set; }\r\n\r\n [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Usage\", \"CA2227:CollectionPropertiesShouldBeReadOnly\", Justification = \"By design\")]\r\n public IDictionary XsltParameters { get; set; }\r\n\r\n public ContentLinkDefinition MapContentLink { get; set; }\r\n}", + "Validation.csx": "//-----------------------------------------------------------------------\r\n// \r\n// All rights reserved.\r\n// \r\n//-----------------------------------------------------------------------\r\n\r\nusing System.Globalization;\r\nusing System.Net;\r\n\r\npublic static class Validation\r\n{\r\n public static void XslTransformRequest(XsltInput xsltInput)\r\n {\r\n if (xsltInput == null || xsltInput.Content == null)\r\n {\r\n throw new IntegrationXsltException(\r\n statusCode: HttpStatusCode.BadRequest,\r\n message: \"The provided xml content to transform is null or empty.\");\r\n }\r\n\r\n if (xsltInput.MapContentLink == null)\r\n {\r\n throw new IntegrationXsltException(\r\n statusCode: HttpStatusCode.BadRequest,\r\n message: \"The provided content link for the map is null or empty.\");\r\n }\r\n\r\n if (xsltInput.MapContentLink.Uri == null)\r\n {\r\n throw new IntegrationXsltException(\r\n statusCode: HttpStatusCode.BadRequest,\r\n message: \"The provided uri in the content link for the map is null or empty.\");\r\n }\r\n\r\n if (!xsltInput.MapContentLink.Uri.IsAbsoluteUri)\r\n {\r\n throw new IntegrationXsltException(\r\n statusCode: HttpStatusCode.BadRequest,\r\n message: string.Format(CultureInfo.InvariantCulture, \"The provided uri '{0}' in the content link for the map is not a valid uri.\", xsltInput.MapContentLink.Uri));\r\n }\r\n }\r\n}\r\n", + "ContentEnvelope.csx": "//-----------------------------------------------------------------------\r\n// \r\n// All rights reserved.\r\n// \r\n//-----------------------------------------------------------------------\r\n\r\nusing System;\r\nusing System.Net.Mime;\r\nusing System.Text;\r\nusing Newtonsoft.Json;\r\n\r\npublic class ContentEnvelope\r\n{\r\n [JsonProperty(PropertyName = \"$content-encoding\", Required = Required.Default)]\r\n public string ContentEncoding { get; set; }\r\n\r\n [JsonProperty(PropertyName = \"$content-type\", Required = Required.Always)]\r\n public string ContentType { get; set; }\r\n\r\n [JsonProperty(PropertyName = \"$content\", Required = Required.Always)]\r\n public string Content { get; set; }\r\n\r\n public string DecodeAsString()\r\n {\r\n var contentType = new ContentType(this.ContentType);\r\n var encoding = contentType.CharSet != null ? Encoding.GetEncoding(contentType.CharSet) : Encoding.UTF8;\r\n\r\n return encoding.GetString(Convert.FromBase64String(this.Content));\r\n }\r\n\r\n public byte[] DecodeAsBytes()\r\n {\r\n return Convert.FromBase64String(this.Content);\r\n }\r\n}", + "ContentLinkDefinition.csx": "//-----------------------------------------------------------------------\r\n// \r\n// All rights reserved.\r\n// \r\n//-----------------------------------------------------------------------\r\n\r\n#load \"ContentHash.csx\"\r\n\r\nusing System;\r\nusing Newtonsoft.Json;\r\nusing Newtonsoft.Json.Linq;\r\n\r\npublic class ContentLinkDefinition\r\n{\r\n [JsonProperty(Required = Required.Always)]\r\n public Uri Uri { get; set; }\r\n\r\n public string ContentVersion { get; set; }\r\n\r\n public long? ContentSize { get; set; }\r\n\r\n public ContentHash ContentHash { get; set; }\r\n\r\n public JToken Metadata { get; set; }\r\n}" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1765 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1765 new file mode 100644 index 0000000..d54357d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1765 @@ -0,0 +1,250 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/mobile-app-create/azuredeploy.json", + "/quickstarts/microsoft.web/mobile-app-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962911008, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/mobile-app-create/azuredeploy.json", + "/quickstarts/microsoft.web/mobile-app-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1765", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.notificationhubs/namespaces", + "microsoft.sql/servers", + "microsoft.notificationhubs/namespaces/notificationhubs", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1765", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "metadata": { + "description": "The name of the mobile app that you wish to create." + }, + "value": "GEN-UNIQUE" + }, + "hostingPlanSettings": { + "type": "object", + "defaultValue": { + "tier": "Standard", + "skuName": "S1", + "capacity": 0 + }, + "metadata": { + "description": "The settings of the existing hosting plan." + } + }, + "sqlServerAdminLogin": { + "type": "string", + "metadata": { + "description": "The account name to use for the database server administrator." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The password to use for the database server administrator." + }, + "value": "GEN-PASSWORD" + }, + "sqlDatabaseEdition": { + "type": "string", + "metadata": { + "description": "The type of database to create." + }, + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "value": "Basic" + }, + "sqlDatabaseCollation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "The database collation for governing the proper use of characters." + } + }, + "sqlDatabaseMaxSizeBytes": { + "type": "string", + "defaultValue": "1073741824", + "metadata": { + "description": "The maximum size, in bytes, for the database" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "uniqueAppName": "[concat(parameters('appName'), '-', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[concat(variables('uniqueAppName'), '-plan')]", + "databaseServerName": "[concat(variables('uniqueAppName'), '-sqlserver')]", + "databaseName": "[concat(variables('uniqueAppName'), '-sqldb')]", + "notificationHubNamespace": "[concat(variables('uniqueAppName'), '-namespace')]", + "notificationHubName": "[concat(variables('uniqueAppName'), '-hub')]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "tier": "Standard", + "capacity": 0 + }, + "properties": { + "numberOfWorkers": 1 + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/sites", + "name": "[variables('uniqueAppName')]", + "location": "[resourceGroup().location]", + "kind": "mobileapp", + "properties": { + "name": "[variables('uniqueAppName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + }, + "dependsOn": [ + "[variables('hostingPlanName')]" + ], + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[variables('uniqueAppName')]" + ], + "properties": { + "MS_MobileServiceName": "[variables('uniqueAppName')]", + "MS_NotificationHubName": "[variables('notificationHubName')]" + } + }, + { + "apiVersion": "2019-08-01", + "name": "connectionstrings", + "type": "config", + "dependsOn": [ + "[variables('uniqueAppName')]", + "[variables('notificationHubName')]", + "[variables('databaseName')]" + ], + "properties": { + "MS_TableConnectionString": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers', variables('databaseServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('databaseName'), ';User Id=', parameters('sqlServerAdminLogin'), '@', variables('databaseServerName'), ';Password=', parameters('sqlServerAdminPassword'), ';')]", + "type": "SQLServer" + }, + "MS_NotificationHubConnectionString": { + "value": "[listkeys(resourceId('Microsoft.NotificationHubs/namespaces/notificationHubs/authorizationRules', variables('notificationHubNamespace'), variables('notificationHubName'), 'DefaultFullSharedAccessSignature'), '2017-04-01').primaryConnectionString]", + "type": "Custom" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "providers/links", + "name": "Microsoft.Resources/SiteToHub", + "dependsOn": [ + "[variables('uniqueAppName')]", + "[variables('notificationHubName')]" + ], + "properties": { + "targetId": "[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', variables('notificationHubNamespace'), variables('notificationHubName'))]" + } + } + ] + }, + { + "name": "[variables('databaseServerName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02-preview", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "name": "[variables('databaseName')]", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "[variables('databaseServerName')]" + ], + "properties": { + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "1073741824" + } + }, + { + "type": "firewallrules", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "[variables('databaseServerName')]" + ], + "location": "[resourceGroup().location]", + "name": "open", + "properties": { + "endIpAddress": "255.255.255.255", + "startIpAddress": "0.0.0.0" + } + } + ] + }, + { + "apiVersion": "2017-04-01", + "type": "Microsoft.NotificationHubs/namespaces", + "name": "[variables('notificationHubNamespace')]", + "location": "[resourceGroup().location]", + "properties": { + "region": "[resourceGroup().location]", + "namespaceType": "NotificationHub" + } + }, + { + "apiVersion": "2017-04-01", + "name": "[concat(variables('notificationHubNamespace'), '/', variables('uniqueAppName'), '-hub')]", + "type": "Microsoft.NotificationHubs/namespaces/notificationHubs", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('notificationHubNamespace')]" + ], + "properties": {} + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1766 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1766 new file mode 100644 index 0000000..3818f48 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1766 @@ -0,0 +1,316 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/private-endpoint-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/private-endpoint-webapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962911019, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/private-endpoint-webapp/azuredeploy.json", + "/quickstarts/microsoft.web/private-endpoint-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1766", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.web/sites/config", + "microsoft.web/sites/hostnamebindings", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.web/serverfarms", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1766", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetwork_name": { + "type": "String", + "metadata": { + "description": "Name of the VNet" + }, + "value": "GEN-VNET-NAME" + }, + "serverFarm_name": { + "type": "String", + "defaultValue": "ServerFarm1", + "metadata": { + "description": "Name of the Web Farm" + }, + "value": "GEN-UNIQUE" + }, + "site_name": { + "type": "String", + "metadata": { + "description": "Web App name must be unique DNS name worldwide" + }, + "value": "GEN-UNIQUE" + }, + "virtualNetwork_CIDR": { + "type": "String", + "defaultValue": "10.200.0.0/16", + "metadata": { + "description": "CIDR of your VNet" + } + }, + "subnet1_name": { + "type": "String", + "metadata": { + "description": "Name of the Subnet" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "subnet1_CIDR": { + "type": "String", + "defaultValue": "10.200.1.0/24", + "metadata": { + "description": "CIDR of your subnet" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "SKU_name": { + "type": "String", + "defaultValue": "P1v2", + "metadata": { + "description": "SKU name, must be minimum P1v2" + } + }, + "SKU_tier": { + "type": "String", + "defaultValue": "PremiumV2", + "metadata": { + "description": "SKU tier, must be Premium" + } + }, + "SKU_size": { + "type": "String", + "defaultValue": "P1v2", + "metadata": { + "description": "SKU size, must be minimum P1v2" + } + }, + "SKU_family": { + "type": "String", + "defaultValue": "P1v2", + "metadata": { + "description": "SKU family, must be minimum P1v2" + } + }, + "privateEndpoint_name": { + "type": "string", + "metadata": { + "description": "Name of your Private Endpoint" + }, + "value": "GEN-UNIQUE" + }, + "privateLinkConnection_name": { + "type": "string", + "metadata": { + "description": "Link name between your Private Endpoint and your Web App" + }, + "value": "GEN-UNIQUE" + }, + "privateDNSZone_name": { + "type": "string", + "defaultValue": "privatelink.azurewebsites.net", + "metadata": { + "description": "Name must be privatelink.azurewebsites.net" + } + }, + "webapp_dns_name": { + "type": "string", + "defaultValue": ".azurewebsites.net", + "metadata": { + "description": "Name must be privatelink.azurewebsites.net" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-04-01", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.200.0.0/16" + ] + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-04-01", + "name": "GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ], + "properties": { + "addressPrefix": "10.200.1.0/24", + "privateEndpointNetworkPolicies": "Disabled" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "P1v2", + "tier": "PremiumV2", + "size": "P1v2", + "family": "P1v2", + "capacity": 1 + }, + "kind": "app" + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE" + ], + "kind": "app", + "properties": { + "enabled": true, + "hostNameSslStates": [ + { + "name": "GEN-UNIQUE.azurewebsites.net", + "sslState": "Disabled", + "hostType": "Standard" + }, + { + "name": "GEN-UNIQUE.scm.azurewebsites.net", + "sslState": "Disabled", + "hostType": "Repository" + } + ], + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUE/web", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "ftpsState": "AllAllowed" + } + }, + { + "type": "Microsoft.Web/sites/hostNameBindings", + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUE/GEN-UNIQUE.azurewebsites.net", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "siteName": "GEN-UNIQUE", + "hostNameType": "Verified" + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2019-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE", + "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + ], + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + }, + "privateLinkServiceConnections": [ + { + "name": "GEN-UNIQUE", + "properties": { + "privateLinkServiceId": "Microsoft.Web/sites/GEN-UNIQUE", + "groupIds": [ + "sites" + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "privatelink.azurewebsites.net", + "location": "global", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "privatelink.azurewebsites.net/privatelink.azurewebsites.net-link", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.azurewebsites.net", + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "GEN-UNIQUE/dnsgroupname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.azurewebsites.net", + "Microsoft.Network/privateEndpoints/GEN-UNIQUE" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config1", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.azurewebsites.net" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1767 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1767 new file mode 100644 index 0000000..fb9ae61 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1767 @@ -0,0 +1,1173 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/private-webapp-with-app-gateway-and-apim/azuredeploy.json", + "/quickstarts/microsoft.web/private-webapp-with-app-gateway-and-apim/azuredeploy.parameters.json" + ], + "timestamp": 1642962911032, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/private-webapp-with-app-gateway-and-apim/azuredeploy.json", + "/quickstarts/microsoft.web/private-webapp-with-app-gateway-and-apim/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1767", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.web/sites", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.network/privatednszones/a", + "microsoft.operationalinsights/workspaces", + "microsoft.keyvault/vaults", + "microsoft.network/privatednszones", + "microsoft.web/sites/config", + "microsoft.keyvault/vaults/secrets", + "microsoft.network/applicationgateways", + "microsoft.apimanagement/service/loggers", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups", + "microsoft.insights/components", + "microsoft.web/serverfarms", + "microsoft.apimanagement/service/diagnostics", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1767", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "8187528492859930539" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Azure region for the specified resources." + } + }, + "apiManagementPublisherName": { + "type": "string", + "metadata": { + "description": "A unique name for the API Management service. The service name refers to both the service and the corresponding Azure resource. The service name is used to generate a default domain name: .azure-api.net." + }, + "value": "Contoso" + }, + "apiManagementPublisherEmailAddress": { + "type": "string", + "metadata": { + "description": "The email address to which all the notifications from API Management will be sent." + }, + "value": "email@example.com" + }, + "apiManagementSku": { + "type": "string", + "defaultValue": "Developer", + "allowedValues": [ + "Developer", + "Premium" + ], + "metadata": { + "description": "The API Management SKU." + } + }, + "apiManagementCustomDnsName": { + "type": "string", + "metadata": { + "description": "A custom domain name to be used for the API Management service." + }, + "value": "GEN-SELFSIGNED-CERT-DNSNAME" + }, + "apiManagementPortalCustomHostname": { + "type": "string", + "metadata": { + "description": "A custom domain name for the API Management service developer portal (e.g., portal.consoto.com). " + }, + "value": "portal.azurequickstarts.net" + }, + "apiManagementProxyCustomHostname": { + "type": "string", + "metadata": { + "description": "A custom domain name for the API Management service gateway/proxy endpoint (e.g., api.consoto.com)." + }, + "value": "api.azurequickstarts.net" + }, + "apiManagementManagementCustomHostname": { + "type": "string", + "metadata": { + "description": "A custom domain name for the API Management service management portal (e.g., management.consoto.com)." + }, + "value": "management.azurequickstarts.net" + }, + "apiManagementPortalCertificatePassword": { + "type": "secureString", + "metadata": { + "description": "Password for corresponding to the certificate for the API Management custom developer portal domain name." + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "apiManagementPortalCustomHostnameBase64EncodedCertificate": { + "type": "secureString", + "metadata": { + "description": "Used by Application Gateway, the Base64 encoded PFX certificate corresponding to the API Management custom developer portal domain name." + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "apiManagementProxyCertificatePassword": { + "type": "secureString", + "metadata": { + "description": "Password for corresponding to the certificate for the API Management custom proxy domain name." + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "apiManagementProxyCustomHostnameBase64EncodedCertificate": { + "type": "secureString", + "metadata": { + "description": "Used by Application Gateway, the Base64 encoded PFX certificate corresponding to the API Management custom proxy domain name." + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "apiManagementManagementCertificatePassword": { + "type": "secureString", + "metadata": { + "description": "Password for corresponding to the certificate for the API Management custom management domain name." + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "apiManagementManagementCustomHostnameBase64EncodedCertificate": { + "type": "secureString", + "metadata": { + "description": "Used by Application Gateway, the Base64 encoded PFX certificate corresponding to the API Management custom management domain name." + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "applicationGatewayTrustedRootBase64EncodedCertificate": { + "type": "secureString", + "metadata": { + "description": "Used by Application Gateway, the Base64 encoded CER/CRT certificate corresponding to the root certificate for Application Gateway." + }, + "value": "GEN-SELFSIGNED-CERT-CERDATA" + }, + "useWellKnownCertificateAuthority": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Flag to indicate if certificates used by Application Gateway were signed by a public Certificate Authority." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/20", + "metadata": { + "description": "The virtual network IP space to use for the new virutal network." + } + }, + "subnetAppServiceIntAddressPrefix": { + "type": "string", + "defaultValue": "10.0.3.0/26", + "metadata": { + "description": "The IP space to use for the subnet for Azure App Service regional virtual network integration." + } + }, + "subnetPrivateEndpointAddressPrefix": { + "type": "string", + "defaultValue": "10.0.4.0/26", + "metadata": { + "description": "The IP space to use for the subnet for private endpoints." + } + }, + "subnetApiManagementAddressPrefix": { + "type": "string", + "defaultValue": "10.0.5.0/24", + "metadata": { + "description": "Address prefix for the api subnet." + } + }, + "subnetApplicationGatewayAddressPrefix": { + "type": "string", + "defaultValue": "10.0.6.0/24", + "metadata": { + "description": "Address prefix for the gateway subnet." + } + }, + "webAppSkuName": { + "type": "string", + "defaultValue": "P1v2", + "allowedValues": [ + "P1v2", + "P1v3", + "P2v2", + "P2v3", + "P3v2", + "P3v3" + ], + "metadata": { + "description": "SKU name, must be minimum P1v2" + } + } + }, + "variables": { + "baseName": "[uniqueString(resourceGroup().id)]", + "keyVaultName": "[format('kv-{0}', variables('baseName'))]", + "applicationGatewayName": "[format('agw-{0}', variables('baseName'))]", + "apiManagementServiceName": "[format('apim-{0}', variables('baseName'))]", + "appGatewayPublicIpAddressName": "[format('pip-{0}-agw', variables('baseName'))]", + "vnetName": "[format('vnet-{0}', variables('baseName'))]", + "subnetApiManagementName": "[format('snet-{0}-apim', variables('baseName'))]", + "subnetAppGatewayName": "[format('snet-{0}-agw', variables('baseName'))]", + "subnetPrivateEndpointName": "[format('snet-{0}-pe', variables('baseName'))]", + "subnetAppServiceIntName": "[format('snet-{0}-ase', variables('baseName'))]", + "nsgAppGatewayName": "[format('nsg-{0}-agw', variables('baseName'))]", + "nsgApiManagementName": "[format('nsg-{0}-apim', variables('baseName'))]", + "apimSubnetId": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-apim', variables('baseName'))]", + "appGatewaySubnetId": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-agw', variables('baseName'))]", + "appServiceIntegrationSubnetId": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-ase', variables('baseName'))]", + "privateEndpointSubnetId": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-pe', variables('baseName'))]", + "webAppName": "[format('web-{0}', variables('baseName'))]", + "applicationGatewayTrustedRootCertificates": [ + { + "name": "trustedrootcert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-CERDATA" + } + } + ], + "applicationGatewayTrustedRootCertificateReferences": [ + { + "id": "Microsoft.Network/applicationGateways/trustedRootCertificates/[format('agw-{0}', variables('baseName'))]/trustedrootcert" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/privateDnsZones/A", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('apiManagementCustomDnsName'), 'api')]", + "properties": { + "ttl": 3600, + "aRecords": [ + { + "ipv4Address": "[reference(resourceId('Microsoft.ApiManagement/service', variables('apiManagementServiceName'))).privateIPAddresses[0]]" + } + ] + }, + "dependsOn": [ + "Microsoft.ApiManagement/service/[format('apim-{0}', variables('baseName'))]", + "Microsoft.Network/privateDnsZones/GEN-SELFSIGNED-CERT-DNSNAME" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('apiManagementCustomDnsName'), 'management')]", + "properties": { + "ttl": 3600, + "aRecords": [ + { + "ipv4Address": "[reference(resourceId('Microsoft.ApiManagement/service', variables('apiManagementServiceName'))).privateIPAddresses[0]]" + } + ] + }, + "dependsOn": [ + "Microsoft.ApiManagement/service/[format('apim-{0}', variables('baseName'))]", + "Microsoft.Network/privateDnsZones/GEN-SELFSIGNED-CERT-DNSNAME" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('apiManagementCustomDnsName'), 'portal')]", + "properties": { + "ttl": 3600, + "aRecords": [ + { + "ipv4Address": "[reference(resourceId('Microsoft.ApiManagement/service', variables('apiManagementServiceName'))).privateIPAddresses[0]]" + } + ] + }, + "dependsOn": [ + "Microsoft.ApiManagement/service/[format('apim-{0}', variables('baseName'))]", + "Microsoft.Network/privateDnsZones/GEN-SELFSIGNED-CERT-DNSNAME" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('apiManagementCustomDnsName'), 'privateDnsZoneLink')]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[format('vnet-{0}', variables('baseName'))]" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/GEN-SELFSIGNED-CERT-DNSNAME", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', variables('baseName'))]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', 'privatelink.azurewebsites.net', 'webAppPrivateDnsZoneLink')]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[format('vnet-{0}', variables('baseName'))]" + } + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', variables('baseName'))]", + "Microsoft.Network/privateDnsZones/privatelink.azurewebsites.net" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}/{1}', format('pe-{0}-sites', variables('baseName')), 'webAppPrivateDnsZoneGroup')]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.azurewebsites.net" + } + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', 'privatelink.azurewebsites.net')]", + "[resourceId('Microsoft.Network/privateEndpoints', format('pe-{0}-sites', variables('baseName')))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}/{1}', format('pe-{0}-kv', variables('baseName')), 'keyVaultPrivateDnsZoneGroup')]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.vaultcore.azure.net" + } + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/privateDnsZones', 'privatelink.vaultcore.azure.net')]", + "[resourceId('Microsoft.Network/privateEndpoints', format('pe-{0}-kv', variables('baseName')))]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', 'privatelink.vaultcore.azure.net', 'keyVaultPrivateDnsZoneLink')]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[format('vnet-{0}', variables('baseName'))]" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.vaultcore.azure.net", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', variables('baseName'))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', variables('webAppName'), 'web')]", + "properties": { + "ftpsState": "Disabled", + "minTlsVersion": "1.2", + "detailedErrorLoggingEnabled": true, + "httpLoggingEnabled": true, + "requestTracingEnabled": true, + "remoteDebuggingEnabled": false + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('web-{0}', variables('baseName'))]" + ] + }, + { + "type": "Microsoft.ApiManagement/service/loggers", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', variables('apiManagementServiceName'), 'appInsightsLogger')]", + "properties": { + "loggerType": "applicationInsights", + "credentials": { + "instrumentationKey": "[reference(resourceId('Microsoft.Insights/components', format('ai-{0}', variables('baseName')))).InstrumentationKey]" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.ApiManagement/service', variables('apiManagementServiceName'))]", + "[resourceId('Microsoft.Insights/components', format('ai-{0}', variables('baseName')))]" + ] + }, + { + "type": "Microsoft.ApiManagement/service/diagnostics", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', variables('apiManagementServiceName'), 'applicationinsights')]", + "properties": { + "loggerId": "Microsoft.ApiManagement/service/loggers/[format('apim-{0}', variables('baseName'))]/appInsightsLogger", + "logClientIp": true, + "alwaysLog": "allErrors", + "verbosity": "information", + "sampling": { + "percentage": 100, + "samplingType": "fixed" + }, + "httpCorrelationProtocol": "Legacy" + }, + "dependsOn": [ + "Microsoft.ApiManagement/service/[format('apim-{0}', variables('baseName'))]", + "Microsoft.ApiManagement/service/loggers/[format('apim-{0}', variables('baseName'))]/appInsightsLogger" + ] + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2021-04-01-preview", + "name": "[format('{0}/{1}', variables('keyVaultName'), format('kvs-{0}-aikey', variables('baseName')))]", + "properties": { + "value": "[reference(resourceId('Microsoft.Insights/components', format('ai-{0}', variables('baseName')))).InstrumentationKey]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Insights/components', format('ai-{0}', variables('baseName')))]", + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]" + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-03-01", + "name": "[format('vnet-{0}', variables('baseName'))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/20" + ] + }, + "subnets": [ + { + "name": "[format('snet-{0}-ase', variables('baseName'))]", + "properties": { + "addressPrefix": "10.0.3.0/26", + "delegations": [ + { + "name": "delegation", + "properties": { + "serviceName": "Microsoft.Web/serverFarms" + } + } + ] + } + }, + { + "name": "[format('snet-{0}-pe', variables('baseName'))]", + "properties": { + "addressPrefix": "10.0.4.0/26", + "privateEndpointNetworkPolicies": "Disabled" + } + }, + { + "name": "[format('snet-{0}-apim', variables('baseName'))]", + "properties": { + "addressPrefix": "10.0.5.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('nsg-{0}-apim', variables('baseName'))]" + } + } + }, + { + "name": "[format('snet-{0}-agw', variables('baseName'))]", + "properties": { + "addressPrefix": "10.0.6.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('nsg-{0}-agw', variables('baseName'))]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[format('nsg-{0}-apim', variables('baseName'))]", + "Microsoft.Network/networkSecurityGroups/[format('nsg-{0}-agw', variables('baseName'))]" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "[format('nsg-{0}-agw', variables('baseName'))]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "agw-in", + "properties": { + "direction": "Inbound", + "access": "Allow", + "protocol": "*", + "description": "App Gateway inbound", + "priority": 100, + "sourceAddressPrefix": "GatewayManager", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "65200-65535" + } + }, + { + "name": "https-in", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound", + "description": "Allow HTTPS Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "[format('nsg-{0}-apim', variables('baseName'))]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "apim-in", + "properties": { + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "description": "API Management inbound", + "priority": 100, + "sourceAddressPrefix": "ApiManagement", + "sourcePortRange": "*", + "destinationAddressPrefix": "VirtualNetwork", + "destinationPortRange": "3443" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-03-01", + "name": "[format('pip-{0}-agw', variables('baseName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "GEN-SELFSIGNED-CERT-DNSNAME", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink.azurewebsites.net", + "location": "global" + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2021-02-01", + "name": "[format('pe-{0}-sites', variables('baseName'))]", + "location": "[resourceGroup().location]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-pe', variables('baseName'))]" + }, + "privateLinkServiceConnections": [ + { + "name": "[format('plsc-{0}-sites', variables('baseName'))]", + "properties": { + "privateLinkServiceId": "Microsoft.Web/sites/[format('web-{0}', variables('baseName'))]", + "groupIds": [ + "sites" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('web-{0}', variables('baseName'))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2021-02-01", + "name": "[format('pe-{0}-kv', variables('baseName'))]", + "location": "[resourceGroup().location]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-pe', variables('baseName'))]", + "name": "[format('snet-{0}-pe', variables('baseName'))]" + }, + "privateLinkServiceConnections": [ + { + "id": "Microsoft.KeyVault/vaults/[format('kv-{0}', variables('baseName'))]", + "name": "[format('plsc-{0}-kv', variables('baseName'))]", + "properties": { + "privateLinkServiceId": "Microsoft.KeyVault/vaults/[format('kv-{0}', variables('baseName'))]", + "groupIds": [ + "vault" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/[format('kv-{0}', variables('baseName'))]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink.vaultcore.azure.net", + "location": "Global" + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[format('ai-{0}', variables('baseName'))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web", + "WorkspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', format('log-{0}', variables('baseName')))]" + }, + "dependsOn": [ + "[resourceId('Microsoft.OperationalInsights/workspaces', format('log-{0}', variables('baseName')))]" + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2021-06-01", + "name": "[format('log-{0}', variables('baseName'))]", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + } + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2021-01-01", + "name": "[format('plan-{0}', variables('baseName'))]", + "location": "[resourceGroup().location]", + "kind": "app", + "sku": { + "name": "P1v2", + "capacity": 1 + }, + "properties": {} + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "[format('web-{0}', variables('baseName'))]", + "location": "[resourceGroup().location]", + "kind": "app", + "properties": { + "httpsOnly": true, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', format('plan-{0}', variables('baseName')))]", + "virtualNetworkSubnetId": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-ase', variables('baseName'))]", + "siteConfig": { + "vnetRouteAllEnabled": true + } + }, + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]", + "[resourceId('Microsoft.Web/serverfarms', format('plan-{0}', variables('baseName')))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2021-01-15", + "name": "[format('{0}/appsettings', variables('webAppName'))]", + "properties": { + "APPINSIGHTS_INSTRUMENTATIONKEY": "[format('@Microsoft.KeyVault(SecretUri={0})', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), format('kvs-{0}-aikey', variables('baseName')))).secretUri)]" + }, + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), format('kvs-{0}-aikey', variables('baseName')))]", + "[resourceId('Microsoft.Web/sites', variables('webAppName'))]" + ] + }, + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2020-12-01", + "name": "[format('apim-{0}', variables('baseName'))]", + "location": "[resourceGroup().location]", + "sku": { + "capacity": 1, + "name": "Developer" + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "Contoso", + "virtualNetworkType": "Internal", + "virtualNetworkConfiguration": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-apim', variables('baseName'))]" + }, + "hostnameConfigurations": [ + { + "type": "DeveloperPortal", + "hostName": "portal.azurequickstarts.net", + "encodedCertificate": "GEN-SELFSIGNED-CERT-PFXDATA", + "certificatePassword": "GEN-SELFSIGNED-CERT-PASSWORD", + "negotiateClientCertificate": false + }, + { + "type": "Proxy", + "hostName": "api.azurequickstarts.net", + "encodedCertificate": "GEN-SELFSIGNED-CERT-PFXDATA", + "certificatePassword": "GEN-SELFSIGNED-CERT-PASSWORD", + "negotiateClientCertificate": false + }, + { + "type": "Management", + "hostName": "management.azurequickstarts.net", + "encodedCertificate": "GEN-SELFSIGNED-CERT-PFXDATA", + "certificatePassword": "GEN-SELFSIGNED-CERT-PASSWORD", + "negotiateClientCertificate": false + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', variables('baseName'))]" + ] + }, + { + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.ApiManagement/service/{0}', variables('apiManagementServiceName'))]", + "name": "apiManagementDiagnosticSettings", + "properties": { + "workspaceId": "[resourceId('Microsoft.OperationalInsights/workspaces', format('log-{0}', variables('baseName')))]", + "logs": [ + { + "category": "GatewayLogs", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.ApiManagement/service', variables('apiManagementServiceName'))]", + "[resourceId('Microsoft.OperationalInsights/workspaces', format('log-{0}', variables('baseName')))]" + ] + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2020-11-01", + "name": "[format('agw-{0}', variables('baseName'))]", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "WAF_v2", + "tier": "WAF_v2", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "gatewayIP01", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('vnet-{0}', variables('baseName'))]/[format('snet-{0}-agw', variables('baseName'))]" + } + } + } + ], + "sslCertificates": [ + { + "name": "gatewaycert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + }, + { + "name": "portalcert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + }, + { + "name": "managementcert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "trustedRootCertificates": "[if(parameters('useWellKnownCertificateAuthority'), null(), variables('applicationGatewayTrustedRootCertificates'))]", + "frontendIPConfigurations": [ + { + "name": "frontend1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[format('pip-{0}-agw', variables('baseName'))]" + } + } + } + ], + "frontendPorts": [ + { + "name": "port01", + "properties": { + "port": 443 + } + } + ], + "backendAddressPools": [ + { + "name": "gatewaybackend", + "properties": { + "backendAddresses": [ + { + "fqdn": "api.azurequickstarts.net" + } + ] + } + }, + { + "name": "portalbackend", + "properties": { + "backendAddresses": [ + { + "fqdn": "portal.azurequickstarts.net" + } + ] + } + }, + { + "name": "managementbackend", + "properties": { + "backendAddresses": [ + { + "fqdn": "management.azurequickstarts.net" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "apimPoolGatewaySetting", + "properties": { + "port": 443, + "protocol": "Https", + "cookieBasedAffinity": "Disabled", + "pickHostNameFromBackendAddress": true, + "requestTimeout": 180, + "probe": { + "id": "Microsoft.Network/applicationGateways/probes/[format('agw-{0}', variables('baseName'))]/apimgatewayprobe" + }, + "trustedRootCertificates": "[if(parameters('useWellKnownCertificateAuthority'), null(), variables('applicationGatewayTrustedRootCertificateReferences'))]" + } + }, + { + "name": "apimPoolPortalSetting", + "properties": { + "port": 443, + "protocol": "Https", + "cookieBasedAffinity": "Disabled", + "pickHostNameFromBackendAddress": true, + "requestTimeout": 180, + "probe": { + "id": "Microsoft.Network/applicationGateways/probes/[format('agw-{0}', variables('baseName'))]/apimportalprobe" + }, + "trustedRootCertificates": "[if(parameters('useWellKnownCertificateAuthority'), null(), variables('applicationGatewayTrustedRootCertificateReferences'))]" + } + }, + { + "name": "apimPoolManagementSetting", + "properties": { + "port": 443, + "protocol": "Https", + "cookieBasedAffinity": "Disabled", + "pickHostNameFromBackendAddress": true, + "requestTimeout": 180, + "probe": { + "id": "Microsoft.Network/applicationGateways/probes/[format('agw-{0}', variables('baseName'))]/apimmanagementprobe" + }, + "trustedRootCertificates": "[if(parameters('useWellKnownCertificateAuthority'), null(), variables('applicationGatewayTrustedRootCertificateReferences'))]" + } + } + ], + "httpListeners": [ + { + "name": "gatewaylistener", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[format('agw-{0}', variables('baseName'))]/frontend1" + }, + "frontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/[format('agw-{0}', variables('baseName'))]/port01" + }, + "protocol": "Https", + "sslCertificate": { + "id": "Microsoft.Network/applicationGateways/sslCertificates/[format('agw-{0}', variables('baseName'))]/gatewaycert" + }, + "hostName": "api.azurequickstarts.net", + "requireServerNameIndication": true + } + }, + { + "name": "portallistener", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[format('agw-{0}', variables('baseName'))]/frontend1" + }, + "frontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/[format('agw-{0}', variables('baseName'))]/port01" + }, + "protocol": "Https", + "sslCertificate": { + "id": "Microsoft.Network/applicationGateways/sslCertificates/[format('agw-{0}', variables('baseName'))]/portalcert" + }, + "hostName": "portal.azurequickstarts.net", + "requireServerNameIndication": true + } + }, + { + "name": "managementlistener", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[format('agw-{0}', variables('baseName'))]/frontend1" + }, + "frontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/[format('agw-{0}', variables('baseName'))]/port01" + }, + "protocol": "Https", + "sslCertificate": { + "id": "Microsoft.Network/applicationGateways/sslCertificates/[format('agw-{0}', variables('baseName'))]/managementcert" + }, + "hostName": "management.azurequickstarts.net", + "requireServerNameIndication": true + } + } + ], + "requestRoutingRules": [ + { + "name": "gatewayrule", + "properties": { + "ruleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/[format('agw-{0}', variables('baseName'))]/gatewaylistener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/[format('agw-{0}', variables('baseName'))]/gatewaybackend" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[format('agw-{0}', variables('baseName'))]/apimPoolGatewaySetting" + } + } + }, + { + "name": "portalrule", + "properties": { + "ruleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/[format('agw-{0}', variables('baseName'))]/portallistener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/[format('agw-{0}', variables('baseName'))]/portalbackend" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[format('agw-{0}', variables('baseName'))]/apimPoolPortalSetting" + } + } + }, + { + "name": "managementrule", + "properties": { + "ruleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/[format('agw-{0}', variables('baseName'))]/managementlistener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/[format('agw-{0}', variables('baseName'))]/managementbackend" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[format('agw-{0}', variables('baseName'))]/apimPoolManagementSetting" + } + } + } + ], + "probes": [ + { + "name": "apimgatewayprobe", + "properties": { + "protocol": "Https", + "host": "api.azurequickstarts.net", + "path": "/status-0123456789abcdef", + "interval": 30, + "timeout": 120, + "unhealthyThreshold": 8, + "pickHostNameFromBackendHttpSettings": false, + "minServers": 0 + } + }, + { + "name": "apimportalprobe", + "properties": { + "protocol": "Https", + "host": "portal.azurequickstarts.net", + "path": "/signin", + "interval": 60, + "timeout": 300, + "unhealthyThreshold": 8, + "pickHostNameFromBackendHttpSettings": false, + "minServers": 0 + } + }, + { + "name": "apimmanagementprobe", + "properties": { + "protocol": "Https", + "host": "management.azurequickstarts.net", + "path": "/ServiceStatus", + "interval": 60, + "timeout": 300, + "unhealthyThreshold": 8, + "pickHostNameFromBackendHttpSettings": false, + "minServers": 0 + } + } + ], + "sslPolicy": { + "policyType": "Predefined", + "policyName": "AppGwSslPolicy20170401S" + }, + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Detection", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.2", + "requestBodyCheck": true, + "maxRequestBodySizeInKb": 128, + "fileUploadLimitInMb": 100 + } + }, + "dependsOn": [ + "Microsoft.ApiManagement/service/[format('apim-{0}', variables('baseName'))]", + "Microsoft.Network/privateDnsZones/GEN-SELFSIGNED-CERT-DNSNAME", + "Microsoft.Network/publicIPAddresses/[format('pip-{0}-agw', variables('baseName'))]", + "Microsoft.Network/virtualNetworks/[format('vnet-{0}', variables('baseName'))]" + ] + }, + { + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.Network/applicationGateways/{0}', variables('applicationGatewayName'))]", + "name": "diagnosticSettings", + "properties": { + "workspaceId": "[resourceId('Microsoft.OperationalInsights/workspaces', format('log-{0}', variables('baseName')))]", + "logs": [ + { + "category": "ApplicationGatewayAccessLog", + "enabled": true + }, + { + "category": "ApplicationGatewayPerformanceLog", + "enabled": true + }, + { + "category": "ApplicationGatewayFirewallLog", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/applicationGateways', variables('applicationGatewayName'))]", + "[resourceId('Microsoft.OperationalInsights/workspaces', format('log-{0}', variables('baseName')))]" + ] + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-04-01-preview", + "name": "[format('kv-{0}', variables('baseName'))]", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "family": "A", + "name": "standard" + }, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "tenantId": "[reference(resourceId('Microsoft.Web/sites', variables('webAppName')), '2020-12-01', 'full').identity.tenantId]", + "objectId": "[reference(resourceId('Microsoft.Web/sites', variables('webAppName')), '2020-12-01', 'full').identity.principalId]", + "permissions": { + "secrets": [ + "get" + ] + } + } + ], + "networkAcls": { + "bypass": "None", + "defaultAction": "Deny" + } + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('web-{0}', variables('baseName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1768 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1768 new file mode 100644 index 0000000..9eab2a6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1768 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911046, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1768", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1768", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingVirtualNetworkName": "vnet", + "existingSubnetName": "subnet-1" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "subnetName": { + "type": "string", + "value": "[variables('existingSubnetName')]" + }, + "subnetId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks/subNets/', variables('existingVirtualNetworkName'),variables('existingSubnetName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1769 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1769 new file mode 100644 index 0000000..5a95b1d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1769 @@ -0,0 +1,187 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962911058, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1769", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1769", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "aseName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location of the App Service Environment" + }, + "defaultValue": "[resourceGroup().location]" + }, + "ipSslAddressCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of IP addresses for the IP-SSL address pool." + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + }, + "value": "GET-PREREQ-subnetName" + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "Subnet Id that will contain the App Service Environment" + }, + "value": "GET-PREREQ-subnetId" + }, + "frontEndSize": { + "type": "string", + "allowedValues": [ + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Medium", + "metadata": { + "description": "Instance size for the front-end pool. Maps to P2,P3,P4." + } + }, + "frontEndCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances in the front-end pool. Minimum of two." + } + }, + "workerPoolOneInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool one. Maps to P1,P2,P3,P4." + } + }, + "workerPoolOneInstanceCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances in worker pool one. Minimum of two." + } + }, + "workerPoolTwoInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool two. Maps to P1,P2,P3,P4." + } + }, + "workerPoolTwoInstanceCount": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Number of instances in worker pool two. Can be zero if not using worker pool two." + } + }, + "workerPoolThreeInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool three. Maps to P1,P2,P3,P4." + } + }, + "workerPoolThreeInstanceCount": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Number of instances in worker pool three. Can be zero if not using worker pool three." + } + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "ipSslAddressCount": 1, + "virtualNetwork": { + "Id": "GET-PREREQ-subnetId", + "Subnet": "GET-PREREQ-subnetName" + }, + "multiSize": "Medium", + "multiRoleCount": 2, + "workerPools": [ + { + "workerSizeId": 0, + "workerSize": "Small", + "workerCount": 2 + }, + { + "workerSizeId": 1, + "workerSize": "Small", + "workerCount": 0 + }, + { + "workerSizeId": 2, + "workerSize": "Small", + "workerCount": 0 + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT177 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT177 new file mode 100644 index 0000000..fe0c0e1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT177 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/vnet-subnet.json" + ], + "timestamp": 1642962889577, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/vnet-subnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT177", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT177", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "westus", + "metadata": { + "description": "Virtual Network and Subnets Deployment Location" + } + }, + "networkApiVersion": { + "type": "string", + "defaultValue": "2015-06-15", + "allowedValues": [ + "2015-05-01-preview", + "2015-06-15", + "2016-03-30" + ], + "metadata": { + "description": "API Version for the Network Resources" + } + }, + "vnetName": { + "type": "string", + "defaultValue": "virtualNetwork", + "metadata": { + "description": "Virtual Network Name" + } + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + }, + "metadata": { + "description": "Tag Values" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual Network Address Prefix" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "subnet1", + "metadata": { + "description": "Subnet1 Name" + } + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "Subnet1 Address Prefix" + } + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "comments": "Virtual Network and Subnet Resource", + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork", + "location": "westus", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1770 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1770 new file mode 100644 index 0000000..ae8ce23 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1770 @@ -0,0 +1,112 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-configure-default-ssl/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-configure-default-ssl/azuredeploy.parameters.json" + ], + "timestamp": 1642962911071, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-configure-default-ssl/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-configure-default-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1770", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates", + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1770", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appServiceEnvironmentName": { + "type": "string", + "metadata": { + "description": "The default SSL certificate will be configured for this App Service Environment." + }, + "value": "changeme" + }, + "existingAseLocation": { + "type": "string", + "metadata": { + "description": "Set this to the same location as the App Service Environment defined in appServiceEnvironmentName." + }, + "value": "changeme" + }, + "pfxBlobString": { + "type": "string", + "metadata": { + "description": "A pfx file encoded as a base-64 string. The pfx contains the SSL certificate that will be configured as the default SSL certificate for the ASE." + }, + "value": "changeme" + }, + "password": { + "type": "securestring", + "metadata": { + "description": "The password for the pfx filed contained in pfxBlobString." + }, + "value": "changeme" + }, + "certificateThumbprint": { + "type": "string", + "metadata": { + "description": "The hexadecimal certificate thumbprint of the certificate contained in pfxBlobString. All spaces need to be removed from the hex string." + }, + "value": "changeme" + }, + "certificateName": { + "type": "string", + "metadata": { + "description": "Name of the certificate. This can be any name you want to use to identify the certificate." + }, + "value": "DefaultCertificateFor_changeme_InternalLoadBalancingASE" + } + }, + "resources": [ + { + "apiVersion": "2015-08-01", + "type": "Microsoft.Web/certificates", + "name": "DefaultCertificateFor_changeme_InternalLoadBalancingASE", + "location": "changeme", + "properties": { + "pfxBlob": "changeme", + "password": "changeme", + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/changeme" + } + } + }, + { + "apiVersion": "2015-08-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "changeme", + "location": "changeme", + "properties": { + "clusterSettings": [ + { + "name": "DefaultSslCertificateThumbprint", + "value": "changeme" + } + ] + }, + "dependsOn": [ + "Microsoft.Web/certificates/DefaultCertificateFor_changeme_InternalLoadBalancingASE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1771 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1771 new file mode 100644 index 0000000..b20581f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1771 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911079, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1771", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1771", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingVirtualNetworkName": "vnet", + "existingSubnetName": "subnet-1" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVnetResourceId": { + "type": "string", + "value": "[variables('existingVirtualNetworkName')]" + }, + "subnetName": { + "type": "string", + "value": "[variables('existingSubnetName')]" + }, + "rgName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1772 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1772 new file mode 100644 index 0000000..f3f4548 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1772 @@ -0,0 +1,201 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962911096, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-ase-ilb-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-ase-ilb-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1772", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1772", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "aseName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment" + }, + "value": "GEN-UNIQUE" + }, + "Location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the App Service Environment" + } + }, + "ipSslAddressCount": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Number of IP addresses for the IP-SSL address pool. This value *must* be zero when internalLoadBalancing mode is set to either 1 or 3." + } + }, + "existingVnetResourceId": { + "type": "string", + "metadata": { + "description": "ARM Url reference for the virtual network that will contain the ASE. Use Microsoft.Network for ARM vnets. Use Microsoft.ClassicNetwork for older ASM vnets. /subscriptions/subIDGoesHere/resourceGroups/rgNameGoesHere/providers/Microsoft.Network/virtualNetworks/vnetnamegoeshere" + }, + "value": "GET-PREREQ-existingVnetResourceId" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "GET-PREREQ-rgName" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + }, + "value": "GET-PREREQ-subnetName" + }, + "internalLoadBalancingMode": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "0 = public VIP only, 1 = only ports 80/443 are mapped to ILB VIP, 2 = only FTP ports are mapped to ILB VIP, 3 = both ports 80/443 and FTP ports are mapped to an ILB VIP." + } + }, + "frontEndSize": { + "type": "string", + "allowedValues": [ + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Medium", + "metadata": { + "description": "Instance size for the front-end pool. Maps to P2,P3,P4." + } + }, + "frontEndCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances in the front-end pool. Minimum of two." + } + }, + "workerPoolOneInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool one. Maps to P1,P2,P3,P4." + } + }, + "workerPoolOneInstanceCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances in worker pool one. Minimum of two." + } + }, + "workerPoolTwoInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool two. Maps to P1,P2,P3,P4." + } + }, + "workerPoolTwoInstanceCount": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Number of instances in worker pool two. Can be zero if not using worker pool two." + } + }, + "workerPoolThreeInstanceSize": { + "type": "string", + "allowedValues": [ + "Small", + "Medium", + "Large", + "ExtraLarge" + ], + "defaultValue": "Small", + "metadata": { + "description": "Instance size for worker pool three. Maps to P1,P2,P3,P4." + } + }, + "workerPoolThreeInstanceCount": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Number of instances in worker pool three. Can be zero if not using worker pool three." + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "ipSslAddressCount": 0, + "internalLoadBalancingMode": 3, + "virtualNetwork": { + "id": "GET-PREREQ-rgName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingVnetResourceId/GET-PREREQ-subnetName" + }, + "multiSize": "Medium", + "multiRoleCount": 2, + "workerPools": [ + { + "workerSizeId": 0, + "workerSize": "Small", + "workerCount": 2 + }, + { + "workerSizeId": 1, + "workerSize": "Small", + "workerCount": 0 + }, + { + "workerSizeId": 2, + "workerSize": "Small", + "workerCount": 0 + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1773 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1773 new file mode 100644 index 0000000..387fa26 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1773 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911109, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1773", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1773", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "existingVirtualNetworkName": "vnet", + "existingSubnetName": "subnet-ASE" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-ASE", + "properties": { + "addressPrefix": "10.0.1.0/25" + } + } + ] + } + } + ], + "outputs": { + "virtualNetwork": { + "type": "string", + "value": "[variables('existingVirtualNetworkName')]" + }, + "subnet": { + "type": "string", + "value": "[variables('existingSubnetName')]" + }, + "rgName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1774 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1774 new file mode 100644 index 0000000..3e05a29 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1774 @@ -0,0 +1,97 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962911121, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1774", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1774", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "2435716056103639885" + } + }, + "parameters": { + "aseName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the App Service Environment" + } + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET" + }, + "value": "GET-PREREQ-virtualNetwork" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "GET-PREREQ-rgName" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + }, + "value": "GET-PREREQ-subnet" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Web/hostingEnvironments", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "kind": "ASEV2", + "location": "[resourceGroup().location]", + "properties": { + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "workerPools": [], + "virtualNetwork": { + "id": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('existingVirtualNetworkResourceGroup')), 'Microsoft.Network/virtualNetworks/subnets', parameters('existingVirtualNetworkName'), parameters('existingSubnetName'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1775 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1775 new file mode 100644 index 0000000..bfd9df3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1775 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911150, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1775", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1775", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "existingVirtualNetworkName": "vnet", + "existingSubnetName": "subnet-ASE" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-ASE", + "properties": { + "addressPrefix": "10.0.1.0/25" + } + } + ] + } + } + ], + "outputs": { + "virtualNetwork": { + "type": "string", + "value": "[variables('existingVirtualNetworkName')]" + }, + "subnet": { + "type": "string", + "value": "[variables('existingSubnetName')]" + }, + "rgName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1776 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1776 new file mode 100644 index 0000000..3b6135b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1776 @@ -0,0 +1,104 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962911166, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asev2-ilb-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1776", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1776", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "aseName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the App Service Environment" + } + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET" + }, + "value": "GET-PREREQ-virtualNetwork" + }, + "existingVirtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET resource group" + }, + "value": "GET-PREREQ-rgName" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + }, + "value": "GET-PREREQ-subnet" + }, + "internalLoadBalancingMode": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 0, + 1, + 2, + 3 + ], + "metadata": { + "description": "0 = public VIP only, 1 = only ports 80/443 are mapped to ILB VIP, 2 = only FTP ports are mapped to ILB VIP, 3 = both ports 80/443 and FTP ports are mapped to an ILB VIP." + }, + "value": 3 + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "GEN-UNIQUE", + "kind": "ASEV2", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "ipSslAddressCount": 0, + "internalLoadBalancingMode": 3, + "virtualNetwork": { + "id": "GET-PREREQ-rgName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetwork/GET-PREREQ-subnet" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1777 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1777 new file mode 100644 index 0000000..6a39244 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1777 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911181, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1777", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1777", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "asename": "[concat('ase',uniqueString(resourceGroup().id))]", + "vnetname": "vnet", + "subnetname": "subnet1" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.250.0/23" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "192.168.250.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Web/hostingEnvironments", + "name": "[variables('asename')]", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet" + ], + "properties": { + "workerPools": [ + { + "workerSizeId": 0, + "workerSize": "small", + "workerCount": 2 + }, + { + "workerSizeId": 1, + "workerSize": "medium", + "workerCount": 2 + }, + { + "workerSizeId": 2, + "workerSize": "large", + "workerCount": 0 + } + ], + "MultiSize": "medium", + "MultiRoleCount": 2, + "name": "[variables('asename')]", + "location": "[resourceGroup().location]", + "VirtualNetwork": { + "Id": "Microsoft.Network/virtualNetworks/subnets/vnet/subnet1", + "Subnet": "subnet1" + }, + "ipSslAddressCount": 1 + } + } + ], + "outputs": { + "appServiceEnvironmentName": { + "type": "string", + "value": "[variables('asename')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1778 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1778 new file mode 100644 index 0000000..b1f704f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1778 @@ -0,0 +1,123 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962911193, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-ase-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1778", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1778", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "The name of the web app that you wish to create." + }, + "value": "GEN-UNIQUE-10" + }, + "appServicePlanName": { + "type": "string", + "metadata": { + "description": "The name of the App Service plan to use for hosting the web app." + }, + "value": "GEN-UNIQUE-11" + }, + "appServiceEnvironmentName": { + "type": "string", + "metadata": { + "description": "The name of the App Service Environment where the app service plan will be created." + }, + "value": "GET-PREREQ-appServiceEnvironmentName" + }, + "existingAseLocation": { + "type": "string", + "metadata": { + "description": "Set this to the same location as the App Service Environment" + }, + "value": "GET-PREREQ-location" + }, + "workerPool": { + "type": "string", + "allowedValues": [ + "1", + "2", + "3" + ], + "defaultValue": 0, + "metadata": { + "description": "Defines which worker pool's (WP1, WP2 or WP3) resources will be used for the app service plan." + }, + "value": "1" + }, + "numberOfWorkersFromWorkerPool": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Defines the number of workers from the worker pool that will be used by the app service plan." + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-11", + "type": "Microsoft.Web/serverfarms", + "location": "GET-PREREQ-location", + "properties": { + "name": "GEN-UNIQUE-11", + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/GET-PREREQ-appServiceEnvironmentName" + } + }, + "sku": { + "name": "P1", + "tier": "Premium", + "size": "P1", + "family": "P", + "capacity": 1 + } + }, + { + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Web/sites", + "location": "GET-PREREQ-location", + "properties": { + "name": "GEN-UNIQUE-10", + "serverFarmId": "Microsoft.Web/serverFarms/GEN-UNIQUE-11", + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/GET-PREREQ-appServiceEnvironmentName" + } + }, + "dependsOn": [ + "Microsoft.Web/serverFarms//GEN-UNIQUE-11" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1779 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1779 new file mode 100644 index 0000000..6dd3318 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1779 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911202, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1779", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.web/hostingenvironments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1779", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "aseName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment" + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "existingVirtualNetworkName": "vnet", + "existingSubnetName": "subnet-ASE" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-ASE", + "properties": { + "addressPrefix": "10.0.1.0/25" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "GEN-UNIQUE", + "kind": "ASEV2", + "location": "[resourceGroup().location]", + "dependson": [ + "vnet" + ], + "properties": { + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/subnet-ASE" + } + } + } + ], + "outputs": { + "aseName": { + "type": "string", + "value": "[parameters('aseName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT178 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT178 new file mode 100644 index 0000000..4af1e42 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT178 @@ -0,0 +1,226 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/workflow-automation.json" + ], + "timestamp": 1642962889593, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/nested/workflow-automation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT178", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT178", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationAccountName": { + "type": "string" + }, + "sku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Free", + "Basic" + ] + }, + "runbookName": { + "type": "string" + }, + "credential1Name": { + "defaultValue": "Azure_RM_Account_Credentials", + "type": "string" + }, + "cred1Username": { + "type": "string", + "defaultValue": "ash@sysgaininc.onmicrosoft.com" + }, + "cred1Password": { + "type": "securestring" + }, + "jobIdWorkflow": { + "type": "string", + "defaultValue": "24b18f62-aa2c-4528-ac10-1e3602eb4053", + "metadata": { + "description": "Generate a Job ID (GUID) from https://www.guidgenerator.com/ " + } + }, + "location": { + "type": "string", + "defaultValue": "East US 2", + "allowedValues": [ + "Japan East", + "North Europe", + "South Central US", + "West Europe", + "Southeast Asia", + "East US 2" + ], + "metadata": { + "description": "Automation Service Location" + } + }, + "runbookUrl": { + "defaultValue": "https://raw.githubusercontent.com/sysgain/informatica-p2p/master/runbooks/info-restapi-workflow.ps1", + "type": "string" + }, + "tag": { + "type": "object", + "defaultValue": { + "key1": "key", + "value1": "value" + }, + "metadata": { + "description": "Tag Values" + } + }, + "ip": { + "type": "string" + }, + "sysgain_ms_email": { + "type": "string" + }, + "sysgain_ms_password": { + "type": "securestring" + }, + "informatica_user_name": { + "type": "string", + "metadata": { + "description": "The same email id used for user_email" + } + }, + "informatica_user_password": { + "type": "securestring" + }, + "informatica_csa_vmname": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "adfStorageAccName": { + "type": "string" + }, + "adfStorageAccKey": { + "type": "string" + }, + "informaticaTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "resources": [ + { + "name": "automationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "runbookName", + "type": "runbooks", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName" + ], + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "runbookType": "Script", + "logProgress": false, + "logVerbose": false, + "description": null, + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/sysgain/informatica-p2p/master/runbooks/info-restapi-workflow.ps1", + "version": "1.0.0.0" + } + } + }, + { + "name": "Azure_RM_Account_Credentials", + "type": "credentials", + "apiVersion": "2015-01-01-preview", + "location": "East US 2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName" + ], + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "userName": "ash@sysgaininc.onmicrosoft.com", + "password": "cred1Password" + } + }, + { + "name": "automationAccountName/24b18f62-aa2c-4528-ac10-1e3602eb4053", + "type": "Microsoft.Automation/automationAccounts/jobs", + "apiVersion": "2015-10-31", + "location": "East US 2", + "tags": { + "[parameters('tag').key1]": "value", + "quickstartName": "quickstartTags", + "provider": "informaticaTags" + }, + "properties": { + "runbook": { + "name": "runbookName" + }, + "parameters": { + "ip": "ip", + "sysgain_ms_email": "sysgain_ms_email", + "sysgain_ms_password": "sysgain_ms_password", + "informatica_user_name": "informatica_user_name", + "informatica_user_password": "informatica_user_password", + "client_id": "client_id", + "informatica_csa_vmname": "informatica_csa_vmname", + "adfStorageAccName": "adfstorageAccName", + "adfStorageAccKey": "adfStorageAccKey" + } + }, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName", + "Microsoft.Automation/automationAccounts/runbooks/automationAccountName/runbookName", + "Microsoft.Automation/automationAccounts/credentials/automationAccountName/Azure_RM_Account_Credentials" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1780 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1780 new file mode 100644 index 0000000..099a3a5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1780 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962911214, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev2-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1780", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1780", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "The name of the web app that you wish to create." + }, + "value": "GEN-UNIQUE" + }, + "appServicePlanName": { + "type": "string", + "metadata": { + "description": "The name of the App Service plan to use for hosting the web app." + }, + "value": "GEN-UNIQUE" + }, + "appServiceEnvironmentName": { + "type": "string", + "metadata": { + "description": "The name of the App Service Environment where the app service plan will be created." + }, + "value": "GET-PREREQ-aseName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Set this to the same location as the app service environment" + } + }, + "pricingTier": { + "type": "string", + "allowedValues": [ + "1", + "2", + "3" + ], + "defaultValue": "1", + "metadata": { + "description": "Defines pricing tier for workers: 1 = Isolated 1, 2 = Isolated 2, 3 = Isolated 3." + }, + "value": "1" + }, + "capacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Defines the number of instances that will be allocated to the app service plan." + }, + "value": 1 + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE", + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/GET-PREREQ-aseName" + } + }, + "sku": { + "name": "I1", + "tier": "Isolated", + "size": "I1", + "family": "I", + "capacity": 1 + } + }, + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverFarms/GEN-UNIQUE", + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/GET-PREREQ-aseName" + } + }, + "dependsOn": [ + "Microsoft.Web/serverFarms//GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1781 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1781 new file mode 100644 index 0000000..e79dca8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1781 @@ -0,0 +1,447 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev3-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev3-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962911227, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-asp-app-on-asev3-create/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-asp-app-on-asev3-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1781", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.web/hostingenvironments", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1781", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "useExistingVnetandSubnet": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Required. Use existing virtual network and subnet." + } + }, + "vNetResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Required. Resource Group name of virtual network if using existing vnet and subnet." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vnet-asev3", + "metadata": { + "description": "Required. The Virtual Network (vNet) Name." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Required. Location for all resources." + } + }, + "vNetAddressPrefixes": { + "type": "array", + "defaultValue": [ + "172.16.0.0/16" + ], + "metadata": { + "description": "Required. An Array of 1 or more IP Address Prefixes for the Virtual Network." + } + }, + "subnetAddressPrefix": { + "type": "string", + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Required. The subnet Name of ASEv3." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "snet-asev3", + "metadata": { + "description": "Required. The subnet Name of ASEv3." + } + }, + "subnets": { + "type": "array", + "defaultValue": [ + { + "name": "snet-asev3", + "addressPrefix": "172.16.0.0/24", + "delegations": [ + { + "name": "Microsoft.Web.hostingEnvironments", + "properties": { + "serviceName": "Microsoft.Web/hostingEnvironments" + } + } + ], + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "networkSecurityGroupName": "nsg-asev3" + } + ], + "metadata": { + "description": "Required. The subnet properties." + } + }, + "aseName": { + "type": "string", + "metadata": { + "description": "Required. Name of ASEv3." + }, + "value": "GEN-UNIQUE" + }, + "dedicatedHostCount": { + "type": "string", + "defaultValue": "0", + "metadata": { + "description": "Required. Dedicated host count of ASEv3." + } + }, + "zoneRedundant": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Required. Zone redundant of ASEv3." + } + }, + "createPrivateDNS": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Optional. Create a private DNS zone for ASEv3." + } + }, + "internalLoadBalancingMode": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 0, + 3 + ], + "metadata": { + "description": "Required. Load balancer mode: 0-external load balancer, 3-internal load balancer for ASEv3." + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "nsg-asev3", + "minLength": 1, + "metadata": { + "description": "Required. Name of the Network Security Group." + } + }, + "networkSecurityGroupSecurityRules": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Required. Array of Security Rules to deploy to the Network Security Group." + } + } + }, + "functions": [], + "variables": { + "uniStr": "[uniqueString(resourceGroup().id)]", + "virtualNetworkId": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/vnet-asev3", + "subnetId": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/vnet-asev3/snet-asev3" + }, + "resources": [ + { + "condition": "[not(parameters('useExistingVnetandSubnet'))]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "nsg-asev3", + "location": "[resourceGroup().location]", + "properties": { + "copy": [ + { + "name": "securityRules", + "count": 47, + "input": { + "name": "networkSecurityGroupSecurityRules)[copyIndex(securityRules", + "properties": { + "description": "networkSecurityGroupSecurityRules)[copyIndex(securityRules", + "access": "networkSecurityGroupSecurityRules)[copyIndex(securityRules", + "destinationAddressPrefix": "[if(equals(parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.destinationAddressPrefix, ''), json('null'), parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.destinationAddressPrefix)]", + "destinationAddressPrefixes": "[if(equals(length(parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.destinationAddressPrefixes), 0), json('null'), parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.destinationAddressPrefixes)]", + "destinationPortRanges": "[if(equals(length(parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.destinationPortRanges), 0), json('null'), parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.destinationPortRanges)]", + "destinationPortRange": "[if(equals(parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.destinationPortRange, ''), json('null'), parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.destinationPortRange)]", + "direction": "networkSecurityGroupSecurityRules)[copyIndex(securityRules", + "priority": "[int(parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.priority)]", + "protocol": "networkSecurityGroupSecurityRules)[copyIndex(securityRules", + "sourceAddressPrefix": "[if(equals(parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.sourceAddressPrefix, ''), json('null'), parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.sourceAddressPrefix)]", + "sourcePortRanges": "[if(equals(length(parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.sourcePortRanges), 0), json('null'), parameters('networkSecurityGroupSecurityRules')[copyIndex('securityRules')].properties.sourcePortRanges)]", + "sourcePortRange": "networkSecurityGroupSecurityRules)[copyIndex(securityRules" + } + } + } + ] + } + }, + { + "condition": "[not(parameters('useExistingVnetandSubnet'))]", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "vnet-asev3", + "location": "[resourceGroup().location]", + "properties": { + "copy": [ + { + "name": "subnets", + "count": 21, + "input": { + "name": "subnets)[copyIndex(subnets", + "properties": { + "addressPrefix": "subnets)[copyIndex(subnets", + "networkSecurityGroup": "[if(empty(parameters('subnets')[copyIndex('subnets')].networkSecurityGroupName), json('null'), json(format('{{\"id\": \"{0}\"}}', resourceId('Microsoft.Network/networkSecurityGroups', parameters('subnets')[copyIndex('subnets')].networkSecurityGroupName))))]", + "delegations": "subnets)[copyIndex(subnets" + } + } + } + ], + "addressSpace": { + "addressPrefixes": [ + "172.16.0.0/16" + ] + } + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsg-asev3" + ] + }, + { + "type": "Microsoft.Web/hostingEnvironments", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "kind": "ASEV3", + "properties": { + "dedicatedHostCount": "0", + "zoneRedundant": false, + "internalLoadBalancingMode": 3, + "virtualNetwork": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/vnet-asev3/snet-asev3" + } + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet-asev3" + ] + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "[format('{0}-subnet-delegation-{1}', parameters('subnetName'), variables('uniStr'))]", + "resourceGroup": "[resourceGroup().name]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "virtualNetworkName": { + "value": "vnet-asev3" + }, + "subnetName": { + "value": "snet-asev3" + }, + "subnetAddressPrefix": { + "value": "172.16.0.0/24" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Required. The Virtual Network (vNet) Name." + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Required. The subnet Name of ASEv3." + } + }, + "subnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Required. The subnet Name of ASEv3." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-11-01", + "name": "[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]", + "properties": { + "addressPrefix": "172.16.0.0/24", + "delegations": [ + { + "name": "Microsoft.Web.hostingEnvironments", + "properties": { + "serviceName": "Microsoft.Web/hostingEnvironments" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "condition": "[and(parameters('createPrivateDNS'), equals(parameters('internalLoadBalancingMode'), 3))]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "[format('private-dns-zone-deployment-{0}', variables('uniStr'))]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "privateDNSZoneName": { + "value": "[reference(resourceId('Microsoft.Web/hostingEnvironments', parameters('aseName'))).dnsSuffix]" + }, + "virtualNetworkId": { + "value": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/vnet-asev3" + }, + "aseName": { + "value": "GEN-UNIQUE" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "aseName": { + "type": "string", + "metadata": { + "description": "Required. ASE name." + } + }, + "privateDNSZoneName": { + "type": "string", + "metadata": { + "description": "Required. Private DNS zone name." + } + }, + "virtualNetworkId": { + "type": "string", + "metadata": { + "description": "Required. Network Id." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privateDNSZoneName", + "location": "global", + "properties": {} + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('privateDNSZoneName'), 'vnetLink')]", + "location": "global", + "properties": { + "virtualNetwork": { + "id": "virtualNetworkId" + }, + "registrationEnabled": false + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privateDNSZoneName" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('privateDNSZoneName'), '*')]", + "properties": { + "ttl": 3600, + "aRecords": [ + { + "ipv4Address": "[reference(resourceId('Microsoft.Web/hostingEnvironments/configurations', split(format('{0}/networking', parameters('aseName')), '/')[0], split(format('{0}/networking', parameters('aseName')), '/')[1]), '2021-01-15').internalInboundIpAddresses[0]]" + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privateDNSZoneName" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('privateDNSZoneName'), '*.scm')]", + "properties": { + "ttl": 3600, + "aRecords": [ + { + "ipv4Address": "[reference(resourceId('Microsoft.Web/hostingEnvironments/configurations', split(format('{0}/networking', parameters('aseName')), '/')[0], split(format('{0}/networking', parameters('aseName')), '/')[1]), '2021-01-15').internalInboundIpAddresses[0]]" + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privateDNSZoneName" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('privateDNSZoneName'), '@')]", + "properties": { + "ttl": 3600, + "aRecords": [ + { + "ipv4Address": "[reference(resourceId('Microsoft.Web/hostingEnvironments/configurations', split(format('{0}/networking', parameters('aseName')), '/')[0], split(format('{0}/networking', parameters('aseName')), '/')[1]), '2021-01-15').internalInboundIpAddresses[0]]" + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privateDNSZoneName" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Web/hostingEnvironments/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1782 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1782 new file mode 100644 index 0000000..3f6f4ac --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1782 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-blob-connection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-blob-connection/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911240, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-blob-connection/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-blob-connection/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1782", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1782", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountKind": { + "type": "string", + "defaultValue": "StorageV2" + }, + "storageAccountSkuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS", + "Standard_ZRS", + "Standard_GRS" + ], + "metadata": { + "description": "Storage Account SKU" + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1783 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1783 new file mode 100644 index 0000000..4cd5e8d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1783 @@ -0,0 +1,198 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-blob-connection/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-blob-connection/azuredeploy.parameters.json" + ], + "timestamp": 1642962911254, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-blob-connection/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-blob-connection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1783", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1783", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppSvcPlanName": { + "type": "string", + "minLength": 1, + "defaultValue": "AppSvcPlan", + "metadata": { + "description": "Name of AppSvc Plan." + }, + "value": "GEN-UNIQUE-8" + }, + "webAppSvcPlanSku": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "App Svc Plan SKU." + } + }, + "webAppSvcPlanWorkerSize": { + "type": "string", + "allowedValues": [ + "0", + "1", + "2" + ], + "defaultValue": "0", + "metadata": { + "description": "Size of AppSvc Worker." + } + }, + "webAppName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of web site." + }, + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage Account to access blob storage." + }, + "value": "GET-PREREQ-storageAccountName" + }, + "deployPackageUri": { + "type": "string", + "metadata": { + "description": "WebDeploy package location." + }, + "value": "https://github.com/Azure-Samples/app-service-web-php-get-started/archive/master.zip" + }, + "sasToken": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Sas token to be appended to DeployPackageURI." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "packageURI": "[uri(parameters('DeployPackageURI'), concat(parameters('SasToken')))]", + "storageAccountId": "[concat(resourceGroup().id,'/providers/Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]" + }, + "resources": [ + { + "name": "WebAppSvcPlanName", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "tags": { + "displayName": "AppSvcPlan" + }, + "sku": { + "name": "S1" + }, + "properties": { + "name": "WebAppSvcPlanName", + "workerSize": "WebAppSvcPlanWorkerSize", + "numberOfWorkers": 1 + } + }, + { + "name": "WebAppName", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Web/serverfarms//WebAppSvcPlanName" + ], + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('WebAppSvcPlanName'))]": "Resource", + "displayName": "WebApp" + }, + "properties": { + "name": "WebAppName", + "serverFarmId": "Microsoft.Web/serverfarms//WebAppSvcPlanName" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/sites//WebAppName" + ], + "tags": { + "displayName": "WebAppConfig" + }, + "properties": { + "phpVersion": "5.6", + "netFrameworkVersion": "v4.6", + "use32BitWorkerProcess": false, + "webSocketsEnabled": true, + "alwaysOn": false, + "remoteDebuggingEnabled": true, + "remoteDebuggingVersion": "VS2017" + } + }, + { + "name": "MSDeploy", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Web/sites//WebAppName", + "Microsoft.Web/sites/config/GEN-UNIQUE/web" + ], + "tags": { + "displayName": "WebAppMSDeploy" + }, + "properties": { + "packageUri": "[uri(parameters('DeployPackageURI'), concat(parameters('SasToken')))]" + } + }, + { + "name": "connectionstrings", + "type": "config", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Web/sites//WebAppName", + "Microsoft.Web/sites/extensions/WebAppName/MSDeploy" + ], + "tags": { + "displayName": "WebAppConnectionStrings" + }, + "properties": { + "BlobConnection": { + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',concat(listKeys(variables('storageAccountId'),'2015-05-01-preview').key1))]", + "type": "Custom" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1784 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1784 new file mode 100644 index 0000000..726a250 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1784 @@ -0,0 +1,115 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911262, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1784", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1784", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('web', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Base name of the resource such as web app name and app service plan " + }, + "minLength": 2 + }, + "sku": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "The SKU of App Service Plan " + } + }, + "linuxFxVersion": { + "type": "string", + "defaultValue": "php|7.0", + "metadata": { + "description": "The Runtime stack of current web app" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "appServicePlanName": "AppServicePlan-[concat('web', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "AppServicePlan-[concat('web', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1" + }, + "kind": "linux", + "properties": { + "reserved": true + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2019-08-01", + "name": "[concat('web', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "app", + "dependsOn": [ + "Microsoft.Web/serverfarms/AppServicePlan-[concat('web', uniqueString(resourceGroup().id))]" + ], + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-[concat('web', uniqueString(resourceGroup().id))]", + "siteConfig": { + "linuxFxVersion": "php|7.0" + } + } + } + ], + "outputs": { + "webAppName": { + "type": "string", + "value": "[parameters('webAppName')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + }, + "serverFarmResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1785 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1785 new file mode 100644 index 0000000..1826f41 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1785 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/azuredeploy.parameters.json" + ], + "timestamp": 1642962911273, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-certificate-from-key-vault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1785", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1785", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingServerFarmId": { + "type": "string", + "metadata": { + "description": "Existing App Service Plan resource id that contains the App Service being updated" + }, + "value": "GET-PREREQ-serverFarmResourceId" + }, + "certificateName": { + "type": "string", + "metadata": { + "description": "User friendly certificate resource name" + }, + "value": "GEN-UNIQUE" + }, + "existingKeyVaultId": { + "type": "string", + "metadata": { + "description": "Existing Key Vault resource Id with an access policy to allow Microsoft.Web RP to read Key Vault secrets (Checkout README.md for more information)" + }, + "value": "GEN-KEYVAULT-RESOURCE-ID" + }, + "existingKeyVaultSecretName": { + "type": "string", + "metadata": { + "description": "Key Vault Secret that contains a PFX certificate" + }, + "value": "GEN-KEYVAULT-SSL-SECRET-NAME" + }, + "existingWebAppName": { + "type": "string", + "metadata": { + "description": "Existing App name to use for creating SSL binding. This App should have the hostname assigned as a custom domain" + }, + "value": "GET-PREREQ-webAppName" + }, + "hostname": { + "type": "string", + "metadata": { + "description": "Custom hostname for creating SSL binding. This hostname should already be assigned to the Web App" + }, + "value": "GEN-SELFSIGNED-CERT-DNSNAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Web/certificates", + "name": "GEN-UNIQUE", + "apiVersion": "2019-08-01", + "location": "[resourceGroup().location]", + "properties": { + "keyVaultId": "GEN-KEYVAULT-RESOURCE-ID", + "keyVaultSecretName": "GEN-KEYVAULT-SSL-SECRET-NAME", + "serverFarmId": "GET-PREREQ-serverFarmResourceId" + } + }, + { + "type": "Microsoft.Web/sites", + "name": "GET-PREREQ-webAppName", + "apiVersion": "2019-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/certificates/GEN-UNIQUE" + ], + "properties": { + "name": "GET-PREREQ-webAppName", + "hostNameSslStates": [ + { + "name": "GEN-SELFSIGNED-CERT-DNSNAME", + "sslState": "SniEnabled", + "thumbprint": "[reference(resourceId('Microsoft.Web/certificates', parameters('certificateName'))).Thumbprint]", + "toUpdate": true + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1786 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1786 new file mode 100644 index 0000000..10750ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1786 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-custom-domain-and-ssl/azuredeploy.json" + ], + "timestamp": 1642962911287, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-custom-domain-and-ssl/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1786", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates", + "microsoft.web/sites/hostnamebindings", + "microsoft.web/serverfarms", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1786", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "webAppName": { + "type": "string", + "metadata": { + "description": "The name of the web app that you wish to create." + } + }, + "customHostname": { + "type": "string", + "metadata": { + "description": "The custom hostname that you wish to add." + } + }, + "existingKeyVaultId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Existing Key Vault resource Id for the SSL certificate, leave this blank if not enabling SSL" + } + }, + "existingKeyVaultSecretName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Key Vault Secret that contains a PFX certificate, leave this blank if not enabling SSL" + } + } + }, + "variables": { + "appServicePlanName": "[concat(parameters('webAppName'),'-asp-', uniquestring(resourceGroup().id))]", + "certificateName": "webAppName-cert", + "enableSSL": "[not(empty(parameters('existingKeyVaultId')))]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "[variables('appServicePlanName')]", + "location": "[resourceGroup().location]", + "properties": { + "name": "[variables('appServicePlanName')]" + }, + "sku": { + "name": "P1", + "tier": "Premium", + "size": "1", + "family": "P", + "capacity": "1" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2019-08-01", + "name": "webAppName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]" + ], + "properties": { + "name": "webAppName", + "serverFarmId": "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]" + } + }, + { + "condition": "[not(empty(parameters('existingKeyVaultId')))]", + "type": "Microsoft.Web/certificates", + "apiVersion": "2019-08-01", + "name": "webAppName-cert", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/webAppName" + ], + "properties": { + "keyVaultId": "", + "keyVaultSecretName": "", + "serverFarmId": "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]" + } + }, + { + "type": "Microsoft.Web/sites/hostnameBindings", + "name": "webAppName/customHostname", + "apiVersion": "2019-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/certificates/webAppName-cert" + ], + "properties": { + "sslState": "[if(variables('enableSSL'), 'SniEnabled', json('null'))]", + "thumbprint": "[if(variables('enableSSL'), reference(resourceId('Microsoft.Web/certificates', variables('certificateName'))).Thumbprint, json('null'))]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1787 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1787 new file mode 100644 index 0000000..29ab017 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1787 @@ -0,0 +1,196 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-diagnostics-logs-blob-container/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-diagnostics-logs-blob-container/azuredeploy.parameters.json" + ], + "timestamp": 1642962911304, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-diagnostics-logs-blob-container/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-diagnostics-logs-blob-container/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1787", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1787", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of Storage Account." + }, + "value": "GEN-UNIQUE" + }, + "blobContainerName": { + "type": "string", + "defaultValue": "[concat(parameters('webAppName'), '-logs')]", + "metadata": { + "description": "The name of Blob Container to store diagnostics logs from Web App." + }, + "value": "GEN-UNIQUE" + }, + "storageAccountSkuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "The name of the App Service Plan." + } + }, + "storageAccountKind": { + "type": "string", + "defaultValue": "StorageV2", + "metadata": { + "description": "The name of the Storage Account Type." + } + }, + "appServicePlanName": { + "type": "string", + "defaultValue": "[concat('appServicePlan', '-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the App Service Plan." + }, + "value": "GEN-UNIQUE" + }, + "appServicePlanSkuName": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "The SKU name of the App Serivce Plan." + } + }, + "webAppName": { + "type": "string", + "defaultValue": "[concat('webApp', '-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the Web App." + }, + "value": "GEN-UNIQUE" + }, + "diagnosticsLogsLevel": { + "type": "string", + "defaultValue": "Verbose", + "allowedValues": [ + "Verbose", + "Information", + "Warning", + "Error" + ], + "metadata": { + "description": "The degree of severity for diagnostics logs." + } + }, + "diagnosticsLogsRetentionInDays": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "Number of days for which the diagnostics logs will be retained." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "blobContainerName": "[toLower(parameters('blobContainerName'))]", + "listAccountSasRequestContent": { + "signedServices": "bfqt", + "signedPermission": "rwdlacup", + "signedStart": "2018-10-01T00:00:00Z", + "signedExpiry": "2218-10-30T00:00:00Z", + "signedResourceTypes": "sco" + } + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "resources": [ + { + "name": "default/[toLower(parameters('blobContainerName'))]", + "type": "blobServices/containers", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ], + "properties": { + "publicAccess": "Blob" + } + } + ] + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Web/serverfarms", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "Name": "F1" + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Web/sites", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE", + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms//GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "config", + "name": "logs", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "applicationLogs": { + "azureBlobStorage": { + "level": "Verbose", + "sasUrl": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))).primaryEndpoints.blob, variables('blobContainerName'), '?', listAccountSas(parameters('storageAccountName'), '2018-02-01', variables('listAccountSasRequestContent')).accountSasToken)]", + "retentionInDays": 10 + } + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1788 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1788 new file mode 100644 index 0000000..369c94e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1788 @@ -0,0 +1,146 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-github-deploy/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-github-deploy/azuredeploy.parameters.json" + ], + "timestamp": 1642962911319, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-github-deploy/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-github-deploy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1788", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1788", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "siteName": { + "type": "string", + "defaultValue": "[concat('WebApp-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of you Web Site." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sku": { + "type": "string", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ], + "defaultValue": "F1", + "metadata": { + "description": "The pricing tier for the hosting plan." + } + }, + "workerSize": { + "type": "string", + "allowedValues": [ + "0", + "1", + "2" + ], + "defaultValue": "0", + "metadata": { + "description": "The instance size of the hosting plan (small, medium, or large)." + } + }, + "repoURL": { + "type": "string", + "defaultValue": "https://github.com/Azure-Samples/app-service-web-html-get-started.git", + "metadata": { + "description": "The URL for the GitHub repository that contains the project to deploy." + } + }, + "branch": { + "type": "string", + "defaultValue": "master", + "metadata": { + "description": "The branch of the GitHub repository to use." + } + } + }, + "variables": { + "hostingPlanName": "[concat('hpn-', resourceGroup().name)]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1", + "capacity": "0" + }, + "properties": { + "name": "[variables('hostingPlanName')]" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + ], + "properties": { + "id": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + }, + "resources": [ + { + "type": "sourcecontrols", + "apiVersion": "2020-12-01", + "name": "web", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "repoUrl": "https://github.com/Azure-Samples/app-service-web-html-get-started.git", + "branch": "master", + "isManualIntegration": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1789 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1789 new file mode 100644 index 0000000..8fee23c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1789 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-java-tomcat/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-java-tomcat/azuredeploy.parameters.json" + ], + "timestamp": 1642962911332, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-java-tomcat/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-java-tomcat/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1789", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1789", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "hostingPlanName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the hosting plan to use in Azure." + }, + "value": "GEN-UNIQUE" + }, + "webSiteName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the Azure Web app to create." + }, + "value": "GEN-UNIQUE" + }, + "skuName": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ], + "metadata": { + "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 3, + "metadata": { + "description": "Describes plan's instance count" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HostingPlan" + }, + "sku": { + "name": "F1", + "capacity": 1 + }, + "properties": { + "name": "GEN-UNIQUE" + } + }, + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", + "displayName": "Website" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms//GEN-UNIQUE" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/sites//GEN-UNIQUE" + ], + "properties": { + "javaVersion": "1.8", + "javaContainer": "TOMCAT", + "javaContainerVersion": "9.0" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT179 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT179 new file mode 100644 index 0000000..7001220 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT179 @@ -0,0 +1,1319 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/azuredeploy.json", + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/azuredeploy.parameters.json" + ], + "timestamp": 1642962889794, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/azuredeploy.json", + "/application-workloads/informatica/informatica-adf-hdinsight-powerbi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT179", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT179", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "eastus", + "allowedValues": [ + "eastus", + "eastus2", + "northcentralus", + "southcentralus", + "westus", + "northeurope", + "westeurope", + "eastasia", + "southeastasia", + "japaneast", + "japanwest", + "australiaeast", + "australiasoutheast" + ], + "metadata": { + "description": "Deployment location" + }, + "value": "eastus" + }, + "sqlDWDBAdminName": { + "type": "string", + "metadata": { + "description": "SQL Datawarehouse Admin Username" + }, + "value": "GEN-UNIQUE" + }, + "sqlDWAdminPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Datawarehouse Admin password" + }, + "value": "GEN-PASSWORD" + }, + "jobId": { + "type": "string", + "metadata": { + "description": "Job Id of the create table automation Job, use https://www.guidgenerator.com to generate unique jobid Ex:5f32ff4e-a5c5-47af-8b70-981c896a9163" + }, + "value": "GEN-UNIQUE-32" + }, + "jobIdSignup": { + "type": "string", + "metadata": { + "description": "Job Id of the sign-up automation Job, use https://www.guidgenerator.com to generate unique jobid Ex:5f32ff4e-a5c5-47af-8b70-981c896a9163" + }, + "value": "GEN-UNIQUE-32" + }, + "jobIdWorkflow": { + "type": "string", + "metadata": { + "description": "Job Id of the workflow automation Job, use https://www.guidgenerator.com to generate unique jobid Ex:5f32ff4e-a5c5-47af-8b70-981c896a9163" + }, + "value": "GEN-UNIQUE-32" + }, + "jobIdCont": { + "type": "string", + "metadata": { + "description": "Job Id of the workflow automation Job, use https://www.guidgenerator.com to generate unique jobid Ex:5f32ff4e-a5c5-47af-8b70-981c896a9163" + }, + "value": "GEN-UNIQUE-32" + }, + "start": { + "type": "string", + "metadata": { + "description": "Start time of the data slice. ex: 2016-09-23T18:00:00" + }, + "value": "2017-01-01T09:00:00" + }, + "end": { + "type": "string", + "metadata": { + "description": "End time of the data slice. ex: 2016-09-23T19:00:00" + }, + "value": "2017-01-01T10:00:00" + }, + "tag": { + "type": "object", + "defaultValue": { + "value1": "informatica" + }, + "metadata": { + "description": "Tags for the resources" + }, + "value": { + "value1": "Informatica" + } + }, + "azurePortalUsername": { + "type": "string", + "metadata": { + "description": "Valid Username to login into your Azure Portal" + }, + "value": "GEN-UNIQUE" + }, + "azurePortalPassword": { + "type": "securestring", + "metadata": { + "description": "Valid Password to login into your Azure Portal" + }, + "value": "GEN-PASSWORD" + }, + "adminUsernameInformaticaVm": { + "type": "string", + "metadata": { + "description": "Username to login into informatica vm" + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordInformaticaVm": { + "type": "securestring", + "metadata": { + "description": "Password to login into informatica vm" + }, + "value": "GEN-PASSWORD" + }, + "publicIPdnsPrefix": { + "defaultValue": "infodns", + "type": "string", + "metadata": { + "description": " Public IP dns prefix" + }, + "value": "infodns" + }, + "userEmail": { + "type": "string", + "metadata": { + "description": "Informatica Cloud Email ID" + }, + "value": "abc@xyz.com" + }, + "informaticaUsername": { + "type": "string", + "metadata": { + "description": "Informatica Cloud Username" + }, + "value": "GEN-UNIQUE" + }, + "informaticaUserPassword": { + "type": "securestring", + "metadata": { + "description": "Informatica Cloud password" + }, + "value": "GEN-PASSWORD" + }, + "userFirstname": { + "type": "string", + "defaultValue": "tester", + "metadata": { + "description": "First name for Informatica Sign up" + }, + "value": "Trevor" + }, + "userLastname": { + "type": "string", + "defaultValue": "master", + "metadata": { + "description": "Last name for Informatica Sign up" + }, + "value": "Sebastian" + }, + "userTitle": { + "type": "string", + "defaultValue": "mytitle", + "metadata": { + "description": "User title for Informatica Sign up" + }, + "value": "Mr" + }, + "userPhone": { + "type": "string", + "defaultValue": "1234567890", + "metadata": { + "description": "User phone number for Informatica Sign up. Only numbers Ex: 1234567890" + }, + "value": "9000840469" + }, + "orgName": { + "type": "string", + "defaultValue": "sysgain", + "metadata": { + "description": "Organization for Informatica Sign up" + }, + "value": "Testorg" + }, + "orgAddress": { + "type": "string", + "defaultValue": "myadd", + "metadata": { + "description": "Organization Address for Informatica Sign up" + }, + "value": "MainSt" + }, + "orgCity": { + "type": "string", + "defaultValue": "mycity", + "metadata": { + "description": "Organization city for Informatica Sign up" + }, + "value": "Seattle" + }, + "orgState": { + "type": "string", + "defaultValue": "CA", + "allowedValues": [ + "AL", + "AZ", + "AR", + "CA", + "CT", + "HI", + "IL", + "IN", + "KS", + "MI", + "NE", + "NY", + "OH", + "TX", + "UT", + "WA", + "WI" + ], + "metadata": { + "description": "Organization state for Informatica Sign up, Hint:Pass State Postal Codes Ex:CA" + }, + "value": "WA" + }, + "orgZipcode": { + "type": "string", + "defaultValue": "98512", + "metadata": { + "description": "Organization zipcode for Informatica Sign up" + }, + "value": "98102" + }, + "orgCountry": { + "type": "string", + "defaultValue": "US", + "metadata": { + "description": "Organization's country for Informatica Sign up, Hint:Pass Country's ISO Codes Ex:US" + }, + "value": "US" + }, + "orgEmployees": { + "type": "string", + "defaultValue": "5001_", + "allowedValues": [ + "0_10", + "11_25", + "26_50", + "51_100", + "101_500", + "501_1000", + "1001_5000", + "5001_" + ], + "metadata": { + "description": "Organization's Employees for Informatica Sign up" + }, + "value": "5001_" + }, + "baseUrl": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi", + "metadata": { + "description": "Base URL for the reference templates and scripts" + }, + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi" + } + }, + "variables": { + "clientID": "xSwkg5OMQCT4PxrIz5HrFOuq0rmiBUAV", + "publicIPdns": "[concat(parameters('publicIPdnsPrefix'),uniqueString(resourceGroup().id))]", + "hivescript": "", + "sysgainMsEmail": "[concat('syshyd',uniqueString(resourceGroup().id),'279@gmail.com')]", + "sysgainMsPassword": "[uniqueString(resourceGroup().id)]", + "automationLocation": "East US 2", + "arguments": "GEN-UNIQUE GEN-PASSWORD", + "sqlDWServName": "sqlser", + "sqlDWDBName": "testdwdb", + "azureRmUsername": "GEN-UNIQUE", + "azureRmPassword": "GEN-PASSWORD", + "automationAccountName": "createtbl", + "accountName": "[concat(variables('automationAccountName'),uniqueString(resourceGroup().id))]", + "credentialName": "aocred", + "runbookName": "createtable", + "dataFactName": "adf", + "tableName": "bi9", + "vmName": "informvm", + "storageAccountName": "infosa", + "adfstorageAccountName": "adfsa", + "storageAccName": "[concat(variables('storageAccountName'),uniqueString(resourceGroup().id))]", + "adfstorageAccName": "[concat(variables('adfstorageAccountName'),uniqueString(resourceGroup().id))]", + "sqlDWServerName": "[concat(variables('sqlDWServName'),uniqueString(resourceGroup().id))]", + "dataFactoryName": "[concat(variables('dataFactName'),uniqueString(resourceGroup().id))]", + "pubicIPAddressName": "informvm-publicIp", + "vnetName": "informvm-vnet", + "networkInterfaceName": "informvm-nic", + "networkSecurityGroupsName": "informvm-nsg", + "subnet1Name": "subnet1", + "storageLinkedServiceName": "AzureStorageLinkedService", + "hdInsightOnDemandLinkedServiceName": "HDInsightOnDemandLinkedService", + "azureSqlDWLinkedServiceName": "AzureSqlDWLinkedService", + "inforAutomationAccName": "signup", + "automationAccName": "[concat(variables('inforAutomationAccName'),uniqueString(resourceGroup().id))]", + "credential1Name": "AzureRmCredentials", + "wfAutomationAccName": "workflow", + "wfaAtomationAccountName": "[concat(variables('wfAutomationAccName'),uniqueString(resourceGroup().id))]", + "serviceLevelObjective": "DW100", + "ip": "138.91.243.84:10011", + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255", + "inputFolderPath": "adfgetstarted/inputdata", + "outputFolderPath": "adfgetstarted/partitioneddata", + "vnetAddressPrefix": "10.2.0.0/16", + "subnet1Prefix": "10.2.0.0/24", + "storageAccountType": "Standard_LRS", + "vmSize": "Standard_F4s", + "storageContainer": "vhds", + "imagePublisher": "informatica-cloud", + "imageOffer": "informatica-cloud", + "imageVersion": "latest", + "imageSKU": "informatica_cloud_secure_agent_32_bit", + "subnetRef": "Microsoft.Network/virtualNetworks/informvm-vnet/subnets/subnet1", + "storageApiVersion": "2015-06-15", + "networkApiVersion": "2015-06-15", + "computeApiVersion": "2015-06-15", + "sqlApiVersion": "2014-04-01", + "sqldbApiVersion": "2015-05-01-preview", + "sqlfirewallrulesApiVersion": "2014-04-01", + "version": "3.2", + "sqlVersion": "12.0", + "fileUris": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/scripts/ICExtentionScript.ps1", + "apiVersion": "2015-10-01", + "blobInputDataset": "AzureBlobInput", + "blobOutputDataset": "AzureBlobOutput", + "sqlDWOutputDataset": "AzureSqlDWOutput", + "azureSqlDWLinkedServiceConnectionString": "[concat('Server=tcp:',variables('sqlDWServerName'),'.database.windows.net,1433;Database=', variables('sqlDWDBName'), ';Trusted_Connection=False;User ID=',parameters('sqlDWDBAdminName'),'@',variables('sqlDWServerName'),';Password=',parameters('sqlDWAdminPassword'),';Connection Timeout=30;Encrypt=True')]", + "clusterSize": 1, + "timeToLive": "00:45:00", + "frequency": "Hour", + "armBaseUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi", + "interval": 1, + "writeBatchSize": 0, + "writeBatchTimeout": "00:00:00", + "timeout": "01:00:00", + "automationScriptUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/scripts/createTable.ps1", + "runbookDescription": "Create a Database Table in User provided Datawarehouse", + "sku": "Basic", + "sqldwlocation": "eastus", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "10995116277760", + "credSetupRunbookName": "inforunbook1", + "wfrunbookName": "inforunbook2", + "ccrunbookName": "container1", + "wfrunbookUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/runbooks/info-restapi-workflow.ps1", + "containerPsUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/runbooks/info-container-crt.ps1", + "credsrunbookUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/runbooks/info-restapi-signup.ps1", + "publicIpAddressUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/public-ip.json", + "storageAccountUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/storage.json", + "virtualNetworkUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/vnet-subnet.json", + "networkInterfaceUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/network-interface.json", + "networkSecurityGroupUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/info-nsg.json", + "virtualMachineUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/virtual-machine-with-plan.json", + "virtualMachineExtUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/info-csa-extension.json", + "sqlDataWareHouseSetupURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/sqldatawarehouse.json", + "createTableAutomationSetupURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/createtableautomationjob.json", + "adfSetupURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/azuredatafactory.json", + "workflowAutomationSetupURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/workflow-automation.json", + "credentialsAutomationSetupURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/info-signup-automation.json", + "createContainerAutomationSetupUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/contcreate-automation.json", + "informaticaTags": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + }, + "quickstartTags": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + }, + "resources": [ + { + "name": "publicIpAddressDeploy", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/public-ip.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "networkApiVersion": { + "value": "2015-06-15" + }, + "publicIPAddressName": { + "value": "informvm-publicIp" + }, + "publicIPdnsPrefix": { + "value": "[variables('publicIPdns')]" + }, + "tag": { + "value": { + "key1": "Public IP Address", + "value1": "Informatica" + } + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "storageAccountDeploy", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/storage.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "storageApiVersion": { + "value": "2015-06-15" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "storageAccountName": { + "value": "[variables('storageAccName')]" + }, + "tag": { + "value": { + "key1": "Storage Account", + "value1": "Informatica" + } + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "adfstorageAccountDeploy", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/storage.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "storageApiVersion": { + "value": "2015-06-15" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "storageAccountName": { + "value": "[variables('adfstorageAccName')]" + }, + "tag": { + "value": { + "key1": "Storage Account", + "value1": "Informatica" + } + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "virtualNetworkDeploy", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/vnet-subnet.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "networkApiVersion": { + "value": "2015-06-15" + }, + "vnetName": { + "value": "informvm-vnet" + }, + "subnet1Name": { + "value": "subnet1" + }, + "vnetAddressPrefix": { + "value": "10.2.0.0/16" + }, + "subnet1Prefix": { + "value": "10.2.0.0/24" + }, + "tag": { + "value": { + "key1": "Virtual Network", + "value1": "Informatica" + } + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "networkInterfaceDeploy", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "virtualNetworkDeploy", + "networkSecurityGroupDeploy", + "publicIpAddressDeploy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/network-interface.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "networkApiVersion": { + "value": "2015-06-15" + }, + "networkInterfaceName": { + "value": "informvm-nic" + }, + "networkSecurityGroupName": { + "value": "informvm-nsg" + }, + "publicIPAddressName": { + "value": "informvm-publicIp" + }, + "subnetRef": { + "value": "Microsoft.Network/virtualNetworks/informvm-vnet/subnets/subnet1" + }, + "tag": { + "value": { + "key1": "Network Interface", + "value1": "Informatica" + } + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "networkSecurityGroupDeploy", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/info-nsg.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "networkApiVersion": { + "value": "2015-06-15" + }, + "networkSecurityGroupsName": { + "value": "informvm-nsg" + }, + "tag": { + "value": { + "key1": "Network Security Group", + "value1": "Informatica" + } + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "virtualMachineDeploy", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "storageAccountDeploy", + "networkInterfaceDeploy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/virtual-machine-with-plan.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "computeApiVersion": { + "value": "2015-06-15" + }, + "vmName": { + "value": "informvm" + }, + "storageAccountName": { + "value": "[variables('storageAccName')]" + }, + "vmStorageAccountContainerName": { + "value": "vhds" + }, + "vmSize": { + "value": "Standard_F4s" + }, + "imagePublisher": { + "value": "informatica-cloud" + }, + "imageOffer": { + "value": "informatica-cloud" + }, + "imageVersion": { + "value": "latest" + }, + "imageSKU": { + "value": "informatica_cloud_secure_agent_32_bit" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "networkInterfaceName": { + "value": "informvm-nic" + }, + "tag": { + "value": { + "key1": "Virtual Machine", + "value1": "Informatica" + } + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "virtualMachineExtDeploy", + "dependsOn": [ + "virtualMachineDeploy", + "informaticaCredentialsAutomationSetup" + ], + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/info-csa-extension.json" + }, + "parameters": { + "vmName": { + "value": "informvm" + }, + "location": { + "value": "eastus" + }, + "fileUris": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/scripts/ICExtentionScript.ps1" + }, + "arguments": { + "value": "GEN-UNIQUE GEN-PASSWORD" + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "informaticaCredentialsAutomationSetup", + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/info-signup-automation.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "jobIdSignup": { + "value": "GEN-UNIQUE-32" + }, + "automationAccountName": { + "value": "[variables('automationAccName')]" + }, + "credential1Name": { + "value": "AzureRmCredentials" + }, + "cred1Username": { + "value": "GEN-UNIQUE" + }, + "cred1Password": { + "value": "GEN-PASSWORD" + }, + "runbookName": { + "value": "inforunbook1" + }, + "location": { + "value": "East US 2" + }, + "runbookUrl": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/runbooks/info-restapi-signup.ps1" + }, + "sku": { + "value": "Basic" + }, + "ip": { + "value": "138.91.243.84:10011" + }, + "sysgain_ms_email": { + "value": "[variables('sysgainMsEmail')]" + }, + "sysgain_ms_password": { + "value": "[uniqueString(resourceGroup().id)]" + }, + "user_email": { + "value": "abc@xyz.com" + }, + "informatica_user_name": { + "value": "GEN-UNIQUE" + }, + "informatica_user_password": { + "value": "GEN-PASSWORD" + }, + "user_firstname": { + "value": "Trevor" + }, + "user_lastname": { + "value": "Sebastian" + }, + "user_title": { + "value": "Mr" + }, + "user_phone": { + "value": "9000840469" + }, + "org_name": { + "value": "Testorg" + }, + "org_address": { + "value": "MainSt" + }, + "org_city": { + "value": "Seattle" + }, + "org_state": { + "value": "WA" + }, + "org_zipcode": { + "value": "98102" + }, + "org_country": { + "value": "US" + }, + "org_employees": { + "value": "5001_" + }, + "client_id": { + "value": "xSwkg5OMQCT4PxrIz5HrFOuq0rmiBUAV" + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "workflowAutomationSetup", + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "informaticaCredentialsAutomationSetup", + "virtualMachineExtDeploy", + "sqlDataWarehoueSetup", + "adfstorageAccountDeploy", + "createContainerAutomationSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/workflow-automation.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "jobIdWorkflow": { + "value": "GEN-UNIQUE-32" + }, + "automationAccountName": { + "value": "[variables('wfaAtomationAccountName')]" + }, + "credential1Name": { + "value": "AzureRmCredentials" + }, + "cred1Username": { + "value": "GEN-UNIQUE" + }, + "cred1Password": { + "value": "GEN-PASSWORD" + }, + "runbookName": { + "value": "inforunbook2" + }, + "location": { + "value": "East US 2" + }, + "runbookUrl": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/runbooks/info-restapi-workflow.ps1" + }, + "sku": { + "value": "Basic" + }, + "ip": { + "value": "138.91.243.84:10011" + }, + "sysgain_ms_email": { + "value": "[variables('sysgainMsEmail')]" + }, + "sysgain_ms_password": { + "value": "[uniqueString(resourceGroup().id)]" + }, + "informatica_user_name": { + "value": "GEN-UNIQUE" + }, + "informatica_user_password": { + "value": "GEN-PASSWORD" + }, + "informatica_csa_vmname": { + "value": "informvm" + }, + "client_id": { + "value": "xSwkg5OMQCT4PxrIz5HrFOuq0rmiBUAV" + }, + "adfStorageAccName": { + "value": "[variables('adfstorageAccName')]" + }, + "adfStorageAccKey": { + "value": "[reference('adfstorageAccountDeploy').outputs.primaryKey.value]" + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "sqlDataWarehoueSetup", + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/sqldatawarehouse.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "eastus" + }, + "sqlDWServerName": { + "value": "[variables('sqlDWServerName')]" + }, + "sqlDWDBAdminName": { + "value": "GEN-UNIQUE" + }, + "sqlDWAdminPassword": { + "value": "GEN-PASSWORD" + }, + "sqlDWDBName": { + "value": "testdwdb" + }, + "serviceLevelObjective": { + "value": "DW100" + }, + "startIpAddress": { + "value": "0.0.0.0" + }, + "endIpAddress": { + "value": "255.255.255.255" + }, + "sql-api-version": { + "value": "2014-04-01" + }, + "sqldb-api-version": { + "value": "2015-05-01-preview" + }, + "sqlfirewallrules-api-version": { + "value": "2014-04-01" + }, + "collation": { + "value": "SQL_Latin1_General_CP1_CI_AS" + }, + "maxSizeBytes": { + "value": "10995116277760" + }, + "version": { + "value": "12.0" + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "createTableAutomationSetup", + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "sqlDataWarehoueSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/createtableautomationjob.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "sqlDWServerName": { + "value": "[variables('sqlDWServerName')]" + }, + "sqlDWDBAdminName": { + "value": "GEN-UNIQUE" + }, + "sqlDWAdminPassword": { + "value": "GEN-PASSWORD" + }, + "sqlDWDBName": { + "value": "testdwdb" + }, + "jobId": { + "value": "GEN-UNIQUE-32" + }, + "accountName": { + "value": "[variables('accountName')]" + }, + "credentialName": { + "value": "aocred" + }, + "runbookName": { + "value": "createtable" + }, + "location": { + "value": "East US 2" + }, + "scriptUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/scripts/createTable.ps1" + }, + "runbookDescription": { + "value": "Create a Database Table in User provided Datawarehouse" + }, + "sku": { + "value": "Basic" + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "createContainerAutomationSetup", + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "adfstorageAccountDeploy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/contcreate-automation.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adfStorageAccName": { + "value": "[variables('adfstorageAccName')]" + }, + "adfStorageAccKey": { + "value": "[reference('adfstorageAccountDeploy').outputs.primaryKey.value]" + }, + "jobIdCont": { + "value": "GEN-UNIQUE-32" + }, + "automationAccountName": { + "value": "[variables('wfaAtomationAccountName')]" + }, + "credential1Name": { + "value": "AzureRmCredentials" + }, + "cred1Username": { + "value": "GEN-UNIQUE" + }, + "cred1Password": { + "value": "GEN-PASSWORD" + }, + "runbookName": { + "value": "container1" + }, + "location": { + "value": "East US 2" + }, + "scriptUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/runbooks/info-container-crt.ps1" + }, + "sku": { + "value": "Basic" + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + }, + { + "name": "dataFactorySetup", + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "sqlDataWarehoueSetup", + "createContainerAutomationSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/informatica-adf-hdinsight-powerbi/nested/azuredatafactory.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "sqlDWServerName": { + "value": "[variables('sqlDWServerName')]" + }, + "sqlDWDBAdminName": { + "value": "GEN-UNIQUE" + }, + "sqlDWAdminPassword": { + "value": "GEN-PASSWORD" + }, + "sqlDWDBName": { + "value": "testdwdb" + }, + "dataFactoryName": { + "value": "[variables('dataFactoryName')]" + }, + "start": { + "value": "2017-01-01T09:00:00" + }, + "end": { + "value": "2017-01-01T10:00:00" + }, + "tableName": { + "value": "bi9" + }, + "inputFolderPath": { + "value": "adfgetstarted/inputdata" + }, + "adfstorageAccountName": { + "value": "[variables('adfstorageAccName')]" + }, + "outputFolderPath": { + "value": "adfgetstarted/partitioneddata" + }, + "apiVersion": { + "value": "2015-10-01" + }, + "storageLinkedServiceName": { + "value": "AzureStorageLinkedService" + }, + "hdInsightOnDemandLinkedServiceName": { + "value": "HDInsightOnDemandLinkedService" + }, + "azureSqlDWLinkedServiceName": { + "value": "AzureSqlDWLinkedService" + }, + "blobInputDataset": { + "value": "AzureBlobInput" + }, + "blobOutputDataset": { + "value": "AzureBlobOutput" + }, + "sqlDWOutputDataset": { + "value": "AzureSqlDWOutput" + }, + "azureSqlDWLinkedServiceConnectionString": { + "value": "[variables('azureSqlDWLinkedServiceConnectionString')]" + }, + "clusterSize": { + "value": 1 + }, + "version": { + "value": "3.2" + }, + "timeToLive": { + "value": "00:45:00" + }, + "frequency": { + "value": "Hour" + }, + "interval": { + "value": 1 + }, + "writeBatchSize": { + "value": 0 + }, + "writeBatchTimeout": { + "value": "00:00:00" + }, + "timeout": { + "value": "01:00:00" + }, + "script": { + "value": "" + }, + "informaticaTags": { + "value": { + "type": "object", + "provider": "AACF690D-C725-4C78-9B1E-E586595B369F" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "informatica-adf-hdinsight-powerbi" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1790 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1790 new file mode 100644 index 0000000..5cbe6eb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1790 @@ -0,0 +1,212 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-loganalytics/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-loganalytics/azuredeploy.parameters.json" + ], + "timestamp": 1642962911343, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-loganalytics/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-loganalytics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1790", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/siteextensions", + "microsoft.web/sites/config", + "microsoft.operationalinsights/workspaces", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1790", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "17494547911142744507" + } + }, + "parameters": { + "skuName": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "Which Pricing tier our App Service Plan to" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "How many instances of our app service will be scaled out to" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "appName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Name that will be used to build associated artifacts" + } + } + }, + "functions": [], + "variables": { + "appServicePlanName": "[toLower(format('asp-{0}', parameters('appName')))]", + "webSiteName": "[toLower(format('wapp-{0}', parameters('appName')))]", + "appInsightName": "[toLower(format('appi-{0}', parameters('appName')))]", + "logAnalyticsName": "[toLower(format('la-{0}', parameters('appName')))]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[toLower(format('asp-{0}', parameters('appName')))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "capacity": 1 + }, + "tags": { + "displayName": "HostingPlan", + "ProjectName": "[uniqueString(resourceGroup().id)]" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[toLower(format('wapp-{0}', parameters('appName')))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "tags": { + "displayName": "Website", + "ProjectName": "[uniqueString(resourceGroup().id)]" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/[toLower(format('asp-{0}', parameters('appName')))]", + "httpsOnly": true, + "siteConfig": { + "minTlsVersion": "1.2" + } + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/[toLower(format('asp-{0}', parameters('appName')))]", + "Microsoft.OperationalInsights/workspaces/[toLower(format('la-{0}', parameters('appName')))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('webSiteName'), 'appsettings')]", + "properties": { + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('Microsoft.Insights/components', variables('appInsightName'))).InstrumentationKey]" + }, + "dependsOn": [ + "Microsoft.Insights/components/[toLower(format('appi-{0}', parameters('appName')))]", + "Microsoft.Web/sites/[toLower(format('wapp-{0}', parameters('appName')))]", + "Microsoft.Web/sites/siteextensions/[toLower(format('wapp-{0}', parameters('appName')))]/Microsoft.ApplicationInsights.AzureWebSites" + ] + }, + { + "type": "Microsoft.Web/sites/siteextensions", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('webSiteName'), 'Microsoft.ApplicationInsights.AzureWebSites')]", + "dependsOn": [ + "Microsoft.Insights/components/[toLower(format('appi-{0}', parameters('appName')))]", + "Microsoft.Web/sites/[toLower(format('wapp-{0}', parameters('appName')))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('webSiteName'), 'logs')]", + "properties": { + "applicationLogs": { + "fileSystem": { + "level": "Warning" + } + }, + "httpLogs": { + "fileSystem": { + "retentionInMb": 40, + "enabled": true + } + }, + "failedRequestsTracing": { + "enabled": true + }, + "detailedErrorMessages": { + "enabled": true + } + }, + "dependsOn": [ + "Microsoft.Web/sites/[toLower(format('wapp-{0}', parameters('appName')))]" + ] + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[toLower(format('appi-{0}', parameters('appName')))]", + "location": "[resourceGroup().location]", + "kind": "string", + "tags": { + "displayName": "AppInsight", + "ProjectName": "[uniqueString(resourceGroup().id)]" + }, + "properties": { + "Application_Type": "web", + "WorkspaceResourceId": "Microsoft.OperationalInsights/workspaces/[toLower(format('la-{0}', parameters('appName')))]" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/[toLower(format('la-{0}', parameters('appName')))]" + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "[toLower(format('la-{0}', parameters('appName')))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Log Analytics", + "ProjectName": "[uniqueString(resourceGroup().id)]" + }, + "properties": { + "sku": { + "name": "PerGB2018" + }, + "retentionInDays": 120, + "features": { + "searchVersion": 1, + "legacy": 0, + "enableLogAccessUsingOnlyResourcePermissions": true + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1791 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1791 new file mode 100644 index 0000000..396d309 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1791 @@ -0,0 +1,224 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-managed-identity-sql-db/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-managed-identity-sql-db/azuredeploy.parameters.json" + ], + "timestamp": 1642962911355, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-managed-identity-sql-db/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-managed-identity-sql-db/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1791", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/databases", + "microsoft.web/sites", + "microsoft.authorization/roleassignments", + "microsoft.sql/servers/firewallrules", + "microsoft.sql/servers", + "microsoft.web/sites/config", + "microsoft.insights/components", + "microsoft.managedidentity/userassignedidentities", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1791", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "7431914389840207965" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies region for all resources" + } + }, + "skuName": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "Specifies app plan SKU" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Specifies app plan capacity" + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "Specifies sql admin login" + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorPassword": { + "type": "secureString", + "metadata": { + "description": "Specifies sql admin password" + }, + "value": "GEN-PASSWORD" + }, + "managedIdentityName": { + "type": "string", + "metadata": { + "description": "Specifies managed identity name" + }, + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "variables": { + "databaseName": "sampledb" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2020-08-01-preview", + "name": "[format('{0}/{1}', format('sqlserver{0}', uniqueString(resourceGroup().id)), variables('databaseName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": 1073741824 + }, + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', format('sqlserver{0}', uniqueString(resourceGroup().id)))]" + ] + }, + { + "type": "Microsoft.Sql/servers/firewallRules", + "apiVersion": "2020-11-01-preview", + "name": "[format('{0}/{1}', format('sqlserver{0}', uniqueString(resourceGroup().id)), 'AllowAllWindowsAzureIps')]", + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + }, + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', format('sqlserver{0}', uniqueString(resourceGroup().id)))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', format('webSite{0}', uniqueString(resourceGroup().id)), 'connectionstrings')]", + "properties": { + "DefaultConnection": { + "value": "[format('Data Source=tcp:{0},1433;Initial Catalog={1};User Id={2}@{3};Password={4};', reference(resourceId('Microsoft.Sql/servers', format('sqlserver{0}', uniqueString(resourceGroup().id)))).fullyQualifiedDomainName, variables('databaseName'), reference(resourceId('Microsoft.Sql/servers', format('sqlserver{0}', uniqueString(resourceGroup().id)))).administratorLogin, reference(resourceId('Microsoft.Sql/servers', format('sqlserver{0}', uniqueString(resourceGroup().id)))).fullyQualifiedDomainName, parameters('sqlAdministratorPassword'))]", + "type": "SQLAzure" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers/databases', format('sqlserver{0}', uniqueString(resourceGroup().id)), variables('databaseName'))]", + "[resourceId('Microsoft.Sql/servers', format('sqlserver{0}', uniqueString(resourceGroup().id)))]", + "[resourceId('Microsoft.Web/sites', format('webSite{0}', uniqueString(resourceGroup().id)))]" + ] + }, + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-11-01-preview", + "name": "[format('sqlserver{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "[format('hostingplan{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1", + "capacity": 1 + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "[format('webSite{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "[format('hidden-related:{0}', resourceId('Microsoft.Web/serverfarms', format('hostingplan{0}', uniqueString(resourceGroup().id))))]": "empty", + "displayName": "Website" + }, + "properties": { + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', format('hostingplan{0}', uniqueString(resourceGroup().id)))]" + }, + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))]": {} + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', format('hostingplan{0}', uniqueString(resourceGroup().id)))]", + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))]" + ] + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName')), resourceGroup().id, 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "properties": { + "principalType": "ServicePrincipal", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[format('AppInsights{0}', format('webSite{0}', uniqueString(resourceGroup().id)))]", + "location": "[resourceGroup().location]", + "tags": { + "[format('hidden-link:{0}', resourceId('Microsoft.Web/sites', format('webSite{0}', uniqueString(resourceGroup().id))))]": "Resource", + "displayName": "AppInsightsComponent" + }, + "kind": "web", + "properties": { + "Application_Type": "web" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', format('webSite{0}', uniqueString(resourceGroup().id)))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1792 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1792 new file mode 100644 index 0000000..cce8bff --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1792 @@ -0,0 +1,115 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-public-certificate/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-public-certificate/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962911362, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-public-certificate/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.web/web-app-public-certificate/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1792", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1792", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('web', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Base name of the resource such as web app name and app service plan " + }, + "minLength": 2 + }, + "sku": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "The SKU of App Service Plan " + } + }, + "linuxFxVersion": { + "type": "string", + "defaultValue": "php|7.0", + "metadata": { + "description": "The Runtime stack of current web app" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "appServicePlanName": "AppServicePlan-[concat('web', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "AppServicePlan-[concat('web', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1" + }, + "kind": "linux", + "properties": { + "reserved": true + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "[concat('web', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "app", + "dependsOn": [ + "Microsoft.Web/serverfarms/AppServicePlan-[concat('web', uniqueString(resourceGroup().id))]" + ], + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-[concat('web', uniqueString(resourceGroup().id))]", + "siteConfig": { + "linuxFxVersion": "php|7.0" + } + } + } + ], + "outputs": { + "appName": { + "type": "string", + "value": "[parameters('webAppName')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + }, + "serverFarmResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1793 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1793 new file mode 100644 index 0000000..6984d08 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1793 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-public-certificate/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-public-certificate/azuredeploy.parameters.json" + ], + "timestamp": 1642962911371, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-public-certificate/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-public-certificate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1793", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/publiccertificates" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1793", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "exisitngWebAppName": { + "type": "string", + "metadata": { + "description": "The name of the web app that would use this public certificate. The web app should belong to a dedicated App Service Plan." + }, + "value": "GET-PREREQ-appName" + }, + "publicCertificateLocation": { + "type": "string", + "allowedValues": [ + "CurrentUserMy", + "LocalMachineMy" + ], + "metadata": { + "description": "Location where you wish to install the public certificate. 'LocalMachineMy' is supported in App Service Environment only." + }, + "value": "CurrentUserMy" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "blob": { + "type": "string", + "metadata": { + "description": "Base 64 encoded public certificate file. 'azuredeploy.parameters.json' file contains an example of this parameter." + }, + "value": "MIIC/zCCAeugAwIBAgIQjngbV7+4eppN1YUvFh8guDAJBgUrDgMCHQUAMBgxFjAUBgNVBAMTDXRlc3RjZXJ0MS5jb20wHhcNMTcwNDAzMjIyMTI1WhcNMzkxMjMxMjM1OTU5WjAYMRYwFAYDVQQDEw10ZXN0Y2VydDEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiq+O7aP68Q5uCr0u0fRlOCXpIYw498Yk2sxdR3ElgF+nD8pmgdrAbGaGlBcxO0i/YrITgD5n73BBL17QPFNx7Y8mHl3U7vOAYkYHVZQlJVc8XPmjmgL6ZGSquPkJhev9vg1U26mJHdjoOprN2dSZIKw7VB+DbBgHipjFsaxe99GocQeQxNoa93wu7uWRgI0foKgYgDBEWbyMSgT6ZXQUwoQVNTDSPmQ8PlNrAOJz3cLM6jp0e0ZKDPJEqRXm3UX6F7DcOR0G7OvUil56Ze9ANNcF2bTwTpdCLPx2OImnKCeb5Vyxg9Ymtu3aAm9U5qX8pXAZu+oU5NAiJx1TvlJkPQIDAQABo00wSzBJBgNVHQEEQjBAgBCqtQL/bkUvJkvip2NwKuuPoRowGDEWMBQGA1UEAxMNdGVzdGNlcnQxLmNvbYIQjngbV7+4eppN1YUvFh8guDAJBgUrDgMCHQUAA4IBAQA9y0GjiioOMjKFLJAqFoePeW2/MH+8QAJYvsmchZ5J8gq4TrpKbw2xrIuHmRmHv+hNAGGMGNoPg9JHHk8YuHCvaNM/10HGu0xHzgG7sEui/3MA7jAbMHQOaE54G4HiBVVFabo6li7WjSsx+RjlxNPtb+GMcBoDBAXcbzBmj/1BPNyrlwdBZHpwwnZBJpH+xHWXwIyyqBBAtQiXv7SSV79bwxPRhvCH6rhF8e0qXNGFHIDTiuDol8+eBBiGOEDwB79zDWLlvbXxKxxtQq2KqKhiLntLs1f9tohF6ad7HN5nK1RLPmqC/hoYA+/Fx5jpoX/pQo3Vlf3KMsr1280JSqq8" + } + }, + "variables": { + "publicCertificateName": "GET-PREREQ-appName-publiccert" + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "name": "GET-PREREQ-appName/GET-PREREQ-appName-publiccert", + "type": "Microsoft.Web/sites/publicCertificates", + "location": "[resourceGroup().location]", + "properties": { + "publicCertificateLocation": "CurrentUserMy", + "blob": "MIIC/zCCAeugAwIBAgIQjngbV7+4eppN1YUvFh8guDAJBgUrDgMCHQUAMBgxFjAUBgNVBAMTDXRlc3RjZXJ0MS5jb20wHhcNMTcwNDAzMjIyMTI1WhcNMzkxMjMxMjM1OTU5WjAYMRYwFAYDVQQDEw10ZXN0Y2VydDEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiq+O7aP68Q5uCr0u0fRlOCXpIYw498Yk2sxdR3ElgF+nD8pmgdrAbGaGlBcxO0i/YrITgD5n73BBL17QPFNx7Y8mHl3U7vOAYkYHVZQlJVc8XPmjmgL6ZGSquPkJhev9vg1U26mJHdjoOprN2dSZIKw7VB+DbBgHipjFsaxe99GocQeQxNoa93wu7uWRgI0foKgYgDBEWbyMSgT6ZXQUwoQVNTDSPmQ8PlNrAOJz3cLM6jp0e0ZKDPJEqRXm3UX6F7DcOR0G7OvUil56Ze9ANNcF2bTwTpdCLPx2OImnKCeb5Vyxg9Ymtu3aAm9U5qX8pXAZu+oU5NAiJx1TvlJkPQIDAQABo00wSzBJBgNVHQEEQjBAgBCqtQL/bkUvJkvip2NwKuuPoRowGDEWMBQGA1UEAxMNdGVzdGNlcnQxLmNvbYIQjngbV7+4eppN1YUvFh8guDAJBgUrDgMCHQUAA4IBAQA9y0GjiioOMjKFLJAqFoePeW2/MH+8QAJYvsmchZ5J8gq4TrpKbw2xrIuHmRmHv+hNAGGMGNoPg9JHHk8YuHCvaNM/10HGu0xHzgG7sEui/3MA7jAbMHQOaE54G4HiBVVFabo6li7WjSsx+RjlxNPtb+GMcBoDBAXcbzBmj/1BPNyrlwdBZHpwwnZBJpH+xHWXwIyyqBBAtQiXv7SSV79bwxPRhvCH6rhF8e0qXNGFHIDTiuDol8+eBBiGOEDwB79zDWLlvbXxKxxtQq2KqKhiLntLs1f9tohF6ad7HN5nK1RLPmqC/hoYA+/Fx5jpoX/pQo3Vlf3KMsr1280JSqq8" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1794 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1794 new file mode 100644 index 0000000..1deae2b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1794 @@ -0,0 +1,130 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-python/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-python/azuredeploy.parameters.json" + ], + "timestamp": 1642962911378, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-python/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-python/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1794", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1794", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "hostingPlanName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the hosting plan to use in Azure." + }, + "value": "GEN-UNIQUE" + }, + "webSiteName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the Azure Web app to create." + }, + "value": "GEN-UNIQUE" + }, + "skuName": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ], + "metadata": { + "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 3, + "metadata": { + "description": "Describes plan's instance count" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HostingPlan" + }, + "sku": { + "name": "F1", + "capacity": 1 + }, + "properties": { + "name": "GEN-UNIQUE", + "reserved": true + } + }, + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", + "displayName": "Website" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms//GEN-UNIQUE" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "siteConfig": { + "linuxFxVersion": "PYTHON|3.7" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1795 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1795 new file mode 100644 index 0000000..84b8220 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1795 @@ -0,0 +1,314 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-redis-cache-sql-database/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-redis-cache-sql-database/azuredeploy.parameters.json" + ], + "timestamp": 1642962911388, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-redis-cache-sql-database/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-redis-cache-sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1795", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.cache/redis" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1795", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "skuName": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ], + "metadata": { + "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "metadata": { + "description": "Describes plan's instance count" + }, + "maxValue": 10 + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "The admin user of the SQL Server" + }, + "value": "DemoLogin" + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the admin user of the SQL Server" + }, + "value": "GEN-PASSWORD" + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "The name of the new database to create." + }, + "value": "DemoDB" + }, + "collation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "The database collation for governing the proper use of characters." + } + }, + "edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "The type of database to create." + } + }, + "maxSizeBytes": { + "type": "string", + "defaultValue": "1073741824", + "metadata": { + "description": "The maximum size, in bytes, for the database" + } + }, + "requestedServiceObjectiveName": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "S0", + "S1", + "S2", + "P1", + "P2", + "P3" + ], + "metadata": { + "description": "Describes the performance level for Edition" + } + }, + "cacheSKUName": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Basic", + "metadata": { + "description": "The pricing tier of the new Azure Redis Cache." + } + }, + "cacheSKUFamily": { + "type": "string", + "allowedValues": [ + "C" + ], + "defaultValue": "C", + "metadata": { + "description": "The family for the sku." + }, + "value": "C" + }, + "cacheSKUCapacity": { + "type": "int", + "allowedValues": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "defaultValue": 0, + "metadata": { + "description": "The size of the new Azure Redis Cache instance. " + }, + "minValue": 0, + "maxValue": 6 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "hostingPlanName": "[concat('hostingplan', uniqueString(resourceGroup().id))]", + "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]", + "sqlserverName": "[concat('sqlserver', uniqueString(resourceGroup().id))]", + "cacheName": "[concat('cache', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "name": "[variables('sqlserverName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "SqlServer" + }, + "apiVersion": "2020-08-01-preview", + "properties": { + "administratorLogin": "DemoLogin", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "name": "DemoDB", + "type": "databases", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Database" + }, + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers/', variables('sqlserverName'))]" + ], + "properties": { + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + }, + { + "type": "firewallrules", + "apiVersion": "2014-04-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers/', variables('sqlserverName'))]" + ], + "location": "[resourceGroup().location]", + "name": "AllowAllWindowsAzureIps", + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + } + ] + }, + { + "apiVersion": "2015-08-01", + "name": "[variables('hostingPlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HostingPlan" + }, + "sku": { + "name": "F1", + "capacity": 1 + }, + "properties": { + "name": "[variables('hostingPlanName')]" + } + }, + { + "apiVersion": "2015-08-01", + "name": "[variables('webSiteName')]", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Cache/Redis/', variables('cacheName'))]" + ], + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty", + "displayName": "Website" + }, + "properties": { + "name": "[variables('webSiteName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + }, + "resources": [ + { + "apiVersion": "2015-08-01", + "type": "config", + "name": "connectionstrings", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites/', variables('webSiteName'))]", + "[resourceId('Microsoft.Sql/servers/', variables('sqlserverName'))]" + ], + "properties": { + "TeamContext": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', variables('sqlserverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('databaseName'), ';User Id=', parameters('administratorLogin'), '@', variables('sqlserverName'), ';Password=', parameters('administratorLoginPassword'), ';')]", + "type": "SQLServer" + } + } + }, + { + "apiVersion": "2015-08-01", + "type": "config", + "name": "appsettings", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites/', variables('webSiteName'))]", + "[resourceId('Microsoft.Cache/Redis/', variables('cacheName'))]" + ], + "properties": { + "CacheConnection": "[concat(variables('cacheName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2020-12-01').primaryKey)]" + } + } + ] + }, + { + "name": "[variables('cacheName')]", + "type": "Microsoft.Cache/Redis", + "location": "[resourceGroup().location]", + "apiVersion": "2015-08-01", + "tags": { + "displayName": "cache" + }, + "properties": { + "sku": { + "name": "Basic", + "family": "C", + "capacity": 0 + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1796 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1796 new file mode 100644 index 0000000..a936b2a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1796 @@ -0,0 +1,216 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-sql-database/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-sql-database/azuredeploy.parameters.json" + ], + "timestamp": 1642962911399, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-sql-database/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1796", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/databases", + "microsoft.web/sites", + "microsoft.sql/servers/firewallrules", + "microsoft.sql/servers", + "microsoft.web/sites/config", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1796", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "10516732518043384973" + } + }, + "parameters": { + "skuName": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ], + "metadata": { + "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "maxValue": 3, + "minValue": 1, + "metadata": { + "description": "Describes plan's instance count" + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The admin user of the SQL Server" + }, + "value": "GEN-UNIQUE-8" + }, + "sqlAdministratorLoginPassword": { + "type": "secureString", + "metadata": { + "description": "The password of the admin user of the SQL Server" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "hostingPlanName": "[format('hostingplan{0}', uniqueString(resourceGroup().id))]", + "websiteName": "[format('website{0}', uniqueString(resourceGroup().id))]", + "sqlserverName": "[format('sqlServer{0}', uniqueString(resourceGroup().id))]", + "databaseName": "sampledb" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2021-02-01-preview", + "name": "[format('sqlServer{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "SQL Server" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + } + }, + { + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2021-02-01-preview", + "name": "[format('{0}/{1}', variables('sqlserverName'), variables('databaseName'))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Database" + }, + "sku": { + "name": "Basic" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": 1073741824 + }, + "dependsOn": [ + "Microsoft.Sql/servers/[format('sqlServer{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Sql/servers/firewallRules", + "apiVersion": "2021-02-01-preview", + "name": "[format('{0}/{1}', variables('sqlserverName'), 'AllowAllWindowsAzureIps')]", + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + }, + "dependsOn": [ + "Microsoft.Sql/servers/[format('sqlServer{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "[format('hostingplan{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HostingPlan" + }, + "sku": { + "name": "F1", + "capacity": 1 + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "[format('website{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "[format('hidden-related:{0}', resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName')))]": "empty", + "displayName": "Website" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/[format('hostingplan{0}', uniqueString(resourceGroup().id))]" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/[format('hostingplan{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', variables('websiteName'), 'connectionstrings')]", + "properties": { + "DefaultConnection": { + "value": "[format('Data Source=tcp:{0},1433;Initial Catalog={1};User Id={2}@{3};Password={4};', reference(resourceId('Microsoft.Sql/servers', variables('sqlserverName'))).fullyQualifiedDomainName, variables('databaseName'), parameters('sqlAdministratorLogin'), reference(resourceId('Microsoft.Sql/servers', variables('sqlserverName'))).fullyQualifiedDomainName, parameters('sqlAdministratorLoginPassword'))]", + "type": "SQLAzure" + } + }, + "dependsOn": [ + "Microsoft.Sql/servers/[format('sqlServer{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Web/sites/[format('website{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02", + "name": "[format('AppInsights{0}', variables('websiteName'))]", + "location": "[resourceGroup().location]", + "tags": { + "[format('hidden-link:{0}', resourceId('Microsoft.Web/sites', variables('websiteName')))]": "Resource", + "displayName": "AppInsightsComponent" + }, + "kind": "web", + "properties": { + "Application_Type": "web" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('website{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1797 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1797 new file mode 100644 index 0000000..e1e7e6b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1797 @@ -0,0 +1,429 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-vm-dsc/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-vm-dsc/azuredeploy.parameters.json" + ], + "timestamp": 1642962911408, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-vm-dsc/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-vm-dsc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1797", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1797", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "This is the name of the Virtual Machine" + }, + "value": "GEN-UNIQUE-10" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "This is the size of the Virtual Machine" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "Image SKU" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "This is the Virtual Machine administrator login name" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "This is the Virtual Machine administrator login password" + }, + "value": "GEN-PASSWORD" + }, + "dnsName": { + "type": "string", + "metadata": { + "description": "This is the DNS name of the Virtual Machine" + }, + "value": "GEN-UNIQUE-10" + }, + "configurationFunction": { + "type": "string", + "metadata": { + "description": "This is the link to the Web Deploy package to be deployed to the Virtual Machine. It is a github URL in this example." + }, + "value": "ConfigureWebServer.ps1\\Main" + }, + "DatabaseServerName": { + "type": "string", + "metadata": { + "description": "This is database server name" + }, + "value": "GEN-UNIQUE" + }, + "DatabaseServerLocation": { + "type": "string", + "metadata": { + "description": "This is database server location" + }, + "value": "westus" + }, + "databaseServerAdminLogin": { + "type": "string", + "metadata": { + "description": "This is database server administrator login name" + }, + "value": "GEN-UNIQUE-8" + }, + "databaseServerAdminLoginPassword": { + "type": "securestring", + "metadata": { + "description": "This is database server administrator login password" + }, + "value": "GEN-PASSWORD" + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "This is name of the database hosted in the database server" + }, + "value": "GEN-UNIQUE" + }, + "databaseCollation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "This is database collation - rule for comparing the encodings in the database" + } + }, + "databaseEdition": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "This is database edition" + }, + "value": "Basic" + }, + "modulesUrl": { + "type": "string", + "metadata": { + "description": "This is the URL for downloading the PowerShell DSC module. In this case it should be the link to a zip file hosted under an Azure storage container" + }, + "value": "https://github.com/Azure/azure-quickstart-templates/raw/master/quickstarts/microsoft.web/web-app-vm-dsc/ConfigureWebServer.ps1.zip" + }, + "webdeploypkg": { + "type": "string", + "metadata": { + "description": "This is the link to the Web Deploy package for the website that's going to be deployed to the Virtual Machine" + }, + "value": "https://github.com/Azure/azure-quickstart-templates/raw/master/quickstarts/microsoft.web/web-app-vm-dsc/WebApplication3.zip" + } + }, + "variables": { + "virtualNetworkName": "GEN-UNIQUE-10-VNET", + "vnetID": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-VNET", + "nicName": "GEN-UNIQUE-10-NIC", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet2Name": "Subnet-2", + "subnet1Prefix": "10.0.0.0/24", + "subnet2Prefix": "10.0.1.0/24", + "subnet1Ref": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-VNET/subnets/Subnet-1", + "publicIPAddressName": "GEN-UNIQUE-10-PublicIP-VM", + "storageAccountType": "Standard_LRS", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-10-PublicIP-VM", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-80", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-3389", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-10-VNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + }, + { + "name": "Subnet-2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-10-NIC", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NetworkInterface" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-PublicIP-VM", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-VNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-PublicIP-VM" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-VNET/subnets/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-10_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-NIC" + } + ] + } + }, + "resources": [ + { + "name": "DSCExt1", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-05-01-preview", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10" + ], + "tags": { + "displayName": "DSCExt1" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "https://github.com/Azure/azure-quickstart-templates/raw/master/quickstarts/microsoft.web/web-app-vm-dsc/ConfigureWebServer.ps1.zip", + "configurationFunction": "ConfigureWebServer.ps1\\Main", + "properties": { + "MachineName": "GEN-UNIQUE-10", + "WebDeployPackagePath": "https://github.com/Azure/azure-quickstart-templates/raw/master/quickstarts/microsoft.web/web-app-vm-dsc/WebApplication3.zip", + "UserName": "GEN-UNIQUE-8", + "Password": "GEN-PASSWORD", + "DbServerName": "GEN-UNIQUE", + "DbName": "GEN-UNIQUE", + "DbUserName": "GEN-UNIQUE-8", + "DbPassword": "GEN-PASSWORD" + } + }, + "protectedSettings": {} + } + } + ] + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Sql/servers", + "location": "westus", + "apiVersion": "2014-04-01-preview", + "dependsOn": [], + "tags": { + "displayName": "GEN-UNIQUE" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "westus", + "apiVersion": "2014-04-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "GEN-UNIQUE", + "type": "databases", + "location": "westus", + "apiVersion": "2014-04-01-preview", + "dependsOn": [ + "GEN-UNIQUE" + ], + "tags": { + "displayName": "cawadb1" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": "1073741824" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1798 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1798 new file mode 100644 index 0000000..b743e76 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1798 @@ -0,0 +1,318 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-with-app-gateway-v2/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-with-app-gateway-v2/azuredeploy.parameters.json" + ], + "timestamp": 1642962911419, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-with-app-gateway-v2/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-with-app-gateway-v2/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1798", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.network/applicationgateways", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1798", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "defaultValue": "myWebApp", + "type": "string" + }, + "virtualNetworkName": { + "defaultValue": "myVirtualNetwork", + "type": "string" + }, + "appGatewaySubnetName": { + "defaultValue": "myAppGatewaySubnet", + "type": "string" + }, + "appGatewayName": { + "defaultValue": "myAppGateway", + "type": "string" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string" + } + }, + "variables": { + "location": "[resourceGroup().location]", + "virtualNetworkName": "[concat(parameters('virtualNetworkName'), '-', uniqueString(resourceGroup().id))]", + "virtualNetworkAddressPrefix": "10.0.0.0/20", + "virtualNetworkSubnetName": "myAppGatewaySubnet", + "virtualNetworkSubnetPrefix": "10.0.0.0/24", + "virtualNetworkId": "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "virtualNetworkSubnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets/', variables('virtualNetworkName'), variables('virtualNetworkSubnetName'))]", + "publicIpAddressName": "[concat('myAppGatewayPublicIp', '-', uniqueString(resourceGroup().id))]", + "publicIpAddressSku": "Standard", + "publicIpAddressAllocationType": "Static", + "publicIpAddressId": "[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIpAddressName'))]", + "webAppName": "[concat(parameters('webAppName'), '-', uniqueString(resourceGroup().id))]", + "webAppPlanName": "[concat(parameters('webAppName'), 'Plan', '-', uniqueString(resourceGroup().id))]", + "webAppPlanSku": "S1", + "webAppPlanId": "[resourceId('Microsoft.Web/serverfarms', variables('webAppPlanName'))]", + "applicationGatewayName": "[concat(parameters('appGatewayName'), '-', uniqueString(resourceGroup().id))]", + "applicationGatewaySkuSize": "Standard_v2", + "applicationGatewayTier": "Standard_v2", + "applicationGatewayAutoScaleMinCapacity": 2, + "applicationGatewayAutoScaleMaxCapacity": 5, + "appGwIpConfigName": "appGatewayIpConfigName", + "appGwFrontendPortName": "appGatewayFrontendPort_80", + "appGwFrontendPort": 80, + "appGwFrontendPortId": "[resourceId('Microsoft.Network/applicationGateways/frontendPorts/', variables('applicationGatewayName'), variables('appGwFrontendPortName'))]", + "appGwFrontendIpConfigName": "appGatewayPublicFrontendIpConfig", + "appGwFrontendIpConfigId": "[resourceId('Microsoft.Network/applicationGateways/frontendIPConfigurations/', variables('applicationGatewayName'), variables('appGwFrontendIpConfigName'))]", + "appGwHttpSettingName": "appGatewayHttpSetting_80", + "appGwHttpSettingId": "[resourceId('Microsoft.Network/applicationGateways/backendHttpSettingsCollection/', variables('applicationGatewayName'), variables('appGwHttpSettingName'))]", + "appGwHttpSettingProbeName": "appGatewayHttpSettingProbe_80", + "appGwBackendAddressPoolName": "[concat('appGateway', variables('webAppName'), 'BackendPool')]", + "appGwBackendAddressPoolId": "[resourceId('Microsoft.Network/applicationGateways/backendAddressPools/', variables('applicationGatewayName'), variables('appGwBackendAddressPoolName'))]", + "appGwListenerName": "appGatewayListener", + "appGwListenerId": "[resourceId('Microsoft.Network/applicationGateways/httpListeners/', variables('applicationGatewayName'), variables('appGwListenerName'))]", + "appGwRoutingRuleName": "appGatewayRoutingRule" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/20" + ] + }, + "subnets": [ + { + "name": "myAppGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "serviceEndpoints": [ + { + "service": "Microsoft.Web", + "locations": [ + "*" + ] + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Web/serverfarms", + "name": "[variables('webAppPlanName')]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "properties": { + "reserved": "false" + }, + "sku": { + "name": "S1", + "capacity": 1 + } + }, + { + "name": "[variables('webAppName')]", + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('webAppPlanId')]", + "[variables('virtualNetworkId')]" + ], + "properties": { + "serverFarmId": "[variables('webAppPlanId')]", + "reserved": "false", + "siteConfig": { + "http20Enabled": "true", + "minTlsVersion": "1.2", + "ipSecurityRestrictions": [ + { + "vnetSubnetResourceId": "[variables('virtualNetworkSubnetId')]", + "action": "Allow", + "tag": "Default", + "priority": 200, + "name": "appGatewaySubnet", + "description": "Isolate traffic to subnet containing Azure Application Gateway" + } + ] + }, + "httpsOnly": "false" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "[variables('publicIpAddressName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(variables('webAppName'))]" + } + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2020-05-01", + "name": "[variables('applicationGatewayName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('publicIpAddressId')]", + "[variables('virtualNetworkId')]" + ], + "properties": { + "sku": { + "name": "Standard_v2", + "tier": "Standard_v2" + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfigName", + "properties": { + "subnet": { + "id": "[variables('virtualNetworkSubnetId')]" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayPublicFrontendIpConfig", + "properties": { + "PublicIPAddress": { + "id": "[variables('publicIpAddressId')]" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort_80", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "[variables('appGwBackendAddressPoolName')]", + "properties": { + "backendAddresses": [ + { + "fqdn": "[reference(variables('webAppName')).hostNames[0]]" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayHttpSetting_80", + "properties": { + "Port": 80, + "Protocol": "Http", + "cookieBasedAffinity": "Disabled", + "requestTimeout": 20, + "pickHostNameFromBackendAddress": true + } + } + ], + "httpListeners": [ + { + "name": "appGatewayListener", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('appGwFrontendIpConfigId')]" + }, + "frontendPort": { + "id": "[variables('appGwFrontendPortId')]" + }, + "protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "appGatewayRoutingRule", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "[variables('appGwListenerId')]" + }, + "backendAddressPool": { + "id": "[variables('appGwBackendAddressPoolId')]" + }, + "backendHttpSettings": { + "id": "[variables('appGwHttpSettingId')]" + } + } + } + ], + "enableHttp2": true, + "probes": [ + { + "name": "appGatewayHttpSettingProbe_80", + "properties": { + "backendHttpSettings": [ + { + "id": "[variables('appGwHttpSettingId')]" + } + ], + "interval": 30, + "minServers": 0, + "path": "/", + "protocol": "Http", + "timeout": 30, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": true + } + } + ], + "autoscaleConfiguration": { + "minCapacity": 2, + "maxCapacity": 5 + } + } + } + ], + "outputs": { + "appGatewayUrl": { + "type": "string", + "value": "[concat('http://', reference(variables('publicIpAddressName')).dnsSettings.fqdn, '/')]" + }, + "webAppUrl": { + "type": "string", + "value": "[concat('http://', reference(variables('webAppName')).hostNames[0], '/')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1799 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1799 new file mode 100644 index 0000000..2cc4918 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1799 @@ -0,0 +1,184 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.parameters.json" + ], + "timestamp": 1642962911428, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json", + "/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1799", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.cache/redis" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1799", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "skuName": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ], + "metadata": { + "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "metadata": { + "description": "Describes plan's instance count" + }, + "maxValue": 7 + }, + "cacheSKUName": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Basic", + "metadata": { + "description": "The pricing tier of the new Azure Redis Cache." + } + }, + "cacheSKUFamily": { + "type": "string", + "allowedValues": [ + "C" + ], + "defaultValue": "C", + "metadata": { + "description": "The family for the sku." + } + }, + "cacheSKUCapacity": { + "type": "int", + "allowedValues": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "defaultValue": 0, + "metadata": { + "description": "The size of the new Azure Redis Cache instance. " + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "hostingPlanName": "[concat('hostingplan', uniqueString(resourceGroup().id))]", + "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]", + "cacheName": "[concat('cache', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HostingPlan" + }, + "sku": { + "name": "F1", + "capacity": 1 + }, + "properties": { + "name": "[variables('hostingPlanName')]" + } + }, + { + "apiVersion": "2015-08-01", + "name": "[variables('webSiteName')]", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]", + "[resourceId('Microsoft.Cache/Redis/', variables('cacheName'))]" + ], + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty", + "displayName": "Website" + }, + "properties": { + "name": "[variables('webSiteName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + }, + "resources": [ + { + "apiVersion": "2015-08-01", + "type": "config", + "name": "appsettings", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites/', variables('webSiteName'))]", + "[resourceId('Microsoft.Cache/Redis/', variables('cacheName'))]" + ], + "properties": { + "CacheConnection": "[concat(variables('cacheName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2020-12-01').primaryKey)]" + } + } + ] + }, + { + "name": "[variables('cacheName')]", + "type": "Microsoft.Cache/Redis", + "location": "[resourceGroup().location]", + "apiVersion": "2015-08-01", + "tags": { + "displayName": "cache" + }, + "properties": { + "sku": { + "name": "Basic", + "family": "C", + "capacity": 0 + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT18 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT18 new file mode 100644 index 0000000..94a4031 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT18 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/createForest.json" + ], + "timestamp": 1642962883459, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/createForest.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT18", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT18", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "domainName": { + "type": "string" + }, + "DnsForwarder": { + "type": "string" + }, + "location": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "" + } + }, + "variables": { + "adRootDC1ModulesURL": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateADRootDC1.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "adRootDC1ConfigurationFunction": "CreateADRootDC1.ps1\\CreateADRootDC1" + }, + "resources": [ + { + "name": "vmName/CreateADForest1", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateADRootDC1.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "CreateADRootDC1.ps1\\CreateADRootDC1", + "Properties": { + "DomainName": "domainName", + "DnsForwarder": "DnsForwarder", + "AdminCreds": { + "UserName": "adminUserName", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "adminPassword" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT180 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT180 new file mode 100644 index 0000000..a4ea741 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT180 @@ -0,0 +1,1302 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "timestamp": 1642962889814, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT180", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT180", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "artifactsBaseUrl": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/intel-lustre-client-server", + "metadata": { + "description": "Base URL of the solution template gallery package", + "artifactsBaseUrl": "" + }, + "value": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the Lustre nodes" + }, + "value": "Japan East" + }, + "storageAccountCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of storage accounts that will be created for the Lustre nodes to spread the disks evenly" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Premium_LRS", + "metadata": { + "description": "Storage account type (e.g. Premium_LRS or Standard_LRS)" + } + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "lustre", + "metadata": { + "description": "Prefix that will be used for all virtual machines in this Lustre cluster (e.g. lustre)" + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin username for the virtual machines" + }, + "value": "azureuser" + }, + "adminPassword": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Admin password for the virtual machines" + } + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Globally unique DNS name prefix name must be between 3 and 50 characters long and can contain only dashes, numbers, and lowercase letters. The domain name suffix (e.g. westus.cloudapp.zure.com) will be automatically updated based on the selected location." + }, + "value": "uniqdnsname" + }, + "mgsVmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the Management Server (MGS) that stores configuration information for all Lustre filesystems in a cluster." + }, + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11" + ] + }, + "mdsVmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the Metadata Server (MDS) that makes metadata (e.g. files, directories, permissions) available to Lustre clients" + }, + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11" + ] + }, + "ossVmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Size of the Object Storage Server (OSS) that provides file I/O service and network request handling for one or more attached disks referred to as Object Storage Target (OST)" + }, + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11" + ] + }, + "ossCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of virtual machines instances to provision for OSS servers" + } + }, + "ossDiskSize": { + "type": "int", + "defaultValue": 128, + "metadata": { + "description": "Size of the data disks to use for the OSTs. All OSS instances have 3 data disks attached." + } + }, + "filesystemName": { + "type": "string", + "defaultValue": "scratch", + "metadata": { + "description": "Name of the Lustre filesytem (e.g. scratch, lustre, shared_data) that will be mounted from clients as mgsip@tcp0:/filesystemname" + } + }, + "existingVnetResourceGroup": { + "type": "string", + "metadata": { + "description": "Virtual Network Resource Group for cases when Lustre nodes are deployed into an existing VNet" + } + }, + "existingVnetName": { + "type": "string", + "metadata": { + "description": "Virtual Network name (e.g. vnet-lustre)" + } + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "existing", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Parameter that specifies if an new or an existing virtual network should be used for deploying Lustre nodes" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Virtual Network Address Prefix (i.e. CIDR)" + } + }, + "subnetServersName": { + "type": "string", + "defaultValue": "subnet-lustre-servers", + "metadata": { + "description": "Lustre servers will be deployed into this subnet within the Virtual Network" + } + }, + "subnetServersAddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "Virtual Network Lustre Servers subnet Address Prefix (i.e. CIDR)" + } + }, + "subnetClientsName": { + "type": "string", + "defaultValue": "subnet-lustre-clients", + "metadata": { + "description": "Lustre clients can be deployed into this subnet within the Virtual Network" + } + }, + "subnetClientsAddressPrefix": { + "type": "string", + "defaultValue": "10.1.1.0/24", + "metadata": { + "description": "Virtual Network Lustre Clients subnet Address Prefix (i.e. CIDR)" + } + }, + "image": { + "type": "string", + "defaultValue": "OpenLogic:CentOS-HPC:7.1", + "allowedValues": [ + "OpenLogic:CentOS-HPC:7.1", + "OpenLogic:CentOS-HPC:6.5", + "OpenLogic:CentOS:6.6", + "OpenLogic:CentOS:7.0" + ], + "metadata": { + "description": "OpenLogic CentOS version to use. CentOS-HPC includes RDMA drivers for compute-to-compute MPI InfiniBand on A8 and A9 VM sizes." + } + }, + "clientadminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for the virtual machines" + }, + "value": "azureclientuser" + }, + "clientAuthenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Authentication type for the virtual machines" + } + }, + "clientAdminPassword": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Admin password for the virtual machines" + } + }, + "sshPublicKeyForClient": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "SSH public key that will be included on all nodes. The OpenSSH public key can be generated with tools like ssh-keygen on Linux or OS X." + } + }, + "dnsNamePrefixForClient": { + "type": "string", + "metadata": { + "description": "Globally unique DNS name prefix name must be between 3 and 50 characters long and can contain only dashes, numbers, and lowercase letters. The domain name suffix (e.g. westus.cloudapp.zure.com) will be automatically updated based on the selected location." + }, + "value": "clntdnsname" + }, + "clientAvailabilitySetName": { + "type": "string", + "defaultValue": "availset-lustre-clients", + "metadata": { + "description": "Lustre clients availability set name is important for grouping clients into deployments that can communicate with each other via RDMA" + } + }, + "clientVmNamePrefix": { + "type": "string", + "defaultValue": "lustre", + "metadata": { + "description": "Prefix for the virtual machine names" + } + }, + "clientVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Lustre client VM" + }, + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D32_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_A1", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D2s_v3", + "Standard_D2s_v3" + ] + }, + "clientCount": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ], + "metadata": { + "description": "Number of Lustre clients" + } + }, + "clientFilesystemName": { + "type": "string", + "defaultValue": "scratch", + "metadata": { + "description": "Name of the Lustre filesystem exposed by the Lustre MGS node" + } + }, + "mgsIpAddress": { + "type": "string", + "defaultValue": "10.1.0.4", + "metadata": { + "description": "IP address of the Lustre MGS node" + } + }, + "clientStorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage account type (e.g. Premium_LRS or Standard_LRS). Make sure to select Premium_LRS only when using DS-series or GS-series Virtual Machines." + } + }, + "existingVnetNameForClient": { + "type": "string", + "defaultValue": "vnet-lustre", + "metadata": { + "description": "Existing Virtual Network name (e.g. vnet-lustre)" + } + }, + "existingSubnetClientsName": { + "type": "string", + "defaultValue": "subnet-lustre-clients", + "metadata": { + "description": "Lustre clients will be deployed into this subnet within the existing Virtual Network" + }, + "value": "subnet-lustre-clients" + }, + "vnetName": { + "value": "vnettest" + }, + "clientlocation": { + "value": "Japan East" + } + }, + "variables": { + "imageReferenceLustre": { + "publisher": "intel", + "offer": "lustre-cloud-edition-gs-image", + "sku": "eval-lustre-2-7", + "version": "latest" + }, + "ossAvailabilitySetSettings": { + "name": "lustreoss", + "faultDomainCount": "3", + "updateDomainCount": "5" + }, + "baseUrl": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/", + "scriptUrlLustre": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/scripts/lustre.sh", + "scriptUrlMonitoring": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/scripts/monitoring.sh", + "templateUrlVnet": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/vnet-existing.json", + "templateUrlMonitoring": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/monitoring.json", + "linuxConfiguration_sshPublicKey": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/azureclientuser/.ssh/authorized_keys", + "keyData": "" + } + ] + } + }, + "imageReference_OpenLogic:CentOS-HPC:7.1": { + "publisher": "OpenLogic", + "offer": "CentOS-HPC", + "sku": "7.1", + "version": "latest" + }, + "imageReference_OpenLogic:CentOS-HPC:6.5": { + "publisher": "OpenLogic", + "offer": "CentOS-HPC", + "sku": "6.5", + "version": "latest" + }, + "imageReference_OpenLogic:CentOS:7.0": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.0", + "version": "latest" + }, + "imageReference_OpenLogic:CentOS:6.6": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.6", + "version": "latest" + }, + "imageReference": "concat(imageReference_,parameters(image))", + "clientAvailabilitySetSettings": { + "name": "availset-lustre-clients", + "faultDomainCount": "3", + "updateDomainCount": "5" + }, + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'server')]", + "clientStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'client')]", + "vnetID": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/existingVnetName", + "subnetServersID": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/existingVnetName/subnets/subnet-lustre-servers", + "subnetClientsID": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/existingVnetName/subnets/subnet-lustre-clients", + "mgsStorageAccountNumber": "1", + "mdsStorageAccountNumber": "1", + "mgsDiskCount": "2", + "mdsDiskCount": "1", + "ossDiskCount": "3", + "baseUrl1": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/", + "vnetID1": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/vnet-lustre", + "subnetClientsID1": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/vnet-lustre/subnets/subnet-lustre-clients", + "scriptUrlLustreClient": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/scripts/lustre_client.sh", + "sshKeyPathClient": "/home/azureclientuser/.ssh/authorized_keys", + "linuxConfiguration_password": {}, + "linuxConfiguration": "concat(linuxConfiguration_,parameters(clientAuthenticationType))" + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat(variables('storageAccountName'),copyIndex(1))]", + "location": "Japan East", + "copy": { + "name": "storageAccountsCopy", + "count": 1 + }, + "properties": { + "accountType": "Premium_LRS" + } + }, + { + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "name": "vnet", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/vnet-existing.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "Japan East" + }, + "vnetName": { + "value": "existingVnetName" + }, + "vnetResourceGroup": { + "value": "existingVnetResourceGroup" + }, + "vnetAddressPrefix": { + "value": "10.1.0.0/16" + }, + "subnetServersName": { + "value": "subnet-lustre-servers" + }, + "subnetServersAddressPrefix": { + "value": "10.1.0.0/24" + }, + "subnetClientsName": { + "value": "subnet-lustre-clients" + }, + "subnetClientsAddressPrefix": { + "value": "10.1.1.0/24" + } + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/availabilitySets", + "name": "(ossAvailabilitySetSettings).name", + "location": "Japan East", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": "(ossAvailabilitySetSettings).faultDomainCount", + "platformUpdateDomainCount": "(ossAvailabilitySetSettings).updateDomainCount" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "lustremgs", + "location": "Japan East", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "uniqdnsname" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "lustremgs", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Resources/deployments/vnet", + "Microsoft.Network/publicIPAddresses/lustremgs" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lustremgs" + }, + "subnet": { + "id": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/existingVnetName/subnets/subnet-lustre-servers" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "lustremgs", + "plan": { + "publisher": "intel", + "product": "lustre-cloud-edition-gs-image", + "name": "eval-lustre-2-7" + }, + "location": "Japan East", + "dependsOn": [ + "storageAccountsCopy", + "Microsoft.Network/networkInterfaces/lustremgs" + ], + "tags": { + "LustreType": "mgt" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "lustremgs", + "adminUsername": "azureuser", + "adminPassword": "", + "linuxConfiguration": "concat(linuxConfiguration_,parameters(clientAuthenticationType))" + }, + "storageProfile": { + "imageReference": { + "publisher": "(imageReferenceLustre).publisher", + "offer": "(imageReferenceLustre).offer", + "sku": "(imageReferenceLustre).sku", + "version": "latest" + }, + "osDisk": { + "name": "lustremgs_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "lustremgs_DataDisk1", + "diskSizeGB": 5, + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "lustremgs_DataDisk2", + "diskSizeGB": 16, + "lun": 1, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/lustremgs" + } + ] + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "lustremgs/init", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/lustremgs" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/scripts/lustre.sh" + ], + "commandToExecute": "[concat('sh lustre.sh', ' -n MGS', ' -i 0', ' -d ', variables('mgsDiskCount'), ' -m ', reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mgs'))).ipConfigurations[0].properties.privateIPAddress, ' -l ', reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mgs'))).ipConfigurations[0].properties.privateIPAddress, ' -f ', parameters('filesystemName'))]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "lustremds", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Resources/deployments/vnet", + "Microsoft.Network/networkInterfaces/lustremgs" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/existingVnetName/subnets/subnet-lustre-servers" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "lustremds", + "plan": { + "publisher": "intel", + "product": "lustre-cloud-edition-gs-image", + "name": "eval-lustre-2-7" + }, + "location": "Japan East", + "dependsOn": [ + "storageAccountsCopy", + "Microsoft.Network/networkInterfaces/lustremds" + ], + "tags": { + "LustreType": "mdt" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "lustremds", + "adminUsername": "azureuser", + "adminPassword": "", + "linuxConfiguration": "concat(linuxConfiguration_,parameters(clientAuthenticationType))" + }, + "storageProfile": { + "imageReference": { + "publisher": "(imageReferenceLustre).publisher", + "offer": "(imageReferenceLustre).offer", + "sku": "(imageReferenceLustre).sku", + "version": "latest" + }, + "osDisk": { + "name": "lustremds_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "lustremds_DataDisk1", + "diskSizeGB": 128, + "lun": 0, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/lustremds" + } + ] + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "lustremds/init", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/lustremds", + "Microsoft.Compute/virtualMachines/lustremgs/extensions/init" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/scripts/lustre.sh" + ], + "commandToExecute": "[concat('sh lustre.sh', ' -n MDS', ' -i 0', ' -d ', variables('mdsDiskCount'), ' -m ', reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mgs'))).ipConfigurations[0].properties.privateIPAddress, ' -l ', reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mds'))).ipConfigurations[0].properties.privateIPAddress, ' -f ', parameters('filesystemName'))]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "lustreosscopyIndex()", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Resources/deployments/vnet", + "Microsoft.Network/networkInterfaces/lustremds" + ], + "copy": { + "name": "ossNicCopy", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/existingVnetName/subnets/subnet-lustre-servers" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "lustreosscopyIndex()", + "plan": { + "publisher": "intel", + "product": "lustre-cloud-edition-gs-image", + "name": "eval-lustre-2-7" + }, + "location": "Japan East", + "dependsOn": [ + "storageAccountsCopy", + "Microsoft.Network/networkInterfaces/lustreosscopyIndex()" + ], + "copy": { + "name": "ossVmCopy", + "count": 2 + }, + "tags": { + "LustreType": "ost" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/(ossAvailabilitySetSettings).name" + }, + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "lustreosscopyIndex()", + "adminUsername": "azureuser", + "adminPassword": "", + "linuxConfiguration": "concat(linuxConfiguration_,parameters(clientAuthenticationType))" + }, + "storageProfile": { + "imageReference": { + "publisher": "(imageReferenceLustre).publisher", + "offer": "(imageReferenceLustre).offer", + "sku": "(imageReferenceLustre).sku", + "version": "latest" + }, + "osDisk": { + "name": "lustreosscopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "lustreosscopyIndex()_DataDisk1", + "diskSizeGB": 128, + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "lustreosscopyIndex()_DataDisk2", + "diskSizeGB": 128, + "lun": 1, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "lustreosscopyIndex()_DataDisk3", + "diskSizeGB": 128, + "lun": 2, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/lustreosscopyIndex()" + } + ] + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "lustreosscopyIndex()/init", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/lustreosscopyIndex()", + "Microsoft.Compute/virtualMachines/lustremds/extensions/init" + ], + "copy": { + "name": "ossExtensionsCopy", + "count": 2 + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/scripts/lustre.sh" + ], + "commandToExecute": "[concat('sh lustre.sh', ' -n OSS', ' -i ', copyIndex(), ' -d ', variables('ossDiskCount'), ' -m ', reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mgs'))).ipConfigurations[0].properties.privateIPAddress, ' -l ', reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'oss', copyIndex()))).ipConfigurations[0].properties.privateIPAddress, ' -f ', parameters('filesystemName'))]" + } + } + }, + { + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "name": "monitoring", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/lustreoss0/extensions/init" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/monitoring.json" + }, + "parameters": { + "location": { + "value": "Japan East" + }, + "vmNamePrefix": { + "value": "lustre" + }, + "ossCount": { + "value": 2 + }, + "filesystemName": { + "value": "scratch" + }, + "scriptUrlMonitoring": { + "value": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/scripts/monitoring.sh" + }, + "mgsip": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mgs'))).ipConfigurations[0].properties.privateIPAddress]" + }, + "mdsip0": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mds'))).ipConfigurations[0].properties.privateIPAddress]" + }, + "ossip0": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'oss0'))).ipConfigurations[0].properties.privateIPAddress]" + } + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('clientStorageAccountName')]", + "location": "Japan East", + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/availabilitySets", + "name": "(clientAvailabilitySetSettings).name", + "location": "Japan East", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": "(clientAvailabilitySetSettings).faultDomainCount", + "platformUpdateDomainCount": "(clientAvailabilitySetSettings).updateDomainCount" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "lustreclient0", + "location": "Japan East", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "clntdnsname" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "lustreclient0", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/lustreclient0" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lustreclient0" + }, + "subnet": { + "id": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/vnet-lustre/subnets/subnet-lustre-clients" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(parameters('clientVmNamePrefix'), 'client', copyIndex(1))]", + "location": "Japan East", + "copy": { + "name": "clientNicCopy", + "count": "[sub(parameters('clientCount'),1)]" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "existingVnetResourceGroup/Microsoft.Network/virtualNetworks/vnet-lustre/subnets/subnet-lustre-clients" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "lustreclientcopyIndex()", + "location": "Japan East", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('clientStorageAccountName'))]", + "[concat('Microsoft.Compute/availabilitySets/', variables('clientAvailabilitySetSettings').name)]", + "[concat('Microsoft.Network/networkInterfaces/', parameters('clientVmNamePrefix'), 'client', copyIndex())]" + ], + "copy": { + "name": "clientVmCopy", + "count": 2 + }, + "tags": { + "LustreType": "client" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/(clientAvailabilitySetSettings).name" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "lustreclientcopyIndex()", + "adminUsername": "azureclientuser", + "adminPassword": "", + "linuxConfiguration": "concat(linuxConfiguration_,parameters(clientAuthenticationType))" + }, + "storageProfile": { + "imageReference": "concat(imageReference_,parameters(image))", + "osDisk": { + "name": "lustreclientcopyIndex()OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/lustreclientcopyIndex()" + } + ] + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "lustreclientcopyIndex()/init", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/lustreclientcopyIndex()" + ], + "copy": { + "name": "clientExtensionsCopy", + "count": 2 + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create/scripts/lustre_client.sh" + ], + "commandToExecute": "[concat('bash lustre_client.sh', ' -n ', parameters('image'), ' -i ', copyIndex(), ' -d 0', ' -m ', parameters('mgsIpAddress'), ' -l ', reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('clientVmNamePrefix'), 'client', copyIndex()))).ipConfigurations[0].properties.privateIPAddress, ' -f ', parameters('clientFilesystemName'))]" + } + } + } + ], + "outputs": { + "mgsNID": { + "type": "string", + "value": "[concat('',reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mgs'))).ipConfigurations[0].properties.privateIPAddress)]" + }, + "mgsDomainName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmNamePrefix'),'mgs'))).dnsSettings.fqdn]" + }, + "gangliaUrl": { + "type": "string", + "value": "[concat('http://',reference(resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmNamePrefix'),'mgs'))).dnsSettings.fqdn,'/ganglia/')]" + }, + "mountCommand": { + "type": "string", + "value": "[concat('mount -t lustre ',reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'mgs'))).ipConfigurations[0].properties.privateIPAddress,'@tcp:/',parameters('filesystemName'),' /your_mount_point_directory')]" + }, + "client0DomainName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('clientVmNamePrefix'),'client0'))).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1800 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1800 new file mode 100644 index 0000000..ff0caf0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1800 @@ -0,0 +1,103 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-basic-linux/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-basic-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962911436, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-basic-linux/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-basic-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1800", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1800", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "AzureLinuxApp", + "metadata": { + "description": "Base name of the resource such as web app name and app service plan " + }, + "minLength": 2, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "The SKU of App Service Plan " + } + }, + "linuxFxVersion": { + "type": "string", + "defaultValue": "php|7.4", + "metadata": { + "description": "The Runtime stack of current web app" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "webAppPortalName": "GEN-UNIQUE-webapp", + "appServicePlanName": "AppServicePlan-GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "AppServicePlan-GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1" + }, + "kind": "linux", + "properties": { + "reserved": true + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-webapp", + "location": "[resourceGroup().location]", + "kind": "app", + "dependsOn": [ + "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE" + ], + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE", + "siteConfig": { + "linuxFxVersion": "php|7.4" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1801 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1801 new file mode 100644 index 0000000..936c790 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1801 @@ -0,0 +1,150 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-basic-windows/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-basic-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962911442, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-basic-windows/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-basic-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1801", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1801", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('webApp-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Web app name." + }, + "minLength": 2, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sku": { + "type": "string", + "defaultValue": "F1", + "metadata": { + "description": "The SKU of App Service Plan." + } + }, + "language": { + "type": "string", + "defaultValue": ".net", + "allowedValues": [ + ".net", + "php", + "node", + "html" + ], + "metadata": { + "description": "The language stack of the app." + } + }, + "repoUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional Git Repo URL, if empty a 'hello world' app will be deploy from the Azure-Samples repo" + } + } + }, + "variables": { + "appServicePlanPortalName": "AppServicePlan-GEN-UNIQUE", + "gitRepoReference": { + ".net": "https://github.com/Azure-Samples/app-service-web-dotnet-get-started", + "node": "https://github.com/Azure-Samples/nodejs-docs-hello-world", + "php": "https://github.com/Azure-Samples/php-docs-hello-world", + "html": "https://github.com/Azure-Samples/html-docs-hello-world" + }, + "gitRepoUrl": "[if(empty(parameters('repoUrl')), variables('gitRepoReference')[parameters('language')], parameters('repoUrl'))]", + "configReference": { + ".net": { + "comments": ".Net app. No additional configuration needed." + }, + "html": { + "comments": "HTML app. No additional configuration needed." + }, + "php": { + "phpVersion": "7.4" + }, + "node": { + "appSettings": [ + { + "name": "WEBSITE_NODE_DEFAULT_VERSION", + "value": "12.15.0" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/serverfarms", + "name": "AppServicePlan-GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "F1" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/sites", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE" + ], + "properties": { + "siteConfig": "(configReference)[parameters(language)]", + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE" + }, + "resources": [ + { + "type": "sourcecontrols", + "apiVersion": "2020-06-01", + "name": "web", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "repoUrl": "[if(empty(parameters('repoUrl')), variables('gitRepoReference')[parameters('language')], parameters('repoUrl'))]", + "branch": "master", + "isManualIntegration": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1802 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1802 new file mode 100644 index 0000000..9d25f78 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1802 @@ -0,0 +1,210 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-custom-deployment-slots/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-custom-deployment-slots/azuredeploy.parameters.json" + ], + "timestamp": 1642962911449, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-custom-deployment-slots/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-custom-deployment-slots/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1802", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/config", + "microsoft.web/serverfarms", + "microsoft.web/sites/slots" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1802", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "baseResourceName": { + "type": "string", + "metadata": { + "description": "Name of the resource" + }, + "maxLength": 15, + "value": "GEN-UNIQUE-12" + }, + "appSettingName": { + "type": "string", + "metadata": { + "description": "Name of the app setting" + }, + "maxLength": 24, + "value": "GEN-UNIQUE-13" + }, + "environments": { + "defaultValue": [ + "Dev", + "QA", + "UAT", + "Preview" + ], + "type": "array", + "metadata": { + "description": "Array with the names for the environment slots" + }, + "maxLength": 19 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "standardPlanMaxAdditionalSlots": 4, + "webAppPortalName": "GEN-UNIQUE-12Portal", + "appServicePlanName": "AppServicePlan-GEN-UNIQUE-12", + "stickyAppSettingName": "GEN-UNIQUE-13-sticky" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/serverfarms", + "kind": "app", + "name": "AppServicePlan-GEN-UNIQUE-12", + "location": "[resourceGroup().location]", + "comments": "This app service plan is used for the web app and slots.", + "tags": { + "displayName": "AppServicePlan" + }, + "properties": {}, + "sku": { + "name": "[if(lessOrEquals(length(parameters('environments')), variables('standardPlanMaxAdditionalSlots')), 'S1', 'P1')]" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/sites", + "kind": "app", + "name": "GEN-UNIQUE-12Portal", + "location": "[resourceGroup().location]", + "comments": "This is the web app, also the default 'nameless' slot.", + "tags": { + "displayName": "WebApp" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE-12", + "siteConfig": { + "appSettings": [ + { + "name": "GEN-UNIQUE-13", + "value": "value" + }, + { + "name": "GEN-UNIQUE-13-sticky", + "value": "value" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE-12" + ] + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/sites/slots", + "name": "[concat(variables('webAppPortalName'), '/', parameters('environments')[copyIndex()])]", + "kind": "app", + "location": "[resourceGroup().location]", + "comments": "This specifies the web app slots.", + "tags": { + "displayName": "WebAppSlots" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE-12" + }, + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE-12Portal" + ] + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/sites/slots", + "name": "[concat(variables('webAppPortalName'), '/', parameters('environments')[copyIndex()])]", + "kind": "app", + "location": "[resourceGroup().location]", + "comments": "This specifies the web app slots.", + "tags": { + "displayName": "WebAppSlots" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE-12" + }, + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE-12Portal" + ] + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/sites/slots", + "name": "[concat(variables('webAppPortalName'), '/', parameters('environments')[copyIndex()])]", + "kind": "app", + "location": "[resourceGroup().location]", + "comments": "This specifies the web app slots.", + "tags": { + "displayName": "WebAppSlots" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE-12" + }, + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE-12Portal" + ] + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Web/sites/slots", + "name": "[concat(variables('webAppPortalName'), '/', parameters('environments')[copyIndex()])]", + "kind": "app", + "location": "[resourceGroup().location]", + "comments": "This specifies the web app slots.", + "tags": { + "displayName": "WebAppSlots" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/AppServicePlan-GEN-UNIQUE-12" + }, + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE-12Portal" + ] + }, + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-12Portal/slotconfignames", + "type": "Microsoft.Web/sites/config", + "comments": "This specifies the sticky (slot setting) application settings.", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE-12Portal" + ], + "properties": { + "appSettingNames": [ + "GEN-UNIQUE-13-sticky" + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1803 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1803 new file mode 100644 index 0000000..948e9a0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1803 @@ -0,0 +1,285 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-airflow-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-airflow-postgresql/azuredeploy.parameters.json" + ], + "timestamp": 1642962911458, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-airflow-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-airflow-postgresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1803", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1803", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "defaultValue": "[concat('airflow-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of Airflow web app" + } + }, + "servicePlanTier": { + "type": "string", + "allowedValues": [ + "Standard", + "Premium", + "PremiumV2" + ], + "defaultValue": "PremiumV2", + "metadata": { + "description": "Tier for Service Plan" + } + }, + "servicePlanSku": { + "type": "string", + "allowedValues": [ + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P1V2", + "P2V2", + "P3V3" + ], + "defaultValue": "P1V2", + "metadata": { + "description": "Size for Service Plan" + } + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-8" + }, + "administratorLoginPassword": { + "type": "securestring", + "minLength": 8, + "maxLength": 128, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "databaseSkuCapacity": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 4, + 8, + 16, + 32 + ], + "metadata": { + "description": "Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)" + } + }, + "databaseSkuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "allowedValues": [ + "B_Gen5_1", + "B_Gen5_2", + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_8", + "GP_Gen5_16", + "GP_Gen5_32", + "MO_Gen5_2", + "MO_Gen5_4", + "MO_Gen5_8", + "MO_Gen5_16", + "MO_Gen5_32" + ], + "metadata": { + "description": "Azure database for PostgreSQL sku name " + } + }, + "databaseSkuSizeMB": { + "type": "int", + "allowedValues": [ + 102400, + 51200 + ], + "defaultValue": 51200, + "metadata": { + "description": "Azure database for PostgreSQL Sku Size " + } + }, + "databaseSkuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "Basic", + "GeneralPurpose", + "MemoryOptimized" + ], + "metadata": { + "description": "Azure database for PostgreSQL pricing tier" + } + }, + "postgresqlVersion": { + "type": "string", + "allowedValues": [ + "9.5", + "9.6" + ], + "defaultValue": "9.6", + "metadata": { + "description": "PostgreSQL version" + } + }, + "databaseSkuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for PostgreSQL sku family" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all the resources." + } + } + }, + "variables": { + "databaseName": "airflowdb", + "serverName": "[concat('airflow-', uniqueString(resourceGroup().id))]pgserver", + "AirflowUserName": "GEN-UNIQUE-8@[concat('airflow-', uniqueString(resourceGroup().id))]pgserver", + "hostingPlanName": "[concat('airflow-', uniqueString(resourceGroup().id))]serviceplan" + }, + "resources": [ + { + "comments": "This is the Airflow Linux web app running puckel/docker-airflow Docker image", + "type": "Microsoft.Web/sites", + "name": "[concat('airflow-', uniqueString(resourceGroup().id))]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('hostingPlanName')]", + "[variables('databaseName')]" + ], + "properties": { + "siteConfig": { + "linuxFxVersion": "DOCKER|puckel/docker-airflow:latest" + }, + "name": "[concat('airflow-', uniqueString(resourceGroup().id))]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + }, + "resources": [ + { + "name": "appsettings", + "type": "config", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Web/sites/[concat('airflow-', uniqueString(resourceGroup().id))]" + ], + "tags": { + "displayName": "AirflowappSettings" + }, + "comments": "This are the generated settings for the Airflow SQL Alchemy connectionstring", + "properties": { + "AIRFLOW__CORE__SQL_ALCHEMY_CONN": "[concat('postgresql://', variables('AirflowUserName'),':',parameters('administratorLoginPassword'),'@',reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName,':5432/',variables('databaseName'))]", + "AIRFLOW__CORE__LOAD_EXAMPLES": "true", + "WEBSITES_ENABLE_APP_SERVICE_STORAGE": "true" + } + } + ] + }, + { + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "[variables('hostingPlanName')]", + "workerSizeId": "1", + "reserved": true, + "numberOfWorkers": "1" + }, + "sku": { + "Tier": "PremiumV2", + "Name": "P1V2" + }, + "kind": "linux" + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.DBforPostgreSQL/servers", + "location": "[resourceGroup().location]", + "name": "[variables('serverName')]", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": 51200, + "family": "Gen5" + }, + "properties": { + "createMode": "Default", + "version": "9.6", + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD", + "storageMB": 51200 + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('serverName'),'firewall')]", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "name": "airflowdb", + "type": "databases", + "apiVersion": "2017-12-01", + "properties": { + "charset": "utf8", + "collation": "English_United States.1252" + }, + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers/', variables('serverName'))]" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1804 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1804 new file mode 100644 index 0000000..7ee36ab --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1804 @@ -0,0 +1,126 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-django/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-django/azuredeploy.parameters.json" + ], + "timestamp": 1642962911465, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-django/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-django/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1804", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1804", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('Django-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "That name is the name of our application. It has to be unique.Type a name followed by your resource group name. (-)" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sku": "Free", + "skuCode": "F1", + "workerSize": "0", + "appInsights": "GEN-UNIQUE-insights", + "hostingPlanName": "[concat( 'hpn-', resourceGroup().name)]" + }, + "resources": [ + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]", + "[resourceId('microsoft.insights/components', variables('appInsights'))]" + ], + "properties": { + "siteConfig": { + "appSettings": [ + { + "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE", + "value": "false" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsights'))).InstrumentationKey]" + }, + { + "name": "XDT_MicrosoftApplicationInsights_Mode", + "value": "default" + }, + { + "name": "ApplicationInsightsAgent_EXTENSION_VERSION", + "value": "~2" + } + ], + "linuxFxVersion": "DOCKER|appsvcorg/django-python:0.1" + }, + "name": "GEN-UNIQUE", + "clientAffinityEnabled": false, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "Tier": "Free", + "Name": "F1" + }, + "kind": "linux", + "properties": { + "name": "[variables('hostingPlanName')]", + "workerSizeId": "0", + "reserved": true, + "numberOfWorkers": "1" + } + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE-insights", + "location": "[resourceGroup().location]", + "properties": { + "ApplicationId": "GEN-UNIQUE", + "Application_Type": "web" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1805 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1805 new file mode 100644 index 0000000..75ffa71 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1805 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-flask/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-flask/azuredeploy.parameters.json" + ], + "timestamp": 1642962911474, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-flask/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-flask/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1805", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1805", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('flask-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "That name is the name of our application. It has to be unique.Type a name followed by your resource group name. (-)" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "alwaysOn": false, + "sku": "Free", + "skuCode": "F1", + "workerSize": "0", + "workerSizeId": "0", + "numberOfWorkers": "1", + "linuxFxVersion": "PYTHON|3.7", + "hostingPlanName": "[concat('hpn-', resourceGroup().name)]" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "properties": { + "name": "GEN-UNIQUE", + "siteConfig": { + "linuxFxVersion": "PYTHON|3.7", + "alwaysOn": false + }, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "clientAffinityEnabled": false + } + }, + { + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "kind": "linux", + "properties": { + "name": "[variables('hostingPlanName')]", + "workerSize": "0", + "workerSizeId": "0", + "numberOfWorkers": "1", + "reserved": true + }, + "sku": { + "Tier": "Free", + "Name": "F1" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1806 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1806 new file mode 100644 index 0000000..f3bf693 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1806 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-managed-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-managed-mysql/azuredeploy.parameters.json" + ], + "timestamp": 1642962911481, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-managed-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-managed-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1806", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1806", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "defaultValue": "[concat('MySQL-', uniqueString(resourceGroup().name))]", + "metadata": { + "description": "The unique name of your Web Site." + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-16" + }, + "administratorLoginPassword": { + "type": "securestring", + "minLength": 8, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "dbSkucapacity": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 4, + 8, + 16, + 32 + ], + "metadata": { + "description": "Azure database for mySQL compute capacity in vCores (2,4,8,16,32)" + } + }, + "dbSkuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "allowedValues": [ + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_8", + "GP_Gen5_16", + "GP_Gen5_32", + "MO_Gen5_2", + "MO_Gen5_4", + "MO_Gen5_8", + "MO_Gen5_16", + "MO_Gen5_32" + ], + "metadata": { + "description": "Azure database for mySQL sku name " + } + }, + "dbSkuSizeMB": { + "type": "int", + "defaultValue": 51200, + "allowedValues": [ + 102400, + 51200 + ], + "metadata": { + "description": "Azure database for mySQL Sku Size " + } + }, + "dbSkuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "GeneralPurpose", + "MemoryOptimized" + ], + "metadata": { + "description": "Azure database for mySQL pricing tier" + } + }, + "mysqlVersion": { + "type": "string", + "defaultValue": "5.7", + "allowedValues": [ + "5.6", + "5.7" + ], + "metadata": { + "description": "MySQL version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "databaseskuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for mySQL sku family" + } + } + }, + "variables": { + "databaseName": "[concat('database', uniqueString(resourceGroup().id))]", + "serverName": "[concat('mysql-', uniqueString(resourceGroup().id))]", + "hostingPlanName": "[concat('hpn-', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "Tier": "Standard", + "Name": "S1" + }, + "kind": "linux", + "properties": { + "name": "[variables('hostingPlanName')]", + "workerSizeId": "1", + "reserved": true, + "numberOfWorkers": "1" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('hostingPlanName')]" + ], + "properties": { + "siteConfig": { + "linuxFxVersion": "php|7.0", + "connectionStrings": [ + { + "name": "defaultConnection", + "ConnectionString": "[concat('Database=', variables('databaseName'), ';Data Source=', reference(resourceId('Microsoft.DBforMySQL/servers',variables('serverName'))).fullyQualifiedDomainName,';User Id=',parameters('administratorLogin'),'@',variables('serverName') ,';Password=',parameters('administratorLoginPassword'))]", + "type": "MySql" + } + ] + }, + "name": "GEN-UNIQUE", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + } + }, + { + "type": "Microsoft.DBforMySQL/servers", + "apiVersion": "2017-12-01", + "name": "[variables('serverName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": 51200, + "family": "databaseSkuFamily" + }, + "properties": { + "createMode": "Default", + "version": "5.7", + "administratorLogin": "GEN-UNIQUE-16", + "administratorLoginPassword": "GEN-PASSWORD", + "storageProfile": { + "storageMB": 51200, + "backupRetentionDays": 7, + "geoRedundantBackup": "Disabled" + }, + "sslEnforcement": "Disabled" + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "name": "AllowAzureIPs", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.DBforMySQL/servers/databases', variables('serverName'), variables('databaseName'))]", + "[resourceId('Microsoft.DBforMySQL/servers/', variables('serverName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "type": "databases", + "apiVersion": "2017-12-01", + "name": "[variables('databaseName')]", + "dependsOn": [ + "[resourceId('Microsoft.DBforMySQL/servers/', variables('serverName'))]" + ], + "properties": { + "charset": "utf8", + "collation": "utf8_general_ci" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1807 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1807 new file mode 100644 index 0000000..ea6398e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1807 @@ -0,0 +1,232 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-managed-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-managed-postgresql/azuredeploy.parameters.json" + ], + "timestamp": 1642962911488, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-managed-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-managed-postgresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1807", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1807", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "Name of azure web app" + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "securestring", + "minLength": 8, + "maxLength": 128, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "databaseSkucapacity": { + "type": "int", + "allowedValues": [ + 2, + 4, + 8, + 16, + 32 + ], + "defaultValue": 2, + "metadata": { + "description": "Azure database for PostgreSQL vCores capacity" + } + }, + "databaseSkuName": { + "type": "string", + "allowedValues": [ + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_8", + "GP_Gen5_16", + "GP_Gen5_32", + "MO_Gen5_2", + "MO_Gen5_4", + "MO_Gen5_8", + "MO_Gen5_16", + "B_Gen5_1", + "B_Gen5_2" + ], + "defaultValue": "GP_Gen5_2", + "metadata": { + "description": "Azure database for PostgreSQL sku name : " + } + }, + "databaseSkuSizeMB": { + "type": "int", + "allowedValues": [ + 102400, + 51200 + ], + "defaultValue": 51200, + "metadata": { + "description": "Azure database for PostgreSQL Sku Size " + } + }, + "databaseSkuTier": { + "type": "string", + "allowedValues": [ + "GeneralPurpose", + "MemoryOptimized", + "Basic" + ], + "defaultValue": "GeneralPurpose", + "metadata": { + "description": "Azure database for PostgreSQL pricing tier" + } + }, + "postgresqlVersion": { + "type": "string", + "allowedValues": [ + "9.5", + "9.6" + ], + "defaultValue": "9.6", + "metadata": { + "description": "PostgreSQL version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "databaseName": "GEN-UNIQUEdatabase", + "serverName": "GEN-UNIQUEpgserver", + "hostingPlanName": "GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "type": "Microsoft.Web/sites", + "name": "GEN-UNIQUE", + "dependsOn": [ + "GEN-UNIQUEserviceplan" + ], + "properties": { + "siteConfig": { + "linuxFxVersion": "node|6.10", + "connectionStrings": [ + { + "name": "defaultConnection", + "ConnectionString": "[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=',parameters('administratorLogin'),'@',variables('serverName') ,';Password=',parameters('administratorLoginPassword'))]", + "type": "PostgreSQL" + } + ] + }, + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan" + }, + "apiVersion": "2019-08-01", + "location": "[resourceGroup().location]" + }, + { + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUEserviceplan", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUEserviceplan", + "workerSizeId": "1", + "reserved": true, + "numberOfWorkers": "1" + }, + "sku": { + "Tier": "Standard", + "Name": "S1" + }, + "kind": "linux" + }, + { + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEpgserver", + "properties": { + "createMode": "Default", + "version": "9.6", + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "storageMB": 51200 + }, + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": 51200, + "family": "Gen5" + }, + "type": "Microsoft.DBforPostgreSQL/servers", + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers//GEN-UNIQUEpgserver" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEpgserverfirewall", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "name": "GEN-UNIQUEdatabase", + "type": "databases", + "apiVersion": "2017-12-01", + "properties": { + "charset": "utf8", + "collation": "English_United States.1252" + }, + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers//GEN-UNIQUEpgserver" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1808 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1808 new file mode 100644 index 0000000..17524de --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1808 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-node/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-node/azuredeploy.parameters.json" + ], + "timestamp": 1642962911498, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-node/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-node/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1808", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1808", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('Node-', uniqueString(resourceGroup().name, utcNow('F')))]", + "metadata": { + "description": "That name is the name of our application. It has to be unique.Type a name followed by your resource group name. (-)" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "alwaysOn": false, + "sku": "Free", + "skuCode": "F1", + "workerSize": "0", + "workerSizeId": "0", + "numberOfWorkers": "1", + "linuxFxVersion": "NODE|lts", + "hostingPlanName": "[concat('hpn-', resourceGroup().name)]" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "properties": { + "name": "GEN-UNIQUE", + "siteConfig": { + "linuxFxVersion": "NODE|lts", + "alwaysOn": false + }, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "clientAffinityEnabled": false + } + }, + { + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "kind": "linux", + "sku": { + "Tier": "Free", + "Name": "F1" + }, + "properties": { + "name": "[variables('hostingPlanName')]", + "workerSize": "0", + "workerSizeId": "0", + "numberOfWorkers": "1", + "reserved": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1809 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1809 new file mode 100644 index 0000000..5435ba9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1809 @@ -0,0 +1,316 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-azuresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-azuresql/azuredeploy.parameters.json" + ], + "timestamp": 1642962911506, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-azuresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-azuresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1809", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1809", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "defaultValue": "[concat('sonarqube-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of Azure Web App" + }, + "value": "GEN-UNIQUE" + }, + "sonarqubeImageVersion": { + "type": "string", + "defaultValue": "7.7-community", + "allowedValues": [ + "7.7-community", + "7.6-community", + "7.5-community", + "7.4-community", + "7.1", + "7.1-alpine", + "7.0", + "7.0-alpine", + "6.7.5", + "6.7.5-alpine", + "6.7.4", + "6.7.4-alpine", + "6.7.3", + "6.7.3-alpine", + "6.7.2", + "6.7.2-alpine", + "6.7.1", + "6.7.1-alpine" + ], + "metadata": { + "description": "The version of the Sonarqube container image to use. Only versions of Sonarqube known to be compatible with Azure App Service Web App for Containers are available." + } + }, + "servicePlanPricingTier": { + "type": "string", + "allowedValues": [ + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1V2", + "P2V2", + "P2V3" + ], + "defaultValue": "S2", + "metadata": { + "description": "App Service Plan Pricing Tier" + } + }, + "servicePlanCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 3, + "metadata": { + "description": "App Service Capacity" + } + }, + "sqlServerAdministratorUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Azure SQL Server Administrator Username" + }, + "value": "GEN-UNIQUE-16" + }, + "sqlServerAdministratorPassword": { + "type": "securestring", + "minLength": 12, + "maxLength": 128, + "metadata": { + "description": "Azure SQL Server Administrator Password" + }, + "value": "GEN-PASSWORD" + }, + "sqlDatabaseSkuName": { + "type": "string", + "defaultValue": "GP_S_Gen5_2", + "allowedValues": [ + "GP_Gen4_1", + "GP_Gen4_2", + "GP_Gen4_3", + "GP_Gen4_4", + "GP_Gen4_5", + "GP_Gen4_6", + "GP_Gen4_7", + "GP_Gen4_8", + "GP_Gen4_9", + "GP_Gen4_10", + "GP_Gen4_16", + "GP_Gen4_24", + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_6", + "GP_Gen5_8", + "GP_Gen5_10", + "GP_Gen5_12", + "GP_Gen5_14", + "GP_Gen5_16", + "GP_Gen5_18", + "GP_Gen5_20", + "GP_Gen5_24", + "GP_Gen5_32", + "GP_Gen5_40", + "GP_Gen5_80", + "GP_S_Gen5_1", + "GP_S_Gen5_2", + "GP_S_Gen5_4" + ], + "metadata": { + "description": "Azure SQL Database SKU Name" + } + }, + "sqlDatabaseSkuSizeGB": { + "type": "int", + "minValue": 1, + "maxValue": 1024, + "defaultValue": 16, + "metadata": { + "description": "Azure SQL Database Storage Max Size in GB" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all the resources." + } + } + }, + "variables": { + "databaseName": "sonarqube", + "sqlServerName": "GEN-UNIQUE-sql", + "servicePlanName": "GEN-UNIQUE-asp", + "servicePlanPricingTiers": { + "F1": { + "tier": "Free" + }, + "B1": { + "tier": "Basic" + }, + "B2": { + "tier": "Basic" + }, + "B3": { + "tier": "Basic" + }, + "S1": { + "tier": "Standard" + }, + "S2": { + "tier": "Standard" + }, + "S3": { + "tier": "Standard" + }, + "P1V2": { + "tier": "Standard" + }, + "P2V2": { + "tier": "Standard" + }, + "P2V3": { + "tier": "Standard" + } + }, + "sqlDatabaseServerlessTiers": [ + "GP_S_Gen5_1", + "GP_S_Gen5_2", + "GP_S_Gen5_4" + ] + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-asp", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE-asp", + "workerSizeId": "1", + "reserved": true, + "numberOfWorkers": "1" + }, + "sku": { + "name": "S2", + "tier": "(servicePlanPricingTiers)[parameters(servicePlanPricingTier)].tier", + "capacity": 1 + }, + "kind": "linux" + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE-asp", + "GEN-UNIQUE-sql" + ], + "properties": { + "siteConfig": { + "linuxFxVersion": "DOCKER|sonarqube:7.7-community" + }, + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE-asp" + }, + "resources": [ + { + "type": "config", + "apiVersion": "2020-06-01", + "name": "appsettings", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "tags": { + "displayName": "SonarappSettings" + }, + "properties": { + "SONARQUBE_JDBC_URL": "[concat('jdbc:sqlserver://', reference(resourceId('Microsoft.Sql/servers',variables('sqlServerName'))).fullyQualifiedDomainName, ';databaseName=', variables('databaseName'), ';encrypt=true;trustServerCertificate=false;hostNameInCertificate=', replace(reference(resourceId('Microsoft.Sql/servers', variables('sqlServerName'))).fullyQualifiedDomainName, concat(variables('sqlServerName'), '.'), '*.'), ';loginTimeout=30;')]", + "SONARQUBE_JDBC_USERNAME": "GEN-UNIQUE-16", + "SONARQUBE_JDBC_PASSWORD": "GEN-PASSWORD", + "sonar.path.data": "/home/sonarqube/data" + } + } + ] + }, + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-sql", + "kind": "v12.0", + "properties": { + "administratorLogin": "GEN-UNIQUE-16", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-sqlfirewall", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + }, + "dependsOn": [ + "GEN-UNIQUE-sql" + ] + }, + { + "type": "databases", + "apiVersion": "2020-02-02-preview", + "name": "sonarqube", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_S_Gen5_2", + "tier": "GeneralPurpose" + }, + "kind": "[concat('v12.0,user,vcore',if(contains(variables('sqlDatabaseServerlessTiers'),parameters('sqlDatabaseSkuName')),',serverless',''))]", + "properties": { + "collation": "SQL_Latin1_General_CP1_CS_AS", + "catalogCollation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "[mul(mul(mul(parameters('sqlDatabaseSkuSizeGB'),1024),1024),1024)]" + }, + "dependsOn": [ + "GEN-UNIQUE-sql" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT181 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT181 new file mode 100644 index 0000000..3d8746a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT181 @@ -0,0 +1,170 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/monitoring.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "timestamp": 1642962889885, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/monitoring.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT181", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT181", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the Lustre nodes" + }, + "value": "Japan East" + }, + "vmNamePrefix": { + "type": "string", + "metadata": { + "description": "Prefix that will be used for all virtual machines in this Lustre cluster (e.g. lustre)" + } + }, + "ossCount": { + "type": "int", + "metadata": { + "description": "The number of virtual machines instances to provision for OSS servers" + } + }, + "filesystemName": { + "type": "string", + "metadata": { + "description": "Name of the Lustre filesytem (e.g. scratch, lustre, shared_data) that will mountable from clients as mgsip@tcp0:/filesystemname" + } + }, + "scriptUrlMonitoring": { + "type": "string", + "metadata": { + "description": "URL of the script to setup Ganglia and Lustre Monitoring Tool on the nodes" + } + }, + "mgsip": { + "type": "string", + "metadata": { + "description": "Management Server private IP address" + } + }, + "mdsip0": { + "type": "string", + "metadata": { + "description": "Metadata Server private IP address" + } + }, + "ossip0": { + "type": "string", + "metadata": { + "description": "Object Storage Server #0 private IP address" + } + }, + "artifactsBaseUrl": { + "value": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create" + }, + "adminUsername": { + "value": "azureuser" + }, + "dnsNamePrefix": { + "value": "uniqdnsname" + }, + "existingSubnetClientsName": { + "value": "subnet-lustre-clients" + }, + "vnetName": { + "value": "vnettest" + }, + "clientlocation": { + "value": "Japan East" + }, + "clientadminUsername": { + "value": "azureclientuser" + }, + "dnsNamePrefixForClient": { + "value": "clntdnsname" + } + }, + "resources": [ + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmNamePrefixmds/init", + "location": "Japan East", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptUrlMonitoring" + ], + "commandToExecute": "sh monitoring.sh -n MDS -i 0 -d 1 -m mgsip -l 0.0.0.0 -f filesystemName -g mdsip0 -h ossip0" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmNamePrefixosscopyIndex()/init", + "location": "Japan East", + "copy": { + "name": "ossExtensionsCopy", + "count": "ossCount" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptUrlMonitoring" + ], + "commandToExecute": "sh monitoring.sh -n OSS -i copyIndex() -d 3 -m mgsip -l 0.0.0.0 -f filesystemName -g mdsip0 -h ossip0" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmNamePrefixmgs/init", + "location": "Japan East", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptUrlMonitoring" + ], + "commandToExecute": "sh monitoring.sh -n MGS -i 0 -d 2 -m mgsip -l 0.0.0.0 -f filesystemName -g mdsip0 -h ossip0" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1810 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1810 new file mode 100644 index 0000000..049983c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1810 @@ -0,0 +1,278 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-mysql/azuredeploy.parameters.json" + ], + "timestamp": 1642962911514, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1810", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1810", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "Name of azure web app" + }, + "value": "GEN-UNIQUE" + }, + "servicePlanTier": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Basic", + "metadata": { + "description": "Tier for Service Plan" + } + }, + "servicePlanSku": { + "type": "string", + "allowedValues": [ + "B1", + "B2", + "B3", + "S1", + "S2", + "S3" + ], + "defaultValue": "S2", + "metadata": { + "description": "Size for Service Plan" + } + }, + "administratorLogin": { + "type": "string", + "minLength": 6, + "maxLength": 15, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-12" + }, + "administratorLoginPassword": { + "type": "securestring", + "minLength": 8, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "databaseSkuCapacity": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 4, + 8, + 16, + 32 + ], + "metadata": { + "description": "Azure database for MySQL compute capacity in vCores (2,4,8,16,32)" + } + }, + "databaseSkuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "allowedValues": [ + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_8", + "GP_Gen5_16", + "GP_Gen5_32", + "MO_Gen5_2", + "MO_Gen5_4", + "MO_Gen5_8", + "MO_Gen5_16" + ], + "metadata": { + "description": "Azure database for MySQL sku name " + } + }, + "databaseSkuSizeMB": { + "type": "int", + "allowedValues": [ + 102400, + 51200 + ], + "defaultValue": 51200, + "metadata": { + "description": "Azure database for MySQL Sku Size " + } + }, + "databaseSkuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "GeneralPurpose", + "MemoryOptimized" + ], + "metadata": { + "description": "Azure database for MySQL pricing tier" + } + }, + "mysqlVersion": { + "type": "string", + "allowedValues": [ + "5.6", + "5.7" + ], + "defaultValue": "5.7", + "metadata": { + "description": "MySQL version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all the resources" + } + }, + "databaseSkuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for MySQL sku family" + } + } + }, + "variables": { + "databaseName": "GEN-UNIQUEdatabase", + "serverName": "GEN-UNIQUEmysqlserver", + "jdbcSonarUserName": "GEN-UNIQUE-12@GEN-UNIQUEmysqlserver", + "hostingPlanName": "GEN-UNIQUEserviceplan", + "firewallrule": "GEN-UNIQUEmysqlserverfirewall" + }, + "resources": [ + { + "comments": "This is the Linux web app with the Sonarquebe Docker image and the DB", + "type": "Microsoft.Web/sites", + "name": "GEN-UNIQUE", + "apiVersion": "2019-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUEserviceplan", + "GEN-UNIQUEdatabase" + ], + "properties": { + "siteConfig": { + "linuxFxVersion": "DOCKER|SONARQUBE" + }, + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "comments": "This are the generated settings for the Sonar jdbc connectionstring", + "name": "appsettings", + "type": "config", + "apiVersion": "2019-08-01", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "tags": { + "displayName": "SonarappSettings" + }, + "properties": { + "SONARQUBE_JDBC_URL": "[concat('jdbc:mysql://', reference(resourceId('Microsoft.DBforMySQL/servers',variables('serverName'))).fullyQualifiedDomainName , ':3306/',variables('databaseName'),'?verifyServerCertificate=true&useSSL=true&requireSSL=false&useUnicode=true&characterEncoding=utf8')]", + "SONARQUBE_JDBC_USERNAME": "GEN-UNIQUE-12@GEN-UNIQUEmysqlserver", + "SONARQUBE_JDBC_PASSWORD": "GEN-PASSWORD" + } + } + ] + }, + { + "apiVersion": "2019-08-01", + "name": "GEN-UNIQUEserviceplan", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUEserviceplan", + "workerSizeId": "1", + "reserved": true, + "numberOfWorkers": "1" + }, + "sku": { + "Tier": "Basic", + "Name": "S2" + }, + "kind": "linux" + }, + { + "type": "Microsoft.DBforMySQL/servers", + "apiVersion": "2017-12-01", + "name": "GEN-UNIQUEmysqlserver", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": 51200, + "family": "Gen5" + }, + "properties": { + "version": "5.7", + "administratorLogin": "GEN-UNIQUE-12", + "administratorLoginPassword": "GEN-PASSWORD", + "storageMB": 51200 + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEmysqlserverfirewall", + "dependsOn": [ + "Microsoft.DBforMySQL/servers/GEN-UNIQUEmysqlserver" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "name": "GEN-UNIQUEdatabase", + "type": "databases", + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforMySQL/servers/GEN-UNIQUEmysqlserver", + "Microsoft.DBforMySQL/servers/firewallRules/GEN-UNIQUEmysqlserver/GEN-UNIQUEmysqlserverfirewall" + ], + "properties": { + "charset": "utf8", + "collation": "utf8_general_ci" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1811 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1811 new file mode 100644 index 0000000..f04fde7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1811 @@ -0,0 +1,278 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-postgresql/azuredeploy.parameters.json" + ], + "timestamp": 1642962911522, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-linux-sonarqube-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-linux-sonarqube-postgresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1811", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1811", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "Name of azure web app" + }, + "value": "GEN-UNIQUE" + }, + "servicePlanTier": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "Tier for Service Plan" + } + }, + "servicePlanSku": { + "type": "string", + "allowedValues": [ + "B1", + "B2", + "B3", + "S1", + "S2", + "S3" + ], + "defaultValue": "S2", + "metadata": { + "description": "Size for Service Plan" + } + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-16" + }, + "administratorLoginPassword": { + "type": "securestring", + "minLength": 8, + "maxLength": 128, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "databaseSkuCapacity": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 4, + 8, + 16, + 32 + ], + "metadata": { + "description": "Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)" + } + }, + "databaseSkuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "allowedValues": [ + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_8", + "GP_Gen5_16", + "GP_Gen5_32", + "MO_Gen5_2", + "MO_Gen5_4", + "MO_Gen5_8", + "MO_Gen5_16", + "MO_Gen5_32" + ], + "metadata": { + "description": "Azure database for PostgreSQL sku name " + } + }, + "databaseSkuSizeMB": { + "type": "int", + "allowedValues": [ + 102400, + 51200 + ], + "defaultValue": 51200, + "metadata": { + "description": "Azure database for PostgreSQL Sku Size " + } + }, + "databaseSkuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "GeneralPurpose", + "MemoryOptimized" + ], + "metadata": { + "description": "Azure database for PostgreSQL pricing tier" + } + }, + "postgresqlVersion": { + "type": "string", + "allowedValues": [ + "9.5", + "9.6" + ], + "defaultValue": "9.6", + "metadata": { + "description": "PostgreSQL version" + } + }, + "databaseskuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for PostgreSQL sku family" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all the resources." + } + } + }, + "variables": { + "databaseName": "GEN-UNIQUEdatabase", + "serverName": "GEN-UNIQUEpgserver", + "jdbcSonarUserName": "GEN-UNIQUE-16@GEN-UNIQUEpgserver", + "hostingPlanName": "GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "comments": "This is the Linux web app with the Sonarquebe Docker image", + "type": "Microsoft.Web/sites", + "name": "GEN-UNIQUE", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUEserviceplan", + "GEN-UNIQUEdatabase" + ], + "properties": { + "siteConfig": { + "linuxFxVersion": "DOCKER|SONARQUBE" + }, + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "name": "appsettings", + "type": "config", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "tags": { + "displayName": "SonarappSettings" + }, + "comments": "This are the generated settings for the Sonar jdbc connectionstring", + "properties": { + "SONARQUBE_JDBC_URL": "[concat('jdbc:postgresql://', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName ,':5432/',variables('databaseName'),'?user=', variables('jdbcSonarUserName'), '&password=',parameters('administratorLoginPassword'), '&ssl=true')]", + "SONARQUBE_JDBC_USERNAME": "GEN-UNIQUE-16@GEN-UNIQUEpgserver", + "SONARQUBE_JDBC_PASSWORD": "GEN-PASSWORD" + } + } + ] + }, + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUEserviceplan", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUEserviceplan", + "workerSizeId": "1", + "reserved": true, + "numberOfWorkers": "1" + }, + "sku": { + "Tier": "Standard", + "Name": "S2" + }, + "kind": "linux" + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.DBforPostgreSQL/servers", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEpgserver", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": "databaseSkucapacity", + "size": 51200, + "family": "Gen5" + }, + "properties": { + "createMode": "Default", + "version": "9.6", + "administratorLogin": "GEN-UNIQUE-16", + "administratorLoginPassword": "GEN-PASSWORD", + "storageMB": 51200 + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers//GEN-UNIQUEpgserver" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEpgserverfirewall", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "name": "GEN-UNIQUEdatabase", + "type": "databases", + "apiVersion": "2017-12-01", + "properties": { + "charset": "utf8", + "collation": "English_United States.1252" + }, + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers//GEN-UNIQUEpgserver" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1812 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1812 new file mode 100644 index 0000000..661e4e2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1812 @@ -0,0 +1,251 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-managed-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-managed-mysql/azuredeploy.parameters.json" + ], + "timestamp": 1642962911532, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-managed-mysql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-managed-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1812", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/sites/config", + "microsoft.dbformysql/servers/databases", + "microsoft.dbformysql/servers/firewallrules", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1812", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "1834505041454323627" + } + }, + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "Name of azure web app" + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-12" + }, + "administratorLoginPassword": { + "type": "secureString", + "maxLength": 128, + "minLength": 8, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "databaseSkucapacity": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 4, + 8, + 16, + 32 + ], + "metadata": { + "description": "Azure database for MySQL compute capacity in vCores (2,4,8,16,32)" + } + }, + "databaseSkuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "allowedValues": [ + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_8", + "GP_Gen5_16", + "GP_Gen5_32", + "MO_Gen5_2", + "MO_Gen5_4", + "MO_Gen5_8", + "MO_Gen5_16", + "MO_Gen5_32" + ], + "metadata": { + "description": "Azure database for MySQL sku name " + } + }, + "databaseSkuSizeMB": { + "type": "int", + "defaultValue": 51200, + "allowedValues": [ + 51200, + 102400 + ], + "metadata": { + "description": "Azure database for MySQL Sku Size " + } + }, + "databaseSkuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "GeneralPurpose", + "MemoryOptimized" + ], + "metadata": { + "description": "Azure database for MySQL pricing tier" + } + }, + "mySqlVersion": { + "type": "string", + "defaultValue": "5.6", + "allowedValues": [ + "5.6", + "5.7" + ], + "metadata": { + "description": "MySQL version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "databaseSkuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for MySQL sku family" + } + } + }, + "functions": [], + "variables": { + "databaseName": "[format('{0}-database', parameters('siteName'))]", + "serverName": "[format('{0}-server', parameters('siteName'))]", + "hostingPlanName": "[format('{0}-serviceplan', parameters('siteName'))]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "[format('{0}-serviceplan', parameters('siteName'))]", + "location": "[resourceGroup().location]", + "properties": { + "reserved": true + }, + "sku": { + "tier": "Standard", + "name": "S1" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/[format('{0}-serviceplan', parameters('siteName'))]" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/[format('{0}-serviceplan', parameters('siteName'))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('siteName'), 'connectionstrings')]", + "properties": { + "defaultConnection": { + "value": "[format('Database={0};Data Source={1};User Id={2}@{3};Password={4}', variables('databaseName'), reference(resourceId('Microsoft.DBForMySQL/servers', variables('serverName'))).fullyQualifiedDomainName, parameters('administratorLogin'), variables('serverName'), parameters('administratorLoginPassword'))]", + "type": "MySql" + } + }, + "dependsOn": [ + "Microsoft.DBForMySQL/servers/[format('{0}-server', parameters('siteName'))]", + "Microsoft.Web/sites/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.DBForMySQL/servers", + "apiVersion": "2017-12-01", + "name": "[format('{0}-server', parameters('siteName'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": "[string(parameters('databaseSkuSizeMB'))]", + "family": "Gen5" + }, + "properties": { + "createMode": "Default", + "version": "5.6", + "administratorLogin": "GEN-UNIQUE-12", + "administratorLoginPassword": "GEN-PASSWORD", + "storageProfile": { + "storageMB": 51200, + "backupRetentionDays": 7, + "geoRedundantBackup": "Disabled" + }, + "sslEnforcement": "Disabled" + } + }, + { + "type": "Microsoft.DBForMySQL/servers/firewallRules", + "apiVersion": "2017-12-01", + "name": "[format('{0}/{1}', variables('serverName'), 'AllowAzureIPs')]", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + }, + "dependsOn": [ + "Microsoft.DBForMySQL/servers/databases/[format('{0}-server', parameters('siteName'))]/[format('{0}-database', parameters('siteName'))]", + "Microsoft.DBForMySQL/servers/[format('{0}-server', parameters('siteName'))]" + ] + }, + { + "type": "Microsoft.DBForMySQL/servers/databases", + "apiVersion": "2017-12-01", + "name": "[format('{0}/{1}', variables('serverName'), variables('databaseName'))]", + "properties": { + "charset": "utf8", + "collation": "utf8_general_ci" + }, + "dependsOn": [ + "Microsoft.DBForMySQL/servers/[format('{0}-server', parameters('siteName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1813 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1813 new file mode 100644 index 0000000..da15cf8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1813 @@ -0,0 +1,245 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-managed-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-managed-postgresql/azuredeploy.parameters.json" + ], + "timestamp": 1642962911539, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-managed-postgresql/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-managed-postgresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1813", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1813", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "Name of azure web app" + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE" + }, + "administratorLoginPassword": { + "type": "securestring", + "minLength": 8, + "maxLength": 128, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "databaseSkuCapacity": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 4, + 8, + 16, + 32 + ], + "metadata": { + "description": "Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)" + } + }, + "databaseSkuName": { + "type": "string", + "defaultValue": "GP_Gen5_2", + "allowedValues": [ + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_8", + "GP_Gen5_16", + "GP_Gen5_32", + "MO_Gen5_2", + "MO_Gen5_4", + "MO_Gen5_8", + "MO_Gen5_16", + "MO_Gen5_32", + "B_Gen5_1", + "B_Gen5_2" + ], + "metadata": { + "description": "Azure database for PostgreSQL sku name " + } + }, + "databaseSkuSizeMB": { + "type": "int", + "allowedValues": [ + 102400, + 51200 + ], + "defaultValue": 51200, + "metadata": { + "description": "Azure database for PostgreSQL Sku Size " + } + }, + "databaseSkuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "GeneralPurpose", + "MemoryOptimized", + "Basic" + ], + "metadata": { + "description": "Azure database for PostgreSQL pricing tier" + } + }, + "postgresqlVersion": { + "type": "string", + "allowedValues": [ + "9.5", + "9.6", + "10.10", + "11.5" + ], + "defaultValue": "9.6", + "metadata": { + "description": "PostgreSQL version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "databaseskuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for PostgreSQL sku family" + } + } + }, + "variables": { + "databaseName": "GEN-UNIQUEdatabase", + "serverName": "GEN-UNIQUEpgserver", + "hostingPlanName": "GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUEserviceplan", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUEserviceplan", + "workerSize": "1", + "numberOfWorkers": 0 + }, + "sku": { + "Tier": "Standard", + "Name": "S1" + } + }, + { + "apiVersion": "2018-11-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "apiVersion": "2018-11-01", + "name": "connectionstrings", + "type": "config", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "properties": { + "defaultConnection": { + "value": "[concat('Database=', variables('databaseName'), ';Server=', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName, ';User Id=', parameters('administratorLogin'),'@', variables('serverName'),';Password=', parameters('administratorLoginPassword'))]", + "type": "PostgreSQL" + } + } + } + ] + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.DBforPostgreSQL/servers", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEpgserver", + "sku": { + "name": "GP_Gen5_2", + "tier": "GeneralPurpose", + "capacity": 2, + "size": 51200, + "family": "Gen5" + }, + "properties": { + "version": "9.6", + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "storageMB": 51200 + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers/GEN-UNIQUEpgserver" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUEpgserverfirewall", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "name": "GEN-UNIQUEdatabase", + "type": "databases", + "apiVersion": "2017-12-01", + "properties": { + "charset": "utf8", + "collation": "English_United States.1252" + }, + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers/GEN-UNIQUEpgserver" + ] + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1814 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1814 new file mode 100644 index 0000000..9aef9f1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1814 @@ -0,0 +1,398 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-privateendpoint-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-privateendpoint-vnet-injection/azuredeploy.parameters.json" + ], + "timestamp": 1642962911547, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-privateendpoint-vnet-injection/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-privateendpoint-vnet-injection/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1814", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.web/sites/hostnamebindings", + "microsoft.web/sites/config", + "microsoft.web/sites/networkconfig", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1814", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "17452713454481954412" + } + }, + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "vnet1", + "metadata": { + "description": "Name of the VNet" + } + }, + "serverFarmName": { + "type": "string", + "defaultValue": "serverfarm", + "metadata": { + "description": "Name of the Web Farm" + } + }, + "site1_Name": { + "type": "string", + "defaultValue": "[format('webapp1-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Web App 1 name must be unique DNS name worldwide" + } + }, + "site2_Name": { + "type": "string", + "defaultValue": "[format('webapp2-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Web App 2 name must be unique DNS name worldwide" + } + }, + "virtualNetwork_CIDR": { + "type": "string", + "defaultValue": "10.200.0.0/16", + "metadata": { + "description": "CIDR of your VNet" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "Subnet1", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnet2Name": { + "type": "string", + "defaultValue": "Subnet2", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnet1_CIDR": { + "type": "string", + "defaultValue": "10.200.1.0/24", + "metadata": { + "description": "CIDR of your subnet" + } + }, + "subnet2_CIDR": { + "type": "string", + "defaultValue": "10.200.2.0/24", + "metadata": { + "description": "CIDR of your subnet" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "skuName": { + "type": "string", + "defaultValue": "P1v2", + "allowedValues": [ + "P1v2", + "P2v2", + "P3v2" + ], + "metadata": { + "description": "SKU name, must be minimum P1v2" + } + }, + "skuSize": { + "type": "string", + "defaultValue": "P1v2", + "allowedValues": [ + "P1v2", + "P2v2", + "P3v2" + ], + "metadata": { + "description": "SKU size, must be minimum P1v2" + } + }, + "skuFamily": { + "type": "string", + "defaultValue": "P1v2", + "allowedValues": [ + "P1v2", + "P2v2", + "P3v2" + ], + "metadata": { + "description": "SKU family, must be minimum P1v2" + } + }, + "privateEndpointName": { + "type": "string", + "defaultValue": "PrivateEndpoint1", + "metadata": { + "description": "Name of your Private Endpoint" + } + }, + "privateLinkConnectionName": { + "type": "string", + "defaultValue": "PrivateEndpointLink1", + "metadata": { + "description": "Link name between your Private Endpoint and your Web App" + } + } + }, + "functions": [], + "variables": { + "webapp_dns_name": ".azurewebsites.net", + "privateDNSZoneName": "privatelink.azurewebsites.net", + "SKU_tier": "PremiumV2" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vnet1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.200.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.200.1.0/24", + "privateEndpointNetworkPolicies": "Disabled" + } + }, + { + "name": "Subnet2", + "properties": { + "addressPrefix": "10.200.2.0/24", + "delegations": [ + { + "name": "delegation", + "properties": { + "serviceName": "Microsoft.Web/serverfarms" + } + } + ], + "privateEndpointNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "serverfarm", + "location": "[resourceGroup().location]", + "sku": { + "name": "P1v2", + "tier": "PremiumV2", + "size": "P1v2", + "family": "P1v2", + "capacity": 1 + }, + "kind": "app" + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[format('webapp1-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "app", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/serverfarm" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/serverfarm" + ] + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[format('webapp2-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "app", + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/serverfarm" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/serverfarm" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('site2_Name'), 'appsettings')]", + "properties": { + "WEBSITE_DNS_SERVER": "168.63.129.16", + "WEBSITE_VNET_ROUTE_ALL": "1" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('webapp2-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('site1_Name'), 'web')]", + "properties": { + "ftpsState": "AllAllowed" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('webapp1-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('site2_Name'), 'web')]", + "properties": { + "ftpsState": "AllAllowed" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('webapp2-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/sites/hostNameBindings", + "apiVersion": "2019-08-01", + "name": "[format('{0}/{1}', parameters('site1_Name'), format('{0}{1}', parameters('site1_Name'), variables('webapp_dns_name')))]", + "properties": { + "siteName": "[format('webapp1-{0}', uniqueString(resourceGroup().id))]", + "hostNameType": "Verified" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('webapp1-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/sites/hostNameBindings", + "apiVersion": "2019-08-01", + "name": "[format('{0}/{1}', parameters('site2_Name'), format('{0}{1}', parameters('site2_Name'), variables('webapp_dns_name')))]", + "properties": { + "siteName": "[format('webapp2-{0}', uniqueString(resourceGroup().id))]", + "hostNameType": "Verified" + }, + "dependsOn": [ + "Microsoft.Web/sites/[format('webapp2-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/sites/networkConfig", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', parameters('site2_Name'), 'virtualNetwork')]", + "properties": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/vnet1/Subnet2" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet1", + "Microsoft.Web/sites/[format('webapp2-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-06-01", + "name": "PrivateEndpoint1", + "location": "[resourceGroup().location]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet1/Subnet1" + }, + "privateLinkServiceConnections": [ + { + "name": "PrivateEndpointLink1", + "properties": { + "privateLinkServiceId": "Microsoft.Web/sites/[format('webapp1-{0}', uniqueString(resourceGroup().id))]", + "groupIds": [ + "sites" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet1", + "Microsoft.Web/sites/[format('webapp1-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "privatelink.azurewebsites.net", + "location": "global", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet1" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[format('{0}/{1}', variables('privateDNSZoneName'), format('{0}-link', variables('privateDNSZoneName')))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/vnet1" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.azurewebsites.net", + "Microsoft.Network/virtualNetworks/vnet1" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "[format('{0}/{1}', parameters('privateEndpointName'), 'dnsgroupname')]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config1", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.azurewebsites.net" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.azurewebsites.net", + "Microsoft.Network/privateEndpoints/PrivateEndpoint1" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1815 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1815 new file mode 100644 index 0000000..102f9b5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1815 @@ -0,0 +1,156 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webapp-windows-aspnet/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-windows-aspnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962911554, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webapp-windows-aspnet/azuredeploy.json", + "/quickstarts/microsoft.web/webapp-windows-aspnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1815", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1815", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string", + "defaultValue": "[concat('ASPNET-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "That name is the name of our application. It has to be unique. Type a name followed by your resource group name. (-)" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "alwaysOn": false, + "sku": "Free", + "skuCode": "F1", + "workerSize": "0", + "workerSizeId": 0, + "numberOfWorkers": "1", + "currentStack": "dotnet", + "netFrameworkVersion": "v4.0", + "hostingPlanName": "[concat('hpn-', resourceGroup().name)]", + "appInsight": "insights-GEN-UNIQUE" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Insights/components/', variables('appInsight'))]", + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "properties": { + "name": "GEN-UNIQUE", + "siteConfig": { + "appSettings": [ + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsight')), '2020-02-02').InstrumentationKey]" + }, + { + "name": "ApplicationInsightsAgent_EXTENSION_VERSION", + "value": "~2" + }, + { + "name": "XDT_MicrosoftApplicationInsights_Mode", + "value": "default" + }, + { + "name": "DiagnosticServices_EXTENSION_VERSION", + "value": "disabled" + }, + { + "name": "APPINSIGHTS_PROFILERFEATURE_VERSION", + "value": "disabled" + }, + { + "name": "APPINSIGHTS_SNAPSHOTFEATURE_VERSION", + "value": "disabled" + }, + { + "name": "InstrumentationEngine_EXTENSION_VERSION", + "value": "disabled" + }, + { + "name": "SnapshotDebugger_EXTENSION_VERSION", + "value": "disabled" + }, + { + "name": "XDT_MicrosoftApplicationInsights_BaseExtensions", + "value": "disabled" + } + ], + "metadata": [ + { + "name": "CURRENT_STACK", + "value": "dotnet" + } + ], + "netFrameworkVersion": "v4.0", + "alwaysOn": false + }, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", + "clientAffinityEnabled": true + } + }, + { + "apiVersion": "2020-06-01", + "name": "[variables('hostingPlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "[variables('hostingPlanName')]", + "workerSize": "0", + "workerSizeId": 0, + "numberOfWorkers": "1" + }, + "sku": { + "Tier": "Free", + "Name": "F1" + } + }, + { + "apiVersion": "2020-02-02-preview", + "name": "insights-GEN-UNIQUE", + "type": "microsoft.insights/components", + "location": "[resourceGroup().location]", + "properties": { + "ApplicationId": "GEN-UNIQUE" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1816 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1816 new file mode 100644 index 0000000..0da4fc5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1816 @@ -0,0 +1,500 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.web/webappazure-oms-monitoring/azuredeploy.json", + "/quickstarts/microsoft.web/webappazure-oms-monitoring/azuredeploy.parameters.json" + ], + "timestamp": 1642962911562, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.web/webappazure-oms-monitoring/azuredeploy.json", + "/quickstarts/microsoft.web/webappazure-oms-monitoring/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1816", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1816", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specify the workspace name" + }, + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the workspace region" + } + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "Azure Web Apps Analytics", + "solutionName": "[concat('AzureWebAppsAnalytics', '[', parameters('workspaceName'), ']')]", + "publisher": "Microsoft", + "displayName": "Azure Web Apps Analytics", + "description": "Identify and troubleshoot issues across your Azure Web Apps", + "author": "Microsoft" + } + }, + "tabGroupId": 1526326597101 + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "[resourceGroup().location]", + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "Azure Web Apps Analytics", + "type": "views", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Azure Web Apps", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Web Apps Request Trends" + }, + "LineChart": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and (MetricName == \"Requests\" or MetricName startswith_cs \"Http\") | summarize AggregatedValue = avg(Average) by MetricName, bin(TimeGenerated, 1h)| sort by TimeGenerated | render timechart", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and (MetricName == \"Requests\" or MetricName startswith_cs \"Http\") | summarize AggregatedValue = avg(Average) by MetricName", + "HideGraph": false, + "enableSparklines": true, + "ColumnsTitle": { + "Name": "WEB REQUEST", + "Value": "Count" + }, + "Color": "#002050", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "newGroup": false, + "useIcon": false, + "tabGroupId": 1526326597101 + }, + "Header": { + "Title": "Web Apps Response Time" + }, + "LineChart": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and MetricName == \"AverageResponseTime\" | summarize AggregatedValue = avg(Average) by Resource, bin(TimeGenerated, 1h) | sort by TimeGenerated | render timechart", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "TimeRange", + "baseUnit": "Seconds", + "displayUnit": "AUTO" + } + } + }, + "List": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and MetricName == \"AverageResponseTime\" | summarize AggregatedValue = avg(Average) by Resource", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "WEB APP NAME", + "Value": "RESPONSE TIME" + }, + "Color": "#dd5900", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "0.7", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "1", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and MetricName == \"AverageResponseTime\" and {selected item} | summarize AggregatedValue = avg(Average) by bin(TimeGenerated, 1h), Resource | sort by TimeGenerated desc | render timechart" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "newGroup": false, + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAGkAyADASIAAhEBAxEB/8QAHQABAAEFAQEBAAAAAAAAAAAAAAECBQYHCAQDCf/EAFIQAAIBAwIEAwQGBQYJCQkAAAABAgMEEQUGBxIhMSJBURMyYXEIFEJSgZEVFiOSoTNDU2KxwRckJVVz0dPh8BgmNTdFVHKEszREV2OTlLLS8f/EABsBAQACAwEBAAAAAAAAAAAAAAABAgMEBQYH/8QAPBEBAAIBAwMBBAgEBAUFAAAAAAECAwQRIQUSMUETUXGhFRYiMlJhgZEGI7HRFDRT8DNCYsHhJTVDcoL/2gAMAwEAAhEDEQA/AOywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8h+QAhvHkySmeceREzsIlUjH3sonnWcYZj+v7n0HR03f39KM19jm6mCa1xgt6VV0tPtXNY8M2uhtYdHnzc1rw1M2uwYeLW5bbc8LPLJkOrBe81H5tHOWs8S9yXkn7O4hQh/VfUxy61zW7ludXW7iOevRnRx9EyTG9rxDm5Ou44natJl1gqsH2afyaJ51/w0cm0dc1u3g/Za5cyx6s99hvHdNB80NSlU+EmTbomSPu2iUU67jn71Zh1G5pYzF9SeZejOf8ASuK24bSb+u04VqeMdO6M725xW0HUVGldz+r1fPm6I083TNRijmN29h6np8vrs2LGSks4a+ZJ5NOvbXULVXVlXhWot4Uovpk9KZobTHEt+JiY3hUAAkIlJLHfqSfOo8YbaSS6t+QFeSn2seblSbZrzenFzZ+151berqNOvdx7UoSTeTQ2+PpBbj1VVLbRqcbCg3hTfSWDoabpeo1HNY2j83P1HVNPp+LTvP5OqNd3LoeiUXV1PUaFuks4lJZMB1jj7w+01Nu5vLr4W9OEv7ZI481TVNS1WtK51DUri6nLq+eXhPFBUo9fZ4Z3cX8PY4j+ZaZlw838Q5Jn+XWNnW0vpN7CXu6TuWf/AIbaj/tSY/SZ2K1n9D7mX/lqH+2OSlVbfL4cenmfKUW5ZjLD9DYjoWkj0mf1av09q5937OuX9JvYi/7H3N/9tQ/2w/5TexfLRdzv/wAtQ/2xyRmX84s+jQxnt0H0Hpfd80/TuqjzMfs61f0nthJ+LR9zR+dtQ/2xddM+kNw+vsYlqVu35VqVNf2TZxqniXhWJebfYmTk8c3I/kys9B0s+JlavX9THnZ+hG3t3be1+lGel6lRruSzycyUi9KpFvGGn6H5y2V9f6bWVzYajcWtRPKlTl0Nt8P+P25NE9la6vD9JWq6Ofea+JzNT0DJXnDO/wDV09N1/FfjLGzsBzS8m/kSnlZMO2BxB27vKzjU0q+pO4x46TkspmYQzjqcK+O2O01tG0u5jyVyR3UneFQH5AoyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4j8QAH4kfiBIITT7NE/iABH4kgAAADBH4gfPmxPDeW+wnJRfm2H0k8Yb9fQwbiJv8Asdv0alpbTjVvZRwlHrysyYsN8tu2jFlzVxV7rr5uvcunbdtJXGoXMW8eCkn4maV3VxM1rWZShZc1tat4jFPEvmYprep6hrF99c1KrKo8+FZyvyPJNzdRVJdJdkl2weo0XTMeCO63NnldZ1TJn+zHFfn+pcQcqzr3txUrTm8+KTZHs4Q6Qzh9epFRLmzLMmVycnhtfkdSOHMnlGF6IjlXoifxAQjC9ESunboSAHX1KOWKeVFJ+pWQ+wFz27uLVdDv1WsLiq8dXTcny/kbs2PxJ0zXIxtrySt7tLEuZ4TZoCnTnOeYy5fiJTcanJl0ZL+ch3NLVaDFqY5+83tLrsumn7Ph14qjaTjHmi1lNPuVLom+z+JpHhvxJuLKdHT9dqOVB+CnU8zZO9956Btfb0tZ1K7h7JR5qcYvMpPyWEeWz6LLhyezmOXqsGtxZsftInhdNa1iy0fT53+pXdO2taazKpNpZ+By9xl463mt1K+jbYlK3susZV08OfxRhfFbidqm/rycK1SpbWMJfsbOLwpr1bME5YwShOKi/KK8j0nTujVxRGTNzP8AR5vqXWbZN8eLiP6k/aVvHVnKvWby5zeWyJy55czjh+hE5OOFB8q82T4fsycl6nfjb0efmZnmTyx5AAlVGFnJIANwABAAAHlgJdejwCGm+wS9Wl3+o6XqNO90u5qW84SziEms/kdKcGuO1K85NJ3ZNW9ZtQpVn2fzOYYQby4zaaJgpV6uG/dWU+2H8DT1mhw6qu14b2k12TS23rPD9HLerTq0Y1aM41KU1mMovKf4npizjzgpxj1Tat1S0fX60rzS6jUVOUsypL5+Z1zpV/Z6lp9C+sa8K1vWgp05xfdM8VrdBl0l+2/Me97bR67Hq6d1HrBGVnuiTSboAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGevciclFZbSQEQaaeOhEnFPDeWUqolTdSbUIrzZiu5t+bf0WhVnUuVWqU/sUnmTLY8Vsk7Vjdjy5a443tLLM+iyRhvOcmmNV40XMm46Xp8OV9nUzn+BjF7xI3TcS5oXbpZ+zF9DpY+kam8cxs5uTrOmpxHLo2MEvdRWlJRzjr6HM9HiDuylLmlqE5L0yXO04sbmtGpuFO5XmqmS9uiZ4jjaVK9bwb87w6CTb96OPkVxzjqzU23+MlpW5Y6tZewm2l+zXRfmbH0XXtM1iLdhd0qrXdRZz82lzYZ2yQ6GDV4c/3JXNOXN26E+RQnP2mOjiVppruYGypl3zny7FFOMknl9+yK59PFjrgxrfu5qG2tCnc1qsY15J+yjnuy2Olsl4pXypkyVx0m9vRYeKO96e37aWn2f7S7qrlyvsGhbu5rXN5OrXbqXM3mUn1PtfardardXF9XblOvJylzeXyLbc6hZ2kM1a8It98vqey0Girp6bR5eL12tvqL90/deppP36nK/QiGVLo216ssF3unR7dZUZ1p/AtN3v24lHkt7OHJn7RvxSzR76s1lGT8yEpR8LkYPT3zfedpR/iemlvlZxc2vi/qdiZx2iERerL3CL7yZUljsWC13Zp1WOZx5fmXi2u7a4ipUK0J8yzhPsVmto8rRaJ8PQA1JLLi0Up/EqlUQS015YIAle6UPuyuOXHoj5VqlOlF1K0404LrzS7AefVLyhY2juLqtyqPuL4mvNwbg1jW6v+UrypUt4fyMHLpgbr1qpq9+8xxbweFFeePMtMZ8+eeL6e58DZpirHMsFstvEJABlYAAAAAEAAAAAAAAAAAAAJQ+qw+pt7gTxaudoX9HRtZqTr6XWkksvPsU+zRqImDjTbcU233yYNTp6ains7+P6NjS6m+nvF6v0V0u8ttRt6d7Z1Y1reqlKE4vKaPbOXKcf/R84r3u3dbobe1Ws5aRcyUKc5v8AkJPt+B11aVYV6SqqcZwazGS7Nep4XXaG+jyds+PSXvNDraavH3x59YfdPKyVELHlgk0m6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfYhtLzIc169wKJdZvo1jt8Sybs3JpugWTrXtWPtOXMaeerZ8N+7rs9saa69aSlVl0pwz1yc57l12+3Bq8ry+nLDfghnokdPp/Trame633XK6h1KNPHbX7zIN08Rte1xSp027W2UmsR80YhOpGrL2nNKc/NyZKS7U5csfNMNRisLDfwPUYsOPFG2OuzyuXNkyzvktuhAIkysaASAKX16dOp7dE1XUNHuIVNOrypVYPL69JHjePPsS5OcUowxSXZ+ZFq1vHbZMWtWd6eW+dg8RLXWlTs9WkrS9fZt4UmbDi1hPKw+zXmcgxnN1oTVSUJQfhmu6ZtrhbxGarPSNerpKC8FeXY87ruk9n8zD49z0fT+rRb+Xl8+9t29uaNla17qtP9nTi5SbOWeJ+/bfWdcqXlxVUrSlJwpUs+fqXT6RXF+jdUJ7b21Wc03+3rxf8DnqpKc489Wq5tv3fj6m90bp3s6+2yRzPho9a6h7SfZY54jyyDVd0ajcTnToRVKmniMl6Fhr1Z1ZOVxVlUk/ifOTab8TkUrml6I9DFYq87NpsIkAsqAACD62tzd2lRTtqzT9MnzCS8ngbRPlMTMMt0feVanKFG+XNFvEpehmFlcUryn7azkpx9DUTSziXiRcdG1W70y4U6FV+zz1iYbYY8wzVyz4ltJ5z4n1816E+XQtujavbapF8k17dLMolz5ZY7GCeGeOeVMeZT5s4gveMG33rTuLj6lbPNJe9gvu7dYWnWDp05ftJ9GvQ1wqkvaSnLxOfVtmXHj35Ycl/SDt0ABsNcAAQAAAAAAAAAAAAAAAAAAAAAIalLwweJPs/RnWP0Y+IU9b0WO29Uqf43YrEJSfWcTk9S5Xzehd9n7ivNsbjtdVtpyUqc05wT96JodR0ddXhmvrHMOn0zV20uWLek+X6EUpKXVdU+zPqmYzsXcNpuPQbfWbarF0q0F4V9h+hkcX0PA2pNJ7Z8ve1tFoi0eH1QKY9iohYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhtZAkEJkcyAqBTzLKWWHJL1Aifk/JFp3JrFtoui1r+7nGCivAn5sus5xXVvollnPvGXc8Ne1eWl0K8laUJcssPuzc0OknU5Yr6R5aOv1cabFM+voxfdmuXO4tXnfXdVujn9nTb6ItbhU5nVSTz2TKFBYba8S6JfArqZl7NqXK13R7GtK0+zTw8Ze9rzNr+RfEBEl1QAAAABTIpjUahyIrePMUuTl9o/dARahCWEm0svPoYTuzXpzcrexqckV0lUXc9G8NajQlK2tqrVWXTo/LzMHSlKUnOTxJ5aM1Mc+ZYcl48K5Z7uXM31cvUgdui7LsDYhryAAAAAgAAAABIF3IYSA9Fnc17O5hcW83GcHlpfaNkaBrFLWbKVb2qp3NOPihk1hjL74K7arVoVW6NWVPPdp9yl8cWZMd5que7dQhfX0lT7R8L+ZauRKmpLyEsSnKXm/4sohzKDTLRG0bKzO/KUSECVQABAAAAAAAAAAAAAAAAAAAAAAJpPL7FVKChzOp4pyX5IofYnmly5fWcuj+CG+0wtHjZvH6L2+Hp93LbmoVEqNSXNRy/M6msqrnT5JyxLOV8Ufnjp11Xsbyje2snGrazU4teaz1O1+Fe6LbdW2rLU6dZucYKE1n7R4/rui9lf21fD2PQ9b7XHOG3mPDYdOSkuixh4Kz5UpJpJ+95/M+jaS6nBd+EgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIbSyBIKIzzno1/eFUjlJvDfkwK32PnUlieMM82qapYaZRlVvbqnRilnxSwzX+pcYdv0K86VtRrV+XpzqLxkz4dNlzf8Ou7XzarDh/4ltmyJPPZtEZz25jS+ocYr6Un9Rso48uZ4PFPi5rracaFNeqybUdI1NvMNO3V9NHiW9VNcyjh5ZVDKTUjTumcYnHljqFlKS+04LLM923vfb2vQirW6UKj6ck+jRhy6DPhje1eGxg12DNO1bcp4la0tC2jd3kZYqSi40/mzmd1pVbpOv1qvMpv4tm1OPOs0q1a30iFXnUHz1EmaokstT+2/eZ6DpGDswd8+Zef6xn9pn7I8QJNN59ckjLbyGdXw48JBSm/usl9skbpSCjIyiUKwQsP7SRMliDllNL0CUPuW7cepUtN0+dTKzJeFFwqNQipS7NZNabzv5XuqOlBv2EX0Rele6Vbz2wtVavO5nOtVeZSeUUDKawljANtqSAAKgAAAAAAAAAAAAJAAEAACQABAAAAAAAAAAAAAAAAAAAAAAAAAAACz+Hmbq+i1uadtr9xt+4qYpVoudBP1RpR5WGu3mXrZ+o1dI3bpN/Tk06deKk15xbWTU1+nrqNPakt7QZ50+et4d8abXcqa5n4k8MuWcxyYtoWo0bq3p3FNNQqrmWfiZNQlz0+h888eX0OPHD7LsAuwCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmXZ9MipNQWZdiOZuGUuvkDdTmSfX3f7DCN/7/03b0XRo8te9awkn7p4uKu+I6NZvT9Omp3lRYk0/cNEV51LqrO5vKk61aUs8+Ts9O6Z7X+Zl8f1cPqXVJxT7PF5XHcW4dR124nX1G4m4t+GCfQtmY9OSHJHHYiiuSbdTxx8l6EvHM2s4PS0pWldqxtDzVrWvbuvO8pABZUUlCSlLOF3wRaVXSn7e1nO3qKWVJPDYy001jPxIn4qnOsL1XkD4cPTqF5WvayrV6jqVMYc2+rPOUqK5215+XkTlKWJdPiREbQTO88pDKnFPpCSljuWnU9csbFuMpqdRfZTJiN/CJmI8rm+ZLo2ymM582HTePVmG3G9qksqjauHo2W243XrFVOKqwjF/DqZPZSp7SGyFJY91EPMvdiviaw/WLVv+8Ew3Jq0Hl18r0J9jMIjLDZjS+1AiKbk8LEY+RhOmbyrJ8teg5/EyfT9bs9RjCEJKlVl70WVnHaF63iZ2TuC9VrotSu3iXZGratR1a/tZvuZfxKvuV07aEWoefXuYdUxKCiujXmZ8cREMOSZmVVRJS6eZBHXK69iTIwyAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH7r+RVbVHGnGsvepzTX4MpazGS+BRF8sOT73QTG/C9fydmcNNVV3tbTa3NnNKKfzwjZmn1+akjQfAi+dfZtvTaeaMuXPrg3To1xzpQw+2cnzjVY5x5r090vo+lv34aW98MjXYkoozUo9iswNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHzqJSk4yWYpZMb4gbkpbb25WvJP9tNclGP9byMkrNJ9XhR6y+Rztxh1+Wsbknbwqc1pbvEUn05je6dpf8AE5oifEeXP6lqv8NhmY8yw2/urjULyrqVxUlKtVeWm+xTOPKo8r8LXX5ibU2njGF1+JRGLWfFlPyPY1rERtHo8bNptPdPlUiSCSUAAAgdB54KVJSbUe67gJRk1mPdHxuatOhbyr3U0seRTqN9SsLZ15yS+6n5mudd1u51WtKPM6cE+yfcvSs2lS9toXHX901bitO2sJOnTXTnXmY1JVKlRyq1HOb88lMVjpjp6FcnlYiuU2YrENe1pmUAAsoDzBDQFU/DHMe4t69SEvaUpuFRd2QI4Sax3CYl9bi6uK/iuJOp8z5ENPk5U8EiCZAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmKzPHoVCPhk5eoWiW9/o7XvPo1zQb9ybZvvblbm5JZ7rBzX9HOq4y1Kl3Sjzfnk6H2rV/Ywl6Hg+rV7dZf/AH5e+6Tbv0ddv97M6tHlM+55rCXNF/I9JzXSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjvEHU1pG2L27TxUdPkj+PQ5eXPOU5VZOUpyc238Td30gtTqW+l2tnS5W6kstP0NIUl0ak36nqejYYrhm/rLynWs02zxj9IVIBEnXccAAAgeYp8soty7+QENN9E8FFxUpULedzJqPIuq9SpJ1E12+Jh2+9Wk6kLO2kkl0n8S1azaVbztCybl1ipqtw4wbjSi+iLTTgqUW85bJq8vPhdH5lMlzd2zbrWKw1ZtMkXlZJISSWESSrIAQ8+XcCQHhFUYqSzF9F3QFIPpb29zWqctK3nXb7RgerUtJ1DTqFOve2zo06izHLTImye2fLwgib5YtrxtdXgklExMAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtq/R2n/lXU6frSX9jOhduVOSMY/E52+jt013Un/8AJX9jOgtDeZr5nhutf5y36f0e96L/AJKv6/1bG0x5j+B7S3aLJzptvvjBcTlOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ/0gq8pbtt7fPgp28Z/nk1nnMVjzeTYf0gJf8+FBd3ZU8/nI13DCow5feXQ9p0+u2lo8R1GZtqrq0SQiTcaYAAIZQotywVsqi/2qUO7A8Gr3isLOrPzUTVt9WncXVS4by5dTL+Il5OEo21OeG/5RGFxbj2NnDXaN2tltyphlrmfdlQ88gywxTIAAgKqTSqJspCWXgJILmTfq8GUaDtelc0I3N3cKjGTXKn9oxmg3Gai+2TNtF1+MbWFldxjUpxacF6Dn0a+otkjik7fmvNLQLuipW23q9B1Jx683vfgfCvtTcFxsPU3q1pcyuLOtzwlLDTjjy/M92o6joGrQt1VtqllUpYTqwk1lfmZvtu8tJ1bbTdMu3LTpwxcuo88xq5py15rVk0tsVIitrbz73OPJBRhPm6/bSGGbT3Zw31ehqF1PTLSN5Y1J80JR8vyMO1DbWoWGVc6XXpteFZi+r9TPjyVvHE8sl5mu+8cQxxroD217T2fgakpr3lg+FShKmuaSyviZJ48q1mLeHxAqLDXI8p9ynLS6jaY8rbKgX252trNnt6jr91ZOOn1/5Op16nl2poWpbk1iOl6bQdW5mnKMUvIxe1ptM78R5/Jk9jeZ7duVsBfv1U1aOnatfVfY06Wly5K8XLxZ6dl+JYXUowxGdRc2Mde8mWreLRvHhFsVq+QFSdPkqOUoqUUm4tlEmo49pOEMrm6vrgtv70ds7JBVPkjJyyuSSysvoihyh7NuE4yx1k89EhM7eUdsykERlTdH6xGtGdJdOj8zLr3Yep2O1rXXdQuaVv8AXHi1tubx1M9ngpky0xzEWnyyUw3vvtHhiQPTWtLilefU5W8vrCXWljxfkeecalOKVSlKNRe9CSw0W3iZ4ljmsx5QB0fVAnyiY2AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAALzyRDqnkJbR+jy/8uan/oV/Yzf+gvxI0J9Hyi43WpXLXicVFP8AM33oP8rBPseG6zzrLT8Pk970b/J1hsPQHmk/kXQtegfyT+RdDlOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn36QMeXftOf3rOC/jI18ocnXyZtv6RFgo3Vlqfs85XI5fL/8ApqRc8qvM3mDXReh7Lptt9LR4vqddtVeEokhdiTeaAAAIZCfs6vO/srJLyea+qOnbV5t/YeCY5RLXO7Lp3WuVp58PZFqJqylOpKU3zPm7kG5WNoadp3kABKoAAAUuV59AQ1nuEwnOXlH1hXlB/wB/ofJdOxEsvw5wn3ZO+xtEsr0utTv7BRUm5w9emS56Pc6jb6xShCnOnbdpY8zHNr8zp17fPXlbjIyXatWvTt3HUbhcmHKEvOKT8y8fa8y5Oqp7OZmvPuhf9t6trtC8uJV9Z+rWUZ8yhU7tL5me/wCFLTY7SlrN5olC+pU7h21OU0o86WPF2+Jqa4o2e6aUZ+3nSqxlycscpNepdtU0vSKGmWNlrl7O20+0SlGlTz+1l6vBparRY8nPb4bWh6lfHPZNtrevHhnVvR4Yb9fs7WVXT9TuEm1Spuai0Ydv/g5rmhU5XtCM9QsO6nCOGl8Uj56dvG3qarb6HsXbdKjUrtU5Xcornin9r1Mz3HxT1DbWr2ui0KsdStrWmvrfN4lUl5xNCP8AE4svbh5rPpaf+/o7Vq6bJjm2biffWNv3hz7eWqoz5cY+DXYt9yuWMvkzeXEPa+h7h0T9btqyTqVOtzaR7wfnhGl7+jGMKkPOKec98+h08OSt444n3T5aM1nHaI33ifV0jpVG217gbY7avJYq17TntHy9XJRXT+wx76P1otp0Ke4r6ipXd5qK06jF9+XxKTX4xMf1XeFvpe09jVdKuPaXdhUjK4pZ8m45T/IvG8d86Bf8VtqUrCtG10iwrQuLiMekOefik/To2zg+yyxF8URPbfeZ/T+71E5cdbVyzMd1dtvktu4tv29fRuI2pxq1frVrcRVOmqj5PE4d/J9yNV0fh9sXSLbTdeta2r6zdW3tatXrBUG08YS79T6Xm5tIjtriXVo3FOpVu7iE7Wk3/KpOn1X5M9O57LaW/wDTbfcq1uFncUrPkr0aj6qSTMszaJit94jjx+VY2YYrE03ptNv/ADO62aHt7ZNhwxs9165RqVby+ubijZ0ot/teyhn0xk9mpaJw52Ta6dZbosq+palqcVWqSUpRVrTl1SSXfo1+Ri+5NQtlwp2rp9pcQq32n39zUak+mMx5H+ODLtftdn8T6Oj69ea/DSr+zoxo31Cbx7qSyvyLZJtE995naZnx+uxX2Vp7KbbxEfPbd69G4R6HY7j1K6vatTVNMo0VVsbOOYzuE0njp1WMtfgWHb+2dqbh3Bq+sXFjV0bRdEoqd1azbcpTbwodeuO3Uvdtrmn7w3nVv9P3FLQ46TGNCyUpNRuIRSy3288nqu92bQ1Hc+sbfuZRpWOs2kbepdw6L20Zc3M/4GLvz13iZmZ/pHrx4XnHh7YmIiK/HzPx8rJ+heH259rXW4dAsamlfomqp3Nk5Oftaee6b+CZkm99T2hV1/ZdGraV51Jyt5WvjlyRUknhrt6GMXNPbHDvZGsaba6tHVdU1N+yiovMYQ6rP8Sz791vT1ruz6trONWjpsbepXlHuuVLKMtcftLcb9sb7cz7v7onJGPzt3Ttv+/9mx9xXWzLfjfOrUs6VtcQpRjUnUeIPwryfRGr+NNbSq25eaxlRSl1UqLTi/yPdx7paLfa7S3Jo+pxuqeoQjz00/FTail/ca05VhLq0u2Xk2dDpoitMszPjw0uoaja18W0efKqSw8PHYgA6bkAJpRklF+9KX2fQhZbk3iKXRfETwbAACAAAAAAAAAAAAAAAAAAAAAAAAAoi/2yj6la75fkUtLCml1T7herefAuzjT2/WuUus6jj/E27ozxh+jSNe8L7b6ps21Sjyup438cmxNBjno+qyfPOoZPaaq9vTd9E0GP2empX8mwtA/kn8i6Fq2//JP5F1NRtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw7i7pUNU2hcZXjoeOJza5KK9mu/l/edd39CF1a1baok41YODz8Ucr7s0aei7ju7GeeWnNyg35ps9F0PNvW2L19Hm+uYdrVyR49VtRJCJO84AAAIZad4VHQ0WpUXTPQuzMf3+3+hMZ8y1I3lFp2hrryb/AKxIf94NxpSAAIAAAAHUlII4cuWXutZyRzY7n2taFW5qxp0VmpJ8qXzGxvt5ZBsuEKftK9x0i+kH6l/sNNt7GV1W1Wq40K691/d+B6dMp6Rpmiwt5JTr0vFJy+/6FFGpX1unBXFu7mcan7OlBdWvQmOI5cnNaZyTt6vkrm207R6la3oKlz+G3i14mvUaddPX9JVhqlvzXEFmjVS6nu1Gydnq1raazSdrcVWlRpTWPZp+p6N+xW0dXt7Kio+1qUVVi16Mr7SkzEb+UU099rXrX18y+m1bCW3NOrXFtXpVL+4zCNaXvUkeWloWgwtqlzf6xONapPmm1Lq5GGX+s3NWpJ1ajhzvOE+hbLm7c1iU216NlZx7xLZpXJM/bbW0Xdez9q1Z1dPjqVatOHs3Bzj7N/Fo1duWva3mtXF1TpqnSnJ1Mx8meJ3E5JpTfXoLGMa2p2NpN5hVuKcJZ9HJIpGOmObWdCndbtp4j/fLbXBzgveb0taet6vWlY6e34Iw6Sqx9TaFLhRwltKU7CvqFOU5ZTVWack/mXXjFqNztDg1ShoydGpG3jTp1KfaCwchVb3UKtZVK99cTqVMTnJy659ThYY1WvmcntO2Inh6TNOm0MVpOPutMNvcfOFm2to6Jp+tbeuKlVV6vJmc04Yw30wabVu7q5jSpUZ1Zzkly9+d+iPfX1/VLnS6ekXt9XubSnU54Rm/d6eRuH6KGzaGr65ebn1Gkp2Ni/Z0FNdHJef8ToRlvodNM5rd0x/uHP7Ka3VRXFHbGz1cO/o+S1bT6Wobpr1LOjOPNGhCXK4enczB8JOEFBTta+o0q1dLkcqk05JmGfSO4r313rVTbO37mdvaWuPb16T6uX3TRk766qXEqsr2u5YzJ83Vmlgwa3U1rkvlmvuiG7l1Gj0tpxUx923q6O3b9HbRb7S5X21dVqVq3Lmmq01KGPRYOd9a0u+0rUK2k31rKjc0pcs01iKS80Zxwf4oa1tDctpb1rmrdaPcSUaiqv8Ak/ijb30pNr2usbLobz0ilDno8s6kqa61Iy6dfzLYs+bR6iMGe3dW3ifX4KZMOHV4JzYaxW0eYaV4IbK0neu756Lq1Sta0VDmUqLxKR5eMO27PZfEO/29ps51LW3pU5KVR5k+aOTL/onRlPic545lGhjP4Mtf0nv+vLV/9DQ//BGzTNljXzTu4iu7BOGn0f37c7taKFOHipJYl1fqiRNL2j6A6keHHmd+QhvGM+bwMqMoPu/QzXgtt6e4+I+m2VWgqlvCqqtZPtyp9clMuSMVJvPiGXDhnLeKR5lm+9uDFnoPCq23LbXd3PUFCNStGUk0oyWf9RpWo4vkUWuTGU33bOrdE3Nb7v4jbw2f7aLsK1t7Cyi/dTjGMXj8Uzl7WdKqaXrF1pFw1CrY1pU5Sf5/3nM6Zmy27qZp54n9JdTqenxU7b4o45j9YeIH3020udSvYWdjbzubip7sYLOS8Vdl70pTedtXqknytOm+q9Tp2y0r96Yj9XLpp8l+a1lYAZF+o+74VWo7evJUYrLl7PzLdeaJrtjXpUdQ0qtbTuJctvGUcOTKxmpMxG/lM6bLH/KtwPVqFjf6feztNTt3b3VJJckljo/M8k8Rq597l6YXmZO6JjePDDNZidp8pB6pafqbsYax9TnDTqj5FWa8PMumCaem6jcUZXlKxqztKX8tVjHpFDurvO0r+yvxvHpu8gL3oe0N1a5Cd5om37y8to9XVjTzFFt1C1urW8dG4tqlG5T5HbyXiz8itclbTMRMbx55WtgtWsWmJ2nw8wMtsuHO+tRsVcWW27upRlHKapvMvkY7quk6ro989P1Oxq2d3H+aqxw0iK5qWntiYn9S2C9Y3mJ2eQF7/VLXZxtbi1sat1SuE8OEc4wslnqxnSq1KFWHJOEsYfctXJW07RKlsVqxvMKAAWYwAAAAA7xa9UfSygqt1b2/9LVjH+J813x6mRcONOeq7xtKKhzRpP2j+GOv9xjzXimO1p9IZ9PScmSKx6y6J0q1jZ6RZ20VjkpRX8DJ9AxlFgSbqr09DJ9Ch4V0Pm027pm3vfSor2xtDONB/kn8i6Hh0pYh0WPCe4hIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPnUeZOL7YyjUfH3brrW1HXLWDzTajW5V3XqbgPPqFrQvLKta3MIzo1IOMk15M2NLnnT5YyQ1tVp41GKccuRU+mfIZMv4m7Nvdv38qttSlU06o8pxXumI04JUVOEuaOcHtMWWuWkXrPEvE5sVsN+y0coBUQ+5kY9kMx/f8A/wBCdvMv77lv3FbfXdDr0UstLJak7Srbw1ZL+8FVXxTTaw0Um5vu0wABAAAkJSfMUcvjg/Rn2h7SvdJU6bk+2Ehvsnxym2o+0qpYfX+Jl23tDuZuVanS5IQWZ1J9ML4HztLe20ahGd9CE6qxKCyZjUjX16totvGoqGnvx15Ulh9Eujx3ItaYjeGhfLW8xEzwuGmbT0mnOyq6ldpx1Dw0k3jxeTPDsqvqFrvDWLS9tVQp2NnUn2x4VJJNP5NFn3bQ3FuncUIaFa1KGn6bNU4TqP2a6dOZZ+Rti3paba6LTlrte3/SN7R+rucZrlq/By7Lsc/PntWu0zv3OnptLhi0WjzDVe0tW1rcV3LT7qx+uabGr7SN1WWHSWfvef5np+kooUt3aG6M8xnpUOufgy2771HctK6tNEoaf+jNKhcRj/i3X2q5l1c49yr6QFRS3jp0E8+w0+EGs9ujK0r3ZqW9Np4b9rR7C1Z558tdTeYRak5YKEmyFLMmsYRUdRzJjZE4unS9ovJk0FNShVg8VIyVSL+KeSH1JX5ETET5TFpjw7H4daxoHFLhnDRLytCdelQVKvTk/FzpYyjnzinws3Jsu9qVaVrO70+UvBWhHLjH0MM29rep6HqtO90m8qWdem84i8Rn815nTPCbjVpG7Ix2/uqlTp3cv2alUWYVGzz98Ofp1py4PtUnzD0WPNg6jSMebi8eJcq+DknVeU105Wde8HXQ0j6PkL2hScZztnOrhdeZruaz+kpwtobbpPdeiU+fT5v/ABilHtTz9r5G0OG8Z3v0dKcLaUak3ZPql36FOo6mmq02O9PG8brdO01tLqb0t57eHI+rV3Wvrq4qzb9pcSkm+8m30yeWFNxcnKPV9Wfa5Unc148vWNVxaflh9T51HUUP2ck3Dqvij0UR9n8oh56072nf3kpSdB+08CXuJfM7H4fVqevcAZ0rzFSCs5wafXqo5RxvUcpUMYysZfzOweFlF6TwBqTqpxdS2nPxfGJxetxHZj387xs7XQt+7J7tp3ad+iaq1HidVpeSg0/4lq+k9/156v8A6Gh/6aLv9E+c58T61SHeUHn5dS0fSe/689X/ANDQ/wDTRekf+oz/APT/ALwW/wDbf/1/drWf8owJ/wAowdhwBxThzL3otP8AA3l9Hj2ehbA3Pvm5jyzhTlQoSa88NdPyNIW1OdxWVrTUnUryVOOI5xzdDqDe2wd1y4J6JtXaGn0q8pRjUvE6ipuWfn3OV1TLSIphtO0Wnn4RzP8AZ2elYrd1stY3mscfGeP/AC0Rw73NdaFxMsNdpSyq101NP7km22/xMt+lFoVPT98UtctoJWWpU1OLj2lNrqW2fAziwqcYw0G3U12mrqHQ2jxj2rrVxwDsq2t2SpalocIuWJqTazjuvmYc2pwxq8d8donf7PHu9P2bFNLmtpr0yV225jf5ufNqa5qO3tVo6lp1SnGvR93MUzP5cd+IcJtu6tHKT6J0YPp+RqyE4cmYRaUl48+pctsaJf7i1u10jTqMp3dxNQXTPLH1Z0s+nw3ibZKxO3q5WDPnrPZjtPLf/BLf2+9369WutWlbR0Szhz3FR04xi/xwYNxE3rHeXGHRXYygtPtdQjTp4ilzF/4u63puxdkUOHe36qd04KWpVKTxLL7rP4mntkxzvvb68lfRfzOZpNNTJ36isbRMTt8Pe62bUXx2pp7W3nfn+zNPpPYfFzUuSCj7OjDCSx5s1oqlPwPtLlw/mbL+k7l8YtRj2zSj/ea0lGMKHKsOfkdDQf5XHP8A0w5vUYj/ABV4/NuapBR+h5YyqRjKb1Ko+bHXHPMvv0cNMo7h4e69pVxKCtqjXtJySzFLDfX8Cz3bjH6HFiu7eozS/emezgRd/UuDu76ybg6dHvHo+uEcnNEzp8lYnzeY+cOzTaNRin/o/wCy1bz4xajZXi0vZHstN0axl7NSUVmu15sv+yKFhp2iXvF3fFvTqXlTwWVtKKxUl5PH5GgKEFUlSpSTcalZdF8WdU744cx3dw+2tYPcVrpULOgpRjVmkp5S8m1l9DJq6YtPGOn3e7zPrMMGjvm1M3t97bxHpEtQ6vxw4g3OoO6tbunZ20ZZpUIU4pU15LsZ3pd9bcZeHmpW+r0KS3PYUnVhWpxUXNL5Fr/5Pdol14haVLL6rnj/APsZlwm4YWGw9wXOoz3tp13TrUXBwjVivL5mDU5dDXHE4OLR42ifnwz4cGtteYzc1nzy0vtniZrW3rR2dvQhOVOlKi4zivDLqn/AwS5uJ3NzVr1etSrNzk/RsuO7vZ2u7tbjSaqU1eTVKcezXQtUJZjjHxyd/FjpH26xzLz+e9pnsmd4hIAMzWAAEAC6PJTnwSXnkJ2VdzbXAjTY07e51qUHnPJFtGq7WhK4q0aFunOvVkoYXodLbX0unougWmn01HpBSnhefxOH17UdmD2cebO/0DT9+f2k+IXyklKUZeqyZVoUPCujMW05Oc0369DOdDp/s10PGvZQyjTViH4HsPlbrEF8j6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImsp57Eh5At2qWtvf2c7avRVSlJYaa7HP/ABD2Rc7dv5XNlCdawqy6Rj9lnR0s8pb9TtY3FvKnOPNB91jubmj1l9NbevifRp6zR01VdrcbeJcpebj5ruilvqba3hw/t7yVSvpkfq8+7+Jrq92xqdg5UXBzx1bPTYOoYMseeXltR0/UYbbdu8LTleoSjyuDaxNNMmVvd0J4lbSf4ExhLDzCK8zdiYnmOWlMTHExs1Nr1D6rrFxbpYUZPHyPGZVxHs50bqF8oxxUXK8GLR8dLBu0neGneNpQCMY6ehJZQAADPiSwZrw/s6VKhc6nUjGU6S8MZeZhMnLmwZxw+dO9oVLCrLFWa8C9S1YieZauttemLesbvBeUbCd97bULudWo5eGEWZpo93b2VlHTKVeMbipF1KWX1TxlIw+jpFTStUuLitTxThl0+bvn4HhhYahqN49Ur1qdv1zFttPCLbTEbbeWnalM1Y+3xWN9/wA/cuWtbl3bf3cNKq1ZWznP2fJTyuddsl/3ppGoXNlpm1dMjVqKjFVJ1ZPopPr3/E9FtqWnUbCjqNzClUrW2OSseHdOoa3qlH22j6vRp20lzOnGXika2TF2zEw2tHrpyT2zXaPf6f7+K87Y/wAhalYaVr2sfpS5qySp2MXzQh8X5GFcYrtXPEC/UZqcaUuRNeh7uHGnVdN1u61nUIuCt6UpJy+02sGG6jcTvb+vdyp4daTkzDiw9mTuh05z0tTtq87ppLmT9CCU+j6dyDbYJncXUqiuqXq8L4v0KJSxBY78x6LarRjqNpXmv2NvcU6k18pJ/wBxFpmP2XrXeY3fO+t7i0mo3lrUot+65xwRTnNV6MraT9vGadKUF4lLyOwXW4UcQ9JtJX1ewdxGnFNN4lF47HwtdkcIdvXEb+pdae503zwc5dU16HF+mo2mLY7d/wAOHd+h5iYvW8be99OKM7qp9GS8lqXhuJWUOfm7vxIxj6Iu6re60O72ZfVIxqUk3Qi/Om+n+sxHj/xWtd2W/wCrWhNx06g8V5+U0uyXw7Gptr63e7c1i31bT5yhc0pJvD6SXo/gYNP06+TR2reNrTO8fky5+o0x6utqzvERtP5s047bD1DaW9ru6oUZvTLyTqQlFdI56s1tOrbxhmE25xfp3R11s7izsfiBo/6K3JC3trtQUZK6WKcm/uvue2x4R8MdVjOrY0re4cZZl7F5wWxdVnT19nqKzEx80ZelV1NvaYLRMT8nLmwdp6ju3cFlY2NGpK3nNOrUSeIrJ0p9IbXLfZfCe321aThG7u6caFNJ9Ulht/lk9+7d5bC4QWr07T9PgrydPMLe3j1b9ZZ/uOXd+7q1LeWuPVtTqc3VulDPSC9Bi9r1HPTJak1pXmN/VGScXTsFsdbb3t7mefRMjUjxKljpmjl/LDLV9J6Uf8OWrvP8zQ8v6iPT9GLU7PTeIFS71W7hb03SwnN4S6M31r9nwf17V6mrare6XcXVVKM5OX3eiI1Ge2m1037JmJjbj4p0+H2+h9n3RE778y4znJc8n1x64C69kzsCOg8DvFT9vpLz3Tkc88b7XQbbfNSltedB2HJ/NPob+l6lXUX7OyY+MObqum209O+bRPwlXwF2/V3BxJ0+kpJ2tCTrXCfZKPVf2GT8X+Ku5ob+vbPb+sVbKytJexpqnJpPHTy+R9uAGo6HtPZO5N0XN/brUK1J0KFvN+NYz1/iabvrqpeX1a9rpynXqOphfF5KxjjPqr2vXeKxEc+OfLNbJOn0lK0nm07zt5/Jl9XizxAjCKhuO6j6vnZtLgHvnUd2/pfZ+7793sr22l9X9o880vT+BzwZBw31x7a31pOuxgp/VayypdsPwv8AgzJq9Fitht2V2nbjb3xyw6TXZIy1i87xPE7z71u3Ho97oWs3mj14t3FvcOMVj3uvRG8uHdpb8JuHF1vPXYQeu6lTxY05e9BY6Y/NHr1vTNla9xzt9XrazZrTHQV1V8XT2nV4/NIunFLbW0uIOs0by431bWtnbU1C2oKphR6demPgjnZtXGWMeLJvEbb24n9nSwaWMM3yUmJnfaOY/dzVfahX1XVrnV72bqXFxNzr8z7r0PbtGSpbv0CrJpf4/Hr6I20+DWwv/iFb/wD1F/qNf8Sts6RtDWLCno2uR1SnlVVVhLKi0/8AcdPHrMWb+XTffb3bQ599NlwWjLfaY39+7IvpTUJ0+LNetyNKrRi4y8pdzVSXLDM+sk8L4nRkq+1eNGzrSje6nDS9xWEPZxlNpOokv7CyaZwu2ptX/Lu9dx2lWhbPno29Cefa48nk1NPrK4cUYbxPfXjb3/BsarR21GX22Ofs25+D1bo0mrpH0StMsLhNVJXjrdfJScmv7TxcH6ftOCO8euOanh/D3S48Tt9aRuzgLB07m3trz6440rNPxezi5KLx8sFg4Waxp1lwc3ZaXF5Sp3VxBKNFvrL3TBSL309pmu0zffb9W3eaVz02tE7U2/XZqG0rOjcQuObHspp8vr1N58eaNXWOFmz9w2sqvJCnyVnSfRdI9zRUEnJqay590vJG4ODvEHR6Gi19j7whzaJcdKVTv7OT8+p0NbjvWK5axv2z4/JzdDes92K07d0ce5qLlaqOKqV/F198pjTqOcvY3Fwp+rn2N6alwK0i8uPr23N32MrSXiTr1OsI/gjy6vofDDYm2bmFTWJbg1itBwUaTUo05evkRHUcF+KRMz8J+af8DqK82tER8Wl6cp+w5W+dxeJyl3k/UiUeTwrqvUNdceZB0Y4cqZ5kAAVAABDWehXCCalLK8K7FDPXpGm17zUaFnQi51K0lnHkiJtFIm1vEL1rN5itfMs74Hbejd6hPXrmGadBeGL832N10qbgpKUsufVfBFt2zpNtomj0bGilzqKc38S50INz7HgNfq51Gebx49H0HQaWNNginr6rtptNc0EvIznQ6f7NdDEdFoNuLx5md6VTcaS6Gi3l2pLCKyI5wiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPJIApSfmhJdO2Soh9gPDdW0KlKUXHq/QxLVdGmpSTSeevUziSPjVtoVk5S7kRG3hMzv5akvNJUaj5qKf4Foq6Lb45lRjlvqbcvNIpzl2LLcaBhycY9zJGXJHi0sc4sc+aw01xD25Ru9q3Lp2ylVormikupzxUzCriCyl0fzO262jd4zp80JJxax3z0OUuKu3Jbb3rc2Sg4W9eXPTk10y/I9N0HWTaZw2nnzDzPXtJFYjLSOPEsPT5m35FRMsc7XZrpgg9K8vIAAHNmT6dj06Ze3Fpdxu6UnCdJ5ivU8wUuWXN6EbJ3bMsN1aXr9pCz1enGjdxWI1V7r+ZbtX239ZrRdpfxqU5NKooy6JfAwLlnKXNB4PdQvb6iulecUvJMtWduJ5al9Jz3Yp2sy/WdJua1pT0mi40bWj3nJ++W10dI0en+xVzUun0ys8if5luhuK+xyOXNj7x9f07XqU1Sq06WE855UTPZaWvjx6ilZi/MfH+q/TudR1jSKelSqQo3FeWO+Hyli3Bs7XdGs6l3dUpRtYz5YVWukjyXet3H16neUJKM6fRYR69c3duDWdNjpt9cKVvB8yRgy98ZPs+HU0mPFjxbTG0rBnGI9+nckjkgu0m2uxJlRP5IcVKLTeGMLl5fsy95EgI3TbTlQlL2EqlF+TjJ9T7Tr3Nam43F3Vqxl06zfQ+AG0b7rd9vG6Kc405xiqT9lH3vWQaai+vXGV/qJARNkLmqU4T5VH1WcNfIy7hzvvVtlbht9StbitXtuZK4oSbalD4fExIhY5pOTeMdDHkxUy1mt433ZsWe+O8WpO2zrziXs3SeLex6euaA6MNWUFOnUTy306wZyfq+nXui3k9Pv6E6V3Tk4zhJeZd9s743RoFk7bTdRqUqKeVFMtOr6rd6zqc9RvpudeSzKT82aWh0ufS/Ytbevp74/Jva/VYdTEXrXa3r7peJTfNJxck+z5WTJSaahUqLmS7zfQpbTgnH3m+pUdHbbw5m+3hHgjTbl7WU2sZUmVUppyxiS/rSIBGyJtvHJDwym+rWe2ejJgn1lJpS7xx5EAnn1TNj5iLcXmPcAlVU3GahyTqw6eLMnkhrKy6lTOcY532IBXZbvk5V/SVf32JrNNJTlLDz4nkAnaEd0+9VCpUpVPb0qk6Vx9mUHjCK7qtcXnLC7uatZ94883iJ8gRMbytGSYjYS5V2Usvqs9Fj0QcpRhJxcuaXdJ9ABt71e5M5Sz4UlleIiElH3Y5h919wCeUb+j7wur2nCUY39xCD+xCbwfFQj7zfV925Zb/ADIBHbG+7JOSfCX3IAJYwABARlepJMlHnj5Rx1Y5nwmFMumF5vovibq4O7Wem2q3Bf0XKrUWKcJIw3hTtSpr2sRubyk42dvJTy10kkb5UaVKlG2pLlow908z1vqMRHsaT8XqOh9OmZjNePgp5fZVXB9XPx83p8D26fBymsLJ5o0ZTnzuWfIvWi2rc10PL7bPU77r5odtLkT5H3MxsYctJZWC0aRbyhTSx5l+pwxAD7LsAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApaCRUAKHTTfYonRjJYwfYYA8crSnnmcUa7418OLDeW2qypU1SvreDqUZpdZSSzg2dUWYtZPlKKUoyx4ksIyYstsOSMlfRizYqZaTS/iX50alY3em39Wxv6MqNzRfLJSXf4nn8jr/AI7cJbPdlnPVNKpxo6rRi2+Ve+ck6np15pV5V0/UqUqF3Tk01JYye70Oupq6bxPPueD1+gyaW+0xw8wDcX7qwDfc+Y2kAAEdfJlWZJYUs57kAG6mMeuWVVHlYigAndEU4y5U1yvu8DljGtiLk4cuM5JAO5Ee2OX8SQAgAAQAAAAABMZKOG4c3XqQAk71pS92L8iO8llYRIG0J3JwhGWYPKYACNwABAAAAAAAAAAAAAAAAAAAAAAAAAMAhRTqZcsJIJiEpNvBedmaBebg1mnZwoydtzeOp5I9WzNo6juS7xTpypWafjm13N8bb0nT9BsqVjY0U5KCjKpjq2cfqPVcemjsrP2na6Z0rJqJ77xtWHq0jTrfS9PhpdpTUVTj1mvM9fK5RUGsY8yVjrGn70esn6lVGMpzxg8VNptMzbmXtorFY2r4ey0oLmWJZz5GV7fs6jabh0LPpNlKU+3kZro9u6cEQlcrSjyxTx0PZ5FFFeBfM+gBdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARLOOhSlL4FYwB8akGstY5vian4y8K9P3pYVL6zpQo6lTWc4xzM25LHofCvTbTlT6Nd16mXDmvht30naWLNhpnp2XjeH587m27rG3tRq2WqWdSlKk8e0x4GvmWmKcllLK9Tuzeu1tP3HaTjfWNOTkse71Rzxvvgjf2lWdfQq3Om8+y9D1ej63jyxtl4l5PW9DyY7b4eYaYz6px+ZPTGVJP5F71nae4bDreadXSj0bUWWj2TpwcalOVNrvldTtUzUv9y27i3w2p96Jh8/wZGfwKXUSeItv5lcpSklmKMkRuxzGx+JKXTJDz6DlePeS+A8I4MfEnlZRyy+8ipuGPtA4H07kZXqRFwz1yyr9nj3WNzYXXs0MfFENr7MHgpbl9xkbx7zZX+DZGfgyuK8CeWiOXPTLJOFKafmicdO6Y5Ix80Q2o9mmT+iOPQyCHP4CLyskcJ2VAEZCEgjJIAABAAAAAAAAAAAAAAAAAAAkeF5oLqUvlfSKfMu5VD2aWJzw32J23T6KlBtZRQ3h48yeSo6ipwUpSflFZMj2/sfX9YuIRp28qVKXWVSSx0MOTNTHG952+LLiwXyztSN2OSTTiknKUu0Y9WbB2Bw9udVUL/VKToWyksRksSl+HoZ9tTh7o+iypzqRV5cYy+bqkzMpU5QxFqKSXhjHskeb1/XO7emD93ptB0Hs2vn/Z5rOxtbO2p29pTVGFNYSive+Z6uSLj2UW/QJFVGnOU8YPNzPdMzPMvSRERG0eE04OWI1Eo47NeZdtLs3KonhFFpYznUh0fcyfS9PakuhCXt0izx5LODILSmoxxg+NlbcizjyPZTjyoCqCaX4lRCJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJc2Hyvr5FMoycO/i9SsAea6pOpDlTx64LPd6fCUXh4l6l/ksrB56lHmY9d0xO3hrzVtLp1YyjVhGquvvLJh9/tHQriclX06j17tQWTcV5p0ZJ9CxX+kr2cnGPXyLVyXrO9ZmGO1K2ja0btL6lw129Wm5Ro8i+B5afDHQOqjz/HLNtXOlSS908FbTZwaxF9TZjX6mPF5/drzodNP/JH7NavhnoSXaX5nzfC/b8nzPn6/E2POwq/dZ83ZVc4wyfpDU/jlH0fpvwQ12+Fe32veqfmfH/BNof8AT1f3jZX1Kr6D6lV9CY6lqo8ZJRPTdLPnHDWU+EuiuOI3FVP/AMRR/gi0j/vVX95m0PqVX0H1Kr6Fo6prI/8AklX6L0n+nDV0uEWl/Yu6qXn4mUPhFp+f/ban7zNqfUqvoQ7Kr90t9Laz/UlH0XpP9OGpJ8HrZzfLqEkvLqUPg7RXVag2/LqbddlUz7o+p1M+6T9L6z8aPonSfgacnwgqSXS+ivwPjPg7dx60dQp839aJuxW39QiVt09wt9M6z8XyhWej6SY27fm0i+EGqf5xofuf7z5VeEOsKWIX9Fr/AMH+83n9W/qExs5yXhSSLR1vVx5tH7Qx/Qej9Kz+8tEf4I9b/wC+0f3f9555cKtfUmva02s9+U3/ACsquO6I9lUXT0+BaOu6v3/KEfQWk93zc/S4W7gSbU4Sa7LHc+X+DHcv9DH8zoT2VXPTJDpVvWp+ZaOvauPcrPQdJPvc81OGu5oJNWyl+J83w53Ov/c/4nRUaVbL8c1+IlSrf0kyfrBqY87K/V7Sz43c4VOH26IywtPcl6plP6g7p/zbL8zpDluEsKpPBS1cZ9+ReP4g1Pur81Z/h3Tfin5Obv1F3R/myf7yH6i7n/zZP95HSajW+/IONb78h9YtR+GPmj6uaf8AFPyc1vY251/2ZP8AeRTLZO5o4zpdR5/rI6Ukq335ERhUeU5yEfxFn/DHzPq5p/xT8nNT2ZuZf9lVP3iiW0NxReHplRP5nTDpz+/IpcKnwfzLfWHN+GPmj6uYPxS5o/VPcOP+jKhR+q24P811TphwqZ8vyKnTl/V/ImP4hy/gj91Z/hzD+Of2cxy2zr0VmWmVUij9XtZ/zdVOnVS6rmjGS9MEulT/AKCH5E/WLL+CP3Vn+HcX45/ZzA9A1lNL9HVvyK47c1uXbT6v5HTXsab/AJmn0+BUoU1/Mw/IfWLL+CP3T9XcX45/Zztp+xdx33KoWLop/bl5mV6TwhqtRqaneQ75cVHqbfqVZwjiLwvJJdj5wbq9ZI1s/XNVk+7w2sHQ9Lj5tyxvQtl6DpUlKFsq0l2c+pknJT9l7KnH2MV25OhWoFUqbx0OVly3yzved/i6uPFTFG1I2+D5wilT5W8T+8uhNOMsYlLL9T70reUj1ULKTa6GNkeelbymujSLnp9lLnjk9tnpk5RXhMjsdLjGEG49cAfDTdP6Rbx+RfrS1UHl4PrbW0Yx7HopwwBXFYWEThkoAQkyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKJwUlhnlrWkXFvmz8D2hpMCz1bCMkeO50uPh6mR8q9CmdKEu6AxeWlxb7nxlpEeZ+Iyt28GR9Vp5yBiv6Ij94foiP3jKvqtMfVaYGK/oiP3h+iI/eMq+q0x9VpgYr+iI/eIekR+8ZX9Vpj6rTAxP8AREcvxB6RH7xln1WmPqtMDEv0ND1KZaPDHcy/6rTIdpTYGIvR4epS9Hhn3jMPqlMfU6QGHPRofeZD0ry9DMvqdL/hBWlL0/gJ5I4YW9KI/RKM1+qUvQfVKPoRsneWEvSF5x5il6PH+iM5VpSXZD6rT9P4FonZExuwR6Ql0VMpekr+jM9+q0s9v4EOzpPy/gRvKNoa/ejx9GUy0hJdmZ+7Cj6fwIenUP8AhDlLX/6JT+yyFpEfPKNgfo2h/wAIiWmUHjrj8ANfvRo+rKZaVyvCb6Gwf0XR+9/ApekUG/ef5Aa9emNebPlLTpepsX9DW/3n+RS9Et/vP8gNcT05qLeWz5uwefM2VLQrZr33+RQ9v2z+2/3RtA1v9Rkl2bPnKxk15my/1dtv6R/ukfq5a/0j/dCd5a3VpU5VFy6IKyXp1NjPbNs3n20v3SP1Ztv6aX7oQ11Gxm/Nn3o6dJz6tmwlt21X84/3T6Q0K2i8qb/dAwy00zt1LraaUsZ5vMySnpVGHaTf4Hop2lOCwv7ALdZWcYRSxkuUKKSXXB9Y04xWEVAUKGPtFWPiSAIx17koAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//2Q==", + "useIcon": false, + "tabGroupId": 1526326597101 + }, + "Header": { + "Title": "Web Apps Traffic" + }, + "LineChart": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and (MetricName == \"BytesSent\" or \"BytesReceived\") | summarize AggregatedValue = sum(Average) by Resource, bin(TimeGenerated, 1h)| sort by TimeGenerated | render timechart", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "Bits", + "baseUnit": "Bytes", + "displayUnit": "AUTO" + } + } + }, + "List": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and (MetricName == \"BytesSent\" or \"BytesReceived\") | summarize AggregatedValue = sum(Average) by Resource", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "WEB APP NAME", + "Value": "TRAFFIC(BYTE)" + }, + "Color": "#007233", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and (MetricName == \"BytesSent\" or \"BytesReceived\") and {selected item} | summarize AggregatedValue = sum(Average) by bin(TimeGenerated, 1h), MetricName | sort by TimeGenerated desc | render barchart" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Azure App Service Plans", + "newGroup": true, + "useIcon": false, + "tabGroupId": 1526326597101 + }, + "Tile": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" and MetricName == \"CpuPercentage\" | summarize AggregatedValue = avg(Average) by Resource | where AggregatedValue > 80| count ", + "Legend": "App Service Plans with CPU utilization > 80%" + }, + "List": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" and MetricName == \"CpuPercentage\" | summarize AggregatedValue = avg(Average) by Resource", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "APP SERVICE PLAN", + "Value": "CPU (%)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "80", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" and MetricName == \"CpuPercentage\" and {selected item} | summarize AggregatedValue = avg(Average) by Resource" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "newGroup": false, + "useIcon": false, + "tabGroupId": 1526326597101 + }, + "Tile": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" and MetricName == \"MemoryPercentage\" | summarize AggregatedValue = avg(Average) by Resource | where AggregatedValue > 80\r\n| count", + "Legend": "App Service Plan with memory utilization > 80%" + }, + "List": { + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" and MetricName == \"MemoryPercentage\" | summarize AggregatedValue = avg(Average) by Resource\r\n", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "App Service Plan", + "Value": "Memory (%)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "80", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" and MetricName == \"MemoryPercentage\" and {selected item} | summarize AggregatedValue = avg(Average) by Resource\r\n" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Azure Web Apps Actiivity Logs", + "newGroup": true, + "useIcon": false, + "tabGroupId": 1526326597101 + }, + "Tile": { + "Query": "AzureActivity | where ResourceProvider == \"Azure Web Sites\" | summarize AggregatedValue = count() by OperationName\r\n| count ", + "Legend": "Azure Web Apps Activity Audit" + }, + "List": { + "Query": "AzureActivity | where ResourceProvider == \"Azure Web Sites\" | summarize AggregatedValue = count() by OperationName\r\n", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Operation Name", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search {selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "List of popular Azure Web Apps search queries", + "newGroup": false, + "preselectedFilters": "Type, Computer", + "renderMode": "grid", + "tabGroupId": 1526326597101 + }, + "queries": [ + { + "query": "AzureMetrics | where ResourceProvider == \"MICROSOFT.WEB\" | sort by TimeGenerated desc", + "displayName": "All Azure Web Apps Data" + }, + { + "query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" | summarize AggregatedValue = count() by MetricName | sort by AggregatedValue desc", + "displayName": "List of all Azure Web Apps Performance Metrics" + }, + { + "query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" | summarize AggregatedValue = count() by MetricName | sort by AggregatedValue desc", + "displayName": "List of all Azure App Service Plan Performance Metrics" + }, + { + "query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" and MetricName == \"AverageResponseTime\" | summarize AggregatedValue = avg(Average) by bin(TimeGenerated, 5m), Resource | sort by TimeGenerated desc", + "displayName": "Alert on High Web Apps Response Time" + }, + { + "query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" and MetricName == \"CpuPercentage\" | summarize AggregatedValue = avg(Average) by bin(TimeGenerated, 5m), Resource | sort by TimeGenerated desc", + "displayName": "Alert on App Service Plans with High CPU Utilization" + }, + { + "query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SERVERFARMS/\" and MetricName == \"MemoryPercentage\" | summarize AggregatedValue = avg(Average) by bin(TimeGenerated, 5m), Resource | sort by TimeGenerated desc", + "displayName": "Alert on App Service Plans with High Memory Utilization" + } + ] + } + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Tile": { + "Legend": "Azure Web Apps Count", + "Query": "search in (AzureMetrics) isnotempty(ResourceId) and \"/MICROSOFT.WEB/SITES/\" | summarize AggregatedValue = count() by Resource\r\n| count " + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": true, + "Query": "AzureMetrics | where ResourceProvider == \"MICROSOFT.WEB\" | sort by TimeGenerated desc\r\n", + "Message": " Ensure that you have run the script below to onboard your Azure PaaS Resources to send data to OMS.\n https://aka.ms/azurepaasonboarding" + } + } + } + } + } + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-10/(omsSolutions).customSolution.Name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1817 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1817 new file mode 100644 index 0000000..b7ec2c8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1817 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/sas9.4-viya/nestedtemplates/access_policy.json" + ], + "timestamp": 1642962911568, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/nestedtemplates/access_policy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1817", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/accesspolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1817", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault." + } + }, + "certificatesPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault." + } + } + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "name": "keyVaultName/add", + "apiVersion": "2019-09-01", + "properties": { + "accessPolicies": [ + { + "tenantId": "[subscription().tenantId]", + "objectId": "objectId", + "permissions": { + "secrets": [ + "list" + ], + "keys": [ + "list" + ], + "certificates": [ + "list" + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1818 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1818 new file mode 100644 index 0000000..3ab09c5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1818 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/sas9.4-viya/nestedtemplates/role_assignments.json" + ], + "timestamp": 1642962911574, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/nestedtemplates/role_assignments.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1818", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1818", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "roleAssignmentName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the role assignment to create. It can be any valid GUID." + } + }, + "roleDefinitionID": { + "type": "string", + "metadata": { + "description": "Specifies the role definition ID used in the role assignment." + } + }, + "principalId": { + "type": "string", + "metadata": { + "description": "Specifies the principal ID assigned to the role." + } + } + }, + "resources": [ + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "roleAssignmentName", + "properties": { + "roleDefinitionId": "roleDefinitionID", + "principalId": "principalId" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1819 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1819 new file mode 100644 index 0000000..16956ee --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1819 @@ -0,0 +1,97 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/sas9.4-viya/nestedtemplates/vm_linux_extension.json" + ], + "timestamp": 1642962911579, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/nestedtemplates/vm_linux_extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1819", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1819", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The Location For the resources" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the vm" + } + }, + "filepath": { + "type": "string" + }, + "commandToExecute": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + } + } + }, + "variables": { + "extensionName": "vmNameInitStartup" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "vmName/vmNameInitStartup", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false + }, + "protectedSettings": { + "commandToExecute": "commandToExecute", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(parameters('filepath'), parameters('_artifactsLocationSasToken')))]" + ] + } + } + } + ], + "outputs": { + "instanceView": { + "value": "[reference( resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))).instanceView]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT182 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT182 new file mode 100644 index 0000000..cf579a7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT182 @@ -0,0 +1,111 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/vnet-existing.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "timestamp": 1642962889944, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/vnet-existing.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT182", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT182", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the Lustre nodes" + }, + "value": "Japan East" + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "Virtual Network name (e.g. vnet-lustre)" + }, + "value": "vnettest" + }, + "vnetResourceGroup": { + "type": "string", + "metadata": { + "description": "Virtual Network Resource Group" + } + }, + "vnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Virtual Network Address Prefix (i.e. CIDR)" + } + }, + "subnetServersName": { + "type": "string", + "metadata": { + "description": "Lustre servers will be deployed into this subnet within the Virtual Network" + } + }, + "subnetServersAddressPrefix": { + "type": "string", + "metadata": { + "description": "Virtual Network Lustre Servers subnet Address Prefix (i.e. CIDR)" + } + }, + "subnetClientsName": { + "type": "string", + "metadata": { + "description": "Lustre clients can be deployed into this subnet within the Virtual Network" + } + }, + "subnetClientsAddressPrefix": { + "type": "string", + "metadata": { + "description": "Virtual Network Lustre Clients subnet Address Prefix (i.e. CIDR)" + } + }, + "artifactsBaseUrl": { + "value": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create" + }, + "adminUsername": { + "value": "azureuser" + }, + "dnsNamePrefix": { + "value": "uniqdnsname" + }, + "existingSubnetClientsName": { + "value": "subnet-lustre-clients" + }, + "clientlocation": { + "value": "Japan East" + }, + "clientadminUsername": { + "value": "azureclientuser" + }, + "dnsNamePrefixForClient": { + "value": "clntdnsname" + } + }, + "variables": { + "vnetID": "vnetResourceGroup/Microsoft.Network/virtualNetworks/vnettest" + }, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1820 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1820 new file mode 100644 index 0000000..5637535 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1820 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/sas9.4-viya/nestedtemplates/vm_windows_extension.json" + ], + "timestamp": 1642962911589, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/nestedtemplates/vm_windows_extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1820", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1820", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "metadata": { + "description": "The Location For the resources" + }, + "type": "string" + }, + "vmName": { + "metadata": { + "description": "The name of the vm" + }, + "type": "string" + }, + "commandToExecute": { + "type": "string" + }, + "filepath": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + } + } + }, + "variables": { + "extensionName": "vmNameInitStartup" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "vmName/vmNameInitStartup", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(parameters('filepath'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "commandToExecute" + } + } + } + ], + "outputs": { + "instanceView": { + "value": "[reference( resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))).instanceView]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1821 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1821 new file mode 100644 index 0000000..6fdab26 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1821 @@ -0,0 +1,4202 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/sas9.4-viya/azuredeploy.json", + "/sas9.4-viya/azuredeploy.parameters.json" + ], + "timestamp": 1642962911597, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/sas9.4-viya/azuredeploy.json", + "/sas9.4-viya/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1821", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/proximityplacementgroups", + "microsoft.keyvault/vaults/secrets", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1821", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "SASApplicationName": { + "minLength": 2, + "maxLength": 6, + "type": "String", + "defaultValue": "sasapp", + "metadata": { + "description": "This tag will be used as a prefix for the hostname of the SAS servers and Azure resources" + } + }, + "adminIngressLocation": { + "type": "String", + "metadata": { + "description": "Allow inbound SSH traffic to the Ansible Controller-Bastion Host from this CIDR block or IP address range. Must be a valid IP or CIDR range of the form x.x.x.x or x.x.x.x/x" + }, + "value": "183.83.137.123" + }, + "vnetAddressCIDR": { + "defaultValue": "10.10.0.0/16", + "type": "String", + "metadata": { + "description": "Virtual Network CIDR, ex. 10.10.0.0/16" + } + }, + "ansibleBastionPublicSubnetCIDR": { + "defaultValue": "10.10.1.0/24", + "type": "String", + "metadata": { + "description": "Virtual Network Public Subnet CIDR, ex. 10.10.1.0/24 which should allign with VNET CIDR" + } + }, + "SASPrivateSubnetCIDR": { + "defaultValue": "10.10.2.0/24", + "type": "String", + "metadata": { + "description": "Virtual Network Private Subnet CIDR, ex. 10.10.2.0/24 which should allign with VNET CIDR" + } + }, + "ansibleVMSize": { + "defaultValue": "Standard_D4s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Ansible VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "windowsRdpVMSize": { + "defaultValue": "Standard_D8S_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Windows Server VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks" + } + }, + "SASMetaVMSize": { + "defaultValue": "Standard_D4s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Meta VM.The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "SASComputeVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Compute VM.The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "SASMidVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Mid VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "SASDataStorage": { + "defaultValue": 100, + "minValue": 100, + "maxValue": 32767, + "type": "Int", + "metadata": { + "description": "The SAS data volume size for SAS 94" + } + }, + "primaryUserName": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "SASExternalPassword": { + "minLength": 12, + "maxLength": 255, + "type": "SecureString", + "metadata": { + "description": "Password for RDP login & SAS admin account in SAS servers" + }, + "value": "GEN-PASSWORD" + }, + "SASInternalPassword": { + "minLength": 8, + "maxLength": 255, + "type": "SecureString", + "metadata": { + "description": "Password for SAS Internal Accounts(Metadata & WIP)" + }, + "value": "GEN-PASSWORD" + }, + "viyaPrivateSubnetCIDR": { + "defaultValue": "10.10.3.0/24", + "type": "String", + "metadata": { + "description": "Virtual Network Private Subnet CIDR, ex. 10.10.3.0/24 which should allign with VNET CIDR" + } + }, + "viyaMicroservicesVMSize": { + "defaultValue": "Standard_E16s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the MicroServices VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "viyaSpreVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the SPRE VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "viyaCASControllerVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the CASController VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disk. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "viyaCASWorkerVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the CAS Worker VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "numberOfViyaCASNodes": { + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "type": "Int", + "metadata": { + "description": "The number of CAS Worker Nodes to create." + } + }, + "SASViyaDataStorage": { + "defaultValue": 100, + "minValue": 100, + "maxValue": 32767, + "type": "Int", + "metadata": { + "description": "The SAS data volume size for SAS Viya." + } + }, + "storageAccountName": { + "type": "String", + "metadata": { + "description": "Storage AccountName where SAS Depot is located" + }, + "value": "ccwestus" + }, + "storageAccountKey": { + "type": "SecureString", + "metadata": { + "description": "Storage Account Key" + }, + "value": "kngqtXaNOL8g6ugAspsX9c4ReC+ckjFkcaGB00XEumjTjuhtrDOXqswcP/hm+lr+URpREaobkHWdTihqyvf2aw==" + }, + "fileShareName": { + "type": "String", + "metadata": { + "description": "File Share Name where SASDepot is located" + }, + "value": "sasrepo" + }, + "SASDepotFolder": { + "type": "String", + "metadata": { + "description": "Folder Name in Azure File share where SAS94 depot is located" + }, + "defaultValue": "sasdepot" + }, + "viyaRepoFolder": { + "type": "String", + "metadata": { + "description": "Folder Name in Azure File share where SAS Viya Repo is located" + }, + "defaultValue": "viyarepo" + }, + "SASServerLicenseFile": { + "type": "String", + "metadata": { + "description": "Name of SAS Application Server License file.You will find this file inside the SAS Software Depot. It should be inside the folder sid_file." + }, + "value": "SAS94_9CCPHL_70154202_LINUX_X86-64.txt" + }, + "keyVaultOwnerID": { + "type": "String", + "metadata": { + "description": "Key Vault Owner Object ID,Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault.Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets. e.g.In Azure Cloud PowerShell type PS> Get-AzADUser -UserPrincipalName user@domain.com | grep Id" + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "SSHPublicKey": { + "type": "String", + "metadata": { + "description": "The full ssh public key that will be added to the servers." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure Resources location, where all the SAS 94 and Viya resources should be created. e.g. servers, disks, IP's etc." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/", + "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": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "access_policy_template": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]", + "ansible_nw_interface": "sasapp_ansible_nic", + "ansible_nw_sg": "sasapp_ansible_nsg", + "ansible_pub_nw_interface": "sasapp_ansible_pub_nic", + "ansible_vm_name": "ansible", + "cascontroller_nw_interface": "sasapp_cascontroller_nic", + "cascontroller_nw_sg": "sasapp_cascontroller_nsg", + "cascontroller_vm_name": "cascontroller", + "casworker_nw_sg": "sasapp_casworker_nsg", + "casworker_vm_name": "casworker", + "certificatesPermissions": [ + "import", + "get", + "list" + ], + "compute_nw_interface": "sasapp_compute_nic", + "compute_nw_sg": "sasapp_compute_nsg", + "compute_vm_name": "compute", + "custom_data_cas": "#cloud-config\n mounts:\n - [ ephemeral0, /cascache]", + "custom_data_sas": "#cloud-config\n mounts:\n - [ ephemeral0, /saswork]", + "diagnostic_storagegroup_name": "[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]", + "domain_name": "internal.cloudapp.net", + "key_vault_name": "sasappKeyVault", + "key_vault_secretname_pubkey": "ansible-pubkey", + "key_vault_secretname_pvtkey": "ansible-pvtkey", + "key_vault_secretname_sasext": "sasextpw", + "key_vault_secretname_sasinst": "sasintpw", + "key_vault_secretname_stgacc": "stgacckey", + "keysPermissions": [ + "get", + "list", + "import" + ], + "linux_extension_template": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]", + "meta_nw_interface": "sasapp_meta_nic", + "meta_nw_sg": "sasapp_meta_nsg", + "meta_vm_name": "meta", + "microservices_nw_interface": "sasapp_microservices_nic", + "microservices_nw_sg": "sasapp_microservices_nsg", + "microservices_vm_name": "microservices", + "mid_nw_interface": "sasapp_mid_nic", + "mid_nw_sg": "sasapp_mid_nsg", + "mid_vm_name": "mid", + "ppg_name": "sasapp_ppg_[uniqueString(resourceGroup().id)]", + "storage_account_uri": "[concat(parameters('storageAccountName'),'.file.',environment().suffixes.storage)]", + "pub_sub_nw_sg": "sasapp_subnet_pub1_nsg", + "pvt_sub_nw_sg": "sasapp_subnet_pvt1_nsg", + "rbacPrincipalID": "GEN-AZUREAD-OBJECTID", + "rdp_nw_interface": "sasapp_rdp_nic", + "rdp_nw_sg": "sasapp_rdp_nsg", + "rdp_os_version": "2019-Datacenter", + "rdp_vm_name": "rdp", + "reader_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", + "resourceGroupUniqueString": "[uniqueString(resourceGroup().id)]", + "role_assignment_template": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]", + "sas_opt_sas_disk_size": 128, + "sas_osdisk_size": 128, + "sas_viya_backup_size": 100, + "sas94vm_tags": { + "Application": "sasapp", + "Component": "SAS94NonGrid" + }, + "sasviyavm_tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "secretsPermissions": [ + "get", + "list", + "set" + ], + "skuName": "standard", + "spre_nw_interface": "sasapp_spre_nic", + "spre_nw_sg": "sasapp_spre_nsg", + "spre_vm_name": "spre", + "tenantId": "[subscription().tenantId]", + "vnet_name": "sasapp_vnet", + "vnet_pub_subnt": "sasapp_vnet_pub1_subnet", + "vnet_pvt_subnt": "sasapp_vnet_pvt1_subnet", + "vnet_viya_pvt_subnt": "sasapp_vnet_pvt2_subnet", + "windows_extension_template": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_windows_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/proximityPlacementGroups", + "name": "sasapp_ppg_[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-06-01", + "name": "sasapp_vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pub1_nsg", + "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pvt1_nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.0.0/16" + ] + }, + "subnets": [ + { + "name": "sasapp_vnet_pvt1_subnet", + "properties": { + "addressPrefix": "10.10.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pvt1_nsg" + } + } + }, + { + "name": "sasapp_vnet_pvt2_subnet", + "properties": { + "addressPrefix": "10.10.3.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pvt1_nsg" + } + } + }, + { + "name": "sasapp_vnet_pub1_subnet", + "properties": { + "addressPrefix": "10.10.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pub1_nsg" + } + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_subnet_pub1_nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-ssh", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "183.83.137.123", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ], + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80,443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_subnet_pvt1_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80,443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "sasappKeyVault", + "location": "[resourceGroup().location]", + "properties": { + "enabledForDeployment": true, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": true, + "enableSoftDelete": false, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "get", + "list", + "import" + ], + "secrets": [ + "get", + "list", + "set" + ] + } + } + ], + "sku": { + "name": "standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "sasappKeyVault/sasintpw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "value": "GEN-PASSWORD" + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "sasappKeyVault/sasextpw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "value": "GEN-PASSWORD" + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "sasappKeyVault/stgacckey", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "value": "kngqtXaNOL8g6ugAspsX9c4ReC+ckjFkcaGB00XEumjTjuhtrDOXqswcP/hm+lr+URpREaobkHWdTihqyvf2aw==" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "name": "[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": false, + "encryption": { + "services": { + "file": { + "enabled": true + }, + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_ansible_nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-ssh", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "183.83.137.123", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ], + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80,443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_meta_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_mid_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_compute_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_rdp_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_microservices_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_spre_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_cascontroller_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_casworker_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-09-01", + "name": "sasapp_ansible_pub_nic", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_ansible_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/sasapp_ansible_pub_nic", + "Microsoft.Network/networkSecurityGroups/sasapp_ansible_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/sasapp_ansible_pub_nic" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pub1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_ansible_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "ansible", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_ansible_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "ansible-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 64 + }, + "dataDisks": [ + { + "name": "ansible-playbook", + "diskSizeGB": 50, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "ansible", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_ansible_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "AnsibleRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ansible", + "Microsoft.Resources/deployments/AnsibleAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('ansible_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('ansible_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "AnsibleAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ansible", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('ansible_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-AnsibleHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ansible", + "Microsoft.Resources/deployments/AnsibleAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./ansible_setup.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('viyaRepoFolder'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',variables('mid_vm_name'),' ',parameters('_artifactsLocation'),' ',variables('compute_vm_name'),' ',variables('meta_vm_name'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/ansible_setup.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-AnsibleSSLCopy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ansible", + "Microsoft.Resources/deployments/Phase2-MetaInstall", + "Microsoft.Resources/deployments/Phase2-MidInstall", + "Microsoft.Resources/deployments/Phase2-ComputeInstall", + "Microsoft.Resources/deployments/Phase4-ViyaInstallpart2" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./ansible_ssl.sh 2>&1 | tee /var/log/sas/install/runPhase2AnsibleSSLCopy.log;" + }, + "filepath": { + "value": "scripts/ansible_ssl.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase3-ViyaInstallpart1", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup", + "Microsoft.Resources/deployments/Phase2-MicroServicesViyaARK", + "Microsoft.Resources/deployments/Phase2-SpreViyaARK", + "Microsoft.Resources/deployments/Phase2-CASControllerViyaARK", + "casworkerviyaarkcopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./viyainstall.sh 1 2>&1 | tee /var/log/sas/install/runPhase3_viyainstallpart1.log" + }, + "filepath": { + "value": "scripts/viyainstall.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase4-ViyaInstallpart2", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase3-ViyaInstallpart1" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./viyainstall.sh 2 2>&1 | tee /var/log/sas/install/runPhase4_viyainstallpart2.log" + }, + "filepath": { + "value": "scripts/viyainstall.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase5-ViyaInstallpart3", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase2-AnsibleSSLCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./viyainstall.sh 3 2>&1 | tee /var/log/sas/install/runPhase5_viyainstallpart3.log" + }, + "filepath": { + "value": "scripts/viyainstall.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase6-ViyaPostInstall", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase5-ViyaInstallpart3" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./viyainstall.sh 4 2>&1 | tee /var/log/sas/install/runPhase6_viyapostinstall.log" + }, + "filepath": { + "value": "scripts/viyainstall.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_rdp_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_rdp_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_rdp_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "rdp", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_rdp_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D8S_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "rdp", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_rdp_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "RDPContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/rdp" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_windows_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "rdp" + }, + "commandToExecute": { + "value": "powershell.exe Expand-Archive -LiteralPath client_install.zip -Destination C:\\WindowsAzure\\client_install" + }, + "filepath": { + "value": "client_install.zip" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-SASClientInstall", + "dependsOn": [ + "Microsoft.Resources/deployments/RDPContentFileDownload" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_windows_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "rdp" + }, + "commandToExecute": { + "value": "[concat('powershell -ExecutionPolicy Unrestricted -File sas_client_install.ps1 ','-stg_acc_name ',parameters('storageAccountName'),' -stg_key ',parameters('storageAccountKey'),' -file_share_name ',parameters('fileShareName'),' -depot_folder_name ',parameters('SASDepotFolder'),' -clients_sid ',parameters('SASServerLicenseFile'),' -app_name ',parameters('SASApplicationName'),' -mid_name ',variables('mid_vm_name'),' -domain_name ',variables('domain_name'),' -artifact_loc ',parameters('_artifactsLocation'),' -storageuri ',variables('storage_account_uri'))]" + }, + "filepath": { + "value": "sas_client_install.ps1" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_meta_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_meta_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_meta_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "meta", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_meta_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SAS94NonGrid" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "meta-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "meta-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "meta", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_meta_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MetaRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('meta_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('meta_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MetaAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.KeyVault/vaults/sasappKeyVault", + "[resourceID('Microsoft.Resources/deployments','AnsibleAccessPolicy')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('meta_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-MetaHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.Resources/deployments/MetaAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "meta" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./sasapp_prereq.sh',' ',parameters('SASApplicationName'),' ',parameters('SASDepotFolder'),' ',parameters('fileShareName'),' ',parameters('storageAccountName'),' ',variables('domain_name'),' ',parameters('location'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',variables('mid_vm_name'),' ',variables('meta_vm_name'),' ',variables('compute_vm_name'),' ',parameters('SASServerLicenseFile'),' ','meta',' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/sasapp_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MetaContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.Resources/deployments/Phase1-MetaHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "meta" + }, + "commandToExecute": { + "value": "cp response-properties.tar.gz /tmp" + }, + "filepath": { + "value": "properties/response-properties.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-MetaInstall", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.Resources/deployments/MetaContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "meta" + }, + "commandToExecute": { + "value": "set -o pipefail;./meta_install.sh 2>&1 | tee /var/log/sas/install/meta_install.log" + }, + "filepath": { + "value": "scripts/meta_install.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase3-MetaConfig", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.Resources/deployments/Phase2-MetaInstall", + "Microsoft.Resources/deployments/Phase2-AnsibleSSLCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "meta" + }, + "commandToExecute": { + "value": "set -o pipefail;./meta_config.sh 2>&1 | tee /var/log/sas/install/meta_config.log" + }, + "filepath": { + "value": "scripts/meta_config.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_compute_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_compute_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_compute_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "compute", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_compute_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SAS94NonGrid" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "compute-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "compute-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "compute-sasdata", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "compute", + "adminUsername": "GEN-UNIQUE", + "customData": "[base64(variables('custom_data_sas'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_compute_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ComputeRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('compute_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('compute_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ComputeAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute", + "[resourceID('Microsoft.Resources/deployments','MetaAccessPolicy')]", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('compute_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-ComputeHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute", + "Microsoft.Resources/deployments/ComputeAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "compute" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./sasapp_prereq.sh',' ',parameters('SASApplicationName'),' ',parameters('SASDepotFolder'),' ',parameters('fileShareName'),' ',parameters('storageAccountName'),' ',variables('domain_name'),' ',parameters('location'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',variables('mid_vm_name'),' ',variables('meta_vm_name'),' ',variables('compute_vm_name'),' ',parameters('SASServerLicenseFile'),' ','compute',' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/sasapp_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ComputeContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute", + "Microsoft.Resources/deployments/Phase1-ComputeHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "compute" + }, + "commandToExecute": { + "value": "cp response-properties.tar.gz /tmp" + }, + "filepath": { + "value": "properties/response-properties.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-ComputeInstall", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute", + "Microsoft.Resources/deployments/ComputeContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "compute" + }, + "commandToExecute": { + "value": "set -o pipefail;./compute_install.sh 2>&1 | tee /var/log/sas/install/compute_install.log" + }, + "filepath": { + "value": "scripts/compute_install.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase3-ComputeConfig", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase2-ComputeInstall", + "Microsoft.Resources/deployments/Phase3-MetaConfig" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "compute" + }, + "commandToExecute": { + "value": "set -o pipefail;./compute_config.sh 2>&1 | tee /var/log/sas/install/compute_config.log" + }, + "filepath": { + "value": "scripts/compute_config.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_mid_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_mid_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_mid_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "mid", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_mid_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SAS94NonGrid" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "mid-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "mid-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "mid", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_mid_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MidRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('mid_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('mid_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MidAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "[resourceID('Microsoft.Resources/deployments','ComputeAccessPolicy')]", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('mid_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-MidHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "Microsoft.Resources/deployments/MidAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "mid" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./sasapp_prereq.sh',' ',parameters('SASApplicationName'),' ',parameters('SASDepotFolder'),' ',parameters('fileShareName'),' ',parameters('storageAccountName'),' ',variables('domain_name'),' ',parameters('location'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',variables('mid_vm_name'),' ',variables('meta_vm_name'),' ',variables('compute_vm_name'),' ',parameters('SASServerLicenseFile'),' ','mid',' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/sasapp_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MidContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "Microsoft.Resources/deployments/Phase1-MidHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "mid" + }, + "commandToExecute": { + "value": "cp response-properties.tar.gz /tmp" + }, + "filepath": { + "value": "properties/response-properties.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-MidInstall", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "Microsoft.Resources/deployments/MidContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "mid" + }, + "commandToExecute": { + "value": "set -o pipefail;./mid_install.sh 2>&1 | tee /var/log/sas/install/mid-install.log" + }, + "filepath": { + "value": "scripts/mid_install.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase3-MidConfig", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "Microsoft.Resources/deployments/Phase2-MidInstall", + "Microsoft.Resources/deployments/Phase3-ComputeConfig" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "mid" + }, + "commandToExecute": { + "value": "set -o pipefail;./mid_config.sh 2>&1 | tee /var/log/sas/install/mid_config.log" + }, + "filepath": { + "value": "scripts/mid_config.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_microservices_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_microservices_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt2_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_microservices_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "microservices", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_microservices_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E16s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "microservices-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "microservices-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "microservices-sasbackup", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "microservices", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_microservices_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MicroServicesRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/microservices" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('microservices_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('microservices_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MicroServicesAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/microservices", + "Microsoft.KeyVault/vaults/sasappKeyVault", + "[resourceID('Microsoft.Resources/deployments','MidAccessPolicy')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('microservices_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-MicroServicesHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/microservices", + "Microsoft.Resources/deployments/MicroServicesAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "microservices" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./viya_prereq.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('viyaRepoFolder'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/viya_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MicroServicesContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/microservices", + "Microsoft.Resources/deployments/Phase1-MicroServicesHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "microservices" + }, + "commandToExecute": { + "value": "cp viya-ark.tar.gz /tmp" + }, + "filepath": { + "value": "properties/viya-ark.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-MicroServicesViyaARK", + "dependsOn": [ + "Microsoft.Resources/deployments/MicroServicesContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "microservices" + }, + "commandToExecute": { + "value": "set -o pipefail;./viya_ark.sh 2>&1 | tee /var/log/sas/install/runPhase2_viyaark.log" + }, + "filepath": { + "value": "scripts/viya_ark.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_spre_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_spre_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt2_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_spre_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "spre", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_spre_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "spre-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "spre-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "spre-sasbackup", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "spre", + "adminUsername": "GEN-UNIQUE", + "customData": "[base64(variables('custom_data_sas'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_spre_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "SpreRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/spre" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('spre_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('spre_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "SpreAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/spre", + "Microsoft.KeyVault/vaults/sasappKeyVault", + "[resourceID('Microsoft.Resources/deployments','CAScontrollerAccessPolicy')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('spre_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-SpreHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/spre", + "Microsoft.Resources/deployments/SpreAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "spre" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./viya_prereq.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('fileShareName'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/viya_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "SpreContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/spre", + "Microsoft.Resources/deployments/Phase1-SpreHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "spre" + }, + "commandToExecute": { + "value": "cp viya-ark.tar.gz /tmp" + }, + "filepath": { + "value": "properties/viya-ark.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-SpreViyaARK", + "dependsOn": [ + "Microsoft.Resources/deployments/SpreContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "spre" + }, + "commandToExecute": { + "value": "set -o pipefail;./viya_ark.sh 2>&1 | tee /var/log/sas/install/runPhase2_viyaark.log" + }, + "filepath": { + "value": "scripts/viya_ark.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_cascontroller_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_cascontroller_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt2_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_cascontroller_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "Cascontroller_vm_name", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_cascontroller_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "cascontroller-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "cascontroller-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "cascontroller-sasbackup", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "cascontroller-sasdata", + "diskSizeGB": 100, + "lun": 2, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "Cascontroller_vm_name", + "adminUsername": "GEN-UNIQUE", + "customData": "[base64(variables('custom_data_cas'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_cascontroller_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "CASControllerRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Cascontroller_vm_name" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('Cascontroller_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('Cascontroller_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "CASControllerAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Cascontroller_vm_name", + "[resourceID('Microsoft.Resources/deployments','MicroServicesAccessPolicy')]", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('Cascontroller_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-CASControllerHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Cascontroller_vm_name", + "Microsoft.Resources/deployments/CAScontrollerAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "Cascontroller_vm_name" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./viya_prereq.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('fileShareName'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/viya_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "CASContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Cascontroller_vm_name", + "Microsoft.Resources/deployments/Phase1-CASControllerHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "Cascontroller_vm_name" + }, + "commandToExecute": { + "value": "cp viya-ark.tar.gz /tmp" + }, + "filepath": { + "value": "properties/viya-ark.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-CASControllerViyaARK", + "dependsOn": [ + "Microsoft.Resources/deployments/CASContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "Cascontroller_vm_name" + }, + "commandToExecute": { + "value": "set -o pipefail;./viya_ark.sh 2>&1 | tee /var/log/sas/install/runPhase2_viyaark.log" + }, + "filepath": { + "value": "scripts/viya_ark.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_casworkercopyIndex()_nic", + "location": "[resourceGroup().location]", + "copy": { + "name": "casworkernicLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_casworker_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt2_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_casworker_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "casworkercopyIndex()", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "copy": { + "name": "casworkervmLoop", + "count": 1 + }, + "dependsOn": [ + "casworkernicLoop" + ], + "tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "casworkercopyIndex()-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "casworkercopyIndex()-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "casworkercopyIndex()-sasbackup", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "casworkercopyIndex()", + "adminUsername": "GEN-UNIQUE", + "customData": "[base64(variables('custom_data_cas'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_casworkercopyIndex()_nic" + } + ] + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "casworkercopyIndex()roleassignment", + "copy": { + "name": "casworkerrolecopy", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/casworkercopyIndex()" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', concat(variables('casworker_vm_name'), copyIndex())), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',concat(variables('casworker_vm_name'), copyIndex())),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "casworkercopyIndex()accesspolicy", + "copy": { + "name": "casworkerpolicycopy", + "count": 1, + "mode": "serial", + "batchSize": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/casworkercopyIndex()", + "Microsoft.KeyVault/vaults/sasappKeyVault", + "[resourceID('Microsoft.Resources/deployments','SpreAccessPolicy')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',concat(variables('casworker_vm_name'), copyIndex())),'2019-07-01','Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-casworkercopyIndex()Hostsetup", + "copy": { + "name": "casworkerextensioncopy", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/casworkercopyIndex()", + "casworkerpolicycopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "casworkercopyIndex()" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./viya_prereq.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('fileShareName'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/viya_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "WorkerContentFileDownloadcopyIndex()", + "copy": { + "name": "casworkerdownloadextensioncopy", + "count": 1, + "mode": "serial", + "batchSize": 1 + }, + "dependsOn": [ + "Microsoft.Resources/deployments/Phase1-casworkercopyIndex()Hostsetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "casworkercopyIndex()" + }, + "commandToExecute": { + "value": "cp viya-ark.tar.gz /tmp" + }, + "filepath": { + "value": "properties/viya-ark.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-casworkercopyIndex()ViyaARK", + "copy": { + "name": "casworkerviyaarkcopy", + "count": 1 + }, + "dependsOn": [ + "casworkerdownloadextensioncopy", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "casworkercopyIndex()" + }, + "commandToExecute": { + "value": "set -o pipefail;./viya_ark.sh 2>&1 | tee /var/log/sas/install/runPhase2_viyaark.log" + }, + "filepath": { + "value": "scripts/viya_ark.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "AnsibleJumpHostServerIP": { + "type": "String", + "value": "[concat(reference(resourceId('Microsoft.Compute/virtualMachines',variables('ansible_vm_name'))).osProfile.adminUsername,'@',reference(resourceId('Microsoft.Network/publicIPAddresses',variables('ansible_pub_nw_interface'))).IpAddress)]" + }, + "SASRdpServerIP": { + "type": "String", + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces',variables('rdp_nw_interface'))).ipConfigurations[0].properties.privateIPAddress]" + }, + "SASStudioMidTier": { + "type": "String", + "value": "[concat('https://',parameters('SASApplicationName'),variables('mid_vm_name'),'.',variables('domain_name'),':8343/SASStudio')]" + }, + "SASInstallUser": { + "type": "String", + "value": "sasinst" + }, + "viyaSASDrive": { + "type": "String", + "value": "[concat('https://',parameters('SASApplicationName'),variables('microservices_vm_name'),'.',variables('domain_name'),'/SASDrive')]" + }, + "viyaSASStudio": { + "type": "String", + "value": "[concat('https://',parameters('SASApplicationName'),variables('microservices_vm_name'),'.',variables('domain_name'),'/SASStudioV')]" + }, + "viyaUserLogon": { + "type": "String", + "value": "[concat('https://',parameters('SASApplicationName'),variables('microservices_vm_name'),'.',variables('domain_name'),'/SASLogon/reset_password?code=',json(split(reference('Phase6-ViyaPostInstall').outputs.instanceView.value.statuses[0].message, '#SASBOOT#')[1]).SAS_BOOT)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1822 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1822 new file mode 100644 index 0000000..83dec33 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1822 @@ -0,0 +1,210 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-gen-setup/azuredeploy.json", + "/test/ci-gen-setup/azuredeploy.parameters.json" + ], + "timestamp": 1642962911620, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-gen-setup/azuredeploy.json", + "/test/ci-gen-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1822", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.network/dnszones/txt", + "microsoft.network/dnszones/cname", + "microsoft.network/dnszones/a", + "microsoft.network/dnszones" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1822", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "zoneName": { + "type": "string", + "metadata": { + "description": "The name of the DNS zone to be created. Must have at least 2 segements, e.g. hostname.org" + }, + "value": "azurequickstarts.net" + }, + "CNAMEs": { + "type": "array", + "metadata": { + "description": "object array for cname record values", + "sampleValue": { + "name": "name of the record", + "value": "record value", + "TTL": "TTL" + } + }, + "value": [ + { + "name": "awverify", + "value": "awverify.azurequickstarts-ci.azurewebsites.net", + "TTL": 3600 + }, + { + "name": "azurefd", + "value": "azurequickstarts.azurefd.net", + "TTL": 3600 + } + ] + }, + "As": { + "type": "array", + "metadata": { + "description": "object array for A record values", + "sampleValue": { + "name": "name of the record", + "value": "record value", + "TTL": "TTL" + } + }, + "value": [ + { + "name": "@", + "value": "parked", + "TTL": 600 + } + ] + }, + "TXTs": { + "type": "array", + "metadata": { + "description": "object array for TXT record values", + "sampleValue": { + "name": "name of the record", + "value": "record value", + "TTL": "TTL" + } + }, + "value": [ + { + "name": "asuid", + "value": "1069d9d92632db6a2bb724555d97c706466ebec660437cf46e564a79658ec322", + "TTL": 3600 + } + ] + }, + "principalId": { + "type": "string", + "metadata": { + "description": "The principalId of the limit service principal used to deploy templates" + }, + "value": "244790b2-d023-403d-8814-b4ecfe847e55" + } + }, + "variables": { + "DNSZoneContributor": "[subscriptionResourceId('Microsoft.Authorization/roleAssignments', 'befefa01-2a29-4197-83a8-272ff33ce314')]", + "roleAssignmentName": "[guid(parameters('principalId'), variables('DNSZoneContributor'), resourceId('Microsoft.Network/dnsZones', parameters('zoneName')))]" + }, + "resources": [ + { + "type": "Microsoft.Network/dnsZones", + "apiVersion": "2018-05-01", + "name": "azurequickstarts.net", + "location": "global", + "properties": {} + }, + { + "type": "Microsoft.Network/dnsZones/A", + "apiVersion": "2018-05-01", + "name": "[concat(parameters('zoneName'), '/', parameters('As')[copyIndex()].name)]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.net" + ], + "properties": { + "TTL": 3600, + "Arecords": [ + { + "ipv4Address": "As)[copyIndex(" + } + ] + } + }, + { + "type": "Microsoft.Network/dnszones/TXT", + "name": "[concat(parameters('zoneName'), '/', parameters('TXTs')[copyIndex()].name)]", + "apiVersion": "2016-04-01", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.net" + ], + "properties": { + "TTL": "TXTs)[copyIndex(", + "TXTRecords": [ + { + "value": [ + "TXTs)[copyIndex(" + ] + } + ] + } + }, + { + "type": "Microsoft.Network/dnszones/CNAME", + "name": "[concat(parameters('zoneName'),'/', parameters('CNAMEs')[copyIndex()].name)]", + "apiVersion": "2018-05-01", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.net" + ], + "properties": { + "TTL": "CNAMEs)[copyIndex(", + "CNAMERecord": { + "cname": "CNAMEs)[copyIndex(" + } + } + }, + { + "type": "Microsoft.Network/dnszones/CNAME", + "name": "[concat(parameters('zoneName'),'/', parameters('CNAMEs')[copyIndex()].name)]", + "apiVersion": "2018-05-01", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.net" + ], + "properties": { + "TTL": "CNAMEs)[copyIndex(", + "CNAMERecord": { + "cname": "CNAMEs)[copyIndex(" + } + } + }, + { + "scope": "Microsoft.Network/dnsZones/azurequickstarts.net", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2021-04-01-preview", + "name": "[guid(parameters('principalId'), variables('DNSZoneContributor'), resourceId('Microsoft.Network/dnsZones', parameters('zoneName')))]", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.net" + ], + "properties": { + "principalId": "244790b2-d023-403d-8814-b4ecfe847e55", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleAssignments', 'befefa01-2a29-4197-83a8-272ff33ce314')]", + "principalType": "ServicePrincipal" + } + } + ], + "outputs": { + "nameServers": { + "type": "array", + "value": "[reference(parameters('zoneName')).nameServers]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1823 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1823 new file mode 100644 index 0000000..feabaea --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1823 @@ -0,0 +1,189 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-gen-setup/azuredeploy.json", + "/test/ci-gen-setup/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962911626, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-gen-setup/azuredeploy.json", + "/test/ci-gen-setup/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1823", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.network/dnszones/txt", + "microsoft.network/dnszones/cname", + "microsoft.network/dnszones/a", + "microsoft.network/dnszones" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1823", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "zoneName": { + "type": "string", + "metadata": { + "description": "The name of the DNS zone to be created. Must have at least 2 segements, e.g. hostname.org" + }, + "value": "azurequickstarts.us" + }, + "CNAMEs": { + "type": "array", + "metadata": { + "description": "object array for cname record values", + "sampleValue": { + "name": "name of the record", + "value": "record value", + "TTL": "TTL" + } + }, + "value": [ + { + "name": "awverify", + "value": "awverify.azurequickstarts-ci.azurewebsites.us", + "TTL": 3600 + } + ] + }, + "As": { + "type": "array", + "metadata": { + "description": "object array for A record values", + "sampleValue": { + "name": "name of the record", + "value": "record value", + "TTL": "TTL" + } + }, + "value": [ + { + "name": "@", + "value": "parked", + "TTL": 600 + } + ] + }, + "TXTs": { + "type": "array", + "metadata": { + "description": "object array for TXT record values", + "sampleValue": { + "name": "name of the record", + "value": "record value", + "TTL": "TTL" + } + }, + "value": [] + }, + "principalId": { + "type": "string", + "metadata": { + "description": "The principalId of the limit service principal used to deploy templates" + }, + "value": "61408169-5ecb-4236-b154-d518d9d5b48b" + } + }, + "variables": { + "DNSZoneContributor": "[subscriptionResourceId('Microsoft.Authorization/roleAssignments', 'befefa01-2a29-4197-83a8-272ff33ce314')]", + "roleAssignmentName": "[guid(parameters('principalId'), variables('DNSZoneContributor'), resourceId('Microsoft.Network/dnsZones', parameters('zoneName')))]" + }, + "resources": [ + { + "type": "Microsoft.Network/dnsZones", + "apiVersion": "2018-05-01", + "name": "azurequickstarts.us", + "location": "global", + "properties": {} + }, + { + "type": "Microsoft.Network/dnsZones/A", + "apiVersion": "2018-05-01", + "name": "[concat(parameters('zoneName'), '/', parameters('As')[copyIndex()].name)]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.us" + ], + "properties": { + "TTL": 3600, + "Arecords": [ + { + "ipv4Address": "As)[copyIndex(" + } + ] + } + }, + { + "type": "Microsoft.Network/dnszones/TXT", + "name": "[concat(parameters('zoneName'), '/', parameters('TXTs')[copyIndex()].name)]", + "apiVersion": "2016-04-01", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.us" + ], + "copy": { + "name": "TXTs", + "count": 18 + }, + "properties": { + "TTL": "TXTs)[copyIndex(", + "TXTRecords": [ + { + "value": [ + "TXTs)[copyIndex(" + ] + } + ] + } + }, + { + "type": "Microsoft.Network/dnszones/CNAME", + "name": "[concat(parameters('zoneName'),'/', parameters('CNAMEs')[copyIndex()].name)]", + "apiVersion": "2018-05-01", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.us" + ], + "properties": { + "TTL": "CNAMEs)[copyIndex(", + "CNAMERecord": { + "cname": "CNAMEs)[copyIndex(" + } + } + }, + { + "scope": "Microsoft.Network/dnsZones/azurequickstarts.us", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2021-04-01-preview", + "name": "[guid(parameters('principalId'), variables('DNSZoneContributor'), resourceId('Microsoft.Network/dnsZones', parameters('zoneName')))]", + "dependsOn": [ + "Microsoft.Network/dnsZones/azurequickstarts.us" + ], + "properties": { + "principalId": "61408169-5ecb-4236-b154-d518d9d5b48b", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleAssignments', 'befefa01-2a29-4197-83a8-272ff33ce314')]", + "principalType": "ServicePrincipal" + } + } + ], + "outputs": { + "nameServers": { + "type": "array", + "value": "[reference(parameters('zoneName')).nameServers]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1824 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1824 new file mode 100644 index 0000000..8e149f5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1824 @@ -0,0 +1,57 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/azuredeploy.json" + ], + "timestamp": 1642962911633, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1824", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1824", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "storageaccount1", + "location": "westus", + "properties": { + "allowBlobPublicAccess": true + }, + "kind": "BlobStorage", + "sku": { + "name": "Premium_LRS", + "tier": "Premium" + } + } + ], + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.3.1.62928", + "templateHash": "3025564782961353398" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1825 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1825 new file mode 100644 index 0000000..7676554 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1825 @@ -0,0 +1,280 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/ModularTemplateWithMetadata.json" + ], + "timestamp": 1642962911639, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/ModularTemplateWithMetadata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1825", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1825", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "9115121651631511702" + } + }, + "parameters": { + "p1": { + "type": "string", + "metadata": { + "description": "p1 description" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "storageaccount1", + "location": "westus", + "properties": { + "allowBlobPublicAccess": true + }, + "kind": "BlobStorage", + "sku": { + "name": "Premium_LRS" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "storageaccount2", + "location": "westus", + "properties": { + "allowBlobPublicAccess": true + }, + "kind": "BlobStorage", + "sku": { + "name": "Premium_LRS" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "myModule1a", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "5474452053819879537" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "mymodule2", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "p2": { + "value": "p2 value" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "3990766577472747049" + } + }, + "parameters": { + "p2": { + "type": "string", + "metadata": { + "description": "p2 description" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2021-03-01", + "name": "name", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "containername", + "properties": { + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "ports": [ + { + "port": 80 + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 4 + } + } + } + } + ], + "restartPolicy": "OnFailure", + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "TCP", + "port": 80 + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "myModule1b", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "5474452053819879537" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "mymodule2", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "p2": { + "value": "p2 value" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "3990766577472747049" + } + }, + "parameters": { + "p2": { + "type": "string", + "metadata": { + "description": "p2 description" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2021-03-01", + "name": "name", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "containername", + "properties": { + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "ports": [ + { + "port": 80 + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 4 + } + } + } + } + ], + "restartPolicy": "OnFailure", + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "TCP", + "port": 80 + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1826 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1826 new file mode 100644 index 0000000..f87abb8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1826 @@ -0,0 +1,245 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/ModularTemplateWithoutMetadata.json" + ], + "timestamp": 1642962911645, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/ModularTemplateWithoutMetadata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1826", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1826", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "p1": { + "type": "string", + "metadata": { + "description": "p1 description" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "storageaccount1", + "location": "westus", + "properties": { + "allowBlobPublicAccess": true + }, + "kind": "BlobStorage", + "sku": { + "name": "Premium_LRS" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "storageaccount2", + "location": "westus", + "properties": { + "allowBlobPublicAccess": true + }, + "kind": "BlobStorage", + "sku": { + "name": "Premium_LRS" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "myModule1a", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "mymodule2", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "p2": { + "value": "p2 value" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "p2": { + "type": "string", + "metadata": { + "description": "p2 description" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2021-03-01", + "name": "name", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "containername", + "properties": { + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "ports": [ + { + "port": 80 + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 4 + } + } + } + } + ], + "restartPolicy": "OnFailure", + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "TCP", + "port": 80 + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "myModule1b", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "mymodule2", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "p2": { + "value": "p2 value" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "p2": { + "type": "string", + "metadata": { + "description": "p2 description" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2021-03-01", + "name": "name", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "containername", + "properties": { + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "ports": [ + { + "port": 80 + } + ], + "resources": { + "requests": { + "cpu": 1, + "memoryInGB": 4 + } + } + } + } + ], + "restartPolicy": "OnFailure", + "osType": "Linux", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "TCP", + "port": 80 + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1827 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1827 new file mode 100644 index 0000000..eec0d56 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1827 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithMetadata.json" + ], + "timestamp": 1642962911653, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithMetadata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1827", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1827", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "2333945456711793166" + } + }, + "parameters": { + "p1": { + "type": "string", + "metadata": { + "description": "p1 description" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "storageaccount1", + "location": "westus", + "properties": { + "allowBlobPublicAccess": true + }, + "kind": "BlobStorage", + "sku": { + "name": "Premium_LRS" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1828 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1828 new file mode 100644 index 0000000..6b73ddb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1828 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithMetadataWithChanges.json" + ], + "timestamp": 1642962911658, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithMetadataWithChanges.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1828", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1828", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "2333945456711793166" + } + }, + "parameters": { + "p1": { + "type": "string", + "metadata": { + "description": "p1 description - THIS IS A CHANGE !!!!!!!!!!!!!!!!!!!!!!!" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "storageaccount1", + "location": "westus", + "properties": { + "allowBlobPublicAccess": true + }, + "kind": "BlobStorage", + "sku": { + "name": "Premium_LRS" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1829 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1829 new file mode 100644 index 0000000..116d93c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1829 @@ -0,0 +1,57 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithoutMetadata.json" + ], + "timestamp": 1642962911664, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/get-template-hash-tests/TemplateWithoutMetadata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1829", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1829", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "p1": { + "type": "string", + "metadata": { + "description": "p1 description" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "storageaccount1", + "location": "westus", + "properties": { + "allowBlobPublicAccess": true + }, + "kind": "BlobStorage", + "sku": { + "name": "Premium_LRS" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT183 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT183 new file mode 100644 index 0000000..fb3689d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT183 @@ -0,0 +1,204 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/vnet-new.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "timestamp": 1642962889955, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-client-server/vnet-new.json", + "/application-workloads/intel-lustre/intel-lustre-client-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT183", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT183", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the Lustre nodes" + }, + "value": "Japan East" + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "Virtual Network name (e.g. vnet-lustre)" + }, + "value": "vnettest" + }, + "vnetResourceGroup": { + "type": "string", + "metadata": { + "description": "Virtual Network Resource Group" + } + }, + "vnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Virtual Network Address Prefix (i.e. CIDR)" + } + }, + "subnetServersName": { + "type": "string", + "metadata": { + "description": "Lustre servers will be deployed into this subnet within the Virtual Network" + } + }, + "subnetServersAddressPrefix": { + "type": "string", + "metadata": { + "description": "Virtual Network Lustre Servers subnet Address Prefix (i.e. CIDR)" + } + }, + "subnetClientsName": { + "type": "string", + "metadata": { + "description": "Lustre clients can be deployed into this subnet within the Virtual Network" + } + }, + "subnetClientsAddressPrefix": { + "type": "string", + "metadata": { + "description": "Virtual Network Lustre Clients subnet Address Prefix (i.e. CIDR)" + } + }, + "artifactsBaseUrl": { + "value": "https://raw.githubusercontent.com/lustrehpc/azure-quickstart-templates/master/101-lustre-client-server-create" + }, + "adminUsername": { + "value": "azureuser" + }, + "dnsNamePrefix": { + "value": "uniqdnsname" + }, + "existingSubnetClientsName": { + "value": "subnet-lustre-clients" + }, + "clientlocation": { + "value": "Japan East" + }, + "clientadminUsername": { + "value": "azureclientuser" + }, + "dnsNamePrefixForClient": { + "value": "clntdnsname" + } + }, + "variables": { + "subnetNetworkSecurityGroupName": "vnettest-nsg", + "vnetID": "vnetResourceGroup/Microsoft.Network/virtualNetworks/vnettest" + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "vnettest-nsg", + "location": "Japan East", + "properties": { + "securityRules": [ + { + "name": "ssh_rule", + "properties": { + "description": "Allow SSH access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "http_rule", + "properties": { + "description": "Allow HTTP access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "https_rule", + "properties": { + "description": "Allow HTTPS access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnettest", + "location": "Japan East", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/vnettest-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "vnetAddressPrefix" + ] + }, + "subnets": [ + { + "name": "subnetServersName", + "properties": { + "addressPrefix": "subnetServersAddressPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vnettest-nsg" + } + } + }, + { + "name": "subnetClientsName", + "properties": { + "addressPrefix": "subnetClientsAddressPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vnettest-nsg" + } + } + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1830 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1830 new file mode 100644 index 0000000..e6b5011 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1830 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/ci-tests/data/validate-deploymentfile-tests/json-success/azuredeploy.json" + ], + "timestamp": 1642962911679, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/ci-tests/data/validate-deploymentfile-tests/json-success/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1830", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1830", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "functions": [], + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1831 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1831 new file mode 100644 index 0000000..8262f51 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT1831 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/test/pipeline/azuredeploy.json" + ], + "timestamp": 1642962911688, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/test/pipeline/azuredeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1831", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT1831", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin usernanme" + } + }, + "adminPassword": { + "type": "SecureString", + "metadata": { + "description": "Secure adminPassword" + } + }, + "managedDiskId": { + "type": "string", + "metadata": { + "description": "resourceId of the disk to use for the VMSS, must be in the same location as the vmss" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location of the managedDisk and the resources deployed in the template." + } + }, + "agentPoolprefix": { + "type": "string", + "metadata": { + "description": "Naming prefix for the vmss" + } + } + }, + "variables": { + "vnetName": "[format('agent-pool-vnet-{0}', parameters('location'))]", + "subnetName": "[format('agent-pool-subnet-{0}', parameters('location'))]", + "vmssName": "[format('{0}-{1}', parameters('agentPoolprefix'), parameters('location'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "[format('agent-pool-vnet-{0}', parameters('location'))]", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[format('agent-pool-subnet-{0}', parameters('location'))]", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "[format('{0}-{1}', parameters('agentPoolprefix'), parameters('location'))]", + "location": "location", + "dependsOn": [ + "[format('agent-pool-vnet-{0}', parameters('location'))]" + ], + "sku": { + "name": "Standard_D2s_v3", + "capacity": 2 + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadOnly", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "id": "managedDiskId" + } + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "agent-nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "agent-ip-config", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[format('agent-pool-vnet-{0}', parameters('location'))]/[format('agent-pool-subnet-{0}', parameters('location'))]" + } + } + } + ] + } + } + ] + }, + "osProfile": { + "computerNamePrefix": "agentPoolprefix", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + } + }, + "singlePlacementGroup": false, + "platformFaultDomainCount": 1 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT184 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT184 new file mode 100644 index 0000000..39d8ffb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT184 @@ -0,0 +1,100 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/prereqs/prereq.azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962889975, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/prereqs/prereq.azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT184", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT184", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "subnetName": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "addressPrefixes": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ] + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "vnetName": "GEN-UNIQUEvnet", + "subnetName": "GEN-UNIQUEvnet" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "GEN-UNIQUEvnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUEvnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "[variables('vnetName')]" + }, + "subnetName": { + "type": "string", + "value": "[variables('subnetName')]" + }, + "resourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT185 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT185 new file mode 100644 index 0000000..f89f449 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT185 @@ -0,0 +1,378 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962890000, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT185", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT185", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageSku": { + "type": "string", + "defaultValue": "8.0", + "metadata": { + "description": "OpenLogic CentOS version to use" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for the virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the VM" + }, + "value": "GEN-PASSWORD" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Authentication type for the virtual machines" + } + }, + "sshPublicKey": { + "type": "string", + "metadata": { + "description": "SSH public key that will be included on all nodes. The OpenSSH public key can be generated with tools like ssh-keygen on Linux or OS X." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Globally unique DNS name prefix name must be between 3 and 50 characters long and can contain only dashes, numbers, and lowercase letters. The domain name suffix (e.g. westus.cloudapp.zure.com) will be automatically updated based on the selected location." + }, + "value": "GEN-UNIQUE" + }, + "clientAvailabilitySetName": { + "type": "string", + "defaultValue": "availset-lustre-clients", + "metadata": { + "description": "Lustre clients availability set name is important for grouping clients into deployments that can communicate with each other via RDMA" + } + }, + "vmNamePrefix": { + "type": "string", + "metadata": { + "description": "Prefix for the virtual machine names" + }, + "value": "GEN-UNIQUE" + }, + "clientVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Lustre client VM" + } + }, + "clientCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Lustre clients" + } + }, + "filesystemName": { + "type": "string", + "defaultValue": "lustre", + "metadata": { + "description": "Name of the Lustre filesystem exposed by the Lustre MGS node" + } + }, + "mgsIpAddress": { + "type": "string", + "defaultValue": "10.1.0.4", + "metadata": { + "description": "IP address of the Lustre MGS node" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage account type (e.g. Premium_LRS or Standard_LRS). Make sure to select Premium_LRS only when using DS-series or GS-series Virtual Machines." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location for the resources" + } + }, + "existingVnetResourceGroupName": { + "type": "string", + "metadata": { + "description": "Existing Virtual Network Resource Group where Lustre servers are deployed" + }, + "value": "GET-PREREQ-resourceGroupName" + }, + "existingVnetName": { + "type": "string", + "metadata": { + "description": "Existing Virtual Network name (e.g. vnet-lustre)" + }, + "value": "GET-PREREQ-vnetName" + }, + "existingSubnetClientsName": { + "type": "string", + "metadata": { + "description": "Lustre clients will be deployed into this subnet within the existing Virtual Network" + }, + "value": "GET-PREREQ-subnetName" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storage')]", + "osType": { + "publisher": "openlogic", + "offer": "CentOS", + "sku": "8.0", + "version": "latest" + }, + "clientAvailabilitySetSettings": { + "name": "availset-lustre-clients", + "faultDomainCount": "2", + "updateDomainCount": "3" + }, + "scriptUrlLustreClient": "[uri(parameters('_artifactsLocation'), concat('lustre_client.sh', parameters('_artifactsLocationSasToken')))]", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "(clientAvailabilitySetSettings).name", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": "(clientAvailabilitySetSettings).faultDomainCount", + "platformUpdateDomainCount": "(clientAvailabilitySetSettings).updateDomainCount" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUEclient0", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUEclient0", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUEclient0" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUEclient0" + }, + "subnet": { + "id": "GET-PREREQ-resourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-subnetName" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(parameters('vmNamePrefix'), 'client', copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "clientNicCopy", + "count": "[sub(parameters('clientCount'),1)]" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "GET-PREREQ-resourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-subnetName" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUEclientcopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('clientAvailabilitySetSettings').name)]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(parameters('vmNamePrefix'), 'client', copyIndex()))]" + ], + "copy": { + "name": "clientVmCopy", + "count": 2 + }, + "tags": { + "LustreType": "client" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/(clientAvailabilitySetSettings).name" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUEclientcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "openlogic", + "offer": "CentOS", + "sku": "8.0", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUEclientcopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUEclientcopyIndex()" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUEclientcopyIndex()/init", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUEclientcopyIndex()" + ], + "copy": { + "name": "clientExtensionsCopy", + "count": 2 + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('lustre_client.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('bash lustre_client.sh -n CLIENTCENTOS', parameters('imageSku'), ' -i ', copyIndex(), ' -d 0', ' -m ', parameters('mgsIpAddress'), ' -l ', reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vmNamePrefix'), 'client', copyIndex()))).ipConfigurations[0].properties.privateIPAddress, ' -f ', parameters('filesystemName'))]" + } + } + } + ], + "outputs": { + "client0DomainName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmNamePrefix'),'client0'))).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT186 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT186 new file mode 100644 index 0000000..00b4465 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT186 @@ -0,0 +1,422 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-vmss-centos/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-vmss-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962890133, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/intel-lustre/intel-lustre-clients-vmss-centos/azuredeploy.json", + "/application-workloads/intel-lustre/intel-lustre-clients-vmss-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT186", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT186", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "8.0", + "allowedValues": [ + "6.6", + "7.0", + "8.0" + ], + "metadata": { + "description": "OpenLogic CentOS version to use" + } + }, + "vmssName": { + "type": "string", + "defaultValue": "lustre", + "metadata": { + "description": "String used as a base for naming resources (9 characters or less). A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 9 + }, + "adminUsername": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Admin username for the virtual machines, optional when scaling and existing vmss" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Authentication type for the virtual machines" + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Admin password or SSH public key for the virtual machines, optional when scaling and existing vmss" + }, + "value": "GEN-PASSWORD" + }, + "clientVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Lustre client VM" + } + }, + "clientCount": { + "type": "int", + "defaultValue": 2, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of Lustre client instances" + } + }, + "filesystemName": { + "type": "string", + "defaultValue": "lustre", + "metadata": { + "description": "Name of the Lustre filesystem exposed by the Lustre MGS node" + } + }, + "mgsIpAddress": { + "type": "string", + "defaultValue": "10.1.0.4", + "metadata": { + "description": "IP address of the Lustre MGS node" + } + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Specifies whether to use a new or existing vnet" + } + }, + "vnetResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Existing Virtual Network Resource Group where Lustre servers are deployed" + } + }, + "vnetName": { + "type": "string", + "defaultValue": "vnet-lustre", + "metadata": { + "description": "Existing Virtual Network name (e.g. vnet-lustre)" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet-lustre-clients", + "metadata": { + "description": "Lustre clients will be deployed into this subnet within the existing Virtual Network" + } + }, + "addressPrefixes": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "Address prefix of the virtual network" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix of the virtual network" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "NewOrScaleExisting": { + "type": "string", + "defaultValue": "Deploy New ScaleSet", + "allowedValues": [ + "Deploy New ScaleSet", + "Scale Existing VMSS" + ], + "metadata": { + "description": "Determines whether to deploy a new instance or scale and existing scale set up or down." + } + } + }, + "variables": { + "publicIPAddressName": "lustrepip", + "loadBalancerName": "lustrelb", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/lustrepip", + "natPoolName": "lustrenatpool", + "bePoolName": "lustrebepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 22, + "nicName": "lustrenic", + "ipConfigName": "lustreipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/lustrelb/loadBalancerFrontEnd", + "osType": { + "publisher": "openlogic", + "offer": "CentOS", + "sku": "8.0", + "version": "latest" + }, + "imageReference": { + "publisher": "openlogic", + "offer": "CentOS", + "sku": "8.0", + "version": "latest" + }, + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "subnetClientsID": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/vnet-lustre/subnet-lustre-clients", + "scriptUrlLustreClient": "[uri(parameters('_artifactsLocation'), concat('lustre_client.sh', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "vnet-lustre", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-lustre-clients", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "name": "lustrepip", + "location": "[resourceGroup().location]", + "apiVersion": "2019-11-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('vmss-',parameters('vmssName'),'-',uniqueString(resourceGroup().id))]" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/loadBalancers", + "name": "lustrelb", + "location": "[resourceGroup().location]", + "apiVersion": "2019-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/lustrepip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lustrepip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "lustrebepool" + } + ], + "inboundNatPools": [ + { + "name": "lustrenatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/lustrelb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 22 + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[if(equals(parameters('NewOrScaleExisting'), 'Deploy New ScaleSet'), parameters('vmssName'), 'none')]", + "location": "[resourceGroup().location]", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers/lustrelb" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "openlogic", + "offer": "CentOS", + "sku": "8.0", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "lustre", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "lustrenic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "lustreipconfig", + "properties": { + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/vnet-lustre/subnet-lustre-clients" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lustrelb/lustrebepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/lustrelb/lustrenatpool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "lustre_client", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('lustre_client.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash lustre_client.sh -n CLIENTCENTOS8.0 -i 0 -d 0 -m 10.1.0.4 -l 0.0.0.0 -f lustre" + } + } + } + ] + } + }, + "overprovision": true + } + }, + { + "condition": false, + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2019-12-01", + "name": "[if(equals(parameters('NewOrScaleExisting'), 'Scale Existing VMSS'), parameters('vmssName'), 'none')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + } + } + ], + "outputs": { + "fqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName')), '2019-11-01').dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT187 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT187 new file mode 100644 index 0000000..999dfcd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT187 @@ -0,0 +1,689 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/iomad/iomad-cluster-ubuntu/azuredeploy.json", + "/application-workloads/iomad/iomad-cluster-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890154, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/iomad/iomad-cluster-ubuntu/azuredeploy.json", + "/application-workloads/iomad/iomad-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT187", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT187", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine administrator. Do not use simple names such as 'admin'." + }, + "value": "GEN-UNIQUE-8" + }, + "mySqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL 'root' admin user." + }, + "value": "GEN-PASSWORD" + }, + "fullNameOfSite": { + "type": "string", + "metadata": { + "description": "Full name of the IOMAD site displayed in the UI." + }, + "value": "fullNameOfSite" + }, + "shortNameOfSite": { + "type": "string", + "metadata": { + "description": "Short name of the IOMAD site." + }, + "value": "shortNameOfSite" + }, + "iomadAdminUsername": { + "type": "string", + "metadata": { + "description": "User name for the IOMAD site administrator." + }, + "value": "GEN-UNIQUE-8" + }, + "iomadAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the IOMAD site administrator." + }, + "value": "GEN-PASSWORD" + }, + "iomadAdminEmail": { + "type": "string", + "metadata": { + "description": "Email for the IOMAD site administrator. It should be in the correct email address format such as: abc@xyz.com" + }, + "value": "abc@xyz.com" + }, + "uniqueNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "webVMCount": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "Number of web front end VMs to create." + }, + "value": 1 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of each web front end VM." + }, + "value": "Standard_D2_v3" + }, + "vmSizeDB": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the database backend VM." + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "newStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'iomad')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "14.04.5-LTS", + "nicName": "GEN-UNIQUE-8Nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetNameDB": "SubnetDB", + "subnetPrefixDB": "10.0.1.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUE-8IP", + "publicDBIPAddressName": "GEN-UNIQUE-8DBIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-8VM", + "virtualNetworkName": "GEN-UNIQUE-8VNet", + "availabilitySetName": "GEN-UNIQUE-8AvSet", + "lbName": "GEN-UNIQUE-8LB", + "SharedAzureFileName": "iomadfileshare", + "installFrontendScriptName": "install_frontend.sh", + "installFrontendScriptUri": "[uri(parameters('_artifactsLocation'), concat(variables('installFrontendScriptName'), parameters('_artifactsLocationSasToken')))]", + "installFrontendCommand": "[concat('sh ', variables('installFrontendScriptName'), ' ', parameters('mySqlPassword'), ' ', variables('newStorageAccountName'), ' ', variables('SharedAzureFileName'))]", + "installBackendScriptName": "install_backend.sh", + "installBackendScriptUri": "[uri(parameters('_artifactsLocation'), concat(variables('installBackendScriptName'), parameters('_artifactsLocationSasToken')))]", + "installBackendCommand": "[concat('sh ', variables('installBackendScriptName'), ' ', parameters('mySqlPassword'), ' ', variables('newStorageAccountName'), ' ', variables('SharedAzureFileName'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "GEN-UNIQUE-8AvSet", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8VNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "SubnetDB", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8NiccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8VNet", + "Microsoft.Network/loadBalancers//GEN-UNIQUE-8LB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8LB/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUE-8LB/Web-VMcopyindex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUE-8LB/SSH-VMcopyindex()" + } + ] + } + } + ] + }, + "copy": { + "name": "networkInterfacesCopy", + "count": 1 + } + }, + { + "apiVersion": "2020-05-01", + "name": "GEN-UNIQUE-8LB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8IP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8IP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ], + "inboundNatRules": [ + { + "name": "Web-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8080, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2200, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "Web-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8081, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2201, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "Web-VM2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8082, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2202, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "Web-VM3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8083, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2203, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "Web-VM4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8084, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2204, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8LB/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-8LB/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": "5", + "numberOfProbes": "2" + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VMcopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/',variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('nicName'), copyIndex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/',variables('availabilitySetName'))]", + "[resourceId('Microsoft.Compute/virtualMachines/extensions', concat(variables('vmName'),'db'),'newuserscript')]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE-8AvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VMcopyIndex()", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VMcopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8NiccopyIndex()" + } + ] + } + }, + "copy": { + "name": "virtualMachinesCopy", + "count": 1 + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VMcopyIndex()/newuserscript", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VMcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installFrontendScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat(variables('installFrontendCommand'), ' ',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('newStorageAccountName')), '2016-01-01').keys[0].value, ' ',reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName')),'2015-06-15').dnsSettings.fqdn, ' ',reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicDBIPAddressName')),'2015-06-15').dnsSettings.fqdn, ' ',parameters('fullNameOfSite'), ' ',parameters('shortNameOfSite'), ' ',parameters('iomadAdminUsername'), ' ',parameters('iomadAdminPassword'), ' ',parameters('iomadAdminEmail'))]" + } + }, + "copy": { + "name": "extensionsCopy", + "count": 1 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "GEN-UNIQUE-8AvSetdb", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8DBIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8db" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8Nicdb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8DBIP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8VNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigdb", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8DBIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/SubnetDB" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VMdb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('nicName'),'db'))]", + "[resourceId('Microsoft.Compute/availabilitySets/', concat(variables('availabilitySetName'),'db'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE-8AvSetdb" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VMdb", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VMdb_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8Nicdb" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VMdb/newuserscript", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VMdb" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installBackendScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat(variables('installBackendCommand'), ' ',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('newStorageAccountName')), '2016-01-01').keys[0].value)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT188 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT188 new file mode 100644 index 0000000..b1d73fe --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT188 @@ -0,0 +1,266 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/iomad/iomad-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/iomad/iomad-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890182, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/iomad/iomad-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/iomad/iomad-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT188", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT188", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine administrator. Do not use simple names such as 'admin'." + }, + "value": "GEN-UNIQUE-8" + }, + "uniqueNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-10" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3" + ], + "metadata": { + "description": "The size of the VM." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "newStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'iomad')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "14.04.5-LTS", + "nicName": "GEN-UNIQUE-10Nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUE-10IP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-10VM", + "virtualNetworkName": "GEN-UNIQUE-10VNet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-10VNet/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-04-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-10IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-10VNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-10Nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceid('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[resourceid('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10IP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-10VNet/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-10VM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceid('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", + "[resourceid('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10VM", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-10VM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10Nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-10VM/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceid('Microsoft.Compute/virtualMachines/', variables('vmName'))]" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_lamp_iomad.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_lamp_iomad.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT189 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT189 new file mode 100644 index 0000000..8bfa141 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT189 @@ -0,0 +1,565 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jboss/jboss-eap-clustered-multivm-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-clustered-multivm-rhel/azuredeploy.parameters.json" + ], + "timestamp": 1642962890232, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jboss/jboss-eap-clustered-multivm-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-clustered-multivm-rhel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT189", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT189", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine" + } + }, + "adminPasswordOrSSHKey": { + "type": "securestring", + "metadata": { + "description": "Password or SSH key for the Virtual Machine" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "eapOnRHELVersion": { + "type": "string", + "defaultValue": "JBoss-EAP7.3-on-RHEL8.4", + "allowedValues": [ + "JBoss-EAP7.3-on-RHEL8.4", + "JBoss-EAP7.4-on-RHEL8.4" + ], + "metadata": { + "description": "Version of EAP on RHEL" + } + }, + "jbossEAPUserName": { + "type": "string", + "metadata": { + "description": "User name for the JBoss EAP Manager" + }, + "value": "GEN-UNIQUE" + }, + "jbossEAPPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the JBoss EAP Manager" + }, + "value": "GEN-PASSWORD" + }, + "rhelOSLicenseType": { + "type": "string", + "defaultValue": "PAYG", + "allowedValues": [ + "PAYG", + "BYOS" + ], + "metadata": { + "description": "Select the of RHEL OS License Type for deploying your Virtual Machine. Please read through the guide and make sure you follow the steps mentioned under section 'Licenses, Subscriptions and Costs' if you are selecting BYOS" + } + }, + "rhsmUserName": { + "type": "string", + "metadata": { + "description": "User name for Red Hat subscription Manager" + }, + "value": "GEN-UNIQUE" + }, + "rhsmPassword": { + "type": "securestring", + "metadata": { + "description": "Password for Red Hat subscription Manager" + }, + "value": "GEN-PASSWORD" + }, + "rhsmPoolEAP": { + "type": "string", + "metadata": { + "description": "Red Hat Subscription Manager Pool ID (Should have EAP entitlement)" + }, + "value": "GEN-UNIQUE" + }, + "rhsmPoolRHEL": { + "type": "string", + "metadata": { + "description": "Red Hat Subscription Manager Pool ID (Should have RHEL entitlement). Mandartory if you select the BYOS RHEL OS License Type" + }, + "defaultValue": "" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "storageReplication": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Select the Replication Strategy for the Storage account" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_E2S_v3", + "Standard_E4S_v3", + "Standard_E8S_v3", + "Standard_F2S_v2", + "Standard_F4S_v2", + "Standard_F8S_v2" + ], + "metadata": { + "description": "The size of the Virtual Machine" + } + }, + "numberOfInstances": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of VMs to deploy" + } + } + }, + "variables": { + "containerName": "eapblobcontainer", + "loadBalancersName": "jbosseap-lb", + "vmNameMap": { + "BYOS": "jbosseap-byos-server", + "PAYG": "jbosseap-payg-server" + }, + "vmName": "(vmNameMap)[parameters(rhelOSLicenseType)]", + "asName": "jbosseap-as", + "skuName": "Aligned", + "nicName": "jbosseap-server-nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "jbosseap-server-subnet", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "jbosseap-vnet", + "backendPoolName": "jbosseap-server", + "frontendName": "LoadBalancerFrontEnd", + "healthProbeEAP": "eap-jboss-health", + "healthProbeAdmin": "eap-admin-health", + "bootStorageAccountName": "[concat('bootstrg', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "imageSku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "offerMap": { + "BYOS": "rhel-byos", + "PAYG": "rhel" + }, + "imageOffer": "(offerMap)[parameters(rhelOSLicenseType)]", + "imageReference": { + "publisher": "redhat", + "offer": "(offerMap)[parameters(rhelOSLicenseType)]", + "sku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "version": "latest" + }, + "plan": { + "name": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "publisher": "redhat", + "product": "rhel-byos" + }, + "guidMap": { + "JBoss-EAP7.3-on-RHEL8.4": "pid-43604955-685a-4680-bfb0-5bf4ced404c0", + "JBoss-EAP7.4-on-RHEL8.4": "pid-9c48eb09-c7f5-4cc1-9ee5-033abb031ff0" + }, + "guid": "(guidMap)[parameters(eapOnRHELVersion)]", + "storageAccountName": "[concat('jbosstrg', uniqueString(resourceGroup().id))]", + "scriptFolder": "scripts", + "fileToBeDownloaded": "eap-session-replication.war", + "scriptArgs": "[concat('-a ', uri(parameters('_artifactsLocation'), '.'), ' -t \"', parameters('_artifactsLocationSasToken'), '\" -p ', variables('scriptFolder'), ' -f ', variables('fileToBeDownloaded'))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "name": "(guidMap)[parameters(eapOnRHELVersion)]", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('bootStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, multi-VM)" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "jbosseap-vnet", + "location": "[resourceGroup().location]", + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, multi-VM)" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "jbosseap-server-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "name": "jbosseap-server-niccopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "jbosseap-vnet", + "jbosseap-lb" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, multi-VM)" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/jbosseap-vnet/jbosseap-server-subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/jbosseap-lb/jbosseap-server" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vmNameMap)[parameters(rhelOSLicenseType)]copyIndex()", + "location": "[resourceGroup().location]", + "plan": "[if(equals(parameters('rhelOSLicenseType'),'PAYG'), json('null'), variables('plan'))]", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "nicLoop", + "[variables('storageAccountName')]", + "[variables('asName')]", + "[variables('bootStorageAccountName')]" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, multi-VM)" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/jbosseap-as" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jbosseap-server-niccopyIndex()" + } + ] + }, + "osProfile": { + "computerName": "(vmNameMap)[parameters(rhelOSLicenseType)]copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "redhat", + "offer": "(offerMap)[parameters(rhelOSLicenseType)]", + "sku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "version": "latest" + } + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('bootStorageAccountName'), '2021-02-01').primaryEndpoints['blob']]" + } + } + }, + "resources": [ + { + "type": "extensions", + "apiVersion": "2020-12-01", + "name": "jbosseap-setup-extension-copyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/(vmNameMap)[parameters(rhelOSLicenseType)]copyIndex()" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, multi-VM)" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/jbosseap-setup-redhat.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('sh jbosseap-setup-redhat.sh {0} {1} ''{2}'' {3} {4} ''{5}'' {6} {7} {8} {9} {10} {11}', variables('scriptArgs'), parameters('jbossEAPUserName'), parameters('jbossEAPPassword'), parameters('rhelOSLicenseType'), parameters('rhsmUserName'), parameters('rhsmPassword'), parameters('rhsmPoolEAP'), variables('storageAccountName'), variables('containerName'), base64(listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-02-01').keys[0].value), parameters('eapOnRHELVersion'), parameters('rhsmPoolRHEL'))]" + } + } + } + ] + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-07-01", + "name": "jbosseap-lb", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "dependsOn": [ + "jbosseap-vnet" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, multi-VM)" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv4", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/jbosseap-vnet/jbosseap-server-subnet" + } + } + } + ], + "backendAddressPools": [ + { + "name": "jbosseap-server" + } + ], + "loadBalancingRules": [ + { + "name": "jbosseap-lb-rule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/jbosseap-lb/LoadBalancerFrontEnd" + }, + "frontendPort": 80, + "backendPort": 8080, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "protocol": "Tcp", + "enableTcpReset": false, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/jbosseap-lb/jbosseap-server" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/jbosseap-lb/eap-jboss-health" + } + } + }, + { + "name": "jbosseap-lb-rule2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/jbosseap-lb/LoadBalancerFrontEnd" + }, + "frontendPort": 9990, + "backendPort": 9990, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "protocol": "Tcp", + "enableTcpReset": false, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/jbosseap-lb/jbosseap-server" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/jbosseap-lb/eap-admin-health" + } + } + } + ], + "probes": [ + { + "name": "eap-jboss-health", + "properties": { + "protocol": "Tcp", + "port": 8080, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + }, + { + "name": "eap-admin-health", + "properties": { + "protocol": "Tcp", + "port": 9990, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2020-12-01", + "name": "jbosseap-as", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, multi-VM)" + }, + "properties": { + "platformUpdateDomainCount": 2, + "platformFaultDomainCount": 2 + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, multi-VM)" + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2021-02-01", + "name": "default/eapblobcontainer", + "dependsOn": [ + "[variables('storageAccountName')]" + ] + } + ] + } + ], + "outputs": { + "appURL": { + "type": "string", + "value": "[concat('http://', reference(variables('loadBalancersName')).frontendIPConfigurations[0].properties.privateIPAddress, '/eap-session-replication/')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT19 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT19 new file mode 100644 index 0000000..3fe4aef --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT19 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/vnet-with-dns-server.json" + ], + "timestamp": 1642962883464, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/vnet-with-dns-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT19", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT19", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "Description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "Description": "The address range of the new VNET in CIDR format" + }, + "defaultValue": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "Description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "Description": "The address range of the subnet created in the new VNET" + }, + "defaultValue": "10.0.0.0/24" + }, + "DNSServerAddress": { + "type": "array", + "metadata": { + "Description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + }, + "NSGName": { + "type": "string", + "metadata": { + "Description": "The name of an existing NSG to associate with the subnet" + } + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-05-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "dhcpOptions": { + "dnsServers": "DNSServerAddress" + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/NSGName" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT190 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT190 new file mode 100644 index 0000000..68dfaae --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT190 @@ -0,0 +1,523 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jboss/jboss-eap-clustered-vmss-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-clustered-vmss-rhel/azuredeploy.parameters.json" + ], + "timestamp": 1642962890295, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jboss/jboss-eap-clustered-vmss-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-clustered-vmss-rhel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT190", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/virtualnetworks", + "microsoft.compute/virtualmachinescalesets", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT190", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine" + } + }, + "adminPasswordOrSSHKey": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password or SSH key for the Virtual Machine" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "eapOnRHELVersion": { + "type": "string", + "defaultValue": "JBoss-EAP7.3-on-RHEL8.4", + "allowedValues": [ + "JBoss-EAP7.3-on-RHEL8.4", + "JBoss-EAP7.4-on-RHEL8.4" + ], + "metadata": { + "description": "Version of EAP on RHEL" + } + }, + "jbossEAPUserName": { + "type": "string", + "metadata": { + "description": "User name for the JBoss EAP Manager" + }, + "value": "GEN-UNIQUE" + }, + "jbossEAPPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the JBoss EAP Manager" + }, + "value": "GEN-PASSWORD" + }, + "rhelOSLicenseType": { + "type": "string", + "defaultValue": "PAYG", + "allowedValues": [ + "PAYG", + "BYOS" + ], + "metadata": { + "description": "Select the of RHEL OS License Type for deploying your Virtual Machine. Please read through the guide and make sure you follow the steps mentioned under section 'Licenses, Subscriptions and Costs' if you are selecting BYOS" + } + }, + "rhsmUserName": { + "type": "string", + "metadata": { + "description": "User name for Red Hat subscription Manager" + }, + "value": "GEN-UNIQUE" + }, + "rhsmPassword": { + "type": "securestring", + "metadata": { + "description": "Password for Red Hat subscription Manager" + }, + "value": "GEN-PASSWORD" + }, + "rhsmPoolEAP": { + "type": "string", + "metadata": { + "description": "Red Hat Subscription Manager Pool ID (Should have EAP entitlement)" + }, + "value": "GEN-UNIQUE" + }, + "rhsmPoolRHEL": { + "type": "string", + "metadata": { + "description": "Red Hat Subscription Manager Pool ID (Should have RHEL entitlement). Mandartory if you select the BYOS RHEL OS License Type" + }, + "defaultValue": "" + }, + "_artifactsLocation": { + "type": "string", + "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" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + }, + "defaultValue": "" + }, + "storageReplication": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_RAGRS" + ], + "metadata": { + "description": "Select the Replication Strategy for the Storage account" + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources (9 characters or less). A hash is prepended to this string for some resources, and resource-specific information is appended" + }, + "maxLength": 9, + "value": "GEN-UNIQUE-9" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)" + }, + "maxValue": 100, + "minValue": 2, + "defaultValue": 2 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_E2S_v3", + "Standard_E4S_v3", + "Standard_E8S_v3", + "Standard_F2S_v2", + "Standard_F4S_v2", + "Standard_F8S_v2" + ], + "metadata": { + "description": "The size of the Virtual Machine scale set" + } + } + }, + "variables": { + "containerName": "eapblobcontainer", + "loadBalancersName": "jbosseap-lb", + "vmssInstanceName": "jbosseap-serverGEN-UNIQUE-9", + "nicName": "jbosseap-server-nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "jbosseap-server-subnet", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "jbosseap-vnet", + "backendPoolName": "jbosseap-server", + "frontendName": "LoadBalancerFrontEnd", + "natRuleName": "adminconsolerule", + "natStartPort": 9000, + "natEndPort": 9120, + "adminBackendPort": 9990, + "healthProbe": "eap-lb-health", + "bootStorageAccountName": "[concat('bootstrg', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "imageSku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "offerMap": { + "BYOS": "rhel-byos", + "PAYG": "rhel" + }, + "imageOffer": "(offerMap)[parameters(rhelOSLicenseType)]", + "imageReference": { + "publisher": "redhat", + "offer": "(offerMap)[parameters(rhelOSLicenseType)]", + "sku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "version": "latest" + }, + "plan": { + "name": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "publisher": "redhat", + "product": "rhel-byos" + }, + "guidMap": { + "JBoss-EAP7.3-on-RHEL8.4": "pid-8c47eaba-ad48-4d3b-b2f8-9f69a44b57f5", + "JBoss-EAP7.4-on-RHEL8.4": "pid-92abde63-f331-4e50-96ca-e0e5c2339caa" + }, + "guid": "(guidMap)[parameters(eapOnRHELVersion)]", + "storageAccountName": "[concat('jbosstrg', uniqueString(resourceGroup().id))]", + "scriptFolder": "scripts", + "fileToBeDownloaded": "eap-session-replication.war", + "scriptArgs": "[concat('-a ', uri(parameters('_artifactsLocation'), '.'), ' -t \"', parameters('_artifactsLocationSasToken'), '\" -p ', variables('scriptFolder'), ' -f ', variables('fileToBeDownloaded'))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "name": "(guidMap)[parameters(eapOnRHELVersion)]", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('bootStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, VMSS)" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "jbosseap-vnet", + "location": "[resourceGroup().location]", + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, VMSS)" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "jbosseap-server-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "jbosseap-serverGEN-UNIQUE-9", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_D2s_v3", + "tier": "Standard", + "capacity": 2 + }, + "plan": "[if(equals(parameters('rhelOSLicenseType'),'PAYG'), json('null'), variables('plan'))]", + "dependsOn": [ + "[variables('loadBalancersName')]", + "[variables('virtualNetworkName')]", + "[variables('storageAccountName')]", + "[variables('bootStorageAccountName')]" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, VMSS)" + }, + "properties": { + "overprovision": "false", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "redhat", + "offer": "(offerMap)[parameters(rhelOSLicenseType)]", + "sku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "jbosseap-serverGEN-UNIQUE-9", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "jbosseap-server-nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/jbosseap-vnet/jbosseap-server-subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/jbosseap-lb/jbosseap-server" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/jbosseap-lb/adminconsolerule" + } + ] + } + } + ] + } + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('bootStorageAccountName'), '2021-02-01').primaryEndpoints['blob']]" + } + }, + "extensionProfile": { + "extensions": [ + { + "name": "jbosseap-setup-extension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/jbosseap-setup-redhat.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('sh jbosseap-setup-redhat.sh {0} {1} ''{2}'' {3} ''{4}'' {5} {6} {7} {8} {9} {10} {11}', variables('scriptArgs'), parameters('jbossEAPUserName'), parameters('jbossEAPPassword'), parameters('rhsmUserName'), parameters('rhsmPassword'), parameters('rhelOSLicenseType'), parameters('rhsmPoolEAP'), variables('storageAccountName'), variables('containerName'), base64(listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-02-01').keys[0].value), parameters('eapOnRHELVersion'), parameters('rhsmPoolRHEL'))]" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-07-01", + "name": "jbosseap-lb", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "dependsOn": [ + "jbosseap-vnet" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, VMSS)" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/jbosseap-vnet/jbosseap-server-subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "backendAddressPools": [ + { + "name": "jbosseap-server" + } + ], + "inboundNatPools": [ + { + "name": "adminconsolerule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/jbosseap-lb/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 9000, + "frontendPortRangeEnd": 9120, + "backendPort": 9990 + } + } + ], + "loadBalancingRules": [ + { + "name": "jbosseap-lb-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/jbosseap-lb/LoadBalancerFrontEnd" + }, + "frontendPort": 80, + "backendPort": 8080, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "protocol": "Tcp", + "enableTcpReset": false, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/jbosseap-lb/jbosseap-server" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/jbosseap-lb/eap-lb-health" + } + } + } + ], + "probes": [ + { + "name": "eap-lb-health", + "properties": { + "protocol": "Tcp", + "port": 8080, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "QuickstartName": "JBoss EAP on RHEL (clustered, VMSS)" + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2021-02-01", + "name": "default/eapblobcontainer", + "dependsOn": [ + "[variables('storageAccountName')]" + ] + } + ] + } + ], + "outputs": { + "appURL": { + "type": "string", + "value": "[concat('http://', reference(variables('loadBalancersName')).frontendIPConfigurations[0].properties.privateIPAddress, '/eap-session-replication/')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT191 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT191 new file mode 100644 index 0000000..42a0142 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT191 @@ -0,0 +1,390 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jboss/jboss-eap-standalone-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-standalone-rhel/azuredeploy.parameters.json" + ], + "timestamp": 1642962890308, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jboss/jboss-eap-standalone-rhel/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-standalone-rhel/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT191", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT191", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Linux VM user account name" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine" + } + }, + "adminPasswordOrSSHKey": { + "type": "securestring", + "metadata": { + "description": "Password or SSH key for the Virtual Machine" + }, + "value": "GEN-PASSWORD" + }, + "eapOnRHELVersion": { + "type": "string", + "defaultValue": "JBoss-EAP7.3-on-RHEL8.4", + "allowedValues": [ + "JBoss-EAP7.3-on-RHEL8.4", + "JBoss-EAP7.4-on-RHEL8.4" + ], + "metadata": { + "description": "Version of EAP on RHEL" + } + }, + "jbossEAPUserName": { + "type": "string", + "metadata": { + "description": "User name for JBoss EAP Manager" + }, + "value": "GEN-UNIQUE" + }, + "jbossEAPPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for JBoss EAP Manager" + }, + "value": "GEN-PASSWORD" + }, + "rhelOSLicenseType": { + "type": "string", + "defaultValue": "PAYG", + "allowedValues": [ + "PAYG", + "BYOS" + ], + "metadata": { + "description": "Select the of RHEL OS License Type for deploying your Virtual Machine. Please read through the guide and make sure you follow the steps mentioned under section 'Licenses, Subscriptions and Costs' if you are selecting BYOS" + } + }, + "rhsmUserName": { + "type": "string", + "metadata": { + "description": "User name for Red Hat subscription Manager" + }, + "value": "GEN-UNIQUE" + }, + "rhsmPassword": { + "type": "securestring", + "metadata": { + "description": "Password for Red Hat subscription Manager" + }, + "value": "GEN-PASSWORD" + }, + "rhsmPoolEAP": { + "type": "string", + "metadata": { + "description": "Red Hat Subscription Manager Pool ID (Should have EAP entitlement)" + }, + "value": "GEN-UNIQUE" + }, + "rhsmPoolRHEL": { + "type": "string", + "metadata": { + "description": "Red Hat Subscription Manager Pool ID (Should have RHEL entitlement). Mandartory if you select the BYOS RHEL OS License Type" + }, + "defaultValue": "" + }, + "_artifactsLocation": { + "type": "string", + "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" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_E2S_v3", + "Standard_E4S_v3", + "Standard_E8S_v3", + "Standard_F2S_v2", + "Standard_F4S_v2", + "Standard_F8S_v2" + ], + "metadata": { + "description": "The size of the Virtual Machine" + } + } + }, + "variables": { + "nicName": "jbosseap-server-nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "jbosseap-server-subnet", + "subnetPrefix": "10.0.0.0/24", + "vmNameMap": { + "BYOS": "jbosseap-byos-server", + "PAYG": "jbosseap-payg-server" + }, + "vmName": "(vmNameMap)[parameters(rhelOSLicenseType)]", + "virtualNetworkName": "jbosseap-vnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/jbosseap-vnet/jbosseap-server-subnet", + "bootStorageAccountName": "[concat('bootstrg', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "imageSku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "offerMap": { + "BYOS": "rhel-byos", + "PAYG": "rhel" + }, + "imageOffer": "(offerMap)[parameters(rhelOSLicenseType)]", + "imageReference": { + "publisher": "redhat", + "offer": "(offerMap)[parameters(rhelOSLicenseType)]", + "sku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "version": "latest" + }, + "plan": { + "name": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "publisher": "redhat", + "product": "rhel-byos" + }, + "guidMap": { + "JBoss-EAP7.3-on-RHEL8.4": "pid-32c5d1f7-1ff7-43fc-a113-a64831e5e32e", + "JBoss-EAP7.4-on-RHEL8.4": "pid-9a72dd7b-3568-469b-a84f-d953207f2a1a" + }, + "guid": "(guidMap)[parameters(eapOnRHELVersion)]", + "scriptFolder": "scripts", + "fileToBeDownloaded": "JBoss-EAP_on_Azure.war", + "scriptArgs": "[concat('-a ', uri(parameters('_artifactsLocation'), '.'), ' -t \"', parameters('_artifactsLocationSasToken'), '\" -p ', variables('scriptFolder'), ' -f ', variables('fileToBeDownloaded'))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "(guidMap)[parameters(eapOnRHELVersion)]", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[variables('bootStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "QuickstartName": "JBoss EAP on RHEL (stand-alone VM)" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "jbosseap-vnet", + "location": "[resourceGroup().location]", + "tags": { + "QuickstartName": "JBoss EAP on RHEL (stand-alone VM)" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "jbosseap-server-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-11-01", + "name": "jbosseap-server-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "jbosseap-vnet" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (stand-alone VM)" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/jbosseap-vnet/jbosseap-server-subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "(vmNameMap)[parameters(rhelOSLicenseType)]", + "location": "[resourceGroup().location]", + "plan": "[if(equals(parameters('rhelOSLicenseType'),'PAYG'), json('null'), variables('plan'))]", + "dependsOn": [ + "[variables('nicName')]", + "[variables('bootStorageAccountName')]" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (stand-alone VM)" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "(vmNameMap)[parameters(rhelOSLicenseType)]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "osDisk": { + "name": "(vmNameMap)[parameters(rhelOSLicenseType)]_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "redhat", + "offer": "(offerMap)[parameters(rhelOSLicenseType)]", + "sku": "[if(equals(parameters('rhelOSLicenseType'), 'PAYG'), '8_4', 'rhel-lvm84')]", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jbosseap-server-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('bootStorageAccountName'), '2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-06-01", + "name": "(vmNameMap)[parameters(rhelOSLicenseType)]/jbosseap-setup-extension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "(vmNameMap)[parameters(rhelOSLicenseType)]" + ], + "tags": { + "QuickstartName": "JBoss EAP on RHEL (stand-alone VM)" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/jbosseap-setup-redhat.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('sh jbosseap-setup-redhat.sh {0} {1} ''{2}'' {3} ''{4}'' {5} {6} {7} {8}', variables('scriptArgs'), parameters('jbossEAPUserName'), parameters('jbossEAPPassword'), parameters('rhsmUserName'), parameters('rhsmPassword'), parameters('rhelOSLicenseType'), parameters('rhsmPoolEAP'), parameters('eapOnRHELVersion'), parameters('rhsmPoolRHEL'))]" + } + } + } + ], + "outputs": { + "vm Private IP Address": { + "type": "string", + "value": "[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]" + }, + "appURL": { + "type": "string", + "value": "[concat('http://', reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress, ':8080/JBoss-EAP_on_Azure/')]" + }, + "adminConsole": { + "type": "string", + "value": "[concat('http://', reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress, ':9990')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT192 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT192 new file mode 100644 index 0000000..dca9380 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT192 @@ -0,0 +1,370 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jboss/jboss-eap-standalone-rhel7/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-standalone-rhel7/azuredeploy.parameters.json" + ], + "timestamp": 1642962890319, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jboss/jboss-eap-standalone-rhel7/azuredeploy.json", + "/application-workloads/jboss/jboss-eap-standalone-rhel7/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT192", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT192", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Linux VM user account name" + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "eapUserName": { + "type": "string", + "metadata": { + "description": "User name for EAP manager" + }, + "value": "GEN-UNIQUE" + }, + "eapPassword": { + "type": "securestring", + "metadata": { + "description": "Password for EAP manager" + }, + "value": "GEN-PASSWORD" + }, + "rhsmUserName": { + "type": "string", + "metadata": { + "description": "User name for Red Hat subscription manager" + }, + "value": "GEN-UNIQUE" + }, + "rhsmPassword": { + "type": "securestring", + "metadata": { + "description": "Password for Red Hat subscription manager" + }, + "value": "GEN_PASSWORD" + }, + "rhsmPool": { + "type": "string", + "metadata": { + "description": "Red Hat Subscription Manager Pool (must contain JBoss EAP entitlement)." + }, + "value": "GEN-UNIQUE" + }, + "sshPassPhrase": { + "type": "securestring", + "metadata": { + "description": "Pass phrase for SSH certificate" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/jboss/jboss-eap-standalone-rhel7/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "redhat", + "imageOffer": "rhel", + "imageSKU": "7.2", + "baseName": "[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "nicName": "myNic8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressName": "myIP8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "vmSize": "Standard_F1", + "virtualNetworkName": "MyVNET8", + "frontEndNSGName": "GEN-UNIQUE-nsg8", + "storageAccountType": "Standard_LRS", + "storageAccountName": "vsts8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "ScriptFolder": "scripts", + "ScriptFileName": "eap-setup-redhat.sh", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/MyVNET8/Subnet-1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "StorageAccountName", + "apiVersion": "2016-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myIP8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-nsg8", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Custom Network Security Group" + }, + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "default-allow-eap-admin", + "properties": { + "description": "Allow EAP/ADMIN", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9990", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1020, + "direction": "Inbound" + } + }, + { + "name": "default-allow-eap", + "properties": { + "description": "Allow WEB/EAP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1010, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-nsg8" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-nsg8" + } + } + } + ] + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myIP8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "Microsoft.Network/virtualNetworks/MyVNET8", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-nsg8" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-nsg8" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myIP8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET8/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/StorageAccountName", + "Microsoft.Network/networkInterfaces/myNic8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F1" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "[base64(variables('publicIPAddressName'))]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "redhat", + "offer": "rhel", + "sku": "7.2", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNic8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/newuserscript", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('ScriptFolder'), '/', variables('ScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh eap-setup-redhat.sh GEN-UNIQUE GEN-UNIQUE GEN-PASSWORD GEN-UNIQUE GEN_PASSWORD GEN-UNIQUE GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT193 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT193 new file mode 100644 index 0000000..170bc18 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT193 @@ -0,0 +1,236 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-container/nested/grafana.json" + ], + "timestamp": 1642962890328, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-container/nested/grafana.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT193", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT193", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "grafanaVMName": { + "type": "string" + }, + "grafanaVMSize": { + "type": "string" + }, + "spClientId": { + "type": "string" + }, + "spClientSecret": { + "type": "securestring" + }, + "linuxAdminUsername": { + "type": "string" + }, + "linuxAdminPassword": { + "type": "securestring" + }, + "dnsPrefix": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "cosmosDbName": { + "type": "string" + }, + "kubernetesClusterName": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + }, + "location": { + "type": "string" + } + }, + "variables": { + "installOpts": "-A \"linuxAdminPassword\"", + "configureOpts": "[concat('-A \"', uriComponent(parameters('linuxAdminPassword')), '\" -p \"3000\" -S \"', subscription().subscriptionId, '\" -T \"', subscription().tenantId, '\" -i \"', parameters('spClientId'), '\" -s \"', parameters('spClientSecret'), '\" -r \"', resourceGroup().name, '\" -c \"', parameters('cosmosDbName'), '\" -k \"', parameters('kubernetesClusterName'), '\" -l \"', parameters('_artifactsLocation'), '\" -t \"', parameters('_artifactsLocationSasToken'), '\"')]", + "nicName": "grafanaVMName-nic", + "publicIPAddressName": "grafanaVMName-ip", + "securityGroupName": "grafanaVMName-nsg" + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "grafanaVMName-ip", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsPrefix" + } + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "grafanaVMName-nsg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows inbound SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Grafana", + "properties": { + "description": "Allows inbound grafana HTTP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "grafanaVMName-nic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/grafanaVMName-ip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "grafanaVMName-ip-config", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/grafanaVMName-ip" + }, + "subnet": { + "id": "subnetId" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/grafanaVMName-nsg" + } + } + }, + { + "name": "grafanaVMName", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-03-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/grafanaVMName-nic" + ], + "properties": { + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "hardwareProfile": { + "vmSize": "grafanaVMSize" + }, + "osProfile": { + "computerName": "grafanaVMName-vm", + "adminUsername": "linuxAdminUsername", + "adminPassword": "linuxAdminPassword" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/grafanaVMName-nic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "installGrafana", + "apiVersion": "2019-03-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/grafanaVMName" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "_artifactsLocationscripts/grafana/install-grafana.sh_artifactsLocationSasToken", + "_artifactsLocationscripts/grafana/configure-grafana.sh_artifactsLocationSasToken" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash install-grafana.sh ', variables('installOpts'), '; bash configure-grafana.sh ', variables('configureOpts'))]" + } + } + } + ] + } + ], + "outputs": { + "grafanaURL": { + "type": "string", + "value": "[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn, ':3000')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT194 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT194 new file mode 100644 index 0000000..085000a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT194 @@ -0,0 +1,434 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-container/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-container/azuredeploy.parameters.json" + ], + "timestamp": 1642962890336, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-container/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-container/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT194", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.containerregistry/registries", + "microsoft.documentdb/databaseaccounts", + "microsoft.containerservice/managedclusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT194", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "spClientId": { + "type": "string", + "metadata": { + "description": "Service Principal Client ID used by Jenkins and Azure Container Service (AKS)." + }, + "value": "GEN-AZUREAD-AKS-APPID" + }, + "spClientSecret": { + "type": "securestring", + "metadata": { + "description": "Service Principal Client Secret used by Jenkins and Azure Container Service(AKS)." + }, + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "linuxAdminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Linux Virtual Machines (Jenkins and Kubernetes)." + }, + "value": "GEN-UNIQUE" + }, + "linuxAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Jenkins and Grafana Virtual Machines." + }, + "value": "GEN-PASSWORD" + }, + "linuxSSHPublicKey": { + "type": "string", + "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'" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "cosmosDbName": { + "type": "string", + "metadata": { + "description": "Name of the CosmosDB." + }, + "value": "GEN-UNIQUE" + }, + "acrName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Container Registery. The name may contain alpha numeric characters only and must be between 5 and 50 characters." + }, + "value": "GEN-UNIQUE" + }, + "jenkinsDnsPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Jenkins Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "grafanaDnsPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Grafana Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "grafanaVMSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the Kubernetes host virtual machine." + } + }, + "jenkinsVMSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the Kubernetes host virtual machine." + } + }, + "kubernetesDnsPrefix": { + "type": "string", + "metadata": { + "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN." + }, + "value": "GEN-UNIQUE" + }, + "kubernetesClusterName": { + "type": "string", + "metadata": { + "description": "The name of the Managed Cluster resource." + }, + "value": "GEN-UNIQUE" + }, + "kubernetesAgentCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of nodes for the cluster." + }, + "minValue": 1, + "maxValue": 50 + }, + "kubernetesAgentVMSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the Kubernetes host virtual machine." + } + }, + "kubernetesVersion": { + "type": "string", + "defaultValue": "1.14.8", + "allowedValues": [ + "1.14.8", + "1.14.7", + "1.13.12", + "1.13.11", + "1.12.8", + "1.12.7", + "1.11.10", + "1.11.9", + "1.10.13", + "1.10.12" + ], + "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/application-workloads/jenkins/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": "securestring", + "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": "GEN-UNIQUE", + "acrName": "GEN-UNIQUE", + "virtualNetworkName": "virtual-network", + "subnetName": "default-subnet" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.ContainerRegistry/registries", + "location": "[resourceGroup().location]", + "apiVersion": "2019-05-01", + "sku": { + "name": "Basic" + }, + "properties": { + "adminUserEnabled": true + } + }, + { + "apiVersion": "2016-03-31", + "kind": "MongoDB", + "type": "Microsoft.DocumentDb/databaseAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "databaseAccountOfferType": "Standard" + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtual-network", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2019-08-01", + "name": "jenkinsDeployment", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/GEN-UNIQUE", + "Microsoft.Network/virtualNetworks/virtual-network", + "Microsoft.DocumentDb/databaseAccounts/GEN-UNIQUE" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/jenkins.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "jenkinsVMName": { + "value": "jenkins" + }, + "jenkinsVMSize": { + "value": "Standard_D2s_v3" + }, + "spClientId": { + "value": "GEN-AZUREAD-AKS-APPID" + }, + "spClientSecret": { + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "linuxAdminUsername": { + "value": "GEN-UNIQUE" + }, + "linuxAdminPassword": { + "value": "GEN-PASSWORD" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + }, + "subnetId": { + "value": "Microsoft.Network/virtualNetworks/subnets/virtual-network/default-subnet" + }, + "gitRepository": { + "value": "https://github.com/Azure/azure-quickstart-templates" + }, + "acrServer": { + "value": "[reference(resourceId('Microsoft.ContainerRegistry/registries', variables('acrName'))).loginServer]" + }, + "acrUsername": { + "value": "[listCredentials(resourceId('Microsoft.ContainerRegistry/registries', variables('acrName')), '2019-05-01').username]" + }, + "acrPassword": { + "value": "[listCredentials(resourceId('Microsoft.ContainerRegistry/registries', variables('acrName')), '2019-05-01').passwords[0].value]" + }, + "mongoDbURI": { + "value": "[concat('mongodb://', variables('cosmosDbName'), ':', uriComponent(listKeys(resourceId('Microsoft.DocumentDb/databaseAccounts', variables('cosmosDbName')), '2016-03-31').primaryMasterKey), '@', variables('cosmosDbName'), '.documents.azure.com:10255/?ssl=true&replicaSet=globaldb')]" + }, + "kubernetesResourceGroupName": { + "value": "[resourceGroup().name]" + }, + "kubernetesClusterName": { + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/jenkins/jenkins-cicd-container/" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2019-10-01", + "type": "Microsoft.ContainerService/managedClusters", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "properties": { + "kubernetesVersion": "1.14.8", + "dnsPrefix": "GEN-UNIQUE", + "agentPoolProfiles": [ + { + "name": "agentpool", + "osDiskSizeGB": 0, + "count": 1, + "vmSize": "Standard_D2s_v3", + "osType": "Linux", + "storageProfile": "ManagedDisks" + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "servicePrincipalProfile": { + "ClientId": "GEN-AZUREAD-AKS-APPID", + "Secret": "GEN-AZUREAD-AKS-APPID-SECRET" + } + } + }, + { + "apiVersion": "2019-08-01", + "name": "grafanaDeployment", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.DocumentDb/databaseAccounts/GEN-UNIQUE", + "Microsoft.ContainerService/managedClusters/GEN-UNIQUE" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/grafana.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "grafanaVMName": { + "value": "grafana" + }, + "grafanaVMSize": { + "value": "Standard_D2s_v3" + }, + "spClientId": { + "value": "GEN-AZUREAD-AKS-APPID" + }, + "spClientSecret": { + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "linuxAdminUsername": { + "value": "GEN-UNIQUE" + }, + "linuxAdminPassword": { + "value": "GEN-PASSWORD" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + }, + "subnetId": { + "value": "Microsoft.Network/virtualNetworks/subnets/virtual-network/default-subnet" + }, + "cosmosDbName": { + "value": "GEN-UNIQUE" + }, + "kubernetesClusterName": { + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/jenkins/jenkins-cicd-container/" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "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]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT195 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT195 new file mode 100644 index 0000000..5393dad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT195 @@ -0,0 +1,357 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-vmss/nested/jenkins.json" + ], + "timestamp": 1642962890345, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-vmss/nested/jenkins.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT195", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT195", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Jenkins Virtual Machine." + } + }, + "dnsPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Jenkins Virtual Machine." + } + }, + "jenkinsReleaseType": { + "type": "string", + "allowedValues": [ + "LTS", + "weekly", + "verified" + ], + "defaultValue": "LTS", + "metadata": { + "description": "The Jenkins release type." + } + }, + "repositoryUrl": { + "type": "string", + "metadata": { + "description": "GitHub repository URL for the source code." + } + }, + "clientId": { + "type": "string", + "metadata": { + "description": "Client id for Azure service principal." + } + }, + "clientSecret": { + "type": "securestring", + "metadata": { + "description": "Client secret for Azure service principal." + } + }, + "VMResourceGroup": { + "type": "string", + "metadata": { + "description": "New Resource group for the new Tomcat Virtual Machine components." + } + }, + "VMDnsPrefix": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Unique DNS Name for the new Tomcat Virtual Machine." + } + }, + "VMAdminUsername": { + "type": "string", + "metadata": { + "description": "Username for the new Tomcat Virtual Machine." + } + }, + "VMAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the new Tomcat Virtual Machine." + } + }, + "OMSWorkspaceId": { + "type": "string", + "metadata": { + "description": "OMS workspace id." + } + }, + "OMSWorkspaceKey": { + "type": "string", + "metadata": { + "description": "OMS workspace key." + } + }, + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "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." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "resourcePrefix": "Jenkins", + "OSDiskName": "JenkinsOSDisk", + "nicName": "JenkinsVMNic", + "subnetName": "JenkinsSubnet", + "publicIPAddressName": "JenkinsPublicIP", + "vmName": "JenkinsVM", + "vmExtensionName": "JenkinsInit", + "virtualNetworkName": "JenkinsVNET", + "frontEndNSGName": "JenkinsNSG", + "vNetAddressPrefixes": "10.0.0.0/16", + "sNetAddressPrefixes": "10.0.0.0/24", + "vmPrivateIP": "10.0.0.5", + "vmImageName": "myPackerLinuxImage", + "_extensionScript": "setup.sh", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "JenkinsPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsPrefix" + } + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "JenkinsNSG", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG - Front End" + }, + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "http-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2016-09-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "JenkinsVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/JenkinsNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "JenkinsSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/JenkinsNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2016-09-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "JenkinsVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/JenkinsPublicIP", + "Microsoft.Network/virtualNetworks/JenkinsVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIpAddress": "10.0.0.5", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/JenkinsPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/JenkinsVNET/JenkinsSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "JenkinsVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/JenkinsVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "JenkinsVM", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "JenkinsOSDisk", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/JenkinsVMNic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "JenkinsInit", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/JenkinsVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/jenkins/', variables('_extensionScript'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('./' , variables('_extensionScript'), ' -jf \"', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '\" -jpi \"', variables('vmPrivateIP'), '\" -jrt \"', parameters('jenkinsReleaseType'), '\" -su \"', subscription().subscriptionId, '\" -t \"', subscription().tenantId, '\" -i \"', parameters('clientId'), '\" -s \"', parameters('clientSecret'), '\" -rg \"', parameters('VMResourceGroup'), '\" -l \"', parameters('location'), '\" -irg \"', resourceGroup().name, '\" -im \"', variables('vmImageName'), '\" -vd \"', parameters('VMDnsPrefix'), '\" -vu \"', parameters('VMAdminUsername'), '\" -vp \"', parameters('VMAdminPassword'), '\" -rr \"', parameters('repositoryUrl'), '\" -wi \"', parameters('OMSWorkspaceId'), '\" -wk \"', parameters('OMSWorkspaceKey'), '\" -al \"', parameters('_artifactsLocation'), '\" -st \"', parameters('_artifactsLocationSasToken'), '\"')]" + } + } + } + ] + } + ], + "outputs": { + "jenkinsURL": { + "type": "string", + "value": "[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + }, + "jenkinsSSH": { + "type": "string", + "value": "[concat('ssh -L 8080:localhost:8080 ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT196 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT196 new file mode 100644 index 0000000..9f9e74e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT196 @@ -0,0 +1,249 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-vmss/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-vmss/azuredeploy.parameters.json" + ], + "timestamp": 1642962890353, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-vmss/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-vmss/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT196", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT196", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "jenkinsVMAdminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "User name for the Jenkins Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "jenkinsDnsPrefix": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Jenkins Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "jenkinsReleaseType": { + "type": "string", + "allowedValues": [ + "LTS", + "weekly", + "verified" + ], + "defaultValue": "LTS", + "metadata": { + "description": "The Jenkins release type." + } + }, + "repositoryUrl": { + "type": "string", + "defaultValue": "https://github.com/Azure/azure-quickstart-templates", + "minLength": 1, + "metadata": { + "description": "GitHub repository URL for the source code." + } + }, + "clientId": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Client id for Azure service principal." + }, + "value": "GEN-UNIQUE" + }, + "clientSecret": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Client secret for Azure service principal." + }, + "value": "GEN-PASSWORD" + }, + "VMDnsPrefix": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Unique DNS Name for the new Tomcat Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "VMAdminUsername": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Username for the new Tomcat Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "VMAdminPassword": { + "type": "securestring", + "minLength": 6, + "metadata": { + "description": "Password for the new Tomcat Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "OMSWorkspaceName": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "OMS workspace name." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/jenkins/jenkins-cicd-vmss/", + "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": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "VMResourceGroup": "[concat(take(resourceGroup().name, 70), 'VMSS', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "apiVersion": "2017-04-26-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "eastus", + "properties": { + "sku": { + "name": "pernode" + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "jenkinsDeployment", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/jenkins.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + }, + "jenkinsReleaseType": { + "value": "LTS" + }, + "repositoryUrl": { + "value": "https://github.com/Azure/azure-quickstart-templates" + }, + "clientId": { + "value": "GEN-UNIQUE" + }, + "clientSecret": { + "value": "GEN-PASSWORD" + }, + "VMResourceGroup": { + "value": "[variables('VMResourceGroup')]" + }, + "VMDnsPrefix": { + "value": "GEN-UNIQUE" + }, + "VMAdminUsername": { + "value": "GEN-UNIQUE" + }, + "VMAdminPassword": { + "value": "GEN-PASSWORD" + }, + "OMSWorkspaceId": { + "value": "[reference(resourceId('Microsoft.OperationalInsights/workspaces', parameters('OMSWorkspaceName')),'2017-04-26-preview').customerId]" + }, + "OMSWorkspaceKey": { + "value": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces', parameters('OMSWorkspaceName')), '2017-04-26-preview').primarySharedKey]" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/jenkins/jenkins-cicd-vmss/" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + } + } + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ] + } + ], + "outputs": { + "jenkinsURL": { + "type": "string", + "value": "[reference('jenkinsDeployment').outputs.jenkinsURL.value]" + }, + "jenkinsSSH": { + "type": "string", + "value": "[reference('jenkinsDeployment').outputs.jenkinsSSH.value]" + }, + "VMSSResourceGroup": { + "type": "string", + "value": "[variables('VMResourceGroup')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT197 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT197 new file mode 100644 index 0000000..cbb0ff5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT197 @@ -0,0 +1,353 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-webapp/nested/jenkins.json" + ], + "timestamp": 1642962890366, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-webapp/nested/jenkins.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT197", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT197", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Jenkins Virtual Machine." + } + }, + "dnsPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Jenkins Virtual Machine." + } + }, + "jenkinsReleaseType": { + "type": "string", + "allowedValues": [ + "LTS", + "weekly", + "verified" + ], + "defaultValue": "LTS", + "metadata": { + "description": "The Jenkins release type." + } + }, + "repositoryUrl": { + "type": "string", + "metadata": { + "description": "GitHub repository URL for the source code." + } + }, + "clientId": { + "type": "string", + "metadata": { + "description": "Client id for Azure service principal." + } + }, + "clientSecret": { + "type": "securestring", + "metadata": { + "description": "Client secret for Azure service principal." + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage account name." + } + }, + "storageAccountKey": { + "type": "securestring", + "metadata": { + "description": "Storage account key." + } + }, + "webAppName": { + "type": "string", + "metadata": { + "description": "Prefix name for web app components, accepts numbers and letters only." + } + }, + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "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." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "resourcePrefix": "Jenkins", + "OSDiskName": "JenkinsOSDisk", + "nicName": "JenkinsVMNic", + "subnetName": "JenkinsSubnet", + "publicIPAddressName": "JenkinsPublicIP", + "vmName": "JenkinsVM", + "vmExtensionName": "JenkinsInit", + "virtualNetworkName": "JenkinsVNET", + "frontEndNSGName": "JenkinsNSG", + "vNetAddressPrefixes": "10.0.0.0/16", + "sNetAddressPrefixes": "10.0.0.0/24", + "vmPrivateIP": "10.0.0.5", + "agentPort": "5378", + "_extensionScript": "setup.sh", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "JenkinsPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsPrefix" + } + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "JenkinsNSG", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG - Front End" + }, + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "http-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "AllowAgentInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "5378", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound", + "sourceAddressPrefixes": [], + "destinationAddressPrefixes": [] + } + } + ] + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "JenkinsVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/JenkinsNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "JenkinsSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/JenkinsNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "JenkinsVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/JenkinsPublicIP", + "Microsoft.Network/virtualNetworks/JenkinsVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIpAddress": "10.0.0.5", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/JenkinsPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/JenkinsVNET/JenkinsSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "JenkinsVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/JenkinsVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "JenkinsVM", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "JenkinsOSDisk", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/JenkinsVMNic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "JenkinsInit", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/JenkinsVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/jenkins/', variables('_extensionScript'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('./' , variables('_extensionScript'), ' -jf \"', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '\" -jrt \"', parameters('jenkinsReleaseType'), '\" -su \"', subscription().subscriptionId, '\" -t \"', subscription().tenantId, '\" -i \"', parameters('clientId'), '\" -s \"', parameters('clientSecret'), '\" -sn \"', parameters('storageAccountName'), '\" -sk \"', parameters('storageAccountKey'), '\" -rg \"', resourceGroup().name, '\" -w \"', parameters('webAppName'), '\" -rr \"', parameters('repositoryUrl'), '\" -al \"', parameters('_artifactsLocation'), '\" -st \"', parameters('_artifactsLocationSasToken'), '\"')]" + } + } + } + ] + } + ], + "outputs": { + "jenkinsURL": { + "type": "string", + "value": "[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + }, + "jenkinsSSH": { + "type": "string", + "value": "[concat('ssh -L 8080:localhost:8080 ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT198 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT198 new file mode 100644 index 0000000..b91ea62 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT198 @@ -0,0 +1,361 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-webapp/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-webapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962890404, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cicd-webapp/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cicd-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT198", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.storage/storageaccounts", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT198", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "jenkinsVMAdminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "User name for the Jenkins Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "jenkinsDnsPrefix": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Jenkins Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "jenkinsReleaseType": { + "type": "string", + "allowedValues": [ + "LTS", + "weekly", + "verified" + ], + "defaultValue": "LTS", + "metadata": { + "description": "The Jenkins release type." + } + }, + "repositoryUrl": { + "type": "string", + "defaultValue": "https://github.com/Azure/azure-quickstart-templates", + "minLength": 1, + "metadata": { + "description": "GitHub repository URL for the source code." + } + }, + "clientId": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Client id for Azure service principal." + }, + "value": "GEN-UNIQUE" + }, + "clientSecret": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Client secret for Azure service principal." + }, + "value": "GEN-PASSWORD" + }, + "appDnsPrefix": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Prefix name for web app components, accepts numbers and letters only." + }, + "value": "GEN-UNIQUE-16" + }, + "mySqlAdminLogin": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "User name for MySQL admin login." + }, + "value": "GEN-UNIQUE-12" + }, + "mySqlAdminPassword": { + "type": "securestring", + "minLength": 6, + "metadata": { + "description": "Password for MySQL admin login." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/jenkins/jenkins-cicd-webapp/", + "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": "securestring", + "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." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "storageAccountName": "[concat(toLower(parameters('appDnsPrefix')), 'storage')]", + "servicePlanName": "GEN-UNIQUE-16ServicePlan", + "webAppName": "GEN-UNIQUE-16Web", + "appInsightsName": "GEN-UNIQUE-16AppInsights", + "mySqlServerName": "[concat(toLower(parameters('appDnsPrefix')), 'mysqlserver')]", + "mySqlDbName": "[concat(toLower(parameters('appDnsPrefix')), 'mysqldb')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "Storage", + "name": "[variables('storageAccountName')]", + "apiVersion": "2017-06-01", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Web/serverfarms", + "sku": { + "name": "B1" + }, + "kind": "app", + "name": "GEN-UNIQUE-16ServicePlan", + "apiVersion": "2016-09-01", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE-16ServicePlan" + } + }, + { + "type": "Microsoft.Web/sites", + "kind": "app", + "name": "GEN-UNIQUE-16Web", + "apiVersion": "2016-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE-16ServicePlan" + ], + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE-16ServicePlan" + }, + "resources": [ + { + "type": "config", + "name": "web", + "apiVersion": "2016-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE-16Web" + ], + "properties": { + "javaVersion": "1.8", + "javaContainer": "TOMCAT", + "javaContainerVersion": "9.0" + } + }, + { + "apiVersion": "2016-08-01", + "name": "connectionstrings", + "type": "config", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE-16Web" + ], + "properties": { + "defaultConnection": { + "value": "[concat('Database=', variables('mySqlDbName'), ';Data Source=', reference(resourceId('Microsoft.DBforMySQL/servers',variables('mySqlServerName'))).fullyQualifiedDomainName, ';User Id=', parameters('mySqlAdminLogin'),'@', variables('mySqlServerName'),';Password=', parameters('mySqlAdminPassword'))]", + "type": "MySql" + } + } + } + ] + }, + { + "type": "microsoft.insights/components", + "kind": "java", + "name": "GEN-UNIQUE-16AppInsights", + "apiVersion": "2015-05-01", + "location": "eastus", + "tags": { + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webAppName'))]": "Resource" + }, + "properties": { + "ApplicationId": "GEN-UNIQUE-16AppInsights" + } + }, + { + "type": "Microsoft.DBforMySQL/servers", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "name": "[variables('mySqlServerName')]", + "properties": { + "version": "5.7", + "storageMB": 51200, + "administratorLogin": "GEN-UNIQUE-12", + "administratorLoginPassword": "GEN-PASSWORD" + }, + "sku": { + "name": "B_Gen5_2", + "tier": "Basic", + "capacity": 2 + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "name": "[concat(variables('mySqlServerName'),'Firewall')]", + "dependsOn": [ + "[resourceId('Microsoft.DBforMySQL/servers', variables('mySqlServerName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "name": "[variables('mySqlDbName')]", + "type": "databases", + "apiVersion": "2017-12-01", + "dependsOn": [ + "[resourceId('Microsoft.DBforMySQL/servers', variables('mySqlServerName'))]" + ], + "properties": { + "charset": "utf8", + "collation": "utf8_general_ci" + } + } + ] + }, + { + "apiVersion": "2017-05-10", + "name": "jenkinsDeployment", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/jenkins.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + }, + "jenkinsReleaseType": { + "value": "LTS" + }, + "repositoryUrl": { + "value": "https://github.com/Azure/azure-quickstart-templates" + }, + "clientId": { + "value": "GEN-UNIQUE" + }, + "clientSecret": { + "value": "GEN-PASSWORD" + }, + "storageAccountName": { + "value": "[variables('storageAccountName')]" + }, + "storageAccountKey": { + "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2016-01-01').keys[0].value]" + }, + "webAppName": { + "value": "GEN-UNIQUE-16Web" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/jenkins/jenkins-cicd-webapp/" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + } + } + } + } + ], + "outputs": { + "jenkinsURL": { + "type": "string", + "value": "[reference('jenkinsDeployment').outputs.jenkinsURL.value]" + }, + "jenkinsSSH": { + "type": "string", + "value": "[reference('jenkinsDeployment').outputs.jenkinsSSH.value]" + }, + "webAppURL": { + "type": "string", + "value": "[concat('http://', reference(variables('webAppName')).defaultHostName)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT199 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT199 new file mode 100644 index 0000000..5cb93c1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT199 @@ -0,0 +1,640 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-cluster-2-linux-1-win/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cluster-2-linux-1-win/azuredeploy.parameters.json" + ], + "timestamp": 1642962890414, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-cluster-2-linux-1-win/azuredeploy.json", + "/application-workloads/jenkins/jenkins-cluster-2-linux-1-win/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT199", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT199", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for cluster" + } + }, + "master-vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Master VM Size" + } + }, + "linux-worker-vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Linux worker VM Size" + } + }, + "win-worker-vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Windows Worker VM Size" + } + }, + "master-username": { + "type": "string", + "metadata": { + "description": "Admin Username for Jenkins Master" + }, + "value": "GEN-UNIQUE" + }, + "node-username": { + "type": "string", + "metadata": { + "description": "Admin username for Slave Instances" + }, + "value": "GEN-UNIQUE" + }, + "master-password": { + "type": "securestring", + "metadata": { + "description": "Admin Password for Jenkins Master VM" + }, + "value": "GEN-PASSWORD" + }, + "node-password": { + "type": "securestring", + "metadata": { + "description": "Password for slave instances" + }, + "value": "GEN-PASSWORD" + }, + "jenkins-dns": { + "type": "string", + "defaultValue": "[concat('jenkins-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS Prefix for Jenkins Master" + } + }, + "storageName": { + "type": "string", + "defaultValue": "[concat('jenkins', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "storage account prefix" + }, + "minLength": 3, + "maxLength": 24 + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "NetIpRange": "10.0.0.0/16", + "SubnetRange": "10.0.1.0/24", + "scriptUrlMaster": "[uri(parameters('_artifactsLocation'),concat('scripts/install-jenkins.sh',parameters('_artifactsLocationSasToken')))]", + "scriptUrlNode1": "[uri(parameters('_artifactsLocation'),concat('scripts/install-slave.sh',parameters('_artifactsLocationSasToken')))]", + "scriptUrlNode2": "[uri(parameters('_artifactsLocation'),concat('win-slave.ps1',parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "name": "[toLower(parameters('storageName'))]", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Cluster VM Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "name": "Master-PublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('jenkins-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "name": "master-nsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "nsgRule1", + "properties": { + "description": "SSH Access to Master", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "nsgRule2", + "properties": { + "description": "HTTP Access to Master", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "jenkins-cluster-VirtualNetwork", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/master-nsg" + ], + "tags": { + "displayName": "Jenkins-VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Jenkins-VirtualNetwork-Subnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "name": "Master-NetworkInterface", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/Master-PublicIP", + "Microsoft.Network/virtualNetworks/jenkins-cluster-VirtualNetwork", + "Microsoft.Network/networkSecurityGroups/master-nsg" + ], + "tags": { + "displayName": "Jenkins-Master-NetworkInterface" + }, + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/master-nsg" + }, + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.1.10", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/Master-PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/jenkins-cluster-VirtualNetwork/Jenkins-VirtualNetwork-Subnet" + } + } + } + ] + } + }, + { + "name": "Jenkins-Master", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/Master-NetworkInterface" + ], + "tags": { + "displayName": "Jenkins master" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "Jenkins-master", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "master-OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/Master-NetworkInterface" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', toLower(parameters('storageName')))).primaryEndpoints.blob]" + } + } + } + }, + { + "name": "node-1-PublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "node-1-[concat('jenkins-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "name": "node-1-nsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "nsgRule1", + "properties": { + "description": "SSH Allow", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "node-1-NetworkInterface", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/node-1-PublicIP", + "Microsoft.Network/virtualNetworks/jenkins-cluster-VirtualNetwork", + "Microsoft.Network/networkSecurityGroups/node-1-nsg" + ], + "tags": { + "displayName": "node-1-NetworkInterface" + }, + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/node-1-nsg" + }, + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.1.11", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/node-1-PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/jenkins-cluster-VirtualNetwork/Jenkins-VirtualNetwork-Subnet" + } + } + } + ] + } + }, + { + "name": "node-1", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/node-1-NetworkInterface" + ], + "tags": { + "displayName": "node-1" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "node-1", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "node-1-OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/node-1-NetworkInterface" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', toLower(parameters('storageName')))).primaryEndpoints.blob]" + } + } + } + }, + { + "name": "node-2-PublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "node-2-[concat('jenkins-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "name": "node-2-nsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "nsgRule1", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "node-2-NetworkInterface", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/node-2-PublicIP", + "Microsoft.Network/virtualNetworks/jenkins-cluster-VirtualNetwork", + "Microsoft.Network/networkSecurityGroups/node-2-nsg" + ], + "tags": { + "displayName": "node-2 Network Interface" + }, + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/node-2-nsg" + }, + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.1.12", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/node-2-PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/jenkins-cluster-VirtualNetwork/Jenkins-VirtualNetwork-Subnet" + } + } + } + ] + } + }, + { + "name": "node-2", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', toLower(parameters('storageName')))]", + "[resourceId('Microsoft.Network/networkInterfaces', 'node-2-NetworkInterface')]" + ], + "tags": { + "displayName": "node-2" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "node-2", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter-with-Containers", + "version": "latest" + }, + "osDisk": { + "name": "node-2OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/node-2-NetworkInterface" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', toLower(parameters('storageName')))).primaryEndpoints.blob]" + } + } + } + }, + { + "name": "Jenkins-Master/installJenkins", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-03-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "jenkins-master-script" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Jenkins-Master" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('scripts/install-jenkins.sh',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install-jenkins.sh" + } + } + }, + { + "name": "node-2/customScript1", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Jenkins slave for Windows VM" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/node-2" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('win-slave.ps1',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -file win-slave.ps1" + } + } + }, + { + "name": "node-1/installSlave", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Jenkins slave for Linux VM" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/node-1" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('scripts/install-slave.sh',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install-slave.sh" + } + } + } + ], + "outputs": { + "jenkins-dns": { + "type": "string", + "value": "[concat('http://', reference('Master-PublicIP').dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT2 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT2 new file mode 100644 index 0000000..216f4a9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT2 @@ -0,0 +1,97 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/nestedtemplates/vnet-with-dns-server.json" + ], + "timestamp": 1642962883256, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/nestedtemplates/vnet-with-dns-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT2", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT2", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new VNET in CIDR format" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "description": "The address range of the subnet created in the new VNET" + } + }, + "DNSServerAddress": { + "type": "array", + "metadata": { + "description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetworkName", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressRange" + ] + }, + "dhcpOptions": { + "dnsServers": "DNSServerAddress" + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetRange" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT20 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT20 new file mode 100644 index 0000000..a26ca7c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT20 @@ -0,0 +1,87 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/vnet.json" + ], + "timestamp": 1642962883471, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/nested/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT20", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT20", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "Description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "Description": "The address range of the new VNET in CIDR format" + }, + "defaultValue": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "Description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "Description": "The address range of the subnet created in the new VNET" + }, + "defaultValue": "10.0.0.0/24" + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-05-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT200 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT200 new file mode 100644 index 0000000..ce07d31 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT200 @@ -0,0 +1,343 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890424, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT200", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT200", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "description": "Name of the virtual network provisioned for the cluster" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "dnsName": { + "type": "string", + "metadata": { + "description": "Domain name for the publicly accessible Jenkins master node" + }, + "value": "GEN-UNIQUE-8" + }, + "masterVmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_D4_v3", + "Standard_D8_v3" + ], + "metadata": { + "description": "The size of the virtual machines used when provisioning the Jenkins master node" + }, + "value": "Standard_D4_v3" + }, + "slaveNodes": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of Jenkins slave node (1 is the default)" + }, + "value": 1 + }, + "slaveVmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_D4_v3", + "Standard_D8_v3" + ], + "metadata": { + "description": "The size of the virtual machines used when provisioning Jenkins slave node(s)" + }, + "value": "Standard_D4_v3" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "jenkMasterTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('jenkmaster-resources.json', parameters('_artifactsLocationSasToken')))]", + "jenkSlaveTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('jenkslave-resources.json', parameters('_artifactsLocationSasToken')))]", + "namespace": "jenk", + "networkSettings": { + "virtualNetworkName": "GEN-UNIQUE", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "GEN-UNIQUE" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "jenkMaster": "10.0.0.240" + } + }, + "masterOsSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('jenkMstrInstall.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('jenkAddNode.groovy', parameters('_artifactsLocationSasToken')))]" + ] + }, + "slaveOsSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('jenkSlaveInstall.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-UNIQUE", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "GEN-UNIQUE" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "jenkMaster": "10.0.0.240" + } + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "jenkMasterNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('jenkmaster-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "jenk" + }, + "vmbasename": { + "value": "Master" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "dnsname": { + "value": "GEN-UNIQUE-8" + }, + "staticIp": { + "value": "(networkSettings).statics.jenkMaster" + }, + "vmSize": { + "value": "Standard_D4_v3" + }, + "slaveNodes": { + "value": 1 + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('jenkMstrInstall.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('jenkAddNode.groovy', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "jenkSlaveNodecopyindex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//jenkMasterNode" + ], + "copy": { + "name": "vmLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('jenkslave-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "jenk" + }, + "vmbasename": { + "value": "Slavecopyindex()" + }, + "masterNode": { + "value": "(networkSettings).statics.jenkMaster" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('jenkSlaveInstall.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT201 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT201 new file mode 100644 index 0000000..012af6a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT201 @@ -0,0 +1,251 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/jenkmaster-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890454, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/jenkmaster-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT201", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT201", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "dnsName": { + "type": "string", + "value": "GEN-UNIQUE-8" + }, + "slaveNodes": { + "type": "int", + "value": 1 + }, + "subnet": { + "type": "object" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE" + }, + "masterVmSize": { + "value": "Standard_D4_v3" + }, + "slaveVmSize": { + "value": "Standard_D4_v3" + } + }, + "variables": { + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HTTP", + "properties": { + "description": "Allows HTTP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "properties": {} + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/jenkInstall", + "apiVersion": "2015-05-01-preview", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash jenkMstrInstall.sh -n 1" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT202 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT202 new file mode 100644 index 0000000..27634b3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT202 @@ -0,0 +1,187 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/jenkslave-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890466, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/jenkslave-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT202", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT202", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "masterNode": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE" + }, + "dnsName": { + "value": "GEN-UNIQUE-8" + }, + "masterVmSize": { + "value": "Standard_D4_v3" + }, + "slaveNodes": { + "value": 1 + }, + "slaveVmSize": { + "value": "Standard_D4_v3" + } + }, + "variables": { + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "properties": {} + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/jenkInstall", + "apiVersion": "2015-05-01-preview", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash jenkSlaveInstall.sh -m masterNode -s vmbasename" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT203 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT203 new file mode 100644 index 0000000..b6107d6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT203 @@ -0,0 +1,94 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/shared-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890474, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/jenkins-on-ubuntu/shared-resources.json", + "/application-workloads/jenkins/jenkins-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT203", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT203", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "dnsName": { + "value": "GEN-UNIQUE-8" + }, + "masterVmSize": { + "value": "Standard_D4_v3" + }, + "slaveNodes": { + "value": 1 + }, + "slaveVmSize": { + "value": "Standard_D4_v3" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT204 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT204 new file mode 100644 index 0000000..6b670c9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT204 @@ -0,0 +1,324 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jenkins/multiple-windows-vms-with-common-script/azuredeploy.json", + "/application-workloads/jenkins/multiple-windows-vms-with-common-script/azuredeploy.parameters.json" + ], + "timestamp": 1642962890485, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jenkins/multiple-windows-vms-with-common-script/azuredeploy.json", + "/application-workloads/jenkins/multiple-windows-vms-with-common-script/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT204", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT204", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmCount": { + "type": "int", + "metadata": { + "description": "Number of LAB-VM tobe deployed" + }, + "value": 2 + }, + "dns-prefix": { + "type": "string", + "metadata": { + "description": "DNS Prefix used by LabVM Public IP" + }, + "value": "GEN-UNIQUE-5" + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "Admin Username for Lab VM" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for admin user" + }, + "value": "GEN-PASSWORD" + }, + "vmsize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "VM Size for all lab-vms. " + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location to deploy current resource" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "SAS Token for accessing script path" + } + }, + "scriptFilename": { + "type": "string", + "defaultValue": "jenkins-java8.ps1", + "allowedValues": [ + "jenkins-java8.ps1", + "az-500.ps1", + "container-lab.ps1", + "container-vs2019-lab.ps1" + ], + "metadata": { + "description": "Choose script to launch from list of available scripts" + } + } + }, + "variables": { + "strname": "[toLower(concat('labvmstg',uniqueString(resourceGroup().id)))]", + "scriptUrl": "[uri(parameters('_artifactsLocation'),concat(parameters('scriptFilename'),parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[toLower(concat('labvmstg',uniqueString(resourceGroup().id)))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "tags": { + "displayName": "labvm Storage Account" + }, + "properties": { + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-11-01", + "name": "[concat('labvm-pip-',copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmpipcopy", + "count": 2 + }, + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('dns-prefix'),'-',copyIndex(1)))]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-04-01", + "name": "labvm-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "nsgRule1", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "labvm-vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/labvm-nsg" + ], + "tags": { + "displayName": "labvm-vnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "30.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "labvm-Subnet", + "properties": { + "addressPrefix": "30.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/labvm-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-11-01", + "name": "[concat('labvm-nic-',copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "count": 2, + "name": "niccopy" + }, + "dependsOn": [ + "vmpipcopy", + "Microsoft.Network/virtualNetworks/labvm-vnet" + ], + "tags": { + "displayName": "labvm Network Interface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat('labvm-pip-',copyIndex(1)))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/labvm-vnet/labvm-Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "[concat('labvm-',copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "count": 2, + "name": "vmcopy" + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[toLower(concat('labvmstg',uniqueString(resourceGroup().id)))]", + "vmpipcopy", + "niccopy" + ], + "tags": { + "displayName": "labvm" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "[concat('labvm-',copyIndex(1))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[concat('labvm',copyIndex(1),'OSDisk')]", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat('labvm-nic-',copyIndex(1)))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('strname'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "[concat('labvm-',copyIndex(1),'/installScript')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "customScript1 for Windows VM" + }, + "copy": { + "name": "scriptCopy", + "count": 2 + }, + "dependsOn": [ + "vmcopy" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat(parameters('scriptFilename'),parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Bypass -file jenkins-java8.ps1" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT205 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT205 new file mode 100644 index 0000000..de64962 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT205 @@ -0,0 +1,401 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/jupyter/vm-linux-Jupyterhub/azuredeploy.json", + "/application-workloads/jupyter/vm-linux-Jupyterhub/azuredeploy.parameters.json" + ], + "timestamp": 1642962890513, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/jupyter/vm-linux-Jupyterhub/azuredeploy.json", + "/application-workloads/jupyter/vm-linux-Jupyterhub/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT205", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT205", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for Administrator Account" + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "defaultValue": "Ubuntu-Jupyter", + "metadata": { + "description": "The name of you Virtual Machine." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "cpu-gpu": { + "type": "string", + "defaultValue": "CPU-4GB", + "allowedValues": [ + "CPU-4GB", + "CPU-7GB", + "CPU-8GB", + "CPU-14GB", + "CPU-16GB", + "GPU-56GB" + ], + "metadata": { + "description": "Choose between CPU or GPU processing" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "SecGroupNet", + "metadata": { + "description": "Name of the Network Security Group" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "diskSizeGB": { + "type": "string", + "metadata": { + "description": "The size for an atached disk." + }, + "defaultValue": "1024", + "allowedValues": [ + "1024", + "2048", + "4096", + "8192", + "16384", + "32767" + ] + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "networkInterfaceName": "Ubuntu-JupyterNetInt", + "publicIpAddressName": "Ubuntu-JupyterPublicIP", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/subnet", + "nsgId": "Microsoft.Network/networkSecurityGroups/SecGroupNet", + "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "storageAccountKind": "Storage", + "vmSize": { + "CPU-4GB": "Standard_B2s", + "CPU-7GB": "Standard_D2s_v3", + "CPU-8GB": "Standard_D2s_v3", + "CPU-14GB": "Standard_D4s_v3", + "CPU-16GB": "Standard_D4s_v3", + "GPU-56GB": "Standard_NC6_Promo" + }, + "vmName": "Ubuntu-Jupyter-CPU-4GB", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-06-01", + "name": "SecGroupNet", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "HTTP", + "properties": { + "priority": 300, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "80" + } + }, + { + "name": "HTTPS", + "properties": { + "priority": 310, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "443" + } + }, + { + "name": "SSH", + "properties": { + "priority": 340, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + }, + { + "name": "AzureNotebooks", + "properties": { + "priority": 360, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "8000" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-06-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/24" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2019-06-01", + "name": "Ubuntu-JupyterPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIpAllocationMethod": "Dynamic" + }, + "sku": { + "name": "Basic", + "tier": "Regional" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-06-01", + "name": "Ubuntu-JupyterNetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//SecGroupNet", + "Microsoft.Network/virtualNetworks//vNet", + "Microsoft.Network/publicIpAddresses//Ubuntu-JupyterPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/Ubuntu-JupyterPublicIP" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecGroupNet" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "Ubuntu-Jupyter-CPU-4GB", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "(vmSize)[parameters(cpu-gpu)]" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "lun": 0, + "name": "DatadiskUbuntu-Jupyter", + "createOption": "Empty", + "diskSizeGB": "1024" + } + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/Ubuntu-JupyterNetInt" + } + ] + }, + "osProfile": { + "computerName": "Ubuntu-Jupyter", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[concat(reference(variables('storageAccountName')).primaryEndpoints.blob)]" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "Ubuntu-Jupyter-CPU-4GB/installscript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Ubuntu-Jupyter-CPU-4GB" + ], + "tags": { + "displayName": "Execute my custom script" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "bash install.sh GEN-UNIQUE", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + } + } + ] + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT206 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT206 new file mode 100644 index 0000000..6a1be32 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT206 @@ -0,0 +1,489 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890540, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT206", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT206", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password used when provisioning virtual machines" + }, + "value": "GEN-PASSWORD" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "description": "Image SKU" + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Unique namespace for the Storage Account where the Virtual Machine's disks will be placed" + }, + "value": "GEN-UNIQUE-8" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNETkafka", + "metadata": { + "description": "The arbitrary name of the virtual network provisioned for the cluster" + }, + "value": "GEN-VNET-NAME" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The network address space for the virtual network" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "GEN-SUBNET1-NAME" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Address space for the virtual network subnet" + }, + "value": "10.0.0.0/24" + }, + "kafkaVersion": { + "type": "string", + "defaultValue": "0.8.2.1", + "allowedValues": [ + "0.8.2.1", + "0.8.2.0", + "0.8.1.1" + ], + "metadata": { + "description": "The version of the Kafka package to be deployed on the cluster (or use 'stable' to pull in the latest and greatest)" + }, + "value": "0.8.2.1" + }, + "kafkaZooNodeIPAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.4", + "metadata": { + "description": "The IP address prefix that will be used for constructing a static private IP address for each node in the cluster" + }, + "value": "10.0.0.4" + }, + "kafkaNodeIPAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.1", + "metadata": { + "description": "The IP address prefix that will be used for constructing a static private IP address for each node in the cluster" + }, + "value": "10.0.0.1" + }, + "jumpbox": { + "type": "string", + "defaultValue": "enabled", + "allowedValues": [ + "enabled", + "disabled" + ], + "metadata": { + "description": "The flag allowing to enable or disable provisioning of the jumpbox VM that can be used to access the Kafka nodes" + }, + "value": "enabled" + }, + "tshirtSize": { + "type": "string", + "defaultValue": "S", + "allowedValues": [ + "S", + "M", + "L" + ], + "metadata": { + "description": "T-shirt size of the Kafka cluster" + }, + "value": "S" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME", + "computerNamePrefix": "kafkanode", + "sharedTemplateName": "shared-resources", + "jumpboxTemplateName": "jumpbox-resources-", + "tshirtSizeS": { + "numberOfZookeeperInstances": 1, + "numberOfKafkaInstances": 3, + "vmSize": "Standard_A1" + }, + "tshirtSizeM": { + "numberOfZookeeperInstances": 3, + "numberOfKafkaInstances": 3, + "vmSize": "Standard_A2" + }, + "tshirtSizeL": { + "numberOfZookeeperInstances": 5, + "numberOfKafkaInstances": 7, + "vmSize": "Standard_A7" + }, + "numberOfZookeeperInstances": "(concat(tshirtSize, parameters(tshirtSize))).numberOfZookeeperInstances", + "numberOfKafkaInstances": "(concat(tshirtSize, parameters(tshirtSize))).numberOfKafkaInstances", + "vmSize": "(concat(tshirtSize, parameters(tshirtSize))).vmSize" + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-08-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('sharedTemplateName'), '.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "storageAccountName": { + "value": "GEN-UNIQUE-8" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "GEN-SUBNET1-NAME" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + } + } + } + }, + { + "name": "jumpbox-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('jumpboxTemplateName'), parameters('jumpbox'), '.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-SUBNET1-NAME" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "computerNamePrefix": { + "value": "kafkanode" + } + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "niczoocopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": "(concat(tshirtSize, parameters(tshirtSize))).numberOfZookeeperInstances" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.4copyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": "(concat(tshirtSize, parameters(tshirtSize))).numberOfKafkaInstances" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.1copyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "zookprvmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualZookeeperMachineLoop", + "count": "(concat(tshirtSize, parameters(tshirtSize))).numberOfZookeeperInstances" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources", + "Microsoft.Network/networkInterfaces/niczoocopyindex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/kafkaCluserAS" + }, + "hardwareProfile": { + "vmSize": "(concat(tshirtSize, parameters(tshirtSize))).vmSize" + }, + "osProfile": { + "computerName": "kafkanodecopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "zookprvmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niczoocopyindex()" + } + ] + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "brokervmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": "(concat(tshirtSize, parameters(tshirtSize))).numberOfKafkaInstances" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources", + "Microsoft.Network/networkInterfaces/niccopyindex()", + "virtualZookeeperMachineLoop" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/kafkaCluserAS" + }, + "hardwareProfile": { + "vmSize": "(concat(tshirtSize, parameters(tshirtSize))).vmSize" + }, + "osProfile": { + "computerName": "kafkanodecopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "brokervmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "zookprvmcopyindex()/installzoo", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineExtensionsLoop", + "count": "(concat(tshirtSize, parameters(tshirtSize))).numberOfZookeeperInstances" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/zookprvmcopyindex()", + "Microsoft.Network/networkInterfaces/niczoocopyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('kafka-cluster-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash kafka-cluster-install.sh -z 1 -c (concat(tshirtSize, parameters(tshirtSize))).numberOfZookeeperInstances -i 10.0.0.4" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "brokervmcopyindex()/installkafka", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineExtensionsLoop", + "count": "(concat(tshirtSize, parameters(tshirtSize))).numberOfKafkaInstances" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/brokervmcopyindex()", + "Microsoft.Network/networkInterfaces/niccopyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('kafka-cluster-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash kafka-cluster-install.sh -b copyindex() -k 0.8.2.1 -c (concat(tshirtSize, parameters(tshirtSize))).numberOfZookeeperInstances -i 10.0.0.4" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT207 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT207 new file mode 100644 index 0000000..f10e083 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT207 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/jumpbox-resources-disabled.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890553, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/jumpbox-resources-disabled.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT207", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT207", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "kafkaVersion": { + "value": "0.8.2.1" + }, + "kafkaNodeIPAddressPrefix": { + "value": "10.0.0.1" + }, + "kafkaZooNodeIPAddressPrefix": { + "value": "10.0.0.4" + }, + "jumpbox": { + "value": "enabled" + }, + "tshirtSize": { + "value": "S" + } + }, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT208 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT208 new file mode 100644 index 0000000..b286dc9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT208 @@ -0,0 +1,224 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/jumpbox-resources-enabled.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890572, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/jumpbox-resources-enabled.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT208", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT208", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "Description": "The arbitrary name of the virtual network provisioned for the cluster" + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "Description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "GEN-SUBNET1-NAME" + }, + "adminUsername": { + "type": "string", + "metadata": { + "Description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "Description": "Administrator password used when provisioning virtual machines" + }, + "value": "GEN-PASSWORD" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "Description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "Description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "Description": "Image SKU" + } + }, + "computerNamePrefix": { + "type": "string", + "metadata": { + "Description": "The global VM name prefix" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "VM Size" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountName": { + "value": "GEN-UNIQUE-8" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "kafkaVersion": { + "value": "0.8.2.1" + }, + "kafkaNodeIPAddressPrefix": { + "value": "10.0.0.1" + }, + "kafkaZooNodeIPAddressPrefix": { + "value": "10.0.0.4" + }, + "jumpbox": { + "value": "enabled" + }, + "tshirtSize": { + "value": "S" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicJumpbox", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpbox", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicJumpbox" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "computerNamePrefixjumpbox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "jumpbox_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicJumpbox" + } + ], + "inputEndpoints": [ + { + "enableDirectServerReturn": "False", + "endpointName": "SSH", + "privatePort": 22, + "publicPort": 22, + "protocol": "Tcp" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT209 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT209 new file mode 100644 index 0000000..c2544c7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT209 @@ -0,0 +1,155 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/shared-resources.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890588, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-on-ubuntu/shared-resources.json", + "/application-workloads/kafka/kafka-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT209", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT209", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "uniquestoragsharedkafka", + "metadata": { + "Description": "Unique namespace for the Storage Account where the Virtual Machine's disks will be placed" + }, + "value": "GEN-UNIQUE-8" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "Description": "The arbitrary name of the virtual network provisioned for the cluster" + }, + "value": "GEN-VNET-NAME" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "Description": "The network address space for the virtual network" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "Description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "GEN-SUBNET1-NAME" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "Description": "Address space for the virtual network subnet" + }, + "value": "10.0.0.0/24" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "kafkaVersion": { + "value": "0.8.2.1" + }, + "kafkaNodeIPAddressPrefix": { + "value": "10.0.0.1" + }, + "kafkaZooNodeIPAddressPrefix": { + "value": "10.0.0.4" + }, + "jumpbox": { + "value": "enabled" + }, + "tshirtSize": { + "value": "S" + } + }, + "variables": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": "5" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-8", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "kafkaCluserAS", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": "5" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT21 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT21 new file mode 100644 index 0000000..d32adb3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT21 @@ -0,0 +1,783 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/azuredeploy.json", + "/application-workloads/active-directory/create-ad-forest-with-subdomain/azuredeploy.parameters.json" + ], + "timestamp": 1642962883476, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/create-ad-forest-with-subdomain/azuredeploy.json", + "/application-workloads/active-directory/create-ad-forest-with-subdomain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT21", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT21", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "createChildDomain": { + "type": "bool", + "metadata": { + "description": "Do you want a child domain? If false, the parameters for the child domain are ignored. " + }, + "defaultValue": true + }, + "createSecondDc": { + "type": "bool", + "metadata": { + "description": "Do you want a second DC in each domain? If false: parameters for DC2 and DC4 are ignored. " + }, + "defaultValue": false + }, + "DomainName": { + "type": "string", + "metadata": { + "description": "Full FQDN name for the forest root domain." + }, + "defaultValue": "contoso.com", + "minLength": 4 + }, + "ChildDomainName": { + "type": "string", + "metadata": { + "description": "SHORT name for the child domain. New AD trees are not allowed." + }, + "defaultValue": "child", + "minLength": 2, + "maxLength": 15 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the admin account for the Domain(s)" + }, + "minLength": 6, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The (complex!) password for the Administrator account of the new VMs and Domain(s)" + }, + "minLength": 8, + "value": "GEN-PASSWORD" + }, + "VMSize": { + "type": "string", + "metadata": { + "description": "The size and type of the VM. *_DS* or *s types support Premium Disks. Hint: the DS* series seem most reliable for this complex template." + }, + "defaultValue": "Standard_D2s_v3" + }, + "imageSKU": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "Windows Server Version." + } + }, + "diskType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "StandardSSD_LRS", + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The Storage type of the data Disks. Use Premium_LRS only with *s or *DS* VM types." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the new VNET for the DC(s)." + }, + "defaultValue": "adVNET", + "minLength": 2, + "maxLength": 16 + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new VNET in CIDR format." + }, + "defaultValue": "10.0.0.0/22" + }, + "externalDNSForwarder": { + "type": "string", + "metadata": { + "description": "DNS forwarder for all non-domain (external) related DNS queries." + }, + "defaultValue": "168.63.129.16" + }, + "adSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the VM subnet created in the new VNET." + }, + "defaultValue": "adSubnet", + "minLength": 2, + "maxLength": 16 + }, + "adSubnet": { + "type": "string", + "metadata": { + "description": "The address range of the subnet created in the new VNET." + }, + "defaultValue": "10.0.0.0/24" + }, + "RootDC1Name": { + "type": "string", + "metadata": { + "description": "The computer name of the first DC of the root domain." + }, + "defaultValue": "rootdc1", + "minLength": 2, + "maxLength": 15 + }, + "RootDC1IPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the first DC of the root domain." + }, + "defaultValue": "10.0.0.4" + }, + "RootDC2Name": { + "type": "string", + "metadata": { + "description": "The computer name of the second DC of the root domain." + }, + "defaultValue": "rootdc2", + "minLength": 2, + "maxLength": 15 + }, + "RootDC2IPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the second DC of the root domain." + }, + "defaultValue": "10.0.0.5" + }, + "ChildDC3Name": { + "type": "string", + "metadata": { + "description": "The computer name of the first DC of the CHILD domain." + }, + "defaultValue": "childdc3", + "minLength": 2, + "maxLength": 15 + }, + "ChildDC3IPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the first DC of the CHILD domain." + }, + "defaultValue": "10.0.0.6" + }, + "ChildDC4Name": { + "type": "string", + "metadata": { + "description": "The computer name of the second DC of the CHILD domain." + }, + "defaultValue": "childdc4", + "minLength": 2, + "maxLength": 15 + }, + "ChildDC4IPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the second DC of the CHILD domain." + }, + "defaultValue": "10.0.0.7" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources; takes its default from the Resource Group." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources such as templates and DSC modules that the script depends on. No need to change unless you copy or fork this template." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "SAS storage token to access _artifactsLocation. No need to change unless you copy or fork this template." + }, + "defaultValue": "" + } + }, + "variables": { + "adNSGName": "adSubnetNSG", + "adAvailabilitySetNameRoot": "AvailSetRoot", + "adAvailabilitySetNameChild": "AvailSetChild", + "firstVMTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nested/CreateAndPrepnewVM.json',parameters('_artifactsLocationSasToken')))]", + "nextVMTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nested/CreateAndPrepnewVM.json',parameters('_artifactsLocationSasToken')))]", + "vnetTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nested/vnet.json',parameters('_artifactsLocationSasToken')))]", + "vnetwithDNSTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nested/vnet-with-dns-server.json',parameters('_artifactsLocationSasToken')))]", + "configureADNextDCTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nested/configureADNextDC.json',parameters('_artifactsLocationSasToken')))]", + "createForestTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nested/createForest.json',parameters('_artifactsLocationSasToken')))]", + "createChildDomainTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nested/createChildDomain.json',parameters('_artifactsLocationSasToken')))]", + "nextDCConfigurationModulesURL": "[uri(parameters('_artifactsLocation'), concat('DSC/ConfigureADNextDC.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "nextDCConfigurationFunction": "ConfigureADNextDC.ps1\\ConfigureADNextDC" + }, + "resources": [ + { + "name": "AvailSetRoot", + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "PlatformUpdateDomainCount": 3, + "PlatformFaultDomainCount": 2 + } + }, + { + "name": "AvailSetChild", + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2019-12-01", + "condition": true, + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "PlatformUpdateDomainCount": 3, + "PlatformFaultDomainCount": 2 + } + }, + { + "name": "CreateVNET", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/vnet.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "adVNET" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/22" + }, + "subnetName": { + "value": "adSubnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "adSubnetNSG", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Allow_Any_RDP", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Resources/deployments/CreateVNET" + ] + }, + { + "name": "CreateADVM1", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/CreateVNET", + "Microsoft.Compute/availabilitySets/AvailSetRoot" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/CreateAndPrepnewVM.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "adVNET" + }, + "subnetName": { + "value": "adSubnet" + }, + "adAvailabilitySetName": { + "value": "AvailSetRoot" + }, + "vmName": { + "value": "rootdc1" + }, + "vmIpAddress": { + "value": "10.0.0.4" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "diskType": { + "value": "Premium_LRS" + }, + "imageSKU": { + "value": "2019-Datacenter" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "name": "CreateForest", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/CreateADVM1" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/createForest.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "rootdc1" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "domainName": { + "value": "domainName" + }, + "DNSForwarder": { + "value": "168.63.129.16" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "name": "CreateADVM3", + "type": "Microsoft.Resources/deployments", + "condition": true, + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/CreateVNET", + "Microsoft.Compute/availabilitySets/AvailSetChild" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/CreateAndPrepnewVM.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "adVNET" + }, + "subnetName": { + "value": "adSubnet" + }, + "adAvailabilitySetName": { + "value": "AvailSetChild" + }, + "vmName": { + "value": "childdc3" + }, + "vmIpAddress": { + "value": "10.0.0.6" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "diskType": { + "value": "Premium_LRS" + }, + "imageSKU": { + "value": "2019-Datacenter" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "name": "CreateChildDomain", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "condition": true, + "dependsOn": [ + "Microsoft.Resources/deployments/CreateADVM3", + "Microsoft.Resources/deployments/CreateForest" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/createChildDomain.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "childdc3" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "parentDomainName": { + "value": "domainName" + }, + "childDomainName": { + "value": "child" + }, + "DNSForwarder": { + "value": "10.0.0.4" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "name": "CreateADVM2", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "condition": false, + "dependsOn": [ + "Microsoft.Resources/deployments/CreateVNET", + "Microsoft.Compute/availabilitySets/AvailSetRoot" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/CreateAndPrepnewVM.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "adVNET" + }, + "subnetName": { + "value": "adSubnet" + }, + "adAvailabilitySetName": { + "value": "AvailSetRoot" + }, + "vmName": { + "value": "rootdc2" + }, + "vmIpAddress": { + "value": "10.0.0.5" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "diskType": { + "value": "Premium_LRS" + }, + "imageSKU": { + "value": "2019-Datacenter" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "name": "ConfiguringRootDC2", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "condition": false, + "dependsOn": [ + "Microsoft.Resources/deployments/CreateADVM2", + "Microsoft.Resources/deployments/CreateChildDomain" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/configureADNextDC.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adNextDCVMName": { + "value": "rootdc2" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "domainName": { + "value": "domainName" + }, + "DNSServer": { + "value": "10.0.0.4" + }, + "adNextDCConfigurationFunction": { + "value": "ConfigureADNextDC.ps1\\ConfigureADNextDC" + }, + "adNextDCConfigurationModulesURL": { + "value": "[uri(parameters('_artifactsLocation'), concat('DSC/ConfigureADNextDC.ps1.zip',parameters('_artifactsLocationSasToken')))]" + } + } + } + }, + { + "name": "CreateADVM4", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "condition": "[and(parameters('createSecondDc'), parameters('createChildDomain'))]", + "dependsOn": [ + "Microsoft.Resources/deployments/CreateVNET", + "Microsoft.Compute/availabilitySets/AvailSetChild" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/CreateAndPrepnewVM.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "adVNET" + }, + "subnetName": { + "value": "adSubnet" + }, + "adAvailabilitySetName": { + "value": "AvailSetChild" + }, + "vmName": { + "value": "childdc4" + }, + "vmIpAddress": { + "value": "10.0.0.7" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "diskType": { + "value": "Premium_LRS" + }, + "imageSKU": { + "value": "2019-Datacenter" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "name": "ConfiguringChildDC4", + "type": "Microsoft.Resources/deployments", + "condition": "[and(parameters('createSecondDc'), parameters('createChildDomain'))]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/CreateADVM4", + "Microsoft.Resources/deployments/CreateChildDomain" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/configureADNextDC.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adNextDCVMName": { + "value": "childdc4" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "domainName": { + "value": "childDomainName.domainName" + }, + "DNSServer": { + "value": "10.0.0.6" + }, + "adNextDCConfigurationFunction": { + "value": "ConfigureADNextDC.ps1\\ConfigureADNextDC" + }, + "adNextDCConfigurationModulesURL": { + "value": "[uri(parameters('_artifactsLocation'), concat('DSC/ConfigureADNextDC.ps1.zip',parameters('_artifactsLocationSasToken')))]" + } + } + } + }, + { + "name": "UpdateVNet", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/CreateChildDomain" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/vnet-with-dns-server.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "adVNET" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/22" + }, + "subnetName": { + "value": "adSubnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + }, + "NSGName": { + "value": "adSubnetNSG" + }, + "DNSServerAddress": { + "value": [ + "10.0.0.4", + "10.0.0.5" + ] + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT210 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT210 new file mode 100644 index 0000000..9e56110 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT210 @@ -0,0 +1,493 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962890597, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT210", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT210", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique name of the new storage account that will be created to store virtual machine VHDs." + }, + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "Domain name of the public jumpbox" + }, + "value": "GEN-UNIQUE-10" + }, + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Virtual machine administrator username" + }, + "value": "GEN-UNIQUE-8" + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Small", + "allowedValues": [ + "Small", + "Medium", + "Large", + "XLarge" + ], + "metadata": { + "description": "T-shirt size of the Kafka deployment" + } + }, + "jumpbox": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "The flag allowing to enable or disable provisioning of the jumpbox VM that can be used to access the Kafka environment" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vnet", + "metadata": { + "description": "Virtual network name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "sharedModulesLocation": { + "type": "string", + "metadata": { + "description": "Location of the shared modules." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "tshirtSizeTypes": { + "Small": { + "vmSize": "Standard_A1", + "diskSize": 1023, + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('datastore-2disk-resources.json', parameters('_artifactsLocationSasToken')))]", + "zookeeperCount": 1, + "brokerCount": 3, + "storage": { + "name": "GEN-UNIQUE-8", + "count": 1, + "pool": "db", + "map": [ + 0, + 0, + 0 + ], + "jumpbox": 0 + } + }, + "Medium": { + "vmSize": "Standard_A3", + "diskSize": 1023, + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('datastore-8disk-resources.json', parameters('_artifactsLocationSasToken')))]", + "zookeeperCount": 3, + "brokerCount": 5, + "storage": { + "name": "GEN-UNIQUE-8", + "count": 2, + "pool": "db", + "map": [ + 0, + 0, + 0, + 1, + 1 + ], + "jumpbox": 0 + } + }, + "Large": { + "vmSize": "Standard_A4", + "diskSize": 1023, + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('datastore-16disk-resources.json', parameters('_artifactsLocationSasToken')))]", + "zookeeperCount": 3, + "brokerCount": 5, + "storage": { + "name": "GEN-UNIQUE-8", + "count": 3, + "pool": "db", + "map": [ + 0, + 0, + 1, + 1, + 2 + ], + "jumpbox": 0 + } + }, + "XLarge": { + "vmSize": "Standard_A7", + "diskSize": 1023, + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('datastore-16disk-resources.json', parameters('_artifactsLocationSasToken')))]", + "zookeeperCount": 5, + "brokerCount": 8, + "storage": { + "name": "GEN-UNIQUE-8", + "count": 4, + "pool": "db", + "map": [ + 0, + 0, + 1, + 1, + 2, + 2, + 3, + 3 + ], + "jumpbox": 0 + } + } + }, + "tshirtSize": "(tshirtSizeTypes)[parameters(tshirtSize)]", + "jumpboxTemplate": { + "Enabled": "jumpbox-resources.json", + "Disabled": "empty-resources.json" + }, + "vmTemplatezookeeper": "[uri(parameters('_artifactsLocation'), concat('zookeeper-resources.json', parameters('_artifactsLocationSasToken')))]", + "jumpboxTemplateUrl": "[uri(parameters('_artifactsLocation'), concat(variables('jumpboxTemplate')[parameters('jumpbox')], parameters('_artifactsLocationSasToken')))]", + "osSettings": { + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('kafka-cluster-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + } + }, + "networkSettings": { + "vnetName": "vnet", + "addressPrefix": "10.0.0.0/16", + "subnets": { + "dmz": { + "name": "dmz", + "prefix": "10.0.0.0/24", + "vnet": "vnet" + }, + "zookeeper": { + "name": "zookeeper", + "prefix": "10.0.1.0/24", + "addprefix": "10.0.1.1", + "vnet": "vnet" + }, + "data": { + "name": "data", + "prefix": "10.0.2.0/24", + "addprefix": "10.0.2.1", + "vnet": "vnet" + } + } + }, + "availabilitySetSettings": { + "name": "kafkaAvailabilitySet", + "fdCount": 2, + "udCount": 5 + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageSettings": { + "value": "(tshirtSize).storage" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "networkSettings": { + "value": { + "vnetName": "vnet", + "addressPrefix": "10.0.0.0/16", + "subnets": { + "dmz": { + "name": "dmz", + "prefix": "10.0.0.0/24", + "vnet": "vnet" + }, + "zookeeper": { + "name": "zookeeper", + "prefix": "10.0.1.0/24", + "addprefix": "10.0.1.1", + "vnet": "vnet" + }, + "data": { + "name": "data", + "prefix": "10.0.2.0/24", + "addprefix": "10.0.2.1", + "vnet": "vnet" + } + } + } + }, + "availabilitySetSettings": { + "value": { + "name": "kafkaAvailabilitySet", + "fdCount": 2, + "udCount": 5 + } + } + } + } + }, + { + "name": "zookeeper-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('zookeeper-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "osSettings": { + "value": { + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('kafka-cluster-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + } + } + }, + "subnet": { + "value": "(networkSettings).subnets.zookeeper" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "commonSettings": { + "value": { + "adminUsername": "GEN-UNIQUE-8", + "namespace": "zk" + } + }, + "machineSettings": { + "value": { + "vmSize": "(tshirtSize).vmSize", + "diskSize": "(tshirtSize).diskSize", + "vmCount": "(tshirtSize).zookeeperCount", + "availabilitySet": "(availabilitySetSettings).name", + "addprefix": "(networkSettings).subnets.zookeeper.addprefix" + } + } + } + } + }, + { + "name": "broker-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//zookeeper-node" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(tshirtSize).vmTemplate", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "osSettings": { + "value": { + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('kafka-cluster-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + } + } + }, + "subnet": { + "value": "(networkSettings).subnets.data" + }, + "commonSettings": { + "value": { + "adminUsername": "GEN-UNIQUE-8", + "namespace": "bk" + } + }, + "machineSettingsbroker": { + "value": { + "vmSize": "(tshirtSize).vmSize", + "diskSize": "(tshirtSize).diskSize", + "zookeeperCount": "(tshirtSize).zookeeperCount", + "vmCount": "(tshirtSize).brokerCount", + "availabilitySet": "(availabilitySetSettings).name", + "zookeeperSubnet": "(networkSettings).subnets.zookeeper.addprefix", + "addprefix": "(networkSettings).subnets.data.addprefix" + } + } + } + } + }, + { + "name": "jumpbox", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('jumpboxTemplate')[parameters('jumpbox')], parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "dnsName": { + "value": "GEN-UNIQUE-10" + }, + "commonSettings": { + "value": { + "adminUsername": "GEN-UNIQUE-8", + "namespace": "jumpbox" + } + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "subnet": { + "value": "(networkSettings).subnets.dmz" + }, + "osSettings": { + "value": { + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('kafka-cluster-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT211 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT211 new file mode 100644 index 0000000..5734f4f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT211 @@ -0,0 +1,306 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-16disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962890622, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-16disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT211", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT211", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object" + }, + "osSettings": { + "type": "object" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "type": "string" + }, + "machineSettingsbroker": { + "type": "object" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "GEN-UNIQUE-10" + } + }, + "variables": { + "namespace": "commonSettings", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet", + "vmName": "commonSettingsvm", + "nicName": "commonSettingsnic", + "adminUsername": "commonSettings", + "vmCount": "machineSettingsbroker", + "zCount": "machineSettingsbroker", + "zSubnet": "machineSettingsbroker", + "addprefix": "machineSettingsbroker", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/commonSettings/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "commonSettingsniccopyindex()", + "location": "location", + "copy": { + "name": "nicCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "machineSettingsbrokercopyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "commonSettingsvmcopyindex()", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + ], + "copy": { + "name": "vmCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/machineSettingsbroker" + }, + "hardwareProfile": { + "vmSize": "machineSettingsbroker" + }, + "osProfile": { + "computerName": "commonSettingsvmcopyindex()", + "adminUsername": "commonSettings", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "commonSettingsvmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "commonSettingsvmcopyindex()_DataDisk1", + "diskSizeGB": "machineSettingsbroker", + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk2", + "diskSizeGB": "machineSettingsbroker", + "lun": 1, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk3", + "diskSizeGB": "machineSettingsbroker", + "lun": 2, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk4", + "diskSizeGB": "machineSettingsbroker", + "lun": 3, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk5", + "diskSizeGB": "machineSettingsbroker", + "lun": 4, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk6", + "diskSizeGB": "machineSettingsbroker", + "lun": 5, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk7", + "diskSizeGB": "machineSettingsbroker", + "lun": 6, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk8", + "diskSizeGB": "machineSettingsbroker", + "lun": 7, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk9", + "diskSizeGB": "machineSettingsbroker", + "lun": 8, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk10", + "diskSizeGB": "machineSettingsbroker", + "lun": 9, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk11", + "diskSizeGB": "machineSettingsbroker", + "lun": 10, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk12", + "diskSizeGB": "machineSettingsbroker", + "lun": 11, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk13", + "diskSizeGB": "machineSettingsbroker", + "lun": 12, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk14", + "diskSizeGB": "machineSettingsbroker", + "lun": 13, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk15", + "diskSizeGB": "machineSettingsbroker", + "lun": 14, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk16", + "diskSizeGB": "machineSettingsbroker", + "lun": 15, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "commonSettingsvmcopyindex()/install_kafka", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/commonSettingsvmcopyindex()" + ], + "copy": { + "name": "scriptCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash kafka-cluster-install.sh -b copyindex() -c machineSettingsbroker -i machineSettingsbroker" + } + } + } + ], + "outputs": { + "brokerip": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces/',concat(variables('nicName'),0))).ipConfigurations[0].properties.privateIPAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT212 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT212 new file mode 100644 index 0000000..add3056 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT212 @@ -0,0 +1,208 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-2disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962890630, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-2disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT212", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT212", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object" + }, + "osSettings": { + "type": "object" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "type": "string" + }, + "machineSettingsbroker": { + "type": "object" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "GEN-UNIQUE-10" + } + }, + "variables": { + "namespace": "commonSettings", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet", + "vmName": "commonSettingsvm", + "nicName": "commonSettingsnic", + "adminUsername": "commonSettings", + "vmCount": "machineSettingsbroker", + "zCount": "machineSettingsbroker", + "zSubnet": "machineSettingsbroker", + "addprefix": "machineSettingsbroker", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/commonSettings/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "commonSettingsniccopyindex()", + "location": "location", + "copy": { + "name": "nicCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "machineSettingsbrokercopyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "commonSettingsvmcopyindex()", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + ], + "copy": { + "name": "vmCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/machineSettingsbroker" + }, + "hardwareProfile": { + "vmSize": "machineSettingsbroker" + }, + "osProfile": { + "computerName": "commonSettingsvmcopyindex()", + "adminUsername": "commonSettings", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "commonSettingsvmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "commonSettingsvmcopyindex()_DataDisk1", + "diskSizeGB": "machineSettingsbroker", + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk2", + "diskSizeGB": "machineSettingsbroker", + "lun": 1, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "commonSettingsvmcopyindex()/install_kafka", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/commonSettingsvmcopyindex()" + ], + "copy": { + "name": "scriptCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash kafka-cluster-install.sh -b copyindex() -c machineSettingsbroker -i machineSettingsbroker" + } + } + } + ], + "outputs": { + "brokerip": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces',concat(variables('nicName'),0))).ipConfigurations[0].properties.privateIPAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT213 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT213 new file mode 100644 index 0000000..2c607f7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT213 @@ -0,0 +1,250 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-8disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962890655, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/datastore-8disk-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT213", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT213", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object" + }, + "osSettings": { + "type": "object" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "type": "string" + }, + "machineSettingsbroker": { + "type": "object" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "GEN-UNIQUE-10" + } + }, + "variables": { + "namespace": "commonSettings", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet", + "vmName": "commonSettingsvm", + "nicName": "commonSettingsnic", + "adminUsername": "commonSettings", + "vmCount": "machineSettingsbroker", + "zCount": "machineSettingsbroker", + "zSubnet": "machineSettingsbroker", + "addprefix": "machineSettingsbroker", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/commonSettings/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "commonSettingsniccopyindex()", + "location": "location", + "copy": { + "name": "nicCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "machineSettingsbrokercopyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "commonSettingsvmcopyindex()", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + ], + "copy": { + "name": "vmCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/machineSettingsbroker" + }, + "hardwareProfile": { + "vmSize": "machineSettingsbroker" + }, + "osProfile": { + "computerName": "commonSettingsvmcopyindex()", + "adminUsername": "commonSettings", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "commonSettingsvmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "commonSettingsvmcopyindex()_DataDisk1", + "diskSizeGB": "machineSettingsbroker", + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk2", + "diskSizeGB": "machineSettingsbroker", + "lun": 1, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk3", + "diskSizeGB": "machineSettingsbroker", + "lun": 2, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk4", + "diskSizeGB": "machineSettingsbroker", + "lun": 3, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk5", + "diskSizeGB": "machineSettingsbroker", + "lun": 4, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk6", + "diskSizeGB": "machineSettingsbroker", + "lun": 5, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk7", + "diskSizeGB": "machineSettingsbroker", + "lun": 6, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "commonSettingsvmcopyindex()_DataDisk8", + "diskSizeGB": "machineSettingsbroker", + "lun": 7, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "commonSettingsvmcopyindex()/install_kafka", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/commonSettingsvmcopyindex()" + ], + "copy": { + "name": "scriptCopyLoop", + "count": "machineSettingsbroker" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash kafka-cluster-install.sh -b copyindex() -c machineSettingsbroker -i machineSettingsbroker" + } + } + } + ], + "outputs": { + "brokerip": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces',concat(variables('nicName'),0))).ipConfigurations[0].properties.privateIPAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT214 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT214 new file mode 100644 index 0000000..bb3366e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT214 @@ -0,0 +1,50 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/empty-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962890668, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/empty-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT214", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT214", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "domainName": { + "value": "GEN-UNIQUE-10" + } + }, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT215 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT215 new file mode 100644 index 0000000..a2deca2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT215 @@ -0,0 +1,180 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/jumpbox-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962890675, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/jumpbox-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT215", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT215", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object" + }, + "osSettings": { + "type": "object" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "dnsName": { + "type": "string" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "VM size." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "GEN-UNIQUE-10" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet", + "nicName": "commonSettingsnic", + "vmName": "commonSettingsvm", + "publicIpName": "commonSettingspublicIp", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/commonSettings/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "commonSettingspublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsName" + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "commonSettingsnic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//commonSettingspublicIp" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/commonSettingspublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "commonSettingsvm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//commonSettingsnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "commonSettingsvm", + "adminUsername": "commonSettings", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "commonSettingsvm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/commonSettingsnic" + } + ], + "inputEndpoints": [ + { + "enableDirectServerReturn": "False", + "endpointName": "SSH", + "privatePort": 22, + "publicPort": 22, + "protocol": "Tcp" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT216 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT216 new file mode 100644 index 0000000..c6bd541 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT216 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/shared-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962890683, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/shared-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT216", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT216", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageSettings": { + "type": "object" + }, + "availabilitySetSettings": { + "type": "object" + }, + "networkSettings": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "domainName": { + "value": "GEN-UNIQUE-10" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storageSettingscopyindex()", + "apiVersion": "2021-01-01", + "location": "location", + "copy": { + "name": "dbStoragePoolLoop", + "count": "storageSettings" + }, + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "availabilitySetSettings", + "apiVersion": "2020-06-01", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": "availabilitySetSettings", + "platformUpdateDomainCount": "availabilitySetSettings" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT217 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT217 new file mode 100644 index 0000000..252a0a8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT217 @@ -0,0 +1,190 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/zookeeper-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "timestamp": 1642962890694, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kafka/kafka-ubuntu-multidisks/zookeeper-resources.json", + "/application-workloads/kafka/kafka-ubuntu-multidisks/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT217", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT217", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object" + }, + "osSettings": { + "type": "object" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "type": "string" + }, + "machineSettings": { + "type": "object" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "GEN-UNIQUE-10" + } + }, + "variables": { + "namespace": "commonSettings", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet", + "vmName": "commonSettingsvm", + "nicName": "commonSettingsnic", + "adminUsername": "commonSettings", + "vmCount": "machineSettings", + "addprefix": "machineSettings", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/commonSettings/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "commonSettingsniccopyindex()", + "location": "location", + "copy": { + "name": "nicCopyLoop", + "count": "machineSettings" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "machineSettingscopyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "commonSettingsvmcopyindex()", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + ], + "copy": { + "name": "vmCopyLoop", + "count": "machineSettings" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/machineSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "commonSettingsvmcopyindex()", + "adminUsername": "commonSettings", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "commonSettingsvmcopyindex()OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "commonSettingsvmcopyindex()/install_zookeeper", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/commonSettingsvmcopyindex()" + ], + "copy": { + "name": "scriptCopyLoop", + "count": "machineSettings" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash kafka-cluster-install.sh -z 1 -c machineSettings -i machineSettings" + } + } + } + ], + "outputs": { + "zookeeperip": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces',concat(variables('nicName'),0))).ipConfigurations[0].properties.privateIPAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT218 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT218 new file mode 100644 index 0000000..8f7b511 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT218 @@ -0,0 +1,402 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kemp/kemp-loadmaster-ha-pair/azuredeploy.json", + "/application-workloads/kemp/kemp-loadmaster-ha-pair/azuredeploy.parameters.json" + ], + "timestamp": 1642962890704, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kemp/kemp-loadmaster-ha-pair/azuredeploy.json", + "/application-workloads/kemp/kemp-loadmaster-ha-pair/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT218", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT218", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "balPassword": { + "type": "securestring", + "metadata": { + "description": "Password for bal account" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "availabilitySetName": "AvSet", + "vmNamePrefix": "KEMPVLM", + "loadBalancerName": "AzureLB", + "virtualNetworkName": "VLM_Network", + "subnetName": "Subnet1", + "vmSize": "Standard_A1", + "networkinterfacename": "KEMPVLM-NIC", + "networksecurityname": "KEMPVLM-NSG", + "publicIPAddressName": "KEMPVLM-PIP", + "dnsNameforLBIP": "[concat('vlm',uniqueString(resourceGroup().id))]", + "numberOfInstances": 2, + "imageSKU": "basic-byol", + "publicIPAddressType": "Dynamic", + "imageOffer": "vlm-azure", + "imagePublisher": "kemptech", + "imageVersion": "latest", + "storageAccountName": "[concat('vhds', uniqueString(resourceGroup().id))]", + "imagePlan": { + "name": "imageSku", + "product": "vlm-azure", + "publisher": "kemptech" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "comments": "This storage account is used to store the VM disks.", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "AvSet", + "comments": "The Availability Set ensures at least one KEMP LoadMaster will be available during either a planned or unplanned maintenance event.", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "VLM_Network", + "comments": "This the virtual network that all resources will be deployed to.", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.0.2.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "KEMPVLM-PIP", + "comments": "This is the public IP address that will be assigned to the Azure Load Balancer.", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('dnsNameforLBIP')]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "KEMPVLM-NSG", + "comments": "This Network Security Group (NSG) will limit the TCP ports open to the KEMP LoadMasters.", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "KEMPVLM-NSG" + }, + "properties": { + "securityRules": [ + { + "name": "wui-rule", + "properties": { + "description": "Allow WUI", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "ssl-rule", + "properties": { + "description": "Allow SSL", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 104, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "KEMPVLM-NICcopyindex()", + "comments": "A Network Interface will be created for each of the KEMP LoadMasters.", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VLM_Network", + "Microsoft.Network/loadBalancers//AzureLB", + "Microsoft.Network/loadBalancers/inboundNatRules/AzureLB/VLM-MGMTcopyIndex()", + "Microsoft.Network/networkSecurityGroups//KEMPVLM-NSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/Subnets/VLM_Network/Subnet1" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//KEMPVLM-NSG" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/AzureLB/BackendPool1" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/AzureLB/VLM-MGMTcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/loadBalancers", + "name": "AzureLB", + "comments": "This Azure Load Balancer will be used to direct traffic to the active KEMP LoadMaster in the HA Pair.", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/VLM_Network", + "Microsoft.Network/publicIPAddresses//KEMPVLM-PIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/KEMPVLM-PIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool1" + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/AzureLB/LoadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/AzureLB/BackendPool1" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/AzureLB/VLM-Health-Probe" + }, + "protocol": "Tcp", + "frontendPort": 8444, + "backendPort": 8444, + "idleTimeoutInMinutes": 15 + }, + "Name": "HealthCheck" + } + ], + "probes": [ + { + "properties": { + "protocol": "Http", + "port": 8444, + "requestPath": "/", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "VLM-Health-Probe" + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "AzureLB/VLM-MGMTcopyIndex()", + "comments": "This will create inbound rules to access the KEMP LoadMaster web user interface (WUI).", + "location": "[resourceGroup().location]", + "copy": { + "name": "lbNatLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers//AzureLB" + ], + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/AzureLB/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": "[copyIndex(8441)]", + "backendPort": 8443, + "enableFloatingIP": false + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "KEMPVLMcopyindex()", + "comments": "This will create two KEMP LoadMasters.", + "plan": { + "name": "imageSku", + "product": "vlm-azure", + "publisher": "kemptech" + }, + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('networkInterfaceName'), copyindex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/AvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "KEMPVLMcopyIndex()", + "adminUsername": "bal", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "kemptech", + "offer": "vlm-azure", + "sku": "basic-byol", + "version": "latest" + }, + "osDisk": { + "name": "KEMPVLMcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkInterfaceNamecopyindex()" + } + ] + } + } + } + ], + "outputs": { + "FQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName')),'2021-01-01').dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT219 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT219 new file mode 100644 index 0000000..178dd5a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT219 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kemp/kemp-loadmaster-multinic/azuredeploy.json", + "/application-workloads/kemp/kemp-loadmaster-multinic/azuredeploy.parameters.json" + ], + "timestamp": 1642962890778, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kemp/kemp-loadmaster-multinic/azuredeploy.json", + "/application-workloads/kemp/kemp-loadmaster-multinic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT219", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT219", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "balPassword": { + "type": "securestring", + "metadata": { + "description": "Password for bal account" + }, + "value": "GEN-PASSWORD" + }, + "balUsername": { + "type": "string", + "metadata": { + "description": "Username for bal account" + }, + "value": "GEN-UNIQUE" + }, + "existingvirtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the resource group that contains the existing virutal network." + }, + "value": "GEN-VNET-RESOURCEGROUP-NAME" + }, + "existingvirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing virutal network the KEMP LoadMaster will be deployed to." + }, + "value": "GEN-VNET-NAME" + }, + "existingsubnetName1": { + "type": "string", + "metadata": { + "description": "Name of the existing subnet in the virtual network you want to use" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "existingsubnetName2": { + "type": "string", + "metadata": { + "description": "Name of the existing subnet in the virtual network you want to use" + }, + "value": "GEN-VNET-SUBNET2-NAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_V2", + "metadata": { + "description": "Size of the VM." + } + } + }, + "variables": { + "publicIPAddressType": "Dynamic", + "vmName": "VLM-MultiNIC", + "subnetRef1": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "subnetRef2": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET2-NAME", + "nicName1": "NIC1", + "nicName2": "NIC2", + "dnsNameForPublicIP": "[concat('vlm',uniqueString(resourceGroup().id))]", + "imageOffer": "vlm-azure", + "imagePublisher": "kemptech", + "imageVersion": "latest", + "imageSKU": "basic-byol", + "publicIPAddressName": "VLM-MultiNIC" + }, + "resources": [ + { + "comments": "This is the public IP assigned to the NIC on Existing Subnet 1.", + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "VLM-MultiNIC", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('dnsNameForPublicIP')]" + } + } + }, + { + "comments": "This creates the NIC on Existing Subnet 1.", + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "NIC1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/VLM-MultiNIC" + ], + "tags": { + "displayName": "NetworkInterface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VLM-MultiNIC" + }, + "subnet": { + "id": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "comments": "This creates the NIC on Existing Subnet 2.", + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "NIC2", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NetworkInterface2" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET2-NAME" + } + } + } + ] + } + }, + { + "comments": "This creates the KEMP LoadMaster with multiple interfaces.", + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "VLM-MultiNIC", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "plan": { + "name": "imageSku", + "product": "vlm-azure", + "publisher": "kemptech" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/NIC1", + "Microsoft.Network/networkInterfaces/NIC2" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_V2" + }, + "osProfile": { + "computerName": "VLM-MultiNIC", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "kemptech", + "offer": "vlm-azure", + "sku": "basic-byol", + "version": "latest" + }, + "osDisk": { + "name": "VLM-MultiNIC_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/NIC1", + "properties": { + "primary": true + } + }, + { + "id": "Microsoft.Network/networkInterfaces/NIC2", + "properties": { + "primary": false + } + } + ] + } + } + } + ], + "outputs": { + "FQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName')),'2019-11-01').dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT22 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT22 new file mode 100644 index 0000000..ab1987a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT22 @@ -0,0 +1,263 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/airflow/airflow-postgres-app-services/azuredeploy.json", + "/application-workloads/airflow/airflow-postgres-app-services/azuredeploy.parameters.json" + ], + "timestamp": 1642962883483, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/airflow-postgres-app-services/azuredeploy.json", + "/application-workloads/airflow/airflow-postgres-app-services/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT22", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT22", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "airflowWebAppName": { + "type": "string", + "metadata": { + "description": "Name of Airflow web app" + }, + "value": "GEN-UNIQUE" + }, + "administratorLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database administrator login name" + }, + "value": "GEN-UNIQUE-8" + }, + "administratorLoginPassword": { + "type": "securestring", + "minLength": 8, + "maxLength": 128, + "metadata": { + "description": "Database administrator password" + }, + "value": "GEN-PASSWORD" + }, + "databaseSkuCapacity": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 4, + 8, + 16, + 32 + ], + "metadata": { + "description": "Azure database for PostgreSQL compute capacity in vCores (1, 2, 4, 8, 16, 32)" + } + }, + "databaseSkuName": { + "type": "string", + "defaultValue": "B_Gen5_1", + "allowedValues": [ + "GP_Gen5_2", + "GP_Gen5_4", + "GP_Gen5_8", + "GP_Gen5_16", + "GP_Gen5_32", + "MO_Gen5_2", + "MO_Gen5_4", + "MO_Gen5_8", + "MO_Gen5_16", + "MO_Gen5_32", + "B_Gen5_1", + "B_Gen5_2" + ], + "metadata": { + "description": "Azure database for PostgreSQL sku name " + } + }, + "databaseSkuSizeMB": { + "type": "int", + "allowedValues": [ + 102400, + 51200, + 10240, + 5120 + ], + "defaultValue": 5120, + "metadata": { + "description": "Azure database for PostgreSQL Sku Size " + } + }, + "databaseSkuTier": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "GeneralPurpose", + "MemoryOptimized", + "Basic" + ], + "metadata": { + "description": "Azure database for PostgreSQL pricing tier" + } + }, + "databaseskuFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Azure database for PostgreSQL sku family" + } + }, + "postgresqlVersion": { + "type": "string", + "allowedValues": [ + "9.5", + "9.6", + "10", + "11" + ], + "defaultValue": "11", + "metadata": { + "description": "PostgreSQL version" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "databaseName": "GEN-UNIQUEdatabase", + "serverName": "GEN-UNIQUEpgserver", + "hostingPlanName": "GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUEserviceplan", + "location": "[resourceGroup().location]", + "sku": { + "Tier": "Standard", + "Name": "S1" + }, + "properties": { + "name": "GEN-UNIQUEserviceplan", + "workerSize": "1", + "reserved": true, + "numberOfWorkers": 1 + } + }, + { + "comments": "Airflow lauched based on the latest Docker image of apache/airflow.", + "type": "Microsoft.Web/sites", + "apiVersion": "2018-11-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "resources": [ + { + "comments": "This are the generated settings for the Airflow Web App", + "type": "config", + "apiVersion": "2019-08-01", + "name": "appsettings", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE" + ], + "tags": { + "displayName": "Airflow App Settings" + }, + "properties": { + "AIRFLOW__CORE__SQL_ALCHEMY_CONN": "[concat('postgresql://', parameters('administratorLogin'), '@', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName,':', parameters('administratorLoginPassword'),'@',reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('serverName'))).fullyQualifiedDomainName,':5432/',variables('databaseName'))]", + "AIRFLOW__CORE__SQL_ALCHEMY_POOL_SIZE": 20, + "AIRFLOW__CORE__LOAD_EXAMPLES": "true", + "AIRFLOW__CORE__EXECUTOR": "LocalExecutor", + "WEBSITES_ENABLE_APP_SERVICE_STORAGE": "true" + } + } + ], + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan" + ], + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan", + "name": "GEN-UNIQUE", + "siteConfig": { + "linuxFxVersion": "DOCKER|puckel/docker-airflow:latest", + "requestTracingEnabled": true, + "httpLoggingEnabled": true, + "detailedErrorLoggingEnabled": true, + "autoHealEnabled": true + }, + "httpsOnly": true + } + }, + { + "type": "Microsoft.DBforPostgreSQL/servers", + "apiVersion": "2017-12-01", + "name": "GEN-UNIQUEpgserver", + "location": "[resourceGroup().location]", + "sku": { + "name": "B_Gen5_1", + "tier": "Basic", + "capacity": 1, + "size": 5120, + "family": "Gen5" + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2017-12-01", + "name": "GEN-UNIQUEpgserverfirewall", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers/GEN-UNIQUEpgserver" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + }, + { + "type": "databases", + "apiVersion": "2017-12-01", + "name": "GEN-UNIQUEdatabase", + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers/GEN-UNIQUEpgserver" + ], + "properties": { + "charset": "utf8", + "collation": "English_United States.1252" + } + } + ], + "properties": { + "version": "11", + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD", + "storageMB": 5120 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT220 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT220 new file mode 100644 index 0000000..807ce8f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT220 @@ -0,0 +1,369 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/kentico/kentico-xperience-environment/azuredeploy.json", + "/application-workloads/kentico/kentico-xperience-environment/azuredeploy.parameters.json" + ], + "timestamp": 1642962890875, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/kentico/kentico-xperience-environment/azuredeploy.json", + "/application-workloads/kentico/kentico-xperience-environment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT220", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT220", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "hostingPlanLivesite": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the App Service hosting plan for the Web App used to host the live site application." + }, + "value": "GEN-UNIQUE" + }, + "pricingTierLivesite": { + "type": "string", + "defaultValue": "B1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3" + ], + "metadata": { + "description": "Pricing tier of the created App Service hosting plan for the live site application. See the Microsoft Azure App Service documentation for details on pricing." + } + }, + "livesiteName": { + "type": "string", + "defaultValue": "[concat('kentico', uniqueString(resourceGroup().id))]", + "minLength": 1, + "metadata": { + "description": "Name of the Web App hosting the live site application. By default, the deployed Web App will be available at livesiteName.azurewebsites.net. Keep in mind that the name must be unique across the entire Azure environment, not only within your hosting plan." + } + }, + "hostingPlanAdministration": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the App Service hosting plan for the Web App used to host the Kentico Xperience administration application." + }, + "value": "GEN-UNIQUE" + }, + "pricingTierAdministration": { + "type": "string", + "defaultValue": "B1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3" + ], + "metadata": { + "description": "Pricing tier of the created App Service hosting plan for the Kentico Xperience administration project. See the Microsoft Azure App Service documentation for details on pricing." + } + }, + "administrationSiteName": { + "type": "string", + "defaultValue": "[concat('kenticoadmin', uniqueString(resourceGroup().id))]", + "minLength": 1, + "metadata": { + "description": "Name of the Web App hosting the Kentico Xperience administration project. By default, the deployed Web App will be available at AdministrationSiteName.azurewebsites.net. Keep in mind that the name must be unique across the entire Azure environment, not only within your hosting plan." + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "Login for the Azure SQL server administrator. " + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Azure SQL server administrator account. The password is case-sensitive and may contain lower case, upper case, numbers and special characters. The default Azure password complexity rules: minimum length of 8 characters, minimum of 1 uppercase character, minimum of 1 lowercase character, minimum of 1 number. Moreover, the password cannot contain the account name of the user account performing the deployment. The password can be up to 128 characters long." + }, + "value": "GEN-PASSWORD" + }, + "sqlServerName": { + "type": "string", + "defaultValue": "[uniqueString('kenticoserver', resourceGroup().id)]", + "metadata": { + "description": "Server name of the deployed Azure SQL server. The server name can contain only lowercase letters, numbers, and '-', but can't start or end with '-' or have more than 63 characters. Keep in mind that the server name must be unique across the entire Azure environment, not only within your hosting plan." + } + }, + "connectionStringDatabaseName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Database name substituted in the 'Initial Catalog' parameter of the administration and website Web App connection strings. If left empty, the Web Apps are deployed without preconfigured connection strings." + } + }, + "location": { + "type": "string", + "minLength": 1, + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The geographical location to which the resources will be deployed." + } + } + }, + "variables": { + "InstrumentationKey": "microsoft.insights/components/[concat('kentico', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "name": "pid-e3ec0034-3eaf-47a7-bf36-21bcf341b4dd", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2018-05-01/Microsoft.Resources.json" + } + } + }, + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-08-01-preview", + "name": "[uniqueString('kenticoserver', resourceGroup().id)]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "SqlServer" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD" + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2020-08-01-preview", + "name": "AllowAllWindowsAzureIps", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Sql/servers/[uniqueString('kenticoserver', resourceGroup().id)]" + ], + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + } + ] + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HostingPlan" + }, + "sku": { + "name": "B1", + "capacity": 1 + }, + "properties": { + "name": "GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[concat('kentico', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverFarms/GEN-UNIQUE", + "microsoft.insights/components/[concat('kentico', uniqueString(resourceGroup().id))]" + ], + "tags": { + "[format('{0}:{1}', 'hidden-related', resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanLivesite')))]": "empty", + "displayName": "Website" + }, + "properties": { + "name": "[concat('kentico', uniqueString(resourceGroup().id))]", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "minTlsVersion": "1.2", + "siteConfig": { + "connectionStrings": [ + { + "name": "CMSConnectionString", + "connectionString": "[if(empty(parameters('connectionStringDatabaseName')),'',concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('connectionStringDatabaseName'), ';User Id=', parameters('sqlAdministratorLogin'), '@', parameters('sqlServerName'), ';Password=', parameters('sqlAdministratorPassword'), ';'))]", + "type": "SQLServer" + } + ], + "appSettings": [ + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(variables('InstrumentationKey')).InstrumentationKey]" + } + ] + } + } + }, + { + "type": "Microsoft.Insights/autoscalesettings", + "apiVersion": "2015-04-01", + "name": "[concat(parameters('hostingPlanLivesite'), '-', resourceGroup().name)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE" + ], + "tags": { + "[format('{0}:{1}', 'hidden-related', resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanLivesite')))]": "Resource", + "displayName": "AutoScaleSettings" + }, + "properties": { + "profiles": [ + { + "name": "Default", + "capacity": { + "minimum": 1, + "maximum": 2, + "default": 1 + }, + "rules": [ + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 80.0 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT10M" + } + }, + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT1H", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 60.0 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT1H" + } + } + ] + } + ], + "enabled": false, + "name": "[concat(parameters('hostingPlanLivesite'), '-', resourceGroup().name)]", + "targetResourceUri": "Microsoft.Web/serverfarms/GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[concat('kentico', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "tags": { + "[format('{0}:{1}', 'hidden-related', resourceId('Microsoft.Web/sites', parameters('livesiteName')))]": "Resource", + "displayName": "AppInsightsComponent" + }, + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "B1", + "capacity": 1 + }, + "tags": { + "displayName": "HostingPlan" + }, + "properties": { + "name": "GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-06-01", + "name": "[concat('kenticoadmin', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE" + ], + "tags": { + "[format('{0}:{1}', 'hidden-related', resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanAdministration')))]": "Resource", + "displayName": "Administration" + }, + "properties": { + "name": "[concat('kenticoadmin', uniqueString(resourceGroup().id))]", + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE", + "minTlsVersion": "1.2", + "siteConfig": { + "connectionStrings": [ + { + "name": "CMSConnectionString", + "connectionString": "[if(empty(parameters('connectionStringDatabaseName')),'',concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', parameters('sqlServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('connectionStringDatabaseName'), ';User Id=', parameters('sqlAdministratorLogin'), '@', parameters('sqlServerName'), ';Password=', parameters('sqlAdministratorPassword'), ';'))]", + "type": "SQLServer" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT221 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT221 new file mode 100644 index 0000000..bdd9a53 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT221 @@ -0,0 +1,1077 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lansa/lansa-vmss-windows-autoscale-sql-database/azuredeploy.json", + "/application-workloads/lansa/lansa-vmss-windows-autoscale-sql-database/azuredeploy.parameters.json" + ], + "timestamp": 1642962890911, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lansa/lansa-vmss-windows-autoscale-sql-database/azuredeploy.json", + "/application-workloads/lansa/lansa-vmss-windows-autoscale-sql-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT221", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT221", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Resource Group Location." + } + }, + "msiURL": { + "type": "string", + "metadata": { + "description": "URL of the LANSA MSI which will be installed on each virtual machine." + }, + "value": "https://lansalpcmsdn.blob.core.windows.net/app/test/AWAMAPP_v14.1.2_en-us.msi" + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_B4ms", + "metadata": { + "description": "Size of the Virtual Machines in the Virtual Machine Scale Set." + } + }, + "dbVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_B2ms", + "metadata": { + "description": "Size of the Virtual Machine which manages the database." + } + }, + "stackName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended. Some identifiers use precisely 9 characters from this name and so it can be useful to use exactly 9. The template pads it out or truncates it as necessary to make it 9 characters long where required." + }, + "minLength": 3, + "maxLength": 61, + "value": "GEN-UNIQUE-10" + }, + "applicationGatewaySkuTier": { + "type": "string", + "allowedValues": [ + "Standard", + "WAF" + ], + "defaultValue": "Standard", + "metadata": { + "description": "Application Gateway SKU Tier" + } + }, + "applicationGatewaySkuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large", + "WAF_Medium", + "WAF_Large", + "WAF_v2" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Application Gateway SKU Name" + } + }, + "applicationGatewayCapacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of Application Gateway instances" + } + }, + "certificateBase64Encoded": { + "type": "string", + "metadata": { + "description": "Base 64 encoded String representing the SSL certificate" + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certificatePassword": { + "type": "securestring", + "metadata": { + "description": "SSL certificate password" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "minimumInstanceCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Minimum number of Virtual Machine instances (1 or more)." + }, + "minValue": 1, + "maxValue": 100 + }, + "maximumInstanceCount": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "Maximum number of Virtual Machine instances (100 or less)." + }, + "minValue": 1, + "maxValue": 100 + }, + "databaseNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether a new SQL database should be provisioned or to use an existing database. Parameters which are relevant to choosing 'new' are prefixed 'New DB'. Parameters which are relevant to choosing 'existing' are prefixed 'Existing DB'." + } + }, + "databaseType": { + "type": "string", + "defaultValue": "SQLAZURE", + "allowedValues": [ + "MSSQLS", + "SQLAZURE", + "MYSQL" + ], + "metadata": { + "description": "Existing DB. Refer to LANSA documentation for an explanation of each Database Type and the supported versions of the database servers. DO NOT CHANGE THIS IF CREATING A NEW DATABASE. IT MUST BE SET TO SQLAZURE." + } + }, + "databaseServerName": { + "type": "string", + "defaultValue": "lansa", + "metadata": { + "description": "Existing DB. The name of the existing Database Server to connect to. If the name has /MSSQLSERVER appended, omit it." + }, + "value": "GEN-UNIQUE-10" + }, + "databaseName": { + "type": "string", + "defaultValue": "lansa", + "metadata": { + "description": "The name of the new database to create or name of the existing database to connect to." + } + }, + "databaseLogin": { + "type": "string", + "metadata": { + "description": "The admin user of the Azure SQL Database" + }, + "value": "GEN-UNIQUE-10" + }, + "databaseLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the admin user of the Azure SQL Database" + }, + "value": "GEN-PASSWORD" + }, + "collation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "New DB. The new database collation for governing the proper use of characters." + } + }, + "edition": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "New DB. The type of database to create." + } + }, + "requestedServiceObjectiveName": { + "type": "string", + "defaultValue": "S2", + "allowedValues": [ + "Basic", + "S0", + "S1", + "S2", + "S3", + "S4", + "S6", + "S7", + "S9", + "S12", + "P1", + "P2", + "P4", + "P6", + "P11", + "P15" + ], + "metadata": { + "description": "New DB. Describes the performance level for Edition" + } + }, + "maxSizeBytes": { + "type": "string", + "defaultValue": "1073741824", + "metadata": { + "description": "New DB. The maximum size, in bytes, for the new database" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN_UNIQUE-10" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "webUsername": { + "type": "string", + "metadata": { + "description": "Web Server username on all VMs. This must be different to the Admin Username." + }, + "value": "GEN_UNIQUE-10" + }, + "webPassword": { + "type": "securestring", + "metadata": { + "description": "Web Server password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "webServerMaxConnect": { + "type": "string", + "defaultValue": "20", + "metadata": { + "description": "The maximum number of LANSA jobs to run on each Web Server. Setting triggerWebConfig will cause this value to be updated." + } + }, + "installMSI": { + "type": "string", + "defaultValue": "0", + "metadata": { + "description": "Install the MSI: Set this to 1 to execute an MSI install. Usually set to 0 when updating the stack" + } + }, + "updateMSI": { + "type": "string", + "defaultValue": "0", + "metadata": { + "description": "Update Stack: Set this to 1 to execute an MSI Upgrade. Obtains the specified MSI and installs it. Ensure the LansaMSI parameter is set correctly. If the LansaMSI parameter is not different a repair will be performed" + } + }, + "uninstallMSI": { + "type": "string", + "defaultValue": "0", + "metadata": { + "description": "Uninstall the MSI: Set this to 1 to uninstall the MSI. The MSI used to uninstall, is the last one that was installed. It is called c:\\lansa\\MyApp.msi" + } + }, + "triggerWebConfig": { + "type": "string", + "defaultValue": "0", + "metadata": { + "description": "Update Stack: Set this to 1 to update the web configuration" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "lansa-scalable-license", + "allowedValues": [ + "lansa-scalable-license", + "lansa-scalable-license-preview" + ], + "metadata": { + "description": "The offer of the image. Allowed values: lansa-scalable-license, lansa-scalable-license-preview" + } + }, + "gitBranch": { + "type": "string", + "defaultValue": "support/L4W14200_scalable", + "metadata": { + "description": "Git Branch" + } + }, + "trace": { + "type": "string", + "defaultValue": "N", + "allowedValues": [ + "Y", + "N" + ], + "metadata": { + "description": "Switch tracing on. Allowed values Y or N" + } + }, + "fixLicense": { + "type": "string", + "defaultValue": "0", + "metadata": { + "description": "Re-run licensing. It is unlikely that this parameter needs to be used" + } + } + }, + "variables": { + "isNewDatabase": false, + "namingInfix": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('stackName'))]", + "dblongNamingInfix": "[toLower(concat('db',parameters('stackName')))]", + "aglongNamingInfix": "[toLower(concat('ag',parameters('stackName')))]", + "dbvmssName": "[toLower(substring(concat('db',parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "dbpublicIPAddressName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbpip", + "subnetName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "loadBalancerName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "lbFrontEndName": "LoadBalancerFrontEnd", + "lbProbeName": "LoadBalancerProbe", + "dbloadBalancerName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dblb", + "dblbFrontEndName": "dbLoadBalancerFrontEnd", + "dblbProbeName": "dbLoadBalancerProbe", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "dbpublicIPAddressID": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbpip", + "natPoolName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "bePoolName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "dbbePoolName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbbepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 3389, + "nicName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb/LoadBalancerFrontEnd", + "imagePublisher": "lansa", + "imageSku": "lansa-scalable-license-14-2", + "osType": { + "publisher": "lansa", + "offer": "lansa-scalable-license", + "sku": "lansa-scalable-license-14-2", + "version": "latest" + }, + "imageReference": { + "publisher": "lansa", + "offer": "lansa-scalable-license", + "sku": "lansa-scalable-license-14-2", + "version": "latest" + }, + "sqlserverName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]sqlserver", + "gitRepo": "https://raw.githubusercontent.com/robe070/cookbooks/", + "gitRefreshName": "git-pull.ps1", + "gitRefreshUri": "https://raw.githubusercontent.com/robe070/cookbooks/support/L4W14200_scalable/scripts/git-pull.ps1", + "q": "'", + "agPublicIPAddressName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpip", + "agPublicIPAddressID": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpip", + "agSubnetPrefix": "10.0.1.0/24", + "agSubnetName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agsubnet", + "agSubnetID": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/agsubnetName", + "agName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag", + "agHttpListenerName": "appGatewayHttpListener", + "agFrontendIPName": "appGatewayFrontendIP", + "agFrontendPortName": "appGatewayFrontendPort", + "agSslCertName": "appGatewaySslCert", + "agBackendHttpSettingsName": "appGatewayBackendHttpSettings", + "agBackendAddressPoolName": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpool" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2019-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agsubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2019-08-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('stackName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2019-08-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ], + "loadBalancingRules": [ + { + "name": "lbrule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadbalancerName/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadbalancerName/LoadBalancerProbe" + }, + "protocol": "Tcp", + "loadDistribution": "SourceIP", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15 + } + } + ], + "probes": [ + { + "name": "LoadBalancerProbe", + "properties": { + "protocol": "Http", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 2, + "requestPath": "cgi-bin/probe" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbpip", + "location": "[resourceGroup().location]", + "apiVersion": "2019-08-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat('db',parameters('stackName')))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dblb", + "location": "[resourceGroup().location]", + "apiVersion": "2019-08-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbpip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "dbLoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbpip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbbepool" + } + ], + "loadBalancingRules": [ + { + "name": "lbrule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dblb/dbLoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dblb/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbbepool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dblb/dbLoadBalancerProbe" + }, + "protocol": "Tcp", + "loadDistribution": "SourceIP", + "frontendPort": 50000, + "backendPort": 3389, + "idleTimeoutInMinutes": 15 + } + } + ], + "probes": [ + { + "name": "dbLoadBalancerProbe", + "properties": { + "protocol": "Tcp", + "port": 3389, + "intervalInSeconds": 15, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat('db',parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2019-07-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "Microsoft.Sql/servers//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]sqlserver", + "Microsoft.Sql/servers/databases//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]sqlserver/lansa", + "Microsoft.Network/applicationGateways//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag" + ], + "sku": { + "name": "Standard_B2ms", + "tier": "Standard", + "capacity": 1 + }, + "plan": { + "name": "imageSKU", + "product": "lansa-scalable-license", + "publisher": "lansa" + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "lansa", + "offer": "lansa-scalable-license", + "sku": "lansa-scalable-license-14-2", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat('db',parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN_UNIQUE-10", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVMAgent": true + } + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "db[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "db[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dblb/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]dbbepool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "FirstInstall", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "000UninstallMSI0Nsupport/L4W14200_scalable", + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/robe070/cookbooks/support/L4W14200_scalable/scripts/git-pull.ps1" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('powershell -NoProfile -ExecutionPolicy unrestricted -command \"& {pushd;./',variables('gitRefreshName'), ' ', parameters('gitBranch'), ';popd;', 'pushd;c:\\lansa\\scripts\\azure-custom-script.ps1 ', '-server_name ',variables('Q'), if(variables('isNewDatabase'), reference(variables('sqlserverName')).fullyQualifiedDomainName, parameters('databaseServerName')), variables('Q'), ' -DBUT ', variables('Q'), parameters('databaseType'), variables('Q'), ' -dbname ', variables('Q'), parameters('databaseName'), variables('Q'), ' -dbuser ', variables('Q'), parameters('databaseLogin'), variables('Q'), ' -dbpassword ', variables('Q'), parameters('databaseLoginPassword'), variables('Q'), ' -webuser ', variables('Q'), parameters('webUsername'), variables('Q'), ' -webpassword ', variables('Q'), parameters('webPassword'), variables('Q'), ' -MSIuri ', variables('Q'), parameters('msiURL'), variables('Q'), ' -maxconnections ', variables('Q'), parameters('webServerMaxConnect'), variables('Q'), ' -trace ', variables('Q'), parameters('trace'), variables('Q'), ' -installMSI ', variables('Q'), parameters('installMSI'), variables('Q'), ' -updateMSI ', variables('Q'), parameters('updateMSI'), variables('Q'),' -triggerWebConfig ', variables('Q'), parameters('triggerWebConfig'), variables('Q'),' -UninstallMSI ', variables('Q'), parameters('UninstallMSI'), variables('Q'), ' -fixLicense ', variables('Q'), parameters('fixLicense'), variables('Q'), ';if ($LASTEXITCODE -ne 0) {Write-Error (\"MSI Install failed\");exit $LASTEXITCODE}; exit 0;popd;}\"')]" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2019-07-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "Microsoft.Sql/servers//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]sqlserver", + "Microsoft.Sql/servers/databases//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]sqlserver/lansa", + "Microsoft.Compute/virtualMachineScaleSets//[toLower(substring(concat('db',parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]" + ], + "sku": { + "name": "Standard_B4ms", + "tier": "Standard", + "capacity": 1 + }, + "plan": { + "name": "imageSKU", + "product": "lansa-scalable-license", + "publisher": "lansa" + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "lansa", + "offer": "lansa-scalable-license", + "sku": "lansa-scalable-license-14-2", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN_UNIQUE-10", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVMAgent": true + } + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]natpool" + } + ], + "applicationGatewayBackendAddressPools": [ + { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "MainInstall", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "000UninstallMSI0Nsupport/L4W14200_scalable", + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/robe070/cookbooks/support/L4W14200_scalable/scripts/git-pull.ps1" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('powershell -NoProfile -ExecutionPolicy unrestricted -command \"& {pushd;./',variables('gitRefreshName'), ' ', parameters('gitBranch'), ';popd;', 'pushd;c:\\lansa\\scripts\\azure-custom-script.ps1 ', '-SUDB \"0\" -server_name ', variables('Q'), if(variables('isNewDatabase'), reference(variables('sqlserverName')).fullyQualifiedDomainName, parameters('databaseServerName')), variables('Q'), ' -DBUT ', variables('Q'), parameters('databaseType'), variables('Q'), ' -dbname ', variables('Q'), parameters('databaseName'), variables('Q'), ' -dbuser ', variables('Q'), parameters('databaseLogin'), variables('Q'), ' -dbpassword ', variables('Q'), parameters('databaseLoginPassword'), variables('Q'), ' -webuser ', variables('Q'), parameters('webUsername'), variables('Q'), ' -webpassword ', variables('Q'), parameters('webPassword'), variables('Q'), ' -MSIuri ', variables('Q'), parameters('msiURL'), variables('Q'), ' -maxconnections ', variables('Q'), parameters('webServerMaxConnect'), variables('Q'), ' -trace ', variables('Q'), parameters('trace'), variables('Q'), ' -installMSI ', variables('Q'), parameters('installMSI'), variables('Q'), ' -updateMSI ', variables('Q'), parameters('updateMSI'), variables('Q'),' -triggerWebConfig ', variables('Q'), parameters('triggerWebConfig'), variables('Q'), ' -UninstallMSI ', variables('Q'), parameters('UninstallMSI'), variables('Q'), ' -fixLicense ', variables('Q'), parameters('fixLicense'), variables('Q'), ';if ($LASTEXITCODE -ne 0) {Write-Error (\"MSI Install failed\");exit $LASTEXITCODE}; exit 0;popd;}\"')]" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "autoscalehost", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[ResourceId('Microsoft.Compute/virtualMachineScaleSets', variables('namingInfix'))]" + ], + "properties": { + "name": "autoscalehost", + "targetResourceUri": "[ResourceId('Microsoft.Compute/virtualMachineScaleSets', variables('namingInfix'))]", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": 1, + "maximum": 100, + "default": 1 + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "[ResourceId('Microsoft.Compute/virtualMachineScaleSets', variables('namingInfix'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 60.0 + }, + "scaleAction": { + "direction": "Increase", + "type": "PercentChangeCount", + "value": "10", + "cooldown": "PT20M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "[ResourceId('Microsoft.Compute/virtualMachineScaleSets', variables('namingInfix'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30.0 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT20M" + } + } + ] + } + ] + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "[toLower(substring(concat('db',parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat('db',parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]" + ], + "properties": { + "name": "[toLower(substring(concat('db',parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat('db',parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]", + "enabled": true, + "profiles": [ + { + "name": "Single Fixed Instance", + "capacity": { + "minimum": "1", + "maximum": "1", + "default": "1" + } + } + ] + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat('ag',parameters('stackName')))]" + } + } + }, + { + "apiVersion": "2019-04-01", + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpip" + ], + "properties": { + "sku": { + "tier": "Standard", + "name": "Standard_Medium", + "capacity": 2 + }, + "sslCertificates": [ + { + "name": "appGatewaySslCert", + "properties": { + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/agsubnetName" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpip" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 443 + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpool" + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Enabled", + "RequestTimeout": 120 + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationgateways/frontendIPConfigurations/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationgateways/frontendPorts/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag/appGatewayFrontendPort" + }, + "Protocol": "Https", + "SslCertificate": { + "Id": "Microsoft.Network/applicationgateways/sslCertificates/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag/appGatewaySslCert" + } + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationgateways/httpListeners/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationgateways/backendAddressPools/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-agpool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationgateways/backendHttpSettingsCollection/[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]-ag/appGatewayBackendHttpSettings" + } + } + } + ] + } + }, + { + "condition": false, + "name": "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]sqlserver", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "tags": { + "displayName": "SqlServer" + }, + "apiVersion": "2018-06-01-preview", + "properties": { + "administratorLogin": "GEN-UNIQUE-10", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "condition": false, + "name": "lansa", + "type": "databases", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Database" + }, + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]sqlserver" + ], + "properties": { + "edition": "Standard", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "S2" + } + }, + { + "condition": false, + "type": "firewallRules", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "[toLower(substring(concat(parameters('stackName'), uniqueString(resourceGroup().id)), 0, 9))]sqlserver" + ], + "location": "[resourceGroup().location]", + "name": "AllowAllIps", + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + } + ] + } + ], + "outputs": { + "dbServerName": { + "type": "string", + "value": "[if(variables('isNewDatabase'), reference(variables('sqlserverName')).fullyQualifiedDomainName, parameters('databaseServerName'))]" + }, + "dbName": { + "type": "string", + "value": "[parameters('databaseName')]" + }, + "lbFqdn": { + "type": "string", + "value": "[concat('https://', reference(variables('agPublicIPAddressName')).dnsSettings.fqdn)]" + }, + "dbrdpAddress": { + "type": "string", + "value": "[concat(reference(variables('dbpublicIPAddressName')).dnsSettings.fqdn, ':50000')]" + }, + "rdpAddress": { + "type": "string", + "value": "[concat(reference(variables('publicIPAddressName')).dnsSettings.fqdn, ':50000')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT222 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT222 new file mode 100644 index 0000000..77dd4fc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT222 @@ -0,0 +1,325 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890944, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT222", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT222", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "dnsNamePrefix": { + "type": "string", + "defaultValue": "[concat('lap-mysql-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS Name for the publicly accessible Lap node. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + } + }, + "lapVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning the Lap node" + } + }, + "mysqlNodes": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of Mysql node (1 is the default)" + } + }, + "mysqlVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning Mysql node(s)" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "lampLapTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('lamplap-resources.json', parameters('_artifactsLocationSasToken')))]", + "lampMysqlTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('lampmysql-resources.json', parameters('_artifactsLocationSasToken')))]", + "virtualNetworkName": "virtualNetwork", + "namespace": "lamp-", + "networkSettings": { + "virtualNetworkName": "virtualNetwork", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "virtualNetwork" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "lapip": "10.0.0.240", + "mysqlip": "10.0.0.10" + } + }, + "lapOsSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('install-lap.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "mysqlOsSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('install-mysql.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-05-10", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "virtualNetwork", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "virtualNetwork" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "lapip": "10.0.0.240", + "mysqlip": "10.0.0.10" + } + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "lampLapNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-05-10", + "dependsOn": [ + "shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('lamplap-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "lamp-" + }, + "vmbasename": { + "value": "lap" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "dnsname": { + "value": "[concat('lap-mysql-', uniqueString(resourceGroup().id))]" + }, + "staticIp": { + "value": "(networkSettings).statics.lapip" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('install-lap.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "lampMysqlNodecopyindex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-05-10", + "dependsOn": [ + "shared", + "lampLapNode" + ], + "copy": { + "name": "vmLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('lampmysql-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "lamp-" + }, + "vmbasename": { + "value": "mysqlcopyindex()" + }, + "lapNode": { + "value": "(networkSettings).statics.lapip" + }, + "mysqlstaticIp": { + "value": "(networkSettings).statics.mysqlip" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('install-mysql.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT223 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT223 new file mode 100644 index 0000000..3303d69 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT223 @@ -0,0 +1,260 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/lamplap-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890987, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/lamplap-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT223", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT223", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]", + "securityGroupName": "namespacevmbasenamensg", + "publicIpName": "namespacevmbasenamePublicIp", + "availabilitySetName": "namespaceset", + "nicName": "namespacevmbasenamenic", + "vmName": "namespacevmbasenamevm", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HTTP", + "properties": { + "description": "Allows HTTP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsname" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "namespacevmbasenamePublicIp", + "namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "namespacevmbasenamenic", + "namespaceset" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2021-01-01').primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/lampInstall", + "location": "location", + "dependsOn": [ + "namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash install-lap.sh 10.0.0.10" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT224 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT224 new file mode 100644 index 0000000..e6a8982 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT224 @@ -0,0 +1,196 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/lampmysql-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962890999, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/lampmysql-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT224", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT224", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "lapNode": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "mysqlstaticIp": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring", + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]", + "availabilitySetName": "namespaceset", + "nicName": "namespacevmbasenamenic", + "vmName": "namespacevmbasenamevm", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "mysqlstaticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "namespacevmbasenamenic", + "namespaceset" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2021-01-01').primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/lampInstall", + "location": "location", + "dependsOn": [ + "namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash install-mysql.sh lapNode" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT225 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT225 new file mode 100644 index 0000000..25df5e1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT225 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/shared-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962891010, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-mysql-ubuntu/shared-resources.json", + "/application-workloads/lap/lap-mysql-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT225", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT225", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "location", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT226 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT226 new file mode 100644 index 0000000..e562161 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT226 @@ -0,0 +1,233 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/lanplap-resources.json" + ], + "timestamp": 1642962891017, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/lanplap-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT226", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT226", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HTTP", + "properties": { + "description": "Allows HTTP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsname" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location" + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//namespacevmbasenamePublicIp", + "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/lampInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "sudo bash install-lap.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT227 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT227 new file mode 100644 index 0000000..8c8ff6c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT227 @@ -0,0 +1,168 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/lanpneo4j-resources.json" + ], + "timestamp": 1642962891025, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/lanpneo4j-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT227", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT227", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "neo4jstaticIp": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location" + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "neo4jstaticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/lampInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings", + "commandToExecute": "bash install-neo4j.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT228 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT228 new file mode 100644 index 0000000..4d7fd41 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT228 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/shared-resources.json" + ], + "timestamp": 1642962891032, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT228", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT228", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNet", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT229 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT229 new file mode 100644 index 0000000..1463da2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT229 @@ -0,0 +1,322 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/azuredeploy.json", + "/application-workloads/lap/lap-neo4j-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962891040, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/lap/lap-neo4j-ubuntu/azuredeploy.json", + "/application-workloads/lap/lap-neo4j-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT229", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT229", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "lapVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning the Lap node" + }, + "value": "Standard_D2_v3" + }, + "neo4jNodes": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of Neo4J node (1 is the default)" + }, + "value": 1 + }, + "neo4jVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning Neo4J node(s)" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "lanpLapTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/lanplap-resources.json', parameters('_artifactsLocationSasToken')))]", + "lanpneo4jTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/lanpneo4j-resources.json', parameters('_artifactsLocationSasToken')))]", + "namespace": "lanp-", + "networkSettings": { + "virtualNetworkName": "myVNET", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "myVNET" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "lapip": "10.0.0.240", + "neo4jip": "10.0.0.10" + } + }, + "lapOsSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install-lap.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "neo4jOsSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install-neo4j.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "myVNET", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "myVNET" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "lapip": "10.0.0.240", + "neo4jip": "10.0.0.10" + } + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "lanpLapNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/lanplap-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "lanp-" + }, + "vmbasename": { + "value": "Lap" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "dnsname": { + "value": "GEN-UNIQUE" + }, + "staticIp": { + "value": "(networkSettings).statics.lapip" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install-lap.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "lanpNeo4jNodecopyindex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//lanpLapNode" + ], + "copy": { + "name": "vmLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/lanpneo4j-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "lanp-" + }, + "vmbasename": { + "value": "neo4jcopyindex()" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "neo4jstaticIp": { + "value": "(networkSettings).statics.neo4jip" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install-neo4j.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT23 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT23 new file mode 100644 index 0000000..6e616f9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT23 @@ -0,0 +1,203 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/config-resources.json" + ], + "timestamp": 1642962883490, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/config-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT23", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT23", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mongoAdminUsername": { + "type": "string" + }, + "mongoAdminPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "numDataDisks": { + "type": "int" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "subnet": { + "type": "object" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "roleType": { + "type": "string" + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + }, + "routerDnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Dns prefix of the router node to be used to create the ssl cert" + } + }, + "mongoSSLCertPassword": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": "numDataDisks", + "input": { + "name": "[concat(parameters('namespace'), parameters('vmbasename'), 'vm', '_datadisk', copyIndex('dataDisks',1))]", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": "[copyIndex('dataDisks')]", + "caching": "ReadWrite", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/configroleTypeInstall", + "apiVersion": "2019-03-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "[if(equals(parameters('roleType'),'Primary'), concat('bash config_primary.sh ', parameters('mongoAdminUsername'), ' ', parameters('mongoAdminPassword'), ' ', parameters('routerDnsNamePrefix'), ' ', parameters('mongoSSLCertPassword')), concat('bash config_secondary.sh ', parameters('routerDnsNamePrefix'), ' ', parameters('mongoSSLCertPassword')))]" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT230 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT230 new file mode 100644 index 0000000..ab1219d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT230 @@ -0,0 +1,277 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/controller.json" + ], + "timestamp": 1642962891049, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/controller.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT230", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT230", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + }, + "ctlrPubIpId": { + "metadata": { + "description": "Resource ID of the controller VM public IP address" + }, + "type": "string" + }, + "siteFQDN": { + "metadata": { + "description": "FQDN of public IP address" + }, + "type": "string" + }, + "dbLoginPassword": { + "metadata": { + "description": "Database admin password" + }, + "type": "securestring" + }, + "maharaAdminPass": { + "metadata": { + "description": "Mahara admin password" + }, + "type": "securestring" + }, + "maharaDbPass": { + "metadata": { + "description": "Mahara database password" + }, + "type": "securestring" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "securityRules": [ + { + "name": "Allow_SSH", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "22", + "direction": "Inbound", + "priority": 1000, + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*" + } + }, + { + "name": "Allow_http", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "80", + "direction": "Inbound", + "priority": 1005, + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*" + } + } + ] + }, + "tags": { + "displayName": "Controller NSG" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/maharaCommon" + }, + "ipConfigurations": [ + { + "name": "ipcfgctlr", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "ctlrPubIpId" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + } + } + } + ] + }, + "tags": { + "displayName": "ctlrNic" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "hardwareProfile": { + "vmSize": "maharaCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/maharaCommon" + } + ] + }, + "osProfile": { + "adminUsername": "maharaCommon", + "computerName": "maharaCommon", + "secrets": "maharaCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/maharaCommon/.ssh/authorized_keys", + "keyData": "maharaCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "maharaCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "name": "maharaCommon" + }, + "dataDisks": "[take(variables('nfsDiskArray'),if(equals(parameters('maharaCommon').fileServerType,'nfs'), parameters('maharaCommon').fileServerDiskCount, 0))]" + } + }, + "tags": { + "displayName": "Controller Virtual Machine" + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommon" + ], + "name": "maharaCommon-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + }, + "siteFQDN": { + "value": "siteFQDN" + }, + "dbLoginPassword": { + "value": "dbLoginPassword" + }, + "maharaDbPass": { + "value": "maharaDbPass" + }, + "maharaAdminPass": { + "value": "maharaAdminPass" + } + }, + "templateLink": { + "uri": "maharaCommoncontrollerconfig.jsonmaharaCommon" + } + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommon" + ], + "name": "maharaCommon-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + }, + "vmName": { + "value": "maharaCommon" + } + }, + "templateLink": { + "uri": "maharaCommonrecoveryservicesEnlist.jsonmaharaCommon" + } + } + } + ], + "variables": { + "nicRef": "Microsoft.Network/networkInterfaces/maharaCommon", + "nsgRef": "Microsoft.Network/networkSecurityGroups/maharaCommon", + "subnetWebRef": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon", + "copy": [ + { + "name": "nfsDiskArray", + "count": 8, + "input": { + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": "maharaCommon", + "lun": "[copyIndex('nfsDiskArray')]", + "createOption": "Empty" + } + } + ] + }, + "outputs": { + "controllerIP": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('maharaCommon').ctlrPipName), '2020-11-01').ipAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT231 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT231 new file mode 100644 index 0000000..b6b60b0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT231 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/controllerconfig.json" + ], + "timestamp": 1642962891059, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/controllerconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT231", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT231", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + }, + "siteFQDN": { + "metadata": { + "description": "FQDN of public IP address" + }, + "type": "string" + }, + "dbLoginPassword": { + "metadata": { + "description": "Database admin password" + }, + "type": "securestring" + }, + "maharaDbPass": { + "metadata": { + "description": "Mahara database password" + }, + "type": "securestring" + }, + "maharaAdminPass": { + "metadata": { + "description": "Mahara admin password" + }, + "type": "securestring" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "maharaCommon", + "name": "maharaCommon/install_mahara", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "maharaCommonmaharaCommonmaharaCommon", + "maharaCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', parameters('maharaCommon').maharaInstallScriptFilename, ' ', parameters('maharaCommon').maharaVersion, ' ', concat(parameters('maharaCommon').gfsNameRoot, '0'), ' ', 'data', ' ', parameters('maharaCommon').siteURL, ' ', parameters('maharaCommon').httpsTermination, ' ', parameters('maharaCommon').dbDNS, ' ', parameters('maharaCommon').maharaDbName, ' ', parameters('maharaCommon').maharaDbUser, ' ', parameters('maharaDbPass'), ' ', parameters('maharaAdminPass'), ' ', concat(parameters('maharaCommon').dbLogin, '@', parameters('maharaCommon').dbServerType, '-', parameters('maharaCommon').resourcesPrefix), ' ', parameters('dbLoginPassword'), ' ', parameters('maharaCommon').storageAccountName, ' ', listKeys(variables('storageAccountId'), '2021-02-01').keys[0].value, ' ', parameters('maharaCommon').maharaDbUserAzure, ' ', parameters('maharaCommon').elasticVm1IP, ' ', parameters('maharaCommon').dbServerType, ' ', parameters('maharaCommon').fileServerType , ' ', parameters('maharaCommon').thumbprintSslCert, ' ', parameters('maharaCommon').thumbprintCaCert, ' ', parameters('maharaCommon').searchType, ' ' , parameters('siteFQDN'))]" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "install_mahara" + } + } + ], + "variables": { + "scriptUri": "maharaCommonmaharaCommonmaharaCommon", + "storageAccountId": "Microsoft.Storage/storageAccounts/maharaCommon" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT232 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT232 new file mode 100644 index 0000000..6399503 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT232 @@ -0,0 +1,396 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/elastic-search.json" + ], + "timestamp": 1642962891067, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/elastic-search.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT232", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT232", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfg-elastic1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "maharaCommon", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + } + } + } + ] + }, + "tags": { + "displayName": "Elastic NIC 1" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "hardwareProfile": { + "vmSize": "maharaCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/maharaCommon" + } + ] + }, + "osProfile": { + "adminUsername": "maharaCommon", + "computerName": "maharaCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/maharaCommon/.ssh/authorized_keys", + "keyData": "maharaCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "maharaCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "name": "maharaCommon" + } + } + }, + "tags": { + "displayName": "Elastic Search Virtual Machine" + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommon" + ], + "name": "maharaCommon-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + } + }, + "templateLink": { + "uri": "maharaCommonelasticconfig.jsonmaharaCommon" + } + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommon" + ], + "name": "maharaCommon-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + }, + "vmName": { + "value": "maharaCommon" + } + }, + "templateLink": { + "uri": "maharaCommonrecoveryservicesEnlist.jsonmaharaCommon" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfg-elastic2", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "maharaCommon", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + } + } + } + ] + }, + "tags": { + "displayName": "Elastic NIC 2" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "hardwareProfile": { + "vmSize": "maharaCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/maharaCommon" + } + ] + }, + "osProfile": { + "adminUsername": "maharaCommon", + "computerName": "maharaCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/maharaCommon/.ssh/authorized_keys", + "keyData": "maharaCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "maharaCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "name": "maharaCommon" + } + } + }, + "tags": { + "displayName": "Elastic Search Virtual Machine" + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommon" + ], + "name": "maharaCommon-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + } + }, + "templateLink": { + "uri": "maharaCommonelasticconfig.jsonmaharaCommon" + } + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommon" + ], + "name": "maharaCommon-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + }, + "vmName": { + "value": "maharaCommon" + } + }, + "templateLink": { + "uri": "maharaCommonrecoveryservicesEnlist.jsonmaharaCommon" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfg-elastic3", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "maharaCommon", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + } + } + } + ] + }, + "tags": { + "displayName": "Elastic NIC 2" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "hardwareProfile": { + "vmSize": "maharaCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/maharaCommon" + } + ] + }, + "osProfile": { + "adminUsername": "maharaCommon", + "computerName": "maharaCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/maharaCommon/.ssh/authorized_keys", + "keyData": "maharaCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "maharaCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "name": "maharaCommon" + } + } + }, + "tags": { + "displayName": "Elastic Search Virtual Machine" + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommon" + ], + "name": "maharaCommon-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + } + }, + "templateLink": { + "uri": "maharaCommonelasticconfig.jsonmaharaCommon" + } + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommon" + ], + "name": "maharaCommon-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + }, + "vmName": { + "value": "maharaCommon" + } + }, + "templateLink": { + "uri": "maharaCommonrecoveryservicesEnlist.jsonmaharaCommon" + } + } + } + ], + "variables": { + "nicRef1": "Microsoft.Network/networkInterfaces/maharaCommon", + "nicRef2": "Microsoft.Network/networkInterfaces/maharaCommon", + "nicRef3": "Microsoft.Network/networkInterfaces/maharaCommon", + "subnetElasticRef": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT233 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT233 new file mode 100644 index 0000000..48d34b9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT233 @@ -0,0 +1,116 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/elasticconfig.json" + ], + "timestamp": 1642962891081, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/elasticconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT233", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT233", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "maharaCommon", + "name": "maharaCommon/install_elastic", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "maharaCommonmaharaCommonmaharaCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "bash maharaCommon maharaCommon maharaCommon maharaCommon maharaCommon" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "install_elastic" + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "maharaCommon", + "name": "maharaCommon/install_elastic", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "maharaCommonmaharaCommonmaharaCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "bash maharaCommon maharaCommon maharaCommon maharaCommon maharaCommon" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "install_elastic" + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "maharaCommon", + "name": "maharaCommon/install_elastic", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "maharaCommonmaharaCommonmaharaCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "bash maharaCommon maharaCommon maharaCommon maharaCommon maharaCommon" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "install_elastic" + } + } + ], + "variables": { + "cmdExec": "bash maharaCommon maharaCommon maharaCommon maharaCommon maharaCommon", + "scriptUri": "maharaCommonmaharaCommonmaharaCommon" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT234 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT234 new file mode 100644 index 0000000..5be2207 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT234 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/gluster.json" + ], + "timestamp": 1642962891106, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/gluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT234", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT234", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2020-12-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + }, + "sku": { + "name": "Aligned" + }, + "tags": { + "displayName": "Gluster Availability Set" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "copy": { + "count": "maharaCommon", + "name": "vmloop" + }, + "dependsOn": [ + "Microsoft.Compute/availabilitySets//maharaCommon" + ], + "name": "glustervmcopyindex()", + "properties": { + "mode": "Incremental", + "parameters": { + "counter": { + "value": "[copyindex()]" + }, + "maharaCommon": { + "value": "maharaCommon" + } + }, + "templateLink": { + "uri": "maharaCommonglustervm.jsonmaharaCommon" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT235 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT235 new file mode 100644 index 0000000..149414e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT235 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/glustervm.json" + ], + "timestamp": 1642962891117, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/glustervm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT235", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT235", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "counter": { + "metadata": { + "description": "from the copyindex function of calling template" + }, + "type": "int" + }, + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommoncounter-nic", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfggfs", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + } + } + } + ] + }, + "tags": { + "displayName": "Gluster VM NIC" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//maharaCommoncounter-nic" + ], + "location": "maharaCommon", + "name": "maharaCommoncounter", + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/maharaCommon" + }, + "hardwareProfile": { + "vmSize": "maharaCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/maharaCommoncounter-nic" + } + ] + }, + "osProfile": { + "adminUsername": "maharaCommon", + "computerName": "maharaCommoncounter", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/maharaCommon/.ssh/authorized_keys", + "keyData": "maharaCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "maharaCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "name": "maharaCommoncounter" + }, + "copy": [ + { + "name": "dataDisks", + "count": "maharaCommon", + "input": { + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": "maharaCommon", + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty" + } + } + ] + } + }, + "tags": { + "displayName": "Gluster Virtual Machine" + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommoncounter" + ], + "name": "maharaCommoncounter-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + }, + "vmName": { + "value": "[ variables('vmName')]" + }, + "vmNumber": { + "value": "counter" + } + }, + "templateLink": { + "uri": "maharaCommonglustervmconfig.jsonmaharaCommon" + } + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//maharaCommoncounter" + ], + "name": "maharaCommoncounter-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": "maharaCommon" + }, + "vmName": { + "value": "maharaCommoncounter" + } + }, + "templateLink": { + "uri": "maharaCommonrecoveryservicesEnlist.jsonmaharaCommon" + } + } + } + ], + "variables": { + "asRef": "Microsoft.Compute/availabilitySets/maharaCommon", + "nicName": "maharaCommoncounter-nic", + "nicRef": "Microsoft.Network/networkInterfaces/maharaCommoncounter-nic", + "subnetSanRef": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon", + "vmName": "maharaCommoncounter" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT236 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT236 new file mode 100644 index 0000000..246f981 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT236 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/glustervmconfig.json" + ], + "timestamp": 1642962891127, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/glustervmconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT236", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT236", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + }, + "vmName": { + "metadata": { + "description": "Name of VM to process script - not actually used" + }, + "type": "string" + }, + "vmNumber": { + "metadata": { + "description": "Number of the VM in the pool" + }, + "type": "int" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "maharaCommon", + "name": "vmName/install_gluster", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "maharaCommonmaharaCommonmaharaCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "bash maharaCommon maharaCommon maharaCommon data vmNumber maharaCommon" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "GfsVmExtension" + } + } + ], + "variables": { + "cmdExec": "bash maharaCommon maharaCommon maharaCommon data vmNumber maharaCommon", + "scriptUri": "maharaCommonmaharaCommonmaharaCommon" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT237 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT237 new file mode 100644 index 0000000..5c51fae --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT237 @@ -0,0 +1,112 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/mysql.json" + ], + "timestamp": 1642962891133, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/mysql.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT237", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbformysql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT237", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + }, + "lbPubIp": { + "metadata": { + "description": "Public IP address of the deployed load balancer" + }, + "type": "string" + }, + "ctlrPubIp": { + "metadata": { + "description": "Public IP address of the deployed controller VM" + }, + "type": "string" + }, + "dbLoginPassword": { + "metadata": { + "description": "Database admin password" + }, + "type": "securestring" + } + }, + "resources": [ + { + "type": "Microsoft.DBforMySQL/servers", + "apiVersion": "2017-12-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "administratorLogin": "maharaCommon", + "administratorLoginPassword": "dbLoginPassword", + "sslEnforcement": "maharaCommon", + "storageProfile": { + "storageMB": "[mul(parameters('maharaCommon').mysqlPgresStgSizeGB, 1024)]", + "backupRetentionDays": 35, + "geoRedundantBackup": "Enabled" + }, + "version": "maharaCommon" + }, + "sku": { + "capacity": "maharaCommon", + "name": "maharaCommon", + "tier": "maharaCommon", + "family": "maharaCommon" + }, + "resources": [ + { + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforMySQL/servers//maharaCommon" + ], + "location": "maharaCommon", + "name": "mysql-firewall-allow-lb", + "properties": { + "startIpAddress": "lbPubIp", + "endIpAddress": "lbPubIp" + }, + "type": "firewallRules" + }, + { + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforMySQL/servers//maharaCommon" + ], + "location": "maharaCommon", + "name": "mysql-firewall-allow-ctlr", + "properties": { + "startIpAddress": "ctlrPubIp", + "endIpAddress": "ctlrPubIp" + }, + "type": "firewallRules" + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT238 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT238 new file mode 100644 index 0000000..c79779c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT238 @@ -0,0 +1,280 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/network.json" + ], + "timestamp": 1642962891141, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/network.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT238", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT238", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "maharaCommon/16" + ] + }, + "subnets": [ + { + "name": "maharaCommon", + "properties": { + "addressPrefix": "maharaCommon" + } + }, + { + "name": "maharaCommon", + "properties": { + "addressPrefix": "maharaCommon" + } + }, + { + "name": "maharaCommon", + "properties": { + "addressPrefix": "maharaCommon" + } + }, + { + "name": "maharaCommon", + "properties": { + "addressPrefix": "maharaCommon" + } + } + ] + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "displayName": "Virtual network gateway Public IP" + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/maharaCommon" + ], + "name": "maharaCommon/maharaCommon", + "properties": { + "addressPrefix": "maharaCommon" + } + }, + { + "condition": "maharaCommon", + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/maharaCommon", + "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "activeActive": false, + "enableBgp": false, + "gatewayType": "maharaCommon", + "ipConfigurations": [ + { + "name": "vnet-Gateway-Config", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/maharaCommon" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + } + } + } + ], + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1", + "capacity": 2 + }, + "vpnType": "maharaCommon" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "dnsSettings": { + "domainNameLabel": "maharaCommon" + }, + "publicIPAllocationMethod": "Static" + }, + "tags": { + "displayName": "Load Balancer Public IP" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "dnsSettings": { + "domainNameLabel": "maharaCommon" + }, + "publicIPAllocationMethod": "Static" + }, + "tags": { + "displayName": "Controller VM Public IP" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "backendAddressPools": [ + { + "name": "maharaCommon" + } + ], + "frontendIPConfigurations": [ + { + "name": "maharaCommon", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/maharaCommon" + } + } + } + ], + "loadBalancingRules": [ + { + "name": "Http", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/maharaCommon/maharaCommon" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/maharaCommon/maharaCommon" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/maharaCommon/maharaCommon" + }, + "protocol": "Tcp" + } + }, + { + "name": "Https", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/maharaCommon/maharaCommon" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/maharaCommon/maharaCommon" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/maharaCommon/maharaCommon" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "maharaCommon", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 3, + "port": 80, + "protocol": "Tcp" + } + } + ] + } + } + ], + "variables": { + "extBeID": "Microsoft.Network/loadBalancers/backendAddressPools/maharaCommon/maharaCommon", + "extFeID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/maharaCommon/maharaCommon", + "extProbeID": "Microsoft.Network/loadBalancers/probes/maharaCommon/maharaCommon", + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon", + "lbPipID": "Microsoft.Network/publicIPAddresses/maharaCommon", + "ctlrPipID": "Microsoft.Network/publicIPAddresses/maharaCommon" + }, + "outputs": { + "lbPubIp": { + "value": "[reference(parameters('maharaCommon').lbPipName, '2020-11-01').ipAddress]", + "type": "string" + }, + "ctlrPubIp": { + "value": "[reference(parameters('maharaCommon').ctlrPipName, '2020-11-01').ipAddress]", + "type": "string" + }, + "ctlrPubIpId": { + "value": "[variables('ctlrPipID')]", + "type": "string" + }, + "siteFQDN": { + "value": "[reference(variables('lbPipID'), '2020-11-01').dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT239 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT239 new file mode 100644 index 0000000..c624f47 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT239 @@ -0,0 +1,33 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/none-search.json" + ], + "timestamp": 1642962891153, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/none-search.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT239", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT239", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT24 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT24 new file mode 100644 index 0000000..f8120a6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT24 @@ -0,0 +1,206 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/replica-resources.json" + ], + "timestamp": 1642962883495, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/replica-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT24", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT24", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "replSetName": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "mongoAdminUsername": { + "type": "string" + }, + "mongoAdminPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "numDataDisks": { + "type": "int" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "subnet": { + "type": "object" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + }, + "routerDnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Dns prefix of the router node to be used to create the ssl cert" + } + }, + "roleType": { + "type": "string" + }, + "mongoSSLCertPassword": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "[if(equals(parameters('roleType'), 'Primary'), 'Static', 'Dynamic')]", + "privateIPAddress": "[if(equals(parameters('roleType'), 'Primary'), parameters('staticIp'), json('null'))]", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": "numDataDisks", + "input": { + "name": "[concat(parameters('namespace'), parameters('vmbasename'), 'vm', '_datadisk', copyIndex('dataDisks',1))]", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": "[copyIndex('dataDisks')]", + "caching": "ReadWrite", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/replicaroleTypeInstall", + "apiVersion": "2019-03-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "[if(equals(parameters('roleType'), 'Primary'), concat('bash replica_primary.sh ', parameters('replSetName'), ' ', parameters('staticIp'), ' ', parameters('mongoAdminUsername'), ' ', parameters('mongoAdminPassword'), ' ', parameters('routerDnsNamePrefix'), ' ', parameters('mongoSSLCertPassword')), concat('bash replica_secondary.sh ', parameters('replSetName'), ' ', parameters('routerDnsNamePrefix'), ' ', parameters('mongoSSLCertPassword')))]" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT240 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT240 new file mode 100644 index 0000000..2688163 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT240 @@ -0,0 +1,112 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/postgres.json" + ], + "timestamp": 1642962891160, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/postgres.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT240", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT240", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + }, + "lbPubIp": { + "metadata": { + "description": "Public IP address of the deployed load balancer" + }, + "type": "string" + }, + "ctlrPubIp": { + "metadata": { + "description": "Public IP address of the deployed controller VM" + }, + "type": "string" + }, + "dbLoginPassword": { + "metadata": { + "description": "Database admin password" + }, + "type": "securestring" + } + }, + "resources": [ + { + "type": "Microsoft.DBforPostgreSQL/servers", + "apiVersion": "2017-12-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "administratorLogin": "maharaCommon", + "administratorLoginPassword": "dbLoginPassword", + "sslEnforcement": "maharaCommon", + "storageProfile": { + "storageMB": "[mul(parameters('maharaCommon').mysqlPgresStgSizeGB, 1024)]", + "backupRetentionDays": 35, + "geoRedundantBackup": "Enabled" + }, + "version": "maharaCommon" + }, + "sku": { + "capacity": "maharaCommon", + "name": "maharaCommon", + "tier": "maharaCommon", + "family": "maharaCommon" + }, + "resources": [ + { + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers//maharaCommon" + ], + "location": "maharaCommon", + "name": "postgres-firewall-allow-lb", + "properties": { + "startIpAddress": "lbPubIp", + "endIpAddress": "lbPubIp" + }, + "type": "firewallRules" + }, + { + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers//maharaCommon" + ], + "location": "maharaCommon", + "name": "postgres-firewall-allow-ctlr", + "properties": { + "startIpAddress": "ctlrPubIp", + "endIpAddress": "ctlrPubIp" + }, + "type": "firewallRules" + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT241 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT241 new file mode 100644 index 0000000..39af636 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT241 @@ -0,0 +1,127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/recoveryservices.json" + ], + "timestamp": 1642962891168, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/recoveryservices.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT241", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT241", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + } + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2021-03-01", + "location": "maharaCommon", + "name": "maharaCommon", + "properties": {}, + "sku": { + "name": "RS0", + "tier": "Standard" + } + }, + { + "type": "Microsoft.RecoveryServices/vaults/backupPolicies", + "apiVersion": "2021-03-01", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults//maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon/maharaCommon", + "properties": { + "backupManagementType": "AzureIaasVM", + "retentionPolicy": { + "dailySchedule": { + "retentionDuration": { + "count": 7, + "durationType": "Days" + }, + "retentionTimes": [ + "2017-01-01T22:30:00Z" + ] + }, + "monthlySchedule": { + "retentionDuration": { + "count": 6, + "durationType": "Months" + }, + "retentionScheduleDaily": { + "daysOfTheMonth": [ + { + "date": 1, + "isLast": false + } + ] + }, + "retentionScheduleFormatType": "Daily", + "retentionTimes": [ + "2017-01-01T22:30:00Z" + ] + }, + "retentionPolicyType": "LongTermRetentionPolicy", + "weeklySchedule": { + "daysOfTheWeek": [ + "Sunday" + ], + "retentionDuration": { + "count": 4, + "durationType": "Weeks" + }, + "retentionTimes": [ + "2017-01-01T22:30:00Z" + ] + } + }, + "schedulePolicy": { + "schedulePolicyType": "SimpleSchedulePolicy", + "scheduleRunFrequency": "Daily", + "scheduleRunTimes": [ + "2017-01-01T22:30:00Z" + ] + } + } + } + ], + "variables": { + "dailyRetentionDurationCount": 7, + "daysOfTheWeek": [ + "Sunday" + ], + "monthlyRetentionDurationCount": 6, + "scheduleRunTimes": [ + "2017-01-01T22:30:00Z" + ], + "weeklyRetentionDurationCount": 4 + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT242 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT242 new file mode 100644 index 0000000..a88223e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT242 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/recoveryservicesEnlist.json" + ], + "timestamp": 1642962891201, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/recoveryservicesEnlist.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT242", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT242", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + }, + "vmName": { + "metadata": { + "description": "Name of VM to enlist in AzureBackup" + }, + "type": "string" + }, + "resourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]" + } + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "apiVersion": "2021-03-01", + "location": "maharaCommon", + "name": "[concat(parameters('maharaCommon').vaultName, '/', variables('backupFabric'), '/', variables('v2VmContainer'), concat(resourceGroup().name,';',parameters('vmName')), '/', variables('v2Vm'), concat(resourceGroup().name,';',parameters('vmName')))]", + "properties": { + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/maharaCommon/maharaCommon", + "protectedItemType": "Microsoft.Compute/virtualMachines", + "sourceResourceId": "[resourceGroup().name]/Microsoft.Compute/virtualMachines/vmName" + } + } + ], + "variables": { + "backupFabric": "Azure", + "v2Vm": "vm;iaasvmcontainerv2;", + "v2VmContainer": "iaasvmcontainer;iaasvmcontainerv2;", + "v2VmType": "Microsoft.Compute/virtualMachines" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT243 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT243 new file mode 100644 index 0000000..bbc5589 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT243 @@ -0,0 +1,71 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/storageAccount.json" + ], + "timestamp": 1642962891231, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/storageAccount.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT243", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT243", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "location": "maharaCommon", + "name": "maharaCommon", + "kind": "Storage", + "sku": { + "name": "maharaCommon" + }, + "properties": { + "encryption": { + "keySource": "Microsoft.Storage", + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + } + }, + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT244 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT244 new file mode 100644 index 0000000..5bba440 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT244 @@ -0,0 +1,238 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/webvmss.json" + ], + "timestamp": 1642962891239, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/nested/webvmss.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT244", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings", + "microsoft.storage/storageaccounts", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT244", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "maharaCommon": { + "metadata": { + "description": "Common Mahara values" + }, + "type": "object" + }, + "siteFQDN": { + "metadata": { + "description": "FQDN of public IP address" + }, + "type": "string" + }, + "resourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "location": "maharaCommon", + "name": "maharaCommon", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//maharaCommon" + ], + "location": "maharaCommon", + "name": "maharaCommon", + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "setup_mahara", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "maharaCommonmaharaCommonmaharaCommon", + "maharaCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', parameters('maharaCommon').webServerSetupScriptFilename, ' ', concat(parameters('maharaCommon').gfsNameRoot, '0'), ' data ', parameters('maharaCommon').siteURL, ' ', parameters('maharaCommon').httpsTermination, ' ', concat('controller-vm-',parameters('maharaCommon').resourcesPrefix), ' ', parameters('maharaCommon').webServerType, ' ', parameters('maharaCommon').fileServerType, ' ', parameters('maharaCommon').storageAccountName, ' ', listKeys(variables('storageAccountId'), '2021-02-01').keys[0].value, ' ', parameters('maharaCommon').ctlrVmName, ' ', parameters('maharaCommon').htmlLocalCopySwitch, ' ' , parameters('siteFQDN'))]" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "vmssnic", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfg_lb", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//maharaCommon/maharaCommon" + } + ], + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminUsername": "maharaCommon", + "computerNamePrefix": "maharaCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/maharaCommon/.ssh/authorized_keys", + "keyData": "maharaCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "maharaCommon", + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + } + } + }, + "sku": { + "capacity": 1, + "name": "maharaCommon", + "tier": "Standard" + }, + "tags": { + "displayName": "webfarm" + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets//maharaCommon" + ], + "location": "maharaCommon", + "name": "autoscalewad", + "properties": { + "enabled": true, + "name": "autoscalewad", + "profiles": [ + { + "capacity": { + "default": "1", + "maximum": "maharaCommon", + "minimum": "1" + }, + "name": "Profile1", + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/maharaCommon", + "operator": "GreaterThan", + "statistic": "Average", + "threshold": 60, + "timeAggregation": "Average", + "timeGrain": "PT1M", + "timeWindow": "PT5M" + }, + "scaleAction": { + "cooldown": "PT10M", + "direction": "Increase", + "type": "ChangeCount", + "value": "1" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/maharaCommon", + "operator": "LessThan", + "statistic": "Average", + "threshold": 30, + "timeAggregation": "Average", + "timeGrain": "PT1M", + "timeWindow": "PT5M" + }, + "scaleAction": { + "cooldown": "PT10M", + "direction": "Decrease", + "type": "ChangeCount", + "value": "1" + } + } + ] + } + ], + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/maharaCommon" + } + } + ], + "variables": { + "extBeID": "Microsoft.Network/loadBalancers/backendAddressPools//maharaCommon/maharaCommon", + "scriptUri": "maharaCommonmaharaCommonmaharaCommon", + "subnetWebRef": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/maharaCommon/maharaCommon", + "storageAccountId": "Microsoft.Storage/storageAccounts/maharaCommon", + "vmssID": "Microsoft.Compute/virtualMachineScaleSets/maharaCommon", + "webvmss1NIC": "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/maharaCommon/0/vmssnic" + }, + "outputs": { + "webvm1IP": { + "value": "[reference(variables('webvmss1NIC'), '2020-12-01').ipConfigurations[0].properties.privateIPAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT245 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT245 new file mode 100644 index 0000000..20b5c62 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT245 @@ -0,0 +1,1482 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/azuredeploy.json", + "/application-workloads/mahara/mahara-autoscale-cache/azuredeploy.parameters.json" + ], + "timestamp": 1642962891248, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mahara/mahara-autoscale-cache/azuredeploy.json", + "/application-workloads/mahara/mahara-autoscale-cache/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT245", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT245", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "applyScriptsSwitch": { + "defaultValue": true, + "metadata": { + "description": "Switch to process or bypass all scripts/extensions" + }, + "type": "bool" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "azureBackupSwitch": { + "defaultValue": false, + "metadata": { + "description": "Switch to configure AzureBackup and enlist VM's" + }, + "type": "bool" + }, + "vnetGwDeploySwitch": { + "defaultValue": false, + "metadata": { + "description": "Switch to deploy a virtual network gateway or not" + }, + "type": "bool" + }, + "htmlLocalCopySwitch": { + "defaultValue": true, + "metadata": { + "description": "Switch to create a local copy of /mahara/html or not" + }, + "type": "bool" + }, + "httpsTermination": { + "allowedValues": [ + "VMSS", + "None" + ], + "defaultValue": "VMSS", + "metadata": { + "description": "Indicates where https termination occurs. 'VMSS' is for https termination at the VMSS instance VMs (using nginx https proxy). 'None' is for testing only with no https. 'None' may not be used with a separately configured https termination layer. If you want to use the 'None' option with your separately configured https termination layer, you'll need to update your Mahara config.php manually for $cfg->wwwroot and $cfg->sslproxy." + }, + "type": "string" + }, + "siteURL": { + "defaultValue": "www.example.org", + "metadata": { + "description": "URL for Mahara site" + }, + "type": "string" + }, + "maharaVersion": { + "allowedValues": [ + "17.10_STABLE", + "17.04_STABLE" + ], + "defaultValue": "17.10_STABLE", + "metadata": { + "description": "The Mahara version you want to install." + }, + "type": "string" + }, + "sshPublicKey": { + "metadata": { + "description": "ssh public key" + }, + "type": "string", + "value": "GEN-SSH-PUB-KEY" + }, + "sshUsername": { + "metadata": { + "description": "ssh user name" + }, + "type": "string", + "value": "GEN-UNIQUE-8" + }, + "controllerVmSku": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size for the controller VM" + }, + "type": "string" + }, + "webServerType": { + "defaultValue": "apache", + "allowedValues": [ + "apache", + "nginx" + ], + "metadata": { + "description": "Web server type" + }, + "type": "string" + }, + "autoscaleVmSku": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size for autoscaled web VMs" + }, + "type": "string" + }, + "autoscaleVmCount": { + "defaultValue": 10, + "metadata": { + "description": "Maximum number of autoscaled web VMs" + }, + "type": "int" + }, + "dbServerType": { + "defaultValue": "mysql", + "allowedValues": [ + "postgres", + "mysql" + ], + "metadata": { + "description": "Database type" + }, + "type": "string" + }, + "dbLogin": { + "metadata": { + "description": "Database admin username" + }, + "type": "string", + "value": "GEN-UNIQUE-8" + }, + "dbLoginPassword": { + "metadata": { + "description": "Database admin password" + }, + "type": "securestring" + }, + "maharaAdminPass": { + "metadata": { + "description": "Mahara admin password" + }, + "type": "securestring" + }, + "maharaDbPass": { + "metadata": { + "description": "Mahara database password" + }, + "type": "securestring" + }, + "mysqlPgresVcores": { + "allowedValues": [ + 1, + 2, + 4, + 8, + 16, + 32 + ], + "defaultValue": 2, + "metadata": { + "description": "MySql/Postgresql vCores. For Basic tier, only 1 & 2 are allowed. For GeneralPurpose tier, 2, 4, 8, 16, 32 are allowed. For MemoryOptimized, 2, 4, 8, 16 are allowed." + }, + "type": "int" + }, + "mysqlPgresStgSizeGB": { + "defaultValue": 125, + "minValue": 5, + "maxValue": 1024, + "metadata": { + "description": "MySql/Postgresql storage size in GB. Minimum 5GB, increase by 1GB, up to 1TB (1024 GB)" + }, + "type": "int" + }, + "mysqlPgresSkuTier": { + "allowedValues": [ + "Basic", + "GeneralPurpose", + "MemoryOptimized" + ], + "defaultValue": "GeneralPurpose", + "metadata": { + "description": "MySql/Postgresql sku tier" + }, + "type": "string" + }, + "mysqlPgresSkuHwFamily": { + "allowedValues": [ + "Gen4", + "Gen5" + ], + "defaultValue": "Gen5", + "metadata": { + "description": "MySql/Postgresql sku hardware family" + }, + "type": "string" + }, + "mysqlVersion": { + "allowedValues": [ + "5.6", + "5.7" + ], + "defaultValue": "5.7", + "metadata": { + "description": "Mysql version" + }, + "type": "string" + }, + "postgresVersion": { + "allowedValues": [ + "9.5", + "9.6" + ], + "defaultValue": "9.6", + "metadata": { + "description": "Postgresql version" + }, + "type": "string" + }, + "sslEnforcement": { + "allowedValues": [ + "Disabled", + "Enabled" + ], + "defaultValue": "Disabled", + "metadata": { + "description": "MySql/Postgresql SSL connection" + }, + "type": "string" + }, + "fileServerType": { + "defaultValue": "nfs", + "allowedValues": [ + "gluster", + "nfs" + ], + "metadata": { + "description": "File server type: GlusterFS, NFS--not yet highly available. Gluster uses premium managed disks therefore premium skus are required." + }, + "type": "string" + }, + "fileServerDiskSize": { + "defaultValue": 127, + "metadata": { + "description": "Size per disk for gluster nodes or nfs server" + }, + "type": "int" + }, + "fileServerDiskCount": { + "defaultValue": 4, + "minValue": 2, + "maxValue": 8, + "metadata": { + "description": "Number of disks in raid0 per gluster node or nfs server" + }, + "type": "int" + }, + "glusterVmSku": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size for the gluster nodes" + }, + "type": "string" + }, + "keyVaultResourceId": { + "defaultValue": "", + "metadata": { + "description": "Azure Resource Manager resource ID of the Key Vault in case you stored your SSL cert in an Azure Key Vault (Note that this Key Vault must have been pre-created on the same Azure region where this template is being deployed). Leave this blank if you didn't. Resource ID example: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/xxx/providers/Microsoft.KeyVault/vaults/yyy. This value can be obtained from keyvault.sh output if you used the script to store your SSL cert in your Key Vault." + }, + "type": "string" + }, + "sslCertKeyVaultURL": { + "defaultValue": "", + "metadata": { + "description": "Azure Key Vault URL for your stored SSL cert. This value can be obtained from keyvault.sh output if you used the script to store your SSL cert in your Key Vault. This parameter is ignored if the keyVaultResourceId parameter is blank." + }, + "type": "string" + }, + "sslCertThumbprint": { + "defaultValue": "", + "metadata": { + "description": "Thumbprint of your stored SSL cert. This value can be obtained from keyvault.sh output if you used the script to store your SSL cert in your Key Vault. This parameter is ignored if the keyVaultResourceId parameter is blank." + }, + "type": "string" + }, + "caCertKeyVaultURL": { + "defaultValue": "", + "metadata": { + "description": "Azure Key Vault URL for your stored CA (Certificate Authority) cert. This value can be obtained from keyvault.sh output if you used the script to store your CA cert in your Key Vault. This parameter is ignored if the keyVaultResourceId parameter is blank." + }, + "type": "string" + }, + "caCertThumbprint": { + "defaultValue": "", + "metadata": { + "description": "Thumbprint of your stored CA cert. This value can be obtained from keyvault.sh output if you used the script to store your CA cert in your Key Vault. This parameter is ignored if the keyVaultResourceId parameter is blank." + }, + "type": "string" + }, + "storageAccountType": { + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account type" + }, + "type": "string" + }, + "searchType": { + "defaultValue": "none", + "allowedValues": [ + "none", + "elastic" + ], + "metadata": { + "description": "options of mahara global search" + }, + "type": "string" + }, + "elasticVmSku": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size for the elastic search nodes" + }, + "type": "string" + }, + "vNetAddressSpace": { + "defaultValue": "172.31.0.0", + "metadata": { + "description": "Address range for the Mahara virtual network - presumed /16 - further subneting during vnet creation" + }, + "type": "string" + }, + "gatewaySubnet": { + "allowedValues": [ + "GatewaySubnet", + "MaharaGatewaySubnet", + "MyMaharaGatewaySubnet" + ], + "defaultValue": "GatewaySubnet", + "metadata": { + "description": "name for Virtual network gateway subnet" + }, + "type": "string" + }, + "gatewayType": { + "allowedValues": [ + "Vpn", + "ER" + ], + "defaultValue": "Vpn", + "metadata": { + "description": "Virtual network gateway type" + }, + "type": "string" + }, + "vpnType": { + "allowedValues": [ + "RouteBased", + "PolicyBased" + ], + "defaultValue": "RouteBased", + "metadata": { + "description": "Virtual network gateway vpn type" + }, + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/networkTemplate" + ], + "name": "dbTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": { + "location": "[resourceGroup().location]", + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "artifactsSasToken": "", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": false, + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'),concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "GEN-UNIQUE-8", + "dbServerType": "mysql", + "dbUsername": "GEN-UNIQUE-8@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "dbDNS": "mysql-resourcePrefix.mysql.database.azure.com", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "nfs", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "htmlLocalCopySwitch": true, + "httpsTermination": "VMSS", + "ctlrNicName": "controller-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrNsgName": "controller-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrPipName": "controller-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmName": "controller-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmSecrets": "[take(variables('ctlrVmSecretsArray'), if(empty(parameters('keyVaultResourceId')), 0, 1))]", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaDbName": "mahara", + "maharaDbUser": "mahara", + "maharaDbUserAzure": "mahara@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaInstallScriptFilename": "install_mahara.sh", + "maharaVersion": "17.10_STABLE", + "mysqlPgresSkuHwFamily": "Gen5", + "mysqlPgresSkuName": "[concat(if(equals(parameters('mysqlPgresSkuTier'),'Basic'),'B', if(equals(parameters('mysqlPgresSkuTier'),'GeneralPurpose'),'GP', 'MO')), '_', parameters('mysqlPgresSkuHwFamily'), '_', string(parameters('mysqlPgresVcores')))]", + "mysqlPgresSkuTier": "GeneralPurpose", + "mysqlPgresStgSizeGB": 125, + "mysqlPgresVcores": 2, + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "18.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "searchType": "none", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "www.example.org", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "GEN-UNIQUE-8", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "thumbprintSslCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('sslCertThumbprint'))), 'None', parameters('sslCertThumbprint'))]", + "thumbprintCaCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('caCertThumbprint'))), 'None', parameters('caCertThumbprint'))]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "lbPubIp": { + "value": "[reference('networkTemplate').outputs.lbPubIp.value]" + }, + "ctlrPubIp": { + "value": "[reference('networkTemplate').outputs.ctlrPubIp.value]" + }, + "dbLoginPassword": { + "value": "dbLoginPassword" + } + }, + "templateLink": { + "uri": "(maharaCommon).baseTemplateUrlmysql.json parameters('_artifactsLocationSasToken')" + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "recoveryTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": { + "location": "[resourceGroup().location]", + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "artifactsSasToken": "", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": false, + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'),concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "GEN-UNIQUE-8", + "dbServerType": "mysql", + "dbUsername": "GEN-UNIQUE-8@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "dbDNS": "mysql-resourcePrefix.mysql.database.azure.com", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "nfs", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "htmlLocalCopySwitch": true, + "httpsTermination": "VMSS", + "ctlrNicName": "controller-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrNsgName": "controller-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrPipName": "controller-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmName": "controller-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmSecrets": "[take(variables('ctlrVmSecretsArray'), if(empty(parameters('keyVaultResourceId')), 0, 1))]", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaDbName": "mahara", + "maharaDbUser": "mahara", + "maharaDbUserAzure": "mahara@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaInstallScriptFilename": "install_mahara.sh", + "maharaVersion": "17.10_STABLE", + "mysqlPgresSkuHwFamily": "Gen5", + "mysqlPgresSkuName": "[concat(if(equals(parameters('mysqlPgresSkuTier'),'Basic'),'B', if(equals(parameters('mysqlPgresSkuTier'),'GeneralPurpose'),'GP', 'MO')), '_', parameters('mysqlPgresSkuHwFamily'), '_', string(parameters('mysqlPgresVcores')))]", + "mysqlPgresSkuTier": "GeneralPurpose", + "mysqlPgresStgSizeGB": 125, + "mysqlPgresVcores": 2, + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "18.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "searchType": "none", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "www.example.org", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "GEN-UNIQUE-8", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "thumbprintSslCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('sslCertThumbprint'))), 'None', parameters('sslCertThumbprint'))]", + "thumbprintCaCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('caCertThumbprint'))), 'None', parameters('caCertThumbprint'))]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + } + }, + "templateLink": { + "uri": "(maharaCommon).baseTemplateUrlrecoveryservices.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "networkTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": { + "location": "[resourceGroup().location]", + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "artifactsSasToken": "", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": false, + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'),concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "GEN-UNIQUE-8", + "dbServerType": "mysql", + "dbUsername": "GEN-UNIQUE-8@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "dbDNS": "mysql-resourcePrefix.mysql.database.azure.com", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "nfs", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "htmlLocalCopySwitch": true, + "httpsTermination": "VMSS", + "ctlrNicName": "controller-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrNsgName": "controller-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrPipName": "controller-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmName": "controller-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmSecrets": "[take(variables('ctlrVmSecretsArray'), if(empty(parameters('keyVaultResourceId')), 0, 1))]", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaDbName": "mahara", + "maharaDbUser": "mahara", + "maharaDbUserAzure": "mahara@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaInstallScriptFilename": "install_mahara.sh", + "maharaVersion": "17.10_STABLE", + "mysqlPgresSkuHwFamily": "Gen5", + "mysqlPgresSkuName": "[concat(if(equals(parameters('mysqlPgresSkuTier'),'Basic'),'B', if(equals(parameters('mysqlPgresSkuTier'),'GeneralPurpose'),'GP', 'MO')), '_', parameters('mysqlPgresSkuHwFamily'), '_', string(parameters('mysqlPgresVcores')))]", + "mysqlPgresSkuTier": "GeneralPurpose", + "mysqlPgresStgSizeGB": 125, + "mysqlPgresVcores": 2, + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "18.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "searchType": "none", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "www.example.org", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "GEN-UNIQUE-8", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "thumbprintSslCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('sslCertThumbprint'))), 'None', parameters('sslCertThumbprint'))]", + "thumbprintCaCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('caCertThumbprint'))), 'None', parameters('caCertThumbprint'))]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + } + }, + "templateLink": { + "uri": "(maharaCommon).baseTemplateUrlnetwork.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/networkTemplate", + "Microsoft.Resources/deployments/recoveryTemplate" + ], + "name": "searchTemplate", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(maharaCommon).baseTemplateUrlnone-search.json parameters('_artifactsLocationSasToken')" + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/networkTemplate", + "Microsoft.Resources/deployments/recoveryTemplate" + ], + "name": "glusterTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": { + "location": "[resourceGroup().location]", + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "artifactsSasToken": "", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": false, + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'),concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "GEN-UNIQUE-8", + "dbServerType": "mysql", + "dbUsername": "GEN-UNIQUE-8@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "dbDNS": "mysql-resourcePrefix.mysql.database.azure.com", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "nfs", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "htmlLocalCopySwitch": true, + "httpsTermination": "VMSS", + "ctlrNicName": "controller-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrNsgName": "controller-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrPipName": "controller-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmName": "controller-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmSecrets": "[take(variables('ctlrVmSecretsArray'), if(empty(parameters('keyVaultResourceId')), 0, 1))]", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaDbName": "mahara", + "maharaDbUser": "mahara", + "maharaDbUserAzure": "mahara@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaInstallScriptFilename": "install_mahara.sh", + "maharaVersion": "17.10_STABLE", + "mysqlPgresSkuHwFamily": "Gen5", + "mysqlPgresSkuName": "[concat(if(equals(parameters('mysqlPgresSkuTier'),'Basic'),'B', if(equals(parameters('mysqlPgresSkuTier'),'GeneralPurpose'),'GP', 'MO')), '_', parameters('mysqlPgresSkuHwFamily'), '_', string(parameters('mysqlPgresVcores')))]", + "mysqlPgresSkuTier": "GeneralPurpose", + "mysqlPgresStgSizeGB": 125, + "mysqlPgresVcores": 2, + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "18.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "searchType": "none", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "www.example.org", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "GEN-UNIQUE-8", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "thumbprintSslCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('sslCertThumbprint'))), 'None', parameters('sslCertThumbprint'))]", + "thumbprintCaCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('caCertThumbprint'))), 'None', parameters('caCertThumbprint'))]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + } + }, + "templateLink": { + "uri": "(maharaCommon).baseTemplateUrlgluster.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/glusterTemplate", + "Microsoft.Resources/deployments/recoveryTemplate", + "Microsoft.Resources/deployments/networkTemplate", + "Microsoft.Resources/deployments/dbTemplate", + "Microsoft.Resources/deployments/searchTemplate", + "Microsoft.Resources/deployments/storageAccountTemplate" + ], + "name": "controllerTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": { + "location": "[resourceGroup().location]", + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "artifactsSasToken": "", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": false, + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'),concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "GEN-UNIQUE-8", + "dbServerType": "mysql", + "dbUsername": "GEN-UNIQUE-8@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "dbDNS": "mysql-resourcePrefix.mysql.database.azure.com", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "nfs", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "htmlLocalCopySwitch": true, + "httpsTermination": "VMSS", + "ctlrNicName": "controller-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrNsgName": "controller-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrPipName": "controller-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmName": "controller-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmSecrets": "[take(variables('ctlrVmSecretsArray'), if(empty(parameters('keyVaultResourceId')), 0, 1))]", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaDbName": "mahara", + "maharaDbUser": "mahara", + "maharaDbUserAzure": "mahara@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaInstallScriptFilename": "install_mahara.sh", + "maharaVersion": "17.10_STABLE", + "mysqlPgresSkuHwFamily": "Gen5", + "mysqlPgresSkuName": "[concat(if(equals(parameters('mysqlPgresSkuTier'),'Basic'),'B', if(equals(parameters('mysqlPgresSkuTier'),'GeneralPurpose'),'GP', 'MO')), '_', parameters('mysqlPgresSkuHwFamily'), '_', string(parameters('mysqlPgresVcores')))]", + "mysqlPgresSkuTier": "GeneralPurpose", + "mysqlPgresStgSizeGB": 125, + "mysqlPgresVcores": 2, + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "18.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "searchType": "none", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "www.example.org", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "GEN-UNIQUE-8", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "thumbprintSslCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('sslCertThumbprint'))), 'None', parameters('sslCertThumbprint'))]", + "thumbprintCaCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('caCertThumbprint'))), 'None', parameters('caCertThumbprint'))]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "ctlrPubIpId": { + "value": "[reference('networkTemplate').outputs.ctlrPubIpId.value]" + }, + "siteFQDN": { + "value": "[reference('networkTemplate').outputs.siteFQDN.value]" + }, + "dbLoginPassword": { + "value": "dbLoginPassword" + }, + "maharaDbPass": { + "value": "maharaDbPass" + }, + "maharaAdminPass": { + "value": "maharaAdminPass" + } + }, + "templateLink": { + "uri": "(maharaCommon).baseTemplateUrlcontroller.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/controllerTemplate", + "Microsoft.Resources/deployments/networkTemplate", + "Microsoft.Resources/deployments/dbTemplate" + ], + "name": "scaleSetTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": { + "location": "[resourceGroup().location]", + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "artifactsSasToken": "", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": false, + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'),concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "GEN-UNIQUE-8", + "dbServerType": "mysql", + "dbUsername": "GEN-UNIQUE-8@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "dbDNS": "mysql-resourcePrefix.mysql.database.azure.com", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "nfs", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "htmlLocalCopySwitch": true, + "httpsTermination": "VMSS", + "ctlrNicName": "controller-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrNsgName": "controller-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrPipName": "controller-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmName": "controller-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmSecrets": "[take(variables('ctlrVmSecretsArray'), if(empty(parameters('keyVaultResourceId')), 0, 1))]", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaDbName": "mahara", + "maharaDbUser": "mahara", + "maharaDbUserAzure": "mahara@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaInstallScriptFilename": "install_mahara.sh", + "maharaVersion": "17.10_STABLE", + "mysqlPgresSkuHwFamily": "Gen5", + "mysqlPgresSkuName": "[concat(if(equals(parameters('mysqlPgresSkuTier'),'Basic'),'B', if(equals(parameters('mysqlPgresSkuTier'),'GeneralPurpose'),'GP', 'MO')), '_', parameters('mysqlPgresSkuHwFamily'), '_', string(parameters('mysqlPgresVcores')))]", + "mysqlPgresSkuTier": "GeneralPurpose", + "mysqlPgresStgSizeGB": 125, + "mysqlPgresVcores": 2, + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "18.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "searchType": "none", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "www.example.org", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "GEN-UNIQUE-8", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "thumbprintSslCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('sslCertThumbprint'))), 'None', parameters('sslCertThumbprint'))]", + "thumbprintCaCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('caCertThumbprint'))), 'None', parameters('caCertThumbprint'))]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "siteFQDN": { + "value": "[reference('networkTemplate').outputs.siteFQDN.value]" + } + }, + "templateLink": { + "uri": "(maharaCommon).baseTemplateUrlwebvmss.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "storageAccountTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "maharaCommon": { + "value": { + "location": "[resourceGroup().location]", + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "artifactsSasToken": "", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": false, + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'),concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "GEN-UNIQUE-8", + "dbServerType": "mysql", + "dbUsername": "GEN-UNIQUE-8@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "dbDNS": "mysql-resourcePrefix.mysql.database.azure.com", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "nfs", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "htmlLocalCopySwitch": true, + "httpsTermination": "VMSS", + "ctlrNicName": "controller-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrNsgName": "controller-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrPipName": "controller-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmName": "controller-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmSecrets": "[take(variables('ctlrVmSecretsArray'), if(empty(parameters('keyVaultResourceId')), 0, 1))]", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaDbName": "mahara", + "maharaDbUser": "mahara", + "maharaDbUserAzure": "mahara@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaInstallScriptFilename": "install_mahara.sh", + "maharaVersion": "17.10_STABLE", + "mysqlPgresSkuHwFamily": "Gen5", + "mysqlPgresSkuName": "[concat(if(equals(parameters('mysqlPgresSkuTier'),'Basic'),'B', if(equals(parameters('mysqlPgresSkuTier'),'GeneralPurpose'),'GP', 'MO')), '_', parameters('mysqlPgresSkuHwFamily'), '_', string(parameters('mysqlPgresVcores')))]", + "mysqlPgresSkuTier": "GeneralPurpose", + "mysqlPgresStgSizeGB": 125, + "mysqlPgresVcores": 2, + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "18.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "searchType": "none", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "www.example.org", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "GEN-UNIQUE-8", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "thumbprintSslCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('sslCertThumbprint'))), 'None', parameters('sslCertThumbprint'))]", + "thumbprintCaCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('caCertThumbprint'))), 'None', parameters('caCertThumbprint'))]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + } + }, + "templateLink": { + "uri": "(maharaCommon).baseTemplateUrlstorageAccount.jsonparameters('_artifactsLocationSasToken')" + } + } + } + ], + "outputs": { + "siteURL": { + "type": "string", + "value": "[if(equals(variables('maharaCommon').siteURL,'www.example.org'),reference('networkTemplate').outputs.siteFQDN.value,'www.example.org')]" + }, + "controllerInstanceIP": { + "type": "string", + "value": "[reference('controllerTemplate').outputs.controllerIP.value]" + }, + "databaseDNS": { + "type": "string", + "value": "[variables('maharaCommon').dbDNS]" + }, + "databaseAdminUsername": { + "type": "string", + "value": "[variables('maharaCommon').dbUsername]" + }, + "firstFrontendVmIP": { + "type": "string", + "value": "[reference('scaleSetTemplate').outputs.webvm1IP.value]" + }, + "maharaDbUsername": { + "type": "string", + "value": "[variables('maharaCommon').maharaDbUserAzure]" + }, + "sshUsername": { + "type": "string", + "value": "[variables('maharaCommon').sshUsername]" + }, + "loadBalancerDNS": { + "type": "string", + "value": "[reference('networkTemplate').outputs.siteFQDN.value]" + } + }, + "variables": { + "maharaCommon": { + "location": "[resourceGroup().location]", + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "artifactsSasToken": "", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": false, + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'),concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "GEN-UNIQUE-8", + "dbServerType": "mysql", + "dbUsername": "GEN-UNIQUE-8@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "dbDNS": "mysql-resourcePrefix.mysql.database.azure.com", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "nfs", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "htmlLocalCopySwitch": true, + "httpsTermination": "VMSS", + "ctlrNicName": "controller-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrNsgName": "controller-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrPipName": "controller-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmName": "controller-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ctlrVmSecrets": "[take(variables('ctlrVmSecretsArray'), if(empty(parameters('keyVaultResourceId')), 0, 1))]", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaDbName": "mahara", + "maharaDbUser": "mahara", + "maharaDbUserAzure": "mahara@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "maharaInstallScriptFilename": "install_mahara.sh", + "maharaVersion": "17.10_STABLE", + "mysqlPgresSkuHwFamily": "Gen5", + "mysqlPgresSkuName": "[concat(if(equals(parameters('mysqlPgresSkuTier'),'Basic'),'B', if(equals(parameters('mysqlPgresSkuTier'),'GeneralPurpose'),'GP', 'MO')), '_', parameters('mysqlPgresSkuHwFamily'), '_', string(parameters('mysqlPgresVcores')))]", + "mysqlPgresSkuTier": "GeneralPurpose", + "mysqlPgresStgSizeGB": 125, + "mysqlPgresVcores": 2, + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "18.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "searchType": "none", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "www.example.org", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "GEN-UNIQUE-8", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "thumbprintSslCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('sslCertThumbprint'))), 'None', parameters('sslCertThumbprint'))]", + "thumbprintCaCert": "[if(or(empty(parameters('keyVaultResourceId')), empty(parameters('caCertThumbprint'))), 'None', parameters('caCertThumbprint'))]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + }, + "certUrlArray": [ + { + "certificateUrl": "" + }, + { + "certificateUrl": "" + } + ], + "ctlrVmSecretsArray": [ + { + "sourceVault": { + "id": "" + }, + "vaultCertificates": "[take(variables('certUrlArray'), if(empty(parameters('caCertKeyVaultURL')), 1, 2))]" + } + ], + "octets": "[split(parameters('vNetAddressSpace'), '.')]", + "resourceprefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT246 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT246 new file mode 100644 index 0000000..63aff8f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT246 @@ -0,0 +1,393 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/minecraft/minecraft-on-ubuntu/azuredeploy.json", + "/application-workloads/minecraft/minecraft-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962891281, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/minecraft/minecraft-on-ubuntu/azuredeploy.json", + "/application-workloads/minecraft/minecraft-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT246", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT246", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/minecraft-on-ubuntu/." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name you will use to log on to the Virtual Machine." + }, + "value": "GEN-UNIQUE-10" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "difficulty": { + "type": "string", + "defaultValue": "1", + "allowedValues": [ + "0", + "1", + "2", + "3" + ], + "metadata": { + "description": "0 - Peaceful, 1 - Easy, 2 - Normal, 3 - Hard" + } + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Put a unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "enable-command-block": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "enable command blocks" + } + }, + "gamemode": { + "type": "string", + "defaultValue": "0", + "allowedValues": [ + "0", + "1", + "2", + "3" + ], + "metadata": { + "description": "0 - Survival, 1 - Creative, 2 - Adventure, 3 - Spectator" + } + }, + "generate-structures": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Generates villages etc." + } + }, + "level-name": { + "type": "string", + "defaultValue": "world", + "metadata": { + "description": "Name of your world" + } + }, + "level-seed": { + "type": "string", + "defaultValue": " ", + "metadata": { + "description": "Add a seed for your world" + } + }, + "minecraftLauncherLocation": { + "type": "string", + "defaultValue": "https://launcher.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar", + "metadata": { + "description": "Location of the Minecraft server .jar launcher" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "minecraftUser": { + "type": "string", + "metadata": { + "description": "Your Minecraft user name" + }, + "value": "GEN-UNIQUE-10" + }, + "spawn-monsters": { + "type": "string", + "defaultValue": "true", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Enables monster spawning" + } + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "This is the Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value." + } + }, + "white-list": { + "type": "string", + "defaultValue": "false", + "allowedValues": [ + "false", + "true" + ], + "metadata": { + "description": "Only ops and whitelisted players can connect" + } + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "imageOffer": "UbuntuServer", + "imagePublisher": "Canonical", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-10/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "lowerCaseDNSName": "[toLower(parameters('dnsNameForPublicIP'))]", + "networkSecurityGroupName": "[toLower(parameters('dnsNameForPublicIP'))]nsg", + "nicName": "minecraftvmnic", + "publicIPAddressName": "minecraftpublicip", + "publicIPAddressType": "Dynamic", + "subnetName": "subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/minecraftvnet/subnet", + "ubuntuOSVersion": "18.04-LTS", + "virtualNetworkName": "minecraftvnet", + "vmName": "minecraftvm" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "minecraftvm/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//minecraftvm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_minecraft.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash install_minecraft.sh GEN-UNIQUE-10 1 world 0 false false true true https://launcher.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('dnsNameForPublicIP'))]nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "SSH port", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "minecraft", + "properties": { + "description": "Minecraft server port", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "25565", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "minecraftvmnic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//minecraftpublicip", + "Microsoft.Network/virtualNetworks//minecraftvnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/minecraftpublicip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/minecraftvnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "minecraftpublicip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('dnsNameForPublicIP'))]" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "minecraftvnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//[toLower(parameters('dnsNameForPublicIP'))]nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('dnsNameForPublicIP'))]nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "minecraftvm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//minecraftvmnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "minecraftvm", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 100 + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/minecraftvmnic" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT247 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT247 new file mode 100644 index 0000000..ebaa8db --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT247 @@ -0,0 +1,443 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/minio/minio-azure-gateway/azuredeploy.json", + "/application-workloads/minio/minio-azure-gateway/azuredeploy.parameters.json" + ], + "timestamp": 1642962891290, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/minio/minio-azure-gateway/azuredeploy.json", + "/application-workloads/minio/minio-azure-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT247", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.containerservice/managedclusters", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT247", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "Location of all resources to be deployed" + }, + "value": "eastus2" + }, + "virtualNetworkAddressPrefix": { + "defaultValue": [ + "10.0.0.0/16" + ], + "type": "array", + "metadata": { + "description": "VNET address space." + } + }, + "virtualNetworkSubnetAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Subnet address space." + } + }, + "agentPoolVmSku": { + "type": "string", + "defaultValue": "Standard_D16s_v3", + "metadata": { + "description": "VM SKU for AKS user node pool" + } + }, + "maxpods": { + "type": "int", + "defaultValue": 20, + "metadata": { + "description": "AKS max pods per node" + } + }, + "nodecount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "Initial node count for AKS user node pool" + } + }, + "mincount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "Min count for AKS user node pool autoscaling" + } + }, + "maxcount": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Max count for AKS user node pool autoscaling" + } + }, + "linuxSSHKey": { + "type": "string", + "metadata": { + "description": "Public key for SSH authentication" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Linux admin username for AKS cluster nodes" + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access artifacts" + }, + "defaultValue": "" + }, + "utcValue": { + "type": "string", + "defaultValue": "[utcNow()]" + } + }, + "functions": [], + "variables": { + "vnetName": "minio-gateway-vnet", + "resgpguid": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "installScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/minio.sh', parameters('_artifactsLocationSasToken')))]", + "helmValuesUri": "[uri(parameters('_artifactsLocation'), concat('scripts/values.yaml', parameters('_artifactsLocationSasToken')))]", + "blobStorageAccountName": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "blobStorageAccountPrivateEndpointName": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "blobPublicDNSZoneForwarder": "[concat('.blob.', environment().suffixes.storage)]", + "blobPrivateDnsZoneName": "[concat('privatelink', variables('blobPublicDNSZoneForwarder'))]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "blobPrivateDnsZoneGroup": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]/blobPrivateDnsZoneGroup", + "dsRoleAssignmentId": "[guid(resourceGroup().id, variables('dsRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/identities', variables('dsIdentityName')))]", + "dsRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "aksRoleAssignmentId": "[guid(resourceGroup().id, variables('aksRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/identities', 'aks'))]", + "aksRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "dsIdentityName": "dsId" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "minio-gateway-vnet", + "apiVersion": "2020-05-01", + "location": "eastus2", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/16", + "serviceEndpoints": [ + { + "service": "Microsoft.Storage" + } + ], + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "name": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "tags": { + "displayName": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]" + }, + "location": "eastus2", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Deny" + } + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "name": "default/defaultcontainer", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]" + ] + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//minio-gateway-vnet" + ], + "location": "global", + "properties": {}, + "resources": [ + { + "name": "vnet-link", + "type": "virtualNetworkLinks", + "apiVersion": "2018-09-01", + "location": "global", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]", + "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]" + ], + "properties": { + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/minio-gateway-vnet" + }, + "registrationEnabled": false + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/minio-gateway-vnet", + "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/minio-gateway-vnet/default" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat(variables('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]/blobPrivateDnsZoneGroup", + "location": "eastus2", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "name": "dsId", + "apiVersion": "2018-11-30", + "location": "eastus2" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[guid(resourceGroup().id, variables('dsRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/identities', variables('dsIdentityName')))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('dsIdentityName')), '2018-11-30').principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[guid(resourceGroup().id, variables('aksRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/identities', 'aks'))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.ContainerService/managedClusters', 'minio-cluster'), '2020-11-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "name": "minio", + "apiVersion": "2019-10-01-preview", + "location": "eastus2", + "kind": "AzureCLI", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/dsId", + "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "Microsoft.ContainerService/managedClusters/minio-cluster" + ], + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities', 'dsId')]": {} + } + }, + "properties": { + "forceUpdateTag": "[utcNow()]", + "AzCliVersion": "2.10.1", + "timeout": "PT30M", + "environmentVariables": [ + { + "name": "RESOURCEGROUP", + "secureValue": "[resourceGroup().name]" + }, + { + "name": "STORAGEACCOUNTNAME", + "value": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]" + }, + { + "name": "STORAGEACCOUNTKEY", + "secureValue": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('blobStorageAccountName')), '2019-06-01').keys[0].value]" + }, + { + "name": "HELMVALUES", + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/values.yaml', parameters('_artifactsLocationSasToken')))]" + } + ], + "primaryScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/minio.sh', parameters('_artifactsLocationSasToken')))]", + "cleanupPreference": "OnExpiration", + "retentionInterval": "P1D" + } + }, + { + "name": "minio-cluster", + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2020-11-01", + "location": "eastus2", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/minio-gateway-vnet" + ], + "properties": { + "enableRBAC": false, + "dnsPrefix": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "networkProfile": { + "networkPlugin": "azure", + "loadBalancerSku": "standard", + "serviceCidr": "172.16.0.0/24", + "dnsServiceIP": "172.16.0.10" + }, + "agentPoolProfiles": [ + { + "name": "system", + "count": 3, + "vmSize": "Standard_D4s_v3", + "osType": "Linux", + "osDiskSizeGB": 80, + "mode": "System", + "type": "VirtualMachineScaleSets", + "availabilityZones": [ + "1", + "2", + "3" + ], + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/minio-gateway-vnet/default" + }, + { + "name": "user", + "count": 4, + "vmSize": "Standard_D16s_v3", + "osType": "Linux", + "osDiskType": "Ephemeral", + "maxPods": 20, + "scaleSetPriority": "Regular", + "mode": "User", + "type": "VirtualMachineScaleSets", + "enableAutoScaling": true, + "minCount": 4, + "maxCount": 50, + "availabilityZones": [ + "1", + "2", + "3" + ], + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/minio-gateway-vnet/default" + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + } + } + ], + "outputs": { + "minioServiceIp": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deploymentScripts', 'minio')).outputs.loadBalancerIP]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT248 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT248 new file mode 100644 index 0000000..add4c51 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT248 @@ -0,0 +1,443 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/minio/minio-azure-gateway/azuredeploy.json", + "/application-workloads/minio/minio-azure-gateway/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962891320, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/minio/minio-azure-gateway/azuredeploy.json", + "/application-workloads/minio/minio-azure-gateway/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT248", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.containerservice/managedclusters", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT248", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "Location of all resources to be deployed" + }, + "value": "usgovvirginia" + }, + "virtualNetworkAddressPrefix": { + "defaultValue": [ + "10.0.0.0/16" + ], + "type": "array", + "metadata": { + "description": "VNET address space." + } + }, + "virtualNetworkSubnetAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Subnet address space." + } + }, + "agentPoolVmSku": { + "type": "string", + "defaultValue": "Standard_D16s_v3", + "metadata": { + "description": "VM SKU for AKS user node pool" + } + }, + "maxpods": { + "type": "int", + "defaultValue": 20, + "metadata": { + "description": "AKS max pods per node" + } + }, + "nodecount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "Initial node count for AKS user node pool" + } + }, + "mincount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "Min count for AKS user node pool autoscaling" + } + }, + "maxcount": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Max count for AKS user node pool autoscaling" + } + }, + "linuxSSHKey": { + "type": "string", + "metadata": { + "description": "Public key for SSH authentication" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Linux admin username for AKS cluster nodes" + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access artifacts" + }, + "defaultValue": "" + }, + "utcValue": { + "type": "string", + "defaultValue": "[utcNow()]" + } + }, + "functions": [], + "variables": { + "vnetName": "minio-gateway-vnet", + "resgpguid": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "installScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/minio.sh', parameters('_artifactsLocationSasToken')))]", + "helmValuesUri": "[uri(parameters('_artifactsLocation'), concat('scripts/values.yaml', parameters('_artifactsLocationSasToken')))]", + "blobStorageAccountName": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "blobStorageAccountPrivateEndpointName": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "blobPublicDNSZoneForwarder": "[concat('.blob.', environment().suffixes.storage)]", + "blobPrivateDnsZoneName": "[concat('privatelink', variables('blobPublicDNSZoneForwarder'))]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "blobPrivateDnsZoneGroup": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]/blobPrivateDnsZoneGroup", + "dsRoleAssignmentId": "[guid(resourceGroup().id, variables('dsRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/identities', variables('dsIdentityName')))]", + "dsRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "aksRoleAssignmentId": "[guid(resourceGroup().id, variables('aksRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/identities', 'aks'))]", + "aksRoleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "dsIdentityName": "dsId" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "minio-gateway-vnet", + "apiVersion": "2020-05-01", + "location": "usgovvirginia", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/16", + "serviceEndpoints": [ + { + "service": "Microsoft.Storage" + } + ], + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "name": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "tags": { + "displayName": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]" + }, + "location": "usgovvirginia", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Deny" + } + }, + "resources": [ + { + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "name": "default/defaultcontainer", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]" + ] + } + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//minio-gateway-vnet" + ], + "location": "global", + "properties": {}, + "resources": [ + { + "name": "vnet-link", + "type": "virtualNetworkLinks", + "apiVersion": "2018-09-01", + "location": "global", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]", + "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]" + ], + "properties": { + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/minio-gateway-vnet" + }, + "registrationEnabled": false + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/minio-gateway-vnet", + "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/minio-gateway-vnet/default" + }, + "customDnsConfigs": [ + { + "fqdn": "[concat(variables('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]" + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-03-01", + "name": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]/blobPrivateDnsZoneGroup", + "location": "usgovvirginia", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "name": "dsId", + "apiVersion": "2018-11-30", + "location": "usgovvirginia" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[guid(resourceGroup().id, variables('dsRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/identities', variables('dsIdentityName')))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('dsIdentityName')), '2018-11-30').principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[guid(resourceGroup().id, variables('aksRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/identities', 'aks'))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.ContainerService/managedClusters', 'minio-cluster'), '2020-11-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "name": "minio", + "apiVersion": "2019-10-01-preview", + "location": "usgovvirginia", + "kind": "AzureCLI", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/dsId", + "Microsoft.Storage/storageAccounts/minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "Microsoft.ContainerService/managedClusters/minio-cluster" + ], + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities', 'dsId')]": {} + } + }, + "properties": { + "forceUpdateTag": "[utcNow()]", + "AzCliVersion": "2.10.1", + "timeout": "PT30M", + "environmentVariables": [ + { + "name": "RESOURCEGROUP", + "secureValue": "[resourceGroup().name]" + }, + { + "name": "STORAGEACCOUNTNAME", + "value": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]" + }, + { + "name": "STORAGEACCOUNTKEY", + "secureValue": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('blobStorageAccountName')), '2019-06-01').keys[0].value]" + }, + { + "name": "HELMVALUES", + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/values.yaml', parameters('_artifactsLocationSasToken')))]" + } + ], + "primaryScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/minio.sh', parameters('_artifactsLocationSasToken')))]", + "cleanupPreference": "OnExpiration", + "retentionInterval": "P1D" + } + }, + { + "name": "minio-cluster", + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2020-11-01", + "location": "usgovvirginia", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/minio-gateway-vnet" + ], + "properties": { + "enableRBAC": false, + "dnsPrefix": "minio[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]", + "networkProfile": { + "networkPlugin": "azure", + "loadBalancerSku": "standard", + "serviceCidr": "172.16.0.0/24", + "dnsServiceIP": "172.16.0.10" + }, + "agentPoolProfiles": [ + { + "name": "system", + "count": 3, + "vmSize": "Standard_D4s_v3", + "osType": "Linux", + "osDiskSizeGB": 80, + "mode": "System", + "type": "VirtualMachineScaleSets", + "availabilityZones": [ + "1", + "2", + "3" + ], + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/minio-gateway-vnet/default" + }, + { + "name": "user", + "count": 4, + "vmSize": "Standard_D16s_v3", + "osType": "Linux", + "osDiskType": "Ephemeral", + "maxPods": 20, + "scaleSetPriority": "Regular", + "mode": "User", + "type": "VirtualMachineScaleSets", + "enableAutoScaling": true, + "minCount": 4, + "maxCount": 50, + "availabilityZones": [ + "1", + "2", + "3" + ], + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/minio-gateway-vnet/default" + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + } + } + ], + "outputs": { + "minioServiceIp": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deploymentScripts', 'minio')).outputs.loadBalancerIP]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT249 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT249 new file mode 100644 index 0000000..6826e68 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT249 @@ -0,0 +1,178 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/arbiter-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891343, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/arbiter-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT249", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT249", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicArbiter", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigArbiter", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmArbiter", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicArbiter" + ], + "properties": { + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsarbiter", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmArbiter_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicArbiter" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmArbiter/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmArbiter" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT25 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT25 new file mode 100644 index 0000000..a9e6df7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT25 @@ -0,0 +1,197 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/router-resources.json" + ], + "timestamp": 1642962883505, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/router-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT25", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT25", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mongoAdminUsername": { + "type": "string" + }, + "mongoAdminPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + }, + "mongoSSLCertPassword": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsnamer" + } + } + }, + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//namespacevmbasenamePublicIp" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "dnsnamea-vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/router1Install", + "apiVersion": "2019-03-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "[concat('bash router.sh ', parameters('mongoAdminUsername'), ' ', parameters('mongoAdminPassword'), ' ', reference(resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('namespace'), parameters('vmbasename'), 'PublicIp'))).dnsSettings.fqdn, ' ', parameters('mongoSSLCertPassword'))]" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT250 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT250 new file mode 100644 index 0000000..75eec9a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT250 @@ -0,0 +1,582 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891353, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT250", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT250", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines (which also becomes a system user administrator in MongoDB)" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password used when provisioning virtual machines (which is also a password for the system administrator in MongoDB)" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Unique namespace for the Storage Account where the Virtual Machine's disks will be placed (this name will be used as a prefix to create one or more storage accounts as per t-shirt size)" + }, + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage account type to be provisioned" + }, + "value": "Standard_LRS" + }, + "vmSeries": { + "type": "string", + "defaultValue": "D", + "allowedValues": [ + "D", + "DS" + ], + "metadata": { + "description": "Virtual machine series to use for data nodes in cluster" + }, + "value": "D" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "mongodbVnet", + "metadata": { + "description": "The arbitrary name of the virtual network provisioned for the MongoDB deployment" + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "defaultValue": "mongodbSubnet", + "metadata": { + "description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The network address space for the virtual network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The network address space for the virtual subnet" + }, + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.1", + "metadata": { + "description": "The IP address prefix that will be used for constructing a static private IP address for each node in the cluster" + }, + "value": "10.0.0.1" + }, + "jumpbox": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "The flag allowing to enable or disable provisioning of the jumpbox VM that can be used to access the MongoDB environment" + }, + "value": "Disabled" + }, + "tshirtSize": { + "type": "string", + "defaultValue": "XSmall", + "allowedValues": [ + "XSmall", + "Small", + "Medium", + "Large", + "XLarge", + "XXLarge" + ], + "metadata": { + "description": "T-shirt size of the MongoDB deployment" + }, + "value": "XSmall" + }, + "osFamily": { + "type": "string", + "defaultValue": "Ubuntu", + "allowedValues": [ + "Ubuntu" + ], + "metadata": { + "description": "The target OS for the virtual machines running MongoDB" + }, + "value": "Ubuntu" + }, + "replicaSetName": { + "type": "string", + "defaultValue": "rs0", + "metadata": { + "description": "The name of the MongoDB replica set" + }, + "value": "rs0" + }, + "replicaSetKey": { + "type": "string", + "metadata": { + "description": "The shared secret key for the MongoDB replica set" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "osFamily": { + "Ubuntu": { + "osName": "ubuntu", + "installerBaseUrl": "http://repo.mongodb.org/apt/ubuntu", + "installerPackages": "mongodb-org", + "installerVersion": "4.0.2", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSKU": "14.04.5-LTS" + } + }, + "tshirtSizeTypes": { + "XSmall": { + "vmSizeMember": "Standard_D1_v2", + "vmSizeArbiter": "Standard_D1_v2", + "numberOfMembers": 1, + "totalMemberCount": 2, + "arbiter": "Enabled", + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('member-resources-D1.json', parameters('_artifactsLocationSasToken')))]", + "storageAccountCount": 1, + "dataDiskSize": 128 + }, + "Small": { + "vmSizeMember": "Standard_D1_v2", + "vmSizeArbiter": "Standard_D1_v2", + "numberOfMembers": 2, + "totalMemberCount": 3, + "arbiter": "Disabled", + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('member-resources-D1.json', parameters('_artifactsLocationSasToken')))]", + "storageAccountCount": 1, + "dataDiskSize": 128 + }, + "Medium": { + "vmSizeMember": "Standard_D2_v2", + "vmSizeArbiter": "Standard_D1_v2", + "numberOfMembers": 3, + "totalMemberCount": 4, + "arbiter": "Enabled", + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('member-resources-D2.json', parameters('_artifactsLocationSasToken')))]", + "storageAccountCount": 2, + "dataDiskSize": 256 + }, + "Large": { + "vmSizeMember": "Standard_D2_v2", + "vmSizeArbiter": "Standard_D1_v2", + "numberOfMembers": 7, + "totalMemberCount": 8, + "arbiter": "Enabled", + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('member-resources-D2.json', parameters('_artifactsLocationSasToken')))]", + "storageAccountCount": 4, + "dataDiskSize": 256 + }, + "XLarge": { + "vmSizeMember": "Standard_D3_v2", + "vmSizeArbiter": "Standard_D1_v2", + "numberOfMembers": 7, + "totalMemberCount": 8, + "arbiter": "Enabled", + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('member-resources-D3.json', parameters('_artifactsLocationSasToken')))]", + "storageAccountCount": 4, + "dataDiskSize": 512 + }, + "XXLarge": { + "vmSizeMember": "Standard_D3_v2", + "vmSizeArbiter": "Standard_D1_v2", + "numberOfMembers": 15, + "totalMemberCount": 16, + "arbiter": "Disabled", + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('member-resources-D3.json', parameters('_artifactsLocationSasToken')))]", + "storageAccountCount": 8, + "dataDiskSize": 512 + } + }, + "vmStorageAccountContainerName": "vhd-mongodb", + "sharedScriptUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/(osFamilySpec).osName/", + "jumpboxTemplate": { + "Enabled": "jumpbox-resources.json", + "Disabled": "empty-resources.json" + }, + "arbiterTemplate": { + "Enabled": "arbiter-resources.json", + "Disabled": "empty-resources.json" + }, + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "jumpboxTemplateUrl": "[uri(parameters('_artifactsLocation'), concat(variables('jumpboxTemplate').Enabled, parameters('_artifactsLocationSasToken')))]", + "emptyResourcesTemplateUrl": "[uri(parameters('_artifactsLocation'), concat(variables('jumpboxTemplate').Disabled, parameters('_artifactsLocationSasToken')))]", + "arbiterTemplateUrl": "[uri(parameters('_artifactsLocation'), concat(variables('arbiterTemplate')[variables('clusterSpec').arbiter], parameters('_artifactsLocationSasToken')))]", + "commonSettings": { + "availabilitySetName": "mongodbAvailSet" + }, + "storageSettings": { + "vhdStorageAccountName": "GEN-UNIQUE-8", + "vhdContainerName": "vhd-mongodb", + "vmSeries": "D", + "destinationVhdsContainer": "[concat('https://', parameters('storageAccountNamePrefix'), environment().suffixes.storage, '/', variables('vmStorageAccountContainerName'), '/')]", + "storageAccountCount": "(clusterSpec).storageAccountCount", + "storageAccountType": "Standard_LRS" + }, + "networkSettings": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + }, + "machineSettings": { + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "machineNamePrefix": "mongodb-", + "osImageReference": { + "publisher": "(osFamilySpec).imagePublisher", + "offer": "(osFamilySpec).imageOffer", + "sku": "(osFamilySpec).imageSKU", + "version": "latest" + } + }, + "clusterSpec": "(tshirtSizeTypes)[parameters(tshirtSize)]", + "osFamilySpec": "(osFamily)[parameters(osFamily)]", + "installCommand": "bash mongodb-(osFamilySpec).osName-install.sh -i (osFamilySpec).installerBaseUrl -b (osFamilySpec).installerPackages -v (osFamilySpec).installerVersion -r rs0 -k GEN-UNIQUE-8 -u GEN-UNIQUE -p GEN-PASSWORD -x (networkSettings).machineIpPrefix -n (clusterSpec).totalMemberCount", + "vmScripts": { + "scriptsToDownload": [ + "[uri(parameters('_artifactsLocation'), concat('mongodb-', variables('osFamilySpec').osName, '-install.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/(osFamilySpec).osName/vm-disk-utils-0.1.sh" + ], + "regularNodeInstallCommand": "bash mongodb-(osFamilySpec).osName-install.sh -i (osFamilySpec).installerBaseUrl -b (osFamilySpec).installerPackages -v (osFamilySpec).installerVersion -r rs0 -k GEN-UNIQUE-8 -u GEN-UNIQUE -p GEN-PASSWORD -x (networkSettings).machineIpPrefix -n (clusterSpec).totalMemberCount", + "lastNodeInstallCommand": "bash mongodb-(osFamilySpec).osName-install.sh -i (osFamilySpec).installerBaseUrl -b (osFamilySpec).installerPackages -v (osFamilySpec).installerVersion -r rs0 -k GEN-UNIQUE-8 -u GEN-UNIQUE -p GEN-PASSWORD -x (networkSettings).machineIpPrefix -n (clusterSpec).totalMemberCount -l", + "arbiterNodeInstallCommand": "bash mongodb-(osFamilySpec).osName-install.sh -i (osFamilySpec).installerBaseUrl -b (osFamilySpec).installerPackages -v (osFamilySpec).installerVersion -r rs0 -k GEN-UNIQUE-8 -u GEN-UNIQUE -p GEN-PASSWORD -x (networkSettings).machineIpPrefix -n (clusterSpec).totalMemberCount -a" + } + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "storageSettings": { + "value": { + "vhdStorageAccountName": "GEN-UNIQUE-8", + "vhdContainerName": "vhd-mongodb", + "vmSeries": "D", + "destinationVhdsContainer": "[concat('https://', parameters('storageAccountNamePrefix'), environment().suffixes.storage, '/', variables('vmStorageAccountContainerName'), '/')]", + "storageAccountCount": "(clusterSpec).storageAccountCount", + "storageAccountType": "Standard_LRS" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "condition": false, + "name": "jumpbox-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('jumpboxTemplate').Enabled, parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageSettings": { + "value": { + "vhdStorageAccountName": "(storageSettings).vhdStorageAccountName0", + "vhdContainerName": "(storageSettings).vhdContainerName", + "vmSeries": "D", + "destinationVhdsContainer": "[concat('https://', variables('storageSettings').vhdStorageAccountName, '0', environment().suffixes.storage, '/', variables('storageSettings').vhdContainerName, '/')]" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "machineSettings": { + "value": { + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "machineNamePrefix": "mongodb-", + "osImageReference": { + "publisher": "(osFamilySpec).imagePublisher", + "offer": "(osFamilySpec).imageOffer", + "sku": "(osFamilySpec).imageSKU", + "version": "latest" + } + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "condition": false, + "name": "empty-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('jumpboxTemplate').Disabled, parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "member-resourcescopyindex()", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "copy": { + "name": "memberNodesLoop", + "count": "(clusterSpec).numberOfMembers" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(clusterSpec).vmTemplate", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "machineSettings": { + "value": { + "adminUsername": "(machineSettings).adminUsername", + "adminPassword": "(machineSettings).adminPassword", + "machineNamePrefix": "(machineSettings).machineNamePrefix", + "osImageReference": "(machineSettings).osImageReference", + "vmSize": "(clusterSpec).vmSizeMember", + "dataDiskSize": "(clusterSpec).dataDiskSize", + "machineIndex": "[copyindex()]", + "vmScripts": "(vmScripts).scriptsToDownload", + "commandToExecute": "(vmScripts).regularNodeInstallCommand" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "lastmember-resources", + "apiVersion": "2020-06-01", + "dependsOn": [ + "memberNodesLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(clusterSpec).vmTemplate", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "machineSettings": { + "value": { + "adminUsername": "(machineSettings).adminUsername", + "adminPassword": "(machineSettings).adminPassword", + "machineNamePrefix": "(machineSettings).machineNamePrefix", + "osImageReference": "(machineSettings).osImageReference", + "vmSize": "(clusterSpec).vmSizeMember", + "dataDiskSize": "(clusterSpec).dataDiskSize", + "machineIndex": "(clusterSpec).numberOfMembers", + "vmScripts": "(vmScripts).scriptsToDownload", + "commandToExecute": "(vmScripts).lastNodeInstallCommand" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "arbiter-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments//lastmember-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('arbiterTemplate')[variables('clusterSpec').arbiter], parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "machineSettings": { + "value": { + "adminUsername": "(machineSettings).adminUsername", + "adminPassword": "(machineSettings).adminPassword", + "machineNamePrefix": "(machineSettings).machineNamePrefix", + "osImageReference": "(machineSettings).osImageReference", + "vmSize": "(clusterSpec).vmSizeArbiter", + "vmScripts": "(vmScripts).scriptsToDownload", + "commandToExecute": "(vmScripts).arbiterNodeInstallCommand" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT251 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT251 new file mode 100644 index 0000000..7f6cf81 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT251 @@ -0,0 +1,83 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/empty-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891393, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/empty-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT251", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT251", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT252 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT252 new file mode 100644 index 0000000..486cba0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT252 @@ -0,0 +1,211 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/jumpbox-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891402, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/jumpbox-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT252", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT252", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageSettings": { + "type": "object", + "metadata": { + "Description": "Storage settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "variables": { + "vmSize": "Standard_storageSettings1", + "securityGroupName": "jumpboxNSG" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "jumpboxNSG", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "jumpboxPublicIP", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpboxNIC", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//jumpboxPublicIP", + "Microsoft.Network/networkSecurityGroups//jumpboxNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigJumpbox", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/jumpboxPublicIP" + }, + "subnet": { + "id": "networkSettings" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/jumpboxNSG" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpboxVM", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//jumpboxNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_storageSettings1" + }, + "osProfile": { + "computerName": "machineSettingsjumpbox", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "jumpboxVM_OSDisk", + "caching": "None", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpboxNIC" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT253 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT253 new file mode 100644 index 0000000..2158d06 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT253 @@ -0,0 +1,204 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D1.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891413, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D1.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT253", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT253", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk0", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT254 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT254 new file mode 100644 index 0000000..58a180f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT254 @@ -0,0 +1,218 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D11.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891422, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D11.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT254", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT254", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT255 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT255 new file mode 100644 index 0000000..a93cf12 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT255 @@ -0,0 +1,246 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D12.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891466, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D12.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT255", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT255", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk0", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT256 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT256 new file mode 100644 index 0000000..5f86424 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT256 @@ -0,0 +1,302 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D13.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891488, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D13.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT256", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT256", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk0", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 8, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk9", + "diskSizeGB": "machineSettings", + "lun": 9, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk10", + "diskSizeGB": "machineSettings", + "lun": 10, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk11", + "diskSizeGB": "machineSettings", + "lun": 11, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk12", + "diskSizeGB": "machineSettings", + "lun": 12, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk13", + "diskSizeGB": "machineSettings", + "lun": 13, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk14", + "diskSizeGB": "machineSettings", + "lun": 14, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk15", + "diskSizeGB": "machineSettings", + "lun": 15, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT257 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT257 new file mode 100644 index 0000000..266d854 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT257 @@ -0,0 +1,414 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D14.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891513, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D14.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT257", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT257", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk0", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 8, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk9", + "diskSizeGB": "machineSettings", + "lun": 9, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk10", + "diskSizeGB": "machineSettings", + "lun": 10, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk11", + "diskSizeGB": "machineSettings", + "lun": 11, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk12", + "diskSizeGB": "machineSettings", + "lun": 12, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk13", + "diskSizeGB": "machineSettings", + "lun": 13, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk14", + "diskSizeGB": "machineSettings", + "lun": 14, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk15", + "diskSizeGB": "machineSettings", + "lun": 15, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk16", + "diskSizeGB": "machineSettings", + "lun": 16, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk17", + "diskSizeGB": "machineSettings", + "lun": 17, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk18", + "diskSizeGB": "machineSettings", + "lun": 18, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk19", + "diskSizeGB": "machineSettings", + "lun": 19, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk20", + "diskSizeGB": "machineSettings", + "lun": 20, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk21", + "diskSizeGB": "machineSettings", + "lun": 21, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk22", + "diskSizeGB": "machineSettings", + "lun": 22, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk23", + "diskSizeGB": "machineSettings", + "lun": 23, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk24", + "diskSizeGB": "machineSettings", + "lun": 24, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk25", + "diskSizeGB": "machineSettings", + "lun": 25, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk26", + "diskSizeGB": "machineSettings", + "lun": 26, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk27", + "diskSizeGB": "machineSettings", + "lun": 27, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk28", + "diskSizeGB": "machineSettings", + "lun": 28, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk29", + "diskSizeGB": "machineSettings", + "lun": 29, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk30", + "diskSizeGB": "machineSettings", + "lun": 30, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk31", + "diskSizeGB": "machineSettings", + "lun": 31, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT258 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT258 new file mode 100644 index 0000000..def4da8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT258 @@ -0,0 +1,218 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D2.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891522, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D2.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT258", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT258", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk0", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT259 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT259 new file mode 100644 index 0000000..b9db909 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT259 @@ -0,0 +1,246 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D3.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891529, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D3.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT259", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT259", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk0", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT26 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT26 new file mode 100644 index 0000000..7bb18d9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT26 @@ -0,0 +1,139 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/shared-resources.json" + ], + "timestamp": 1642962883513, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/airflow/mongodb-sharded-on-centos/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT26", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT26", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "namespace": { + "type": "string", + "metadata": { + "Description": "namespace" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "securityGroupName": "namespacensg", + "nsgName": "namespacensg" + }, + "resources": [ + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "MongoDB", + "properties": { + "description": "Allows MongoDB traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "27017", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//namespacensg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacensg" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT260 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT260 new file mode 100644 index 0000000..d61d813 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT260 @@ -0,0 +1,302 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D4.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891539, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/member-resources-D4.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT260", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT260", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk0", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 8, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk9", + "diskSizeGB": "machineSettings", + "lun": 9, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk10", + "diskSizeGB": "machineSettings", + "lun": 10, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk11", + "diskSizeGB": "machineSettings", + "lun": 11, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk12", + "diskSizeGB": "machineSettings", + "lun": 12, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk13", + "diskSizeGB": "machineSettings", + "lun": 13, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk14", + "diskSizeGB": "machineSettings", + "lun": 14, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk15", + "diskSizeGB": "machineSettings", + "lun": 15, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT261 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT261 new file mode 100644 index 0000000..215f811 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT261 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/shared-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891547, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-high-availability/shared-resources.json", + "/application-workloads/mongo/mongodb-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT261", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT261", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "storageSettings": { + "type": "object", + "metadata": { + "Description": "Storage settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountNamePrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmSeries": { + "value": "D" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "osFamily": { + "value": "Ubuntu" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE-8" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storageSettingscopyindex()", + "apiVersion": "2021-02-01", + "location": "location", + "copy": { + "name": "storageAccountsLoop", + "count": "storageSettings" + }, + "sku": { + "name": "storageSettings" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "commonSettings", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT262 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT262 new file mode 100644 index 0000000..5a08837 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT262 @@ -0,0 +1,181 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/arbiter-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891554, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/arbiter-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT262", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT262", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicArbiter", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigArbiter", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmArbiter", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicArbiter" + ], + "properties": { + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsarbiter", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmArbiter_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicArbiter" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmArbiter/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmArbiter" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT263 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT263 new file mode 100644 index 0000000..70a894f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT263 @@ -0,0 +1,599 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891561, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT263", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT263", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines (which also becomes a system user administrator in MongoDB)" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password used when provisioning virtual machines (which is also a password for the system administrator in MongoDB)" + }, + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "mongodbVnet", + "metadata": { + "description": "The arbitrary name of the virtual network provisioned for the MongoDB deployment" + }, + "value": "mongodbVnet" + }, + "subnetName": { + "type": "string", + "defaultValue": "mongodbSubnet", + "metadata": { + "description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "mongodbSubnet" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The network address space for the virtual network" + }, + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The network address space for the virtual subnet" + }, + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.1", + "metadata": { + "description": "The IP address prefix that will be used for constructing a static private IP address for each node in the cluster" + }, + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the front end Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "allowedValues": [ + "12.04.2-LTS", + "12.04.3-LTS", + "12.04.4-LTS", + "12.04.5-LTS", + "12.10", + "14.04.5-LTS", + "14.10", + "15.10" + ], + "metadata": { + "description": "The Ubuntu version for the front end VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.2-LTS, 12.04.3-LTS, 12.04.4-LTS, 12.04.5-LTS, 12.10, 14.04.5-LTS, 14.10, 15.10." + }, + "value": "14.04.5-LTS" + }, + "jumpbox": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "The flag allowing to enable or disable provisioning of the jumpbox VM that can be used to access the MongoDB environment" + }, + "value": "Disabled" + }, + "tshirtSize": { + "type": "string", + "defaultValue": "XSmall", + "allowedValues": [ + "XSmall", + "Small", + "Medium", + "Large", + "XLarge", + "XXLarge" + ], + "metadata": { + "description": "T-shirt size of the MongoDB deployment" + }, + "value": "XSmall" + }, + "replicaSetName": { + "type": "string", + "defaultValue": "rs0", + "metadata": { + "description": "The name of the MongoDB replica set" + }, + "value": "rs0" + }, + "replicaSetKey": { + "type": "securestring", + "metadata": { + "description": "The shared secret key for the MongoDB replica set" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "_comment0": "/* T-shirt sizes may vary for different reasons, and some customers may want to modify these - so feel free to go ahead and define your favorite t-shirts */", + "tshirtSizeXSmall": { + "vmSizeMember": "Standard_D2_v3", + "vmSizeArbiter": "Standard_A1", + "numberOfMembers": 1, + "totalMemberCount": 2, + "arbiter": "Enabled", + "vmTemplate": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D1.json", + "storageAccountCount": 1, + "dataDiskSize": 100 + }, + "tshirtSizeSmall": { + "vmSizeMember": "Standard_D2_v3", + "vmSizeArbiter": "Standard_A1", + "numberOfMembers": 2, + "totalMemberCount": 3, + "arbiter": "Disabled", + "vmTemplate": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D1.json", + "storageAccountCount": 1, + "dataDiskSize": 100 + }, + "tshirtSizeMedium": { + "vmSizeMember": "Standard_D2_v3", + "vmSizeArbiter": "Standard_A1", + "numberOfMembers": 3, + "totalMemberCount": 4, + "arbiter": "Enabled", + "vmTemplate": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D2.json", + "storageAccountCount": 2, + "dataDiskSize": 250 + }, + "tshirtSizeLarge": { + "vmSizeMember": "Standard_D2_v3", + "vmSizeArbiter": "Standard_A1", + "numberOfMembers": 7, + "totalMemberCount": 8, + "arbiter": "Enabled", + "vmTemplate": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D2.json", + "storageAccountCount": 4, + "dataDiskSize": 250 + }, + "tshirtSizeXLarge": { + "vmSizeMember": "Standard_D4_v3", + "vmSizeArbiter": "Standard_A1", + "numberOfMembers": 7, + "totalMemberCount": 8, + "arbiter": "Enabled", + "vmTemplate": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D3.json", + "storageAccountCount": 4, + "dataDiskSize": 500 + }, + "tshirtSizeXXLarge": { + "vmSizeMember": "Standard_D4_v3", + "vmSizeArbiter": "Standard_A1", + "numberOfMembers": 15, + "totalMemberCount": 16, + "arbiter": "Disabled", + "vmTemplate": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D3.json", + "storageAccountCount": 8, + "dataDiskSize": 500 + }, + "osFamilyUbuntu": { + "osName": "ubuntu", + "installerBaseUrl": "http://repo.mongodb.org/apt/ubuntu", + "installerPackages": "mongodb-org", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSKU": "14.04.5-LTS" + }, + "vnetID": "Microsoft.Network/virtualNetworks/mongodbVnet", + "sharedScriptUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/(osFamilySpec).osName/", + "scriptUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/", + "templateBaseUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/", + "jumpboxTemplateEnabled": "jumpbox-resources.json", + "jumpboxTemplateDisabled": "empty-resources.json", + "arbiterTemplateEnabled": "arbiter-resources.json", + "arbiterTemplateDisabled": "empty-resources.json", + "sharedTemplateUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/shared-resources.json", + "jumpboxTemplateUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/concat(jumpboxTemplate, parameters(jumpbox))", + "arbiterTemplateUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/concat(arbiterTemplate, variables(clusterSpec).arbiter)", + "frontendnodeserverTemplateUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/frontend-resource.json", + "commonSettings": { + "availabilitySetName": "mongodbAvailSet" + }, + "networkSettings": { + "virtualNetworkName": "mongodbVnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "mongodbSubnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/mongodbVnet/mongodbSubnet", + "machineIpPrefix": "10.0.0.1", + "vnetID": "Microsoft.Network/virtualNetworks/mongodbVnet" + }, + "machineSettings": { + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "machineNamePrefix": "mongodb-", + "ubuntuOSVersion": "14.04.5-LTS", + "dnsNameForPublicIP": "GEN-UNIQUE-8", + "osImageReference": { + "publisher": "(osFamilySpec).imagePublisher", + "offer": "(osFamilySpec).imageOffer", + "sku": "(osFamilySpec).imageSKU", + "version": "latest" + } + }, + "clusterSpec": "concat(tshirtSize, parameters(tshirtSize))", + "osFamily": "Ubuntu", + "osFamilySpec": "concat(osFamily, variables(osFamily))", + "installCommand": "bash mongodb-(osFamilySpec).osName-install.sh -i (osFamilySpec).installerBaseUrl -b (osFamilySpec).installerPackages -r rs0 -k GEN-UNIQUE -u GEN-UNIQUE -p GEN-PASSWORD -x (networkSettings).machineIpPrefix -n (clusterSpec).totalMemberCount", + "vmScripts": { + "scriptsToDownload": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/mongodb-(osFamilySpec).osName-install.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/(osFamilySpec).osName/vm-disk-utils-0.1.sh" + ], + "regularNodeInstallCommand": "bash mongodb-(osFamilySpec).osName-install.sh -i (osFamilySpec).installerBaseUrl -b (osFamilySpec).installerPackages -r rs0 -k GEN-UNIQUE -u GEN-UNIQUE -p GEN-PASSWORD -x (networkSettings).machineIpPrefix -n (clusterSpec).totalMemberCount", + "lastNodeInstallCommand": "bash mongodb-(osFamilySpec).osName-install.sh -i (osFamilySpec).installerBaseUrl -b (osFamilySpec).installerPackages -r rs0 -k GEN-UNIQUE -u GEN-UNIQUE -p GEN-PASSWORD -x (networkSettings).machineIpPrefix -n (clusterSpec).totalMemberCount -l", + "arbiterNodeInstallCommand": "bash mongodb-(osFamilySpec).osName-install.sh -i (osFamilySpec).installerBaseUrl -b (osFamilySpec).installerPackages -r rs0 -k GEN-UNIQUE -u GEN-UNIQUE -p GEN-PASSWORD -x (networkSettings).machineIpPrefix -n (clusterSpec).totalMemberCount -a" + }, + "_comment1": "/* The weird list of values below helps partition VM disks across multiple storage accounts to achieve a better throughput */", + "_comment2": "/* Feel free to modify the default allocations if you are comfortable and understand what you are doing */", + "storageAccountForXSmall_0": "0", + "storageAccountForXSmall_1": "0", + "storageAccountForSmall_0": "0", + "storageAccountForSmall_1": "0", + "storageAccountForSmall_2": "0", + "storageAccountForMedium_0": "0", + "storageAccountForMedium_1": "0", + "storageAccountForMedium_2": "0", + "storageAccountForMedium_3": "0", + "storageAccountForLarge_0": "0", + "storageAccountForLarge_1": "1", + "storageAccountForLarge_2": "2", + "storageAccountForLarge_3": "3", + "storageAccountForLarge_4": "0", + "storageAccountForLarge_5": "1", + "storageAccountForLarge_6": "2", + "storageAccountForLarge_7": "3", + "storageAccountForXLarge_0": "0", + "storageAccountForXLarge_1": "1", + "storageAccountForXLarge_2": "2", + "storageAccountForXLarge_3": "3", + "storageAccountForXLarge_4": "0", + "storageAccountForXLarge_5": "1", + "storageAccountForXLarge_6": "2", + "storageAccountForXLarge_7": "3", + "storageAccountForXXLarge_0": "0", + "storageAccountForXXLarge_1": "1", + "storageAccountForXXLarge_2": "2", + "storageAccountForXXLarge_3": "3", + "storageAccountForXXLarge_4": "4", + "storageAccountForXXLarge_5": "5", + "storageAccountForXXLarge_6": "6", + "storageAccountForXXLarge_7": "7", + "storageAccountForXXLarge_8": "0", + "storageAccountForXXLarge_9": "1", + "storageAccountForXXLarge_10": "2", + "storageAccountForXXLarge_11": "3", + "storageAccountForXXLarge_12": "4", + "storageAccountForXXLarge_13": "5", + "storageAccountForXXLarge_14": "6", + "storageAccountForXXLarge_15": "7" + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/shared-resources.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "mongodbVnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "mongodbSubnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/mongodbVnet/mongodbSubnet", + "machineIpPrefix": "10.0.0.1", + "vnetID": "Microsoft.Network/virtualNetworks/mongodbVnet" + } + } + } + } + }, + { + "name": "jumpbox-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/concat(jumpboxTemplate, parameters(jumpbox))", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "mongodbVnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "mongodbSubnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/mongodbVnet/mongodbSubnet", + "machineIpPrefix": "10.0.0.1", + "vnetID": "Microsoft.Network/virtualNetworks/mongodbVnet" + } + }, + "machineSettings": { + "value": { + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "machineNamePrefix": "mongodb-", + "ubuntuOSVersion": "14.04.5-LTS", + "dnsNameForPublicIP": "GEN-UNIQUE-8", + "osImageReference": { + "publisher": "(osFamilySpec).imagePublisher", + "offer": "(osFamilySpec).imageOffer", + "sku": "(osFamilySpec).imageSKU", + "version": "latest" + } + } + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "member-resourcescopyindex()", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "copy": { + "name": "memberNodesLoop", + "count": "(clusterSpec).numberOfMembers" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(clusterSpec).vmTemplate", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "mongodbVnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "mongodbSubnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/mongodbVnet/mongodbSubnet", + "machineIpPrefix": "10.0.0.1", + "vnetID": "Microsoft.Network/virtualNetworks/mongodbVnet" + } + }, + "machineSettings": { + "value": { + "adminUsername": "(machineSettings).adminUsername", + "adminPassword": "(machineSettings).adminPassword", + "machineNamePrefix": "(machineSettings).machineNamePrefix", + "osImageReference": "(machineSettings).osImageReference", + "vmSize": "(clusterSpec).vmSizeMember", + "dataDiskSize": "(clusterSpec).dataDiskSize", + "machineIndex": "[copyindex()]", + "vmScripts": "(vmScripts).scriptsToDownload", + "commandToExecute": "(vmScripts).regularNodeInstallCommand" + } + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "lastmember-resources", + "apiVersion": "2015-01-01", + "dependsOn": [ + "memberNodesLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(clusterSpec).vmTemplate", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "mongodbVnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "mongodbSubnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/mongodbVnet/mongodbSubnet", + "machineIpPrefix": "10.0.0.1", + "vnetID": "Microsoft.Network/virtualNetworks/mongodbVnet" + } + }, + "machineSettings": { + "value": { + "adminUsername": "(machineSettings).adminUsername", + "adminPassword": "(machineSettings).adminPassword", + "machineNamePrefix": "(machineSettings).machineNamePrefix", + "osImageReference": "(machineSettings).osImageReference", + "vmSize": "(clusterSpec).vmSizeMember", + "dataDiskSize": "(clusterSpec).dataDiskSize", + "machineIndex": "(clusterSpec).numberOfMembers", + "vmScripts": "(vmScripts).scriptsToDownload", + "commandToExecute": "(vmScripts).lastNodeInstallCommand" + } + } + } + } + }, + { + "name": "arbiter-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments/lastmember-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/concat(arbiterTemplate, variables(clusterSpec).arbiter)", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "mongodbVnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "mongodbSubnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/mongodbVnet/mongodbSubnet", + "machineIpPrefix": "10.0.0.1", + "vnetID": "Microsoft.Network/virtualNetworks/mongodbVnet" + } + }, + "machineSettings": { + "value": { + "adminUsername": "(machineSettings).adminUsername", + "adminPassword": "(machineSettings).adminPassword", + "machineNamePrefix": "(machineSettings).machineNamePrefix", + "osImageReference": "(machineSettings).osImageReference", + "vmSize": "(clusterSpec).vmSizeArbiter", + "vmScripts": "(vmScripts).scriptsToDownload", + "commandToExecute": "(vmScripts).arbiterNodeInstallCommand" + } + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "frontend-resource", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/frontend-resource.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "mongodbAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "mongodbVnet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "mongodbSubnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/mongodbVnet/mongodbSubnet", + "machineIpPrefix": "10.0.0.1", + "vnetID": "Microsoft.Network/virtualNetworks/mongodbVnet" + } + }, + "machineSettings": { + "value": { + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "machineNamePrefix": "mongodb-", + "ubuntuOSVersion": "14.04.5-LTS", + "dnsNameForPublicIP": "GEN-UNIQUE-8", + "osImageReference": { + "publisher": "(osFamilySpec).imagePublisher", + "offer": "(osFamilySpec).imageOffer", + "sku": "(osFamilySpec).imageSKU", + "version": "latest" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT264 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT264 new file mode 100644 index 0000000..d7c31fa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT264 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/empty-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891576, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/empty-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT264", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT264", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT265 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT265 new file mode 100644 index 0000000..9356362 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT265 @@ -0,0 +1,215 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/frontend-resource.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891612, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/frontend-resource.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT265", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT265", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyUbuntuVM", + "vmSize": "Standard_D2_v3", + "virtualNetworkName": "networkSettings", + "subnetRef": "networkSettings" + }, + "resources": [ + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "machineSettings" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyUbuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MyUbuntuVM", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "machineSettings", + "version": "latest" + }, + "osDisk": { + "name": "VmName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyUbuntuVM/CustomScript", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/MyUbuntuVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/Script/templateScript.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-nodejs-high-availability/nodeservice/app.js" + ], + "commandToExecute": "sh templateScript.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT266 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT266 new file mode 100644 index 0000000..0bb6818 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT266 @@ -0,0 +1,207 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/jumpbox-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891640, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/jumpbox-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT266", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT266", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "variables": { + "vmSize": "Standard_A0", + "securityGroupName": "jumpboxNSG" + }, + "resources": [ + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "jumpboxNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "jumpboxPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpboxNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/jumpboxPublicIP", + "Microsoft.Network/networkSecurityGroups/jumpboxNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigJumpbox", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/jumpboxPublicIP" + }, + "subnet": { + "id": "networkSettings" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/jumpboxNSG" + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpboxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/jumpboxNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "machineSettingsjumpbox", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "jumpboxVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpboxNIC" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT267 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT267 new file mode 100644 index 0000000..a271f70 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT267 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D1.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891649, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D1.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT267", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT267", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT268 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT268 new file mode 100644 index 0000000..e2c0320 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT268 @@ -0,0 +1,214 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D11.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891657, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D11.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT268", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT268", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT269 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT269 new file mode 100644 index 0000000..a0d3bb7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT269 @@ -0,0 +1,242 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D12.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891664, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D12.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT269", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT269", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT270 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT270 new file mode 100644 index 0000000..bcda7df --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT270 @@ -0,0 +1,297 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D13.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891673, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D13.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT270", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT270", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDis3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk9", + "diskSizeGB": "machineSettings", + "lun": 8, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk10", + "diskSizeGB": "machineSettings", + "lun": 9, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk11", + "diskSizeGB": "machineSettings", + "lun": 10, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk12", + "diskSizeGB": "machineSettings", + "lun": 11, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk13", + "diskSizeGB": "machineSettings", + "lun": 12, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk14", + "diskSizeGB": "machineSettings", + "lun": 13, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk15", + "diskSizeGB": "machineSettings", + "lun": 14, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk16", + "diskSizeGB": "machineSettings", + "lun": 15, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT271 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT271 new file mode 100644 index 0000000..9973f4c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT271 @@ -0,0 +1,409 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D14.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891682, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D14.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT271", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT271", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk9", + "diskSizeGB": "machineSettings", + "lun": 8, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk10", + "diskSizeGB": "machineSettings", + "lun": 9, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk11", + "diskSizeGB": "machineSettings", + "lun": 10, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk12", + "diskSizeGB": "machineSettings", + "lun": 11, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk13", + "diskSizeGB": "machineSettings", + "lun": 12, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk14", + "diskSizeGB": "machineSettings", + "lun": 13, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk15", + "diskSizeGB": "machineSettings", + "lun": 14, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk16", + "diskSizeGB": "machineSettings", + "lun": 15, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk17", + "diskSizeGB": "machineSettings", + "lun": 16, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk18", + "diskSizeGB": "machineSettings", + "lun": 17, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk19", + "diskSizeGB": "machineSettings", + "lun": 18, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk20", + "diskSizeGB": "machineSettings", + "lun": 19, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk21", + "diskSizeGB": "machineSettings", + "lun": 20, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk22", + "diskSizeGB": "machineSettings", + "lun": 21, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk23", + "diskSizeGB": "machineSettings", + "lun": 22, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk24", + "diskSizeGB": "machineSettings", + "lun": 23, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk25", + "diskSizeGB": "machineSettings", + "lun": 24, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk26", + "diskSizeGB": "machineSettings", + "lun": 25, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk27", + "diskSizeGB": "machineSettings", + "lun": 26, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk28", + "diskSizeGB": "machineSettings", + "lun": 27, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk29", + "diskSizeGB": "machineSettings", + "lun": 28, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk30", + "diskSizeGB": "machineSettings", + "lun": 29, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk31", + "diskSizeGB": "machineSettings", + "lun": 30, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk32", + "diskSizeGB": "machineSettings", + "lun": 31, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT272 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT272 new file mode 100644 index 0000000..098c98f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT272 @@ -0,0 +1,213 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D2.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891692, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D2.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT272", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT272", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT273 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT273 new file mode 100644 index 0000000..bb70477 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT273 @@ -0,0 +1,241 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D3.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891699, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D3.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT273", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT273", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT274 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT274 new file mode 100644 index 0000000..b05e83f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT274 @@ -0,0 +1,297 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D4.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891714, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/member-resources-D4.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT274", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT274", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "machineSettings" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "vmMembermachineSettings_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk76", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk9", + "diskSizeGB": "machineSettings", + "lun": 8, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk10", + "diskSizeGB": "machineSettings", + "lun": 9, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk11", + "diskSizeGB": "machineSettings", + "lun": 10, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk12", + "diskSizeGB": "machineSettings", + "lun": 11, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk13", + "diskSizeGB": "machineSettings", + "lun": 12, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk14", + "diskSizeGB": "machineSettings", + "lun": 13, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk15", + "diskSizeGB": "machineSettings", + "lun": 14, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "vmMembermachineSettings_DataDisk16", + "diskSizeGB": "machineSettings", + "lun": 15, + "caching": "ReadWrite", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installmongodb", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings" + }, + "protectedSettings": { + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT275 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT275 new file mode 100644 index 0000000..1f3f18f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT275 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/shared-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962891723, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-nodejs-high-availability/shared-resources.json", + "/application-workloads/mongo/mongodb-nodejs-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT275", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT275", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "mongodbVnet" + }, + "subnetName": { + "value": "mongodbSubnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "dnsNameForPublicIP": { + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "value": "14.04.5-LTS" + }, + "jumpbox": { + "value": "Disabled" + }, + "tshirtSize": { + "value": "XSmall" + }, + "replicaSetName": { + "value": "rs0" + }, + "replicaSetKey": { + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "commonSettings", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT276 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT276 new file mode 100644 index 0000000..ddaca84 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT276 @@ -0,0 +1,303 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-on-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962891731, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-on-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT276", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT276", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique FQDN for the VM" + }, + "value": "GEN-UNIQUE-13" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Desired admin username to log on to the VM" + }, + "value": "GEN-UNIQUE" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "OpenLogic", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "CentOS", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "7.7", + "metadata": { + "description": "Image SKU" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Desired VM size" + }, + "value": "Standard_A1_v2" + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name of the public IP address" + }, + "value": "myPublicIP" + }, + "vmName": { + "type": "string", + "defaultValue": "myLinuxVM", + "metadata": { + "description": "Name of the VM" + }, + "value": "myVM" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "description": "Name of the virtual network" + }, + "value": "GEN-VNET-NAME" + }, + "nicName": { + "type": "string", + "defaultValue": "myNIC", + "metadata": { + "description": "Name of the virtual network adapter" + }, + "value": "myNic" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/mongo/mongodb-on-centos/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + } + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet2Name": "Subnet-2", + "subnet1Prefix": "10.0.0.0/24", + "subnet2Prefix": "10.0.1.0/24", + "publicIPAddressType": "Dynamic", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/Subnet-1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "Subnet-2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//GEN-VNET-NAME" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "myVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "name": "myVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myVM/installmongo", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//myVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('mongo-install-centos.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh mongo-install-centos.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT277 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT277 new file mode 100644 index 0000000..927c722 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT277 @@ -0,0 +1,321 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-on-ubuntu/azuredeploy.json", + "/application-workloads/mongo/mongodb-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962891740, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-on-ubuntu/azuredeploy.json", + "/application-workloads/mongo/mongodb-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT277", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT277", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "DNS Name for Public IP" + }, + "value": "GEN-UNIQUE-9" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin Username" + }, + "value": "GEN-UNIQUE-8" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Image SKU" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "VM Size" + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Public IP Address Name" + } + }, + "vmName": { + "type": "string", + "defaultValue": "myLinuxVM", + "metadata": { + "description": "Vm Name" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "description": "Virtual Network Name" + } + }, + "nicName": { + "type": "string", + "defaultValue": "myNIC", + "metadata": { + "description": "NIC Name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + } + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-9" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//myVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myLinuxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "myLinuxVM", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "myLinuxVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myLinuxVM/installmongo", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//myLinuxVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('mongo-install-ubuntu.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh mongo-install-ubuntu.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT278 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT278 new file mode 100644 index 0000000..89e8597 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT278 @@ -0,0 +1,301 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/nested/primary-resources.json" + ], + "timestamp": 1642962891772, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/nested/primary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT278", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT278", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mongoAdminUsername": { + "type": "string" + }, + "mongoAdminPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "secondaryNodeCount": { + "type": "int" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "MongoDB", + "properties": { + "description": "Allows MongoDB traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "27017", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsname" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//namespacevmbasenamePublicIp" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "dnsname-vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "dataDisks": [ + { + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 0, + "name": "namespacevmbasenamevm_DataDisk1", + "createOption": "Empty", + "caching": "ReadWrite" + }, + { + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 1, + "name": "namespacevmbasenamevm_DataDisk2", + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 2, + "name": "namespacevmbasenamevm_DataDisk3", + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 3, + "name": "namespacevmbasenamevm_DataDisk4", + "caching": "ReadWrite", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/primaryInstall", + "apiVersion": "2020-06-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash primary.sh dnsname secondaryNodeCount mongoAdminUsername mongoAdminPassword staticIp zabbixServerIPAddress" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT279 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT279 new file mode 100644 index 0000000..6e9a79b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT279 @@ -0,0 +1,302 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/nested/secondary-resources.json" + ], + "timestamp": 1642962891783, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/nested/secondary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT279", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT279", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "vmSize": { + "type": "string" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), parameters('vmbasename'))]", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "MongoDB", + "properties": { + "description": "Allows MongoDB traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "27017", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsnamevmbasename" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//namespacevmbasenamePublicIp" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(parameters('namespace'), parameters('vmbasename'), 'nic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "dnsname-vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "dataDisks": [ + { + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 0, + "name": "namespacevmbasenamevm_DataDisk1", + "createOption": "Empty", + "caching": "ReadWrite" + }, + { + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 1, + "name": "namespacevmbasenamevm_DataDisk2", + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 2, + "name": "namespacevmbasenamevm_DataDisk3", + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 3, + "name": "namespacevmbasenamevm_DataDisk4", + "caching": "ReadWrite", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/secondaryInstall", + "apiVersion": "2020-06-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash secondary.sh dnsname zabbixServerIPAddress" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT28 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT28 new file mode 100644 index 0000000..12a274e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT28 @@ -0,0 +1,323 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/apache/apache2-on-ubuntu-vm/azuredeploy.json", + "/application-workloads/apache/apache2-on-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962883545, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/apache/apache2-on-ubuntu-vm/azuredeploy.json", + "/application-workloads/apache/apache2-on-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT28", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT28", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS", + "16.04.0-LTS", + "14.04.5-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 18.04-LTS, 16.04.0-LTS, 14.04.5-LTS." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the virtual machine" + }, + "defaultValue": "Standard_B1s" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyUbuntuVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-8", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-80", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyUbuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-8", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1s" + }, + "osProfile": { + "computerName": "MyUbuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyUbuntuVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyUbuntuVM/newuserscript", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyUbuntuVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_apache.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install_apache.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT280 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT280 new file mode 100644 index 0000000..66d61a7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT280 @@ -0,0 +1,402 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-replica-set-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962891793, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-replica-set-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-replica-set-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT280", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT280", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "mongoAdminUsername": { + "type": "string", + "metadata": { + "description": "MongoDB Administrator user name used when provisioning MongoDB replica set" + }, + "value": "GEN-UNIQUE" + }, + "mongoAdminPassword": { + "type": "securestring", + "metadata": { + "description": "MongoDB Administrator password used when provisioning MongoDB replica set" + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "DNS Name for the publicly accessible primary node. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "sizeOfDataDiskInGB": { + "type": "int", + "minValue": 1, + "maxValue": 1023, + "defaultValue": 20, + "metadata": { + "description": "The size of each data disk, the value is between 1 and 1023. We use 4 data disks on each VM for raid0 to improve performance." + }, + "value": 20 + }, + "centOsVersion": { + "type": "string", + "defaultValue": "7.7", + "allowedValues": [ + "6.5", + "6.6", + "6.7", + "7.0", + "7.1", + "7.2", + "7.3", + "7.4", + "7.5", + "7.6", + "7.7" + ], + "metadata": { + "description": "The CentOS version for the VM. This will pick a fully patched image of this given CentOS version." + }, + "value": "7.7" + }, + "secondaryNodeCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of MongoDB secondary node (2 is the default), the value should be even numbers, like 2, 4, or 6. And 6 is the maximum number of secondary nodes." + }, + "value": 2 + }, + "primaryNodeVmSize": { + "type": "string", + "defaultValue": "Standard_A4_v2", + "metadata": { + "description": "The size of the virtual machines used when provisioning the primary node" + }, + "value": "Standard_A4_v2" + }, + "secondaryNodeVmSize": { + "type": "string", + "defaultValue": "Standard_A4_v2", + "metadata": { + "description": "The size of the virtual machines used when provisioning secondary node(s)" + }, + "value": "Standard_A4_v2" + }, + "zabbixServerIPAddress": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The zabbix server IP which will monitor the mongodb nodes' mongodb status. Null means no zabbix server." + }, + "value": "Null" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "primaryNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/primary.sh', parameters('_artifactsLocationSasToken')))]", + "secondaryNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/secondary.sh', parameters('_artifactsLocationSasToken')))]", + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "primaryTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/primary-resources.json', parameters('_artifactsLocationSasToken')))]", + "secondaryTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/secondary-resources.json', parameters('_artifactsLocationSasToken')))]", + "namespace": "mongodb-", + "virtualNetworkName": "myVNET1", + "networkSettings": { + "virtualNetworkName": "myVNET1", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.1.0/24", + "vnet": "myVNET1" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.1.", + "start": 5 + }, + "primaryIp": "10.0.1.240" + } + }, + "primaryOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/primary.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "secondaryOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/secondary.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "myVNET1", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.1.0/24", + "vnet": "myVNET1" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.1.", + "start": 5 + }, + "primaryIp": "10.0.1.240" + } + } + }, + "namespace": { + "value": "mongodb-" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "secondaryNodecopyindex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "copy": { + "name": "vmLoop", + "count": 2 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/secondary-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "secondarycopyindex()" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "sizeOfDataDiskInGB": { + "value": 20 + }, + "dnsname": { + "value": "GEN-UNIQUE" + }, + "vmSize": { + "value": "Standard_A4_v2" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/secondary.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "primaryNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "vmLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/primary-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mongoAdminUsername": { + "value": "GEN-UNIQUE" + }, + "mongoAdminPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "primary" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "dnsname": { + "value": "GEN-UNIQUE" + }, + "staticIp": { + "value": "(networkSettings).statics.primaryIp" + }, + "secondaryNodeCount": { + "value": 2 + }, + "sizeOfDataDiskInGB": { + "value": 20 + }, + "vmSize": { + "value": "Standard_A4_v2" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/primary.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT281 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT281 new file mode 100644 index 0000000..2cdbb49 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT281 @@ -0,0 +1,174 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/config-primary-resources.json" + ], + "timestamp": 1642962891801, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/config-primary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT281", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT281", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mongoAdminUsername": { + "type": "string" + }, + "mongoAdminPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/configPrimaryInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash config_primary.sh mongoAdminUsername mongoAdminPassword zabbixServerIPAddress" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT282 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT282 new file mode 100644 index 0000000..8244326 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT282 @@ -0,0 +1,170 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/config-secondary-resources.json" + ], + "timestamp": 1642962891808, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/config-secondary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT282", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT282", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/configSecondaryInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash config_secondary.sh zabbixServerIPAddress" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT283 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT283 new file mode 100644 index 0000000..11246d8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT283 @@ -0,0 +1,769 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/disksSelector.json" + ], + "timestamp": 1642962891839, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/disksSelector.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT283", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT283", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "numDataDisks": { + "type": "string", + "allowedValues": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "32", + "64" + ], + "metadata": { + "description": "This parameter allows the user to select the number of disks they want" + } + }, + "diskCaching": { + "type": "string", + "allowedValues": [ + "None", + "ReadOnly", + "ReadWrite" + ], + "metadata": { + "description": "Caching type for the data disks" + } + }, + "diskSizeGB": { + "type": "int", + "minValue": 1, + "maxValue": 1023, + "metadata": { + "description": "Size of the data disks" + } + }, + "DataDiskPrefix": { + "type": "string", + "metadata": { + "description": "Data disk prefix" + } + } + }, + "variables": { + "disksArray": { + "1": "(dataDisks)[1]", + "2": "[concat(variables('dataDisks')['1'], variables('dataDisks')['2'])]", + "3": "[concat(variables('dataDisks')['1'], variables('dataDisks')['2'], variables('dataDisks')['3'])]", + "4": "(diskDeltas)[4delta]", + "5": "[concat(variables('diskDeltas')['4delta'], variables('dataDisks')['5'])]", + "6": "[concat(variables('diskDeltas')['4delta'], variables('dataDisks')['5'], variables('dataDisks')['6'])]", + "7": "[concat(variables('diskDeltas')['4delta'], variables('dataDisks')['5'], variables('dataDisks')['6'], variables('dataDisks')['7'])]", + "8": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'])]", + "9": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('dataDisks')['9'])]", + "10": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('dataDisks')['9'], variables('dataDisks')['10'])]", + "11": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('dataDisks')['9'], variables('dataDisks')['10'], variables('dataDisks')['11'])]", + "12": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'])]", + "13": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('dataDisks')['13'])]", + "14": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('dataDisks')['13'], variables('dataDisks')['14'])]", + "15": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('dataDisks')['13'], variables('dataDisks')['14'], variables('dataDisks')['15'])]", + "16": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('diskDeltas')['16delta'])]", + "32": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('diskDeltas')['16delta'], variables('diskDeltas')['32delta'])]", + "64": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('diskDeltas')['16delta'], variables('diskDeltas')['32delta'], variables('diskDeltas')['64delta'])]" + }, + "dataDisks": { + "1": [ + { + "name": "DataDiskPrefix_datadisk1", + "lun": 0, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "2": [ + { + "name": "DataDiskPrefix_datadisk2", + "lun": 1, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "3": [ + { + "name": "DataDiskPrefix_datadisk3", + "lun": 2, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "4": [ + { + "name": "DataDiskPrefix_datadisk4", + "lun": 3, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "5": [ + { + "name": "DataDiskPrefix_datadisk5", + "lun": 4, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "6": [ + { + "name": "DataDiskPrefix_datadisk6", + "lun": 5, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "7": [ + { + "name": "DataDiskPrefix_datadisk7", + "lun": 6, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "8": [ + { + "name": "DataDiskPrefix_datadisk8", + "lun": 7, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "9": [ + { + "name": "DataDiskPrefix_datadisk9", + "lun": 8, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "10": [ + { + "name": "DataDiskPrefix_datadisk10", + "lun": 9, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "11": [ + { + "name": "DataDiskPrefix_datadisk11", + "lun": 10, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "12": [ + { + "name": "DataDiskPrefix_datadisk12", + "lun": 11, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "13": [ + { + "name": "DataDiskPrefix_datadisk13", + "lun": 12, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "14": [ + { + "name": "DataDiskPrefix_datadisk14", + "lun": 13, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "15": [ + { + "name": "DataDiskPrefix_datadisk15", + "lun": 14, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "16": [ + { + "name": "DataDiskPrefix_datadisk16", + "lun": 15, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "17": [ + { + "name": "DataDiskPrefix_datadisk17", + "lun": 16, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "18": [ + { + "name": "DataDiskPrefix_datadisk18", + "lun": 17, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "19": [ + { + "name": "DataDiskPrefix_datadisk19", + "lun": 18, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "20": [ + { + "name": "DataDiskPrefix_datadisk20", + "lun": 19, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "21": [ + { + "name": "DataDiskPrefix_datadisk21", + "lun": 20, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "22": [ + { + "name": "DataDiskPrefix_datadisk22", + "lun": 21, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "23": [ + { + "name": "DataDiskPrefix_datadisk23", + "lun": 22, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "24": [ + { + "name": "DataDiskPrefix_datadisk24", + "lun": 23, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "25": [ + { + "name": "DataDiskPrefix_datadisk25", + "lun": 24, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "26": [ + { + "name": "DataDiskPrefix_datadisk26", + "lun": 25, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "27": [ + { + "name": "DataDiskPrefix_datadisk27", + "lun": 26, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "28": [ + { + "name": "DataDiskPrefix_datadisk28", + "lun": 27, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "29": [ + { + "name": "DataDiskPrefix_datadisk29", + "lun": 28, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "30": [ + { + "name": "DataDiskPrefix_datadisk30", + "lun": 29, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "31": [ + { + "name": "DataDiskPrefix_datadisk31", + "lun": 30, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "32": [ + { + "name": "DataDiskPrefix_datadisk32", + "lun": 31, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "33": [ + { + "name": "DataDiskPrefix_datadisk33", + "lun": 32, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "34": [ + { + "name": "DataDiskPrefix_datadisk34", + "lun": 33, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "35": [ + { + "name": "DataDiskPrefix_datadisk35", + "lun": 34, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "36": [ + { + "name": "DataDiskPrefix_datadisk36", + "lun": 35, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "37": [ + { + "name": "DataDiskPrefix_datadisk37", + "lun": 36, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "38": [ + { + "name": "DataDiskPrefix_datadisk38", + "lun": 37, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "39": [ + { + "name": "DataDiskPrefix_datadisk39", + "lun": 38, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "40": [ + { + "name": "DataDiskPrefix_datadisk40", + "lun": 39, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "41": [ + { + "name": "DataDiskPrefix_datadisk41", + "lun": 40, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "42": [ + { + "name": "DataDiskPrefix_datadisk42", + "lun": 41, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "43": [ + { + "name": "DataDiskPrefix_datadisk43", + "lun": 42, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "44": [ + { + "name": "DataDiskPrefix_datadisk44", + "lun": 43, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "45": [ + { + "name": "DataDiskPrefix_datadisk45", + "lun": 44, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "46": [ + { + "name": "DataDiskPrefix_datadisk46", + "lun": 45, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "47": [ + { + "name": "DataDiskPrefix_datadisk47", + "lun": 46, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "48": [ + { + "name": "DataDiskPrefix_datadisk48", + "lun": 47, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "49": [ + { + "name": "DataDiskPrefix_datadisk49", + "lun": 48, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "50": [ + { + "name": "DataDiskPrefix_datadisk50", + "lun": 49, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "51": [ + { + "name": "DataDiskPrefix_datadisk51", + "lun": 50, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "52": [ + { + "name": "DataDiskPrefix_datadisk52", + "lun": 51, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "53": [ + { + "name": "DataDiskPrefix_datadisk53", + "lun": 52, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "54": [ + { + "name": "DataDiskPrefix_datadisk54", + "lun": 53, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "55": [ + { + "name": "DataDiskPrefix_datadisk55", + "lun": 54, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "56": [ + { + "name": "DataDiskPrefix_datadisk56", + "lun": 55, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "57": [ + { + "name": "DataDiskPrefix_datadisk57", + "lun": 56, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "58": [ + { + "name": "DataDiskPrefix_datadisk58", + "lun": 57, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "59": [ + { + "name": "DataDiskPrefix_datadisk59", + "lun": 58, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "60": [ + { + "name": "DataDiskPrefix_datadisk60", + "lun": 59, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "61": [ + { + "name": "DataDiskPrefix_datadisk61", + "lun": 60, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "62": [ + { + "name": "DataDiskPrefix_datadisk62", + "lun": 61, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "63": [ + { + "name": "DataDiskPrefix_datadisk63", + "lun": 62, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "64": [ + { + "name": "DataDiskPrefix_datadisk64", + "lun": 63, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ] + }, + "diskDeltas": { + "4delta": [ + "(dataDisks)[1][0]", + "(dataDisks)[2][0]", + "(dataDisks)[3][0]", + "(dataDisks)[4][0]" + ], + "8delta": [ + "(dataDisks)[5][0]", + "(dataDisks)[6][0]", + "(dataDisks)[7][0]", + "(dataDisks)[8][0]" + ], + "12delta": [ + "(dataDisks)[9][0]", + "(dataDisks)[10][0]", + "(dataDisks)[11][0]", + "(dataDisks)[12][0]" + ], + "16delta": [ + "(dataDisks)[13][0]", + "(dataDisks)[14][0]", + "(dataDisks)[15][0]", + "(dataDisks)[16][0]" + ], + "32delta": [ + "(dataDisks)[17][0]", + "(dataDisks)[18][0]", + "(dataDisks)[19][0]", + "(dataDisks)[20][0]", + "(dataDisks)[21][0]", + "(dataDisks)[22][0]", + "(dataDisks)[23][0]", + "(dataDisks)[24][0]", + "(dataDisks)[25][0]", + "(dataDisks)[26][0]", + "(dataDisks)[27][0]", + "(dataDisks)[28][0]", + "(dataDisks)[29][0]", + "(dataDisks)[30][0]", + "(dataDisks)[31][0]", + "(dataDisks)[32][0]" + ], + "64delta": [ + "(dataDisks)[33][0]", + "(dataDisks)[34][0]", + "(dataDisks)[35][0]", + "(dataDisks)[36][0]", + "(dataDisks)[37][0]", + "(dataDisks)[38][0]", + "(dataDisks)[39][0]", + "(dataDisks)[40][0]", + "(dataDisks)[41][0]", + "(dataDisks)[42][0]", + "(dataDisks)[43][0]", + "(dataDisks)[44][0]", + "(dataDisks)[45][0]", + "(dataDisks)[46][0]", + "(dataDisks)[47][0]", + "(dataDisks)[48][0]", + "(dataDisks)[49][0]", + "(dataDisks)[50][0]", + "(dataDisks)[51][0]", + "(dataDisks)[52][0]", + "(dataDisks)[53][0]", + "(dataDisks)[54][0]", + "(dataDisks)[55][0]", + "(dataDisks)[56][0]", + "(dataDisks)[57][0]", + "(dataDisks)[58][0]", + "(dataDisks)[59][0]", + "(dataDisks)[60][0]", + "(dataDisks)[61][0]", + "(dataDisks)[62][0]", + "(dataDisks)[63][0]", + "(dataDisks)[64][0]" + ] + } + }, + "resources": [], + "outputs": { + "dataDiskArray": { + "type": "array", + "value": "[variables('disksArray')[parameters('numDataDisks')]]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT284 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT284 new file mode 100644 index 0000000..f0987ac --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT284 @@ -0,0 +1,219 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/replica-primary-resources.json" + ], + "timestamp": 1642962891872, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/replica-primary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT284", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT284", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "replSetName": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "mongoAdminUsername": { + "type": "string" + }, + "mongoAdminPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "numDataDisks": { + "type": "string" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "templateBaseUrl": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "name": "diskSelection", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('templateBaseUrl'), concat('nested/disksSelector', '.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "numDataDisks": { + "value": "numDataDisks" + }, + "diskCaching": { + "value": "ReadWrite" + }, + "diskSizeGB": { + "value": "sizeOfDataDiskInGB" + }, + "DataDiskPrefix": { + "value": "namespacevmbasenamevm" + } + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic", + "Microsoft.Resources/deployments//diskSelection" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": "[reference('diskSelection').outputs.dataDiskArray.value]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/replicaPrimaryInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash replica_primary.sh replSetName staticIp mongoAdminUsername mongoAdminPassword zabbixServerIPAddress" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT285 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT285 new file mode 100644 index 0000000..22eedd6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT285 @@ -0,0 +1,210 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/replica-secondary-resources.json" + ], + "timestamp": 1642962891879, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/replica-secondary-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT285", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT285", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "replSetName": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "numDataDisks": { + "type": "string" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "templateBaseUrl": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "name": "diskSelection", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('templateBaseUrl'), concat('nested/disksSelector', '.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "numDataDisks": { + "value": "numDataDisks" + }, + "diskCaching": { + "value": "ReadWrite" + }, + "diskSizeGB": { + "value": "sizeOfDataDiskInGB" + }, + "DataDiskPrefix": { + "value": "namespacevmbasenamevm" + } + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic", + "Microsoft.Resources/deployments//diskSelection" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": "[reference('diskSelection').outputs.dataDiskArray.value]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/replicaSecondaryInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash replica_secondary.sh replSetName zabbixServerIPAddress" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT286 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT286 new file mode 100644 index 0000000..31912d6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT286 @@ -0,0 +1,197 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/router1-resources.json" + ], + "timestamp": 1642962891889, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/router1-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT286", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT286", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mongoAdminUsername": { + "type": "string" + }, + "mongoAdminPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsnamea" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//namespacevmbasenamePublicIp" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "dnsnamea-vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/router1Install", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash router1.sh mongoAdminUsername mongoAdminPassword zabbixServerIPAddress" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT287 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT287 new file mode 100644 index 0000000..4e75d27 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT287 @@ -0,0 +1,191 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/router2-resources.json" + ], + "timestamp": 1642962891897, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/router2-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT287", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT287", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsnameb" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//namespacevmbasenamePublicIp" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "dnsnameb-vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/namespaceset" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/router2Install", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash router2.sh zabbixServerIPAddress" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT288 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT288 new file mode 100644 index 0000000..a2d1bc8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT288 @@ -0,0 +1,210 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/shared-resources.json" + ], + "timestamp": 1642962891904, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT288", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT288", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "namespace": { + "type": "string", + "metadata": { + "Description": "namespace" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "zabbixServerIPAddress": { + "type": "string" + } + }, + "variables": { + "securityGroupName": "namespacensg", + "nsgName": "[if(equals(parameters('zabbixServerIPAddress'),'Null'),concat(variables('securityGroupName'),'withoutZabbix'),concat(variables('securityGroupName'),'withZabbix'))]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "condition": "[not(equals(parameters('zabbixServerIPAddress'),'Null'))]", + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacensgwithZabbix", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "MongoDB", + "properties": { + "description": "Allows MongoDB traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "27017", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "condition": false, + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacensgwithoutZabbix", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "MongoDB", + "properties": { + "description": "Allows MongoDB traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "27017", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[if(equals(parameters('zabbixServerIPAddress'),'Null'),concat(variables('securityGroupName'),'withoutZabbix'),concat(variables('securityGroupName'),'withZabbix'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[if(equals(parameters('zabbixServerIPAddress'),'Null'),concat(variables('securityGroupName'),'withoutZabbix'),concat(variables('securityGroupName'),'withZabbix'))]" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT289 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT289 new file mode 100644 index 0000000..a9a2e01 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT289 @@ -0,0 +1,1178 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-sharding-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962891913, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mongo/mongodb-sharding-centos/azuredeploy.json", + "/application-workloads/mongo/mongodb-sharding-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT289", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT289", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "mongoAdminUsername": { + "type": "string", + "metadata": { + "description": "MongoDB Administrator user name used when provisioning MongoDB sharding cluster" + }, + "value": "mongoadmin" + }, + "mongoAdminPassword": { + "type": "securestring", + "metadata": { + "description": "MongoDB Administrator password used when provisioning MongoDB sharding cluster" + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "DNS Name for the publicly accessible router nodes. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "centOsVersion": { + "type": "string", + "defaultValue": "7.7", + "allowedValues": [ + "6.5", + "6.6", + "6.7", + "6.8", + "6.9", + "6.10", + "7.0", + "7.1", + "7.2", + "7.3", + "7.4", + "7.5", + "7.6", + "7.7" + ], + "metadata": { + "description": "The CentOS version for the VM. This will pick a fully patched image of this given CentOS version." + }, + "value": "7.7" + }, + "environment": { + "type": "string", + "allowedValues": [ + "AzureCloud", + "AzureChinaCloud" + ], + "metadata": { + "description": "Different environments in Azure. Choose AzureCloud for Global Azure, and choose AzureChinaCloud for Mooncake (Azure China Cloud)." + }, + "value": "AzureCloud" + }, + "numDataDisks": { + "type": "string", + "defaultValue": "4", + "allowedValues": [ + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "32" + ], + "metadata": { + "description": "The number of data disks on each shard node. We will use Raid0 for the data disks to improve performance. On each shard." + }, + "value": "4" + }, + "sizeOfDataDiskInGB": { + "type": "int", + "minValue": 1, + "maxValue": 1023, + "defaultValue": 20, + "metadata": { + "description": "The size of each data disk, the value is between 1 and 1023." + }, + "value": 20 + }, + "routerNodeVmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning the router nodes" + }, + "value": "Standard_D4s_v3" + }, + "configNodeVmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning config nodes" + }, + "value": "Standard_D4s_v3" + }, + "replicaNodeVmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning replica set nodes" + }, + "value": "Standard_D4s_v3" + }, + "zabbixServerIPAddress": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The zabbix server IP which will monitor the mongodb nodes' mongodb status. Null means no zabbix server." + }, + "value": "Null" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "_artifactsChinaLocation": { + "type": "string", + "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." + }, + "defaultValue": "http://msmirrors.blob.core.chinacloudapi.cn/mongodb/mongodb-sharding-centos/" + }, + "_artifactsChinaLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "environmentType": { + "AzureCloud": { + "serviceEndPoint": "[environment().suffixes.storage]", + "artifactsLocation": "[deployment().properties.templateLink.uri]", + "artifactsLocationSasToken": "", + "configPrimaryNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/config_primary.sh', parameters('_artifactsLocationSasToken')))]", + "configSecondaryNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/config_secondary.sh', parameters('_artifactsLocationSasToken')))]", + "router1NodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/router1.sh', parameters('_artifactsLocationSasToken')))]", + "router2NodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/router2.sh', parameters('_artifactsLocationSasToken')))]", + "replicaPrimaryNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/replica_primary.sh', parameters('_artifactsLocationSasToken')))]", + "replicaSecondaryNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/replica_secondary.sh', parameters('_artifactsLocationSasToken')))]" + }, + "AzureChinaCloud": { + "serviceEndPoint": "core.chinacloudapi.cn", + "artifactsLocation": "http://msmirrors.blob.core.chinacloudapi.cn/mongodb/mongodb-sharding-centos/", + "artifactsLocationSasToken": "", + "configPrimaryNodeScript": "[uri(parameters('_artifactsChinaLocation'), concat('scripts/config_primary.sh', parameters('_artifactsChinaLocationSasToken')))]", + "configSecondaryNodeScript": "[uri(parameters('_artifactsChinaLocation'), concat('scripts/config_secondary.sh', parameters('_artifactsChinaLocationSasToken')))]", + "router1NodeScript": "[uri(parameters('_artifactsChinaLocation'), concat('scripts/router1.sh', parameters('_artifactsChinaLocationSasToken')))]", + "router2NodeScript": "[uri(parameters('_artifactsChinaLocation'), concat('scripts/router2.sh', parameters('_artifactsChinaLocationSasToken')))]", + "replicaPrimaryNodeScript": "[uri(parameters('_artifactsChinaLocation'), concat('scripts/replica_primary.sh', parameters('_artifactsChinaLocationSasToken')))]", + "replicaSecondaryNodeScript": "[uri(parameters('_artifactsChinaLocation'), concat('scripts/replica_secondary.sh', parameters('_artifactsChinaLocationSasToken')))]" + } + }, + "environment": "(environmentType)[parameters(environment)]", + "templateBaseUrl": "(environment).artifactsLocation", + "sharedTemplateUrl": "[uri(variables('templateBaseUrl'), concat('nested/shared-resources.json', variables('environment').artifactsLocationSasToken))]", + "configPrimaryTemplateUrl": "[uri(variables('templateBaseUrl'), concat('nested/config-primary-resources.json', variables('environment').artifactsLocationSasToken))]", + "configSecondaryTemplateUrl": "[uri(variables('templateBaseUrl'), concat('nested/config-secondary-resources.json', variables('environment').artifactsLocationSasToken))]", + "router1TemplateUrl": "[uri(variables('templateBaseUrl'), concat('nested/router1-resources.json', variables('environment').artifactsLocationSasToken))]", + "router2TemplateUrl": "[uri(variables('templateBaseUrl'), concat('nested/router2-resources.json', variables('environment').artifactsLocationSasToken))]", + "replicaPrimaryTemplateUrl": "[uri(variables('templateBaseUrl'), concat('nested/replica-primary-resources.json', variables('environment').artifactsLocationSasToken))]", + "replicaSecondaryTemplateUrl": "[uri(variables('templateBaseUrl'), concat('nested/replica-secondary-resources.json', variables('environment').artifactsLocationSasToken))]", + "namespace": "mongodb-", + "virtualNetworkName": "myVNET", + "networkSettings": { + "virtualNetworkName": "myVNET", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "myVNET" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "configPrimaryIp": "10.0.0.240", + "configSecondaryIp1": "10.0.0.241", + "configSecondaryIp2": "10.0.0.242", + "routerIp1": "10.0.0.230", + "routerIp2": "10.0.0.231", + "replicaPrimaryIp1": "10.0.0.100", + "replicaPrimaryIp2": "10.0.0.110" + } + }, + "configPrimaryOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).configPrimaryNodeScript" + ] + }, + "configSecondaryOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).configSecondaryNodeScript" + ] + }, + "router1OsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).router1NodeScript" + ] + }, + "router2OsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).router2NodeScript" + ] + }, + "replicaPrimaryOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).replicaPrimaryNodeScript" + ] + }, + "replicaSecondaryOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).replicaSecondaryNodeScript" + ] + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/shared-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "myVNET", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "myVNET" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "configPrimaryIp": "10.0.0.240", + "configSecondaryIp1": "10.0.0.241", + "configSecondaryIp2": "10.0.0.242", + "routerIp1": "10.0.0.230", + "routerIp2": "10.0.0.231", + "replicaPrimaryIp1": "10.0.0.100", + "replicaPrimaryIp2": "10.0.0.110" + } + } + }, + "namespace": { + "value": "mongodb-" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "configSecondaryNode1", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/config-secondary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "configSecondary1" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "staticIp": { + "value": "(networkSettings).statics.configSecondaryIp1" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).configSecondaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "configSecondaryNode2", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//configSecondaryNode1" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/config-secondary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "configSecondary2" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "staticIp": { + "value": "(networkSettings).statics.configSecondaryIp2" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).configSecondaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "configPrimaryNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//configSecondaryNode2" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/config-primary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mongoAdminUsername": { + "value": "mongoadmin" + }, + "mongoAdminPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "configPrimary" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "staticIp": { + "value": "(networkSettings).statics.configPrimaryIp" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).configPrimaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "aReplicaSecondaryNode0", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/replica-secondary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "replSetName": { + "value": "repset1" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "aReplicaSecondary0" + }, + "sizeOfDataDiskInGB": { + "value": 20 + }, + "numDataDisks": { + "value": "4" + }, + "templateBaseUrl": { + "value": "(environment).artifactsLocation" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).replicaSecondaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocationSasToken": { + "value": "(environment).artifactsLocationSasToken" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "aReplicaSecondaryNode1", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//aReplicaSecondaryNode0" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/replica-secondary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "replSetName": { + "value": "repset1" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "aReplicaSecondary1" + }, + "sizeOfDataDiskInGB": { + "value": 20 + }, + "numDataDisks": { + "value": "4" + }, + "templateBaseUrl": { + "value": "(environment).artifactsLocation" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).replicaSecondaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocationSasToken": { + "value": "(environment).artifactsLocationSasToken" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "aReplicaPrimaryNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//aReplicaSecondaryNode1" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/replica-primary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mongoAdminUsername": { + "value": "mongoadmin" + }, + "mongoAdminPassword": { + "value": "GEN-PASSWORD" + }, + "replSetName": { + "value": "repset1" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "aReplicaPrimary" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "sizeOfDataDiskInGB": { + "value": 20 + }, + "numDataDisks": { + "value": "4" + }, + "templateBaseUrl": { + "value": "(environment).artifactsLocation" + }, + "staticIp": { + "value": "(networkSettings).statics.replicaPrimaryIp1" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).replicaPrimaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocationSasToken": { + "value": "(environment).artifactsLocationSasToken" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "bReplicaSecondaryNode0", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//aReplicaPrimaryNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/replica-secondary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "replSetName": { + "value": "repset2" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "bReplicaSecondary0" + }, + "sizeOfDataDiskInGB": { + "value": 20 + }, + "numDataDisks": { + "value": "4" + }, + "templateBaseUrl": { + "value": "(environment).artifactsLocation" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).replicaSecondaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocationSasToken": { + "value": "(environment).artifactsLocationSasToken" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "bReplicaSecondaryNode1", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//bReplicaSecondaryNode0" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/replica-secondary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "replSetName": { + "value": "repset2" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "bReplicaSecondary1" + }, + "sizeOfDataDiskInGB": { + "value": 20 + }, + "numDataDisks": { + "value": "4" + }, + "templateBaseUrl": { + "value": "(environment).artifactsLocation" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).replicaSecondaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocationSasToken": { + "value": "(environment).artifactsLocationSasToken" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "bReplicaPrimaryNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//bReplicaSecondaryNode1" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/replica-primary-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mongoAdminUsername": { + "value": "mongoadmin" + }, + "mongoAdminPassword": { + "value": "GEN-PASSWORD" + }, + "replSetName": { + "value": "repset2" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "bReplicaPrimary" + }, + "sizeOfDataDiskInGB": { + "value": 20 + }, + "numDataDisks": { + "value": "4" + }, + "templateBaseUrl": { + "value": "(environment).artifactsLocation" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "staticIp": { + "value": "(networkSettings).statics.replicaPrimaryIp2" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).replicaPrimaryNodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocationSasToken": { + "value": "(environment).artifactsLocationSasToken" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "routerNode1", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//configPrimaryNode", + "Microsoft.Resources/deployments//bReplicaPrimaryNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/router1-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mongoAdminUsername": { + "value": "mongoadmin" + }, + "mongoAdminPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "router1" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "dnsname": { + "value": "GEN-UNIQUE" + }, + "staticIp": { + "value": "(networkSettings).statics.routerIp1" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).router1NodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "routerNode2", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//routerNode1" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('templateBaseUrl'), concat('nested/router2-resources.json', variables('environment').artifactsLocationSasToken))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "mongodb-" + }, + "vmbasename": { + "value": "router2" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "dnsname": { + "value": "GEN-UNIQUE" + }, + "staticIp": { + "value": "(networkSettings).statics.routerIp2" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.7", + "version": "latest" + }, + "scripts": [ + "(environment).router2NodeScript" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT29 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT29 new file mode 100644 index 0000000..0ec90b3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT29 @@ -0,0 +1,374 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.json", + "/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.parameters.json" + ], + "timestamp": 1642962883555, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.json", + "/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT29", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT29", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "User name for the Web Server VM." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Globally unique DNS Name for the Public IP used to access the Web Server VM." + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "The Ubuntu version for the Web Server VM. Allowed values: 14.04.5-LTS, 16.04.0-LTS" + }, + "value": "14.04.5-LTS" + }, + "testPage": { + "type": "string", + "defaultValue": "index.html", + "metadata": { + "description": "Test page you want to create on the Web Server." + }, + "value": "index.html" + }, + "testPageTitle": { + "type": "string", + "defaultValue": "Test Page", + "metadata": { + "description": "Test page title." + }, + "value": "TEST PAGE" + }, + "testPageBody": { + "type": "string", + "defaultValue": "

This is a test page.

", + "metadata": { + "description": "Test page content body markup." + }, + "value": "

Hello, this is a test page.

" + }, + "installPHP": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Set to True to install PHP." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM Size." + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "[concat('webtestnic-', parameters('dnsNameForPublicIP'), '-', uniqueString(resourceGroup().id))]", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "vhdStorageType": "Standard_LRS", + "publicIPAddressType": "Dynamic", + "vmName": "[concat('webtestvm-', parameters('dnsNameForPublicIP'), '-', uniqueString(resourceGroup().id))]", + "virtualNetworkName": "[concat('webtestvnet-', uniqueString(resourceGroup().id, parameters('dnsNameForPublicIP')))]", + "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]", + "vhdStorageName": "[concat('webtestvhd', uniqueString(resourceGroup().id, parameters('dnsNameForPublicIP')))]", + "singleQuote": "'", + "frontEndNSGName": "[concat('webtestnsg-', uniqueString(resourceGroup().id, parameters('dnsNameForPublicIP')))]", + "testPageMarkup": "TEST PAGE

Hello, this is a test page.

", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "outputs": { + "fqdn": { + "type": "string", + "value": "[reference(parameters('dnsNameForPublicIP')).dnsSettings.fqdn]" + }, + "pageContent": { + "type": "string", + "value": "[variables('testPageMarkup')]" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('vhdStorageName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "StorageAccount" + }, + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('frontEndNSGName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG - Web Server" + }, + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow Web", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NetworkInterface" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', parameters('dnsNameForPublicIP'))]", + "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "[variables('subnetRef')]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "[variables('vmName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('vhdStorageName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "[concat(variables('vmName'),'_OSDisk')]", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + } + ] + } + }, + "resources": [ + { + "name": "PrepareServer", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/prepwebserver.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('sh prepwebserver.sh', ' ', string(parameters('installPHP')), ' ', variables('singleQuote'), variables('testPageMarkup'), variables('singleQuote'), ' ', parameters('testPage'), ' ', variables('singleQuote'), parameters('ubuntuOSVersion'), variables('singleQuote'))]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT290 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT290 new file mode 100644 index 0000000..61ab219 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT290 @@ -0,0 +1,263 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/controller.json" + ], + "timestamp": 1642962891924, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/controller.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT290", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT290", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "dnsSettings": { + "domainNameLabel": "moodleCommon" + }, + "publicIPAllocationMethod": "Static" + }, + "tags": { + "displayName": "jboxpip" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "securityRules": [ + { + "name": "Allow_SSH", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "22", + "direction": "Inbound", + "priority": 1000, + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*" + } + }, + { + "name": "Allow_http", + "properties": { + "access": "Allow", + "destinationAddressPrefix": "*", + "destinationPortRange": "80", + "direction": "Inbound", + "priority": 1005, + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*" + } + } + ] + }, + "tags": { + "displayName": "JumpBox NSG" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/moodleCommon" + }, + "ipConfigurations": [ + { + "name": "ipcfgjbox", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/moodleCommon" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + } + } + } + ] + }, + "tags": { + "displayName": "jboxNic" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "hardwareProfile": { + "vmSize": "moodleCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/moodleCommon" + } + ] + }, + "osProfile": { + "adminUsername": "moodleCommon", + "computerName": "moodleCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/moodleCommon/.ssh/authorized_keys", + "keyData": "moodleCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "moodleCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "name": "moodleCommon" + }, + "dataDisks": "[take(variables('nfsDiskArray'),if(equals(parameters('moodleCommon').fileServerType,'nfs'), parameters('moodleCommon').fileServerDiskCount, 0))]" + } + }, + "tags": { + "displayName": "Jumpbox (controller) Virtual Machine" + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommon" + ], + "name": "moodleCommon-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommoncontrollerconfig.jsonmoodleCommon" + } + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommon" + ], + "name": "moodleCommon-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "vmName": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonrecoveryservicesEnlist.jsonmoodleCommon" + } + } + } + ], + "variables": { + "nicRef": "Microsoft.Network/networkInterfaces/moodleCommon", + "nsgRef": "Microsoft.Network/networkSecurityGroups/moodleCommon", + "pipRef": "Microsoft.Network/publicIPAddresses/moodleCommon", + "subnetWebRef": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon", + "copy": [ + { + "name": "nfsDiskArray", + "count": 8, + "input": { + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": "moodleCommon", + "lun": "[copyIndex('nfsDiskArray')]", + "createOption": "Empty" + } + } + ] + }, + "outputs": { + "controllerIP": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', parameters('moodleCommon').jboxPipName), '2020-11-01').ipAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT291 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT291 new file mode 100644 index 0000000..272307d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT291 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/controllerconfig.json" + ], + "timestamp": 1642962891931, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/controllerconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT291", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT291", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountId": "Microsoft.Storage/storageAccounts/moodleCommon", + "redisResourceId": "Microsoft.Cache/Redis/moodleCommon" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "name": "moodleCommon/install_moodle", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "moodleCommonmoodleCommonmoodleCommon", + "moodleCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', parameters('moodleCommon').moodleInstallScriptFilename, ' ', parameters('moodleCommon').moodleVersion, ' ', concat(parameters('moodleCommon').gfsNameRoot, '0'), ' ', 'data', ' ', parameters('moodleCommon').siteURL, ' ', concat(parameters('moodleCommon').dbServerType, '-', parameters('moodleCommon').resourcesPrefix, '.', parameters('moodleCommon').dbServerType, '.database.azure.com'), ' ', parameters('moodleCommon').moodleDbName, ' ', parameters('moodleCommon').moodleDbUser, ' ', parameters('moodleCommon').moodleDbPass, ' ', parameters('moodleCommon').moodleAdminPass, ' ', concat(parameters('moodleCommon').dbLogin, '@', parameters('moodleCommon').dbServerType, '-', parameters('moodleCommon').resourcesPrefix), ' ', parameters('moodleCommon').dbLoginPassword, ' ', parameters('moodleCommon').storageAccountName, ' ', listKeys(variables('storageAccountId'), '2021-01-01').keys[0].value, ' ', parameters('moodleCommon').moodleDbUserAzure, ' ', parameters('moodleCommon').redisDns, ' ', listKeys(variables('redisResourceId'), '2016-04-01').primaryKey, ' ', parameters('moodleCommon').elasticVm1IP, ' ', parameters('moodleCommon').installO365pluginsSwitch, ' ', parameters('moodleCommon').installElasticSearchSwitch, ' ', parameters('moodleCommon').dbServerType, ' ', parameters('moodleCommon').fileServerType)]" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "install_moodle" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT292 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT292 new file mode 100644 index 0000000..6602d7d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT292 @@ -0,0 +1,420 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/elastic.json" + ], + "timestamp": 1642962891940, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/elastic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT292", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT292", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfg-elastic1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "moodleCommon", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + } + } + } + ] + }, + "tags": { + "displayName": "Elastic NIC 1" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "hardwareProfile": { + "vmSize": "moodleCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/moodleCommon" + } + ] + }, + "osProfile": { + "adminUsername": "moodleCommon", + "computerName": "moodleCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/moodleCommon/.ssh/authorized_keys", + "keyData": "moodleCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "moodleCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "name": "moodleCommon" + } + } + }, + "tags": { + "displayName": "Elastic Search Virtual Machine" + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommon" + ], + "name": "moodleCommon-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonelasticconfig.jsonmoodleCommon" + } + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommon" + ], + "name": "moodleCommon-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "vmName": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonrecoveryservicesEnlist.jsonmoodleCommon" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfg-elastic2", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "moodleCommon", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + } + } + } + ] + }, + "tags": { + "displayName": "Elastic NIC 2" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "hardwareProfile": { + "vmSize": "moodleCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/moodleCommon" + } + ] + }, + "osProfile": { + "adminUsername": "moodleCommon", + "computerName": "moodleCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/moodleCommon/.ssh/authorized_keys", + "keyData": "moodleCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "moodleCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "name": "moodleCommon" + } + } + }, + "tags": { + "displayName": "Elastic Search Virtual Machine" + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommon" + ], + "name": "moodleCommon-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonelasticconfig.jsonmoodleCommon" + } + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommon" + ], + "name": "moodleCommon-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "vmName": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonrecoveryservicesEnlist.jsonmoodleCommon" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfg-elastic3", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "moodleCommon", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + } + } + } + ] + }, + "tags": { + "displayName": "Elastic NIC 2" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "hardwareProfile": { + "vmSize": "moodleCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/moodleCommon" + } + ] + }, + "osProfile": { + "adminUsername": "moodleCommon", + "computerName": "moodleCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/moodleCommon/.ssh/authorized_keys", + "keyData": "moodleCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "moodleCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "name": "moodleCommon" + } + } + }, + "tags": { + "displayName": "Elastic Search Virtual Machine" + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommon" + ], + "name": "moodleCommon-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonelasticconfig.jsonmoodleCommon" + } + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommon" + ], + "name": "moodleCommon-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "vmName": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonrecoveryservicesEnlist.jsonmoodleCommon" + } + } + } + ], + "variables": { + "nicRef1": "Microsoft.Network/networkInterfaces/moodleCommon", + "nicRef2": "Microsoft.Network/networkInterfaces/moodleCommon", + "nicRef3": "Microsoft.Network/networkInterfaces/moodleCommon", + "subnetElasticRef": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT293 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT293 new file mode 100644 index 0000000..380bf54 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT293 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/elasticconfig.json" + ], + "timestamp": 1642962891982, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/elasticconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT293", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT293", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "name": "moodleCommon/install_elastic", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "moodleCommonmoodleCommonmoodleCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "bash moodleCommon moodleCommon moodleCommon moodleCommon moodleCommon" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "install_elastic" + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "name": "moodleCommon/install_elastic", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "moodleCommonmoodleCommonmoodleCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "bash moodleCommon moodleCommon moodleCommon moodleCommon moodleCommon" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "install_elastic" + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "name": "moodleCommon/install_elastic", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "moodleCommonmoodleCommonmoodleCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "bash moodleCommon moodleCommon moodleCommon moodleCommon moodleCommon" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "install_elastic" + } + } + ], + "variables": { + "cmdExec": "bash moodleCommon moodleCommon moodleCommon moodleCommon moodleCommon", + "scriptUri": "moodleCommonmoodleCommonmoodleCommon" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT294 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT294 new file mode 100644 index 0000000..ecf6c25 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT294 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/gluster.json" + ], + "timestamp": 1642962891989, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/gluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT294", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT294", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2020-12-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + }, + "sku": { + "name": "Aligned" + }, + "tags": { + "displayName": "Gluster Availability Set" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "copy": { + "count": "moodleCommon", + "name": "vmloop" + }, + "dependsOn": [ + "Microsoft.Compute/availabilitySets//moodleCommon" + ], + "name": "glustervmcopyindex()", + "properties": { + "mode": "Incremental", + "parameters": { + "counter": { + "value": "[copyindex()]" + }, + "moodleCommon": { + "value": "moodleCommon" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonglustervm.jsonmoodleCommon" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT295 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT295 new file mode 100644 index 0000000..61db9b1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT295 @@ -0,0 +1,207 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/glustervm.json" + ], + "timestamp": 1642962891996, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/glustervm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT295", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT295", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "counter": { + "metadata": { + "description": "from the copyindex function of calling template" + }, + "type": "int" + }, + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "location", + "name": "moodleCommoncounter-nic", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfggfs", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + } + } + } + ] + }, + "tags": { + "displayName": "Gluster VM NIC" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//moodleCommoncounter-nic" + ], + "location": "location", + "name": "moodleCommoncounter", + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/moodleCommon" + }, + "hardwareProfile": { + "vmSize": "moodleCommon" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/moodleCommoncounter-nic" + } + ] + }, + "osProfile": { + "adminUsername": "moodleCommon", + "computerName": "moodleCommoncounter", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/moodleCommon/.ssh/authorized_keys", + "keyData": "moodleCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "moodleCommon", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "name": "moodleCommoncounter" + }, + "copy": [ + { + "name": "dataDisks", + "count": "moodleCommon", + "input": { + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": "moodleCommon", + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty" + } + } + ] + } + }, + "tags": { + "displayName": "Gluster Virtual Machine" + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommoncounter" + ], + "name": "moodleCommoncounter-ScriptProcessor", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "vmName": { + "value": "[ variables('vmName')]" + }, + "vmNumber": { + "value": "counter" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonglustervmconfig.jsonmoodleCommon" + } + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//moodleCommoncounter" + ], + "name": "moodleCommoncounter-Backup", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": "moodleCommon" + }, + "vmName": { + "value": "moodleCommoncounter" + }, + "location": { + "value": "location" + } + }, + "templateLink": { + "uri": "moodleCommonrecoveryservicesEnlist.jsonmoodleCommon" + } + } + } + ], + "variables": { + "asRef": "Microsoft.Compute/availabilitySets/moodleCommon", + "nicName": "moodleCommoncounter-nic", + "nicRef": "Microsoft.Network/networkInterfaces/moodleCommoncounter-nic", + "subnetSanRef": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon", + "vmName": "moodleCommoncounter" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT296 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT296 new file mode 100644 index 0000000..56d1b73 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT296 @@ -0,0 +1,87 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/glustervmconfig.json" + ], + "timestamp": 1642962892004, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/glustervmconfig.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT296", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT296", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "vmName": { + "metadata": { + "description": "Name of VM to process script - not actually used" + }, + "type": "string" + }, + "vmNumber": { + "metadata": { + "description": "Number of the VM in the pool" + }, + "type": "int" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "name": "vmName/install_gluster", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "moodleCommonmoodleCommonmoodleCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "bash moodleCommon moodleCommon moodleCommon data vmNumber moodleCommon" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "GfsVmExtension" + } + } + ], + "variables": { + "cmdExec": "bash moodleCommon moodleCommon moodleCommon data vmNumber moodleCommon", + "scriptUri": "moodleCommonmoodleCommonmoodleCommon" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT297 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT297 new file mode 100644 index 0000000..fde1650 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT297 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/mysql.json" + ], + "timestamp": 1642962892011, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/mysql.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT297", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbformysql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT297", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.DBforMySQL/servers", + "apiVersion": "2017-12-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "administratorLogin": "moodleCommon", + "administratorLoginPassword": "moodleCommon", + "sslEnforcement": "moodleCommon", + "storageMB": "moodleCommon", + "version": "moodleCommon" + }, + "resources": [ + { + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforMySQL/servers//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + }, + "type": "firewallRules" + } + ], + "sku": { + "capacity": "moodleCommon", + "family": "moodleCommon", + "name": "moodleCommon", + "size": "moodleCommon", + "tier": "moodleCommon" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT298 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT298 new file mode 100644 index 0000000..9e79fe9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT298 @@ -0,0 +1,258 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/network.json" + ], + "timestamp": 1642962892020, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/network.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT298", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT298", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "moodleCommon/16" + ] + }, + "subnets": [ + { + "name": "moodleCommon", + "properties": { + "addressPrefix": "moodleCommon" + } + }, + { + "name": "moodleCommon", + "properties": { + "addressPrefix": "moodleCommon" + } + }, + { + "name": "moodleCommon", + "properties": { + "addressPrefix": "moodleCommon" + } + }, + { + "name": "moodleCommon", + "properties": { + "addressPrefix": "moodleCommon" + } + }, + { + "name": "moodleCommon", + "properties": { + "addressPrefix": "moodleCommon" + } + } + ] + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "displayName": "Virtual network gateway Public IP" + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/moodleCommon" + ], + "name": "moodleCommon/moodleCommon", + "properties": { + "addressPrefix": "moodleCommon" + } + }, + { + "condition": "moodleCommon", + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/moodleCommon", + "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "activeActive": false, + "enableBgp": false, + "gatewayType": "moodleCommon", + "ipConfigurations": [ + { + "name": "vnet-Gateway-Config", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/moodleCommon" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + } + } + } + ], + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1", + "capacity": 2 + }, + "vpnType": "moodleCommon" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "dnsSettings": { + "domainNameLabel": "moodleCommon" + }, + "publicIPAllocationMethod": "Static" + }, + "tags": { + "displayName": "Load Balancer Public IP" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "backendAddressPools": [ + { + "name": "moodleCommon" + } + ], + "frontendIPConfigurations": [ + { + "name": "moodleCommon", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/moodleCommon" + } + } + } + ], + "loadBalancingRules": [ + { + "name": "Http", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//moodleCommon/moodleCommon" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//moodleCommon/moodleCommon" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/moodleCommon/moodleCommon" + }, + "protocol": "Tcp" + } + }, + { + "name": "Https", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//moodleCommon/moodleCommon" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//moodleCommon/moodleCommon" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/moodleCommon/moodleCommon" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "moodleCommon", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 3, + "port": 80, + "protocol": "Tcp" + } + } + ] + } + } + ], + "variables": { + "extBeID": "Microsoft.Network/loadBalancers/backendAddressPools//moodleCommon/moodleCommon", + "extFeID": "Microsoft.Network/loadBalancers/frontendIPConfigurations//moodleCommon/moodleCommon", + "extProbeID": "Microsoft.Network/loadBalancers/probes/moodleCommon/moodleCommon", + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon", + "pipID": "Microsoft.Network/publicIPAddresses/moodleCommon" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT299 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT299 new file mode 100644 index 0000000..e176e75 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT299 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/postgres.json" + ], + "timestamp": 1642962892027, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/postgres.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT299", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT299", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.DBforPostgreSQL/servers", + "apiVersion": "2017-12-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "administratorLogin": "moodleCommon", + "administratorLoginPassword": "moodleCommon", + "sslEnforcement": "moodleCommon", + "storageMB": "moodleCommon", + "version": "moodleCommon" + }, + "resources": [ + { + "apiVersion": "2017-12-01", + "dependsOn": [ + "Microsoft.DBforPostgreSQL/servers//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + }, + "type": "firewallRules" + } + ], + "sku": { + "capacity": "moodleCommon", + "family": "moodleCommon", + "name": "moodleCommon", + "size": "moodleCommon", + "tier": "moodleCommon" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT3 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT3 new file mode 100644 index 0000000..5ae7f23 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT3 @@ -0,0 +1,88 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/nestedtemplates/vnet.json" + ], + "timestamp": 1642962883267, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT3", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT3", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new VNET in CIDR format" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "description": "The address range of the subnet created in the new VNET" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetworkName", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressRange" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetRange" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT30 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT30 new file mode 100644 index 0000000..01277d3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT30 @@ -0,0 +1,311 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/apache/vertx-openjdk-apache-mysql-on-ubuntu/azuredeploy.json", + "/application-workloads/apache/vertx-openjdk-apache-mysql-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962883566, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/apache/vertx-openjdk-apache-mysql-on-ubuntu/azuredeploy.json", + "/application-workloads/apache/vertx-openjdk-apache-mysql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT30", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT30", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE-10" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-11" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM" + }, + "value": "GEN-UNIQUE-8" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Default value is 14.04.5-LTS" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "Default VM size" + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "vertxNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "vertxSubnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "vertxPublicIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "vertxVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vertxVNET/vertxSubnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-10", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "vertxPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-11" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vertxVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "vertxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "vertxNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/vertxPublicIP", + "Microsoft.Network/virtualNetworks/vertxVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vertxPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vertxVNET/vertxSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE-10", + "Microsoft.Network/networkInterfaces/vertxNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vertxNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-8" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT300 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT300 new file mode 100644 index 0000000..3f4a5d8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT300 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/recoveryservices.json" + ], + "timestamp": 1642962892035, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/recoveryservices.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT300", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.recoveryservices/vaults/backuppolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT300", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2021-01-01", + "location": "location", + "name": "moodleCommon", + "properties": {}, + "sku": { + "name": "RS0", + "tier": "Standard" + } + }, + { + "type": "Microsoft.RecoveryServices/vaults/backupPolicies", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults//moodleCommon" + ], + "location": "location", + "name": "moodleCommon/moodleCommon", + "properties": { + "backupManagementType": "AzureIaasVM", + "retentionPolicy": { + "dailySchedule": { + "retentionDuration": { + "count": 7, + "durationType": "Days" + }, + "retentionTimes": [ + "2017-01-01T22:30:00Z" + ] + }, + "monthlySchedule": { + "retentionDuration": { + "count": 6, + "durationType": "Months" + }, + "retentionScheduleDaily": { + "daysOfTheMonth": [ + { + "date": 1, + "isLast": false + } + ] + }, + "retentionScheduleFormatType": "Daily", + "retentionTimes": [ + "2017-01-01T22:30:00Z" + ] + }, + "retentionPolicyType": "LongTermRetentionPolicy", + "weeklySchedule": { + "daysOfTheWeek": [ + "Sunday" + ], + "retentionDuration": { + "count": 4, + "durationType": "Weeks" + }, + "retentionTimes": [ + "2017-01-01T22:30:00Z" + ] + } + }, + "schedulePolicy": { + "schedulePolicyType": "SimpleSchedulePolicy", + "scheduleRunFrequency": "Daily", + "scheduleRunTimes": [ + "2017-01-01T22:30:00Z" + ] + } + } + } + ], + "variables": { + "dailyRetentionDurationCount": 7, + "daysOfTheWeek": [ + "Sunday" + ], + "monthlyRetentionDurationCount": 6, + "scheduleRunTimes": [ + "2017-01-01T22:30:00Z" + ], + "weeklyRetentionDurationCount": 4 + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT301 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT301 new file mode 100644 index 0000000..4a1a7d6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT301 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/recoveryservicesEnlist.json" + ], + "timestamp": 1642962892049, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/recoveryservicesEnlist.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT301", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT301", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "vmName": { + "metadata": { + "description": "Name of VM to enlist in AzureBackup" + }, + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "apiVersion": "2021-02-01", + "location": "location", + "name": "[concat(parameters('moodleCommon').vaultName, '/', variables('backupFabric'), '/', variables('v2VmContainer'), concat(resourceGroup().name,';',parameters('vmName')), '/', variables('v2Vm'), concat(resourceGroup().name,';',parameters('vmName')))]", + "properties": { + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/moodleCommon/moodleCommon", + "protectedItemType": "Microsoft.Compute/virtualMachines", + "sourceResourceId": "Microsoft.Compute/virtualMachines/vmName" + } + } + ], + "variables": { + "backupFabric": "Azure", + "v2Vm": "vm;iaasvmcontainerv2;", + "v2VmContainer": "iaasvmcontainer;iaasvmcontainerv2;", + "v2VmType": "Microsoft.Compute/virtualMachines" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT302 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT302 new file mode 100644 index 0000000..9b09537 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT302 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/redis.json" + ], + "timestamp": 1642962892079, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/redis.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT302", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT302", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Cache/Redis", + "apiVersion": "2020-06-01", + "location": "location", + "name": "moodleCommon", + "properties": { + "enableNonSslPort": true, + "sku": { + "capacity": 1, + "family": "P", + "name": "Premium" + }, + "subnetId": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT303 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT303 new file mode 100644 index 0000000..7c53e30 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT303 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/storageAccount.json" + ], + "timestamp": 1642962892087, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/storageAccount.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT303", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT303", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "location": "location", + "name": "moodleCommon", + "kind": "Storage", + "sku": { + "name": "moodleCommon" + }, + "properties": { + "encryption": { + "keySource": "Microsoft.Storage", + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + } + }, + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT304 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT304 new file mode 100644 index 0000000..61c6355 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT304 @@ -0,0 +1,234 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/webvmss.json" + ], + "timestamp": 1642962892094, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/nested/webvmss.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT304", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings", + "microsoft.storage/storageaccounts", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT304", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moodleCommon": { + "metadata": { + "description": "Common Moodle values" + }, + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "location": "location", + "name": "moodleCommon", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//moodleCommon" + ], + "location": "location", + "name": "moodleCommon", + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "setup_moodle", + "properties": { + "autoUpgradeMinorVersion": true, + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "moodleCommonmoodleCommonmoodleCommon", + "moodleCommon" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ',parameters('moodleCommon').webServerSetupScriptFilename,' ',parameters('moodleCommon').gfsNameRoot,'0', ' ','data', ' ', parameters('moodleCommon').siteURL, ' ', concat('jumpbox-vm-',parameters('moodleCommon').resourcesPrefix), ' ', parameters('moodleCommon').webServerType, ' ', parameters('moodleCommon').fileServerType, ' ', parameters('moodleCommon').storageAccountName, ' ', listKeys(variables('storageAccountId'), '2021-01-01').keys[0].value, ' ', parameters('moodleCommon').jboxVmName)]" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "vmssnic", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfg_lb", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//moodleCommon/moodleCommon" + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminUsername": "moodleCommon", + "computerNamePrefix": "moodleCommon", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/moodleCommon/.ssh/authorized_keys", + "keyData": "moodleCommon" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "moodleCommon", + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + } + } + }, + "sku": { + "capacity": 2, + "name": "moodleCommon", + "tier": "Standard" + }, + "tags": { + "displayName": "webfarm" + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets//moodleCommon" + ], + "location": "location", + "name": "autoscalewad", + "properties": { + "enabled": true, + "name": "autoscalewad", + "profiles": [ + { + "capacity": { + "default": "2", + "maximum": "moodleCommon", + "minimum": "2" + }, + "name": "Profile1", + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/moodleCommon", + "operator": "GreaterThan", + "statistic": "Average", + "threshold": 80, + "timeAggregation": "Average", + "timeGrain": "PT1M", + "timeWindow": "PT5M" + }, + "scaleAction": { + "cooldown": "PT1M", + "direction": "Increase", + "type": "ChangeCount", + "value": "1" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/moodleCommon", + "operator": "LessThan", + "statistic": "Average", + "threshold": 50, + "timeAggregation": "Average", + "timeGrain": "PT1M", + "timeWindow": "PT5M" + }, + "scaleAction": { + "cooldown": "PT5M", + "direction": "Decrease", + "type": "ChangeCount", + "value": "1" + } + } + ] + } + ], + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/moodleCommon" + } + } + ], + "variables": { + "extBeID": "Microsoft.Network/loadBalancers/backendAddressPools//moodleCommon/moodleCommon", + "scriptUri": "moodleCommonmoodleCommonmoodleCommon", + "subnetWebRef": "Microsoft.Network/virtualNetworks/subnets/moodleCommon/moodleCommon", + "storageAccountId": "Microsoft.Storage/storageAccounts/moodleCommon", + "vmssID": "Microsoft.Compute/virtualMachineScaleSets/moodleCommon", + "webvmss1NIC": "Microsoft.Compute/virtualMachineScaleSets/moodleCommon/virtualMachines/0/networkInterfaces/vmssnic" + }, + "outputs": { + "webvm1IP": { + "value": "[reference(variables('webvmss1NIC'), '2020-12-01').ipConfigurations[0].properties.privateIPAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT305 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT305 new file mode 100644 index 0000000..30f188e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT305 @@ -0,0 +1,1696 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/azuredeploy.json", + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892109, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/azuredeploy.json", + "/application-workloads/moodle/moodle-scalable-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT305", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT305", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "applyScriptsSwitch": { + "defaultValue": true, + "metadata": { + "description": "Switch to process or bypass all scripts/extensions" + }, + "type": "bool" + }, + "azureBackupSwitch": { + "defaultValue": false, + "metadata": { + "description": "Switch to configure AzureBackup and enlist VM's" + }, + "type": "bool", + "value": true + }, + "vnetGwDeploySwitch": { + "defaultValue": false, + "metadata": { + "description": "Switch to deploy a virtual network gateway or not" + }, + "type": "bool" + }, + "installO365pluginsSwitch": { + "defaultValue": false, + "metadata": { + "description": "Switch to install Moodle Office 365 plugins" + }, + "type": "bool" + }, + "installElasticSearchSwitch": { + "defaultValue": false, + "metadata": { + "description": "Switch to install Moodle ElasticSearch plugins & VMs" + }, + "type": "bool" + }, + "storageAccountType": { + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account type" + }, + "type": "string", + "value": "Standard_LRS" + }, + "dbServerType": { + "defaultValue": "mysql", + "allowedValues": [ + "mysql", + "postgres" + ], + "metadata": { + "description": "Database type" + }, + "type": "string", + "value": "mysql" + }, + "fileServerType": { + "defaultValue": "gluster", + "allowedValues": [ + "gluster", + "nfs" + ], + "metadata": { + "description": "File server type: GlusterFS, Azure Files (CIFS)--disabled due to too slow perf, NFS--not highly available" + }, + "type": "string" + }, + "webServerType": { + "defaultValue": "apache", + "allowedValues": [ + "apache", + "nginx" + ], + "metadata": { + "description": "Web server type" + }, + "type": "string", + "value": "apache" + }, + "controllerVmSku": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size for the controller node" + }, + "type": "string", + "value": "Standard_D2s_v3" + }, + "autoscaleVmSku": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size for autoscaled nodes" + }, + "type": "string", + "value": "Standard_D2s_v3" + }, + "autoscaleVmCount": { + "defaultValue": 10, + "metadata": { + "description": "Maximum number of autoscaled nodes" + }, + "type": "int", + "value": 10 + }, + "elasticVmSku": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size for the elastic search nodes" + }, + "type": "string", + "value": "Standard_D2s_v3" + }, + "firewallRuleName": { + "defaultValue": "open-to-the-world", + "metadata": { + "description": "Database firewall rule name" + }, + "type": "string" + }, + "gatewaySubnet": { + "allowedValues": [ + "GatewaySubnet" + ], + "defaultValue": "GatewaySubnet", + "metadata": { + "description": "name for Virtual network gateway subnet" + }, + "type": "string" + }, + "gatewayType": { + "allowedValues": [ + "Vpn", + "ER" + ], + "defaultValue": "Vpn", + "metadata": { + "description": "Virtual network gateway type" + }, + "type": "string" + }, + "glusterVmSku": { + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size for the gluster nodes" + }, + "type": "string", + "value": "Standard_D2s_v3" + }, + "fileServerDiskSize": { + "defaultValue": 127, + "metadata": { + "description": "Size per disk for gluster nodes or nfs server" + }, + "type": "int", + "value": 127 + }, + "fileServerDiskCount": { + "defaultValue": 4, + "minValue": 2, + "maxValue": 8, + "metadata": { + "description": "Number of disks in raid0 per gluster node or nfs server" + }, + "type": "int", + "value": 4 + }, + "moodleVersion": { + "allowedValues": [ + "MOODLE_34_STABLE", + "MOODLE_33_STABLE", + "MOODLE_32_STABLE", + "MOODLE_31_STABLE", + "MOODLE_30_STABLE", + "MOODLE_29_STABLE" + ], + "defaultValue": "MOODLE_34_STABLE", + "metadata": { + "description": "The Moodle version you want to install." + }, + "type": "string", + "value": "MOODLE_34_STABLE" + }, + "dbLogin": { + "defaultValue": "dbadmin", + "metadata": { + "description": "Database admin username" + }, + "type": "string" + }, + "siteURL": { + "defaultValue": "www.example.org", + "metadata": { + "description": "URL for Moodle site" + }, + "type": "string", + "value": "www.example.org" + }, + "skuCapacityDTU": { + "metadata": { + "description": "MySql/Postgresql database trasaction units" + }, + "type": "int", + "value": 2 + }, + "skuFamily": { + "defaultValue": "SkuFamily", + "metadata": { + "description": "MySql/Postgresql sku family" + }, + "type": "string", + "value": "Gen5" + }, + "skuName": { + "metadata": { + "description": "MySql/Postgresql sku name" + }, + "type": "string", + "value": "B_Gen5_2" + }, + "skuSizeMB": { + "defaultValue": 51200, + "metadata": { + "description": "MySql/Postgresql sku size in MB. For Basic tier, minimum 50GB, increased by 125GB up to 1TB. For Standard tier, minimum 125GB, increase by 125GB up to 1TB" + }, + "type": "int", + "value": 51200 + }, + "skuTier": { + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Basic", + "metadata": { + "description": "MySql/Postgresql sku tier" + }, + "type": "string", + "value": "Basic" + }, + "sshPublicKey": { + "metadata": { + "description": "ssh public key" + }, + "type": "string", + "value": "GEN-SSH-PUB-KEY" + }, + "sshUsername": { + "defaultValue": "azureadmin", + "metadata": { + "description": "ssh user name" + }, + "type": "string" + }, + "sslEnforcement": { + "allowedValues": [ + "Disabled", + "Enabled" + ], + "defaultValue": "Disabled", + "metadata": { + "description": "MySql/Postgresql SSL connection" + }, + "type": "string" + }, + "postgresVersion": { + "allowedValues": [ + "9.5", + "9.6" + ], + "defaultValue": "9.6", + "metadata": { + "description": "Postgresql version" + }, + "type": "string", + "value": "9.6" + }, + "mysqlVersion": { + "allowedValues": [ + "5.6", + "5.7" + ], + "defaultValue": "5.7", + "metadata": { + "description": "Mysql version" + }, + "type": "string", + "value": "5.7" + }, + "vNetAddressSpace": { + "defaultValue": "172.31.0.0", + "metadata": { + "description": "Address range for the Moodle virtual network - presumed /16 - further subneting during vnet creation" + }, + "type": "string", + "value": "172.31.0.0" + }, + "vpnType": { + "allowedValues": [ + "RouteBased", + "PolicyBased" + ], + "defaultValue": "RouteBased", + "metadata": { + "description": "Virtual network gateway vpn type" + }, + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "pid-738e3eec-68d4-4667-8377-c05c77c21f1b", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "dbTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlmysql.json parameters('_artifactsLocationSasToken')" + } + } + }, + { + "condition": true, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "recoveryTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlrecoveryservices.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "redisTemplate", + "dependsOn": [ + "Microsoft.Resources/deployments/networkTemplate" + ], + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlredis.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "networkTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlnetwork.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/networkTemplate", + "Microsoft.Resources/deployments/recoveryTemplate" + ], + "name": "elasticTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlelastic.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/networkTemplate", + "Microsoft.Resources/deployments/recoveryTemplate" + ], + "name": "glusterTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlgluster.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/elasticTemplate", + "Microsoft.Resources/deployments/glusterTemplate", + "Microsoft.Resources/deployments/recoveryTemplate", + "Microsoft.Resources/deployments/redisTemplate", + "Microsoft.Resources/deployments/storageAccountTemplate" + ], + "name": "controllerTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlcontroller.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/controllerTemplate", + "Microsoft.Resources/deployments/redisTemplate", + "Microsoft.Resources/deployments/dbTemplate" + ], + "name": "scaleSetTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlwebvmss.jsonparameters('_artifactsLocationSasToken')" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "storageAccountTemplate", + "properties": { + "mode": "Incremental", + "parameters": { + "moodleCommon": { + "value": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "templateLink": { + "uri": "(moodleCommon).baseTemplateUrlstorageAccount.jsonparameters('_artifactsLocationSasToken')" + } + } + } + ], + "outputs": { + "siteURL": { + "type": "string", + "value": "[variables('moodleCommon').siteURL]" + }, + "controllerInstanceIP": { + "type": "string", + "value": "[reference('controllerTemplate').outputs.controllerIP.value]" + }, + "databaseDNS": { + "type": "string", + "value": "[concat(variables('moodleCommon').dbServerType, '-', variables('moodleCommon').resourcesPrefix, '.', variables('moodleCommon').dbServerType, '.database.azure.com')]" + }, + "databaseAdminUsername": { + "type": "string", + "value": "[variables('moodleCommon').dbUsername]" + }, + "firstFrontendVmIP": { + "type": "string", + "value": "[reference('scaleSetTemplate').outputs.webvm1IP.value]" + }, + "moodleDbUsername": { + "type": "string", + "value": "[variables('moodleCommon').moodleDbUserAzure]" + }, + "loadBalancerDNS": { + "type": "string", + "value": "[variables('moodleCommon').lbDns]" + } + }, + "variables": { + "moodleCommon": { + "baseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/'))]", + "scriptLocation": "[uri(parameters('_artifactsLocation'), concat('scripts/'))]", + "applyScriptsSwitch": true, + "autoscaleVmCount": 10, + "autoscaleVmSku": "Standard_D2s_v3", + "azureBackupSwitch": true, + "artifactsSasToken": "", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh',parameters('_artifactsLocationSasToken')))]", + "controllerVmSku": "Standard_D2s_v3", + "dbLogin": "dbadmin", + "dbLoginPassword": "[concat(substring(uniqueString(resourceGroup().id, deployment().name), 2, 11), '*7', toUpper('pfiwb'))]", + "dbServerType": "mysql", + "dbUsername": "dbadmin@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmSku": "Standard_D2s_v3", + "elasticAvailabilitySetName": "elastic-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticClusterName": "es-cluster-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName1": "elastic-vm-nic-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName2": "elastic-vm-nic-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticNicName3": "elastic-vm-nic-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticScriptFilename": "install_elastic.sh", + "elasticVm1IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.20')]", + "elasticVm2IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.21')]", + "elasticVm3IP": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.22')]", + "elasticVmName": "elastic-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName1": "elastic-vm-01-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName2": "elastic-vm-02-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "elasticVmName3": "elastic-vm-03-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extBeName": "lb-backend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extFeName": "lb-frontend-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extNatPool": "lb-natpool-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "extProbe": "lb-probe-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "fileServerDiskCount": 4, + "fileServerDiskSize": 127, + "fileServerType": "gluster", + "firewallRuleName": "open-to-the-world", + "gatewayName": "vnet-gateway-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewayPublicIPName": "vnet-gw-ip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gatewaySubnet": "GatewaySubnet", + "gatewaySubnetPrefix": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)))]", + "gatewaySubnetRange": "[concat(variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),2)), '.0/24')]", + "gatewayType": "Vpn", + "gfsNameRoot": "gluster-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "gfxAvailabilitySetName": "gluster-avset-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "glusterScriptFilename": "install_gluster.sh", + "glusterVmCount": 2, + "glusterVmSku": "Standard_D2s_v3", + "installO365pluginsSwitch": false, + "installElasticSearchSwitch": false, + "jboxNicName": "jumpbox-vm-nic-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxNsgName": "jumpbox-nsg-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxPipName": "jumpbox-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "jboxVmName": "jumpbox-vm-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbDns": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].[resourceGroup().location].cloudapp.azure.com", + "lbName": "lb-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "lbPipName": "lb-pubip-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleAdminPass": "[concat(toUpper('xl'), substring(uniqueString(resourceGroup().id, deployment().name), 6, 7),',1*8')]", + "moodleDbName": "moodle", + "moodleDbPass": "[concat('9#36^', substring(uniqueString(resourceGroup().id, deployment().name), 5, 8), toUpper('ercq'))]", + "moodleDbUser": "moodle", + "moodleDbUserAzure": "moodle@mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "moodleInstallScriptFilename": "install_moodle.sh", + "moodleVersion": "MOODLE_34_STABLE", + "mysqlVersion": "5.7", + "osType": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "policyName": "policy-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "postgresVersion": "9.6", + "redisCacheName": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "redisDns": "redis-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)].redis.cache.windows.net", + "resourcesPrefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "serverName": "mysql-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "siteURL": "[if(or(empty(parameters('siteURL')), equals(parameters('siteURL'), 'www.example.org')), concat('lb-',variables('resourceprefix'),'.',parameters('location'),'.cloudapp.azure.com'), parameters('siteURL'))]", + "skuCapacityDTU": 2, + "skuFamily": "Gen5", + "skuName": "B_Gen5_2", + "skuSizeMB": 51200, + "skuTier": "Basic", + "sshPublicKey": "GEN-SSH-PUB-KEY", + "sshUsername": "azureadmin", + "sslEnforcement": "Disabled", + "storageAccountName": "[tolower(concat('abs',variables('resourceprefix')))]", + "storageAccountType": "Standard_LRS", + "subnetElastic": "elastic-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetElasticPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)))]", + "subnetElasticRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),4)), '.0/24')]", + "subnetRedis": "redis-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetRedisPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)))]", + "subnetRedisRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),3)), '.0/24')]", + "subnetSan": "san-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetSanPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)))]", + "subnetSanRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),1)), '.0/24')]", + "subnetWeb": "web-subnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "subnetWebPrefix": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)))]", + "subnetWebRange": "[concat( variables('octets')[0], '.', variables('octets')[1], '.', string(add(int(variables('octets')[2]),0)), '.0/24')]", + "vNetAddressSpace": "172.31.0.0", + "vaultName": "vault-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssName": "vmss-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmssdStorageAccounttName": "[concat('vmss',uniqueString(resourceGroup().id))]", + "vnetGwDeploySwitch": false, + "vnetName": "vnet-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vpnType": "RouteBased", + "webServerSetupScriptFilename": "setup_webserver.sh", + "webServerType": "apache" + }, + "octets": "[split(parameters('vNetAddressSpace'), '.')]", + "resourceprefix": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT306 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT306 new file mode 100644 index 0000000..051112a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT306 @@ -0,0 +1,825 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-ha-pxc/azuredeploy.json", + "/application-workloads/mysql/mysql-ha-pxc/azuredeploy.parameters.json" + ], + "timestamp": 1642962892122, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-ha-pxc/azuredeploy.json", + "/application-workloads/mysql/mysql-ha-pxc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT306", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT306", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsName": { + "type": "string", + "metadata": { + "description": "Connect to your cluster using dnsName.cloudapp.net" + }, + "value": "GEN-UNIQUE-13" + }, + "userName": { + "type": "string", + "metadata": { + "description": "user name to ssh to the VMs" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "size for the VMs" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "pxcvnet", + "metadata": { + "description": "Virtual network name for the cluster" + }, + "value": "pxcvnet" + }, + "dbSubnetName": { + "type": "string", + "defaultValue": "dbsubnet", + "metadata": { + "description": "subnet name for the MySQL nodes" + }, + "value": "dbsubnet" + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "IP address in CIDR for virtual network" + } + }, + "dbSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "IP address in CIDR for db subnet" + } + }, + "vmIP1": { + "type": "string", + "defaultValue": "10.0.1.4", + "metadata": { + "description": "IP address for VM1 must be available in db subnet" + }, + "value": "10.0.1.5" + }, + "vmIP2": { + "type": "string", + "defaultValue": "10.0.1.5", + "metadata": { + "description": "IP address for VM2 must be available in db subnet" + }, + "value": "10.0.1.6" + }, + "vmIP3": { + "type": "string", + "defaultValue": "10.0.1.6", + "metadata": { + "description": "IP address for VM3 must be available in db subnet" + }, + "value": "10.0.1.7" + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "pxcnd", + "metadata": { + "description": "host name prefix for the VMs" + }, + "value": "pxc" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "allowedValues": [ + "OpenLogic", + "Canonical" + ], + "metadata": { + "description": "publisher for the VM OS image" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "allowedValues": [ + "CentOS", + "UbuntuServer" + ], + "metadata": { + "description": "VM OS name" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "6.5", + "12.04.5-LTS", + "18.04-LTS" + ], + "metadata": { + "description": "VM OS version" + } + }, + "mysqlFrontEndPort": { + "type": "int", + "defaultValue": 3306, + "metadata": { + "description": "MySQL public port" + } + }, + "mysqlBackEndPort": { + "type": "int", + "defaultValue": 3306, + "metadata": { + "description": "MySQL private port" + } + }, + "idleTimeoutInMinutesforILBRule": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "idel timeout for load balancer" + } + }, + "probePort": { + "type": "int", + "defaultValue": 9200, + "metadata": { + "description": "cluster health check probe port exposed to load balancer" + } + }, + "probeRequestPath": { + "type": "string", + "defaultValue": "/", + "metadata": { + "description": "cluster health check probe path" + } + }, + "probeIntervalInSeconds": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "health check probe interval" + } + }, + "numberOfProbes": { + "type": "int", + "defaultValue": 20, + "metadata": { + "description": "number of health check probes to consider failure" + } + }, + "sshNatRuleFrontEndPort1": { + "type": "int", + "defaultValue": 64001, + "metadata": { + "description": "public ssh port for VM1" + } + }, + "sshNatRuleFrontEndPort2": { + "type": "int", + "defaultValue": 64002, + "metadata": { + "description": "public ssh port for VM2" + } + }, + "sshNatRuleFrontEndPort3": { + "type": "int", + "defaultValue": 64003, + "metadata": { + "description": "public ssh port for VM3" + } + }, + "sshNatRuleBackEndPort": { + "type": "int", + "defaultValue": 22, + "metadata": { + "description": "private ssh port for the VMs" + } + }, + "customScriptCommandToExecute": { + "type": "string", + "defaultValue": "bash azurepxc.sh", + "metadata": { + "description": "bash script command line" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "dbSubnetRef": "Microsoft.Network/virtualNetworks/subnets//pxcvnet/dbsubnet", + "lbPublicIPName": "pxc-lb-publicIP", + "lbPublicIPRef": "Microsoft.Network/publicIPAddresses/pxc-lb-publicIP", + "lbName": "pxc-lb", + "ilbBackendAddressPoolName": "pxc-ilbBackendPool", + "ilbBackendAddressPoolID": "Microsoft.Network/loadBalancers/backendAddressPools//pxc-lb/pxc-ilbBackendPool", + "ilbRuleName": "pxc-ilbRule", + "probeName": "pxc-probe", + "probeID": "Microsoft.Network/loadBalancers/probes//pxc-lb/pxc-probe", + "sshIPConfigName": "pxc-sshIPCfg", + "sshIPConfig": "Microsoft.Network/loadBalancers/frontendIPConfigurations//pxc-lb/pxc-sshIPCfg", + "sshNatRuleName": "pxc-natRule", + "sshNatRuleName1": "pxc-natRule-1", + "sshNatRuleName2": "pxc-natRule-2", + "sshNatRuleName3": "pxc-natRule-3", + "sshNatRuleID1": "Microsoft.Network/loadBalancers/inboundNatRules//pxc-lb/pxc-natRule-1", + "sshNatRuleID2": "Microsoft.Network/loadBalancers/inboundNatRules//pxc-lb/pxc-natRule-2", + "sshNatRuleID3": "Microsoft.Network/loadBalancers/inboundNatRules//pxc-lb/pxc-natRule-3", + "nicName": "pxc-nic", + "nicName1": "pxc-nic-1", + "nicName2": "pxc-nic-2", + "nicName3": "pxc-nic-3", + "nicId1": "Microsoft.Network/networkInterfaces/pxc-nic-1", + "nicId2": "Microsoft.Network/networkInterfaces/pxc-nic-2", + "nicId3": "Microsoft.Network/networkInterfaces/pxc-nic-3", + "vmName1": "a-pxc", + "vmName2": "k-pxc", + "vmName3": "z-pxc", + "availabilitySetName": "pxc-set", + "vmExtensionName": "pxc-ext", + "pxcClusterAddress": "10.0.1.510.0.1.610.0.1.7", + "customScriptCommandCommon": "bash azurepxc.sh 10.0.1.510.0.1.610.0.1.7 ", + "mysqlConfigFilePath": "[uri(parameters('_artifactsLocation'), concat('my.cnf.template', parameters('_artifactsLocationSasToken')))]", + "customScriptParamVm1": "10.0.1.5 bootstrap-pxc [uri(parameters('_artifactsLocation'), concat('my.cnf.template', parameters('_artifactsLocationSasToken')))]", + "vmExtensionName1": "a-pxc/pxc-ext", + "customScriptParamVm2": "10.0.1.6 start [uri(parameters('_artifactsLocation'), concat('my.cnf.template', parameters('_artifactsLocationSasToken')))]", + "customScriptParamVm3": "10.0.1.7 start [uri(parameters('_artifactsLocation'), concat('my.cnf.template', parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "pxc-lb-publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "pxc-set", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "pxcvnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "dbsubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "pxc-nic-1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//pxcvnet", + "Microsoft.Network/loadBalancers//pxc-lb" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.1.5", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//pxcvnet/dbsubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//pxc-lb/pxc-ilbBackendPool" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules//pxc-lb/pxc-natRule-1" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "pxc-nic-2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//pxcvnet", + "Microsoft.Network/loadBalancers//pxc-lb" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.1.6", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//pxcvnet/dbsubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//pxc-lb/pxc-ilbBackendPool" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules//pxc-lb/pxc-natRule-2" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "pxc-nic-3", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//pxcvnet", + "Microsoft.Network/loadBalancers//pxc-lb" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.1.7", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//pxcvnet/dbsubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//pxc-lb/pxc-ilbBackendPool" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules//pxc-lb/pxc-natRule-3" + } + ] + } + } + ] + } + }, + { + "name": "a-pxc", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/availabilitySets/pxc-set", + "Microsoft.Network/networkInterfaces/pxc-nic-1" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/pxc-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "a-pxc", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "a-pxc_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "a-pxc_DataDisk1", + "diskSizeGB": "1000", + "lun": 0, + "createOption": "Empty" + }, + { + "name": "a-pxc_DataDisk2", + "diskSizeGB": "1000", + "lun": 1, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/pxc-nic-1" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "a-pxc/pxc-ext", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//a-pxc" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('azurepxc.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash azurepxc.sh 10.0.1.510.0.1.610.0.1.7 10.0.1.5 bootstrap-pxc [uri(parameters('_artifactsLocation'), concat('my.cnf.template', parameters('_artifactsLocationSasToken')))]" + } + } + }, + { + "name": "k-pxc", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/availabilitySets/pxc-set", + "Microsoft.Network/networkInterfaces/pxc-nic-2" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/pxc-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "k-pxc", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "k-pxc_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "k-pxc_DataDisk1", + "diskSizeGB": "1000", + "lun": 0, + "createOption": "Empty" + }, + { + "name": "k-pxc_DataDisk2", + "diskSizeGB": "1000", + "lun": 1, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/pxc-nic-2" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "k-pxc/pxc-ext", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/k-pxc", + "Microsoft.Compute/virtualMachines/extensions/a-pxc/pxc-ext" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('azurepxc.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash azurepxc.sh 10.0.1.510.0.1.610.0.1.7 10.0.1.6 start [uri(parameters('_artifactsLocation'), concat('my.cnf.template', parameters('_artifactsLocationSasToken')))]" + } + } + }, + { + "name": "z-pxc", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/availabilitySets/pxc-set", + "Microsoft.Network/networkInterfaces/pxc-nic-3" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/pxc-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "z-pxc", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "z-pxc_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "z-pxc_DataDisk1", + "diskSizeGB": "1000", + "lun": 0, + "createOption": "Empty" + }, + { + "name": "z-pxc_DataDisk2", + "diskSizeGB": "1000", + "lun": 1, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/pxc-nic-3" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "z-pxc/pxc-ext", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/z-pxc", + "Microsoft.Compute/virtualMachines/extensions/a-pxc/pxc-ext" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('azurepxc.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash azurepxc.sh 10.0.1.510.0.1.610.0.1.7 10.0.1.7 start [uri(parameters('_artifactsLocation'), concat('my.cnf.template', parameters('_artifactsLocationSasToken')))]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/loadBalancers", + "name": "pxc-lb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//pxc-lb-publicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "pxc-sshIPCfg", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pxc-lb-publicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "pxc-ilbBackendPool" + } + ], + "inboundNatRules": [ + { + "name": "pxc-natRule-1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//pxc-lb/pxc-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 64001, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "pxc-natRule-2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//pxc-lb/pxc-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 64002, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "pxc-natRule-3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//pxc-lb/pxc-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 64003, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "pxc-ilbRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//pxc-lb/pxc-sshIPCfg" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//pxc-lb/pxc-ilbBackendPool" + }, + "protocol": "Tcp", + "frontendPort": 3306, + "backendPort": 3306, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 4, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes//pxc-lb/pxc-probe" + } + } + } + ], + "probes": [ + { + "name": "pxc-probe", + "properties": { + "protocol": "Http", + "port": 9200, + "intervalInSeconds": 10, + "numberOfProbes": 20, + "requestPath": "/" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT309 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT309 new file mode 100644 index 0000000..a765775 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT309 @@ -0,0 +1,259 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/haproxy-resources.json" + ], + "timestamp": 1642962892159, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/haproxy-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT309", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT309", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mysqlPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "staticIp": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "MySQL", + "properties": { + "description": "Allows MySQL traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3306", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "MySQLRead", + "properties": { + "description": "Allows MySQL Read traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3307", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsname" + } + } + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//namespacevmbasenamePublicIp", + "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Static", + "privateIPAddress": "staticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/haproxyInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash haproxy.sh mysqlPassword adminUsername" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT31 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT31 new file mode 100644 index 0000000..d0836f8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT31 @@ -0,0 +1,322 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/apache/zookeeper-cluster-ubuntu-vm/azuredeploy.json", + "/application-workloads/apache/zookeeper-cluster-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962883573, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/apache/zookeeper-cluster-ubuntu-vm/azuredeploy.json", + "/application-workloads/apache/zookeeper-cluster-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT31", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT31", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "diskType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "VM name" + }, + "value": "zkServer" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Image SKU" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "scaleNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of Zookeeper nodes to provision" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "availabilitySetName": "zookeeperAvSet", + "virtualNetworkName": "zookeeperVNET", + "vnetAddressPrefix": "10.0.0.0/16", + "publicIPAddressType": "Dynamic", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "nicName": "zookeeperNIC", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/zookeeperVNET/Subnet-1", + "customScriptFilePath": "[uri(parameters('_artifactsLocation'), concat('zookeeper.sh', parameters('_artifactsLocationSasToken')))]", + "customScriptCommandToExecute": "sh zookeeper.sh", + "vmExtensionName": "zookeeperExtension", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "name": "zookeeperAvSet", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 3 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "zookeeperVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "zookeeperNICcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIPcopyIndex()", + "Microsoft.Network/virtualNetworks//zookeeperVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat('10.0.0.', copyIndex(4))]", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPcopyIndex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/zookeeperVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "zkServercopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//zookeeperNICcopyIndex()", + "Microsoft.Compute/availabilitySets//zookeeperAvSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/zookeeperAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "zkServercopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "zkServercopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/zookeeperNICcopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "zkServercopyIndex()/zookeeperExtension", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//zkServercopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('zookeeper.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh zookeeper.sh copyIndex() 3" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT310 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT310 new file mode 100644 index 0000000..5c9771e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT310 @@ -0,0 +1,180 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/master-resources.json" + ], + "timestamp": 1642962892172, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/master-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT310", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT310", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mysqlPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "masterNodeIp": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "masterNodeIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/masterInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash master.sh mysqlPassword adminUsername" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT311 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT311 new file mode 100644 index 0000000..d581525 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT311 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/shared-resources.json" + ], + "timestamp": 1642962892198, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT311", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT311", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT312 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT312 new file mode 100644 index 0000000..2b0f33c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT312 @@ -0,0 +1,180 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/slave01-resources.json" + ], + "timestamp": 1642962892207, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/slave01-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT312", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT312", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mysqlPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "slaveStaticIp": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "slaveStaticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/slave01Install", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash slave01.sh mysqlPassword adminUsername" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT313 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT313 new file mode 100644 index 0000000..b6ca131 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT313 @@ -0,0 +1,180 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/slave02-resources.json" + ], + "timestamp": 1642962892214, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/nested/slave02-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT313", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT313", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mysqlPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "slaveStaticIp": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "slaveStaticIp", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "namespacevmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/slave02Install", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash slave02.sh mysqlPassword adminUsername" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT314 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT314 new file mode 100644 index 0000000..29f4608 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT314 @@ -0,0 +1,484 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/azuredeploy.json", + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892222, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/azuredeploy.json", + "/application-workloads/mysql/mysql-mha-haproxy-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT314", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT314", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "description": "Name of the virtual network provisioned for the cluster" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "type": "securestring", + "metadata": { + "description": "Mysql root password used when installing MySQL Server 5.5" + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "DNS Name for the publicly accessible Lap node. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "haproxyVmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning the Lap node" + }, + "value": "Standard_D4_v3" + }, + "mysqlVmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning Mysql node(s)" + }, + "value": "Standard_D4_v3" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "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": "securestring", + "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." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "haproxyTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/haproxy-resources.json', parameters('_artifactsLocationSasToken')))]", + "masterTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/master-resources.json', parameters('_artifactsLocationSasToken')))]", + "slaveTemplateUrl01": "[uri(parameters('_artifactsLocation'), concat('nested/slave01-resources.json', parameters('_artifactsLocationSasToken')))]", + "slaveTemplateUrl02": "[uri(parameters('_artifactsLocation'), concat('nested/slave02-resources.json', parameters('_artifactsLocationSasToken')))]", + "namespace": "mha-", + "networkSettings": { + "virtualNetworkName": "GEN-UNIQUE", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "GEN-UNIQUE" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "haproxyIp": "10.0.0.9", + "masterIp": "10.0.0.10", + "slaveIp01": "10.0.0.11", + "slaveIp02": "10.0.0.12" + } + }, + "haproxyOsSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/haproxy.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "masterOsSettings": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/master.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "slaveOsSettings01": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/slave01.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "slaveOsSettings02": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/slave02.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-UNIQUE", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "GEN-UNIQUE" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "haproxyIp": "10.0.0.9", + "masterIp": "10.0.0.10", + "slaveIp01": "10.0.0.11", + "slaveIp02": "10.0.0.12" + } + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "haproxyNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/haproxy-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "mha-" + }, + "vmbasename": { + "value": "Haproxy" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "dnsname": { + "value": "GEN-UNIQUE" + }, + "staticIp": { + "value": "(networkSettings).statics.haproxyIp" + }, + "vmSize": { + "value": "Standard_D4_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/haproxy.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "masterNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//haproxyNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/master-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "mha-" + }, + "vmbasename": { + "value": "Master" + }, + "masterNodeIp": { + "value": "(networkSettings).statics.masterIp" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/master.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "slaveNode01", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//haproxyNode", + "Microsoft.Resources/deployments//masterNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/slave01-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "mha-" + }, + "vmbasename": { + "value": "Slave01" + }, + "slaveStaticIp": { + "value": "(networkSettings).statics.slaveIp01" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/slave01.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "slaveNode02", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//haproxyNode", + "Microsoft.Resources/deployments//masterNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/slave02-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "mha-" + }, + "vmbasename": { + "value": "Slave02" + }, + "slaveStaticIp": { + "value": "(networkSettings).statics.slaveIp02" + }, + "subnet": { + "value": "(networkSettings).subnet.dse" + }, + "vmSize": { + "value": "Standard_D4_v3" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/slave02.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT315 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT315 new file mode 100644 index 0000000..13c35ce --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT315 @@ -0,0 +1,137 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/nested/mysql.json" + ], + "timestamp": 1642962892232, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/nested/mysql.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT315", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbformysql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT315", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sku": { + "type": "object", + "metadata": { + "description": "SKU for the MySQL PaaS instance to be deployed." + } + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Name of the MySQL PaaS instance to be deployed." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location where the instance should be deployed." + } + }, + "version": { + "type": "string", + "metadata": { + "description": "MySQL version for the MySQL Server instances to be deployed." + } + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "Administrator name for MySQL servers." + } + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL server administrator." + } + }, + "backupRetentionDays": { + "type": "int", + "metadata": { + "description": "Backup retention period." + } + }, + "geoRedundantBackup": { + "type": "string", + "metadata": { + "description": "Enable or disable geo redundant backups." + } + }, + "enableAzureResources": { + "type": "bool", + "metadata": { + "description": "Enable Azure hosted resources to access the master instance." + } + }, + "ServerId": { + "type": "string", + "metadata": { + "description": "Reference ID of the MySQL PaaS instance being deployed." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.DBforMySQL/servers", + "sku": "sku", + "name": "serverName", + "apiVersion": "2017-12-01", + "location": "location", + "properties": { + "version": "version", + "administratorLogin": "administratorLogin", + "administratorLoginPassword": "administratorLoginPassword", + "storageProfile": { + "storageMB": "sku", + "backupRetentionDays": "backupRetentionDays", + "geoRedundantBackup": "geoRedundantBackup" + } + }, + "resources": [ + { + "condition": "enableAzureResources", + "apiVersion": "2017-12-01", + "type": "firewallRules", + "location": "location", + "name": "AllowAzureResources", + "dependsOn": [ + "ServerId" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + } + ], + "outputs": { + "MySQLDetails": { + "type": "object", + "value": "[reference(parameters('serverName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT316 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT316 new file mode 100644 index 0000000..5fe8368 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT316 @@ -0,0 +1,102 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/nested/mysqlReplica.json" + ], + "timestamp": 1642962892239, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/nested/mysqlReplica.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT316", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.dbformysql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT316", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sku": { + "type": "object", + "metadata": { + "description": "SKU for the MySQL PaaS instance to be deployed." + } + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Name of the MySQL PaaS instance to be deployed." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location where the instance should be deployed." + } + }, + "numberOfReplicas": { + "type": "int", + "metadata": { + "description": "Number of replica instances to be deployed." + } + }, + "backupRetentionDays": { + "type": "int", + "metadata": { + "description": "Backup retention period." + } + }, + "geoRedundantBackup": { + "type": "string", + "metadata": { + "description": "Enable or disable geo redundant backups." + } + }, + "sourceServerId": { + "type": "string", + "metadata": { + "description": "Reference ID of the MySQL PaaS instance being deployed." + } + } + }, + "variables": {}, + "resources": [ + { + "copy": { + "name": "replicasLoop", + "count": "[if(equals(parameters('numberOfReplicas'),0),add(parameters('numberOfReplicas'),1),parameters('numberOfReplicas'))]", + "mode": "serial" + }, + "type": "Microsoft.DBforMySQL/servers", + "sku": "sku", + "name": "[concat(parameters('serverName'),'-',add(copyIndex(),1))]", + "apiVersion": "2017-12-01", + "location": "location", + "properties": { + "createMode": "Replica", + "sourceServerId": "sourceServerId", + "storageProfile": { + "storageMB": "sku", + "backupRetentionDays": "backupRetentionDays", + "geoRedundantBackup": "geoRedundantBackup" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT317 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT317 new file mode 100644 index 0000000..f19d0b6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT317 @@ -0,0 +1,281 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/azuredeploy.json", + "/application-workloads/mysql/mysql-paas-replication/azuredeploy.parameters.json" + ], + "timestamp": 1642962892246, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-paas-replication/azuredeploy.json", + "/application-workloads/mysql/mysql-paas-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT317", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT317", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serverName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Server name for the MySQL PaaS instance and it's replicas (replicas will get a '-' attached to the end with the replica number)." + }, + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the MySQL PaaS components to be deployed." + } + }, + "administratorLogin": { + "type": "string", + "metadata": { + "description": "Administrator name for MySQL servers." + }, + "value": "GEN-UNIQUE-10" + }, + "administratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL server administrator." + }, + "value": "GEN-PASSWORD" + }, + "vCPU": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of vCPUs for the MySQL Server instances to be deployed." + } + }, + "skuFamily": { + "type": "string", + "defaultValue": "Gen5", + "allowedValues": [ + "Gen4", + "Gen5" + ], + "metadata": { + "description": "Hardware generation for the MySQL Server instances to be deployed." + } + }, + "skuSizeMB": { + "type": "int", + "defaultValue": 5120, + "minValue": 5120, + "maxValue": 10240, + "metadata": { + "description": "Storage capacity for the MySQL Server instances to be deployed." + } + }, + "skuTier": { + "type": "string", + "defaultValue": "GeneralPurpose", + "allowedValues": [ + "Basic", + "GeneralPurpose", + "MemoryOptimized" + ], + "metadata": { + "description": "Performance tier for the MySQL Server instances to be deployed." + } + }, + "numberOfReplicas": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "Number of replica instances to be deployed." + } + }, + "version": { + "type": "string", + "defaultValue": "5.7", + "allowedValues": [ + "5.6", + "5.7" + ], + "metadata": { + "description": "MySQL version for the MySQL Server instances to be deployed." + } + }, + "enableAzureResources": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable Azure hosted resources to access the master instance." + } + }, + "backupRetentionDays": { + "type": "int", + "defaultValue": 7, + "minvalue": 7, + "maxvalue": 35, + "metadata": { + "description": "Backup retention period." + } + }, + "geoRedundantBackup": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enable or disable geo redundant backups." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "nestedtemplateMySQL": "[uri(parameters('_artifactsLocation'), concat('nested/mysql.json', parameters('_artifactsLocationSasToken')))]", + "nestedtemplateMySQLReplica": "[uri(parameters('_artifactsLocation'), concat('nested/mysqlReplica.json', parameters('_artifactsLocationSasToken')))]", + "sourceServerId": "Microsoft.DBforMySQL/servers/GEN-UNIQUE-10", + "skuName": "[concat(if(equals(parameters('skuTier'),'GeneralPurpose'),'GP',if(equals(parameters('skuTier'),'Basic'),'B',if(equals(parameters('skuTier'),'MemoryOptimized'),'MO',''))),'_',parameters('skuFamily'),'_',parameters('vCPU'))]", + "sku": { + "name": "[variables('skuName')]", + "tier": "GeneralPurpose", + "capacity": 2, + "size": 5120, + "family": "Gen5" + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "MySQLServer", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/mysql.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "sku": { + "value": { + "name": "[variables('skuName')]", + "tier": "GeneralPurpose", + "capacity": 2, + "size": 5120, + "family": "Gen5" + } + }, + "serverName": { + "value": "GEN-UNIQUE-10" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "version": { + "value": "5.7" + }, + "administratorLogin": { + "value": "GEN-UNIQUE-10" + }, + "administratorLoginPassword": { + "value": "GEN-PASSWORD" + }, + "backupRetentionDays": { + "value": 7 + }, + "geoRedundantBackup": { + "value": "Disabled" + }, + "enableAzureResources": { + "value": true + }, + "ServerId": { + "value": "Microsoft.DBforMySQL/servers/GEN-UNIQUE-10" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "MySQLServerReplicas", + "type": "Microsoft.Resources/deployments", + "condition": "[greater(parameters('numberOfReplicas'),0)]", + "dependsOn": [ + "MySQLServer" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/mysqlReplica.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "sku": { + "value": { + "name": "[variables('skuName')]", + "tier": "GeneralPurpose", + "capacity": 2, + "size": 5120, + "family": "Gen5" + } + }, + "serverName": { + "value": "GEN-UNIQUE-10" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "numberOfReplicas": { + "value": 1 + }, + "backupRetentionDays": { + "value": 7 + }, + "geoRedundantBackup": { + "value": "Disabled" + }, + "sourceServerId": { + "value": "Microsoft.DBforMySQL/servers/GEN-UNIQUE-10" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT318 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT318 new file mode 100644 index 0000000..68f478e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT318 @@ -0,0 +1,616 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-replication/azuredeploy.json", + "/application-workloads/mysql/mysql-replication/azuredeploy.parameters.json" + ], + "timestamp": 1642962892253, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-replication/azuredeploy.json", + "/application-workloads/mysql/mysql-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT318", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT318", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsName": { + "type": "string", + "defaultValue": "[concat('mysql', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Connect to your cluster using dnsName.location.cloudapp.azure.com" + }, + "value": "GEN-UNIQUE-10" + }, + "vmUserName": { + "type": "string", + "metadata": { + "description": "user name to ssh to the VMs" + }, + "value": "GEN-UNIQUE" + }, + "mysqlRootPassword": { + "type": "securestring", + "metadata": { + "description": "mysql root user password single quote not allowed" + }, + "value": "GEN-PASSWORD" + }, + "mysqlReplicationPassword": { + "type": "securestring", + "metadata": { + "description": "mysql replication user password single quote not allowed" + }, + "value": "GEN-PASSWORD" + }, + "mysqlProbePassword": { + "type": "securestring", + "metadata": { + "description": "mysql probe password single quote not allowed" + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "size for the VMs" + } + }, + "diskType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS", + "StandardSSD_LRS" + ], + "metadata": { + "description": "Storage account type for the cluster" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "mysqlvnet", + "metadata": { + "description": "Virtual network name for the cluster" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Identifies whether to use new or existing Virtual Network" + } + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "If using existing VNet, specifies the resource group for the existing VNet" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "dbsubnet", + "metadata": { + "description": "subnet name for the MySQL nodes" + } + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "IP address in CIDR for virtual network" + } + }, + "subnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "IP address in CIDR for db subnetq" + } + }, + "subnetStartAddress": { + "type": "string", + "defaultValue": "10.0.1.4", + "metadata": { + "description": "Start IP address in the subnet for the VMs" + } + }, + "vmImage": { + "type": "string", + "defaultValue": "CentOS 8.2", + "allowedValues": [ + "CentOS 6.10", + "CentOS 7.8", + "CentOS 8.2", + "Ubuntu 14.04.5-LTS", + "Ubuntu 16.04-LTS", + "Ubuntu 18.04-LTS" + ], + "metadata": { + "description": "publisher for the VM OS image" + } + }, + "mysqlFrontEndPort0": { + "type": "int", + "defaultValue": 3306, + "metadata": { + "description": "MySQL public port master" + } + }, + "mysqlFrontEndPort1": { + "type": "int", + "defaultValue": 3307, + "metadata": { + "description": "MySQL public port slave" + } + }, + "sshNatRuleFrontEndPort0": { + "type": "int", + "defaultValue": 64001, + "metadata": { + "description": "public ssh port for VM1" + } + }, + "sshNatRuleFrontEndPort1": { + "type": "int", + "defaultValue": 64002, + "metadata": { + "description": "public ssh port for VM2" + } + }, + "mysqlProbePort0": { + "type": "int", + "defaultValue": 9200, + "metadata": { + "description": "MySQL public port master" + } + }, + "mysqlProbePort1": { + "type": "int", + "defaultValue": 9201, + "metadata": { + "description": "MySQL public port slave" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "nodeCount": 2, + "lbPublicIPName": "mysqlIP01", + "lbPublicIPRef": "Microsoft.Network/publicIPAddresses/mysqlIP01", + "lbName": "GEN-UNIQUE-10-lb", + "ilbBackendAddressPoolName": "GEN-UNIQUE-10-ilbBackendPool", + "ilbBackendAddressPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-ilbBackendPool", + "sshIPConfigName": "GEN-UNIQUE-10-sshIPCfg", + "sshIPConfigId": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-sshIPCfg", + "nicName": "GEN-UNIQUE-10-nic", + "availabilitySetName": "GEN-UNIQUE-10-set", + "customScriptFilePath": "[uri(parameters('_artifactsLocation'), concat('azuremysql.sh', parameters('_artifactsLocationSasToken')))]", + "mysqlConfigFilePath": "[uri(parameters('_artifactsLocation'), concat('my.cnf.template', parameters('_artifactsLocationSasToken')))]", + "sa": "10.0.1.4", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "vmImageReference": { + "CentOS 6.10": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.10", + "version": "latest" + }, + "CentOS 7.8": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7_8", + "version": "latest" + }, + "CentOS 8.2": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "8_2", + "version": "latest" + }, + "Ubuntu 14.04.5-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "Ubuntu 16.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "Ubuntu 18.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "mysqlvnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "dbsubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "mysqlIP01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-10-set", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-10-niccopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/mysqlvnet", + "Microsoft.Network/loadBalancers/GEN-UNIQUE-10-lb" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigcopyIndex()", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(copyIndex(variables('ipOctet3')), 255)), '.', mod(copyIndex(variables('ipOctet3')), 255))]", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/mysqlvnet/dbsubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-ilbBackendPool" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUE-10-lb/GEN-UNIQUE-10NatRulecopyIndex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUE-10-lb/GEN-UNIQUE-10ProbeNatRulecopyIndex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUE-10-lb/GEN-UNIQUE-10MySQLNatRulecopyIndex()" + } + ] + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-10copyIndex()", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/availabilitySets/GEN-UNIQUE-10-set", + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-niccopyIndex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE-10-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "(vmImageReference)[parameters(vmImage)]", + "osDisk": { + "name": "GEN-UNIQUE-10copyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-10copyIndex()_DataDisk1", + "diskSizeGB": 1024, + "lun": 0, + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10copyIndex()_DataDisk2", + "diskSizeGB": 1024, + "lun": 1, + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-niccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-10copyIndex()/setupMySQL", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "extLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10copyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('azuremysql.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('{0} {1} {2} ''{3}'' ''{4}'' ''{5}'' ''{6}'' {7}', 'bash azuremysql.sh', copyIndex(1), concat(variables('ipOctet01'), add(variables('ipOctet2'), div(copyIndex(variables('ipOctet3')), 255)), '.', mod(copyIndex(variables('ipOctet3')), 255)), variables('mysqlConfigFilePath'), parameters('mysqlReplicationPassword'), parameters('mysqlRootPassword'), parameters('mysqlProbePassword'), parameters('subnetStartAddress'))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/loadBalancers", + "name": "GEN-UNIQUE-10-lb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/mysqlIP01" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "GEN-UNIQUE-10-sshIPCfg", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/mysqlIP01" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUE-10-ilbBackendPool" + } + ], + "inboundNatRules": [ + { + "name": "GEN-UNIQUE-10NatRule0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 64001, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "GEN-UNIQUE-10NatRule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 64002, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "GEN-UNIQUE-10MySQLNatRule0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 3306, + "backendPort": 3306, + "enableFloatingIP": false + } + }, + { + "name": "GEN-UNIQUE-10MySQLNatRule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 3307, + "backendPort": 3306, + "enableFloatingIP": false + } + }, + { + "name": "GEN-UNIQUE-10ProbeNatRule0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 9200, + "backendPort": 9200, + "enableFloatingIP": false + } + }, + { + "name": "GEN-UNIQUE-10ProbeNatRule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-10-lb/GEN-UNIQUE-10-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 9201, + "backendPort": 9200, + "enableFloatingIP": false + } + } + ] + } + } + ], + "outputs": { + "publicIpResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPName'))]" + }, + "fqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPName'))).dnsSettings.fqdn]" + }, + "ipaddress": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPName'))).ipAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT319 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT319 new file mode 100644 index 0000000..0c49508 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT319 @@ -0,0 +1,289 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/mysql/mysql-standalone-server-ubuntu/azuredeploy.json", + "/application-workloads/mysql/mysql-standalone-server-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892267, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/mysql/mysql-standalone-server-ubuntu/azuredeploy.json", + "/application-workloads/mysql/mysql-standalone-server-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT319", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT319", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the openvpn user." + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "DNS Name for the publicly accessible node. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "allowedValues": [ + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3" + ], + "metadata": { + "description": "The size of the virtual machines used when provisioning" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "15.10" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.5-LTS, 15.10." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "Default URI of the template folder. Override with your own URI when using a different path." + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyubuntuVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyubuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "MyubuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyubuntuVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyubuntuVM/newuserscript", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyubuntuVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('scripts/install_mysql_server_5.6.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash install_mysql_server_5.6.sh GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT32 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT32 new file mode 100644 index 0000000..f6b9199 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT32 @@ -0,0 +1,697 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/barracuda/barracuda-waf-iis/azuredeploy.json", + "/application-workloads/barracuda/barracuda-waf-iis/azuredeploy.parameters.json" + ], + "timestamp": 1642962883588, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/barracuda/barracuda-waf-iis/azuredeploy.json", + "/application-workloads/barracuda/barracuda-waf-iis/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT32", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT32", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for Barracuda WAF Admin Interface and Backend Web Servers(Min Length: 12)" + }, + "value": "GEN-PASSWORD" + }, + "webVmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of backend Web servers to be deployed" + } + }, + "remoteAllowedCIDR": { + "type": "string", + "minLength": 7, + "defaultValue": "0.0.0.0/0", + "metadata": { + "description": "Enter Public IP CIDR to allow for accessing the deployment.Enter in 0.0.0.0/0 format. You can always modify these later in NSG Settings" + }, + "value": "0.0.0.0/0" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated.Leave blank if unsure" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "bwafVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Default VM Size" + } + }, + "webVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "storageAccountType": "Standard_GRS", + "bwafStorageAccountName": "[concat('bwafstorage',uniqueString(resourceGroup().id))]", + "webStorageAccountName": "[concat('webstorage',uniqueString(resourceGroup().id))]", + "diagStorageAccountName": "[concat('diagstorage',uniqueString(resourceGroup().id))]", + "virtualNetworkName": "bwaf-vnet", + "webNSGName": "web-NSG", + "bwafNSGName": "bwaf-NSG", + "bwafSubnetName": "bwaf-subnet", + "webSubnetName": "web-subnet", + "lbIPAddressName": "lb-pip", + "lbDnsLabel": "[concat('lbpip',uniqueString(resourceGroup().id))]", + "loadBalancerName": "web-rdp-lb", + "bwafAvailSetName": "bwaf-as", + "bwafVmName": "bwaf-vm", + "bwafVmIPAddressName": "bwaf-pip", + "bwafVmDnsLabel": "[concat('bwafpip',uniqueString(resourceGroup().id))]", + "bwafVmNicName": "bwaf-vm-nic", + "webAvailSetName": "web-as", + "webVmName": "web-vm", + "webVmNicName": "web-vm-nic", + "webVmSku": "2012-R2-Datacenter", + "webVmPublisher": "MicrosoftWindowsServer", + "webVmOffer": "WindowsServer", + "webVmExtensionFunction": "webServerConfig.ps1\\WebServerConfig", + "barracudaNetworksTags": { + "type": "object", + "provider": "3285C15D-A16F-479C-8886-67042BCB03A9" + }, + "quickstartTags": { + "type": "object", + "name": "barracuda-waf-iis" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('bwafStorageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "comments": "Storage account used to store the BWAF VM disks", + "tags": { + "displayName": "BWAF VM Storage Account", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "sku": { + "name": "Standard_GRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('webStorageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "comments": "Storage account used to store the Web VM disks", + "tags": { + "displayName": "Web VM Storage Account", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "sku": { + "name": "Standard_GRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('diagStorageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "comments": "Storage account used to store VM diagnostics data", + "tags": { + "displayName": "Diagnostics Storage Account", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "bwaf-NSG", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": " NSG for BWAF subnet", + "tags": { + "displayName": "BWAF NSG", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "properties": { + "securityRules": [ + { + "name": "HTTP-allow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "0.0.0.0/0", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "HTTPS-allow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "0.0.0.0/0", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "AdminPortal-allow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8000", + "sourceAddressPrefix": "0.0.0.0/0", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "web-NSG", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": " NSG for Web subnet", + "tags": { + "displayName": "Web NSG", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "properties": { + "securityRules": [ + { + "name": "RDP-allow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "0.0.0.0/0", + "destinationAddressPrefix": "10.0.1.0/24", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "bwaf-pip", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": " Public IP used by the BWAF VM", + "tags": { + "displayName": "BWAF Public IP", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "[variables('bwafVmDnsLabel')]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "lb-pip", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "Public IP used by the Load Balancer for RDP into Web Servers", + "tags": { + "displayName": "LB Public IP", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "[variables('lbDnsLabel')]" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "bwaf-vnet", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Bwaf Virtual Network", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//web-NSG", + "Microsoft.Network/networkSecurityGroups//bwaf-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "bwaf-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/bwaf-NSG" + } + } + }, + { + "name": "web-subnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/web-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "web-as", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "comments": "This is the Availability Set for all Web VMs", + "tags": { + "displayName": "Web Avail Set", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "bwaf-as", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "comments": "This is the Availability Set for BWAF VM", + "tags": { + "displayName": "BWAF Avail Set", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "web-rdp-lb", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "comments": "This Load Balancer is used to allow RDP access to Web VMs", + "tags": { + "displayName": "Web RDP Load Balancer", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//lb-pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lb-pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBackEnd" + } + ] + } + }, + { + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "[concat(variables('loadBalancerName'), '/', 'RDPVM', copyIndex(1))]", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "This resource adds all the NAT rules needed to allow RDP access to Web Servers VMs", + "tags": { + "displayName": "LB RDP NAT rules", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers//web-rdp-lb" + ], + "copy": { + "name": "lbNatLoop", + "count": "webvmCount" + }, + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/web-rdp-lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": "[copyIndex(5001)]", + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "[concat(variables('webVmNicName'), copyindex(1))]", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "NICs for Web Servers", + "tags": { + "displayName": "Web VM NICs", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/loadBalancers/inboundNatRules',variables('loadBalancerName'), concat('RDPVM', copyIndex(1)))]" + ], + "copy": { + "name": "WebnicLoop", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/bwaf-vnet/web-subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/web-rdp-lb/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatRules',variables('loadBalancerName'),concat('RDPVM',copyIndex(1)))]" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "bwaf-vm-nic", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "NIC for BWAF VM", + "tags": { + "displayName": "BWAF VM NIC", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//bwaf-vnet", + "Microsoft.Network/publicIPAddresses/bwaf-pip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/bwaf-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/bwaf-vnet/bwaf-subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[concat(variables('webVmName'), copyindex(1))]", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "comments": " Web Server VMs", + "tags": { + "displayName": "Web VMs", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('webStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('webVmNicName'), copyindex(1)))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('webAvailSetName'))]" + ], + "copy": { + "name": "webSrvMachineLoop", + "count": 2 + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/web-as" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "[concat('webserver',copyindex(1))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[concat(variables('webVmName'), copyindex(1),'_OSDisk')]", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('webVmNicName'), copyindex(1)))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('diagStorageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('webVmName'), copyindex(1),'/',concat(variables('webVmName'), copyindex(1),'-web-dsc'))]", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "comments": "This VM Extension loops to setup IIS in each Web VMs using DSC", + "tags": { + "displayName": "Web VM Extensions", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines/', concat(variables('webVmName'), copyindex(1)))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'),concat('scripts/webserverconfig.zip',parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "webServerConfig.ps1\\WebServerConfig", + "wmfVersion": "4.0", + "Properties": {} + } + } + } + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "bwaf-vm", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "comments": "This is the Barracuda WAF VM", + "tags": { + "displayName": "BWAF VM", + "quickstartName": "(quickstartTags).name", + "provider": "(barracudaNetworksTags).provider" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('bwafStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('bwafVmNicName'))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('bwafAvailSetName'))]" + ], + "plan": { + "name": "hourly", + "publisher": "barracudanetworks", + "product": "waf" + }, + "properties": { + "osProfile": { + "computerName": "bwafserver", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "barracudanetworks", + "offer": "waf", + "sku": "hourly", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "name": "bwaf-vm_OSDisk" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/bwaf-vm-nic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/bwaf-as" + } + } + } + ], + "outputs": { + "loadBalancerIP": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('lbIPAddressName'))).ipAddress]", + "type": "string" + }, + "bwafIP": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('bwafVmIPAddressName'))).ipAddress]", + "type": "string" + }, + "loadBalancerFqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('lbIPAddressName'))).dnsSettings.fqdn]", + "type": "string" + }, + "bwafFqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('bwafVmIPAddressName'))).dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT320 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT320 new file mode 100644 index 0000000..4c7c23c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT320 @@ -0,0 +1,309 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/nagios/nagios-on-ubuntu/azuredeploy.json", + "/application-workloads/nagios/nagios-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892304, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/nagios/nagios-on-ubuntu/azuredeploy.json", + "/application-workloads/nagios/nagios-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT320", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT320", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password used when provisioning virtual machines" + }, + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "description": "The arbitrary name of the virtual network provisioned for the cluster" + }, + "value": "nagiosClustVnet" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The network address space for the virtual network" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "Subnet1" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Address space for the virtual network subnet" + }, + "value": "10.0.0.0/24" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "Domain name of the publicly accessible Apache web server hosting Nagios" + }, + "value": "GEN-UNIQUE-8" + }, + "numberOfVMInstances": { + "type": "Int", + "defaultValue": 1, + "metadata": { + "description": "Number of VIrtual Machine instances." + }, + "value": 1 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Virtual Machine." + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/nagios-on-ubuntu/." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSKU": "18.04-LTS", + "computerNamePrefix": "NagiosCoreSrv", + "numberOfInstances": 1, + "vmSize": "Standard_D2_v3", + "securityGroupName": "nagiosNSG" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "nagiosClustVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "publicIPLoop", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nagiosNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//nagiosClustVnet", + "Microsoft.Network/publicIPAddresses//publicIPcopyindex()", + "Microsoft.Network/networkSecurityGroups//nagiosNSG" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nagiosNSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPcopyindex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/nagiosClustVnet/Subnet1" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "nagiosSrvcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//niccopyindex()" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "NagiosCoreSrvcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "nagiosSrvcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "nagiosSrvcopyindex()/installnagios", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineExtensionsLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//nagiosSrvcopyindex()", + "Microsoft.Network/networkInterfaces//niccopyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nagios-core-install.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash nagios-core-install.sh -u GEN-UNIQUE -p GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT321 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT321 new file mode 100644 index 0000000..959e166 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT321 @@ -0,0 +1,389 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/neo4j/docker-neo4j/azuredeploy.json", + "/application-workloads/neo4j/docker-neo4j/azuredeploy.parameters.json" + ], + "timestamp": 1642962892314, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/neo4j/docker-neo4j/azuredeploy.json", + "/application-workloads/neo4j/docker-neo4j/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT321", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT321", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "vmName": { + "type": "string", + "defaultValue": "neodockervm", + "metadata": { + "description": "Name of the sample VM to create" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the Virtual Machine." + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04-LTS", + "nsgName": "GEN-UNIQUENeoNSG", + "nicName": "GEN-UNIQUENeoNIC", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUENeoPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "vmSize": "Standard_D2_v3", + "virtualNetworkName": "GEN-UNIQUENeoVNET", + "nsgID": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUENeoNSG", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUENeoVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUENeoPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUENeoVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUENeoNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUENeoNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUENeoNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUENeoPublicIP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUENeoVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUENeoPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUENeoVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUENeoNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "neo4j", + "properties": { + "description": "Allow HTTP connections", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7474", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "neo4j-ssl", + "properties": { + "description": "Allow HTTPS connections", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7473", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "neo4j-remote-shell", + "properties": { + "description": "Remote shell connections", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1337", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//GEN-UNIQUENeoNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE_DataDisk1", + "diskSizeGB": "10", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUENeoNIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/setupDataDisk", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup_data_disk.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash setup_data_disk.sh" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/neo4jDocker", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/GEN-UNIQUE/setupDataDisk" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "compose": { + "neo4j": { + "image": "tpires/neo4j", + "ports": [ + "7474:7474", + "7473:7473" + ], + "volumes": [ + "/datadisk:/var/lib/neo4j/data" + ] + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT322 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT322 new file mode 100644 index 0000000..569b990 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT322 @@ -0,0 +1,370 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/neo4j/neo4j-ubuntu-vm/azuredeploy.json", + "/application-workloads/neo4j/neo4j-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962892326, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/neo4j/neo4j-ubuntu-vm/azuredeploy.json", + "/application-workloads/neo4j/neo4j-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT322", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT322", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Virtual machine name." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Virtual machine size. Make sure VM size supports disk type." + } + }, + "vmUbuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS" + ], + "metadata": { + "description": "Ubuntu OS image version." + } + }, + "vmAdminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "User name for the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "SSH rsa public key file as a string." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "neo4jEdition": { + "type": "string", + "defaultValue": "neo4j", + "allowedValues": [ + "neo4j", + "neo4j-enterprise", + "neo4j=3.2.1", + "neo4j-enterprise=3.2.1", + "neo4j=3.2.5", + "neo4j-enterprise=3.2.5", + "neo4j=3.3.0", + "neo4j-enterprise=3.3.0" + ], + "metadata": { + "description": "Neo4J edition and version to install." + } + }, + "publicIPAddressDns": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Unique DNS name for public IP Address. As in: publicIPAddressDns.location.cloudapp.azure.com" + }, + "value": "GEN-UNIQUE-13" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "scriptsFolder": "scripts/", + "virtualNetworkName": "GEN-UNIQUE-vnet", + "networkSecurityGroupName": "GEN-UNIQUE-nsg", + "networkInterfaceName": "GEN-UNIQUE-nic", + "publicIPAddressName": "GEN-UNIQUE-ip", + "virtualNetworkPrefix": "10.0.0.0/16", + "virtualNetworkSubnetName": "default", + "virtualNetworkSubnetPrefix": "10.0.0.0/24", + "networkInterfaceSubnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/default" + }, + "resources": [ + { + "name": "GEN-UNIQUE-vnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-nsg" + ], + "tags": { + "displayName": "GEN-UNIQUE-vnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-nsg", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "description": "Allow secure shell connections", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "neo4j-allow-bolt", + "properties": { + "description": "Allow Bolt protocol connections", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7687", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1010, + "direction": "Inbound" + } + }, + { + "name": "neo4j-allow-http", + "properties": { + "description": "Allow HTTP connections", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7474", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1020, + "direction": "Inbound" + } + }, + { + "name": "neo4j-allow-https", + "properties": { + "description": "Allow HTTPS connections", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7473", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1030, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet", + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-ip" + ], + "tags": { + "displayName": "GEN-UNIQUE-nic" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/default" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-ip" + } + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-ip", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "tags": { + "displayName": "GEN-UNIQUE-ip" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-nic" + ], + "tags": { + "displayName": "GEN-UNIQUE" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "StorageAccountType": "Premium_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-nic" + } + ] + } + }, + "resources": [ + { + "name": "installneo4j", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE" + ], + "tags": { + "displayName": "installneo4j" + }, + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptsFolder'), 'install-neo4j.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install-neo4j.sh neo4j" + } + } + } + ] + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT323 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT323 new file mode 100644 index 0000000..cd95d26 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT323 @@ -0,0 +1,205 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/jump-vm.json" + ], + "timestamp": 1642962892339, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/jump-vm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT323", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT323", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUserName": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "vnetID": { + "type": "string" + }, + "webSubnetName": { + "type": "string" + }, + "jumpVmName": { + "type": "string" + }, + "jumpvmSize": { + "type": "string" + }, + "jumpvmNicName": { + "type": "string" + }, + "jumpvmPublicIPAddressName": { + "type": "string" + }, + "jumpvmDnsName": { + "type": "string" + }, + "NetAppTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "publicIPAddressType": "Static" + }, + "resources": [ + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "jumpvmPublicIPAddressName", + "location": "[resourceGroup().location]", + "comments": "jump-VM Public IP Address", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": { + "publicIPAllocationMethod": "PublicIPAddressType", + "dnsSettings": { + "domainNameLabel": "jumpvmDnsName" + }, + "idleTimeoutInMinutes": 4 + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpvmNicName", + "location": "[resourceGroup().location]", + "comments": "Jump Server nic Card", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/jumpvmpublicIPAddressName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/jumpvmpublicIPAddressName" + }, + "subnet": { + "id": "vnetID/subnets/webSubnetName" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpvmName", + "location": "[resourceGroup().location]", + "comments": "Jump Server VM ", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/jumpvmNicName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "jumpvmSize" + }, + "osProfile": { + "computerName": "jumpvmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "jumpvmName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpvmNicName" + } + ] + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "jumpVmName/disableservermanager", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/jumpVmName" + ], + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "powershell -command \"Get-ScheduledTask -TaskName ServerManager | Disable-ScheduledTask -Verbose\"" + } + } + } + ] + } + ], + "outputs": { + "jumpVmDNSLabel": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('jumpvmPublicIPAddressName'))).dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT324 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT324 new file mode 100644 index 0000000..449ff3c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT324 @@ -0,0 +1,190 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/netapp-oncommand-cloudmanager.json" + ], + "timestamp": 1642962892348, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/netapp-oncommand-cloudmanager.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT324", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT324", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUserName": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "vnetID": { + "type": "string" + }, + "webSubnetName": { + "type": "string" + }, + "OnCommandCloudManagerVmName": { + "type": "string" + }, + "OnCommandCloudManagervmSize": { + "type": "string" + }, + "OnCommandCloudManagerVmNicName": { + "type": "string" + }, + "OnCommandCloudManagerpublicIPAddressName": { + "type": "string" + }, + "OnCommandCloudManagerDnsName": { + "type": "string" + }, + "NetAppTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "publicIPAddressType": "Static" + }, + "resources": [ + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "OnCommandCloudManagerpublicIPAddressName", + "location": "[resourceGroup().location]", + "comments": "OnCommandCloudManager Public IP Address", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "OnCommandCloudManagerDnsName" + }, + "idleTimeoutInMinutes": 4 + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "OnCommandCloudManagerVmNicName", + "location": "[resourceGroup().location]", + "comments": "OnCommand Manage nic ", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/OnCommandCloudManagerpublicIPAddressName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/OnCommandCloudManagerpublicIPAddressName" + }, + "subnet": { + "id": "vnetID/subnets/webSubnetName" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "OnCommandCloudManagerVmName", + "location": "[resourceGroup().location]", + "comments": "OnCommand Manager VM", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/OnCommandCloudManagerVmNicName" + ], + "plan": { + "name": "occm-byol", + "publisher": "netapp", + "product": "netapp-oncommand-cloud-manager" + }, + "properties": { + "hardwareProfile": { + "vmSize": "OnCommandCloudManagervmSize" + }, + "osProfile": { + "computerName": "OnCommandCloudManagerVmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "netapp", + "offer": "netapp-oncommand-cloud-manager", + "sku": "occm-byol", + "version": "latest" + }, + "osDisk": { + "name": "OnCommandCloudManagerVmName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/OnCommandCloudManagerVmNicName" + } + ] + } + } + } + ], + "outputs": { + "NetAppOnCommandCloudManagerURL": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('OnCommandCloudManagerpublicIPAddressName'))).dnsSettings.fqdn]", + "type": "string" + }, + "NetAppOnCommandCloudManagerPublicIP": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('OnCommandCloudManagerpublicIPAddressName'))).ipAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT325 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT325 new file mode 100644 index 0000000..be19df6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT325 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/netapp-ontap-cloud.json" + ], + "timestamp": 1642962892355, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/netapp-ontap-cloud.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT325", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT325", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminEmailAddress": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "OTCPassword": { + "type": "securestring" + }, + "dataNsgName": { + "type": "string" + }, + "vNetId": { + "type": "string" + }, + "cidr": { + "type": "string" + }, + "dataSubnetName": { + "type": "string" + }, + "OnCommandCloudManagerVmName": { + "type": "string" + }, + "azureADApplicationID": { + "type": "string" + }, + "azureADApplicationSecret": { + "type": "securestring" + }, + "netappOntapCloudLicense": { + "type": "object" + }, + "netappOntapVersion": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + }, + "NetAppTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subscriptionId": "[subscription().subscriptionId]", + "azureADTenantID": "[subscription().tenantId]", + "subnetID": "vnetID/subnets/dataSubnetName", + "encodedadminPassword": "[base64(parameters('adminPassword'))]", + "encodedOTCPassword": "[base64(parameters('OTCPassword'))]", + "nsgID": "Microsoft.Network/networkSecurityGroups/dataNSGName", + "netappOntapCloudLicenseType": "netappOntapCloudLicense", + "netappOntapCloudInstanceType": "netappOntapCloudLicense", + "netappOntapCloudStorageType": "netappOntapCloudLicense", + "otcName": "[concat('netappotc',uniqueString(resourceGroup().id))]", + "deploymentRegion": "[resourceGroup().location]", + "quickstartNameTagValue": "quickstartTags", + "quickstartProviderTagValue": "NetAppTags", + "deployOTCScriptName": "deploy-netapp-otc.sh", + "customScriptCommand": "su -c'sh ", + "scriptClose": "'" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "OnCommandCloudManagerVmName/deployOntapCloud", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "_artifactsLocation/scripts/deploy-netapp-otc.sh_artifactsLocationSasToken" + ], + "commandToExecute": "[concat(variables('customScriptCommand'),' ',variables('deployOTCScriptName'),' ',variables('deploymentRegion'),' ',variables('otcName'),' ',parameters('adminEmailAddress'),' ',variables('encodedadminPassword'),' ',variables('encodedOTCPassword'),' ',variables('subscriptionId'),' ',variables('azureADTenantID'),' ',parameters('azureADApplicationID'),' ',parameters('azureADApplicationSecret'),' ',parameters('vnetID'),' ',parameters('cidr'),' ',variables('subnetID'),' ',variables('nsgID'),' ',variables('netappOntapCloudLicenseType'),' ',variables('netappOntapCloudInstanceType'),' ',variables('netappOntapCloudStorageType'),' ',variables('quickstartNameTagValue'),' ',variables('quickstartProviderTagValue'),' ',parameters('netappOntapVersion'),' ',variables('scriptClose'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT326 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT326 new file mode 100644 index 0000000..1448e60 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT326 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/shared-resources.json" + ], + "timestamp": 1642962892366, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT326", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT326", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webNsgName": { + "type": "string" + }, + "dataNsgName": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "dataSubnetName": { + "type": "string" + }, + "webSubnetName": { + "type": "string" + }, + "addressPrefix": { + "type": "string" + }, + "webSubnetPrefix": { + "type": "string" + }, + "dataSubnetPrefix": { + "type": "string" + }, + "remoteAllowedCIDR": { + "type": "string" + }, + "NetAppTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "webNSGName", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": " NSG for Web subnet", + "tags": { + "displayName": "Web NSG", + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": { + "securityRules": [ + { + "name": "httpRule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "remoteAllowedCIDR", + "destinationAddressPrefix": "webSubnetPrefix", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "rdpRule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "remoteAllowedCIDR", + "destinationAddressPrefix": "webSubnetPrefix", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "dataNSGName", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": " NSG for Data subnet, does not allow any traffic from Internet(Default Rule)", + "tags": { + "displayName": "Data NSG", + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": {} + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetworkName", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network", + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/webNSGName", + "Microsoft.Network/networkSecurityGroups/dataNsgName" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": [ + { + "name": "webSubnetName", + "properties": { + "addressPrefix": "webSubnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/webNSGName" + } + } + }, + { + "name": "dataSubnetName", + "properties": { + "addressPrefix": "dataSubnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dataNsgName" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT327 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT327 new file mode 100644 index 0000000..bbd4c21 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT327 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/sql-netappotc-connect.json" + ], + "timestamp": 1642962892374, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/sql-netappotc-connect.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT327", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT327", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminEmailAddress": { + "type": "securestring" + }, + "adminPassword": { + "type": "securestring" + }, + "OTCPassword": { + "type": "securestring" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + }, + "sqlVmName": { + "type": "string" + }, + "otcIp": { + "type": "string" + }, + "sqlDataVolumeSize": { + "type": "int" + }, + "NetAppTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "scriptFileName": "netapp_connect_ontap_win.ps1" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVmName/sqlNetAppOTCConnect", + "apiVersion": "2016-03-30", + "location": "[resourceGroup().location]", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "_artifactsLocation/scripts/netapp_connect_ontap_win.ps1_artifactsLocationSasToken" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File netapp_connect_ontap_win.ps1 adminEmailAddress adminPassword OTCPassword otcIp sqlDataVolumeSize" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT328 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT328 new file mode 100644 index 0000000..741ba64 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT328 @@ -0,0 +1,177 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/sql-vm.json" + ], + "timestamp": 1642962892384, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/nested/sql-vm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT328", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT328", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlVmName": { + "type": "string" + }, + "sqlVmNicName": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "vNetId": { + "type": "string" + }, + "dataSubnetName": { + "type": "string" + }, + "sqlVmSize": { + "type": "string" + }, + "NetAppTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "psToolkitScriptName": "InstallNetAppPS.ps1" + }, + "resources": [ + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "sqlVmNicName", + "location": "[resourceGroup().location]", + "comments": "SQL Server nic ", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "vnetID/subnets/dataSubnetName" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "sqlVmName", + "location": "[resourceGroup().location]", + "comments": "SQL Sever VM", + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sqlVmNicName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "sqlVmSize" + }, + "osProfile": { + "computerName": "sqlVmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2014SP2-WS2012R2", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "sqlVmName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sqlVmNicName" + } + ] + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVmName/sqlNetAppOTCConnect", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/sqlVmName" + ], + "tags": { + "quickstartName": "quickstartTags", + "provider": "NetAppTags" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "_artifactsLocation/scripts/InstallNetAppPS.ps1_artifactsLocationSasToken" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File InstallNetAppPS.ps1" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT329 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT329 new file mode 100644 index 0000000..252cc2c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT329 @@ -0,0 +1,544 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/azuredeploy.json", + "/application-workloads/netapp/netapp-ontap-sql/azuredeploy.parameters.json" + ], + "timestamp": 1642962892478, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/netapp/netapp-ontap-sql/azuredeploy.json", + "/application-workloads/netapp/netapp-ontap-sql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT329", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT329", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "netappadmin", + "metadata": { + "description": "User name used for all VM's OS login" + }, + "value": "GEN-UNIQUE" + }, + "adminEmailAddress": { + "type": "string", + "metadata": { + "description": "Enter Admin Email Address, used for NetApp OnCommand Manager GUI Login" + }, + "value": "test@testemail.com" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password used for VM Login(Both Jump-VM & SQL-VM) and OnCommand Manager Portal Login.SVM Password is generated automatically and exported in output, See Deployment guide for more information.Enter a password that is between 12 and 50 characters in length. The password must contain at least one English letter and one number. The password must not contain non-English letters or admin." + }, + "value": "GEN-PASSWORD" + }, + "netappOntapCloudLicenseType": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "NetApp ONTAP cloud license." + } + }, + "azureADApplicationID": { + "type": "string", + "metadata": { + "description": "Azure AD App ID, Check deployment guide for permissions required" + }, + "value": "changemechangeme" + }, + "azureADApplicationSecret": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "AD App Secret." + }, + "value": "changemechangeme" + }, + "sqlDataVolumeSize": { + "type": "int", + "defaultValue": 500, + "minValue": 100, + "maxValue": 2000, + "metadata": { + "description": "SQL Data volume size in GB, Min 100, Max 2000" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/netapp-ontap-sql", + "metadata": { + "description": "Leave default if insure, 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": "securestring", + "metadata": { + "description": "Leave blank if insure, The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated.Leave blank if unsure" + }, + "defaultValue": "" + }, + "remoteAllowedCIDR": { + "type": "string", + "minLength": 7, + "defaultValue": "0.0.0.0/0", + "metadata": { + "description": "Enter Public IP CIDR to allow for accessing the deployment.Enter in 0.0.0.0/0 format, you can always modify these later in NSG Settings" + }, + "value": "0.0.0.0/0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "webNsgName": "web-nsg", + "dataNsgName": "data-nsg", + "virtualNetworkName": "netapp-vnet", + "vNetId": "Microsoft.Network/virtualNetworks/netapp-vnet", + "dataSubnetName": "data-subnet", + "webSubnetName": "web-subnet", + "addressPrefix": "10.0.0.0/16", + "webSubnetPrefix": "10.0.1.0/24", + "dataSubnetPrefix": "10.0.2.0/24", + "OnCommandCloudManagerpublicIPAddressName": "oncommand-cloudmanager-pip", + "OnCommandCloudManagerDnsName": "[concat('oncommand',uniqueString(resourceGroup().id))]", + "OnCommandCloudManagerVmNicName": "oncommand-cloudmanager-nic", + "OnCommandCloudManagerVmName": "oncommand-cloudmanager", + "OnCommandCloudManagervmSize": "Standard_D2_v3", + "jumpVmName": "jump-vm", + "sqlVMName": "sql-vm", + "jumpVMNicName": "vm-jump-nic", + "sqlVMNicName": "vm-sql-nic", + "sqlVmSize": "Standard_D2_v3", + "jumpVmSize": "Standard_D2_v3", + "jumpVMpublicIPAddressName": "jump-vm-pip", + "jumpVMDnsName": "[concat('jumpvm',uniqueString(resourceGroup().id))]", + "sharedResourcesTemplateFileName": "shared-resources.json", + "JumpVMTemplateFileName": "jump-vm.json", + "netAppOnCommandCloudManagerVMTemplateFileName": "netapp-oncommand-cloudmanager.json", + "netAppOntapCloudTemplateFileName": "netapp-ontap-cloud.json", + "sqlCustomScriptTemplateFileName": "sql-netappotc-connect.json", + "sqlVMTemplateFileName": "sql-vm.json", + "OTCPassword": "[concat('otc',uniqueString(resourceGroup().id))]", + "netappOntapCloudLicenseStandard": { + "type": "object", + "licenseType": "azure-cot-standard-paygo", + "instanceType": "Standard_D8s_v3", + "storageType": "Standard_LRS" + }, + "netappOntapCloudLicensePremium": { + "type": "object", + "licenseType": "azure-cot-premium-paygo", + "instanceType": "Standard_D16s_v3", + "storageType": "Premium_LRS" + }, + "netappOntapVersion": "ONTAP-9.2P1.T1.azure", + "NetAppTags": { + "type": "object", + "provider": "877cfe7c-ae65-427b-a1a4-1d8b0b6fa9d4" + }, + "quickstartTags": { + "type": "object", + "name": "netapp-ontap-cloud-sql-azure" + } + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-09-01", + "comments": "Azure Resources that are shared within the infrastructure environment", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "_artifactslocation/nested/shared-resources.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "webNsgName": { + "value": "web-nsg" + }, + "dataNsgName": { + "value": "data-nsg" + }, + "virtualNetworkName": { + "value": "netapp-vnet" + }, + "dataSubnetName": { + "value": "data-subnet" + }, + "webSubnetName": { + "value": "web-subnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "webSubnetPrefix": { + "value": "10.0.1.0/24" + }, + "dataSubnetPrefix": { + "value": "10.0.2.0/24" + }, + "remoteAllowedCIDR": { + "value": "0.0.0.0/0" + }, + "NetAppTags": { + "value": { + "type": "object", + "provider": "877cfe7c-ae65-427b-a1a4-1d8b0b6fa9d4" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "netapp-ontap-cloud-sql-azure" + } + } + } + } + }, + { + "name": "jump-vm", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-09-01", + "comments": "Jump Server deployment", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "_artifactslocation/nested/jump-vm.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "vNetId": { + "value": "Microsoft.Network/virtualNetworks/netapp-vnet" + }, + "webSubnetName": { + "value": "web-subnet" + }, + "jumpVmName": { + "value": "JumpVmName" + }, + "jumpVmSize": { + "value": "Standard_D2_v3" + }, + "jumpvmNicName": { + "value": "jumpvmNicName" + }, + "jumpvmPublicIPAddressName": { + "value": "jumpvmPublicIPAddressName" + }, + "jumpvmDnsName": { + "value": "jumpvmDnsName" + }, + "NetAppTags": { + "value": { + "type": "object", + "provider": "877cfe7c-ae65-427b-a1a4-1d8b0b6fa9d4" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "netapp-ontap-cloud-sql-azure" + } + } + } + } + }, + { + "name": "sql-vm", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-09-01", + "comments": "SQL Server Deployment", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "_artifactslocation/nested/sql-vm.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "vNetId": { + "value": "Microsoft.Network/virtualNetworks/netapp-vnet" + }, + "dataSubnetName": { + "value": "data-subnet" + }, + "sqlVmName": { + "value": "sqlVmName" + }, + "sqlVmNicName": { + "value": "sqlVmNicName" + }, + "sqlVmSize": { + "value": "Standard_D2_v3" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/netapp-ontap-sql" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "NetAppTags": { + "value": { + "type": "object", + "provider": "877cfe7c-ae65-427b-a1a4-1d8b0b6fa9d4" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "netapp-ontap-cloud-sql-azure" + } + } + } + } + }, + { + "name": "netapp-oncommand-cloudmanager", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-09-01", + "comments": "NetApp OnCommand Manager Deployment", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "_artifactslocation/nested/netapp-oncommand-cloudmanager.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "vNetId": { + "value": "Microsoft.Network/virtualNetworks/netapp-vnet" + }, + "webSubnetName": { + "value": "web-subnet" + }, + "OnCommandCloudManagerVmName": { + "value": "oncommand-cloudmanager" + }, + "OnCommandCloudManagervmSize": { + "value": "Standard_D2_v3" + }, + "OnCommandCloudManagerVmNicName": { + "value": "oncommand-cloudmanager-nic" + }, + "OnCommandCloudManagerpublicIPAddressName": { + "value": "oncommand-cloudmanager-pip" + }, + "OnCommandCloudManagerDnsName": { + "value": "[variables('OnCommandCloudManagerDnsName')]" + }, + "NetAppTags": { + "value": { + "type": "object", + "provider": "877cfe7c-ae65-427b-a1a4-1d8b0b6fa9d4" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "netapp-ontap-cloud-sql-azure" + } + } + } + } + }, + { + "name": "netapp-ontap-cloud", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-09-01", + "comments": "NetApp ONTAP Cloud Env Deployment", + "dependsOn": [ + "Microsoft.Resources/deployments/netapp-oncommand-cloudmanager" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "_artifactslocation/nested/netapp-ontap-cloud.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminEmailAddress": { + "value": "test@testemail.com" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "OTCPassword": { + "value": "[variables('OTCPassword')]" + }, + "dataNsgName": { + "value": "data-nsg" + }, + "vNetId": { + "value": "Microsoft.Network/virtualNetworks/netapp-vnet" + }, + "cidr": { + "value": "AddressPrefix" + }, + "dataSubnetName": { + "value": "data-subnet" + }, + "OnCommandCloudManagerVmName": { + "value": "oncommand-cloudmanager" + }, + "azureADApplicationID": { + "value": "changemechangeme" + }, + "azureADApplicationSecret": { + "value": "changemechangeme" + }, + "netappOntapCloudLicense": { + "value": "concat(netappOntapCloudLicense,parameters(netappOntapCloudLicenseType))" + }, + "netappOntapVersion": { + "value": "ONTAP-9.2P1.T1.azure" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/netapp-ontap-sql" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "NetAppTags": { + "value": { + "type": "object", + "provider": "877cfe7c-ae65-427b-a1a4-1d8b0b6fa9d4" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "netapp-ontap-cloud-sql-azure" + } + } + } + } + }, + { + "name": "sql-netappotc-connect", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-09-01", + "comments": "Configure SQL Volume Extension", + "dependsOn": [ + "Microsoft.Resources/deployments/netapp-ontap-cloud" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "_artifactslocation/nested/sql-netappotc-connect.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminEmailAddress": { + "value": "test@testemail.com" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "OTCPassword": { + "value": "[variables('OTCPassword')]" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/netapp-ontap-sql" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "sqlVmName": { + "value": "sqlVmName" + }, + "sqlDataVolumeSize": { + "value": 500 + }, + "otcIp": { + "value": "[reference('netapp-oncommand-cloudmanager').outputs.NetAppOnCommandCloudManagerPublicIP.value]" + }, + "NetAppTags": { + "value": { + "type": "object", + "provider": "877cfe7c-ae65-427b-a1a4-1d8b0b6fa9d4" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "netapp-ontap-cloud-sql-azure" + } + } + } + } + } + ], + "outputs": { + "NetApp ONTAP Cloud Manager URL:": { + "type": "string", + "value": "[reference('netapp-oncommand-cloudmanager').outputs.NetAppOnCommandCloudManagerURL.value]" + }, + "Jump VM FQDN": { + "type": "string", + "value": "[reference('jump-vm').outputs.jumpVmDNSLabel.value]" + }, + "NetApp OTC SVM Password": { + "type": "string", + "value": "[variables('OTCPassword')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT33 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT33 new file mode 100644 index 0000000..ea00366 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT33 @@ -0,0 +1,309 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/bitcore/bitcore-centos-vm/azuredeploy.json", + "/application-workloads/bitcore/bitcore-centos-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962883597, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bitcore/bitcore-centos-vm/azuredeploy.json", + "/application-workloads/bitcore/bitcore-centos-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT33", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT33", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDnsPrefix": { + "type": "string", + "metadata": { + "description": "This is the unique DNS name of the for the public IP for your VM" + }, + "value": "GEN-UNIQUE-11" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "This is the username you wish to assign to your VMs admin account" + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VM" + } + }, + "sizeOfEachDataDiskInGB": { + "type": "string", + "metadata": { + "description": "Size of each data disk in GB" + }, + "value": "150" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "nicName": "VMNic", + "addressPrefix": "10.0.0.0/16", + "imagePublisher": "OpenLogic", + "imageVersion": "latest", + "imageSKU": "8.0", + "imageOffer": "CentOS", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "publicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-11", + "virtualNetworkName": "WPVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1", + "storageAccountName": "[replace(replace(tolower(concat('bitcore', uniquestring(resourceGroup().id))), '-',''),'.','')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[replace(replace(tolower(concat('bitcore', uniquestring(resourceGroup().id))), '-',''),'.','')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-11" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "WPVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIP", + "Microsoft.Network/virtualNetworks//WPVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[replace(replace(tolower(concat('bitcore', uniquestring(resourceGroup().id))), '-',''),'.','')]", + "Microsoft.Network/networkInterfaces//VMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-11", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "8.0", + "version": "latest" + }, + "dataDisks": [ + { + "diskSizeGB": "150", + "lun": 0, + "name": "GEN-UNIQUE-11_DataDisk1", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "GEN-UNIQUE-11_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-11/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-11" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_bitcore.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install_bitcore.sh GEN-UNIQUE-8" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT330 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT330 new file mode 100644 index 0000000..82bdd0b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT330 @@ -0,0 +1,541 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/nextflow/nextflow-genomics-cluster-ubuntu/azuredeploy.json", + "/application-workloads/nextflow/nextflow-genomics-cluster-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892527, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/nextflow/nextflow-genomics-cluster-ubuntu/azuredeploy.json", + "/application-workloads/nextflow/nextflow-genomics-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT330", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT330", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "dnsNameForJumpBox": { + "type": "string", + "defaultValue": "[concat('jumpbox-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Docker Virtual Machine (master node)." + }, + "value": "GEN-UNIQUE" + }, + "vmImageReference": { + "type": "object", + "defaultValue": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "metadata": { + "description": "The image to use for VMs created. This can be marketplace or custom image", + "link": "https://docs.microsoft.com/en-us/nodejs/api/azure-arm-compute/imagereference?view=azure-node-2.2.0" + } + }, + "vmNodeSku": { + "type": "string", + "defaultValue": "Standard_F8s_v2", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "vmMasterSku": { + "type": "string", + "defaultValue": "Standard_F16s_v2", + "metadata": { + "description": "Size of the master node." + } + }, + "vmMasterDiskType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "defaultValue": "Premium_LRS", + "metadata": { + "description": "Choose between a standard disk for and SSD disk for the master node's NFS fileshare" + } + }, + "vmMasterDiskSize": { + "type": "int", + "allowedValues": [ + 32, + 64, + 128, + 256, + 512, + 1000, + 2000, + 4000, + 10000 + ], + "defaultValue": 256, + "metadata": { + "description": "The SSD Size to be used for the NFS file share. For pricing details see https://azure.microsoft.com/en-us/pricing/details/managed-disks/" + } + }, + "vmAdditionalInstallScriptUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "An additional installs script (bash run as root) to be run after nodes/master are configured. Can be used to mount additional storage or do additional setup" + } + }, + "vmAdditionalInstallScriptArgument": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "An argument to be passed to the additional install script" + } + }, + "nextflowInstallUrl": { + "type": "string", + "defaultValue": "https://get.nextflow.io", + "metadata": { + "description": "The install URL for nextflow, this can be used to pin nextflow versions" + } + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of cluster VM instances (100 or less)." + }, + "defaultValue": 2, + "minValue": 1, + "maxValue": 100 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the virtual network to deploy the scale set into." + }, + "defaultValue": "nfvnet" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet to deploy the scale set into." + }, + "defaultValue": "nfsubnet" + }, + "shareName": { + "type": "string", + "metadata": { + "description": "Azure file share name." + }, + "defaultValue": "sharedstorage" + }, + "mountpointPath": { + "type": "string", + "defaultValue": "/datadisks/disk1", + "metadata": { + "description": "Path on VM to mount file shares. '/datadisks/disk1/' is a Premium Managed disk with high iops, this will suit most uses." + } + }, + "nodeMaxCpus": { + "defaultValue": 2, + "type": "int", + "metadata": { + "description": "Sets the cluster.maxCpus setting on all cluster nodes" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "Determines whether to run the custom script extension on a subsequent deployment. Use the defaultValue." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "*Advanced* This is best left as default unless you are an advanced user. The base URI where artifacts required by this template are located." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "*Advanced* This should be left as default unless you are an advanced user. The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "_diskInitScriptUri": { + "type": "string", + "metadata": { + "description": "*Advanced* This should be left as default unless you are an advanced user. The folder in the artifacts location were shared scripts are stored." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + }, + "_artifactsNextflowFolder": { + "type": "string", + "metadata": { + "description": "*Advanced* This should be left as default unless you are an advanced user. The folder in the artifacts location were nextflow scripts are stored." + }, + "defaultValue": "scripts" + } + }, + "variables": { + "nextflowInitScript": "[uri(parameters('_artifactsLocation'), concat(parameters('_artifactsNextflowFolder'), '/init.sh', parameters('_artifactsLocationSasToken')))]", + "jumpboxNICName": "jumpboxNIC", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "vmssName": "[concat('cluster', uniqueString(parameters('dnsNameForJumpBox')))]", + "storageAccountType": "Standard_LRS", + "storageAccountName": "[concat('nfstorage', uniqueString(resourceGroup().id))]", + "storageSuffix": "[environment().suffixes.storage]", + "publicIPAddressName": "jumpboxPublicIP", + "publicIPAddressType": "Dynamic", + "jumpboxVMName": "jumpboxVM", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/nfvnet/nfsubnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "jumpboxPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "nfvnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "nfsubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpboxNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/jumpboxPublicIP", + "Microsoft.Network/virtualNetworks/nfvnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/jumpboxPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/nfvnet/nfsubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpboxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('jumpboxNICName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmMasterSKU" + }, + "osProfile": { + "computerName": "jumpboxVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "lun": 0, + "name": "jumpboxdatadisk", + "diskSizeGB": 256, + "caching": "None", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpboxNIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "jumpboxVM/nfinit", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/jumpboxVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[newGuid()]", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(parameters('_artifactsNextflowFolder'), '/init.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('bash init.sh {0} \"{1}\" {2} {3} {4} {5} {6} {7} {8} {9} {10}', variables('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value, parameters('shareName'), variables('storageSuffix'), parameters('mountpointPath'), 'false', parameters('adminUsername'), '0', parameters('nextflowInstallUrl'), parameters('vmAdditionalInstallScriptUrl'), parameters('vmAdditionalInstallScriptArgument'))]" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('vmssName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2019-12-01", + "sku": { + "name": "vmNodeSKU", + "capacity": 2 + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[variables('vmssName')]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/nfvnet/nfsubnet" + } + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "filesextension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[newGuid()]", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(parameters('_artifactsNextflowFolder'), '/init.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('bash init.sh {0} \"{1}\" {2} {3} {4} {5} {6} {7} {8} {9} {10}', variables('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value, parameters('shareName'), variables('storageSuffix'), parameters('mountpointPath'), 'true', parameters('adminUsername'), parameters('nodeMaxCpus'), parameters('nextflowInstallUrl'), parameters('vmAdditionalInstallScriptUrl'), parameters('vmAdditionalInstallScriptArgument'))]" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "JumpboxConnectionString": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + }, + "ExampleNextflowCommand": { + "type": "string", + "value": "[concat('nextflow run hello -process.executor ignite -cluster.join path:', parameters('mountpointPath'), '/cifs/cluster', ' -with-timeline runtimeline.html -with-trace -cluster.maxCpus 0')]" + }, + "ExampleNextflowCommandWithDocker": { + "type": "string", + "value": "[concat('nextflow run nextflow-io/rnatoy -with-docker -process.executor ignite -cluster.join path:', parameters('mountpointPath'), '/cifs/cluster', ' -with-timeline runtimeline.html -with-trace -cluster.maxCpus 0')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT331 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT331 new file mode 100644 index 0000000..4cbb077 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT331 @@ -0,0 +1,369 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/nylas/nylas-email-sync-engine/azuredeploy.json", + "/application-workloads/nylas/nylas-email-sync-engine/azuredeploy.parameters.json" + ], + "timestamp": 1642962892544, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/nylas/nylas-email-sync-engine/azuredeploy.json", + "/application-workloads/nylas/nylas-email-sync-engine/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT331", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT331", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-9" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4" + ], + "metadata": { + "description": "Size of the VM" + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'nylas')]", + "imagePublisher": "credativ", + "imageOffer": "debian", + "imageSKU": "8", + "nicName": "nylasNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "nsgName": "nylasNSG", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "nylasPublicIP", + "publicIPAddressType": "Static", + "vmName": "nylasSyncEngineVM", + "virtualNetworkName": "nylasVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/nylasVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "nylasPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-9" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "nylasVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "nylasNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//nylasPublicIP", + "Microsoft.Network/virtualNetworks//nylasVNET", + "Microsoft.Network/networkSecurityGroups//nylasNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/nylasPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/nylasVNET/Subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nylasNSG" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nylasNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "5000-5009", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "5000-5009", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1001, + "direction": "Inbound" + } + }, + { + "name": "8000", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1002, + "direction": "Inbound" + } + }, + { + "name": "5555", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "5555", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1003, + "direction": "Inbound" + } + }, + { + "name": "9200", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9200", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1004, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "nylasSyncEngineVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "nylasSyncEngineVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "credativ", + "offer": "debian", + "sku": "8", + "version": "latest" + }, + "osDisk": { + "name": "nylasSyncEngineVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nylasNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), '2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "nylasSyncEngineVM/nylasScript", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/nylasSyncEngineVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install.sh GEN-UNIQUE" + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[concat(parameters('dnsLabelPrefix'), '.', parameters('location'), '.cloudapp.azure.com')]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', parameters('dnsLabelPrefix'), '.', parameters('location'), '.cloudapp.azure.com')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT332 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT332 new file mode 100644 index 0000000..643aef2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT332 @@ -0,0 +1,360 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/obs/obs-studio-stream-vm-chocolatey/azuredeploy.json", + "/application-workloads/obs/obs-studio-stream-vm-chocolatey/azuredeploy.parameters.json" + ], + "timestamp": 1642962892567, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/obs/obs-studio-stream-vm-chocolatey/azuredeploy.json", + "/application-workloads/obs/obs-studio-stream-vm-chocolatey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT332", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT332", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of ressources" + }, + "value": "southcentralus" + }, + "vm_name": { + "type": "string", + "metadata": { + "description": "Local name for the VM can be whatever you want" + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Desired Size of the VM. Any valid option accepted but if you choose premium storage type you must choose a DS class VM size." + }, + "defaultValue": "Standard_NV6", + "allowedValues": [ + "Standard_NV6_Promo", + "Standard_NV12_Promo", + "Standard_NV24_Promo", + "Standard_NC6_Promo", + "Standard_NC12_Promo", + "Standard_NC24_Promo", + "Standard_NV6", + "Standard_NV12", + "Standard_NV24", + "Standard_NC6", + "Standard_NC12", + "Standard_NC24", + "Standard_NV6s_v2", + "Standard_NV12s_v2", + "Standard_NV24s_v2", + "Standard_NV12s_v3", + "Standard_NV24s_v3", + "Standard_NV48s_v3" + ] + }, + "virtualNetwork_name": { + "defaultValue": "stream-vnet", + "type": "String", + "value": "GEN-VNET-NAME" + }, + "nic_name": { + "defaultValue": "stream-nic", + "type": "String", + "value": "GEN-UNIQUE-8" + }, + "publicIPAddress_name": { + "defaultValue": "stream-ip", + "type": "String", + "value": "GEN-UNIQUE-8" + }, + "dnsprefix": { + "defaultValue": "streamvm", + "type": "String", + "value": "GEN-UNIQUE-13" + }, + "networkSecurityGroup_name": { + "defaultValue": "stream-nsg", + "type": "String", + "value": "GEN-UNIQUE-8" + }, + "setupChocolateyScriptFileName": { + "type": "string", + "defaultValue": "ChocoInstall.ps1", + "metadata": { + "description": "PowerShell script name to execute" + }, + "value": "ChocoInstall.ps1" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Public uri location of PowerShell Chocolately setup script" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "chocoPackages": { + "type": "string", + "defaultValue": "obs-studio;skype", + "metadata": { + "description": "List of Chocolatey packages to install separated by a semi-colon eg. linqpad;sysinternals" + }, + "value": "obs-studio;skype;obs-ndi" + } + }, + "variables": { + "vmImagePublisher": "MicrosoftWindowsDesktop", + "vmImageOffer": "Windows-10", + "sku": "rs5-pro", + "scriptFolder": ".", + "setupScriptLocation": "[uri(parameters('_artifactsLocation'),concat(parameters('setupChocolateyScriptFileName'),parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE-8", + "location": "southcentralus", + "properties": { + "securityRules": [ + { + "name": "RDP", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2019-07-01", + "name": "GEN-VNET-NAME/default", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ], + "properties": { + "addressPrefix": "10.0.4.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-07-01", + "name": "GEN-VNET-NAME", + "location": "southcentralus", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.4.0/24" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.4.0/24", + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE-8", + "location": "southcentralus", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE-8", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/default", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAddress": "10.0.4.4", + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/default" + }, + "primary": true, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": false, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE-8", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_NV6" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "rs5-pro", + "version": "latest" + }, + "osDisk": { + "osType": "Windows", + "name": "GEN-UNIQUE-8_OsDisk", + "createOption": "FromImage", + "caching": "ReadWrite" + } + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8" + } + ] + } + } + }, + { + "name": "GEN-UNIQUE-8/GPUDrivers", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "southcentralus", + "apiVersion": "2019-07-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8", + "Microsoft.Compute/virtualMachines/extensions/GEN-UNIQUE-8/SetupChocolatey" + ], + "tags": { + "displayName": "gpu-nvidia-drivers" + }, + "properties": { + "publisher": "Microsoft.HpcCompute", + "type": "NvidiaGpuDriverWindows", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": true + } + }, + { + "name": "GEN-UNIQUE-8/SetupChocolatey", + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "southcentralus", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8" + ], + "tags": { + "displayName": "config-choco" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat(parameters('setupChocolateyScriptFileName'),parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy bypass -File ChocoInstall.ps1 -chocoPackages obs-studio;skype;obs-ndi" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT333 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT333 new file mode 100644 index 0000000..0e70145 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT333 @@ -0,0 +1,354 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/octopus/octopusdeploy3-single-vm-windows/azuredeploy.json", + "/application-workloads/octopus/octopusdeploy3-single-vm-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962892578, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/octopus/octopusdeploy3-single-vm-windows/azuredeploy.json", + "/application-workloads/octopus/octopusdeploy3-single-vm-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT333", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.sql/servers", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT333", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmAdminUsername": { + "type": "string", + "defaultValue": "octoadmin", + "metadata": { + "description": "Admin username for the Octopus Deploy Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the Octopus Deploy Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "networkDnsName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name used to access the Octopus Deploy server via HTTP or RDP." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the SQL DB Server that will hold the Octopus Deploy data." + }, + "value": "GEN-UNIQUE-8" + }, + "sqlAdminUsername": { + "type": "string", + "defaultValue": "sqladmin", + "metadata": { + "description": "Admin username for the Octopus Deploy SQL DB Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the Octopus Deploy SQL DB Server." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Admin password for the Octopus Deploy web application." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Admin password for the Octopus Deploy web application." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Admin password for the Octopus Deploy web application." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storage')]", + "vmImagePublisher": "MicrosoftWindowsServer", + "vmImageOffer": "WindowsServer", + "vmWindowsOSVersion": "2012-R2-Datacenter", + "networkNicName": "OctopusDeployNIC", + "networkAddressPrefix": "10.0.0.0/16", + "networkSubnetName": "OctopusDeploySubnet", + "networkSubnetPrefix": "10.0.0.0/24", + "networkPublicIPAddressName": "OctopusDeployPublicIP", + "networkPublicIPAddressType": "Dynamic", + "networkVNetName": "OctopusDeployVNET", + "networkSubnetRef": "Microsoft.Network/virtualNetworks/subnets/OctopusDeployVNET/OctopusDeploySubnet", + "sqlDbName": "OctopusDeploy", + "sqlDbEdition": "Standard", + "sqlDbCollation": "SQL_Latin1_General_CP1_CI_AS", + "sqlDbMaxSizeBytes": "268435456000", + "sqldbEditionPerformanceLevel": "1B1EBD4D-D903-4BAA-97F9-4EA675F5E928" + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "env": "trial", + "vendor": "Octopus Deploy" + }, + "properties": {} + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "OctopusDeployPublicIP", + "location": "[resourceGroup().location]", + "tags": { + "env": "trial", + "vendor": "Octopus Deploy" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "OctopusDeployVNET", + "location": "[resourceGroup().location]", + "tags": { + "env": "trial", + "vendor": "Octopus Deploy" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "OctopusDeploySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "OctopusDeployNIC", + "location": "[resourceGroup().location]", + "tags": { + "env": "trial", + "vendor": "Octopus Deploy" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//OctopusDeployPublicIP", + "Microsoft.Network/virtualNetworks//OctopusDeployVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/OctopusDeployPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/OctopusDeployVNET/OctopusDeploySubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "tags": { + "env": "trial", + "vendor": "Octopus Deploy" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/OctopusDeployNIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/OctopusDeployInstaller", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8", + "Microsoft.Sql/servers/databases/GEN-UNIQUE-8/OctopusDeploy" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('Install-OctopusDeploy.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell.exe -File Install-OctopusDeploy.ps1" + } + } + }, + { + "apiVersion": "2020-08-01-preview", + "type": "Microsoft.Sql/servers", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "tags": { + "env": "trial", + "vendor": "Octopus Deploy" + }, + "properties": { + "version": "12.0", + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD" + }, + "resources": [ + { + "apiVersion": "2020-08-01-preview", + "type": "databases", + "name": "OctopusDeploy", + "location": "[resourceGroup().location]", + "tags": { + "env": "trial", + "vendor": "Octopus Deploy" + }, + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE-8" + ], + "properties": { + "edition": "Standard", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "268435456000", + "requestedServiceObjectiveId": "1B1EBD4D-D903-4BAA-97F9-4EA675F5E928" + } + }, + { + "type": "firewallrules", + "apiVersion": "2020-08-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE-8" + ], + "location": "[resourceGroup().location]", + "name": "AllowAllWindowsAzureIps", + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + } + ] + } + ], + "outputs": { + "octopusServerName": { + "type": "string", + "value": "[reference(variables('networkPublicIPAddressName')).dnsSettings.fqdn]" + }, + "sqlServerName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Sql/servers/', parameters('sqlServerName'))).fullyQualifiedDomainName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT334 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT334 new file mode 100644 index 0000000..edc4795 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT334 @@ -0,0 +1,284 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/office/windows-vm-o365/azuredeploy.json", + "/application-workloads/office/windows-vm-o365/azuredeploy.parameters.json" + ], + "timestamp": 1642962892606, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/office/windows-vm-o365/azuredeploy.json", + "/application-workloads/office/windows-vm-o365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT334", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT334", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "O365VM", + "metadata": { + "description": "Local name for the VM can be whatever you want" + } + }, + "vmAdminUserName": { + "type": "string", + "metadata": { + "description": "VM admin user name" + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "VM admin password. The supplied password must be between 8-123 characters long and must satisfy at least 3 of password complexity requirements from the following: 1) Contains an uppercase character 2) Contains a lowercase character 3) Contains a numeric digit 4) Contains a special character." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Desired Size of the VM." + }, + "defaultValue": "Standard_D2s_v3" + }, + "vmVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "Which version of Windows would like to deploy" + } + }, + "vmSku": { + "type": "string", + "defaultValue": "vs-2019-comm-latest-ws2019", + "metadata": { + "description": "VM Image SKU" + } + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-13" + }, + "officeVersion": { + "type": "string", + "defaultValue": "Office2016", + "allowedValues": [ + "Office2016", + "Office2013" + ], + "metadata": { + "description": "Which version of Office would you would like to deploy" + }, + "value": "Office2016" + }, + "setupOfficeScriptFileName": { + "type": "string", + "defaultValue": "DeployO365SilentWithVersion.ps1", + "metadata": { + "description": "PowerShell script name to execute" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vnet01Prefix": "10.0.0.0/16", + "vnet01Subnet1Name": "Subnet-1", + "vnet01Subnet1Prefix": "10.0.0.0/24", + "vmImagePublisher": "MicrosoftVisualStudio", + "vmImageOffer": "visualstudio2019latest", + "vmSubnetRef": "Microsoft.Network/virtualNetworks/subnets/VNet01/Vnet01Subnet1Name", + "vmNicName": "VMNameNetworkInterface", + "vmIP01Name": "VMIP01", + "vnetName": "VNet01" + }, + "resources": [ + { + "name": "VNet01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "tags": { + "displayName": "VNet01" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "VMNameNetworkInterface", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/VNet01", + "Microsoft.Network/publicIPAddresses/VMIP01" + ], + "tags": { + "displayName": "VMNic01" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNet01/Vnet01Subnet1Name" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VMIP01" + } + } + } + ] + } + }, + { + "name": "O365VM", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/VMNameNetworkInterface" + ], + "tags": { + "displayName": "VM01" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "O365VM", + "adminUsername": "vmAdminUsername", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "visualstudio2019latest", + "sku": "vs-2019-comm-latest-ws2019", + "version": "latest" + }, + "osDisk": { + "name": "O365VM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMNameNetworkInterface" + } + ] + } + }, + "resources": [ + { + "name": "SetupOffice", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//O365VM" + ], + "tags": { + "displayName": "SetupOffice" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('setupOfficeScriptFileName'), parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/DefaultConfiguration.xml", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Office2013Setup.exe", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Office2016Setup.exe", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Edit-OfficeConfigurationFile.ps1", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Generate-ODTConfigurationXML.ps1", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Install-OfficeClickToRun.ps1" + ], + "commandToExecute": "powershell -ExecutionPolicy bypass -File scripts/DeployO365SilentWithVersion.ps1 -OfficeVersion Office2016" + } + } + } + ] + }, + { + "name": "VMIP01", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "tags": { + "displayName": "VMIP01" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT335 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT335 new file mode 100644 index 0000000..ff736cd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT335 @@ -0,0 +1,394 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/opencanvas/opencanvas-lms/azuredeploy.json", + "/application-workloads/opencanvas/opencanvas-lms/azuredeploy.parameters.json" + ], + "timestamp": 1642962892624, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opencanvas/opencanvas-lms/azuredeploy.json", + "/application-workloads/opencanvas/opencanvas-lms/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT335", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT335", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminVMUsername": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "dnsNameForPublicIP": { + "type": "string", + "minLength": 3, + "defaultValue": "[concat('oc', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Globally unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "smtpEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Provide SMTP Email." + }, + "value": "GEN-UNIQUE-8" + }, + "postgresPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Provide Password for the Postgres." + }, + "value": "GEN-PASSWORD" + }, + "adminLoginEmail": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Provide Admin Email for Open Canvas." + }, + "value": "GEN-UNIQUE-8" + }, + "adminLoginPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Provide Admin Password for for Open Canvas." + }, + "value": "GEN-PASSWORD" + }, + "adminAccountName": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Provide Admin Account Name." + }, + "value": "GEN-UNIQUE-8" + }, + "lms_stat_coll": { + "type": "string", + "defaultValue": "opt_in", + "metadata": { + "description": "Provide lms stat coll." + } + }, + "smtp_type": { + "type": "string", + "minLength": 3, + "defaultValue": "smtp.gmail.com", + "metadata": { + "description": "Provide SMTP Type." + } + }, + "smtp_port": { + "type": "string", + "defaultValue": "465", + "metadata": { + "description": "Provide SMTP Port." + } + }, + "smtp_pass": { + "type": "string", + "minLength": 12, + "metadata": { + "description": "Provide lms SMTP Password." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Virtual Machine Size." + }, + "value": "Standard_D2_v3" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "canvasVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "vmName": "opencanvas", + "virtualNetworkName": "canvasLMSVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/canvasLMSVNET/Subnet", + "installScriptName": "opencanvas.sh", + "ubuntuOSVersion": "16.04-LTS", + "installScriptUrl": "[uri(parameters('_artifactsLocation'), concat(variables('installScriptName'), parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat('oc', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('oc', uniqueString(resourceGroup().id))]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-80", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-443", + "properties": { + "priority": 1002, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "443", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2018-02-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "canvasLMSVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2018-02-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "canvasVMNic", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NetworkInterface" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[concat('oc', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/canvasLMSVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat('oc', uniqueString(resourceGroup().id))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/canvasLMSVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "opencanvas", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/canvasVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "opencanvas", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/canvasVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "opencanvas/installopencavas", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//opencanvas" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('mv *.sh /home/',parameters('adminVMUsername'),' && cd /home/',parameters('adminVMUsername'),' && sudo chmod 777 *.sh && sudo -u ',parameters('adminVMUsername'),' /bin/bash ',variables('installScriptName'),' ',reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('dnsNameForPublicIP')), '2020-08-01').dnsSettings.fqdn,' ', parameters('smtpEmail'),' ', parameters('postgresPassword'),' ', parameters('adminLoginEmail'),' ', parameters('adminLoginPassword'),' ', parameters('adminAccountName'),' ', parameters('lms_stat_coll'),' ', parameters('smtp_type'),' ', parameters('smtp_port'),' ', parameters('smtp_pass'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT336 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT336 new file mode 100644 index 0000000..7bc1b35 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT336 @@ -0,0 +1,291 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/opendx/openedx-devstack-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-devstack-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892645, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opendx/openedx-devstack-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-devstack-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT336", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT336", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "vagrant", + "metadata": { + "description": "Administrator username." + }, + "value": "vagrant" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password. Username is 'vagrant'." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Virtual machine size." + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "openedxVersion": "open-release/ficus.master", + "scriptDownloadUri": "[uri(parameters('_artifactsLocation'), concat(variables('installScript'), parameters('_artifactsLocationSasToken')))]", + "installScript": "install-openedx.sh", + "installCommand": "bash -c nohup .install-openedx.sh open-release/ficus.master /var/log/azure/openedx-install.log &", + "vmName": "jumpbox2", + "osImagePublisher": "Canonical", + "osImageOffer": "UbuntuServer", + "osImageSKU": "16.04-LTS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "VNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet", + "subnetName": "Subnet", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "nsgName": "node-nsg", + "nsgID": "Microsoft.Network/networkSecurityGroups/node-nsg" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/node-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/node-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "node-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "LMS", + "properties": { + "description": "HTTP for Open edX LMS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "CMS", + "properties": { + "description": "HTTP for Open edX CMS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8001", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpbox2-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//VNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpbox2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//jumpbox2-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "jumpbox2", + "adminUsername": "vagrant", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "jumpbox2-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpbox2-nic" + } + ] + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "jumpbox2/installscript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//jumpbox2" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installScript'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash -c nohup .install-openedx.sh open-release/ficus.master /var/log/azure/openedx-install.log &" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT337 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT337 new file mode 100644 index 0000000..9204fb4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT337 @@ -0,0 +1,342 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/opendx/openedx-fullstack-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-fullstack-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892660, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opendx/openedx-fullstack-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-fullstack-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT337", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT337", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "openedxuser", + "metadata": { + "description": "Administrator username." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D32_v3" + ], + "metadata": { + "description": "Virtual machine size." + }, + "value": "Standard_D4_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "openedxVersion": "open-release/ficus.master", + "scriptDownloadUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/opendx/openedx-fullstack-ubuntu/", + "installScript": "install-openedx.sh", + "installCommand": "bash -c nohup ./install-openedx.sh open-release/ficus.master /var/log/azure/openedx-install.log &", + "vmName": "jumpbox2", + "osImagePublisher": "Canonical", + "osImageOffer": "UbuntuServer", + "osImageSKU": "16.04-LTS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "VNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet", + "subnetName": "Subnet", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "nsgName": "node-nsg", + "nsgID": "Microsoft.Network/networkSecurityGroups/node-nsg", + "storageAccountType": "Standard_LRS", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'vhdsa')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/node-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/node-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "node-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "LMS", + "properties": { + "description": "HTTP for Open edX LMS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "CMS", + "properties": { + "description": "HTTP for Open edX CMS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "18010", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpbox2-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//VNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpbox2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('vmName'), '-nic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "jumpbox2", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "jumpbox2_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpbox2-nic" + } + ] + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "jumpbox2/installscript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//jumpbox2" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/opendx/openedx-fullstack-ubuntu/install-openedx.sh", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/opendx/openedx-fullstack-ubuntu/server-vars.yml" + ], + "commandToExecute": "bash -c nohup ./install-openedx.sh open-release/ficus.master /var/log/azure/openedx-install.log &" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT338 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT338 new file mode 100644 index 0000000..0c59962 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT338 @@ -0,0 +1,703 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/opendx/openedx-scalable-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-scalable-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892673, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opendx/openedx-scalable-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-scalable-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT338", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT338", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "openedxuser", + "metadata": { + "description": "Administrator username." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-8" + }, + "appVmCount": { + "type": "int", + "minValue": 1, + "maxValue": 20, + "defaultValue": 1, + "metadata": { + "description": "Number of application virtual machines behind the load balancer." + }, + "value": 1 + }, + "appVmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3" + ], + "metadata": { + "description": "Size of the application virtual machine(s)." + }, + "value": "Standard_D2s_v3" + }, + "mySqlVmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3" + ], + "metadata": { + "description": "Size of the MySQL virtual machine." + }, + "value": "Standard_D2s_v3" + }, + "mongoVmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3" + ], + "metadata": { + "description": "Size of the MongoDB virtual machine." + }, + "value": "Standard_D2s_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "installScript": "install-openedx.sh", + "installCommand": "bash -c nohup ./install-openedx.sh 1 GEN-UNIQUE GEN-PASSWORD /var/log/azure/openedx-install.log &", + "availabilitySetName": "avail-set", + "osImagePublisher": "Canonical", + "osImageOffer": "UbuntuServer", + "osImageSKU": "12.04.5-LTS", + "appVmName": "openedx-app", + "mySqlVmName": "openedx-mysql", + "mongoVmName": "openedx-mongo", + "appPublicIPAddressName": "myPublicIP", + "mySqlPublicIPAddressName": "myPublicIPMySql", + "mongoPublicIPAddressName": "myPublicIPMongo", + "virtualNetworkName": "VNET", + "subnetName": "Subnet", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "nsgName": "node-nsg", + "nsgID": "Microsoft.Network/networkSecurityGroups/node-nsg", + "storageAccountType": "Premium_LRS", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'vhdsa')]", + "lbName": "openedx-loadbalancer" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium_LRS" + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "avail-set", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIPMySql", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIPMongo", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/node-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/node-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "node-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "LMS", + "properties": { + "description": "Allow connection to Open edX LMS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "CMS", + "properties": { + "description": "Allow connection to Open edX CMS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "18010", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "openedx-appcopyIndex()-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VNET", + "Microsoft.Network/loadBalancers//openedx-loadbalancer", + "Microsoft.Network/loadBalancers/inboundNatRules/openedx-loadbalancer/SSH-VMcopyIndex()" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/openedx-loadbalancer/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/openedx-loadbalancer/SSH-VMcopyIndex()" + } + ] + } + } + ] + }, + "copy": { + "name": "appNetworkInterfacesCopy", + "count": 1 + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "openedx-mysql-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIPMySql", + "Microsoft.Network/virtualNetworks//VNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIPMySql" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "openedx-mongo-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIPMongo", + "Microsoft.Network/virtualNetworks//VNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIPMongo" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "name": "openedx-loadbalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ], + "loadBalancingRules": [ + { + "name": "LBRuleLMS", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/openedx-loadbalancer/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/openedx-loadbalancer/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/openedx-loadbalancer/tcpProbeLMS" + } + } + }, + { + "name": "LBRuleCMS", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/openedx-loadbalancer/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/openedx-loadbalancer/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 18010, + "backendPort": 18010, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/openedx-loadbalancer/tcpProbeCMS" + } + } + }, + { + "name": "LBRuleSSL", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/openedx-loadbalancer/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/openedx-loadbalancer/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP" + } + } + ], + "probes": [ + { + "name": "tcpProbeLMS", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + }, + { + "name": "tcpProbeCMS", + "properties": { + "protocol": "Tcp", + "port": 18010, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "openedx-loadbalancer/SSH-VMcopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/loadBalancers//openedx-loadbalancer" + ], + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/openedx-loadbalancer/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": "[copyIndex(2220)]", + "backendPort": 22, + "enableFloatingIP": false + }, + "copy": { + "name": "inboundNatRulesCopy", + "count": 1 + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "openedx-appcopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('appVmName'), copyIndex(), '-nic'))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avail-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "openedx-appcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "12.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "openedx-appcopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/openedx-appcopyIndex()-nic" + } + ] + } + }, + "copy": { + "name": "appVMCopy", + "count": 1 + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "openedx-mysql", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('mySqlVmName'), '-nic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "openedx-mysql", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "12.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "openedx-mysql_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/openedx-mysql-nic" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "openedx-mongo", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('mongoVmName'), '-nic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "openedx-mongo", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "12.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "openedx-mongo_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/openedx-mongo-nic" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "openedx-app0/installscript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//openedx-app0" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install-openedx.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/server-vars.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/inventory.ini', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash -c nohup ./install-openedx.sh 1 GEN-UNIQUE GEN-PASSWORD /var/log/azure/openedx-install.log &" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT339 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT339 new file mode 100644 index 0000000..ec21c73 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT339 @@ -0,0 +1,339 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/opendx/openedx-tutor-lilac-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-tutor-lilac-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892740, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opendx/openedx-tutor-lilac-ubuntu/azuredeploy.json", + "/application-workloads/opendx/openedx-tutor-lilac-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT339", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT339", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator username." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(format('{0}-{1}', variables('vmName'), uniqueString(resourceGroup().id, variables('vmName'))))]", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D3_v2", + "metadata": { + "description": "Virtual machine size." + }, + "value": "Standard_D3_v2" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('script/setup.sh', parameters('_artifactsLocationSasToken')))]", + "installScript": "setup.sh", + "installCommand": "bash setup.sh GEN-UNIQUE", + "vmName": "VM", + "osImagePublisher": "Canonical", + "osImageOffer": "0001-com-ubuntu-server-focal", + "osImageSKU": "20_04-LTS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "VNETNet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/VNETNet/SubnetNam", + "subnetName": "SubnetNam", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "nsgName": "node-nsgNam", + "nsgID": "Microsoft.Network/networkSecurityGroups/node-nsgNam", + "storageAccountType": "Standard_LRS", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'vhdsa')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2021-03-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(format('{0}-{1}', variables('vmName'), uniqueString(resourceGroup().id, variables('vmName'))))]" + } + } + }, + { + "apiVersion": "2021-03-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNETNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/node-nsgNam" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "SubnetNam", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/node-nsgNam" + } + } + } + ] + } + }, + { + "apiVersion": "2021-03-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "node-nsgNam", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "LMS", + "properties": { + "description": "HTTP for Open edX LMS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "CMS", + "properties": { + "description": "HTTP for Open edX CMS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "18010", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + }, + { + "name": "Port_8080", + "properties": { + "description": "HTTPS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 213, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2021-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "VM-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//VNETNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNodeNam2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNETNet/SubnetNam" + } + } + } + ] + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "VM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(variables('vmName'), '-nic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D3_v2" + }, + "osProfile": { + "computerName": "VM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "0001-com-ubuntu-server-focal", + "sku": "20_04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "VM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VM-nic" + } + ] + } + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "VM/installscript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//VM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('script/setup.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash setup.sh GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT34 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT34 new file mode 100644 index 0000000..94b40fe --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT34 @@ -0,0 +1,308 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/blockchain/blockchain/azuredeploy.json", + "/application-workloads/blockchain/blockchain/azuredeploy.parameters.json" + ], + "timestamp": 1642962883605, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/blockchain/blockchain/azuredeploy.json", + "/application-workloads/blockchain/blockchain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT34", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT34", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDnsPrefix": { + "type": "string", + "metadata": { + "description": "This is the unique DNS name of the for the public IP for your VM" + }, + "value": "GEN-UNIQUE-11" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "This is the the username you wish to assign to your VMs admin account" + }, + "value": "GEN-UNIQUE" + }, + "blockchainSoftware": { + "type": "string", + "allowedValues": [ + "bitcoin", + "bitshares", + "bitswift", + "blocknet", + "bloqenterprise", + "dash", + "digibyte", + "dynamic", + "emercoin", + "groestlcoin", + "influx", + "jumbucks", + "monero", + "multichain", + "nxt", + "okcash", + "particl", + "sequence", + "stratis", + "syscoin", + "vcash", + "vechain", + "viacoin" + ], + "metadata": { + "description": "The blockchain software to install on the VM" + }, + "value": "nxt" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VM" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "nicName": "VMNic", + "addressPrefix": "10.0.0.0/16", + "imagePublisher": "Canonical", + "imageVersion": "latest", + "imageSKU": "18.04-LTS", + "imageOffer": "UbuntuServer", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "publicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-11", + "virtualNetworkName": "VNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet-1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "commandToExecute": { + "bitcoin": "sh nxt.sh From_SourceGEN-UNIQUE", + "bitshares": "sh nxt.sh From_Source", + "bitswift": "sh nxt.sh From_Source", + "blocknet": "sh nxt.sh From_Source", + "bloqenterprise": "sh nxt.sh Download_Binaries", + "dash": "sh nxt.sh From_SourceGEN-UNIQUE", + "digibyte": "sh nxt.sh From_Source", + "dynamic": "sh nxt.sh From_SourceGEN-UNIQUE", + "emercoin": "sh nxt.sh \"GEN-UNIQUE\" \"GEN-SSH-PUB-KEY\"", + "groestlcoin": "sh nxt.sh From_PPA GEN-UNIQUE", + "influx": "sh nxt.sh From_Source", + "jumbucks": "sh nxt.sh From_Source GEN-UNIQUE", + "monero": "sh nxt.sh Download_Binaries", + "multichain": "sh nxt.sh GEN-UNIQUE", + "nxt": "sh nxt.sh false false", + "okcash": "sh nxt.sh From_Source GEN-UNIQUE", + "particl": "sh nxt.sh From_Source GEN-UNIQUE", + "sequence": "sh nxt.sh From_SourceGEN-UNIQUE", + "stratis": "sh nxt.sh From_SourceGEN-UNIQUE", + "syscoin": "sh nxt.sh From_SourceGEN-UNIQUE", + "vcash": "sh nxt.sh From_Source", + "vechain": "sh nxt.sh main", + "viacoin": "sh nxt.sh From_Source" + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-11" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIP", + "Microsoft.Network/virtualNetworks/VNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/VMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-11", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "osdisk1", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-11/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-11" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', parameters('blockchainSoftware'), '.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "(commandToExecute)[parameters(blockchainSoftware)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT340 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT340 new file mode 100644 index 0000000..97b8f6e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT340 @@ -0,0 +1,514 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/openldap/openldap-cluster-ubuntu/azuredeploy.json", + "/application-workloads/openldap/openldap-cluster-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892761, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openldap/openldap-cluster-ubuntu/azuredeploy.json", + "/application-workloads/openldap/openldap-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT340", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT340", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine administrator. Do not use simple names such as 'admin'." + }, + "value": "GEN-UNIQUE-8" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine administrator." + }, + "value": "GEN-PASSWORD" + }, + "directoryAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the OpenLDAP directory administrator." + }, + "value": "GEN-PASSWORD" + }, + "organization": { + "type": "string", + "metadata": { + "description": "Name of the organization for which the directory is being created." + }, + "value": "organization-name" + }, + "namePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "Number of VMs in the cluster." + }, + "value": 2 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "The size of the VM." + }, + "value": "Standard_A0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "newStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'olc')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "14.04.5-LTS", + "nicName": "GEN-UNIQUE-8Nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.1.0/24", + "privateIPAddressPrefix": "10.0.1.1", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUE-8IP", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8IP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-8VM", + "virtualNetworkName": "GEN-UNIQUE-8VNet", + "availabilitySetName": "GEN-UNIQUE-8AvSet", + "lbName": "GEN-UNIQUE-8LB", + "installScriptName": "install_openldap.sh", + "installCommand": "bash install_openldap.sh GEN-UNIQUE-8 GEN-PASSWORD GEN-PASSWORD GEN-UNIQUE-8 [resourceGroup().location] organization-name 10.0.1.1 2" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "GEN-UNIQUE-8AvSet", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8VNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8NiccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8VNet", + "Microsoft.Network/loadBalancers//GEN-UNIQUE-8LB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.1.1copyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8LB/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUE-8LB/SSH-VMcopyindex()" + } + ] + } + } + ] + }, + "copy": { + "name": "networkInterfacesCopy", + "count": 2 + } + }, + { + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE-8LB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8IP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8IP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ], + "inboundNatRules": [ + { + "name": "SSH-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2200, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2201, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2202, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2203, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2204, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "HTTPRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8LB/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-8LB/tcpProbe" + } + } + }, + { + "name": "HTTPSRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8LB/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-8LB/tcpProbe" + } + } + }, + { + "name": "LDAPRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8LB/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 389, + "backendPort": 389, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-8LB/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VMcopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/',variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat(variables('nicName'),copyIndex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/',variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE-8AvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VMcopyIndex()", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VMcopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8NiccopyIndex()" + } + ] + } + }, + "copy": { + "name": "virtualMachinesCopy", + "count": 2 + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VMcopyIndex()/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VMcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/',variables('installScriptName'), parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'forceTLS.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'setTLSConfig.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'config_1_loadSyncProvModule.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'config_2_setServerID.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'config_3_setConfigPW.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'config_3a_addOlcRootDN.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'config_4_addConfigReplication.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'config_5_addSyncProv.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'config_6_addSyncRepl.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'config_7_testConfigReplication.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'hdb_1_addSyncProvToHDB.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'hdb_2_addOlcSuffix.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'hdb_3_addOlcRootDN.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'hdb_4_addOlcRootPW.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'hdb_5_addOlcSyncRepl.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'hdb_6_addOlcMirrorMode.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('ldif/', 'hdb_7_addIndexHDB.ldif', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash install_openldap.sh GEN-UNIQUE-8 GEN-PASSWORD GEN-PASSWORD GEN-UNIQUE-8 [resourceGroup().location] organization-name 10.0.1.1 2 copyIndex()" + } + }, + "copy": { + "name": "extensionsCopy", + "count": 2 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT341 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT341 new file mode 100644 index 0000000..4cef21c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT341 @@ -0,0 +1,283 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/openldap/openldap-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/openldap/openldap-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892793, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openldap/openldap-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/openldap/openldap-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT341", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT341", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine administrator. Do not use simple names such as 'admin'." + }, + "value": "GEN-UNIQUE-8" + }, + "directoryAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the OpenLDAP directory administrator." + }, + "value": "GEN-PASSWORD" + }, + "organization": { + "type": "string", + "metadata": { + "description": "Name of the organization for which the directory is being created." + }, + "value": "GEN-UNIQUE-8" + }, + "namePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "The size of the VM." + }, + "value": "Standard_D2s_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "newStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'ols')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "18.04-LTS", + "nicName": "GEN-UNIQUE-8Nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUE-8IP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-8VM", + "virtualNetworkName": "GEN-UNIQUE-8VNet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet", + "installScriptName": "install_openldap.sh", + "installCommand": "sudo ./install_openldap.sh GEN-PASSWORD GEN-UNIQUE-8 [resourceGroup().location] GEN-UNIQUE-8", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8VNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8Nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8IP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8VNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8IP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VM", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8Nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VM/newuserscript", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installScriptName'), parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('forceTLS.ldif', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('setTLSConfig.ldif', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sudo ./install_openldap.sh GEN-PASSWORD GEN-UNIQUE-8 [resourceGroup().location] GEN-UNIQUE-8" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT342 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT342 new file mode 100644 index 0000000..6305448 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT342 @@ -0,0 +1,325 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/openscholar/openscholar/azuredeploy.json", + "/application-workloads/openscholar/openscholar/azuredeploy.parameters.json" + ], + "timestamp": 1642962892807, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openscholar/openscholar/azuredeploy.json", + "/application-workloads/openscholar/openscholar/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT342", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT342", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminVMUsername": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "dnsNameForPublicIP": { + "type": "string", + "minLength": 3, + "defaultValue": "[concat('os', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Globally unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "databaseName": { + "type": "string", + "minLength": 3, + "defaultValue": "openscholarDB", + "metadata": { + "description": "Name for the Database." + } + }, + "mysqlPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Provide Password for the My SQL." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Default VM Size." + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "scholarVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "vmName": "openscholarVM", + "virtualNetworkName": "scholarVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/scholarVNET/Subnet", + "installScriptName": "openDrupal.sh", + "ubuntuOSVersion": "16.04-LTS", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat('os', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('os', uniqueString(resourceGroup().id))]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-80", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "scholarVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "scholarVMNic", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NetworkInterface" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[concat('os', uniqueString(resourceGroup().id))]", + "Microsoft.Network/virtualNetworks/scholarVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat('os', uniqueString(resourceGroup().id))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/scholarVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "openscholarVM", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/scholarVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "openscholarVM", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/scholarVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "openscholarVM/installopenScholar", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//openscholarVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/',variables('installScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "mv *.sh /home/GEN-UNIQUE-8 && cd /home/GEN-UNIQUE-8 && sudo chmod 777 *.sh && sudo -u GEN-UNIQUE-8 /bin/bash openDrupal.sh GEN-PASSWORD openscholarDB" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT343 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT343 new file mode 100644 index 0000000..59a69f7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT343 @@ -0,0 +1,192 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/nested/clusternode.json" + ], + "timestamp": 1642962892861, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/nested/clusternode.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT343", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT343", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Datacenter Region Location" + } + }, + "sshKeyPath": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "SSH Public Key Path" + } + }, + "sshPublicKey": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "SSH Public Key" + } + }, + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Admin Username" + } + }, + "dataDiskSize": { + "type": "int", + "metadata": { + "description": "Size of Data Disk" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "VM Size" + } + }, + "hostname": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "VM Hostname" + } + }, + "role": { + "type": "string", + "metadata": { + "description": "VM Role for tag" + } + }, + "vmStorageType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "VM Storage Type" + } + }, + "diagStorageAccount": { + "type": "string", + "metadata": { + "description": "Diagnostics Storage Account" + } + }, + "imageReference": { + "type": "object", + "metadata": { + "description": "Image Reference" + } + }, + "redHatTags": { + "type": "object", + "metadata": { + "description": "Red Hat Tags" + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "hostName-dataDisk", + "diskSizeGB": "dataDiskSize", + "lun": 0, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "createOption": "Empty" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "hostname", + "location": "location", + "apiVersion": "2019-07-01", + "tags": { + "Role": "role", + "app": "redHatTags", + "version": "redHatTags" + }, + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "hostname", + "adminUsername": "adminUsername", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "sshKeyPath", + "keyData": "sshPublicKey" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": { + "name": "hostName-osdisk", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 256, + "osType": "Linux" + }, + "dataDisks": "[if(equals(parameters('hostName'), 'bastionNode'), json('null'), variables('dataDisks'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/hostname-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('diagStorageAccount')), '2019-06-01').primaryEndpoints['blob']]" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT344 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT344 new file mode 100644 index 0000000..2cbb6bf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT344 @@ -0,0 +1,270 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/nested/openshiftdeploy.json" + ], + "timestamp": 1642962892874, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/nested/openshiftdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT344", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT344", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URL 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": "secureString", + "metadata": { + "description": "Token for the base URL 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." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Region where the resources should be created in" + } + }, + "openshiftDeploymentScriptUrl": { + "type": "string", + "metadata": { + "description": "Bastion prep script Url" + } + }, + "openshiftDeploymentScriptFileName": { + "type": "string", + "metadata": { + "description": "Bastion prep script file name" + } + }, + "masterInstanceCount": { + "type": "int", + "metadata": { + "description": "Number of OpenShift Master nodes" + } + }, + "workerInstanceCount": { + "type": "int", + "metadata": { + "description": "Number of OpenShift nodes" + } + }, + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Administrator username on all VMs" + } + }, + "openshiftUsername": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Administrator password for OpenShift Console" + } + }, + "openshiftPassword": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Administrator password for OpenShift Console" + } + }, + "aadClientId": { + "type": "string", + "metadata": { + "description": "Azure AD Client ID" + } + }, + "aadClientSecret": { + "type": "securestring", + "metadata": { + "description": "Azure AD Client Secret" + } + }, + "redHatTags": { + "type": "object", + "metadata": { + "description": "Red Hat Tags" + } + }, + "pullSecret": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "OCP Pull Secret" + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Virtual Network Cluster is deployed in" + } + }, + "virtualNetworkCIDR": { + "type": "string", + "metadata": { + "description": "Virtual Network address prefix" + } + }, + "pxSpecUrl": { + "type": "string", + "metadata": { + "description": "Portworx Spec URL" + } + }, + "storageOption": { + "type": "string", + "metadata": { + "description": "nfs or glusterfs" + } + }, + "bastionHostname": { + "type": "string", + "metadata": { + "description": "Bastion Hostname" + } + }, + "nfsHostname": { + "type": "string", + "metadata": { + "description": "NFS Hostname" + } + }, + "singleZoneOrMultiZone": { + "type": "string", + "metadata": { + "description": "Deploy to a Single AZ or multiple AZs" + } + }, + "dnsZone": { + "type": "string", + "metadata": { + "description": "Domain name created with the App Service" + } + }, + "dnsZoneRG": { + "type": "string", + "metadata": { + "description": "Resource Group that contains the domain name" + } + }, + "masterInstanceType": { + "type": "string", + "metadata": { + "description": "OpenShift Master VM size. Use VMs with Premium Storage support only." + } + }, + "workerInstanceType": { + "type": "string", + "metadata": { + "description": "OpenShift Node VM(s) size. Use VMs with Premium Storage support only." + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "Cluster resources prefix" + } + }, + "networkResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group for Vnet." + } + }, + "masterSubnetName": { + "type": "string", + "metadata": { + "description": "Name of new or existing master subnet" + } + }, + "workerSubnetName": { + "type": "string", + "metadata": { + "description": "Name of new or existing worker subnet" + } + }, + "enableFips": { + "type": "bool", + "metadata": { + "description": "Enable FIPS encryption" + } + }, + "privateOrPublic": { + "type": "string", + "metadata": { + "description": "Public or private facing endpoints" + } + }, + "sshPublicKey": { + "type": "string", + "metadata": { + "description": "SSH public key for all VMs" + } + } + }, + "variables": { + "singlequote": "'", + "tenantId": "[subscription().tenantId]", + "subscriptionId": "[subscription().subscriptionId]", + "resourceGroupName": "[resourceGroup().name]", + "cidr-prefix": "[split(parameters('virtualNetworkCIDR'), '.')[0]]", + "clusterNetworkCidr": "[split(parameters('virtualNetworkCIDR'), '.')[0]].128.0.0/14", + "hostAddressPrefix": 23, + "serviceNetworkCidr": "192.30.0.0/16" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "bastionHostname/deployOpenshift", + "location": "location", + "apiVersion": "2019-07-01", + "tags": { + "displayName": "DeployOpenshift", + "app": "redHatTags", + "version": "redHatTags", + "platform": "redHatTags" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "openshiftDeploymentScriptUrl" + ] + }, + "protectedSettings": { + "commandToExecute": "bash openshiftDeploymentScriptFileName \"adminUsername\" \"openshiftPassword\" \"sshPublicKey\" \"workerInstanceCount\" \"masterInstanceCount\" \"[subscription().subscriptionId]\" \"[subscription().tenantId]\" \"aadClientId\" \"aadClientSecret\" \"[resourceGroup().name]\" \"location\" \"virtualNetworkName\" \"pxSpecUrl\" \"storageOption\" \"nfsHostname\" \"singleZoneOrMultiZone\" \"_artifactsLocation\" \"_artifactsLocationSasToken\" \"dnsZone\" \"masterInstanceType\" \"workerInstanceType\" \"clusterName\" \"[split(parameters('virtualNetworkCIDR'), '.')[0]].128.0.0/14\" \"23\" \"virtualNetworkCIDR\" \"192.30.0.0/16\" \"dnsZoneRG\" \"networkResourceGroup\" \"masterSubnetName\" \"workerSubnetName\" 'pullSecret' \"enableFips\" \"privateOrPublic\" \"openshiftUsername\"" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT345 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT345 new file mode 100644 index 0000000..682d2ff --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT345 @@ -0,0 +1,239 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/prereqs/prereq.azuredeploy.json", + "/application-workloads/openshift/openshift-container-platform/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962892888, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/prereqs/prereq.azuredeploy.json", + "/application-workloads/openshift/openshift-container-platform/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT345", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.domainregistration/domains", + "microsoft.network/dnszones" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT345", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "key1": { + "type": "string", + "value": "DNRA" + }, + "key2": { + "type": "string", + "value": "DNPA" + }, + "AgreedBy": { + "type": "string", + "value": "172.0.0.1:8000" + }, + "AgreedAt": { + "type": "string", + "value": "2020-06-05T00:21:01.6405736Z" + }, + "Address1": { + "type": "string", + "value": "123 Microsoft Ave" + }, + "Address2": { + "type": "string", + "value": "" + }, + "City": { + "type": "string", + "value": "Sunnyvale" + }, + "Country": { + "type": "string", + "value": "US" + }, + "PostalCode": { + "type": "string", + "value": "94085" + }, + "State": { + "type": "string", + "value": "CA" + }, + "Email": { + "type": "string", + "value": "leroy@mail.com" + }, + "Fax": { + "type": "string", + "value": "" + }, + "JobTitle": { + "type": "string", + "value": "" + }, + "NameFirst": { + "type": "string", + "value": "leroy" + }, + "NameLast": { + "type": "string", + "value": "sane" + }, + "NameMiddle": { + "type": "string", + "value": "" + }, + "Organization": { + "type": "string", + "value": "" + }, + "Phone": { + "type": "string", + "value": "+1.4081234567" + }, + "autoRenew": { + "type": "bool", + "value": false + }, + "targetDnsType": { + "type": "string", + "value": "AzureDns" + }, + "dnsZoneName": { + "type": "string", + "defaultValue": "[concat('dns', uniqueString(resourceGroup().id), '.net')]" + } + }, + "variables": { + "dnsZoneRG": "[resourceGroup().name]" + }, + "resources": [ + { + "type": "Microsoft.DomainRegistration/domains", + "apiVersion": "2019-08-01", + "dependsOn": [ + "Microsoft.Network/dnszones/[concat('dns', uniqueString(resourceGroup().id), '.net')]" + ], + "name": "[concat('dns', uniqueString(resourceGroup().id), '.net')]", + "location": "global", + "Properties": { + "Consent": { + "AgreementKeys": [ + "DNRA", + "DNPA" + ], + "AgreedBy": "172.0.0.1:8000", + "AgreedAt": "2020-06-05T00:21:01.6405736Z" + }, + "ContactAdmin": { + "AddressMailing": { + "Address1": "123 Microsoft Ave", + "Address2": "", + "City": "Sunnyvale", + "Country": "US", + "PostalCode": "94085", + "State": "CA" + }, + "Email": "leroy@mail.com", + "Fax": "", + "JobTitle": "", + "NameFirst": "leroy", + "NameLast": "sane", + "NameMiddle": "", + "Organization": "", + "Phone": "+1.4081234567" + }, + "ContactBilling": { + "AddressMailing": { + "Address1": "123 Microsoft Ave", + "Address2": "", + "City": "Sunnyvale", + "Country": "US", + "PostalCode": "94085", + "State": "CA" + }, + "Email": "leroy@mail.com", + "Fax": "", + "JobTitle": "", + "NameFirst": "leroy", + "NameLast": "sane", + "NameMiddle": "", + "Organization": "", + "Phone": "+1.4081234567" + }, + "ContactRegistrant": { + "AddressMailing": { + "Address1": "123 Microsoft Ave", + "Address2": "", + "City": "Sunnyvale", + "Country": "US", + "PostalCode": "94085", + "State": "CA" + }, + "Email": "leroy@mail.com", + "Fax": "", + "JobTitle": "", + "NameFirst": "leroy", + "NameLast": "sane", + "NameMiddle": "", + "Organization": "", + "Phone": "+1.4081234567" + }, + "ContactTech": { + "AddressMailing": { + "Address1": "123 Microsoft Ave", + "Address2": "", + "City": "Sunnyvale", + "Country": "US", + "PostalCode": "94085", + "State": "CA" + }, + "Email": "leroy@mail.com", + "Fax": "", + "JobTitle": "", + "NameFirst": "leroy", + "NameLast": "sane", + "NameMiddle": "", + "Organization": "", + "Phone": "+1.4081234567" + }, + "privacy": true, + "autoRenew": false, + "targetDnsType": "AzureDns", + "dnsZoneId": "Microsoft.Network/dnszones/[concat('dns', uniqueString(resourceGroup().id), '.net')]" + } + }, + { + "type": "Microsoft.Network/dnszones", + "name": "[concat('dns', uniqueString(resourceGroup().id), '.net')]", + "apiVersion": "2018-05-01", + "location": "global", + "properties": {} + } + ], + "outputs": { + "dnsZone": { + "type": "string", + "value": "[parameters('dnsZoneName')]" + }, + "dnsZoneRG": { + "type": "string", + "value": "[variables('dnsZoneRG')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT346 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT346 new file mode 100644 index 0000000..af150f5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT346 @@ -0,0 +1,947 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/azuredeploy.json", + "/application-workloads/openshift/openshift-container-platform/azuredeploy.parameters.json" + ], + "timestamp": 1642962892898, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/openshift/openshift-container-platform/azuredeploy.json", + "/application-workloads/openshift/openshift-container-platform/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT346", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.recoveryservices/vaults", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/networksecuritygroups", + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT346", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URL 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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/openshift/openshift-container-platform/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Token for the base URL 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." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "Region where the resources should be created in" + }, + "defaultValue": "[resourceGroup().location]" + }, + "clusterName": { + "type": "string", + "defaultValue": "ocpcluster", + "metadata": { + "description": "Cluster resources prefix" + } + }, + "dnsZone": { + "type": "string", + "metadata": { + "description": "Domain name created with the App Service" + }, + "value": "GET-PREREQ-dnsZone" + }, + "dnsZoneRG": { + "type": "string", + "metadata": { + "description": "Resource Group that contains the domain name" + }, + "value": "GET-PREREQ-dnsZoneRG" + }, + "fipsEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable FIPS encryption" + } + }, + "privateOrPublicEndpoints": { + "type": "string", + "defaultValue": "public", + "allowedValues": [ + "public", + "private" + ], + "metadata": { + "description": "Public or private facing endpoints" + } + }, + "newOrExistingNetwork": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Deploy in new cluster or in existing cluster. If existing cluster, make sure the new resources are in the same zone" + } + }, + "existingVnetResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Resource Group for Existing Vnet." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNet", + "metadata": { + "description": "Name of new or existing virtual network" + } + }, + "virtualNetworkCIDR": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "VNet Address Prefix. Minimum address prefix is /16" + } + }, + "masterSubnetName": { + "type": "string", + "defaultValue": "masterSubnet", + "metadata": { + "description": "Name of new or existing master subnet" + } + }, + "masterSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "Master subnet address prefix" + } + }, + "workerSubnetName": { + "type": "string", + "defaultValue": "workerSubnet", + "metadata": { + "description": "Name of new or existing worker subnet" + } + }, + "workerSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.2.0/24", + "metadata": { + "description": "Worker subnet address prefix" + } + }, + "bastionSubnetName": { + "type": "string", + "defaultValue": "bastionSubnet", + "metadata": { + "description": "Name of new or existing bastion subnet" + } + }, + "bastionSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.3.0/27", + "metadata": { + "description": "Worker subnet address prefix" + } + }, + "singleZoneOrMultiZone": { + "type": "string", + "defaultValue": "az", + "allowedValues": [ + "az", + "noha" + ], + "metadata": { + "description": "Deploy to a Single AZ or multiple AZs" + }, + "value": "noha" + }, + "bastionVmSize": { + "type": "string", + "defaultValue": "Standard_F8s_v2", + "metadata": { + "description": "Bastion Host VM size. Use VMs with Premium Storage support only." + } + }, + "masterVmSize": { + "type": "string", + "defaultValue": "Standard_F8s_v2", + "metadata": { + "description": "OpenShift Master VM size. Use VMs with Premium Storage support only." + } + }, + "workerVmSize": { + "type": "string", + "defaultValue": "Standard_F16s_v2", + "metadata": { + "description": "OpenShift Node VM(s) size. Use VMs with Premium Storage support only." + } + }, + "masterInstanceCount": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 1, + 3, + 5 + ], + "metadata": { + "description": "Number of OpenShift masters." + } + }, + "workerInstanceCount": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "metadata": { + "description": "Number of OpenShift nodes" + } + }, + "storageOption": { + "type": "string", + "defaultValue": "portworx", + "allowedValues": [ + "portworx", + "nfs" + ], + "value": "nfs" + }, + "pxSpecUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Portworx Spec URL. See README on how to generate the URL" + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 1024, + "allowedValues": [ + 512, + 1024, + 2048 + ], + "metadata": { + "description": "Size of Datadisk in GB for NFS storage" + }, + "value": 1024 + }, + "enableNfsBackup": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Enable Backup on NFS node" + }, + "value": false + }, + "adminUsername": { + "type": "string", + "minLength": 4, + "metadata": { + "description": "Administrator username on all VMs and first user created for OpenShift login" + }, + "value": "GEN-UNIQUE" + }, + "openshiftUsername": { + "type": "string", + "minLength": 4, + "metadata": { + "description": "User created for OpenShift login" + }, + "value": "GEN-UNIQUE" + }, + "openshiftPassword": { + "type": "securestring", + "minLength": 8, + "metadata": { + "description": "Password for OpenShift login" + }, + "value": "GEN-PASSWORD" + }, + "sshPublicKey": { + "type": "string", + "metadata": { + "description": "SSH public key for all VMs" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "pullSecret": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Pull Secret json or reference to keyvault pull secret is stored" + } + }, + "aadClientId": { + "type": "string", + "metadata": { + "description": "Azure AD Client ID" + }, + "value": "GEN-AZUREAD-AKS-APPID" + }, + "aadClientSecret": { + "type": "securestring", + "metadata": { + "description": "Azure AD Client Secret" + }, + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + } + }, + "variables": { + "networkResourceGroup": "[resourceGroup().name]", + "redHatTags": { + "app": "OpenshiftContainerPlatform", + "version": "4.3.x", + "platform": "AzurePublic" + }, + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-RAW", + "version": "latest" + }, + "bastionHostname": "bastionNode", + "nfsHostname": "nfsNode", + "nfsVmSize": "Standard_F8s_v2", + "workerSecurityGroupName": "worker-nsg", + "masterSecurityGroupName": "master-nsg", + "bastionSecurityGroupName": "bastion-nsg", + "diagStorageAccountName": "[concat('diag', uniqueString(resourceGroup().id))]", + "bastionPublicIpDnsLabel": "[concat('bastiondns', uniqueString(resourceGroup().id))]", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "clusterNodeDeploymentTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/clusternode.json', parameters('_artifactsLocationSasToken')))]", + "openshiftDeploymentTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/openshiftdeploy.json', parameters('_artifactsLocationSasToken')))]", + "openshiftDeploymentScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/deployOpenshift.sh', parameters('_artifactsLocationSasToken')))]", + "nfsInstallScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/setup-nfs.sh', parameters('_artifactsLocationSasToken')))]", + "openshiftDeploymentScriptFileName": "deployOpenshift.sh", + "nfsInstallScriptFileName": "setup-nfs.sh", + "vaultName": "nfsNode-vault", + "backupFabric": "Azure", + "backupPolicyName": "DefaultPolicy", + "protectionContainer": "[concat('iaasvmcontainer;iaasvmcontainerv2;', resourceGroup().name, ';', variables('nfsHostname'))]", + "protectedItem": "[concat('vm;iaasvmcontainerv2;', resourceGroup().name, ';', variables('nfsHostname'))]" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNet", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualNetwork", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "apiVersion": "2019-09-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "bastionSubnet", + "properties": { + "addressPrefix": "10.0.3.0/27", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//bastion-nsg" + } + } + }, + { + "name": "masterSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//master-nsg" + } + } + }, + { + "name": "workerSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//worker-nsg" + } + } + } + ] + }, + "dependsOn": [ + "bastion-nsg", + "master-nsg", + "worker-nsg" + ] + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('bastionPublicIpDnsLabel')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "apiVersion": "2019-09-01", + "tags": { + "displayName": "BastionPublicIP", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[variables('bastionPublicIpDnsLabel')]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "bastionNode-nic", + "location": "[resourceGroup().location]", + "apiVersion": "2019-09-01", + "tags": { + "displayName": "BastionNetworkInterface", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('bastionSecurityGroupName'))]", + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('bastionPublicIpDnsLabel'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "bastionNodeipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/myVNet/bastionSubnet" + }, + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('bastionPublicIpDnsLabel'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/bastion-nsg" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/networkInterfaces", + "name": "nfsNode-nic", + "location": "[resourceGroup().location]", + "apiVersion": "2019-09-01", + "tags": { + "displayName": "NFSNetworkInterface", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNet", + "Microsoft.Network/networkSecurityGroups//worker-nsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "nfsNodeipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets/myVNet/workerSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/worker-nsg" + } + } + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "bastion-nsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "BastionNSG", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "securityRules": [ + { + "name": "allowSSHin_all", + "properties": { + "description": "Allow SSH in from all locations", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('diagStorageAccountName')]", + "location": "[resourceGroup().location]", + "kind": "Storage", + "apiVersion": "2019-06-01", + "tags": { + "displayName": "[variables('diagStorageAccountName')]", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + } + }, + { + "name": "BastionVmDeployment", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-05-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('diagStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('bastionHostname'), '-nic'))]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/clusternode.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "sshKeyPath": { + "value": "/home/GEN-UNIQUE/.ssh/authorized_keys" + }, + "sshPublicKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "dataDiskSize": { + "value": 1024 + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "vmSize": { + "value": "Standard_F8s_v2" + }, + "hostname": { + "value": "bastionNode" + }, + "role": { + "value": "bootnode" + }, + "vmStorageType": { + "value": "Premium_LRS" + }, + "diagStorageAccount": { + "value": "[variables('diagStorageAccountName')]" + }, + "imageReference": { + "value": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-RAW", + "version": "latest" + } + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.3.x", + "platform": "AzurePublic" + } + } + } + } + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "master-nsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "MasterNSG", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "securityRules": [ + { + "name": "allowHTTPS_all", + "properties": { + "description": "Allow HTTPS connections from all locations", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-09-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "worker-nsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "WorkerNSG", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "properties": { + "securityRules": [ + { + "name": "allowHTTPS_all", + "properties": { + "description": "Allow HTTPS connections from all locations", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "allowHTTPIn_all", + "properties": { + "description": "Allow HTTP connections from all locations", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "OpenShiftDeployment", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-05-01", + "dependsOn": [ + "BastionVmDeployment" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/openshiftdeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "[uri(parameters('_artifactsLocation'), '.')]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "openshiftDeploymentScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/deployOpenshift.sh', parameters('_artifactsLocationSasToken')))]" + }, + "openshiftDeploymentScriptFileName": { + "value": "deployOpenshift.sh" + }, + "masterInstanceCount": { + "value": 3 + }, + "workerInstanceCount": { + "value": 3 + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "openshiftUsername": { + "value": "GEN-UNIQUE" + }, + "openshiftPassword": { + "value": "GEN-PASSWORD" + }, + "aadClientId": { + "value": "GEN-AZUREAD-AKS-APPID" + }, + "aadClientSecret": { + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.3.x", + "platform": "AzurePublic" + } + }, + "sshPublicKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "pullSecret": { + "value": "pullSecret" + }, + "virtualNetworkName": { + "value": "myVNet" + }, + "virtualNetworkCIDR": { + "value": null + }, + "pxSpecUrl": { + "value": "" + }, + "storageOption": { + "value": "nfs" + }, + "bastionHostname": { + "value": "bastionNode" + }, + "nfsHostname": { + "value": "nfsNode" + }, + "singleZoneOrMultiZone": { + "value": "noha" + }, + "dnsZone": { + "value": "GET-PREREQ-dnsZone" + }, + "dnsZoneRG": { + "value": "GET-PREREQ-dnsZoneRG" + }, + "masterInstanceType": { + "value": "Standard_F8s_v2" + }, + "workerInstanceType": { + "value": "Standard_F16s_v2" + }, + "clusterName": { + "value": "ocpcluster" + }, + "networkResourceGroup": { + "value": "[resourceGroup().name]" + }, + "masterSubnetName": { + "value": "masterSubnet" + }, + "workerSubnetName": { + "value": "workerSubnet" + }, + "enableFips": { + "value": true + }, + "privateOrPublic": { + "value": "[if(equals(parameters('privateOrPublicEndpoints'), 'private'), 'Internal', 'External')]" + } + } + } + }, + { + "condition": false, + "name": "nfsVmDeployment", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-05-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('diagStorageAccountName'))]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/clusternode.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "sshKeyPath": { + "value": "/home/GEN-UNIQUE/.ssh/authorized_keys" + }, + "sshPublicKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "dataDiskSize": { + "value": 1024 + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "vmSize": { + "value": "Standard_F8s_v2" + }, + "hostname": { + "value": "nfsNode" + }, + "role": { + "value": "datanode" + }, + "vmStorageType": { + "value": "Premium_LRS" + }, + "diagStorageAccount": { + "value": "[variables('diagStorageAccountName')]" + }, + "imageReference": { + "value": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-RAW", + "version": "latest" + } + }, + "redHatTags": { + "value": { + "app": "OpenshiftContainerPlatform", + "version": "4.3.x", + "platform": "AzurePublic" + } + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "nfsNode/installNfsServer", + "location": "[resourceGroup().location]", + "apiVersion": "2019-07-01", + "tags": { + "displayName": "InstallNfsServer", + "app": "(redHatTags).app", + "version": "(redHatTags).version", + "platform": "(redHatTags).platform" + }, + "dependsOn": [ + "nfsVmDeployment" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup-nfs.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash setup-nfs.sh" + } + } + }, + { + "condition": false, + "type": "Microsoft.RecoveryServices/vaults", + "apiVersion": "2019-05-13", + "location": "[resourceGroup().location]", + "name": "nfsNode-vault", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {} + }, + { + "condition": false, + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "apiVersion": "2016-12-01", + "name": "[concat(variables('vaultName'), '/', variables('backupFabric'), '/', variables('protectionContainer'), '/', variables('protectedItem'))]", + "dependsOn": [ + "nfsVmDeployment", + "Microsoft.RecoveryServices/vaults/nfsNode-vault" + ], + "properties": { + "protectedItemType": "Microsoft.Compute/virtualMachines", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/nfsNode-vault/DefaultPolicy", + "sourceResourceId": "Microsoft.Compute/virtualMachines/nfsNode" + } + } + ], + "outputs": { + "Openshift Console URL": { + "type": "string", + "value": "[concat('https://console-openshift-console.apps.', parameters('clusterName'), '.', parameters('dnsZone'))]" + }, + "BastionVM SSH": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('bastionPublicIpDnsLabel')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT347 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT347 new file mode 100644 index 0000000..a9741ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT347 @@ -0,0 +1,690 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/opensis/opensis-cluster-ubuntu/azuredeploy.json", + "/application-workloads/opensis/opensis-cluster-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892961, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opensis/opensis-cluster-ubuntu/azuredeploy.json", + "/application-workloads/opensis/opensis-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT347", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT347", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "mySqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL admin user." + }, + "value": "GEN-PASSWORD" + }, + "namePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "webVMCount": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "Number of web front end VMs to create." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "The size of each web front end VM." + } + }, + "vmSizeDB": { + "type": "string", + "defaultValue": "Standard_A0", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "The size of the database backend VM." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storage')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "14.04.5-LTS", + "nicName": "GEN-UNIQUENic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetNameDB": "SubnetDB", + "subnetPrefixDB": "10.0.1.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUEIP", + "publicDBIPAddressName": "GEN-UNIQUEDBIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUEVM", + "virtualNetworkName": "GEN-UNIQUEVNet", + "availabilitySetName": "GEN-UNIQUEAvSet", + "lbName": "GEN-UNIQUELB", + "installFrontendScriptName": "install_frontend.sh", + "installFrontendCommand": "sh install_frontend.sh GEN-PASSWORD", + "installBackendScriptName": "install_backend.sh", + "installBackendCommand": "sh install_backend.sh GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "GEN-UNIQUEAvSet", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUEIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUEVNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "SubnetDB", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUENiccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUEVNet", + "Microsoft.Network/loadBalancers//GEN-UNIQUELB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUEVNet/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUELB/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUELB/Web-VMcopyindex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUELB/SSH-VMcopyindex()" + } + ] + } + } + ] + }, + "copy": { + "name": "networkInterfacesCopy", + "count": 2 + } + }, + { + "apiVersion": "2015-06-15", + "name": "GEN-UNIQUELB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUEIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUEIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ], + "inboundNatRules": [ + { + "name": "Web-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8080, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2200, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "Web-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8081, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2201, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "Web-VM2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8082, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2202, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "Web-VM3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8083, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2203, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "Web-VM4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 8084, + "backendPort": 8080, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2204, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUELB/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUELB/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUELB/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": "5", + "numberOfProbes": "2" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUEVMcopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/',variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat(variables('nicName'),copyIndex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/',variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUEAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUEVMcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUEVMcopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUENiccopyIndex()" + } + ] + } + }, + "copy": { + "name": "virtualMachinesCopy", + "count": 2 + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUEVMcopyIndex()/newuserscript", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUEVMcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installFrontendScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_frontend.sh GEN-PASSWORD" + } + }, + "copy": { + "name": "extensionsCopy", + "count": 2 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "GEN-UNIQUEAvSetdb", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUEDBIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUEdb" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUENicdb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUEDBIP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUEVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigdb", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUEDBIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUEVNet/SubnetDB" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUEVMdb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/',variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat(variables('nicName'),'db'))]", + "[resourceId('Microsoft.Compute/availabilitySets/',concat(variables('availabilitySetName'),'db'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUEAvSetdb" + }, + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUEVMdb", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUEVMdb_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUENicdb" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUEVMdb/newuserscript", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUEVMdb" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installBackendScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_backend.sh GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT348 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT348 new file mode 100644 index 0000000..850972e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT348 @@ -0,0 +1,339 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/opensis/opensis-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/opensis/opensis-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962892976, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/opensis/opensis-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/opensis/opensis-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT348", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT348", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine. Do not use simple names such as 'admin'." + }, + "value": "GEN-UNIQUE" + }, + "mySqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL admin user." + }, + "value": "GEN-PASSWORD" + }, + "namePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "The size of the VM." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storage')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "14.04.5-LTS", + "nicName": "GEN-UNIQUENic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUEIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUEVM", + "virtualNetworkName": "GEN-UNIQUEVNet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUEVNet/Subnet", + "installScriptName": "install_lamp_opensis.sh", + "installCommand": "sh install_lamp_opensis.sh GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUEIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-80", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUEVNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUENic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUEIP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUEVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUEIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUEVNet/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUEVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUEVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUEVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUENic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUEVM/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUEVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/',variables('installScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_lamp_opensis.sh GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT349 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT349 new file mode 100644 index 0000000..956c4d5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT349 @@ -0,0 +1,271 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/orchard/orchard-cms-video-portal/azuredeploy.json", + "/application-workloads/orchard/orchard-cms-video-portal/azuredeploy.parameters.json" + ], + "timestamp": 1642962892993, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/orchard/orchard-cms-video-portal/azuredeploy.json", + "/application-workloads/orchard/orchard-cms-video-portal/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT349", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.media/mediaservices", + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT349", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "metadata": { + "description": "Name for the Azure Web App (.azurewebsites.net)" + }, + "value": "GEN-UNIQUE" + }, + "dbAdministratorLogin": { + "type": "string", + "metadata": { + "description": "Make sure your login name meets the following requirements - It's a SQL Identifier, and not a typical system name (like admin, administrator, sa, root, dbmanager, loginmanager, etc.), or a built-in database user or role (like dbo, guest, public, etc.). Make sure your name doesn't contain whitespaces, unicode characters, or nonalphabetic characters, and that it doesn't begin with numbers or symbols." + }, + "value": "GEN-UNIQUE" + }, + "dbAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Database admin user password" + }, + "value": "GEN-PASSWORD" + }, + "nonAdminDatabaseUserName": { + "type": "string", + "metadata": { + "description": "Non-admin database user. Make sure your login name meets the following requirements - It's a SQL Identifier, and not a typical system name (like admin, administrator, sa, root, dbmanager, loginmanager, etc.), or a built-in database user or role (like dbo, guest, public, etc.). Make sure your name doesn't contain whitespaces, unicode characters, or nonalphabetic characters, and that it doesn't begin with numbers or symbols." + }, + "value": "GEN-UNIQUE" + }, + "nonAdminDatabasePassword": { + "type": "securestring", + "metadata": { + "description": "Non-admin Database User password" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "appServicePlanName": "[concat('serviceplan', uniqueString(resourceGroup().id))]", + "appServiceTier": "Basic", + "appServiceWorkerSize": "0", + "dbServerName": "[concat('sqlserver', uniqueString(resourceGroup().id))]", + "dbName": "[concat('sqldatabase', uniqueString(resourceGroup().id))]", + "dbEdition": "Standard", + "mediaServicesAccountName": "[concat('media', uniqueString(resourceGroup().id))]", + "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS" + }, + "resources": [ + { + "name": "[variables('dbServerName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2014-04-01-preview", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "apiVersion": "2014-04-01-preview", + "name": "[variables('dbName')]", + "type": "databases", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Sql/servers/', variables('dbServerName'))]" + ], + "properties": { + "edition": "Standard", + "collation": "[string('SQL_Latin1_General_CP1_CI_AS')]", + "requestedServiceObjectiveId": "F1173C43-91BD-4AAA-973C-54E79E15235B" + } + }, + { + "apiVersion": "2014-04-01-preview", + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Sql/servers/', variables('dbServerName'))]" + ], + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + } + ] + }, + { + "apiVersion": "2014-06-01", + "name": "[variables('appServicePlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "[variables('appServicePlanName')]", + "appServiceTier": "Basic", + "workerSize": "0", + "hostingEnvironment": "", + "numberOfWorkers": 1 + } + }, + { + "type": "Microsoft.Media/mediaServices", + "name": "[variables('mediaServicesAccountName')]", + "apiVersion": "2015-10-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "storageAccounts": [ + { + "id": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "isPrimary": true + } + ] + }, + "resources": [] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2016-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2015-02-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/Sites", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName')))]": "empty" + }, + "dependsOn": [ + "[concat('Microsoft.Web/serverFarms/', variables('appServicePlanName'))]" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]", + "hostingEnvironment": "" + }, + "resources": [ + { + "apiVersion": "2015-04-01", + "name": "MSDeploy", + "type": "Extensions", + "dependsOn": [ + "[concat('Microsoft.Web/Sites/', parameters('appName'))]", + "[concat('Microsoft.Sql/servers/', variables('dbServerName'), '/databases/', variables('dbName'))]", + "[concat('Microsoft.Media/mediaservices/', variables('mediaServicesAccountName'))]" + ], + "properties": { + "packageUri": "https://auxmktplceprod.blob.core.windows.net/packages/Orchard.Web.1.10.x-AMS.zip", + "dbType": "SQL", + "connectionString": "[concat('Data Source=tcp:', reference(concat('Microsoft.Sql/servers/', variables('dbServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('dbName'), ';User Id=', parameters('dbAdministratorLogin'), '@', variables('dbServerName'), ';Password=', parameters('dbAdministratorLoginPassword'), ';')]", + "setParameters": { + "Application Path": "GEN-UNIQUE", + "Database Server": "[reference(concat('Microsoft.Sql/servers/', variables('dbServerName'))).fullyQualifiedDomainName]", + "Database Name": "[variables('dbName')]", + "Database Username": "GEN-UNIQUE", + "Database Password": "GEN-PASSWORD", + "Database Administrator": "GEN-UNIQUE", + "Database Administrator Password": "GEN-PASSWORD" + } + } + }, + { + "apiVersion": "2015-04-01", + "name": "connectionstrings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', parameters('appName'))]", + "[concat('Microsoft.Sql/servers/', variables('dbServerName'), '/databases/', variables('dbName'))]", + "[concat('Microsoft.Web/Sites/', parameters('appName'), '/Extensions/MSDeploy')]" + ], + "properties": { + "defaultConnection": { + "value": "[concat('Data Source=tcp:', reference(concat('Microsoft.Sql/servers/', variables('dbServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('dbName'), ';User Id=', parameters('dbAdministratorLogin'), '@', variables('dbServerName'), ';Password=', parameters('dbAdministratorLoginPassword'), ';')]", + "type": "SQLAzure" + } + } + }, + { + "apiVersion": "2015-04-01", + "name": "appsettings", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', parameters('appName'))]", + "[concat('Microsoft.Media/mediaservices/', variables('mediaServicesAccountName'))]", + "[concat('Microsoft.Web/Sites/', parameters('appName'), '/Extensions/MSDeploy')]" + ], + "properties": { + "defaultRecipe": "Video Portal", + "Azure.MediaServices.AccountName": "[variables('mediaServicesAccountName')]", + "Azure.MediaServices.AccountKey": "[listKeys(resourceId('Microsoft.Media/mediaservices', variables('mediaServicesAccountName')), providers('Microsoft.Media', 'mediaservices')'2015-10-01'0]).primaryKey]", + "Azure.MediaServices.StorageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2016-01-01').keys[0].value]" + } + }, + { + "apiVersion": "2015-04-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE", + "Microsoft.Web/Sites/GEN-UNIQUE/Extensions/MSDeploy" + ], + "properties": { + "phpVersion": "off", + "netFrameworkVersion": "v4.5", + "use32BitWorkerProcess": "true", + "webSocketsEnabled": false, + "alwaysOn": "true", + "httpLoggingEnabled": true, + "logsDirectorySizeLimit": 40 + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT35 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT35 new file mode 100644 index 0000000..1fd483d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT35 @@ -0,0 +1,311 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/blockchain/eris-platform/azuredeploy.json", + "/application-workloads/blockchain/eris-platform/azuredeploy.parameters.json" + ], + "timestamp": 1642962883613, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/blockchain/eris-platform/azuredeploy.json", + "/application-workloads/blockchain/eris-platform/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT35", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT35", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "This is the the username you wish to assign to your VMs admin account" + }, + "value": "GEN-UNIQUE" + }, + "servicesToStart": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Comma separated list of the services to start. Example input: btcd,eth,ipfs,openbazaar" + }, + "value": "keys" + }, + "chainsToStart": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Comma separated list of the chains to start. Example input: simplechain" + }, + "value": "simplechain" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_A1" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "defaultValue": "[deployment().properties.templateLink.uri]", + "type": "string", + "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": { + "defaultValue": "", + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "nicName": "VMNic", + "addressPrefix": "10.0.0.0/16", + "imagePublisher": "Canonical", + "imageVersion": "latest", + "imageSKU": "14.04.5-LTS", + "imageOffer": "UbuntuServer", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUE", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "virtualNetworkName": "WPVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'eris')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "WPVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE", + "Microsoft.Network/virtualNetworks//WPVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/WPVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/newuserscript", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('setup.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash setup.sh GEN-UNIQUE keys simplechain" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT350 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT350 new file mode 100644 index 0000000..81503fa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT350 @@ -0,0 +1,329 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/parse/docker-parse/azuredeploy.json", + "/application-workloads/parse/docker-parse/azuredeploy.parameters.json" + ], + "timestamp": 1642962893005, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/parse/docker-parse/azuredeploy.json", + "/application-workloads/parse/docker-parse/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT350", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT350", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of your virtual machine, running Docker, MongoDB, and Parse" + }, + "value": "Standard_D2_v3" + }, + "parseAppId": { + "type": "securestring", + "metadata": { + "description": "The application id to host with this server instance." + }, + "value": "GEN-UNIQUE" + }, + "parseMasterKey": { + "type": "securestring", + "metadata": { + "description": "The master key to use for overriding ACL security." + }, + "value": "GEN-UNIQUE" + }, + "parseFileKey": { + "defaultValue": "", + "type": "securestring", + "metadata": { + "description": "For migrated apps, this is necessary to provide access to files already hosted on Parse." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04-LTS", + "nsgName": "myNSG", + "nicName": "myVMNic", + "extensionName": "DockerExtension", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'parse')]", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyDockerVM", + "virtualNetworkName": "MyVNET", + "nsgID": "Microsoft.Network/networkSecurityGroups/myNSG", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/myNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "myNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "http", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyDockerVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MyDockerVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyDockerVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyDockerVM/DockerExtension", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyDockerVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "environment": { + "APP_ID": "GEN-UNIQUE", + "MASTER_KEY": "GEN-UNIQUE", + "FILE_KEY": "GEN-UNIQUE" + } + }, + "settings": { + "compose": { + "parse": { + "image": "felixrieseberg/parse", + "ports": [ + "80:8080" + ], + "restart": "always" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT351 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT351 new file mode 100644 index 0000000..500c5fb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT351 @@ -0,0 +1,439 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/perforce/perforce-helix-core-server/azuredeploy.json", + "/application-workloads/perforce/perforce-helix-core-server/azuredeploy.parameters.json" + ], + "timestamp": 1642962893023, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/perforce/perforce-helix-core-server/azuredeploy.json", + "/application-workloads/perforce/perforce-helix-core-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT351", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT351", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location where these resources will be deployed." + } + }, + "OS": { + "type": "string", + "allowedValues": [ + "Ubuntu 18.04 LTS", + "CentOS 7.x", + "RHEL 7.x" + ], + "defaultValue": "CentOS 7.x", + "metadata": { + "description": "The operating system of the VM." + } + }, + "VMSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "Please select the size of the VM you wish to deploy. Read more about sizing options here: https://docs.microsoft.com/en-us/azure/virtual-machines/linux/sizes-general. Compute optimized instances recommended for production use, e.g. Fsv2 series" + } + }, + "dataDiskSize": { + "type": "int", + "minValue": 10, + "maxValue": 2048, + "defaultValue": 50, + "metadata": { + "description": "Please select the size of the data disk you wish to deploy (value is integer GB) to hold your metadata, logs and depot (archive files). This can be any value up to 2TB (2048 GB)." + } + }, + "p4Port": { + "type": "int", + "defaultValue": 1666, + "metadata": { + "description": "P4PORT value to connect to server (via ssl)" + } + }, + "swarmPort": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Port for Swarm (Apache) to be setup on." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "adminSSHPubKey": { + "type": "securestring", + "metadata": { + "description": "SSH Public Key for the Virtual Machine." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "source_CIDR": { + "type": "string", + "defaultValue": "*", + "metadata": { + "description": "CIDR block for SSH source - limit to your IP for secure access." + } + }, + "helix_admin_password": { + "type": "securestring", + "metadata": { + "description": "Helix Core Server superuser password (user perforce)." + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "virtualNetworkName": "HXVNET", + "NSGName": "HXNSG", + "publicIPAddressType": "Dynamic", + "addressPrefix": "10.166.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.166.6.0/24", + "numberOfInstances": 1, + "linuxscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/configure-linux.sh', parameters('_artifactsLocationSasToken')))]", + "virtualMachineSize": "Standard_B2s", + "imageReference": { + "Ubuntu 18.04 LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "CentOS 7.x": { + "publisher": "OpenLogic", + "offer": "CentOS-LVM", + "sku": "7-LVM", + "version": "latest" + }, + "RHEL 7.x": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-LVM", + "version": "latest" + } + }, + "dataDiskSize": 50, + "publicIpName": "[substring(uniqueString(resourceGroup().id), 0, 6)]", + "LinuxScriptParameters": " -w GEN-PASSWORD -p 1666 -s 80", + "LiCmdWrapper": "bash ./configure-linux.sh -w GEN-PASSWORD -p 1666 -s 80", + "LinuxsecurityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": 80, + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "p4d-rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": 1666, + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + } + ], + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "HXVNET", + "apiVersion": "2019-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "HXNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.166.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.166.6.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/HXNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "HXNSG", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HXNSG" + }, + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": 80, + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "p4d-rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": 1666, + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat('hxpip', copyindex(1))]", + "apiVersion": "2019-04-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "PipLoop", + "count": 1 + }, + "dependsOn": [ + "HXVNET" + ], + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('a', variables('publicIpName'), copyIndex(1))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat('hxnic', copyIndex(1))]", + "apiVersion": "2019-04-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 1 + }, + "dependsOn": [ + "[variables('virtualNetworkName')]", + "[resourceId('Microsoft.Network/publicIPAddresses', concat('hxpip', copyIndex(1)))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('hxpip', copyIndex(1)))]" + }, + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/HXVNET/Subnet-1" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[concat('helixcore', copyIndex(1))]", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": 1 + }, + "dependsOn": [ + "nicLoop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B2s" + }, + "osProfile": { + "computerName": "[concat('helixcorevm', copyIndex(1))]", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "(imageReference)[parameters(OS)]", + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 50, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat('hxnic', copyIndex(1)))]" + } + ] + } + }, + "resources": [ + { + "name": "[concat('helixcore', copyIndex(1),'/CustomScript')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2019-07-01", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', concat('helixcore', copyIndex(1)))]" + ], + "tags": { + "displayName": "linuxappdeploy" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789 + }, + "protectedSettings": { + "commandToExecute": "bash ./configure-linux.sh -w GEN-PASSWORD -p 1666 -s 80", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/configure-linux.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT352 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT352 new file mode 100644 index 0000000..0daf4c4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT352 @@ -0,0 +1,314 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/phabricator/phabricator-on-ubuntu/azuredeploy.json", + "/application-workloads/phabricator/phabricator-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962893038, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/phabricator/phabricator-on-ubuntu/azuredeploy.json", + "/application-workloads/phabricator/phabricator-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT352", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT352", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin UserName for the Linux VM" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "Size for the VM" + }, + "value": "Standard_A2" + }, + "vmName": { + "type": "string", + "defaultValue": "myLinuxVM", + "metadata": { + "description": "VM name for the resource inside Azure" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "DefaultSubnet", + "subnet1Prefix": "10.0.0.0/24", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'phab')]", + "publicIPAddressType": "Dynamic", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "phabricatorvip", + "location": "[resourceGroup().location]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSKU": "16.04.0-LTS", + "virtualNetworkName": "phabricatorvnet", + "nicName": "phabricatornic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "phabricatorvip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-80", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "phabricatorvnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "phabricatornic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//phabricatorvip", + "Microsoft.Network/virtualNetworks//phabricatorvnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/phabricatorvip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/phabricatorvnet/DefaultSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/phabricatornic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/installphabricator", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/phabricator-install-ubuntu.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('sudo sh phabricator-install-ubuntu.sh ', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT353 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT353 new file mode 100644 index 0000000..be75984 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT353 @@ -0,0 +1,457 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962893049, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT353", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT353", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "domainName": { + "type": "string", + "defaultValue": "[concat('postgres-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Domain name of the public jumpbox" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Virtual machine administrator username" + }, + "value": "GEN-UNQIUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Virtual machine administrator password" + }, + "value": "GEN-PASSWORD" + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Small", + "allowedValues": [ + "Small", + "Medium", + "Large", + "XLarge" + ], + "metadata": { + "description": "T-shirt size of the PostgreSQL deployment" + } + }, + "replicatorPassword": { + "type": "securestring", + "metadata": { + "description": "The replication password used for PostgreSQL streaming replication" + }, + "value": "GEN-PASSWORD" + }, + "jumpbox": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "The flag allowing to enable or disable provisioning of the jumpbox VM that can be used to access the PostgreSQL environment" + } + }, + "jumpBoxSize": { + "type": "string", + "defaultValue": "Standard_A1_V2", + "metadata": { + "description": "Size of the jumpbox VM, ignored if jumbox is disabled." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vnet", + "metadata": { + "description": "Virtual network name" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "deploymentSize": { + "Small": { + "vmSize": "Standard_A1_v2", + "diskSize": 1023, + "diskCount": 2, + "vmCount": 2, + "slaveCount": 1, + "storage": { + "count": 1, + "pool": "db", + "map": [ + 0, + 0 + ], + "jumpbox": 0 + } + }, + "Medium": { + "vmSize": "Standard_A2_v2", + "diskSize": 1023, + "diskCount": 8, + "vmCount": 2, + "slaveCount": 1, + "storage": { + "count": 2, + "pool": "db", + "map": [ + 0, + 1 + ], + "jumpbox": 0 + } + }, + "Large": { + "vmSize": "Standard_A4_v2", + "diskSize": 1023, + "diskCount": 16, + "vmCount": 3, + "slaveCount": 2, + "storage": { + "count": 2, + "pool": "db", + "map": [ + 0, + 1, + 1 + ], + "jumpbox": 0 + } + }, + "XLarge": { + "vmSize": "Standard_A8_v2", + "diskSize": 1023, + "diskCount": 16, + "vmCount": 4, + "slaveCount": 3, + "storage": { + "count": 2, + "pool": "db", + "map": [ + 0, + 0, + 1, + 1 + ], + "jumpbox": 0 + } + } + }, + "jumpboxTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('jumpbox-resources.json', parameters('_artifactsLocationSasToken')))]", + "databaseTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('database-resources.json', parameters('_artifactsLocationSasToken')))]", + "osSettings": { + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('install_postgresql.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkSettings": { + "vnetName": "vnet", + "addressPrefix": "10.0.0.0/16", + "subnets": { + "dmz": { + "name": "dmz", + "prefix": "10.0.0.0/24", + "vnet": "vnet" + }, + "data": { + "name": "data", + "prefix": "10.0.1.0/24", + "vnet": "vnet" + } + } + }, + "availabilitySetSettings": { + "name": "pgsqlAvailabilitySet", + "fdCount": 2, + "udCount": 5 + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "vnetName": "vnet", + "addressPrefix": "10.0.0.0/16", + "subnets": { + "dmz": { + "name": "dmz", + "prefix": "10.0.0.0/24", + "vnet": "vnet" + }, + "data": { + "name": "data", + "prefix": "10.0.1.0/24", + "vnet": "vnet" + } + } + } + }, + "availabilitySetSettings": { + "value": { + "name": "pgsqlAvailabilitySet", + "fdCount": 2, + "udCount": 5 + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "master-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('database-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "replicatorPassword": { + "value": "GEN-PASSWORD" + }, + "osSettings": { + "value": { + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('install_postgresql.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + } + }, + "subnet": { + "value": "(networkSettings).subnets.data" + }, + "commonSettings": { + "value": { + "adminUsername": "GEN-UNQIUE", + "namespace": "ms" + } + }, + "machineSettings": { + "value": { + "vmSize": "(deploymentSize)[parameters(tshirtSize)].vmSize", + "diskCount": "(deploymentSize)[parameters(tshirtSize)].diskCount", + "diskSize": "(deploymentSize)[parameters(tshirtSize)].diskSize", + "vmCount": 1, + "availabilitySet": "(availabilitySetSettings).name" + } + }, + "masterIpAddress": { + "value": "0" + }, + "dbType": { + "value": "MASTER" + } + } + } + }, + { + "name": "slave-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/master-node" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('database-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "replicatorPassword": { + "value": "GEN-PASSWORD" + }, + "osSettings": { + "value": { + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('install_postgresql.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + } + }, + "subnet": { + "value": "(networkSettings).subnets.data" + }, + "commonSettings": { + "value": { + "adminUsername": "GEN-UNQIUE", + "namespace": "sl" + } + }, + "machineSettings": { + "value": { + "vmSize": "(deploymentSize)[parameters(tshirtSize)].vmSize", + "diskCount": "(deploymentSize)[parameters(tshirtSize)].diskCount", + "diskSize": "(deploymentSize)[parameters(tshirtSize)].diskSize", + "vmCount": "(deploymentSize)[parameters(tshirtSize)].slaveCount", + "availabilitySet": "(availabilitySetSettings).name" + } + }, + "masterIpAddress": { + "value": "[reference('master-node').outputs.masterip.value]" + }, + "dbType": { + "value": "SLAVE" + } + } + } + }, + { + "condition": false, + "name": "jumpbox", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('jumpbox-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "dnsName": { + "value": "[concat('postgres-', uniqueString(resourceGroup().id))]" + }, + "commonSettings": { + "value": { + "adminUsername": "GEN-UNQIUE", + "namespace": "jumpbox" + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "subnet": { + "value": "(networkSettings).subnets.dmz" + }, + "osSettings": { + "value": { + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('install_postgresql.sh', parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + } + }, + "vmSize": { + "value": "Standard_A1_V2" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT354 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT354 new file mode 100644 index 0000000..4276ef3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT354 @@ -0,0 +1,188 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/database-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962893065, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/database-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT354", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT354", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object" + }, + "osSettings": { + "type": "object" + }, + "adminPassword": { + "type": "securestring", + "value": "GEN-PASSWORD" + }, + "machineSettings": { + "type": "object" + }, + "subnet": { + "type": "object" + }, + "replicatorPassword": { + "type": "securestring", + "value": "GEN-PASSWORD" + }, + "masterIpAddress": { + "type": "string" + }, + "dbType": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "value": "GEN-UNQIUE" + } + }, + "variables": { + "namespace": "commonSettings", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "vmName": "commonSettingsvm", + "nicName": "commonSettingsnic", + "adminUsername": "commonSettings", + "vmCount": "machineSettings" + }, + "resources": [ + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "commonSettingsniccopyindex()", + "location": "location", + "copy": { + "name": "nicCopyLoop", + "count": "machineSettings" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "commonSettingsvmcopyindex()", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + ], + "copy": { + "name": "vmCopyLoop", + "count": "machineSettings" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/machineSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "commonSettingsvmcopyindex()", + "adminUsername": "commonSettings", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "name": "commonSettingsvmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": "machineSettings", + "input": { + "diskSizeGB": "machineSettings", + "lun": "[copyIndex('dataDisks')]", + "caching": "None", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/commonSettingsniccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "commonSettingsvmcopyindex()/install_postgresql", + "apiVersion": "2019-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/commonSettingsvmcopyindex()" + ], + "copy": { + "name": "scriptCopyLoop", + "count": "machineSettings" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash install_postgresql.sh -m masterIpAddress -s subnet -t dbType -p GEN-PASSWORD" + } + } + } + ], + "outputs": { + "masterip": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', concat(variables('nicName'),0))).ipConfigurations[0].properties.privateIPAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT355 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT355 new file mode 100644 index 0000000..97958a2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT355 @@ -0,0 +1,146 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/jumpbox-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962893118, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/jumpbox-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT355", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT355", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object" + }, + "osSettings": { + "type": "object" + }, + "adminPassword": { + "type": "securestring", + "value": "GEN-PASSWORD" + }, + "subnet": { + "type": "object" + }, + "dnsName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "adminUsername": { + "value": "GEN-UNQIUE" + }, + "replicatorPassword": { + "value": "GEN-PASSWORD" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "nicName": "commonSettingsnic", + "vmName": "commonSettingsvm", + "publicIpName": "commonSettingspublicIp" + }, + "resources": [ + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "commonSettingspublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsName" + } + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "commonSettingsnic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/commonSettingspublicIp" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/commonSettingspublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "commonSettingsvm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/commonSettingsnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "commonSettingsvm", + "adminUsername": "commonSettings", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": "osSettings", + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/commonSettingsnic" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT356 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT356 new file mode 100644 index 0000000..ef5e3ec --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT356 @@ -0,0 +1,100 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/shared-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962893140, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-on-ubuntu/shared-resources.json", + "/application-workloads/postgre/postgresql-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT356", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT356", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "availabilitySetSettings": { + "type": "object" + }, + "networkSettings": { + "type": "object" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "value": "GEN-UNQIUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "replicatorPassword": { + "value": "GEN-PASSWORD" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "availabilitySetSettings", + "apiVersion": "2019-12-01", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": "availabilitySetSettings", + "platformUpdateDomainCount": "availabilitySetSettings" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT357 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT357 new file mode 100644 index 0000000..ea44558 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT357 @@ -0,0 +1,259 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/postgre/postgresql-standalone-server-ubuntu/azuredeploy.json", + "/application-workloads/postgre/postgresql-standalone-server-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962893152, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/postgre/postgresql-standalone-server-ubuntu/azuredeploy.json", + "/application-workloads/postgre/postgresql-standalone-server-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT357", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT357", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "DNS Name for the publicly accessible node. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "VmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "The size of the virtual machines used when provisioning" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS", + "16.04.0-LTS", + "14.04.5-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyubuntuVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyubuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "MyubuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyubuntuVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyubuntuVM/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyubuntuVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_postgresql.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash install_postgresql.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT358 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT358 new file mode 100644 index 0000000..954d1ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT358 @@ -0,0 +1,333 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/pubnub/pubnub-eventhub-bridge/azuredeploy.json", + "/application-workloads/pubnub/pubnub-eventhub-bridge/azuredeploy.parameters.json" + ], + "timestamp": 1642962893165, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/pubnub/pubnub-eventhub-bridge/azuredeploy.json", + "/application-workloads/pubnub/pubnub-eventhub-bridge/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT358", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT358", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "Event Hub Namespace": { + "type": "string", + "metadata": { + "description": "A unique Namespace. It's suggested to replace the 'pn-' prefix with your own unique prefix, such as your company name, and add a '-suffix' at the end, where the suffix is also unique." + }, + "value": "GEN-UNIQUE-11" + }, + "Azure Webjob Name": { + "type": "string", + "metadata": { + "description": "A unique Web Job Name. Follow the same naming conventions as for Event Hub Namespaces to ensure you have a unique, legal string." + }, + "value": "GEN-UNIQUE-11" + }, + "PubNub Ingress Channel": { + "type": "string", + "defaultValue": "pnInput", + "metadata": { + "description": "A channel name that the PubNub Subscriber should listen on. If you wish for the subscriber to listen on multiple channels, enter a CSV list of channels, with no spaces." + } + }, + "PubNub Egress Channel": { + "type": "string", + "defaultValue": "pnOutput", + "metadata": { + "description": "A channel name that the PubNub Publisher should publish back out on." + } + }, + "PubNub Announce Channel": { + "type": "string", + "defaultValue": "pnAnnounce", + "metadata": { + "description": "A channel name that the PubNub Deployment script will alert on when the deployment has completed. If you don't intend on using this, just set this value to all caps, case-sensitive DISABLED. See below for more information on using the Provisioning Listener and the Announce channel." + } + }, + "PubNub Publish Key": { + "type": "string", + "defaultValue": "demo-36", + "metadata": { + "description": "The PubNub Publish API Key that the PubNub component should publish against." + } + }, + "PubNub Subscribe Key": { + "type": "string", + "defaultValue": "demo-36", + "metadata": { + "description": "The PubNub Subscribe API Key that the PubNub component should subscribe against." + } + }, + "Azure Service Plan": { + "type": "string", + "metadata": { + "description": "Must be USBasic unless you ensure all components are in the same region. See README for more information." + }, + "value": "GEN-UNIQUE-11" + }, + "Azure Ingress Event Hub Name": { + "defaultValue": "infromsubscriberhub", + "type": "string", + "metadata": { + "description": "The name you wish to give the Ingress (Input) Event Hub. You can accept the default, as the Event Hub name needs only to be unique within a unique Event Hub Namespace." + } + }, + "Azure Egress Event Hub Name": { + "defaultValue": "outtopnpublisher", + "type": "string", + "metadata": { + "description": "The name you wish to give the Egress (Output) Event Hub. You can accept the default, as the Event Hub name needs only to be unique within a unique Event Hub Namespace." + } + }, + "Azure Ingress SAS Policy Name": { + "defaultValue": "infromsubscriberhub", + "type": "string", + "metadata": { + "description": "The name you wish to give the Ingress (Input) Event Hub SAS Policy. You can accept the default, as the Event Hub SAS Policy name needs only to be unique within a unique Event Hub Namespace." + } + }, + "Azure Egress SAS Policy Name": { + "defaultValue": "outtopublisherhub", + "type": "string", + "metadata": { + "description": "The name you wish to give the Egress (Output) Event Hub SAS Policy. You can accept the default, as the Event Hub SAS Policy name needs only to be unique within a unique Event Hub Namespace." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sbVersion": "2015-08-01", + "ehInAuthorizationRuleResourceId": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules/GEN-UNIQUE-11/infromsubscriberhub/infromsubscriberhub", + "ehOutAuthorizationRuleResourceId": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules/GEN-UNIQUE-11/outtopnpublisher/outtopublisherhub", + "endpoint": "[if(contains(parameters('location'), 'gov'), '.azurewebsites.us', '.azurewebsites.net')]" + }, + "resources": [ + { + "comments": "Generalized from resource: '/subscriptions/38ccde7a-8dbd-46b4-a0c6-71201ffab311/resourcegroups/AutoNub/providers/Microsoft.EventHub/namespaces/AutoNubEventHub'.", + "type": "Microsoft.EventHub/namespaces", + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "name": "GEN-UNIQUE-11", + "apiVersion": "2018-01-01-preview", + "location": "[resourceGroup().location]", + "properties": {}, + "resources": [ + { + "comments": "Generalized from resource: '/subscriptions/38ccde7a-8dbd-46b4-a0c6-71201ffab311/resourcegroups/AutoNub/providers/Microsoft.EventHub/namespaces/AutoNubEventHub/eventhubs/infrompnsubscriber'.", + "type": "eventhubs", + "name": "infromsubscriberhub", + "dependsOn": [ + "Microsoft.EventHub/namespaces/GEN-UNIQUE-11" + ], + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "properties": { + "messageRetentionInDays": 1, + "partitionCount": 2 + }, + "resources": [ + { + "comments": "Generalized from resource: '/subscriptions/38ccde7a-8dbd-46b4-a0c6-71201ffab311/resourcegroups/AutoNub/providers/Microsoft.EventHub/namespaces/AutoNubEventHub/eventhubs/infrompnsubscriber/authorizationRules/infromsubscriberhub'.", + "type": "authorizationRules", + "dependsOn": [ + "Microsoft.EventHub/namespaces/eventhubs/GEN-UNIQUE-11/infromsubscriberhub" + ], + "name": "infromsubscriberhub", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "properties": { + "rights": [ + "Send", + "Listen" + ] + } + } + ] + }, + { + "comments": "Generalized from resource: '/subscriptions/38ccde7a-8dbd-46b4-a0c6-71201ffab311/resourcegroups/AutoNub/providers/Microsoft.EventHub/namespaces/AutoNubEventHub/eventhubs/outtopnpublisher'.", + "type": "eventhubs", + "name": "outtopnpublisher", + "dependsOn": [ + "Microsoft.EventHub/namespaces/GEN-UNIQUE-11", + "Microsoft.EventHub/namespaces/eventhubs/GEN-UNIQUE-11/infromsubscriberhub" + ], + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "properties": { + "messageRetentionInDays": 1, + "partitionCount": 2 + }, + "resources": [ + { + "comments": "Generalized from resource: '/subscriptions/38ccde7a-8dbd-46b4-a0c6-71201ffab311/resourcegroups/AutoNub/providers/Microsoft.EventHub/namespaces/AutoNubEventHub/eventhubs/outtopnpublisher/authorizationRules/outtopublisherhub'.", + "type": "authorizationRules", + "dependsOn": [ + "Microsoft.EventHub/namespaces/eventhubs/GEN-UNIQUE-11/outtopnpublisher" + ], + "name": "outtopublisherhub", + "apiVersion": "2017-04-01", + "location": "[resourceGroup().location]", + "properties": { + "rights": [ + "Send", + "Listen" + ] + } + } + ] + } + ] + }, + { + "comments": "Generalized from resource: '/subscriptions/38ccde7a-8dbd-46b4-a0c6-71201ffab311/resourceGroups/AutoNub/providers/Microsoft.Web/serverfarms/USWestBasic'.", + "type": "Microsoft.Web/serverfarms", + "sku": { + "name": "B1", + "tier": "Basic", + "size": "B1", + "family": "B", + "capacity": 1 + }, + "name": "GEN-UNIQUE-11", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE-11", + "numberOfWorkers": 1 + } + }, + { + "comments": "Generalized from resource: '/subscriptions/38ccde7a-8dbd-46b4-a0c6-71201ffab311/resourceGroups/AutoNub/providers/Microsoft.Web/sites/pnwebjob'.", + "type": "Microsoft.Web/sites", + "name": "GEN-UNIQUE-11", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUE-11", + "hostNames": [ + "GEN-UNIQUE-11[if(contains(parameters('location'), 'gov'), '.azurewebsites.us', '.azurewebsites.net')]" + ], + "enabledHostNames": [ + "GEN-UNIQUE-11[if(contains(parameters('location'), 'gov'), '.azurewebsites.us', '.azurewebsites.net')]", + "GEN-UNIQUE-11.scm[if(contains(parameters('location'), 'gov'), '.azurewebsites.us', '.azurewebsites.net')]" + ], + "hostNameSslStates": [ + { + "name": "GEN-UNIQUE-11[if(contains(parameters('location'), 'gov'), '.azurewebsites.us', '.azurewebsites.net')]", + "sslState": 0, + "ipBasedSslState": 0 + }, + { + "name": "GEN-UNIQUE-11.scm[if(contains(parameters('location'), 'gov'), '.azurewebsites.us', '.azurewebsites.net')]", + "sslState": 0, + "ipBasedSslState": 0 + } + ], + "serverFarmId": "Microsoft.Web/serverfarms/GEN-UNIQUE-11" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE-11" + ], + "properties": { + "alwaysOn": true + } + }, + { + "apiVersion": "2020-06-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE-11" + ], + "properties": { + "RepoUrl": "https://github.com/pubnub/azureEventHubBridge.git", + "branch": "master", + "IsManualIntegration": true + } + }, + { + "apiVersion": "2020-06-01", + "name": "connectionstrings", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE-11", + "Microsoft.Web/Sites/sourcecontrols/GEN-UNIQUE-11/web" + ], + "properties": { + "PNSubChannel": { + "value": "pnInput", + "type": "custom" + }, + "PNPubChannel": { + "value": "pnOutput", + "type": "custom" + }, + "PNAnnounceChannel": { + "value": "pnAnnounce", + "type": "custom" + }, + "PNPublishKey": { + "value": "demo-36", + "type": "custom" + }, + "PNSubscribeKey": { + "value": "demo-36", + "type": "custom" + }, + "EHInConnectionString": { + "value": "[listkeys(variables('ehInAuthorizationRuleResourceId'), variables('sbVersion')).primaryConnectionString]", + "type": "custom" + }, + "EHOutConnectionString": { + "value": "[listkeys(variables('ehOutAuthorizationRuleResourceId'), variables('sbVersion')).primaryConnectionString]", + "type": "custom" + } + } + } + ], + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE-11" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT359 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT359 new file mode 100644 index 0000000..bb942b8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT359 @@ -0,0 +1,294 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/puppet/puppet-agent-linux/azuredeploy.json", + "/application-workloads/puppet/puppet-agent-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962893177, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/puppet/puppet-agent-linux/azuredeploy.json", + "/application-workloads/puppet/puppet-agent-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT359", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT359", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of vm, e.g: Standard_D2" + }, + "value": "Standard_D2_v3" + }, + "username": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine, e.g: joetheadmin." + }, + "value": "GEN-UNIQUE" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS prefix for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE-11" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-13" + }, + "pupmstrFQDN": { + "type": "string", + "metadata": { + "description": "FQDN of your PE box, e.g: pupmstr.cloudapp.net" + }, + "defaultValue": "pupmstr.cloudapp.net", + "value": "pupmstr.cloudapp.net" + }, + "pupmstrIP": { + "type": "string", + "metadata": { + "description": "IP of your PE box, e.g: 192.168.1.1" + }, + "defaultValue": "192.168.1.1", + "value": "192.168.1.1" + }, + "pupmstrInternalFQDN": { + "type": "string", + "metadata": { + "description": "Internal FQDN of your PE box, e.g: pupmstr.pupmstr.d6.internal.cloudapp.net. Get it from node requests page in PE Console." + }, + "defaultValue": "pupmstr.pupmstr.d6.internal.cloudapp.net", + "value": "pupmstr.pupmstr.d9.internal.cloudapp.net" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "scenarioPrefix": "puppetAgentLinux", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "18.04-LTS", + "nicName": "puppetAgentLinuxNic", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "puppetAgentLinuxSubnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "puppetAgentLinuxPublicIp", + "publicIPAddressType": "Dynamic", + "vmName": "puppetAgentLinuxVM", + "virtualNetworkName": "puppetAgentLinuxVnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/puppetAgentLinuxVnet/puppetAgentLinuxSubnet", + "fileUris": "[uri(parameters('_artifactsLocation'), concat('scripts/install_puppet_agent.sh', parameters('_artifactsLocationSasToken')))]", + "commandToExecute": "sh install_puppet_agent.sh 192.168.1.1 pupmstr.cloudapp.net pupmstr.pupmstr.d9.internal.cloudapp.net", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-11", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "puppetAgentLinuxPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "puppetAgentLinuxVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "puppetAgentLinuxSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "puppetAgentLinuxNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/puppetAgentLinuxPublicIp", + "Microsoft.Network/virtualNetworks/puppetAgentLinuxVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/puppetAgentLinuxPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/puppetAgentLinuxVnet/puppetAgentLinuxSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "puppetAgentLinuxVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE-11", + "Microsoft.Network/networkInterfaces/puppetAgentLinuxNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "puppetAgentLinuxVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "puppetAgentLinuxVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/puppetAgentLinuxNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "puppetAgentLinuxVM/installcustomscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/puppetAgentLinuxVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_puppet_agent.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install_puppet_agent.sh 192.168.1.1 pupmstr.cloudapp.net pupmstr.pupmstr.d9.internal.cloudapp.net" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT36 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT36 new file mode 100644 index 0000000..a142276 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT36 @@ -0,0 +1,332 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/blockchain/openchain-blockchain-coinprism/azuredeploy.json", + "/application-workloads/blockchain/openchain-blockchain-coinprism/azuredeploy.parameters.json" + ], + "timestamp": 1642962883621, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/blockchain/openchain-blockchain-coinprism/azuredeploy.json", + "/application-workloads/blockchain/openchain-blockchain-coinprism/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT36", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT36", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "The size of the virtual machines used when provisioning the node." + }, + "value": "Standard_A0" + }, + "openchainVersion": { + "type": "string", + "defaultValue": "0.7.1", + "allowedValues": [ + "0.6.2", + "0.7.1" + ], + "metadata": { + "description": "The version of Openchain to deploy." + } + }, + "openchainAdminKey": { + "type": "string", + "metadata": { + "description": "The address of the administrator of the Openchain instance." + }, + "value": "XpGxyLkMdXd9EsiR2XHvqgnHi4QwBZk9mH" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Openchain instance." + }, + "value": "GEN-UNIQUE-13" + }, + "openPermissions": { + "type": "string", + "defaultValue": "true", + "metadata": { + "description": "If True, anyone can join the ledger after generating a key pair. If False, users must be granted permission to transact on the ledger (except for the admin)." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04-LTS", + "nsgName": "SecurityGroup", + "nicName": "NIC", + "scriptExtensionName": "OpenchainInstallScript", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "PublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "openchain", + "virtualNetworkName": "VirtualNetwork", + "nsgID": "Microsoft.Network/networkSecurityGroups/SecurityGroup", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/VirtualNetwork/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "PublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "VirtualNetwork", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/SecurityGroup" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SecurityGroup" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "NIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//PublicIP", + "Microsoft.Network/virtualNetworks//VirtualNetwork" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VirtualNetwork/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "SecurityGroup", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "http", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "openchain", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "openchain", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "openchain_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/NIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "openchain/OpenchainInstallScript", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/openchain" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_openchain.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('bash install_openchain.sh ', 'http://', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn, '/ ', parameters('openchainVersion'), ' ', parameters('openchainAdminKey'), ' ', parameters('openPermissions'))]" + } + } + } + ], + "outputs": { + "endpointURL": { + "value": "[concat('http://', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn, '/')]", + "type": "string" + }, + "instructions": { + "value": "Connect to this endpoint using the wallet hosted at http://nossl.wallet.openchain.org/.", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT360 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT360 new file mode 100644 index 0000000..b6ba3ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT360 @@ -0,0 +1,252 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/puppet/puppet-agent-windows/azuredeploy.json", + "/application-workloads/puppet/puppet-agent-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962893193, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/puppet/puppet-agent-windows/azuredeploy.json", + "/application-workloads/puppet/puppet-agent-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT360", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT360", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[concat('puppet-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique DNS Name" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the Virtual Machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password name for the Virtual Machines" + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM Size for creating the Virtual Machine" + } + }, + "puppet_master_server_url": { + "type": "string", + "metadata": { + "description": "Puppet Master URL" + }, + "value": "puppetmaster.cloudapp.net" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/MyVNET/subnet-1", + "vmExtensionName": "PuppetEnterpriseAgent", + "vmName": "[take(parameters('dnsLabelPrefix'),15)]", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "MyVNET", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "nicName": "myVMNic", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "imageSKU": "2019-Datacenter", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('puppet-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "[take(parameters('dnsLabelPrefix'),15)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "[take(parameters('dnsLabelPrefix'),15)]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[take(parameters('dnsLabelPrefix'),15)]_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[take(parameters('dnsLabelPrefix'),15)]/PuppetEnterpriseAgent", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/[take(parameters('dnsLabelPrefix'),15)]" + ], + "properties": { + "publisher": "PuppetLabs", + "type": "PuppetEnterpriseAgent", + "typeHandlerVersion": "3.2", + "settings": { + "puppet_master_server": "puppetmaster.cloudapp.net" + }, + "protectedSettings": { + "placeHolder": { + "placeHolder": "placeHolder" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT361 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT361 new file mode 100644 index 0000000..0e573a4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT361 @@ -0,0 +1,333 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/python/python-proxy-on-ubuntu/azuredeploy.json", + "/application-workloads/python/python-proxy-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962893205, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/python/python-proxy-on-ubuntu/azuredeploy.json", + "/application-workloads/python/python-proxy-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT361", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT361", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed" + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique dns name for public ip" + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machines" + }, + "value": "GEN-UNIQUE" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Image SKU" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the Virtual Machine" + } + }, + "publicIPAddressName": { + "type": "string", + "metadata": { + "description": "Name of Public IP Address Name" + }, + "value": "GEN-UNIQUE-8" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of Virtual Network" + }, + "value": "GEN-VNET-NAME" + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of Network Interface" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "subnet1", + "subnet2Name": "subnet2", + "subnet1Prefix": "10.0.0.0/24", + "subnet2Prefix": "10.0.1.0/24", + "publicIPAddressType": "Dynamic", + "storageAccountType": "Standard_LRS", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/subnet1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "subnet2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks//GEN-VNET-NAME" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/subnet1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-8" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "imageSKU", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8" + } + ], + "inputEndpoints": [ + { + "enableDirectServerReturn": "False", + "endpointName": "SSH", + "privatePort": 22, + "publicPort": 22, + "protocol": "Tcp" + }, + { + "enableDirectServerReturn": "False", + "endpointName": "Http", + "privatePort": 8899, + "publicPort": 8899, + "protocol": "Tcp" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/installPythonProxy", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/python-proxy-install-ubuntu.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh python-proxy-install-ubuntu.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT362 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT362 new file mode 100644 index 0000000..c5f487a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT362 @@ -0,0 +1,394 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/python/vmss-bottle-autoscale/azuredeploy.json", + "/application-workloads/python/vmss-bottle-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962893216, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/python/vmss-bottle-autoscale/azuredeploy.json", + "/application-workloads/python/vmss-bottle-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT362", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT362", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources (9 characters or less). A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "value": "GEN-UNIQUE-8" + }, + "instanceCount": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of VM instances (100 or less)." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "GEN-UNIQUE-8vnet", + "publicIPAddressName": "GEN-UNIQUE-8pip", + "subnetName": "GEN-UNIQUE-8subnet", + "loadBalancerName": "GEN-UNIQUE-8lb", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip", + "natPoolName": "GEN-UNIQUE-8natpool", + "natpool2Name": "GEN-UNIQUE-8natpool2", + "bePoolName": "GEN-UNIQUE-8bepool", + "natStartPort": 50000, + "natEndPort": 50120, + "natBackendPort": 22, + "nicName": "GEN-UNIQUE-8nic", + "ipConfigName": "GEN-UNIQUE-8ipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-8subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8pip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8lb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUE-8bepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUE-8natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50120, + "backendPort": 22 + } + }, + { + "name": "natPool2Name", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 9000, + "frontendPortRangeEnd": 9120, + "backendPort": 9000 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 1 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/GEN-UNIQUE-8lb", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8vnet" + ], + "properties": { + "overprovision": "false", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUE-8nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUE-8ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8vnet/GEN-UNIQUE-8subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8natpool" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/GEN-UNIQUE-8lb/GEN-UNIQUE-8natpool2" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "lapextension", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('installserver.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('workserver.py', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash installserver.sh" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "autoscalehost", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/vmSSName" + ], + "properties": { + "name": "autoscalehost", + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/vmSSName", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": "1", + "maximum": "10", + "default": "1" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/vmSSName", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/vmSSName", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + } + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT363 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT363 new file mode 100644 index 0000000..5392078 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT363 @@ -0,0 +1,446 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/qlik/qlik-sense-enterprise/azuredeploy.json", + "/application-workloads/qlik/qlik-sense-enterprise/azuredeploy.parameters.json" + ], + "timestamp": 1642962893228, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/qlik/qlik-sense-enterprise/azuredeploy.json", + "/application-workloads/qlik/qlik-sense-enterprise/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT363", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT363", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "virtualMachineName": { + "type": "string", + "defaultValue": "qlik-sense", + "metadata": { + "description": "Name of virtual machine to create. Has to be unique in subscription." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-13" + }, + "qlikSenseVersion": { + "type": "string", + "defaultValue": "Qlik Sense November 2017", + "allowedValues": [ + "Qlik Sense November 2017", + "Qlik Sense September 2017 Patch 1", + "Qlik Sense September 2017", + "Qlik Sense June 2017 Patch 3", + "Qlik Sense June 2017 Patch 2", + "Qlik Sense June 2017 Patch 1", + "Qlik Sense June 2017", + "Qlik Sense 3.2 SR5", + "Qlik Sense 3.2 SR4" + ], + "metadata": { + "description": "Version of Qlik Sense to provision." + } + }, + "qlikSenseServiceAccount": { + "type": "string", + "defaultValue": "qService", + "metadata": { + "description": "User to run the Qlik Sense services." + } + }, + "qlikSenseServiceAccountPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Qlik Sense service account." + }, + "value": "GEN-PASSWORD" + }, + "qlikSenseRepositoryPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Qlik Sense Repository user." + }, + "value": "GEN-PASSWORD" + }, + "qlikSenseSerial": { + "type": "string", + "defaultValue": "defaultValue", + "metadata": { + "description": "Password for the Qlik Sense Repository user. Replace with your license details to license server during provisioning." + } + }, + "qlikSenseControl": { + "type": "securestring", + "metadata": { + "description": "Control key for Qlik Sense license. Replace with your license details to license server during provisioning." + }, + "value": "defaultValue" + }, + "qlikSenseOrganization": { + "type": "string", + "defaultValue": "defaultValue", + "metadata": { + "description": "Organization owner of license. Replace with your license details to license server during provisioning." + } + }, + "qlikSenseName": { + "type": "string", + "defaultValue": "defaultValue", + "metadata": { + "description": "Name of licensed organization. Replace with your license details to license server during provisioning." + } + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3" + ], + "metadata": { + "description": "Size of VM to be created. Recommended start size is Standard_DS3_V2" + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Datacenter-with-Containers", + "2016-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "vmName": "qlik-sense", + "virtualNetworkName": "MyVNET", + "networkSecurityGroupName": "qlikSenseSecurityGroup", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "scriptBootStrapFileName": "qs-bootstrap.ps1" + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "qlikSenseSecurityGroup", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "qlikSenseSecurityGroup" + }, + "properties": { + "securityRules": [ + { + "name": "http", + "properties": { + "description": "http endpoint", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "httpAuth", + "properties": { + "description": "http Windows Auth endpoint", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4248", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1100, + "direction": "Inbound" + } + }, + { + "name": "https", + "properties": { + "description": "https endpoint", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1200, + "direction": "Inbound" + } + }, + { + "name": "httpsAuth", + "properties": { + "description": "https Windows Auth endpoint", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4244", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1300, + "direction": "Inbound" + } + }, + { + "name": "rdp", + "properties": { + "description": "rdp endpoint", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2016-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//qlikSenseSecurityGroup" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//qlikSenseSecurityGroup" + } + } + } + ] + } + }, + { + "apiVersion": "2016-03-30", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "qlik-sense", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "qlik-sense", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "qlik-sense_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "resources": [ + { + "type": "extensions", + "apiVersion": "2016-03-30", + "name": "qlikSenseBootstrap", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/qlik-sense" + ], + "tags": { + "displayName": "QlikSenseBootstrap" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/qs-bootstrap.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/qs-install.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -noninteractive -ExecutionPolicy Bypass -file .\\Scripts\\qs-bootstrap.ps1 \"GEN-UNIQUE-8\" \"GEN-PASSWORD\" \"qService\" \"GEN-PASSWORD\" \"GEN-PASSWORD\" \"Qlik Sense November 2017\" \"defaultValue\" \"defaultValue\" \"defaultValue\" \"defaultValue\" \"[deployment().properties.templatelink.uri]\"" + } + } + } + ] + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT364 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT364 new file mode 100644 index 0000000..b44b286 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT364 @@ -0,0 +1,927 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/rds/rds-deployment/azuredeploy.json", + "/application-workloads/rds/rds-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962893244, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment/azuredeploy.json", + "/application-workloads/rds/rds-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT364", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT364", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "gwdnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique gateway public DNS prefix for the deployment. The fqdn will look something like '.westus.cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'. For example johndns1 will result the final RDWEB access url like https://johndns1.westus.cloudapp.azure.com/RDWeb" + }, + "value": "GEN-UNIQUE" + }, + "gwpublicIPAddressName": { + "type": "string", + "metadata": { + "description": "The name of gateway PublicIPAddress object" + }, + "defaultValue": "gwpip" + }, + "adDomainName": { + "type": "string", + "metadata": { + "description": "The name of the AD domain. For example contoso.com" + }, + "defaultValue": "contoso.com" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM and the domain. Exclusion list: 'administrator'. For example johnadmin" + }, + "defaultValue": "vmadmin" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM and the domain" + }, + "value": "GEN-PASSWORD" + }, + "imageSKU": { + "type": "string", + "allowedValues": [ + "2012-R2-Datacenter", + "2016-Datacenter" + ], + "metadata": { + "description": "Windows server SKU" + }, + "defaultValue": "2016-Datacenter" + }, + "numberOfRdshInstances": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of RemoteDesktopSessionHosts" + } + }, + "VmSize": { + "type": "string", + "defaultValue": "Standard_A2", + "allowedValues": [ + "Standard_A2" + ] + }, + "rdshVmSize": { + "type": "string", + "allowedValues": [ + "Standard_A1_v2", + "Standard_A2_v2", + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_A2m_v2", + "Standard_A4m_v2", + "Standard_A8m_v2", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D32_v3", + "Standard_D48_v3", + "Standard_D64_v3" + ], + "metadata": { + "description": "The size of the RDSH VMs" + }, + "defaultValue": "Standard_D4_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "adAssetLocation": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/ad-non-ha", + "adVMSize": "Standard_A1", + "adVnetName": "[concat('ADVNET',resourceGroup().name)]", + "adSubnetName": "[concat('ADStaticSubnet',resourceGroup().name)]", + "staticSubnetID": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('adVnetName'), variables('adSubnetName'))]", + "adTemplateURL": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/ad-non-ha/adVmTemplate.json", + "adStorageName": "[tolower(concat('adsa',uniqueString(resourceGroup().id)))]", + "adVmDeployment": "CreateAdVms", + "adVmDeploymentId": "Microsoft.Resources/deployments/CreateAdVms", + "deployPrimaryAdTemplateURL": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/ad-non-ha/deployPrimaryAD.json", + "deployPrimaryAd": "DeployPrimaryAd", + "deployPrimaryAdID": "Microsoft.Resources/deployments/DeployPrimaryAd", + "adPDCVMName": "advm", + "vnetwithDNSTemplateURL": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/ad-non-ha/vnet-with-dns-server.json", + "updateVNetDNS1": "updateVNetDNS", + "publicLBName": "[concat('ADPLB',resourceGroup().name)]", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/[tolower(concat('adpip',uniqueString(resourceGroup().Id)))]", + "lbFE": "ADLBFE", + "rdpNAT": "ADRDPNAT", + "publiclbID": "[resourceId('Microsoft.Network/loadBalancers',variables('publicLBName'))]", + "publiclbFEConfigID": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations',variables('publicLBName'),variables('lbFE'))]", + "rdpPort": 3389, + "adRDPNATRuleID": "[resourceId('Microsoft.Network/loadBalancers/inboundNatRules/',variables('publicLBName'),variables('rdpNAT'))]", + "adNICName": "[concat('ADNic',resourceGroup().name)]", + "lbBE": "ADLBBE", + "gwLBName": "[concat('GWPLB',resourceGroup().name)]", + "publicIPAddressName": "[tolower(concat('adpip',uniqueString(resourceGroup().Id)))]", + "gwIPAddressID": "Microsoft.Network/publicIPAddresses/gwpip", + "gwlbFE": "GWLBFE", + "gwlbID": "[resourceId('Microsoft.Network/loadBalancers',variables('gwLBName'))]", + "gwlbFEConfigID": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations/',variables('gwLBName'),variables('gwlbFE'))]", + "gwlbBE": "GWLBBE", + "gwBEAddressPoolID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools/',variables('gwLBName'),variables('gwlbBE'))]", + "dnsLabelPrefix": "[tolower(concat('adns', resourceGroup().name))]", + "storageAccountName": "[tolower(concat('rdsa',uniqueString(resourceGroup().id)))]", + "storageAccountType": "Standard_LRS", + "uniqueStorageAccountContainerName": "[tolower(concat('sc', uniqueString(resourceGroup().id)))]", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "vnetAddressRange": "10.0.0.0/16", + "subnetAddressRange": "10.0.0.0/24", + "dnsServerPrivateIp": "10.0.0.4", + "subnet-id": "[resourceId('Microsoft.Network/virtualNetworks/subnets/', variables('adVnetName'), variables('adSubnetName'))]", + "nsgName": "RDSNsg", + "nsgID": "Microsoft.Network/networkSecurityGroups/RDSNsg", + "subnets": [ + { + "name": "[variables('adSubnetName')]", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/RDSNsg" + } + } + } + ] + }, + "resources": [ + { + "name": "RDSNsg", + "type": "Microsoft.Network/networkSecurityGroups", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "securityRules": [ + { + "name": "rule1", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "[variables('adVnetName')]", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/RDSNsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[variables('adSubnetName')]", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/RDSNsg" + } + } + } + ] + } + }, + { + "name": "[tolower(concat('adpip',uniqueString(resourceGroup().Id)))]", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "dependsOn": [ + "[variables('adVnetName')]" + ], + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[tolower(concat('adns', resourceGroup().name))]" + } + } + }, + { + "name": "gwpip", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "dependsOn": [ + "Microsoft.Resources/deployments/DeployPrimaryAd" + ], + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "gw-availabilityset", + "location": "[resourceGroup().location]" + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "cb-availabilityset", + "location": "[resourceGroup().location]" + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "rdsh-availabilityset", + "location": "[resourceGroup().location]" + }, + { + "name": "publiclbName", + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[tolower(concat('adpip',uniqueString(resourceGroup().Id)))]" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "ADLBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[tolower(concat('adpip',uniqueString(resourceGroup().Id)))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "ADLBBE" + } + ], + "inboundNatRules": [ + { + "name": "ADRDPNAT", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('publiclbFEConfigID')]" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "name": "gwlbName", + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/gwpip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "GWLBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/gwpip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GWLBBE" + } + ], + "loadBalancingRules": [ + { + "name": "LBRule01", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('gwlbFEConfigID')]" + }, + "backendAddressPool": { + "id": "[variables('gwBEAddressPoolID')]" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIPProtocol", + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes/',variables('gwLBName'),'tcpProbe')]" + } + } + }, + { + "name": "LBRule02", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('gwlbFEConfigID')]" + }, + "backendAddressPool": { + "id": "[variables('gwBEAddressPoolID')]" + }, + "protocol": "Udp", + "frontendPort": 3391, + "backendPort": 3391, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIPProtocol", + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes/',variables('gwLBName'),'tcpProbe01')]" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + }, + { + "name": "tcpProbe01", + "properties": { + "protocol": "Tcp", + "port": 3391, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatRules": [ + { + "name": "rdp", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('gwlbFEConfigID')]" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "name": "CreateAdVms", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-08-01", + "dependsOn": [ + "[variables('publiclbID')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/ad-non-ha/adVmTemplate.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "vmadmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "adRDPNATRuleID": { + "value": "[variables('adRDPNATRuleID')]" + }, + "storageAccount": { + "value": "[tolower(concat('adsa',uniqueString(resourceGroup().id)))]" + }, + "subnetResourceId": { + "value": "[variables('staticSubnetID')]" + }, + "primaryAdIpAddress": { + "value": "10.0.0.4" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "vmName": { + "value": "advm" + }, + "vmSize": { + "value": "Standard_A1" + }, + "adDNicName": { + "value": "[variables('adNICName')]" + } + } + } + }, + { + "name": "DeployPrimaryAd", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-08-01", + "dependsOn": [ + "adVmDeploymentID" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/ad-non-ha/deployPrimaryAD.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "primaryADName": { + "value": "advm" + }, + "domainName": { + "value": "contoso.com" + }, + "adminUsername": { + "value": "vmadmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "assetLocation": { + "value": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/ad-non-ha" + } + } + } + }, + { + "name": "updateVNetDNS", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-08-01", + "dependsOn": [ + "Microsoft.Resources/deployments/DeployPrimaryAd" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/ad-non-ha/vnet-with-dns-server.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "[variables('adVnetName')]" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnets": { + "value": [ + { + "name": "[variables('adSubnetName')]", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/RDSNsg" + } + } + } + ] + }, + "dnsServerAddress": { + "value": [ + "10.0.0.4" + ] + } + } + } + }, + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[tolower(concat('rdsa',uniqueString(resourceGroup().id)))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "gw-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('gwlbID')]", + "[variables('adVmDeploymentID')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('subnet-id')]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[variables('gwBEAddressPoolID')]" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatRules',variables('gwLBName'),'rdp')]" + } + ] + } + } + ], + "dnsSettings": { + "dnsServers": [ + "10.0.0.4" + ] + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "cb-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('publiclbID')]", + "[variables('adVmDeploymentID')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('subnet-id')]" + } + } + } + ], + "dnsSettings": { + "dnsServers": [ + "10.0.0.4" + ] + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "rdsh-copyindex()-nic", + "location": "[resourceGroup().location]", + "copy": { + "name": "rdsh-nic-loop", + "count": 1 + }, + "dependsOn": [ + "[variables('publiclbID')]", + "[variables('adVmDeploymentID')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('subnet-id')]" + } + } + } + ], + "dnsSettings": { + "dnsServers": [ + "10.0.0.4" + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "gw-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/DeployPrimaryAd", + "Microsoft.Storage/storageAccounts//[tolower(concat('rdsa',uniqueString(resourceGroup().id)))]", + "Microsoft.Network/networkInterfaces//gw-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/gw-availabilityset" + }, + "osProfile": { + "computerName": "gateway", + "adminUsername": "vmadmin", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')),'2021-02-01').primaryEndpoints.blob,variables('uniqueStorageAccountContainerName'),'/','gw-vm-os-disk.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/gw-nic" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "gw-vm/gateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/gw-vm" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('Configuration.zip', parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "Configuration.ps1\\Gateway", + "Properties": { + "DomainName": "contoso.com", + "AdminCreds": { + "UserName": "vmadmin", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + } + ] + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "rdsh-copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "rdsh-vm-loop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Resources/deployments/DeployPrimaryAd", + "Microsoft.Storage/storageAccounts/[tolower(concat('rdsa',uniqueString(resourceGroup().id)))]", + "Microsoft.Network/networkInterfaces//rdsh-copyindex()-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/rdsh-availabilityset" + }, + "osProfile": { + "computerName": "rdsh-copyIndex()", + "adminUsername": "vmadmin", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')),'2021-02-01').primaryEndpoints.blob,variables('uniqueStorageAccountContainerName'),'/','rdsh-',copyindex(),'-os-disk.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/rdsh-copyindex()-nic" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "rdsh-copyindex()/sessionhost", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/rdsh-copyindex()" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('Configuration.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "Configuration.ps1\\SessionHost", + "Properties": { + "DomainName": "contoso.com", + "AdminCreds": { + "UserName": "vmadmin", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + } + ] + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "cb-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/DeployPrimaryAd", + "Microsoft.Storage/storageAccounts//[tolower(concat('rdsa',uniqueString(resourceGroup().id)))]", + "Microsoft.Network/networkInterfaces//cb-nic", + "rdsh-vm-loop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/cb-availabilityset" + }, + "osProfile": { + "computerName": "broker", + "adminUsername": "vmadmin", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')),'2021-02-01').primaryEndpoints.blob,variables('uniqueStorageAccountContainerName'),'/','cb-vm-os-disk.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/cb-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "cb-vm/rdsdeployment", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/cb-vm", + "Microsoft.Compute/virtualMachines/extensions//gw-vm/gateway", + "rdsh-vm-loop" + ], + "properties": { + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "Items": { + "adminPassword": "GEN-PASSWORD" + } + }, + "publisher": "Microsoft.Powershell", + "settings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('Configuration.zip', parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "Configuration.ps1\\RDSDeployment", + "Properties": { + "adminCreds": { + "UserName": "vmadmin", + "Password": "PrivateSettingsRef:adminPassword" + }, + "connectionBroker": "broker.contoso.com", + "domainName": "contoso.com", + "externalfqdn": "[reference(parameters('gwpublicIPAddressName')).dnsSettings.fqdn]", + "numberOfRdshInstances": 1, + "sessionHostNamingPrefix": "rdsh-", + "webAccessServer": "gateway.contoso.com" + } + }, + "type": "DSC", + "typeHandlerVersion": "2.11" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT365 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT365 new file mode 100644 index 0000000..d82e402 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT365 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/rds/rds-deployment/vnet-with-dns-server.json", + "/application-workloads/rds/rds-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962893265, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment/vnet-with-dns-server.json", + "/application-workloads/rds/rds-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT365", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT365", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new VNET in CIDR format" + }, + "defaultValue": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "description": "The address range of the subnet created in the new VNET" + }, + "defaultValue": "10.0.0.0/24" + }, + "dnsServerAddress": { + "type": "array", + "metadata": { + "description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "gwdnsLabelPrefix": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "dhcpOptions": { + "dnsServers": "dnsServerAddress" + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT366 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT366 new file mode 100644 index 0000000..f3a2c21 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT366 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/rds/rds-deployment-existing-ad/prereqs/prereq.azuredeploy.json", + "/application-workloads/rds/rds-deployment-existing-ad/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962893273, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment-existing-ad/prereqs/prereq.azuredeploy.json", + "/application-workloads/rds/rds-deployment-existing-ad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT366", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT366", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "quickstarts" + }, + "adminPassword": { + "type": "secureString" + }, + "domainName": { + "type": "string", + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "value": "GEN-UNIQUE" + } + }, + "resources": [ + { + "name": "createADController", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/active-directory-new-domain/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "quickstarts" + }, + "adminPassword": { + "value": "adminPassword" + }, + "domainName": { + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + } + } + } + } + ], + "outputs": { + "dnsIpAddress": { + "type": "string", + "value": "[reference('createADController').outputs.dnsIpAddress.value]" + }, + "domainName": { + "type": "string", + "value": "[reference('createADController').outputs.domainName.value]" + }, + "virtualNetworkSubscriptionId": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubscriptionId.value]" + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkResourceGroupName.value]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkName.value]" + }, + "virtualNetworkSubnetName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubnetName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT367 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT367 new file mode 100644 index 0000000..180faaf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT367 @@ -0,0 +1,710 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/rds/rds-deployment-existing-ad/azuredeploy.json", + "/application-workloads/rds/rds-deployment-existing-ad/azuredeploy.parameters.json" + ], + "timestamp": 1642962893306, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment-existing-ad/azuredeploy.json", + "/application-workloads/rds/rds-deployment-existing-ad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT367", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT367", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[concat('rds-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique public DNS prefix for the deployment. The fqdn will look something like '.westus.cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'. For example johndns1 will result the final RDWEB access url like https://johndns1.westus.cloudapp.azure.com/RDWeb" + } + }, + "adDomainName": { + "type": "string", + "metadata": { + "description": "The name of the AD domain. For example contoso.com" + }, + "value": "GET-PREREQ-domainName" + }, + "adVnetName": { + "type": "string", + "metadata": { + "description": "The vnet name of AD domain. For example johnvnet1" + }, + "value": "GET-PREREQ-virtualNetworkName" + }, + "adVnetRG": { + "type": "string", + "metadata": { + "description": "The Resource Group containing the existing Virtual Network resource" + }, + "value": "GET-PREREQ-virtualNetworkResourceGroupName" + }, + "adVnetSubscriptionId": { + "type": "string", + "defaultValue": "[subscription().subscriptionId]", + "metadata": { + "description": "The subscription containing the existing Virtual Network resource" + }, + "value": "GET-PREREQ-virtualNetworkSubscriptionId" + }, + "adSubnetName": { + "type": "string", + "metadata": { + "description": "The subnet name of AD domain" + }, + "value": "GET-PREREQ-virtualNetworkSubnetName" + }, + "dnsServerPrivateIp": { + "type": "string", + "metadata": { + "description": "The private IP address of the ad dns server" + }, + "value": "GET-PREREQ-dnsIpAddress" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM and the domain. Exclusion list: 'administrator'. For example johnadmin" + }, + "value": "quickstarts" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM and the domain" + } + }, + "imageSKU": { + "type": "string", + "allowedValues": [ + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter", + "2022-datacenter" + ], + "metadata": { + "description": "Windows server SKU" + }, + "defaultValue": "2019-Datacenter" + }, + "numberOfRdshInstances": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of RemoteDesktopSessionHosts" + } + }, + "rdshVmSize": { + "type": "string", + "metadata": { + "description": "The size of the RDSH VMs" + }, + "defaultValue": "Standard_D4s_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "gatewayIpDNS": { + "type": "string", + "defaultValue": "[concat('gwd-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS name for the gateway, must be globally unique." + } + }, + "connBrokerIpDNS": { + "type": "string", + "defaultValue": "[concat('cbd-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS name for the connection broker, must be globally unique." + } + }, + "rdshNamingPrefix": { + "type": "string", + "defaultValue": "rdsh-", + "maxLength": 16, + "metadata": { + "description": "Naming prefix for the RDS Host VMs and resources" + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "subnet-id": "GET-PREREQ-virtualNetworkSubscriptionId/GET-PREREQ-virtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-virtualNetworkSubnetName", + "publicIpAddressName": "publicIp", + "gatewayPublicIpAddressName": "gatewayPublicIp", + "brokerPublicIpAddressName": "brokerPublicIp" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('rds-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "gatewayPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('gwd-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "brokerPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('cbd-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "name": "gw-availabilityset", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "name": "cb-availabilityset", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "name": "rdsh-availabilityset", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancer", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIp" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBAP" + } + ], + "loadBalancingRules": [ + { + "name": "LBRule01", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadbalancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//loadbalancer/LBBAP" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIPProtocol", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadbalancer/tcpProbe" + } + } + }, + { + "name": "LBRule02", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadbalancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadbalancer/LBBAP" + }, + "protocol": "Udp", + "frontendPort": 3391, + "backendPort": 3391, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIPProtocol", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadbalancer/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + }, + { + "name": "tcpProbe01", + "properties": { + "protocol": "Tcp", + "port": 3391, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatRules": [ + { + "name": "rdp", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "gw-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/gatewayPublicIp" + }, + "subnet": { + "id": "GET-PREREQ-virtualNetworkSubscriptionId/GET-PREREQ-virtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-virtualNetworkSubnetName" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/loadBalancer/rdp" + } + ] + } + } + ], + "dnsSettings": { + "dnsServers": [ + "GET-PREREQ-dnsIpAddress" + ] + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "cb-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/brokerPublicIp" + }, + "subnet": { + "id": "GET-PREREQ-virtualNetworkSubscriptionId/GET-PREREQ-virtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-virtualNetworkSubnetName" + } + } + } + ], + "dnsSettings": { + "dnsServers": [ + "GET-PREREQ-dnsIpAddress" + ] + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "rdsh-copyindex()-nic", + "location": "[resourceGroup().location]", + "copy": { + "name": "rdsh-nic-loop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "GET-PREREQ-virtualNetworkSubscriptionId/GET-PREREQ-virtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-virtualNetworkSubnetName" + } + } + } + ], + "dnsSettings": { + "dnsServers": [ + "GET-PREREQ-dnsIpAddress" + ] + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "gw-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/availabilitySets/gw-availabilityset", + "Microsoft.Network/networkInterfaces/gw-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/gw-availabilityset" + }, + "osProfile": { + "computerName": "gateway", + "adminUsername": "quickstarts", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "gw_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/gw-nic" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "extensions", + "name": "gateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/gw-vm" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'),concat('DSC/Configuration.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "Configuration.ps1\\Gateway", + "properties": { + "DomainName": "GET-PREREQ-domainName", + "AdminCreds": { + "UserName": "quickstarts", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "adminPassword" + } + } + } + } + ] + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "rdsh-copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "rdsh-vm-loop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/availabilitySets/rdsh-availabilityset", + "Microsoft.Network/networkInterfaces/rdsh-copyindex()-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/rdsh-availabilityset" + }, + "osProfile": { + "computerName": "rdsh-copyIndex()", + "adminUsername": "quickstarts", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "rdsh-copyIndex()-OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/rdsh-copyindex()-nic" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "rdsh-copyindex()/sessionhost", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/rdsh-copyindex()" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'),concat('DSC/Configuration.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "Configuration.ps1\\SessionHost", + "Properties": { + "DomainName": "GET-PREREQ-domainName", + "AdminCreds": { + "UserName": "quickstarts", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "adminPassword" + } + } + } + } + ] + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "cb-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/availabilitySets/cb-availabilityset", + "Microsoft.Network/networkInterfaces/cb-nic", + "rdsh-vm-loop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/cb-availabilityset" + }, + "osProfile": { + "computerName": "broker", + "adminUsername": "quickstarts", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "cb_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/cb-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "cb-vm/rdsdeployment", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/cb-vm", + "Microsoft.Compute/virtualMachines/extensions/gw-vm/gateway", + "rdsh-vm-loop" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'),concat('DSC/Configuration.zip', parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "Configuration.ps1\\RDSDeployment", + "properties": { + "adminCreds": { + "UserName": "quickstarts", + "Password": "PrivateSettingsRef:adminPassword" + }, + "connectionBroker": "broker.GET-PREREQ-domainName", + "domainName": "GET-PREREQ-domainName", + "externalfqdn": "[reference(variables('gatewayPublicIpAddressName')).dnsSettings.fqdn]", + "numberOfRdshInstances": 1, + "sessionHostNamingPrefix": "rdsh-", + "webAccessServer": "gateway.GET-PREREQ-domainName" + } + }, + "protectedSettings": { + "Items": { + "adminPassword": "adminPassword" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT368 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT368 new file mode 100644 index 0000000..dea2b4c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT368 @@ -0,0 +1,442 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/rds/rds-deployment-ha-gateway/azuredeploy.json", + "/application-workloads/rds/rds-deployment-ha-gateway/azuredeploy.parameters.json" + ], + "timestamp": 1642962893316, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-deployment-ha-gateway/azuredeploy.json", + "/application-workloads/rds/rds-deployment-ha-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT368", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT368", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS prefix for the deployment. The fqdn will look something like '.westus.cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'." + }, + "value": "GEN-UNIQUE" + }, + "loadBalancer": { + "type": "string", + "metadata": { + "description": "The Loadbalancer name must match from the RDS deployment. And default value taken by template is loadbalancer." + }, + "defaultValue": "loadBalancer" + }, + "backendAddressPools": { + "type": "string", + "defaultValue": "LBBAP", + "metadata": { + "description": "The backendAddressPools name must match from the RDS deployment. And default value taken by template is LBBAP." + } + }, + "gw-AvailabilitySet": { + "type": "string", + "defaultValue": "gw-availabilityset", + "metadata": { + "description": "The gw-availabilityset name must match from the RDS deployment. And default value taken by template is gw-availabilityset." + } + }, + "adDomainName": { + "type": "string", + "metadata": { + "description": "The FQDN of the AD domain" + }, + "value": "mydomain.local" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM and the domain. Exclusion list: 'administrator" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM and the domain" + }, + "value": "GEN-PASSWORD" + }, + "numberOfWebGwInstances": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of RD Gateway instances" + } + }, + "brokerServer": { + "type": "string", + "metadata": { + "description": "FQDN for Broker Server" + }, + "value": "broker.mydomain.local" + }, + "WebURL": { + "type": "string", + "metadata": { + "description": "This is RD Gateway external FQDN. This shall be picked from existing basic RDS deploment." + }, + "value": "RDS-WebURL" + }, + "domainNetbios": { + "type": "string", + "metadata": { + "description": "Netbios Name for Domain" + }, + "value": "mydomain" + }, + "imageSKU": { + "type": "string", + "allowedValues": [ + "2012-R2-Datacenter", + "2016-Datacenter" + ], + "metadata": { + "description": "Windows server SKU" + }, + "defaultValue": "2016-Datacenter" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "Size for the new RD Gateway VMs" + } + }, + "existingVnet": { + "type": "string", + "metadata": { + "description": "The vnet name of AD domain. For example johnvnet1" + }, + "value": "GEN-VNET-NAME" + }, + "existingSubnet": { + "type": "string", + "metadata": { + "description": "The subnet name of AD domain. For example johnsubnet1" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "existingVnetResourceGroup": { + "type": "string", + "metadata": { + "description": "The name of the resourceGroup for the vnet" + }, + "value": "GEN-VNET-RESOURCEGROUP-NAME" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "subnet-id": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "publicIpRef": "publicIp", + "assetLocation": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/rds-deployment" + }, + "resources": [ + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "name": "gw-availabilityset", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancer", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIp" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBAP" + } + ], + "loadBalancingRules": [ + { + "name": "LBRule01", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer/frontendIPConfigurations/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancer/backendAddressPools/LBBAP" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIPProtocol", + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancer/probes/tcpProbe" + } + } + }, + { + "name": "LBRule02", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer/frontendIPConfigurations/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancer/backendAddressPools/LBBAP" + }, + "protocol": "Tcp", + "frontendPort": 3391, + "backendPort": 3391, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIPProtocol", + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancer/probes/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + }, + { + "name": "tcpProbe01", + "properties": { + "protocol": "Tcp", + "port": 3391, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "inboundNatRules": [ + { + "name": "rdp", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer/frontendIPConfigurations/LBFE" + }, + "protocol": "tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "name": "gw-copyindex()-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2017-06-01", + "copy": { + "name": "gw-nic-loop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "GEN-VNET-RESOURCEGROUP-NAME/Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancer/backendAddressPools/LBBAP" + } + ], + "loadBalancerInboundNatRules": [] + } + } + ] + } + }, + { + "name": "gw-vm-copyindex()", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "copy": { + "name": "gw-vm-loop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/availabilitySets/gw-availabilityset", + "Microsoft.Network/networkInterfaces/gw-copyindex()-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/gw-availabilityset" + }, + "osProfile": { + "computerName": "gatewaycopyindex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "gw-vm-copyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/gw-copyindex()-nic" + } + ] + } + }, + "resources": [ + { + "name": "gw-vm-copyindex()/Gateway", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2017-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', Concat('gw-vm-',copyindex()))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.76", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/rds-deployment/Configuration.zip", + "ConfigurationFunction": "Configuration.ps1\\Gateway", + "properties": { + "DomainName": "mydomain.local", + "AdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "gw-vm-copyindex()/WebAndGwFarmAdd_PostConfig1.1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', Concat('gw-vm-',copyindex()))]", + "[concat('Microsoft.Compute/virtualMachines/gw-vm-',copyindex(),'/extensions/','Gateway')]" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/rds/rds-deployment-ha-gateway/Scripts/WebAndGwFarmAdd_PostConfig1.1.ps1" + ] + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + }, + "commandToExecute": "[Concat('powershell.exe -ExecutionPolicy Unrestricted -File', ' ', 'WebAndGwFarmAdd_PostConfig1.1.ps1',' ','-username \"',parameters('adminusername'),'\" ', '-password \"',parameters('adminpassword'),'\" ','-BrokerServer \"',parameters('BrokerServer'),'\" ','-WebURL \"',parameters('WebURL'),'\" ','-Domainname \"',parameters('adDomainName'),'\" ','-DomainNetbios \"',parameters('DomainNetbios'),'\" ','-numberofwebServers ',parameters('numberOfWebGwInstances'))]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT369 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT369 new file mode 100644 index 0000000..54621a5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT369 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/rds/rds-update-certificate/azuredeploy.json", + "/application-workloads/rds/rds-update-certificate/azuredeploy.parameters.json" + ], + "timestamp": 1642962893326, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/rds/rds-update-certificate/azuredeploy.json", + "/application-workloads/rds/rds-update-certificate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT369", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT369", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "metadata": { + "description": "Azure Key Vault name where the certificate is stored." + }, + "value": "myVault" + }, + "certificateName": { + "type": "string", + "metadata": { + "description": "Name of the certificate in the Azure Key Vault." + }, + "value": "certificate" + }, + "applicationId": { + "type": "string", + "metadata": { + "description": "AD application Id used to access the certificate." + }, + "value": "GEN-UNIQUE" + }, + "applicationPassword": { + "type": "securestring", + "metadata": { + "description": "AD application password." + }, + "value": "GEN-PASSWORD" + }, + "tenantId": { + "type": "string", + "metadata": { + "description": "Tenant Id for whom the Secure Principal account was created." + }, + "value": "GEN-UNIQUE" + }, + "brokerVmName": { + "type": "string", + "metadata": { + "description": "Name of the RD Connection Broker VM resource in the deployment (the configure certificates script is executed on this VM)." + }, + "defaultValue": "cb-vm", + "value": "cb-vm" + }, + "existingDomainName": { + "type": "string", + "metadata": { + "description": "The FQDN of the AD domain" + }, + "value": "mydomain.local" + }, + "existingAdminUsername": { + "type": "string", + "metadata": { + "description": "Name of the domain account with administrative priviledges in the RDS deployment" + }, + "value": "GEN-UNIQUE" + }, + "existingAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM and the domain" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/Azure-QuickStart-Templates/master/rds-update-certificate" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "p": { + "appid": " -appId GEN-UNIQUE", + "apppassword": " -appPassword GEN-PASSWORD", + "tenantid": " -tenantId GEN-UNIQUE", + "vault": " -vaultName myVault", + "secret": " -secretName certificate", + "adminUsername": " -adminUsername GEN-UNIQUE", + "adminPassword": " -adminPassword GEN-PASSWORD", + "adDomainName": " -adDomainName mydomain.local" + }, + "scriptParameters": "(p).appid(p).apppassword(p).tenantid(p).vault(p).secret(p).adminUsername(p).adminPassword(p).adDomainName", + "scriptFolder": "Scripts", + "scriptFileName": "Script.ps1", + "impersonateScript": "https://gallery.technet.microsoft.com/scriptcenter/Impersonate-a-User-9bfeff82/file/127189/1/New-ImpersonateUser.ps1", + "setPublishedNameScript": "https://gallery.technet.microsoft.com/Change-published-FQDN-for-2a029b80/file/103829/2/Set-RDPublishedName.ps1" + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "cb-vm/customscript", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "script" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://gallery.technet.microsoft.com/scriptcenter/Impersonate-a-User-9bfeff82/file/127189/1/New-ImpersonateUser.ps1", + "https://gallery.technet.microsoft.com/Change-published-FQDN-for-2a029b80/file/103829/2/Set-RDPublishedName.ps1", + "https://raw.githubusercontent.com/Azure/Azure-QuickStart-Templates/master/rds-update-certificate/Scripts/Script.ps1 parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -noninteractive -executionpolicy bypass -file Script.ps1(p).appid(p).apppassword(p).tenantid(p).vault(p).secret(p).adminUsername(p).adminPassword(p).adDomainName >> script.log 2>&1" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT37 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT37 new file mode 100644 index 0000000..5a86933 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT37 @@ -0,0 +1,859 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/bosh/bosh-cf-crossregion/azuredeploy.json", + "/application-workloads/bosh/bosh-cf-crossregion/azuredeploy.parameters.json" + ], + "timestamp": 1642962883629, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-cf-crossregion/azuredeploy.json", + "/application-workloads/bosh/bosh-cf-crossregion/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT37", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/connections", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT37", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "Please copy the content of your SSH RSA public key and paste it here. You can use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "environment": { + "type": "string", + "allowedValues": [ + "AzureCloud" + ], + "metadata": { + "description": "AzureCloud is Global Azure" + }, + "value": "AzureCloud" + }, + "tenantID": { + "type": "string", + "minLength": 36, + "maxLength": 36, + "metadata": { + "description": "ID of the tenant. See https://github.com/cloudfoundry-incubator/bosh-azure-cpi-release/blob/master/docs/guidance.md" + }, + "value": "GEN-UNIQUE-18GEN-UNIQUE-18" + }, + "clientID": { + "type": "string", + "minLength": 36, + "maxLength": 36, + "metadata": { + "description": "ID of the client. See https://github.com/cloudfoundry-incubator/bosh-azure-cpi-release/blob/master/docs/guidance.md" + }, + "value": "GEN-UNIQUE-18GEN-UNIQUE-18" + }, + "clientSecret": { + "type": "securestring", + "metadata": { + "description": "secret of the client. See https://github.com/cloudfoundry-incubator/bosh-azure-cpi-release/blob/master/docs/guidance.md" + }, + "value": "GEN-PASSWORD" + }, + "autoDeployBosh": { + "type": "string", + "defaultValue": "enabled", + "allowedValues": [ + "enabled", + "disabled" + ], + "metadata": { + "description": "The flag that enables automatic deployment of Bosh" + }, + "value": "disabled" + }, + "primaryLocation": { + "type": "string", + "allowedValues": [ + "North Europe", + "West Europe", + "East US", + "West US" + ], + "metadata": { + "description": "The primary location to provision resources for Bosh and CF" + }, + "value": "East US" + }, + "secondaryLocation": { + "type": "string", + "allowedValues": [ + "North Europe", + "West Europe", + "East US", + "West US" + ], + "metadata": { + "description": "The secondary location to provision resources for Bosh and CF" + }, + "value": "West US" + }, + "vpnGwSharedKey": { + "type": "string", + "defaultValue": "youshould2changethisvalueforsure1time", + "metadata": { + "description": "Please provide a shared key for the VPN gateway. This field should not be blank." + } + }, + "systemdomain": { + "type": "string", + "metadata": { + "description": "Domain name used for Cloud Foundry system domain" + }, + "value": "mydomain.com" + }, + "dbendpoint": { + "type": "string", + "metadata": { + "description": "Database host endpoint that has ccdb and uaadb provisioned with default admin account used in this template" + }, + "value": "database host endpoint that has ccdb and uaadb" + }, + "nfsendpoint": { + "type": "string", + "metadata": { + "description": "NFS endpoint for Cloud Foundry" + }, + "value": "nfs endpoint" + } + }, + "variables": { + "apiVersion": "2015-06-15", + "defaultprimaryStorageAccountName": "[concat('defprisa', uniqueString(resourceGroup().id))]", + "primaryStorageAccountName": "[concat('prisa', uniqueString(resourceGroup().id))]", + "defaultsecondaryStorageAccountName": "[concat('defsecsa', uniqueString(resourceGroup().id))]", + "secondaryStorageAccountName": "[concat('secsa', uniqueString(resourceGroup().id))]", + "defaultstorageAccountType": "Standard_RAGRS", + "storageAccountType": "Premium_LRS", + "vmStorageAccountContainerName": "vhds", + "primaryStorageid": "[resourceId('Microsoft.Storage/storageAccounts', variables('primaryStorageAccountName'))]", + "defaultprimaryStorageid": "[resourceId('Microsoft.Storage/storageAccounts', variables('defaultprimaryStorageAccountName'))]", + "secondaryStorageid": "[resourceId('Microsoft.Storage/storageAccounts', variables('secondaryStorageAccountName'))]", + "defaultsecondaryStorageid": "[resourceId('Microsoft.Storage/storageAccounts', variables('defaultsecondaryStorageAccountName'))]", + "primaryVirtualNetworkName": "primaryboshvnet-crp", + "secondaryVirtualNetworkName": "secondaryboshvnet-crp", + "primaryVirtualNetworkAddressSpace": "10.0.0.0/16", + "secondaryVirtualNetworkAddressSpace": "10.2.0.0/16", + "primaryVnetID": "Microsoft.Network/virtualNetworks/primaryboshvnet-crp", + "secondaryVnetID": "Microsoft.Network/virtualNetworks/secondaryboshvnet-crp", + "subnetNameForBosh": "Bosh", + "subnetAddressRangeForBosh": "10.0.0.0/24", + "subnetRefForBosh": "Microsoft.Network/virtualNetworks/primaryboshvnet-crp/subnets/Bosh", + "subnetNameForCloudFoundry": "CloudFoundry", + "primarySubnetAddressRangeForCloudFoundry": "10.0.16.0/20", + "secondarySubnetAddressRangeForCloudFoundry": "10.2.16.0/20", + "subnetNameForGateway": "GatewaySubnet", + "primarySubnetAddressRangeForGateway": "10.0.254.0/24", + "primarySubnetGatewayRef": "Microsoft.Network/virtualNetworks/primaryboshvnet-crp/subnets/GatewaySubnet", + "secondarySubnetAddressRangeForGateway": "10.2.254.0/24", + "secondarySubnetGatewayRef": "Microsoft.Network/virtualNetworks/secondaryboshvnet-crp/subnets/GatewaySubnet", + "primaryVpnGatewayName": "primaryboshvnet-crp-gw", + "primaryVpnGatewayPublicIPName": "primaryboshvnet-crp-gw-publicip", + "secondaryVpnGatewayName": "secondaryboshvnet-crp-gw", + "secondaryVpnGatewayPublicIPName": "secondaryboshvnet-crp-gw-publicip", + "vpnGwSku": "HighPerformance", + "primaryVpnGwConnectionName": "Primary2Second", + "secondaryVpnGwConnectionName": "Secondary2Primary", + "vpnType": "RouteBased", + "subnetNameForDiego": "Diego", + "primarySubnetAddressRangeForDiego": "10.0.32.0/20", + "secondarySubnetAddressRangeForDiego": "10.2.32.0/20", + "devboxNetworkSecurityGroup": "nsg-devbox", + "boshNetworkSecurityGroup": "nsg-bosh", + "primaryCfNetworkSecurityGroup": "primarynsg-cf", + "secondaryCfNetworkSecurityGroup": "secondarynsg-cf", + "vmSize": "Standard_D2s_v3", + "primaryNicName": "primaryGEN-UNIQUE", + "secondaryNicName": "secondaryGEN-UNIQUE", + "devboxPrivateIPAddress": "10.0.0.100", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "14.04.5-LTS", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "baseUriAzureCloud": "https://raw.githubusercontent.com/ritazh/azure-quickstart-templates/cfcrossregion/application-workloads/bosh/bosh-cf-crossregion/", + "baseUriAzureChinaCloud": "https://cloudfoundry.blob.core.chinacloudapi.cn/", + "filesToDownloadAzureCloud": [ + "[uri(variables('baseUriAzureCloud'), 'scripts/setup_env')]", + "[uri(variables('baseUriAzureCloud'), 'scripts/setup_env.py')]", + "[uri(variables('baseUriAzureCloud'), 'scripts/create_cert.sh')]", + "[uri(variables('baseUriAzureCloud'), 'scripts/init.sh')]", + "[uri(variables('baseUriAzureCloud'), 'scripts/deploy_bosh.sh')]", + "[uri(variables('baseUriAzureCloud'), 'scripts/deploy_cloudfoundry.sh')]", + "[uri(variables('baseUriAzureCloud'), 'manifests/bosh.yml')]", + "[uri(variables('baseUriAzureCloud'), 'manifests/cross.yml')]", + "http://go-cli.s3-website-us-east-1.amazonaws.com/releases/v6.14.1/cf-cli-installer_6.14.1_x86-64.deb" + ], + "filesToDownloadAzureChinaCloud": [ + "[uri(variables('baseUriAzureChinaCloud'), 'scripts/setup_env')]", + "[uri(variables('baseUriAzureChinaCloud'), 'scripts/setup_env.py')]", + "[uri(variables('baseUriAzureChinaCloud'), 'scripts/create_cert.sh')]", + "[uri(variables('baseUriAzureChinaCloud'), 'scripts/init.sh')]", + "[uri(variables('baseUriAzureChinaCloud'), 'scripts/deploy_bosh.sh')]", + "[uri(variables('baseUriAzureChinaCloud'), 'scripts/deploy_cloudfoundry.sh')]", + "[uri(variables('baseUriAzureChinaCloud'), 'manifests/bosh.yml')]", + "[uri(variables('baseUriAzureChinaCloud'), 'manifests/cross.yml')]", + "[uri(variables('baseUriAzureChinaCloud'), 'cf-cli/cf.deb')]" + ], + "filesToDownload": "concat(filesToDownload, parameters(environment))", + "environmentAzureCloud": { + "serviceHostBase": "core.windows.net", + "boshReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry/bosh?v=256.2", + "boshReleaseSha1": "ff2f4e16e02f66b31c595196052a809100cfd5a8", + "boshAzureCPIReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry-incubator/bosh-azure-cpi-release?v=10", + "boshAzureCPIReleaseSha1": "48725899f8b3f0f625bdb3bcff97bc0d6bf193e1", + "stemcellUrl": "https://bosh.io/d/stemcells/bosh-azure-hyperv-ubuntu-trusty-go_agent?v=3169", + "stemcellSha1": "ff13c47ac7ce121dee6153c1564bd8965edf9f59", + "boshInitUrl": "https://s3.amazonaws.com/bosh-init-artifacts/bosh-init-0.0.81-linux-amd64", + "cfReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry/cf-release?v=231" + }, + "environmentAzureChinaCloud": { + "serviceHostBase": "core.chinacloudapi.cn", + "boshReleaseUrl": "[uri(variables('baseUriAzureChinaCloud'), 'releases/bosh-256.2.tgz')]", + "boshReleaseSha1": "ff2f4e16e02f66b31c595196052a809100cfd5a8", + "boshAzureCPIReleaseUrl": "[uri(variables('baseUriAzureChinaCloud'), 'releases/bosh-azure-cpi-release-10.tgz')]", + "boshAzureCPIReleaseSha1": "48725899f8b3f0f625bdb3bcff97bc0d6bf193e1", + "stemcellUrl": "[uri(variables('baseUriAzureChinaCloud'), 'stemcells/bosh-stemcell-3169-azure-hyperv-ubuntu-trusty-go_agent.tgz')]", + "stemcellSha1": "ff13c47ac7ce121dee6153c1564bd8965edf9f59", + "boshInitUrl": "[uri(variables('baseUriAzureChinaCloud'), 'bosh-init/bosh-init-0.0.81-linux-amd64')]", + "cfReleaseUrl": "[uri(variables('baseUriAzureChinaCloud'), 'releases/cf-release-231.tgz')]" + }, + "environment": "concat(environment, parameters(environment))", + "keepUnreachableVMs": "false" + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-bosh", + "location": "East US", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "bosh-agent", + "properties": { + "description": "Allow bosh-agent", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6868", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "bosh-director", + "properties": { + "description": "Allow bosh-director", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "25555", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 202, + "direction": "Inbound" + } + }, + { + "name": "dns", + "properties": { + "description": "Allow DNS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "53", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-devbox", + "location": "East US", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "primarynsg-cf", + "location": "East US", + "properties": { + "securityRules": [ + { + "name": "cf-https", + "properties": { + "description": "Allow cf-https", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "cf-log", + "properties": { + "description": "Allow cf-log", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "secondarynsg-cf", + "location": "West US", + "properties": { + "securityRules": [ + { + "name": "cf-https", + "properties": { + "description": "Allow cf-https", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "cf-log", + "properties": { + "description": "Allow cf-log", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('primaryStorageAccountName')]", + "apiVersion": "2015-06-15", + "location": "East US", + "properties": { + "accountType": "Premium_LRS" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('defaultprimaryStorageAccountName')]", + "apiVersion": "2015-06-15", + "location": "East US", + "properties": { + "accountType": "Standard_RAGRS" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('secondaryStorageAccountName')]", + "apiVersion": "2015-06-15", + "location": "West US", + "properties": { + "accountType": "Premium_LRS" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('defaultsecondaryStorageAccountName')]", + "apiVersion": "2015-06-15", + "location": "West US", + "properties": { + "accountType": "Standard_RAGRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-devbox", + "location": "East US", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(toLower(parameters('vmName')), '-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-bosh", + "location": "East US", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-cf-primary", + "location": "East US", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-cf-secondary", + "location": "West US", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "primaryboshvnet-crp-gw-publicip", + "location": "East US", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "secondaryboshvnet-crp-gw-publicip", + "location": "West US", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "primaryboshvnet-crp", + "location": "East US", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Bosh", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "CloudFoundry", + "properties": { + "addressPrefix": "10.0.16.0/20" + } + }, + { + "name": "Diego", + "properties": { + "addressPrefix": "10.0.32.0/20" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.0.254.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "secondaryboshvnet-crp", + "location": "West US", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.2.0.0/16" + ] + }, + "subnets": [ + { + "name": "CloudFoundry", + "properties": { + "addressPrefix": "10.2.16.0/20" + } + }, + { + "name": "Diego", + "properties": { + "addressPrefix": "10.2.32.0/20" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.2.254.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "primaryGEN-UNIQUE", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-devbox", + "Microsoft.Network/virtualNetworks/primaryboshvnet-crp", + "Microsoft.Network/networkSecurityGroups/nsg-devbox" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-devbox" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.100", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-devbox" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/primaryboshvnet-crp/subnets/Bosh" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "primaryboshvnet-crp-gw", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/primaryboshvnet-crp-gw-publicip", + "Microsoft.Network/virtualNetworks/primaryboshvnet-crp" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/primaryboshvnet-crp/subnets/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/primaryboshvnet-crp-gw-publicip" + } + }, + "name": "vnetGatewayConfigMain" + } + ], + "sku": { + "name": "HighPerformance", + "tier": "HighPerformance" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": "false" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "secondaryboshvnet-crp-gw", + "location": "West US", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/secondaryboshvnet-crp-gw-publicip", + "Microsoft.Network/virtualNetworks/secondaryboshvnet-crp" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/secondaryboshvnet-crp/subnets/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/secondaryboshvnet-crp-gw-publicip" + } + }, + "name": "vnetGatewayConfigMain" + } + ], + "sku": { + "name": "HighPerformance", + "tier": "HighPerformance" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": "false" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/connections", + "name": "Primary2Second", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/primaryboshvnet-crp-gw", + "Microsoft.Network/virtualNetworkGateways/secondaryboshvnet-crp-gw" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/primaryboshvnet-crp-gw" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/secondaryboshvnet-crp-gw" + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "youshould2changethisvalueforsure1time" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/connections", + "name": "Secondary2Primary", + "location": "West US", + "dependsOn": [ + "Microsoft.Network/virtualNetworkGateways/primaryboshvnet-crp-gw", + "Microsoft.Network/virtualNetworkGateways/secondaryboshvnet-crp-gw" + ], + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/secondaryboshvnet-crp-gw" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/primaryboshvnet-crp-gw" + }, + "connectionType": "Vnet2Vnet", + "routingWeight": 3, + "sharedKey": "youshould2changethisvalueforsure1time" + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "East US", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/primaryGEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/primaryGEN-UNIQUE" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/initdevbox", + "apiVersion": "2017-03-30", + "location": "East US", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.5", + "settings": { + "fileUris": "concat(filesToDownload, parameters(environment))", + "enableInternalDNSCheck": false, + "VNET_NAME": "primaryboshvnet-crp", + "SUBNET_NAME_FOR_BOSH": "Bosh", + "SUBNET_ADDRESS_RANGE_FOR_BOSH": "10.0.0.0/24", + "SUBNET_NAME_FOR_CLOUD_FOUNDRY": "CloudFoundry", + "SUBNET_ADDRESS_RANGE_FOR_CLOUD_FOUNDRY": "10.0.16.0/20", + "CLOUD_FOUNDRY_PUBLIC_IP": "[reference(concat(parameters('vmName'),'-cf-primary')).ipAddress]", + "BOSH_PUBLIC_IP": "[reference(concat(parameters('vmName'),'-bosh')).ipAddress]", + "NSG_NAME_FOR_BOSH": "nsg-bosh", + "NSG_NAME_FOR_CLOUD_FOUNDRY": "primarynsg-cf", + "SUBSCRIPTION_ID": "[subscription().subscriptionId]", + "RESOURCE_GROUP_NAME": "[resourceGroup().name]", + "DEFAULT_STORAGE_ACCOUNT_NAME": "[variables('defaultprimaryStorageAccountName')]", + "STORAGE_ACCESS_KEY": "[listKeys(variables('defaultprimaryStorageid'), variables('apiVersion')).key1]", + "ADMIN_USER_NAME": "GEN-UNIQUE", + "ENVIRONMENT": "AzureCloud", + "SERVICE_HOST_BASE": "(environment).serviceHostBase", + "BOSH_RELEASE_URL": "(environment).boshReleaseUrl", + "BOSH_RELEASE_SHA1": "(environment).boshReleaseSha1", + "BOSH_AZURE_CPI_RELEASE_URL": "(environment).boshAzureCPIReleaseUrl", + "BOSH_AZURE_CPI_RELEASE_SHA1": "(environment).boshAzureCPIReleaseSha1", + "STEMCELL_URL": "(environment).stemcellUrl", + "STEMCELL_SHA1": "(environment).stemcellSha1", + "CF_RELEASE_URL": "(environment).cfReleaseUrl", + "BOSH_INIT_URL": "(environment).boshInitUrl", + "KEEP_UNREACHABLE_VMS": "false", + "AUTO_DEPLOY_BOSH": "disabled", + "CUSTOM_SYSTEM_DOMAIN": "mydomain.com", + "EXTERNAL_DATABASE_ENDPOINT": "database host endpoint that has ccdb and uaadb", + "EXTERNAL_NFS_ENDPOINT": "nfs endpoint", + "CLOUD_FOUNDRY_PUBLIC_IP_SECONDARY": "[reference(concat(parameters('vmName'),'-cf-secondary')).ipAddress]", + "STORAGE_ACCOUNT_NAME_PRIMARY": "[variables('primaryStorageAccountName')]", + "STORAGE_ACCESS_KEY_PRIMARY": "[listKeys(variables('primaryStorageid'), variables('apiVersion')).key1]", + "STORAGE_ACCOUNT_NAME_SECONDARY": "[variables('secondaryStorageAccountName')]", + "STORAGE_ACCESS_KEY_SECONDARY": "[listKeys(variables('secondaryStorageid'), variables('apiVersion')).key1]", + "DEFAULT_STORAGE_ACCOUNT_NAME_SECONDARY": "[variables('defaultsecondaryStorageAccountName')]", + "DEFAULT_STORAGE_ACCESS_KEY_SECONDARY": "[listKeys(variables('defaultsecondaryStorageid'), variables('apiVersion')).key1]", + "VNET_NAME_SECONDARY": "secondaryboshvnet-crp" + }, + "protectedSettings": { + "commandToExecute": "./setup_env GEN-UNIQUE-18GEN-UNIQUE-18 GEN-UNIQUE-18GEN-UNIQUE-18 \"GEN-PASSWORD\"" + } + } + } + ], + "outputs": { + "sshDevBox": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(concat('Microsoft.Network/publicIPAddresses/', parameters('vmName'), '-devbox')).dnsSettings.fqdn)]" + }, + "cloudFoundryIP": { + "type": "string", + "value": "[reference(concat(parameters('vmName'),'-cf-primary')).ipAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT371 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT371 new file mode 100644 index 0000000..ccce597 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT371 @@ -0,0 +1,88 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ros/ros-vm-linux/nestedtemplates/customScriptExtension.json" + ], + "timestamp": 1642962893358, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-linux/nestedtemplates/customScriptExtension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT371", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT371", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "metadata": { + "description": "The Location For the resources" + }, + "type": "string" + }, + "extensionName": { + "type": "string", + "metadata": { + "description": "name of the extension" + } + }, + "vmName": { + "metadata": { + "description": "The name of the vm" + }, + "type": "string" + }, + "fileUris": { + "type": "array" + }, + "commandToExecute": { + "type": "string" + } + }, + "variables": { + "extensionNameLinux": "extensionName-linux" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "vmName/extensionName-linux", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "fileUris" + }, + "protectedSettings": { + "commandToExecute": "commandToExecute" + } + } + } + ], + "outputs": { + "instanceView": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionNameLinux'))).instanceView]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT372 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT372 new file mode 100644 index 0000000..3658b3c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT372 @@ -0,0 +1,55 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ros/ros-vm-linux/nestedtemplates/nvidiaGpuDriverLinux.json" + ], + "timestamp": 1642962893364, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-linux/nestedtemplates/nvidiaGpuDriverLinux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT372", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT372", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "name": "vmName/NvidiaGpuDriverLinux", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "location", + "apiVersion": "2020-12-01", + "properties": { + "publisher": "Microsoft.HpcCompute", + "type": "NvidiaGpuDriverLinux", + "typeHandlerVersion": "1.3", + "autoUpgradeMinorVersion": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT373 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT373 new file mode 100644 index 0000000..aa10241 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT373 @@ -0,0 +1,463 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ros/ros-vm-linux/azuredeploy.json", + "/application-workloads/ros/ros-vm-linux/azuredeploy.parameters.json" + ], + "timestamp": 1642962893372, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-linux/azuredeploy.json", + "/application-workloads/ros/ros-vm-linux/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT373", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT373", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "projectName": { + "type": "string", + "metadata": { + "description": "Specifies a name for generating resource names." + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The virtual machine size." + } + }, + "pipelineProvider": { + "type": "string", + "defaultValue": "None", + "allowedValues": [ + "None", + "AzurePipelines", + "GitHubRunner" + ], + "metadata": { + "description": "The continuous integration provider to register." + } + }, + "vstsAccount": { + "type": "string", + "metadata": { + "description": "The Visual Studio Team Services account name, that is, the first part of your VSTSAccount.visualstudio.com" + }, + "defaultValue": "" + }, + "vstsPersonalAccessToken": { + "type": "securestring", + "metadata": { + "description": "The personal access token to connect to VSTS" + }, + "defaultValue": "" + }, + "vstsPoolName": { + "type": "string", + "defaultValue": "Default", + "metadata": { + "description": "The Visual Studio Team Services build agent pool for this build agent to join. Use 'Default' if you don't have a separate pool." + } + }, + "githubRepo": { + "type": "string", + "metadata": { + "description": "The github account and repo alias." + }, + "defaultValue": "" + }, + "githubPersonalAccessToken": { + "type": "securestring", + "metadata": { + "description": "The personal access token to connect to GitHub." + }, + "defaultValue": "" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "location": "[resourceGroup().location]", + "networkInterfaceName": "GEN-UNIQUE-8-nic", + "networkSecurityGroupName": "GEN-UNIQUE-8-nsg", + "virtualNetworkName": "GEN-UNIQUE-8-vnet", + "publicIpAddressName": "GEN-UNIQUE-8-ip", + "virtualMachineName": "GEN-UNIQUE-8-vm", + "ciAgentName": "GEN-UNIQUE-8-agent", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8-vnet/default", + "ubuntuOSVersion": "18.04-LTS", + "osDiskType": "StandardSSD_LRS", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "addressPrefixes": [ + "10.0.0.0/24" + ], + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ], + "nvidiaGpuDriverLinuxUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/nvidiaGpuDriverLinux.json', parameters('_artifactsLocationSasToken')))]", + "extensionUrl": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "vstsScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/install-vsts.sh', parameters('_artifactsLocationSasToken')))]", + "rosScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/install-ros.sh', parameters('_artifactsLocationSasToken')))]", + "vstsParameters": "GEN-UNIQUE-8-agent parameters('vstsAccount') parameters('vstsPersonalAccessToken') Default", + "githubScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/install-github.sh', parameters('_artifactsLocationSasToken')))]", + "githubParameters": "GEN-UNIQUE-8-agent parameters('githubRepo') parameters('githubPersonalAccessToken') GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE-8-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-8-nsg", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8-vnet", + "Microsoft.Network/publicIpAddresses//GEN-UNIQUE-8-ip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8-vnet/default" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE-8-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "priority": 1000, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE-8-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/24" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE-8-ip", + "location": "[resourceGroup().location]", + "properties": { + "publicIpAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('ros-vm-', uniqueString(resourceGroup().id))]" + } + }, + "sku": { + "name": "Basic" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-8-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-8-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "storageProfile": { + "osDisk": { + "createOption": "fromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic" + } + ] + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + } + } + }, + { + "condition": "[contains(parameters('virtualMachineSize'), 'Standard_NV')]", + "name": "nvidia-gpu-driver-linux", + "apiVersion": "2021-04-01", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/GEN-UNIQUE-8-vm-ROSInstall" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/nvidiaGpuDriverLinux.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "vmName": { + "value": "GEN-UNIQUE-8-vm" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "GEN-UNIQUE-8-vm-ROSInstall", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8-vm" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "extensionName": { + "value": "cse" + }, + "vmName": { + "value": "GEN-UNIQUE-8-vm" + }, + "fileUris": { + "value": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install-ros.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "commandToExecute": { + "value": "bash install-ros.sh" + } + } + } + }, + { + "condition": "[contains(parameters('pipelineProvider'), 'AzurePipelines')]", + "name": "GEN-UNIQUE-8-vm-VSTSAgentInstall", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Resources/deployments/GEN-UNIQUE-8-vm-ROSInstall" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "extensionName": { + "value": "cse" + }, + "vmName": { + "value": "GEN-UNIQUE-8-vm" + }, + "fileUris": { + "value": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install-vsts.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "commandToExecute": { + "value": "bash install-vsts.sh GEN-UNIQUE-8-agent parameters('vstsAccount') parameters('vstsPersonalAccessToken') Default" + } + } + } + }, + { + "condition": "[contains(parameters('pipelineProvider'), 'GitHubRunner')]", + "name": "GEN-UNIQUE-8-vm-GitHubAgentInstall", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Resources/deployments/GEN-UNIQUE-8-vm-ROSInstall" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "extensionName": { + "value": "cse" + }, + "vmName": { + "value": "GEN-UNIQUE-8-vm" + }, + "fileUris": { + "value": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install-github.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "commandToExecute": { + "value": "bash install-github.sh GEN-UNIQUE-8-agent parameters('githubRepo') parameters('githubPersonalAccessToken') GEN-UNIQUE" + } + } + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT374 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT374 new file mode 100644 index 0000000..80d6d47 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT374 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ros/ros-vm-windows/nestedtemplates/customScriptExtension.json" + ], + "timestamp": 1642962893410, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-windows/nestedtemplates/customScriptExtension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT374", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT374", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "metadata": { + "description": "The Location For the resources" + }, + "type": "string" + }, + "extensionName": { + "type": "string", + "metadata": { + "description": "name of the extension" + } + }, + "vmName": { + "metadata": { + "description": "The name of the vm" + }, + "type": "string" + }, + "fileUris": { + "type": "array" + }, + "commandToExecute": { + "type": "string" + } + }, + "variables": { + "extensionNameWindows": "extensionName-windows" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "name": "vmName/extensionName-windows", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "fileUris", + "commandToExecute": "commandToExecute" + } + } + } + ], + "outputs": { + "instanceView": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionNameWindows'))).instanceView]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT375 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT375 new file mode 100644 index 0000000..6140786 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT375 @@ -0,0 +1,55 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ros/ros-vm-windows/nestedtemplates/nvidiaGpuDriverWindows.json" + ], + "timestamp": 1642962893420, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-windows/nestedtemplates/nvidiaGpuDriverWindows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT375", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT375", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "name": "vmName/NvidiaGpuDriverWindows", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "location", + "apiVersion": "2020-12-01", + "properties": { + "publisher": "Microsoft.HpcCompute", + "type": "NvidiaGpuDriverWindows", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": true + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT376 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT376 new file mode 100644 index 0000000..5da55a4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT376 @@ -0,0 +1,537 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ros/ros-vm-windows/azuredeploy.json", + "/application-workloads/ros/ros-vm-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962893427, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ros/ros-vm-windows/azuredeploy.json", + "/application-workloads/ros/ros-vm-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT376", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT376", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "projectName": { + "type": "string", + "maxLength": 12, + "metadata": { + "description": "Specifies a name for generating resource names." + }, + "value": "GEN-UNIQUE-8" + }, + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_NV6", + "Standard_NV12", + "Standard_NV24" + ], + "metadata": { + "description": "The virtual machine size." + } + }, + "vmImage": { + "type": "string", + "defaultValue": "Windows10", + "allowedValues": [ + "Windows10", + "VisualStudio2019" + ], + "metadata": { + "description": "The virutal machine image base." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "pipelineProvider": { + "type": "string", + "defaultValue": "None", + "allowedValues": [ + "None", + "AzurePipelines", + "GitHubRunner" + ], + "metadata": { + "description": "The continuous integration provider to register." + } + }, + "vstsAccount": { + "type": "string", + "metadata": { + "description": "The Visual Studio Team Services account name, that is, the first part of your VSTSAccount.visualstudio.com" + }, + "defaultValue": "", + "value": "GEN-UNIQUE" + }, + "vstsPersonalAccessToken": { + "type": "securestring", + "metadata": { + "description": "The personal access token to connect to VSTS" + }, + "defaultValue": "", + "value": "GEN-UNIQUE" + }, + "vstsPoolName": { + "type": "string", + "defaultValue": "Default", + "metadata": { + "description": "The Visual Studio Team Services build agent pool for this build agent to join. Use 'Default' if you don't have a separate pool." + }, + "value": "GEN-UNIQUE" + }, + "enableAutologon": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable autologon to run the build agent in interactive mode that can sustain machine reboots.
Set this to true if the agents will be used to run UI tests." + }, + "value": false + }, + "githubRepo": { + "type": "string", + "metadata": { + "description": "The github account and repo alias." + }, + "defaultValue": "" + }, + "githubPersonalAccessToken": { + "type": "securestring", + "metadata": { + "description": "The personal access token to connect to GitHub." + }, + "defaultValue": "" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "location": "[resourceGroup().location]", + "networkInterfaceName": "GEN-UNIQUE-8-nic", + "networkSecurityGroupName": "GEN-UNIQUE-8-nsg", + "virtualNetworkName": "GEN-UNIQUE-8-vnet", + "publicIpAddressName": "GEN-UNIQUE-8-ip", + "virtualMachineName": "GEN-UNIQUE-8-vm", + "diagnosticsStorageAccountName": "[concat(uniqueString(resourceGroup().id),'diag')]", + "nsgId": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8-vnet/default", + "networkSecurityGroupRules": [ + { + "name": "AllowRDP", + "properties": { + "priority": 300, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389" + } + }, + { + "name": "AllowPSRemoting", + "properties": { + "priority": 301, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "5986" + } + } + ], + "diagnosticsStorageAccountType": "Standard_LRS", + "diagnosticsStorageAccountKind": "Storage", + "addressPrefixes": [ + "10.0.0.0/24" + ], + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ], + "publicIpAddressType": "Dynamic", + "publicIpAddressSku": "Basic", + "vmImageReferences": { + "VisualStudio2019": { + "publisher": "MicrosoftVisualStudio", + "offer": "visualstudio2019latest", + "sku": "vs-2019-comm-latest-ws2019", + "version": "latest" + }, + "Windows10": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "rs5-enterprise", + "version": "latest" + } + }, + "osDiskType": "StandardSSD_LRS", + "rosScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('InstallROS.ps1', parameters('_artifactsLocationSasToken')))]", + "vstsScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('InstallVstsAgent.ps1', parameters('_artifactsLocationSasToken')))]", + "githubScriptFileUri": "[uri(parameters('_artifactsLocation'), concat('InstallGitHubAgent.ps1', parameters('_artifactsLocationSasToken')))]", + "nvidiaGpuDriverWindowsUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/nvidiaGpuDriverWindows.json', parameters('_artifactsLocationSasToken')))]", + "extensionUrl": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "vstsParameters": "-vstsAccount GEN-UNIQUE -personalAccessToken GEN-UNIQUE -AgentName GEN-UNIQUE-8-vsts -PoolName GEN-UNIQUE -runAsAutoLogon parameters('enableAutologon') -vmAdminUserName GEN-UNIQUE -vmAdminPassword GEN-PASSWORD", + "githubParameters": "-GitHubRepo parameters('githubRepo') -GitHubPAT parameters('githubPersonalAccessToken') -AgentName GEN-UNIQUE-8-github" + }, + "resources": [ + { + "name": "GEN-UNIQUE-8-nic", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-8-nsg", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8-vnet", + "Microsoft.Network/publicIpAddresses//GEN-UNIQUE-8-ip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8-vnet/default" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-8-ip" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8-nsg" + } + } + }, + { + "name": "GEN-UNIQUE-8-nsg", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-02-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowRDP", + "properties": { + "priority": 300, + "protocol": "TCP", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389" + } + }, + { + "name": "AllowPSRemoting", + "properties": { + "priority": 301, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "5986" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-8-vnet", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-04-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/24" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-8-ip", + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2019-02-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIpAllocationMethod": "Dynamic" + }, + "sku": { + "name": "Basic" + } + }, + { + "name": "GEN-UNIQUE-8-vm", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-03-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('diagnosticsStorageAccountName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": "(vmImageReferences)[parameters(vmImage)]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic" + } + ] + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "enableAutomaticUpdates": true, + "provisionVmAgent": true + } + }, + "licenseType": "Windows_Client", + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticsStorageAccountName')), '2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "name": "[variables('diagnosticsStorageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "location": "[resourceGroup().location]", + "properties": {}, + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "name": "GEN-UNIQUE-8-vm-ROSInstall", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8-vm" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "extensionName": { + "value": "cse" + }, + "vmName": { + "value": "GEN-UNIQUE-8-vm" + }, + "fileUris": { + "value": [ + "[uri(parameters('_artifactsLocation'), concat('InstallROS.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "commandToExecute": { + "value": "powershell -ExecutionPolicy Unrestricted -file InstallROS.ps1" + } + } + } + }, + { + "condition": "[contains(parameters('pipelineProvider'), 'AzurePipelines')]", + "name": "GEN-UNIQUE-8-vm-VSTSAgentInstall", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/GEN-UNIQUE-8-vm-ROSInstall" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "extensionName": { + "value": "cse" + }, + "vmName": { + "value": "GEN-UNIQUE-8-vm" + }, + "fileUris": { + "value": [ + "[uri(parameters('_artifactsLocation'), concat('InstallVstsAgent.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "commandToExecute": { + "value": "powershell.exe -ExecutionPolicy Unrestricted -Command \"& {./InstallVstsAgent.ps1 -vstsAccount GEN-UNIQUE -personalAccessToken GEN-UNIQUE -AgentName GEN-UNIQUE-8-vsts -PoolName GEN-UNIQUE -runAsAutoLogon parameters('enableAutologon') -vmAdminUserName GEN-UNIQUE -vmAdminPassword GEN-PASSWORD}\"" + } + } + } + }, + { + "condition": "[contains(parameters('pipelineProvider'), 'GitHubRunner')]", + "name": "GEN-UNIQUE-8-vm-GitHubAgentInstall", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/GEN-UNIQUE-8-vm-ROSInstall" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/customScriptExtension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "extensionName": { + "value": "cse" + }, + "vmName": { + "value": "GEN-UNIQUE-8-vm" + }, + "fileUris": { + "value": [ + "[uri(parameters('_artifactsLocation'), concat('InstallGitHubAgent.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "commandToExecute": { + "value": "powershell.exe -ExecutionPolicy Unrestricted -Command \"& {./InstallGitHubAgent.ps1 -GitHubRepo parameters('githubRepo') -GitHubPAT parameters('githubPersonalAccessToken') -AgentName GEN-UNIQUE-8-github}\"" + } + } + } + }, + { + "condition": "[contains(parameters('virtualMachineSize'), 'Standard_NV')]", + "name": "nvidia-gpu-driver-windows", + "apiVersion": "2019-05-01", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/GEN-UNIQUE-8-vm-ROSInstall" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/nvidiaGpuDriverWindows.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "vmName": { + "value": "GEN-UNIQUE-8-vm" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT377 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT377 new file mode 100644 index 0000000..2043306 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT377 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/cfgFarm.json" + ], + "timestamp": 1642962893436, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/cfgFarm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT377", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT377", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "type": "string", + "metadata": { + "description": "vm name" + } + }, + "ostype": { + "type": "string", + "metadata": { + "description": "OS type (windows, linux)" + }, + "defaultValue": "windows" + }, + "moduleName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "url of the application module to install on all nodes" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "resources location" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "cfgModuleuri": "[uri(parameters('_artifactsLocation'),concat('scripts/cfgFarm.ps1' ,parameters('_artifactsLocationSasToken')))]", + "properties": { + "windows": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('scripts/cfgFarm.ps1' ,parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File .\\Scripts\\cfgFarm.ps1 -safekitcmd C:/safekit/safekit -safekitmod C:/safekit/modules -MName \"parameters('moduleName')\"" + } + }, + "linux": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 1, + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('scripts/cfgFarm.ps1' ,parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "pwsh ./cfgFarm.ps1 -safekitcmd /opt/safekit/safekit -safekitmod /opt/safekit/modules -MName \"parameters('moduleName')\"" + } + } + } + }, + "resources": [ + { + "name": "vmname/safekit", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(properties)[parameters(ostype)]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT378 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT378 new file mode 100644 index 0000000..b9bf181 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT378 @@ -0,0 +1,8174 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/cluster.json" + ], + "timestamp": 1642962893443, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT378", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.authorization/roleassignments", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT378", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "OS": { + "type": "string", + "metadata": { + "description": "Operating System to install" + } + }, + "clusterNodes": { + "type": "int", + "metadata": { + "description": "number of VM nodes to create" + }, + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4 + ] + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "the VM size for all nodes" + }, + "defaultValue": "Standard_A2_v2" + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "User for the Virtual Machines." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machines." + } + }, + "moduleUrl": { + "type": "string", + "metadata": { + "description": "url of the application module to install on all nodes (optional)" + }, + "defaultValue": "" + }, + "moduleName": { + "type": "string", + "metadata": { + "description": "name of the application module to install on all nodes (optional)" + }, + "defaultValue": "mirror" + }, + "VIPDnsLabel": { + "type": "string", + "metadata": { + "description": "Public VIP dns label (optional. If set, an additionnal Standard SKU, unassociated public IP will be created)" + }, + "defaultValue": "" + }, + "VMDnsPrefix": { + "type": "string", + "metadata": { + "description": "Public VM IP dns label prefix" + } + }, + "Loadbalancer": { + "type": "string", + "metadata": { + "description": "loadbalancer (optional. If set, a loadbalancer will be created, with the VIP as frontend and the VMs in the backend pool." + }, + "defaultValue": "none", + "allowedValues": [ + "External", + "none" + ] + }, + "azurePwsh": { + "type": "string", + "metadata": { + "description": "install azure powershell module (optional)" + }, + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ] + }, + "location": { + "type": "string", + "metadata": { + "description": "resources location" + } + }, + "safekitFileUri": { + "type": "string", + "metadata": { + "description": "url of safekit package" + }, + "defaultValue": "" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "allvms": [ + "VM1", + "VM2", + "VM3", + "VM4" + ], + "vms": "[take(variables('allvms'),parameters('clusterNodes'))]", + "frontEndIPConfigName": "parameters('VIPDnsLabel')LBFE", + "lbPoolName": "parameters('VIPDnsLabel')BEP", + "lbProbeName": "parameters('VIPDnsLabel')LBP", + "lbName": "parameters('VIPDnsLabel')LB", + "NetworkContributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "ostype": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "ips": [ + "10.0.0.10", + "10.0.0.11", + "10.0.0.12", + "10.0.0.13" + ], + "sktemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "skclustertemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installCluster.json' ,parameters('_artifactsLocationSasToken')))]", + "createviptemplate": "[concat(uri(parameters('_artifactsLocation'),'nestedtemplates/createvip.json'),parameters('_artifactsLocationSasToken'))]", + "skmoduletemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installModule.json' ,parameters('_artifactsLocationSasToken')))]", + "NSGName": "SafeKit-NSG", + "storageAccountName": "[concat(uniquestring(resourceGroup().id,parameters('location')), 'stor')]", + "lbPoolID": "[if(equals(parameters('LoadBalancer'),'none'),'',resourceId('Microsoft.Network/loadBalancers/backendAddressPools',variables('lbName'),variables('lbPoolName')))]", + "lbaddrpool1": [ + { + "id": "[if(equals(parameters('LoadBalancer'),'none'),'',resourceId('Microsoft.Network/loadBalancers/backendAddressPools',variables('lbName'),variables('lbPoolName')))]" + } + ], + "lbaddrpool": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]", + "WindowsStorageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "OS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "CentosStorageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.5", + "version": "latest" + }, + "osDisk": { + "createOption": "fromImage" + } + }, + "linuxConfiguration": { + "disablePasswordAuthentication": "false" + }, + "addressPrefix": "10.0.0.0/16", + "virtualNetworkName": "[concat(resourceGroup().name,'VNET')]", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "[variables('virtualNetworkName')]", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "optionalVip", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('createviptemplate')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "VIPDnsLabel": { + "value": "" + } + } + } + }, + { + "condition": "[and(not(empty(parameters('VIPDnsLabel'))),not(equals(parameters('Loadbalancer'),'none')))]", + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-11-01", + "name": "parameters('VIPDnsLabel')LB", + "location": "location", + "dependsOn": [ + "optionalVip" + ], + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "parameters('VIPDnsLabel')LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pipparameters('VIPDnsLabel')" + } + } + } + ], + "backendAddressPools": [ + { + "name": "parameters('VIPDnsLabel')BEP" + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/parameters('VIPDnsLabel')LB/parameters('VIPDnsLabel')LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/parameters('VIPDnsLabel')LB/parameters('VIPDnsLabel')BEP" + }, + "protocol": "tcp", + "frontendPort": 9453, + "backendPort": 9453, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/parameters('VIPDnsLabel')LB/parameters('VIPDnsLabel')LBP" + } + } + } + ], + "probes": [ + { + "name": "parameters('VIPDnsLabel')LBP", + "properties": { + "protocol": "http", + "port": 9010, + "requestPath": "/var/modules/mirror/ready.txt", + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('storageAccountName')]", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "SafeKit-NSG", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "remoteaccess", + "properties": { + "description": "Allow Remote Access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "[if(equals(variables('ostype'),'linux'),'22','3389')]", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "secconsole", + "properties": { + "description": "Allow Web Console Security Access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9001", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "webconsole", + "properties": { + "description": "Allow Web Console Access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9453", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "[variables('lbName')]", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "systemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "safekitClusterConfig", + "dependsOn": [ + "skCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installCluster.json' ,parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "vmname": { + "value": "(vms)[0]" + }, + "vmList": { + "value": "[take(variables('allvms'),parameters('clusterNodes'))]" + }, + "fqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[0]))).dnsSettings.fqdn]" + }, + "privateIps": { + "value": [ + "10.0.0.10", + "10.0.0.11", + "10.0.0.12", + "10.0.0.13" + ] + }, + "VMDnsPrefix": { + "value": "VMDnsPrefix" + }, + "lblist": { + "value": "[if(greater(length(parameters('VIPDnsLabel')),0),reference('optionalVip').outputs.fqdn.value,'')]" + }, + "capassword": { + "value": "AdminPassword" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "safekitModuleConfig", + "dependsOn": [ + "safekitClusterConfig" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installModule.json' ,parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "vmname": { + "value": "(vms)[0]" + }, + "moduleUrl": { + "value": "" + }, + "moduleName": { + "value": "mirror" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + } + ], + "outputs": { + "adminUser": { + "type": "string", + "value": "[variables('adminUserName')]" + }, + "fqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[0]))).dnsSettings.fqdn]" + }, + "Credentials Url": { + "type": "string", + "value": "[concat('https://',reference(resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[0]))).dnsSettings.fqdn,':9001/adduser.html')]" + }, + "Credentials Url Login": { + "type": "string", + "value": "user: CA_admin, password: the value of AdminPassword" + }, + "Console Url": { + "type": "string", + "value": "[concat('https://',reference(resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[0]))).dnsSettings.fqdn,':9453/deploy.html')]" + }, + "Mosaic URL": { + "type": "string", + "value": "[concat('https://',reference('optionalVip').outputs.fqdn.value,':9453/cgi-bin/mosaic?mode=mosaic&arg0=',parameters('moduleName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT379 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT379 new file mode 100644 index 0000000..fd9675a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT379 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/createvip.json" + ], + "timestamp": 1642962893476, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/createvip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT379", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT379", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "VIPDnsLabel": { + "type": "string", + "metadata": { + "description": "Public VIP dns label (optional. If set, an additionnal Standard SKU, unassociated public IP will be created)" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "resources location" + } + } + }, + "resources": [ + { + "condition": "[not(empty(parameters('VIPDnsLabel')))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "pipparameters('VIPDnsLabel')", + "location": "location", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('VIPDnsLabel'))]" + } + } + } + ], + "outputs": { + "fqdn": { + "type": "string", + "value": "[if(empty(parameters('VIPDnsLabel')),'',reference(resourceId('Microsoft.Network/publicIPAddresses', concat('pip',parameters('VIPDnsLabel')))).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT38 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT38 new file mode 100644 index 0000000..df7328b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT38 @@ -0,0 +1,46 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/generate-customdata.json" + ], + "timestamp": 1642962883640, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/generate-customdata.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT38", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT38", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "customData": { + "type": "object", + "metadata": { + "Description": "Custom Data Object" + } + } + }, + "resources": [], + "outputs": { + "customData": { + "type": "string", + "value": "[base64(string(parameters('customData')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT380 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT380 new file mode 100644 index 0000000..33bf76f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT380 @@ -0,0 +1,168 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/installCluster.json" + ], + "timestamp": 1642962893504, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/installCluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT380", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT380", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "type": "string", + "metadata": { + "description": "vm name" + } + }, + "ostype": { + "type": "string", + "metadata": { + "description": "OS type (windows, linux)" + }, + "defaultValue": "windows" + }, + "vmList": { + "type": "array", + "metadata": { + "description": "vm names" + } + }, + "fqdn": { + "type": "string", + "metadata": { + "description": "first vm public ip name" + } + }, + "privateIps": { + "type": "array", + "metadata": { + "description": "vm private ip list" + } + }, + "VMDnsPrefix": { + "type": "string", + "metadata": { + "description": "Public VM IP dns label prefix" + } + }, + "lblist": { + "type": "string", + "metadata": { + "description": "dns name of loadbalancer" + }, + "defaultValue": "" + }, + "capassword": { + "type": "securestring", + "metadata": { + "description": "password for CA server access" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "resources location" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "pwconfscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1' ,parameters('_artifactsLocationSasToken')))]", + "pwcertscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "pwiscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.ps1' ,parameters('_artifactsLocationSasToken')))]", + "shelliscripturi": "[uri(parameters('_artifactsLocation'),concat('scripts/installCluster.sh' ,parameters('_artifactsLocationSasToken')))]", + "domain": "[skip(parameters('fqdn'),indexOf(parameters('fqdn'),'.'))]", + "publicipfmt": "VMDnsPrefix%VM%[skip(parameters('fqdn'),indexOf(parameters('fqdn'),'.'))]", + "privateiplistarg": "[replace(string(parameters('privateIps')),'\"','')]", + "vmlistarg": "[replace(string(parameters('vmList')),'\"','')]", + "windowsfileuris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1' ,parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.ps1' ,parameters('_artifactsLocationSasToken')))]" + ], + "linuxfileuris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1' ,parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'),concat('scripts/installCluster.sh' ,parameters('_artifactsLocationSasToken')))]" + ], + "properties": { + "windows": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1' ,parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.ps1' ,parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File .\\Scripts\\InstallCluster.ps1 -vmlist \"[replace(string(parameters('vmList')),'\"','')]\" -publicipfmt \"VMDnsPrefix%VM%[skip(parameters('fqdn'),indexOf(parameters('fqdn'),'.'))]\" -privateiplist \"[replace(string(parameters('privateIps')),'\"','')]\" -lblist \"parameters('lblist')\" -Passwd \"capassword\"" + } + }, + "linux": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 1, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1' ,parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'),concat('scripts/installCluster.sh' ,parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "(sh installCluster.sh \",variables(vmlistarg),\" \",variables(publicipfmt),\" \",variables(privateiplistarg),\" \",parameters(lblist),\" \",parameters(capassword),\")" + } + } + } + }, + "resources": [ + { + "name": "vmname/safekit", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(properties)[parameters(ostype)]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT381 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT381 new file mode 100644 index 0000000..080d5ac --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT381 @@ -0,0 +1,126 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/installModule.json" + ], + "timestamp": 1642962893525, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/installModule.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT381", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT381", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "type": "string", + "metadata": { + "description": "vm name" + } + }, + "ostype": { + "type": "string", + "metadata": { + "description": "OS type (windows, linux)" + }, + "defaultValue": "windows" + }, + "moduleUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "url of the application module to install on all nodes" + } + }, + "moduleName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "url of the application module to install on all nodes" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "resources location" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "installModuleuri": "[uri(parameters('_artifactsLocation'), concat('scripts/installModule.ps1',parameters('_artifactsLocationSasToken')))]", + "properties": { + "windows": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "", + "[uri(parameters('_artifactsLocation'), concat('scripts/installModule.ps1',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File .\\Scripts\\installModule.ps1 -safekitcmd C:/safekit/safekit -MName \"parameters('moduleName')\"" + } + }, + "linux": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 1, + "fileUris": [ + "", + "[uri(parameters('_artifactsLocation'), concat('scripts/installModule.ps1',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "pwsh ./installModule.ps1 -safekitcmd /opt/safekit/safekit -MName \"parameters('moduleName')\"" + } + } + } + }, + "resources": [ + { + "name": "vmname/safekit", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(properties)[parameters(ostype)]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT382 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT382 new file mode 100644 index 0000000..1f8d938 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT382 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/safekitdepl.json" + ], + "timestamp": 1642962893532, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/nestedtemplates/safekitdepl.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT382", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT382", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "type": "string", + "metadata": { + "description": "vm name" + } + }, + "ostype": { + "type": "string", + "metadata": { + "description": "os type" + }, + "defaultValue": "windows" + }, + "capassword": { + "type": "securestring", + "metadata": { + "description": "password for CA server access" + } + }, + "azurePwsh": { + "type": "string", + "metadata": { + "description": "install azure powershell module (optional)" + }, + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ] + }, + "safekitFileUri": { + "type": "string", + "metadata": { + "description": "url of safekit package" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "resources location" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "pwazrmuri": "[uri(parameters('_artifactsLocation'), concat('scripts/installAzureRM.ps1' ,parameters('_artifactsLocationSasToken')))]", + "pwscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/InstallSafeKit.ps1' ,parameters('_artifactsLocationSasToken')))]", + "skpkg": "[last(split(parameters('safekitFileUri'),'/'))]", + "shellscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/InstallSafeKit.sh' ,parameters('_artifactsLocationSasToken')))]", + "skuri": "", + "fileUrisW": "[if(equals(parameters('azurePwsh'),'yes'),createArray(variables('skuri'),variables('pwscripturi'),variables('pwazrmuri')),createArray(variables('skuri'),variables('pwscripturi')))]", + "fileUrisL": "[if(equals(parameters('azurePwsh'),'yes'),createArray(variables('skuri'),variables('shellscripturi'),variables('pwazrmuri')),createArray(variables('skuri'),variables('shellscripturi')))]", + "properties": { + "windows": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "[if(equals(parameters('azurePwsh'),'yes'),createArray(variables('skuri'),variables('pwscripturi'),variables('pwazrmuri')),createArray(variables('skuri'),variables('pwscripturi')))]" + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File .\\Scripts\\InstallSafekit.ps1 -SkFile [last(split(parameters('safekitFileUri'),'/'))] -Passwd \"capassword\"" + } + }, + "linux": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "fileUris": "[if(equals(parameters('azurePwsh'),'yes'),createArray(variables('skuri'),variables('shellscripturi'),variables('pwazrmuri')),createArray(variables('skuri'),variables('shellscripturi')))]" + }, + "protectedSettings": { + "commandToExecute": "sh InstallSafeKit.sh ./[last(split(parameters('safekitFileUri'),'/'))] \"capassword\"" + } + } + } + }, + "resources": [ + { + "name": "vmname/safekit", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(properties)[parameters(ostype)]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT383 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT383 new file mode 100644 index 0000000..62b6763 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT383 @@ -0,0 +1,262 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.parameters.json" + ], + "timestamp": 1642962893539, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT383", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT383", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "OS": { + "type": "string", + "metadata": { + "description": "Operating System to install" + }, + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2016-Datacenter", + "2019-Datacenter", + "Linux CentOS" + ] + }, + "clusterNodes": { + "type": "int", + "metadata": { + "description": "number of VM nodes to create" + }, + "defaultValue": 2, + "allowedValues": [ + 2, + 3, + 4 + ] + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "the VM size for all nodes" + }, + "defaultValue": "Standard_D2_v3" + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "User for the Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machines." + }, + "value": "GEN-PASSWORD" + }, + "VIPDnsLabel": { + "type": "string", + "metadata": { + "description": "Public VIP dns label. VIP fqdn will be like ..cloudapp.azure.com and must be globally unique." + }, + "defaultValue": "[concat(uniqueString(resourceGroup().id),'vip')]", + "value": "GEN-UNIQUE-13" + }, + "VMDnsPrefix": { + "type": "string", + "metadata": { + "description": "Public VM IP dns label prefix. VM fqdn will be like vm..cloudapp.azure.com and must be unique." + }, + "defaultValue": "[uniqueString(resourceGroup().id)]", + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "resources location (region must support Availability Zones)" + }, + "value": "westus2" + }, + "safekitFileUri": { + "type": "string", + "metadata": { + "description": "url of SafeKit package (optional, default to the appropriate Evidian website url)." + }, + "defaultValue": "default" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "clusternodes": 2, + "vmname": "VM1", + "moduleName": "farm", + "cltemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cluster.json' ,parameters('_artifactsLocationSasToken')))]", + "ostype": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]", + "skcfgmoduletemplate": "[uri(parameters('_artifactsLocation'),concat('nestedtemplates/cfgFarm.json' ,parameters('_artifactsLocationSasToken')))]", + "safekitpkgUrl": { + "windows": "https://support.evidian.com/solutions/downloads/safekit/cloud/platforms/windows/current_versions/safekit_cloud.msi", + "linux": "https://support.evidian.com/solutions/downloads/safekit/cloud/platforms/linux/current_versions/safekit_cloud.bin" + }, + "farmUrl": { + "windows": "https://support.evidian.com/solutions/downloads/safekit/cloud/application_modules/windows/farm.safe", + "linux": "https://support.evidian.com/solutions/downloads/safekit/cloud/application_modules/linux/farm.safe" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "safekitCluster", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cluster.json' ,parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "OS": { + "value": "2016-Datacenter" + }, + "clusterNodes": { + "value": "clusterNodes" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "adminUser": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "moduleUrl": { + "value": "(farmUrl)[variables(ostype)]" + }, + "moduleName": { + "value": "farm" + }, + "VIPDnsLabel": { + "value": "GEN-UNIQUE-13" + }, + "VMDnsPrefix": { + "value": "GEN-UNIQUE-10" + }, + "Loadbalancer": { + "value": "External" + }, + "location": { + "value": "westus2" + }, + "safekitFileUri": { + "value": "[if(equals(parameters('safekitFileUri'),'default'),variables('safekitpkgUrl')[variables('ostype')],parameters('safekitFileUri'))]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-05-01", + "name": "safekitModuleConfig", + "dependsOn": [ + "safekitCluster" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nestedtemplates/cfgFarm.json' ,parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmname": { + "value": "VM1" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "moduleName": { + "value": "farm" + }, + "location": { + "value": "westus2" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "FIRST GET THE CREDENTIALS": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Credentials Url'].value]" + }, + "LOGIN TO GET THE CREDENTIALS": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Credentials Url Login'].value]" + }, + "START THE CONSOLE": { + "type": "string", + "value": "[concat(reference('safekitCluster').outputs['Console Url'].value,'?firewallDialog=false')]" + }, + "TEST THE VIRTUAL IP": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Mosaic URL'].value]" + }, + "ADMINUSER": { + "type": "string", + "value": "[parameters('adminUser')]" + }, + "VM1": { + "type": "string", + "value": "[reference('safekitCluster').outputs.fqdn.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT384 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT384 new file mode 100644 index 0000000..fc9a3bf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT384 @@ -0,0 +1,262 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962893546, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-farm/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT384", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT384", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "OS": { + "type": "string", + "metadata": { + "description": "Operating System to install" + }, + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2016-Datacenter", + "2019-Datacenter", + "Linux CentOS" + ] + }, + "clusterNodes": { + "type": "int", + "metadata": { + "description": "number of VM nodes to create" + }, + "defaultValue": 2, + "allowedValues": [ + 2, + 3, + 4 + ] + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "the VM size for all nodes" + }, + "defaultValue": "Standard_D2_v3" + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "User for the Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machines." + }, + "value": "GEN-PASSWORD" + }, + "VIPDnsLabel": { + "type": "string", + "metadata": { + "description": "Public VIP dns label. VIP fqdn will be like ..cloudapp.azure.com and must be globally unique." + }, + "defaultValue": "[concat(uniqueString(resourceGroup().id),'vip')]", + "value": "GEN-UNIQUE-13" + }, + "VMDnsPrefix": { + "type": "string", + "metadata": { + "description": "Public VM IP dns label prefix. VM fqdn will be like vm..cloudapp.azure.com and must be unique." + }, + "defaultValue": "[uniqueString(resourceGroup().id)]", + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "resources location (region must support Availability Zones)" + }, + "value": "usgovvirginia" + }, + "safekitFileUri": { + "type": "string", + "metadata": { + "description": "url of SafeKit package (optional, default to the appropriate Evidian website url)." + }, + "defaultValue": "default" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "clusternodes": 2, + "vmname": "VM1", + "moduleName": "farm", + "cltemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cluster.json' ,parameters('_artifactsLocationSasToken')))]", + "ostype": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]", + "skcfgmoduletemplate": "[uri(parameters('_artifactsLocation'),concat('nestedtemplates/cfgFarm.json' ,parameters('_artifactsLocationSasToken')))]", + "safekitpkgUrl": { + "windows": "https://support.evidian.com/solutions/downloads/safekit/cloud/platforms/windows/current_versions/safekit_cloud.msi", + "linux": "https://support.evidian.com/solutions/downloads/safekit/cloud/platforms/linux/current_versions/safekit_cloud.bin" + }, + "farmUrl": { + "windows": "https://support.evidian.com/solutions/downloads/safekit/cloud/application_modules/windows/farm.safe", + "linux": "https://support.evidian.com/solutions/downloads/safekit/cloud/application_modules/linux/farm.safe" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "safekitCluster", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cluster.json' ,parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "OS": { + "value": "2016-Datacenter" + }, + "clusterNodes": { + "value": "clusterNodes" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "adminUser": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "moduleUrl": { + "value": "(farmUrl)[variables(ostype)]" + }, + "moduleName": { + "value": "farm" + }, + "VIPDnsLabel": { + "value": "GEN-UNIQUE-13" + }, + "VMDnsPrefix": { + "value": "GEN-UNIQUE-10" + }, + "Loadbalancer": { + "value": "External" + }, + "location": { + "value": "usgovvirginia" + }, + "safekitFileUri": { + "value": "[if(equals(parameters('safekitFileUri'),'default'),variables('safekitpkgUrl')[variables('ostype')],parameters('safekitFileUri'))]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-05-01", + "name": "safekitModuleConfig", + "dependsOn": [ + "safekitCluster" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nestedtemplates/cfgFarm.json' ,parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmname": { + "value": "VM1" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "moduleName": { + "value": "farm" + }, + "location": { + "value": "usgovvirginia" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "FIRST GET THE CREDENTIALS": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Credentials Url'].value]" + }, + "LOGIN TO GET THE CREDENTIALS": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Credentials Url Login'].value]" + }, + "START THE CONSOLE": { + "type": "string", + "value": "[concat(reference('safekitCluster').outputs['Console Url'].value,'?firewallDialog=false')]" + }, + "TEST THE VIRTUAL IP": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Mosaic URL'].value]" + }, + "ADMINUSER": { + "type": "string", + "value": "[parameters('adminUser')]" + }, + "VM1": { + "type": "string", + "value": "[reference('safekitCluster').outputs.fqdn.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT385 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT385 new file mode 100644 index 0000000..567b317 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT385 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/cfgMirror.json" + ], + "timestamp": 1642962893558, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/cfgMirror.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT385", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT385", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "type": "string", + "metadata": { + "description": "vm name" + } + }, + "ostype": { + "type": "string", + "metadata": { + "description": "OS type (windows, linux)" + }, + "defaultValue": "windows" + }, + "moduleName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "url of the application module to install on all nodes" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location of the resources" + } + } + }, + "variables": { + "cfgModuleuri": "[uri(parameters('_artifactsLocation'), concat('scripts/cfgMirror.ps1',parameters('_artifactsLocationSasToken')))]", + "properties": { + "windows": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/cfgMirror.ps1',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File scripts/cfgMirror.ps1 -safekitcmd C:/safekit/safekit -safekitmod C:/safekit/modules -MName parameters('moduleName')" + } + }, + "linux": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 1, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/cfgMirror.ps1',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "pwsh ./cfgMirror.ps1 -safekitcmd /opt/safekit/safekit -safekitmod /opt/safekit/modules -MName parameters('moduleName')" + } + } + } + }, + "resources": [ + { + "name": "vmname/safekit", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(properties)[parameters(ostype)]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT386 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT386 new file mode 100644 index 0000000..d1a80c7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT386 @@ -0,0 +1,8187 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/cluster.json" + ], + "timestamp": 1642962893574, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT386", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT386", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "OS": { + "type": "string", + "metadata": { + "description": "Operating System to install" + } + }, + "clusterNodes": { + "type": "int", + "metadata": { + "description": "number of VM nodes to create" + }, + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4 + ] + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "the VM size for all nodes" + }, + "defaultValue": "Standard_A2_v2" + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "User for the Virtual Machines." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machines." + } + }, + "moduleUrl": { + "type": "string", + "metadata": { + "description": "url of the application module to install on all nodes (optional)" + }, + "defaultValue": "" + }, + "moduleName": { + "type": "string", + "metadata": { + "description": "name of the application module to install on all nodes (optional)" + }, + "defaultValue": "mirror" + }, + "VIPDnsLabel": { + "type": "string", + "metadata": { + "description": "Public VIP dns label (optional. If set, an additionnal Standard SKU, unassociated public IP will be created)" + }, + "defaultValue": "" + }, + "VMDnsPrefix": { + "type": "string", + "metadata": { + "description": "Public VM IP dns label prefix" + } + }, + "Loadbalancer": { + "type": "string", + "metadata": { + "description": "loadbalancer (optional. If set, a loadbalancer will be created, with the VIP as frontend and the VMs in the backend pool." + }, + "defaultValue": "none", + "allowedValues": [ + "External", + "none" + ] + }, + "azurePwsh": { + "type": "string", + "metadata": { + "description": "install azure powershell module (optional)" + }, + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ] + }, + "location": { + "type": "string", + "metadata": { + "description": "location of the resources" + } + }, + "safekitFileUri": { + "type": "string", + "metadata": { + "description": "url of safekit package" + }, + "defaultValue": "" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "allvms": [ + "VM1", + "VM2", + "VM3", + "VM4" + ], + "vms": "[take(variables('allvms'),parameters('clusterNodes'))]", + "frontEndIPConfigName": "parameters('VIPDnsLabel')LBFE", + "lbPoolName": "parameters('VIPDnsLabel')BEP", + "lbProbeName": "parameters('VIPDnsLabel')LBP", + "lbName": "parameters('VIPDnsLabel')LB", + "NetworkContributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "ostype": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "ips": [ + "10.0.0.10", + "10.0.0.11", + "10.0.0.12", + "10.0.0.13" + ], + "sktemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "skclustertemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installCluster.json', parameters('_artifactsLocationSasToken')))]", + "createviptemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/createvip.json',parameters('_artifactsLocationSasToken')))]", + "skmoduletemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installModule.json', parameters('_artifactsLocationSasToken')))]", + "NSGName": "SafeKit-NSG", + "storageAccountName": "[concat(uniquestring(resourceGroup().id,parameters('location')), 'stor')]", + "lbPoolID": "[if(equals(parameters('LoadBalancer'),'none'),'',resourceId('Microsoft.Network/loadBalancers/backendAddressPools',variables('lbName'),variables('lbPoolName')))]", + "lbaddrpool1": [ + { + "id": "[if(equals(parameters('LoadBalancer'),'none'),'',resourceId('Microsoft.Network/loadBalancers/backendAddressPools',variables('lbName'),variables('lbPoolName')))]" + } + ], + "lbaddrpool": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]", + "WindowsStorageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "OS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "CentosStorageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.5", + "version": "latest" + }, + "osDisk": { + "createOption": "fromImage" + } + }, + "linuxConfiguration": { + "disablePasswordAuthentication": "false" + }, + "addressPrefix": "10.0.0.0/16", + "virtualNetworkName": "[concat(resourceGroup().name,'VNET')]", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "[variables('virtualNetworkName')]", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "optionalVip", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/createvip.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "VIPDnsLabel": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "optionalLB", + "dependsOn": [ + "optionalVip" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "condition": "[and(not(empty(parameters('VIPDnsLabel'))),not(equals(parameters('Loadbalancer'),'none')))]", + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-11-01", + "name": "parameters('VIPDnsLabel')LB", + "location": "location", + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "parameters('VIPDnsLabel')LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/pipparameters('VIPDnsLabel')" + } + } + } + ], + "backendAddressPools": [ + { + "name": "parameters('VIPDnsLabel')BEP" + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/parameters('VIPDnsLabel')LB/parameters('VIPDnsLabel')LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/parameters('VIPDnsLabel')LB/parameters('VIPDnsLabel')BEP" + }, + "protocol": "Tcp", + "frontendPort": 9453, + "backendPort": 9453, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/parameters('VIPDnsLabel')LB/parameters('VIPDnsLabel')LBP" + } + } + } + ], + "probes": [ + { + "name": "parameters('VIPDnsLabel')LBP", + "properties": { + "protocol": "http", + "port": 9010, + "requestPath": "/var/modules/mirror/ready.txt", + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('storageAccountName')]", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "SafeKit-NSG", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "remoteaccess", + "properties": { + "description": "Allow Remote Access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "[if(equals(variables('ostype'),'linux'),'22','3389')]", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "secconsole", + "properties": { + "description": "Allow Web Console Security Access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9001", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "webconsole", + "properties": { + "description": "Allow Web Console Access", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9453", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "[concat('pip',variables('vms')[copyIndex()])]", + "location": "location", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('VMDnsPrefix'),variables('vms')[copyIndex()]))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "name": "[concat('nic',variables('vms')[copyIndex()])]", + "location": "location", + "dependsOn": [ + "optionalLB", + "[resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[copyIndex()]))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/',variables('NSGName'))]", + "[variables('virtualNetworkName')]" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups//SafeKit-NSG" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(ips)[copyIndex()]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('pip',variables('vms')[copyIndex()]))]" + }, + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets',variables('virtualNetworkName'),'Subnet')]" + }, + "loadBalancerBackendAddressPools": "[if(greater(length(variables('lbPoolID')),0),variables('lbaddrpool1'),variables('lbaddrpool0'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "(vms)[copyIndex()]", + "location": "location", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat('nic',variables('vms')[copyIndex()]) )]" + ], + "zones": "[split(string(add(mod(copyIndex(),3),1)), ',')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "(vms)[copyIndex()]", + "adminUsername": "[if(empty(parameters('adminUser')),concat('admin',resourceGroup().name),parameters('adminUser'))]", + "adminPassword": "adminPassword", + "linuxConfiguration": "[if(equals(variables('ostype'),'linux'),variables('linuxConfiguration'),'')]" + }, + "storageProfile": "[if(equals(parameters('OS'),'Linux CentOS'),variables('CentosStorageProfile'),variables('windowsStorageProfile'))]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces/', concat('nic',variables('vms')[copyIndex()]))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(resourceGroup().id,variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions/','4d97b98b-1d4f-4787-a291-c67834d212e7')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', concat(variables('vms')[copyIndex()])), '2020-12-01', 'Full').identity.principalId]" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "[concat('safekitInstall',variables('vms')[copyIndex()])]", + "dependsOn": [ + "(vms)[copyIndex()]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/safekitdepl.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmname": { + "value": "(vms)[copyIndex()]" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "azurePwsh": { + "value": "no" + }, + "capassword": { + "value": "AdminPassword" + }, + "safekitFileUri": { + "value": "" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "safekitClusterConfig", + "dependsOn": [ + "skCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installCluster.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "vmname": { + "value": "(vms)[0]" + }, + "vmList": { + "value": "[take(variables('allvms'),parameters('clusterNodes'))]" + }, + "fqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[0]))).dnsSettings.fqdn]" + }, + "privateIps": { + "value": [ + "10.0.0.10", + "10.0.0.11", + "10.0.0.12", + "10.0.0.13" + ] + }, + "VMDnsPrefix": { + "value": "VMDnsPrefix" + }, + "lblist": { + "value": "[if(greater(length(parameters('VIPDnsLabel')),0),reference('optionalVip').outputs.fqdn.value,'')]" + }, + "capassword": { + "value": "AdminPassword" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "safekitModuleConfig", + "dependsOn": [ + "safekitClusterConfig" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installModule.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "vmname": { + "value": "(vms)[0]" + }, + "moduleUrl": { + "value": "" + }, + "moduleName": { + "value": "mirror" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + } + } + } + } + ], + "outputs": { + "adminUser": { + "type": "string", + "value": "[variables('adminUserName')]" + }, + "fqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[0]))).dnsSettings.fqdn]" + }, + "Credentials Url": { + "type": "string", + "value": "[concat('https://',reference(resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[0]))).dnsSettings.fqdn,':9001/adduser.html')]" + }, + "Credentials Url Login": { + "type": "string", + "value": "user: CA_admin, password: the value of AdminPassword" + }, + "Console Url": { + "type": "string", + "value": "[concat('https://',reference(resourceId('Microsoft.Network/publicIPAddresses/',concat('pip',variables('vms')[0]))).dnsSettings.fqdn,':9453/deploy.html')]" + }, + "Mosaic URL": { + "type": "string", + "value": "[concat('https://',reference('optionalVip').outputs.fqdn.value,':9453/cgi-bin/mosaic?mode=mosaic&arg0=',parameters('moduleName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT387 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT387 new file mode 100644 index 0000000..7fb87b1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT387 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/createvip.json" + ], + "timestamp": 1642962893619, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/createvip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT387", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT387", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "VIPDnsLabel": { + "type": "string", + "metadata": { + "description": "Public VIP dns label (optional. If set, an additionnal Standard SKU, unassociated public IP will be created)" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "location of the resources" + } + } + }, + "resources": [ + { + "condition": "[not(empty(parameters('VIPDnsLabel')))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "pipparameters('VIPDnsLabel')", + "location": "location", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('VIPDnsLabel'))]" + } + } + } + ], + "outputs": { + "fqdn": { + "type": "string", + "value": "[if(empty(parameters('VIPDnsLabel')),'',reference(resourceId('Microsoft.Network/publicIPAddresses', concat('pip',parameters('VIPDnsLabel')))).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT388 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT388 new file mode 100644 index 0000000..c749bba --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT388 @@ -0,0 +1,168 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/installCluster.json" + ], + "timestamp": 1642962893626, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/installCluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT388", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT388", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "type": "string", + "metadata": { + "description": "vm name" + } + }, + "ostype": { + "type": "string", + "metadata": { + "description": "OS type (windows, linux)" + }, + "defaultValue": "windows" + }, + "vmList": { + "type": "array", + "metadata": { + "description": "vm names" + } + }, + "fqdn": { + "type": "string", + "metadata": { + "description": "first vm public ip name" + } + }, + "privateIps": { + "type": "array", + "metadata": { + "description": "vm private ip list" + } + }, + "VMDnsPrefix": { + "type": "string", + "metadata": { + "description": "Public VM IP dns label prefix" + } + }, + "lblist": { + "type": "string", + "metadata": { + "description": "dns name of loadbalancer" + }, + "defaultValue": "" + }, + "capassword": { + "type": "securestring", + "metadata": { + "description": "password for CA server access" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location of the resources" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "pwconfscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1', parameters('_artifactsLocationSasToken')))]", + "pwcertscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "pwiscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.ps1', parameters('_artifactsLocationSasToken')))]", + "shelliscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.sh', parameters('_artifactsLocationSasToken')))]", + "domain": "[skip(parameters('fqdn'),indexOf(parameters('fqdn'),'.'))]", + "publicipfmt": "VMDnsPrefix%VM%[skip(parameters('fqdn'),indexOf(parameters('fqdn'),'.'))]", + "privateiplistarg": "[replace(string(parameters('privateIps')),'\"','')]", + "vmlistarg": "[replace(string(parameters('vmList')),'\"','')]", + "windowsfileuris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "linuxfileuris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.sh', parameters('_artifactsLocationSasToken')))]" + ], + "properties": { + "windows": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File scripts/InstallCluster.ps1 -vmlist [replace(string(parameters('vmList')),'\"','')] -publicipfmt VMDnsPrefix%VM%[skip(parameters('fqdn'),indexOf(parameters('fqdn'),'.'))] -privateiplist [replace(string(parameters('privateIps')),'\"','')] -lblist parameters('lblist') -Passwd capassword" + } + }, + "linux": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 1, + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/uploadcerts.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/configCluster.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/installCluster.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh installCluster.sh [replace(string(parameters('vmList')),'\"','')] VMDnsPrefix%VM%[skip(parameters('fqdn'),indexOf(parameters('fqdn'),'.'))] [replace(string(parameters('privateIps')),'\"','')] parameters('lblist') capassword" + } + } + } + }, + "resources": [ + { + "name": "vmname/safekit", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(properties)[parameters(ostype)]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT389 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT389 new file mode 100644 index 0000000..c3a392d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT389 @@ -0,0 +1,126 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/installModule.json" + ], + "timestamp": 1642962893642, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/installModule.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT389", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT389", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "type": "string", + "metadata": { + "description": "vm name" + } + }, + "ostype": { + "type": "string", + "metadata": { + "description": "OS type (windows, linux)" + }, + "defaultValue": "windows" + }, + "moduleUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "url of the application module to install on all nodes" + } + }, + "moduleName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "url of the application module to install on all nodes" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location of the resources" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "installModuleuri": "[uri(parameters('_artifactsLocation'), concat('scripts/installModule.ps1', parameters('_artifactsLocationSasToken')))]", + "properties": { + "windows": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "", + "[uri(parameters('_artifactsLocation'), concat('scripts/installModule.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File scripts/installModule.ps1 -safekitcmd C:/safekit/safekit -MName parameters('moduleName')" + } + }, + "linux": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 1, + "fileUris": [ + "", + "[uri(parameters('_artifactsLocation'), concat('scripts/installModule.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "pwsh ./installModule.ps1 -safekitcmd /opt/safekit/safekit -MName parameters('moduleName')" + } + } + } + }, + "resources": [ + { + "name": "vmname/safekit", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(properties)[parameters(ostype)]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT39 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT39 new file mode 100644 index 0000000..77081f8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT39 @@ -0,0 +1,147 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/load-balancer-basic.json" + ], + "timestamp": 1642962883646, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/load-balancer-basic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT39", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT39", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "defaultValue": "cf-lb" + }, + "loadBalancerPublicIPAddressName": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "variables": { + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/loadBalancerPublicIPAddressName", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/cf-lb/LoadBalancerFrontEnd", + "lbPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/cf-lb/BackendPool", + "lbProbeID": "Microsoft.Network/loadBalancers/probes/cf-lb/healthProbe" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "loadBalancerPublicIPAddressName", + "location": "location", + "properties": { + "publicIPAllocationMethod": "static" + } + }, + { + "apiVersion": "2020-11-01", + "name": "cf-lb", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//loadBalancerPublicIPAddressName" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/loadBalancerPublicIPAddressName" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool" + } + ], + "loadBalancingRules": [ + { + "name": "https", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/cf-lb/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/cf-lb/BackendPool" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 15, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/cf-lb/healthProbe" + } + } + }, + { + "name": "http", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/cf-lb/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/cf-lb/BackendPool" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 15, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/cf-lb/healthProbe" + } + } + } + ], + "probes": [ + { + "name": "healthProbe", + "properties": { + "protocol": "HTTP", + "port": 8080, + "intervalInSeconds": 5, + "numberOfProbes": 2, + "requestPath": "/health" + } + } + ] + } + } + ], + "outputs": { + "loadBalancerPublicIPAddress": { + "type": "string", + "value": "[reference(parameters('loadBalancerPublicIPAddressName')).ipAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT390 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT390 new file mode 100644 index 0000000..47b4fe3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT390 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/safekitdepl.json" + ], + "timestamp": 1642962893678, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/nestedtemplates/safekitdepl.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT390", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT390", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmname": { + "type": "string", + "metadata": { + "description": "vm name" + } + }, + "ostype": { + "type": "string", + "metadata": { + "description": "os type" + }, + "defaultValue": "windows" + }, + "capassword": { + "type": "securestring", + "metadata": { + "description": "password for CA server access" + } + }, + "azurePwsh": { + "type": "string", + "metadata": { + "description": "install azure powershell module (optional)" + }, + "defaultValue": "no", + "allowedValues": [ + "yes", + "no" + ] + }, + "safekitFileUri": { + "type": "string", + "metadata": { + "description": "url of safekit package" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "location of the resources" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "pwazrmuri": "[uri(parameters('_artifactsLocation'), concat('scripts/installAzureRM.ps1',parameters('_artifactsLocationSasToken')))]", + "pwscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/InstallSafeKit.ps1',parameters('_artifactsLocationSasToken')))]", + "skpkg": "[last(split(parameters('safekitFileUri'),'/'))]", + "shellscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/InstallSafeKit.sh',parameters('_artifactsLocationSasToken')))]", + "skuri": "", + "fileUrisW": "[if(equals(parameters('azurePwsh'),'yes'),createArray(variables('skuri'),variables('pwscripturi'),variables('pwazrmuri')),createArray(variables('skuri'),variables('pwscripturi')))]", + "fileUrisL": "[if(equals(parameters('azurePwsh'),'yes'),createArray(variables('skuri'),variables('shellscripturi'),variables('pwazrmuri')),createArray(variables('skuri'),variables('shellscripturi')))]", + "properties": { + "windows": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "[if(equals(parameters('azurePwsh'),'yes'),createArray(variables('skuri'),variables('pwscripturi'),variables('pwazrmuri')),createArray(variables('skuri'),variables('pwscripturi')))]" + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File scripts/InstallSafekit.ps1 -SkFile [last(split(parameters('safekitFileUri'),'/'))] -Passwd capassword" + } + }, + "linux": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "fileUris": "[if(equals(parameters('azurePwsh'),'yes'),createArray(variables('skuri'),variables('shellscripturi'),variables('pwazrmuri')),createArray(variables('skuri'),variables('shellscripturi')))]" + }, + "protectedSettings": { + "commandToExecute": "sh InstallSafeKit.sh ./[last(split(parameters('safekitFileUri'),'/'))] capassword" + } + } + } + }, + "resources": [ + { + "name": "vmname/safekit", + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(properties)[parameters(ostype)]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT391 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT391 new file mode 100644 index 0000000..34bc613 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT391 @@ -0,0 +1,249 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.parameters.json" + ], + "timestamp": 1642962893775, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT391", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT391", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "OS": { + "type": "string", + "metadata": { + "description": "Operating System to install" + }, + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2016-Datacenter", + "2019-Datacenter", + "Linux CentOS" + ] + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "the VM size for all nodes" + }, + "defaultValue": "Standard_A2_v2" + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "User for the Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machines." + }, + "value": "GEN-PASSWORD" + }, + "VIPDnsLabel": { + "type": "string", + "metadata": { + "description": "Public VIP dns label." + }, + "defaultValue": "[concat('vip',uniqueString(resourceGroup().id))]", + "value": "GEN-UNIQUE-13" + }, + "VMDnsPrefix": { + "type": "string", + "metadata": { + "description": "Public VM IP dns label prefix" + }, + "defaultValue": "[uniqueString(resourceGroup().id)]", + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "metadata": { + "description": "location of the resources (region must support Availability Zones)" + }, + "value": "eastus" + }, + "safekitFileUri": { + "type": "string", + "metadata": { + "description": "url of SafeKit package (optional, default to the appropriate Evidian website url)." + }, + "defaultValue": "default" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "clusternodes": 2, + "vmname": "VM1", + "moduleName": "mirror", + "cltemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cluster.json', parameters('_artifactsLocationSasToken')))]", + "ostype": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]", + "skcfgmoduletemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cfgMirror.json',parameters('_artifactsLocationSasToken')))]", + "safekitpkgUrl": { + "windows": "https://support.evidian.com/solutions/downloads/safekit/cloud/platforms/windows/current_versions/safekit_cloud.msi", + "linux": "https://support.evidian.com/solutions/downloads/safekit/cloud/platforms/linux/current_versions/safekit_cloud.bin" + }, + "mirrorUrl": { + "windows": "https://support.evidian.com/solutions/downloads/safekit/cloud/application_modules/windows/mirror.safe", + "linux": "https://support.evidian.com/solutions/downloads/safekit/cloud/application_modules/linux/mirror.safe" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "safekitCluster", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cluster.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "OS": { + "value": "2016-Datacenter" + }, + "clusterNodes": { + "value": "clusterNodes" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "adminUser": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "moduleUrl": { + "value": "(mirrorUrl)[variables(ostype)]" + }, + "moduleName": { + "value": "mirror" + }, + "VIPDnsLabel": { + "value": "GEN-UNIQUE-13" + }, + "VMDnsPrefix": { + "value": "GEN-UNIQUE-10" + }, + "Loadbalancer": { + "value": "External" + }, + "location": { + "value": "eastus" + }, + "safekitFileUri": { + "value": "[if(equals(parameters('safekitFileUri'),'default'),variables('safekitpkgUrl')[variables('ostype')],parameters('safekitFileUri'))]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "safekitModuleConfig", + "dependsOn": [ + "safekitCluster" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cfgMirror.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmname": { + "value": "VM1" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "moduleName": { + "value": "mirror" + }, + "location": { + "value": "eastus" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "FIRST GET THE CREDENTIALS": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Credentials Url'].value]" + }, + "LOGIN TO GET THE CREDENTIALS": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Credentials Url Login'].value]" + }, + "START THE CONSOLE": { + "type": "string", + "value": "[concat(reference('safekitCluster').outputs['Console Url'].value,'?firewallDialog=false')]" + }, + "TEST THE VIRTUAL IP": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Mosaic URL'].value]" + }, + "ADMINUSER": { + "type": "string", + "value": "[parameters('adminUser')]" + }, + "VM1": { + "type": "string", + "value": "[reference('safekitCluster').outputs.fqdn.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT392 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT392 new file mode 100644 index 0000000..069b820 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT392 @@ -0,0 +1,249 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962893785, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.json", + "/application-workloads/safekit/safekit-cluster-mirror/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT392", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT392", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "OS": { + "type": "string", + "metadata": { + "description": "Operating System to install" + }, + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2016-Datacenter", + "2019-Datacenter", + "Linux CentOS" + ] + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "the VM size for all nodes" + }, + "defaultValue": "Standard_A2_v2" + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "User for the Virtual Machines." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machines." + }, + "value": "GEN-PASSWORD" + }, + "VIPDnsLabel": { + "type": "string", + "metadata": { + "description": "Public VIP dns label." + }, + "defaultValue": "[concat('vip',uniqueString(resourceGroup().id))]", + "value": "GEN-UNIQUE-13" + }, + "VMDnsPrefix": { + "type": "string", + "metadata": { + "description": "Public VM IP dns label prefix" + }, + "defaultValue": "[uniqueString(resourceGroup().id)]", + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "metadata": { + "description": "location of the resources (region must support Availability Zones)" + }, + "value": "usgovvirginia" + }, + "safekitFileUri": { + "type": "string", + "metadata": { + "description": "url of SafeKit package (optional, default to the appropriate Evidian website url)." + }, + "defaultValue": "default" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "base URL of deployment resources (template,subtemplates,scripts)" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "clusternodes": 2, + "vmname": "VM1", + "moduleName": "mirror", + "cltemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cluster.json', parameters('_artifactsLocationSasToken')))]", + "ostype": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]", + "skcfgmoduletemplate": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cfgMirror.json',parameters('_artifactsLocationSasToken')))]", + "safekitpkgUrl": { + "windows": "https://support.evidian.com/solutions/downloads/safekit/cloud/platforms/windows/current_versions/safekit_cloud.msi", + "linux": "https://support.evidian.com/solutions/downloads/safekit/cloud/platforms/linux/current_versions/safekit_cloud.bin" + }, + "mirrorUrl": { + "windows": "https://support.evidian.com/solutions/downloads/safekit/cloud/application_modules/windows/mirror.safe", + "linux": "https://support.evidian.com/solutions/downloads/safekit/cloud/application_modules/linux/mirror.safe" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "safekitCluster", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cluster.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "OS": { + "value": "2016-Datacenter" + }, + "clusterNodes": { + "value": "clusterNodes" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "adminUser": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "moduleUrl": { + "value": "(mirrorUrl)[variables(ostype)]" + }, + "moduleName": { + "value": "mirror" + }, + "VIPDnsLabel": { + "value": "GEN-UNIQUE-13" + }, + "VMDnsPrefix": { + "value": "GEN-UNIQUE-10" + }, + "Loadbalancer": { + "value": "External" + }, + "location": { + "value": "usgovvirginia" + }, + "safekitFileUri": { + "value": "[if(equals(parameters('safekitFileUri'),'default'),variables('safekitpkgUrl')[variables('ostype')],parameters('safekitFileUri'))]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "safekitModuleConfig", + "dependsOn": [ + "safekitCluster" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/cfgMirror.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmname": { + "value": "VM1" + }, + "ostype": { + "value": "[if(equals(parameters('OS'), 'Linux CentOS'),'linux','windows')]" + }, + "moduleName": { + "value": "mirror" + }, + "location": { + "value": "usgovvirginia" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "FIRST GET THE CREDENTIALS": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Credentials Url'].value]" + }, + "LOGIN TO GET THE CREDENTIALS": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Credentials Url Login'].value]" + }, + "START THE CONSOLE": { + "type": "string", + "value": "[concat(reference('safekitCluster').outputs['Console Url'].value,'?firewallDialog=false')]" + }, + "TEST THE VIRTUAL IP": { + "type": "string", + "value": "[reference('safekitCluster').outputs['Mosaic URL'].value]" + }, + "ADMINUSER": { + "type": "string", + "value": "[parameters('adminUser')]" + }, + "VM1": { + "type": "string", + "value": "[reference('safekitCluster').outputs.fqdn.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT393 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT393 new file mode 100644 index 0000000..3741bc0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT393 @@ -0,0 +1,838 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_D13_multiNIC_No.json" + ], + "timestamp": 1642962893825, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_D13_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT393", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT393", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Uri of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk8", + "lun": 7, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk8.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk9", + "lun": 8, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk9.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk10", + "lun": 9, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk10.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk11", + "lun": 10, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk11.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk12", + "lun": 11, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk12.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk13", + "lun": 12, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk13.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk14", + "lun": 13, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk14.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk15", + "lun": 14, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk15.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk16", + "lun": 15, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk16.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk8", + "lun": 7, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk8.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk9", + "lun": 8, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk9.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk10", + "lun": 9, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk10.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk11", + "lun": 10, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk11.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk12", + "lun": 11, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk12.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk13", + "lun": 12, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk13.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk14", + "lun": 13, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk14.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk15", + "lun": 14, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk15.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk16", + "lun": 15, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk16.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk8", + "lun": 7, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk8.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk9", + "lun": 8, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk9.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk10", + "lun": 9, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk10.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk11", + "lun": 10, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk11.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk12", + "lun": 11, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk12.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk13", + "lun": 12, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk13.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk14", + "lun": 13, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk14.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk15", + "lun": 14, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk15.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk16", + "lun": 15, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk16.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk8", + "lun": 7, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk8.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk9", + "lun": 8, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk9.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk10", + "lun": 9, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk10.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk11", + "lun": 10, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk11.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk12", + "lun": 11, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk12.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk13", + "lun": 12, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk13.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk14", + "lun": 13, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk14.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk15", + "lun": 14, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk15.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk16", + "lun": 15, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk16.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + } + ], + "outputs": { + "dbDataLUNs": { + "value": "0,1,2,3,4,5,6,7,8,9,10,11,12,13", + "type": "string" + }, + "dbLogLUNs": { + "value": "14,15", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT394 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT394 new file mode 100644 index 0000000..ad67034 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT394 @@ -0,0 +1,1484 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_D14_multiNIC_No.json" + ], + "timestamp": 1642962893842, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_D14_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT394", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT394", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk8", + "lun": 7, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk8.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk9", + "lun": 8, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk9.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk10", + "lun": 9, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk10.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk11", + "lun": 10, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk11.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk12", + "lun": 11, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk12.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk13", + "lun": 12, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk13.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk14", + "lun": 13, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk14.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk15", + "lun": 14, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk15.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk16", + "lun": 15, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk16.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk17", + "lun": 16, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk17.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk18", + "lun": 17, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk18.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk19", + "lun": 18, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk19.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk20", + "lun": 19, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk20.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk21", + "lun": 20, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk21.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk22", + "lun": 21, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk22.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk23", + "lun": 22, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk23.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk24", + "lun": 23, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk24.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk25", + "lun": 24, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk25.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk26", + "lun": 25, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk26.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk27", + "lun": 26, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk27.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk28", + "lun": 27, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk28.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk29", + "lun": 28, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk29.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk30", + "lun": 29, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk30.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk31", + "lun": 30, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk31.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk32", + "lun": 31, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk32.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk8", + "lun": 7, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk8.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk9", + "lun": 8, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk9.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk10", + "lun": 9, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk10.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk11", + "lun": 10, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk11.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk12", + "lun": 11, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk12.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk13", + "lun": 12, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk13.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk14", + "lun": 13, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk14.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk15", + "lun": 14, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk15.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk16", + "lun": 15, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk16.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk17", + "lun": 16, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk17.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk18", + "lun": 17, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk18.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk19", + "lun": 18, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk19.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk20", + "lun": 19, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk20.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk21", + "lun": 20, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk21.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk22", + "lun": 21, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk22.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk23", + "lun": 22, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk23.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk24", + "lun": 23, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk24.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk25", + "lun": 24, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk25.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk26", + "lun": 25, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk26.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk27", + "lun": 26, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk27.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk28", + "lun": 27, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk28.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk29", + "lun": 28, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk29.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk30", + "lun": 29, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk30.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk31", + "lun": 30, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk31.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk32", + "lun": 31, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk32.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk8", + "lun": 7, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk8.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk9", + "lun": 8, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk9.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk10", + "lun": 9, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk10.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk11", + "lun": 10, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk11.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk12", + "lun": 11, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk12.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk13", + "lun": 12, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk13.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk14", + "lun": 13, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk14.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk15", + "lun": 14, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk15.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk16", + "lun": 15, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk16.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk17", + "lun": 16, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk17.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk18", + "lun": 17, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk18.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk19", + "lun": 18, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk19.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk20", + "lun": 19, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk20.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk21", + "lun": 20, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk21.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk22", + "lun": 21, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk22.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk23", + "lun": 22, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk23.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk24", + "lun": 23, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk24.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk25", + "lun": 24, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk25.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk26", + "lun": 25, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk26.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk27", + "lun": 26, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk27.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk28", + "lun": 27, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk28.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk29", + "lun": 28, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk29.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk30", + "lun": 29, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk30.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk31", + "lun": 30, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk31.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk32", + "lun": 31, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk32.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk8", + "lun": 7, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk8.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk9", + "lun": 8, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk9.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk10", + "lun": 9, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk10.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk11", + "lun": 10, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk11.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk12", + "lun": 11, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk12.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk13", + "lun": 12, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk13.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk14", + "lun": 13, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk14.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk15", + "lun": 14, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk15.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk16", + "lun": 15, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk16.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk17", + "lun": 16, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk17.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk18", + "lun": 17, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk18.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk19", + "lun": 18, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk19.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk20", + "lun": 19, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk20.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk21", + "lun": 20, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk21.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk22", + "lun": 21, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk22.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk23", + "lun": 22, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk23.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk24", + "lun": 23, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk24.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk25", + "lun": 24, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk25.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk26", + "lun": 25, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk26.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk27", + "lun": 26, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk27.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk28", + "lun": 27, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk28.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk29", + "lun": 28, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk29.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk30", + "lun": 29, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk30.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk31", + "lun": 30, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk31.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk32", + "lun": 31, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk32.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + } + ], + "outputs": { + "dbDataLUNs": { + "value": "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27", + "type": "string" + }, + "dbLogLUNs": { + "value": "28,29,30,31", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT395 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT395 new file mode 100644 index 0000000..6d1d734 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT395 @@ -0,0 +1,324 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS11_multiNIC_No.json" + ], + "timestamp": 1642962893858, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS11_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT395", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT395", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 128 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 128 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 128 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 128 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + } + ], + "outputs": { + "dbDataLUNs": { + "value": "0,1", + "type": "string" + }, + "dbLogLUNs": { + "value": "2", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT396 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT396 new file mode 100644 index 0000000..98aa00b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT396 @@ -0,0 +1,364 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS13_multiNIC_No.json" + ], + "timestamp": 1642962893884, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS13_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT396", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT396", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 127 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 127 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 127 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 127 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + } + ], + "outputs": { + "dbDataLUNs": { + "value": "0,1,2", + "type": "string" + }, + "dbLogLUNs": { + "value": "3", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT397 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT397 new file mode 100644 index 0000000..4e3ca55 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT397 @@ -0,0 +1,364 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS14_multiNIC_No.json" + ], + "timestamp": 1642962893919, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS14_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT397", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT397", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + } + ], + "outputs": { + "dbDataLUNs": { + "value": "0,1,2", + "type": "string" + }, + "dbLogLUNs": { + "value": "3", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT398 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT398 new file mode 100644 index 0000000..c755ddd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT398 @@ -0,0 +1,364 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS2_v2_multiNIC_No.json" + ], + "timestamp": 1642962893960, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_DS2_v2_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT398", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT398", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Uri of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + } + ], + "outputs": { + "dbDataLUNs": { + "value": "0,1,2", + "type": "string" + }, + "dbLogLUNs": { + "value": "3", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT399 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT399 new file mode 100644 index 0000000..5c15997 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT399 @@ -0,0 +1,404 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_GS5_multiNIC_No.json" + ], + "timestamp": 1642962893987, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/cs-server-Standard_GS5_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT399", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT399", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + } + ], + "outputs": { + "dbDataLUNs": { + "value": "0,1,2,3", + "type": "string" + }, + "dbLogLUNs": { + "value": "4", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT4 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT4 new file mode 100644 index 0000000..c15aad9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT4 @@ -0,0 +1,448 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain/azuredeploy.parameters.json" + ], + "timestamp": 1642962883286, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT4", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT4", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator account of the new VM and domain" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM and domain" + }, + "value": "GEN-PASSWORD" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "The FQDN of the Active Directory Domain to be created" + }, + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "metadata": { + "description": "The DNS prefix for the public IP address used by the Load Balancer" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM for the controller" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation. Leave it blank unless you need to provide your own value." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "virtualMachineName": { + "type": "string", + "defaultValue": "adVM", + "metadata": { + "description": "Virtual machine name." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "adVNET", + "metadata": { + "description": "Virtual network name." + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual network address range." + } + }, + "loadBalancerFrontEndIPName": { + "type": "string", + "defaultValue": "LBFE", + "metadata": { + "description": "Load balancer front end IP address name." + } + }, + "backendAddressPoolName": { + "type": "string", + "defaultValue": "LBBE", + "metadata": { + "description": "Backend address pool name." + } + }, + "inboundNatRulesName": { + "type": "string", + "defaultValue": "adRDP", + "metadata": { + "description": "Inbound NAT rules name." + } + }, + "networkInterfaceName": { + "type": "string", + "defaultValue": "adNic", + "metadata": { + "description": "Network interface name." + } + }, + "privateIPAddress": { + "type": "string", + "defaultValue": "10.0.0.4", + "metadata": { + "description": "Private IP address." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "adSubnet", + "metadata": { + "description": "Subnet name." + } + }, + "subnetRange": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet IP range." + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "adPublicIP", + "metadata": { + "description": "Subnet IP range." + } + }, + "availabilitySetName": { + "type": "string", + "defaultValue": "adAvailabiltySet", + "metadata": { + "description": "Availability set name." + } + }, + "loadBalancerName": { + "type": "string", + "defaultValue": "adLoadBalancer", + "metadata": { + "description": "Load balancer name." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "adPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2019-03-01", + "location": "[resourceGroup().location]", + "name": "adAvailabiltySet", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-11-01", + "name": "VNet", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "adVNET" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "adSubnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2019-02-01", + "name": "adLoadBalancer", + "location": "[resourceGroup().location]", + "dependsOn": [ + "adPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/adPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBE" + } + ], + "inboundNatRules": [ + { + "name": "adRDP", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/adLoadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-02-01", + "name": "adNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "VNet", + "adLoadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.4", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/adVNET/adSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/adLoadBalancer/LBBE" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/adLoadBalancer/adRDP" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-03-01", + "name": "adVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "adNic", + "adAvailabiltySet", + "adLoadBalancer" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/adAvailabiltySet" + }, + "osProfile": { + "computerName": "adVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "adVM_OSDisk", + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "adVM_DataDisk", + "caching": "ReadWrite", + "createOption": "Empty", + "diskSizeGB": 20, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "lun": 0 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/adNic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "apiVersion": "2019-03-01", + "name": "CreateADForest", + "location": "[resourceGroup().location]", + "dependsOn": [ + "adVM" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateADPDC.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "CreateADPDC.ps1\\CreateADPDC", + "Properties": { + "DomainName": "corp.mydomain.com", + "AdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + } + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-11-01", + "name": "UpdateVNetDNS", + "dependsOn": [ + "CreateADForest" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet-with-dns-server.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "adVNET" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "adSubnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + }, + "DNSServerAddress": { + "value": [ + "10.0.0.4" + ] + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT40 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT40 new file mode 100644 index 0000000..954fc30 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT40 @@ -0,0 +1,172 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/load-balancer-standard.json" + ], + "timestamp": 1642962883654, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/load-balancer-standard.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT40", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT40", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "defaultValue": "cf-lb" + }, + "loadBalancerPublicIPAddressName": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "variables": { + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/loadBalancerPublicIPAddressName", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/cf-lb/LoadBalancerFrontEnd", + "lbPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/cf-lb/BackendPool", + "lbProbeID": "Microsoft.Network/loadBalancers/probes/cf-lb/healthProbe" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "loadBalancerPublicIPAddressName", + "location": "location", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "static" + } + }, + { + "apiVersion": "2020-11-01", + "name": "cf-lb", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//loadBalancerPublicIPAddressName" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/loadBalancerPublicIPAddressName" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool" + } + ], + "loadBalancingRules": [ + { + "name": "https", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/cf-lb/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/cf-lb/BackendPool" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 15, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/cf-lb/healthProbe" + } + } + }, + { + "name": "http", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/cf-lb/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/cf-lb/BackendPool" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 15, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/cf-lb/healthProbe" + } + } + }, + { + "name": "ntp", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/cf-lb/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/cf-lb/BackendPool" + }, + "protocol": "udp", + "frontendPort": 123, + "backendPort": 123, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 15, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/cf-lb/healthProbe" + } + } + } + ], + "probes": [ + { + "name": "healthProbe", + "properties": { + "protocol": "HTTP", + "port": 8080, + "intervalInSeconds": 5, + "numberOfProbes": 2, + "requestPath": "/health" + } + } + ] + } + } + ], + "outputs": { + "loadBalancerPublicIPAddress": { + "type": "string", + "value": "[reference(parameters('loadBalancerPublicIPAddressName')).ipAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT400 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT400 new file mode 100644 index 0000000..1dc9e3d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT400 @@ -0,0 +1,463 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS2_multiNIC_No.json" + ], + "timestamp": 1642962893995, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS2_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT400", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT400", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the CustomScriptExtension." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "Name of the CustomScriptExtension." + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "Version of the CustomScriptExtension." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetName": { + "type": "string", + "metadata": { + "description": "Name of the availability set." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dbDataLUNs": "0,1,2,3", + "dbLogLUNs": "4", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall -DBDataLUNS \"0,1,2,3\" -DBLogLUNS \"4\"" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT401 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT401 new file mode 100644 index 0000000..cd58171 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT401 @@ -0,0 +1,543 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS3_multiNIC_No.json" + ], + "timestamp": 1642962894004, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS3_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT401", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT401", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the CustomScriptExtension." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "Name of the CustomScriptExtension." + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "Version of the CustomScriptExtension." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetName": { + "type": "string", + "metadata": { + "description": "Name of the availability set." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dbDataLUNs": "0,1,2,3,4,5", + "dbLogLUNs": "6", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall -DBDataLUNS \"0,1,2,3,4,5\" -DBLogLUNS \"6\"" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT402 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT402 new file mode 100644 index 0000000..ebe5ee2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT402 @@ -0,0 +1,503 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS4_multiNIC_No.json" + ], + "timestamp": 1642962894028, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS4_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT402", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT402", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the CustomScriptExtension." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "Name of the CustomScriptExtension." + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "Version of the CustomScriptExtension." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetName": { + "type": "string", + "metadata": { + "description": "Name of the availability set." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dbDataLUNs": "0,1,2,3,4", + "dbLogLUNs": "5", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 512 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall -DBDataLUNS \"0,1,2,3,4\" -DBLogLUNS \"5\"" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT403 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT403 new file mode 100644 index 0000000..f4cf1de --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT403 @@ -0,0 +1,543 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS5_multiNIC_No.json" + ], + "timestamp": 1642962894055, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/db-server-Standard_GS5_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT403", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT403", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the CustomScriptExtension." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "Name of the CustomScriptExtension." + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "Version of the CustomScriptExtension." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetName": { + "type": "string", + "metadata": { + "description": "Name of the availability set." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dbDataLUNs": "0,1,2,3,4,5", + "dbLogLUNs": "6", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk1.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk2.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk3.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk4.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk5", + "lun": 4, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk5.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk6", + "lun": 5, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk6.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk7", + "lun": 6, + "vhd": { + "uri": "storageAccountUrivmName/sidlower-dbdisk7.vhd" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall -DBDataLUNS \"0,1,2,3,4,5\" -DBLogLUNS \"6\"" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT404 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT404 new file mode 100644 index 0000000..70f8438 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT404 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/disks.json" + ], + "timestamp": 1642962894068, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/disks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT404", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT404", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "diskName": { + "type": "string" + }, + "diskLun": { + "type": "int" + }, + "diskSize": { + "type": "int" + }, + "storageAccountName": { + "type": "string" + }, + "diskArray": { + "type": "array", + "defaultValue": [] + } + }, + "variables": { + "a": [ + { + "name": "diskName", + "lun": "diskLun", + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', concat('vhds-', uniqueString(resourceGroup().id)), '/', parameters('diskName'), '.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": "diskSize" + } + ] + }, + "resources": [], + "outputs": { + "diskArray": { + "value": "[concat(parameters('diskArray'), variables('a'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT405 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT405 new file mode 100644 index 0000000..b438dda --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT405 @@ -0,0 +1,40 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/disks0.json" + ], + "timestamp": 1642962894079, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/disks0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT405", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT405", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "outputs": { + "diskArray": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT406 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT406 new file mode 100644 index 0000000..a24b3ec --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT406 @@ -0,0 +1,34 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingnsg.json" + ], + "timestamp": 1642962894092, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT406", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT406", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT407 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT407 new file mode 100644 index 0000000..57963f3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT407 @@ -0,0 +1,34 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingpip.json" + ], + "timestamp": 1642962894293, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT407", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT407", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT408 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT408 new file mode 100644 index 0000000..479cdef --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT408 @@ -0,0 +1,34 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingvnet.json" + ], + "timestamp": 1642962894359, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingvnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT408", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT408", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT409 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT409 new file mode 100644 index 0000000..56df47b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT409 @@ -0,0 +1,34 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingvnetnsg.json" + ], + "timestamp": 1642962894390, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/existingvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT409", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT409", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT41 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT41 new file mode 100644 index 0000000..5999a9b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT41 @@ -0,0 +1,63 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/storage-account-v1.json" + ], + "timestamp": 1642962883662, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/storage-account-v1.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT41", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT41", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id), 'cfdefaultsa')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "blobEndpoint": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2021-02-01').primaryEndpoints.blob]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT410 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT410 new file mode 100644 index 0000000..1f2f817 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT410 @@ -0,0 +1,191 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB-HANA.json" + ], + "timestamp": 1642962894412, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB-HANA.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT410", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT410", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('dbInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolDB": "[concat(variables('lbPrefix'), 'BackendPoolDB')]", + "loadBalancerFrontendDB": "[concat(variables('lbPrefix'), 'FrontendDB')]", + "lbProbePortDB": "[concat(variables('lbPrefix'), 'ProbePortDB')]", + "lbProbePortInternalDB": "[add(62500, parameters('dbInstanceNumber'))]", + "idleTimeoutInMinutesDB": 30, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendDB')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolDB')]" + } + ], + "loadBalancingRulesResult": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(30015, mul(parameters('dbInstanceNumber'), 100))]", + "backendPort": "[add(30015, mul(parameters('dbInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '3', padLeft(parameters('dbInstanceNumber'), 2, '0'), '15')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(30017, mul(parameters('dbInstanceNumber'), 100))]", + "backendPort": "[add(30017, mul(parameters('dbInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '3', padLeft(parameters('dbInstanceNumber'), 2, '0'), '17')]" + } + ], + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, parameters('dbInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortDB')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT411 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT411 new file mode 100644 index 0000000..6afea1d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT411 @@ -0,0 +1,172 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB-SQL.json" + ], + "timestamp": 1642962894439, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB-SQL.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT411", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT411", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('dbInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolDB": "[concat(variables('lbPrefix'), 'BackendPoolDB')]", + "loadBalancerFrontendDB": "[concat(variables('lbPrefix'), 'FrontendDB')]", + "lbProbePortDB": "[concat(variables('lbPrefix'), 'ProbePortDB')]", + "lbProbePortInternalDB": "[add(62500, parameters('dbInstanceNumber'))]", + "idleTimeoutInMinutesDB": 30, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendDB')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolDB')]" + } + ], + "loadBalancingRulesResult": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": 1433, + "backendPort": 1433, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '1433')]" + } + ], + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, parameters('dbInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortDB')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT412 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT412 new file mode 100644 index 0000000..9daf1db --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT412 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB0.json" + ], + "timestamp": 1642962894454, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-DB0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT412", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT412", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": [], + "type": "array" + }, + "frontendIPConfigurations": { + "value": [], + "type": "array" + }, + "backendAddressPools": { + "value": [], + "type": "array" + }, + "loadBalancingRules": { + "value": [], + "type": "array" + }, + "probes": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT413 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT413 new file mode 100644 index 0000000..1a62214 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT413 @@ -0,0 +1,480 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS-Linux.json" + ], + "timestamp": 1642962894505, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS-Linux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT413", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT413", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolERS": "[concat(variables('lbPrefix'), 'BackendPoolERS')]", + "loadBalancerFrontendERS": "[concat(variables('lbPrefix'), 'FrontendERS')]", + "lbProbePortERS": "[concat(variables('lbPrefix'), 'ProbePortERS')]", + "lbProbePortInternalERS": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "idleTimeoutInMinutesERS": 30, + "loadBalancingRulesASCS": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRulesSCS": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "JAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "ABAP+JAVA": "[OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(3300, parameters('ersASCSInstanceNumber'))]\"), ('backendPort', \"[add(3300, parameters('ersASCSInstanceNumber'))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]\")])][OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(3300, parameters('ersSCSInstanceNumber'))]\"), ('backendPort', \"[add(3300, parameters('ersSCSInstanceNumber'))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]\")])]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendERS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolERS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortERS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT414 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT414 new file mode 100644 index 0000000..7cb309b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT414 @@ -0,0 +1,92 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS-Windows.json" + ], + "timestamp": 1642962894519, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS-Windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT414", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT414", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[parameters('nicBackAddressPoolsArray')]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[parameters('frontendIPConfigurationsArray')]", + "type": "array" + }, + "backendAddressPools": { + "value": "[parameters('backendAddressPoolsArray')]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[parameters('loadBalancingRulesArray')]", + "type": "array" + }, + "probes": { + "value": "[parameters('probesArray')]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT415 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT415 new file mode 100644 index 0000000..4d6c38a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT415 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS0.json" + ], + "timestamp": 1642962894534, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-ERS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT415", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT415", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": [], + "type": "array" + }, + "frontendIPConfigurations": { + "value": [], + "type": "array" + }, + "backendAddressPools": { + "value": [], + "type": "array" + }, + "loadBalancingRules": { + "value": [], + "type": "array" + }, + "probes": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT416 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT416 new file mode 100644 index 0000000..52ec561 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT416 @@ -0,0 +1,488 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-SCS.json" + ], + "timestamp": 1642962894600, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT416", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT416", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "ascsInstanceNumber": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "The instance number of the ASCS." + } + }, + "scsInstanceNumber": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance number of the SCS." + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolxSCS": "[concat(variables('lbPrefix'), 'BackendPoolxSCS')]", + "loadBalancerFrontendxSCS": "[concat(variables('lbPrefix'), 'FrontendxSCS')]", + "lbProbePortxSCS": "[concat(variables('lbPrefix'), 'ProbePortxSCS')]", + "lbProbePortInternalxSCS": "[add(62000, parameters('ascsInstanceNumber'))]", + "idleTimeoutInMinutesxSCS": 30, + "lbRulesFileShare": { + "Windows": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 445, + "backendPort": 445, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '445')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 5985, + "backendPort": 5985, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5985')]" + } + ] + }, + "lbRulesABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '36', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '16')]" + } + ], + "lbRulesJAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'))]", + "JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesJAVA'))]", + "ABAP+JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'), variables('lbRulesJAVA'))]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendxSCS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolxSCS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62000, parameters('ascsInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortxSCS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT417 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT417 new file mode 100644 index 0000000..909748c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT417 @@ -0,0 +1,377 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/loadbalancer.json" + ], + "timestamp": 1642962894614, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT417", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT417", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "sapSystemCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of SAP systems for which the load balancer should be configured" + } + }, + "stackType": { + "type": "string", + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "defaultValue": "Windows", + "metadata": { + "description": "The type of the Operating System" + } + }, + "createXSCS": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the load balancer should be configured for one or more ASCS/SCS." + } + }, + "createDB": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the load balancer should be configured for one or more databases." + } + }, + "dbType": { + "type": "string", + "defaultValue": "SQL", + "metadata": { + "description": "The type of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "github": { + "type": "string", + "metadata": { + "description": "The URL to github where the subtemplates are stored" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "ascsInstanceNumber": 0, + "scsInstanceNumber": 1, + "ersASCSInstanceNumber": 2, + "ersSCSInstanceNumber": 3, + "dbInstanceNumber": 3, + "nestedDeploymentNameLBSCS": "loadBalancerNameLBSCS", + "nestedDeploymentNameLBERS": "loadBalancerNameLBERS", + "nestedDeploymentNameLBDB": "loadBalancerNameLBDB", + "scsTemplates": { + "true": "lb-SCS.json", + "false": "lb-SCS0.json" + }, + "ersTemplates": { + "true": "lb-ERS-Windows.json", + "false": "lb-ERS0.json" + }, + "dbTemplates": { + "true": "lb-DB-SQL.json", + "false": "lb-DB0.json" + }, + "scsTemplate": "(scsTemplates)[string(parameters(createXSCS))]", + "ersTemplate": "(ersTemplates)[string(parameters(createXSCS))]", + "dbTemplate": "(dbTemplates)[string(parameters(createDB))]" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "loadBalancerNameLBSCS0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "githublb-SCS0.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ascsInstanceNumber": { + "value": 0 + }, + "scsInstanceNumber": { + "value": 1 + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2016-09-01", + "name": "[concat(variables('nestedDeploymentNameLBSCS'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/loadBalancerNameLBSCS/0" + ], + "copy": { + "name": "scsLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "github(scsTemplates)[string(parameters(createXSCS))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ascsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ascsInstanceNumber'))]" + }, + "scsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('scsInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "apiVersion": "2016-09-01", + "name": "loadBalancerNameLBERS0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "githublb-ERS0.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "stackType": { + "value": "ABAP" + }, + "loadBalancerName": { + "value": "loadBalancerName" + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2016-09-01", + "name": "[concat(variables('nestedDeploymentNameLBERS'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments//loadBalancerNameLBERS/0" + ], + "copy": { + "name": "ersLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "github(ersTemplates)[string(parameters(createXSCS))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "ersASCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersASCSInstanceNumber'))]" + }, + "ersSCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersSCSInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "apiVersion": "2016-09-01", + "name": "loadBalancerNameLBDB0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "githublb-DB0.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2016-09-01", + "name": "[concat(variables('nestedDeploymentNameLBDB'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments//loadBalancerNameLBDB/0" + ], + "copy": { + "name": "dbLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "github(dbTemplates)[string(parameters(createDB))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "dbInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('dbInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancerName", + "apiVersion": "2015-06-15", + "dependsOn": [ + "scsLoop", + "ersLoop", + "dbLoop" + ], + "location": "location", + "properties": { + "frontendIPConfigurations": "[concat(reference(resourceId(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value, reference(resourceId(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value, reference(resourceId(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value)]", + "backendAddressPools": "[concat(reference(resourceId(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.backendAddressPools.value, reference(resourceId(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.backendAddressPools.value, reference(resourceId(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.backendAddressPools.value)]", + "loadBalancingRules": "[concat(reference(resourceId(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value, reference(resourceId(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value, reference(resourceId(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value)]", + "probes": "[concat(reference(resourceId(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.probes.value, reference(resourceId(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.probes.value, reference(resourceId(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.probes.value)]" + } + } + ], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(reference(resourceId(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value, reference(resourceId(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value, reference(resourceId(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value)]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT418 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT418 new file mode 100644 index 0000000..fd86bfc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT418 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newnsg.json" + ], + "timestamp": 1642962894626, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT418", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT418", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the network security group." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[parameters(osType)]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgName", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "securityRules": "(osSecurityRules)[parameters(osType)]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT419 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT419 new file mode 100644 index 0000000..024f254 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT419 @@ -0,0 +1,65 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newpip.json" + ], + "timestamp": 1642962894648, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT419", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT419", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIpName": { + "type": "string", + "metadata": { + "description": "Name of the public IP address." + } + }, + "publicIPAddressType": { + "type": "string", + "metadata": { + "description": "Type of the public IP address, static or dynamic" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIpName", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "publicIPAllocationMethod": "publicIPAddressType" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT42 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT42 new file mode 100644 index 0000000..84897cc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT42 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/storage-account-v2.json" + ], + "timestamp": 1642962883673, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/nestedtemplates/storage-account-v2.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT42", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT42", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id), 'cfdefaultsa')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "supportsHttpsTrafficOnly": false, + "accessTier": "Hot", + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + } + } + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "blobEndpoint": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2021-02-01').primaryEndpoints.blob]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT420 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT420 new file mode 100644 index 0000000..9cc2b12 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT420 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newvnet.json" + ], + "timestamp": 1642962894657, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newvnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT420", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT420", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network." + } + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network." + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Subnet." + } + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network Subnet." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnetName", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetPrefix" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT421 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT421 new file mode 100644 index 0000000..1a71c1f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT421 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newvnetnsg.json" + ], + "timestamp": 1642962894667, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT421", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT421", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network." + } + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network." + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Subnet." + } + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network Subnet." + } + }, + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the Network Security Group." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnetName", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT422 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT422 new file mode 100644 index 0000000..e850d73 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT422 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/nic-config.json" + ], + "timestamp": 1642962894680, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT422", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT422", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network subnet." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the public ip address." + } + }, + "nsgName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the network security group." + } + }, + "newOrExistingSubnet": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether a new virtual network and subnet should be created or an existing subnet should be used." + } + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + } + }, + "variables": { + "nicConfigurations": { + "new": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/ parameters('vnetName')/subnets/ parameters('subnetName')" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ parameters('publicIpName')" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ parameters('nsgName')" + } + }, + "existing": { + "subnet": { + "id": "" + } + } + }, + "selectedConfiguration": "(nicConfigurations)[parameters(newOrExistingSubnet)]" + }, + "resources": [], + "outputs": { + "selectedConfiguration": { + "value": "[variables('selectedConfiguration')]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT423 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT423 new file mode 100644 index 0000000..ab8db4e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT423 @@ -0,0 +1,160 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/os-disk-parts-md.json" + ], + "timestamp": 1642962894696, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT423", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT423", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageSku": { + "type": "string", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the image that should be used to deploy the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "metadata": { + "description": "Offer of the image that should be used to deploy the virtual machine." + } + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "storageType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage type that should be used for the virtual machine." + } + }, + "managedDiskId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Id of the managed disk." + } + } + }, + "variables": { + "osDiskCaching": "ReadWrite", + "osDiskParts": { + "image": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "latest" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "userImage": { + "imageReference": { + "id": "" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "osdisk": { + "osDisk": { + "name": "vmName-osdisk", + "osType": "osType", + "caching": "ReadWrite", + "createOption": "Attach", + "managedDisk": { + "id": "" + } + } + } + } + }, + "resources": [], + "outputs": { + "imageReference": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].imageReference]", + "type": "object" + }, + "osDisk": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].osDisk]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT424 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT424 new file mode 100644 index 0000000..e8cbc80 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT424 @@ -0,0 +1,173 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/os-disk-parts.json" + ], + "timestamp": 1642962894712, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/os-disk-parts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT424", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT424", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageSku": { + "type": "string", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the image that should be used to deploy the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "metadata": { + "description": "Offer of the image that should be used to deploy the virtual machine." + } + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "userImageVhdUri": { + "type": "string", + "metadata": { + "description": "Uri of the user image." + } + }, + "userImageStorageAccount": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the user image is stored." + } + }, + "osDiskVhdUri": { + "type": "string", + "metadata": { + "description": "Uri of the OS disk." + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "storageAccountUri": { + "type": "string", + "metadata": { + "description": "Uri of the storage account where the os disk and data disk should be placed." + } + } + }, + "variables": { + "osDiskName": "sidlower-os.vhd", + "osDiskCaching": "ReadWrite", + "osDiskParts": { + "image": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat(parameters('storageAccountUri'), concat('vhds-', uniqueString(parameters('vmName'))), '/', variables('osDiskName'))]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "userImage": { + "osDisk": { + "name": "osdisk", + "osType": "osType", + "image": { + "uri": "userImageVhdUri" + }, + "vhd": { + "uri": "[concat('http://',parameters('userImageStorageAccount'),'.blob.', environment().suffixes.storage, '/', concat('vhds-', uniqueString(resourceGroup().id)), '/', parameters('vmName'), '-', variables('osDiskName'))]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "osdisk": { + "osDisk": { + "name": "osdisk", + "osType": "osType", + "vhd": { + "uri": "osDiskVhdUri" + }, + "caching": "ReadWrite", + "createOption": "Attach" + } + } + } + }, + "resources": [], + "outputs": { + "imageReference": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].imageReference]", + "type": "object" + }, + "osDisk": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].osDisk]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT425 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT425 new file mode 100644 index 0000000..ca072fb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT425 @@ -0,0 +1,268 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server-md.json" + ], + "timestamp": 1642962894723, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT425", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT425", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptArgs": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetObj": { + "type": "object", + "metadata": { + "description": "Availability set." + } + }, + "useAVSet": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Availability set." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "dataDisksObj": { + "type": "object", + "metadata": { + "description": "Information about the data disks that the VM should have." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "URL to github templates." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "VM Size" + } + } + }, + "variables": { + "availableAVSetObj": { + "true": "avSetObj" + }, + "internalAVSetObj": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0" + } + }, + "cseExtPublisher": "(csExtension)[parameters(osType)].Publisher", + "cseExtName": "(csExtension)[parameters(osType)].Name", + "cseExtVersion": "(csExtension)[parameters(osType)].Version", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/(csExtension)[parameters(osType)].Name", + "apiVersion": "2015-06-15", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmsize" + }, + "publisher": "(csExtension)[parameters(osType)].Publisher", + "type": "(csExtension)[parameters(osType)].Name", + "typeHandlerVersion": "(csExtension)[parameters(osType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall csExtensionscriptArgs" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT426 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT426 new file mode 100644 index 0000000..1f3dd76 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT426 @@ -0,0 +1,423 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server-Standard_multiNIC_No.json" + ], + "timestamp": 1642962894737, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server-Standard_multiNIC_No.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT426", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT426", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the CustomScriptExtension." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "Name of the CustomScriptExtension." + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "Version of the CustomScriptExtension." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetName": { + "type": "string", + "metadata": { + "description": "Name of the availability set." + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dbDataLUNs": "0,1,2,3", + "dbDataName": "space", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk1.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk2.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk3.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk4.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ], + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk1.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk2.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk3.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk4.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk1.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk2.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk3.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk4.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": [ + { + "name": "dbdisk1", + "lun": 0, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk1.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk2", + "lun": 1, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk2.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk3", + "lun": 2, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk3.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + }, + { + "name": "dbdisk4", + "lun": 3, + "vhd": { + "uri": "[concat('http://', parameters('storageAccountName'), '.blob.', environment().suffixes.storage, '/', parameters('vmName'), '/',parameters('sidlower'),'-dbdisk4.vhd')]" + }, + "createOption": "Empty", + "caching": "None", + "diskSizeGB": 1023 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall -DBDataLUNS \"0,1,2,3\" -DBLogLUNS \"dbLogLUNs\" -DBDataName \"space\" -DBLogName \"dbLogName\"" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT427 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT427 new file mode 100644 index 0000000..707b322 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT427 @@ -0,0 +1,304 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server.json" + ], + "timestamp": 1642962894748, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT427", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT427", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "planReference": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "The object that contains information about the plan of the gallery image." + } + }, + "usePlanReference": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Determines if a plan should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "sidlower": { + "type": "string", + "metadata": { + "description": "SAP System ID in lower case." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the CustomScriptExtension." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "Name of the CustomScriptExtension." + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "Version of the CustomScriptExtension." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetName": { + "type": "string", + "metadata": { + "description": "Name of the availability set." + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the storage account where the os disk and data disk should be placed." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "dataDiskSizes": { + "type": "array", + "metadata": { + "description": "Information about the data disks that the VM should have." + } + }, + "github": { + "type": "string", + "metadata": { + "description": "URL to github templates." + } + } + }, + "variables": { + "nestedDeploymentNameDisk": "nestedTemplateDisksvmName", + "nestedDeploymentNameSub": "nestedTemplateVMSubvmName", + "diskCount": 27, + "serverTemplates": { + "true": "server2.json", + "false": "server2-noplan.json" + }, + "serverTemplate": "(serverTemplates)[toLower(string(parameters(usePlanReference)))]" + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "name": "nestedTemplateDisksvmName-0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "githubdisks0.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "diskName": { + "value": "" + }, + "diskLun": { + "value": 0 + }, + "diskSize": { + "value": 0 + }, + "storageAccountName": { + "value": "" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "[concat(variables('nestedDeploymentNameDisk'), '-', copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "diskLoop", + "count": 27 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "githubdisks.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "diskName": { + "value": "vmName-copyIndex()" + }, + "diskLun": { + "value": "[copyIndex()]" + }, + "diskSize": { + "value": "dataDiskSizes)[copyIndex(" + }, + "storageAccountName": { + "value": "storageAccountName" + }, + "diskArray": { + "value": "[reference(resourceId(variables('nestedDeploymentNameDisk'), '-', copyIndex())).outputs.diskArray.value]" + } + } + } + }, + { + "apiVersion": "2015-01-01", + "name": "nestedTemplateVMSubvmName", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "github(serverTemplates)[toLower(string(parameters(usePlanReference)))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "imageReference" + }, + "planReference": { + "value": {} + }, + "osDisk": { + "value": "osDisk" + }, + "osDiskType": { + "value": "osDiskType" + }, + "sidlower": { + "value": "sidlower" + }, + "vmName": { + "value": "vmName" + }, + "vmSize": { + "value": "vmSize" + }, + "adminUsername": { + "value": "adminUsername" + }, + "adminPassword": { + "value": "adminPassword" + }, + "cseExtPublisher": { + "value": "cseExtPublisher" + }, + "cseExtName": { + "value": "cseExtName" + }, + "cseExtVersion": { + "value": "cseExtVersion" + }, + "csExtensionScript": { + "value": "csExtensionScript" + }, + "csExtensionscriptCall": { + "value": "csExtensionscriptCall" + }, + "avSetName": { + "value": "avSetName" + }, + "storageAccountName": { + "value": "storageAccountName" + }, + "nicName": { + "value": "nicName" + }, + "dataDisks": { + "value": "[reference(resourceId(variables('nestedDeploymentNameDisk'), '-', variables('diskCount'))).outputs.diskArray.value]" + }, + "github": { + "value": "github" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT428 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT428 new file mode 100644 index 0000000..04fa56d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT428 @@ -0,0 +1,252 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server2-noplan.json" + ], + "timestamp": 1642962894758, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server2-noplan.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT428", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT428", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the CustomScriptExtension." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "Name of the CustomScriptExtension." + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "Version of the CustomScriptExtension." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetName": { + "type": "string", + "metadata": { + "description": "Name of the availability set." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "dataDisks": { + "type": "array", + "metadata": { + "description": "Information about the data disks that the VM should have." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dbDataLUNs": "0,1,2,3", + "dbDataName": "space", + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]", + "hardwareProfile": { + "vmSize": "vmSize" + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall -DBDataLUNS \"0,1,2,3\" -DBLogLUNS \"dbLogLUNs\" -DBDataName \"space\" -DBLogName \"dbLogName\"" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT429 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT429 new file mode 100644 index 0000000..29e9ec0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT429 @@ -0,0 +1,259 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server2.json" + ], + "timestamp": 1642962894769, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/shared/server2.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT429", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT429", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "planReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the CustomScriptExtension." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "Name of the CustomScriptExtension." + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "Version of the CustomScriptExtension." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetName": { + "type": "string", + "metadata": { + "description": "Name of the availability set." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "dataDisks": { + "type": "array", + "metadata": { + "description": "Information about the data disks that the VM should have." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dbDataLUNs": "0,1,2,3", + "dbDataName": "space", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avSetName" + }, + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2020-12-01", + "location": "location", + "plan": "planReference", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall -DBDataLUNS \"0,1,2,3\" -DBLogLUNS \"dbLogLUNs\" -DBDataName \"space\" -DBLogName \"dbLogName\"" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT43 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT43 new file mode 100644 index 0000000..a9f09f7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT43 @@ -0,0 +1,914 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/bosh/bosh-setup/azuredeploy.json", + "/application-workloads/bosh/bosh-setup/azuredeploy.parameters.json" + ], + "timestamp": 1642962883709, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/bosh/bosh-setup/azuredeploy.json", + "/application-workloads/bosh/bosh-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT43", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT43", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04.0-LTS", + "metadata": { + "description": "OS version of Ubuntu" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "Please copy the content of your SSH RSA public key and paste it here. You can use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "storageAccountKind": { + "type": "string", + "defaultValue": "v1", + "allowedValues": [ + "v1", + "v2" + ], + "metadata": { + "description": "Storage Account Kind. Choose v1 for Storage (general purpose v1) and v2 for StorageV2 (general purpose v2)" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "environment": { + "type": "string", + "allowedValues": [ + "AzureCloud", + "AzureChinaCloud", + "AzureUSGovernment", + "AzureGermanCloud", + "AzureStack" + ], + "metadata": { + "description": "Different environments in Azure. Choose AzureCloud for Global Azure, choose AzureChinaCloud for Azure China Cloud, choose AzureUSGovernment for Azure Government, choose AzureGermanCloud for German cloud." + }, + "value": "AzureCloud" + }, + "servicePrincipalType": { + "type": "string", + "defaultValue": "Password", + "allowedValues": [ + "Password", + "Certificate" + ], + "metadata": { + "description": "Service principal supports two types: with a password or with a certificate" + } + }, + "tenantID": { + "type": "string", + "minLength": 36, + "maxLength": 36, + "metadata": { + "description": "Tenant ID" + }, + "value": "GEN-AZUREAD-AKS-TENANTID" + }, + "clientID": { + "type": "string", + "minLength": 36, + "maxLength": 36, + "metadata": { + "description": "Client ID or application ID" + }, + "value": "GEN-AZUREAD-AKS-APPID" + }, + "clientSecret": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Password of the service principal. See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?toc=%2Fazure%2Fazure-resource-manager%2Ftoc.json&view=azure-cli-latest#create-a-service-principal-for-your-application" + }, + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "storageAccountKey": { + "type": "securestring", + "metadata": { + "description": "Access key of the storage account" + }, + "value": "GEN-PASSWORD" + }, + "certificate": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Base64-encoded Certificate of the service principal. You can run \"cat | base64 -w 0\", and input the result. See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?toc=%2Fazure%2Fazure-resource-manager%2Ftoc.json&view=azure-cli-latest#create-a-service-principal-for-your-application" + } + }, + "azureStackDomain": { + "type": "string", + "defaultValue": "NotApplicableIfEnvironmentIsNotAzureStack", + "metadata": { + "description": "Azure Stack deployment domain. Please check https://github.com/cloudfoundry/bosh-azure-cpi-release/tree/master/docs/advanced/azure-stack." + } + }, + "azureStackResource": { + "type": "string", + "defaultValue": "NotApplicableIfEnvironmentIsNotAzureStack", + "metadata": { + "description": "Azure Stack Active Directory Service Endpoint Resource ID. Please check https://github.com/cloudfoundry/bosh-azure-cpi-release/tree/master/docs/advanced/azure-stack." + } + }, + "azureStackAuthentication": { + "type": "string", + "defaultValue": "AzureAD", + "allowedValues": [ + "AzureAD", + "AzureChinaCloudAD", + "ADFS" + ], + "metadata": { + "description": "Azure Stack Authentication. Please check https://github.com/cloudfoundry/bosh-azure-cpi-release/tree/master/docs/advanced/azure-stack." + } + }, + "azureStackCARootCertificate": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Azure Stack CA root certificate, which is base64 encoded. Get the Azure Stack CA root certificate from the Azure Stack operator, run \"cat | base64 -w 0\", and input the result. If not provided, \"/var/lib/waagent/Certificates.pem\" will be used. Please check https://github.com/cloudfoundry/bosh-azure-cpi-release/tree/master/docs/advanced/azure-stack#azure-stack-properties." + } + }, + "loadBalancerSku": { + "type": "string", + "allowedValues": [ + "standard", + "basic" + ], + "defaultValue": "standard", + "metadata": { + "description": "The sku of the load balancer to be used. Note: Standard Sku LB is not supported in Azure Stack and Azure China Cloud." + } + }, + "useAvailabilityZones": { + "type": "string", + "allowedValues": [ + "enabled", + "disabled" + ], + "defaultValue": "disabled", + "metadata": { + "description": "The flag to enable availability zones in cloud config" + } + }, + "autoDeployBosh": { + "type": "string", + "allowedValues": [ + "enabled", + "disabled" + ], + "defaultValue": "enabled", + "metadata": { + "description": "The flag allowing to deploy BOSH director automatically or not" + }, + "value": "disabled" + }, + "boshVmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Please check if the region support this VM size https://azure.microsoft.com/en-us/regions/#services. For more information about virtual machine sizes, see https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-sizes/" + } + }, + "boshLogLevel": { + "type": "string", + "allowedValues": [ + "debug", + "info", + "warn", + "error", + "none" + ], + "defaultValue": "debug", + "metadata": { + "description": "The log level for Bosh" + } + }, + "autoDeployCloudFoundry": { + "type": "string", + "defaultValue": "disabled", + "allowedValues": [ + "enabled", + "disabled" + ], + "metadata": { + "description": "The flag allowing to deploy Cloud Foundry automatically or not" + } + }, + "cloudFoundrySystemDomain": { + "type": "string", + "defaultValue": "NotConfigured", + "metadata": { + "description": "The Cloud Foundry system domain. If not specified, a xip.io domain will be used." + } + }, + "coreUriAzure": { + "type": "string", + "metadata": { + "description": "Core URI used for the endpoints within Azure Cloud" + }, + "value": "core.windows.net" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountTemplate": "nestedtemplates/storage-account-v1.json", + "vmStorageAccountContainerName": "vhds", + "virtualNetworkName": "boshvnet-crp", + "virtualNetworkAddressSpace": "10.0.0.0/16", + "subnetNameForBosh": "Bosh", + "subnetAddressRangeForBosh": "10.0.0.0/24", + "subnetRefForBosh": "Microsoft.Network/virtualNetworks/subnets/boshvnet-crp/Bosh", + "subnetNameForCloudFoundry": "CloudFoundry", + "subnetAddressRangeForCloudFoundry": "10.0.16.0/20", + "devboxNetworkSecurityGroup": "nsg-devbox", + "boshNetworkSecurityGroup": "nsg-bosh", + "cfNetworkSecurityGroup": "nsg-cf", + "cfPublicIPAddressName": "GEN-UNIQUE-cf", + "loadBalancerName": "cf-lb", + "loadBalancerTemplate": "nestedtemplates/load-balancer-standard.json", + "nicName": "GEN-UNIQUE", + "devboxPrivateIPAddress": "10.0.0.100", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "baseUriAzureCloud": "[deployment().properties.templateLink.uri]", + "filesToDownloadShared": [ + "[uri(variables('baseUriAzureCloud'), concat('scripts/setup_env.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('scripts/utils.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/bosh.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/cpi.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-location.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/uaa.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/credhub.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/custom-cpi-release.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/custom-environment.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-service-principal-with-certificate.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-azure-dns.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/jumpbox-user.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/keep-failed-or-unreachable-vms.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/cloud-config.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/dns.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/cf-deployment.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/azure.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/scale-to-one-az.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-compiled-releases.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-external-blobstore.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-azure-storage-blobstore.yml', parameters('_artifactsLocationSasToken')))]", + "https://s3-us-west-1.amazonaws.com/cf-cli-releases/releases/v6.39.0/cf-cli-installer_6.39.0_x86-64.deb" + ], + "filesToDownloadMisc": [ + "[uri(variables('baseUriAzureCloud'), concat('manifests/use-managed-disks.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureCloud'), concat('manifests/enable-diagnostic.yml', parameters('_artifactsLocationSasToken')))]" + ], + "filesToDownloadAzure": "[union(variables('filesToDownloadShared'), variables('filesToDownloadMisc'))]", + "filesToDownloadByCloud": { + "AzureCloud": "[union(variables('filesToDownloadShared'), variables('filesToDownloadMisc'))]", + "AzureUSGovernment": "[union(variables('filesToDownloadShared'), variables('filesToDownloadMisc'))]", + "AzureGermanCloud": "[union(variables('filesToDownloadShared'), variables('filesToDownloadMisc'))]", + "AzureStack": "[union(variables('filesToDownloadShared'), createArray(uri(variables('baseUriAzureCloud'), 'manifests/azure-stack-properties.yml'), uri(variables('baseUriAzureCloud'), 'manifests/use-trusted-certs.yml'), uri(variables('baseUriAzureCloud'), 'manifests/use-azure-stack-storage-blobstore.yml')))]", + "AzureChinaCloud": [ + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('scripts/setup_env.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('scripts/utils.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/bosh.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/cpi.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-location.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/uaa.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/credhub.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/custom-cpi-release.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/custom-environment.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-service-principal-with-certificate.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-managed-disks.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-azure-dns.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/jumpbox-user.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/keep-failed-or-unreachable-vms.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-mirror-releases-for-bosh.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/custom-ntp-server.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/cloud-config.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/dns.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-mirror-bosh-dns-release.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/cf-deployment.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/azure.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/scale-to-one-az.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-external-blobstore.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-azure-storage-blobstore.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-mirror-releases-for-cf.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloudWithVersion'), concat('manifests/use-mirror-compiled-releases.yml', parameters('_artifactsLocationSasToken')))]", + "[uri(variables('baseUriAzureChinaCloud'), concat('cf-cli/cf-cli-installer_6.39.0_x86-64.deb', parameters('_artifactsLocationSasToken')))]" + ] + }, + "baseUriAzureChinaCloud": "https://cloudfoundry.blob.core.chinacloudapi.cn/bosh-setup/", + "templateVersion": "v6-0-0", + "baseUriAzureChinaCloudWithVersion": "https://cloudfoundry.blob.core.chinacloudapi.cn/bosh-setup/v6-0-0/", + "filesToDownload": "(filesToDownloadByCloud)[parameters(environment)]", + "coreUrisByCloud": { + "AzureCloud": "core.windows.net", + "AzureChinaCloud": "core.chinacloudapi.cn", + "AzureUSGovernment": "core.usgovcloudapi.net", + "AzureGermanCloud": "core.cloudapi.de", + "AzureStack": "NotApplicableIfEnvironmentIsNotAzureStack" + }, + "coreUri": "(coreUrisByCloud)[parameters(environment)]", + "stemcellUrlAzure": "https://bosh.io/d/stemcells/bosh-azure-hyperv-ubuntu-xenial-go_agent?v=170.3", + "stemcellSha1Azure": "1417d0a7bdbfc2b4794a4c8799231f0eeec73325", + "environmentAzure": { + "serviceHostBase": "(coreUrisByCloud)[parameters(environment)]", + "boshCliUrl": "https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-5.2.2-linux-amd64", + "boshAzureCPIReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry/bosh-azure-cpi-release?v=35.5.0", + "boshAzureCPIReleaseSha1": "faebe370c143554fe471c3f6aafb523ab48c43ea", + "stemcellUrl": "https://bosh.io/d/stemcells/bosh-azure-hyperv-ubuntu-xenial-go_agent?v=170.3", + "stemcellSha1": "1417d0a7bdbfc2b4794a4c8799231f0eeec73325" + }, + "environmentsByCloud": { + "AzureCloud": { + "serviceHostBase": "(coreUrisByCloud)[parameters(environment)]", + "boshCliUrl": "https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-5.2.2-linux-amd64", + "boshAzureCPIReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry/bosh-azure-cpi-release?v=35.5.0", + "boshAzureCPIReleaseSha1": "faebe370c143554fe471c3f6aafb523ab48c43ea", + "stemcellUrl": "https://bosh.io/d/stemcells/bosh-azure-hyperv-ubuntu-xenial-go_agent?v=170.3", + "stemcellSha1": "1417d0a7bdbfc2b4794a4c8799231f0eeec73325" + }, + "AzureUSGovernment": { + "serviceHostBase": "(coreUrisByCloud)[parameters(environment)]", + "boshCliUrl": "https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-5.2.2-linux-amd64", + "boshAzureCPIReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry/bosh-azure-cpi-release?v=35.5.0", + "boshAzureCPIReleaseSha1": "faebe370c143554fe471c3f6aafb523ab48c43ea", + "stemcellUrl": "https://bosh.io/d/stemcells/bosh-azure-hyperv-ubuntu-xenial-go_agent?v=170.3", + "stemcellSha1": "1417d0a7bdbfc2b4794a4c8799231f0eeec73325" + }, + "AzureGermanCloud": { + "serviceHostBase": "(coreUrisByCloud)[parameters(environment)]", + "boshCliUrl": "https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-5.2.2-linux-amd64", + "boshAzureCPIReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry/bosh-azure-cpi-release?v=35.5.0", + "boshAzureCPIReleaseSha1": "faebe370c143554fe471c3f6aafb523ab48c43ea", + "stemcellUrl": "https://bosh.io/d/stemcells/bosh-azure-hyperv-ubuntu-xenial-go_agent?v=170.3", + "stemcellSha1": "1417d0a7bdbfc2b4794a4c8799231f0eeec73325" + }, + "AzureStack": { + "serviceHostBase": "(coreUrisByCloud)[parameters(environment)]", + "boshCliUrl": "https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-5.2.2-linux-amd64", + "boshAzureCPIReleaseUrl": "https://bosh.io/d/github.com/cloudfoundry/bosh-azure-cpi-release?v=35.5.0", + "boshAzureCPIReleaseSha1": "faebe370c143554fe471c3f6aafb523ab48c43ea", + "stemcellUrl": "https://bosh.io/d/stemcells/bosh-azure-hyperv-ubuntu-xenial-go_agent?v=170.3", + "stemcellSha1": "1417d0a7bdbfc2b4794a4c8799231f0eeec73325" + }, + "AzureChinaCloud": { + "serviceHostBase": "(coreUrisByCloud)[parameters(environment)]", + "boshCliUrl": "[uri(variables('baseUriAzureChinaCloud'), 'bosh-cli/bosh-cli-5.2.2-linux-amd64')]", + "boshAzureCPIReleaseUrl": "https://cloudfoundry.blob.core.chinacloudapi.cn/bosh-setup/cpi-releases/bosh-azure-cpi-release-35.5.0.tgz", + "boshAzureCPIReleaseSha1": "faebe370c143554fe471c3f6aafb523ab48c43ea", + "stemcellUrl": "https://cloudfoundry.blob.core.chinacloudapi.cn/bosh-setup/bosh-azure-stemcells/bosh-stemcell-170.3-azure-hyperv-ubuntu-xenial-go_agent.tgz", + "stemcellSha1": "1417d0a7bdbfc2b4794a4c8799231f0eeec73325" + } + }, + "environment": "(environmentsByCloud)[parameters(environment)]", + "stemcellUrlAzureChina": "https://cloudfoundry.blob.core.chinacloudapi.cn/bosh-setup/bosh-azure-stemcells/bosh-stemcell-170.3-azure-hyperv-ubuntu-xenial-go_agent.tgz", + "stemcellSha1AzureChina": "1417d0a7bdbfc2b4794a4c8799231f0eeec73325", + "credentialsByType": { + "Password": "[base64(parameters('clientSecret'))]", + "Certificate": "" + }, + "credentials": "(credentialsByType)[parameters(servicePrincipalType)]", + "customScriptPropertiesCommon": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": "(filesToDownloadByCloud)[parameters(environment)]" + }, + "protectedSettings": { + "commandToExecute": "bash -l -c \"./setup_env.sh GEN-AZUREAD-AKS-TENANTID GEN-AZUREAD-AKS-APPID (credentialsByType)[parameters(servicePrincipalType)] 2>&1 | tee /home/GEN-UNIQUE/install.log\"" + } + }, + "customScriptPropertiesByCloud": { + "AzureCloud": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": "(filesToDownloadByCloud)[parameters(environment)]" + }, + "protectedSettings": { + "commandToExecute": "bash -l -c \"./setup_env.sh GEN-AZUREAD-AKS-TENANTID GEN-AZUREAD-AKS-APPID (credentialsByType)[parameters(servicePrincipalType)] 2>&1 | tee /home/GEN-UNIQUE/install.log\"" + } + }, + "AzureUSGovernment": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": "(filesToDownloadByCloud)[parameters(environment)]" + }, + "protectedSettings": { + "commandToExecute": "bash -l -c \"./setup_env.sh GEN-AZUREAD-AKS-TENANTID GEN-AZUREAD-AKS-APPID (credentialsByType)[parameters(servicePrincipalType)] 2>&1 | tee /home/GEN-UNIQUE/install.log\"" + } + }, + "AzureGermanCloud": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": "(filesToDownloadByCloud)[parameters(environment)]" + }, + "protectedSettings": { + "commandToExecute": "bash -l -c \"./setup_env.sh GEN-AZUREAD-AKS-TENANTID GEN-AZUREAD-AKS-APPID (credentialsByType)[parameters(servicePrincipalType)] 2>&1 | tee /home/GEN-UNIQUE/install.log\"" + } + }, + "AzureChinaCloud": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": "(filesToDownloadByCloud)[parameters(environment)]" + }, + "protectedSettings": { + "commandToExecute": "bash -l -c \"./setup_env.sh GEN-AZUREAD-AKS-TENANTID GEN-AZUREAD-AKS-APPID (credentialsByType)[parameters(servicePrincipalType)] 2>&1 | tee /home/GEN-UNIQUE/install.log\"" + } + }, + "AzureStack": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.5", + "settings": { + "fileUris": "(filesToDownloadByCloud)[parameters(environment)]" + }, + "protectedSettings": { + "commandToExecute": "bash -l -c \"./setup_env.sh GEN-AZUREAD-AKS-TENANTID GEN-AZUREAD-AKS-APPID (credentialsByType)[parameters(servicePrincipalType)] 2>&1 | tee /home/GEN-UNIQUE/install.log\"" + } + } + }, + "customScriptProperties": "(customScriptPropertiesByCloud)[parameters(environment)]" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-bosh", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "bosh-agent", + "properties": { + "description": "Allow bosh-agent", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6868", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "bosh-director", + "properties": { + "description": "Allow bosh-director", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "25555", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 202, + "direction": "Inbound" + } + }, + { + "name": "dns", + "properties": { + "description": "Allow DNS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "53", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-devbox", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg-cf", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "cf-https", + "properties": { + "description": "Allow cf-https", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "cf-log", + "properties": { + "description": "Allow cf-log", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 201, + "direction": "Inbound" + } + }, + { + "name": "cf-http", + "properties": { + "description": "Allow cf-http", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 202, + "direction": "Inbound" + } + }, + { + "name": "cf-ssh", + "properties": { + "description": "Allow cf-ssh", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "2222", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 203, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "create-storage-account", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('baseUriAzureCloud'), concat(variables('storageAccountTemplate'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-devbox", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(toLower(parameters('vmName')), '-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "boshvnet-crp", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Bosh", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "CloudFoundry", + "properties": { + "addressPrefix": "10.0.16.0/20" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-devbox", + "Microsoft.Network/virtualNetworks//boshvnet-crp", + "Microsoft.Network/networkSecurityGroups//nsg-devbox" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-devbox" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.100", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-devbox" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/boshvnet-crp/Bosh" + } + } + } + ] + } + }, + { + "name": "create-load-balancer", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('baseUriAzureCloud'), concat(variables('loadBalancerTemplate'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "cf-lb" + }, + "loadBalancerPublicIPAddressName": { + "value": "GEN-UNIQUE-cf" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "generate-customdata", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/create-storage-account", + "Microsoft.Resources/deployments/create-load-balancer" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(variables('baseUriAzureCloud'), concat('nestedtemplates/generate-customdata.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "customData": { + "value": { + "LOCATION": "[resourceGroup().location]", + "VNET_NAME": "boshvnet-crp", + "SUBNET_NAME_FOR_BOSH": "Bosh", + "SUBNET_ADDRESS_RANGE_FOR_BOSH": "10.0.0.0/24", + "SUBNET_NAME_FOR_CLOUD_FOUNDRY": "CloudFoundry", + "SUBNET_ADDRESS_RANGE_FOR_CLOUD_FOUNDRY": "10.0.16.0/20", + "CLOUD_FOUNDRY_PUBLIC_IP": "[reference('Microsoft.Resources/deployments/create-load-balancer').outputs.loadBalancerPublicIPAddress.value]", + "LOAD_BALANCER_NAME": "cf-lb", + "NSG_NAME_FOR_BOSH": "nsg-bosh", + "NSG_NAME_FOR_CLOUD_FOUNDRY": "nsg-cf", + "SUBSCRIPTION_ID": "[subscription().subscriptionId]", + "RESOURCE_GROUP_NAME": "[resourceGroup().name]", + "DEFAULT_STORAGE_ACCOUNT_NAME": "[reference('Microsoft.Resources/deployments/create-storage-account').outputs.storageAccountName.value]", + "DEFAULT_STORAGE_ACCESS_KEY": "GEN-PASSWORD", + "ADMIN_USER_NAME": "GEN-UNIQUE", + "ENVIRONMENT": "AzureCloud", + "SERVICE_HOST_BASE": "(environment).serviceHostBase", + "BOSH_AZURE_CPI_RELEASE_URL": "(environment).boshAzureCPIReleaseUrl", + "BOSH_AZURE_CPI_RELEASE_SHA1": "(environment).boshAzureCPIReleaseSha1", + "STEMCELL_URL": "(environment).stemcellUrl", + "STEMCELL_SHA1": "(environment).stemcellSha1", + "BOSH_CLI_URL": "(environment).boshCliUrl", + "AUTO_DEPLOY_BOSH": "disabled", + "LOG_LEVEL_FOR_BOSH": "debug", + "AUTO_DEPLOY_CLOUD_FOUNDRY": "disabled", + "SYSTEM_DOMAIN": "NotConfigured", + "BOSH_VM_SIZE": "Standard_D2s_v3", + "AZURE_STACK_DOMAIN": "NotApplicableIfEnvironmentIsNotAzureStack", + "AZURE_STACK_RESOURCE": "NotApplicableIfEnvironmentIsNotAzureStack", + "AZURE_STACK_AUTHENTICATION": "AzureAD", + "AZURE_STACK_CA_ROOT_CERTIFICATE": "", + "SERVICE_PRINCIPAL_TYPE": "Password", + "USE_AVAILABILITY_ZONES": "disabled" + } + } + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE", + "Microsoft.Resources/deployments/generate-customdata" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "customData": "[reference('Microsoft.Resources/deployments/generate-customdata', '2015-01-01').outputs.customData.value]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat(reference('Microsoft.Resources/deployments/create-storage-account').outputs.blobEndpoint.value, variables('vmStorageAccountContainerName'), '/', parameters('vmName'), '-osdisk.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/CustomScript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/create-load-balancer", + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": "(customScriptPropertiesByCloud)[parameters(environment)]" + } + ], + "outputs": { + "sshDevBox": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(resourceId('Microsoft.Network/publicIPAddresses/', concat(parameters('vmName'), '-devbox'))).dnsSettings.fqdn)]" + }, + "cloudFoundryIP": { + "type": "string", + "value": "[reference('Microsoft.Resources/deployments/create-load-balancer').outputs.loadBalancerPublicIPAddress.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT430 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT430 new file mode 100644 index 0000000..ca660b8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT430 @@ -0,0 +1,522 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-marketplace-image/azuredeploy.parameters.json" + ], + "timestamp": 1642962894777, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-marketplace-image/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT430", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT430", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "maxLength": 3, + "minLength": 3, + "metadata": { + "description": "SAP System ID." + }, + "value": "DEV" + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "RHEL 7.2" + ], + "defaultValue": "Windows Server 2012 R2 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Small < 2.000 SAPS", + "Medium < 9.000 SAPS", + "Large < 18.000 SAPS", + "X-Large < 40.000 SAPS" + ], + "defaultValue": "Small < 2.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "storageType": { + "type": "string", + "allowedValues": [ + "Premium", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The storage type that should be used for the virtual machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "sapuser1" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "newOrExistingSubnet": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether a new virtual network and subnet should be created or an existing subnet should be used." + } + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "location of resources" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "SLES 12": { + "sku": "12-SP1", + "offer": "SLES-SAP", + "publisher": "SUSE", + "OSType": "Linux" + }, + "RHEL 7.2": { + "sku": "7.2", + "offer": "RHEL", + "publisher": "RedHat", + "OSType": "Linux" + } + }, + "imageSku": "(images)[parameters(osType)].sku", + "imagePublisher": "(images)[parameters(osType)].publisher", + "imageOffer": "(images)[parameters(osType)].offer", + "internalOSType": "(images)[parameters(osType)].OSType", + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('shared/configureSAPVM.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy Unrestricted -File shared\\configureSAPVM.ps1" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('shared/configureSAPVM.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh shared/configureSAPVM.sh" + } + }, + "cseExtPublisher": "(csExtension)[variables(internalOSType)].Publisher", + "cseExtName": "(csExtension)[variables(internalOSType)].Name", + "cseExtVersion": "(csExtension)[variables(internalOSType)].Version", + "storageTypes": { + "Premium": "Premium_LRS", + "Standard": "Standard_LRS" + }, + "internalStorageType": "(storageTypes)[parameters(storageType)]", + "vmSizes": { + "Small < 2.000 SAPS": { + "Premium": { + "size": "Standard_D2s_v3" + }, + "Standard": { + "size": "Standard_D2s_v3" + } + }, + "Medium < 9.000 SAPS": { + "Premium": { + "size": "Standard_D8s_v3" + }, + "Standard": { + "size": "Standard_D8_v3" + } + }, + "Large < 18.000 SAPS": { + "Premium": { + "size": "Standard_D16s_v3" + }, + "Standard": { + "size": "Standard_D16_v3" + } + }, + "X-Large < 40.000 SAPS": { + "Premium": { + "size": "Standard_GS5" + }, + "Standard": { + "size": "Standard_D16_v3" + } + } + }, + "vmSize": "(vmSizes)[parameters(sapSystemSize)][parameters(storageType)].size", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vmName": "[toLower(parameters('sapSystemId'))]-servercs", + "storageAccountName": "[concat(variables('sidlower'), uniqueString(variables('sidlower'), resourceGroup().id))]", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "publicIpName": "[toLower(parameters('sapSystemId'))]-pib", + "nicName": "[toLower(parameters('sapSystemId'))]-nic", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg-cs", + "publicIPAddressType": "Dynamic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "nestedDeploymentName": "nestedTemplate", + "nestedDeploymentNameProf": "nestedTemplateprof", + "nestedDeploymentNameVnet": "nestedTemplatevnet", + "nestedDeploymentNameNSG": "nestedTemplatensg", + "nestedDeploymentNameNIC": "nestedTemplatenic", + "nestedDeploymentNamePIP": "nestedTemplatepip", + "osDiskType": "image" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "(storageTypes)[parameters(storageType)]" + } + }, + { + "apiVersion": "2021-04-01", + "name": "nestedTemplatevnet", + "type": "Microsoft.Resources/deployments", + "properties": { + "hardwareProfile": { + "vmSize": "(vmSizes)[parameters(sapSystemSize)][parameters(storageType)].size" + }, + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/', parameters('newOrExistingSubnet'), 'vnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "Subnet" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2021-04-01", + "name": "nestedTemplatenic", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/nic-config.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pib" + }, + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg-cs" + }, + "newOrExistingSubnet": { + "value": "new" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2021-04-01", + "name": "nestedTemplateprof", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/os-disk-parts.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "(images)[parameters(osType)].sku" + }, + "imagePublisher": { + "value": "(images)[parameters(osType)].publisher" + }, + "imageOffer": { + "value": "(images)[parameters(osType)].offer" + }, + "userImageVhdUri": { + "value": "" + }, + "userImageStorageAccount": { + "value": "" + }, + "osDiskVhdUri": { + "value": "" + }, + "osDiskType": { + "value": "image" + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "sidlower": { + "value": "[toLower(parameters('sapSystemId'))]" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-servercs" + }, + "storageAccountUri": { + "value": "[reference(variables('storageAccountName'), '2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2021-04-01", + "name": "nestedTemplatepip", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/', parameters('newOrExistingSubnet'), 'pip.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pib" + }, + "publicIPAddressType": { + "value": "Dynamic" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2021-04-01", + "name": "nestedTemplatensg", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/', parameters('newOrExistingSubnet'), 'nsg.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg-cs" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments//nestedTemplatevnet", + "Microsoft.Resources/deployments//nestedTemplatenic", + "Microsoft.Resources/deployments//nestedTemplatepip", + "Microsoft.Resources/deployments//nestedTemplatensg" + ], + "properties": { + "networkSecurityGroup": "[reference(variables('nestedDeploymentNameNIC')).outputs.selectedConfiguration.value.networkSecurityGroup]", + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[reference(variables('nestedDeploymentNameNIC')).outputs.selectedConfiguration.value.publicIPAddress]", + "subnet": "[reference(variables('nestedDeploymentNameNIC')).outputs.selectedConfiguration.value.subnet]" + } + } + ] + } + }, + { + "apiVersion": "2021-04-01", + "name": "nestedTemplate", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Resources/deployments/', variables('nestedDeploymentNameProf'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/cs-server-', variables('vmSize'), '_multiNIC_No.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(variables('nestedDeploymentNameProf')).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(variables('nestedDeploymentNameProf')).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "image" + }, + "sidlower": { + "value": "[toLower(parameters('sapSystemId'))]" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-servercs" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(storageType)].size" + }, + "adminUsername": { + "value": "sapuser1" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountUri": { + "value": "[reference(variables('storageAccountName'), '2021-01-01').primaryEndpoints['blob']]" + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[toLower(parameters('sapSystemId'))]-servercs/(csExtension)[variables(internalOSType)].Name", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments//nestedTemplate" + ], + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ], + "commandToExecute": "[concat(variables('csExtension')[variables('internalOSType')].scriptCall, ' -DBDataLUNS \"', reference(variables('nestedDeploymentName')).outputs.dbDataLUNs.value , '\" -DBLogLUNS \"', reference(variables('nestedDeploymentName')).outputs.dbLogLUNs.value, '\"')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT431 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT431 new file mode 100644 index 0000000..1fc584e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT431 @@ -0,0 +1,1062 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-marketplace-image-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962894789, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-marketplace-image-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-marketplace-image-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT431", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT431", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "maxLength": 3, + "minLength": 3, + "defaultValue": "DEQ", + "metadata": { + "description": "SAP System ID." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "RHEL 7", + "Oracle Linux 7" + ], + "defaultValue": "Windows Server 2016 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "dbtype": { + "type": "string", + "allowedValues": [ + "SQL", + "HANA", + "other" + ], + "defaultValue": "other", + "metadata": { + "description": "The type of the database" + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 2.000 SAPS", + "Medium < 9.000 SAPS", + "Large < 18.000 SAPS", + "X-Large < 40.000 SAPS" + ], + "defaultValue": "Small < 2.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "availabilityZone": { + "type": "int", + "defaultValue": 0, + "minValue": 0, + "maxValue": 3, + "metadata": { + "description": "Zone number. Set to 0 if you do not want to use Availability Zones" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "selectedZones": "[if(equals(parameters('availabilityZone'),0), json('null'), array(parameters('availabilityZone')))]", + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "SLES 12": { + "sku": "12-SP3", + "offer": "SLES-SAP", + "publisher": "SUSE", + "OSType": "Linux" + }, + "RHEL 7": { + "sku": "7.5", + "offer": "RHEL-SAP", + "publisher": "RedHat", + "OSType": "Linux" + }, + "Oracle Linux 7": { + "sku": "7.5", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "OSType": "Linux" + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File scripts/diskConfig.ps1" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh diskConfig.sh" + } + }, + "sizes": { + "Demo": { + "HANA": { + "vmSize": "Standard_E4s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1#2,3#4#5#6,7' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": false + }, + "SQL": { + "vmSize": "Standard_E2s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0#1\" -names \"data#sap\" -paths \"C:\\sql\\data,C:\\sql\\log#S\" -sizes \"70,100#100\"" + }, + "useFastNetwork": false + }, + "other": { + "vmSize": "Standard_E2s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0' -names 'usrsap' -paths '/usr/sap' -sizes '100'", + "Windows": "-luns \"0\" -names \"sap\" -paths \"S\" -sizes \"100\"" + }, + "useFastNetwork": false + } + }, + "Small < 2.000 SAPS": { + "HANA": { + "vmSize": "Standard_E32s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3#4#5' -names 'datalog#shared#usrsap#backup' -paths '/hana/data,/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '70,100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_D4s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3#4#5\" -names \"data#log#sap\" -paths \"C:\\sql\\data#C:\\sql\\log#S\" -sizes \"100#100#100\"" + }, + "useFastNetwork": true + }, + "other": { + "vmSize": "Standard_D4s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0' -names 'usrsap' -paths '/usr/sap' -sizes '100'", + "Windows": "-luns \"0\" -names \"sap\" -paths \"S\" -sizes \"100\"" + }, + "useFastNetwork": true + } + }, + "Medium < 9.000 SAPS": { + "HANA": { + "vmSize": "Standard_E64s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3#4#5' -names 'datalog#shared#usrsap#backup' -paths '/hana/data,/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '70,100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_D32s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 8, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4,5,6#7#8\" -names \"data#log#sap\" -paths \"C:\\sql\\data#C:\\sql\\log#S\" -sizes \"100#100#100\"" + }, + "useFastNetwork": true + }, + "other": { + "vmSize": "Standard_D32s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0' -names 'usrsap' -paths '/usr/sap' -sizes '100'", + "Windows": "-luns \"0\" -names \"sap\" -paths \"S\" -sizes \"100\"" + }, + "useFastNetwork": true + } + }, + "Large < 18.000 SAPS": { + "HANA": { + "vmSize": "Standard_M64s", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 8, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 9, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2,3#4,5#6#7#8,9' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_D64s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4#5#6\" -names \"data#log#sap\" -paths \"C:\\sql\\data#C:\\sql\\log#S\" -sizes \"100#100#100\"" + }, + "useFastNetwork": true + }, + "other": { + "vmSize": "Standard_D64s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0' -names 'usrsap' -paths '/usr/sap' -sizes '100'", + "Windows": "-luns \"0\" -names \"sap\" -paths \"S\" -sizes \"100\"" + }, + "useFastNetwork": true + } + }, + "X-Large < 40.000 SAPS": { + "HANA": { + "vmSize": "Standard_M128s", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 2048 + }, + { + "lun": 8, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 2048 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3,4#5#6#7,8' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_E64s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 8, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4,5,6#7#8\" -names \"data#log#sap\" -paths \"C:\\sql\\data#C:\\sql\\log#S\" -sizes \"100#100#100\"" + }, + "useFastNetwork": true + }, + "other": { + "vmSize": "Standard_E64s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0' -names 'usrsap' -paths '/usr/sap' -sizes '100'", + "Windows": "-luns \"0\" -names \"sap\" -paths \"S\" -sizes \"100\"" + }, + "useFastNetwork": true + } + } + }, + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vmName": "[toLower(parameters('sapSystemId'))]-servercs", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "publicIpName": "[toLower(parameters('sapSystemId'))]-pib", + "nicName": "[toLower(parameters('sapSystemId'))]-nic", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg-cs", + "subnetName": "Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('sapSystemId'))]-nsg-cs", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "condition": false, + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(parameters('sapSystemId'))]-vnet", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//[toLower(parameters('sapSystemId'))]-nsg-cs" + ], + "condition": false, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg-cs" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(parameters('sapSystemId'))]-pib", + "apiVersion": "2020-07-01", + "condition": false, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('sapSystemId'))]-vnet" + ], + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('sapSystemId'))]-vnet", + "Microsoft.Network/publicIPAddresses//[toLower(parameters('sapSystemId'))]-pib" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[if(equals(length(parameters('subnetId')), 0), json(concat('{\"id\": \"', resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpName')) ,'\"}')), json('null'))]", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + } + } + } + ], + "enableAcceleratedNetworking": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].useFastNetwork" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(parameters('sapSystemId'))]-servercs", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//[toLower(parameters('sapSystemId'))]-nic" + ], + "zones": "[if(equals(parameters('availabilityZone'),0), json('null'), array(parameters('availabilityZone')))]", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].vmSize" + }, + "osProfile": { + "computerName": "[toLower(parameters('sapSystemId'))]-servercs", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(parameters('sapSystemId'))]-servercs-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].disks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('sapSystemId'))]-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmName'), '/', variables('csExtension')[variables('internalOSType')].Name)]", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//[toLower(parameters('sapSystemId'))]-servercs" + ], + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ], + "commandToExecute": "[concat(variables('csExtension')[variables('internalOSType')].scriptCall, ' ', variables('sizes')[parameters('sapSystemSize')][parameters('dbType')].scriptArguments[variables('internalOSType')])]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT432 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT432 new file mode 100644 index 0000000..0cfe811 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT432 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newnsg.json" + ], + "timestamp": 1642962894803, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT432", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT432", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the network security group." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[parameters(osType)]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": "(osSecurityRules)[parameters(osType)]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT433 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT433 new file mode 100644 index 0000000..39f2b64 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT433 @@ -0,0 +1,66 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newpip.json" + ], + "timestamp": 1642962894812, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT433", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT433", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIpName": { + "type": "string", + "metadata": { + "description": "Name of the public IP address." + } + }, + "publicIPAddressType": { + "type": "string", + "metadata": { + "description": "Type of the public IP address, static or dynamic" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIpName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "publicIPAddressType" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT434 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT434 new file mode 100644 index 0000000..30b952e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT434 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newvnetnsg.json" + ], + "timestamp": 1642962894821, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT434", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT434", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network." + } + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network." + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Subnet." + } + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network Subnet." + } + }, + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the Network Security Group." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnetName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT435 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT435 new file mode 100644 index 0000000..363a9f6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT435 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/nic-config.json" + ], + "timestamp": 1642962894836, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT435", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT435", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network subnet." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the public ip address." + } + }, + "nsgName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the network security group." + } + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "nicConfigurations": { + "true": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/ parameters('vnetName')/subnets/ parameters('subnetName')" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ parameters('publicIpName')" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ parameters('nsgName')" + } + }, + "false": { + "subnet": { + "id": "" + }, + "publicIPAddress": null, + "networkSecurityGroup": null + } + }, + "selectedConfiguration": "(nicConfigurations)[string(equals(length(parameters(subnetId)), 0))]" + }, + "resources": [], + "outputs": { + "selectedConfiguration": { + "value": "[variables('selectedConfiguration')]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT436 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT436 new file mode 100644 index 0000000..5ac072f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT436 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/os-disk-parts-md.json" + ], + "timestamp": 1642962894849, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT436", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT436", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageSku": { + "type": "string", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the image that should be used to deploy the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "metadata": { + "description": "Offer of the image that should be used to deploy the virtual machine." + } + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "storageType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage type that should be used for the virtual machine." + } + }, + "managedDiskId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Id of the managed disk." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osDiskCaching": "ReadWrite", + "osDiskParts": { + "image": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "latest" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "userImage": { + "imageReference": { + "id": "" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "osdisk": { + "imageReference": {}, + "osDisk": { + "osType": "osType", + "caching": "ReadWrite", + "createOption": "Attach", + "managedDisk": { + "id": "" + } + } + } + } + }, + "resources": [], + "outputs": { + "imageReference": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].imageReference]", + "type": "object" + }, + "osDisk": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].osDisk]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT437 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT437 new file mode 100644 index 0000000..98089d5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT437 @@ -0,0 +1,267 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/server-md.json" + ], + "timestamp": 1642962894859, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT437", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT437", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptArgs": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetObj": { + "type": "object", + "metadata": { + "description": "Availability set." + } + }, + "useAVSet": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Availability set." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "dataDisksObj": { + "type": "object", + "metadata": { + "description": "Information about the data disks that the VM should have." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "URL to github templates." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "availableAVSetObj": { + "true": "avSetObj", + "false": null + }, + "internalAVSetObj": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0" + } + }, + "cseExtPublisher": "(csExtension)[parameters(osType)].Publisher", + "cseExtName": "(csExtension)[parameters(osType)].Name", + "cseExtVersion": "(csExtension)[parameters(osType)].Version", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/(csExtension)[parameters(osType)].Name", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmName" + ], + "properties": { + "publisher": "(csExtension)[parameters(osType)].Publisher", + "type": "(csExtension)[parameters(osType)].Name", + "typeHandlerVersion": "(csExtension)[parameters(osType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall csExtensionscriptArgs" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT438 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT438 new file mode 100644 index 0000000..6e6dbf3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT438 @@ -0,0 +1,452 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-user-disk-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962894869, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-disk-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-user-disk-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT438", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT438", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "maxLength": 3, + "minLength": 3, + "metadata": { + "description": "SAP System ID." + }, + "value": "DEV" + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + }, + "value": "Linux" + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Small < 2.000 SAPS", + "Medium < 9.000 SAPS", + "Large < 18.000 SAPS", + "X-Large < 40.000 SAPS" + ], + "defaultValue": "Small < 2.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "userDiskId": { + "type": "string", + "metadata": { + "description": "Id of the OS managed disk." + }, + "value": "" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "csExtension": { + "Windows": { + "script": "[uri(parameters('_artifactsLocation'), concat('shared/configureSAPVM.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File .\\shared\\configureSAPVM.ps1" + }, + "Linux": { + "script": "[uri(parameters('_artifactsLocation'), concat('shared/configureSAPVM.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh configureSAPVM.sh" + } + }, + "vmSizes": { + "Small < 2.000 SAPS": { + "size": "Standard_D4s_v3", + "disks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 128 + } + ], + "scriptArgs": " -DBDataLUNS '0,1' -DBLogLUNS '2'" + }, + "Medium < 9.000 SAPS": { + "size": "Standard_D8s_v3", + "disks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 128 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2' -DBLogLUNS '3'" + }, + "Large < 18.000 SAPS": { + "size": "Standard_D16s_v3", + "disks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2' -DBLogLUNS '3'" + }, + "X-Large < 40.000 SAPS": { + "size": "Standard_GS5", + "disks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2,3' -DBLogLUNS '4'" + } + }, + "dataDiskSizes": "(vmSizes)[parameters(sapSystemSize)].disks", + "internalOsType": "Linux", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vmName": "[toLower(parameters('sapSystemId'))]-servercs", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "publicIpName": "[toLower(parameters('sapSystemId'))]-pip", + "nicName": "[toLower(parameters('sapSystemId'))]-nic", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg-cs", + "subnetName": "Subnet", + "nestedDeploymentName": "nestedTemplate", + "nestedDeploymentNameProf": "nestedTemplateprof", + "nestedDeploymentNameVnet": "nestedTemplatevnet", + "nestedDeploymentNameNSG": "nestedTemplatensg", + "nestedDeploymentNameNIC": "nestedTemplatenic", + "nestedDeploymentNamePIP": "nestedTemplatepip", + "osDiskType": "osdisk" + }, + "resources": [ + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatensg", + "type": "Microsoft.Resources/deployments", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/newnsg.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg-cs" + }, + "osType": { + "value": "internalOSType" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatevnet", + "type": "Microsoft.Resources/deployments", + "condition": false, + "dependsOn": [ + "Microsoft.Resources/deployments/nestedTemplatensg" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/newvnetnsg.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "Subnet" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg-cs" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatenic", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/nic-config.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateprof", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/os-disk-parts-md.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "" + }, + "imagePublisher": { + "value": "" + }, + "imageOffer": { + "value": "" + }, + "imageVersion": { + "value": "" + }, + "osDiskType": { + "value": "osdisk" + }, + "osType": { + "value": "internalOSType" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-servercs" + }, + "storageType": { + "value": "Premium_LRS" + }, + "managedDiskId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatepip", + "type": "Microsoft.Resources/deployments", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/newpip.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip" + }, + "publicIPAddressType": { + "value": "Dynamic" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedTemplatevnet", + "Microsoft.Resources/deployments/nestedTemplatenic", + "Microsoft.Resources/deployments/nestedTemplatepip" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[reference(variables('nestedDeploymentNameNIC')).outputs.selectedConfiguration.value.publicIPAddress]", + "subnet": "[reference(variables('nestedDeploymentNameNIC')).outputs.selectedConfiguration.value.subnet]" + } + } + ] + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplate", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedTemplateprof", + "Microsoft.Network/networkInterfaces/[toLower(parameters('sapSystemId'))]-nic" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/server-md.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(variables('nestedDeploymentNameProf')).outputs.osDisk.value]" + }, + "osDisk": { + "value": "[reference(variables('nestedDeploymentNameProf')).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "osdisk" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-servercs" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)].size" + }, + "adminUsername": { + "value": "" + }, + "adminPassword": { + "value": "" + }, + "csExtensionScript": { + "value": "(csExtension)[variables(internalOSType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[variables(internalOSType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "" + }, + "avSetObj": { + "value": { + "id": "" + } + }, + "useAVSet": { + "value": false + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic" + }, + "dataDisksObj": { + "value": { + "copy": [ + { + "name": "dataDisks", + "count": 26, + "input": { + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty", + "diskSizeGB": "(dataDiskSizes)[copyIndex(dataDisks)].size" + } + } + ] + } + }, + "osType": { + "value": "internalOSType" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT439 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT439 new file mode 100644 index 0000000..bf401cd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT439 @@ -0,0 +1,579 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-image-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-user-image-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962894881, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-2-tier-user-image-md/azuredeploy.json", + "/application-workloads/sap/sap-2-tier-user-image-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT439", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT439", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "maxLength": 3, + "minLength": 3, + "metadata": { + "description": "SAP System ID." + }, + "value": "DEV" + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + }, + "value": "Windows" + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Small < 2.000 SAPS", + "Medium < 9.000 SAPS", + "Large < 18.000 SAPS", + "X-Large < 40.000 SAPS" + ], + "defaultValue": "Small < 2.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "storageType": { + "type": "string", + "allowedValues": [ + "Premium", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The storage type that should be used for the virtual machine." + } + }, + "userImageId": { + "type": "string", + "metadata": { + "description": "Id of the user image." + }, + "value": "" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "sapuser1" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "newOrExistingSubnet": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether a new virtual network and subnet should be created or an existing subnet should be used." + } + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "github": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/", + "csExtension": { + "Windows": { + "script": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/configureSAPVM.ps1", + "scriptCall": "powershell.exe -File configureSAPVM.ps1" + }, + "Linux": { + "script": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/configureSAPVM.sh", + "scriptCall": "sh configureSAPVM.sh" + } + }, + "vmSizes": { + "Small < 2.000 SAPS": { + "Premium": { + "size": "Standard_D4s_v3", + "disks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 128 + } + ], + "scriptArgs": " -DBDataLUNS '0,1' -DBLogLUNS '2'" + }, + "Standard": { + "size": "Standard_D4_v3", + "disks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2' -DBLogLUNS '3'" + } + }, + "Medium < 9.000 SAPS": { + "Premium": { + "size": "Standard_D8s_v3", + "disks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 128 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2' -DBLogLUNS '3'" + }, + "Standard": { + "size": "Standard_D8_v3", + "disks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2,3' -DBLogLUNS '4,5'" + } + }, + "Large < 18.000 SAPS": { + "Premium": { + "size": "Standard_D16s_v3", + "disks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2' -DBLogLUNS '3'" + }, + "Standard": { + "size": "Standard_D16_v3", + "disks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2,3' -DBLogLUNS '4,5'" + } + }, + "X-Large < 40.000 SAPS": { + "Premium": { + "size": "Standard_GS5", + "disks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2,3' -DBLogLUNS '4'" + }, + "Standard": { + "size": "Standard_D16_v3", + "disks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "scriptArgs": " -DBDataLUNS '0,1,2,3' -DBLogLUNS '4,5'" + } + } + }, + "vmSize": "(vmSizes)[parameters(sapSystemSize)][parameters(storageType)].size", + "dataDiskSizes": "(vmSizes)[parameters(sapSystemSize)][parameters(storageType)].disks", + "internalOsType": "Windows", + "internalExtensionScript": "(csExtension)[parameters(osType)].script", + "internalExtensionScriptCall": "(csExtension)[parameters(osType)].scriptCall", + "internalExtensionScriptCallArgs": "(vmSizes)[parameters(sapSystemSize)][parameters(storageType)].scriptArgs", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vmName": "[toLower(parameters('sapSystemId'))]-servercs", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "publicIpName": "[toLower(parameters('sapSystemId'))]-pip", + "nicName": "[toLower(parameters('sapSystemId'))]-nic", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg-cs", + "storageTypes": { + "Premium": "Premium_LRS", + "Standard": "Standard_LRS" + }, + "internalStorageType": "(storageTypes)[parameters(storageType)]", + "publicIPAddressType": "Dynamic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "nestedDeploymentName": "nestedTemplate", + "nestedDeploymentNameProf": "nestedTemplateprof", + "nestedDeploymentNameVnet": "nestedTemplatevnet", + "nestedDeploymentNameNSG": "nestedTemplatensg", + "nestedDeploymentNameNIC": "nestedTemplatenic", + "nestedDeploymentNamePIP": "nestedTemplatepip", + "osDiskType": "userImage" + }, + "resources": [ + { + "apiVersion": "2015-01-01", + "name": "nestedTemplatevnet", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/newvnet.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "Subnet" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + } + } + } + }, + { + "apiVersion": "2015-01-01", + "name": "nestedTemplatenic", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/nic-config.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip" + }, + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg-cs" + }, + "newOrExistingSubnet": { + "value": "new" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2015-01-01", + "name": "nestedTemplateprof", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/os-disk-parts-md.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "" + }, + "imagePublisher": { + "value": "" + }, + "imageOffer": { + "value": "" + }, + "osDiskType": { + "value": "userImage" + }, + "osType": { + "value": "internalOSType" + }, + "sidlower": { + "value": "[toLower(parameters('sapSystemId'))]" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-servercs" + }, + "storageType": { + "value": "(storageTypes)[parameters(storageType)]" + }, + "managedDiskId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2015-01-01", + "name": "nestedTemplatepip", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/newpip.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip" + }, + "publicIPAddressType": { + "value": "Dynamic" + } + } + } + }, + { + "apiVersion": "2015-01-01", + "name": "nestedTemplatensg", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/newnsg.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg-cs" + }, + "osType": { + "value": "internalOSType" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic", + "apiVersion": "2017-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedTemplatevnet", + "Microsoft.Resources/deployments/nestedTemplatenic", + "Microsoft.Resources/deployments/nestedTemplatepip", + "Microsoft.Resources/deployments/nestedTemplatensg" + ], + "properties": { + "networkSecurityGroup": "[reference(variables('nestedDeploymentNameNIC')).outputs.selectedConfiguration.value.networkSecurityGroup]", + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[reference(variables('nestedDeploymentNameNIC')).outputs.selectedConfiguration.value.publicIPAddress]", + "subnet": "[reference(variables('nestedDeploymentNameNIC')).outputs.selectedConfiguration.value.subnet]" + } + } + ] + } + }, + { + "apiVersion": "2015-01-01", + "name": "nestedTemplate", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedTemplateprof", + "Microsoft.Network/networkInterfaces/[toLower(parameters('sapSystemId'))]-nic" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-2-tier-marketplace-image/shared/server-md.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(variables('nestedDeploymentNameProf')).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(variables('nestedDeploymentNameProf')).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "userImage" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-servercs" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(storageType)].size" + }, + "adminUsername": { + "value": "sapuser1" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "csExtensionScript": { + "value": "(csExtension)[parameters(osType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[parameters(osType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(storageType)].scriptArgs" + }, + "avSetObj": { + "value": {} + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic" + }, + "dataDisksObj": { + "value": { + "copy": [ + { + "name": "dataDisks", + "count": 26, + "input": { + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty", + "diskSizeGB": "(dataDiskSizes)[copyIndex(dataDisks)].size" + } + } + ] + } + }, + "osType": { + "value": "internalOSType" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT44 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT44 new file mode 100644 index 0000000..a471136 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT44 @@ -0,0 +1,288 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/buffalo/gobuffalo/azuredeploy.json", + "/application-workloads/buffalo/gobuffalo/azuredeploy.parameters.json" + ], + "timestamp": 1642962883753, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/buffalo/gobuffalo/azuredeploy.json", + "/application-workloads/buffalo/gobuffalo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT44", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.dbformysql/servers", + "microsoft.web/serverfarms", + "microsoft.dbforpostgresql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT44", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Azure Region which should be targeted while provisioning the infrastructure described in this template." + } + }, + "imageName": { + "type": "string", + "defaultValue": "appsvc/sample-hello-world:latest", + "metadata": { + "description": "The image which defines the application to be hosted in Azure." + } + }, + "name": { + "type": "string", + "defaultValue": "[concat('site', uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "A unique name to identify the site, and its relate assets once it is created." + } + }, + "database": { + "type": "string", + "defaultValue": "postgresql", + "allowedValues": [ + "none", + "postgresql", + "mysql" + ], + "metadata": { + "description": "The flavor of database that should be deployed alongside this application." + } + }, + "databaseName": { + "type": "string", + "defaultValue": "buffalo_development", + "metadata": { + "description": "The name that will identify the database which is created, should one be created." + } + }, + "databaseAdministratorLogin": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The user handle for the administrator of the database to be created." + }, + "value": "GEN-UNIQUE" + }, + "databaseAdministratorLoginPassword": { + "type": "SecureString", + "defaultValue": "", + "metadata": { + "description": "The password for the administrator of the database to be created." + }, + "value": "GEN-PASSWORD" + }, + "dockerRegistryAccess": { + "type": "string", + "defaultValue": "public", + "allowedValues": [ + "public", + "private" + ], + "metadata": { + "description": "Denotes whether the image selected lives in a public or private Docker registry." + } + }, + "dockerRegistryServerURL": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The url of the Docker registry which hosts the repository being used to host the image for your site." + } + }, + "dockerRegistryServerUsername": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The user handle used to authenticate against the private Docker registry, if applicable." + } + }, + "dockerRegistryServerPassword": { + "type": "SecureString", + "defaultValue": "", + "metadata": { + "description": "The password used to authenticate against the private Docker registry, if applicable." + } + } + }, + "variables": { + "hostingPlanName": "hostingPlan-[concat('site', uniqueString(resourceGroup().id, deployment().name))]", + "postgresqlName": "[concat('site', uniqueString(resourceGroup().id, deployment().name))]-postgresql", + "mysqlName": "[concat('site', uniqueString(resourceGroup().id, deployment().name))]-mysql", + "appSettingsPublicRegistry": [ + { + "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE", + "value": "false" + } + ], + "appSettingsPrivateRegistry": [ + { + "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE", + "value": "false" + }, + { + "name": "DOCKER_REGISTRY_SERVER_URL", + "value": "" + }, + { + "name": "DOCKER_REGISTRY_SERVER_USERNAME", + "value": "" + }, + { + "name": "DOCKER_REGISTRY_SERVER_PASSWORD", + "value": "" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Web/sites", + "name": "[concat('site', uniqueString(resourceGroup().id, deployment().name))]", + "apiVersion": "2018-02-01", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-related:', subscription().id, '/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty", + "gobuffalo": "empty" + }, + "properties": { + "name": "[concat('site', uniqueString(resourceGroup().id, deployment().name))]", + "siteConfig": { + "appSettings": "[if(equals(parameters('dockerRegistryAccess'), 'private'), variables('appSettingsPrivateRegistry'), variables('appSettingsPublicRegistry'))]", + "connectionStrings": [ + { + "name": "DATABASE_URL", + "connectionString": "[if(equals(parameters('database'), 'postgresql'), concat('postgres://', parameters('databaseAdministratorLogin'), '@', variables('postgresqlName'),':', parameters('databaseAdministratorLoginPassword'), '@', reference(resourceId('Microsoft.DBforPostgreSQL/servers',variables('postgresqlName'))).fullyQualifiedDomainName, ':5432/', parameters('databaseName')), if(equals(parameters('database'), 'mysql'), concat('mysql://', parameters('databaseAdministratorLogin'), '@', variables('mysqlName'), ':', parameters('databaseAdministratorLoginPassword'), '@tcp(', reference(resourceId('Microsoft.DBforMySQL/servers',variables('mysqlName'))).fullyQualifiedDomainName , ':3306/', parameters('databaseName'), '?allowNativePasswords=true'),'not applicable'))]", + "type": "[if(equals(parameters('database'), 'mysql'), 'mysql', 'custom')]" + } + ], + "appCommandLine": "", + "linuxFxVersion": "DOCKER|appsvc/sample-hello-world:latest" + }, + "serverFarmId": "Microsoft.Web/serverfarms/hostingPlan-[concat('site', uniqueString(resourceGroup().id, deployment().name))]", + "hostingEnvironment": "" + }, + "dependsOn": [ + "[variables('hostingPlanName')]", + "[variables('postgresqlName')]", + "[variables('mysqlName')]" + ] + }, + { + "type": "Microsoft.Web/serverfarms", + "sku": { + "Tier": "Basic", + "Name": "B1" + }, + "kind": "linux", + "name": "hostingPlan-[concat('site', uniqueString(resourceGroup().id, deployment().name))]", + "apiVersion": "2016-09-01", + "location": "[resourceGroup().location]", + "properties": { + "name": "hostingPlan-[concat('site', uniqueString(resourceGroup().id, deployment().name))]", + "workerSizeId": "0", + "reserved": true, + "numberOfWorkers": "1", + "hostingEnvironment": "" + } + }, + { + "condition": false, + "type": "Microsoft.DBforPostgreSQL/servers", + "sku": { + "name": "B_Gen5_1", + "family": "Gen5", + "capacity": "", + "size": "5120", + "tier": "Basic" + }, + "kind": "", + "name": "[variables('postgresqlName')]", + "apiVersion": "2017-12-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "version": "9.6", + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "sslEnforcement": "Disabled" + }, + "resources": [ + { + "condition": false, + "type": "firewallRules", + "apiVersion": "2017-12-01-preview", + "dependsOn": [ + "[variables('postgresqlName')]" + ], + "location": "[resourceGroup().location]", + "name": "AllowAzureIPs", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + }, + { + "condition": false, + "type": "Microsoft.DBforMySQL/servers", + "sku": { + "name": "B_Gen5_2", + "tier": "Basic", + "capacity": 2, + "size": 5120, + "family": "Gen5" + }, + "kind": "", + "name": "[variables('mysqlName')]", + "apiVersion": "2017-12-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "version": "5.7", + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "storageProfile": { + "storageMB": 5120, + "backupRetentionDays": 7, + "geoRedundantBackup": "Disabled" + }, + "sslEnforcement": "Disabled" + }, + "resources": [ + { + "condition": false, + "type": "firewallRules", + "apiVersion": "2017-12-01-preview", + "dependsOn": [ + "[variables('mysqlName')]" + ], + "location": "[resourceGroup().location]", + "name": "AllowAzureIPs", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT440 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT440 new file mode 100644 index 0000000..2073601 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT440 @@ -0,0 +1,191 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB-HANA.json" + ], + "timestamp": 1642962894909, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB-HANA.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT440", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT440", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('dbInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolDB": "[concat(variables('lbPrefix'), 'BackendPoolDB')]", + "loadBalancerFrontendDB": "[concat(variables('lbPrefix'), 'FrontendDB')]", + "lbProbePortDB": "[concat(variables('lbPrefix'), 'ProbePortDB')]", + "lbProbePortInternalDB": "[add(62500, parameters('dbInstanceNumber'))]", + "idleTimeoutInMinutesDB": 30, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendDB')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolDB')]" + } + ], + "loadBalancingRulesResult": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(30015, mul(parameters('dbInstanceNumber'), 100))]", + "backendPort": "[add(30015, mul(parameters('dbInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '3', padLeft(parameters('dbInstanceNumber'), 2, '0'), '15')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(30017, mul(parameters('dbInstanceNumber'), 100))]", + "backendPort": "[add(30017, mul(parameters('dbInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '3', padLeft(parameters('dbInstanceNumber'), 2, '0'), '17')]" + } + ], + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, parameters('dbInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortDB')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT441 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT441 new file mode 100644 index 0000000..53787d9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT441 @@ -0,0 +1,172 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB-SQL.json" + ], + "timestamp": 1642962894938, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB-SQL.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT441", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT441", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('dbInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolDB": "[concat(variables('lbPrefix'), 'BackendPoolDB')]", + "loadBalancerFrontendDB": "[concat(variables('lbPrefix'), 'FrontendDB')]", + "lbProbePortDB": "[concat(variables('lbPrefix'), 'ProbePortDB')]", + "lbProbePortInternalDB": "[add(62500, parameters('dbInstanceNumber'))]", + "idleTimeoutInMinutesDB": 30, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendDB')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolDB')]" + } + ], + "loadBalancingRulesResult": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": 1433, + "backendPort": 1433, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '1433')]" + } + ], + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, parameters('dbInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortDB')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT442 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT442 new file mode 100644 index 0000000..6d016be --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT442 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB0.json" + ], + "timestamp": 1642962894952, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-DB0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT442", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT442", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": [], + "type": "array" + }, + "frontendIPConfigurations": { + "value": [], + "type": "array" + }, + "backendAddressPools": { + "value": [], + "type": "array" + }, + "loadBalancingRules": { + "value": [], + "type": "array" + }, + "probes": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT443 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT443 new file mode 100644 index 0000000..176034e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT443 @@ -0,0 +1,480 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS-Linux.json" + ], + "timestamp": 1642962894997, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS-Linux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT443", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT443", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolERS": "[concat(variables('lbPrefix'), 'BackendPoolERS')]", + "loadBalancerFrontendERS": "[concat(variables('lbPrefix'), 'FrontendERS')]", + "lbProbePortERS": "[concat(variables('lbPrefix'), 'ProbePortERS')]", + "lbProbePortInternalERS": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "idleTimeoutInMinutesERS": 30, + "loadBalancingRulesASCS": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRulesSCS": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "JAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "ABAP+JAVA": "[OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(3300, parameters('ersASCSInstanceNumber'))]\"), ('backendPort', \"[add(3300, parameters('ersASCSInstanceNumber'))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]\")])][OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(3300, parameters('ersSCSInstanceNumber'))]\"), ('backendPort', \"[add(3300, parameters('ersSCSInstanceNumber'))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]\")])]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendERS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolERS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortERS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT444 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT444 new file mode 100644 index 0000000..bee66c2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT444 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS-Windows.json" + ], + "timestamp": 1642962895012, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS-Windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT444", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT444", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[parameters('nicBackAddressPoolsArray')]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[parameters('frontendIPConfigurationsArray')]", + "type": "array" + }, + "backendAddressPools": { + "value": "[parameters('backendAddressPoolsArray')]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[parameters('loadBalancingRulesArray')]", + "type": "array" + }, + "probes": { + "value": "[parameters('probesArray')]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT445 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT445 new file mode 100644 index 0000000..f229654 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT445 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS0.json" + ], + "timestamp": 1642962895021, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-ERS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT445", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT445", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": [], + "type": "array" + }, + "frontendIPConfigurations": { + "value": [], + "type": "array" + }, + "backendAddressPools": { + "value": [], + "type": "array" + }, + "loadBalancingRules": { + "value": [], + "type": "array" + }, + "probes": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT446 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT446 new file mode 100644 index 0000000..707ac17 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT446 @@ -0,0 +1,488 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-SCS.json" + ], + "timestamp": 1642962895056, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT446", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT446", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "ascsInstanceNumber": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "The instance number of the ASCS." + } + }, + "scsInstanceNumber": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance number of the SCS." + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolxSCS": "[concat(variables('lbPrefix'), 'BackendPoolxSCS')]", + "loadBalancerFrontendxSCS": "[concat(variables('lbPrefix'), 'FrontendxSCS')]", + "lbProbePortxSCS": "[concat(variables('lbPrefix'), 'ProbePortxSCS')]", + "lbProbePortInternalxSCS": "[add(62000, parameters('ascsInstanceNumber'))]", + "idleTimeoutInMinutesxSCS": 30, + "lbRulesFileShare": { + "Windows": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 445, + "backendPort": 445, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '445')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 5985, + "backendPort": 5985, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5985')]" + } + ] + }, + "lbRulesABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '36', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '16')]" + } + ], + "lbRulesJAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'))]", + "JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesJAVA'))]", + "ABAP+JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'), variables('lbRulesJAVA'))]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendxSCS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolxSCS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62000, parameters('ascsInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortxSCS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT447 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT447 new file mode 100644 index 0000000..fa84e9e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT447 @@ -0,0 +1,175 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-SCS0.json" + ], + "timestamp": 1642962895068, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/lb-SCS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT447", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT447", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + } + }, + "variables": { + "lbPrefix": "lb", + "lbrulePrefix": "lbRule", + "loadBalancerFrontendNFS": "lbFrontendNFS", + "lbProbePortNFS": "lbProbePortNFS", + "backendPoolNFS": "lbBackendPoolNFS", + "lbProbePortInternalNFS": 61000, + "idleTimeoutInMinutesNFS": 30, + "nicBackAddressPools": { + "Linux": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + } + ], + "Windows": [] + }, + "frontendIPConfigurations": { + "Linux": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "lbFrontendNFS" + } + ], + "Windows": [] + }, + "backendAddressPools": { + "Linux": [ + { + "name": "lbBackendPoolNFS" + } + ], + "Windows": [] + }, + "loadBalancingRules": { + "Linux": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/frontendIpConfigurations/lbFrontendNFS" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/probes/lbProbePortNFS" + }, + "protocol": "Tcp", + "frontendPort": 2049, + "backendPort": 2049, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbRule2049T" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/frontendIpConfigurations/lbFrontendNFS" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/probes/lbProbePortNFS" + }, + "protocol": "Udp", + "frontendPort": 2049, + "backendPort": 2049, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbRule2049U" + } + ], + "Windows": [] + }, + "probes": { + "Linux": [ + { + "properties": { + "protocol": "Tcp", + "port": 61000, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "lbProbePortNFS" + } + ], + "Windows": [] + }, + "nicBackAddressPoolsResult": "(nicBackAddressPools)[parameters(osType)]", + "frontendIPConfigurationsResult": "(frontendIPConfigurations)[parameters(osType)]", + "backendAddressPoolsResult": "(backendAddressPools)[parameters(osType)]", + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(osType)]", + "probesResult": "(probes)[parameters(osType)]" + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[variables('nicBackAddressPoolsResult')]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[variables('frontendIPConfigurationsResult')]", + "type": "array" + }, + "backendAddressPools": { + "value": "[variables('backendAddressPoolsResult')]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[variables('loadBalancingRulesResult')]", + "type": "array" + }, + "probes": { + "value": "[variables('probesResult')]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT448 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT448 new file mode 100644 index 0000000..fe3160f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT448 @@ -0,0 +1,357 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/loadbalancer.json" + ], + "timestamp": 1642962895073, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT448", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT448", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "sapSystemCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of SAP systems for which the load balancer should be configured" + } + }, + "stackType": { + "type": "string", + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "defaultValue": "Windows", + "metadata": { + "description": "The type of the Operating System" + } + }, + "createXSCS": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the load balancer should be configured for one or more ASCS/SCS." + } + }, + "createDB": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the load balancer should be configured for one or more databases." + } + }, + "dbType": { + "type": "string", + "defaultValue": "SQL", + "metadata": { + "description": "The type of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "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", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "ascsInstanceNumber": 0, + "scsInstanceNumber": 1, + "ersASCSInstanceNumber": 2, + "ersSCSInstanceNumber": 3, + "dbInstanceNumber": 3, + "nestedDeploymentNameLBSCS": "loadBalancerNameLBSCS", + "nestedDeploymentNameLBERS": "loadBalancerNameLBERS", + "nestedDeploymentNameLBDB": "loadBalancerNameLBDB", + "scsTemplates": { + "true": "lb-SCS.json", + "false": "lb-SCS0.json" + }, + "ersTemplates": { + "true": "lb-ERS-Windows.json", + "false": "lb-ERS0.json" + }, + "dbTemplates": { + "true": "lb-DB-SQL.json", + "false": "lb-DB0.json" + }, + "scsTemplate": "(scsTemplates)[string(parameters(createXSCS))]", + "ersTemplate": "(ersTemplates)[string(parameters(createXSCS))]", + "dbTemplate": "(dbTemplates)[string(parameters(createDB))]" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "name": "loadBalancerNameLBSCS0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/lb-SCS0.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "osType": { + "value": "Windows" + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2021-01-01", + "name": "[concat(variables('nestedDeploymentNameLBSCS'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments//loadBalancerNameLBSCS0" + ], + "copy": { + "name": "scsLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/', variables('scsTemplate'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ascsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ascsInstanceNumber'))]" + }, + "scsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('scsInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBSCS'), copyIndex()))).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBSCS'), copyIndex()))).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBSCS'), copyIndex()))).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBSCS'), copyIndex()))).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBSCS'), copyIndex()))).outputs.probes.value]" + } + } + } + }, + { + "apiVersion": "2021-01-01", + "name": "loadBalancerNameLBERS0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/lb-ERS0.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": {} + } + }, + { + "apiVersion": "2021-01-01", + "name": "[concat(variables('nestedDeploymentNameLBERS'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments//loadBalancerNameLBERS0" + ], + "copy": { + "name": "ersLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/', variables('ersTemplate'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "ersASCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersASCSInstanceNumber'))]" + }, + "ersSCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersSCSInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBERS'), copyIndex()))).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBERS'), copyIndex()))).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBERS'), copyIndex()))).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBERS'), copyIndex()))).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBERS'), copyIndex()))).outputs.probes.value]" + } + } + } + }, + { + "apiVersion": "2021-01-01", + "name": "loadBalancerNameLBDB0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/lb-DB0.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": {} + } + }, + { + "apiVersion": "2021-01-01", + "name": "[concat(variables('nestedDeploymentNameLBDB'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments//loadBalancerNameLBDB0" + ], + "copy": { + "name": "dbLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "dbInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('dbInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBDB'), copyIndex()))).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBDB'), copyIndex()))).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBDB'), copyIndex()))).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBDB'), copyIndex()))).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameLBDB'), copyIndex()))).outputs.probes.value]" + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancerName", + "apiVersion": "2015-06-15", + "dependsOn": [ + "scsLoop", + "ersLoop", + "dbLoop" + ], + "location": "location", + "properties": { + "frontendIPConfigurations": "[concat(reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount')))).outputs.frontendIPConfigurations.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount')))).outputs.frontendIPConfigurations.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount')))).outputs.frontendIPConfigurations.value)]", + "backendAddressPools": "[concat(reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount')))).outputs.backendAddressPools.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount')))).outputs.backendAddressPools.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount')))).outputs.backendAddressPools.value)]", + "loadBalancingRules": "[concat(reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount')))).outputs.loadBalancingRules.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount')))).outputs.loadBalancingRules.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount')))).outputs.loadBalancingRules.value)]", + "probes": "[concat(reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount')))).outputs.probes.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount')))).outputs.probes.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount')))).outputs.probes.value)]" + } + } + ], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount')))).outputs.nicBackAddressPools.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount')))).outputs.nicBackAddressPools.value, reference(resourceId('Microsoft.Resources/deployments', concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount')))).outputs.nicBackAddressPools.value)]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT449 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT449 new file mode 100644 index 0000000..9c0ae70 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT449 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newnsg.json" + ], + "timestamp": 1642962895085, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT449", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT449", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the network security group." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[parameters(osType)]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgName", + "apiVersion": "2021-02-01", + "location": "location", + "properties": { + "securityRules": "(osSecurityRules)[parameters(osType)]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT45 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT45 new file mode 100644 index 0000000..8ec0326 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT45 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/availabilitySetsResource.json" + ], + "timestamp": 1642962883762, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/availabilitySetsResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT45", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT45", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "computeSettings": { + "type": "object" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "sku": { + "name": "Aligned" + }, + "name": "computeSettings", + "apiVersion": "computeSettings", + "location": "computeSettings", + "properties": { + "platformUpdateDomainCount": 3, + "platformFaultDomainCount": 3 + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "sku": { + "name": "Aligned" + }, + "name": "computeSettings", + "apiVersion": "computeSettings", + "location": "computeSettings", + "properties": { + "platformUpdateDomainCount": 3, + "platformFaultDomainCount": 3 + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT450 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT450 new file mode 100644 index 0000000..e97a14e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT450 @@ -0,0 +1,65 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newpip.json" + ], + "timestamp": 1642962895096, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT450", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT450", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIpName": { + "type": "string", + "metadata": { + "description": "Name of the public IP address." + } + }, + "publicIPAddressType": { + "type": "string", + "metadata": { + "description": "Type of the public IP address, static or dynamic" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIpName", + "apiVersion": "2021-02-01", + "location": "location", + "properties": { + "publicIPAllocationMethod": "publicIPAddressType" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT451 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT451 new file mode 100644 index 0000000..6bacbff --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT451 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newvnetnsg.json" + ], + "timestamp": 1642962895125, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT451", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT451", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network." + } + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network." + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Subnet." + } + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network Subnet." + } + }, + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the Network Security Group." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnetName", + "apiVersion": "2021-02-01", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT452 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT452 new file mode 100644 index 0000000..2c3fd01 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT452 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/nic-config.json" + ], + "timestamp": 1642962895162, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT452", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT452", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network subnet." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the public ip address." + } + }, + "nsgName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the network security group." + } + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + } + }, + "variables": { + "nicConfigurations": { + "true": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/ parameters('vnetName')/subnets/ parameters('subnetName')" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ parameters('publicIpName')" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ parameters('nsgName')" + } + }, + "false": { + "subnet": { + "id": "" + } + } + }, + "selectedConfiguration": "(nicConfigurations)[string(equals(length(parameters(subnetId)), 0))]" + }, + "resources": [], + "outputs": { + "selectedConfiguration": { + "value": "[variables('selectedConfiguration')]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT453 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT453 new file mode 100644 index 0000000..17e50e3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT453 @@ -0,0 +1,160 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/os-disk-parts-md.json" + ], + "timestamp": 1642962895189, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT453", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT453", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageSku": { + "type": "string", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the image that should be used to deploy the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "metadata": { + "description": "Offer of the image that should be used to deploy the virtual machine." + } + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "storageType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage type that should be used for the virtual machine." + } + }, + "managedDiskId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Id of the managed disk." + } + } + }, + "variables": { + "osDiskCaching": "ReadWrite", + "osDiskParts": { + "image": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "latest" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "userImage": { + "imageReference": { + "id": "" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "osdisk": { + "osDisk": { + "name": "vmName-osdisk", + "osType": "osType", + "caching": "ReadWrite", + "createOption": "Attach", + "managedDisk": { + "id": "" + } + } + } + } + }, + "resources": [], + "outputs": { + "imageReference": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].imageReference]", + "type": "object" + }, + "osDisk": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].osDisk]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT454 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT454 new file mode 100644 index 0000000..c76f6a8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT454 @@ -0,0 +1,262 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/server-md.json" + ], + "timestamp": 1642962895203, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT454", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT454", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptArgs": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetObj": { + "type": "object", + "metadata": { + "description": "Availability set." + } + }, + "useAVSet": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Availability set." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "dataDisksObj": { + "type": "object", + "metadata": { + "description": "Information about the data disks that the VM should have." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "URL to github templates." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "availableAVSetObj": { + "true": "avSetObj" + }, + "internalAVSetObj": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0" + } + }, + "cseExtPublisher": "(csExtension)[parameters(osType)].Publisher", + "cseExtName": "(csExtension)[parameters(osType)].Name", + "cseExtVersion": "(csExtension)[parameters(osType)].Version", + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2020-12-01", + "location": "location", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/(csExtension)[parameters(osType)].Name", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "(csExtension)[parameters(osType)].Publisher", + "type": "(csExtension)[parameters(osType)].Name", + "typeHandlerVersion": "(csExtension)[parameters(osType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall csExtensionscriptArgs" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT455 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT455 new file mode 100644 index 0000000..2ab30f0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT455 @@ -0,0 +1,1056 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962895211, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-converged-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT455", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT455", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "maxLength": 3, + "minLength": 3, + "metadata": { + "description": "SAP System ID." + }, + "value": "DEV" + }, + "stackType": { + "type": "string", + "allowedValues": [ + "ABAP", + "JAVA", + "ABAP+JAVA" + ], + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "SLES 12 BYOS", + "RHEL 7.2", + "Oracle Linux 7.2" + ], + "defaultValue": "Windows Server 2012 R2 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "dbType": { + "type": "string", + "allowedValues": [ + "SQL", + "HANA" + ], + "defaultValue": "SQL", + "metadata": { + "description": "The database type you want to use on the cluster. This information is used to create the load balancer" + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 30.000 SAPS", + "Medium < 70.000 SAPS", + "Large < 180.000 SAPS", + "X-Large < 250.000 SAPS" + ], + "defaultValue": "Small < 30.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "systemAvailability": { + "type": "string", + "allowedValues": [ + "HA", + "Not HA" + ], + "defaultValue": "Not HA", + "metadata": { + "description": "Determines whether this is a high available deployment or not. A HA deployment contains multiple instances of single point of failures." + }, + "value": "HA" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UINIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use. Leave blank if you want to create a new virtual network and subnet" + }, + "value": "" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "SLES 12": { + "sku": "12-SP1", + "offer": "SLES-SAP", + "publisher": "SUSE", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + }, + "SLES 12 BYOS": { + "sku": "12-SP1", + "offer": "SLES-SAP-BYOS", + "publisher": "SUSE", + "OSType": "Linux", + "version": "latest", + "UsePlan": false + }, + "RHEL 7.2": { + "sku": "7.2", + "offer": "RHEL", + "publisher": "RedHat", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + }, + "Oracle Linux 7.2": { + "sku": "7.2", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + } + }, + "imageSku": "(images)[parameters(osType)].sku", + "imagePublisher": "(images)[parameters(osType)].publisher", + "imageOffer": "(images)[parameters(osType)].offer", + "imageVersion": "(images)[parameters(osType)].version", + "internalOSType": "(images)[parameters(osType)].OSType", + "csExtension": { + "Windows": { + "script": "[uri(parameters('_artifactsLocation'), concat('shared/noop.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File shared/noop.ps1" + }, + "Linux": { + "script": "[uri(parameters('_artifactsLocation'), concat('shared/noop.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh noop.sh" + } + }, + "vmSizes": { + "Demo": { + "Not HA": { + "clserversize": "Standard_D4s_v3", + "clservercount": 1, + "clserverdisks": [ + { + "size": 128 + } + ], + "diserversize": "Standard_D2s_v3", + "diservercount": 1 + }, + "HA": { + "clserversize": "Standard_D4s_v3", + "clservercount": 2, + "clserverdisks": [ + { + "size": 128 + } + ], + "diserversize": "Standard_D2s_v3", + "diservercount": 2 + } + }, + "Small < 30.000 SAPS": { + "Not HA": { + "clserversize": "Standard_D8s_v3", + "clservercount": 1, + "clserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D8s_v3", + "diservercount": 1 + }, + "HA": { + "clserversize": "Standard_D8s_v3", + "clservercount": 2, + "clserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D8s_v3", + "diservercount": 2 + } + }, + "Medium < 70.000 SAPS": { + "Not HA": { + "clserversize": "Standard_D16s_v3", + "clservercount": 1, + "clserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D8s_v3", + "diservercount": 4 + }, + "HA": { + "clserversize": "Standard_D16s_v3", + "clservercount": 2, + "clserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D8s_v3", + "diservercount": 4 + } + }, + "Large < 180.000 SAPS": { + "Not HA": { + "clserversize": "Standard_GS4", + "clservercount": 1, + "clserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D16s_v3", + "diservercount": 6 + }, + "HA": { + "clserversize": "Standard_GS4", + "clservercount": 2, + "clserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D16s_v3", + "diservercount": 6 + } + }, + "X-Large < 250.000 SAPS": { + "Not HA": { + "clserversize": "Standard_GS5", + "clservercount": 1, + "clserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "diserversize": "Standard_D16s_v3", + "diservercount": 10 + }, + "HA": { + "clserversize": "Standard_GS5", + "clservercount": 2, + "clserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "diserversize": "Standard_D16s_v3", + "diservercount": 10 + } + } + }, + "clvmCount": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount", + "clvmDataDisks": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clserverdisks", + "divmCount": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vmName": "[toLower(parameters('sapSystemId'))]", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "publicIPAddressType": "Dynamic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "nestedDeploymentName": "nestedTemplate", + "nestedDeploymentNameVNet": "nestedTemplatevnet", + "nestedDeploymentNamePIP": "nestedTemplatepip", + "nestedDeploymentNameCL": "nestedTemplatecl", + "nestedDeploymentNameDI": "nestedTemplatedi", + "nestedDeploymentNameProf": "nestedTemplateprof", + "nestedDeploymentNameNIC": "nestedTemplatenic", + "nestedDeploymentNameNICCL": "nestedTemplateniccl", + "nestedDeploymentNameNICDI": "nestedTemplatenicdi", + "nestedDeploymentNameLBCL": "nestedTemplatelbcl", + "publicIpNameCL": "[toLower(parameters('sapSystemId'))]-pip-cl", + "avSetNameCL": "[toLower(parameters('sapSystemId'))]-avset-cl", + "nestedDeploymentNameNSG": "nestedTemplateclnsg", + "nsgNameCL": "[toLower(parameters('sapSystemId'))]-nsg", + "loadBalancerNameCL": "[toLower(parameters('sapSystemId'))]-lb-cl", + "vmNameCL": "[toLower(parameters('sapSystemId'))]-cl", + "nicNameCL": "[toLower(parameters('sapSystemId'))]-nic-cl", + "avSetNameDI": "[toLower(parameters('sapSystemId'))]-avset-di", + "nicNameDI": "[toLower(parameters('sapSystemId'))]-nic-di", + "vmNameDI": "[toLower(parameters('sapSystemId'))]-di", + "osDiskType": "image" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "name": "nestedTemplateclnsg", + "type": "Microsoft.Resources/deployments", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/newnsg.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg" + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedDeploymentNameVnet", + "type": "Microsoft.Resources/deployments", + "condition": false, + "dependsOn": [ + "Microsoft.Resources/deployments//nestedTemplateclnsg" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/newvnetnsg.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "Subnet" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-cl", + "apiVersion": "2016-04-30-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 20 + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedTemplatepip-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "pipLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/newpip.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip-cl-copyIndex()" + }, + "publicIPAddressType": { + "value": "Dynamic" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedTemplatelbcl", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments//nestedDeploymentNameVnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/loadbalancer.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "[toLower(parameters('sapSystemId'))]-lb-cl" + }, + "sapSystemCount": { + "value": 1 + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "createXSCS": { + "value": true + }, + "createDB": { + "value": true + }, + "dbType": { + "value": "SQL" + }, + "subnetId": { + "value": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedTemplateniccl-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "nicConfigCLLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/nic-config.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip-cl-copyIndex()" + }, + "nsgName": { + "value": "" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-cl-copyIndex()", + "apiVersion": "2017-06-01", + "copy": { + "name": "nicCLLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "dependsOn": [ + "pipLoop", + "nicConfigCLLoop", + "Microsoft.Resources/deployments//nestedDeploymentNameVnet", + "Microsoft.Resources/deployments//nestedTemplatelbcl" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameNICCL'), '-', copyIndex()))).outputs.selectedConfiguration.value.publicIPAddress]", + "subnet": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameNICCL'), '-', copyIndex()))).outputs.selectedConfiguration.value.subnet]", + "loadBalancerBackendAddressPools": "[reference(variables('nestedDeploymentNameLBCL')).outputs.nicBackAddressPools.value]" + } + } + ] + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedTemplateprof-cl-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "osDiskPartsCLLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/os-disk-parts-md.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "(images)[parameters(osType)].sku" + }, + "imagePublisher": { + "value": "(images)[parameters(osType)].publisher" + }, + "imageOffer": { + "value": "(images)[parameters(osType)].offer" + }, + "imageVersion": { + "value": "(images)[parameters(osType)].version" + }, + "osDiskType": { + "value": "image" + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-cl-copyIndex()" + }, + "storageType": { + "value": "Premium_LRS" + } + } + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedTemplatecl-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "vmCLLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "dependsOn": [ + "nicCLLoop", + "Microsoft.Compute/availabilitySets//[toLower(parameters('sapSystemId'))]-avset-cl", + "osDiskPartsCLLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/server-md.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameProf'), '-cl-', copyIndex()))).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameProf'), '-cl-', copyIndex()))).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "image" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-cl-copyIndex()" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clserversize" + }, + "adminUsername": { + "value": "GEN-UINIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "csExtensionScript": { + "value": "(csExtension)[variables(internalOSType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[variables(internalOSType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "" + }, + "avSetObj": { + "value": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-cl" + } + }, + "useAVSet": { + "value": true + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic-cl-copyIndex()" + }, + "dataDisksObj": { + "value": { + "copy": [ + { + "name": "dataDisks", + "count": 26, + "input": { + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty", + "diskSizeGB": "(clvmDataDisks)[copyIndex(dataDisks)].size" + } + } + ] + } + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-di", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 20 + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedTemplatenicdi-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "nicConfigDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/nic-config.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "" + }, + "nsgName": { + "value": "" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-di-copyindex()", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Resources/deployments//nestedDeploymentNameVnet", + "nicConfigDILoop" + ], + "copy": { + "name": "nicDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameNICDI'), '-', copyIndex()))).outputs.selectedConfiguration.value.subnet]" + } + } + ] + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedTemplateprof-di-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "osDiskPartsDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/os-disk-parts-md.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "(images)[parameters(osType)].sku" + }, + "imagePublisher": { + "value": "(images)[parameters(osType)].publisher" + }, + "imageOffer": { + "value": "(images)[parameters(osType)].offer" + }, + "imageVersion": { + "value": "(images)[parameters(osType)].version" + }, + "osDiskType": { + "value": "image" + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-di-copyIndex()" + }, + "storageType": { + "value": "Premium_LRS" + } + } + } + }, + { + "apiVersion": "2021-01-01", + "name": "nestedTemplatedi-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "vmDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "dependsOn": [ + "nicDILoop", + "Microsoft.Compute/availabilitySets//[toLower(parameters('sapSystemId'))]-avset-di", + "osDiskPartsDILoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared/server-md.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameProf'), '-di-', copyIndex()))).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(resourceId('Microsoft.Resources/deployments',concat(variables('nestedDeploymentNameProf'), '-di-', copyIndex()))).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "image" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-di-copyIndex()" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diserversize" + }, + "adminUsername": { + "value": "GEN-UINIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "csExtensionScript": { + "value": "(csExtension)[variables(internalOSType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[variables(internalOSType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "" + }, + "avSetObj": { + "value": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-di" + } + }, + "useAVSet": { + "value": true + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic-di-copyIndex()" + }, + "dataDisksObj": { + "value": { + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "lun": 0, + "createOption": "Empty", + "diskSizeGB": 128 + } + } + ] + } + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT456 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT456 new file mode 100644 index 0000000..4ef67cd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT456 @@ -0,0 +1,2192 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962895223, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT456", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT456", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "maxLength": 3, + "minLength": 3, + "defaultValue": "DEQ", + "metadata": { + "description": "SAP System ID." + } + }, + "stackType": { + "type": "string", + "allowedValues": [ + "ABAP", + "JAVA", + "ABAP+JAVA" + ], + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "RHEL 7", + "Oracle Linux 7" + ], + "defaultValue": "Windows Server 2016 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "dbtype": { + "type": "string", + "allowedValues": [ + "SQL", + "HANA" + ], + "defaultValue": "SQL", + "metadata": { + "description": "The type of the database" + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 30.000 SAPS", + "Medium < 70.000 SAPS", + "Large < 180.000 SAPS", + "X-Large < 250.000 SAPS" + ], + "defaultValue": "Small < 30.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "systemAvailability": { + "type": "string", + "allowedValues": [ + "HA", + "Not HA" + ], + "defaultValue": "Not HA", + "metadata": { + "description": "Determines whether this is a high available deployment or not. A HA deployment contains multiple instances of single point of failures." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "availabilityZones": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Zone numbers. Enter the comma seperated zones you want use e.g. 1,3. In an HA case, the first two will be used for the cluster VMs." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "azArray": "[split(parameters('availabilityZones'), ',')]", + "azArrayLength": 20, + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows" + }, + "SLES 12": { + "sku": "12-SP4", + "offer": "SLES-SAP", + "publisher": "SUSE", + "OSType": "Linux" + }, + "RHEL 7": { + "sku": "7.5", + "offer": "RHEL-SAP", + "publisher": "RedHat", + "OSType": "Linux" + }, + "Oracle Linux 7": { + "sku": "7.5", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "OSType": "Linux" + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('diskConfig.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File diskConfig.ps1" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('diskConfig.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh diskConfig.sh" + } + }, + "sizes": { + "Demo": { + "HANA": { + "dbvmSize": "Standard_E8s_v3", + "ascsVMSize": "Standard_D2s_v3", + "diVMSize": "Standard_D2s_v3", + "diVMCount": 1, + "dbdisks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1#2,3#4#5#6,7' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": false + }, + "SQL": { + "dbvmSize": "Standard_E4s_v3", + "ascsVMSize": "Standard_D2s_v3", + "diVMSize": "Standard_D2s_v3", + "diVMCount": 1, + "dbdisks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0\" -names \"data\" -paths \"C:\\sql\\data,C:\\sql\\log\" -sizes \"70,100\"" + }, + "useFastNetwork": false + }, + "other": { + "dbvmSize": "Standard_E4s_v3", + "ascsVMSize": "Standard_D2s_v3", + "diVMSize": "Standard_D2s_v3", + "diVMCount": 1, + "dbdisks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0' -names 'datalog' -paths '/db/data,/db/log' -sizes '70,100'", + "Windows": "-luns \"0\" -names \"data\" -paths \"C:\\db\\data,C:\\db\\log\" -sizes \"70,100\"" + }, + "useFastNetwork": false + } + }, + "Small < 30.000 SAPS": { + "HANA": { + "dbvmSize": "Standard_E32s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E8s_v3", + "diVMCount": 1, + "dbdisks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3#4#5' -names 'datalog#shared#usrsap#backup' -paths '/hana/data,/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '70,100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "dbvmSize": "Standard_E8s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E8s_v3", + "diVMCount": 1, + "dbdisks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3#4\" -names \"data#log\" -paths \"C:\\sql\\data#C:\\sql\\log\" -sizes \"100#100\"" + }, + "useFastNetwork": true + }, + "other": { + "dbvmSize": "Standard_E8s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E8s_v3", + "diVMCount": 1, + "dbdisks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2,3,4' -names 'datalog' -paths '/db/data,/db/log' -sizes '70,100'", + "Windows": "-luns \"0,1,2,3#4\" -names \"data#log\" -paths \"C:\\sql\\data#C:\\sql\\log\" -sizes \"100#100\"" + }, + "useFastNetwork": true + } + }, + "Medium < 70.000 SAPS": { + "HANA": { + "dbvmSize": "Standard_E64s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E8s_v3", + "diVMCount": 4, + "dbdisks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3#4#5' -names 'datalog#shared#usrsap#backup' -paths '/hana/data,/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '70,100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "dbvmSize": "Standard_E16s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E8s_v3", + "diVMCount": 4, + "dbdisks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4,5,6#7\" -names \"data#log\" -paths \"C:\\sql\\data#C:\\sql\\log\" -sizes \"100#100\"" + }, + "useFastNetwork": true + }, + "other": { + "dbvmSize": "Standard_E16s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E8s_v3", + "diVMCount": 4, + "dbdisks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2,3,4,5,6,7' -names 'datalog' -paths '/db/data,/db/log' -sizes '70,100'", + "Windows": "-luns \"0,1,2,3,4,5,6#7\" -names \"data#log\" -paths \"C:\\db\\data#C:\\db\\log\" -sizes \"100#100\"" + }, + "useFastNetwork": true + } + }, + "Large < 180.000 SAPS": { + "HANA": { + "dbvmSize": "Standard_M64s", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E16s_v3", + "diVMCount": 6, + "dbdisks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 8, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 9, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2,3#4,5#6#7#8,9' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "dbvmSize": "Standard_E32s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E16s_v3", + "diVMCount": 6, + "dbdisks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4#5\" -names \"data#log\" -paths \"C:\\sql\\data#C:\\sql\\log\" -sizes \"100#100\"" + }, + "useFastNetwork": true + }, + "other": { + "dbvmSize": "Standard_E32s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E16s_v3", + "diVMCount": 6, + "dbdisks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2,3,4,5' -names 'datalog' -paths '/db/data,/db/log' -sizes '70,100'", + "Windows": "-luns \"0,1,2,3,4#5\" -names \"data#log\" -paths \"C:\\db\\data#C:\\db\\log\" -sizes \"100#100\"" + }, + "useFastNetwork": true + } + }, + "X-Large < 250.000 SAPS": { + "HANA": { + "dbvmSize": "Standard_M128s", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E16s_v3", + "diVMCount": 10, + "dbdisks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 2048 + }, + { + "lun": 8, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 2048 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3,4#5#6#7,8' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "dbvmSize": "Standard_E64s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E16s_v3", + "diVMCount": 10, + "dbdisks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4,5,6#7\" -names \"data#log\" -paths \"C:\\sql\\data#C:\\sql\\log\" -sizes \"100#100\"" + }, + "useFastNetwork": true + }, + "other": { + "dbvmSize": "Standard_E64s_v3", + "ascsVMSize": "Standard_E2s_v3", + "diVMSize": "Standard_E16s_v3", + "diVMCount": 10, + "dbdisks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2,3,4,5,6,7' -names 'datalog' -paths '/db/data,/db/log' -sizes '70,100'", + "Windows": "-luns \"0,1,2,3,4,5,6#7\" -names \"data#log\" -paths \"C:\\db\\data#C:\\db\\log\" -sizes \"100#100\"" + }, + "useFastNetwork": true + } + } + }, + "dbvmCount": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]", + "ascsvmCount": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]", + "divmCountNonHA": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].diVMCount", + "divmCount": "[if(equals(parameters('systemAvailability'), 'HA'), max(2, variables('divmCountNonHA')), variables('divmCountNonHA'))]", + "dbVMSize": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].dbvmSize", + "ascsVMSize": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].ascsVMSize", + "diVMSize": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].diVMSize", + "dbDisks": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].dbdisks", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vmName": "[toLower(parameters('sapSystemId'))]", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "publicIpNameASCS": "[toLower(parameters('sapSystemId'))]-pip-ascs", + "avSetNameASCS": "[toLower(parameters('sapSystemId'))]-avset-ascs", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg", + "loadBalancerNameASCS": "[toLower(parameters('sapSystemId'))]-lb-ascs", + "loadBalancerNamePubASCS": "[toLower(parameters('sapSystemId'))]-lb-pub-ascs", + "vmNameASCS": "[toLower(parameters('sapSystemId'))]-ascs", + "nicNameASCS": "[toLower(parameters('sapSystemId'))]-nic-ascs", + "avSetNameDB": "[toLower(parameters('sapSystemId'))]-avset-db", + "loadBalancerNameDB": "[toLower(parameters('sapSystemId'))]-lb-db", + "loadBalancerNamePubDB": "[toLower(parameters('sapSystemId'))]-lb-pub-db", + "nicNameDB": "[toLower(parameters('sapSystemId'))]-nic-db", + "vmNameDB": "[toLower(parameters('sapSystemId'))]-db", + "avSetNameDI": "[toLower(parameters('sapSystemId'))]-avset-di", + "nicNameDI": "[toLower(parameters('sapSystemId'))]-nic-di", + "vmNameDI": "[toLower(parameters('sapSystemId'))]-di", + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]", + "scriptArgumentsASCSDI": { + "Linux": "-luns '0' -names 'usrsap' -paths '/usr/sap' -sizes '100'", + "Windows": "-luns \"0\" -names \"sap\" -paths \"S\" -sizes \"100\"" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "frontendHANADB": "frontendhdb", + "frontendSQLDB": "frontendsql", + "frontendSQLCL": "frontendsqlcl", + "frontendASCS": "frontendascs", + "frontendAERS": "frontendaers", + "frontendSCS": "frontendscs", + "frontendERS": "frontenders", + "frontendASCSCL": "frontendascscl", + "frontendPubASCS": "frontendpubascs", + "frontendPubDB": "frontendpubdb", + "backendPoolHANADB": "backendhdb", + "backendPoolSQLDB": "backendsql", + "backendPoolSQLCL": "backendsqlcl", + "backendPoolASCS": "backendascs", + "backendPoolAERS": "backendaers", + "backendPoolSCS": "backendscs", + "backendPoolERS": "backenders", + "backendPoolASCSCL": "backendascscl", + "backendPoolPubASCS": "backendpubascs", + "backendPoolPubDB": "backendpubdb", + "probePortHANADB": "probehdb", + "probePortSQLDB": "probesql", + "probePortSQLCL": "probesqlcl", + "probePortASCS": "probeascs", + "probePortAERS": "probeaers", + "probePortSCS": "probescs", + "probePortERS": "probeers", + "probePortASCSCL": "probeascscl", + "dbInstanceNumberHANA": 4, + "ascsInstanceNumber": 0, + "scsInstanceNumber": 1, + "aersInstanceNumber": 2, + "ersInstanceNumber": 3, + "probePortInternalHANADB": "[add(62500, variables('dbInstanceNumberHANA'))]", + "probePortInternalSQLDB": 62500, + "probePortInternalSQLCL": 63500, + "probePortInternalASCS": "[add(62000, variables('ascsInstanceNumber'))]", + "probePortInternalAERS": "[add(62100, variables('aersInstanceNumber'))]", + "probePortInternalSCS": "[add(62000, variables('scsInstanceNumber'))]", + "probePortInternalERS": "[add(62100, variables('ersInstanceNumber'))]", + "probePortInternalASCSCL": 63500, + "lbRulePrefixHANADB": "[concat('lb', padLeft(variables('dbInstanceNumberHANA'), 2, '0'), 'Rule')]", + "lbRulePrefixSQLDB": "lbsqlRule", + "lbRulePrefixSQLCL": "lbsqlclRule", + "lbRulePrefixASCS": "lbascsRule", + "lbRulePrefixAERS": "lbaersRule", + "lbRulePrefixSCS": "lbscsRule", + "lbRulePrefixERS": "lbersRule", + "lbRulePrefixASCSCL": "lbascsclRule", + "idleTimeoutInMinutes": 30, + "publicIpNameLBDB": "[toLower(parameters('sapSystemId'))]-pip-lb-db", + "publicIpNameLBASCS": "[toLower(parameters('sapSystemId'))]-pip-lb-ascs", + "pipIdDB": "Microsoft.Network/publicIPAddresses/[toLower(parameters('sapSystemId'))]-pip-lb-db", + "pipIdASCS": "Microsoft.Network/publicIPAddresses/[toLower(parameters('sapSystemId'))]-pip-lb-ascs", + "lbFrontendConfigsDB": { + "HANA": { + "Linux": [ + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontendhdb" + } + ] + }, + "SQL": { + "Windows": [ + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontendsql" + }, + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontendsqlcl" + } + ] + } + }, + "lbFrontendConfigsABAP": [ + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontendascs" + }, + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontendaers" + } + ], + "lbFrontendConfigJAVA": [ + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontendscs" + }, + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontenders" + } + ], + "lbFrontendConfigIND": [ + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontendascscl" + } + ], + "lbFrontendConfigXSCS": { + "ABAP": "[OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendASCSCL')]\")])][OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendASCS')]\")]), OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendAERS')]\")])]", + "JAVA": "[OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendASCSCL')]\")])][OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendSCS')]\")]), OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendERS')]\")])]", + "ABAP+JAVA": "[OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendASCSCL')]\")])][OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendASCS')]\")]), OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendAERS')]\")])][OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendSCS')]\")]), OrderedDict([('properties', OrderedDict([('subnet', OrderedDict([('id', \"[variables('selectedSubnetId')]\")])), ('privateIPAllocationMethod', 'Dynamic')])), ('name', \"[variables('frontendERS')]\")])]" + }, + "lbBackendPoolsDB": { + "HANA": { + "Linux": [ + { + "name": "backendhdb" + } + ] + }, + "SQL": { + "Windows": [ + { + "name": "backendsql" + }, + { + "name": "backendsqlcl" + } + ] + } + }, + "lbBackendPoolsABAP": [ + { + "name": "backendascs" + }, + { + "name": "backendaers" + } + ], + "lbBackendPoolJAVA": [ + { + "name": "backendscs" + }, + { + "name": "backenders" + } + ], + "lbBackendPoolIND": [ + { + "name": "backendascscl" + } + ], + "lbBackendPoolXSCS": { + "ABAP": "[OrderedDict([('name', \"[variables('backendPoolASCSCL')]\")])][OrderedDict([('name', \"[variables('backendPoolASCS')]\")]), OrderedDict([('name', \"[variables('backendPoolAERS')]\")])]", + "JAVA": "[OrderedDict([('name', \"[variables('backendPoolASCSCL')]\")])][OrderedDict([('name', \"[variables('backendPoolSCS')]\")]), OrderedDict([('name', \"[variables('backendPoolERS')]\")])]", + "ABAP+JAVA": "[OrderedDict([('name', \"[variables('backendPoolASCSCL')]\")])][OrderedDict([('name', \"[variables('backendPoolASCS')]\")]), OrderedDict([('name', \"[variables('backendPoolAERS')]\")])][OrderedDict([('name', \"[variables('backendPoolSCS')]\")]), OrderedDict([('name', \"[variables('backendPoolERS')]\")])]" + }, + "lbRulesDB": { + "HANA": { + "Linux": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontendhdb" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backendhdb" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probehdb" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbRulePrefixHANADB'), padLeft(variables('dbInstanceNumberHANA'), 2, '0'), 'all')]" + } + ] + }, + "SQL": { + "Windows": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontendsql" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backendsql" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probesql" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbsqlRuleall" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontendsqlcl" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backendsqlcl" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probesqlcl" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbsqlclRuleall" + } + ] + } + }, + "lbRulesABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-ascs/frontendascs" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backendascs" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-ascs/probeascs" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbascsRuleall" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-ascs/frontendaers" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backendaers" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-ascs/probeaers" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbaersRuleall" + } + ], + "lbRulesJAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-ascs/frontendscs" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backendscs" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-ascs/probescs" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbscsRuleall" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-ascs/frontenders" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backenders" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-ascs/probeers" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbersRuleall" + } + ], + "lbRulesIND": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-ascs/frontendascscl" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backendascscl" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-ascs/probeascscl" + }, + "protocol": "All", + "frontendPort": 0, + "backendPort": 0, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbascsclRuleall" + } + ], + "lbRuleXSCS": { + "ABAP": "[OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendASCSCL'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolASCSCL'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortASCSCL'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixASCSCL'), 'all')]\")])][OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendASCS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolASCS'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortASCS'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixASCS'), 'all')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendAERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolAERS'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortAERS'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixAERS'), 'all')]\")])]", + "JAVA": "[OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendASCSCL'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolASCSCL'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortASCSCL'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixASCSCL'), 'all')]\")])][OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendSCS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolSCS'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortSCS'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixSCS'), 'all')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortERS'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixERS'), 'all')]\")])]", + "ABAP+JAVA": "[OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendASCSCL'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolASCSCL'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortASCSCL'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixASCSCL'), 'all')]\")])][OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendASCS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolASCS'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortASCS'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixASCS'), 'all')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendAERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolAERS'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortAERS'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixAERS'), 'all')]\")])][OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendSCS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolSCS'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortSCS'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixSCS'), 'all')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('loadBalancerNameASCS'), variables('frontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/probes', variables('loadBalancerNameASCS'), variables('probePortERS'))]\")])), ('protocol', 'All'), ('frontendPort', 0), ('backendPort', 0), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutes')]\")])), ('name', \"[concat(variables('lbRulePrefixERS'), 'all')]\")])]" + }, + "lbProbesDB": { + "HANA": { + "Linux": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, variables('dbInstanceNumberHANA'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probehdb" + } + ] + }, + "SQL": { + "Windows": [ + { + "properties": { + "protocol": "Tcp", + "port": 62500, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probesql" + }, + { + "properties": { + "protocol": "Tcp", + "port": 63500, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probesqlcl" + } + ] + } + }, + "lbProbesABAP": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62000, variables('ascsInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probeascs" + }, + { + "properties": { + "protocol": "Tcp", + "port": "[add(62100, variables('aersInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probeaers" + } + ], + "lbProbesJAVA": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62000, variables('scsInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probescs" + }, + { + "properties": { + "protocol": "Tcp", + "port": "[add(62100, variables('ersInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probeers" + } + ], + "lbProbesIND": [ + { + "properties": { + "protocol": "Tcp", + "port": 63500, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probeascscl" + } + ], + "lbProbeXSCS": { + "ABAP": "[OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalASCSCL')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortASCSCL')]\")])][OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalASCS')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortASCS')]\")]), OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalAERS')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortAERS')]\")])]", + "JAVA": "[OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalASCSCL')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortASCSCL')]\")])][OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalSCS')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortSCS')]\")]), OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalERS')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortERS')]\")])]", + "ABAP+JAVA": "[OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalASCSCL')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortASCSCL')]\")])][OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalASCS')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortASCS')]\")]), OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalAERS')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortAERS')]\")])][OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalSCS')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortSCS')]\")]), OrderedDict([('properties', OrderedDict([('protocol', 'Tcp'), ('port', \"[variables('probePortInternalERS')]\"), ('intervalInSeconds', 5), ('numberOfProbes', 2)])), ('name', \"[variables('probePortERS')]\")])]" + }, + "nicBackAddressPoolsDB": { + "HANA": { + "Linux": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-pub-db/backendpubdb" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backendhdb" + } + ] + }, + "SQL": { + "Windows": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-pub-db/backendpubdb" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backendsql" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backendsqlcl" + } + ] + } + }, + "nicBackAddressPoolsABAP": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backendascs" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backendaers" + } + ], + "nicBackAddressPoolsJAVA": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backendscs" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backenders" + } + ], + "nicBackAddressPoolsIND": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-ascs/backendascscl" + } + ], + "nicBackAddressPoolsPub": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-pub-ascs/backendpubascs" + } + ], + "nicBackAddressPoolsINDPub": "[if(greater(length(parameters('subnetId')), 0), concat(variables('nicBackAddressPoolsIND'), variables('nicBackAddressPoolsPub')), variables('nicBackAddressPoolsIND'))]", + "nicBackAddressPoolXSCS": { + "ABAP": "[if(greater(length(parameters('subnetId')), 0), concat(variables('nicBackAddressPoolsIND'), variables('nicBackAddressPoolsPub')), variables('nicBackAddressPoolsIND'))][OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolASCS'))]\")]), OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolAERS'))]\")])]", + "JAVA": "[if(greater(length(parameters('subnetId')), 0), concat(variables('nicBackAddressPoolsIND'), variables('nicBackAddressPoolsPub')), variables('nicBackAddressPoolsIND'))][OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolSCS'))]\")]), OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolERS'))]\")])]", + "ABAP+JAVA": "[if(greater(length(parameters('subnetId')), 0), concat(variables('nicBackAddressPoolsIND'), variables('nicBackAddressPoolsPub')), variables('nicBackAddressPoolsIND'))][OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolASCS'))]\")]), OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolAERS'))]\")])][OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolSCS'))]\")]), OrderedDict([('id', \"[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerNameASCS'), variables('backendPoolERS'))]\")])]" + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('sapSystemId'))]-nsg", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "condition": false, + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(parameters('sapSystemId'))]-vnet", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg" + ], + "condition": false, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-ascs", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "condition": false, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 10 + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(parameters('sapSystemId'))]-pip-lb-ascs", + "apiVersion": "2020-05-01", + "condition": "[and(greater(variables('ascsvmCount') , 1), greater(length(parameters('subnetId')), 0))]", + "sku": { + "name": "Standard" + }, + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(parameters('sapSystemId'))]-lb-pub-ascs", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "condition": "[and(greater(variables('ascsvmCount') , 1), greater(length(parameters('subnetId')), 0))]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[toLower(parameters('sapSystemId'))]-pip-lb-ascs" + ], + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "frontendpubascs", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(parameters('sapSystemId'))]-pip-lb-ascs" + } + } + } + ], + "outboundRules": [ + { + "name": "test", + "properties": { + "frontendIPConfigurations": [ + { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(parameters('sapSystemId'))]-lb-pub-ascs/frontendpubascs" + } + ], + "allocatedOutboundPorts": 1000, + "idleTimeoutInMinutes": 4, + "enableTcpReset": true, + "protocol": "All", + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-pub-ascs/backendpubascs" + } + } + } + ], + "backendAddressPools": [ + { + "name": "backendpubascs" + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(parameters('sapSystemId'))]-pip-ascs-copyIndex()", + "apiVersion": "2020-05-01", + "condition": false, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(parameters('sapSystemId'))]-vnet" + ], + "sku": { + "name": "Standard" + }, + "copy": { + "name": "pipLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(parameters('sapSystemId'))]-lb-ascs", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "condition": "[greater(variables('ascsvmCount') , 1)]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(parameters('sapSystemId'))]-vnet" + ], + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": "(lbFrontendConfigXSCS)[parameters(stackType)]", + "backendAddressPools": "(lbBackendPoolXSCS)[parameters(stackType)]", + "loadBalancingRules": "(lbRuleXSCS)[parameters(stackType)]", + "probes": "(lbProbeXSCS)[parameters(stackType)]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-ascs-copyIndex()", + "apiVersion": "2020-05-01", + "copy": { + "name": "nicASCSLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "dependsOn": [ + "pipLoop", + "Microsoft.Network/virtualNetworks/[toLower(parameters('sapSystemId'))]-vnet", + "Microsoft.Network/loadBalancers/[toLower(parameters('sapSystemId'))]-lb-ascs", + "Microsoft.Network/loadBalancers/[toLower(parameters('sapSystemId'))]-lb-pub-ascs" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[if(equals(length(parameters('subnetId')), 0), json(concat('{\"id\": \"', resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIpNameASCS'), '-', copyIndex())) ,'\"}')), json('null'))]", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "loadBalancerBackendAddressPools": "[if(greater(variables('ascsvmCount'), 1), variables('nicBackAddressPoolXSCS')[parameters('stackType')], json('null'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(parameters('sapSystemId'))]-ascs-copyIndex()", + "copy": { + "name": "xscsVMLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "dependsOn": [ + "nicASCSLoop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-ascs" + ], + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), array(variables('azArray')[mod(copyIndex(), variables('azArrayLength'))]))]", + "properties": { + "availabilitySet": "[if(equals(variables('azArrayLength'), 0), resourceId('Microsoft.Compute/availabilitySets', variables('avSetNameASCS')), json('null'))]", + "hardwareProfile": { + "vmSize": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].ascsVMSize" + }, + "osProfile": { + "computerName": "[toLower(parameters('sapSystemId'))]-ascs-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(parameters('sapSystemId'))]-ascs-copyIndex()-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [ + { + "lun": 0, + "createOption": "Empty", + "diskSizeGB": 128 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('sapSystemId'))]-nic-ascs-copyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmNameASCS'), '-', copyIndex(), '/', variables('csExtension')[variables('internalOSType')].Name)]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "xscsVMLoop" + ], + "copy": { + "name": "xscsExtVMLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ], + "commandToExecute": "[concat(variables('csExtension')[variables('internalOSType')].scriptCall, ' ', variables('scriptArgumentsASCSDI')[variables('internalOSType')])]" + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-db", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "condition": false, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 10 + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(parameters('sapSystemId'))]-pip-lb-db", + "apiVersion": "2020-05-01", + "sku": { + "name": "Standard" + }, + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(parameters('sapSystemId'))]-lb-pub-db", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "condition": "[greater(variables('ascsvmCount') , 1)]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[toLower(parameters('sapSystemId'))]-pip-lb-db" + ], + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "frontendpubdb", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(parameters('sapSystemId'))]-pip-lb-db" + } + } + } + ], + "outboundRules": [ + { + "name": "test", + "properties": { + "frontendIPConfigurations": [ + { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(parameters('sapSystemId'))]-lb-pub-db/frontendpubdb" + } + ], + "allocatedOutboundPorts": 1000, + "idleTimeoutInMinutes": 4, + "enableTcpReset": true, + "protocol": "All", + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-pub-db/backendpubdb" + } + } + } + ], + "backendAddressPools": [ + { + "name": "backendpubdb" + } + ] + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(parameters('sapSystemId'))]-lb-db", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "condition": "[greater(variables('dbvmCount') , 1)]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(parameters('sapSystemId'))]-vnet" + ], + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": "(lbFrontendConfigsDB)[parameters(dbType)][variables(internalOSType)]", + "backendAddressPools": "(lbBackendPoolsDB)[parameters(dbType)][variables(internalOSType)]", + "loadBalancingRules": "(lbRulesDB)[parameters(dbType)][variables(internalOSType)]", + "probes": "(lbProbesDB)[parameters(dbType)][variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-db-copyIndex()", + "apiVersion": "2020-05-01", + "copy": { + "name": "nicDBLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(parameters('sapSystemId'))]-vnet", + "Microsoft.Network/loadBalancers/[toLower(parameters('sapSystemId'))]-lb-db", + "Microsoft.Network/loadBalancers/[toLower(parameters('sapSystemId'))]-lb-pub-db" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "loadBalancerBackendAddressPools": "[if(greater(variables('dbvmCount'), 1), variables('nicBackAddressPoolsDB')[parameters('dbType')][variables('internalOSType')], json('null'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(parameters('sapSystemId'))]-db-copyIndex()", + "copy": { + "name": "dbVMLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "dependsOn": [ + "nicDBLoop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-db" + ], + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), array(variables('azArray')[mod(copyIndex(), variables('azArrayLength'))]))]", + "properties": { + "availabilitySet": "[if(equals(variables('azArrayLength'), 0), resourceId('Microsoft.Compute/availabilitySets', variables('avSetNameDB')), json('null'))]", + "hardwareProfile": { + "vmSize": "dbvmSize" + }, + "osProfile": { + "computerName": "[toLower(parameters('sapSystemId'))]-db-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(parameters('sapSystemId'))]-db-copyIndex()-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].dbdisks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('sapSystemId'))]-nic-db-copyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmNameDB'), '-', copyIndex(), '/', variables('csExtension')[variables('internalOSType')].Name)]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "dbVMLoop" + ], + "copy": { + "name": "dbExtVMLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ], + "commandToExecute": "[concat(variables('csExtension')[variables('internalOSType')].scriptCall, ' ', variables('sizes')[parameters('sapSystemSize')][parameters('dbType')].scriptArguments[variables('internalOSType')])]" + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-di", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "condition": false, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 10 + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-di-copyindex()", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(parameters('sapSystemId'))]-vnet" + ], + "copy": { + "name": "nicDILoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), max(2, variables('divmCountNonHA')), variables('divmCountNonHA'))]" + }, + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(parameters('sapSystemId'))]-di-copyIndex()", + "copy": { + "name": "diVMLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), max(2, variables('divmCountNonHA')), variables('divmCountNonHA'))]" + }, + "dependsOn": [ + "nicDILoop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-di" + ], + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), array(variables('azArray')[mod(copyIndex(), variables('azArrayLength'))]))]", + "properties": { + "availabilitySet": "[if(equals(variables('azArrayLength'), 0), resourceId('Microsoft.Compute/availabilitySets', variables('avSetNameDI')), json('null'))]", + "hardwareProfile": { + "vmSize": "divmSize" + }, + "osProfile": { + "computerName": "[toLower(parameters('sapSystemId'))]-di-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(parameters('sapSystemId'))]-di-copyIndex()-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [ + { + "lun": 0, + "createOption": "Empty", + "diskSizeGB": 128 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('sapSystemId'))]-nic-di-copyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmNameDI'), '-', copyIndex(), '/', variables('csExtension')[variables('internalOSType')].Name)]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "diVMLoop" + ], + "copy": { + "name": "diExtVMLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), max(2, variables('divmCountNonHA')), variables('divmCountNonHA'))]" + }, + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ], + "commandToExecute": "[concat(variables('csExtension')[variables('internalOSType')].scriptCall, ' ', variables('scriptArgumentsASCSDI')[variables('internalOSType')])]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT457 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT457 new file mode 100644 index 0000000..73a956f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT457 @@ -0,0 +1,527 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-apps-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-apps-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962895240, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-apps-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-apps-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT457", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT457", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "defaultValue": "DEV", + "maxLength": 3, + "minLength": 3, + "metadata": { + "description": "SAP System ID." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "SLES 12 BYOS", + "RHEL 7", + "Oracle Linux 7" + ], + "defaultValue": "Windows Server 2016 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 30.000 SAPS", + "Medium < 70.000 SAPS", + "Large < 180.000 SAPS", + "X-Large < 250.000 SAPS" + ], + "defaultValue": "Small < 30.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "systemAvailability": { + "type": "string", + "allowedValues": [ + "HA", + "Not HA" + ], + "defaultValue": "Not HA", + "metadata": { + "description": "Determines whether this is a high available deployment or not. A HA deployment contains multiple instances of single point of failures." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "SLES 12": { + "sku": "12-SP3", + "offer": "SLES-SAP", + "publisher": "SUSE", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + }, + "SLES 12 BYOS": { + "sku": "12-SP3", + "offer": "SLES-SAP-BYOS", + "publisher": "SUSE", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + }, + "RHEL 7": { + "sku": "7.4", + "offer": "RHEL", + "publisher": "RedHat", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + }, + "Oracle Linux 7": { + "sku": "7.3", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/noop.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File scripts/noop.ps1" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/noop.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh noop.sh" + } + }, + "cseExtPublisher": "(csExtension)[variables(internalOSType)].Publisher", + "cseExtName": "(csExtension)[variables(internalOSType)].Name", + "cseExtVersion": "(csExtension)[variables(internalOSType)].Version", + "csExtensionScript": "(csExtension)[variables(internalOSType)].script", + "csExtensionscriptCall": "(csExtension)[variables(internalOSType)].scriptCall", + "vmSizes": { + "Demo": { + "Not HA": { + "diserversize": "Standard_D2s_v3", + "diservercount": 1 + }, + "HA": { + "diserversize": "Standard_D2s_v3", + "diservercount": 2 + } + }, + "Small < 30.000 SAPS": { + "Not HA": { + "diserversize": "Standard_D8s_v3", + "diservercount": 1 + }, + "HA": { + "diserversize": "Standard_D8s_v3", + "diservercount": 2 + } + }, + "Medium < 70.000 SAPS": { + "Not HA": { + "diserversize": "Standard_D8s_v3", + "diservercount": 4 + }, + "HA": { + "diserversize": "Standard_D8s_v3", + "diservercount": 4 + } + }, + "Large < 180.000 SAPS": { + "Not HA": { + "diserversize": "Standard_D16s_v3", + "diservercount": 6 + }, + "HA": { + "diserversize": "Standard_D16s_v3", + "diservercount": 6 + } + }, + "X-Large < 250.000 SAPS": { + "Not HA": { + "diserversize": "Standard_D16s_v3", + "diservercount": 10 + }, + "HA": { + "diserversize": "Standard_D16s_v3", + "diservercount": 10 + } + } + }, + "divmSize": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diserversize", + "divmCount": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "publicIpNameDB": "[toLower(parameters('sapSystemId'))]-pip-di", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg", + "vmName": "[toLower(parameters('sapSystemId'))]", + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]", + "avSetNameDI": "[toLower(parameters('sapSystemId'))]-avset-di", + "nicNameDI": "[toLower(parameters('sapSystemId'))]-nic-di", + "vmNameDI": "[toLower(parameters('sapSystemId'))]-di" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('sapSystemId'))]-nsg", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "condition": false, + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(parameters('sapSystemId'))]-vnet", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg" + ], + "condition": false, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-di", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 20 + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(parameters('sapSystemId'))]-pip-di-copyIndex()", + "apiVersion": "2020-07-01", + "condition": false, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(parameters('sapSystemId'))]-vnet" + ], + "location": "[resourceGroup().location]", + "copy": { + "name": "dipipLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-di-copyindex()", + "apiVersion": "2017-06-01", + "copy": { + "name": "nicDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "dependsOn": [ + "dipipLoop", + "Microsoft.Network/virtualNetworks/[toLower(parameters('sapSystemId'))]-vnet" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[if(equals(length(parameters('subnetId')), 0), json(concat('{\"id\": \"', resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIpNameDB'), '-', copyIndex())) ,'\"}')), json('null'))]", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(parameters('sapSystemId'))]-di-copyIndex()", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "nicDILoop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-di" + ], + "copy": { + "name": "vmLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-di" + }, + "hardwareProfile": { + "vmSize": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diserversize" + }, + "osProfile": { + "computerName": "[toLower(parameters('sapSystemId'))]-di-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "(images)[parameters(osType)].version" + }, + "osDisk": { + "name": "[toLower(parameters('sapSystemId'))]-di-copyIndex()-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "lun": 0, + "createOption": "Empty", + "diskSizeGB": 128 + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('sapSystemId'))]-nic-di-copyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[toLower(parameters('sapSystemId'))]-di-copyIndex()/(csExtension)[variables(internalOSType)].Name", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "vmLoop" + ], + "copy": { + "name": "extVMLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ], + "commandToExecute": "(csExtension)[variables(internalOSType)].scriptCall" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT458 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT458 new file mode 100644 index 0000000..96fa647 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT458 @@ -0,0 +1,1265 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-db-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-db-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962895257, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-db-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-db-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT458", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT458", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "defaultValue": "DEV", + "maxLength": 3, + "minLength": 3, + "metadata": { + "description": "SAP System ID." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "SLES 12 BYOS", + "RHEL 7", + "Oracle Linux 7" + ], + "defaultValue": "Windows Server 2012 R2 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "dbtype": { + "type": "string", + "allowedValues": [ + "SQL", + "HANA" + ], + "defaultValue": "SQL", + "metadata": { + "description": "The type of the database" + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small", + "Medium", + "Large", + "X-Large" + ], + "defaultValue": "Small", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "systemAvailability": { + "type": "string", + "allowedValues": [ + "HA", + "Not HA" + ], + "defaultValue": "Not HA", + "metadata": { + "description": "Determines whether this is a high available deployment or not. A HA deployment contains multiple instances of single point of failures." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false, + "osDiskSize": 128 + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false, + "osDiskSize": 128 + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false, + "osDiskSize": 128 + }, + "SLES 12": { + "sku": "12-SP3", + "offer": "SLES-SAP", + "publisher": "SUSE", + "version": "latest", + "OSType": "Linux", + "UsePlan": false, + "osDiskSize": 64 + }, + "SLES 12 BYOS": { + "sku": "12-SP3", + "offer": "SLES-SAP-BYOS", + "publisher": "SUSE", + "version": "latest", + "OSType": "Linux", + "UsePlan": false, + "osDiskSize": 64 + }, + "RHEL 7": { + "sku": "7.4", + "offer": "RHEL", + "publisher": "RedHat", + "version": "latest", + "OSType": "Linux", + "UsePlan": false, + "osDiskSize": 64 + }, + "Oracle Linux 7": { + "sku": "7.3", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "version": "latest", + "OSType": "Linux", + "UsePlan": false, + "osDiskSize": 64 + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File scripts/diskConfig.ps1" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh diskConfig.sh" + } + }, + "cseExtPublisher": "(csExtension)[variables(internalOSType)].Publisher", + "cseExtName": "(csExtension)[variables(internalOSType)].Name", + "cseExtVersion": "(csExtension)[variables(internalOSType)].Version", + "csExtensionScript": "(csExtension)[variables(internalOSType)].script", + "csExtensionscriptCall": "(csExtension)[variables(internalOSType)].scriptCall", + "sizes": { + "Demo": { + "HANA": { + "vmSize": "Standard_E8s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1#2,3#4#5#6,7' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": false + }, + "SQL": { + "vmSize": "Standard_D4s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0\" -names \"data\" -paths \"C:\\sql\\data,C:\\sql\\log\" -sizes \"70,100\"" + }, + "useFastNetwork": false + } + }, + "Small": { + "HANA": { + "vmSize": "Standard_E32s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3#4#5' -names 'datalog#shared#usrsap#backup' -paths '/hana/data,/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '70,100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_D8s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Windows": "-luns '0,1,2,3#4' -names 'data#log' -paths 'C:\\sql\\data#C:\\sql\\log' -sizes '100#100'" + }, + "useFastNetwork": true + } + }, + "Medium": { + "HANA": { + "vmSize": "Standard_E64s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3#4#5' -names 'datalog#shared#usrsap#backup' -paths '/hana/data,/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '70,100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_D16s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Windows": "-luns '0,1,2,3,4,5,6#7' -names 'data#log' -paths 'C:\\sql\\data#C:\\sql\\log' -sizes '100#100'" + }, + "useFastNetwork": true + } + }, + "Large": { + "HANA": { + "vmSize": "Standard_M64s", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 8, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 9, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2,3#4,5#6#7#8,9' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_GS4", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Windows": "-luns '0,1,2,3,4#5' -names 'data#log' -paths 'C:\\sql\\data#C:\\sql\\log' -sizes '100#100'" + }, + "useFastNetwork": false + } + }, + "X-Large": { + "HANA": { + "vmSize": "Standard_M128s", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 64 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 2048 + }, + { + "lun": 8, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 2048 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3,4#5#6#7,8' -names 'data#log#shared#usrsap#backup' -paths '/hana/data#/hana/log#/hana/shared#/usr/sap#/hana/backup' -sizes '100#100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_GS5", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Windows": "-luns '0,1,2,3,4,5,6#7' -names 'data#log' -paths 'C:\\sql\\data#C:\\sql\\log' -sizes '100#100'" + }, + "useFastNetwork": false + } + } + }, + "dbvmCount": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "publicIpNameDB": "[toLower(parameters('sapSystemId'))]-pip-db", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg", + "avSetNameDB": "[toLower(parameters('sapSystemId'))]-avset-db", + "loadBalancerNameDB": "[toLower(parameters('sapSystemId'))]-lb-db", + "nicNameDB": "[toLower(parameters('sapSystemId'))]-nic-db", + "vmNameDB": "[toLower(parameters('sapSystemId'))]-db", + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]", + "loadBalancerFrontendHANADB": "frontend", + "backendPoolHANADB": "backend", + "probePortHANADB": "probe", + "dbInstanceNumberHANA": 3, + "lbPrefixHANADB": "[concat('lb', padLeft(variables('dbInstanceNumberHANA'), 2, '0'))]", + "probePortInternalHANADB": "[add(62500, variables('dbInstanceNumberHANA'))]", + "lbRulePrefixHANADB": "[concat(variables('lbPrefixHANADB'), 'Rule')]", + "loadBalancerFrontendSQLDB": "frontend", + "loadBalancerFrontendSQLCL": "frontendcl", + "backendPoolSQLDB": "backend", + "backendPoolSQLCL": "backendcl", + "probePortSQLDB": "probe", + "probePortSQLCL": "probecl", + "lbPrefixSQLDB": "lbsql", + "probePortInternalSQLDB": 62500, + "probePortInternalSQLCL": 63500, + "lbRulePrefixSQLDB": "lbsqlRule", + "idleTimeoutInMinutes": 30, + "lbFrontendConfigs": { + "HANA": { + "Linux": [ + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontend" + } + ] + }, + "SQL": { + "Windows": [ + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontend" + }, + { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "frontendcl" + } + ] + } + }, + "lbBackendPools": { + "HANA": { + "Linux": [ + { + "name": "backend" + } + ] + }, + "SQL": { + "Windows": [ + { + "name": "backend" + }, + { + "name": "backendcl" + } + ] + } + }, + "lbRules": { + "HANA": { + "Linux": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backend" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probe" + }, + "protocol": "Tcp", + "frontendPort": "[add(30013, mul(variables('dbInstanceNumberHANA'), 100))]", + "backendPort": "[add(30013, mul(variables('dbInstanceNumberHANA'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbRulePrefixHANADB'), '3', padLeft(variables('dbInstanceNumberHANA'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backend" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probe" + }, + "protocol": "Tcp", + "frontendPort": "[add(30015, mul(variables('dbInstanceNumberHANA'), 100))]", + "backendPort": "[add(30015, mul(variables('dbInstanceNumberHANA'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbRulePrefixHANADB'), '3', padLeft(variables('dbInstanceNumberHANA'), 2, '0'), '15')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backend" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probe" + }, + "protocol": "Tcp", + "frontendPort": "[add(30040, mul(variables('dbInstanceNumberHANA'), 100))]", + "backendPort": "[add(30040, mul(variables('dbInstanceNumberHANA'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbRulePrefixHANADB'), '3', padLeft(variables('dbInstanceNumberHANA'), 2, '0'), '40')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backend" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probe" + }, + "protocol": "Tcp", + "frontendPort": "[add(30041, mul(variables('dbInstanceNumberHANA'), 100))]", + "backendPort": "[add(30041, mul(variables('dbInstanceNumberHANA'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbRulePrefixHANADB'), '3', padLeft(variables('dbInstanceNumberHANA'), 2, '0'), '41')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backend" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probe" + }, + "protocol": "Tcp", + "frontendPort": "[add(30042, mul(variables('dbInstanceNumberHANA'), 100))]", + "backendPort": "[add(30042, mul(variables('dbInstanceNumberHANA'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbRulePrefixHANADB'), '3', padLeft(variables('dbInstanceNumberHANA'), 2, '0'), '42')]" + } + ] + }, + "SQL": { + "Windows": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(parameters('sapSystemId'))]-lb-db/frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backend" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(parameters('sapSystemId'))]-lb-db/probe" + }, + "protocol": "Tcp", + "frontendPort": 1433, + "backendPort": 1433, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbsqlRule1433" + } + ] + } + }, + "lbProbes": { + "HANA": { + "Linux": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, variables('dbInstanceNumberHANA'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probe" + } + ] + }, + "SQL": { + "Windows": [ + { + "properties": { + "protocol": "Tcp", + "port": 62500, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probe" + }, + { + "properties": { + "protocol": "Tcp", + "port": 63500, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "probecl" + } + ] + } + }, + "nicBackAddressPools": { + "HANA": { + "Linux": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backend" + } + ] + }, + "SQL": { + "Windows": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backend" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(parameters('sapSystemId'))]-lb-db/backendcl" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('sapSystemId'))]-nsg", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "condition": false, + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(parameters('sapSystemId'))]-vnet", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//[toLower(parameters('sapSystemId'))]-nsg" + ], + "condition": false, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-db", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 20 + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(parameters('sapSystemId'))]-pip-db-copyIndex()", + "apiVersion": "2020-07-01", + "condition": false, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('sapSystemId'))]-vnet" + ], + "location": "[resourceGroup().location]", + "copy": { + "name": "dbpipLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(parameters('sapSystemId'))]-lb-db", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "condition": "[greater(variables('dbvmCount') , 1)]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('sapSystemId'))]-vnet" + ], + "properties": { + "frontendIPConfigurations": "(lbFrontendConfigs)[parameters(dbtype)][variables(internalOSType)]", + "backendAddressPools": "(lbBackendPools)[parameters(dbtype)][variables(internalOSType)]", + "loadBalancingRules": "(lbRules)[parameters(dbtype)][variables(internalOSType)]", + "probes": "(lbProbes)[parameters(dbtype)][variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-db-copyIndex()", + "apiVersion": "2020-07-01", + "copy": { + "name": "dbNICLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "dependsOn": [ + "dbpipLoop", + "Microsoft.Network/virtualNetworks//[toLower(parameters('sapSystemId'))]-vnet", + "Microsoft.Network/loadBalancers//[toLower(parameters('sapSystemId'))]-lb-db" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[if(equals(length(parameters('subnetId')), 0), json(concat('{\"id\": \"', resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIpNameDB'), '-', copyIndex())) ,'\"}')), json('null'))]", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "loadBalancerBackendAddressPools": "[if(greater(variables('dbvmCount') , 1), variables('nicBackAddressPools')[parameters('dbtype')][variables('internalOSType')], json('null'))]" + } + } + ], + "enableAcceleratedNetworking": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].useFastNetwork" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(parameters('sapSystemId'))]-db-copyIndex()", + "copy": { + "name": "dbVMLoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "dependsOn": [ + "dbNICLoop", + "Microsoft.Compute/availabilitySets//[toLower(parameters('sapSystemId'))]-avset-db" + ], + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-db" + }, + "hardwareProfile": { + "vmSize": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].vmSize" + }, + "osProfile": { + "computerName": "[toLower(parameters('sapSystemId'))]-db-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(parameters('sapSystemId'))]-db-copyIndex()-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": "(images)[parameters(osType)].osDiskSize", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].disks" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('sapSystemId'))]-nic-db-copyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[toLower(parameters('sapSystemId'))]-db-copyIndex()/(csExtension)[variables(internalOSType)].Name", + "apiVersion": "2020-12-01", + "copy": { + "name": "dbCSELoop", + "count": "[if(equals(parameters('systemAvailability'), 'HA'), 2, 1)]" + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "dbVMLoop" + ], + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ], + "commandToExecute": "[concat(variables('csExtensionscriptCall'), ' ', variables('sizes')[parameters('sapSystemSize')][parameters('dbType')].scriptArguments[variables('internalOSType')])]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT459 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT459 new file mode 100644 index 0000000..a5ccdf2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT459 @@ -0,0 +1,344 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/lb-ERS.json" + ], + "timestamp": 1642962895302, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/lb-ERS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT459", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT459", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolERS": "[concat(variables('lbPrefix'), 'BackendPoolERS')]", + "loadBalancerFrontendERS": "[concat(variables('lbPrefix'), 'FrontendERS')]", + "lbProbePortERS": "[concat(variables('lbPrefix'), 'ProbePortERS')]", + "lbProbePortInternalERS": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "idleTimeoutInMinutesERS": 30, + "loadBalancingRulesASCS": { + "Linux": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ] + }, + "loadBalancingRulesSCS": { + "Linux": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ] + }, + "loadBalancingRules": { + "ABAP": "(loadBalancingRulesASCS)[parameters(osType)]", + "JAVA": "(loadBalancingRulesSCS)[parameters(osType)]", + "ABAP+JAVA": "[concat(variables('loadBalancingRulesASCS')[parameters('osType')], variables('loadBalancingRulesSCS')[parameters('osType')])]" + }, + "nicBackAddressPoolsResult": { + "Linux": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolERS'))]" + } + ] + }, + "frontendIPConfigurationsResult": { + "Linux": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendERS')]" + } + ] + }, + "backendAddressPoolsResult": { + "Linux": [ + { + "name": "[variables('backendPoolERS')]" + } + ] + }, + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": { + "Linux": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortERS')]" + } + ] + } + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult')[parameters('osType')])]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult')[parameters('osType')])]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult')[parameters('osType')])]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult')[parameters('osType')])]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT46 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT46 new file mode 100644 index 0000000..a7c0993 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT46 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/be-networkInterfacesResource.json" + ], + "timestamp": 1642962883771, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/be-networkInterfacesResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT46", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT46", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object" + }, + "beSubnetRef": { + "type": "string" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIpAddress": "10.0.1.4", + "subnet": { + "id": "beSubnetRef" + } + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIpAddress": "10.0.1.5", + "subnet": { + "id": "beSubnetRef" + } + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig3", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIpAddress": "10.0.1.6", + "subnet": { + "id": "beSubnetRef" + } + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT460 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT460 new file mode 100644 index 0000000..ccec24a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT460 @@ -0,0 +1,488 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/lb-SCS.json" + ], + "timestamp": 1642962895362, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT460", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT460", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "ascsInstanceNumber": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "The instance number of the ASCS." + } + }, + "scsInstanceNumber": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance number of the SCS." + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolxSCS": "[concat(variables('lbPrefix'), 'BackendPoolxSCS')]", + "loadBalancerFrontendxSCS": "[concat(variables('lbPrefix'), 'FrontendxSCS')]", + "lbProbePortxSCS": "[concat(variables('lbPrefix'), 'ProbePortxSCS')]", + "lbProbePortInternalxSCS": "[add(62000, parameters('ascsInstanceNumber'))]", + "idleTimeoutInMinutesxSCS": 30, + "lbRulesFileShare": { + "Windows": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 445, + "backendPort": 445, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '445')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 5985, + "backendPort": 5985, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5985')]" + } + ] + }, + "lbRulesABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '36', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '16')]" + } + ], + "lbRulesJAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', parameters('loadBalancerName'), variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', parameters('loadBalancerName'), variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'))]", + "JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesJAVA'))]", + "ABAP+JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'), variables('lbRulesJAVA'))]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', parameters('loadBalancerName'), variables('backendPoolxSCS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendxSCS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolxSCS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62000, parameters('ascsInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortxSCS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT461 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT461 new file mode 100644 index 0000000..2aba2a6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT461 @@ -0,0 +1,222 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/loadbalancer.json" + ], + "timestamp": 1642962895371, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/nestedtemplates/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT461", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT461", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "sapSystemCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of SAP systems for which the load balancer should be configured" + } + }, + "stackType": { + "type": "string", + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "defaultValue": "Windows", + "metadata": { + "description": "The type of the Operating System" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "ascsInstanceNumber": 0, + "scsInstanceNumber": 1, + "ersASCSInstanceNumber": 2, + "ersSCSInstanceNumber": 3, + "nestedDeploymentNameLBSCS": "loadBalancerNameLBSCS", + "nestedDeploymentNameLBERS": "loadBalancerNameLBERS", + "endIndex": "[sub(parameters('sapSystemCount'), 1)]" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "name": "loadBalancerNameLBSCScopyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "scsLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/lb-SCS.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ascsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ascsInstanceNumber'))]" + }, + "scsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('scsInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBSCS'), sub(copyIndex(), 1)).outputs.nicBackAddressPools.value)]" + }, + "frontendIPConfigurationsArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBSCS'), sub(copyIndex(), 1)).outputs.frontendIPConfigurations.value)]" + }, + "backendAddressPoolsArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBSCS'), sub(copyIndex(), 1)).outputs.backendAddressPools.value)]" + }, + "loadBalancingRulesArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBSCS'), sub(copyIndex(), 1)).outputs.loadBalancingRules.value)]" + }, + "probesArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBSCS'), sub(copyIndex(), 1)).outputs.probes.value)]" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "loadBalancerNameLBERScopyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "ersLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/lb-ERS.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ersASCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersASCSInstanceNumber'))]" + }, + "ersSCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersSCSInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBERS'), sub(copyIndex(), 1)).outputs.nicBackAddressPools.value)]" + }, + "frontendIPConfigurationsArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBERS'), sub(copyIndex(), 1)).outputs.frontendIPConfigurations.value)]" + }, + "backendAddressPoolsArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBERS'), sub(copyIndex(), 1)).outputs.backendAddressPools.value)]" + }, + "loadBalancingRulesArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBERS'), sub(copyIndex(), 1)).outputs.loadBalancingRules.value)]" + }, + "probesArray": { + "value": "[if(equals(copyIndex(), 0), json('[]'), reference(variables('nestedDeploymentNameLBERS'), sub(copyIndex(), 1)).outputs.probes.value)]" + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancerName", + "apiVersion": "2018-04-01", + "dependsOn": [ + "scsLoop", + "ersLoop" + ], + "location": "location", + "properties": { + "frontendIPConfigurations": "[concat(reference(variables('nestedDeploymentNameLBSCS'), variables('endIndex')).outputs.frontendIPConfigurations.value, reference(variables('nestedDeploymentNameLBERS'), variables('endIndex')).outputs.frontendIPConfigurations.value)]", + "backendAddressPools": "[concat(reference(variables('nestedDeploymentNameLBSCS'), variables('endIndex')).outputs.backendAddressPools.value, reference(variables('nestedDeploymentNameLBERS'), variables('endIndex')).outputs.backendAddressPools.value)]", + "loadBalancingRules": "[concat(reference(variables('nestedDeploymentNameLBSCS'), variables('endIndex')).outputs.loadBalancingRules.value, reference(variables('nestedDeploymentNameLBERS'), variables('endIndex')).outputs.loadBalancingRules.value)]", + "probes": "[concat(reference(variables('nestedDeploymentNameLBSCS'), variables('endIndex')).outputs.probes.value, reference(variables('nestedDeploymentNameLBERS'), variables('endIndex')).outputs.probes.value)]" + } + } + ], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(reference(variables('nestedDeploymentNameLBSCS'), variables('endIndex')).outputs.nicBackAddressPools.value, reference(variables('nestedDeploymentNameLBERS'), variables('endIndex')).outputs.nicBackAddressPools.value)]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT462 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT462 new file mode 100644 index 0000000..bcd9a36 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT462 @@ -0,0 +1,546 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962895383, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-marketplace-image-multi-sid-xscs-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT462", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT462", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "resourcePrefix": { + "type": "string", + "defaultValue": "MULTI", + "maxLength": 6, + "minLength": 3, + "metadata": { + "description": "The prefix that should be used to create the resource names." + } + }, + "stackType": { + "type": "string", + "allowedValues": [ + "ABAP", + "JAVA", + "ABAP+JAVA" + ], + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "SLES 12 BYOS", + "RHEL 7", + "Oracle Linux 7" + ], + "defaultValue": "Windows Server 2016 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "sapSystemCount": { + "type": "int", + "minValue": 1, + "maxValue": 10, + "defaultValue": 2, + "metadata": { + "description": "The number of SAP systems of this multi SID setup." + } + }, + "systemAvailability": { + "type": "string", + "allowedValues": [ + "HA", + "Not HA" + ], + "defaultValue": "Not HA", + "metadata": { + "description": "Determines whether this is a high available deployment or not. A HA deployment contains multiple instances of single point of failures." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSType": "Windows", + "UsePlan": false + }, + "SLES 12": { + "sku": "12-SP3", + "offer": "SLES-SAP", + "publisher": "SUSE", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + }, + "SLES 12 BYOS": { + "sku": "12-SP3", + "offer": "SLES-SAP-BYOS", + "publisher": "SUSE", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + }, + "RHEL 7": { + "sku": "7.4", + "offer": "RHEL", + "publisher": "RedHat", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + }, + "Oracle Linux 7": { + "sku": "7.3", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "version": "latest", + "OSType": "Linux", + "UsePlan": false + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "systemCountSizes": { + "1": { + "Size": "Small" + }, + "2": { + "Size": "Small" + }, + "3": { + "Size": "Small" + }, + "4": { + "Size": "Medium" + }, + "5": { + "Size": "Medium" + }, + "6": { + "Size": "Medium" + }, + "7": { + "Size": "Medium" + }, + "8": { + "Size": "Large" + }, + "9": { + "Size": "Large" + }, + "10": { + "Size": "Large" + } + }, + "vmSizes": { + "Small": { + "Not HA": { + "xscsserversize": "Standard_D2s_v3", + "xscsservercount": 1 + }, + "HA": { + "xscsserversize": "Standard_D2s_v3", + "xscsservercount": 2 + } + }, + "Medium": { + "Not HA": { + "xscsserversize": "Standard_D4s_v3", + "xscsservercount": 1 + }, + "HA": { + "xscsserversize": "Standard_D4s_v3", + "xscsservercount": 2 + } + }, + "Large": { + "Not HA": { + "xscsserversize": "Standard_D8s_v3", + "xscsservercount": 1 + }, + "HA": { + "xscsserversize": "Standard_D8s_v3", + "xscsservercount": 2 + } + } + }, + "xscsvmSize": "(vmSizes)[ variables(systemCountSizes)[string(parameters(sapSystemCount))].Size ] [parameters(systemAvailability)].xscsserversize", + "xscsvmCount": "(vmSizes)[ variables(systemCountSizes)[string(parameters(sapSystemCount))].Size ] [parameters(systemAvailability)].xscsservercount", + "sidlower": "[toLower(parameters('resourcePrefix'))]", + "vmName": "[toLower(parameters('resourcePrefix'))]", + "vnetName": "[toLower(parameters('resourcePrefix'))]-vnet", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('resourcePrefix'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "nestedDeploymentNameLBXSCS": "[concat(deployment().name, '-lbxscs')]", + "publicIpNameXSCS": "[toLower(parameters('resourcePrefix'))]-pip-xscs", + "avSetNameXSCS": "[toLower(parameters('resourcePrefix'))]-avset-xscs", + "nsgNameXSCS": "[toLower(parameters('resourcePrefix'))]-nsg", + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]", + "loadBalancerNameXSCS": "[toLower(parameters('resourcePrefix'))]-lb-xscs", + "vmNameXSCS": "[toLower(parameters('resourcePrefix'))]-xscs", + "nicNameXSCS": "[toLower(parameters('resourcePrefix'))]-nic-xscs" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('resourcePrefix'))]-nsg", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "condition": false, + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(parameters('resourcePrefix'))]-vnet", + "apiVersion": "2018-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//[toLower(parameters('resourcePrefix'))]-nsg" + ], + "condition": false, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('resourcePrefix'))]-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('resourcePrefix'))]-avset-xscs", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 20 + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(parameters('resourcePrefix'))]-pip-xscs-copyIndex()", + "apiVersion": "2018-04-01", + "condition": false, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('resourcePrefix'))]-vnet" + ], + "location": "[resourceGroup().location]", + "copy": { + "name": "pipLoop", + "count": "(vmSizes)[ variables(systemCountSizes)[string(parameters(sapSystemCount))].Size ] [parameters(systemAvailability)].xscsservercount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2017-05-10", + "name": "[variables('nestedDeploymentNameLBXSCS')]", + "type": "Microsoft.Resources/deployments", + "condition": "[greater(variables('xscsvmCount'), 1)]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('resourcePrefix'))]-vnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/loadbalancer.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "[toLower(parameters('resourcePrefix'))]-lb-xscs" + }, + "sapSystemCount": { + "value": 2 + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "subnetId": { + "value": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('resourcePrefix'))]-nic-xscs-copyIndex()", + "apiVersion": "2017-06-01", + "copy": { + "name": "nicXSCSLoop", + "count": "(vmSizes)[ variables(systemCountSizes)[string(parameters(sapSystemCount))].Size ] [parameters(systemAvailability)].xscsservercount" + }, + "dependsOn": [ + "pipLoop", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('vnetName'))]", + "[resourceId('Microsoft.Resources/deployments/', variables('nestedDeploymentNameLBXSCS'))]" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[if(equals(length(parameters('subnetId')), 0), json(concat('{\"id\": \"', resourceId('Microsoft.Network/publicIPAddresses', concat(variables('publicIpNameXSCS'), '-', copyIndex())) ,'\"}')), json('null'))]", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "loadBalancerBackendAddressPools": "[if(greater(variables('xscsvmCount'), 1), reference(variables('nestedDeploymentNameLBXSCS'), '2021-01-01').outputs.nicBackAddressPools.value, json('null'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(parameters('resourcePrefix'))]-xscs-copyIndex()", + "copy": { + "name": "xscsVMLoop", + "count": "(vmSizes)[ variables(systemCountSizes)[string(parameters(sapSystemCount))].Size ] [parameters(systemAvailability)].xscsservercount" + }, + "dependsOn": [ + "nicXSCSLoop", + "Microsoft.Compute/availabilitySets//[toLower(parameters('resourcePrefix'))]-avset-xscs" + ], + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('resourcePrefix'))]-avset-xscs" + }, + "hardwareProfile": { + "vmSize": "(vmSizes)[ variables(systemCountSizes)[string(parameters(sapSystemCount))].Size ] [parameters(systemAvailability)].xscsserversize" + }, + "osProfile": { + "computerName": "[toLower(parameters('resourcePrefix'))]-xscs-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(parameters('resourcePrefix'))]-xscs-copyIndex()-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 2, + "input": { + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty", + "diskSizeGB": 128 + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('resourcePrefix'))]-nic-xscs-copyIndex()" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT463 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT463 new file mode 100644 index 0000000..b4f94c4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT463 @@ -0,0 +1,198 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB-HANA.json" + ], + "timestamp": 1642962895404, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB-HANA.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT463", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT463", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('dbInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolDB": "[concat(variables('lbPrefix'), 'BackendPoolDB')]", + "loadBalancerFrontendDB": "[concat(variables('lbPrefix'), 'FrontendDB')]", + "lbProbePortDB": "[concat(variables('lbPrefix'), 'ProbePortDB')]", + "lbProbePortInternalDB": "[add(62500, parameters('dbInstanceNumber'))]", + "idleTimeoutInMinutesDB": 30, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendDB')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolDB')]" + } + ], + "loadBalancingRulesResult": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(30015, mul(parameters('dbInstanceNumber'), 100))]", + "backendPort": "[add(30015, mul(parameters('dbInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '3', padLeft(parameters('dbInstanceNumber'), 2, '0'), '15')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(30017, mul(parameters('dbInstanceNumber'), 100))]", + "backendPort": "[add(30017, mul(parameters('dbInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '3', padLeft(parameters('dbInstanceNumber'), 2, '0'), '17')]" + } + ], + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, parameters('dbInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortDB')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT464 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT464 new file mode 100644 index 0000000..2c0d078 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT464 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB-SQL.json" + ], + "timestamp": 1642962895422, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB-SQL.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT464", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT464", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('dbInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolDB": "[concat(variables('lbPrefix'), 'BackendPoolDB')]", + "loadBalancerFrontendDB": "[concat(variables('lbPrefix'), 'FrontendDB')]", + "lbProbePortDB": "[concat(variables('lbPrefix'), 'ProbePortDB')]", + "lbProbePortInternalDB": "[add(62500, parameters('dbInstanceNumber'))]", + "idleTimeoutInMinutesDB": 30, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendDB')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolDB')]" + } + ], + "loadBalancingRulesResult": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": 1433, + "backendPort": 1433, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '1433')]" + } + ], + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, parameters('dbInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortDB')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT465 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT465 new file mode 100644 index 0000000..44901de --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT465 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB0.json" + ], + "timestamp": 1642962895436, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-DB0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT465", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT465", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": [], + "type": "array" + }, + "frontendIPConfigurations": { + "value": [], + "type": "array" + }, + "backendAddressPools": { + "value": [], + "type": "array" + }, + "loadBalancingRules": { + "value": [], + "type": "array" + }, + "probes": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT466 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT466 new file mode 100644 index 0000000..8c5be7d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT466 @@ -0,0 +1,487 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS-Linux.json" + ], + "timestamp": 1642962895483, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS-Linux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT466", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT466", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolERS": "[concat(variables('lbPrefix'), 'BackendPoolERS')]", + "loadBalancerFrontendERS": "[concat(variables('lbPrefix'), 'FrontendERS')]", + "lbProbePortERS": "[concat(variables('lbPrefix'), 'ProbePortERS')]", + "lbProbePortInternalERS": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "idleTimeoutInMinutesERS": 30, + "loadBalancingRulesASCS": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRulesSCS": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "JAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "ABAP+JAVA": "[OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(3300, parameters('ersASCSInstanceNumber'))]\"), ('backendPort', \"[add(3300, parameters('ersASCSInstanceNumber'))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]\")])][OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(3300, parameters('ersSCSInstanceNumber'))]\"), ('backendPort', \"[add(3300, parameters('ersSCSInstanceNumber'))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]\")])]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendERS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolERS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortERS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT467 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT467 new file mode 100644 index 0000000..2059e53 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT467 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS-Windows.json" + ], + "timestamp": 1642962895494, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS-Windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT467", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT467", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[parameters('nicBackAddressPoolsArray')]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[parameters('frontendIPConfigurationsArray')]", + "type": "array" + }, + "backendAddressPools": { + "value": "[parameters('backendAddressPoolsArray')]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[parameters('loadBalancingRulesArray')]", + "type": "array" + }, + "probes": { + "value": "[parameters('probesArray')]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT468 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT468 new file mode 100644 index 0000000..7b8ac42 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT468 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS0.json" + ], + "timestamp": 1642962895512, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-ERS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT468", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT468", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": [], + "type": "array" + }, + "frontendIPConfigurations": { + "value": [], + "type": "array" + }, + "backendAddressPools": { + "value": [], + "type": "array" + }, + "loadBalancingRules": { + "value": [], + "type": "array" + }, + "probes": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT469 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT469 new file mode 100644 index 0000000..58ac01b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT469 @@ -0,0 +1,496 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-SCS.json" + ], + "timestamp": 1642962895593, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT469", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT469", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "ascsInstanceNumber": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "The instance number of the ASCS." + } + }, + "scsInstanceNumber": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance number of the SCS." + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolxSCS": "[concat(variables('lbPrefix'), 'BackendPoolxSCS')]", + "loadBalancerFrontendxSCS": "[concat(variables('lbPrefix'), 'FrontendxSCS')]", + "lbProbePortxSCS": "[concat(variables('lbPrefix'), 'ProbePortxSCS')]", + "lbProbePortInternalxSCS": "[add(62000, parameters('ascsInstanceNumber'))]", + "idleTimeoutInMinutesxSCS": 30, + "lbRulesFileShare": { + "Linux": [], + "Windows": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 445, + "backendPort": 445, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '445')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 5985, + "backendPort": 5985, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5985')]" + } + ] + }, + "lbRulesABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '36', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '16')]" + } + ], + "lbRulesJAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'))]", + "JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesJAVA'))]", + "ABAP+JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'), variables('lbRulesJAVA'))]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendxSCS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolxSCS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62000, parameters('ascsInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortxSCS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT47 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT47 new file mode 100644 index 0000000..4e6aa6c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT47 @@ -0,0 +1,82 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/chefAuto-networkInterfacesResource.json" + ], + "timestamp": 1642962883788, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/chefAuto-networkInterfacesResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT47", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT47", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object" + }, + "feSubnetRef": { + "type": "string" + }, + "chefAutoPublicIPAddressID": { + "type": "string" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIpAddress": "10.0.0.53", + "publicIPAddress": { + "id": "chefAutoPublicIPAddressID" + }, + "subnet": { + "id": "feSubnetRef" + } + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT470 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT470 new file mode 100644 index 0000000..db8eb87 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT470 @@ -0,0 +1,237 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-SCS0.json" + ], + "timestamp": 1642962895611, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/lb-SCS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT470", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT470", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "ascsInstanceNumber": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "The instance number of the ASCS." + } + }, + "scsInstanceNumber": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance number of the SCS." + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "lb", + "lbrulePrefix": "lbRule", + "loadBalancerFrontendNFS": "lbFrontendNFS", + "lbProbePortNFS": "lbProbePortNFS", + "backendPoolNFS": "lbBackendPoolNFS", + "lbProbePortInternalNFS": 61000, + "idleTimeoutInMinutesNFS": 30, + "nicBackAddressPools": { + "Linux": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + } + ], + "Windows": [] + }, + "frontendIPConfigurations": { + "Linux": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "lbFrontendNFS" + } + ], + "Windows": [] + }, + "backendAddressPools": { + "Linux": [ + { + "name": "lbBackendPoolNFS" + } + ], + "Windows": [] + }, + "loadBalancingRules": { + "Linux": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/frontendIpConfigurations/lbFrontendNFS" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/probes/lbProbePortNFS" + }, + "protocol": "Tcp", + "frontendPort": 2049, + "backendPort": 2049, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbRule2049T" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/frontendIpConfigurations/lbFrontendNFS" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/probes/lbProbePortNFS" + }, + "protocol": "Udp", + "frontendPort": 2049, + "backendPort": 2049, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbRule2049U" + } + ], + "Windows": [] + }, + "probes": { + "Linux": [ + { + "properties": { + "protocol": "Tcp", + "port": 61000, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "lbProbePortNFS" + } + ], + "Windows": [] + }, + "nicBackAddressPoolsResult": "(nicBackAddressPools)[parameters(osType)]", + "frontendIPConfigurationsResult": "(frontendIPConfigurations)[parameters(osType)]", + "backendAddressPoolsResult": "(backendAddressPools)[parameters(osType)]", + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(osType)]", + "probesResult": "(probes)[parameters(osType)]" + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[variables('nicBackAddressPoolsResult')]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[variables('frontendIPConfigurationsResult')]", + "type": "array" + }, + "backendAddressPools": { + "value": "[variables('backendAddressPoolsResult')]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[variables('loadBalancingRulesResult')]", + "type": "array" + }, + "probes": { + "value": "[variables('probesResult')]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT471 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT471 new file mode 100644 index 0000000..ebd8db3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT471 @@ -0,0 +1,386 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/loadbalancer.json" + ], + "timestamp": 1642962895620, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT471", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT471", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "sapSystemCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of SAP systems for which the load balancer should be configured" + } + }, + "stackType": { + "type": "string", + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "defaultValue": "Windows", + "metadata": { + "description": "The type of the Operating System" + } + }, + "createXSCS": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the load balancer should be configured for one or more ASCS/SCS." + } + }, + "createDB": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the load balancer should be configured for one or more databases." + } + }, + "dbType": { + "type": "string", + "defaultValue": "SQL", + "metadata": { + "description": "The type of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "ascsInstanceNumber": 0, + "scsInstanceNumber": 1, + "ersASCSInstanceNumber": 2, + "ersSCSInstanceNumber": 3, + "dbInstanceNumber": 3, + "nestedDeploymentNameLBSCS": "loadBalancerNameLBSCS", + "nestedDeploymentNameLBERS": "loadBalancerNameLBERS", + "nestedDeploymentNameLBDB": "loadBalancerNameLBDB", + "scsTemplates": { + "true": "lb-SCS.json", + "false": "lb-SCS0.json" + }, + "ersTemplates": { + "true": "lb-ERS-Windows.json", + "false": "lb-ERS0.json" + }, + "dbTemplates": { + "true": "lb-DB-SQL.json", + "false": "lb-DB0.json" + }, + "scsTemplate": "(scsTemplates)[string(parameters(createXSCS))]", + "ersTemplate": "(ersTemplates)[string(parameters(createXSCS))]", + "dbTemplate": "(dbTemplates)[string(parameters(createDB))]" + }, + "resources": [ + { + "apiVersion": "2017-05-10", + "name": "loadBalancerNameLBSCS0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/lb-SCS0.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ascsInstanceNumber": { + "value": 0 + }, + "scsInstanceNumber": { + "value": 1 + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "[concat(variables('nestedDeploymentNameLBSCS'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/loadBalancerNameLBSCS0" + ], + "copy": { + "name": "scsLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/(scsTemplates)[string(parameters(createXSCS))] parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ascsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ascsInstanceNumber'))]" + }, + "scsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('scsInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "loadBalancerNameLBERS0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/lb-ERS0.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "stackType": { + "value": "ABAP" + }, + "loadBalancerName": { + "value": "loadBalancerName" + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "[concat(variables('nestedDeploymentNameLBERS'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/loadBalancerNameLBERS0" + ], + "copy": { + "name": "ersLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/(ersTemplates)[string(parameters(createXSCS))] parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "ersASCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersASCSInstanceNumber'))]" + }, + "ersSCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersSCSInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "loadBalancerNameLBDB0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/lb-DB0.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "[concat(variables('nestedDeploymentNameLBDB'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/loadBalancerNameLBDB0" + ], + "copy": { + "name": "dbLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/(dbTemplates)[string(parameters(createDB))] parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "dbInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('dbInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancerName", + "apiVersion": "2015-06-15", + "dependsOn": [ + "scsLoop", + "ersLoop", + "dbLoop" + ], + "location": "[resourceGroup().location]", + "properties": { + "frontendIPConfigurations": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value)]", + "backendAddressPools": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.backendAddressPools.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.backendAddressPools.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.backendAddressPools.value)]", + "loadBalancingRules": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value)]", + "probes": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.probes.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.probes.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.probes.value)]" + } + } + ], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value)]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT472 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT472 new file mode 100644 index 0000000..4e6dad3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT472 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newnsg.json" + ], + "timestamp": 1642962895629, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT472", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT472", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the network security group." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[parameters(osType)]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": "(osSecurityRules)[parameters(osType)]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT473 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT473 new file mode 100644 index 0000000..1c62b04 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT473 @@ -0,0 +1,66 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newpip.json" + ], + "timestamp": 1642962895637, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT473", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT473", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIpName": { + "type": "string", + "metadata": { + "description": "Name of the public IP address." + } + }, + "publicIPAddressType": { + "type": "string", + "metadata": { + "description": "Type of the public IP address, static or dynamic" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIpName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "publicIPAddressType" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT474 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT474 new file mode 100644 index 0000000..75b611b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT474 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newvnetnsg.json" + ], + "timestamp": 1642962895646, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT474", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT474", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network." + } + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network." + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Subnet." + } + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network Subnet." + } + }, + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the Network Security Group." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnetName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT475 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT475 new file mode 100644 index 0000000..87ae4c7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT475 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/nic-config.json" + ], + "timestamp": 1642962895658, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT475", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT475", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network subnet." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the public ip address." + } + }, + "nsgName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the network security group." + } + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "nicConfigurations": { + "true": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/ parameters('vnetName')/subnets/ parameters('subnetName')" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ parameters('publicIpName')" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ parameters('nsgName')" + } + }, + "false": { + "subnet": { + "id": "" + }, + "publicIPAddress": null, + "networkSecurityGroup": null + } + }, + "selectedConfiguration": "(nicConfigurations)[string(equals(length(parameters(subnetId)), 0))]" + }, + "resources": [], + "outputs": { + "selectedConfiguration": { + "value": "[variables('selectedConfiguration')]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT476 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT476 new file mode 100644 index 0000000..c03e25b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT476 @@ -0,0 +1,168 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/os-disk-parts-md.json" + ], + "timestamp": 1642962895672, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT476", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT476", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageSku": { + "type": "string", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the image that should be used to deploy the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "metadata": { + "description": "Offer of the image that should be used to deploy the virtual machine." + } + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "storageType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage type that should be used for the virtual machine." + } + }, + "managedDiskId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Id of the managed disk." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osDiskCaching": "ReadWrite", + "osDiskParts": { + "image": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "latest" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "userImage": { + "imageReference": { + "id": "" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "osdisk": { + "imageReference": null, + "osDisk": { + "name": "vmName-osdisk", + "osType": "osType", + "caching": "ReadWrite", + "createOption": "Attach", + "managedDisk": { + "id": "" + } + } + } + } + }, + "resources": [], + "outputs": { + "imageReference": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].imageReference]", + "type": "object" + }, + "osDisk": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].osDisk]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT477 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT477 new file mode 100644 index 0000000..1f38428 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT477 @@ -0,0 +1,267 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/server-md.json" + ], + "timestamp": 1642962895684, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT477", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT477", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptArgs": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetObj": { + "type": "object", + "metadata": { + "description": "Availability set." + } + }, + "useAVSet": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Availability set." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "dataDisksObj": { + "type": "object", + "metadata": { + "description": "Information about the data disks that the VM should have." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "URL to github templates." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "availableAVSetObj": { + "true": "avSetObj", + "false": null + }, + "internalAVSetObj": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0" + } + }, + "cseExtPublisher": "(csExtension)[parameters(osType)].Publisher", + "cseExtName": "(csExtension)[parameters(osType)].Name", + "cseExtVersion": "(csExtension)[parameters(osType)].Version", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/(csExtension)[parameters(osType)].Name", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmName" + ], + "properties": { + "publisher": "(csExtension)[parameters(osType)].Publisher", + "type": "(csExtension)[parameters(osType)].Name", + "typeHandlerVersion": "(csExtension)[parameters(osType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall csExtensionscriptArgs" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT478 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT478 new file mode 100644 index 0000000..f69cc4d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT478 @@ -0,0 +1,974 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-user-image-converged-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962895691, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-converged-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-user-image-converged-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT478", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT478", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "maxLength": 3, + "minLength": 3, + "metadata": { + "description": "SAP System ID." + }, + "value": "DEV" + }, + "stackType": { + "type": "string", + "allowedValues": [ + "ABAP", + "JAVA", + "ABAP+JAVA" + ], + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "defaultValue": "Windows", + "metadata": { + "description": "The operating system type of the private OS image." + }, + "value": "Linux" + }, + "dbType": { + "type": "string", + "allowedValues": [ + "SQL", + "HANA" + ], + "defaultValue": "SQL", + "metadata": { + "description": "The database type you want to use on the cluster. This information is used to create the load balancer" + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 30.000 SAPS", + "Medium < 70.000 SAPS", + "Large < 180.000 SAPS", + "X-Large < 250.000 SAPS" + ], + "defaultValue": "Small < 30.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "systemAvailability": { + "type": "string", + "allowedValues": [ + "HA", + "Not HA" + ], + "defaultValue": "Not HA", + "metadata": { + "description": "Determines whether this is a high available deployment or not. A HA deployment contains multiple instances of single point of failures." + }, + "value": "HA" + }, + "userImageId": { + "type": "string", + "metadata": { + "description": "Id of the user image." + }, + "value": "" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "internalOSType": "Linux", + "csExtension": { + "Windows": { + "script": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/noop.ps1 parameters('_artifactsLocationSasToken')", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File .\\shared\\noop.ps1" + }, + "Linux": { + "script": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/noop.sh parameters('_artifactsLocationSasToken')", + "scriptCall": "sh noop.sh" + } + }, + "csExtensionScript": "(csExtension)[variables(internalOSType)].script", + "csExtensionscriptCall": "(csExtension)[variables(internalOSType)].scriptCall", + "vmSizes": { + "Demo": { + "Not HA": { + "clserversize": "Standard_D4s_v3", + "clservercount": 1, + "clserverdisks": [ + { + "size": 128 + } + ], + "diserversize": "Standard_D2s_v3", + "diservercount": 1 + }, + "HA": { + "clserversize": "Standard_D4s_v3", + "clservercount": 2, + "clserverdisks": [ + { + "size": 128 + } + ], + "diserversize": "Standard_D2s_v3", + "diservercount": 2 + } + }, + "Small < 30.000 SAPS": { + "Not HA": { + "clserversize": "Standard_D8s_v3", + "clservercount": 1, + "clserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D8s_v3", + "diservercount": 1 + }, + "HA": { + "clserversize": "Standard_D8s_v3", + "clservercount": 2, + "clserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D8s_v3", + "diservercount": 2 + } + }, + "Medium < 70.000 SAPS": { + "Not HA": { + "clserversize": "Standard_D16s_v3", + "clservercount": 1, + "clserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D8s_v3", + "diservercount": 4 + }, + "HA": { + "clserversize": "Standard_D16s_v3", + "clservercount": 2, + "clserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D8s_v3", + "diservercount": 4 + } + }, + "Large < 180.000 SAPS": { + "Not HA": { + "clserversize": "Standard_GS4", + "clservercount": 1, + "clserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D16s_v3", + "diservercount": 5 + }, + "HA": { + "clserversize": "Standard_GS4", + "clservercount": 2, + "clserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "diserversize": "Standard_D16s_v3", + "diservercount": 6 + } + }, + "X-Large < 250.000 SAPS": { + "Not HA": { + "clserversize": "Standard_GS5", + "clservercount": 1, + "clserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "diserversize": "Standard_D16s_v3", + "diservercount": 9 + }, + "HA": { + "clserversize": "Standard_GS5", + "clservercount": 2, + "clserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "diserversize": "Standard_D16s_v3", + "diservercount": 10 + } + } + }, + "clvmSize": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clserversize", + "clvmCount": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount", + "clvmDataDisks": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clserverdisks", + "divmSize": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diserversize", + "divmCount": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vmName": "[toLower(parameters('sapSystemId'))]", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "nestedDeploymentName": "nestedTemplate", + "nestedDeploymentNameVNet": "nestedTemplatevnet", + "nestedDeploymentNamePIP": "nestedTemplatepip", + "nestedDeploymentNameCL": "nestedTemplatecl", + "nestedDeploymentNameDI": "nestedTemplatedi", + "nestedDeploymentNameProf": "nestedTemplateprof", + "nestedDeploymentNameNIC": "nestedTemplatenic", + "nestedDeploymentNameNICCL": "nestedTemplateniccl", + "nestedDeploymentNameNICDI": "nestedTemplatenicdi", + "nestedDeploymentNameLBCL": "nestedTemplatelbcl", + "publicIpNameCL": "[toLower(parameters('sapSystemId'))]-pip-cl", + "avSetNameCL": "[toLower(parameters('sapSystemId'))]-avset-cl", + "nestedDeploymentNameNSG": "nestedTemplateclnsg", + "nsgNameCL": "[toLower(parameters('sapSystemId'))]-nsg", + "loadBalancerNameCL": "[toLower(parameters('sapSystemId'))]-lb-cl", + "vmNameCL": "[toLower(parameters('sapSystemId'))]-cl", + "nicNameCL": "[toLower(parameters('sapSystemId'))]-nic-cl", + "avSetNameDI": "[toLower(parameters('sapSystemId'))]-avset-di", + "nicNameDI": "[toLower(parameters('sapSystemId'))]-nic-di", + "vmNameDI": "[toLower(parameters('sapSystemId'))]-di", + "osDiskType": "userImage" + }, + "resources": [ + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateclnsg", + "type": "Microsoft.Resources/deployments", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/newnsg.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg" + }, + "osType": { + "value": "Linux" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedDeploymentNameVnet", + "type": "Microsoft.Resources/deployments", + "condition": false, + "dependsOn": [ + "Microsoft.Resources/deployments/nestedTemplateclnsg" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/newvnetnsg.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "Subnet" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg" + } + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-cl", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": 20 + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatepip-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "pipLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/newpip.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip-cl-copyIndex()" + }, + "publicIPAddressType": { + "value": "Dynamic" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatelbcl", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedDeploymentNameVnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/loadbalancer.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "[toLower(parameters('sapSystemId'))]-lb-cl" + }, + "sapSystemCount": { + "value": 1 + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Linux" + }, + "createXSCS": { + "value": true + }, + "createDB": { + "value": true + }, + "dbType": { + "value": "SQL" + }, + "subnetId": { + "value": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateniccl-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "nicConfigCLLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/nic-config.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip-cl-copyIndex()" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-cl-copyIndex()", + "apiVersion": "2017-06-01", + "copy": { + "name": "nicCLLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "dependsOn": [ + "pipLoop", + "nicConfigCLLoop", + "Microsoft.Resources/deployments/nestedDeploymentNameVnet", + "Microsoft.Resources/deployments/nestedTemplatelbcl" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[reference(concat(variables('nestedDeploymentNameNICCL'), '-', copyIndex())).outputs.selectedConfiguration.value.publicIPAddress]", + "subnet": "[reference(concat(variables('nestedDeploymentNameNICCL'), '-', copyIndex())).outputs.selectedConfiguration.value.subnet]", + "loadBalancerBackendAddressPools": "[reference(variables('nestedDeploymentNameLBCL')).outputs.nicBackAddressPools.value]" + } + } + ] + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateprof-cl-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "osDiskPartsCLLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/os-disk-parts-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "" + }, + "imagePublisher": { + "value": "" + }, + "imageOffer": { + "value": "" + }, + "imageVersion": { + "value": "" + }, + "osDiskType": { + "value": "userImage" + }, + "osType": { + "value": "Linux" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-cl-copyIndex()" + }, + "storageType": { + "value": "Premium_LRS" + }, + "managedDiskId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatecl-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "vmCLLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clservercount" + }, + "dependsOn": [ + "nicCLLoop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-cl", + "osDiskPartsCLLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/server-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-cl-', copyIndex())).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-cl-', copyIndex())).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "userImage" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-cl-copyIndex()" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].clserversize" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "csExtensionScript": { + "value": "(csExtension)[variables(internalOSType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[variables(internalOSType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "" + }, + "avSetObj": { + "value": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-cl" + } + }, + "useAVSet": { + "value": true + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic-cl-copyIndex()" + }, + "dataDisksObj": { + "value": { + "copy": [ + { + "name": "dataDisks", + "count": 26, + "input": { + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty", + "diskSizeGB": "(clvmDataDisks)[copyIndex(dataDisks)].size" + } + } + ] + } + }, + "osType": { + "value": "Linux" + } + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-di", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": 20 + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatenicdi-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "nicConfigDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/nic-config.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-di-copyindex()", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedDeploymentNameVnet", + "nicConfigDILoop" + ], + "copy": { + "name": "nicDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": "[reference(concat(variables('nestedDeploymentNameNICDI'), '-', copyIndex())).outputs.selectedConfiguration.value.subnet]" + } + } + ] + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateprof-di-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "osDiskPartsDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/os-disk-parts-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "" + }, + "imagePublisher": { + "value": "" + }, + "imageOffer": { + "value": "" + }, + "imageVersion": { + "value": "" + }, + "osDiskType": { + "value": "userImage" + }, + "osType": { + "value": "Linux" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-di-copyIndex()" + }, + "storageType": { + "value": "Premium_LRS" + }, + "managedDiskId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatedi-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "vmDILoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "dependsOn": [ + "nicDILoop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-di", + "osDiskPartsDILoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-converged-md//shared/server-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-di-', copyIndex())).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-di-', copyIndex())).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "userImage" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-di-copyIndex()" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diserversize" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "csExtensionScript": { + "value": "(csExtension)[variables(internalOSType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[variables(internalOSType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "" + }, + "avSetObj": { + "value": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-di" + } + }, + "useAVSet": { + "value": true + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic-di-copyIndex()" + }, + "dataDisksObj": { + "value": { + "dataDisks": [ + { + "lun": 0, + "createOption": "Empty", + "diskSizeGB": 128 + } + ] + } + }, + "osType": { + "value": "Linux" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT479 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT479 new file mode 100644 index 0000000..79e35a1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT479 @@ -0,0 +1,198 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB-HANA.json" + ], + "timestamp": 1642962895708, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB-HANA.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT479", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT479", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('dbInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolDB": "[concat(variables('lbPrefix'), 'BackendPoolDB')]", + "loadBalancerFrontendDB": "[concat(variables('lbPrefix'), 'FrontendDB')]", + "lbProbePortDB": "[concat(variables('lbPrefix'), 'ProbePortDB')]", + "lbProbePortInternalDB": "[add(62500, parameters('dbInstanceNumber'))]", + "idleTimeoutInMinutesDB": 30, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendDB')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolDB')]" + } + ], + "loadBalancingRulesResult": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(30015, mul(parameters('dbInstanceNumber'), 100))]", + "backendPort": "[add(30015, mul(parameters('dbInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '3', padLeft(parameters('dbInstanceNumber'), 2, '0'), '15')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(30017, mul(parameters('dbInstanceNumber'), 100))]", + "backendPort": "[add(30017, mul(parameters('dbInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '3', padLeft(parameters('dbInstanceNumber'), 2, '0'), '17')]" + } + ], + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, parameters('dbInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortDB')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT48 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT48 new file mode 100644 index 0000000..1f6834c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT48 @@ -0,0 +1,55 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/diagnosticStorageAccountResource.json" + ], + "timestamp": 1642962883801, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/diagnosticStorageAccountResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT48", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT48", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageSettings": { + "type": "object" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "name": "storageSettings", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "storageSettings", + "location": "storageSettings", + "properties": { + "accountType": "storageSettings" + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT480 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT480 new file mode 100644 index 0000000..b7fd250 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT480 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB-SQL.json" + ], + "timestamp": 1642962895720, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB-SQL.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT480", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT480", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('dbInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolDB": "[concat(variables('lbPrefix'), 'BackendPoolDB')]", + "loadBalancerFrontendDB": "[concat(variables('lbPrefix'), 'FrontendDB')]", + "lbProbePortDB": "[concat(variables('lbPrefix'), 'ProbePortDB')]", + "lbProbePortInternalDB": "[add(62500, parameters('dbInstanceNumber'))]", + "idleTimeoutInMinutesDB": 30, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendDB')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolDB')]" + } + ], + "loadBalancingRulesResult": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendDB'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolDB'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortDB'))]" + }, + "protocol": "Tcp", + "frontendPort": 1433, + "backendPort": 1433, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '1433')]" + } + ], + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62500, parameters('dbInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortDB')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT481 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT481 new file mode 100644 index 0000000..4f4a1ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT481 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB0.json" + ], + "timestamp": 1642962895732, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-DB0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT481", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT481", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "dbInstanceNumber": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The instance number of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": [], + "type": "array" + }, + "frontendIPConfigurations": { + "value": [], + "type": "array" + }, + "backendAddressPools": { + "value": [], + "type": "array" + }, + "loadBalancingRules": { + "value": [], + "type": "array" + }, + "probes": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT482 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT482 new file mode 100644 index 0000000..50af8e2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT482 @@ -0,0 +1,487 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS-Linux.json" + ], + "timestamp": 1642962895784, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS-Linux.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT482", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT482", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolERS": "[concat(variables('lbPrefix'), 'BackendPoolERS')]", + "loadBalancerFrontendERS": "[concat(variables('lbPrefix'), 'FrontendERS')]", + "lbProbePortERS": "[concat(variables('lbPrefix'), 'ProbePortERS')]", + "lbProbePortInternalERS": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "idleTimeoutInMinutesERS": 30, + "loadBalancingRulesASCS": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRulesSCS": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersASCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "JAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "backendPort": "[add(3300, parameters('ersSCSInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]" + } + ], + "ABAP+JAVA": "[OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(3300, parameters('ersASCSInstanceNumber'))]\"), ('backendPort', \"[add(3300, parameters('ersASCSInstanceNumber'))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'))]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50013, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '13')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50014, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '14')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50016, mul(parameters('ersASCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersASCSInstanceNumber'), 2, '0'), '16')]\")])][OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(3300, parameters('ersSCSInstanceNumber'))]\"), ('backendPort', \"[add(3300, parameters('ersSCSInstanceNumber'))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '33', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'))]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50013, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '13')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50014, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '14')]\")]), OrderedDict([('properties', OrderedDict([('frontendIPConfiguration', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendERS'))]\")])), ('backendAddressPool', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]\")])), ('probe', OrderedDict([('id', \"[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortERS'))]\")])), ('protocol', 'Tcp'), ('frontendPort', \"[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('backendPort', \"[add(50016, mul(parameters('ersSCSInstanceNumber'), 100))]\"), ('enableFloatingIP', True), ('idleTimeoutInMinutes', \"[variables('idleTimeoutInMinutesERS')]\")])), ('name', \"[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ersSCSInstanceNumber'), 2, '0'), '16')]\")])]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolERS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendERS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolERS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62100, parameters('ersASCSInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortERS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT483 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT483 new file mode 100644 index 0000000..ea5a911 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT483 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS-Windows.json" + ], + "timestamp": 1642962895798, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS-Windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT483", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT483", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[parameters('nicBackAddressPoolsArray')]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[parameters('frontendIPConfigurationsArray')]", + "type": "array" + }, + "backendAddressPools": { + "value": "[parameters('backendAddressPoolsArray')]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[parameters('loadBalancingRulesArray')]", + "type": "array" + }, + "probes": { + "value": "[parameters('probesArray')]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT484 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT484 new file mode 100644 index 0000000..aafca5e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT484 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS0.json" + ], + "timestamp": 1642962895809, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-ERS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT484", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT484", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "ersASCSInstanceNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance number of the ABAP ERS instance" + } + }, + "ersSCSInstanceNumber": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance number of the JAVA ERS instance" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": [], + "type": "array" + }, + "frontendIPConfigurations": { + "value": [], + "type": "array" + }, + "backendAddressPools": { + "value": [], + "type": "array" + }, + "loadBalancingRules": { + "value": [], + "type": "array" + }, + "probes": { + "value": [], + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT485 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT485 new file mode 100644 index 0000000..fc17107 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT485 @@ -0,0 +1,496 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-SCS.json" + ], + "timestamp": 1642962895870, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-SCS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT485", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT485", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "ascsInstanceNumber": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "The instance number of the ASCS." + } + }, + "scsInstanceNumber": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance number of the SCS." + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "[concat('lb', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]", + "lbrulePrefix": "[concat(variables('lbPrefix'), 'Rule')]", + "backendPoolxSCS": "[concat(variables('lbPrefix'), 'BackendPoolxSCS')]", + "loadBalancerFrontendxSCS": "[concat(variables('lbPrefix'), 'FrontendxSCS')]", + "lbProbePortxSCS": "[concat(variables('lbPrefix'), 'ProbePortxSCS')]", + "lbProbePortInternalxSCS": "[add(62000, parameters('ascsInstanceNumber'))]", + "idleTimeoutInMinutesxSCS": 30, + "lbRulesFileShare": { + "Linux": [], + "Windows": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 445, + "backendPort": 445, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '445')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": 5985, + "backendPort": 5985, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5985')]" + } + ] + }, + "lbRulesABAP": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3600, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '36', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('ascsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('ascsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('ascsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('ascsInstanceNumber'), 2, '0'), '16')]" + } + ], + "lbRulesJAVA": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3200, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '32', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3300, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '33', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "backendPort": "[add(3900, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '39', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "backendPort": "[add(8100, parameters('scsInstanceNumber'))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '81', padLeft(parameters('scsInstanceNumber'), 2, '0'))]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50013, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '13')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50014, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '14')]" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/', variables('loadBalancerFrontendxSCS'))]" + }, + "backendAddressPool": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + }, + "probe": { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/', variables('lbProbePortxSCS'))]" + }, + "protocol": "Tcp", + "frontendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "backendPort": "[add(50016, mul(parameters('scsInstanceNumber'), 100))]", + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat(variables('lbrulePrefix'), '5', padLeft(parameters('scsInstanceNumber'), 2, '0'), '16')]" + } + ], + "loadBalancingRules": { + "ABAP": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'))]", + "JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesJAVA'))]", + "ABAP+JAVA": "[concat(variables('lbRulesFileShare')[parameters('osType')], variables('lbRulesABAP'), variables('lbRulesJAVA'))]" + }, + "nicBackAddressPoolsResult": [ + { + "id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/', variables('backendPoolxSCS'))]" + } + ], + "frontendIPConfigurationsResult": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[variables('loadBalancerFrontendxSCS')]" + } + ], + "backendAddressPoolsResult": [ + { + "name": "[variables('backendPoolxSCS')]" + } + ], + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(stackType)]", + "probesResult": [ + { + "properties": { + "protocol": "Tcp", + "port": "[add(62000, parameters('ascsInstanceNumber'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[variables('lbProbePortxSCS')]" + } + ] + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(parameters('nicBackAddressPoolsArray'), variables('nicBackAddressPoolsResult'))]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[concat(parameters('frontendIPConfigurationsArray'), variables('frontendIPConfigurationsResult'))]", + "type": "array" + }, + "backendAddressPools": { + "value": "[concat(parameters('backendAddressPoolsArray'), variables('backendAddressPoolsResult'))]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[concat(parameters('loadBalancingRulesArray'), variables('loadBalancingRulesResult'))]", + "type": "array" + }, + "probes": { + "value": "[concat(parameters('probesArray'), variables('probesResult'))]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT486 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT486 new file mode 100644 index 0000000..b87de3a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT486 @@ -0,0 +1,237 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-SCS0.json" + ], + "timestamp": 1642962895887, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/lb-SCS0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT486", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT486", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "stackType": { + "type": "string", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "The type of the Operating System" + } + }, + "ascsInstanceNumber": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "The instance number of the ASCS." + } + }, + "scsInstanceNumber": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance number of the SCS." + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "nicBackAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backaddress pools for the Network Interface creation" + } + }, + "frontendIPConfigurationsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the frontend IP configurations for the Load Balancer creation" + } + }, + "backendAddressPoolsArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the backend address pools for the Load Balancer creation" + } + }, + "loadBalancingRulesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the fload balancing rules for the Load Balancer creation" + } + }, + "probesArray": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The array that contains the probes for the Load Balancer creation" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbPrefix": "lb", + "lbrulePrefix": "lbRule", + "loadBalancerFrontendNFS": "lbFrontendNFS", + "lbProbePortNFS": "lbProbePortNFS", + "backendPoolNFS": "lbBackendPoolNFS", + "lbProbePortInternalNFS": 61000, + "idleTimeoutInMinutesNFS": 30, + "nicBackAddressPools": { + "Linux": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + } + ], + "Windows": [] + }, + "frontendIPConfigurations": { + "Linux": [ + { + "properties": { + "subnet": { + "id": "subnetId" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "lbFrontendNFS" + } + ], + "Windows": [] + }, + "backendAddressPools": { + "Linux": [ + { + "name": "lbBackendPoolNFS" + } + ], + "Windows": [] + }, + "loadBalancingRules": { + "Linux": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/frontendIpConfigurations/lbFrontendNFS" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/probes/lbProbePortNFS" + }, + "protocol": "Tcp", + "frontendPort": 2049, + "backendPort": 2049, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbRule2049T" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/frontendIpConfigurations/lbFrontendNFS" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/backendAddressPools/lbBackendPoolNFS" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancerName/probes/lbProbePortNFS" + }, + "protocol": "Udp", + "frontendPort": 2049, + "backendPort": 2049, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "lbRule2049U" + } + ], + "Windows": [] + }, + "probes": { + "Linux": [ + { + "properties": { + "protocol": "Tcp", + "port": 61000, + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "lbProbePortNFS" + } + ], + "Windows": [] + }, + "nicBackAddressPoolsResult": "(nicBackAddressPools)[parameters(osType)]", + "frontendIPConfigurationsResult": "(frontendIPConfigurations)[parameters(osType)]", + "backendAddressPoolsResult": "(backendAddressPools)[parameters(osType)]", + "loadBalancingRulesResult": "(loadBalancingRules)[parameters(osType)]", + "probesResult": "(probes)[parameters(osType)]" + }, + "resources": [], + "outputs": { + "nicBackAddressPools": { + "value": "[variables('nicBackAddressPoolsResult')]", + "type": "array" + }, + "frontendIPConfigurations": { + "value": "[variables('frontendIPConfigurationsResult')]", + "type": "array" + }, + "backendAddressPools": { + "value": "[variables('backendAddressPoolsResult')]", + "type": "array" + }, + "loadBalancingRules": { + "value": "[variables('loadBalancingRulesResult')]", + "type": "array" + }, + "probes": { + "value": "[variables('probesResult')]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT487 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT487 new file mode 100644 index 0000000..957a063 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT487 @@ -0,0 +1,386 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/loadbalancer.json" + ], + "timestamp": 1642962895894, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/loadbalancer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT487", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT487", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "loadBalancerName": { + "type": "string", + "metadata": { + "description": "The name of the the load balancer" + } + }, + "sapSystemCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of SAP systems for which the load balancer should be configured" + } + }, + "stackType": { + "type": "string", + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "defaultValue": "Windows", + "metadata": { + "description": "The type of the Operating System" + } + }, + "createXSCS": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the load balancer should be configured for one or more ASCS/SCS." + } + }, + "createDB": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Determines if the load balancer should be configured for one or more databases." + } + }, + "dbType": { + "type": "string", + "defaultValue": "SQL", + "metadata": { + "description": "The type of the database" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "ascsInstanceNumber": 0, + "scsInstanceNumber": 1, + "ersASCSInstanceNumber": 2, + "ersSCSInstanceNumber": 3, + "dbInstanceNumber": 3, + "nestedDeploymentNameLBSCS": "loadBalancerNameLBSCS", + "nestedDeploymentNameLBERS": "loadBalancerNameLBERS", + "nestedDeploymentNameLBDB": "loadBalancerNameLBDB", + "scsTemplates": { + "true": "lb-SCS.json", + "false": "lb-SCS0.json" + }, + "ersTemplates": { + "true": "lb-ERS-Windows.json", + "false": "lb-ERS0.json" + }, + "dbTemplates": { + "true": "lb-DB-SQL.json", + "false": "lb-DB0.json" + }, + "scsTemplate": "(scsTemplates)[string(parameters(createXSCS))]", + "ersTemplate": "(ersTemplates)[string(parameters(createXSCS))]", + "dbTemplate": "(dbTemplates)[string(parameters(createDB))]" + }, + "resources": [ + { + "apiVersion": "2017-05-10", + "name": "loadBalancerNameLBSCS0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/lb-SCS0.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ascsInstanceNumber": { + "value": 0 + }, + "scsInstanceNumber": { + "value": 1 + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "[concat(variables('nestedDeploymentNameLBSCS'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/loadBalancerNameLBSCS0" + ], + "copy": { + "name": "scsLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/(scsTemplates)[string(parameters(createXSCS))] parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Windows" + }, + "ascsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ascsInstanceNumber'))]" + }, + "scsInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('scsInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBSCS'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "loadBalancerNameLBERS0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/lb-ERS0.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "stackType": { + "value": "ABAP" + }, + "loadBalancerName": { + "value": "loadBalancerName" + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "[concat(variables('nestedDeploymentNameLBERS'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/loadBalancerNameLBERS0" + ], + "copy": { + "name": "ersLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/(ersTemplates)[string(parameters(createXSCS))] parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "stackType": { + "value": "ABAP" + }, + "ersASCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersASCSInstanceNumber'))]" + }, + "ersSCSInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('ersSCSInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBERS'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "loadBalancerNameLBDB0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/lb-DB0.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "subnetId": { + "value": "subnetId" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "[concat(variables('nestedDeploymentNameLBDB'), copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/loadBalancerNameLBDB0" + ], + "copy": { + "name": "dbLoop", + "count": 1 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/sap-file-server-md//shared/(dbTemplates)[string(parameters(createDB))] parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "loadBalancerName" + }, + "dbInstanceNumber": { + "value": "[add(mul(copyIndex(), 10), variables('dbInstanceNumber'))]" + }, + "subnetId": { + "value": "subnetId" + }, + "nicBackAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.nicBackAddressPools.value]" + }, + "frontendIPConfigurationsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.frontendIPConfigurations.value]" + }, + "backendAddressPoolsArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.backendAddressPools.value]" + }, + "loadBalancingRulesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.loadBalancingRules.value]" + }, + "probesArray": { + "value": "[reference(concat(variables('nestedDeploymentNameLBDB'), copyIndex())).outputs.probes.value]" + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancerName", + "apiVersion": "2015-06-15", + "dependsOn": [ + "scsLoop", + "ersLoop", + "dbLoop" + ], + "location": "[resourceGroup().location]", + "properties": { + "frontendIPConfigurations": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.frontendIPConfigurations.value)]", + "backendAddressPools": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.backendAddressPools.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.backendAddressPools.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.backendAddressPools.value)]", + "loadBalancingRules": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.loadBalancingRules.value)]", + "probes": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.probes.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.probes.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.probes.value)]" + } + } + ], + "outputs": { + "nicBackAddressPools": { + "value": "[concat(reference(concat(variables('nestedDeploymentNameLBSCS'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value, reference(concat(variables('nestedDeploymentNameLBERS'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value, reference(concat(variables('nestedDeploymentNameLBDB'), parameters('sapSystemCount'))).outputs.nicBackAddressPools.value)]", + "type": "array" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT488 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT488 new file mode 100644 index 0000000..0865bac --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT488 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newnsg.json" + ], + "timestamp": 1642962895902, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT488", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT488", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the network security group." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[parameters(osType)]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": "(osSecurityRules)[parameters(osType)]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT489 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT489 new file mode 100644 index 0000000..a44ad0b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT489 @@ -0,0 +1,66 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newpip.json" + ], + "timestamp": 1642962895910, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newpip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT489", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT489", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIpName": { + "type": "string", + "metadata": { + "description": "Name of the public IP address." + } + }, + "publicIPAddressType": { + "type": "string", + "metadata": { + "description": "Type of the public IP address, static or dynamic" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIpName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "publicIPAddressType" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT49 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT49 new file mode 100644 index 0000000..0facefb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT49 @@ -0,0 +1,679 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-be-virtualmachines-with-extensions.json" + ], + "timestamp": 1642962883832, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-be-virtualmachines-with-extensions.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT49", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT49", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "computeSettings": { + "type": "object" + }, + "networkSettings": { + "type": "object" + }, + "keyvaultSettings": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "computeSettings", + "path": "computeSettings" + } + ] + } + }, + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings0", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings0" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "computeSettings", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/chef-backend/chef-backend-install.sh keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "computeSettings", + "path": "computeSettings" + } + ] + } + }, + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings1", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings1" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "computeSettings", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/computeSettings/extensions/computeSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/chef-backend/chef-backend-install.sh keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "computeSettings", + "path": "computeSettings" + } + ] + } + }, + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings2", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings2" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "computeSettings", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/computeSettings/extensions/computeSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/chef-backend/chef-backend-install.sh keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "computeSettings", + "path": "computeSettings" + } + ] + } + }, + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings3", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings3" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "computeSettings", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/opscode/chef-frontend-install.sh keyvaultSettings computeSettings computeSettings computeSettings computeSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "computeSettings", + "path": "computeSettings" + } + ] + } + }, + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings4", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings4" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings" + ], + "apiVersion": "computeSettings", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/opscode/chef-frontend-install.sh keyvaultSettings computeSettings computeSettings computeSettings computeSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "computeSettings", + "path": "computeSettings" + } + ] + } + }, + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings5", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings5" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings" + ], + "apiVersion": "computeSettings", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/opscode/chef-frontend-install.sh keyvaultSettings computeSettings computeSettings computeSettings computeSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "computeSettings", + "path": "computeSettings" + } + ] + } + }, + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings6", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings6" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings" + ], + "apiVersion": "computeSettings", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/delivery/chef-automate-install.sh keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT490 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT490 new file mode 100644 index 0000000..64033aa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT490 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newvnetnsg.json" + ], + "timestamp": 1642962895919, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/newvnetnsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT490", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT490", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network." + } + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network." + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Name of the Virtual Network Subnet." + } + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "IP Address prefix of the Virtual Network Subnet." + } + }, + "nsgName": { + "type": "string", + "metadata": { + "description": "Name of the Network Security Group." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "vnetName", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgName" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT491 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT491 new file mode 100644 index 0000000..dfa0467 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT491 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/nic-config.json" + ], + "timestamp": 1642962895934, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/nic-config.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT491", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT491", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the virtual network subnet." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Name of the public ip address." + } + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "nicConfigurations": { + "true": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/ parameters('vnetName')/subnets/ parameters('subnetName')" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ parameters('publicIpName')" + } + }, + "false": { + "subnet": { + "id": "" + }, + "publicIPAddress": null, + "networkSecurityGroup": null + } + }, + "selectedConfiguration": "(nicConfigurations)[string(equals(length(parameters(subnetId)), 0))]" + }, + "resources": [], + "outputs": { + "selectedConfiguration": { + "value": "[variables('selectedConfiguration')]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT492 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT492 new file mode 100644 index 0000000..d1a2432 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT492 @@ -0,0 +1,168 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/os-disk-parts-md.json" + ], + "timestamp": 1642962895957, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/os-disk-parts-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT492", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT492", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageSku": { + "type": "string", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "metadata": { + "description": "Publisher of the image that should be used to deploy the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "metadata": { + "description": "Offer of the image that should be used to deploy the virtual machine." + } + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "SKU of the image that should be used to deploy the virtual machine." + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "storageType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage type that should be used for the virtual machine." + } + }, + "managedDiskId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Id of the managed disk." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osDiskCaching": "ReadWrite", + "osDiskParts": { + "image": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "latest" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "userImage": { + "imageReference": { + "id": "" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "osdisk": { + "imageReference": null, + "osDisk": { + "name": "vmName-osdisk", + "osType": "osType", + "caching": "ReadWrite", + "createOption": "Attach", + "managedDisk": { + "id": "" + } + } + } + } + }, + "resources": [], + "outputs": { + "imageReference": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].imageReference]", + "type": "object" + }, + "osDisk": { + "value": "[variables('osDiskParts')[parameters('osDiskType')].osDisk]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT493 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT493 new file mode 100644 index 0000000..850444e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT493 @@ -0,0 +1,267 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/server-md.json" + ], + "timestamp": 1642962895979, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/shared/server-md.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT493", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT493", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "imageReference": { + "type": "object", + "metadata": { + "description": "imageReference object that should be used to create the virtual machine" + } + }, + "osDisk": { + "type": "object", + "metadata": { + "description": "osDisk object that should be used to create the virtual machine" + } + }, + "osDiskType": { + "type": "string", + "allowedValues": [ + "image", + "userImage", + "osdisk" + ], + "metadata": { + "description": "The type of OS disk." + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Prefix of the virtual machine name." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "csExtensionScript": { + "type": "string", + "metadata": { + "description": "Script that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptCall": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "csExtensionscriptArgs": { + "type": "string", + "metadata": { + "description": "Script call that should be passed to the CustomScriptExtension." + } + }, + "avSetObj": { + "type": "object", + "metadata": { + "description": "Availability set." + } + }, + "useAVSet": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Availability set." + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the network interface." + } + }, + "dataDisksObj": { + "type": "object", + "metadata": { + "description": "Information about the data disks that the VM should have." + } + }, + "osType": { + "type": "string", + "metadata": { + "description": "URL to github templates." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "availableAVSetObj": { + "true": "avSetObj", + "false": null + }, + "internalAVSetObj": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0" + } + }, + "cseExtPublisher": "(csExtension)[parameters(osType)].Publisher", + "cseExtName": "(csExtension)[parameters(osType)].Name", + "cseExtVersion": "(csExtension)[parameters(osType)].Version", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + }, + "availableProperties": { + "image": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "userImage": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": "imageReference", + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "osdisk": { + "availabilitySet": "(availableAVSetObj)[toLower(string(parameters(useAVSet)))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "storageProfile": { + "osDisk": "osDisk", + "dataDisks": "dataDisksObj" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + } + }, + "internalProperties": "(availableProperties)[parameters(osDiskType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "properties": "(availableProperties)[parameters(osDiskType)]" + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/(csExtension)[parameters(osType)].Name", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vmName" + ], + "properties": { + "publisher": "(csExtension)[parameters(osType)].Publisher", + "type": "(csExtension)[parameters(osType)].Name", + "typeHandlerVersion": "(csExtension)[parameters(osType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "csExtensionScript" + ], + "commandToExecute": "csExtensionscriptCall csExtensionscriptArgs" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT494 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT494 new file mode 100644 index 0000000..217e537 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT494 @@ -0,0 +1,1241 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-user-image-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962895988, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-3-tier-user-image-md/azuredeploy.json", + "/application-workloads/sap/sap-3-tier-user-image-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT494", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT494", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "maxLength": 3, + "minLength": 3, + "metadata": { + "description": "SAP System ID." + }, + "value": "DEV" + }, + "stackType": { + "type": "string", + "allowedValues": [ + "ABAP", + "JAVA", + "ABAP+JAVA" + ], + "defaultValue": "ABAP", + "metadata": { + "description": "The stack type of the SAP system." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The operating system type of the private OS image." + }, + "value": "Linux" + }, + "dbType": { + "type": "string", + "allowedValues": [ + "SQL", + "HANA" + ], + "defaultValue": "SQL", + "metadata": { + "description": "The database type you want to use on the cluster. This information is used to create the load balancer" + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 30.000 SAPS", + "Medium < 70.000 SAPS", + "Large < 180.000 SAPS", + "X-Large < 250.000 SAPS" + ], + "defaultValue": "Small < 30.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + }, + "value": "Demo" + }, + "systemAvailability": { + "type": "string", + "allowedValues": [ + "HA", + "Not HA" + ], + "defaultValue": "Not HA", + "metadata": { + "description": "Determines whether this is a high available deployment or not. A HA deployment contains multiple instances of single point of failures." + }, + "value": "HA" + }, + "userImageId": { + "type": "string", + "metadata": { + "description": "Id of the user image." + }, + "value": "" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "internalOSType": "Linux", + "csExtension": { + "Windows": { + "script": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/configureSAPVM.ps1 parameters('_artifactsLocationSasToken')", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File .\\shared\\configureSAPVM.ps1" + }, + "Linux": { + "script": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/configureSAPVM.sh parameters('_artifactsLocationSasToken')", + "scriptCall": "sh configureSAPVM.sh" + } + }, + "vmSizes": { + "Demo": { + "Not HA": { + "dbserversize": "Standard_D4s_v3", + "dbservercount": 1, + "dbserverdisks": [ + { + "size": 128 + } + ], + "ascsserversize": "Standard_D2s_v3", + "ascsservercount": 1, + "diserversize": "Standard_D2s_v3", + "diservercount": 1 + }, + "HA": { + "dbserversize": "Standard_D4s_v3", + "dbservercount": 2, + "dbserverdisks": [ + { + "size": 128 + } + ], + "ascsserversize": "Standard_D2s_v3", + "ascsservercount": 2, + "diserversize": "Standard_D2s_v3", + "diservercount": 2 + } + }, + "Small < 30.000 SAPS": { + "Not HA": { + "dbserversize": "Standard_D8s_v3", + "dbservercount": 1, + "dbserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "ascsserversize": "Standard_D4s_v3", + "ascsservercount": 1, + "diserversize": "Standard_D8s_v3", + "diservercount": 1 + }, + "HA": { + "dbserversize": "Standard_D8s_v3", + "dbservercount": 2, + "dbserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "ascsserversize": "Standard_D4s_v3", + "ascsservercount": 2, + "diserversize": "Standard_D8s_v3", + "diservercount": 2 + } + }, + "Medium < 70.000 SAPS": { + "Not HA": { + "dbserversize": "Standard_D16s_v3", + "dbservercount": 1, + "dbserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "ascsserversize": "Standard_D4s_v3", + "ascsservercount": 1, + "diserversize": "Standard_D8s_v3", + "diservercount": 4 + }, + "HA": { + "dbserversize": "Standard_D16s_v3", + "dbservercount": 2, + "dbserverdisks": [ + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + }, + { + "size": 512 + } + ], + "ascsserversize": "Standard_D4s_v3", + "ascsservercount": 2, + "diserversize": "Standard_D8s_v3", + "diservercount": 4 + } + }, + "Large < 180.000 SAPS": { + "Not HA": { + "dbserversize": "Standard_GS4", + "dbservercount": 1, + "dbserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "ascsserversize": "Standard_D4s_v3", + "ascsservercount": 1, + "diserversize": "Standard_D16s_v3", + "diservercount": 6 + }, + "HA": { + "dbserversize": "Standard_GS4", + "dbservercount": 2, + "dbserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 512 + } + ], + "ascsserversize": "Standard_D4s_v3", + "ascsservercount": 2, + "diserversize": "Standard_D16s_v3", + "diservercount": 6 + } + }, + "X-Large < 250.000 SAPS": { + "Not HA": { + "dbserversize": "Standard_GS5", + "dbservercount": 1, + "dbserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "ascsserversize": "Standard_D4s_v3", + "ascsservercount": 1, + "diserversize": "Standard_D16s_v3", + "diservercount": 10 + }, + "HA": { + "dbserversize": "Standard_GS5", + "dbservercount": 2, + "dbserverdisks": [ + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + }, + { + "size": 1023 + } + ], + "ascsserversize": "Standard_D4s_v3", + "ascsservercount": 2, + "diserversize": "Standard_D16s_v3", + "diservercount": 10 + } + } + }, + "dbvmCount": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].dbservercount", + "dbvmDataDisks": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].dbserverdisks", + "ascsvmCount": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].ascsservercount", + "divmCount": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vmName": "[toLower(parameters('sapSystemId'))]", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "nestedDeploymentName": "nestedTemplate", + "nestedDeploymentNameVNet": "nestedTemplatevnet", + "nestedDeploymentNamePIP": "nestedTemplatepip", + "nestedDeploymentNameASCS": "nestedTemplateascs", + "nestedDeploymentNameDB": "nestedTemplatedb", + "nestedDeploymentNameDI": "nestedTemplatedi", + "nestedDeploymentNameProf": "nestedTemplateprof", + "nestedDeploymentNameNIC": "nestedTemplatenic", + "nestedDeploymentNameNICASCS": "nestedTemplatenicascs", + "nestedDeploymentNameNICDB": "nestedTemplatenicdb", + "nestedDeploymentNameNICDI": "nestedTemplatenicdi", + "nestedDeploymentNameLBASCS": "nestedTemplatelbascs", + "nestedDeploymentNameLBDB": "nestedTemplatelbdb", + "publicIpNameASCS": "[toLower(parameters('sapSystemId'))]-pip-ascs", + "avSetNameASCS": "[toLower(parameters('sapSystemId'))]-avset-ascs", + "nestedDeploymentNameNSG": "nestedTemplateascsnsg", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg", + "loadBalancerNameASCS": "[toLower(parameters('sapSystemId'))]-lb-ascs", + "vmNameASCS": "[toLower(parameters('sapSystemId'))]-ascs", + "nicNameASCS": "[toLower(parameters('sapSystemId'))]-nic-ascs", + "avSetNameDB": "[toLower(parameters('sapSystemId'))]-avset-db", + "loadBalancerNameDB": "[toLower(parameters('sapSystemId'))]-lb-db", + "nicNameDB": "[toLower(parameters('sapSystemId'))]-nic-db", + "vmNameDB": "[toLower(parameters('sapSystemId'))]-db", + "avSetNameDI": "[toLower(parameters('sapSystemId'))]-avset-di", + "nicNameDI": "[toLower(parameters('sapSystemId'))]-nic-di", + "vmNameDI": "[toLower(parameters('sapSystemId'))]-di", + "osDiskType": "userImage" + }, + "resources": [ + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateascsnsg", + "type": "Microsoft.Resources/deployments", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/newnsg.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg" + }, + "osType": { + "value": "Linux" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedDeploymentNameVnet", + "type": "Microsoft.Resources/deployments", + "condition": false, + "dependsOn": [ + "Microsoft.Resources/deployments/nestedTemplateascsnsg" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/newvnetnsg.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "Subnet" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nsgName": { + "value": "[toLower(parameters('sapSystemId'))]-nsg" + } + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-ascs", + "apiVersion": "2016-04-30-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": 20 + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatepip-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "pipASCSloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].ascsservercount" + }, + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/newpip.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip-ascs-copyIndex()" + }, + "publicIPAddressType": { + "value": "Dynamic" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatelbascs", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedDeploymentNameVnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/loadbalancer.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "[toLower(parameters('sapSystemId'))]-lb-ascs" + }, + "sapSystemCount": { + "value": 1 + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Linux" + }, + "createXSCS": { + "value": true + }, + "createDB": { + "value": false + }, + "subnetId": { + "value": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatenicascs-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "nicConfigASCSloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].ascsservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/nic-config.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "[toLower(parameters('sapSystemId'))]-pip-ascs-copyIndex()" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-ascs-copyIndex()", + "apiVersion": "2017-06-01", + "copy": { + "name": "nicASCSLoop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].ascsservercount" + }, + "dependsOn": [ + "pipASCSloop", + "nicConfigASCSloop", + "Microsoft.Resources/deployments/nestedDeploymentNameVnet", + "Microsoft.Resources/deployments/nestedTemplatelbascs" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[reference(concat(variables('nestedDeploymentNameNICASCS'), '-', copyIndex())).outputs.selectedConfiguration.value.publicIPAddress]", + "subnet": "[reference(concat(variables('nestedDeploymentNameNICASCS'), '-', copyIndex())).outputs.selectedConfiguration.value.subnet]", + "loadBalancerBackendAddressPools": "[reference(variables('nestedDeploymentNameLBASCS')).outputs.nicBackAddressPools.value]" + } + } + ] + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateprof-ascs-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "osDiskPartsASCSloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].ascsservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/os-disk-parts-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "" + }, + "imagePublisher": { + "value": "" + }, + "imageOffer": { + "value": "" + }, + "imageVersion": { + "value": "" + }, + "osDiskType": { + "value": "userImage" + }, + "osType": { + "value": "Linux" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-ascs-copyIndex()" + }, + "storageType": { + "value": "Premium_LRS" + }, + "managedDiskId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateascs-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "serverASCSloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].ascsservercount" + }, + "dependsOn": [ + "nicASCSLoop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-ascs", + "osDiskPartsASCSloop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/server-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-ascs-', copyIndex())).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-ascs-', copyIndex())).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "userImage" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-ascs-copyIndex()" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].ascsserversize" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "csExtensionScript": { + "value": "(csExtension)[variables(internalOSType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[variables(internalOSType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "" + }, + "avSetObj": { + "value": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-ascs" + } + }, + "useAVSet": { + "value": true + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic-ascs-copyIndex()" + }, + "dataDisksObj": { + "value": { + "dataDisks": [ + { + "lun": 0, + "createOption": "Empty", + "diskSizeGB": 128 + } + ] + } + }, + "osType": { + "value": "Linux" + } + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-db", + "apiVersion": "2016-04-30-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": 20 + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatelbdb", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedDeploymentNameVnet" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/loadbalancer.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "loadBalancerName": { + "value": "[toLower(parameters('sapSystemId'))]-lb-db" + }, + "sapSystemCount": { + "value": 1 + }, + "stackType": { + "value": "ABAP" + }, + "osType": { + "value": "Linux" + }, + "createXSCS": { + "value": false + }, + "createDB": { + "value": true + }, + "dbType": { + "value": "SQL" + }, + "subnetId": { + "value": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatenicdb-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "nicConfigDBloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].dbservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/nic-config.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-db-copyIndex()", + "apiVersion": "2017-06-01", + "copy": { + "name": "nicDBloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].dbservercount" + }, + "dependsOn": [ + "Microsoft.Resources/deployments/nestedDeploymentNameVnet", + "Microsoft.Resources/deployments/nestedTemplatelbdb", + "nicConfigDBloop" + ], + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": "[reference(concat(variables('nestedDeploymentNameNICDB'), '-', copyIndex())).outputs.selectedConfiguration.value.subnet]", + "loadBalancerBackendAddressPools": "[reference(variables('nestedDeploymentNameLBDB')).outputs.nicBackAddressPools.value]" + } + } + ] + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateprof-db-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "osDiskPartsDBloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].dbservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/os-disk-parts-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "" + }, + "imagePublisher": { + "value": "" + }, + "imageOffer": { + "value": "" + }, + "imageVersion": { + "value": "" + }, + "osDiskType": { + "value": "userImage" + }, + "osType": { + "value": "Linux" + }, + "sidlower": { + "value": "[toLower(parameters('sapSystemId'))]" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-db-copyIndex()" + }, + "storageType": { + "value": "Premium_LRS" + }, + "managedDiskId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatedb-copyIndex()", + "copy": { + "name": "serverDBloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].dbservercount" + }, + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "nicDBloop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-db", + "osDiskPartsDBloop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/server-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-db-', copyIndex())).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-db-', copyIndex())).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "userImage" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-db-copyIndex()" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].dbserversize" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "csExtensionScript": { + "value": "(csExtension)[variables(internalOSType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[variables(internalOSType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "" + }, + "avSetObj": { + "value": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-db" + } + }, + "useAVSet": { + "value": true + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic-db-copyIndex()" + }, + "dataDisksObj": { + "value": { + "copy": [ + { + "name": "dataDisks", + "count": 26, + "input": { + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty", + "diskSizeGB": "(dbvmDataDisks)[copyIndex(dataDisks)].size" + } + } + ] + } + }, + "osType": { + "value": "Linux" + } + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "[toLower(parameters('sapSystemId'))]-avset-di", + "apiVersion": "2016-04-30-preview", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": 20 + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatenicdi-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "nicConfigDIloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/nic-config.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vnetName": { + "value": "[toLower(parameters('sapSystemId'))]-vnet" + }, + "subnetName": { + "value": "Subnet" + }, + "publicIpName": { + "value": "" + }, + "subnetId": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(parameters('sapSystemId'))]-nic-di-copyindex()", + "apiVersion": "2017-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments/nestedDeploymentNameVnet", + "nicConfigDIloop" + ], + "copy": { + "name": "nicDIloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": "[reference(concat(variables('nestedDeploymentNameNICDI'), '-', copyIndex())).outputs.selectedConfiguration.value.subnet]" + } + } + ] + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplateprof-di-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "osDiskPartsDIloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/os-disk-parts-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageSku": { + "value": "" + }, + "imagePublisher": { + "value": "" + }, + "imageOffer": { + "value": "" + }, + "imageVersion": { + "value": "" + }, + "osDiskType": { + "value": "userImage" + }, + "osType": { + "value": "Linux" + }, + "sidlower": { + "value": "[toLower(parameters('sapSystemId'))]" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-di-copyIndex()" + }, + "storageType": { + "value": "Premium_LRS" + }, + "managedDiskId": { + "value": "" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "name": "nestedTemplatedi-copyIndex()", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "serverDIloop", + "count": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diservercount" + }, + "dependsOn": [ + "nicDIloop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-di", + "osDiskPartsDIloop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sap/sap-3-tier-user-image-md//shared/server-md.json parameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "imageReference": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-di-', copyIndex())).outputs.imageReference.value]" + }, + "osDisk": { + "value": "[reference(concat(variables('nestedDeploymentNameProf'), '-di-', copyIndex())).outputs.osDisk.value]" + }, + "osDiskType": { + "value": "userImage" + }, + "vmName": { + "value": "[toLower(parameters('sapSystemId'))]-di-copyIndex()" + }, + "vmSize": { + "value": "(vmSizes)[parameters(sapSystemSize)][parameters(systemAvailability)].diserversize" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "csExtensionScript": { + "value": "(csExtension)[variables(internalOSType)].script" + }, + "csExtensionscriptCall": { + "value": "(csExtension)[variables(internalOSType)].scriptCall" + }, + "csExtensionscriptArgs": { + "value": "" + }, + "avSetObj": { + "value": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('sapSystemId'))]-avset-di" + } + }, + "useAVSet": { + "value": true + }, + "nicName": { + "value": "[toLower(parameters('sapSystemId'))]-nic-di-copyIndex()" + }, + "dataDisksObj": { + "value": { + "dataDisks": [ + { + "lun": 0, + "createOption": "Empty", + "diskSizeGB": 128 + } + ] + } + }, + "osType": { + "value": "Linux" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT495 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT495 new file mode 100644 index 0000000..93b6b66 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT495 @@ -0,0 +1,594 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-file-server-md/azuredeploy.json", + "/application-workloads/sap/sap-file-server-md/azuredeploy.parameters.json" + ], + "timestamp": 1642962896003, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-file-server-md/azuredeploy.json", + "/application-workloads/sap/sap-file-server-md/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT495", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT495", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "resourcePrefix": { + "type": "string", + "maxLength": 6, + "minLength": 3, + "defaultValue": "dev", + "metadata": { + "description": "The prefix that should be used to create the resource names." + } + }, + "sapSystemCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of SAP systems that will use this file server" + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2016 Datacenter", + "SLES 12", + "SLES 12 BYOS", + "RHEL 7" + ], + "defaultValue": "Windows Server 2016 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "images": { + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "version": "latest", + "OSFamily": "Windows", + "OSType": "Windows" + }, + "SLES 12": { + "sku": "12-SP3", + "offer": "SLES-SAP", + "publisher": "SUSE", + "version": "latest", + "OSFamily": "SLES", + "OSType": "Linux" + }, + "SLES 12 BYOS": { + "sku": "12-SP3", + "offer": "SLES-SAP-BYOS", + "publisher": "SUSE", + "OSType": "Linux", + "OSFamily": "SLES", + "version": "latest" + }, + "RHEL 7": { + "sku": "7.4", + "offer": "RHEL", + "publisher": "RedHat", + "OSType": "Linux", + "OSFamily": "RHEL", + "version": "latest" + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/noop.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File scripts/noop.ps1" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/noop.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh noop.sh" + } + }, + "cseExtPublisher": "(csExtension)[variables(internalOSType)].Publisher", + "cseExtName": "(csExtension)[variables(internalOSType)].Name", + "cseExtVersion": "(csExtension)[variables(internalOSType)].Version", + "cseExtScript": "(csExtension)[variables(internalOSType)].script", + "cseExtCall": "(csExtension)[variables(internalOSType)].scriptCall", + "loadBalancingRulesLinux2049T": { + "copy": [ + { + "name": "loadBalancingRules", + "count": 1, + "input": { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations/', variables('fsloadBalancerName'), concat('lbFrontendFile', '-', copyIndex('loadBalancingRules')))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools/', variables('fsloadBalancerName'), concat('lbBackendFile', '-', copyIndex('loadBalancingRules')))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes/', variables('fsloadBalancerName'), concat('lbProbeFile', '-', copyIndex('loadBalancingRules')))]" + }, + "protocol": "Tcp", + "frontendPort": 2049, + "backendPort": 2049, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat('lbProbeFile2049T', '-', copyIndex('loadBalancingRules'))]" + } + } + ] + }, + "loadBalancingRulesLinux2049U": { + "copy": [ + { + "name": "loadBalancingRules", + "count": 1, + "input": { + "properties": { + "frontendIPConfiguration": { + "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations/', variables('fsloadBalancerName'), concat('lbFrontendFile', '-', copyIndex('loadBalancingRules')))]" + }, + "backendAddressPool": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools/', variables('fsloadBalancerName'), concat('lbBackendFile', '-', copyIndex('loadBalancingRules')))]" + }, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes/', variables('fsloadBalancerName'), concat('lbProbeFile', '-', copyIndex('loadBalancingRules')))]" + }, + "protocol": "Udp", + "frontendPort": 2049, + "backendPort": 2049, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 30 + }, + "name": "[concat('lbProbeFile2049U', '-', copyIndex('loadBalancingRules'))]" + } + } + ] + }, + "osFamilies": { + "Windows": { + "serversize": "Standard_D2s_v3", + "useFastNetwork": false, + "diskPerSystem": 2, + "servercount": 2, + "serverdisksSize": 128, + "needsLB": false, + "loadBalancingRules": "[createArray()]" + }, + "SLES": { + "serversize": "Standard_D2s_v3", + "useFastNetwork": false, + "diskPerSystem": 1, + "servercount": 2, + "serverdisksSize": 128, + "needsLB": true, + "loadBalancingRules": "(loadBalancingRulesLinux2049T).loadBalancingRules(loadBalancingRulesLinux2049U).loadBalancingRules" + }, + "RHEL": { + "serversize": "Standard_D2s_v3", + "useFastNetwork": false, + "diskPerSystem": 1, + "servercount": 3, + "serverdisksSize": 128, + "needsLB": false, + "loadBalancingRules": "[createArray()]" + } + }, + "fsvmCount": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].servercount", + "fsvmSize": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].serversize", + "fsdiskSize": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].serverdisksSize", + "fsvmDataDisks": "[mul(variables('osFamilies')[variables('images')[parameters('osType')].OSFamily].diskPerSystem, parameters('sapSystemCount'))]", + "needsLB": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].needsLB", + "loadBalancingRules": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].loadBalancingRules", + "useFastNetwork": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].useFastNetwork", + "frontendIPConfigurations": { + "copy": [ + { + "name": "frontendIPConfigurations", + "count": 1, + "input": { + "properties": { + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "privateIPAllocationMethod": "Dynamic" + }, + "name": "[concat('lbFrontendFile', '-', copyIndex('frontendIPConfigurations'))]" + } + } + ] + }, + "backendAddressPools": { + "copy": [ + { + "name": "backendAddressPools", + "count": 1, + "input": { + "name": "[concat('lbBackendFile', '-', copyIndex('backendAddressPools'))]" + } + } + ] + }, + "probes": { + "copy": [ + { + "name": "probes", + "count": 1, + "input": { + "properties": { + "protocol": "Tcp", + "port": "[add(61000, copyIndex('probes'))]", + "intervalInSeconds": 5, + "numberOfProbes": 2 + }, + "name": "[concat('lbProbeFile', '-', copyIndex('probes'))]" + } + } + ] + }, + "nicBackAddressPools": { + "copy": [ + { + "name": "nicBackAddressPools", + "count": 1, + "input": { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools/', variables('fsloadBalancerName'), concat('lbBackendFile', '-', copyIndex('nicBackAddressPools')))]" + } + } + ] + }, + "sidlower": "[toLower(parameters('resourcePrefix'))]", + "vmName": "[toLower(parameters('resourcePrefix'))]-fs", + "vnetName": "[toLower(parameters('resourcePrefix'))]-vnet", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('resourcePrefix'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "fspublicIpName": "[toLower(parameters('resourcePrefix'))]-pip-fs", + "fsavSetName": "[toLower(parameters('resourcePrefix'))]-avset-fs", + "nsgName": "[toLower(parameters('resourcePrefix'))]-nsg", + "fsloadBalancerName": "[toLower(parameters('resourcePrefix'))]-lb-fs", + "fsnicName": "[toLower(parameters('resourcePrefix'))]-nic-fs", + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 150, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 150, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]" + }, + "resources": [ + { + "condition": "[empty(parameters('subnetId'))]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "[toLower(parameters('resourcePrefix'))]-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "condition": "[empty(parameters('subnetId'))]", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-04-01", + "name": "[toLower(parameters('resourcePrefix'))]-vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[toLower(parameters('resourcePrefix'))]-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('resourcePrefix'))]-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2020-06-01", + "name": "[toLower(parameters('resourcePrefix'))]-avset-fs", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 20 + } + }, + { + "condition": "[empty(parameters('subnetId'))]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-04-01", + "name": "[toLower(parameters('resourcePrefix'))]-pip-fs-copyIndex()", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(parameters('resourcePrefix'))]-vnet" + ], + "location": "[resourceGroup().location]", + "copy": { + "name": "pipLoop", + "count": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].servercount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "condition": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].needsLB", + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-04-01", + "name": "[toLower(parameters('resourcePrefix'))]-lb-fs", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(parameters('resourcePrefix'))]-vnet" + ], + "properties": { + "frontendIPConfigurations": "(frontendIPConfigurations).frontendIPConfigurations", + "backendAddressPools": "(backendAddressPools).backendAddressPools", + "loadBalancingRules": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].loadBalancingRules", + "probes": "(probes).probes" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-04-01", + "name": "[toLower(parameters('resourcePrefix'))]-nic-fs-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].servercount" + }, + "dependsOn": [ + "pipLoop", + "Microsoft.Network/virtualNetworks/[toLower(parameters('resourcePrefix'))]-vnet", + "Microsoft.Network/loadBalancers/[toLower(parameters('resourcePrefix'))]-lb-fs" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[if(equals(length(parameters('subnetId')), 0), json(concat('{\"id\": \"', resourceId('Microsoft.Network/publicIPAddresses', concat(variables('fspublicIpName'), '-', copyIndex())) ,'\"}')), json('null'))]", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "loadBalancerBackendAddressPools": "[if(variables('needsLB'), variables('nicBackAddressPools').nicBackAddressPools, json('null'))]" + } + } + ], + "enableAcceleratedNetworking": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].useFastNetwork" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "[toLower(parameters('resourcePrefix'))]-fs-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].servercount" + }, + "dependsOn": [ + "nicLoop", + "Microsoft.Compute/availabilitySets/[toLower(parameters('resourcePrefix'))]-avset-fs" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/[toLower(parameters('resourcePrefix'))]-avset-fs" + }, + "hardwareProfile": { + "vmSize": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].serversize" + }, + "osProfile": { + "computerName": "[toLower(parameters('resourcePrefix'))]-fs-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(parameters('resourcePrefix'))]-fs-copyIndex()-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": "[mul(variables('osFamilies')[variables('images')[parameters('osType')].OSFamily].diskPerSystem, parameters('sapSystemCount'))]", + "input": { + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty", + "diskSizeGB": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].serverdisksSize" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(parameters('resourcePrefix'))]-nic-fs-copyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-06-01", + "name": "[toLower(parameters('resourcePrefix'))]-fs-copyIndex()/(csExtension)[variables(internalOSType)].Name", + "location": "[resourceGroup().location]", + "copy": { + "name": "cseLoop", + "count": "(osFamilies)[variables(images)[parameters(osType)].OSFamily].servercount" + }, + "dependsOn": [ + "vmLoop" + ], + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ], + "commandToExecute": "(csExtension)[variables(internalOSType)].scriptCall" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT496 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT496 new file mode 100644 index 0000000..e5a9550 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT496 @@ -0,0 +1,66 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-ilm-store/prereqs/prereq.azuredeploy.json", + "/application-workloads/sap/sap-ilm-store/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962896014, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-ilm-store/prereqs/prereq.azuredeploy.json", + "/application-workloads/sap/sap-ilm-store/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT496", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.managedidentity/userassignedidentities" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT496", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "identityName": { + "type": "string", + "defaultValue": "testappforprerequisite", + "metadata": { + "description": "Name of the identity" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of userAssignedIdentities" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "name": "testappforprerequisite", + "apiVersion": "2018-11-30", + "location": "[resourceGroup().location]" + } + ], + "outputs": { + "principalid": { + "type": "string", + "value": "[reference(parameters('identityName')).principalId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT497 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT497 new file mode 100644 index 0000000..76e0a83 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT497 @@ -0,0 +1,217 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-ilm-store/azuredeploy.json", + "/application-workloads/sap/sap-ilm-store/azuredeploy.parameters.json" + ], + "timestamp": 1642962896024, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-ilm-store/azuredeploy.json", + "/application-workloads/sap/sap-ilm-store/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT497", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.authorization/roleassignments", + "microsoft.authorization/roledefinitions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT497", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "azureADAppPrincipalID": { + "type": "string", + "metadata": { + "description": "Principal ID of the Azure Active Directory Application" + }, + "value": "GET-PREREQ-principalid" + }, + "newOrExistingRole": { + "type": "string", + "defaultValue": "existing", + "metadata": { + "description": "Use an existing Role or create a new custom Role Definition" + }, + "allowedValues": [ + "new", + "existing" + ] + }, + "existingRoleID": { + "type": "string", + "defaultValue": "ba92f5b4-2d11-453d-a403-e96b0029c9fe", + "metadata": { + "description": "Role ID of an existing Role Definition" + } + }, + "customRoleName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Role name for the new Custom Role Definition" + }, + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the Storage Account" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Storage Account" + } + }, + "storageSKUName": { + "type": "string", + "defaultValue": "Standard_RAGRS", + "metadata": { + "description": "Azure Storage Redundancy and Replication" + }, + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS", + "Premium_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ] + }, + "storageSKUTier": { + "type": "string", + "defaultValue": "Standard", + "metadata": { + "description": "Performance tiers for block blob storage" + }, + "allowedValues": [ + "Standard", + "Premium" + ] + }, + "storageKind": { + "type": "string", + "defaultValue": "StorageV2", + "metadata": { + "description": "Type of storage account" + }, + "allowedValues": [ + "Storage", + "StorageV2", + "BlobStorage", + "FileStorage", + "BlockBlobStorage" + ] + }, + "accessTier": { + "type": "string", + "defaultValue": "Hot", + "metadata": { + "description": "Access tiers for Azure Blob Storage" + }, + "allowedValues": [ + "Hot", + "Cool" + ] + } + }, + "variables": { + "roleDefinitionId": "[guid(subscription().id, string(parameters('customRoleName')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_RAGRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "allowSharedKeyAccess": false, + "supportsHttpsTrafficOnly": true, + "allowBlobPublicAccess": false, + "minimumTlsVersion": "TLS1_2" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleDefinitions", + "apiVersion": "2018-07-01", + "name": "[guid(subscription().id, string(parameters('customRoleName')))]", + "properties": { + "roleName": "GEN-UNIQUE", + "description": "Role definition for ILM specific AD Application to access a Storage Account", + "type": "customRole", + "isCustom": true, + "permissions": [ + { + "actions": [ + "Microsoft.Storage/storageAccounts/blobServices/containers/write", + "Microsoft.Storage/storageAccounts/blobServices/containers/delete" + ], + "dataActions": [ + "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read", + "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write", + "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete" + ] + } + ], + "assignableScopes": [ + "[subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)]" + ] + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-07-01", + "name": "[guid(parameters('azureADAppPrincipalID'), if(equals(parameters('newOrExistingRole'), 'new'), resourceId('Microsoft.Authorization/roleDefinitions/', variables('roleDefinitionId')), resourceId('Microsoft.Authorization/roleDefinitions/', parameters('existingRoleID'))), resourceGroup().id)]", + "dependsOn": [ + "Microsoft.Authorization/roleDefinitions//[guid(subscription().id, string(parameters('customRoleName')))]" + ], + "properties": { + "roleDefinitionId": "[if(equals(parameters('newOrExistingRole'), 'new'), resourceId('Microsoft.Authorization/roleDefinitions/', variables('roleDefinitionId')), resourceId('Microsoft.Authorization/roleDefinitions/', parameters('existingRoleID')))]", + "principalId": "GET-PREREQ-principalid", + "principalType": "ServicePrincipal" + } + } + ], + "outputs": { + "StrorageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "storageBlobServiceEndpoint": { + "type": "string", + "value": "[reference(parameters('storageAccountName')).primaryEndpoints.blob]" + }, + "RoleDefinition": { + "type": "string", + "value": "[if(equals(parameters('newOrExistingRole'), 'new'), parameters('customRoleName'), parameters('existingRoleID'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT498 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT498 new file mode 100644 index 0000000..e3a21c8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT498 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-lama-apps/nestedtemplates/installHostAgent.json" + ], + "timestamp": 1642962896033, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-apps/nestedtemplates/installHostAgent.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT498", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT498", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the virtual machine." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "The name of the Custom Script Extension" + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "The publisher of the Custom Script Extension" + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "The version of the Custom Script Extension" + } + }, + "sapArtifactsLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The location of the SAR archives. The location should contain archives for SAPCAR, SAP Host Agent, SAPACEXT, Microsoft Visual C++ Redistributable and the Microsoft ODBC driver for SQL Server." + } + }, + "sapArtifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access sapArtifactsLocation." + }, + "defaultValue": "" + }, + "sapcarFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename for the sapcar application that matches the operating system you deploy. sapcar is used to extract the archives you provide in other parameters." + } + }, + "sapHostAgentArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Host Agent archive. SAP Host Agent is deployed as part of this template depoyment." + } + }, + "sapacExtArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Adaptive Extensions. SAP Note 2343511 lists the minimum patch level required for Azure." + } + }, + "vcRedistFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the VC Runtime that is required to install the SAP Adaptive Extensions. This parameter is only required for Windows." + } + }, + "sapadmPassword": { + "type": "securestring", + "minLength": 6, + "metadata": { + "description": "Password for the sapadm account." + } + }, + "sapadmId": { + "type": "int", + "defaultValue": 790, + "metadata": { + "description": "The Linux User Id of the sapadm user. Not required for Windows." + } + }, + "sapsysGid": { + "type": "int", + "defaultValue": 79, + "metadata": { + "description": "The Linux group id of the sapsys group. Not required for Windows." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Operating system type of the virtual machine." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "commands": { + "Linux": "groupadd -g 79 sapsys; useradd -u 790 -g 79 sapadm; ./ parameters('sapcarFilename') -xvf parameters('sapHostAgentArchiveFilename') -R hostagent; pushd hostagent; ./saphostexec -install; popd; /usr/sap/hostctrl/exe/sapacosprep -a InstallAcExt -m parameters('sapacExtArchiveFilename'); echo sapadm:sapadmPassword | chpasswd", + "Windows": ".\\ parameters('vcRedistFilename') /q /norestart /log vcredistinstall.log & .\\ parameters('sapcarFilename') -xvf parameters('sapHostAgentArchiveFilename') -R hostagent & pushd hostagent & echo sapadmPassword| .\\saphostexec.exe -install & popd & \"C:\\Program Files\\SAP\\hostctrl\\exe\\sapacosprep.exe\" -a InstallAcExt -m parameters('sapacExtArchiveFilename')" + }, + "files": { + "Linux": [ + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapcarFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapHostAgentArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapacExtArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]" + ], + "Windows": [ + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapcarFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapHostAgentArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapacExtArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('vcRedistFilename'), parameters('sapArtifactsLocationSasToken')))]" + ] + }, + "command": "(commands)[parameters(osType)]", + "fileArray": "(files)[parameters(osType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "(files)[parameters(osType)]" + }, + "protectedSettings": { + "commandToExecute": "(commands)[parameters(osType)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT499 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT499 new file mode 100644 index 0000000..997c0bd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT499 @@ -0,0 +1,106 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-lama-apps/nestedtemplates/runCommand.json" + ], + "timestamp": 1642962896041, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-apps/nestedtemplates/runCommand.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT499", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT499", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the virtual machine." + } + }, + "command": { + "type": "string", + "metadata": { + "description": "The command to execute." + } + }, + "files": { + "type": "array", + "metadata": { + "description": "The files that should be uploaded to the virtual machine." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Operating system type of the virtual machine." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "osConfigs": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0" + } + }, + "cseExtPublisher": "(osConfigs)[parameters(osType)].Publisher", + "cseExtName": "(osConfigs)[parameters(osType)].Name", + "cseExtVersion": "(osConfigs)[parameters(osType)].Version" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/(osConfigs)[parameters(osType)].Name", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "(osConfigs)[parameters(osType)].Publisher", + "type": "(osConfigs)[parameters(osType)].Name", + "typeHandlerVersion": "(osConfigs)[parameters(osType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "files" + }, + "protectedSettings": { + "commandToExecute": "command" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT5 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT5 new file mode 100644 index 0000000..75a0078 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT5 @@ -0,0 +1,88 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/configureADBDC.json" + ], + "timestamp": 1642962883299, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/configureADBDC.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT5", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT5", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adBDCVMName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "domainName": { + "type": "string" + }, + "adBDCConfigurationFunction": { + "type": "string" + }, + "adBDCConfigurationModulesURL": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "adBDCVMName/PrepareBDC", + "apiVersion": "2019-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesURL": "adBDCConfigurationModulesURL", + "wmfVersion": "4.0", + "configurationFunction": "adBDCConfigurationFunction", + "properties": { + "domainName": "domainName", + "adminCreds": { + "userName": "adminUsername", + "password": "privateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT50 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT50 new file mode 100644 index 0000000..6d915e4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT50 @@ -0,0 +1,606 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-be-virtualmachines-with-extensions1.json" + ], + "timestamp": 1642962883898, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-be-virtualmachines-with-extensions1.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT50", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT50", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "computeSettings": { + "type": "object" + }, + "networkSettings": { + "type": "object" + }, + "keyvaultSettings": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "adminPassword": "computeSettings", + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings0", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings0" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "computeSettings", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/chef-backend/chef-backend-install.sh keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "adminPassword": "computeSettings", + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings1", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings1" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "computeSettings", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/computeSettings/extensions/computeSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/chef-backend/chef-backend-install.sh keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "adminPassword": "computeSettings", + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings2", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings2" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "computeSettings", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/computeSettings/extensions/computeSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/chef-backend/chef-backend-install.sh keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "adminPassword": "computeSettings", + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings3", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings3" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "computeSettings", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/opscode/chef-frontend-install.sh keyvaultSettings computeSettings computeSettings computeSettings computeSettings computeSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ] + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "adminPassword": "computeSettings", + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings4", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings4" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings" + ], + "apiVersion": "computeSettings", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/opscode/chef-frontend-install.sh keyvaultSettings computeSettings computeSettings computeSettings computeSettings computeSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "adminPassword": "computeSettings", + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings5", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings5" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/computeSettings" + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings" + ], + "apiVersion": "computeSettings", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/opscode/chef-frontend-install.sh keyvaultSettings computeSettings computeSettings computeSettings computeSettings computeSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "computeSettings", + "type": "Microsoft.Compute/virtualMachines", + "name": "computeSettings", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "computeSettings" + }, + "osProfile": { + "computerName": "computeSettings", + "adminUsername": "computeSettings", + "adminPassword": "computeSettings", + "customData": "computeSettings" + }, + "storageProfile": { + "imageReference": { + "publisher": "computeSettings", + "offer": "computeSettings", + "sku": "computeSettings", + "version": "computeSettings" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "computeSettings6", + "lun": 0, + "caching": "None", + "createOption": "Attach", + "managedDisk": { + "id": "Microsoft.Compute/disks/computeSettings6" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/networkSettings" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "http://networkSettings.blob.core.windows.net" + } + } + }, + "resources": [ + { + "name": "computeSettings", + "type": "extensions", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings", + "Microsoft.Compute/virtualMachines/extensions/computeSettings/computeSettings" + ], + "apiVersion": "computeSettings", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "bash /etc/delivery/chef-automate-install.sh keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings keyvaultSettings" + } + } + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT500 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT500 new file mode 100644 index 0000000..8a14c83 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT500 @@ -0,0 +1,686 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-lama-apps/azuredeploy.json", + "/application-workloads/sap/sap-lama-apps/azuredeploy.parameters.json" + ], + "timestamp": 1642962896054, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-apps/azuredeploy.json", + "/application-workloads/sap/sap-lama-apps/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT500", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT500", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "minLength": 3, + "maxLength": 3, + "defaultValue": "DEQ", + "metadata": { + "description": "SAP System ID." + } + }, + "computerName": { + "type": "string", + "minLength": 3, + "defaultValue": "deq-app-0", + "metadata": { + "description": "The computer name. This parameter is also used as virtual machine name. It is required if you want to deploy this template using SAP LaMa." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "RHEL 7", + "Oracle Linux 7" + ], + "defaultValue": "Windows Server 2016 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "dbType": { + "type": "string", + "allowedValues": [ + "SQL", + "OTHER" + ], + "defaultValue": "OTHER", + "metadata": { + "description": "The type of the database. If you select SQL Server, you can provide the path to the ODBC driver which is then automatically installed." + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 2.000 SAPS", + "Medium < 9.000 SAPS", + "Large < 18.000 SAPS", + "X-Large < 40.000 SAPS" + ], + "defaultValue": "Small < 2.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "deployEmptyTarget": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "You can deploy an empty target if you want to use the virtual machine as a target for an instance relocate or similar. In this case, no additional disks or IP configurations are attached." + } + }, + "sapArtifactsLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The location of the SAR archives. The location should contain archives for SAPCAR, SAP Host Agent, SAPACEXT, Microsoft Visual C++ Redistributable and the Microsoft ODBC driver for SQL Server." + } + }, + "sapArtifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access sapArtifactsLocation." + }, + "defaultValue": "" + }, + "sapcarFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename for the sapcar application that matches the operating system you deploy. sapcar is used to extract the archives you provide in other parameters." + } + }, + "sapHostAgentArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Host Agent archive. SAP Host Agent is deployed as part of this template depoyment." + } + }, + "sapacExtArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Adaptive Extensions. SAP Note 2343511 lists the minimum patch level required for Azure." + } + }, + "vcRedistFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the VC Runtime that is required to install the SAP Adaptive Extensions. This parameter is only required for Windows." + } + }, + "odbcDriverFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the ODBC driver you want to install. Only Microsoft ODBC driver for SQL Server is supported." + } + }, + "sapadmPassword": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The password for the sapadm user." + } + }, + "sapadmId": { + "type": "int", + "defaultValue": 790, + "metadata": { + "description": "The Linux User Id of the sapadm user. Not required for Windows." + } + }, + "sapsysGid": { + "type": "int", + "defaultValue": 79, + "metadata": { + "description": "The Linux group id of the sapsys group. Not required for Windows." + } + }, + "availabilityZone": { + "type": "int", + "defaultValue": 0, + "minValue": 0, + "maxValue": 3, + "metadata": { + "description": "Zone number. Set to 0 if you do not want to use Availability Zones" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "selectedZones": "[if(equals(parameters('availabilityZone'),0), json('null'), array(parameters('availabilityZone')))]", + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "SLES 12": { + "sku": "12-SP3", + "offer": "SLES-SAP", + "publisher": "SUSE", + "OSType": "Linux", + "osDiskSize": 128 + }, + "RHEL 7": { + "sku": "7.3", + "offer": "RHEL", + "publisher": "RedHat", + "OSType": "Linux", + "osDiskSize": 128 + }, + "Oracle Linux 7": { + "sku": "7.3", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "OSType": "Linux", + "osDiskSize": 128 + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "osConfigs": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File scripts/diskConfig.ps1", + "disks": [ + { + "lun": 0, + "name": "deq-app-0-[toLower(parameters('sapSystemId'))]-apps", + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": "-luns \"0\" -names \"sap\" -paths \"C:\\usr\\sap\\DEQ\" -sizes \"100\"" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh diskConfig.sh" + } + }, + "cseExtPublisher": "(osConfigs)[variables(internalOSType)].Publisher", + "cseExtName": "(osConfigs)[variables(internalOSType)].Name", + "cseExtVersion": "(osConfigs)[variables(internalOSType)].Version", + "csExtensionScript": "(osConfigs)[variables(internalOSType)].script", + "csExtensionscriptCall": "(osConfigs)[variables(internalOSType)].scriptCall", + "sizes": { + "Demo": { + "Linux": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + }, + "Windows": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + } + }, + "Small < 2.000 SAPS": { + "Linux": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + }, + "Windows": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + } + }, + "Medium < 9.000 SAPS": { + "Linux": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + }, + "Windows": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + } + }, + "Large < 18.000 SAPS": { + "Linux": { + "vmSize": "Standard_E4s_v3", + "useFastNetwork": true + }, + "Windows": { + "vmSize": "Standard_E4s_v3", + "useFastNetwork": true + } + }, + "X-Large < 40.000 SAPS": { + "Linux": { + "vmSize": "Standard_E4s_v3", + "useFastNetwork": true + }, + "Windows": { + "vmSize": "Standard_E4s_v3", + "useFastNetwork": true + } + } + }, + "vmName": "deq-app-0", + "nicName": "deq-app-0-nic", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "basicIPConfig": [ + { + "name": "ipconfig-vm", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": true + } + } + ], + "databaseIPConfig": { + "Linux": [ + { + "name": "ipconfig-di", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": false + } + } + ], + "Windows": [ + { + "name": "ipconfig-di", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": false + } + } + ] + }, + "selectedIPConfig": "[concat(variables('basicIPConfig'), if(parameters('deployEmptyTarget'), json('[]'), variables('databaseIPConfig')[variables('internalOSType')]))]", + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('sapSystemId'))]-nsg", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "condition": false, + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(parameters('sapSystemId'))]-vnet", + "apiVersion": "2018-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//[toLower(parameters('sapSystemId'))]-nsg" + ], + "condition": false, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "deq-app-0-nic", + "apiVersion": "2017-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('sapSystemId'))]-vnet" + ], + "properties": { + "ipConfigurations": "[concat(variables('basicIPConfig'), if(parameters('deployEmptyTarget'), json('[]'), variables('databaseIPConfig')[variables('internalOSType')]))]", + "enableAcceleratedNetworking": "(sizes)[parameters(sapSystemSize)][variables(internalOSType)].useFastNetwork" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "deq-app-0", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//deq-app-0-nic" + ], + "zones": "[if(equals(parameters('availabilityZone'),0), json('null'), array(parameters('availabilityZone')))]", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "(sizes)[parameters(sapSystemSize)][variables(internalOSType)].vmSize" + }, + "osProfile": { + "computerName": "deq-app-0", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "deq-app-0-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": "(images)[parameters(osType)].osDiskSize", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": "[if(parameters('deployEmptyTarget'), json('[]'), variables('osConfigs')[variables('internalOSType')].disks)]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/deq-app-0-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "deq-app-0/(osConfigs)[variables(internalOSType)].Name", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "condition": "[and( not(parameters('deployEmptyTarget')), equals(variables('internalOSType'), 'Windows'))]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//deq-app-0" + ], + "properties": { + "publisher": "(osConfigs)[variables(internalOSType)].Publisher", + "type": "(osConfigs)[variables(internalOSType)].Name", + "typeHandlerVersion": "(osConfigs)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(osConfigs)[variables(internalOSType)].script" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat(variables('csExtensionscriptCall'), ' ', variables('osConfigs')[variables('internalOSType')].scriptArguments)]" + } + } + }, + { + "apiVersion": "2018-02-01", + "name": "[concat(deployment().name, '-odbc')]", + "type": "Microsoft.Resources/deployments", + "condition": false, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/deq-app-0/(osConfigs)[variables(internalOSType)].Name" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/runCommand.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "deq-app-0" + }, + "command": { + "value": "%SystemRoot%\\System32\\msiexec.exe /i msodbcsql.msi /quiet /norestart /log c:\\windows\\sql4sap.msi.log IACCEPTMSODBCSQLLICENSETERMS=YES MSIRESTARTMANAGERCONTROL=Disable" + }, + "files": { + "value": [ + "[uri(parameters('sapArtifactsLocation'), concat(parameters('odbcDriverFilename'), parameters('sapArtifactsLocationSasToken')))]" + ] + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2018-02-01", + "name": "[concat(deployment().name, '-installsaphostagent')]", + "type": "Microsoft.Resources/deployments", + "condition": "[greater(length(parameters('sapHostAgentArchiveFilename')), 0)]", + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments/', concat(deployment().name, '-odbc'))]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installHostAgent.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "deq-app-0" + }, + "cseExtName": { + "value": "(osConfigs)[variables(internalOSType)].Name" + }, + "cseExtPublisher": { + "value": "(osConfigs)[variables(internalOSType)].Publisher" + }, + "cseExtVersion": { + "value": "(osConfigs)[variables(internalOSType)].Version" + }, + "sapArtifactsLocation": { + "value": "" + }, + "sapArtifactsLocationSasToken": { + "value": "" + }, + "sapcarFilename": { + "value": "" + }, + "sapHostAgentArchiveFilename": { + "value": "" + }, + "sapacExtArchiveFilename": { + "value": "" + }, + "vcRedistFilename": { + "value": "" + }, + "sapadmPassword": { + "value": "" + }, + "sapadmId": { + "value": 790 + }, + "sapsysGid": { + "value": 79 + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT501 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT501 new file mode 100644 index 0000000..4db3eaa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT501 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-lama-ascs/nestedtemplates/installHostAgent.json" + ], + "timestamp": 1642962896067, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-ascs/nestedtemplates/installHostAgent.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT501", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT501", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the virtual machine." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "The name of the Custom Script Extension" + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "The publisher of the Custom Script Extension" + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "The version of the Custom Script Extension" + } + }, + "sapArtifactsLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The location of the SAR archives. The location should contain archives for SAPCAR, SAP Host Agent, SAPACEXT, Microsoft Visual C++ Redistributable and the Microsoft ODBC driver for SQL Server." + } + }, + "sapArtifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access sapArtifactsLocation." + }, + "defaultValue": "" + }, + "sapcarFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename for the sapcar application that matches the operating system you deploy. sapcar is used to extract the archives you provide in other parameters." + } + }, + "sapHostAgentArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Host Agent archive. SAP Host Agent is deployed as part of this template depoyment." + } + }, + "sapacExtArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Adaptive Extensions. SAP Note 2343511 lists the minimum patch level required for Azure." + } + }, + "vcRedistFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the VC Runtime that is required to install the SAP Adaptive Extensions. This parameter is only required for Windows." + } + }, + "sapadmPassword": { + "type": "securestring", + "minLength": 6, + "metadata": { + "description": "Password for the sapadm account." + } + }, + "sapadmId": { + "type": "int", + "defaultValue": 790, + "metadata": { + "description": "The Linux User Id of the sapadm user. Not required for Windows." + } + }, + "sapsysGid": { + "type": "int", + "defaultValue": 79, + "metadata": { + "description": "The Linux group id of the sapsys group. Not required for Windows." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Operating system type of the virtual machine." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "commands": { + "Linux": "groupadd -g 79 sapsys; useradd -u 790 -g 79 sapadm; ./ parameters('sapcarFilename') -xvf parameters('sapHostAgentArchiveFilename') -R hostagent; pushd hostagent; ./saphostexec -install; popd; /usr/sap/hostctrl/exe/sapacosprep -a InstallAcExt -m parameters('sapacExtArchiveFilename'); echo sapadm:sapadmPassword | chpasswd", + "Windows": ".\\ parameters('vcRedistFilename') /q /norestart /log vcredistinstall.log & .\\ parameters('sapcarFilename') -xvf parameters('sapHostAgentArchiveFilename') -R hostagent & pushd hostagent & echo sapadmPassword| .\\saphostexec.exe -install & popd & \"C:\\Program Files\\SAP\\hostctrl\\exe\\sapacosprep.exe\" -a InstallAcExt -m parameters('sapacExtArchiveFilename')" + }, + "files": { + "Linux": [ + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapcarFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapHostAgentArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapacExtArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]" + ], + "Windows": [ + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapcarFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapHostAgentArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapacExtArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('vcRedistFilename'), parameters('sapArtifactsLocationSasToken')))]" + ] + }, + "command": "(commands)[parameters(osType)]", + "fileArray": "(files)[parameters(osType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "(files)[parameters(osType)]" + }, + "protectedSettings": { + "commandToExecute": "(commands)[parameters(osType)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT502 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT502 new file mode 100644 index 0000000..b5e39ab --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT502 @@ -0,0 +1,640 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-lama-ascs/azuredeploy.json", + "/application-workloads/sap/sap-lama-ascs/azuredeploy.parameters.json" + ], + "timestamp": 1642962896079, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-ascs/azuredeploy.json", + "/application-workloads/sap/sap-lama-ascs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT502", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT502", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "minLength": 3, + "maxLength": 3, + "defaultValue": "DEQ", + "metadata": { + "description": "SAP System ID." + } + }, + "computerName": { + "type": "string", + "minLength": 3, + "defaultValue": "deq-xscs-0", + "metadata": { + "description": "The computer name. This parameter is also used as virtual machine name. It is required if you want to deploy this template using SAP LaMa." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "RHEL 7", + "Oracle Linux 7" + ], + "defaultValue": "Windows Server 2016 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 2.000 SAPS", + "Medium < 9.000 SAPS", + "Large < 18.000 SAPS", + "X-Large < 40.000 SAPS" + ], + "defaultValue": "Small < 2.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "deployEmptyTarget": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "You can deploy an empty target if you want to use the virtual machine as a target for an instance relocate or similar. In this case, no additional disks or IP configurations are attached." + } + }, + "sapArtifactsLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The location of the SAR archives. The location should contain archives for SAPCAR, SAP Host Agent, SAPACEXT, Microsoft Visual C++ Redistributable and the Microsoft ODBC driver for SQL Server." + } + }, + "sapArtifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access sapArtifactsLocation." + }, + "defaultValue": "" + }, + "sapcarFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename for the sapcar application that matches the operating system you deploy. sapcar is used to extract the archives you provide in other parameters." + } + }, + "sapHostAgentArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Host Agent archive. SAP Host Agent is deployed as part of this template depoyment." + } + }, + "sapacExtArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Adaptive Extensions. SAP Note 2343511 lists the minimum patch level required for Azure." + } + }, + "vcRedistFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the VC Runtime that is required to install the SAP Adaptive Extensions. This parameter is only required for Windows." + } + }, + "sapadmPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the sapadm account." + }, + "value": "GEN-PASSWORD" + }, + "sapadmId": { + "type": "int", + "defaultValue": 790, + "metadata": { + "description": "The Linux User Id of the sapadm user. Not required for Windows." + } + }, + "sapsysGid": { + "type": "int", + "defaultValue": 79, + "metadata": { + "description": "The Linux group id of the sapsys group. Not required for Windows." + } + }, + "availabilityZone": { + "type": "int", + "defaultValue": 0, + "minValue": 0, + "maxValue": 3, + "metadata": { + "description": "Zone number. Set to 0 if you do not want to use Availability Zones" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "selectedZones": "[if(equals(parameters('availabilityZone'),0), json('null'), array(parameters('availabilityZone')))]", + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "SLES 12": { + "sku": "12-SP3", + "offer": "SLES-SAP", + "publisher": "SUSE", + "OSType": "Linux", + "osDiskSize": 128 + }, + "RHEL 7": { + "sku": "7.3", + "offer": "RHEL", + "publisher": "RedHat", + "OSType": "Linux", + "osDiskSize": 128 + }, + "Oracle Linux 7": { + "sku": "7.3", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "OSType": "Linux", + "osDiskSize": 128 + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "osConfigs": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File scripts/diskConfig.ps1", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": "-luns \"0\" -names \"sap\" -paths \"C:\\usr\\sap\\DEQC:\\usr\\sap\\trans\" -sizes \"50100\"" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh diskConfig.sh", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": "-luns 0 -names sap -paths /sapmnt/DEQ/usr/sap/DEQ/usr/sap/trans/home/[toLower(parameters('sapSystemId'))]adm -sizes 203070100" + } + }, + "cseExtPublisher": "(osConfigs)[variables(internalOSType)].Publisher", + "cseExtName": "(osConfigs)[variables(internalOSType)].Name", + "cseExtVersion": "(osConfigs)[variables(internalOSType)].Version", + "csExtensionScript": "(osConfigs)[variables(internalOSType)].script", + "csExtensionscriptCall": "(osConfigs)[variables(internalOSType)].scriptCall", + "sizes": { + "Demo": { + "Linux": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + }, + "Windows": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + } + }, + "Small < 2.000 SAPS": { + "Linux": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + }, + "Windows": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + } + }, + "Medium < 9.000 SAPS": { + "Linux": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + }, + "Windows": { + "vmSize": "Standard_E2s_v3", + "useFastNetwork": false + } + }, + "Large < 18.000 SAPS": { + "Linux": { + "vmSize": "Standard_E4s_v3", + "useFastNetwork": true + }, + "Windows": { + "vmSize": "Standard_E4s_v3", + "useFastNetwork": true + } + }, + "X-Large < 40.000 SAPS": { + "Linux": { + "vmSize": "Standard_E4s_v3", + "useFastNetwork": true + }, + "Windows": { + "vmSize": "Standard_E4s_v3", + "useFastNetwork": true + } + } + }, + "vmName": "deq-xscs-0", + "nicName": "deq-xscs-0-nic", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "basicIPConfig": [ + { + "name": "ipconfig-vm", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": true + } + } + ], + "databaseIPConfig": { + "Linux": [ + { + "name": "ipconfig-ascs", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": false + } + } + ], + "Windows": [ + { + "name": "ipconfig-ascs", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": false + } + } + ] + }, + "selectedIPConfig": "[concat(variables('basicIPConfig'), if(parameters('deployEmptyTarget'), json('[]'), variables('databaseIPConfig')[variables('internalOSType')]))]", + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('sapSystemId'))]-nsg", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "condition": false, + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(parameters('sapSystemId'))]-vnet", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//[toLower(parameters('sapSystemId'))]-nsg" + ], + "condition": false, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "deq-xscs-0-nic", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('sapSystemId'))]-vnet" + ], + "properties": { + "ipConfigurations": "[concat(variables('basicIPConfig'), if(parameters('deployEmptyTarget'), json('[]'), variables('databaseIPConfig')[variables('internalOSType')]))]" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "deq-xscs-0", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//deq-xscs-0-nic" + ], + "zones": "[if(equals(parameters('availabilityZone'),0), json('null'), array(parameters('availabilityZone')))]", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "(sizes)[parameters(sapSystemSize)][variables(internalOSType)].vmSize" + }, + "osProfile": { + "computerName": "deq-xscs-0", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "deq-xscs-0-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": "(images)[parameters(osType)].osDiskSize", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": "[if(parameters('deployEmptyTarget'), json('[]'), variables('osConfigs')[variables('internalOSType')].disks)]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/deq-xscs-0-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "deq-xscs-0/(osConfigs)[variables(internalOSType)].Name", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "condition": "[not(parameters('deployEmptyTarget'))]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//deq-xscs-0" + ], + "properties": { + "publisher": "(osConfigs)[variables(internalOSType)].Publisher", + "type": "(osConfigs)[variables(internalOSType)].Name", + "typeHandlerVersion": "(osConfigs)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(osConfigs)[variables(internalOSType)].script" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat(variables('csExtensionscriptCall'), ' ', variables('osConfigs')[variables('internalOSType')].scriptArguments)]" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "[concat(deployment().name, '-installsaphostagent')]", + "type": "Microsoft.Resources/deployments", + "condition": "[greater(length(parameters('sapHostAgentArchiveFilename')), 0)]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/deq-xscs-0/(osConfigs)[variables(internalOSType)].Name" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installHostAgent.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "deq-xscs-0" + }, + "cseExtName": { + "value": "(osConfigs)[variables(internalOSType)].Name" + }, + "cseExtPublisher": { + "value": "(osConfigs)[variables(internalOSType)].Publisher" + }, + "cseExtVersion": { + "value": "(osConfigs)[variables(internalOSType)].Version" + }, + "sapArtifactsLocation": { + "value": "" + }, + "sapArtifactsLocationSasToken": { + "value": "" + }, + "sapcarFilename": { + "value": "" + }, + "sapHostAgentArchiveFilename": { + "value": "" + }, + "sapacExtArchiveFilename": { + "value": "" + }, + "vcRedistFilename": { + "value": "" + }, + "sapadmPassword": { + "value": "GEN-PASSWORD" + }, + "sapadmId": { + "value": 790 + }, + "sapsysGid": { + "value": 79 + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT503 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT503 new file mode 100644 index 0000000..bc2c18e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT503 @@ -0,0 +1,179 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-lama-database/nestedtemplates/installHostAgent.json" + ], + "timestamp": 1642962896088, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-database/nestedtemplates/installHostAgent.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT503", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT503", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the virtual machine." + } + }, + "cseExtName": { + "type": "string", + "metadata": { + "description": "The name of the Custom Script Extension" + } + }, + "cseExtPublisher": { + "type": "string", + "metadata": { + "description": "The publisher of the Custom Script Extension" + } + }, + "cseExtVersion": { + "type": "string", + "metadata": { + "description": "The version of the Custom Script Extension" + } + }, + "sapArtifactsLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The location of the SAR archives. The location should contain archives for SAPCAR, SAP Host Agent, SAPACEXT, Microsoft Visual C++ Redistributable and the Microsoft ODBC driver for SQL Server." + } + }, + "sapArtifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access sapArtifactsLocation." + }, + "defaultValue": "" + }, + "sapcarFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename for the sapcar application that matches the operating system you deploy. sapcar is used to extract the archives you provide in other parameters." + } + }, + "sapHostAgentArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Host Agent archive. SAP Host Agent is deployed as part of this template depoyment." + } + }, + "sapacExtArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Adaptive Extensions. SAP Note 2343511 lists the minimum patch level required for Azure." + } + }, + "vcRedistFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the VC Runtime that is required to install the SAP Adaptive Extensions. This parameter is only required for Windows." + } + }, + "sapadmPassword": { + "type": "securestring", + "minLength": 6, + "metadata": { + "description": "Password for the sapadm account." + } + }, + "sapadmId": { + "type": "int", + "defaultValue": 790, + "metadata": { + "description": "The Linux User Id of the sapadm user. Not required for Windows." + } + }, + "sapsysGid": { + "type": "int", + "defaultValue": 79, + "metadata": { + "description": "The Linux group id of the sapsys group. Not required for Windows." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Operating system type of the virtual machine." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "commands": { + "Linux": "groupadd -g 79 sapsys; useradd -u 790 -g 79 sapadm; ./ parameters('sapcarFilename') -xvf parameters('sapHostAgentArchiveFilename') -R hostagent; pushd hostagent; ./saphostexec -install; popd; /usr/sap/hostctrl/exe/sapacosprep -a InstallAcExt -m parameters('sapacExtArchiveFilename'); echo sapadm:sapadmPassword | chpasswd", + "Windows": ".\\ parameters('vcRedistFilename') /q /norestart /log vcredistinstall.log & .\\ parameters('sapcarFilename') -xvf parameters('sapHostAgentArchiveFilename') -R hostagent & pushd hostagent & echo sapadmPassword| .\\saphostexec.exe -install & popd & \"C:\\Program Files\\SAP\\hostctrl\\exe\\sapacosprep.exe\" -a InstallAcExt -m parameters('sapacExtArchiveFilename')" + }, + "files": { + "Linux": [ + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapcarFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapHostAgentArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapacExtArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]" + ], + "Windows": [ + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapcarFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapHostAgentArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('sapacExtArchiveFilename'), parameters('sapArtifactsLocationSasToken')))]", + "[uri(parameters('sapArtifactsLocation'), concat(parameters('vcRedistFilename'), parameters('sapArtifactsLocationSasToken')))]" + ] + }, + "command": "(commands)[parameters(osType)]", + "fileArray": "(files)[parameters(osType)]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/cseExtName", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "cseExtPublisher", + "type": "cseExtName", + "typeHandlerVersion": "cseExtVersion", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "(files)[parameters(osType)]" + }, + "protectedSettings": { + "commandToExecute": "(commands)[parameters(osType)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT504 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT504 new file mode 100644 index 0000000..e54dc48 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT504 @@ -0,0 +1,1084 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sap/sap-lama-database/azuredeploy.json", + "/application-workloads/sap/sap-lama-database/azuredeploy.parameters.json" + ], + "timestamp": 1642962896096, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sap/sap-lama-database/azuredeploy.json", + "/application-workloads/sap/sap-lama-database/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT504", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT504", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sapSystemId": { + "type": "string", + "minLength": 3, + "maxLength": 3, + "defaultValue": "DEQ", + "metadata": { + "description": "SAP System ID." + } + }, + "computerName": { + "type": "string", + "minLength": 3, + "defaultValue": "deq-db-0", + "metadata": { + "description": "The computer name. This parameter is also used as virtual machine name. It is required if you want to deploy this template using SAP LaMa." + } + }, + "osType": { + "type": "string", + "allowedValues": [ + "Windows Server 2012 Datacenter", + "Windows Server 2012 R2 Datacenter", + "Windows Server 2016 Datacenter", + "SLES 12", + "RHEL 7", + "Oracle Linux 7" + ], + "defaultValue": "Windows Server 2016 Datacenter", + "metadata": { + "description": "The type of the operating system you want to deploy." + } + }, + "dbtype": { + "type": "string", + "allowedValues": [ + "SQL", + "HANA", + "ORACLE", + "ASE" + ], + "defaultValue": "SQL", + "metadata": { + "description": "The type of the database" + } + }, + "sapSystemSize": { + "type": "string", + "allowedValues": [ + "Demo", + "Small < 2.000 SAPS", + "Medium < 9.000 SAPS", + "Large < 18.000 SAPS", + "X-Large < 40.000 SAPS" + ], + "defaultValue": "Small < 2.000 SAPS", + "metadata": { + "description": "The size of the SAP System you want to deploy." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "subnetId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The id of the subnet you want to use." + } + }, + "deployEmptyTarget": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "You can deploy an empty target if you want to use the virtual machine as a target for an instance relocate or similar. In this case, no additional disks or IP configurations are attached." + } + }, + "sapArtifactsLocation": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The location of the SAR archives. The location should contain archives for SAPCAR, SAP Host Agent, SAPACEXT, Microsoft Visual C++ Redistributable and the Microsoft ODBC driver for SQL Server." + } + }, + "sapArtifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access sapArtifactsLocation." + }, + "defaultValue": "" + }, + "sapcarFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename for the sapcar application that matches the operating system you deploy. sapcar is used to extract the archives you provide in other parameters." + } + }, + "sapHostAgentArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Host Agent archive. SAP Host Agent is deployed as part of this template depoyment." + } + }, + "sapacExtArchiveFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the SAP Adaptive Extensions. SAP Note 2343511 lists the minimum patch level required for Azure." + } + }, + "vcRedistFilename": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The filename of the VC Runtime that is required to install the SAP Adaptive Extensions. This parameter is only required for Windows." + } + }, + "sapadmPassword": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Password for the sapadm account." + } + }, + "sapadmId": { + "type": "int", + "defaultValue": 790, + "metadata": { + "description": "The Linux User Id of the sapadm user. Not required for Windows." + } + }, + "sapsysGid": { + "type": "int", + "defaultValue": 79, + "metadata": { + "description": "The Linux group id of the sapsys group. Not required for Windows." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "images": { + "Windows Server 2012 Datacenter": { + "sku": "2012-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "Windows Server 2012 R2 Datacenter": { + "sku": "2012-R2-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "Windows Server 2016 Datacenter": { + "sku": "2016-Datacenter", + "offer": "WindowsServer", + "publisher": "MicrosoftWindowsServer", + "OSType": "Windows", + "osDiskSize": 128 + }, + "SLES 12": { + "sku": "12-SP3", + "offer": "SLES-SAP", + "publisher": "SUSE", + "OSType": "Linux", + "osDiskSize": 128 + }, + "RHEL 7": { + "sku": "7.3", + "offer": "RHEL", + "publisher": "RedHat", + "OSType": "Linux", + "osDiskSize": 128 + }, + "Oracle Linux 7": { + "sku": "7.3", + "offer": "Oracle-Linux", + "publisher": "Oracle", + "OSType": "Linux", + "osDiskSize": 128 + } + }, + "internalOSType": "(images)[parameters(osType)].OSType", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "csExtension": { + "Windows": { + "Publisher": "Microsoft.Compute", + "Name": "CustomScriptExtension", + "Version": "1.7", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.ps1', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "powershell.exe -ExecutionPolicy bypass -File scripts/diskConfig.ps1" + }, + "Linux": { + "Publisher": "Microsoft.Azure.Extensions", + "Name": "CustomScript", + "Version": "2.0", + "script": "[uri(parameters('_artifactsLocation'), concat('scripts/diskConfig.sh', parameters('_artifactsLocationSasToken')))]", + "scriptCall": "sh diskConfig.sh" + } + }, + "cseExtPublisher": "(csExtension)[variables(internalOSType)].Publisher", + "cseExtName": "(csExtension)[variables(internalOSType)].Name", + "cseExtVersion": "(csExtension)[variables(internalOSType)].Version", + "csExtensionScript": "(csExtension)[variables(internalOSType)].script", + "csExtensionscriptCall": "(csExtension)[variables(internalOSType)].scriptCall", + "sizes": { + "Demo": { + "HANA": { + "vmSize": "Standard_E8s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1#2,3#4#5,6' -names 'data#log#shared#backup' -paths '/hana/data#/hana/log#/hana/shared#/hana/backup' -sizes '100#100#100#100'" + }, + "useFastNetwork": false + }, + "SQL": { + "vmSize": "Standard_E2s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 256 + } + ], + "scriptArguments": { + "Windows": "-luns \"0\" -names \"sap\" -paths \"C:\\sql\\data,C:\\sql\\log,c:\\usr\\sap\" -sizes \"40,50,100\"" + }, + "useFastNetwork": false + } + }, + "Small < 2.000 SAPS": { + "HANA": { + "vmSize": "Standard_E32s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3#4' -names 'datalog#shared#backup' -paths '/hana/data,/hana/log#/hana/shared#/hana/backup' -sizes '70,100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_D4s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3#4#5\" -names \"data#log#sap\" -paths \"C:\\sql\\data#C:\\sql\\log#S\" -sizes \"100#100#100\"" + }, + "useFastNetwork": true + } + }, + "Medium < 9.000 SAPS": { + "HANA": { + "vmSize": "Standard_E64s_v3", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3#4' -names 'datalog#shared#backup' -paths '/hana/data,/hana/log#/hana/shared#/hana/backup' -sizes '70,100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_D32s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 8, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4,5,6#7#8\" -names \"data#log#sap\" -paths \"C:\\sql\\data#C:\\sql\\log#S\" -sizes \"100#100#100\"" + }, + "useFastNetwork": true + } + }, + "Large < 18.000 SAPS": { + "HANA": { + "vmSize": "Standard_M64s", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 8, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2,3#4,5#6#7,8' -names 'data#log#shared#backup' -paths '/hana/data#/hana/log#/hana/shared#/hana/backup' -sizes '100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_D64s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4#5#6\" -names \"data#log#sap\" -paths \"C:\\sql\\data#C:\\sql\\log#S\" -sizes \"100#100#100\"" + }, + "useFastNetwork": false + } + }, + "X-Large < 40.000 SAPS": { + "HANA": { + "vmSize": "Standard_M128s", + "disks": [ + { + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 4, + "caching": "None", + "writeAcceleratorEnabled": "true", + "createOption": "Empty", + "diskSizeGB": 512 + }, + { + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 2048 + }, + { + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty", + "diskSizeGB": 2048 + } + ], + "scriptArguments": { + "Linux": "-luns '0,1,2#3,4#5#6,7' -names 'data#log#shared#backup' -paths '/hana/data#/hana/log#/hana/shared#/hana/backup' -sizes '100#100#100#100'" + }, + "useFastNetwork": true + }, + "SQL": { + "vmSize": "Standard_E64s_v3", + "disks": [ + { + "lun": 0, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 1, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 2, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 3, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 4, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 5, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 6, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 7, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 1024 + }, + { + "lun": 8, + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 128 + } + ], + "scriptArguments": { + "Windows": "-luns \"0,1,2,3,4,5,6#7#8\" -names \"data#log#sap\" -paths \"C:\\sql\\data#C:\\sql\\log#S\" -sizes \"100#100#100\"" + }, + "useFastNetwork": false + } + } + }, + "vmName": "deq-db-0", + "nicName": "deq-db-0-nic", + "sidlower": "[toLower(parameters('sapSystemId'))]", + "vnetName": "[toLower(parameters('sapSystemId'))]-vnet", + "nsgName": "[toLower(parameters('sapSystemId'))]-nsg", + "subnetName": "Subnet", + "subnets": { + "true": "Microsoft.Network/virtualNetworks/subnets/[toLower(parameters('sapSystemId'))]-vnet/Subnet", + "false": "" + }, + "selectedSubnetId": "(subnets)[string(equals(length(parameters(subnetId)), 0))]", + "basicIPConfig": [ + { + "name": "ipconfig-vm", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": true + } + } + ], + "databaseIPConfig": { + "HANA": [ + { + "name": "ipconfig-hana", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": false + } + }, + { + "name": "ipconfig-hana-tenant", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": false + } + } + ], + "SQL": [ + { + "name": "ipconfig-sql", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "(subnets)[string(equals(length(parameters(subnetId)), 0))]" + }, + "primary": false + } + } + ] + }, + "selectedIPConfig": "[concat(variables('basicIPConfig'), if(parameters('deployEmptyTarget'), json('[]'), variables('databaseIPConfig')[parameters('dbtype')]))]", + "osSecurityRules": { + "Windows": [ + { + "name": "RDP", + "properties": { + "description": "Allow RDP Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "Linux": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + }, + "selectedSecurityRules": "(osSecurityRules)[variables(internalOSType)]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[toLower(parameters('sapSystemId'))]-nsg", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "condition": false, + "properties": { + "securityRules": "(osSecurityRules)[variables(internalOSType)]" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(parameters('sapSystemId'))]-vnet", + "apiVersion": "2018-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//[toLower(parameters('sapSystemId'))]-nsg" + ], + "condition": false, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(parameters('sapSystemId'))]-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "deq-db-0-nic", + "apiVersion": "2017-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(parameters('sapSystemId'))]-vnet" + ], + "properties": { + "ipConfigurations": "[concat(variables('basicIPConfig'), if(parameters('deployEmptyTarget'), json('[]'), variables('databaseIPConfig')[parameters('dbtype')]))]" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "deq-db-0", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//deq-db-0-nic" + ], + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "(sizes)[parameters(sapSystemSize)][parameters(dbType)].vmSize" + }, + "osProfile": { + "computerName": "deq-db-0", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "deq-db-0-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": "(images)[parameters(osType)].osDiskSize", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": "[if(parameters('deployEmptyTarget'), json('[]'), variables('sizes')[parameters('sapSystemSize')][parameters('dbType')].disks)]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/deq-db-0-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "deq-db-0/(csExtension)[variables(internalOSType)].Name", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "condition": "[not(parameters('deployEmptyTarget'))]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//deq-db-0" + ], + "properties": { + "publisher": "(csExtension)[variables(internalOSType)].Publisher", + "type": "(csExtension)[variables(internalOSType)].Name", + "typeHandlerVersion": "(csExtension)[variables(internalOSType)].Version", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "(csExtension)[variables(internalOSType)].script" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat(variables('csExtensionscriptCall'), ' ', variables('sizes')[parameters('sapSystemSize')][parameters('dbType')].scriptArguments[variables('internalOSType')])]" + } + } + }, + { + "apiVersion": "2018-02-01", + "name": "[concat(deployment().name, '-installsaphostagent')]", + "type": "Microsoft.Resources/deployments", + "condition": "[greater(length(parameters('sapHostAgentArchiveFilename')), 0)]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/deq-db-0/(csExtension)[variables(internalOSType)].Name" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/installHostAgent.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "deq-db-0" + }, + "cseExtName": { + "value": "(csExtension)[variables(internalOSType)].Name" + }, + "cseExtPublisher": { + "value": "(csExtension)[variables(internalOSType)].Publisher" + }, + "cseExtVersion": { + "value": "(csExtension)[variables(internalOSType)].Version" + }, + "sapArtifactsLocation": { + "value": "" + }, + "sapArtifactsLocationSasToken": { + "value": "" + }, + "sapcarFilename": { + "value": "" + }, + "sapHostAgentArchiveFilename": { + "value": "" + }, + "sapacExtArchiveFilename": { + "value": "" + }, + "vcRedistFilename": { + "value": "" + }, + "sapadmPassword": { + "value": "" + }, + "sapadmId": { + "value": 790 + }, + "sapsysGid": { + "value": 79 + }, + "osType": { + "value": "(images)[parameters(osType)].OSType" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT505 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT505 new file mode 100644 index 0000000..c1c6710 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT505 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/access_policy.json" + ], + "timestamp": 1642962896108, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/access_policy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT505", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/accesspolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT505", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "objectId": { + "type": "string", + "metadata": { + "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets." + } + }, + "secretsPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge." + } + }, + "keysPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault." + } + }, + "certificatesPermissions": { + "type": "array", + "defaultValue": [ + "list" + ], + "metadata": { + "description": "Specifies the permissions to keys in the vault." + } + } + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "name": "keyVaultName/add", + "apiVersion": "2019-09-01", + "properties": { + "accessPolicies": [ + { + "tenantId": "[subscription().tenantId]", + "objectId": "objectId", + "permissions": { + "secrets": [ + "list" + ], + "keys": [ + "list" + ], + "certificates": [ + "list" + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT506 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT506 new file mode 100644 index 0000000..a3dcda7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT506 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/role_assignments.json" + ], + "timestamp": 1642962896116, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/role_assignments.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT506", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT506", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "roleAssignmentName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the role assignment to create. It can be any valid GUID." + } + }, + "roleDefinitionID": { + "type": "string", + "metadata": { + "description": "Specifies the role definition ID used in the role assignment." + } + }, + "principalId": { + "type": "string", + "metadata": { + "description": "Specifies the principal ID assigned to the role." + } + } + }, + "resources": [ + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "roleAssignmentName", + "properties": { + "roleDefinitionId": "roleDefinitionID", + "principalId": "principalId" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT507 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT507 new file mode 100644 index 0000000..cd4819b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT507 @@ -0,0 +1,97 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/vm_linux_extension.json" + ], + "timestamp": 1642962896123, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/vm_linux_extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT507", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT507", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The Location For the resources" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the vm" + } + }, + "filepath": { + "type": "string" + }, + "commandToExecute": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + } + } + }, + "variables": { + "extensionName": "vmNameInitStartup" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "vmName/vmNameInitStartup", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false + }, + "protectedSettings": { + "commandToExecute": "commandToExecute", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(parameters('filepath'), parameters('_artifactsLocationSasToken')))]" + ] + } + } + } + ], + "outputs": { + "instanceView": { + "value": "[reference( resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))).instanceView]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT508 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT508 new file mode 100644 index 0000000..e68eff4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT508 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/vm_windows_extension.json" + ], + "timestamp": 1642962896132, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/nestedtemplates/vm_windows_extension.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT508", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT508", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "metadata": { + "description": "The Location For the resources" + }, + "type": "string" + }, + "vmName": { + "metadata": { + "description": "The name of the vm" + }, + "type": "string" + }, + "commandToExecute": { + "type": "string" + }, + "filepath": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + } + } + }, + "variables": { + "extensionName": "vmNameInitStartup" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "vmName/vmNameInitStartup", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(parameters('filepath'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "commandToExecute" + } + } + } + ], + "outputs": { + "instanceView": { + "value": "[reference( resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))).instanceView]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT509 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT509 new file mode 100644 index 0000000..55d96dd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT509 @@ -0,0 +1,4202 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/azuredeploy.json", + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/azuredeploy.parameters.json" + ], + "timestamp": 1642962896140, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/azuredeploy.json", + "/application-workloads/sas/sas9.4-viya/sas9.4-viya/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT509", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/proximityplacementgroups", + "microsoft.keyvault/vaults/secrets", + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT509", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "SASApplicationName": { + "minLength": 2, + "maxLength": 6, + "type": "String", + "defaultValue": "sasapp", + "metadata": { + "description": "This tag will be used as a prefix for the hostname of the SAS servers and Azure resources" + } + }, + "adminIngressLocation": { + "type": "String", + "metadata": { + "description": "Allow inbound SSH traffic to the Ansible Controller-Bastion Host from this CIDR block or IP address range. Must be a valid IP or CIDR range of the form x.x.x.x or x.x.x.x/x" + }, + "value": "183.83.137.123" + }, + "vnetAddressCIDR": { + "defaultValue": "10.10.0.0/16", + "type": "String", + "metadata": { + "description": "Virtual Network CIDR, ex. 10.10.0.0/16" + } + }, + "ansibleBastionPublicSubnetCIDR": { + "defaultValue": "10.10.1.0/24", + "type": "String", + "metadata": { + "description": "Virtual Network Public Subnet CIDR, ex. 10.10.1.0/24 which should allign with VNET CIDR" + } + }, + "SASPrivateSubnetCIDR": { + "defaultValue": "10.10.2.0/24", + "type": "String", + "metadata": { + "description": "Virtual Network Private Subnet CIDR, ex. 10.10.2.0/24 which should allign with VNET CIDR" + } + }, + "ansibleVMSize": { + "defaultValue": "Standard_D4s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Ansible VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "windowsRdpVMSize": { + "defaultValue": "Standard_D8S_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Windows Server VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks" + } + }, + "SASMetaVMSize": { + "defaultValue": "Standard_D4s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Meta VM.The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "SASComputeVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Compute VM.The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "SASMidVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the Mid VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "SASDataStorage": { + "defaultValue": 100, + "minValue": 100, + "maxValue": 32767, + "type": "Int", + "metadata": { + "description": "The SAS data volume size for SAS 94" + } + }, + "primaryUserName": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "SASExternalPassword": { + "minLength": 12, + "maxLength": 255, + "type": "SecureString", + "metadata": { + "description": "Password for RDP login & SAS admin account in SAS servers" + }, + "value": "GEN-PASSWORD" + }, + "SASInternalPassword": { + "minLength": 8, + "maxLength": 255, + "type": "SecureString", + "metadata": { + "description": "Password for SAS Internal Accounts(Metadata & WIP)" + }, + "value": "GEN-PASSWORD" + }, + "viyaPrivateSubnetCIDR": { + "defaultValue": "10.10.3.0/24", + "type": "String", + "metadata": { + "description": "Virtual Network Private Subnet CIDR, ex. 10.10.3.0/24 which should allign with VNET CIDR" + } + }, + "viyaMicroservicesVMSize": { + "defaultValue": "Standard_E16s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the MicroServices VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "viyaSpreVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the SPRE VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "viyaCASControllerVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the CASController VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disk. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "viyaCASWorkerVMSize": { + "defaultValue": "Standard_E8s_v3", + "type": "String", + "metadata": { + "description": "This is the SKU for the CAS Worker VM. The default SKU value represents the minimum recommended size for system stability in most SAS software license sets. The selected SKU must support premium disks. For details: https://azure.microsoft.com/en-in/pricing/details/virtual-machines/red-hat/" + } + }, + "numberOfViyaCASNodes": { + "defaultValue": 1, + "minValue": 1, + "maxValue": 100, + "type": "Int", + "metadata": { + "description": "The number of CAS Worker Nodes to create." + } + }, + "SASViyaDataStorage": { + "defaultValue": 100, + "minValue": 100, + "maxValue": 32767, + "type": "Int", + "metadata": { + "description": "The SAS data volume size for SAS Viya." + } + }, + "storageAccountName": { + "type": "String", + "metadata": { + "description": "Storage AccountName where SAS Depot is located" + }, + "value": "ccwestus" + }, + "storageAccountKey": { + "type": "SecureString", + "metadata": { + "description": "Storage Account Key" + }, + "value": "kngqtXaNOL8g6ugAspsX9c4ReC+ckjFkcaGB00XEumjTjuhtrDOXqswcP/hm+lr+URpREaobkHWdTihqyvf2aw==" + }, + "fileShareName": { + "type": "String", + "metadata": { + "description": "File Share Name where SASDepot is located" + }, + "value": "sasrepo" + }, + "SASDepotFolder": { + "type": "String", + "metadata": { + "description": "Folder Name in Azure File share where SAS94 depot is located" + }, + "defaultValue": "sasdepot" + }, + "viyaRepoFolder": { + "type": "String", + "metadata": { + "description": "Folder Name in Azure File share where SAS Viya Repo is located" + }, + "defaultValue": "viyarepo" + }, + "SASServerLicenseFile": { + "type": "String", + "metadata": { + "description": "Name of SAS Application Server License file.You will find this file inside the SAS Software Depot. It should be inside the folder sid_file." + }, + "value": "SAS94_9CCPHL_70154202_LINUX_X86-64.txt" + }, + "keyVaultOwnerID": { + "type": "String", + "metadata": { + "description": "Key Vault Owner Object ID,Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault.Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets. e.g.In Azure Cloud PowerShell type PS> Get-AzADUser -UserPrincipalName user@domain.com | grep Id" + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "SSHPublicKey": { + "type": "String", + "metadata": { + "description": "The full ssh public key that will be added to the servers." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure Resources location, where all the SAS 94 and Viya resources should be created. e.g. servers, disks, IP's etc." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/", + "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": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "access_policy_template": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]", + "ansible_nw_interface": "sasapp_ansible_nic", + "ansible_nw_sg": "sasapp_ansible_nsg", + "ansible_pub_nw_interface": "sasapp_ansible_pub_nic", + "ansible_vm_name": "ansible", + "cascontroller_nw_interface": "sasapp_cascontroller_nic", + "cascontroller_nw_sg": "sasapp_cascontroller_nsg", + "cascontroller_vm_name": "cascontroller", + "casworker_nw_sg": "sasapp_casworker_nsg", + "casworker_vm_name": "casworker", + "certificatesPermissions": [ + "import", + "get", + "list" + ], + "compute_nw_interface": "sasapp_compute_nic", + "compute_nw_sg": "sasapp_compute_nsg", + "compute_vm_name": "compute", + "custom_data_cas": "#cloud-config\n mounts:\n - [ ephemeral0, /cascache]", + "custom_data_sas": "#cloud-config\n mounts:\n - [ ephemeral0, /saswork]", + "diagnostic_storagegroup_name": "[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]", + "domain_name": "internal.cloudapp.net", + "key_vault_name": "sasappKeyVault", + "key_vault_secretname_pubkey": "ansible-pubkey", + "key_vault_secretname_pvtkey": "ansible-pvtkey", + "key_vault_secretname_sasext": "sasextpw", + "key_vault_secretname_sasinst": "sasintpw", + "key_vault_secretname_stgacc": "stgacckey", + "keysPermissions": [ + "get", + "list", + "import" + ], + "linux_extension_template": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]", + "meta_nw_interface": "sasapp_meta_nic", + "meta_nw_sg": "sasapp_meta_nsg", + "meta_vm_name": "meta", + "microservices_nw_interface": "sasapp_microservices_nic", + "microservices_nw_sg": "sasapp_microservices_nsg", + "microservices_vm_name": "microservices", + "mid_nw_interface": "sasapp_mid_nic", + "mid_nw_sg": "sasapp_mid_nsg", + "mid_vm_name": "mid", + "ppg_name": "sasapp_ppg_[uniqueString(resourceGroup().id)]", + "storage_account_uri": "[concat(parameters('storageAccountName'),'.file.',environment().suffixes.storage)]", + "pub_sub_nw_sg": "sasapp_subnet_pub1_nsg", + "pvt_sub_nw_sg": "sasapp_subnet_pvt1_nsg", + "rbacPrincipalID": "GEN-AZUREAD-OBJECTID", + "rdp_nw_interface": "sasapp_rdp_nic", + "rdp_nw_sg": "sasapp_rdp_nsg", + "rdp_os_version": "2019-Datacenter", + "rdp_vm_name": "rdp", + "reader_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", + "resourceGroupUniqueString": "[uniqueString(resourceGroup().id)]", + "role_assignment_template": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]", + "sas_opt_sas_disk_size": 128, + "sas_osdisk_size": 128, + "sas_viya_backup_size": 100, + "sas94vm_tags": { + "Application": "sasapp", + "Component": "SAS94NonGrid" + }, + "sasviyavm_tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "secretsPermissions": [ + "get", + "list", + "set" + ], + "skuName": "standard", + "spre_nw_interface": "sasapp_spre_nic", + "spre_nw_sg": "sasapp_spre_nsg", + "spre_vm_name": "spre", + "tenantId": "[subscription().tenantId]", + "vnet_name": "sasapp_vnet", + "vnet_pub_subnt": "sasapp_vnet_pub1_subnet", + "vnet_pvt_subnt": "sasapp_vnet_pvt1_subnet", + "vnet_viya_pvt_subnt": "sasapp_vnet_pvt2_subnet", + "windows_extension_template": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_windows_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/proximityPlacementGroups", + "name": "sasapp_ppg_[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-06-01", + "name": "sasapp_vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pub1_nsg", + "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pvt1_nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.0.0/16" + ] + }, + "subnets": [ + { + "name": "sasapp_vnet_pvt1_subnet", + "properties": { + "addressPrefix": "10.10.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pvt1_nsg" + } + } + }, + { + "name": "sasapp_vnet_pvt2_subnet", + "properties": { + "addressPrefix": "10.10.3.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pvt1_nsg" + } + } + }, + { + "name": "sasapp_vnet_pub1_subnet", + "properties": { + "addressPrefix": "10.10.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_subnet_pub1_nsg" + } + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_subnet_pub1_nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-ssh", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "183.83.137.123", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ], + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80,443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_subnet_pvt1_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80,443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "sasappKeyVault", + "location": "[resourceGroup().location]", + "properties": { + "enabledForDeployment": true, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": true, + "enableSoftDelete": false, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "[subscription().tenantId]", + "permissions": { + "keys": [ + "get", + "list", + "import" + ], + "secrets": [ + "get", + "list", + "set" + ] + } + } + ], + "sku": { + "name": "standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "sasappKeyVault/sasintpw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "value": "GEN-PASSWORD" + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "sasappKeyVault/sasextpw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "value": "GEN-PASSWORD" + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "sasappKeyVault/stgacckey", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "value": "kngqtXaNOL8g6ugAspsX9c4ReC+ckjFkcaGB00XEumjTjuhtrDOXqswcP/hm+lr+URpREaobkHWdTihqyvf2aw==" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "name": "[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": false, + "encryption": { + "services": { + "file": { + "enabled": true + }, + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_ansible_nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-ssh", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "183.83.137.123", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ], + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80,443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_meta_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_mid_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_compute_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_rdp_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_microservices_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_spre_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_cascontroller_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-09-01", + "name": "sasapp_casworker_nsg", + "location": "[resourceGroup().location]", + "properties": { + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-09-01", + "name": "sasapp_ansible_pub_nic", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_ansible_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/sasapp_ansible_pub_nic", + "Microsoft.Network/networkSecurityGroups/sasapp_ansible_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/sasapp_ansible_pub_nic" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pub1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_ansible_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "ansible", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_ansible_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "ansible-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 64 + }, + "dataDisks": [ + { + "name": "ansible-playbook", + "diskSizeGB": 50, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "ansible", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_ansible_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "AnsibleRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ansible", + "Microsoft.Resources/deployments/AnsibleAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('ansible_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('ansible_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "AnsibleAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ansible", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('ansible_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-AnsibleHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ansible", + "Microsoft.Resources/deployments/AnsibleAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./ansible_setup.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('viyaRepoFolder'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',variables('mid_vm_name'),' ',parameters('_artifactsLocation'),' ',variables('compute_vm_name'),' ',variables('meta_vm_name'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/ansible_setup.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-AnsibleSSLCopy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ansible", + "Microsoft.Resources/deployments/Phase2-MetaInstall", + "Microsoft.Resources/deployments/Phase2-MidInstall", + "Microsoft.Resources/deployments/Phase2-ComputeInstall", + "Microsoft.Resources/deployments/Phase4-ViyaInstallpart2" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./ansible_ssl.sh 2>&1 | tee /var/log/sas/install/runPhase2AnsibleSSLCopy.log;" + }, + "filepath": { + "value": "scripts/ansible_ssl.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase3-ViyaInstallpart1", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup", + "Microsoft.Resources/deployments/Phase2-MicroServicesViyaARK", + "Microsoft.Resources/deployments/Phase2-SpreViyaARK", + "Microsoft.Resources/deployments/Phase2-CASControllerViyaARK", + "casworkerviyaarkcopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./viyainstall.sh 1 2>&1 | tee /var/log/sas/install/runPhase3_viyainstallpart1.log" + }, + "filepath": { + "value": "scripts/viyainstall.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase4-ViyaInstallpart2", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase3-ViyaInstallpart1" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./viyainstall.sh 2 2>&1 | tee /var/log/sas/install/runPhase4_viyainstallpart2.log" + }, + "filepath": { + "value": "scripts/viyainstall.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase5-ViyaInstallpart3", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase2-AnsibleSSLCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./viyainstall.sh 3 2>&1 | tee /var/log/sas/install/runPhase5_viyainstallpart3.log" + }, + "filepath": { + "value": "scripts/viyainstall.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase6-ViyaPostInstall", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase5-ViyaInstallpart3" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "ansible" + }, + "commandToExecute": { + "value": "set -o pipefail;./viyainstall.sh 4 2>&1 | tee /var/log/sas/install/runPhase6_viyapostinstall.log" + }, + "filepath": { + "value": "scripts/viyainstall.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_rdp_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_rdp_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_rdp_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "rdp", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_rdp_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D8S_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "osProfile": { + "computerName": "rdp", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_rdp_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "RDPContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/rdp" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_windows_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "rdp" + }, + "commandToExecute": { + "value": "powershell.exe Expand-Archive -LiteralPath client_install.zip -Destination C:\\WindowsAzure\\client_install" + }, + "filepath": { + "value": "client_install.zip" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-SASClientInstall", + "dependsOn": [ + "Microsoft.Resources/deployments/RDPContentFileDownload" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_windows_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "rdp" + }, + "commandToExecute": { + "value": "[concat('powershell -ExecutionPolicy Unrestricted -File sas_client_install.ps1 ','-stg_acc_name ',parameters('storageAccountName'),' -stg_key ',parameters('storageAccountKey'),' -file_share_name ',parameters('fileShareName'),' -depot_folder_name ',parameters('SASDepotFolder'),' -clients_sid ',parameters('SASServerLicenseFile'),' -app_name ',parameters('SASApplicationName'),' -mid_name ',variables('mid_vm_name'),' -domain_name ',variables('domain_name'),' -artifact_loc ',parameters('_artifactsLocation'),' -storageuri ',variables('storage_account_uri'))]" + }, + "filepath": { + "value": "sas_client_install.ps1" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_meta_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_meta_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_meta_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "meta", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_meta_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SAS94NonGrid" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "meta-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "meta-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "meta", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_meta_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MetaRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('meta_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('meta_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MetaAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.KeyVault/vaults/sasappKeyVault", + "[resourceID('Microsoft.Resources/deployments','AnsibleAccessPolicy')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('meta_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-MetaHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.Resources/deployments/MetaAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "meta" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./sasapp_prereq.sh',' ',parameters('SASApplicationName'),' ',parameters('SASDepotFolder'),' ',parameters('fileShareName'),' ',parameters('storageAccountName'),' ',variables('domain_name'),' ',parameters('location'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',variables('mid_vm_name'),' ',variables('meta_vm_name'),' ',variables('compute_vm_name'),' ',parameters('SASServerLicenseFile'),' ','meta',' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/sasapp_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MetaContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.Resources/deployments/Phase1-MetaHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "meta" + }, + "commandToExecute": { + "value": "cp response-properties.tar.gz /tmp" + }, + "filepath": { + "value": "properties/response-properties.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-MetaInstall", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.Resources/deployments/MetaContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "meta" + }, + "commandToExecute": { + "value": "set -o pipefail;./meta_install.sh 2>&1 | tee /var/log/sas/install/meta_install.log" + }, + "filepath": { + "value": "scripts/meta_install.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase3-MetaConfig", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/meta", + "Microsoft.Resources/deployments/Phase2-MetaInstall", + "Microsoft.Resources/deployments/Phase2-AnsibleSSLCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "meta" + }, + "commandToExecute": { + "value": "set -o pipefail;./meta_config.sh 2>&1 | tee /var/log/sas/install/meta_config.log" + }, + "filepath": { + "value": "scripts/meta_config.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_compute_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_compute_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_compute_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "compute", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_compute_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SAS94NonGrid" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "compute-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "compute-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "compute-sasdata", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "compute", + "adminUsername": "GEN-UNIQUE", + "customData": "[base64(variables('custom_data_sas'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_compute_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ComputeRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('compute_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('compute_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ComputeAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute", + "[resourceID('Microsoft.Resources/deployments','MetaAccessPolicy')]", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('compute_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-ComputeHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute", + "Microsoft.Resources/deployments/ComputeAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "compute" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./sasapp_prereq.sh',' ',parameters('SASApplicationName'),' ',parameters('SASDepotFolder'),' ',parameters('fileShareName'),' ',parameters('storageAccountName'),' ',variables('domain_name'),' ',parameters('location'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',variables('mid_vm_name'),' ',variables('meta_vm_name'),' ',variables('compute_vm_name'),' ',parameters('SASServerLicenseFile'),' ','compute',' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/sasapp_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ComputeContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute", + "Microsoft.Resources/deployments/Phase1-ComputeHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "compute" + }, + "commandToExecute": { + "value": "cp response-properties.tar.gz /tmp" + }, + "filepath": { + "value": "properties/response-properties.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-ComputeInstall", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/compute", + "Microsoft.Resources/deployments/ComputeContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "compute" + }, + "commandToExecute": { + "value": "set -o pipefail;./compute_install.sh 2>&1 | tee /var/log/sas/install/compute_install.log" + }, + "filepath": { + "value": "scripts/compute_install.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase3-ComputeConfig", + "dependsOn": [ + "Microsoft.Resources/deployments/Phase2-ComputeInstall", + "Microsoft.Resources/deployments/Phase3-MetaConfig" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "compute" + }, + "commandToExecute": { + "value": "set -o pipefail;./compute_config.sh 2>&1 | tee /var/log/sas/install/compute_config.log" + }, + "filepath": { + "value": "scripts/compute_config.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_mid_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_mid_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt1_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_mid_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "mid", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_mid_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SAS94NonGrid" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "mid-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "mid-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "mid", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_mid_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MidRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('mid_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('mid_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MidAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "[resourceID('Microsoft.Resources/deployments','ComputeAccessPolicy')]", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('mid_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-MidHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "Microsoft.Resources/deployments/MidAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "mid" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./sasapp_prereq.sh',' ',parameters('SASApplicationName'),' ',parameters('SASDepotFolder'),' ',parameters('fileShareName'),' ',parameters('storageAccountName'),' ',variables('domain_name'),' ',parameters('location'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',variables('mid_vm_name'),' ',variables('meta_vm_name'),' ',variables('compute_vm_name'),' ',parameters('SASServerLicenseFile'),' ','mid',' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/sasapp_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MidContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "Microsoft.Resources/deployments/Phase1-MidHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "mid" + }, + "commandToExecute": { + "value": "cp response-properties.tar.gz /tmp" + }, + "filepath": { + "value": "properties/response-properties.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-MidInstall", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "Microsoft.Resources/deployments/MidContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "mid" + }, + "commandToExecute": { + "value": "set -o pipefail;./mid_install.sh 2>&1 | tee /var/log/sas/install/mid-install.log" + }, + "filepath": { + "value": "scripts/mid_install.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase3-MidConfig", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/mid", + "Microsoft.Resources/deployments/Phase2-MidInstall", + "Microsoft.Resources/deployments/Phase3-ComputeConfig" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "mid" + }, + "commandToExecute": { + "value": "set -o pipefail;./mid_config.sh 2>&1 | tee /var/log/sas/install/mid_config.log" + }, + "filepath": { + "value": "scripts/mid_config.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_microservices_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_microservices_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt2_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_microservices_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "microservices", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_microservices_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E16s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "microservices-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "microservices-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "microservices-sasbackup", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "microservices", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_microservices_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MicroServicesRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/microservices" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('microservices_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('microservices_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MicroServicesAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/microservices", + "Microsoft.KeyVault/vaults/sasappKeyVault", + "[resourceID('Microsoft.Resources/deployments','MidAccessPolicy')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('microservices_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-MicroServicesHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/microservices", + "Microsoft.Resources/deployments/MicroServicesAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "microservices" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./viya_prereq.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('viyaRepoFolder'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/viya_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "MicroServicesContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/microservices", + "Microsoft.Resources/deployments/Phase1-MicroServicesHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "microservices" + }, + "commandToExecute": { + "value": "cp viya-ark.tar.gz /tmp" + }, + "filepath": { + "value": "properties/viya-ark.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-MicroServicesViyaARK", + "dependsOn": [ + "Microsoft.Resources/deployments/MicroServicesContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "microservices" + }, + "commandToExecute": { + "value": "set -o pipefail;./viya_ark.sh 2>&1 | tee /var/log/sas/install/runPhase2_viyaark.log" + }, + "filepath": { + "value": "scripts/viya_ark.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_spre_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_spre_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt2_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_spre_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "spre", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_spre_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "spre-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "spre-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "spre-sasbackup", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "spre", + "adminUsername": "GEN-UNIQUE", + "customData": "[base64(variables('custom_data_sas'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_spre_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "SpreRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/spre" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('spre_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('spre_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "SpreAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/spre", + "Microsoft.KeyVault/vaults/sasappKeyVault", + "[resourceID('Microsoft.Resources/deployments','CAScontrollerAccessPolicy')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('spre_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-SpreHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/spre", + "Microsoft.Resources/deployments/SpreAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "spre" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./viya_prereq.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('fileShareName'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/viya_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "SpreContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/spre", + "Microsoft.Resources/deployments/Phase1-SpreHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "spre" + }, + "commandToExecute": { + "value": "cp viya-ark.tar.gz /tmp" + }, + "filepath": { + "value": "properties/viya-ark.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-SpreViyaARK", + "dependsOn": [ + "Microsoft.Resources/deployments/SpreContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "spre" + }, + "commandToExecute": { + "value": "set -o pipefail;./viya_ark.sh 2>&1 | tee /var/log/sas/install/runPhase2_viyaark.log" + }, + "filepath": { + "value": "scripts/viya_ark.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_cascontroller_nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_cascontroller_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt2_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_cascontroller_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "Cascontroller_vm_name", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sasapp_cascontroller_nic", + "Microsoft.Storage/storageAccounts/[toLower(concat(parameters('SASApplicationName'),'diag', variables('resourceGroupUniqueString')))]" + ], + "tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "cascontroller-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "cascontroller-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "cascontroller-sasbackup", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "cascontroller-sasdata", + "diskSizeGB": 100, + "lun": 2, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "Cascontroller_vm_name", + "adminUsername": "GEN-UNIQUE", + "customData": "[base64(variables('custom_data_cas'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_cascontroller_nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('diagnostic_storagegroup_name')).primaryEndpoints.blob]" + } + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "CASControllerRoleAssignment", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Cascontroller_vm_name" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', variables('Cascontroller_vm_name')), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('Cascontroller_vm_name')),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "CASControllerAccessPolicy", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Cascontroller_vm_name", + "[resourceID('Microsoft.Resources/deployments','MicroServicesAccessPolicy')]", + "Microsoft.KeyVault/vaults/sasappKeyVault" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',variables('Cascontroller_vm_name')),'2019-12-01', 'Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-CASControllerHostSetup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Cascontroller_vm_name", + "Microsoft.Resources/deployments/CAScontrollerAccessPolicy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "Cascontroller_vm_name" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./viya_prereq.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('fileShareName'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/viya_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "CASContentFileDownload", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Cascontroller_vm_name", + "Microsoft.Resources/deployments/Phase1-CASControllerHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "Cascontroller_vm_name" + }, + "commandToExecute": { + "value": "cp viya-ark.tar.gz /tmp" + }, + "filepath": { + "value": "properties/viya-ark.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-CASControllerViyaARK", + "dependsOn": [ + "Microsoft.Resources/deployments/CASContentFileDownload", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "Cascontroller_vm_name" + }, + "commandToExecute": { + "value": "set -o pipefail;./viya_ark.sh 2>&1 | tee /var/log/sas/install/runPhase2_viyaark.log" + }, + "filepath": { + "value": "scripts/viya_ark.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-09-01", + "name": "sasapp_casworkercopyIndex()_nic", + "location": "[resourceGroup().location]", + "copy": { + "name": "casworkernicLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/sasapp_casworker_nsg", + "Microsoft.Network/virtualNetworks/sasapp_vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sasapp_vnet/sasapp_vnet_pvt2_subnet" + }, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": true, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/sasapp_casworker_nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "casworkercopyIndex()", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "copy": { + "name": "casworkervmLoop", + "count": 1 + }, + "dependsOn": [ + "casworkernicLoop" + ], + "tags": { + "Application": "sasapp", + "Component": "SASViya" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_E8s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7.7", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "casworkercopyIndex()-osdisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 128 + }, + "dataDisks": [ + { + "name": "casworkercopyIndex()-opt-sas", + "diskSizeGB": 128, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "casworkercopyIndex()-sasbackup", + "diskSizeGB": 100, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "casworkercopyIndex()", + "adminUsername": "GEN-UNIQUE", + "customData": "[base64(variables('custom_data_cas'))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sasapp_casworkercopyIndex()_nic" + } + ] + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/sasapp_ppg_[uniqueString(resourceGroup().id)]" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "casworkercopyIndex()roleassignment", + "copy": { + "name": "casworkerrolecopy", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/casworkercopyIndex()" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/role_assignments.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "roleAssignmentName": { + "value": "[guid(resourceId('Microsoft.Compute/virtualMachines', concat(variables('casworker_vm_name'), copyIndex())), variables('reader_role'), variables('rbacPrincipalID'))]" + }, + "roleDefinitionID": { + "value": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]" + }, + "principalId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',concat(variables('casworker_vm_name'), copyIndex())),'2019-07-01','Full').identity.principalId]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "casworkercopyIndex()accesspolicy", + "copy": { + "name": "casworkerpolicycopy", + "count": 1, + "mode": "serial", + "batchSize": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/casworkercopyIndex()", + "Microsoft.KeyVault/vaults/sasappKeyVault", + "[resourceID('Microsoft.Resources/deployments','SpreAccessPolicy')]" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/access_policy.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "keyVaultName": { + "value": "sasappKeyVault" + }, + "tenantId": { + "value": "[subscription().tenantId]" + }, + "objectId": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines',concat(variables('casworker_vm_name'), copyIndex())),'2019-07-01','Full').identity.principalId]" + }, + "secretsPermissions": { + "value": [ + "get", + "list", + "set" + ] + }, + "keysPermissions": { + "value": [ + "get", + "list", + "import" + ] + }, + "certificatesPermissions": { + "value": [ + "import", + "get", + "list" + ] + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase1-casworkercopyIndex()Hostsetup", + "copy": { + "name": "casworkerextensioncopy", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/casworkercopyIndex()", + "casworkerpolicycopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "casworkercopyIndex()" + }, + "commandToExecute": { + "value": "[concat('mkdir -p /var/log/sas/install && set -o pipefail; ./viya_prereq.sh',' ',parameters('storageAccountName'),' ',parameters('fileShareName'),' ',parameters('fileShareName'),' ',parameters('SASApplicationName'),' ',variables('domain_name'),' ',variables('ansible_vm_name'),' ',variables('microservices_vm_name'),' ',variables('cascontroller_vm_name'),' ',variables('spre_vm_name'),' ',variables('casworker_vm_name'),' ',variables('key_vault_secretname_sasinst'),' ',variables('key_vault_secretname_sasext'),' ',variables('key_vault_name'),' ',variables('key_vault_secretname_pvtkey'),' ',variables('key_vault_secretname_pubkey'),' ',parameters('numberOfViyaCASNodes'),' ',parameters('_artifactsLocation'),' ',variables('key_vault_secretname_stgacc'),' ',variables('storage_account_uri'),' ','2>&1 | tee /var/log/sas/install/runPhase1_HostSetup.log')]" + }, + "filepath": { + "value": "scripts/viya_prereq.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "WorkerContentFileDownloadcopyIndex()", + "copy": { + "name": "casworkerdownloadextensioncopy", + "count": 1, + "mode": "serial", + "batchSize": 1 + }, + "dependsOn": [ + "Microsoft.Resources/deployments/Phase1-casworkercopyIndex()Hostsetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "casworkercopyIndex()" + }, + "commandToExecute": { + "value": "cp viya-ark.tar.gz /tmp" + }, + "filepath": { + "value": "properties/viya-ark.tar.gz" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "Phase2-casworkercopyIndex()ViyaARK", + "copy": { + "name": "casworkerviyaarkcopy", + "count": 1 + }, + "dependsOn": [ + "casworkerdownloadextensioncopy", + "Microsoft.Resources/deployments/Phase1-AnsibleHostSetup" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vm_linux_extension.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "casworkercopyIndex()" + }, + "commandToExecute": { + "value": "set -o pipefail;./viya_ark.sh 2>&1 | tee /var/log/sas/install/runPhase2_viyaark.log" + }, + "filepath": { + "value": "scripts/viya_ark.sh" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/sas/sas9.4-viya/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "AnsibleJumpHostServerIP": { + "type": "String", + "value": "[concat(reference(resourceId('Microsoft.Compute/virtualMachines',variables('ansible_vm_name'))).osProfile.adminUsername,'@',reference(resourceId('Microsoft.Network/publicIPAddresses',variables('ansible_pub_nw_interface'))).IpAddress)]" + }, + "SASRdpServerIP": { + "type": "String", + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces',variables('rdp_nw_interface'))).ipConfigurations[0].properties.privateIPAddress]" + }, + "SASStudioMidTier": { + "type": "String", + "value": "[concat('https://',parameters('SASApplicationName'),variables('mid_vm_name'),'.',variables('domain_name'),':8343/SASStudio')]" + }, + "SASInstallUser": { + "type": "String", + "value": "sasinst" + }, + "viyaSASDrive": { + "type": "String", + "value": "[concat('https://',parameters('SASApplicationName'),variables('microservices_vm_name'),'.',variables('domain_name'),'/SASDrive')]" + }, + "viyaSASStudio": { + "type": "String", + "value": "[concat('https://',parameters('SASApplicationName'),variables('microservices_vm_name'),'.',variables('domain_name'),'/SASStudioV')]" + }, + "viyaUserLogon": { + "type": "String", + "value": "[concat('https://',parameters('SASApplicationName'),variables('microservices_vm_name'),'.',variables('domain_name'),'/SASLogon/reset_password?code=',json(split(reference('Phase6-ViyaPostInstall').outputs.instanceView.value.statuses[0].message, '#SASBOOT#')[1]).SAS_BOOT)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT51 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT51 new file mode 100644 index 0000000..bb0dc36 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT51 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-networkInterfacesResource.json" + ], + "timestamp": 1642962883961, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/fe-networkInterfacesResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT51", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT51", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object" + }, + "feSubnetRef": { + "type": "string" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "feSubnetRef" + }, + "privateIPAddress": "10.0.0.50", + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/networkSettings/backendAddressPools/networkSettings" + }, + { + "id": "Microsoft.Network/loadBalancers/networkSettings/backendAddressPools/networkSettings" + } + ] + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "feSubnetRef" + }, + "privateIPAddress": "10.0.0.52", + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/networkSettings/backendAddressPools/networkSettings" + } + ] + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "feSubnetRef" + }, + "privateIPAddress": "10.0.0.51", + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/networkSettings/backendAddressPools/networkSettings" + } + ] + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT510 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT510 new file mode 100644 index 0000000..b861be8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT510 @@ -0,0 +1,386 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sccm/sccm-currentbranch/azuredeploy.json", + "/application-workloads/sccm/sccm-currentbranch/azuredeploy.parameters.json" + ], + "timestamp": 1642962896187, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sccm/sccm-currentbranch/azuredeploy.json", + "/application-workloads/sccm/sccm-currentbranch/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT510", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT510", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "prefix": { + "type": "string", + "minLength": 2, + "maxLength": 12, + "metadata": { + "description": "The prefix name of machines. " + }, + "value": "GEN-UNIQUE-5" + }, + "ClientsCount": { + "type": "int", + "allowedValues": [ + 1, + 2, + 3 + ], + "defaultValue": 1, + "metadata": { + "description": "The number of clients to create." + } + }, + "configuration": { + "type": "string", + "allowedValues": [ + "Standalone", + "Hierarchy" + ], + "defaultValue": "Standalone", + "metadata": { + "description": "Configuration for the environment, support both standalone and hierarchy" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "Size of the Virtual Machines" + } + }, + "adminUsername": { + "type": "string", + "minLength": 2, + "maxLength": 13, + "metadata": { + "description": "The name of the administrator account of the new VM. The domain name is contoso.com " + }, + "value": "GEN-UNIQUE-10" + }, + "adminPassword": { + "type": "securestring", + "minLength": 8, + "metadata": { + "description": "Input must meet password complexity requirements as documented for property 'adminPassword' in https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/virtualmachines-create-or-update" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured. " + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "SQLVmSize": { + "type": "string", + "defaultValue": "Standard_B2ms", + "metadata": { + "description": "SQL VM size" + } + } + }, + "variables": { + "dscScript": "DSC/DCConfiguration.zip", + "virtualNetworkName": "[concat(toLower(parameters('prefix')), '-vnet')]", + "domainName": "contoso.com", + "timeZone": "UTC", + "networkSettings": { + "virtualNetworkAddressPrefix": "10.0.0.0/16", + "subnetAddressPrefix": "10.0.0.0/24", + "virtualMachinesIPAddress": "10.0.0.", + "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), 'default')]", + "privateIPAllocationMethod": "Static", + "publicIpAllocationMethod": "Dynamic" + }, + "securityGroupRuleName": "default-allow-rdp", + "securityGroupRule": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + }, + "vmrole": [ + "DC", + "DPMP" + ], + "vmInfo": { + "DC": { + "name": "DC01", + "disktype": "Premium_LRS", + "Size": "Standard_B2s", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2022-datacenter", + "version": "latest" + } + }, + "DPMP": { + "name": "DPMP01", + "disktype": "Premium_LRS", + "size": "Standard_B2s", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2022-datacenter", + "version": "latest" + } + } + }, + "copy": [ + { + "name": "ClientName", + "count": 1, + "input": "[concat(parameters('prefix'),'Cl0',copyIndex('ClientName',1))]" + }, + { + "name": "clientRole", + "count": 1, + "input": "[concat('Client',copyIndex('clientRole',1))]" + }, + { + "name": "clientInfo", + "count": 1, + "input": "[json(concat('{\"Client',copyIndex('clientInfo',1),'\":{\"name\": \"Cl0',copyIndex('clientInfo',1),'\",\"disktype\": \"Premium_LRS\",\"size\": \"',parameters('vmSize'),'\",\"imageReference\": {\"publisher\": \"MicrosoftWindowsDesktop\",\"offer\": \"Windows-10\",\"sku\": \"21h1-ent\",\"version\": \"latest\"}}}'))]" + } + ], + "siteRole": "[if(equals(parameters('configuration'),'Standalone'),createarray('PS'),createarray('CS','PS'))]", + "siteInfo": "[if(equals(parameters('configuration'),'Standalone'),json(concat('{\"PS\":{\"name\":\"PS01\",\"DiskType\":\"Premium_LRS\",\"size\":\"',parameters('SQLVmSize'),'\",\"imageReference\":{\"publisher\": \"MicrosoftSQLServer\",\"offer\": \"SQL2019-WS2019\",\"sku\": \"Standard\",\"version\": \"latest\"}}}')),json(concat('{\"CS\":{\"name\":\"CS01\",\"DiskType\":\"Premium_LRS\",\"size\":\"',parameters('SQLVmSize'),'\",\"imageReference\":{\"publisher\": \"MicrosoftSQLServer\",\"offer\": \"SQL2019-WS2019\",\"sku\": \"Standard\",\"version\": \"latest\"}},\"PS\":{\"name\":\"PS01\",\"DiskType\":\"Premium_LRS\",\"size\":\"',parameters('SQLVmSize'),'\",\"imageReference\":{\"publisher\": \"MicrosoftSQLServer\",\"offer\": \"SQL2019-WS2019\",\"sku\": \"Standard\",\"version\": \"latest\"}}}')))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmcopy", + "count": "[add(add(length(variables('vmInfo')),length(variables('siteInfo'))),length(variables('clientRole')))]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/',concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))),'-ni'))]" + ], + "properties": { + "osProfile": { + "computerName": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))))]", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": true, + "timeZone": "UTC" + } + }, + "hardwareProfile": { + "vmSize": "[if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].size,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].size,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].size))]" + }, + "storageProfile": { + "imageReference": "[if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].imageReference,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].imageReference,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].imageReference))]", + "osDisk": { + "osType": "Windows", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))),'-OsDisk')]", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "[if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].disktype,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].disktype,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].disktype))]" + }, + "diskSizeGB": 150 + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ni'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": false + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '/WorkFlow')]", + "location": "[resourceGroup().location]", + "copy": { + "name": "dscvmextensioncopy", + "count": "[add(add(length(variables('vmInfo')),length(variables('siteInfo'))),length(variables('clientRole')))]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines/', concat(toLower(parameters('prefix')),if(less(copyIndex(),length(variables('vmInfo'))),toLower(variables('vmInfo')[variables('vmRole')[copyIndex()]].name),if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),toLower(variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name),toLower(variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name)))))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('_artifactsLocation'),concat(variables('dscScript'),parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "[if(less(copyIndex(),length(variables('vmInfo'))),concat(variables('vmRole')[copyIndex()],'Configuration.ps1\\Configuration'),if(less(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),concat(variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))],'Configuration.ps1\\Configuration'),'ClientConfiguration.ps1\\Configuration'))]", + "Properties": { + "DomainName": "contoso.com", + "DCName": "[concat(parameters('prefix'),variables('vmInfo')['DC'].name)]", + "DPMPName": "[concat(parameters('prefix'),variables('vmInfo')['DPMP'].name)]", + "CSName": "[if(equals(parameters('configuration'),'Standalone'),'Empty',concat(parameters('prefix'),variables('siteInfo')['CS'].name))]", + "PSName": "[concat(parameters('prefix'),variables('siteInfo')['PS'].name)]", + "ClientName": "ClientName", + "DNSIPAddress": "[concat(variables('networkSettings').virtualMachinesIPAddress,add(int('0'),int('4')))]", + "Configuration": "Standalone", + "AdminCreds": { + "UserName": "GEN-UNIQUE-10", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(networkSettings).virtualNetworkAddressPrefix" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "(networkSettings).subnetAddressPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ni')]", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicopy", + "count": "[add(add(length(variables('vmInfo')),length(variables('siteInfo'))),length(variables('clientRole')))]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/publicIpAddresses/', concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ip'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', concat(toLower(toLower(parameters('prefix'))), '-nsg'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "(networkSettings).subnetRef" + }, + "privateIPAllocationMethod": "(networkSettings).privateIPAllocationMethod", + "privateIPAddress": "[concat(variables('networkSettings').virtualMachinesIPAddress,add(copyIndex(),int('4')))]", + "publicIpAddress": { + "id": "[resourceId('Microsoft.Network/publicIpAddresses', concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ip'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat(toLower(parameters('prefix')), '-nsg'))]" + } + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-05-01", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ip')]", + "location": "[resourceGroup().location]", + "copy": { + "name": "ipcopy", + "count": "[add(add(length(variables('vmInfo')),length(variables('siteInfo'))),length(variables('clientRole')))]" + }, + "properties": { + "publicIpAllocationMethod": "(networkSettings).publicIpAllocationMethod" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "[concat(toLower(parameters('prefix')), '-nsg')]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT511 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT511 new file mode 100644 index 0000000..61bd77f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT511 @@ -0,0 +1,410 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sccm/sccm-technicalpreview/azuredeploy.json", + "/application-workloads/sccm/sccm-technicalpreview/azuredeploy.parameters.json" + ], + "timestamp": 1642962896207, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sccm/sccm-technicalpreview/azuredeploy.json", + "/application-workloads/sccm/sccm-technicalpreview/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT511", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT511", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "prefix": { + "type": "string", + "minLength": 2, + "maxLength": 12, + "metadata": { + "description": "The prefix name of machines. " + }, + "value": "GEN-UNIQUE-5" + }, + "ClientsCount": { + "type": "int", + "allowedValues": [ + 0, + 1, + 2, + 3 + ], + "defaultValue": 0, + "metadata": { + "description": "The number of clients to create." + } + }, + "adminUsername": { + "type": "string", + "minLength": 2, + "maxLength": 13, + "metadata": { + "description": "The name of the administrator account of the new VM. The domain name is contoso.com " + }, + "value": "GEN-UNIQUE-10" + }, + "adminPassword": { + "type": "securestring", + "minLength": 8, + "metadata": { + "description": "Input must meet password complexity requirements as documented for property 'adminPassword' in https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/virtualmachines-create-or-update" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "Domain Controller VM size" + } + }, + "SQLVmSize": { + "type": "string", + "defaultValue": "Standard_B2ms", + "metadata": { + "description": "SQL VM size" + } + } + }, + "variables": { + "dscScript": "DSC/DCConfiguration.zip", + "virtualNetworkName": "[concat(toLower(parameters('prefix')), '-vnet')]", + "domainName": "contoso.com", + "timeZone": "UTC", + "networkSettings": { + "virtualNetworkAddressPrefix": "10.0.0.0/16", + "subnetAddressPrefix": "10.0.0.0/24", + "virtualMachinesIPAddress": "10.0.0.", + "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), 'default')]", + "privateIPAllocationMethod": "Static", + "publicIpAllocationMethod": "Dynamic" + }, + "securityGroupRuleName": "default-allow-rdp", + "securityGroupRule": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + }, + "vmInfoNoClient": { + "DC": { + "name": "DC01", + "disktype": "Premium_LRS", + "size": "Standard_B2s", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2022-Datacenter", + "version": "latest" + } + }, + "DPMP": { + "name": "DPMP01", + "disktype": "Premium_LRS", + "size": "Standard_B2s", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + } + }, + "vmrole": "[createarray('DC','DPMP')]", + "vmInfo": { + "DC": { + "name": "DC01", + "disktype": "Premium_LRS", + "size": "Standard_B2s", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2022-Datacenter", + "version": "latest" + } + }, + "DPMP": { + "name": "DPMP01", + "disktype": "Premium_LRS", + "size": "Standard_B2s", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + } + }, + "copy": [ + { + "name": "ClientName", + "count": 0, + "input": "[concat(parameters('prefix'),'Cl0',copyIndex('ClientName',1))]" + }, + { + "name": "clientRole", + "count": 0, + "input": "[concat('Client',copyIndex('clientRole',1))]" + }, + { + "name": "clientInfo", + "count": 0, + "input": "[json(concat('{\"Client',copyIndex('clientInfo',1),'\":{\"name\": \"Cl0',copyIndex('clientInfo',1),'\",\"disktype\": \"Premium_LRS\",\"size\": \"',parameters('vmSize'),'\",\"imageReference\": {\"publisher\": \"MicrosoftWindowsDesktop\",\"offer\": \"Windows-10\",\"sku\": \"21h1-ent\",\"version\": \"latest\"}}}'))]" + } + ], + "siterole": [ + "PS" + ], + "siteInfo": { + "PS": { + "name": "PS01", + "disktype": "Premium_LRS", + "size": "Standard_B2ms", + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2019-WS2019", + "sku": "Standard", + "version": "latest" + } + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmcopy", + "count": "[add(add(length(variables('vmInfo')),length(variables('siteInfo'))),length(variables('clientRole')))]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/',concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))),'-ni'))]" + ], + "properties": { + "osProfile": { + "computerName": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))))]", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": true, + "timeZone": "UTC" + } + }, + "hardwareProfile": { + "vmSize": "[if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].size,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].size,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].size))]" + }, + "storageProfile": { + "imageReference": "[if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].imageReference,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].imageReference,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].imageReference))]", + "osDisk": { + "osType": "Windows", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))),'-OsDisk')]", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "[if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].disktype,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].disktype,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].disktype))]" + }, + "diskSizeGB": 150 + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ni'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": false + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '/WorkFlow')]", + "location": "[resourceGroup().location]", + "copy": { + "name": "dscvmextensioncopy", + "count": "[add(add(length(variables('vmInfo')),length(variables('siteInfo'))),length(variables('clientRole')))]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines/', concat(toLower(parameters('prefix')),if(less(copyIndex(),length(variables('vmInfo'))),toLower(variables('vmInfo')[variables('vmRole')[copyIndex()]].name),if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),toLower(variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name),toLower(variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name)))))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.21", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[Uri(parameters('_artifactsLocation'),concat(variables('dscScript'),parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "[if(less(copyIndex(),length(variables('vmInfo'))),concat(variables('vmRole')[copyIndex()],'Configuration.ps1\\Configuration'),if(less(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),concat(variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))],'Configuration.ps1\\Configuration'),'ClientConfiguration.ps1\\Configuration'))]", + "Properties": { + "DomainName": "contoso.com", + "DCName": "[concat(parameters('prefix'),variables('vmInfo')['DC'].name)]", + "DPMPName": "[concat(parameters('prefix'),variables('vmInfo')['DPMP'].name)]", + "PSName": "[concat(parameters('prefix'),variables('siteInfo')['PS'].name)]", + "ClientName": "[if(equals(parameters('ClientsCount'),0),'Empty',variables('ClientName'))]", + "DNSIPAddress": "[concat(variables('networkSettings').virtualMachinesIPAddress,add(int('0'),int('4')))]", + "AdminCreds": { + "UserName": "GEN-UNIQUE-10", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(networkSettings).virtualNetworkAddressPrefix" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "(networkSettings).subnetAddressPrefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ni')]", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "nivmcopy", + "count": "[add(add(length(variables('vmInfo')),length(variables('siteInfo'))),length(variables('clientRole')))]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/publicIpAddresses/', concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ip'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', concat(toLower(toLower(parameters('prefix'))), '-nsg'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "(networkSettings).subnetRef" + }, + "privateIPAllocationMethod": "(networkSettings).privateIPAllocationMethod", + "privateIPAddress": "[concat(variables('networkSettings').virtualMachinesIPAddress,add(copyIndex(),int('4')))]", + "publicIpAddress": { + "id": "[resourceId('Microsoft.Network/publicIpAddresses', concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ip'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat(toLower(parameters('prefix')), '-nsg'))]" + } + } + }, + { + "type": "Microsoft.Network/publicIpAddresses", + "apiVersion": "2020-05-01", + "name": "[concat(toLower(parameters('prefix')),toLower(if(less(copyIndex(),length(variables('vmInfo'))),variables('vmInfo')[variables('vmRole')[copyIndex()]].name,if(greaterOrEquals(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo')))),variables('clientInfo')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))][variables('clientRole')[sub(copyIndex(),add(length(variables('vmInfo')),length(variables('siteInfo'))))]].name,variables('siteInfo')[variables('siteRole')[sub(copyIndex(),length(variables('vmInfo')))]].name))), '-ip')]", + "location": "[resourceGroup().location]", + "copy": { + "name": "ipvmcopy", + "count": "[add(add(length(variables('vmInfo')),length(variables('siteInfo'))),length(variables('clientRole')))]" + }, + "properties": { + "publicIpAllocationMethod": "(networkSettings).publicIpAllocationMethod" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "[concat(toLower(parameters('prefix')), '-nsg')]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT512 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT512 new file mode 100644 index 0000000..7f34740 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT512 @@ -0,0 +1,314 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/scrapy/scrapy-on-ubuntu/azuredeploy.json", + "/application-workloads/scrapy/scrapy-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962896219, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/scrapy/scrapy-on-ubuntu/azuredeploy.json", + "/application-workloads/scrapy/scrapy-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT512", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT512", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed" + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "This is the dns name of the public IP." + }, + "value": "GEN-UNIQUE-13" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machines" + }, + "value": "GEN-UNIQUE" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + }, + "value": "Canonical" + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + }, + "value": "UbuntuServer" + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Image SKU" + }, + "value": "18.04-LTS" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Size of the Virtual Machine" + }, + "value": "Standard_A0" + }, + "publicIPAddressName": { + "type": "string", + "metadata": { + "description": "Name of Public IP Address Name" + }, + "value": "azureuserpublicip" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of Virtual Machine" + }, + "value": "GEN-UNIQUE-8" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of Virtual Network" + }, + "value": "GEN-VNET-NAME" + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of Network Interface" + }, + "value": "azureusernic" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended" + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "storageAccountType": "Standard_LRS", + "publicIPAddressType": "Dynamic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-04-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "azureuserpublicip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "azureusernic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//azureuserpublicip", + "Microsoft.Network/virtualNetworks//GEN-VNET-NAME" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/azureuserpublicip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//azureusernic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/azureusernic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/installscrapy", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scrapy-install-ubuntu.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('myspider.py', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh scrapy-install-ubuntu.sh myspider.py" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT513 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT513 new file mode 100644 index 0000000..6661b1c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT513 @@ -0,0 +1,1589 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sharepoint/sharepoint-adfs/azuredeploy.json", + "/application-workloads/sharepoint/sharepoint-adfs/azuredeploy.parameters.json" + ], + "timestamp": 1642962896228, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sharepoint/sharepoint-adfs/azuredeploy.json", + "/application-workloads/sharepoint/sharepoint-adfs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT513", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.devtestlab/schedules", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/bastionhosts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT513", + "collection": "armtemplate", + "json": { + "contentVersion": "2.0.0.0", + "metadata": { + "description": "Create a SharePoint 2019 / 2016 / 2013 farm with a web application set with Windows and ADFS authentication, and some path based and host-named site collections. It also provisions User Profiles and Apps service applications and installs claims provider LDAPCP.", + "author": "Yvand" + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sharePointVersion": { + "type": "string", + "defaultValue": "Subscription", + "allowedValues": [ + "2013", + "2016", + "2019", + "Subscription" + ], + "metadata": { + "description": "Version of SharePoint farm to create." + } + }, + "dnsLabelPrefix": { + "type": "string", + "minLength": 2, + "metadata": { + "description": "\"[Prefix]\" of public DNS name of VMs, as used in \"[Prefix]-[VMName].[region].cloudapp.azure.com\"" + }, + "value": "GEN-UNIQUE-10" + }, + "domainFQDN": { + "type": "string", + "defaultValue": "contoso.local", + "minLength": 5, + "metadata": { + "description": "FQDN of the AD forest to create." + } + }, + "numberOfAdditionalFrontEnd": { + "type": "int", + "allowedValues": [ + 0, + 1, + 2, + 3, + 4 + ], + "defaultValue": 0, + "metadata": { + "description": "Number of MinRole Front-end to add to the farm. The MinRole type can be changed later as needed." + } + }, + "addAzureBastion": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specify if Azure Bastion should be provisioned. See https://azure.microsoft.com/en-us/services/azure-bastion for more information." + } + }, + "addPublicIPAddressToEachVM": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specify if each VM should have a public IP and be reachable from Internet." + } + }, + "RDPTrafficAllowed": { + "type": "string", + "defaultValue": "No", + "minLength": 1, + "metadata": { + "description": "Specify if RDP traffic is allowed to connect to the VMs:
- If 'No' (default): Firewall denies all incoming RDP traffic from Internet.
- If '*' or 'Internet': Firewall accepts all incoming RDP traffic from Internet.
- If 'ServiceTagName': Firewall accepts all incoming RDP traffic from the specified 'ServiceTagName'.
- If 'xx.xx.xx.xx': Firewall accepts incoming RDP traffic only from the IP 'xx.xx.xx.xx'." + } + }, + "adminUserName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Name of the AD and SharePoint administrator. 'admin' and 'administrator' are not allowed." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 8, + "metadata": { + "description": "Input must meet password complexity requirements as documented for property 'adminPassword' in https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/virtualmachines-create-or-update" + }, + "value": "GEN-PASSWORD" + }, + "serviceAccountsPassword": { + "type": "securestring", + "minLength": 8, + "metadata": { + "description": "Password for all service account and SharePoint passphrase. It must meet password complexity requirements as documented for property 'adminPassword' in https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/virtualmachines-create-or-update" + }, + "value": "GEN-PASSWORD" + }, + "vmsTimeZone": { + "type": "string", + "defaultValue": "Romance Standard Time", + "allowedValues": [ + "Dateline Standard Time", + "UTC-11", + "Aleutian Standard Time", + "Hawaiian Standard Time", + "Marquesas Standard Time", + "Alaskan Standard Time", + "UTC-09", + "Pacific Standard Time (Mexico)", + "UTC-08", + "Pacific Standard Time", + "US Mountain Standard Time", + "Mountain Standard Time (Mexico)", + "Mountain Standard Time", + "Central America Standard Time", + "Central Standard Time", + "Easter Island Standard Time", + "Central Standard Time (Mexico)", + "Canada Central Standard Time", + "SA Pacific Standard Time", + "Eastern Standard Time (Mexico)", + "Eastern Standard Time", + "Haiti Standard Time", + "Cuba Standard Time", + "US Eastern Standard Time", + "Turks And Caicos Standard Time", + "Paraguay Standard Time", + "Atlantic Standard Time", + "Venezuela Standard Time", + "Central Brazilian Standard Time", + "SA Western Standard Time", + "Pacific SA Standard Time", + "Newfoundland Standard Time", + "Tocantins Standard Time", + "E. South America Standard Time", + "SA Eastern Standard Time", + "Argentina Standard Time", + "Greenland Standard Time", + "Montevideo Standard Time", + "Magallanes Standard Time", + "Saint Pierre Standard Time", + "Bahia Standard Time", + "UTC-02", + "Mid-Atlantic Standard Time", + "Azores Standard Time", + "Cape Verde Standard Time", + "UTC", + "GMT Standard Time", + "Greenwich Standard Time", + "Sao Tome Standard Time", + "Morocco Standard Time", + "W. Europe Standard Time", + "Central Europe Standard Time", + "Romance Standard Time", + "Central European Standard Time", + "W. Central Africa Standard Time", + "Jordan Standard Time", + "GTB Standard Time", + "Middle East Standard Time", + "Egypt Standard Time", + "E. Europe Standard Time", + "Syria Standard Time", + "West Bank Standard Time", + "South Africa Standard Time", + "FLE Standard Time", + "Israel Standard Time", + "Kaliningrad Standard Time", + "Sudan Standard Time", + "Libya Standard Time", + "Namibia Standard Time", + "Arabic Standard Time", + "Turkey Standard Time", + "Arab Standard Time", + "Belarus Standard Time", + "Russian Standard Time", + "E. Africa Standard Time", + "Iran Standard Time", + "Arabian Standard Time", + "Astrakhan Standard Time", + "Azerbaijan Standard Time", + "Russia Time Zone 3", + "Mauritius Standard Time", + "Saratov Standard Time", + "Georgian Standard Time", + "Volgograd Standard Time", + "Caucasus Standard Time", + "Afghanistan Standard Time", + "West Asia Standard Time", + "Ekaterinburg Standard Time", + "Pakistan Standard Time", + "Qyzylorda Standard Time", + "India Standard Time", + "Sri Lanka Standard Time", + "Nepal Standard Time", + "Central Asia Standard Time", + "Bangladesh Standard Time", + "Omsk Standard Time", + "Myanmar Standard Time", + "SE Asia Standard Time", + "Altai Standard Time", + "W. Mongolia Standard Time", + "North Asia Standard Time", + "N. Central Asia Standard Time", + "Tomsk Standard Time", + "China Standard Time", + "North Asia East Standard Time", + "Singapore Standard Time", + "W. Australia Standard Time", + "Taipei Standard Time", + "Ulaanbaatar Standard Time", + "Aus Central W. Standard Time", + "Transbaikal Standard Time", + "Tokyo Standard Time", + "North Korea Standard Time", + "Korea Standard Time", + "Yakutsk Standard Time", + "Cen. Australia Standard Time", + "AUS Central Standard Time", + "E. Australia Standard Time", + "AUS Eastern Standard Time", + "West Pacific Standard Time", + "Tasmania Standard Time", + "Vladivostok Standard Time", + "Lord Howe Standard Time", + "Bougainville Standard Time", + "Russia Time Zone 10", + "Magadan Standard Time", + "Norfolk Standard Time", + "Sakhalin Standard Time", + "Central Pacific Standard Time", + "Russia Time Zone 11", + "New Zealand Standard Time", + "UTC+12", + "Fiji Standard Time", + "Kamchatka Standard Time", + "Chatham Islands Standard Time", + "UTC+13", + "Tonga Standard Time", + "Samoa Standard Time", + "Line Islands Standard Time" + ], + "minLength": 2, + "metadata": { + "description": "Time zone of the virtual machines. Type \"[TimeZoneInfo]::GetSystemTimeZones().Id\" in PowerShell to get the list." + } + }, + "vmsAutoShutdownTime": { + "type": "string", + "defaultValue": "1900", + "minLength": 4, + "maxLength": 4, + "metadata": { + "description": "The time at which VMs will be automatically shutdown (24h HHmm format). Set value to '9999' to NOT configure the auto shutdown." + } + }, + "enableAutomaticUpdates": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Enable automatic Windows Updates." + } + }, + "enableHybridBenefitServerLicenses": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable Azure Hybrid Benefit to use your on-premises Windows Server licenses and reduce cost. See https://docs.microsoft.com/en-us/azure/virtual-machines/windows/hybrid-use-benefit-licensing for more information." + } + }, + "sharePointDataDiskSize": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Size in Gb of the additional data disk attached to SharePoint VMs. Set to 0 to not create it" + } + }, + "vmDCSize": { + "type": "string", + "defaultValue": "Standard_B2s", + "metadata": { + "description": "Size of the DC VM" + } + }, + "vmDCStorageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS", + "Premium_ZRS", + "StandardSSD_ZRS", + "UltraSSD_LRS" + ], + "metadata": { + "description": "Type of storage for the managed disks. Visit 'https://docs.microsoft.com/en-us/rest/api/compute/disks/list#diskstorageaccounttypes' for more information" + } + }, + "vmSQLSize": { + "type": "string", + "defaultValue": "Standard_B2ms", + "metadata": { + "description": "Size of the SQL VM" + } + }, + "vmSQLStorageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS", + "Premium_ZRS", + "StandardSSD_ZRS", + "UltraSSD_LRS" + ], + "metadata": { + "description": "Type of storage for the managed disks. Visit 'https://docs.microsoft.com/en-us/rest/api/compute/disks/list#diskstorageaccounttypes' for more information" + } + }, + "vmSPSize": { + "type": "string", + "defaultValue": "Standard_B4ms", + "metadata": { + "description": "Size of the SharePoint VM" + } + }, + "vmSPStorageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS", + "Premium_ZRS", + "StandardSSD_ZRS", + "UltraSSD_LRS" + ], + "metadata": { + "description": "Type of storage for the managed disks. Visit 'https://docs.microsoft.com/en-us/rest/api/compute/disks/list#diskstorageaccounttypes' for more information" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "generalSettings": { + "vmDCName": "DC", + "vmSQLName": "SQL", + "vmSPName": "SP", + "vmFEName": "FE", + "sqlAlias": "SQLAlias", + "spSuperUserName": "spSuperUser", + "spSuperReaderName": "spSuperReader", + "adfsSvcUserName": "adfssvc", + "adfsSvcPassword": "GEN-PASSWORD", + "sqlSvcUserName": "sqlsvc", + "sqlSvcPassword": "GEN-PASSWORD", + "spSetupUserName": "spsetup", + "spSetupPassword": "GEN-PASSWORD", + "spFarmUserName": "spfarm", + "spFarmPassword": "GEN-PASSWORD", + "spSvcUserName": "spsvc", + "spSvcPassword": "GEN-PASSWORD", + "spAppPoolUserName": "spapppool", + "spAppPoolPassword": "GEN-PASSWORD", + "spPassphrase": "GEN-PASSWORD", + "localAdminUserName": "[concat('local-', uniqueString(subscription().subscriptionId))]", + "enableAnalysis": false + }, + "networkSettings": { + "vNetPrivateName": "[concat(resourceGroup().name, '-vnet')]", + "vNetPrivatePrefix": "10.0.0.0/16", + "subnetDCName": "Subnet-DC", + "subnetDCPrefix": "10.0.1.0/24", + "dcPrivateIPAddress": "10.0.1.4", + "subnetSQLName": "Subnet-SQL", + "subnetSQLPrefix": "10.0.2.0/24", + "subnetSPName": "Subnet-SP", + "subnetSPPrefix": "10.0.3.0/24", + "nsgSubnetDCName": "NSG-Subnet-DC", + "nsgSubnetSQLName": "NSG-Subnet-SQL", + "nsgSubnetSPName": "NSG-Subnet-SP", + "vmDCPublicIPNicAssociation": { + "id": "Microsoft.Network/publicIPAddresses/(vmDC).vmPublicIPName" + }, + "vmSQLPublicIPNicAssociation": { + "id": "Microsoft.Network/publicIPAddresses/(vmSQL).vmPublicIPName" + }, + "vmSPPublicIPNicAssociation": { + "id": "Microsoft.Network/publicIPAddresses/(vmSP).vmPublicIPName" + }, + "nsgRuleAllowIncomingTraffic": [ + { + "name": "allow-rdp-rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "No", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + }, + "vmDC": { + "vmImagePublisher": "MicrosoftWindowsServer", + "vmImageOffer": "WindowsServer", + "vmImageSKU": "2022-datacenter-azure-edition-smalldisk", + "vmOSDiskName": "Disk-DC-OS", + "vmVmSize": "Standard_B2s", + "vmNicName": "NIC-(generalSettings).vmDCName-0", + "vmPublicIPName": "PublicIP-(generalSettings).vmDCName", + "vmPublicIPDnsName": "[toLower(replace(concat(parameters('dnsLabelPrefix'), '-', variables('generalSettings').vmDCName), '_', '-'))]", + "shutdownResourceName": "shutdown-computevm-(generalSettings).vmDCName" + }, + "vmSQL": { + "vmImagePublisher": "MicrosoftSQLServer", + "vmImageOffer": "sql2019-ws2022", + "vmImageSKU": "sqldev", + "vmOSDiskName": "Disk-SQL-OS", + "vmVmSize": "Standard_B2ms", + "vmNicName": "NIC-(generalSettings).vmSQLName-0", + "vmPublicIPName": "PublicIP-(generalSettings).vmSQLName", + "vmPublicIPDnsName": "[toLower(replace(concat(parameters('dnsLabelPrefix'), '-', variables('generalSettings').vmSQLName), '_', '-'))]", + "shutdownResourceName": "shutdown-computevm-(generalSettings).vmSQLName" + }, + "vmSP": { + "vmImagePublisher": "[if(equals(toLower(parameters('sharePointVersion')), 'subscription'), 'MicrosoftWindowsServer', 'MicrosoftSharePoint')]", + "vmImageOffer": "[if(equals(toLower(parameters('sharePointVersion')), 'subscription'), 'WindowsServer', 'MicrosoftSharePointServer')]", + "vmImageSKU": "[if(equals(toLower(parameters('sharePointVersion')), 'subscription'), '2022-datacenter-azure-edition', concat('sp', parameters('sharePointVersion')))]", + "vmOSDiskName": "Disk-SP-OS", + "vmDataDiskName": "Disk-SP-Data", + "vmVmSize": "Standard_B4ms", + "vmNicName": "NIC-(generalSettings).vmSPName-0", + "vmPublicIPName": "PublicIP-(generalSettings).vmSPName", + "vmPublicIPDnsName": "[toLower(replace(concat(parameters('dnsLabelPrefix'), '-', variables('generalSettings').vmSPName), '_', '-'))]", + "shutdownResourceName": "shutdown-computevm-(generalSettings).vmSPName" + }, + "vmFE": { + "vmOSDiskName": "Disk-FE-OS", + "vmDataDiskName": "Disk-FE-Data", + "vmNicName": "NIC-(generalSettings).vmFEName-0", + "vmPublicIPName": "PublicIP-(generalSettings).vmFEName", + "vmPublicIPDnsName": "[toLower(replace(concat(parameters('dnsLabelPrefix'), '-', variables('generalSettings').vmFEName), '_', '-'))]", + "shutdownResourceName": "shutdown-computevm-(generalSettings).vmFEName" + }, + "dscConfigureDCVM": { + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('dsc/ConfigureDCVM.zip', parameters('_artifactsLocationSasToken')))]", + "script": "ConfigureDCVM.ps1", + "function": "ConfigureDCVM", + "forceUpdateTag": "1.0" + }, + "dscConfigureSQLVM": { + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('dsc/ConfigureSQLVM.zip', parameters('_artifactsLocationSasToken')))]", + "script": "ConfigureSQLVM.ps1", + "function": "ConfigureSQLVM", + "forceUpdateTag": "1.0" + }, + "dscConfigureSPVM": { + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('dsc/ConfigureSPVM.zip', parameters('_artifactsLocationSasToken')))]", + "script": "ConfigureSPVM.ps1", + "function": "ConfigureSPVM", + "forceUpdateTag": "1.0" + }, + "dscConfigureFEVM": { + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('dsc/ConfigureFEVM.zip', parameters('_artifactsLocationSasToken')))]", + "script": "ConfigureFEVM.ps1", + "function": "ConfigureFEVM", + "forceUpdateTag": "1.0" + }, + "vmSPDataDisk": [ + { + "lun": 0, + "name": "(vmSP).vmDataDiskName", + "caching": "ReadWrite", + "createOption": "Empty", + "diskSizeGB": 0 + } + ], + "azureBastion": { + "subnetPrefix": "10.0.4.0/24", + "publicIPDnsName": "[toLower(replace(concat(parameters('dnsLabelPrefix'), '-', 'Bastion'), '_', '-'))]" + } + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "(networkSettings).nsgSubnetDCName", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "(networkSettings).nsgSubnetDCName" + }, + "properties": { + "securityRules": "[if(equals(toLower(parameters('RDPTrafficAllowed')), 'no'), json('null'), variables('networkSettings').nsgRuleAllowIncomingTraffic)]" + } + }, + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "(networkSettings).nsgSubnetSQLName", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "(networkSettings).nsgSubnetSQLName" + }, + "properties": { + "securityRules": "[if(equals(toLower(parameters('RDPTrafficAllowed')), 'no'), json('null'), variables('networkSettings').nsgRuleAllowIncomingTraffic)]" + } + }, + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "(networkSettings).nsgSubnetSPName", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "(networkSettings).nsgSubnetSPName" + }, + "properties": { + "securityRules": "[if(equals(toLower(parameters('RDPTrafficAllowed')), 'no'), json('null'), variables('networkSettings').nsgRuleAllowIncomingTraffic)]" + } + }, + { + "name": "(networkSettings).vNetPrivateName", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/(networkSettings).nsgSubnetDCName", + "Microsoft.Network/networkSecurityGroups/(networkSettings).nsgSubnetSQLName", + "Microsoft.Network/networkSecurityGroups/(networkSettings).nsgSubnetSPName" + ], + "tags": { + "displayName": "(networkSettings).vNetPrivateName" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(networkSettings).vNetPrivatePrefix" + ] + }, + "subnets": [ + { + "name": "(networkSettings).subnetDCName", + "properties": { + "addressPrefix": "(networkSettings).subnetDCPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/(networkSettings).nsgSubnetDCName" + } + } + }, + { + "name": "(networkSettings).subnetSQLName", + "properties": { + "addressPrefix": "(networkSettings).subnetSQLPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/(networkSettings).nsgSubnetSQLName" + } + } + }, + { + "name": "(networkSettings).subnetSPName", + "properties": { + "addressPrefix": "(networkSettings).subnetSPPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/(networkSettings).nsgSubnetSPName" + } + } + } + ] + } + }, + { + "condition": false, + "name": "(vmDC).vmPublicIPName", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "tags": { + "displayName": "(vmDC).vmPublicIPName" + }, + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "(vmDC).vmPublicIPDnsName" + } + } + }, + { + "name": "(vmDC).vmNicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(networkSettings).vNetPrivateName", + "Microsoft.Network/publicIPAddresses/(vmDC).vmPublicIPName" + ], + "tags": { + "displayName": "(vmDC).vmNicName" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(networkSettings).dcPrivateIPAddress", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).vNetPrivateName/(networkSettings).subnetDCName" + }, + "publicIPAddress": "[if(parameters('addPublicIPAddressToEachVM'), variables('networkSettings').vmDCPublicIPNicAssociation, json('null'))]" + } + } + ] + } + }, + { + "name": "(generalSettings).vmDCName", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/(vmDC).vmNicName" + ], + "tags": { + "displayName": "(generalSettings).vmDCName" + }, + "properties": { + "hardwareProfile": { + "vmSize": "(vmDC).vmVmSize" + }, + "osProfile": { + "computerName": "(generalSettings).vmDCName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "timeZone": "Romance Standard Time", + "enableAutomaticUpdates": true, + "provisionVMAgent": true, + "patchSettings": { + "patchMode": "[if(parameters('enableAutomaticUpdates'), 'AutomaticByOS', 'Manual')]", + "assessmentMode": "ImageDefault" + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "(vmDC).vmImagePublisher", + "offer": "(vmDC).vmImageOffer", + "sku": "(vmDC).vmImageSKU", + "version": "latest" + }, + "osDisk": { + "name": "(vmDC).vmOSDiskName", + "caching": "ReadWrite", + "osType": "Windows", + "createOption": "FromImage", + "diskSizeGB": 32, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(vmDC).vmNicName" + } + ] + }, + "licenseType": "[if(parameters('enableHybridBenefitServerLicenses'), 'Windows_Server', json('null'))]" + }, + "resources": [ + { + "name": "ConfigureDCVM", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/(generalSettings).vmDCName" + ], + "tags": { + "displayName": "ConfigureDCVM" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "(dscConfigureDCVM).forceUpdateTag", + "settings": { + "wmfVersion": "latest", + "configuration": { + "url": "(dscConfigureDCVM).scriptFileUri", + "script": "(dscConfigureDCVM).script", + "function": "(dscConfigureDCVM).function" + }, + "configurationArguments": { + "domainFQDN": "contoso.local", + "PrivateIP": "(networkSettings).dcPrivateIPAddress" + }, + "privacy": { + "dataCollection": "enable" + } + }, + "protectedSettings": { + "configurationArguments": { + "AdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "GEN-PASSWORD" + }, + "AdfsSvcCreds": { + "UserName": "(generalSettings).adfsSvcUserName", + "Password": "(generalSettings).adfsSvcPassword" + } + } + } + } + } + ] + }, + { + "condition": false, + "name": "(vmSQL).vmPublicIPName", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "tags": { + "displayName": "(vmSQL).vmPublicIPName" + }, + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "(vmSQL).vmPublicIPDnsName" + } + } + }, + { + "name": "(vmSQL).vmNicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(networkSettings).vNetPrivateName", + "Microsoft.Network/publicIPAddresses/(vmSQL).vmPublicIPName" + ], + "tags": { + "displayName": "(vmSQL).vmNicName" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).vNetPrivateName/(networkSettings).subnetSQLName" + }, + "publicIPAddress": "[if(parameters('addPublicIPAddressToEachVM'), variables('networkSettings').vmSQLPublicIPNicAssociation, json('null'))]" + } + } + ] + } + }, + { + "name": "(generalSettings).vmSQLName", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/(vmSQL).vmNicName" + ], + "tags": { + "displayName": "(generalSettings).vmSQLName" + }, + "properties": { + "hardwareProfile": { + "vmSize": "(vmSQL).vmVmSize" + }, + "osProfile": { + "computerName": "(generalSettings).vmSQLName", + "adminUsername": "(generalSettings).localAdminUserName", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "timeZone": "Romance Standard Time", + "enableAutomaticUpdates": true, + "provisionVMAgent": true, + "patchSettings": { + "patchMode": "[if(parameters('enableAutomaticUpdates'), 'AutomaticByOS', 'Manual')]", + "assessmentMode": "ImageDefault" + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "(vmSQL).vmImagePublisher", + "offer": "(vmSQL).vmImageOffer", + "sku": "(vmSQL).vmImageSKU", + "version": "latest" + }, + "osDisk": { + "name": "(vmSQL).vmOSDiskName", + "caching": "ReadWrite", + "osType": "Windows", + "createOption": "FromImage", + "diskSizeGB": 128, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(vmSQL).vmNicName" + } + ] + }, + "licenseType": "[if(parameters('enableHybridBenefitServerLicenses'), 'Windows_Server', json('null'))]" + }, + "resources": [] + }, + { + "condition": false, + "name": "(vmSP).vmPublicIPName", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "tags": { + "displayName": "(vmSP).vmPublicIPName" + }, + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "(vmSP).vmPublicIPDnsName" + } + } + }, + { + "name": "(vmSP).vmNicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(networkSettings).vNetPrivateName", + "Microsoft.Network/publicIPAddresses/(vmSP).vmPublicIPName" + ], + "tags": { + "displayName": "(vmSP).vmNicName" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).vNetPrivateName/(networkSettings).subnetSPName" + }, + "publicIPAddress": "[if(parameters('addPublicIPAddressToEachVM'), variables('networkSettings').vmSPPublicIPNicAssociation, json('null'))]" + } + } + ] + } + }, + { + "name": "(generalSettings).vmSPName", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/(vmSP).vmNicName" + ], + "tags": { + "displayName": "(generalSettings).vmSPName" + }, + "properties": { + "hardwareProfile": { + "vmSize": "(vmSP).vmVmSize" + }, + "osProfile": { + "computerName": "(generalSettings).vmSPName", + "adminUsername": "(generalSettings).localAdminUserName", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "timeZone": "Romance Standard Time", + "enableAutomaticUpdates": true, + "provisionVMAgent": true, + "patchSettings": { + "patchMode": "[if(parameters('enableAutomaticUpdates'), 'AutomaticByOS', 'Manual')]", + "assessmentMode": "ImageDefault" + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "(vmSP).vmImagePublisher", + "offer": "(vmSP).vmImageOffer", + "sku": "(vmSP).vmImageSKU", + "version": "latest" + }, + "osDisk": { + "name": "(vmSP).vmOSDiskName", + "caching": "ReadWrite", + "osType": "Windows", + "createOption": "FromImage", + "diskSizeGB": 128, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": "[if(equals(parameters('sharePointDataDiskSize'), 0), json('null'), variables('vmSPDataDisk'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(vmSP).vmNicName" + } + ] + }, + "licenseType": "[if(parameters('enableHybridBenefitServerLicenses'), 'Windows_Server', json('null'))]" + }, + "resources": [] + }, + { + "name": "(generalSettings).vmSQLName/ConfigureSQLVM", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/(generalSettings).vmSQLName" + ], + "tags": { + "displayName": "(generalSettings).vmSQLName/ConfigureSQLVM" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "(dscConfigureSQLVM).forceUpdateTag", + "settings": { + "wmfVersion": "latest", + "configuration": { + "url": "(dscConfigureSQLVM).scriptFileUri", + "script": "(dscConfigureSQLVM).script", + "function": "(dscConfigureSQLVM).function" + }, + "configurationArguments": { + "DNSServer": "(networkSettings).dcPrivateIPAddress", + "DomainFQDN": "contoso.local" + }, + "privacy": { + "dataCollection": "enable" + } + }, + "protectedSettings": { + "configurationArguments": { + "DomainAdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "GEN-PASSWORD" + }, + "SqlSvcCreds": { + "UserName": "(generalSettings).sqlSvcUserName", + "Password": "(generalSettings).sqlSvcPassword" + }, + "SPSetupCreds": { + "UserName": "(generalSettings).spSetupUserName", + "Password": "(generalSettings).spSetupPassword" + } + } + } + } + }, + { + "name": "(generalSettings).vmSPName/ConfigureSPVM", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/(generalSettings).vmSPName" + ], + "tags": { + "displayName": "(generalSettings).vmSPName/ConfigureSPVM" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "(dscConfigureSPVM).forceUpdateTag", + "settings": { + "wmfVersion": "latest", + "configuration": { + "url": "(dscConfigureSPVM).scriptFileUri", + "script": "(dscConfigureSPVM).script", + "function": "(dscConfigureSPVM).function" + }, + "configurationArguments": { + "DNSServer": "(networkSettings).dcPrivateIPAddress", + "DomainFQDN": "contoso.local", + "DCName": "(generalSettings).vmDCName", + "SQLName": "(generalSettings).vmSQLName", + "SQLAlias": "(generalSettings).sqlAlias", + "SharePointVersion": "Subscription", + "EnableAnalysis": "(generalSettings).enableAnalysis" + }, + "privacy": { + "dataCollection": "enable" + } + }, + "protectedSettings": { + "configurationArguments": { + "DomainAdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "GEN-PASSWORD" + }, + "SPSetupCreds": { + "UserName": "(generalSettings).spSetupUserName", + "Password": "(generalSettings).spSetupPassword" + }, + "SPFarmCreds": { + "UserName": "(generalSettings).spFarmUserName", + "Password": "(generalSettings).spFarmPassword" + }, + "SPSvcCreds": { + "UserName": "(generalSettings).spSvcUserName", + "Password": "(generalSettings).spSvcPassword" + }, + "SPAppPoolCreds": { + "UserName": "(generalSettings).spAppPoolUserName", + "Password": "(generalSettings).spAppPoolPassword" + }, + "SPPassphraseCreds": { + "UserName": "Passphrase", + "Password": "(generalSettings).spPassphrase" + }, + "SPSuperUserCreds": { + "UserName": "(generalSettings).spSuperUserName", + "Password": "GEN-PASSWORD" + }, + "SPSuperReaderCreds": { + "UserName": "(generalSettings).spSuperReaderName", + "Password": "GEN-PASSWORD" + } + } + } + } + }, + { + "condition": "[and(greaterOrEquals(parameters('numberOfAdditionalFrontEnd'), 1), equals(parameters('addPublicIPAddressToEachVM'), true()))]", + "name": "(vmFE).vmPublicIPName-copyIndex()", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "tags": { + "displayName": "(vmFE).vmPublicIPName-copyIndex()" + }, + "copy": { + "name": "frontendPublicIPAddresses", + "count": 0 + }, + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "(vmFE).vmPublicIPDnsName-copyIndex()" + } + } + }, + { + "condition": "[greaterOrEquals(parameters('numberOfAdditionalFrontEnd'), 1)]", + "name": "(vmFE).vmNicName-copyIndex()", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(networkSettings).vNetPrivateName", + "frontendPublicIPAddresses" + ], + "tags": { + "displayName": "(vmFE).vmNicName-copyIndex()" + }, + "copy": { + "name": "frontendNetworkInterfaces", + "count": 0 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).vNetPrivateName/(networkSettings).subnetSPName" + }, + "publicIPAddress": "[if(parameters('addPublicIPAddressToEachVM'), json(concat('{\"id\": \"', resourceId('Microsoft.Network/publicIPAddresses', concat(variables('vmFE').vmPublicIPName, '-', copyIndex())), '\" }')), json('null'))]" + } + } + ] + } + }, + { + "condition": "[greaterOrEquals(parameters('numberOfAdditionalFrontEnd'), 1)]", + "name": "(generalSettings).vmFEName-copyIndex()", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "frontendNetworkInterfaces" + ], + "tags": { + "displayName": "(generalSettings).vmFEName-copyIndex()" + }, + "copy": { + "name": "frontendVirtualMachines", + "count": 0 + }, + "properties": { + "hardwareProfile": { + "vmSize": "(vmSP).vmVmSize" + }, + "osProfile": { + "computerName": "(generalSettings).vmFEName-copyIndex()", + "adminUsername": "(generalSettings).localAdminUserName", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "timeZone": "Romance Standard Time", + "enableAutomaticUpdates": true, + "provisionVMAgent": true, + "patchSettings": { + "patchMode": "[if(parameters('enableAutomaticUpdates'), 'AutomaticByOS', 'Manual')]", + "assessmentMode": "ImageDefault" + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "(vmSP).vmImagePublisher", + "offer": "(vmSP).vmImageOffer", + "sku": "(vmSP).vmImageSKU", + "version": "latest" + }, + "osDisk": { + "name": "(vmFE).vmOSDiskName-copyIndex()", + "caching": "ReadWrite", + "osType": "Windows", + "createOption": "FromImage", + "diskSizeGB": 128, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(vmFE).vmNicName-copyIndex()" + } + ] + }, + "licenseType": "[if(parameters('enableHybridBenefitServerLicenses'), 'Windows_Server', json('null'))]" + }, + "resources": [] + }, + { + "condition": "[greaterOrEquals(parameters('numberOfAdditionalFrontEnd'), 1)]", + "name": "(generalSettings).vmFEName-copyIndex()/ConfigureFEVM", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2021-04-01", + "dependsOn": [ + "frontendVirtualMachines" + ], + "tags": { + "displayName": "(generalSettings).vmFEName-copyIndex()/ConfigureFEVM" + }, + "copy": { + "name": "frontendVirtualMachineExtensions", + "count": 0 + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "(dscConfigureFEVM).forceUpdateTag", + "settings": { + "wmfVersion": "latest", + "configuration": { + "url": "(dscConfigureFEVM).scriptFileUri", + "script": "(dscConfigureFEVM).script", + "function": "(dscConfigureFEVM).function" + }, + "configurationArguments": { + "DNSServer": "(networkSettings).dcPrivateIPAddress", + "DomainFQDN": "contoso.local", + "DCName": "(generalSettings).vmDCName", + "SQLName": "(generalSettings).vmSQLName", + "SQLAlias": "(generalSettings).sqlAlias", + "SharePointVersion": "Subscription", + "EnableAnalysis": "(generalSettings).enableAnalysis" + }, + "privacy": { + "dataCollection": "enable" + } + }, + "protectedSettings": { + "configurationArguments": { + "DomainAdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "GEN-PASSWORD" + }, + "SPSetupCreds": { + "UserName": "(generalSettings).spSetupUserName", + "Password": "(generalSettings).spSetupPassword" + }, + "SPFarmCreds": { + "UserName": "(generalSettings).spFarmUserName", + "Password": "(generalSettings).spFarmPassword" + }, + "SPPassphraseCreds": { + "UserName": "Passphrase", + "Password": "(generalSettings).spPassphrase" + } + } + } + } + }, + { + "condition": "[not(equals(parameters('vmsAutoShutdownTime'), '9999'))]", + "type": "Microsoft.DevTestLab/schedules", + "name": "(vmDC).shutdownResourceName", + "apiVersion": "2018-09-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/(generalSettings).vmDCName" + ], + "properties": { + "status": "Enabled", + "taskType": "ComputeVmShutdownTask", + "dailyRecurrence": { + "time": "1900" + }, + "timeZoneId": "Romance Standard Time", + "notificationSettings": { + "status": "Disabled", + "timeInMinutes": 30 + }, + "targetResourceId": "Microsoft.Compute/virtualMachines/(generalSettings).vmDCName" + } + }, + { + "condition": "[not(equals(parameters('vmsAutoShutdownTime'), '9999'))]", + "type": "Microsoft.DevTestLab/schedules", + "name": "(vmSQL).shutdownResourceName", + "apiVersion": "2018-09-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/(generalSettings).vmSQLName" + ], + "properties": { + "status": "Enabled", + "taskType": "ComputeVmShutdownTask", + "dailyRecurrence": { + "time": "1900" + }, + "timeZoneId": "Romance Standard Time", + "notificationSettings": { + "status": "Disabled", + "timeInMinutes": 30 + }, + "targetResourceId": "Microsoft.Compute/virtualMachines/(generalSettings).vmSQLName" + } + }, + { + "condition": "[not(equals(parameters('vmsAutoShutdownTime'), '9999'))]", + "type": "Microsoft.DevTestLab/schedules", + "name": "(vmSP).shutdownResourceName", + "apiVersion": "2018-09-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/(generalSettings).vmSPName" + ], + "properties": { + "status": "Enabled", + "taskType": "ComputeVmShutdownTask", + "dailyRecurrence": { + "time": "1900" + }, + "timeZoneId": "Romance Standard Time", + "notificationSettings": { + "status": "Disabled", + "timeInMinutes": 30 + }, + "targetResourceId": "Microsoft.Compute/virtualMachines/(generalSettings).vmSPName" + } + }, + { + "condition": "[and(greaterOrEquals(parameters('numberOfAdditionalFrontEnd'), 1), not(equals(parameters('vmsAutoShutdownTime'), '9999')))]", + "type": "Microsoft.DevTestLab/schedules", + "name": "(vmFE).shutdownResourceName-copyIndex()", + "apiVersion": "2018-09-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "frontendVirtualMachines" + ], + "copy": { + "name": "frontendAutoShutdowns", + "count": 0 + }, + "properties": { + "status": "Enabled", + "taskType": "ComputeVmShutdownTask", + "dailyRecurrence": { + "time": "1900" + }, + "timeZoneId": "Romance Standard Time", + "notificationSettings": { + "status": "Disabled", + "timeInMinutes": 30 + }, + "targetResourceId": "Microsoft.Compute/virtualMachines/(generalSettings).vmFEName-copyIndex()" + } + }, + { + "condition": false, + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "NSG-Subnet-AzureBastion", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG-Subnet-AzureBastion" + }, + "properties": { + "securityRules": [ + { + "name": "allow-443-internet", + "properties": { + "description": "Allow 443 Internet", + "direction": "Inbound", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120 + } + }, + { + "name": "allow-443-gatewaymanager", + "properties": { + "description": "Allow 443 GatewayManager ", + "direction": "Inbound", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "GatewayManager", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130 + } + }, + { + "name": "allow-rdp-outbound", + "properties": { + "description": "Allow RDP Outbound ", + "direction": "Outbound", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120 + } + }, + { + "name": "allow-ssh-outbound", + "properties": { + "description": "Allow SSH Outbound", + "direction": "Outbound", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 121 + } + }, + { + "name": "allow-azurecloud-outbound", + "properties": { + "description": "Allow AzureCloud Outbound ", + "direction": "Outbound", + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 130 + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "(networkSettings).vNetPrivateName/AzureBastionSubnet", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/(networkSettings).vNetPrivateName", + "Microsoft.Network/networkSecurityGroups/NSG-Subnet-AzureBastion" + ], + "properties": { + "addressPrefix": "(azureBastion).subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/NSG-Subnet-AzureBastion" + } + } + }, + { + "condition": false, + "name": "PublicIP-Bastion", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "tags": { + "displayName": "PublicIP-Bastion" + }, + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "(azureBastion).publicIPDnsName" + } + } + }, + { + "condition": false, + "name": "Bastion", + "type": "Microsoft.Network/bastionHosts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/PublicIP-Bastion", + "Microsoft.Network/virtualNetworks/subnets/(networkSettings).vNetPrivateName/AzureBastionSubnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIP-Bastion" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).vNetPrivateName/AzureBastionSubnet" + } + } + } + ] + } + } + ], + "outputs": { + "publicIPAddressSP": { + "condition": "[equals(parameters('addPublicIPAddressToEachVM'), true())]", + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('vmSP').vmPublicIPName)).dnsSettings.fqdn]" + }, + "publicIPAddressFEs": { + "condition": "[and(greaterOrEquals(parameters('numberOfAdditionalFrontEnd'), 1), equals(parameters('addPublicIPAddressToEachVM'), true()))]", + "type": "array", + "copy": { + "count": "[parameters('numberOfAdditionalFrontEnd')]", + "input": "[reference(resourceId('Microsoft.Network/publicIPAddresses', concat(variables('vmFE').vmPublicIPName, '-', copyIndex()))).dnsSettings.fqdn]" + } + }, + "publicIPAddressSQL": { + "condition": "[equals(parameters('addPublicIPAddressToEachVM'), true())]", + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('vmSQL').vmPublicIPName)).dnsSettings.fqdn]" + }, + "publicIPAddressDC": { + "condition": "[equals(parameters('addPublicIPAddressToEachVM'), true())]", + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('vmDC').vmPublicIPName)).dnsSettings.fqdn]" + }, + "domainAdminAccount": { + "type": "string", + "value": "[concat(substring(parameters('domainFQDN'), 0, indexOf(parameters('domainFQDN'), '.')), '\\', parameters('adminUserName'))]" + }, + "domainAdminAccountFormatForBastion": { + "type": "string", + "value": "[concat(parameters('adminUserName'), '@', parameters('domainFQDN'))]" + }, + "localAdminAccount": { + "type": "string", + "value": "[variables('generalSettings').localAdminUserName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT514 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT514 new file mode 100644 index 0000000..da57234 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT514 @@ -0,0 +1,646 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/shibboleth/shibboleth-cluster-ubuntu/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-cluster-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962896240, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/shibboleth/shibboleth-cluster-ubuntu/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT514", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT514", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The Name of the administrator of the new VM. Exclusion list: 'admin','administrator'" + }, + "value": "GEN-UNIQUE-8" + }, + "publicDnsName": { + "type": "string", + "defaultValue": "[concat('scu', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique public DNS prefix for the deployment. The fqdn will look something like '.westus.cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'." + } + }, + "mySqlPasswordForRootUser": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL 'root' admin user." + }, + "value": "GEN-PASSWORD" + }, + "mySqlIdpUser": { + "type": "string", + "defaultValue": "scu", + "metadata": { + "description": "User name that will be used to create user in MySQL database which has all privileges." + } + }, + "mySqlPasswordForIdpUser": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL Idp user." + }, + "value": "GEN-PASSWORD" + }, + "numberOfInstances": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "Number of web front end VMs to create." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "vnetAddressRange": "10.0.0.0/16", + "subnetAddressRange": "10.0.0.0/24", + "subnetName": "Subnet", + "availabilitySetName": "AvSet", + "vmName": "VM", + "storageAccountType": "Standard_LRS", + "nicsql": "VMsql", + "newStorageAccountName": "[concat('st', uniqueString(resourceGroup().id))]", + "subnet-id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04-LTS", + "installScriptName": "install_shibboleth_idp.sh", + "installScriptUri": "[uri(parameters('_artifactsLocation'), concat(variables('installScriptName'), parameters('_artifactsLocationSasToken')))]", + "installBackendScriptName": "install_backend.sh", + "installBackendScriptUri": "[uri(parameters('_artifactsLocation'), concat(variables('installBackendScriptName'), parameters('_artifactsLocationSasToken')))]", + "installBackendCommand": "sh install_backend.sh GEN-PASSWORD scu GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('scu', uniqueString(resourceGroup().id))]" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "vmsqlIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('scu', uniqueString(resourceGroup().id))]db" + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "AvSet", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "AvSetdb", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "apiVersion": "2018-02-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2018-02-01", + "name": "loadBalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIp" + ], + "properties": { + "frontendIpConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBAP" + } + ], + "inboundNatRules": [ + { + "name": "SSH-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 2200, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 2201, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 2202, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 2203, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 2204, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer/lbprobe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15 + }, + "name": "lbrule" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer/lbprobe" + }, + "protocol": "Tcp", + "frontendPort": 8443, + "backendPort": 8443, + "idleTimeoutInMinutes": 15 + }, + "name": "lbrule8443" + } + ], + "probes": [ + { + "properties": { + "protocol": "Http", + "port": 8080, + "requestPath": "/", + "intervalInSeconds": 15, + "numberOfProbes": 2 + }, + "name": "lbprobe" + } + ] + } + }, + { + "apiVersion": "2018-02-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "vmsql", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1201, + "direction": "Inbound" + } + }, + { + "name": "Port_3306", + "properties": { + "description": "Allow 3306", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "3306", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1010, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2018-02-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMcopyindex()", + "copy": { + "name": "netIntLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/VNET", + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/loadBalancer/SSH-VMcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2018-02-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMsql", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/VNET", + "Microsoft.Network/networkSecurityGroups/vmsql" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vmsql" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vmsqlIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "VMcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts',variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat(variables('vmName'),copyindex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/AvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "VMcopyindex()", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMcopyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('newStorageAccountName'), '2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "VMdb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts',variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',variables('nicsql'))]", + "[resourceId('Microsoft.Compute/availabilitySets', concat(variables('availabilitySetName'),'db'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/AvSetdb" + }, + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "VMdb", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/VMsql" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('newStorageAccountName'), '2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "VMdb/CustomScriptExtension", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//VMdb" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installBackendScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_backend.sh GEN-PASSWORD scu GEN-PASSWORD" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "VMcopyIndex()/CustomScriptExtension", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//VMcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "mv *.sh /home/GEN-UNIQUE-8 && cd /home/GEN-UNIQUE-8 && sudo chmod 777 *.sh && sudo su && bash install_shibboleth_idp.sh [concat('scu', uniqueString(resourceGroup().id))] [resourceGroup().location] [concat('scu', uniqueString(resourceGroup().id))]db scu GEN-PASSWORD" + } + }, + "copy": { + "name": "extensionsCopy", + "count": 2 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT515 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT515 new file mode 100644 index 0000000..26bebbd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT515 @@ -0,0 +1,711 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/shibboleth/shibboleth-cluster-windows/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-cluster-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962896249, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/shibboleth/shibboleth-cluster-windows/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-cluster-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT515", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT515", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine administrator. Do not use simple names such as 'admin'" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine administrator." + }, + "value": "GEN-PASSWORD" + }, + "uniqueNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + }, + "value": "2012-Datacenter" + }, + "mySqlPasswordForRootUser": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL 'root' admin user." + }, + "value": "GEN-PASSWORD" + }, + "mySqlIdpUser": { + "type": "string", + "metadata": { + "description": "User name that will be used to create user in MySQL database which has all privileges." + }, + "value": "GEN-UNIQUE-8" + }, + "mySqlPasswordForIdpUser": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL Idp user." + }, + "value": "GEN-PASSWORD" + }, + "vmCountFrontend": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "Number of web front end VMs to create." + }, + "value": 1 + }, + "vmSizeFrontend": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "The size of the VM." + }, + "value": "Standard_A0" + }, + "vmSizeDB": { + "type": "string", + "defaultValue": "Standard_A0", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "The size of the database backend VM." + }, + "value": "Standard_A0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "newStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'shc')]", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "OSVersion": "2012-Datacenter", + "nicName": "GEN-UNIQUE-8Nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "subnetNameDB": "SubnetDB", + "subnetPrefixDB": "10.0.1.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUE-8IP", + "publicDBIPAddressName": "GEN-UNIQUE-8DBIP", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8IP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-8VM", + "virtualNetworkName": "GEN-UNIQUE-8VNet", + "availabilitySetName": "GEN-UNIQUE-8AvSet", + "lbName": "GEN-UNIQUE-8LB", + "installScriptName": "install_shibboleth_idp.ps1", + "installCommand": "powershell.exe -File install_shibboleth_idp.ps1 GEN-UNIQUE-8 [resourceGroup().location] GEN-UNIQUE-8db GEN-UNIQUE-8 \"GEN-PASSWORD\"", + "installBackendScriptName": "install_backend.ps1", + "installBackendCommand": "powershell.exe -File install_backend.ps1 \"GEN-PASSWORD\" GEN-UNIQUE-8 \"GEN-PASSWORD\"" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "GEN-UNIQUE-8AvSet", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8VNet", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-8VNet-sg" + ], + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "SubnetDB", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8VNet-sg" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8NiccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8VNet", + "Microsoft.Network/loadBalancers//GEN-UNIQUE-8LB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8LB/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUE-8LB/SSH-VMcopyindex()" + } + ] + } + } + ] + }, + "copy": { + "name": "networkInterfacesCopy", + "count": 1 + } + }, + { + "apiVersion": "2015-06-15", + "name": "GEN-UNIQUE-8LB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8IP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8IP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ], + "inboundNatRules": [ + { + "name": "SSH-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2200, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2201, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2202, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2203, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 2204, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-8LB/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-8LB/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 8443, + "backendPort": 8443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "loadDistribution": "SourceIP", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-8LB/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 8443, + "intervalInSeconds": "5", + "numberOfProbes": "2" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VMcopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/',variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat(variables('nicName'),copyIndex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/',variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE-8AvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VMcopyIndex()", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VMcopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8NiccopyIndex()" + } + ] + } + }, + "copy": { + "name": "virtualMachinesCopy", + "count": 1 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "GEN-UNIQUE-8AvSetdb", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8DBIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8db" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8Nicdb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8DBIP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8VNet", + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-8VNet-sg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigdb", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8DBIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/SubnetDB" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8VNet-sg" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-8VNet-sg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "MySQL", + "properties": { + "description": "Allows MySQL traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3306", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1101, + "direction": "Inbound" + } + }, + { + "name": "RDPTCP", + "properties": { + "description": "Allows RDP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1301, + "direction": "Inbound" + } + }, + { + "name": "RDPUDP", + "properties": { + "description": "Allows RDP traffic", + "protocol": "UDP", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1401, + "direction": "Inbound" + } + }, + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1201, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VMdb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/',variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/',concat(variables('nicName'),'db'))]", + "[resourceId('Microsoft.Compute/availabilitySets/',concat(variables('availabilitySetName'),'db'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE-8AvSetdb" + }, + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VMdb", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VMdb_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8Nicdb" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VMdb/CustomScriptExtension", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VMdb" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell.exe -File install_shibboleth_idp.ps1 GEN-UNIQUE-8 [resourceGroup().location] GEN-UNIQUE-8db GEN-UNIQUE-8 \"GEN-PASSWORD\"" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VMcopyIndex()/CustomScriptExtension", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VMcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installBackendScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell.exe -File install_backend.ps1 \"GEN-PASSWORD\" GEN-UNIQUE-8 \"GEN-PASSWORD\"" + } + }, + "copy": { + "name": "extensionsCopy", + "count": 1 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT516 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT516 new file mode 100644 index 0000000..004a0e5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT516 @@ -0,0 +1,287 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/shibboleth/shibboleth-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962896259, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/shibboleth/shibboleth-singlevm-ubuntu/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-singlevm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT516", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT516", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine administrator. Do not use simple names such as 'admin'." + }, + "value": "GEN-UNIQUE-8" + }, + "uniqueNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "The size of the VM." + }, + "value": "Standard_A0" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended.." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "newStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'shs')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04-LTS", + "nicName": "GEN-UNIQUE-8Nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUE-8IP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-8VM", + "virtualNetworkName": "GEN-UNIQUE-8VNet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "sku": { + "name": "Standard_LRS" + }, + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8VNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8Nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8IP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8VNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8IP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VM", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8Nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VM/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_shibboleth_idp.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_shibboleth_idp.sh GEN-UNIQUE-8 [resourceGroup().location]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT517 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT517 new file mode 100644 index 0000000..a8cd2c0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT517 @@ -0,0 +1,273 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/shibboleth/shibboleth-singlevm-windows/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-singlevm-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962896267, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/shibboleth/shibboleth-singlevm-windows/azuredeploy.json", + "/application-workloads/shibboleth/shibboleth-singlevm-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT517", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT517", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine administrator. Do not use simple names such as 'admin'." + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine administrator." + }, + "value": "GEN-PASSWORD" + }, + "uniqueNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique name that will be used to generate various other names including the name of the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2016-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + }, + "value": "2016-Datacenter" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D8_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "The size of the VM." + }, + "value": "Standard_D8_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "newStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'shs')]", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "nicName": "GEN-UNIQUE-8Nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "GEN-UNIQUE-8IP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-8VM", + "virtualNetworkName": "GEN-UNIQUE-8VNet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet", + "installScriptName": "install_shibboleth_idp.ps1", + "installCommand": "powershell.exe -File install_shibboleth_idp.ps1 GEN-UNIQUE-8 [resourceGroup().location]" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "name": "[variables('newStorageAccountName')]", + "sku": { + "name": "Standard_LRS" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8VNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8Nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8IP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8VNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8IP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8VNet/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D8_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VM", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8Nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VM/CustomScriptExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VM" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('installScriptName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell.exe -File install_shibboleth_idp.ps1 GEN-UNIQUE-8 [resourceGroup().location]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT518 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT518 new file mode 100644 index 0000000..6679556 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT518 @@ -0,0 +1,385 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/loadbalancer-shared-resources.json" + ], + "timestamp": 1642962896277, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/loadbalancer-shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT518", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT518", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmAndLoadbalancerExposure": { + "type": "string", + "metadata": { + "description": "Either 'Public' or 'Internal'. Internal Load balancer is only available from the virtual network, no public IP created" + } + }, + "dnsLabelForPublicLoadBalancer": { + "type": "string", + "metadata": { + "description": "Unique DNS Label for the Public IP used to access the Load Balancer." + } + }, + "publicIPAddressNameLB": { + "type": "string", + "defaultValue": "myLBPublicIPD", + "metadata": { + "description": "Load Balancer Public IP Address Name." + } + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "metadata": { + "description": "Load Balancer Public IP Address Type." + } + }, + "lbName": { + "type": "string", + "defaultValue": "myLB", + "metadata": { + "description": "Load Balancer Name." + } + }, + "lbPoolName": { + "type": "string", + "defaultValue": "solace-ha-group", + "metadata": { + "description": "Load Balancer Backend Address Pool Name." + } + }, + "subnetRef": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Load Balancer Private IP subnet." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "frontEndIPConfigName": "LoadBalancerFrontEnd", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd", + "lbPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group", + "lbProbeName": "solace-ha-ad-health-check", + "lbProbeID": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check", + "publicIPAddressJSON": { + "id": "Microsoft.Network/publicIPAddresses/myLBPublicIPD" + }, + "subnetJSON": { + "id": "" + } + }, + "resources": [ + { + "condition": false, + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myLBPublicIPD", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsLabelForPublicLoadBalancer" + } + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/loadBalancers", + "name": "myLB", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myLBPublicIPD" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": "[if(equals(parameters('vmAndLoadbalancerExposure'),'Public'), variables('publicIPAddressJSON'), json('null'))]", + "subnet": "[if(equals(parameters('vmAndLoadbalancerExposure'),'Internal'), variables('subnetJSON'), json('null'))]" + } + } + ], + "backendAddressPools": [ + { + "name": "solace-ha-group" + } + ], + "loadBalancingRules": [ + { + "name": "ssh", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 2222, + "backendPort": 2222, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "semp", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 8080, + "backendPort": 8080, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "semptls", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 1943, + "backendPort": 1943, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "smf", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 55555, + "backendPort": 55555, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "smf-compressed", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 55003, + "backendPort": 55003, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "smftls", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 55443, + "backendPort": 55443, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "webservices", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 8008, + "backendPort": 8008, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "webtls", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 1443, + "backendPort": 1443, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "amqp", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 5672, + "backendPort": 5672, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "mqtt", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 1883, + "backendPort": 1883, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "mqttweb", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 8000, + "backendPort": 8000, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + }, + { + "name": "rest", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/solace-ha-group" + }, + "protocol": "Tcp", + "frontendPort": 9000, + "backendPort": 9000, + "idleTimeoutInMinutes": 5, + "enableFloatingIP": false, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/solace-ha-ad-health-check" + } + } + } + ], + "probes": [ + { + "name": "solace-ha-ad-health-check", + "properties": { + "protocol": "http", + "port": 5550, + "intervalInSeconds": 5, + "numberOfProbes": 2, + "requestPath": "/health-check/guaranteed-active" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT519 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT519 new file mode 100644 index 0000000..e13773a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT519 @@ -0,0 +1,277 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/security-shared-resources.json" + ], + "timestamp": 1642962896284, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/security-shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT519", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT519", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "securityGroupName": { + "type": "string", + "defaultValue": "solace-security", + "metadata": { + "description": "Security group defined to support PubSub+ message broker system level and default message vpn ports." + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet for PubSub+ message brokers." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "name": "solace-security", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "outbound", + "properties": { + "priority": 100, + "sourceAddressPrefix": "10.0.0.0/24", + "protocol": "*", + "destinationPortRange": "*", + "access": "Allow", + "direction": "Outbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "ad8741", + "properties": { + "priority": 150, + "protocol": "Tcp", + "sourceAddressPrefix": "10.0.0.0/24", + "sourcePortRange": "*", + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "8741", + "destinationAddressPrefix": "10.0.0.0/24" + } + }, + { + "name": "ad8300", + "properties": { + "priority": 151, + "protocol": "*", + "sourceAddressPrefix": "10.0.0.0/24", + "sourcePortRange": "*", + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "8300-8302", + "destinationAddressPrefix": "10.0.0.0/24" + } + }, + { + "name": "ssh_host", + "properties": { + "priority": 200, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "22", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "ssh", + "properties": { + "priority": 201, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "2222", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "semp", + "properties": { + "priority": 202, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "8080", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "semptls", + "properties": { + "priority": 203, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "1943", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "smf", + "properties": { + "priority": 204, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "55555", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "smf-compressed", + "properties": { + "priority": 205, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "55003", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "smftls", + "properties": { + "priority": 206, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "55443", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "webservices", + "properties": { + "priority": 207, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "8008", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "webtls", + "properties": { + "priority": 208, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "1443", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "amqp", + "properties": { + "priority": 209, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "5672", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "mqtt", + "properties": { + "priority": 210, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "1883", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "mqttweb", + "properties": { + "priority": 211, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "8000", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "rest", + "properties": { + "priority": 212, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "9000", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT52 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT52 new file mode 100644 index 0000000..2ce3628 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT52 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/keyvaultResource.json" + ], + "timestamp": 1642962884280, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/keyvaultResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT52", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT52", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "KeyVaultSettings": { + "type": "object" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults", + "name": "keyvaultSettings", + "apiVersion": "keyvaultSettings", + "location": "keyvaultSettings", + "properties": { + "enabledForDeployment": true, + "enabledForTemplateDeployment": true, + "enabledForVolumeEncryption": false, + "tenantId": "keyvaultSettings", + "accessPolicies": [ + { + "tenantId": "keyvaultSettings", + "objectId": "keyvaultSettings", + "permissions": { + "keys": [ + "all" + ], + "secrets": [ + "all" + ] + } + } + ], + "sku": { + "name": "keyvaultSettings", + "family": "A" + } + }, + "resources": [ + { + "type": "secrets", + "name": "keyvaultSettings", + "apiVersion": "keyvaultSettings", + "properties": { + "value": "keyvaultSettings" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/keyvaultSettings" + ] + }, + { + "type": "secrets", + "name": "keyvaultSettings", + "apiVersion": "keyvaultSettings", + "properties": { + "value": "keyvaultSettings" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/keyvaultSettings" + ] + }, + { + "type": "secrets", + "name": "keyvaultSettings", + "apiVersion": "keyvaultSettings", + "properties": { + "value": "keyvaultSettings" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/keyvaultSettings" + ] + }, + { + "type": "secrets", + "name": "keyvaultSettings", + "apiVersion": "keyvaultSettings", + "properties": { + "value": "keyvaultSettings" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/keyvaultSettings" + ] + } + ], + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT520 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT520 new file mode 100644 index 0000000..f73a56e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT520 @@ -0,0 +1,631 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/workspace-enabled-shared-resources.json" + ], + "timestamp": 1642962896297, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/solace/solace-message-router/nestedtemplates/workspace-enabled-shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT520", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT520", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Unique OMS Workspace Name for Log Analytics." + } + }, + "workspaceRegion": { + "type": "string", + "defaultValue": "East US", + "metadata": { + "description": "OMS Workspace Region for Log Analytics." + }, + "allowedValues": [ + "East US", + "West Europe", + "Southeast Asia", + "Australia Southeast", + "Japan East", + "UK South", + "Central India", + "Canada Central" + ] + } + }, + "variables": { + "workspaceTier": "Free", + "containersMarketplaceName": "Containers", + "syslogFacilities": [ + "kern", + "user", + "daemon", + "auth", + "syslog", + "uucp", + "authpriv", + "ftp", + "cron", + "local0", + "local1", + "local2", + "local3", + "local4", + "local5", + "local6", + "local7" + ] + }, + "outputs": { + "workspaceId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')), '2015-11-01-preview').customerId]" + }, + "workspaceKey": { + "type": "string", + "value": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')), '2015-11-01-preview').primarySharedKey]" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "workspaceName", + "location": "East US", + "properties": { + "sku": { + "name": "Free" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogCollection", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslogCollection", + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "name": "workspaceName/syslogcopyindex()", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "(syslogFacilities)[copyindex()]", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "Containers(, parameters(workspaceName), )", + "location": "East US", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/workspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/workspaceName" + }, + "plan": { + "name": "Containers(, parameters(workspaceName), )", + "publisher": "Microsoft", + "product": "OMSGallery/Containers", + "promotionCode": "" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT521 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT521 new file mode 100644 index 0000000..fdd93da --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT521 @@ -0,0 +1,730 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/solace/solace-message-router/azuredeploy.json", + "/application-workloads/solace/solace-message-router/azuredeploy.parameters.json" + ], + "timestamp": 1642962896306, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/solace/solace-message-router/azuredeploy.json", + "/application-workloads/solace/solace-message-router/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT521", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT521", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "Username for the virtual Machine(s) hosting the PubSub+ event broker instance(s). Do not use special characters." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the virtual Machine(s). Azure sets rules on passwords, check the online feedback." + }, + "value": "GEN-PASSWORD" + }, + "solaceAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the PubSub+ event broker management 'admin' user. For password rules refer to https://docs.solace.com/Configuring-and-Managing/Configuring-Internal-CLI-User-Accounts.htm#Changing-CLI-User-Passwords " + }, + "value": "admin" + }, + "securityGroupName": { + "type": "string", + "defaultValue": "solace-security", + "metadata": { + "description": "Security group defined to support PubSub+ event broker system level and default message vpn ports." + } + }, + "workspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional: Unique OMS Workspace Name for Log Analytics. Leave this field empty to not deploy an OMS Workspace." + }, + "value": "GEN-UNIQUE" + }, + "workspaceRegion": { + "type": "string", + "defaultValue": "East US", + "metadata": { + "description": "OMS Workspace Region for Log Analytics. Not used if Workspace Name is empty." + }, + "allowedValues": [ + "East US", + "West Europe", + "Southeast Asia", + "Australia Southeast", + "Japan East", + "UK South", + "Central India", + "Canada Central" + ], + "value": "East US" + }, + "vmAndLoadbalancerExposure": { + "type": "string", + "defaultValue": "Public", + "metadata": { + "description": "Specify the type of access to the broker VMs for SSH and to the Load Balancer for broker services. 'Internal' will make them accessible only from the local virtual network" + }, + "allowedValues": [ + "Internal", + "Public" + ] + }, + "dnsLabelForPublicLoadBalancer": { + "type": "string", + "defaultValue": "[concat('lb', uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "Ignored if Local exposure selected. If using a Public access, provide a unique DNS Label for the Load Balancer access IP. Name must satisfy regular expression ^[a-z][a-z0-9-]{1,61}[a-z0-9]$. Default will generate a unique string" + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelForVmIp": { + "type": "string", + "defaultValue": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]", + "metadata": { + "description": "Ignored if Local exposure selected. If using a Public access, provide a unique DNS Label for the broker Virtual Machine(s). Do not use '-'. Default will generate a unique string" + } + }, + "centosVersion": { + "type": "string", + "defaultValue": "7.4", + "metadata": { + "description": "The CentOS version for deploying the Docker containers. This will pick a fully patched image of this given CentOS version. Allowed values: 7.2, 7.3, 7.4" + }, + "allowedValues": [ + "7.2", + "7.3", + "7.4" + ] + }, + "maxNumberOfClientConnections": { + "type": "string", + "defaultValue": "100", + "metadata": { + "description": "Broker system scaling: the maximum supported number of client connections" + }, + "allowedValues": [ + "100", + "1000", + "10000", + "100000", + "200000" + ] + }, + "maxNumberOfQueueMessages": { + "type": "string", + "defaultValue": "100", + "metadata": { + "description": "Broker system scaling: the maximum number of queue messages, in millions of messages" + }, + "allowedValues": [ + "100", + "240", + "3000" + ] + }, + "messageRoutingNodeVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of a PubSub+ broker message routing node VM. Important: ensure adequate CPU and Memory resources are available to support the selected broker system scaling parameters. For requirements check https://docs.solace.com/." + }, + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3" + ] + }, + "monitorNodeVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the PubSub+ monitor node VM in a High Availabity deployment. For requirements check https://docs.solace.com/." + }, + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2s_v3", + "Standard_D2_v3", + "Standard_D2s_v3", + "Standard_D2_v3" + ] + }, + "dataDiskSize": { + "type": "string", + "defaultValue": "0", + "metadata": { + "description": "The size of the data disk in GB for diagnostics and message spooling on the Solace Message Routing Nodes. For requirements check https://docs.solace.com/." + }, + "allowedValues": [ + "0", + "8", + "16", + "32", + "64", + "128", + "256" + ], + "value": "8" + }, + "brokerDockerImageReference": { + "type": "string", + "defaultValue": "solace/solace-pubsub-standard:latest", + "metadata": { + "description": "Solace PubSub+ event broker docker image reference: a docker registry name with optional tag or a download URL. The download URL can be obtained from http://dev.solace.com/downloads/ or it can be a url to a remotely hosted load version. Default will use the latest image available from Docker Hub." + }, + "value": "solace/solace-pubsub-standard:latest" + }, + "deploymentModel": { + "type": "string", + "metadata": { + "description": "Deploy three node HA cluster or single node" + }, + "allowedValues": [ + "HighAvailability", + "SingleNode" + ], + "value": "HighAvailability" + }, + "existingVirtualNetworkName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional: Only used if deploying into an existing virtual network and subnet. Specify the Existing Virtual Network Name together with the Existing Subnet Name, otherwise leave it at default blank." + } + }, + "existingSubnetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional: Only used if deploying into an existing virtual network and subnet. Specify the Existing Virtual Network Name together with the Existing Subnet Name, otherwise leave it at default blank." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The virtual network's address range in CIDR notation where the PubSub+ event broker will be deployed." + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The subnet's address range in CIDR notation where the PubSub+ event broker will be deployed. It must be contained by the address space of the virtual network. The address range of a subnet which is in use can't be edited." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources. Default will use the same location as the Resource Group." + } + }, + "numberOfFaultDomains": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The number of fault domains to be used for the deployment. For the maximum number fault domains available to your location refer to https://github.com/MicrosoftDocs/azure-docs/blob/master/includes/managed-disks-common-fault-domain-region-list.md" + }, + "value": 3 + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Optional: The Shared Access Signatures (SAS) token if required for the artifacts location, otherwise leave it at default blank." + }, + "defaultValue": "" + } + }, + "variables": { + "availabilitySetName": "solace-availabilityset", + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": "[if(equals(parameters('numberOfFaultDomains'), 1), 1, 3)]", + "imagePublisher": "OpenLogic", + "imageOffer": "Centos", + "nestedTemplatesLocation": "nestedtemplates/", + "solaceSecurityTemplateName": "SolaceSecurity.Template", + "securitySharedTemplateName": "security-shared-resources.json", + "securitySharedTemplateUri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesLocation'), variables('securitySharedTemplateName'), parameters('_artifactsLocationSasToken')))]", + "solaceLoadBalancerName": "SolaceLoadBalancer.Template", + "loadBalancerSharedTemplateName": "loadbalancer-shared-resources.json", + "loadBalancerSharedTemplateUri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesLocation'), variables('loadBalancerSharedTemplateName'), parameters('_artifactsLocationSasToken')))]", + "solaceUpdateSubnetName": "SolaceUpdateSubnet.Template", + "updateSubnetSharedTemplateName": "update-subnet-shared-resources.json", + "updateSubnetSharedTemplateUri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesLocation'), variables('updateSubnetSharedTemplateName'), parameters('_artifactsLocationSasToken')))]", + "solaceWorkspaceName": "SolaceWorkspace.Template", + "workspaceEnabledSharedTemplateName": "workspace-enabled-shared-resources.json", + "workspaceEnabledSharedTemplateUri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesLocation'), variables('workspaceEnabledSharedTemplateName'), parameters('_artifactsLocationSasToken')))]", + "scriptsLocation": "scripts/", + "solaceInstallScriptName": "install-solace.sh", + "solaceInstallScriptFileUri": "[uri(parameters('_artifactsLocation'), concat(variables('scriptsLocation'), variables('solaceInstallScriptName'), parameters('_artifactsLocationSasToken')))]", + "sempQueryScriptName": "semp_query.sh", + "sempQueryScriptFileUri": "[uri(parameters('_artifactsLocation'), concat(variables('scriptsLocation'), variables('sempQueryScriptName'), parameters('_artifactsLocationSasToken')))]", + "publicIPAddressNameVM": "myVMPublicIPD", + "publicIPAddressNameLB": "myLBPublicIPD", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]", + "subnetName": "[if(not(empty(parameters('existingSubnetName'))), parameters('existingSubnetName'), 'solace-subnet')]", + "nicName": "Nicd", + "deploymentModelHighAvailability": { + "numberOfNodes": 3 + }, + "deploymentModelSingleNode": { + "numberOfNodes": 1 + }, + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]/[if(not(empty(parameters('existingSubnetName'))), parameters('existingSubnetName'), 'solace-subnet')]", + "numberOfInstances": "(concat(deploymentModel, parameters(deploymentModel))).numberOfNodes", + "monitorNodeIndex": 2, + "lbName": "solace-ha-group-loadbalancer", + "lbPoolName": "solace-ha-group", + "lbPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/solace-ha-group-loadbalancer/solace-ha-group", + "dataDisksChoices": { + "0": [ + { + "name": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]0_DataDisk", + "diskSizeGB": "8", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + ], + "1": [ + { + "name": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]1_DataDisk", + "diskSizeGB": "8", + "lun": 0, + "caching": "ReadWrite", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + ], + "2": [] + }, + "adminPasswordDir": "/mnt/resource/secrets", + "adminPasswordFile": "/mnt/resource/secrets/solOSpasswd" + }, + "resources": [ + { + "apiVersion": "2019-10-01", + "type": "Microsoft.Resources/deployments", + "name": "SolaceSecurity.Template", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesLocation'), variables('securitySharedTemplateName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "securityGroupName": { + "value": "solace-security" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2019-10-01", + "type": "Microsoft.Resources/deployments", + "name": "SolaceLoadBalancer.Template", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesLocation'), variables('loadBalancerSharedTemplateName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmAndLoadbalancerExposure": { + "value": "Public" + }, + "dnsLabelForPublicLoadBalancer": { + "value": "GEN-UNIQUE" + }, + "publicIPAddressNameLB": { + "value": "myLBPublicIPD" + }, + "publicIPAddressType": { + "value": "Dynamic" + }, + "lbName": { + "value": "solace-ha-group-loadbalancer" + }, + "lbPoolName": { + "value": "solace-ha-group" + }, + "subnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]/[if(not(empty(parameters('existingSubnetName'))), parameters('existingSubnetName'), 'solace-subnet')]" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "condition": "[not(empty(parameters('workspaceName')))]", + "apiVersion": "2019-10-01", + "type": "Microsoft.Resources/deployments", + "name": "SolaceWorkspace.Template", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesLocation'), variables('workspaceEnabledSharedTemplateName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "GEN-UNIQUE" + }, + "workspaceRegion": { + "value": "East US" + } + } + } + }, + { + "condition": false, + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myVMPublicIPDcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "interfaceLoop", + "count": "(concat(deploymentModel, parameters(deploymentModel))).numberOfNodes" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()" + } + } + }, + { + "condition": "[empty(parameters('existingSubnetName'))]", + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[if(not(empty(parameters('existingSubnetName'))), parameters('existingSubnetName'), 'solace-subnet')]", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2019-10-01", + "name": "SolaceUpdateSubnet.Template", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/SolaceSecurity.Template" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('nestedTemplatesLocation'), variables('updateSubnetSharedTemplateName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]" + }, + "subnetName": { + "value": "[if(not(empty(parameters('existingSubnetName'))), parameters('existingSubnetName'), 'solace-subnet')]" + }, + "subnetAddressPrefix": { + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName')), '2018-03-01').addressPrefix]" + }, + "nsgId": { + "value": "Microsoft.Network/networkSecurityGroups/solace-security" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "condition": false, + "comments": "Only created if network interfaces are to be publicly exposed. Otherwise the next resource is created.", + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "PublicNicdcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": "(concat(deploymentModel, parameters(deploymentModel))).numberOfNodes" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myVMPublicIPDcopyindex()", + "Microsoft.Network/virtualNetworks/[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]", + "Microsoft.Resources/deployments/SolaceLoadBalancer.Template" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/solace-security" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myVMPublicIPDcopyindex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]/[if(not(empty(parameters('existingSubnetName'))), parameters('existingSubnetName'), 'solace-subnet')]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/solace-ha-group-loadbalancer/solace-ha-group" + } + ] + } + } + ] + } + }, + { + "condition": "[not(equals(parameters('vmAndLoadbalancerExposure'),'Public'))]", + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "InternalNicdcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": "(concat(deploymentModel, parameters(deploymentModel))).numberOfNodes" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]", + "Microsoft.Resources/deployments/SolaceLoadBalancer.Template" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/solace-security" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[if(not(empty(parameters('existingVirtualNetworkName'))), parameters('existingVirtualNetworkName'), 'solace-vnet')]/[if(not(empty(parameters('existingSubnetName'))), parameters('existingSubnetName'), 'solace-subnet')]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/solace-ha-group-loadbalancer/solace-ha-group" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "solace-availabilityset", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": "[if(equals(parameters('numberOfFaultDomains'), 1), 1, 3)]" + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": "(concat(deploymentModel, parameters(deploymentModel))).numberOfNodes" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/PublicNicdcopyindex()", + "Microsoft.Compute/availabilitySets/solace-availabilityset" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/solace-availabilityset" + }, + "hardwareProfile": { + "vmSize": "[if(equals(copyindex(), variables('monitorNodeIndex')), parameters('monitorNodeVmSize'), parameters('messageRoutingNodeVmSize'))]" + }, + "osProfile": { + "computerName": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "Centos", + "sku": "7.4", + "version": "latest" + }, + "osDisk": { + "name": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": "(dataDisksChoices)[if(or(equals(parameters(dataDiskSize), 0), equals(copyindex(), variables(monitorNodeIndex))), 2, string(copyindex()))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/PublicNicdcopyindex()" + } + ] + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()/DockerExtension", + "location": "[resourceGroup().location]", + "copy": { + "name": "DockerLoop", + "count": "(concat(deploymentModel, parameters(deploymentModel))).numberOfNodes" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": {} + } + }, + { + "condition": "[not(empty(parameters('workspaceName')))]", + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()/OmsAgentExtension", + "location": "[resourceGroup().location]", + "copy": { + "name": "OmsAgentLoop", + "count": "(concat(deploymentModel, parameters(deploymentModel))).numberOfNodes" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()/extensions/DockerExtension", + "Microsoft.Resources/deployments/SolaceWorkspace.Template" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.4", + "settings": { + "workspaceId": "[if(empty(parameters('workspaceName')), '', reference(variables('solaceWorkspaceName')).outputs.workspaceId.value)]" + }, + "protectedSettings": { + "workspaceKey": "[if(empty(parameters('workspaceName')), '', reference(variables('solaceWorkspaceName')).outputs.workspaceKey.value)]" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat('vm', uniqueString(resourceGroup().id, deployment().name))]copyindex()/configureSolaceContainer", + "location": "[resourceGroup().location]", + "copy": { + "name": "SolaceLoop", + "count": "(concat(deploymentModel, parameters(deploymentModel))).numberOfNodes" + }, + "dependsOn": [ + "[if(empty(parameters('workspaceName')), concat('Microsoft.Compute/virtualMachines/', parameters('dnsLabelForVmIp'), copyindex(), '/extensions/DockerExtension'), concat('Microsoft.Compute/virtualMachines/', parameters('dnsLabelForVmIp'), copyindex(), '/extensions/OmsAgentExtension'))]" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptsLocation'), variables('solaceInstallScriptName'), parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat(variables('scriptsLocation'), variables('sempQueryScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('mkdir -p -m 770 ', variables('adminPasswordDir'), '; echo ', parameters('solaceAdminPassword'), ' > ', variables('adminPasswordFile'), '; bash ', variables('solaceInstallScriptName'), ' -c ', copyindex(), ' -d ', parameters('dnsLabelForVmIp'), ' -i ', variables('numberOfInstances'), ' -p ', variables('adminPasswordFile'), ' -n ', parameters('maxNumberOfClientConnections'), ' -q ', parameters('maxNumberOfQueueMessages'), ' -s ', if(equals(copyindex(), variables('monitorNodeIndex')), '0', parameters('dataDiskSize')), if(empty(parameters('workspaceName')), '', concat(' -w ', reference(variables('solaceWorkspaceName')).outputs.workspaceId.value)), ' -u ', parameters('brokerDockerImageReference'))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT522 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT522 new file mode 100644 index 0000000..54acc39 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT522 @@ -0,0 +1,129 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sonarqube/sonarqube-azuresql/nested/azureDBDeploy.json" + ], + "timestamp": 1642962896312, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sonarqube/sonarqube-azuresql/nested/azureDBDeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT522", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT522", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminLogin": { + "type": "string", + "minLength": 1 + }, + "adminPassword": { + "type": "securestring" + }, + "sonarSqlName": { + "type": "string", + "minLength": 1, + "defaultValue": "sonarsql" + }, + "sonarDbName": { + "type": "string", + "minLength": 1, + "defaultValue": "sonar" + }, + "sonarEdition": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sonarCollation": "Latin1_General_100_CS_AS" + }, + "resources": [ + { + "name": "sonarsql", + "type": "Microsoft.Sql/servers", + "kind": "v12.0", + "location": "location", + "apiVersion": "2020-02-02-preview", + "tags": { + "displayName": "sonarqsl" + }, + "properties": { + "administratorLogin": "adminLogin", + "administratorLoginPassword": "adminPassword", + "version": "12.0" + }, + "resources": [ + { + "name": "[uniqueString(parameters('sonarSqlName'), 'AllowAllWindowsAzureIps' )]", + "type": "firewallrules", + "location": "location", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Sql/servers/sonarsql" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "sonar", + "type": "databases", + "kind": "v12.0,user", + "location": "location", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "sonarsql" + ], + "tags": { + "displayName": "sonar" + }, + "properties": { + "collation": "Latin1_General_100_CS_AS", + "edition": "sonarEdition", + "maxSizeBytes": "1073741824" + } + } + ] + } + ], + "outputs": { + "jdbcConnString": { + "type": "string", + "value": "[concat('jdbc:sqlserver://', reference(resourceId('Microsoft.Sql/servers', parameters('sonarSqlName'))).fullyQualifiedDomainName, ':1433;database=', parameters('sonarDbName'), ';ssl=require')]" + }, + "jdbcUserName": { + "type": "string", + "value": "[concat(parameters('adminLogin'), '@', parameters('sonarSqlName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT523 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT523 new file mode 100644 index 0000000..0aed126 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT523 @@ -0,0 +1,521 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sonarqube/sonarqube-azuresql/azuredeploy.json", + "/application-workloads/sonarqube/sonarqube-azuresql/azuredeploy.parameters.json" + ], + "timestamp": 1642962896319, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sonarqube/sonarqube-azuresql/azuredeploy.json", + "/application-workloads/sonarqube/sonarqube-azuresql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT523", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT523", + "collection": "armtemplate", + "json": { + "contentVersion": "1.1.0.0", + "parameters": { + "sqVM_AppName": { + "type": "string", + "defaultValue": "sonarqube-vm", + "minLength": 1, + "metadata": { + "description": "Name of the VM that SonarQube will be installed upon" + } + }, + "sq_PublicIP_DnsPrefix": { + "type": "string", + "defaultValue": "[concat('sonar-', uniqueString(resourceGroup().id))]", + "minLength": 1, + "maxLength": 32, + "metadata": { + "description": "The prefix of the public URL for the VM on the Internet. It should be unique across all Azure and match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + } + }, + "sqVM_AppAdmin_UserName": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "Admin account name for the SonarQube VM" + }, + "value": "GEN-UNIQUE" + }, + "sqVM_AppAdmin_Password": { + "type": "securestring", + "metadata": { + "description": "Password for the SonarQube VM Admin account" + }, + "value": "GEN-PASSWORD" + }, + "sqDB_Admin_UserName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Admin account name for Azure SQL Server" + }, + "value": "GEN-UNIQUE" + }, + "sqDB_Admin_Password": { + "type": "securestring", + "metadata": { + "description": "Password for Azure SQL Server Admin account" + }, + "value": "GEN-PASSWORD" + }, + "sqDB_ServerName": { + "type": "string", + "minLength": 1, + "maxLength": 10, + "defaultValue": "sonarsql", + "metadata": { + "description": "Name of Azure SQL Server (limit to 10 chars or less)" + } + }, + "sqDB_DBName": { + "type": "string", + "minLength": 1, + "defaultValue": "sonar", + "metadata": { + "description": "Name of the SonarQube DB on the Azure SQL Server" + } + }, + "sqDB_DBEdition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Edition of Azure SQL Database to create" + } + }, + "diskType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "StandardSSD_LRS", + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Type of Azure Storage Acct to create" + } + }, + "sqVM_Installation_Type": { + "type": "string", + "defaultValue": "Secure", + "allowedValues": [ + "Secure", + "Nonsecure" + ], + "metadata": { + "description": "Type of SonarQube installation, Secure (HTTPS) or non-secure (HTTP)" + } + }, + "sqVM_ReverseProxy_Type": { + "type": "string", + "defaultValue": "IIS", + "allowedValues": [ + "IIS" + ], + "metadata": { + "description": "Type of Reverse Proxy to secure SonarQube" + } + }, + "sqVM_LTS_Version": { + "type": "string", + "defaultValue": "sonarqube-8.4.1.35646", + "allowedValues": [ + "sonarqube-8.4.1.35646", + "sonarqube-8.3.1.34397", + "sonarqube-8.2.0.32929", + "sonarqube-8.1.0.31237", + "sonarqube-8.0", + "sonarqube-7.9.3", + "sonarqube-6.7.7", + "sonarqube-5.6.7" + ], + "metadata": { + "description": "Version of SonarQube to install" + } + }, + "sonarQubeDownloadRoot": { + "type": "string", + "defaultValue": "https://binaries.sonarsource.com/Distribution/sonarqube/", + "metadata": { + "description": "Location to download the installation binary of SonarQube from" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "SQvmAppVmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size fo the VM" + } + } + }, + "variables": { + "SQvnetPrefix": "10.0.0.0/16", + "SQvnetExternalSubnetName": "Subnet-External", + "SQvnetExternalSubnetPrefix": "10.0.0.0/24", + "SQvnetInternalSubnetPrefix": "10.0.1.0/24", + "SQvmAppImagePublisher": "MicrosoftWindowsServer", + "SQvmAppImageOffer": "WindowsServer", + "SQvmAppWindowsOSVersion": "2019-Datacenter", + "SQvmAppSubnetRef": "Microsoft.Network/virtualNetworks/subnets/SQvnet/Subnet-External", + "SQvmAppNicName": "sonarqube-vmNetworkInterface", + "SQpublicIPName": "SQpublicIP", + "dscZipFile": "DSC/SQdscAppConfiguration.ps1.zip", + "SQdscAppConfigurationFunction": "SQdscAppConfiguration.ps1\\Main", + "AzureSqlServerName": "[concat(parameters('sqDB_ServerName'), uniqueString(resourceGroup().id))]", + "SQDBTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/azureDBDeploy.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "apiVersion": "2019-10-01", + "name": "deploySQLDB", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/azureDBDeploy.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminLogin": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "sonarSqlName": { + "value": "[variables('AzureSqlServerName')]" + }, + "sonarDbName": { + "value": "sonar" + }, + "sonarEdition": { + "value": "Basic" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "SQvnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/SQnsgApp" + ], + "tags": { + "displayName": "SQvnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-External", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/SQnsgApp" + } + } + } + ] + } + }, + { + "name": "sonarqube-vmNetworkInterface", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/SQvnet", + "Microsoft.Network/publicIPAddresses/SQpublicIP" + ], + "tags": { + "displayName": "SQvmAppNic" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/SQvnet/Subnet-External" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/SQpublicIP" + } + } + } + ] + } + }, + { + "name": "sonarqube-vm", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/sonarqube-vmNetworkInterface" + ], + "tags": { + "displayName": "SQvmApp" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "sonarqube-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "sonarqube-vm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/sonarqube-vmNetworkInterface" + } + ] + } + }, + "resources": [ + { + "name": "configureAppVM_DSC", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/sonarqube-vm" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat(variables('dscZipFile'), parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "SQdscAppConfiguration.ps1\\Main", + "properties": { + "nodeName": "sonarqube-vm", + "sqVM_AppAdmin_UserName": "GEN-UNIQUE", + "connectionString": "[reference('deploySQLDB').outputs.jdbcConnString.value]", + "connectionUsername": "GEN-UNIQUE", + "connectionPassword": "GEN-PASSWORD", + "sqVmAdminPwd": "GEN-PASSWORD", + "sqLtsVersion": "sonarqube-8.4.1.35646", + "sonarQubeDownloadRoot": "https://binaries.sonarsource.com/Distribution/sonarqube/" + } + } + } + }, + { + "name": "secureSonarQube", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/sonarqube-vm", + "Microsoft.Compute/virtualMachines/extensions/sonarqube-vm/configureAppVM_DSC" + ], + "tags": { + "displayName": "secureSonarQube" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('secureSonarQube.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File secureSonarQube.ps1', ' -serverName ' , reference(variables('SQpublicIPName')).dnsSettings.fqdn, ' -websiteName SonarQubeProxy', ' -installationType ', parameters('sqVM_Installation_Type'),' -reverseProxyType ', parameters('sqVM_ReverseProxy_Type'))]" + } + } + } + ] + }, + { + "name": "SQpublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "tags": { + "displayName": "SQpublicIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('sonar-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "name": "SQnsgApp", + "type": "Microsoft.Network/networkSecurityGroups", + "location": "[resourceGroup().location]", + "apiVersion": "2020-05-01", + "tags": { + "displayName": "SQnsgApp" + }, + "properties": { + "securityRules": [ + { + "name": "Allow_RDP_In", + "properties": { + "description": "Allow RDP In", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Allow_HTTPS_In", + "properties": { + "description": "Allow HTTPS In", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "Allow_RDP_Out", + "properties": { + "description": "Allow RDP Out", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "10.0.0.0/24", + "destinationAddressPrefix": "10.0.1.0/24", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "Allow_SonarQube_In", + "properties": { + "description": "Allow SonarQube In", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9000", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "Block_All_In", + "properties": { + "description": "Block everything else", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + } + ], + "outputs": { + "HTTP Url": { + "type": "string", + "value": "[concat(reference(variables('SQpublicIPName')).dnsSettings.fqdn,':9000')]" + }, + "HTTPS Url": { + "type": "string", + "value": "[concat('https://',reference(variables('SQpublicIPName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT524 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT524 new file mode 100644 index 0000000..bf243c1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT524 @@ -0,0 +1,254 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/spark/hdinsight-apache-spark/azuredeploy.json", + "/application-workloads/spark/hdinsight-apache-spark/azuredeploy.parameters.json" + ], + "timestamp": 1642962896328, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/hdinsight-apache-spark/azuredeploy.json", + "/application-workloads/spark/hdinsight-apache-spark/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT524", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT524", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE" + }, + "loginUsername": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster, log into cluster dashboards, log into Ambari, and SSH into the cluster." + }, + "value": "GEN-UNIQUE" + }, + "loginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "clusterNodeSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "All nodes will be deployed using the specified hardware profile: D12(4 CPU Cores, 28GB of RAM), D13(8 CPU Cores, 56GB of RAM), D14(16 CPU Cores, 112 GB of RAM)." + } + }, + "clusterWorkerNodeCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of worker nodes in the HDInsight cluster." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "clusterType": "hadoop", + "clusterVnetSubnetName": "GEN-UNIQUE-subnet", + "clusterVnetAddressSpace": "172.16.228.0/23", + "clusterVNetSubnetAddressRange": "172.16.229.0/24", + "clusterStorageAccountName": "[take(concat('store', parameters('clusterName')), 24)]", + "clusterVNetName": "GEN-UNIQUE-vnet" + }, + "resources": [ + { + "name": "GEN-UNIQUE-vnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "clusterVNetAddressSpace" + ] + }, + "subnets": [ + { + "name": "clusterVNetSubnetName", + "properties": { + "addressPrefix": "172.16.229.0/24" + } + } + ] + } + }, + { + "name": "[take(concat('store', parameters('clusterName')), 24)]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2019-04-01", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[take(concat('store', parameters('clusterName')), 24)]", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "clusterVersion": "3.6", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "componentVersion": { + "Spark": "2.3" + }, + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + }, + "hive-site": { + "hive.metastore.client.connect.retry.delay": "5", + "hive.execution.engine": "mr", + "hive.security.authorization.manager": "org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('clusterStorageAccountName'))).primaryEndpoints.blob, 'https://', ''), '/', '')]", + "isDefault": true, + "container": "GEN-UNIQUE", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clusterStorageAccountName')), '2019-04-01').keys[0].value]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet", + "subnet": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/clusterVNetSubnetName" + }, + "scriptActions": [ + { + "name": "Apache Spark 1.4.1", + "uri": "[uri(parameters('_artifactsLocation'), concat('spark141-installer-v04.sh', parameters('_artifactsLocationSasToken')))]" + } + ] + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet", + "subnet": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/clusterVNetSubnetName" + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet", + "subnet": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/clusterVNetSubnetName" + } + } + ] + } + } + } + ], + "outputs": { + "vnet": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', variables('clusterVNetName')))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters', parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT525 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT525 new file mode 100644 index 0000000..ff3210e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT525 @@ -0,0 +1,252 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/spark/hdinsight-genomics-adam/azuredeploy.json", + "/application-workloads/spark/hdinsight-genomics-adam/azuredeploy.parameters.json" + ], + "timestamp": 1642962896340, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/hdinsight-genomics-adam/azuredeploy.json", + "/application-workloads/spark/hdinsight-genomics-adam/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT525", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT525", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE-10" + }, + "loginUsername": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster, log into cluster dashboards, log into Ambari, and SSH into the cluster. " + }, + "value": "GEN-UNIQUE" + }, + "loginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "clusterNodeSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "All nodes will be deployed using the specified hardware profile: D12(4 CPU Cores, 28GB of RAM), D13(8 CPU Cores, 56GB of RAM), D14(16 CPU Cores, 112 GB of RAM)." + } + }, + "clusterWorkerNodeCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of worker nodes in the HDInsight cluster." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "defaultApiVersion": "2015-06-15", + "clusterType": "hadoop", + "clusterVnetSubnetName": "GEN-UNIQUE-10-subnet", + "clusterVnetAddressSpace": "172.16.228.0/23", + "clusterVNetSubnetAddressRange": "172.16.229.0/24", + "clusterStorageAccountName": "GEN-UNIQUE-10storeacc", + "clusterVNetName": "GEN-UNIQUE-10-vnet" + }, + "resources": [ + { + "name": "GEN-UNIQUE-10-vnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "clusterVNetAddressSpace" + ] + }, + "subnets": [ + { + "name": "clusterVNetSubnetName", + "properties": { + "addressPrefix": "172.16.229.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-10storeacc", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "sku": { + "name": "Standard_LRS" + } + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-10storeacc", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-10-vnet" + ], + "properties": { + "clusterVersion": "3.6", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + }, + "hive-site": { + "hive.metastore.client.connect.retry.delay": "5", + "hive.execution.engine": "mr", + "hive.security.authorization.manager": "org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('clusterStorageAccountName')), '2020-08-01-preview').primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-10", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('clusterStorageAccountName')), variables('defaultApiVersion')).key1]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet", + "subnet": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet/subnets/clusterVNetSubnetName" + }, + "scriptActions": [ + { + "name": "Genome Analysis Platform -- ADAM", + "uri": "[uri(parameters('_artifactsLocation'), concat('adam-installer-v03.sh', parameters('_artifactsLocationSasToken')))]", + "parameters": "" + } + ] + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet", + "subnet": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet/subnets/clusterVNetSubnetName" + } + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet", + "subnet": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet/subnets/clusterVNetSubnetName" + } + } + ] + } + } + } + ], + "outputs": { + "vnet": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('clusterVNetName')))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT526 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT526 new file mode 100644 index 0000000..689a68f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT526 @@ -0,0 +1,485 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/spark/spark-2.0-on-suse/spark-2.0-on-suse/azuredeploy.json", + "/application-workloads/spark/spark-2.0-on-suse/spark-2.0-on-suse/azuredeploy.parameters.json" + ], + "timestamp": 1642962896352, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-2.0-on-suse/spark-2.0-on-suse/azuredeploy.json", + "/application-workloads/spark/spark-2.0-on-suse/spark-2.0-on-suse/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT526", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT526", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The Linux VM user name" + }, + "value": "GEN-UNIQUE" + }, + "numberOfSlaves": { + "type": "int", + "metadata": { + "description": "Number Of Slaves" + }, + "defaultValue": 1, + "minValue": 1, + "maxValue": 50, + "value": 1 + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "VmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "allowedValues": [ + "Standard_D4s_v3" + ] + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "resourceGroupLocation": "[resourceGroup().location]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storageac')]", + "sparkMasterMachineName": "sparkmaster", + "sparkSlaveMachineName": "sparkslave", + "sparkMasterPublicIpName": "sparkMasterPublicIp", + "sparkNetWorkSecurityGroupName": "nsgroup", + "sparkVirtualNetworkName": "sparkVirtualNetwork", + "virtualNetworkAddressPrefix": "10.0.0.0/16", + "defaultSubnetAddressPrefix": "10.0.0.0/24", + "sparkMasterNetworkInterfaceName": "ni_master", + "sparkSlaveNetworkInterfaceName": "ni_slave", + "sparkMasterInternalIP": "10.0.0.4", + "ScriptFolder": "scripts", + "sparkInstallScriptName": "install_spark_environment.sh", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "sparkmaster", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ni_master" + ], + "properties": { + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ni_master" + } + ] + }, + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "suse", + "offer": "sles-15-sp1", + "sku": "gen2", + "version": "latest" + }, + "osDisk": { + "name": "sparkmaster_OSDisk", + "createOption": "FromImage", + "caching": "ReadWrite" + } + }, + "osProfile": { + "computerName": "sparkmaster", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + } + }, + "resources": [ + { + "type": "extensions", + "name": "configuresparkonmaster", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//sparkmaster", + "Microsoft.Network/networkInterfaces//ni_master" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('ScriptFolder'), '/', variables('sparkInstallScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('sudo sh install_spark_environment.sh ', '-m 1', ' -i ', reference(variables('sparkMasterNetworkInterfaceName')).ipConfigurations[0].properties.privateIPAddress, ' -k ', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-01-01').keys[0].value, ' -a ', variables('storageAccountName'), parameters('_artifactsLocationSasToken'))]" + } + } + } + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "sparkslavecopyindex()", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "VMLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ni_slavecopyindex()" + ], + "properties": { + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ni_slavecopyindex()" + } + ] + }, + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "suse", + "offer": "sles-15-sp1", + "sku": "gen2", + "version": "latest" + }, + "osDisk": { + "name": "sparkslavecopyindex()_OSDisk", + "createOption": "FromImage", + "caching": "ReadWrite" + } + }, + "osProfile": { + "computerName": "sparkslavecopyindex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + } + }, + "resources": [ + { + "type": "extensions", + "name": "configuresparkonslave", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ni_slavecopyindex()", + "Microsoft.Compute/virtualMachines/sparkslavecopyindex()", + "Microsoft.Compute/virtualMachines/sparkmaster/extensions/configuresparkonmaster" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('ScriptFolder'), '/', variables('sparkInstallScriptName'), parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('sudo sh install_spark_environment.sh ', '-m 0', ' -i ', reference(variables('sparkMasterNetworkInterfaceName')).ipConfigurations[0].properties.privateIPAddress, ' -k ', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-01-01').keys[0].value, ' -a ', variables('storageAccountName') , parameters('_artifactsLocationSasToken'))]" + } + } + } + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "ni_master", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/sparkMasterPublicIp", + "Microsoft.Network/virtualNetworks/sparkVirtualNetwork", + "Microsoft.Network/networkSecurityGroups/nsgroup" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAddress": "10.0.0.4", + "privateIPAllocationMethod": "Static", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/sparkMasterPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sparkVirtualNetwork/default" + } + } + } + ], + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgroup" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "ni_slavecopyIndex()", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "NicSlavesLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ni_master", + "Microsoft.Network/virtualNetworks/sparkVirtualNetwork", + "Microsoft.Network/networkSecurityGroups/nsgroup" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/sparkVirtualNetwork/default" + } + } + } + ], + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsgroup" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "sparkMasterPublicIp", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "sparkVirtualNetwork", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgroup", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "SparkUI", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "4040", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1010, + "direction": "Inbound" + } + }, + { + "name": "SparkMasterUI", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1020, + "direction": "Inbound" + } + }, + { + "name": "SparkHistoryServer", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "18080", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1030, + "direction": "Inbound" + } + }, + { + "name": "MesosMaster", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "5050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1040, + "direction": "Inbound" + } + }, + { + "name": "SparkWorker", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "8081", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1050, + "direction": "Inbound" + } + }, + { + "name": "SparkMasterService", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "7077", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1060, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "Storage", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "properties": {} + } + ], + "outputs": { + "masterPrivateIP": { + "type": "string", + "value": "[reference(variables('sparkMasterNetworkInterfaceName')).ipConfigurations[0].properties.privateIPAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT527 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT527 new file mode 100644 index 0000000..bac2b70 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT527 @@ -0,0 +1,480 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962896364, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT527", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT527", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password used when provisioning virtual machines" + }, + "value": "GEN-PASSWORD" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Image SKU" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNETspark", + "metadata": { + "description": "The arbitrary name of the virtual network provisioned for the cluster" + }, + "value": "GEN-VNET-NAME" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The network address space for the virtual network" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "GEN-SUBNET1-NAME" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Address space for the virtual network subnet" + }, + "value": "10.0.0.0/24" + }, + "sparkVersion": { + "type": "string", + "defaultValue": "3.0.0", + "allowedValues": [ + "2.0.2", + "2.1.3", + "2.2.3", + "2.3.4", + "2.4.6", + "3.0.0" + ], + "metadata": { + "description": "The version of the Spark package to be deployed on the cluster (or use 'stable' to pull in the latest and greatest)" + }, + "value": "3.0.0" + }, + "sparkNodeIPAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.1", + "metadata": { + "description": "The IP address prefix that will be used for constructing a static private IP address for each node in the cluster" + }, + "value": "10.0.0.1" + }, + "sparkSlaveNodeIPAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.3", + "metadata": { + "description": "The IP address prefix that will be used for constructing a static private IP address for each node in the cluster" + }, + "value": "10.0.0.3" + }, + "jumpbox": { + "type": "string", + "defaultValue": "enabled", + "allowedValues": [ + "enabled", + "disabled" + ], + "metadata": { + "description": "The flag allowing to enable or disable provisioning of the jumpbox VM that can be used to access the Spark nodes" + }, + "value": "enabled" + }, + "tshirtSizeIns": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 4, + 6 + ], + "metadata": { + "description": "T-shirt size of the Spark cluster Ex: S is 1, M is 4, L is 6" + }, + "value": 1 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3" + ], + "metadata": { + "Description": "VM Size" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME", + "computerNamePrefix": "sparknode", + "sharedTemplateName": "shared-resources", + "jumpboxTemplateName": "jumpbox-resources-", + "TshirtSize": { + "numberOfMasterInstances": 1, + "numberOfSlavesInstances": 1 + }, + "numberOfMasterInstances": "(TshirtSize).numberOfMasterInstances", + "numberOfSlavesInstances": "(TshirtSize).numberOfSlavesInstances" + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('sharedTemplateName'), '.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "GEN-SUBNET1-NAME" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "jumpbox-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('jumpboxTemplateName'), parameters('jumpbox'), '.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-SUBNET1-NAME" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "computerNamePrefix": { + "value": "sparknode" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": "(TshirtSize).numberOfMasterInstances" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.1copyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicslcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicslLoop", + "count": "(TshirtSize).numberOfSlavesInstances" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.3copyindex()", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "mastervmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoopMaster", + "count": "(TshirtSize).numberOfMasterInstances" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources", + "Microsoft.Network/networkInterfaces//niccopyindex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/sparkCluserAS" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "sparknodecopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "mastervmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niccopyindex()" + } + ] + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "slavevmcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": "(TshirtSize).numberOfSlavesInstances" + }, + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources", + "Microsoft.Network/networkInterfaces//nicslcopyindex()", + "virtualMachineLoopMaster" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/sparkCluserAS" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "sparknodeslcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "slavevmcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicslcopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "mastervmcopyindex()/installsparkmaster", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineExtensionsLoopMaster", + "count": "(TshirtSize).numberOfMasterInstances" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//mastervmcopyindex()", + "Microsoft.Network/networkInterfaces//niccopyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('spark-cluster-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('bash spark-cluster-install.sh -k ',parameters('sparkVersion'),' -d ', reference('nic0').ipConfigurations[0].properties.privateIPAddress,' -s ',variables('numberOfSlavesInstances'),' -m ', ' 1 ')]" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "slavevmcopyindex()/installsparkslave", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineExtensionsLoopSlave", + "count": "(TshirtSize).numberOfSlavesInstances" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//slavevmcopyindex()", + "Microsoft.Network/networkInterfaces//nicslcopyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('spark-cluster-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash spark-cluster-install.sh -k 3.0.0 -m 0 " + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT528 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT528 new file mode 100644 index 0000000..353e9ed --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT528 @@ -0,0 +1,71 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/jumpbox-resources-disabled.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962896385, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/jumpbox-resources-disabled.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT528", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT528", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "sparkVersion": { + "value": "3.0.0" + }, + "sparkNodeIPAddressPrefix": { + "value": "10.0.0.1" + }, + "sparkSlaveNodeIPAddressPrefix": { + "value": "10.0.0.3" + }, + "jumpbox": { + "value": "enabled" + }, + "tshirtSizeIns": { + "value": 1 + } + }, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT529 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT529 new file mode 100644 index 0000000..5423d25 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT529 @@ -0,0 +1,220 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/jumpbox-resources-enabled.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962896392, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/jumpbox-resources-enabled.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT529", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT529", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "Description": "The arbitrary name of the virtual network provisioned for the cluster" + }, + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "Description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "GEN-SUBNET1-NAME" + }, + "adminUsername": { + "type": "string", + "metadata": { + "Description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "Description": "Administrator password used when provisioning virtual machines" + }, + "value": "GEN-PASSWORD" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "Description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "Description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "Description": "Image SKU" + } + }, + "computerNamePrefix": { + "type": "string", + "metadata": { + "Description": "The global VM name prefix" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "Description": "VM Size" + } + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "sparkVersion": { + "value": "3.0.0" + }, + "sparkNodeIPAddressPrefix": { + "value": "10.0.0.1" + }, + "sparkSlaveNodeIPAddressPrefix": { + "value": "10.0.0.3" + }, + "jumpbox": { + "value": "enabled" + }, + "tshirtSizeIns": { + "value": 1 + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicJumpbox", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpbox", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicJumpbox" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "computerNamePrefixjumpbox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "jumpbox_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicJumpbox" + } + ], + "inputEndpoints": [ + { + "enableDirectServerReturn": "False", + "endpointName": "SSH", + "privatePort": 22, + "publicPort": 22, + "protocol": "Tcp" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT53 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT53 new file mode 100644 index 0000000..e8cd3a4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT53 @@ -0,0 +1,159 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/loadBalancersResource.json" + ], + "timestamp": 1642962884311, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/loadBalancersResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT53", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT53", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object" + }, + "felbPublicIPAddressID": { + "type": "string" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Network/loadBalancers", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "felbPublicIPAddressID" + } + } + } + ], + "backendAddressPools": [ + { + "name": "networkSettings" + }, + { + "name": "networkSettings" + } + ], + "inboundNatRules": [], + "probes": [ + { + "name": "probe-ssh", + "properties": { + "protocol": "Tcp", + "port": 22, + "intervalInSeconds": 5, + "numberOfProbes": 3 + } + }, + { + "name": "probe-http", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "loadBalancingRules": [ + { + "name": "admin-ssh-access", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/networkSettings/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "frontendPort": 22, + "backendPort": 22, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 30, + "protocol": "Tcp", + "loadDistribution": "SourceIP", + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/networkSettings/backendAddressPools/networkSettings" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/networkSettings/probes/probe-ssh" + } + } + }, + { + "name": "frontend-http", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/networkSettings/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 10, + "protocol": "Tcp", + "loadDistribution": "SourceIPProtocol", + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/networkSettings/backendAddressPools/networkSettings" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/networkSettings/probes/probe-http" + } + } + }, + { + "name": "frontend-https", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/networkSettings/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 10, + "protocol": "Tcp", + "loadDistribution": "SourceIPProtocol", + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/networkSettings/backendAddressPools/networkSettings" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/networkSettings/probes/probe-http" + } + } + } + ] + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT530 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT530 new file mode 100644 index 0000000..885ba21 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT530 @@ -0,0 +1,137 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/shared-resources.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962896404, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/spark/spark-on-ubuntu/shared-resources.json", + "/application-workloads/spark/spark-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT530", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT530", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "Description": "The arbitrary name of the virtual network provisioned for the cluster" + }, + "value": "GEN-VNET-NAME" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "Description": "The network address space for the virtual network" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "Description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "GEN-SUBNET1-NAME" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "Description": "Address space for the virtual network subnet" + }, + "value": "10.0.0.0/24" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "sparkVersion": { + "value": "3.0.0" + }, + "sparkNodeIPAddressPrefix": { + "value": "10.0.0.1" + }, + "sparkSlaveNodeIPAddressPrefix": { + "value": "10.0.0.3" + }, + "jumpbox": { + "value": "enabled" + }, + "tshirtSizeIns": { + "value": 1 + } + }, + "variables": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "sparkCluserAS", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT531 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT531 new file mode 100644 index 0000000..fc7804a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT531 @@ -0,0 +1,272 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/aks-sql-server-always-on/azuredeploy.json", + "/application-workloads/sql/aks-sql-server-always-on/azuredeploy.parameters.json" + ], + "timestamp": 1642962896412, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/aks-sql-server-always-on/azuredeploy.json", + "/application-workloads/sql/aks-sql-server-always-on/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT531", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT531", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "aks_cluster_name": { + "type": "string", + "defaultValue": "sql-server-aks", + "metadata": { + "description": "The name to use for the AKS Cluster." + } + }, + "aks_resource_group": { + "type": "string", + "defaultValue": "sql-server-always-on", + "metadata": { + "description": "The name of the resource group to create the AKS Cluster in." + }, + "value": "sql-server-always-on" + }, + "azure_client_id": { + "type": "securestring", + "metadata": { + "description": "AAD Client ID for Azure account authentication - used to authenticate to Azure using Service Principal for ACI creation to run CNAB operation and also for AKS Cluster." + }, + "value": "GEN-GUID" + }, + "azure_client_secret": { + "type": "securestring", + "metadata": { + "description": "AAD Client Secret for Azure account authentication - used to authenticate to Azure using Service Principal for ACI creation to run CNAB operation and also for AKS Cluster." + }, + "value": "GEN_UNIQUE" + }, + "cnab_action": { + "type": "string", + "defaultValue": "install", + "metadata": { + "description": "The name of the action to be performed on the application instance." + }, + "value": "install" + }, + "cnab_installation_name": { + "type": "string", + "defaultValue": "porter-sql-server-always-on", + "metadata": { + "description": "The name of the application instance." + }, + "value": "sql-server-always-on" + }, + "cnab_state_share_name": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The file share name in the storage account for the CNAB state to be stored in" + } + }, + "cnab_state_storage_account_key": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The storage account key for the account for the CNAB state to be stored in, if this is left blank it will be looked up at runtime" + } + }, + "cnab_state_storage_account_name": { + "type": "string", + "defaultValue": "[concat('cnabstate',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The storage account name for the account for the CNAB state to be stored in, by default this will be in the current resource group and will be created if it does not exist" + } + }, + "cnab_state_storage_account_resource_group": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The resource group name for the storage account for the CNAB state to be stored in, by default this will be in the current resource group, if this is changed to a different resource group the storage account is expected to already exist" + } + }, + "containerGroupName": { + "type": "string", + "defaultValue": "[concat('cg-',uniqueString(resourceGroup().id, newGuid()))]", + "metadata": { + "description": "Name for the container group" + } + }, + "containerName": { + "type": "string", + "defaultValue": "[concat('cn-',uniqueString(resourceGroup().id, newGuid()))]", + "metadata": { + "description": "Name for the container" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().Location]", + "metadata": { + "description": "The location in which the resources will be created." + } + }, + "sql_masterkeypassword": { + "type": "securestring", + "metadata": { + "description": "The Password for the SQL Server Master Key." + }, + "value": "GEN-PASSWORD" + }, + "sql_sapassword": { + "type": "securestring", + "metadata": { + "description": "The Password for the sa user in SQL Server." + }, + "value": "GEN-PASSWORD" + } + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('cnabstate',uniqueString(resourceGroup().id))]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().Location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "keySource": "Microsoft.Storage", + "services": { + "file": { + "enabled": true + } + } + } + } + }, + { + "type": "Microsoft.ContainerInstance/containerGroups", + "name": "[concat('cg-',uniqueString(resourceGroup().id, newGuid()))]", + "apiVersion": "2018-10-01", + "location": "[resourceGroup().Location]", + "dependsOn": [ + "[concat('cnabstate',uniqueString(resourceGroup().id))]" + ], + "properties": { + "containers": [ + { + "name": "[concat('cn-',uniqueString(resourceGroup().id, newGuid()))]", + "properties": { + "image": "cnabquickstartstest.azurecr.io/simongdavies/run-duffle:latest", + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + }, + "environmentVariables": [ + { + "name": "CNAB_ACTION", + "value": "install" + }, + { + "name": "CNAB_INSTALLATION_NAME", + "value": "sql-server-always-on" + }, + { + "name": "ACI_LOCATION", + "value": "[resourceGroup().Location]" + }, + { + "name": "CNAB_STATE_STORAGE_ACCOUNT_NAME", + "value": "[concat('cnabstate',uniqueString(resourceGroup().id))]" + }, + { + "name": "CNAB_STATE_STORAGE_ACCOUNT_KEY", + "secureValue": "" + }, + { + "name": "CNAB_STATE_SHARE_NAME", + "value": "" + }, + { + "name": "VERBOSE", + "value": "false" + }, + { + "name": "CNAB_BUNDLE_NAME", + "value": "porter/sql-server-always-on" + }, + { + "name": "AKS_CLUSTER_NAME", + "value": "sql-server-aks" + }, + { + "name": "AKS_RESOURCE_GROUP", + "value": "sql-server-always-on" + }, + { + "name": "LOCATION", + "value": "[resourceGroup().Location]" + }, + { + "name": "SQL_MASTERKEYPASSWORD", + "secureValue": "GEN-PASSWORD" + }, + { + "name": "SQL_SAPASSWORD", + "secureValue": "GEN-PASSWORD" + }, + { + "name": "AZURE_CLIENT_ID", + "secureValue": "GEN-GUID" + }, + { + "name": "AZURE_CLIENT_SECRET", + "secureValue": "GEN_UNIQUE" + }, + { + "name": "AZURE_SUBSCRIPTION_ID", + "value": "[subscription().subscriptionId]" + }, + { + "name": "AZURE_TENANT_ID", + "value": "[subscription().tenantId]" + } + ] + } + } + ], + "osType": "Linux", + "restartPolicy": "Never" + } + } + ], + "outputs": { + "CNAB Package Action Logs Command": { + "type": "string", + "value": "[concat('az container logs -g ',resourceGroup().name,' -n ',parameters('containerGroupName'),' --container-name ',parameters('containerName'), ' --follow')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT532 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT532 new file mode 100644 index 0000000..da89c0f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT532 @@ -0,0 +1,180 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sql-encryption-protector-byok/azuredeploy.json", + "/application-workloads/sql/sql-encryption-protector-byok/azuredeploy.parameters.json" + ], + "timestamp": 1642962896418, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-encryption-protector-byok/azuredeploy.json", + "/application-workloads/sql/sql-encryption-protector-byok/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT532", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers", + "microsoft.resources/deployments", + "microsoft.sql/servers/keys", + "microsoft.sql/servers/encryptionprotector" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT532", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string", + "defaultValue": "sql-server", + "metadata": { + "description": "Azure SQL server name to create" + }, + "value": "GEN-UNIQUE" + }, + "sqlServerAdministrator": { + "type": "string", + "metadata": { + "description": "Azure SQL server administrator name" + }, + "value": "GEN-UNIQUE" + }, + "sqlServerAdministratorPwd": { + "type": "securestring", + "metadata": { + "description": "Azure SQL server administrator password" + }, + "value": "GEN-PASSWORD" + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Key vault name where the key to use is stored" + }, + "value": "GET-PREREQ-keyVaultName" + }, + "keyVaultResourceGroupName": { + "type": "string", + "metadata": { + "description": "Key vault resource group name where it is stored" + }, + "value": "GET-PREREQ-keyVaultResourceGroupName" + }, + "keyName": { + "type": "string", + "metadata": { + "description": "Key name in the key vault to use as encryption protector" + }, + "value": "GET-PREREQ-keyName" + }, + "keyVersion": { + "type": "string", + "metadata": { + "description": "Version of the key in the key vault to use as encryption protector" + }, + "value": "GET-PREREQ-keyVersion" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sqlServerKeyName": "GET-PREREQ-keyVaultName_GET-PREREQ-keyName_GET-PREREQ-keyVersion" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "addAccessPolicy", + "resourceGroup": "GET-PREREQ-keyVaultResourceGroupName", + "dependsOn": [ + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "name": "GET-PREREQ-keyVaultName/add", + "apiVersion": "2019-09-01", + "properties": { + "accessPolicies": [ + { + "tenantId": "[subscription().tenantId]", + "objectId": "[reference(resourceId('Microsoft.Sql/servers/', parameters('sqlServerName')), '2019-06-01-preview', 'Full').identity.principalId]", + "permissions": { + "keys": [ + "get", + "wrapKey", + "unwrapKey" + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "name": "GEN-UNIQUE/GET-PREREQ-keyVaultName_GET-PREREQ-keyName_GET-PREREQ-keyVersion", + "type": "Microsoft.Sql/servers/keys", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "addAccessPolicy", + "Microsoft.Sql/servers/GEN-UNIQUE" + ], + "properties": { + "serverKeyType": "AzureKeyVault", + "uri": "[concat(reference(resourceId(parameters('keyVaultResourceGroupName'), 'Microsoft.KeyVault/vaults/', parameters('keyVaultName')), '2018-02-14-preview', 'Full').properties.vaultUri, 'keys/', parameters('keyName'), '/', parameters('keyVersion'))]" + } + }, + { + "name": "GEN-UNIQUE/current", + "type": "Microsoft.Sql/servers/encryptionProtector", + "apiVersion": "2020-02-02-preview", + "kind": "azurekeyvault", + "dependsOn": [ + "Microsoft.SQL/servers/keys/GEN-UNIQUE/GET-PREREQ-keyVaultName_GET-PREREQ-keyName_GET-PREREQ-keyVersion" + ], + "properties": { + "serverKeyName": "GET-PREREQ-keyVaultName_GET-PREREQ-keyName_GET-PREREQ-keyVersion", + "serverKeyType": "AzureKeyVault" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT533 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT533 new file mode 100644 index 0000000..938cf80 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT533 @@ -0,0 +1,188 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/nested/deploy-sql-alwayson.json" + ], + "timestamp": 1642962896423, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/nested/deploy-sql-alwayson.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT533", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT533", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlNamePrefix": { + "type": "string" + }, + "domainName": { + "type": "string" + }, + "namePrefix": { + "type": "string" + }, + "sharePath": { + "type": "string" + }, + "sqlWitnessVMName": { + "type": "string" + }, + "sqlLBName": { + "type": "string" + }, + "sqlLBIPAddress": { + "type": "string" + }, + "dnsServerName": { + "type": "string" + }, + "sqlServerServiceAccountUserName": { + "type": "string" + }, + "sqlServerServiceAccountPassword": { + "type": "securestring" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "sqlAlwaysOnEndpointName": { + "type": "string" + }, + "sqlAlwaysOnAvailabilityGroupName1": { + "type": "string" + }, + "sqlAlwaysOnAvailabilityGroupListenerName1": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sqlAOPrepareModulesURL": "[uri(parameters('_artifactsLocation'),concat('dsc/prepare-sql-alwayson-server.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "sqlAOPrepareConfigurationFunction": "PrepareAlwaysOnSqlServer.ps1\\PrepareAlwaysOnSqlServer", + "createClusterModulesURL": "[uri(parameters('_artifactsLocation'),concat('dsc/create-failover-cluster.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "createClusterConfigurationFunction": "CreateFailoverCluster.ps1\\CreateFailoverCluster", + "clusterName": "namePrefix-c" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlNamePrefix0/sqlAOPrepare", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.17", + "autoUpgradeMinorVersion": true, + "settings": { + "wmfVersion": "5.0", + "modulesUrl": "[uri(parameters('_artifactsLocation'),concat('dsc/prepare-sql-alwayson-server.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "PrepareAlwaysOnSqlServer.ps1\\PrepareAlwaysOnSqlServer", + "properties": { + "domainName": "domainName", + "sqlAlwaysOnEndpointName": "sqlAlwaysOnEndpointName", + "adminCreds": { + "userName": "adminUsername", + "password": "PrivateSettingsRef:adminPassword" + }, + "sqlServiceCreds": { + "userName": "sqlServerServiceAccountUserName", + "password": "PrivateSettingsRef:sqlServerServiceAccountPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword", + "sqlServerServiceAccountPassword": "sqlServerServiceAccountPassword" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlNamePrefix1/CreateCluster", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/sqlNamePrefix0/sqlAOPrepare" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.17", + "autoUpgradeMinorVersion": true, + "settings": { + "wmfVersion": "5.0", + "modulesUrl": "[uri(parameters('_artifactsLocation'),concat('dsc/create-failover-cluster.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "CreateFailoverCluster.ps1\\CreateFailoverCluster", + "properties": { + "domainName": "domainName", + "clusterName": "namePrefix-c", + "sharePath": "\\\\sqlWitnessVMName\\sharePath", + "nodes": [ + "sqlNamePrefix0", + "sqlNamePrefix1" + ], + "sqlAlwaysOnEndpointName": "sqlAlwaysOnEndpointName", + "sqlAlwaysOnAvailabilityGroupName": "sqlAlwaysOnAvailabilityGroupName1", + "sqlAlwaysOnAvailabilityGroupListenerName": "sqlAlwaysOnAvailabilityGroupListenerName1", + "sqlAlwaysOnAvailabilityGroupListenerPort": 1433, + "lbName": "sqlLBName", + "lbAddress": "sqlLBIPAddress", + "primaryReplica": "sqlNamePrefix1", + "secondaryReplica": "sqlNamePrefix0", + "dnsServerName": "dnsServerName", + "adminCreds": { + "userName": "adminUsername", + "password": "PrivateSettingsRef:adminPassword" + }, + "sqlServiceCreds": { + "userName": "sqlServerServiceAccountUserName", + "password": "PrivateSettingsRef:sqlServerServiceAccountPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword", + "sqlServerServiceAccountPassword": "sqlServerServiceAccountPassword" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT535 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT535 new file mode 100644 index 0000000..97dc3c6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT535 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/nested/deploy-sql-witness.json" + ], + "timestamp": 1642962896446, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/nested/deploy-sql-witness.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT535", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT535", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlWitnessVMName": { + "type": "string" + }, + "domainName": { + "type": "string" + }, + "sharePath": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "fswModulesURL": "[uri(parameters('_artifactsLocation'), concat('dsc/create-file-share-witness.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "fswConfigurationFunction": "CreateFileShareWitness.ps1\\CreateFileShareWitness" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlWitnessVMName/CreateFileShareWitness", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.17", + "autoUpgradeMinorVersion": true, + "settings": { + "wmfVersion": "5.0", + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('dsc/create-file-share-witness.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "CreateFileShareWitness.ps1\\CreateFileShareWitness", + "properties": { + "domainName": "domainName", + "sharePath": "sharePath", + "adminCreds": { + "userName": "adminUsername", + "password": "PrivateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT536 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT536 new file mode 100644 index 0000000..576740c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT536 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/prereqs/prereq.azuredeploy.json", + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962896454, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/prereqs/prereq.azuredeploy.json", + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT536", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT536", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "quickstarts" + }, + "adminPassword": { + "type": "secureString" + }, + "domainName": { + "type": "string", + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "virtualMachineName": { + "type": "string", + "value": "GEN-UNIQUE-8" + } + }, + "variables": { + "adUsername": "quickstarts", + "virtualMachineName": "GEN-UNIQUE-8" + }, + "resources": [ + { + "name": "createADController", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/active-directory-new-domain/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "quickstarts" + }, + "adminPassword": { + "value": "adminPassword" + }, + "domainName": { + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + }, + "virtualMachineName": { + "value": "GEN-UNIQUE-8" + } + } + } + } + ], + "outputs": { + "domainName": { + "type": "string", + "value": "[reference('createADController').outputs.domainName.value]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkName.value]" + }, + "subnetName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubnetName.value]" + }, + "adUsername": { + "type": "string", + "value": "[variables('adUsername')]" + }, + "virtualMachineName": { + "type": "string", + "value": "[variables('virtualMachineName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT537 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT537 new file mode 100644 index 0000000..b214675 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT537 @@ -0,0 +1,223 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/azuredeploy.json", + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/azuredeploy.parameters.json" + ], + "timestamp": 1642962896461, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/azuredeploy.json", + "/application-workloads/sql/sql-server-2014-alwayson-existing-vnet-and-ad/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT537", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT537", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namePrefix": { + "type": "string", + "maxLength": 8, + "metadata": { + "description": "Naming prefix for each new resource created. 8-char max, lowercase alphanumeric" + }, + "value": "GEN-UNIQUE-8" + }, + "diskType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Type of Storage to be used for VM disks" + }, + "defaultValue": "Premium_LRS" + }, + "sqlVMSize": { + "type": "string", + "metadata": { + "description": "Size of the SQL VMs to be created" + }, + "defaultValue": "Standard_D4s_v3" + }, + "sqlWitnessVMSize": { + "type": "string", + "metadata": { + "description": "Size of the Witness VM to be created" + }, + "defaultValue": "Standard_D2s_v3" + }, + "existingDomainName": { + "type": "string", + "metadata": { + "description": "DNS domain name for existing Active Directory domain" + }, + "value": "GET-PREREQ-domainName" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Name of the Administrator of the existing Active Directory Domain" + }, + "value": "GET-PREREQ-adUsername" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Administrator account of the existing Active Directory Domain" + } + }, + "sqlServerServiceAccountUserName": { + "type": "string", + "metadata": { + "description": "The SQL Server Service account name" + }, + "value": "sqlservice" + }, + "sqlServerServiceAccountPassword": { + "type": "securestring", + "metadata": { + "description": "The SQL Server Service account password" + }, + "value": "GEN-PASSWORD" + }, + "existingSqlSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the existing subnet in the existing VNET to which the SQL & Witness VMs should be deployed" + }, + "value": "GET-PREREQ-subnetName" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET" + }, + "value": "GET-PREREQ-virtualNetworkName" + }, + "existingAdPDCVMName": { + "type": "string", + "maxLength": 15, + "metadata": { + "description": "Computer name of the existing Primary AD domain controller & DNS server" + }, + "value": "GET-PREREQ-virtualMachineName" + }, + "sqlLBIPAddress": { + "type": "string", + "metadata": { + "description": "IP address of ILB for the SQL Server AlwaysOn listener to be created" + }, + "defaultValue": "10.0.0.9" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "sqlSubnetRef": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-subnetName", + "deploySqlClusterTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nested/deploy-sql-cluster.json',parameters('_artifactsLocationSasToken')))]", + "deploySqlCluster": "deploySqlCluster" + }, + "resources": [ + { + "name": "deploySqlCluster", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/deploy-sql-cluster.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "namePrefix": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "GET-PREREQ-domainName" + }, + "diskType": { + "value": "Premium_LRS" + }, + "dnsServerName": { + "value": "GET-PREREQ-virtualMachineName" + }, + "adminUsername": { + "value": "GET-PREREQ-adUsername" + }, + "adminPassword": { + "value": "adminPassword" + }, + "sqlServerServiceAccountUserName": { + "value": "sqlservice" + }, + "sqlServerServiceAccountPassword": { + "value": "GEN-PASSWORD" + }, + "nicSubnetUri": { + "value": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-subnetName" + }, + "lbSubnetUri": { + "value": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-subnetName" + }, + "sqlLBIPAddress": { + "value": "10.0.0.9" + }, + "sqlVMSize": { + "value": "Standard_D4s_v3" + }, + "sqlWitnessVMSize": { + "value": "Standard_D2s_v3" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT538 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT538 new file mode 100644 index 0000000..915bf46 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT538 @@ -0,0 +1,157 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/configuringAlwaysOn.json" + ], + "timestamp": 1642962896468, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/configuringAlwaysOn.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT538", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT538", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlVMName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "domainName": { + "type": "string" + }, + "sqlAOEPName": { + "type": "string" + }, + "sqlServerServiceAccountUserName": { + "type": "string" + }, + "sqlServerServiceAccountPassword": { + "type": "securestring" + }, + "createClusterModulesURL": { + "type": "string" + }, + "createClusterConfigurationFunction": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "sharePath": { + "type": "string" + }, + "sqlAOAGName": { + "type": "string" + }, + "sqlAOListenerName": { + "type": "string" + }, + "sqlAOListenerPort": { + "type": "string" + }, + "sqlLBName": { + "type": "string" + }, + "sqlLBIPAddress": { + "type": "string" + }, + "adPDCVMName": { + "type": "string" + }, + "sqlwVMName": { + "type": "string" + }, + "numberOfDisks": { + "type": "string" + }, + "workloadType": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVMName1/configuringAlwaysOn", + "apiVersion": "2021-07-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.75", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesURL": "createClusterModulesURL", + "configurationFunction": "createClusterConfigurationFunction", + "properties": { + "domainName": "domainName", + "clusterName": "clusterName", + "sharePath": "\\\\sqlwVMName\\sharePath", + "nodes": [ + "sqlVMName0", + "sqlVMName1" + ], + "sqlAlwaysOnEndpointName": "sqlAOEPName", + "sqlAlwaysOnAvailabilityGroupName": "sqlAOAGName", + "sqlAlwaysOnAvailabilityGroupListenerName": "sqlAOListenerName", + "SqlAlwaysOnAvailabilityGroupListenerPort": "sqlAOListenerPort", + "databaseNames": "AutoHa-sample", + "lbName": "sqlLBName", + "lbAddress": "sqlLBIPAddress", + "primaryReplica": "sqlVMName1", + "secondaryReplica": "sqlVMName0", + "dnsServerName": "adPDCVMName", + "adminCreds": { + "userName": "adminUsername", + "password": "privateSettingsRef:adminPassword" + }, + "sqlServiceCreds": { + "userName": "sqlServerServiceAccountUserName", + "password": "privateSettingsRef:sqlServerServiceAccountPassword" + }, + "SQLAuthCreds": { + "userName": "sqlsa", + "password": "privateSettingsRef:sqlAuthPassword" + }, + "NumberOfDisks": "numberOfDisks", + "WorkloadType": "workloadType" + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword", + "sqlServerServiceAccountPassword": "sqlServerServiceAccountPassword", + "sqlAuthPassword": "sqlServerServiceAccountPassword" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT539 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT539 new file mode 100644 index 0000000..34ea149 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT539 @@ -0,0 +1,87 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/configuringBackupADVM.json" + ], + "timestamp": 1642962896478, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/configuringBackupADVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT539", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT539", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adBDCVMName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "domainName": { + "type": "string" + }, + "adBDCConfigurationFunction": { + "type": "string" + }, + "adBDCModulesURL": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "adBDCVMName/CreateBDC", + "apiVersion": "2021-07-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.75", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesURL": "adBDCModulesURL", + "configurationFunction": "adBDCConfigurationFunction", + "properties": { + "domainName": "domainName", + "adminCreds": { + "userName": "adminUsername", + "password": "privateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT54 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT54 new file mode 100644 index 0000000..64c799f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT54 @@ -0,0 +1,63 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/managedDisksResource.json" + ], + "timestamp": 1642962884324, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/managedDisksResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT54", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/disks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT54", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "computeSettings": { + "type": "object" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Compute/disks", + "name": "computeSettingscopyIndex()", + "apiVersion": "computeSettings", + "location": "computeSettings", + "copy": { + "name": "dataDiskCopy", + "count": "computeSettings" + }, + "properties": { + "accountType": "computeSettings", + "creationData": { + "createOption": "computeSettings" + }, + "diskSizeGB": "computeSettings" + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT540 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT540 new file mode 100644 index 0000000..9dcc51f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT540 @@ -0,0 +1,205 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/creatingNICS.json" + ], + "timestamp": 1642962896486, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/creatingNICS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT540", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT540", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "adPDCNicName": { + "type": "string" + }, + "adPDCNICIPAddress": { + "type": "string" + }, + "staticSubnetRef": { + "type": "string" + }, + "adBEAddressPoolID": { + "type": "string" + }, + "adRDPNATRuleID": { + "type": "string" + }, + "adBDCNicName": { + "type": "string" + }, + "adBDCNICIPAddress": { + "type": "string" + }, + "sqlVMName": { + "type": "string" + }, + "sqlSubnetRef": { + "type": "string" + }, + "sqlBEAddressPoolID": { + "type": "string" + }, + "sqlwNicName": { + "type": "string" + }, + "primaryDCIPAddressNameWithSuffix": { + "type": "string" + }, + "backupDCIPAddressNameWithSuffix": { + "type": "string" + }, + "sql1AddressNameWithSuffix": { + "type": "string" + }, + "sql0AddressNameWithSuffix": { + "type": "string" + } + }, + "resources": [ + { + "name": "adPDCNicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "adPDCNICIPAddress", + "subnet": { + "id": "staticSubnetRef" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/primaryDCIPAddressNameWithSuffix" + } + } + } + ] + } + }, + { + "name": "adBDCNicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "adBDCNICIPAddress", + "subnet": { + "id": "staticSubnetRef" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/backupDCIPAddressNameWithSuffix" + } + } + } + ] + } + }, + { + "name": "sqlVMName1-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "sqlSubnetRef" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/sql1AddressNameWithSuffix" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "sqlBEAddressPoolID" + } + ] + } + } + ] + } + }, + { + "name": "sqlVMName0-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "sqlSubnetRef" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/sql0AddressNameWithSuffix" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "sqlBEAddressPoolID" + } + ] + } + } + ] + } + }, + { + "name": "sqlwNicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "sqlSubnetRef" + } + } + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT541 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT541 new file mode 100644 index 0000000..354bd5f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT541 @@ -0,0 +1,73 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/nic.json" + ], + "timestamp": 1642962896493, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/nic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT541", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT541", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The region to deploy the resources into" + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "The name of the NIC to Create or Update" + } + }, + "ipConfigurations": { + "type": "array", + "metadata": { + "description": "The IP configurations of the NIC" + } + }, + "dnsServers": { + "type": "array", + "metadata": { + "description": "The DNS Servers of the NIC" + } + } + }, + "resources": [ + { + "name": "nicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "ipConfigurations": "ipConfigurations", + "dnsSettings": { + "dnsServers": "dnsServers" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT542 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT542 new file mode 100644 index 0000000..25bff8c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT542 @@ -0,0 +1,245 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/preparingSqlServer.json" + ], + "timestamp": 1642962896504, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/preparingSqlServer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT542", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT542", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlVMName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "domainName": { + "type": "string" + }, + "sqlAOPrepareModulesURL": { + "type": "string" + }, + "sqlAOPrepareConfigurationFunction": { + "type": "string" + }, + "sqlAOEPName": { + "type": "string" + }, + "sqlServerServiceAccountUserName": { + "type": "string" + }, + "sqlServerServiceAccountPassword": { + "type": "securestring" + }, + "sharePath": { + "type": "string" + }, + "adPDCVMName": { + "type": "string" + }, + "sqlwVMName": { + "type": "string" + }, + "fswModulesURL": { + "type": "string" + }, + "fswConfigurationFunction": { + "type": "string" + }, + "autoPatchingEnable": { + "type": "bool" + }, + "autoPatchingDay": { + "type": "string" + }, + "autoPatchingStartHour": { + "type": "string" + }, + "numberOfDisks": { + "type": "string" + }, + "workloadType": { + "type": "string" + } + }, + "variables": { + "Monday": "[mod(div(add(add(24,int(parameters('autoPatchingStartHour'))),2),24),7)]", + "Tuesday": "[mod(div(add(add(48,int(parameters('autoPatchingStartHour'))),2),24),7)]", + "Wednesday": "[mod(div(add(add(72,int(parameters('autoPatchingStartHour'))),2),24),7)]", + "Thursday": "[mod(div(add(add(96,int(parameters('autoPatchingStartHour'))),2),24),7)]", + "Friday": "[mod(div(add(add(120,int(parameters('autoPatchingStartHour'))),2),24),7)]", + "Saturday": "[mod(div(add(add(144,int(parameters('autoPatchingStartHour'))),2),24),7)]", + "Sunday": "[mod(div(add(add(168,int(parameters('autoPatchingStartHour'))),2),24),7)]", + "Never": "8", + "Everyday": "0", + "1": "Monday", + "2": "Tuesday", + "3": "Wednesday", + "4": "Thursday", + "5": "Friday", + "6": "Saturday", + "7": "Sunday", + "8": "Monday", + "0": "Everyday" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlwVMName/CreateFileShareWitness", + "apiVersion": "2021-07-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.75", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesURL": "fswModulesURL", + "configurationFunction": "fswConfigurationFunction", + "properties": { + "domainName": "domainName", + "SharePath": "sharePath", + "adminCreds": { + "userName": "adminUsername", + "password": "privateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword" + } + } + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVMName0/SqlVmIaasExtension", + "location": "location", + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": "true", + "settings": { + "AutoTelemetrySettings": { + "Region": "location" + }, + "AutoPatchingSettings": { + "PatchCategory": "WindowsMandatoryUpdates", + "Enable": "autoPatchingEnable", + "DayOfWeek": "autoPatchingDay", + "MaintenanceWindowStartingHour": "[int(parameters('autoPatchingStartHour'))]", + "MaintenanceWindowDuration": "60" + }, + "AutoBackupSettings": { + "Enable": false, + "RetentionPeriod": "30", + "EnableEncryption": false + } + } + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVMName1/SqlVmIaasExtension", + "location": "location", + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": "true", + "settings": { + "AutoTelemetrySettings": { + "Region": "location" + }, + "AutoPatchingSettings": { + "PatchCategory": "WindowsMandatoryUpdates", + "Enable": "autoPatchingEnable", + "DayOfWeek": "string(variables(parameters(autoPatchingDay)))", + "MaintenanceWindowStartingHour": "[mod(add(int(parameters('autoPatchingStartHour')),2),24)]", + "MaintenanceWindowDuration": "60" + }, + "AutoBackupSettings": { + "Enable": false, + "RetentionPeriod": "30", + "EnableEncryption": false + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVMName0/sqlAOPrepare", + "apiVersion": "2021-07-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/sqlwVMName/CreateFileShareWitness", + "Microsoft.Compute/virtualMachines/extensions/sqlVMName0/SqlVmIaasExtension" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.75", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesURL": "sqlAOPrepareModulesURL", + "configurationFunction": "sqlAOPrepareConfigurationFunction", + "properties": { + "domainName": "domainName", + "sqlAlwaysOnEndpointName": "sqlAOEPName", + "adminCreds": { + "userName": "adminUsername", + "password": "privateSettingsRef:AdminPassword" + }, + "sqlServiceCreds": { + "userName": "sqlServerServiceAccountUserName", + "password": "privateSettingsRef:SqlServerServiceAccountPassword" + }, + "NumberOfDisks": "numberOfDisks", + "WorkloadType": "workloadType" + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword", + "sqlServerServiceAccountPassword": "sqlServerServiceAccountPassword" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT543 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT543 new file mode 100644 index 0000000..6734f91 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT543 @@ -0,0 +1,182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/provisioningNetworkStorageAGSet.json" + ], + "timestamp": 1642962896514, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/provisioningNetworkStorageAGSet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT543", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT543", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlStorageAccountName": { + "type": "string" + }, + "dcStorageAccountName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "SqlStorageAccountType": { + "type": "string" + }, + "DcStorageAccountType": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "virtualNetworkAddressRange": { + "type": "string" + }, + "subnets": { + "type": "array" + }, + "rdpIPAddressName": { + "type": "string" + }, + "rdpLBName": { + "type": "string" + }, + "rdpLBFE": { + "type": "string" + }, + "adLBBE": { + "type": "string" + }, + "RDPNAT": { + "type": "string" + }, + "rdplbFEConfigID": { + "type": "string" + } + }, + "resources": [ + { + "name": "sqlStorageAccountName", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "SqlStorageAccountType" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "dcStorageAccountName", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "DcStorageAccountType" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat(uniquestring(parameters('sqlStorageAccountName')), 'fsw')]", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat(uniquestring(parameters('sqlStorageAccountName')), 'diag')]", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "rdpIPAddressName", + "location": "location", + "properties": { + "publicIPAllocationMethod": "dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "name": "rdpLBName", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/rdpIPAddressName" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "rdpLBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/rdpIPAddressName" + } + } + } + ], + "backendAddressPools": [ + { + "name": "adLBBE" + } + ], + "inboundNatRules": [ + { + "name": "RDPNAT", + "properties": { + "frontendIPConfiguration": { + "id": "rdplbFEConfigID" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressRange" + ] + }, + "subnets": "subnets" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT548 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT548 new file mode 100644 index 0000000..ef66620 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT548 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/publicip-rdp.json" + ], + "timestamp": 1642962896577, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/publicip-rdp.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT548", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT548", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "rdpIPAddressName": { + "type": "string" + }, + "rdpLBName": { + "type": "string" + }, + "rdpLBFE": { + "type": "string" + }, + "adLBBE": { + "type": "string" + }, + "RDPNAT": { + "type": "string" + }, + "rdplbFEConfigID": { + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "rdpIPAddressName", + "location": "location", + "properties": { + "publicIPAllocationMethod": "dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "name": "rdpLBName", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/rdpIPAddressName" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "rdpLBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/rdpIPAddressName" + } + } + } + ], + "backendAddressPools": [ + { + "name": "adLBBE" + } + ], + "inboundNatRules": [ + { + "name": "RDPNAT", + "properties": { + "frontendIPConfiguration": { + "id": "rdplbFEConfigID" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + } + ], + "outputs": { + "resourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('rdpIPAddressName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT549 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT549 new file mode 100644 index 0000000..875a6a2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT549 @@ -0,0 +1,123 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/setupLBs.json" + ], + "timestamp": 1642962896585, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/setupLBs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT549", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT549", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "sqlLBName": { + "type": "string" + }, + "sqlLBFE": { + "type": "string" + }, + "sqlLBIPAddress": { + "type": "string" + }, + "staticSubnetRef": { + "type": "string" + }, + "sqlLBBE": { + "type": "string" + }, + "sqlLBBEID": { + "type": "string" + }, + "sqllbFEConfigID": { + "type": "string" + }, + "sqllbProbeID": { + "type": "string" + }, + "SQLAOProbe": { + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "name": "sqlLBName", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "properties": { + "frontendIPConfigurations": [ + { + "name": "sqlLBFE", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "sqlLBIPAddress", + "subnet": { + "id": "staticSubnetRef" + } + } + } + ], + "backendAddressPools": [ + { + "name": "sqlLBBE" + } + ], + "loadBalancingRules": [ + { + "name": "SQLAlwaysOnEndPointListener", + "properties": { + "backendAddressPool": { + "id": "sqlLBBEID" + }, + "frontendIPConfiguration": { + "id": "sqllbFEConfigID" + }, + "probe": { + "id": "sqllbProbeID" + }, + "protocol": "Tcp", + "frontendPort": 1433, + "backendPort": 1433, + "enableFloatingIP": true + } + } + ], + "probes": [ + { + "name": "SQLAOProbe", + "properties": { + "protocol": "Tcp", + "port": 59999, + "intervalInSeconds": "5", + "numberOfProbes": "2" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT55 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT55 new file mode 100644 index 0000000..134615c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT55 @@ -0,0 +1,238 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/networkSecurityGroupsResource.json" + ], + "timestamp": 1642962884333, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/networkSecurityGroupsResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT55", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT55", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "securityRules": [ + { + "name": "no-other-inbound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Deny", + "priority": 4096, + "direction": "Inbound" + } + }, + { + "name": "allow-internet-ssh-admin", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "allow-internet-to-fe-http", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "allow-internet-to-fe-https", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "allow-ssh-admin", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 999, + "direction": "Inbound" + } + } + ] + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "securityRules": [ + { + "name": "no-other-inbound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Deny", + "priority": 4096, + "direction": "Inbound" + } + }, + { + "name": "allow-ssh-admin", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 999, + "direction": "Inbound" + } + }, + { + "name": "allow-etcd", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "2379", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "allow-postgresql", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "5432", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "allow-leaderl", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7331", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "allow-elasticsearch", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9200", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 140, + "direction": "Inbound" + } + }, + { + "name": "allow-elasticsearch-peer", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9300", + "sourceAddressPrefix": "networkSettings", + "destinationAddressPrefix": "networkSettings", + "access": "Allow", + "priority": 141, + "direction": "Inbound" + } + }, + { + "name": "allow-etcd-peer", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "2380", + "sourceAddressPrefix": "networkSettings", + "destinationAddressPrefix": "networkSettings", + "access": "Allow", + "priority": 111, + "direction": "Inbound" + } + } + ] + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT550 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT550 new file mode 100644 index 0000000..65b3a26 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT550 @@ -0,0 +1,162 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/storageAccountVirtualNetworkPublicIP.json" + ], + "timestamp": 1642962896593, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/storageAccountVirtualNetworkPublicIP.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT550", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT550", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlStorageAccountName": { + "type": "string" + }, + "dcStorageAccountName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "SqlStorageAccountType": { + "type": "string" + }, + "DcStorageAccountType": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "virtualNetworkAddressRange": { + "type": "string" + }, + "subnets": { + "type": "array" + }, + "primaryDCIPAddressNameWithSuffix": { + "type": "string" + }, + "backupDCIPAddressNameWithSuffix": { + "type": "string" + }, + "sql1AddressNameWithSuffix": { + "type": "string" + }, + "sql0AddressNameWithSuffix": { + "type": "string" + } + }, + "resources": [ + { + "name": "sqlStorageAccountName", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "SqlStorageAccountType" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "dcStorageAccountName", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "DcStorageAccountType" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat(uniquestring(parameters('sqlStorageAccountName')), 'fsw')]", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat(uniquestring(parameters('sqlStorageAccountName')), 'diag')]", + "apiVersion": "2021-01-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "primaryDCIPAddressNameWithSuffix", + "location": "location", + "properties": { + "publicIPAllocationMethod": "dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "backupDCIPAddressNameWithSuffix", + "location": "location", + "properties": { + "publicIPAllocationMethod": "dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "sql1AddressNameWithSuffix", + "location": "location", + "properties": { + "publicIPAllocationMethod": "dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "sql0AddressNameWithSuffix", + "location": "location", + "properties": { + "publicIPAllocationMethod": "dynamic" + } + }, + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressRange" + ] + }, + "subnets": "subnets" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT551 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT551 new file mode 100644 index 0000000..3ba7a9d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT551 @@ -0,0 +1,63 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/vnet-new.json" + ], + "timestamp": 1642962896600, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/vnet-new.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT551", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT551", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "virtualNetworkAddressRange": { + "type": "string" + }, + "subnets": { + "type": "array" + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressRange" + ] + }, + "subnets": "subnets" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT552 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT552 new file mode 100644 index 0000000..b726049 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT552 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/vnet-with-dns-server.json" + ], + "timestamp": 1642962896607, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/nested/vnet-with-dns-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT552", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT552", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The region to deploy the resources into" + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Network" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the VNET in CIDR format" + }, + "defaultValue": "10.0.0.0/16" + }, + "subnets": { + "type": "array", + "metadata": { + "description": "The subnet definition for the VNET" + } + }, + "DNSServerAddress": { + "type": "array", + "metadata": { + "description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-07-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "dhcpOptions": { + "dnsServers": "DNSServerAddress" + }, + "subnets": "subnets" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT553 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT553 new file mode 100644 index 0000000..47ad660 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT553 @@ -0,0 +1,1127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/azuredeploy.json", + "/application-workloads/sql/sqlvm-alwayson-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962896619, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-alwayson-cluster/azuredeploy.json", + "/application-workloads/sql/sqlvm-alwayson-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT553", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT553", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the Administrator of the new VMs and Domain" + }, + "value": "alwaysonadmin" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account of the new VMs and Domain" + }, + "value": "GEN-PASSWORD" + }, + "adVMSize": { + "type": "string", + "metadata": { + "description": "The size of the AD VMs Created" + }, + "defaultValue": "Standard_D2_v3", + "value": "Standard_D2s_v3" + }, + "sqlVMSize": { + "type": "string", + "metadata": { + "description": "The size of the SQL VMs Created" + }, + "defaultValue": "Standard_D8s_v3", + "value": "Standard_D2s_v3" + }, + "witnessVMSize": { + "type": "string", + "metadata": { + "description": "The size of the Witness VM Created" + }, + "defaultValue": "Standard_D2s_v3", + "value": "Standard_D2s_v3" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "The FQDN of the AD Domain created " + }, + "defaultValue": "contoso.local", + "value": "alwayson.local" + }, + "sqlServerServiceAccountUserName": { + "type": "string", + "metadata": { + "description": "The SQL Server Service Account name" + }, + "defaultValue": "sqlservice", + "value": "sqlservice" + }, + "sqlServerServiceAccountPassword": { + "type": "securestring", + "metadata": { + "description": "The SQL Server Service Account password" + }, + "value": "GEN-PASSWORD" + }, + "sqlStorageAccountName": { + "type": "string", + "metadata": { + "description": "The name of Sql Server Storage Account" + }, + "value": "GEN-UNIQUE" + }, + "sqlStorageAccountType": { + "type": "string", + "allowedValues": [ + "Premium_LRS" + ], + "metadata": { + "description": "The type of the Sql Server Storage Account created" + }, + "defaultValue": "Premium_LRS", + "value": "Premium_LRS" + }, + "dcStorageAccountName": { + "type": "string", + "metadata": { + "description": "The name of DC Storage Account" + }, + "value": "GEN-UNIQUE" + }, + "dcStorageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "The type of the DC Storage Account created" + }, + "defaultValue": "Standard_LRS", + "value": "Standard_LRS" + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new VNET in CIDR format" + }, + "defaultValue": "10.0.0.0/16", + "value": "10.0.0.0/16" + }, + "staticSubnet": { + "type": "string", + "metadata": { + "description": "The address range of the subnet static IPs are allocated from in the new VNET" + }, + "defaultValue": "10.0.0.0/24", + "value": "10.0.0.0/24" + }, + "sqlSubnet": { + "type": "string", + "metadata": { + "description": "The address range of the SQL subnet created in the new VNET" + }, + "defaultValue": "10.0.1.0/26", + "value": "10.0.1.0/26" + }, + "adPDCNICIPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the new AD VM" + }, + "defaultValue": "10.0.0.4" + }, + "adBDCNICIPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the new backup AD VM" + }, + "defaultValue": "10.0.0.5" + }, + "sqlLBIPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the new SQL Server Internal Load Balancer" + }, + "defaultValue": "10.0.1.9" + }, + "deploymentPrefix": { + "type": "string", + "metadata": { + "description": "The DNS Prefix for the Public IP Address for the Always On Cluster" + }, + "defaultValue": "aodns" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of virtual network to be created" + }, + "defaultValue": "autohav2VNET" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "autoPatchingDay": { + "type": "string", + "metadata": { + "description": "The day of a week for auto patching" + }, + "defaultValue": "Sunday", + "value": "Sunday" + }, + "autoPatchingStartHour": { + "type": "string", + "metadata": { + "description": "The start hour of a day for auto patching" + }, + "defaultValue": "2", + "value": "2" + }, + "sqlAOAGName": { + "type": "string", + "metadata": { + "description": "The Sql AlwaysOn Group Name" + }, + "defaultValue": "alwayson-ag", + "value": "GEN-UNIQUE" + }, + "sqlAOListenerPort": { + "type": "string", + "metadata": { + "description": "The Sql AG Listener port" + }, + "defaultValue": "1433", + "value": "1433" + }, + "sqlAOListenerName": { + "type": "string", + "metadata": { + "description": "The Sql AG Listener Name" + }, + "defaultValue": "alwayson-ag-listener", + "value": "GEN-UNIQUE" + }, + "sqlServerVersion": { + "type": "string", + "metadata": { + "description": "The Sql Server Version" + }, + "defaultValue": "SQL2014SP2-WS2012R2", + "value": "SQL2014SP2-WS2012R2" + }, + "numberOfSqlVMDisks": { + "type": "string", + "allowedValues": [ + "1", + "2", + "3", + "4" + ], + "metadata": { + "description": "The Sql VM Disk Size" + }, + "defaultValue": "2", + "value": "2" + }, + "workloadType": { + "type": "string", + "allowedValues": [ + "GENERAL", + "OLTP", + "DW" + ], + "metadata": { + "description": "The Sql VM work load type: GENERAL - general work load; DW - datawear house work load; OLTP - Transactional processing work load" + }, + "defaultValue": "GENERAL", + "value": "OLTP" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "lbSettings": { + "rdpLBFE": "rdpLBFE", + "sqlLBFE": "sqlLBFE", + "adLBBE": "adLBBE", + "sqlLBBE": "sqlLBBE", + "rdpLBName": "rdpLoadBalancer", + "sqlLBName": "sqlLoadBalancer" + }, + "subnetNames": { + "staticSubnetName": "staticSubnet", + "sqlSubnetName": "sqlSubnet" + }, + "RDPNAT": "RDP", + "SQLAOProbe": "SQLAlwaysOnEndPointProbe", + "primaryDCIPAddressName": "primaryDCIP", + "backupDCIPAddressName": "backupDCIP", + "sql1AddressName": "sql1IP", + "sql0AddressName": "sql0IP", + "vmSettings": { + "availabilitySets": { + "sqlAvailabilitySetName": "sqlAvailabilitySet", + "adAvailabilitySetName": "adAvailabilitySet" + }, + "noOfSqlVMs": 2, + "vmContainerName": "vhds", + "adPDCVMName": "ad-primary-dc", + "adBDCVMName": "ad-secondary-dc", + "sqlVMName": "sqlserver-", + "sqlwVMName": "cluster-fsw", + "windowsImagePublisher": "MicrosoftWindowsServer", + "windowsImageOffer": "WindowsServer", + "windowsImageSKU": "2012-R2-Datacenter", + "sqlImagePublisher": "MicrosoftSQLServer", + "sqlImageOffer": "SQL2014SP2-WS2012R2", + "rdpPort": 3389, + "windowsDiskSize": 128, + "sqlDiskSize": 1000 + }, + "sqlAOEPName": "aodns-hadr", + "sharePath": "aodns-fsw", + "clusterName": "aodns-fc", + "adPDCNicName": "(vmSettings).adPDCVMName-nic", + "adBDCNicName": "(vmSettings).adBDCVMName-nic", + "sqlwNicName": "(vmSettings).sqlwVMName-nic", + "staticSubnetRef": "Microsoft.Network/virtualNetworks/subnets//[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]/(subnetNames).staticSubnetName", + "sqlSubnetRef": "Microsoft.Network/virtualNetworks/subnets//[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]/(subnetNames).sqlSubnetName", + "derivedIds": { + "adIPConfigID": "Microsoft.Network/networkInterfaces/ipConfigurations/(vmSettings).adPDCVMName-nic/ipconfig1", + "rdplbFEConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/(lbSettings).rdpLBName/(lbSettings).rdpLBFE", + "adRDPNATRuleID": "Microsoft.Network/loadBalancers/inboundNatRules/(lbSettings).rdpLBName/RDP", + "adBEAddressPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/(lbSettings).rdpLBName/(lbSettings).adLBBE", + "sqlBEAddressPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/(lbSettings).sqlLBName/(lbSettings).sqlLBBE", + "sqllbFEConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/(lbSettings).sqlLBName/(lbSettings).sqlLBFE", + "sqllbProbeID": "Microsoft.Network/loadBalancers/probes/(lbSettings).sqlLBName/SQLAlwaysOnEndPointProbe" + }, + "SQL2012SP2-WS2012R2": "Enterprise", + "SQL2012SP3-WS2012R2": "Enterprise", + "SQL2014-WS2012R2": "Enterprise", + "SQL2014SP2-WS2012R2": "Enterprise", + "SQL2016-WS2012R2": "Enterprise", + "SQL2017-WS2016": "Enterprise", + "sql2019-ws2019": "Enterprise", + "sql2019-ws2022": "Enterprise", + "Monday": true, + "Tuesday": true, + "Wednesday": true, + "Thursday": true, + "Friday": true, + "Saturday": true, + "Sunday": true, + "Never": false, + "Everyday": true, + "subnets": [ + { + "name": "(subnetNames).staticSubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "(subnetNames).sqlSubnetName", + "properties": { + "addressPrefix": "10.0.1.0/26" + } + } + ], + "virtualNetworkNameWithSuffix": "[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]", + "primaryDCIPAddressNameWithSuffix": "[substring(concat(variables('primaryDCIPAddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]", + "backupDCIPAddressNameWithSuffix": "[substring(concat(variables('backupDCIPAddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]", + "sql1AddressNameWithSuffix": "[substring(concat(variables('sql1AddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]", + "sql0AddressNameWithSuffix": "[substring(concat(variables('sql0AddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]", + "configuration": { + "vnetwithDNSTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nested/vnet-with-dns-server.json', parameters('_artifactsLocationSasToken')))]", + "nicTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nested/nic.json', parameters('_artifactsLocationSasToken')))]", + "rdpIPAdressSetupURL": "[uri(parameters('_artifactsLocation'), concat('nested/publicip-rdp.json', parameters('_artifactsLocationSasToken')))]", + "vnetSetupURL": "[uri(parameters('_artifactsLocation'), concat('nested/vnet-new.json', parameters('_artifactsLocationSasToken')))]", + "setupLBsUrl": "[uri(parameters('_artifactsLocation'), concat('nested/setupLBs.json', parameters('_artifactsLocationSasToken')))]", + "creatingNicsUrl": "[uri(parameters('_artifactsLocation'), concat('nested/creatingNICS.json', parameters('_artifactsLocationSasToken')))]", + "storageAccountVirtualNetworkPublicIP": "[uri(parameters('_artifactsLocation'), concat('nested/storageAccountVirtualNetworkPublicIP.json', parameters('_artifactsLocationSasToken')))]", + "provisioningVMs": "[uri(parameters('_artifactsLocation'), concat('nested/provisioningVM', parameters('numberOfSqlVMDisks'),'.json', parameters('_artifactsLocationSasToken')))]", + "configuringBackupADVM": "[uri(parameters('_artifactsLocation'), concat('nested/configuringBackupADVM.json', parameters('_artifactsLocationSasToken')))]", + "preparingAlwaysOnSqlServer": "[uri(parameters('_artifactsLocation'), concat('nested/preparingSqlServer.json', parameters('_artifactsLocationSasToken')))]", + "configuringAlwaysOn": "[uri(parameters('_artifactsLocation'), concat('nested/configuringAlwaysOn.json', parameters('_artifactsLocationSasToken')))]", + "adPDCModulesURL": "[uri(parameters('_artifactsLocation'),concat('scripts/CreateADPDC.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "adPDCConfigurationFunction": "CreateADPDC.ps1\\CreateADPDC", + "adBDCModulesURL": "[uri(parameters('_artifactsLocation'), concat('scripts/CreateADBDC.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "adBDCConfigurationFunction": "CreateADBDC.ps1\\CreateADBDC", + "fswModulesURL": "[uri(parameters('_artifactsLocation'), concat('scripts/CreateFileShareWitness.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "fswConfigurationFunction": "CreateFileShareWitness.ps1\\CreateFileShareWitness", + "sqlAOPrepareModulesURL": "[uri(parameters('_artifactsLocation'), concat('scripts/PrepareAlwaysOnSqlServer.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "sqlAOPrepareConfigurationFunction": "PrepareAlwaysOnSqlServer.ps1\\PrepareAlwaysOnSqlServer", + "createClusterModulesURL": "[uri(parameters('_artifactsLocation'), concat('scripts/CreateFailoverCluster.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "createClusterConfigurationFunction": "CreateFailoverCluster.ps1\\CreateFailoverCluster" + } + }, + "resources": [ + { + "name": "StorageAccountVirtualNetworkPublicIP", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "comments": "This resource will create storage accounts for Active Directory, SQL Server, File Share Witness and Diagnostics. It will also create the Virtual Network and public IP addresses", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).storageAccountVirtualNetworkPublicIP", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "sqlStorageAccountName": { + "value": "GEN-UNIQUE" + }, + "dcStorageAccountName": { + "value": "GEN-UNIQUE" + }, + "SqlStorageAccountType": { + "value": "Premium_LRS" + }, + "DcStorageAccountType": { + "value": "Standard_LRS" + }, + "primaryDCIPAddressNameWithSuffix": { + "value": "[substring(concat(variables('primaryDCIPAddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "backupDCIPAddressNameWithSuffix": { + "value": "[substring(concat(variables('backupDCIPAddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "sql1AddressNameWithSuffix": { + "value": "[substring(concat(variables('sql1AddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "sql0AddressNameWithSuffix": { + "value": "[substring(concat(variables('sql0AddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "virtualNetworkName": { + "value": "[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnets": { + "value": [ + { + "name": "(subnetNames).staticSubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "(subnetNames).sqlSubnetName", + "properties": { + "addressPrefix": "10.0.1.0/26" + } + } + ] + } + } + } + }, + { + "name": "LoadBalancers", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "comments": "Create Load Balancers for SQL and DC", + "dependsOn": [ + "Microsoft.Resources/deployments/StorageAccountVirtualNetworkPublicIP" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).setupLBsUrl", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "sqlLBName": { + "value": "(lbSettings).sqlLBName" + }, + "sqlLBFE": { + "value": "(lbSettings).sqlLBFE" + }, + "sqlLBIPAddress": { + "value": "10.0.1.9" + }, + "staticSubnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets//[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]/(subnetNames).sqlSubnetName" + }, + "sqlLBBE": { + "value": "(lbSettings).sqlLBBE" + }, + "sqlLBBEID": { + "value": "(derivedIds).sqlBEAddressPoolID" + }, + "sqllbFEConfigID": { + "value": "(derivedIds).sqllbFEConfigID" + }, + "sqllbProbeID": { + "value": "(derivedIds).sqllbProbeID" + }, + "SQLAOProbe": { + "value": "SQLAlwaysOnEndPointProbe" + } + } + } + }, + { + "name": "CreatingNetworkInterfaces", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/LoadBalancers" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).creatingNicsUrl", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "adPDCNicName": { + "value": "(vmSettings).adPDCVMName-nic" + }, + "adPDCNICIPAddress": { + "value": "10.0.0.4" + }, + "staticSubnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets//[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]/(subnetNames).staticSubnetName" + }, + "adBEAddressPoolID": { + "value": "(derivedIds).adBEAddressPoolID" + }, + "adRDPNATRuleID": { + "value": "(derivedIds).adRDPNATRuleID" + }, + "adBDCNicName": { + "value": "(vmSettings).adBDCVMName-nic" + }, + "adBDCNICIPAddress": { + "value": "10.0.0.5" + }, + "sqlVMName": { + "value": "(vmSettings).sqlVMName" + }, + "sqlSubnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets//[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]/(subnetNames).sqlSubnetName" + }, + "sqlBEAddressPoolID": { + "value": "(derivedIds).sqlBEAddressPoolID" + }, + "sqlwNicName": { + "value": "(vmSettings).sqlwVMName-nic" + }, + "primaryDCIPAddressNameWithSuffix": { + "value": "[substring(concat(variables('primaryDCIPAddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "backupDCIPAddressNameWithSuffix": { + "value": "[substring(concat(variables('backupDCIPAddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "sql1AddressNameWithSuffix": { + "value": "[substring(concat(variables('sql1AddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "sql0AddressNameWithSuffix": { + "value": "[substring(concat(variables('sql0AddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + } + } + } + }, + { + "name": "ProvisioningVMs", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/CreatingNetworkInterfaces" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).provisioningVMs", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adPDCVMName": { + "value": "(vmSettings).adPDCVMName" + }, + "adAvailabilitySetName": { + "value": "(vmSettings).availabilitySets.adAvailabilitySetName" + }, + "sqlAvailabilitySetName": { + "value": "(vmSettings).availabilitySets.sqlAvailabilitySetName" + }, + "sqlStorageAccountName": { + "value": "GEN-UNIQUE" + }, + "dcStorageAccountName": { + "value": "GEN-UNIQUE" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adVMSize": { + "value": "Standard_D2s_v3" + }, + "adminUsername": { + "value": "alwaysonadmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "adImagePublisher": { + "value": "(vmSettings).windowsImagePublisher" + }, + "adImageOffer": { + "value": "(vmSettings).windowsImageOffer" + }, + "adImageSKU": { + "value": "(vmSettings).windowsImageSKU" + }, + "vmContainerName": { + "value": "(vmSettings).vmContainerName" + }, + "adPDCNicName": { + "value": "(vmSettings).adPDCVMName-nic" + }, + "domainName": { + "value": "alwayson.local" + }, + "adPDCConfigurationFunction": { + "value": "(configuration).adPDCConfigurationFunction" + }, + "adPDCModulesURL": { + "value": "(configuration).adPDCModulesURL" + }, + "adBDCVMName": { + "value": "(vmSettings).adBDCVMName" + }, + "adBDCNicName": { + "value": "(vmSettings).adBDCVMName-nic" + }, + "sqlVMName": { + "value": "(vmSettings).sqlVMName" + }, + "sqlVMSize": { + "value": "Standard_D2s_v3" + }, + "fswImagePublisher": { + "value": "(vmSettings).windowsImagePublisher" + }, + "fswImageOffer": { + "value": "(vmSettings).windowsImageOffer" + }, + "fswImageSKU": { + "value": "(vmSettings).windowsImageSKU" + }, + "sqlImagePublisher": { + "value": "(vmSettings).sqlImagePublisher" + }, + "sqlImageOffer": { + "value": "(vmSettings).sqlImageOffer" + }, + "sqlImageSKU": { + "value": "parameters(sqlServerVersion)" + }, + "witnessVMSize": { + "value": "Standard_D2s_v3" + }, + "sqlwVMName": { + "value": "(vmSettings).sqlwVMName" + }, + "sqlwNicName": { + "value": "(vmSettings).sqlwVMName-nic" + } + } + } + }, + { + "name": "UpdatingDNStoPrimaryADVM", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/ProvisioningVMs" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).vnetwithDNSTemplateURL", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnets": { + "value": [ + { + "name": "(subnetNames).staticSubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "(subnetNames).sqlSubnetName", + "properties": { + "addressPrefix": "10.0.1.0/26" + } + } + ] + }, + "DNSServerAddress": { + "value": [ + "10.0.0.4" + ] + } + } + } + }, + { + "name": "ConfiguringBackupADVM", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/ProvisioningVMs" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).configuringBackupADVM", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "adBDCVMName": { + "value": "(vmSettings).adBDCVMName" + }, + "adminUsername": { + "value": "alwaysonadmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "domainName": { + "value": "alwayson.local" + }, + "adBDCConfigurationFunction": { + "value": "(configuration).adBDCConfigurationFunction" + }, + "adBDCModulesURL": { + "value": "(configuration).adBDCModulesURL" + } + } + } + }, + { + "name": "UpdatingDNSwithBackupADVM", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/ConfiguringBackupADVM" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).vnetwithDNSTemplateURL", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnets": { + "value": [ + { + "name": "(subnetNames).staticSubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "(subnetNames).sqlSubnetName", + "properties": { + "addressPrefix": "10.0.1.0/26" + } + } + ] + }, + "DNSServerAddress": { + "value": [ + "10.0.0.4", + "10.0.0.5" + ] + } + } + } + }, + { + "name": "UpdatingSQLWNic", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/UpdatingDNStoPrimaryADVM" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).nicTemplateURL", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "nicName": { + "value": "(vmSettings).sqlwVMName-nic" + }, + "ipConfigurations": { + "value": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]/(subnetNames).sqlSubnetName" + } + } + } + ] + }, + "dnsServers": { + "value": [ + "10.0.0.4", + "10.0.0.5" + ] + } + } + } + }, + { + "name": "UpdatingSQL0Nic", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/UpdatingSQLWNic" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).nicTemplateURL", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "nicName": { + "value": "(vmSettings).sqlVMName0-nic" + }, + "ipConfigurations": { + "value": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]/(subnetNames).sqlSubnetName" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/[substring(concat(variables('sql0AddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "(derivedIds).sqlBEAddressPoolID" + } + ] + } + } + ] + }, + "dnsServers": { + "value": [ + "10.0.0.4", + "10.0.0.5" + ] + } + } + } + }, + { + "name": "UpdatingSQL1Nic", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/UpdatingSQL0Nic" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).nicTemplateURL", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "nicName": { + "value": "(vmSettings).sqlVMName1-nic" + }, + "ipConfigurations": { + "value": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//[substring(concat(parameters('virtualNetworkName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]/(subnetNames).sqlSubnetName" + }, + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/[substring(concat(variables('sql1AddressName'), uniqueString(parameters('sqlStorageAccountName'),parameters('dcStorageAccountName'))),0,15)]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "(derivedIds).sqlBEAddressPoolID" + } + ] + } + } + ] + }, + "dnsServers": { + "value": [ + "10.0.0.4", + "10.0.0.5" + ] + } + } + } + }, + { + "name": "PreparingAlwaysOnSqlServer", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/UpdatingSQL0Nic" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).preparingAlwaysOnSqlServer", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "sqlVMName": { + "value": "(vmSettings).sqlVMName" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "alwaysonadmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "domainName": { + "value": "alwayson.local" + }, + "sqlAOPrepareModulesURL": { + "value": "(configuration).sqlAOPrepareModulesURL" + }, + "sqlAOPrepareConfigurationFunction": { + "value": "(configuration).sqlAOPrepareConfigurationFunction" + }, + "sqlAOEPName": { + "value": "aodns-hadr" + }, + "sqlServerServiceAccountUserName": { + "value": "sqlservice" + }, + "sqlServerServiceAccountPassword": { + "value": "GEN-PASSWORD" + }, + "sharePath": { + "value": "aodns-fsw" + }, + "adPDCVMName": { + "value": "(vmSettings).adPDCVMName" + }, + "sqlwVMName": { + "value": "(vmSettings).sqlwVMName" + }, + "fswModulesURL": { + "value": "(configuration).fswModulesURL" + }, + "fswConfigurationFunction": { + "value": "(configuration).fswConfigurationFunction" + }, + "autoPatchingDay": { + "value": "Sunday" + }, + "autoPatchingStartHour": { + "value": "2" + }, + "autoPatchingEnable": { + "value": "parameters(autoPatchingDay)" + }, + "numberOfDisks": { + "value": "2" + }, + "workloadType": { + "value": "OLTP" + } + } + } + }, + { + "name": "ConfiguringAlwaysOn", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/PreparingAlwaysOnSqlServer" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(configuration).configuringAlwaysOn", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "sqlVMName": { + "value": "(vmSettings).sqlVMName" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "alwaysonadmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "domainName": { + "value": "alwayson.local" + }, + "sqlAOEPName": { + "value": "aodns-hadr" + }, + "sqlServerServiceAccountUserName": { + "value": "sqlservice" + }, + "sqlServerServiceAccountPassword": { + "value": "GEN-PASSWORD" + }, + "createClusterModulesURL": { + "value": "(configuration).createClusterModulesURL" + }, + "createClusterConfigurationFunction": { + "value": "(configuration).createClusterConfigurationFunction" + }, + "clusterName": { + "value": "aodns-fc" + }, + "sharePath": { + "value": "aodns-fsw" + }, + "sqlAOAGName": { + "value": "GEN-UNIQUE" + }, + "sqlAOListenerName": { + "value": "GEN-UNIQUE" + }, + "sqlAOListenerPort": { + "value": "1433" + }, + "sqlLBName": { + "value": "(lbSettings).sqlLBName" + }, + "sqlLBIPAddress": { + "value": "10.0.1.9" + }, + "adPDCVMName": { + "value": "(vmSettings).adPDCVMName" + }, + "sqlwVMName": { + "value": "(vmSettings).sqlwVMName" + }, + "numberOfDisks": { + "value": "2" + }, + "workloadType": { + "value": "OLTP" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT554 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT554 new file mode 100644 index 0000000..fca9555 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT554 @@ -0,0 +1,307 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/sqlvm-provisioning-csp/azuredeploy.json", + "/application-workloads/sql/sqlvm-provisioning-csp/azuredeploy.parameters.json" + ], + "timestamp": 1642962896641, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/sqlvm-provisioning-csp/azuredeploy.json", + "/application-workloads/sql/sqlvm-provisioning-csp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT554", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT554", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "SQL IaaS VM machine name" + }, + "value": "GEN-UNIQUE-13" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "SQL IaaS VM size. Use Azure VM size name from MSDN" + }, + "value": "Standard_A2" + }, + "sqlImageOffer": { + "type": "string", + "defaultValue": "sql2019-ws2019", + "allowedValues": [ + "sql2019-ws2019", + "sql2019-ws2016" + ], + "metadata": { + "description": "SQL Server Gallery Image Offer" + } + }, + "sqlImageSku": { + "type": "string", + "defaultValue": "Enterprise", + "allowedValues": [ + "Enterprise", + "Standard", + "Web" + ], + "metadata": { + "description": "SQL Server Gallery Image SKU" + } + }, + "sqlImageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "SQL Server Gallery Image Published Version" + } + }, + "username": { + "type": "string", + "metadata": { + "description": "SQL IaaS VM local administrator username" + }, + "value": "GEN-UNIQUE" + }, + "password": { + "type": "securestring", + "metadata": { + "description": "SQL IaaS VM local administrator password" + }, + "value": "GEN-PASSWORD" + }, + "storageName": { + "type": "string", + "metadata": { + "description": "SQL IaaS VM data and OS disks storage service" + }, + "value": "GEN-UNIQUE" + }, + "storageType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "SQL IaaS VM data and OS disks storage type" + } + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "SQL IaaS VM virtual network name" + }, + "value": "GEN-VNET-NAME" + }, + "networkAddressSpace": { + "type": "string", + "defaultValue": "10.10.0.0/26", + "metadata": { + "description": "SQL IaaS VM virtual network IPv4 address space" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "SQL IaaS VM virtual network subnet name" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "subnetAddressPrefix": { + "type": "string", + "defaultValue": "10.10.0.0/28", + "metadata": { + "description": "SQL IaaS VM virtual network subnet IPv4 address prefix" + } + }, + "publicDnsName": { + "type": "string", + "metadata": { + "description": "DNS name for the VM" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vmnic": "GEN-UNIQUE-13devnic", + "vmosdisk": "GEN-UNIQUE-13osdisk", + "vnetSubNetID": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "networkSecurityGroupName": "GEN-VNET-SUBNET1-NAME-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [parameters('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "GEN-VNET-SUBNET1-NAME-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-VNET-SUBNET1-NAME-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.0.0/26" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.10.0.0/28", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-VNET-SUBNET1-NAME-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-13devnic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE", + "Microsoft.Network/virtualNetworks//GEN-VNET-NAME" + ], + "properties": { + "ipConfigurations": [ + { + "name": "devipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-13", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-13devnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-13", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "sql2019-ws2019", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-13osdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-13devnic" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT555 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT555 new file mode 100644 index 0000000..040b70d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT555 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/nested/preparingSqlServerSa.json" + ], + "timestamp": 1642962896684, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/nested/preparingSqlServerSa.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT555", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT555", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlVMName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "sqlUsername": { + "type": "string" + }, + "sqlPassword": { + "type": "securestring" + }, + "disksCount": { + "type": "int" + }, + "diskSizeInGB": { + "type": "int" + }, + "sqlEnginePort": { + "type": "int" + }, + "workloadType": { + "type": "string" + }, + "connectionType": { + "type": "string" + }, + "sqlVMPrepareModulesURL": { + "type": "string" + }, + "sqlVMPrepareConfigurationFunction": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "sqlVMName/dscExtension", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": false, + "settings": { + "ModulesUrl": "sqlVMPrepareModulesURL", + "ConfigurationFunction": "sqlVMPrepareConfigurationFunction", + "properties": { + "SQLAdminAuthCreds": { + "userName": "adminUsername", + "Password": "privateSettingsRef:AdminPassword" + }, + "SQLAuthCreds": { + "userName": "sqlUsername", + "Password": "privateSettingsRef:SqlAuthPassword" + }, + "DisksCount": "disksCount", + "DiskSizeInGB": "diskSizeInGB", + "DatabaseEnginePort": "sqlEnginePort", + "WorkloadType": "workloadType", + "ConnectionType": "connectionType" + } + }, + "protectedSettings": { + "items": { + "AdminPassword": "adminPassword", + "SqlAuthPassword": "sqlPassword" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT556 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT556 new file mode 100644 index 0000000..acb925e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT556 @@ -0,0 +1,152 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/prereqs/prereq.azuredeploy.json", + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962896694, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/prereqs/prereq.azuredeploy.json", + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT556", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT556", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the KeyVault, this value must be globally unique." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + }, + "accessPolicies": { + "type": "array", + "metadata": { + "description": "Access policies of the Key Vault." + }, + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ], + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ] + } + } + ] + }, + "tenantId": { + "type": "string", + "metadata": { + "description": "Tenant ID for the Key Vault." + }, + "value": "GEN-AZUREAD-AKS-TENANTID" + } + }, + "resources": [ + { + "name": "vault-prereq", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "accessPolicies": { + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "secrets": [ + "list", + "get", + "set" + ], + "keys": [ + "list", + "get", + "decrypt", + "encrypt", + "unwrapkey", + "wrapkey" + ] + } + } + ] + }, + "vaultName": { + "value": "[concat('keyvault-', uniqueString(resourceGroup().id))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "enabledForDeployment": { + "value": true + }, + "enabledForDiskEncryption": { + "value": true + }, + "enabledForTemplateDeployment": { + "value": true + }, + "tenantId": { + "value": "GEN-AZUREAD-AKS-TENANTID" + } + } + } + } + ], + "outputs": { + "outKeyVaultName": { + "type": "string", + "value": "[parameters('vaultName')]" + }, + "outKeyVaultResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT557 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT557 new file mode 100644 index 0000000..7836eab --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT557 @@ -0,0 +1,667 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/azuredeploy.json", + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/azuredeploy.parameters.json" + ], + "timestamp": 1642962896715, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/azuredeploy.json", + "/application-workloads/sql/vm-sql-full-autobackup-autopatching-keyvault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT557", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT557", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "URI to artifacts location" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + }, + "defaultValue": "" + }, + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Name" + }, + "value": "GEN-UNIQUE-8" + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Size" + }, + "defaultValue": "Standard_D2s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Administrator User Name" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Virtual Machine Administrator Password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Storage Account Name" + }, + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Virtual Network Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkInterfaceName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Interface Name" + }, + "value": "GEN-UNIQUE-13" + }, + "networkSecurityGroupName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Network Security Group Name" + }, + "value": "GEN-UNIQUE-13" + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/16", + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "default", + "value": "default" + }, + "subnetPrefix": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Subnet Name" + }, + "defaultValue": "10.0.0.0/24", + "value": "10.0.0.0/24" + }, + "publicIpAddressName": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Name" + }, + "value": "GEN-UNIQUE-13" + }, + "publicIpAddressType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Public IP Address Type" + }, + "defaultValue": "Dynamic", + "value": "Dynamic" + }, + "sqlConnectivityType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine SQL Connectivity Type" + }, + "defaultValue": "Public", + "value": "Public" + }, + "sqlPortNumber": { + "type": "int", + "metadata": { + "description": "SQL Server Virtual Machine SQL Port Number" + }, + "defaultValue": 1579, + "value": 1579 + }, + "sqlStorageDisksCount": { + "type": "int", + "metadata": { + "description": "SQL Server Virtual Machine Data Disk Count" + }, + "defaultValue": 2, + "value": 2 + }, + "sqlStorageWorkloadType": { + "type": "string", + "metadata": { + "description": "SQL Server Virtual Machine Workload Type: GENERAL - general work load; DW - datawear house work load; OLTP - Transactional processing work load" + }, + "allowedValues": [ + "GENERAL", + "OLTP", + "DW" + ], + "defaultValue": "GENERAL", + "value": "GENERAL" + }, + "sqlAutopatchingDayOfWeek": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Patching Day of A Week" + }, + "allowedValues": [ + "Everyday", + "Never", + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "defaultValue": "Sunday", + "value": "Sunday" + }, + "sqlAutopatchingStartHour": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Patching Starting Hour" + }, + "allowedValues": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23" + ], + "defaultValue": "2", + "value": "2" + }, + "sqlAutopatchingWindowDuration": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Patching Duration Window in minutes" + }, + "allowedValues": [ + "30", + "60", + "90", + "120", + "150", + "180" + ], + "defaultValue": "60", + "value": "60" + }, + "sqlAutobackupRetentionPeriod": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Backup Retention Period" + }, + "allowedValues": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30" + ], + "defaultValue": "30", + "value": "30" + }, + "sqlAutobackupStorageAccountName": { + "type": "string", + "metadata": { + "description": "SQL Server Auto Backup Storage Account Name" + }, + "value": "GEN-UNIQUE" + }, + "sqlAutobackupEncryptionPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Auto Backup Encryption Password" + }, + "value": "GEN-PASSWORD" + }, + "sqlAkvCredentialName": { + "type": "string", + "metadata": { + "description": "SQL credential name to create on the SQL Server virtual machine" + }, + "value": "myAkvCredentialName" + }, + "sqlAkvName": { + "type": "string", + "metadata": { + "description": "Azure Key Vault Name" + }, + "value": "GET-PREREQ-outKeyVaultName" + }, + "sqlAkvPrincipalName": { + "type": "string", + "metadata": { + "description": "Azure Key Vault principal name or id" + }, + "value": "GEN-AZUREAD-AKS-APPID" + }, + "sqlAkvPrincipalSecret": { + "type": "securestring", + "metadata": { + "description": "Azure Key Vault principal secret" + }, + "value": "GEN-AZUREAD-AKS-APPID-SECRET" + }, + "sqlAuthenticationLogin": { + "type": "string", + "metadata": { + "description": "SQL Server Authentication Login Account Name" + }, + "defaultValue": "mysa", + "value": "mySqlAdmin" + }, + "sqlAuthenticationPassword": { + "type": "securestring", + "metadata": { + "description": "SQL Server Authentication Login Account Password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountKind": { + "type": "string", + "defaultValue": "StorageV2" + }, + "storageAccountSkuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS", + "Standard_ZRS", + "Standard_GRS" + ], + "metadata": { + "description": "Storage Account SKU" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default", + "sqlAkvUrl": "[concat('https://', parameters('sqlAkvName'), environment().suffixes.keyVaultDns)]" + }, + "resources": [ + { + "name": "GEN-UNIQUE-8", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-13", + "Microsoft.Storage/storageAccounts//GEN-UNIQUE" + ], + "properties": { + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVmAgent": true + } + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2014SP2-WS2012R2", + "sku": "Enterprise", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-8_DataDisk1", + "createOption": "Empty", + "lun": 0, + "diskSizeGB": 1023, + "caching": "ReadOnly" + }, + { + "name": "GEN-UNIQUE-8_DataDisk2", + "createOption": "Empty", + "lun": 1, + "diskSizeGB": 1023, + "caching": "ReadOnly" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-13" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/SqlIaasExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8" + ], + "properties": { + "type": "SqlIaaSAgent", + "publisher": "Microsoft.SqlServer.Management", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": true, + "settings": { + "AutoTelemetrySettings": { + "Region": "[resourceGroup().location]" + }, + "AutoPatchingSettings": { + "PatchCategory": "WindowsMandatoryUpdates", + "Enable": true, + "DayOfWeek": "Sunday", + "MaintenanceWindowStartingHour": "2", + "MaintenanceWindowDuration": "60" + }, + "AutoBackupSettings": { + "Enable": true, + "RetentionPeriod": "30", + "EnableEncryption": true + }, + "KeyVaultCredentialSettings": { + "Enable": true, + "CredentialName": "myAkvCredentialName" + } + }, + "protectedSettings": { + "StorageUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('sqlAutobackupStorageAccountName')), '2021-02-01').primaryEndpoints['blob']]", + "StorageAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('sqlAutobackupStorageAccountName')), '2021-02-01').keys[0].value]", + "Password": "GEN-PASSWORD", + "PrivateKeyVaultCredentialSettings": { + "AzureKeyVaultUrl": "[variables('sqlAkvUrl')]", + "ServicePrincipalName": "GEN-AZUREAD-AKS-APPID", + "ServicePrincipalSecret": "GEN-AZUREAD-AKS-APPID-SECRET" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "prepareSqlVmDeployment", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/GEN-UNIQUE-8/SqlIaasExtension" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/preparingSqlServerSa.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "sqlVMName": { + "value": "GEN-UNIQUE-8" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "sqlUsername": { + "value": "mySqlAdmin" + }, + "sqlPassword": { + "value": "GEN-PASSWORD" + }, + "disksCount": { + "value": 2 + }, + "diskSizeInGB": { + "value": 1023 + }, + "sqlEnginePort": { + "value": 1579 + }, + "workloadType": { + "value": "GENERAL" + }, + "connectionType": { + "value": "Public" + }, + "sqlVMPrepareModulesURL": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/PrepareSqlServer.ps1.zip', parameters('_artifactsLocationSasToken')))]" + }, + "sqlVMPrepareConfigurationFunction": { + "value": "PrepareSqlServerSa.ps1\\PrepareSqlServerSa" + } + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-13", + "Microsoft.Network/publicIpAddresses//GEN-UNIQUE-13", + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-13" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-13/default" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIpAddresses/GEN-UNIQUE-13" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-13" + } + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "name": "GEN-UNIQUE-13", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-sql", + "properties": { + "priority": 1500, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "1433", + "access": "Allow", + "direction": "inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT558 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT558 new file mode 100644 index 0000000..407a9ee --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT558 @@ -0,0 +1,687 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/swarm/acsengine-swarmmode/azuredeploy.json", + "/application-workloads/swarm/acsengine-swarmmode/azuredeploy.parameters.json" + ], + "timestamp": 1642962896740, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/swarm/acsengine-swarmmode/azuredeploy.json", + "/application-workloads/swarm/acsengine-swarmmode/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT558", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT558", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "agentCount": { + "minValue": 1, + "maxValue": 100, + "defaultValue": 2, + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int", + "value": 3 + }, + "agentEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string", + "value": "GEN-UNIQUE" + }, + "agentSubnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agent'." + }, + "type": "string", + "value": "10.0.0.0/16" + }, + "agentVMSize": { + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string", + "value": "Standard_D2_v3" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string", + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string", + "value": "azureuser" + }, + "location": { + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Sets the location for all resources in the cluster" + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string", + "value": "GEN-UNIQUE" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string", + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string", + "value": "Standard_D2_v3" + }, + "nameSuffix": { + "defaultValue": "13957614", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string", + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "adminUsername": "azureuser", + "agentCount": 3, + "agentCustomScript": "/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarmmode-cluster.sh 1 swarmm-master-13957614- (masterFirstAddrOctets)[3] azureuser disabled [concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')] >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &", + "agentEndpointDNSNamePrefix": "[tolower(parameters('agentEndpointDNSNamePrefix'))]", + "agentIPAddressName": "swarmm-agent-ip-[tolower(parameters('agentEndpointDNSNamePrefix'))]-13957614", + "agentLbBackendPoolName": "swarmm-agent-13957614", + "agentLbIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/swarmm-agent-13957614/swarmm-agent-13957614", + "agentLbIPConfigName": "swarmm-agent-13957614", + "agentLbName": "swarmm-agent-13957614", + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentSubnet": "10.0.0.0/16", + "agentSubnetName": "swarmm-agentsubnet", + "agentVMNamePrefix": "swarmm-agent-13957614", + "agentVMSize": "Standard_D2_v3", + "agentVnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/swarmm-vnet-13957614/swarmm-agentsubnet", + "clusterInstallParameters": "1 swarmm-master-13957614- (masterFirstAddrOctets)[3] azureuser disabled [concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "locations": [ + "[resourceGroup().location]", + "[resourceGroup().location]" + ], + "masterAvailabilitySet": "swarmm-master-availabilitySet-13957614", + "masterCount": 1, + "masterCustomScript": "/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarmmode-cluster.sh 1 swarmm-master-13957614- (masterFirstAddrOctets)[3] azureuser disabled [concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')] >> /var/log/azure/cluster-bootstrap.log 2>&1\"", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "(masterFirstAddrOctets)[3]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "swarmm-master-pool-13957614", + "masterLbIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/swarmm-master-lb-13957614/swarmm-master-lbFrontEnd-13957614", + "masterLbIPConfigName": "swarmm-master-lbFrontEnd-13957614", + "masterLbInboundNatRules": [ + [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/swarmm-master-lb-13957614/SSH-swarmm-master-13957614-0" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/swarmm-master-lb-13957614/SSHPort22-swarmm-master-13957614-0" + } + ], + [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/swarmm-master-lb-13957614/SSH-swarmm-master-13957614-1" + } + ], + [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/swarmm-master-lb-13957614/SSH-swarmm-master-13957614-22" + } + ], + [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/swarmm-master-lb-13957614/SSH-swarmm-master-13957614-3" + } + ], + [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/swarmm-master-lb-13957614/SSH-swarmm-master-13957614-4" + } + ] + ], + "masterLbName": "swarmm-master-lb-13957614", + "masterPublicIPAddressName": "swarmm-master-ip-[tolower(parameters('masterEndpointDNSNamePrefix'))]-13957614", + "masterSshPort22InboundNatRuleNamePrefix": "swarmm-master-lb-13957614/SSHPort22-swarmm-master-13957614-", + "masterSubnet": "172.16.0.0/24", + "masterSubnetName": "swarmm-masterSubnet", + "masterVMNamePrefix": "swarmm-master-13957614-", + "masterVMSize": "Standard_D2_v3", + "masterVnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/swarmm-vnet-13957614/swarmm-masterSubnet", + "nameSuffix": "13957614", + "orchestratorName": "swarmm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "/home/azureuser/.ssh/authorized_keys", + "sshRSAPublicKey": "GEN-SSH-PUB-KEY", + "virtualNetworkName": "swarmm-vnet-13957614", + "agentVmSizeSuffix": "[toLower(split(parameters('agentVMSize'), '_')[1])]", + "masterVmSizeSuffix": "[toLower(split(parameters('masterVMSize'), '_')[1])]", + "agentDiskType": "[if(contains(variables('agentVmSizeSuffix'), 's'), 'Premium_LRS', 'StandardSSD_LRS')]", + "masterDiskType": "[if(contains(variables('masterVmSizeSuffix'), 's'), 'Premium_LRS', 'StandardSSD_LRS')]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-04-01", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-agent-ip-[tolower(parameters('agentEndpointDNSNamePrefix'))]-13957614", + "properties": { + "dnsSettings": { + "domainNameLabel": "[tolower(parameters('agentEndpointDNSNamePrefix'))]" + }, + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/loadBalancers", + "dependsOn": [ + "[resourceID('Microsoft.Network/publicIPAddresses', variables('agentIPAddressName'))]" + ], + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-agent-13957614", + "properties": { + "backendAddressPools": [ + { + "name": "swarmm-agent-13957614" + } + ], + "frontendIPConfigurations": [ + { + "name": "swarmm-agent-13957614", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/swarmm-agent-ip-[tolower(parameters('agentEndpointDNSNamePrefix'))]-13957614" + } + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//swarmm-agent-13957614/swarmm-agent-13957614" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/swarmm-agent-13957614/swarmm-agent-13957614" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/swarmm-agent-13957614/tcp80Probe" + }, + "protocol": "Tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/swarmm-agent-13957614/swarmm-agent-13957614" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/swarmm-agent-13957614/swarmm-agent-13957614" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/swarmm-agent-13957614/tcp443Probe" + }, + "protocol": "Tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/swarmm-agent-13957614/swarmm-agent-13957614" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/swarmm-agent-13957614/swarmm-agent-13957614" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/swarmm-agent-13957614/tcp8080Probe" + }, + "protocol": "Tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 80, + "protocol": "Tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 443, + "protocol": "Tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": 8080, + "protocol": "Tcp" + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachineScaleSets", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-agent-13957614-vmss", + "sku": { + "capacity": 3, + "name": "Standard_D2_v3", + "tier": "Standard" + }, + "tags": { + "creationSource": "acsengine-swarmm-agent-13957614-vmss" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/swarmm-master-ip-[tolower(parameters('masterEndpointDNSNamePrefix'))]-13957614", + "swarmm-vnet-13957614", + "Microsoft.Network/loadBalancers/swarmm-agent-13957614" + ], + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/swarmm-agent-13957614/swarmm-agent-13957614" + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/swarmm-vnet-13957614/swarmm-agentsubnet" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminUsername": "azureuser", + "computerNamePrefix": "swarmm-agent-13957614", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIACkUqlkAA81ZbXPbNhL+zl+xpTW1nYaipDSXOWeUG8dWLp6rLY9kd24uaWOIhCzWFKEQoGSfq/9+u3ihSFmK3TaZOWUSkuAC++wunt0Fs/NdOEqycMTkxPN2/vzP24EjkY2T6yLnMFywfAqnIubQzzi8FbceCVxMEglJJhVLUwlqwmEs0lQskuwaIjGdiYxnSqJgAMciuuF55RZXRwHJ9VBl/SmTiudyfZhdm6X+gkGe5AqCW8/j0USAj6hzRUgrWqK0IO0I3ljOVCIy34uZ4t5MAsPJx/2jf/UGn476p+f9Ye/Tz73B8KR/1vXbzXan2fLrCNGKc5azKTcm1eGcHg4veoOj/uXZRbdx317agfNB793Jv3Gk40benQyGF4fHxwMcfLH0Dv9zOehdDnv0+OPSQxgXJ2co8NNPw6PByfnF5eAE37xcem8Ph73h5duzHq3/t6X38+nZ4WmvezURUmUI6opGLk/f4kpX2icNIwG/g+Qx7Mqw+ezDr63g77983PugLz983H/WCD+2w12aa5Fumftxr5y9/8xOd3NtCE51rHEnFJk6gEbFIX5d4jzn4+S2FDGK12TeJblUcBjHeSlXOs6Jzqdk94ED64adG8wLffscnH16sK5x5Vh8uXpwr8sA4dvy3t/IRs2y6VRk8K7IItptG/c4OiyTSMTD/+I/Z1wtRH6zt+/dewA7YF5p+mXmFdA/El/a5/ecpWpy123j0FjkkCBp4b7dxC27fA2xwGGAxTXRox/GfB5mRZrCRKnZQUjZ5LqJbNZCyRg+QOMfEPDP0IJf9BgqzvQNgXF7CyZMwojzDBUWWUyMQrIV3AquAWvZYeO/qiWYYCZGyLcyo5yzG30/TvRFppzPoE1rxJhxPIeyrgMCTFwGcgl4o7pMKKfyObCRMEnCZjnfesEkCPMwA2ZWu00UdDyLqxYX8goJRiyDnEuRzvmTotNahad0bJD8v0fiWwQCPUfP1nna6ch0LuWfj9FyA6m8932baq8qDseElUhTmMDSTlvm1/MRdLs4VCaLuok5V0WeAfmXp5JXx9oODy5a6nntpjrfaI9gjcIrs1XS93AaQtPFcQXs4Ro1VevqWzX1eq0va89MNTbajQdaJ+faa37jfpUPl437tTy83JwFTSJ0sZU8HRMFjs+G24Rtom24aJUJncpPEQtQHOPGIOQqCimQ8qFe1HhiNkzZnGxRY8VoizFDIN0c0LOZiVbZvWeebSjqZG6tp9pA5QmX8CPeYSTyuwAXzrDQFVRAg2DBEqXHu+2XEHzuBzohS8zIOLsZa0WUl8nkyVdNCcZq26ZZwxCSLKIICTfG2vD0ZLz0VIIKa+7BToxihHbmU4Gmsn+CMadSLp3vL2fYfK08DTHjVC3FTNdKdHxBAty8PdYv++adDQKYDTG9iZMcgpnZEvIO+TGN7TW0zkQ88yTizdgz7hpSh+gUU+TTBMVReQYHnRevXsJeJoAVavIcRoWiQM8xfe2TqF2BpVKgsylhKcBCGoMSuiAUWXILklZWwBSEc5aHeZGVSPCywk69PAQR7BqXfBganCbAvVseaaDdtcewkLk+Cpg10c/vQUVU0VtN/cfYgKMEBoe3gPDhzZOcFoo5z/Mk5k0iyK6L/Nb4bGBX/WTg10llR8u2R7sGi+G3JFqiJsWISGatDSMDIsx5ypnkEscXWSpYHDY2HwzsxMBODK4KU1PkVXk7vSIPU7RSEbG0EjM36xuwu67gW7Dcne+iCZH8h9tHTDQ5weytSKWW6Bgw8q59abaaSxZYL2iju964lnor3RfSy05YdTAaN41t7b1erDaR1u2WyMbiq0ajDqO1MQM/aLyqiPBYGrA/2hrXtG5vyFYAKr2YX++eXErfXKm3/bD4RuXXhSTD7JgXKXLUxhSoKs9yQTuR/9FTv7e5jyp7Ntc0YL9WdnC2f8Ge7XU1jCtXHKFrdR1i2KIu7DcDLARjfep07dhqlo2O1HLawCBgMWZIlWAWoN4VGnuVFnOfsvErFDI1ZquEiY7r4Fb4hhz9GbP8zmLBqoJEmmnIWHN+E7ivsXHD/leuPnqsAGucyFOuxA3Puv62N4fR5yLJeawJY37bjyxbFm/sWedg6am731Qk4zNCHOgJmJPRqAx7zny/tu4aBx9E7osGtB4IrthTmpbU7dBselmOWUpVwWxWVmGY+T0AuiWIkSjSONtVRJaMR4pCqSO37dRTrufOOQ8MqW1MvS0C6+Y18Bti88rlFn3s2H5Yec/mhExi22JbJsQ9Q7zQwR9gQlxwJDheOx3CbbN7DLjNwZfhr+dGthHaG+/cTQ7bvu1G5IT+xp/sMe8RSEOuDH3nLEnZKEkTdQdi7BxNZ5sD2LXHiF2NlxXUg5Qe08cf080Ql6vraFF3BlkhWTtKOSiHevjp/NzMzS/y8suc/Ap8pLNylY6PU/FJNKxTsLJrq9QrafdkytXAVINQ8kv7/1FmVVhlsf01NtmdgkZs+ogL32F9inEbjbAvo68JtQ3tGk8E+lwfTm6S6IZQi/EYuUbfm+zpVkZ5MlNkRfk/A3Sa8GvNcaf15O54M9jfkSCTYlbR8eaNOdek4jpk9I0ltJ/Xg5EQSqqczQICanE2UQ46b75vw/fmy4Kxs+wC6JzE0U4krbPIfJLXX+eNMDWTKVcI/PGP+naK6zhM50lcdH5j2R32I1OG1ZuSmRgrXJNOJRu4LSeFoohAQIli4dkKvQPkPmjDFFs+zBu4utNnEs+DoFQXcp74H9DolC7TGQAA\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY", + "path": "/home/azureuser/.ssh/authorized_keys" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "[if(contains(variables('agentVmSizeSuffix'), 's'), 'Premium_LRS', 'StandardSSD_LRS')]" + } + } + } + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-04-01", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-vnet-13957614", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "172.16.0.0/24", + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "swarmm-masterSubnet", + "properties": { + "addressPrefix": "172.16.0.0/24" + } + }, + { + "name": "swarmm-agentsubnet", + "properties": { + "addressPrefix": "10.0.0.0/16" + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/availabilitySets", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-master-availabilitySet-13957614", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-04-01", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-master-ip-[tolower(parameters('masterEndpointDNSNamePrefix'))]-13957614", + "properties": { + "dnsSettings": { + "domainNameLabel": "[tolower(parameters('masterEndpointDNSNamePrefix'))]" + }, + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-04-01", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-master-lb-13957614", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/swarmm-master-ip-[tolower(parameters('masterEndpointDNSNamePrefix'))]-13957614" + ], + "properties": { + "backendAddressPools": [ + { + "name": "swarmm-master-pool-13957614" + } + ], + "frontendIPConfigurations": [ + { + "name": "swarmm-master-lbFrontEnd-13957614", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/swarmm-master-ip-[tolower(parameters('masterEndpointDNSNamePrefix'))]-13957614" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "apiVersion": "2020-04-01", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-master-lb-13957614/SSH-swarmm-master-13957614-copyIndex()", + "copy": { + "count": 1, + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/swarmm-master-lb-13957614" + ], + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/swarmm-master-lb-13957614/swarmm-master-lbFrontEnd-13957614" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "Tcp" + } + }, + { + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "apiVersion": "2020-04-01", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "name": "swarmm-master-lb-13957614/SSHPort22-swarmm-master-13957614-0", + "dependsOn": [ + "Microsoft.Network/loadBalancers/swarmm-master-lb-13957614" + ], + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/swarmm-master-lb-13957614/swarmm-master-lbFrontEnd-13957614" + }, + "frontendPort": 22, + "protocol": "Tcp" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-04-01", + "name": "swarmm-master-13957614-nic-copyIndex()", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "copy": { + "count": 1, + "name": "nicLoopNode" + }, + "dependsOn": [ + "swarmm-vnet-13957614", + "Microsoft.Network/loadBalancers/swarmm-master-lb-13957614", + "Microsoft.Network/loadBalancers/inboundNatRules/swarmm-master-lb-13957614/SSHPort22-swarmm-master-13957614-0", + "Microsoft.Network/loadBalancers/inboundNatRules/swarmm-master-lb-13957614/SSH-swarmm-master-13957614-copyIndex()" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/swarmm-master-lb-13957614/swarmm-master-pool-13957614" + } + ], + "loadBalancerInboundNatRules": "(masterLbInboundNatRules)[copyIndex()]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/swarmm-vnet-13957614/swarmm-masterSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "swarmm-master-13957614-copyIndex()", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "copy": { + "count": 1, + "name": "vmLoopNode" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/swarmm-master-13957614-nic-copyIndex()", + "Microsoft.Compute/availabilitySets/swarmm-master-availabilitySet-13957614" + ], + "tags": { + "creationSource": "acsengine-swarmm-master-13957614-copyIndex()" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/swarmm-master-availabilitySet-13957614" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/swarmm-master-13957614-nic-copyIndex()" + } + ] + }, + "osProfile": { + "adminUsername": "azureuser", + "computerName": "swarmm-master-13957614-copyIndex()", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIACkUqlkAA81ZbXPbNhL+zl+xpTW1nYaipDSXOWeUG8dWLp6rLY9kd24uaWOIhCzWFKEQoGSfq/9+u3ihSFmK3TaZOWUSkuAC++wunt0Fs/NdOEqycMTkxPN2/vzP24EjkY2T6yLnMFywfAqnIubQzzi8FbceCVxMEglJJhVLUwlqwmEs0lQskuwaIjGdiYxnSqJgAMciuuF55RZXRwHJ9VBl/SmTiudyfZhdm6X+gkGe5AqCW8/j0USAj6hzRUgrWqK0IO0I3ljOVCIy34uZ4t5MAsPJx/2jf/UGn476p+f9Ye/Tz73B8KR/1vXbzXan2fLrCNGKc5azKTcm1eGcHg4veoOj/uXZRbdx317agfNB793Jv3Gk40benQyGF4fHxwMcfLH0Dv9zOehdDnv0+OPSQxgXJ2co8NNPw6PByfnF5eAE37xcem8Ph73h5duzHq3/t6X38+nZ4WmvezURUmUI6opGLk/f4kpX2icNIwG/g+Qx7Mqw+ezDr63g77983PugLz983H/WCD+2w12aa5Fumftxr5y9/8xOd3NtCE51rHEnFJk6gEbFIX5d4jzn4+S2FDGK12TeJblUcBjHeSlXOs6Jzqdk94ED64adG8wLffscnH16sK5x5Vh8uXpwr8sA4dvy3t/IRs2y6VRk8K7IItptG/c4OiyTSMTD/+I/Z1wtRH6zt+/dewA7YF5p+mXmFdA/El/a5/ecpWpy123j0FjkkCBp4b7dxC27fA2xwGGAxTXRox/GfB5mRZrCRKnZQUjZ5LqJbNZCyRg+QOMfEPDP0IJf9BgqzvQNgXF7CyZMwojzDBUWWUyMQrIV3AquAWvZYeO/qiWYYCZGyLcyo5yzG30/TvRFppzPoE1rxJhxPIeyrgMCTFwGcgl4o7pMKKfyObCRMEnCZjnfesEkCPMwA2ZWu00UdDyLqxYX8goJRiyDnEuRzvmTotNahad0bJD8v0fiWwQCPUfP1nna6ch0LuWfj9FyA6m8932baq8qDseElUhTmMDSTlvm1/MRdLs4VCaLuok5V0WeAfmXp5JXx9oODy5a6nntpjrfaI9gjcIrs1XS93AaQtPFcQXs4Ro1VevqWzX1eq0va89MNTbajQdaJ+faa37jfpUPl437tTy83JwFTSJ0sZU8HRMFjs+G24Rtom24aJUJncpPEQtQHOPGIOQqCimQ8qFe1HhiNkzZnGxRY8VoizFDIN0c0LOZiVbZvWeebSjqZG6tp9pA5QmX8CPeYSTyuwAXzrDQFVRAg2DBEqXHu+2XEHzuBzohS8zIOLsZa0WUl8nkyVdNCcZq26ZZwxCSLKIICTfG2vD0ZLz0VIIKa+7BToxihHbmU4Gmsn+CMadSLp3vL2fYfK08DTHjVC3FTNdKdHxBAty8PdYv++adDQKYDTG9iZMcgpnZEvIO+TGN7TW0zkQ88yTizdgz7hpSh+gUU+TTBMVReQYHnRevXsJeJoAVavIcRoWiQM8xfe2TqF2BpVKgsylhKcBCGoMSuiAUWXILklZWwBSEc5aHeZGVSPCywk69PAQR7BqXfBganCbAvVseaaDdtcewkLk+Cpg10c/vQUVU0VtN/cfYgKMEBoe3gPDhzZOcFoo5z/Mk5k0iyK6L/Nb4bGBX/WTg10llR8u2R7sGi+G3JFqiJsWISGatDSMDIsx5ypnkEscXWSpYHDY2HwzsxMBODK4KU1PkVXk7vSIPU7RSEbG0EjM36xuwu67gW7Dcne+iCZH8h9tHTDQ5weytSKWW6Bgw8q59abaaSxZYL2iju964lnor3RfSy05YdTAaN41t7b1erDaR1u2WyMbiq0ajDqO1MQM/aLyqiPBYGrA/2hrXtG5vyFYAKr2YX++eXErfXKm3/bD4RuXXhSTD7JgXKXLUxhSoKs9yQTuR/9FTv7e5jyp7Ntc0YL9WdnC2f8Ge7XU1jCtXHKFrdR1i2KIu7DcDLARjfep07dhqlo2O1HLawCBgMWZIlWAWoN4VGnuVFnOfsvErFDI1ZquEiY7r4Fb4hhz9GbP8zmLBqoJEmmnIWHN+E7ivsXHD/leuPnqsAGucyFOuxA3Puv62N4fR5yLJeawJY37bjyxbFm/sWedg6am731Qk4zNCHOgJmJPRqAx7zny/tu4aBx9E7osGtB4IrthTmpbU7dBselmOWUpVwWxWVmGY+T0AuiWIkSjSONtVRJaMR4pCqSO37dRTrufOOQ8MqW1MvS0C6+Y18Bti88rlFn3s2H5Yec/mhExi22JbJsQ9Q7zQwR9gQlxwJDheOx3CbbN7DLjNwZfhr+dGthHaG+/cTQ7bvu1G5IT+xp/sMe8RSEOuDH3nLEnZKEkTdQdi7BxNZ5sD2LXHiF2NlxXUg5Qe08cf080Ql6vraFF3BlkhWTtKOSiHevjp/NzMzS/y8suc/Ap8pLNylY6PU/FJNKxTsLJrq9QrafdkytXAVINQ8kv7/1FmVVhlsf01NtmdgkZs+ogL32F9inEbjbAvo68JtQ3tGk8E+lwfTm6S6IZQi/EYuUbfm+zpVkZ5MlNkRfk/A3Sa8GvNcaf15O54M9jfkSCTYlbR8eaNOdek4jpk9I0ltJ/Xg5EQSqqczQICanE2UQ46b75vw/fmy4Kxs+wC6JzE0U4krbPIfJLXX+eNMDWTKVcI/PGP+naK6zhM50lcdH5j2R32I1OG1ZuSmRgrXJNOJRu4LSeFoohAQIli4dkKvQPkPmjDFFs+zBu4utNnEs+DoFQXcp74H9DolC7TGQAA\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY", + "path": "/home/azureuser/.ssh/authorized_keys" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "swarmm-master-13957614-copyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "[if(contains(variables('masterVmSizeSuffix'), 's'), 'Premium_LRS', 'StandardSSD_LRS')]" + } + } + } + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "swarmm-master-13957614-copyIndex()/configuremaster", + "location": "(locations)[mod(add(2,length(parameters(location))),add(1,length(parameters(location))))]", + "copy": { + "count": 1, + "name": "vmLoopNode" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/swarmm-master-13957614-copyIndex()" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarmmode-cluster.sh 1 swarmm-master-13957614- (masterFirstAddrOctets)[3] azureuser disabled [concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')] >> /var/log/azure/cluster-bootstrap.log 2>&1\"" + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + } + } + ], + "outputs": { + "agentFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('agentIPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT559 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT559 new file mode 100644 index 0000000..d29bead --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT559 @@ -0,0 +1,638 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/swarm/docker-swarm-cluster/azuredeploy.json", + "/application-workloads/swarm/docker-swarm-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962896754, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/swarm/docker-swarm-cluster/azuredeploy.json", + "/application-workloads/swarm/docker-swarm-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT559", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT559", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sshPublicKey": { + "type": "securestring", + "metadata": { + "description": "SSH public key for the Virtual Machines." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "nodeCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of Swarm worker nodes in the cluster." + }, + "value": 3 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin Username." + } + }, + "vmSizeMaster": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Default Master VM Size" + } + }, + "vmSizeNode": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "Default Node VM Size" + } + } + }, + "variables": { + "masterCount": 3, + "vmNameMaster": "swarm-master-", + "vmNameNode": "swarm-node-", + "availabilitySetMasters": "swarm-masters-set", + "availabilitySetNodes": "swarm-nodes-set", + "osImagePublisher": "Canonical", + "osImageOffer": "UbuntuServer", + "osImageSKU": "16.04-LTS", + "managementPublicIPAddrName": "swarm-lb-masters-ip", + "nodesPublicIPAddrName": "swarm-lb-nodes-ip", + "virtualNetworkName": "swarm-vnet", + "subnetNameMasters": "subnet-masters", + "subnetNameNodes": "subnet-nodes", + "addressPrefixMasters": "10.0.0.0/16", + "addressPrefixNodes": "192.168.0.0/16", + "subnetPrefixMasters": "10.0.0.0/24", + "subnetPrefixNodes": "192.168.0.0/24", + "mastersNsgName": "swarm-masters-firewall", + "nodesNsgName": "swarm-nodes-firewall", + "newStorageAccountName": "[uniqueString(resourceGroup().id, deployment().name)]", + "clusterFqdn": "[concat('swarm-',uniqueString(resourceGroup().id, deployment().name))]", + "storageAccountType": "Standard_LRS", + "mastersLbName": "swarm-lb-masters", + "mastersLbIPConfigName": "MastersLBFrontEnd", + "mastersLbBackendPoolName": "swarm-masters-pool", + "nodesLbName": "swarm-lb-nodes", + "nodesLbBackendPoolName": "swarm-nodes-pool", + "sshKeyPath": "/home/azureuser/.ssh/authorized_keys", + "consulServerArgs": [ + "-advertise 10.0.0.4 -bootstrap-expect 3 -retry-join 10.0.0.5 -retry-join 10.0.0.6", + "-advertise 10.0.0.5 -retry-join 10.0.0.4 -retry-join 10.0.0.6", + "-advertise 10.0.0.6 -retry-join 10.0.0.4 -retry-join 10.0.0.5" + ] + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[uniqueString(resourceGroup().id, deployment().name)]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "swarm-masters-set", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "swarm-nodes-set", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "swarm-lb-masters-ip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(variables('clusterFqdn'), '-manage')]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "swarm-lb-nodes-ip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('clusterFqdn')]" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "swarm-vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/swarm-masters-firewall", + "Microsoft.Network/networkSecurityGroups/swarm-nodes-firewall" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16", + "192.168.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-masters", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/swarm-masters-firewall" + } + } + }, + { + "name": "subnet-nodes", + "properties": { + "addressPrefix": "192.168.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/swarm-nodes-firewall" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "swarm-masters-firewall", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "swarm-nodes-firewall", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowAny", + "properties": { + "description": "Swarm node ports need to be configured on the load balancer to be reachable", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "swarm-master-copyIndex()-nic", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoopMaster", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers//swarm-lb-masters", + "Microsoft.Network/virtualNetworks//swarm-vnet", + "Microsoft.Network/loadBalancers/inboundNatRules/swarm-lb-masters/SSH-swarm-master-copyIndex()" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigMaster", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat('10.0.0.', copyIndex(4))]", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/swarm-vnet/subnet-masters" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/swarm-lb-masters/swarm-masters-pool" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/swarm-lb-masters/SSH-swarm-master-copyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "name": "swarm-lb-masters", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//swarm-lb-masters-ip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "MastersLBFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/swarm-lb-masters-ip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "swarm-masters-pool" + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "swarm-lb-masters/SSH-swarm-master-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "lbNatLoopMaster", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers//swarm-lb-masters" + ], + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/swarm-lb-masters/MastersLBFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": "[copyIndex(2200)]", + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "apiVersion": "2015-06-15", + "name": "swarm-lb-nodes", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//swarm-lb-nodes-ip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/swarm-lb-nodes-ip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "swarm-nodes-pool" + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "swarm-node-copyIndex()-nic", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoopNode", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers//swarm-lb-nodes", + "Microsoft.Network/virtualNetworks//swarm-vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/swarm-vnet/subnet-nodes" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/swarm-lb-nodes/swarm-nodes-pool" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "swarm-master-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoopMaster", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[uniqueString(resourceGroup().id, deployment().name)]", + "Microsoft.Network/networkInterfaces//swarm-master-copyIndex()-nic", + "Microsoft.Compute/availabilitySets//swarm-masters-set" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/swarm-masters-set" + }, + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "swarm-master-copyIndex()", + "adminUsername": "azureuser", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/azureuser/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "swarm-master-copyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/swarm-master-copyIndex()-nic" + } + ] + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "swarm-node-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoopNode", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[uniqueString(resourceGroup().id, deployment().name)]", + "Microsoft.Network/networkInterfaces//swarm-node-copyIndex()-nic" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/swarm-nodes-set" + }, + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "swarm-node-copyIndex()", + "adminUsername": "azureuser", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/azureuser/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "swarm-node-copyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/swarm-node-copyindex()-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "swarm-master-copyIndex()/DockerExtension", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "copy": { + "name": "extensionLoopMaster", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//swarm-master-copyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "compose": { + "consul": { + "image": "progrium/consul", + "command": "[concat('-server -node master', copyIndex(), ' ', variables('consulServerArgs')[copyIndex()])]", + "ports": [ + "8500:8500", + "8300:8300", + "8301:8301", + "8301:8301/udp", + "8302:8302", + "8302:8302/udp", + "8400:8400" + ], + "volumes": [ + "/data/consul:/data" + ], + "restart": "always" + }, + "swarm": { + "image": "swarm", + "command": "[concat('manage --replication --advertise ', reference(resourceId('Microsoft.Network/networkInterfaces',concat(variables('vmNameMaster'), copyIndex(), '-nic'))).ipConfigurations[0].properties.privateIPAddress, ':2375 --discovery-opt kv.path=docker/nodes consul://10.0.0.4:8500')]", + "ports": [ + "2375:2375" + ], + "links": [ + "consul" + ], + "volumes": [ + "/etc/docker:/etc/docker" + ], + "restart": "always" + } + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "swarm-node-copyIndex()/DockerExtension", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "copy": { + "name": "extensionLoopNode", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//swarm-node-copyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "docker": { + "port": "2375", + "options": [ + "--cluster-store=consul://10.0.0.4:8500", + "--cluster-advertise=eth0:2375" + ] + } + } + } + } + ], + "outputs": { + "sshTunnelCmd": { + "type": "string", + "value": "[concat('ssh -L 2375:swarm-master-0:2375 -N ', parameters('adminUsername'), '@', reference(variables('managementPublicIPAddrName')).dnsSettings.fqdn, ' -p 2200')]" + }, + "dockerCmd": { + "type": "string", + "value": "docker -H tcp://localhost:2375 info" + }, + "swarmNodesLoadBalancerAddress": { + "type": "string", + "value": "[reference(variables('nodesPublicIPAddrName')).dnsSettings.fqdn]" + }, + "sshMaster0": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('managementPublicIPAddrName')).dnsSettings.fqdn, ' -A -p 2200')]" + }, + "sshMaster1": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('managementPublicIPAddrName')).dnsSettings.fqdn, ' -A -p 2201')]" + }, + "sshMaster2": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('managementPublicIPAddrName')).dnsSettings.fqdn, ' -A -p 2202')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT56 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT56 new file mode 100644 index 0000000..cb1ef3f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT56 @@ -0,0 +1,83 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/publicIPAddressResource.json" + ], + "timestamp": 1642962884341, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/publicIPAddressResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT56", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT56", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "publicIPAllocationMethod": "networkSettings", + "dnsSettings": { + "domainNameLabel": "networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "publicIPAllocationMethod": "networkSettings", + "dnsSettings": { + "domainNameLabel": "networkSettings" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "outputs": { + "chefServerfqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('networkSettings').felbPublicIPAddressName),'2015-06-15').dnsSettings.fqdn]" + }, + "chefAutomatefqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('networkSettings').chefAutoPublicIPAddressName),'2015-06-15').dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT560 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT560 new file mode 100644 index 0000000..6a0d02c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT560 @@ -0,0 +1,597 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/tableau/tableau-server-single-node/azuredeploy.json", + "/application-workloads/tableau/tableau-server-single-node/azuredeploy.parameters.json" + ], + "timestamp": 1642962896779, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/tableau/tableau-server-single-node/azuredeploy.json", + "/application-workloads/tableau/tableau-server-single-node/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT560", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT560", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "The location where these resources will be deployed. By default this will be the location of the resource group." + }, + "defaultValue": "[resourceGroup().location]" + }, + "OS": { + "type": "string", + "allowedValues": [ + "Ubuntu 16.04 LTS", + "CentOS 7.5", + "RHEL 7.7", + "Windows 2019-Datacenter", + "Windows 2016-Datacenter", + "Windows 2012-R2-Datacenter", + "Windows 2012-Datacenter" + ], + "metadata": { + "description": "The operating system of the VM." + }, + "value": "RHEL 7.7" + }, + "tableau_version": { + "type": "string", + "allowedValues": [ + "2020.1.3", + "2019.4.6", + "2019.3.7", + "2019.2.11", + "2019.1.15" + ], + "metadata": { + "description": "The version of Tableau Server to install." + }, + "defaultValue": "2020.1.3", + "value": "2019.4.6" + }, + "VMSize": { + "type": "string", + "allowedValues": [ + "Standard_D16s_v3", + "Standard_D32s_v3", + "Standard_D48s_v3", + "Standard_D4s_v3" + ], + "metadata": { + "description": "Please select the size of the VM you wish to deploy. Tableau Server should be deployed on a machine with at least 16 vCPUs. Standard_D4s_v3 is provided for testing only. Read more about sizing options here: https://docs.microsoft.com/en-us/azure/virtual-machines/sizes-general" + }, + "defaultValue": "Standard_D16s_v3", + "value": "Standard_D4s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "source_CIDR": { + "type": "string", + "metadata": { + "description": "CIDR block for SSH source - limit to your IP for secure access." + }, + "value": "0.0.0.0/0" + }, + "tableau_admin_username": { + "type": "string", + "metadata": { + "description": "Tableau Server administrator username." + }, + "value": "GEN-UNIQUE" + }, + "tableau_admin_password": { + "type": "securestring", + "metadata": { + "description": "Tableau Server administrator password." + }, + "value": "GEN-PASSWORD" + }, + "registration_first_name": { + "type": "string", + "metadata": { + "description": "First name to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_last_name": { + "type": "string", + "metadata": { + "description": "Last name to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_email": { + "type": "string", + "metadata": { + "description": "Email address to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_company": { + "type": "string", + "metadata": { + "description": "Company name to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_title": { + "type": "string", + "metadata": { + "description": "Job title to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_department": { + "type": "string", + "metadata": { + "description": "Department name to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_industry": { + "type": "string", + "metadata": { + "description": "Industry name to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_phone": { + "type": "string", + "metadata": { + "description": "Phone number to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_city": { + "type": "string", + "metadata": { + "description": "Your current City - to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_state": { + "type": "string", + "metadata": { + "description": "Your current State - to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_zip": { + "type": "string", + "metadata": { + "description": "Your current zip - to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "registration_country": { + "type": "string", + "metadata": { + "description": "Your current Country - to use for registering Tableau Server" + }, + "value": "GEN-UNIQUE" + }, + "license_key": { + "type": "string", + "defaultValue": "trial", + "metadata": { + "description": "Enter Tableau Server License key. ** If you would like to run a 2-week free trial please leave as 'trial'" + } + }, + "accept_eula": { + "type": "string", + "allowedValues": [ + "Yes", + "No" + ], + "metadata": { + "description": "Please type 'Yes' to accept the Tableau EULA which can be found here: https://mkt.tableau.com/files/tableau_eula.pdf. If you type No then the Azure resources will still be deployed but Tableau Server will not be installed." + }, + "value": "Yes" + } + }, + "variables": { + "virtualNetworkName": "TABVNET", + "NSGName": "TABNSG", + "publicIPAddressType": "Dynamic", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "numberOfInstances": 1, + "virtualMachineSize": "Standard_D4s_v3", + "linux_os": [ + "Ubuntu 16.04 LTS", + "CentOS 7.5", + "RHEL 7.7" + ], + "os_is_linux": "[contains(variables('linux_os'),parameters('OS'))]", + "imageReference": { + "Ubuntu 16.04 LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "CentOS 7.5": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.5", + "version": "latest" + }, + "RHEL 7.7": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-RAW", + "version": "latest" + }, + "Windows 2016-Datacenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "Windows 2019-Datacenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "Windows 2012-Datacenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-Datacenter", + "version": "latest" + }, + "Windows 2012-R2-Datacenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "publicIpName": "[substring(concat(uniqueString(resourceGroup().id, deployment().name)), 0, 6)]", + "LinuxExecute": "-u GEN-UNIQUE -p GEN-PASSWORD -h GEN-UNIQUE -e 2019.4.6 -i GEN-PASSWORD -j GEN-UNIQUE -k GEN-UNIQUE -l GEN-UNIQUE -m GEN-UNIQUE -n GEN-UNIQUE -o yes -q GEN-UNIQUE -r GEN-UNIQUE -s GEN-UNIQUE -t GEN-UNIQUE -x GEN-UNIQUE -v GEN-UNIQUE -g [uri(parameters('_artifactsLocation'), concat('scripts/automated-installer', parameters('_artifactsLocationSasToken')))] -y trial -f RHEL 7.7 -w GEN-UNIQUE", + "LinCmdWrapper": "bash ./config-linux.sh -u GEN-UNIQUE -p GEN-PASSWORD -h GEN-UNIQUE -e 2019.4.6 -i GEN-PASSWORD -j GEN-UNIQUE -k GEN-UNIQUE -l GEN-UNIQUE -m GEN-UNIQUE -n GEN-UNIQUE -o yes -q GEN-UNIQUE -r GEN-UNIQUE -s GEN-UNIQUE -t GEN-UNIQUE -x GEN-UNIQUE -v GEN-UNIQUE -g [uri(parameters('_artifactsLocation'), concat('scripts/automated-installer', parameters('_artifactsLocationSasToken')))] -y trial -f RHEL 7.7 -w GEN-UNIQUE", + "linuxscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/config-linux.sh', parameters('_artifactsLocationSasToken')))]", + "installscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/automated-installer', parameters('_artifactsLocationSasToken')))]", + "winscriptfile": "config-win.ps1", + "winscripturi": "[deployment().properties.templateLink.uri]scripts/config-win.ps1 parameters('_artifactsLocationSasToken')", + "WinExecute": "-local_admin_user GEN-UNIQUE -local_admin_pass GEN-PASSWORD -ts_admin_un GEN-UNIQUE -ts_admin_pass GEN-PASSWORD -reg_zip GEN-UNIQUE -reg_country GEN-UNIQUE -reg_city GEN-UNIQUE -reg_last_name GEN-UNIQUE -reg_industry GEN-UNIQUE -eula Yes -reg_title GEN-UNIQUE -reg_phone GEN-UNIQUE -reg_company GEN-UNIQUE -reg_state GEN-UNIQUE -reg_email GEN-UNIQUE -reg_department GEN-UNIQUE -install_script_url [deployment().properties.templateLink.uri]scripts/config-win.ps1 parameters('_artifactsLocationSasToken') -license_key trial -reg_first_name GEN-UNIQUE -ts_build 2019.4.6", + "WinCmdWrapper": "powershell -ExecutionPolicy Unrestricted -File config-win.ps1 -local_admin_user GEN-UNIQUE -local_admin_pass GEN-PASSWORD -ts_admin_un GEN-UNIQUE -ts_admin_pass GEN-PASSWORD -reg_zip GEN-UNIQUE -reg_country GEN-UNIQUE -reg_city GEN-UNIQUE -reg_last_name GEN-UNIQUE -reg_industry GEN-UNIQUE -eula Yes -reg_title GEN-UNIQUE -reg_phone GEN-UNIQUE -reg_company GEN-UNIQUE -reg_state GEN-UNIQUE -reg_email GEN-UNIQUE -reg_department GEN-UNIQUE -install_script_url [deployment().properties.templateLink.uri]scripts/config-win.ps1 parameters('_artifactsLocationSasToken') -license_key trial -reg_first_name GEN-UNIQUE -ts_build 2019.4.6", + "win_CSE_properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.7", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "[split(variables('winscripturi'), ' ')]" + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File config-win.ps1 -local_admin_user GEN-UNIQUE -local_admin_pass GEN-PASSWORD -ts_admin_un GEN-UNIQUE -ts_admin_pass GEN-PASSWORD -reg_zip GEN-UNIQUE -reg_country GEN-UNIQUE -reg_city GEN-UNIQUE -reg_last_name GEN-UNIQUE -reg_industry GEN-UNIQUE -eula Yes -reg_title GEN-UNIQUE -reg_phone GEN-UNIQUE -reg_company GEN-UNIQUE -reg_state GEN-UNIQUE -reg_email GEN-UNIQUE -reg_department GEN-UNIQUE -install_script_url [deployment().properties.templateLink.uri]scripts/config-win.ps1 parameters('_artifactsLocationSasToken') -license_key trial -reg_first_name GEN-UNIQUE -ts_build 2019.4.6" + } + }, + "lin_CSE_properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789 + }, + "protectedSettings": { + "commandToExecute": "bash ./config-linux.sh -u GEN-UNIQUE -p GEN-PASSWORD -h GEN-UNIQUE -e 2019.4.6 -i GEN-PASSWORD -j GEN-UNIQUE -k GEN-UNIQUE -l GEN-UNIQUE -m GEN-UNIQUE -n GEN-UNIQUE -o yes -q GEN-UNIQUE -r GEN-UNIQUE -s GEN-UNIQUE -t GEN-UNIQUE -x GEN-UNIQUE -v GEN-UNIQUE -g [uri(parameters('_artifactsLocation'), concat('scripts/automated-installer', parameters('_artifactsLocationSasToken')))] -y trial -f RHEL 7.7 -w GEN-UNIQUE", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/config-linux.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "LinuxsecurityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "0.0.0.0/0", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "mngagent-rule", + "properties": { + "description": "Allow Management", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8850", + "sourceAddressPrefix": "0.0.0.0/0", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + } + ], + "WindowssecurityRules": [ + { + "name": "rdp-rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "0.0.0.0/0", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "mngagent-rule", + "properties": { + "description": "Allow Management", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8850", + "sourceAddressPrefix": "0.0.0.0/0", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + } + ] + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "name": "pid-6c922c23-cc65-4b76-8290-74feb0f3c476", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "TABVNET", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "TABNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/TABNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "TABNSG", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "TABNSG" + }, + "properties": { + "securityRules": "[if(variables('os_is_linux'),variables('LinuxsecurityRules'),variables('WindowssecurityRules'))]" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat('tabpip', copyindex(1))]", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "PipLoop", + "count": 1 + }, + "dependsOn": [ + "TABVNET" + ], + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('a', variables('publicIpName'), copyIndex(1))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat('tabnic', copyIndex(1))]", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 1 + }, + "dependsOn": [ + "TABVNET", + "PipLoop" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses/', concat('tabpip', copyIndex(1)))]" + }, + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/TABVNET/Subnet-1" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[concat('tableau', copyIndex(1))]", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": 1 + }, + "dependsOn": [ + "nicLoop" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "[concat('tableauvm', copyIndex(1))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": "(imageReference)[parameters(OS)]", + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "diskSizeGB": 64, + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat('tabnic', copyIndex(1)))]" + } + ] + } + }, + "resources": [ + { + "condition": false, + "name": "[concat('tableau', copyIndex(1),'/CustomScript')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', concat('tableau', copyIndex(1)))]" + ], + "tags": { + "displayName": "customscriptextension" + }, + "properties": "[if(variables('os_is_linux'),variables('lin_CSE_properties'),variables('win_CSE_properties'))]" + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT561 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT561 new file mode 100644 index 0000000..3c70588 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT561 @@ -0,0 +1,355 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/tomcat/openjdk-tomcat-ubuntu-vm/azuredeploy.json", + "/application-workloads/tomcat/openjdk-tomcat-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962896799, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/tomcat/openjdk-tomcat-ubuntu-vm/azuredeploy.json", + "/application-workloads/tomcat/openjdk-tomcat-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT561", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT561", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "javaPackageName": { + "type": "string", + "defaultValue": "openjdk-13-jdk", + "allowedValues": [ + "openjdk-11-jdk", + "openjdk-12-jdk", + "openjdk-13-jdk" + ], + "metadata": { + "description": "java Package Name" + }, + "value": "openjdk-13-jdk" + }, + "tomcatPackageName": { + "type": "string", + "defaultValue": "tomcat9", + "allowedValues": [ + "tomcat7", + "tomcat8", + "tomcat9" + ], + "metadata": { + "description": "tomcat Package Name" + }, + "value": "tomcat9" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS", + "16.04-LTS", + "14.04.5-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "nsgName": "myNSG", + "vmName": "Tomcat", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "virtualNetworkName": "MyVNET", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET", + "Microsoft.Network/networkSecurityGroups/myNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myNSG" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-06-01", + "name": "myNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Web", + "properties": { + "description": "Allow Web", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 112, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "Tomcat", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "Tomcat", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "Tomcat_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "Tomcat/installscript", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/Tomcat" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('java-tomcat-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh java-tomcat-install.sh openjdk-13-jdk tomcat9" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT562 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT562 new file mode 100644 index 0000000..86752ba --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT562 @@ -0,0 +1,344 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/torque/torque-cluster/azuredeploy.json", + "/application-workloads/torque/torque-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962896858, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/torque/torque-cluster/azuredeploy.json", + "/application-workloads/torque/torque-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT562", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT562", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsName": { + "type": "string", + "metadata": { + "description": "Unique public dns name where the master node will be exposed" + }, + "value": "GEN-UNIQUE-8" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the nodes." + }, + "value": "Standard_D2_v3" + }, + "scaleNumber": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "This template create N worker node. Use scaleNumber to specify that N." + }, + "value": 2 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/torque-cluster/." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + } + } + }, + "variables": { + "imagePublisher": "OpenLogic", + "imageOffer": "CentOS", + "OSVersion": "6.10", + "publicIPAddressType": "Dynamic", + "publicIPAddressName": "publicips", + "masterVMName": "master", + "workerVMName": "worker", + "nicName": "nic", + "networkSettings": { + "virtualNetworkName": "virtualnetwork", + "addressPrefix": "10.0.0.0/16", + "subnet": { + "dse": { + "name": "dse", + "prefix": "10.0.0.0/24", + "vnet": "virtualnetwork" + } + }, + "statics": { + "workerRange": { + "base": "10.0.0.", + "start": 5 + }, + "master": "10.0.0.254" + } + }, + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).virtualNetworkName/(networkSettings).subnet.dse.name", + "installationCLI": "sh azuredeploy.sh master (networkSettings).statics.master worker (networkSettings).statics.workerRange.base (networkSettings).statics.workerRange.start 2 GEN-UNIQUE GEN-PASSWORD [deployment().properties.templatelink.uri]", + "storageAccountType": "Standard_LRS" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-8", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "(networkSettings).virtualNetworkName", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(networkSettings).addressPrefix" + ] + }, + "subnets": [ + { + "name": "(networkSettings).subnet.dse.name", + "properties": { + "addressPrefix": "(networkSettings).subnet.dse.prefix" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "publicips", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicips", + "Microsoft.Network/virtualNetworks//(networkSettings).virtualNetworkName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "(networkSettings).statics.master", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicips" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).virtualNetworkName/(networkSettings).subnet.dse.name" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "master", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-8", + "Microsoft.Network/networkInterfaces//nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "master", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.10", + "version": "latest" + }, + "osDisk": { + "name": "master_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "master/Installation", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//master" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('azuredeploy.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh azuredeploy.sh master (networkSettings).statics.master worker (networkSettings).statics.workerRange.base (networkSettings).statics.workerRange.start 2 GEN-UNIQUE GEN-PASSWORD [deployment().properties.templatelink.uri]" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicworkercopyindex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//(networkSettings).virtualNetworkName" + ], + "copy": { + "name": "foo", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(variables('networkSettings').statics.workerRange.base, copyindex(variables('networkSettings').statics.workerRange.start))]", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(networkSettings).virtualNetworkName/(networkSettings).subnet.dse.name" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "workercopyindex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-8", + "Microsoft.Network/networkInterfaces//nicworkercopyindex()" + ], + "copy": { + "name": "foo", + "count": 2 + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "workercopyindex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.10", + "version": "latest" + }, + "osDisk": { + "name": "workercopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicworkercopyindex()" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT563 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT563 new file mode 100644 index 0000000..de1aa80 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT563 @@ -0,0 +1,372 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/traefik/docker-portainer-traefik-windows-vm/azuredeploy.json", + "/application-workloads/traefik/docker-portainer-traefik-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962896873, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/traefik/docker-portainer-traefik-windows-vm/azuredeploy.json", + "/application-workloads/traefik/docker-portainer-traefik-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT563", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT563", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storagename": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Storage Account name" + } + }, + "vm-dns": { + "type": "string", + "defaultValue": "[concat('docker-',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "VM DNS label prefix" + } + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "Admin user for VM" + }, + "value": "GEN-UNIQUE-10" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for admin user" + }, + "value": "GEN-PASSWORD" + }, + "vmsize": { + "type": "string", + "defaultValue": "Standard_D4_v4", + "metadata": { + "description": "VM size for VM" + } + }, + "diskSizeGB": { + "type": "string", + "defaultValue": "256", + "metadata": { + "description": "Size of the attached data disk in GB" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Deployment location" + } + }, + "email": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Email address for Let's Encrypt setup in Traefik" + }, + "value": "your.name@email.com" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "SAS Token for accessing script path" + } + } + }, + "variables": { + "setupScriptUrl": "[uri(parameters('_artifactsLocation'),concat('setup.ps1',parameters('_artifactsLocationSasToken')))]", + "initScriptUrl": "[uri(parameters('_artifactsLocation'),concat('initialize.ps1',parameters('_artifactsLocationSasToken')))]", + "installDockerScriptUrl": "[uri(parameters('_artifactsLocation'),concat('InstallOrUpdateDockerEngine.ps1',parameters('_artifactsLocationSasToken')))]", + "templateUrl": "[uri(parameters('_artifactsLocation'),concat('configs/docker-compose.yml.template',parameters('_artifactsLocationSasToken')))]", + "sshdConfigUrl": "[uri(parameters('_artifactsLocation'),concat('configs/sshd_config_wpwd',parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-06-01", + "name": "[toLower(parameters('storagename'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "displayName": "Storage account" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-05-01", + "name": "publicIP", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('docker-',uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "rdp", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "https", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "applications", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080-8089", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-04-01", + "name": "virtualNetwork", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/nsg" + ], + "tags": { + "displayName": "Virtual Network" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-04-01", + "name": "nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIP", + "Microsoft.Network/virtualNetworks/virtualNetwork" + ], + "tags": { + "displayName": "Network Interface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork/subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-07-01", + "name": "dockerhost", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[concat('storage', uniqueString(resourceGroup().id))]", + "Microsoft.Network/networkInterfaces/nic" + ], + "tags": { + "displayName": "Docker host with Portainer and Traefik" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v4" + }, + "osProfile": { + "computerName": "dockerhost", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2022-datacenter-core-smalldisk-g2", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "256", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', parameters('storagename'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-07-01", + "name": "dockerhost/setupScript", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Setup script for portainer and Traefik" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/dockerhost" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('setup.ps1',parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'),concat('initialize.ps1',parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'),concat('InstallOrUpdateDockerEngine.ps1',parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'),concat('configs/sshd_config_wpwd',parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'),concat('configs/docker-compose.yml.template',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('powershell -ExecutionPolicy Bypass -file initialize.ps1 -mail ', parameters('email'), ' -publicdnsname ',reference(resourceId('Microsoft.Network/publicIPAddresses','publicIP')).dnsSettings.fqdn, ' -adminPwd ', parameters('adminPassword'))]" + } + } + } + ], + "outputs": { + "dockerhost-dns": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses','publicIP')).dnsSettings.fqdn]" + }, + "portainer-url": { + "type": "string", + "value": "[concat('https://', reference(resourceId('Microsoft.Network/publicIPAddresses','publicIP')).dnsSettings.fqdn, '/portainer/')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT564 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT564 new file mode 100644 index 0000000..73c104b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT564 @@ -0,0 +1,315 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/trailbot/stampery-trailbot-ubuntu/azuredeploy.json", + "/application-workloads/trailbot/stampery-trailbot-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962896885, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/trailbot/stampery-trailbot-ubuntu/azuredeploy.json", + "/application-workloads/trailbot/stampery-trailbot-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT564", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT564", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminEmail": { + "type": "string", + "metadata": { + "description": "Your email address." + }, + "value": "abc@xyz.com" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Hostname assigned to the Public IP, also used as the VM Name. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-11" + }, + "clientPubKey": { + "type": "string", + "metadata": { + "description": "Client public key. Please install Trailbot Client in your personal computer, open it and it will generate a key you must paste here." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSKU": "14.04.4-LTS", + "nicName": "TrailbotNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "TrailbotSubnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "storageAccountName": "[concat(uniquestring(resourceGroup().id, 'trailbot'))]", + "publicIPAddressName": "TrailbotPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-11", + "virtualNetworkName": "TrailbotVNET", + "scriptFolder": "scripts", + "scriptFileName": "install.sh", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/TrailbotVNET/TrailbotSubnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "TrailbotPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-11" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "TrailbotVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "TrailbotSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TrailbotNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//TrailbotPublicIP", + "Microsoft.Network/virtualNetworks//TrailbotVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/TrailbotPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/TrailbotVNET/TrailbotSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-11", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.4-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-11_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TrailbotNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), '2021-01-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-11/newuserscript", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-11" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('ScriptFolder'), '/', variables('ScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install.sh \"abc@xyz.com\" GEN-SSH-PUB-KEY" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT565 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT565 new file mode 100644 index 0000000..b0f6591 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT565 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/prereqs/prereq.azuredeploy.json", + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962896908, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/prereqs/prereq.azuredeploy.json", + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT565", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT565", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Name of Application Insights resource." + }, + "value": "new_app_insights_resource" + }, + "type": { + "type": "string", + "defaultValue": "web", + "metadata": { + "description": "Type of app you are deploying. This field is for legacy reasons and will not impact the type of App Insights resource you deploy." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "requestSource": { + "type": "string", + "defaultValue": "CustomDeployment", + "metadata": { + "description": "Source of Azure Resource Manager deployment" + } + } + }, + "resources": [ + { + "name": "new_app_insights_resource", + "type": "microsoft.insights/components", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02", + "properties": { + "ApplicationId": "new_app_insights_resource", + "Application_Type": "web", + "Flow_Type": "Redfield", + "Request_Source": "CustomDeployment" + } + } + ], + "outputs": { + "appName": { + "type": "string", + "value": "[parameters('name')]" + }, + "appInsightsResource": { + "type": "string", + "value": "[resourceId('microsoft.insights/components', parameters('name'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT566 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT566 new file mode 100644 index 0000000..2075c1e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT566 @@ -0,0 +1,670 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/azuredeploy.json", + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/azuredeploy.parameters.json" + ], + "timestamp": 1642962896923, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/azuredeploy.json", + "/application-workloads/umbraco/umbraco-cms-webapp-redis-cache/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT566", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.insights/metricalerts", + "microsoft.cache/redis", + "microsoft.insights/actiongroups", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT566", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "actionGroupName": { + "type": "string", + "metadata": { + "description": "The name of the action group." + }, + "value": "GEN-UNIQUE" + }, + "actionGroupShortName": { + "type": "string", + "metadata": { + "description": "The short name of the action group." + }, + "value": "acg" + }, + "appInsightsResource": { + "type": "string", + "metadata": { + "description": "The id of the underlying Application Insights resource." + }, + "value": "GET-PREREQ-appInsightsResource" + }, + "appName": { + "type": "string", + "metadata": { + "description": "Name of azure web app." + }, + "value": "GEN-UNIQUE" + }, + "appServiceTier": { + "type": "string", + "allowedValues": [ + "Standard", + "Premium" + ], + "defaultValue": "Standard", + "metadata": { + "description": "Choose either Standard or Premium Azure Web Apps pricing tiers. It defaults to Standard." + } + }, + "appServiceWorkerSize": { + "type": "string", + "allowedValues": [ + "0", + "1", + "2" + ], + "defaultValue": "0", + "metadata": { + "description": "Worker Size( 0=Small, 1=Medium, 2=Large )" + } + }, + "dbServerName": { + "type": "string", + "metadata": { + "description": "SQL Azure DB Server name" + }, + "value": "GEN-UNIQUE" + }, + "dbAdministratorLogin": { + "type": "string", + "metadata": { + "description": "SQL Azure DB administrator user login" + }, + "value": "umbracoadmin" + }, + "dbAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Database admin user password" + }, + "value": "GEN-PASSWORD" + }, + "dbName": { + "type": "string", + "metadata": { + "description": "Database Name" + }, + "value": "ExampleDatabase" + }, + "dbEdition": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "defaultValue": "Standard", + "metadata": { + "description": "SQL DB appServiceTier : Basic,Standard,Premium" + } + }, + "nonAdminDatabaseUsername": { + "type": "string", + "metadata": { + "description": "Non-admin Database User. Must be Unique" + }, + "value": "GEN-UNIQUE" + }, + "nonAdminDatabasePassword": { + "type": "securestring", + "metadata": { + "description": "Non-admin Database User password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Storage Account Type : Standard-LRS, Standard-GRS,Standard-RAGRS,Standard-ZRS" + }, + "value": "Standard_GRS" + }, + "redisCacheName": { + "type": "string", + "metadata": { + "description": "Redis Cache Name" + }, + "value": "GEN-UNIQUE" + }, + "redisCacheServiceTier": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard" + ], + "defaultValue": "Standard", + "metadata": { + "description": "Redis Cache appServiceTier - Basic , Standard" + } + }, + "emails": { + "type": "array", + "metadata": { + "description": "A list of strings representing the email addresses to send alerts to." + }, + "value": [ + "youremail@yourdomain.com" + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "packageUri": { + "type": "string", + "value": "https://auxmktplceprod.blob.core.windows.net/packages/ScalableUmbracoCms.WebPI.7.4.3.zip" + } + }, + "variables": { + "appInsightsRegion": "[resourceGroup().location]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]", + "umbracoAdminWebAppName": "GEN-UNIQUEadminapp", + "appServicePlanName": "GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "microsoft.insights/actionGroups", + "apiVersion": "2019-06-01", + "location": "global", + "properties": { + "groupShortName": "acg", + "enabled": true, + "emailReceivers": [ + { + "name": "test", + "emailAddress": null, + "useCommonAlertSchema": true + } + ] + } + }, + { + "apiVersion": "2014-04-01-preview", + "name": "GEN-UNIQUE", + "type": "Microsoft.Cache/Redis", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Standard", + "family": "C", + "capacity": 0 + }, + "redisVersion": "2.8", + "enableNonSslPort": true + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2014-04-01-preview", + "properties": { + "administratorLogin": "umbracoadmin", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "apiVersion": "2014-04-01-preview", + "name": "ExampleDatabase", + "type": "databases", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "edition": "Standard", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "requestedServiceObjectiveId": "F1173C43-91BD-4AAA-973C-54E79E15235B" + } + }, + { + "apiVersion": "2021-02-01-preview", + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Sql/servers//GEN-UNIQUE" + ], + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + } + ] + }, + { + "apiVersion": "2021-04-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_GRS" + } + }, + { + "apiVersion": "2014-06-01", + "name": "GEN-UNIQUEserviceplan", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "properties": { + "name": "GEN-UNIQUEserviceplan", + "appServiceTier": "Standard", + "workerSize": "0", + "numberOfWorkers": 1 + } + }, + { + "apiVersion": "2015-02-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.Web/Sites", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-related:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]": "empty" + }, + "dependsOn": [ + "Microsoft.Web/serverFarms//GEN-UNIQUEserviceplan" + ], + "properties": { + "name": "GEN-UNIQUE", + "serverFarmId": "Microsoft.Web/serverfarms//GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "apiVersion": "2014-06-01", + "name": "MSDeploy", + "type": "Extensions", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites/', parameters('appName'))]", + "[resourceId('Microsoft.Web/Sites/config', parameters('appName'), 'web')]", + "[resourceId('Microsoft.Sql/servers/databases', parameters('dbServerName'), parameters('dbName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "packageUri": "https://auxmktplceprod.blob.core.windows.net/packages/ScalableUmbracoCms.WebPI.7.4.3.zip", + "dbType": "SQL", + "connectionString": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', parameters('dbServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('dbName'), ';User Id=', parameters('dbAdministratorLogin'), '@', parameters('dbServerName'), ';Password=', parameters('dbAdministratorLoginPassword'), ';')]", + "setParameters": { + "Application Path": "GEN-UNIQUE", + "Database Server": "[reference(resourceId('Microsoft.Sql/servers/', parameters('dbServerName'))).fullyQualifiedDomainName]", + "Database Name": "ExampleDatabase", + "Database Username": "GEN-UNIQUE", + "Database Password": "GEN-PASSWORD", + "Database Administrator": "umbracoadmin", + "Database Administrator Password": "GEN-PASSWORD", + "azurestoragerootUrl": "[format('https://{0}.blob.{1}',variables('storageAccountName'), environment().suffixes.storage)]", + "azurestoragecontainerName": "media", + "azurestorageconnectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',concat(listKeys(variables('storageAccountName'),'2021-04-01').keys[0].value))]", + "rediscachehost": "GEN-UNIQUE.redis.cache.windows.net", + "rediscacheport": "6379", + "rediscacheaccessKey": "[listKeys(resourceId('Microsoft.Cache/Redis', parameters('redisCacheName')), '2020-06-01').primaryKey]", + "azurestoragecacheControl": "*|public, max-age=31536000;js|no-cache" + } + } + }, + { + "apiVersion": "2020-12-01", + "name": "connectionstrings", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUE", + "Microsoft.Sql/servers/databases/GEN-UNIQUE/ExampleDatabase", + "Microsoft.Web/Sites/Extensions/GEN-UNIQUE/MSDeploy" + ], + "properties": { + "defaultConnection": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', parameters('dbServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('dbName'), ';User Id=', parameters('dbAdministratorLogin'), '@', parameters('dbServerName'), ';Password=', parameters('dbAdministratorLoginPassword'), ';')]", + "type": "SQLAzure" + } + } + }, + { + "apiVersion": "2020-12-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites//GEN-UNIQUE" + ], + "properties": { + "phpVersion": "off", + "netFrameworkVersion": "v4.5", + "use32BitWorkerProcess": "true", + "webSocketsEnabled": true, + "alwaysOn": "true", + "httpLoggingEnabled": true, + "logsDirectorySizeLimit": 40 + } + } + ] + }, + { + "apiVersion": "2014-04-01", + "name": "GEN-UNIQUEserviceplan-scaleset", + "type": "microsoft.insights/autoscalesettings", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-link:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]": "Resource" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms//GEN-UNIQUEserviceplan" + ], + "properties": { + "profiles": [ + { + "name": "Default", + "capacity": { + "minimum": 1, + "maximum": 2, + "default": 1 + }, + "rules": [ + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 80 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT10M" + } + }, + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT1H", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT1H" + } + } + ] + } + ], + "enabled": false, + "name": "GEN-UNIQUEserviceplan-scaleset", + "targetResourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" + } + }, + { + "name": "ServerErrors GEN-UNIQUE", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "dependsOn": [ + "Microsoft.Web/sites//GEN-UNIQUE" + ], + "tags": { + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', parameters('appName'))]": "Resource" + }, + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "Microsoft.Web/sites//GEN-UNIQUE" + ], + "targetResourceType": "Microsoft.Web/sites", + "targetResourceRegion": "[resourceGroup().location]", + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "Microsoft.Web/sitesGEN-UNIQUE-5XX-errors", + "metricName": "Http5xx", + "operator": "GreaterThan", + "threshold": 0, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + }, + { + "name": "Microsoft.Web/sitesGEN-UNIQUE-403-errors", + "metricName": "Http403", + "operator": "GreaterThan", + "threshold": 0, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "GET-PREREQ-appInsightsResource", + "metricName": "GEN-UNIQUEserver errors" + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "name": "The average CPU is high across all the instances of GEN-UNIQUEserviceplan", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "tags": { + "[concat('hidden-link:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]": "Resource" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms//GEN-UNIQUEserviceplan" + ], + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "Microsoft.Web/serverfarms//GEN-UNIQUEserviceplan" + ], + "targetResourceType": "Microsoft.Web/serverfarms", + "targetResourceRegion": "[resourceGroup().location]", + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan-cpupercentage", + "metricName": "CpuPercentage", + "operator": "GreaterThan", + "threshold": 90, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "GET-PREREQ-appInsightsResource", + "metricName": "The average CPU is high across all the instances of GEN-UNIQUEserviceplan" + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "name": "LongHttpQueue GEN-UNIQUEserviceplan", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "tags": { + "[concat('hidden-link:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]": "Resource" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms//GEN-UNIQUEserviceplan" + ], + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "Microsoft.Web/serverfarms//GEN-UNIQUEserviceplan" + ], + "targetResourceType": "Microsoft.Web/serverfarms", + "targetResourceRegion": "[resourceGroup().location]", + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "Microsoft.Web/serverfarms/GEN-UNIQUEserviceplan-httpqueuelegth", + "metricName": "HttpQueueLength", + "operator": "GreaterThan", + "threshold": 100, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "GET-PREREQ-appInsightsResource", + "metricName": "The HTTP queue for the instances of GEN-UNIQUEserviceplan has a large number of pending requests." + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "apiVersion": "2015-02-01", + "name": "GEN-UNIQUEadminapp", + "type": "Microsoft.Web/Sites", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-related:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]": "empty" + }, + "dependsOn": [ + "Microsoft.Web/serverFarms//GEN-UNIQUEserviceplan" + ], + "properties": { + "name": "GEN-UNIQUEadminapp", + "serverFarmId": "Microsoft.Web/serverfarms//GEN-UNIQUEserviceplan" + }, + "resources": [ + { + "apiVersion": "2014-06-01", + "name": "MSDeploy", + "type": "Extensions", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites/', variables('umbracoAdminWebAppName'))]", + "[resourceId('Microsoft.Web/Sites/config',variables('umbracoAdminWebAppName'), 'web')]", + "[resourceId('Microsoft.Sql/servers/databases', parameters('dbServerName'), parameters('dbName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "packageUri": "https://auxmktplceprod.blob.core.windows.net/packages/ScalableUmbracoCms.WebPI.7.4.3.zip", + "dbType": "SQL", + "connectionString": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', parameters('dbServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('dbName'), ';User Id=', parameters('dbAdministratorLogin'), '@', parameters('dbServerName'), ';Password=', parameters('dbAdministratorLoginPassword'), ';')]", + "setParameters": { + "Application Path": "GEN-UNIQUEadminapp", + "Database Server": "[reference(resourceId('Microsoft.Sql/servers/', parameters('dbServerName'))).fullyQualifiedDomainName]", + "Database Name": "ExampleDatabase", + "Database Username": "GEN-UNIQUEadmin", + "Database Password": "GEN-PASSWORD", + "Database Administrator": "umbracoadmin", + "Database Administrator Password": "GEN-PASSWORD", + "azurestoragerootUrl": "[format('https://{0}.blob.{1}',variables('storageAccountName'), environment().suffixes.storage)]", + "azurestoragecontainerName": "media", + "azurestorageconnectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',concat(listKeys(variables('storageAccountName'),'2021-04-01').keys[0].value))]", + "rediscachehost": "GEN-UNIQUE.redis.cache.windows.net", + "rediscacheport": "6379", + "rediscacheaccessKey": "[listKeys(resourceId('Microsoft.Cache/Redis', parameters('redisCacheName')), '2020-06-01').primaryKey]", + "azurestoragecacheControl": "*|public, max-age=31536000;js|no-cache" + } + } + }, + { + "apiVersion": "2020-12-01", + "name": "connectionstrings", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites/GEN-UNIQUEadminapp", + "Microsoft.Sql/servers/databases/GEN-UNIQUE/ExampleDatabase", + "Microsoft.Web/Sites/Extensions/GEN-UNIQUEadminapp/MSDeploy" + ], + "properties": { + "defaultConnection": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', parameters('dbServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('dbName'), ';User Id=', parameters('dbAdministratorLogin'), '@', parameters('dbServerName'), ';Password=', parameters('dbAdministratorLoginPassword'), ';')]", + "type": "SQLAzure" + } + } + }, + { + "apiVersion": "2020-12-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites//GEN-UNIQUEadminapp" + ], + "properties": { + "phpVersion": "off", + "netFrameworkVersion": "v4.5", + "use32BitWorkerProcess": "true", + "webSocketsEnabled": true, + "alwaysOn": "true", + "httpLoggingEnabled": true, + "logsDirectorySizeLimit": 40 + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT567 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT567 new file mode 100644 index 0000000..b817a3c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT567 @@ -0,0 +1,383 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/umbraco/umbraco-webapp-simple/azuredeploy.json", + "/application-workloads/umbraco/umbraco-webapp-simple/azuredeploy.parameters.json" + ], + "timestamp": 1642962896938, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/umbraco/umbraco-webapp-simple/azuredeploy.json", + "/application-workloads/umbraco/umbraco-webapp-simple/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT567", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT567", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "defaultValue": "[concat('umbraco', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of azure web app" + } + }, + "servicePlanTier": { + "type": "string", + "allowedValues": [ + "Standard", + "Premium", + "PremiumV2" + ], + "defaultValue": "PremiumV2", + "metadata": { + "description": "Tier for Service Plan" + } + }, + "servicePlanSku": { + "type": "string", + "allowedValues": [ + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P1V2", + "P2V2", + "P3V3" + ], + "defaultValue": "P1V2", + "metadata": { + "description": "Size for Service Plan" + } + }, + "dbServerName": { + "type": "string", + "defaultValue": "[concat('umbraco', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "SQL Azure DB Server name" + } + }, + "dbAdministratorLogin": { + "type": "string", + "metadata": { + "description": "SQL Azure DB administrator user login" + }, + "value": "GEN-UNIQUE" + }, + "dbAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Database admin user password" + }, + "value": "GEN-PASSWORD" + }, + "dbName": { + "type": "string", + "defaultValue": "umbraco-db", + "metadata": { + "description": "Database Name" + } + }, + "nonAdminDatabaseUserName": { + "type": "string", + "metadata": { + "description": "Non-admin Database User. Must be Unique" + }, + "value": "GEN-UNIQUE-8" + }, + "nonAdminDatabasePassword": { + "type": "securestring", + "metadata": { + "description": "Non-admin Database User password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Storage Account Type : Standard-LRS, Standard-GRS,Standard-RAGRS,Standard-ZRS" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]", + "appServicePlanName": "[concat('umbraco', uniqueString(resourceGroup().id))]serviceplan" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "name": "[concat('umbraco', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "type": "databases", + "apiVersion": "2020-02-02-preview", + "name": "umbraco-db", + "location": "[resourceGroup().location]", + "sku": { + "name": "S0", + "tier": "Standard" + }, + "kind": "v12.0,user", + "dependsOn": [ + "Microsoft.SQL/Servers/[concat('umbraco', uniqueString(resourceGroup().id))]" + ], + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS" + } + }, + { + "apiVersion": "2020-02-02-preview", + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.SQL/Servers/[concat('umbraco', uniqueString(resourceGroup().id))]" + ], + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + } + } + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Web/serverFarms", + "apiVersion": "2020-06-01", + "name": "[variables('appServicePlanName')]", + "location": "[resourceGroup().location]", + "sku": { + "Tier": "PremiumV2", + "Name": "P1V2" + }, + "kind": "linux", + "properties": {} + }, + { + "type": "Microsoft.Web/Sites", + "apiVersion": "2020-06-01", + "name": "[concat('umbraco', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName')))]": "empty" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]" + ], + "properties": { + "name": "[concat('umbraco', uniqueString(resourceGroup().id))]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]" + }, + "resources": [ + { + "type": "Extensions", + "apiVersion": "2020-06-01", + "name": "MSDeploy", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', parameters('appName'))]", + "[resourceId('Microsoft.Web/Sites/config', parameters('appName'), 'web')]", + "[resourceId('Microsoft.SQL/Servers/databases', parameters('dbServerName'), parameters('dbName'))]", + "[variables('storageAccountName')]" + ], + "properties": { + "packageUri": "[uri(parameters('_artifactsLocation'), concat('UmbracoCms.WebPI.7.4.3.zip', parameters('_artifactsLocationSasToken')))]", + "dbType": "SQL", + "connectionString": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.SQL/servers', parameters('dbServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('dbName'), ';User Id=', parameters('dbAdministratorLogin'), '@', parameters('dbServerName'), ';Password=', parameters('dbAdministratorLoginPassword'), ';')]", + "setParameters": { + "Application Path": "[concat('umbraco', uniqueString(resourceGroup().id))]", + "Database Server": "[reference(resourceId('Microsoft.SQL/servers', parameters('dbServerName'))).fullyQualifiedDomainName]", + "Database Name": "umbraco-db", + "Database Username": "GEN-UNIQUE-8", + "Database Password": "GEN-PASSWORD", + "Database Administrator": "GEN-UNIQUE", + "Database Administrator Password": "GEN-PASSWORD" + } + } + }, + { + "type": "config", + "apiVersion": "2020-06-01", + "name": "connectionstrings", + "dependsOn": [ + "Microsoft.Web/Sites/[concat('umbraco', uniqueString(resourceGroup().id))]", + "Microsoft.SQL/Servers/databases/[concat('umbraco', uniqueString(resourceGroup().id))]/umbraco-db", + "Microsoft.Web/Sites/extensions/[concat('umbraco', uniqueString(resourceGroup().id))]/MSDeploy" + ], + "properties": { + "defaultConnection": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.SQL/servers', parameters('dbServerName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('dbName'), ';User Id=', parameters('dbAdministratorLogin'), '@', parameters('dbServerName'), ';Password=', parameters('dbAdministratorLoginPassword'), ';')]", + "type": "SQLAzure" + } + } + }, + { + "apiVersion": "2020-06-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/sites/[concat('umbraco', uniqueString(resourceGroup().id))]" + ], + "properties": { + "phpVersion": "off", + "netFrameworkVersion": "v4.5", + "use32BitWorkerProcess": "true", + "webSocketsEnabled": true, + "alwaysOn": "true", + "httpLoggingEnabled": true, + "logsDirectorySizeLimit": 40 + } + } + ] + }, + { + "type": "microsoft.insights/autoscalesettings", + "apiVersion": "2015-04-01", + "name": "[concat(variables('appServicePlanName'), '-scaleset')]", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName')))]": "Resource" + }, + "dependsOn": [ + "[variables('appServicePlanName')]" + ], + "properties": { + "profiles": [ + { + "name": "Default", + "capacity": { + "minimum": "1", + "maximum": "2", + "default": "1" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 80 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT10M" + } + }, + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT1H", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1H" + } + } + ] + } + ], + "enabled": false, + "name": "[concat(variables('appServicePlanName'), '-scaleset')]", + "targetResourceUri": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]" + } + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[concat('umbraco', uniqueString(resourceGroup().id))]-appin", + "location": "[resourceGroup().location]", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites', parameters('appName')))]": "Resource" + }, + "dependsOn": [ + "Microsoft.Web/sites/[concat('umbraco', uniqueString(resourceGroup().id))]" + ], + "properties": { + "applicationId": "[concat('umbraco', uniqueString(resourceGroup().id))]", + "Application_Type": "web" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT568 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT568 new file mode 100644 index 0000000..ebefb10 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT568 @@ -0,0 +1,282 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/az-400-dev-env/azuredeploy.json", + "/application-workloads/visualstudio/az-400-dev-env/azuredeploy.parameters.json" + ], + "timestamp": 1642962896980, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/az-400-dev-env/azuredeploy.json", + "/application-workloads/visualstudio/az-400-dev-env/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT568", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT568", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUser": { + "type": "string", + "metadata": { + "description": "Admin Username for Lab VM" + }, + "value": "GEN-UNIQUE-10" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for admin user" + }, + "value": "GEN-PASSWORD" + }, + "vmsize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "allowedValues": [ + "Standard_D4s_v3", + "Standard_D8s_v3" + ], + "metadata": { + "description": "VM Size for lab-vm" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location to deploy current resource" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "SAS Token for accessing script path" + } + } + }, + "variables": { + "scriptUrl": "[uri(parameters('_artifactsLocation'),concat('installscript.ps1',parameters('_artifactsLocationSasToken')))]", + "storagename": "[concat('labvmstrg', uniqueString(resourceGroup().id))]", + "vm-dns": "[concat('labvm-',uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[toLower(variables('storagename'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "displayName": "VS LabVM Storage Account" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-11-01", + "name": "vslab-PublicIP", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('vm-dns')]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "vslab-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "nsgRule1", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-04-01", + "name": "vslab-VirtualNetwork", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/vslab-nsg" + ], + "tags": { + "displayName": "vslab-VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "vslab-vnet-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vslab-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-04-01", + "name": "vslab-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/vslab-PublicIP", + "Microsoft.Network/virtualNetworks/vslab-VirtualNetwork" + ], + "tags": { + "displayName": "VSLab Network Interface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vslab-PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vslab-VirtualNetwork/vslab-vnet-subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "vsLab", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storagename'))]", + "[resourceId('Microsoft.Network/networkInterfaces', 'vslab-nic')]" + ], + "tags": { + "displayName": "VS2019 Lab VM" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D8s_v3" + }, + "osProfile": { + "computerName": "LabVM", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "VisualStudio", + "sku": "VS-2017-Comm-Latest-WS2016", + "version": "latest" + }, + "osDisk": { + "name": "LabVMOSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vslab-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "vsLab/installscript1", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Install script for LabVM" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vsLab" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('installscript.ps1',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Bypass -file installscript.ps1 -UserName GEN-UNIQUE-10" + } + } + } + ], + "outputs": { + "lab-vm-dns": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses','vslab-PublicIP')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT569 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT569 new file mode 100644 index 0000000..0207b2d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT569 @@ -0,0 +1,297 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/tfs-basic-domain/azuredeploy.json", + "/application-workloads/visualstudio/tfs-basic-domain/azuredeploy.parameters.json" + ], + "timestamp": 1642962897006, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/tfs-basic-domain/azuredeploy.json", + "/application-workloads/visualstudio/tfs-basic-domain/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT569", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT569", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the VM to create." + }, + "defaultValue": "tfsvm" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the VM to create" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator account to create" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account" + }, + "value": "GEN-PASSWORD" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "The FQDN of the domain to create" + }, + "value": "contoso.local" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "publicIpName": "tfsvmpip", + "vNetName": "tfsvmvnet", + "subnetName": "tfsvmsubnet", + "networkInterfaceName": "tfsvmnic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/tfsvmvnet/tfsvmsubnet", + "networkSecurityGroupName": "defaultNSG" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "tfsvmpip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "defaultNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-80", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-3389", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "tfsvmvnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/defaultNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "tfsvmsubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/defaultNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "tfsvmnic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//tfsvmpip", + "Microsoft.Network/virtualNetworks//tfsvmvnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/tfsvmpip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/tfsvmvnet/tfsvmsubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "tfsvm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//tfsvmnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "tfsvm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "tfsBasicManagedOSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/tfsvmnic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "tfsvm/CreateDC", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/tfsvm" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateDC.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "CreateDC.ps1\\CreateDC", + "Properties": { + "DomainName": "contoso.local", + "AdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "tfsvm/ConfigureTfs", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/tfsvm/CreateDC" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.7", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/ConfigureTfsBasic.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File scripts/ConfigureTfsBasic.ps1" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT57 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT57 new file mode 100644 index 0000000..bb55574 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT57 @@ -0,0 +1,79 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/virtualNetworksResource.json" + ], + "timestamp": 1642962884367, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-automate-ha/nested/virtualNetworksResource.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT57", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT57", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object" + } + }, + "variables": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "apiVersion": "networkSettings", + "location": "networkSettings", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSettings" + } + } + } + ] + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT570 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT570 new file mode 100644 index 0000000..60a1ea9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT570 @@ -0,0 +1,259 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/tfs-basic-workgroup/azuredeploy.json", + "/application-workloads/visualstudio/tfs-basic-workgroup/azuredeploy.parameters.json" + ], + "timestamp": 1642962897019, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/tfs-basic-workgroup/azuredeploy.json", + "/application-workloads/visualstudio/tfs-basic-workgroup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT570", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT570", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the VM to create" + }, + "defaultValue": "tfsvm" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the VM to create" + }, + "defaultValue": "Standard_D2s_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator account to create" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the local administrator" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "publicIpName": "tfsWorkgroupPublicIp", + "vNetName": "tfsWorkgroupVNet", + "subnetName": "tfsWorkgroupSubnet", + "networkInterfaceName": "tfsvmnic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/tfsWorkgroupVNet/tfsWorkgroupSubnet", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "tfsWorkgroupPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-80", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-3389", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "tfsWorkgroupVNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "tfsWorkgroupSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "tfsvmnic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//tfsWorkgroupPublicIp", + "Microsoft.Network/virtualNetworks//tfsWorkgroupVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/tfsWorkgroupPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/tfsWorkgroupVNet/tfsWorkgroupSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "tfsvm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//tfsvmnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "tfsvm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "tfsWorkgroupManagedOSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/tfsvmnic" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "tfsvm/ConfigureTfs", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//tfsvm" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.7", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/ConfigureTfsWorkgroup.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File scripts/ConfigureTfsWorkgroup.ps1" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT571 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT571 new file mode 100644 index 0000000..d16428f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT571 @@ -0,0 +1,302 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/ubuntu-mate-desktop-vscode/azuredeploy.json", + "/application-workloads/visualstudio/ubuntu-mate-desktop-vscode/azuredeploy.parameters.json" + ], + "timestamp": 1642962897031, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/ubuntu-mate-desktop-vscode/azuredeploy.json", + "/application-workloads/visualstudio/ubuntu-mate-desktop-vscode/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT571", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT571", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.5-LTS, 15.10." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "nsgName": "myNSG", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "virtualNetworkName": "MyVNET", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET", + "Microsoft.Network/networkSecurityGroups/myNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myNSG" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-06-01", + "name": "myNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "RDP", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/installscript", + "apiVersion": "2019-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('infra.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash infra.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT572 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT572 new file mode 100644 index 0000000..fedc700 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT572 @@ -0,0 +1,259 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962897041, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT572", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT572", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.2", + "parameters": { + "vmAdminUserName": { + "type": "string", + "metadata": { + "description": "VM admin user name" + }, + "value": "ghuser" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "VM admin password. The supplied password must be between 8-123 characters long and must satisfy at least 3 of password complexity requirements from the following: 1) Contains an uppercase character 2) Contains a lowercase character 3) Contains a numeric digit 4) Contains a special character." + }, + "value": "GEN-PASSWORD" + }, + "vmVisualStudioVersion": { + "type": "string", + "defaultValue": "VS-2017-Ent-Latest-WS2016", + "allowedValues": [ + "VS-2015-Comm-VSU3-AzureSDK-29-WS2012R2", + "VS-2015-Comm-VSU3-AzureSDK-291-WS2012R2", + "VS-2015-Ent-VSU3-AzureSDK-29-WS2012R2", + "VS-2017-Comm-Latest-Preview-WS2016", + "VS-2017-Comm-Latest-WS2016", + "VS-2017-Comm-WS2016", + "VS-2017-Ent-Latest-Preview-WS2016", + "VS-2017-Ent-Latest-WS2016", + "VS-2017-Ent-WS2016", + "vs-2019-preview-ws2016" + ], + "metadata": { + "description": "Which version of Visual Studio you would like to deploy" + } + }, + "vmIPPublicDnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Globally unique naming prefix for per region for the public IP address. For instance, myVMuniqueIP.westus.cloudapp.azure.com. It must conform to the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE-13" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM Size" + } + } + }, + "variables": { + "vmName": "[concat(substring(parameters('vmVisualStudioVersion'),0,8), 'vm')]", + "vnet01Prefix": "10.0.0.0/16", + "vnet01Subnet1Name": "Subnet-1", + "vnetName": "vnet", + "vnet01Subnet1Prefix": "10.0.0.0/24", + "vmImagePublisher": "MicrosoftVisualStudio", + "vmImageOffer": "VisualStudio", + "vmSubnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/Vnet01Subnet1Name", + "vmNicName": "[concat(variables('vmName'), '-nic')]", + "vmIP01Name": "VMIP01", + "networkSecurityGroupName": "Subnet-1-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('vnet01Subnet1Name')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "Subnet-1-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "vnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2019-11-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + ], + "tags": { + "displayName": "VNet01" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + } + } + } + ] + } + }, + { + "name": "[variables('vmNicName')]", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-03-01", + "dependsOn": [ + "vnet", + "VMIP01" + ], + "tags": { + "displayName": "VMNic01" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/Vnet01Subnet1Name" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VMIP01" + } + } + } + ] + } + }, + { + "name": "[variables('vmName')]", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2019-12-01", + "dependsOn": [ + "[variables('vmNicName')]" + ], + "tags": { + "displayName": "VM01" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "vmAdminUsername", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "VisualStudio", + "sku": "VS-2017-Ent-Latest-WS2016", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('vmNicName'))]" + } + ] + } + }, + "resources": [] + }, + { + "name": "VMIP01", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-03-01", + "tags": { + "displayName": "VMIP01" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + } + ], + "outputs": { + "vm-fqdn": { + "type": "string", + "value": "[reference(variables('vmIP01Name')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT573 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT573 new file mode 100644 index 0000000..367aaf8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT573 @@ -0,0 +1,305 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm-chocolatey/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm-chocolatey/azuredeploy.parameters.json" + ], + "timestamp": 1642962897070, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm-chocolatey/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm-chocolatey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT573", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT573", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.2", + "parameters": { + "vmAdminUserName": { + "type": "string", + "metadata": { + "description": "VM admin user name" + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "VM admin password. The supplied password must be between 8-123 characters long and must satisfy at least 3 of password complexity requirements from the following: 1) Contains an uppercase character 2) Contains a lowercase character 3) Contains a numeric digit 4) Contains a special character." + }, + "value": "GEN-PASSWORD" + }, + "vmVisualStudioVersion": { + "type": "string", + "defaultValue": "VS-2017-Ent-Latest-WS2016", + "allowedValues": [ + "VS-2015-Comm-VSU3-AzureSDK-29-WS2012R2", + "VS-2015-Comm-VSU3-AzureSDK-291-WS2012R2", + "VS-2015-Ent-VSU3-AzureSDK-29-WS2012R2", + "VS-2017-Comm-Latest-Preview-WS2016", + "VS-2017-Comm-Latest-WS2016", + "VS-2017-Comm-WS2016", + "VS-2017-Ent-Latest-Preview-WS2016", + "VS-2017-Ent-Latest-WS2016", + "VS-2017-Ent-WS2016", + "vs-2019-preview-ws2016" + ], + "metadata": { + "description": "Which version of Visual Studio you would like to deploy" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Public uri location of PowerShell Chocolately setup script" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "chocoPackages": { + "type": "string", + "metadata": { + "description": "List of Chocolatey packages to install separated by a semi-colon eg. linqpad;sysinternals" + }, + "value": "sysinternals" + }, + "vmIPPublicDnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Globally unique naming prefix for per region for the public IP address. For instance, myVMuniqueIP.westus.cloudapp.azure.com. It must conform to the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE-13" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM Size" + } + } + }, + "variables": { + "vmName": "[concat(substring(parameters('vmVisualStudioVersion'),0,8), 'vm')]", + "vnet01Prefix": "10.0.0.0/16", + "vnet01Subnet1Name": "Subnet-1", + "vnetName": "vnet", + "vnet01Subnet1Prefix": "10.0.0.0/24", + "vmImagePublisher": "MicrosoftVisualStudio", + "vmImageOffer": "VisualStudio", + "vmSubnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/Vnet01Subnet1Name", + "vmNicName": "[concat(variables('vmName'), '-nic')]", + "vmIP01Name": "VMIP01", + "networkSecurityGroupName": "Subnet-1-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('vnet01Subnet1Name')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "Subnet-1-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "vnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + ], + "tags": { + "displayName": "VNet01" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + } + } + } + ] + } + }, + { + "name": "[variables('vmNicName')]", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet", + "Microsoft.Network/publicIPAddresses/VMIP01" + ], + "tags": { + "displayName": "VMNic01" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/Vnet01Subnet1Name" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VMIP01" + } + } + } + ] + } + }, + { + "name": "[variables('vmName')]", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[variables('vmNicName')]" + ], + "tags": { + "displayName": "VM01" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "vmAdminUsername", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "VisualStudio", + "sku": "VS-2017-Ent-Latest-WS2016", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('vmNicName'))]" + } + ] + } + }, + "resources": [ + { + "name": "SetupChocolatey", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines/', variables('vmName'))]" + ], + "tags": { + "displayName": "SetupChocolatey" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/SetupChocolatey.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy bypass -File scripts/SetupChocolatey.ps1 -chocoPackages sysinternals" + } + } + } + ] + }, + { + "name": "VMIP01", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "tags": { + "displayName": "VMIP01" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + } + ], + "outputs": { + "vm-fqdn": { + "type": "string", + "value": "[reference(variables('vmIP01Name')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT574 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT574 new file mode 100644 index 0000000..71957a9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT574 @@ -0,0 +1,315 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm-o365/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm-o365/azuredeploy.parameters.json" + ], + "timestamp": 1642962897088, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-dev-vm-o365/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-dev-vm-o365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT574", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT574", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.2", + "parameters": { + "vmAdminUserName": { + "type": "string", + "metadata": { + "description": "VM admin user name." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "VM admin password. The supplied password must be between 8-123 characters long and must satisfy at least 3 of password complexity requirements from the following: 1) Contains an uppercase character 2) Contains a lowercase character 3) Contains a numeric digit 4) Contains a special character." + }, + "value": "GEN-PASSWORD" + }, + "officeVersion": { + "type": "string", + "defaultValue": "Office2016", + "allowedValues": [ + "Office2016", + "Office2013" + ], + "metadata": { + "description": "Which version of Office would you would like to deploy" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "vmVisualStudioVersion": { + "type": "string", + "defaultValue": "VS-2017-Ent-Latest-WS2016", + "allowedValues": [ + "VS-2015-Comm-VSU3-AzureSDK-29-WS2012R2", + "VS-2015-Comm-VSU3-AzureSDK-291-WS2012R2", + "VS-2015-Ent-VSU3-AzureSDK-29-WS2012R2", + "VS-2017-Comm-Latest-Preview-WS2016", + "VS-2017-Comm-Latest-WS2016", + "VS-2017-Comm-WS2016", + "VS-2017-Ent-Latest-Preview-WS2016", + "VS-2017-Ent-Latest-WS2016", + "VS-2017-Ent-WS2016", + "vs-2019-preview-ws2016" + ], + "metadata": { + "description": "Which version of Visual Studio you would like to deploy" + } + }, + "vmIPPublicDnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Globally unique naming prefix for per region for the public IP address. For instance, myVMuniqueIP.westus.cloudapp.azure.com. It must conform to the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE-13" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM Size" + } + } + }, + "variables": { + "vmName": "[concat(substring(parameters('vmVisualStudioVersion'),0,8), 'vm')]", + "vnet01Prefix": "10.0.0.0/16", + "vnet01Subnet1Name": "Subnet-1", + "vnetName": "vnet", + "vnet01Subnet1Prefix": "10.0.0.0/24", + "vmImagePublisher": "MicrosoftVisualStudio", + "vmImageOffer": "VisualStudio", + "vmSubnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet/Vnet01Subnet1Name", + "vmNicName": "[concat(variables('vmName'), '-nic')]", + "vmIP01Name": "VMIP01", + "networkSecurityGroupName": "Subnet-1-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('vnet01Subnet1Name')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "Subnet-1-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "vnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + ], + "tags": { + "displayName": "VNet01" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + } + } + } + ] + } + }, + { + "name": "[variables('vmNicName')]", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnet", + "Microsoft.Network/publicIPAddresses/VMIP01" + ], + "tags": { + "displayName": "VMNic01" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet/Vnet01Subnet1Name" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VMIP01" + } + } + } + ] + } + }, + { + "name": "[variables('vmName')]", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', variables('vmNicName'))]" + ], + "tags": { + "displayName": "VM01" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "vmAdminUsername", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "VisualStudio", + "sku": "VS-2017-Ent-Latest-WS2016", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('vmNicName'))]" + } + ] + } + }, + "resources": [ + { + "name": "SetupOffice", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]" + ], + "tags": { + "displayName": "SetupOffice" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('scripts/DeployO365SilentWithVersion.ps1' , parameters('_artifactsLocationSasToken')))]", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/DefaultConfiguration.xml", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Office2013Setup.exe", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Office2016Setup.exe", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Edit-OfficeConfigurationFile.ps1", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Generate-ODTConfigurationXML.ps1", + "https://raw.githubusercontent.com/officedev/Office-IT-Pro-Deployment-Scripts/master/Office-ProPlus-Deployment/Deploy-OfficeClickToRun/Install-OfficeClickToRun.ps1" + ], + "commandToExecute": "powershell -ExecutionPolicy bypass -File scripts/DeployO365SilentWithVersion.ps1 -OfficeVersion Office2016" + } + } + } + ] + }, + { + "name": "VMIP01", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "tags": { + "displayName": "VMIP01" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + } + ], + "outputs": { + "vm-fqdn": { + "type": "string", + "value": "[reference(variables('vmIP01Name')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT575 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT575 new file mode 100644 index 0000000..50904aa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT575 @@ -0,0 +1,111 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/visual-studio-team-services-project-create/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-team-services-project-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962897125, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-team-services-project-create/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-team-services-project-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT575", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.visualstudio/account" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT575", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accountName": { + "type": "string", + "metadata": { + "description": "The name of the Visual Studio Team Services account, if it doesn't exist it will be created." + }, + "value": "GEN-UNIQUE" + }, + "projectName": { + "type": "string", + "metadata": { + "description": "The name of the Visual Studio Team Services project." + }, + "value": "GEN-UNIQUE" + }, + "processTemplateId": { + "type": "string", + "defaultValue": "6B724908-EF14-45CF-84F8-768B5384DA45", + "allowedValues": [ + "6B724908-EF14-45CF-84F8-768B5384DA45", + "ADCC42AB-9882-485E-A3ED-7678F01F66BC", + "27450541-8E31-4150-9947-DC59F998FC01" + ], + "metadata": { + "description": "Scrum: 6B724908-EF14-45CF-84F8-768B5384DA45 / Agile: ADCC42AB-9882-485E-A3ED-7678F01F66BC / CMMI: 27450541-8E31-4150-9947-DC59F998FC01" + }, + "value": "6B724908-EF14-45CF-84F8-768B5384DA45" + }, + "versionControlOption": { + "type": "string", + "defaultValue": "Git", + "allowedValues": [ + "Git", + "Tfvc" + ], + "metadata": { + "description": "The version control of the Visual Studio Team Services project's source code: Git or Tfvc." + }, + "value": "Git" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "microsoft.visualstudio/account", + "location": "[resourceGroup().location]", + "apiVersion": "2014-04-01-preview", + "properties": { + "operationType": "Create", + "accountName": "GEN-UNIQUE" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "project", + "location": "[resourceGroup().location]", + "apiVersion": "2014-04-01-preview", + "dependsOn": [ + "microsoft.visualstudio/account/GEN-UNIQUE" + ], + "properties": { + "ProcessTemplateId": "6B724908-EF14-45CF-84F8-768B5384DA45", + "VersionControlOption": "Git" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT576 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT576 new file mode 100644 index 0000000..662e68c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT576 @@ -0,0 +1,318 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/visual-studio-vstsbuildagent-vm/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-vstsbuildagent-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962897138, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/visual-studio-vstsbuildagent-vm/azuredeploy.json", + "/application-workloads/visualstudio/visual-studio-vstsbuildagent-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT576", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT576", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "Standard_LRS" + ], + "metadata": { + "description": "Which type of storage you want to use" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Local name for the VM can be whatever you want" + }, + "value": "GEN-UNIQUE-10" + }, + "vmAdminUserName": { + "type": "string", + "metadata": { + "description": "VM admin user name" + }, + "value": "GEN-UNIQUE-10" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "VM admin password. The supplied password must be between 8-123 characters long and must satisfy at least 3 of password complexity requirements from the following: 1) Contains an uppercase character 2) Contains a lowercase character 3) Contains a numeric digit 4) Contains a special character." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Desired Size of the VM. Any valid option accepted but if you choose premium storage type you must choose a DS class VM size." + }, + "defaultValue": "Standard_D2_v3" + }, + "vmVisualStudioVersion": { + "type": "string", + "defaultValue": "VS-2017-Ent-Latest-WS2016", + "allowedValues": [ + "VS-2015-Comm-VSU3-AzureSDK-29-WS2012R2", + "VS-2015-Comm-VSU3-AzureSDK-291-WS2012R2", + "VS-2015-Ent-VSU3-AzureSDK-29-WS2012R2", + "VS-2017-Comm-Latest-Preview-WS2016", + "VS-2017-Comm-Latest-WS2016", + "VS-2017-Comm-WS2016", + "VS-2017-Ent-Latest-Preview-WS2016", + "VS-2017-Ent-Latest-WS2016", + "VS-2017-Ent-WS2016", + "vs-2019-preview-ws2016" + ], + "metadata": { + "description": "Which version of Visual Studio you would like to deploy" + } + }, + "vmIPPublicDnsName": { + "type": "string", + "metadata": { + "description": "Globally unique name for per region for the public IP address. For instance, myVMuniqueIP.westus.cloudapp.azure.com. It must conform to the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE" + }, + "vstsAccount": { + "type": "string", + "metadata": { + "description": "The Visual Studio Team Services account name, that is, the first part of your VSTSAccount.visualstudio.com" + }, + "value": "GEN-UNIQUE" + }, + "personalAccessToken": { + "type": "securestring", + "metadata": { + "description": "The personal access token to connect to VSTS" + }, + "value": "GEN-PASSWORD" + }, + "poolName": { + "type": "string", + "defaultValue": "Default", + "metadata": { + "description": "The Visual Studio Team Services build agent pool for this build agent to join. Use 'Default' if you don't have a separate pool." + }, + "value": "GEN-UNIQUE" + }, + "enableAutologon": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable autologon to run the build agent in interactive mode that can sustain machine reboots.
Set this to true if the agents will be used to run UI tests." + }, + "value": false + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storage')]", + "vnet01Prefix": "10.0.0.0/16", + "vnet01Subnet1Name": "Subnet-1", + "vnet01Subnet1Prefix": "10.0.0.0/24", + "vmImagePublisher": "MicrosoftVisualStudio", + "vmImageOffer": "VisualStudio", + "vmSubnetRef": "Microsoft.Network/virtualNetworks/subnets/Vnet01/Subnet-1", + "vmNicName": "GEN-UNIQUE-10NetworkInterface", + "vmIP01Name": "VMIP01", + "vstsAgentName": "agent-GEN-UNIQUE-10", + "vstsParameters": "-vstsAccount GEN-UNIQUE -personalAccessToken GEN-PASSWORD -AgentName agent-GEN-UNIQUE-10 -PoolName GEN-UNIQUE -runAsAutoLogon parameters('enableAutologon') -vmAdminUserName vmAdminUsername -vmAdminPassword GEN-PASSWORD" + }, + "resources": [ + { + "name": "[variables('storageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-01-01", + "tags": { + "displayName": "Storage01" + }, + "sku": { + "name": "Premium_LRS" + } + }, + { + "name": "VNet01", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "tags": { + "displayName": "Vnet01" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-10NetworkInterface", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//Vnet01", + "Microsoft.Network/publicIPAddresses//VMIP01" + ], + "tags": { + "displayName": "VMNic01" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/Vnet01/Subnet-1" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VMIP01" + } + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('vmNicName'))]" + ], + "tags": { + "displayName": "VM01" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "VisualStudio", + "sku": "VS-2017-Ent-Latest-WS2016", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-10_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10NetworkInterface" + } + ] + } + }, + "resources": [ + { + "name": "CustomScript", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-10" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('InstallVSTSAgent.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -Command \"& {./InstallVstsAgent.ps1 -vstsAccount GEN-UNIQUE -personalAccessToken GEN-PASSWORD -AgentName agent-GEN-UNIQUE-10 -PoolName GEN-UNIQUE -runAsAutoLogon parameters('enableAutologon') -vmAdminUserName vmAdminUsername -vmAdminPassword GEN-PASSWORD}\"" + } + } + } + ] + }, + { + "name": "VMIP01", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "tags": { + "displayName": "VMIP01" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT577 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT577 new file mode 100644 index 0000000..ec57b2f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT577 @@ -0,0 +1,407 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/vm-vsts-agent/azuredeploy.json", + "/application-workloads/visualstudio/vm-vsts-agent/azuredeploy.parameters.json" + ], + "timestamp": 1642962897191, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vm-vsts-agent/azuredeploy.json", + "/application-workloads/visualstudio/vm-vsts-agent/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT577", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT577", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "modules": { + "type": "array", + "metadata": { + "description": "Enter the Module(s) to install including the Version" + }, + "defaultValue": [ + { + "name": "AzureRM", + "version": "5.6.0" + }, + { + "name": "AzureAD", + "version": "2.0.1.3" + }, + { + "name": "Bitbucket.v2", + "version": "1.1.2" + }, + { + "name": "GetPassword", + "version": "1.0.0.0" + }, + { + "name": "posh-git", + "version": "0.7.1" + } + ] + }, + "publicIPDnsName": { + "type": "string", + "metadata": { + "description": "Enter a DNS name to resolve to the Public IP Address" + }, + "value": "GEN-UNIQUE" + }, + "vmAdminUser": { + "type": "string", + "metadata": { + "description": "The name of the Administrator Account to be created" + }, + "value": "adminuser" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Admin Account. Must be at least 12 characters long" + }, + "minLength": 12, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Specifiy the size of VM required for the VM(s)" + }, + "defaultValue": "Standard_D2_v3" + }, + "vstsAccount": { + "type": "string", + "metadata": { + "description": "The Visual Studio Team Services account name, that is, the first part of your VSTSAccount.visualstudio.com" + }, + "value": "GEN-UNIQUE" + }, + "vstsAgentCount": { + "type": "int", + "metadata": { + "description": "The number of Visual Studio Team Services agents to be configured on the Virtual Machine. Default is 3" + }, + "allowedValues": [ + 1, + 2, + 3, + 4 + ], + "defaultValue": 3 + }, + "vstsPersonalAccessToken": { + "type": "securestring", + "metadata": { + "description": "The personal access token to connect to VSTS" + }, + "value": "GEN-UNIQUE" + }, + "vstsPoolName": { + "type": "string", + "defaultValue": "Default", + "metadata": { + "description": "The Visual Studio Team Services build agent pool for this build agent to join. Use 'Default' if you don't have a separate pool." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "imagePublisher": { + "type": "string", + "metadata": { + "description": "Specifiy the publisher of the vm image" + }, + "defaultValue": "MicrosoftVisualStudio" + }, + "imageOffer": { + "type": "string", + "metadata": { + "description": "Specifiy the Offer of the vm image" + }, + "allowedValues": [ + "VisualStudio", + "visualstudio2019" + ], + "defaultValue": "VisualStudio" + }, + "imageSKU": { + "type": "string", + "metadata": { + "description": "Specifiy the Offer of the vm image" + }, + "allowedValues": [ + "VS-2017-Ent-WS2016", + "vs-2019-ent-ws2019" + ], + "defaultValue": "VS-2017-Ent-WS2016" + } + }, + "variables": { + "names": { + "avs": "[concat('avs-vsts-', uniqueString(resourceGroup().id))]", + "nic": "[concat('nic-vsts-', uniqueString(resourceGroup().id))]", + "pip": "[concat('pip-vsts-', uniqueString(resourceGroup().id))]", + "vm": "[concat('vm-vsts-', substring(uniqueString(resourceGroup().id), 0, 6))]", + "vnet": { + "name": "[concat('vn-vsts-', uniqueString(resourceGroup().id))]", + "addressPrefix": "10.0.0.0/16", + "subnet": "subnet-0", + "subnetPrefix": "10.0.0.0/24" + }, + "vsts": "[concat('agent-', uniqueString(resourceGroup().id))]" + }, + "powerShell": { + "script": "InstallVstsAgent.ps1", + "folder": "scripts", + "parameters": "-vstsAccount GEN-UNIQUE -personalAccessToken GEN-UNIQUE -AgentName (names).vsts -PoolName GEN-UNIQUE -AgentCount 3 -AdminUser adminuser -Modules [replace(replace(replace(replace(replace(string(parameters('modules')), '[{\"', '@(@{'), '\":\"', concat(' = ', variables('singleQuote'))), '\",\"', concat(variables('singleQuote'), '; ')), '\"},{\"', concat(variables('singleQuote'), '}, @{')), '\"}]', concat(variables('singleQuote'), '})'))]" + }, + "singleQuote": "'", + "modules": "[replace(replace(replace(replace(replace(string(parameters('modules')), '[{\"', '@(@{'), '\":\"', concat(' = ', variables('singleQuote'))), '\",\"', concat(variables('singleQuote'), '; ')), '\"},{\"', concat(variables('singleQuote'), '}, @{')), '\"}]', concat(variables('singleQuote'), '})'))]", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "name": "(names).avs", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "tags": { + "displayName": "availabilitySets" + }, + "properties": { + "platformUpdateDomainCount": 5, + "platformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "name": "(names).pip", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2017-10-01", + "tags": { + "displayName": "publicIP" + }, + "properties": { + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + }, + "idleTimeoutInMinutes": 4, + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "(names).vnet.name", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2017-10-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "tags": { + "displayName": "virtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "(names).vnet.addressPrefix" + ] + }, + "subnets": [ + { + "name": "(names).vnet.subnet", + "properties": { + "addressPrefix": "(names).vnet.subnetPrefix", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "name": "(names).nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2017-10-01", + "dependsOn": [ + "(names).pip", + "(names).vnet.name" + ], + "tags": { + "displayName": "networkInterfaces" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/(names).pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/(names).vnet.name/(names).vnet.subnet" + } + } + } + ], + "enableIPForwarding": false + } + }, + { + "name": "(names).vm", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-12-01", + "dependsOn": [ + "(names).avs", + "(names).nic" + ], + "tags": { + "displayName": "virtualMachines" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/(names).avs" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "(names).vm", + "adminUsername": "adminuser", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVMAgent": true, + "enableAutomaticUpdates": true + } + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "VisualStudio", + "sku": "imageSku", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/(names).nic" + } + ] + } + }, + "resources": [ + { + "name": "vstsAgent", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2017-12-01", + "dependsOn": [ + "(names).vm" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('powerShell').folder, '/', variables('powerShell').script, parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -Command \"& {./(powerShell).script (powerShell).parameters}\"" + } + } + } + ] + } + ], + "outputs": { + "Modules": { + "type": "string", + "value": "[variables('modules')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT578 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT578 new file mode 100644 index 0000000..d150c79 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT578 @@ -0,0 +1,301 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/vs2019-git-docker-windows2019/azuredeploy.json", + "/application-workloads/visualstudio/vs2019-git-docker-windows2019/azuredeploy.parameters.json" + ], + "timestamp": 1642962897208, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vs2019-git-docker-windows2019/azuredeploy.json", + "/application-workloads/visualstudio/vs2019-git-docker-windows2019/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT578", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT578", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storagename": { + "type": "string", + "defaultValue": "[concat('labvmstrg', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Unique Storage Account name" + } + }, + "vm-dns": { + "type": "string", + "defaultValue": "[concat('labvm-',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "VM DNS Label prefix" + } + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "Admin Username for Lab VM" + }, + "value": "GEN-UNIQUE-10" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for admin user" + }, + "value": "GEN-PASSWORD" + }, + "vmsize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "allowedValues": [ + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D8s_v4" + ], + "metadata": { + "description": "VM Size for lab-vm" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location to deploy current resource" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "SAS Token for accessing script path" + } + } + }, + "variables": { + "scriptUrl": "[uri(parameters('_artifactsLocation'),concat('installscript.ps1',parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[toLower(parameters('storagename'))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "displayName": "VS LabVM Storage Account" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-11-01", + "name": "vslab-PublicIP", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('labvm-',uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-04-01", + "name": "vslab-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "nsgRule1", + "properties": { + "description": "description", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-04-01", + "name": "vslab-VirtualNetwork", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/vslab-nsg" + ], + "tags": { + "displayName": "vslab-VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "vslab-vnet-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vslab-nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-04-01", + "name": "vslab-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/vslab-PublicIP", + "Microsoft.Network/virtualNetworks/vslab-VirtualNetwork" + ], + "tags": { + "displayName": "VSLab Network Interface" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipConfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vslab-PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vslab-VirtualNetwork/vslab-vnet-subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "vsLab", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[concat('labvmstrg', uniqueString(resourceGroup().id))]", + "Microsoft.Network/networkInterfaces/vslab-nic" + ], + "tags": { + "displayName": "VS2019 Lab VM" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D8s_v3" + }, + "osProfile": { + "computerName": "LabVM", + "adminUsername": "GEN-UNIQUE-10", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftVisualStudio", + "offer": "VisualStudio2019latest", + "sku": "vs-2019-comm-latest-ws2019", + "version": "latest" + }, + "osDisk": { + "name": "LabVMOSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vslab-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', parameters('storagename'))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "vsLab/installscript1", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Install script for LabVM" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vsLab" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('installscript.ps1',parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Bypass -file installscript.ps1 -UserName GEN-UNIQUE-10" + } + } + } + ], + "outputs": { + "lab-vm-dns": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses','vslab-PublicIP')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT579 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT579 new file mode 100644 index 0000000..d21d1e2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT579 @@ -0,0 +1,299 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/vsts-fullbuild-redhat-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-fullbuild-redhat-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962897219, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-fullbuild-redhat-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-fullbuild-redhat-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT579", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT579", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vstsAccount": { + "type": "string", + "metadata": { + "description": "Team Services Account" + }, + "value": "GEN-UNIQUE" + }, + "vstsPAT": { + "type": "string", + "metadata": { + "description": "Team Services PAT for user with Agent Pools (read,manage) permissions." + }, + "value": "GEN-UNIQUE" + }, + "vstsPoolName": { + "type": "string", + "defaultValue": "Default", + "metadata": { + "description": "Team Services Agent Pool Name" + }, + "value": "GEN-UNIQUE" + }, + "vstsAgentName": { + "type": "string", + "defaultValue": "redhat-build-full", + "metadata": { + "description": "Team Services Agent Name" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "defaultValue": "vstsbuild", + "metadata": { + "description": "Linux VM User Account Name" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Linux VM User Password" + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. It must be lowercase and must match the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE-8" + }, + "agentVMCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of VM build servers to provision in this deployment." + }, + "value": 1 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_F1", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "imagePublisher": "redhat", + "imageOffer": "rhel", + "imageSKU": "7.3", + "nicName": "GEN-UNIQUE-8-nic-", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressName": "GEN-UNIQUE-8-ip-", + "vmName": "GEN-UNIQUE-8-", + "virtualNetworkName": "MyVNET", + "storageAccountName": "[concat('vhds', uniqueString(resourceGroup().id))]", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet-1", + "vstsAccountUrl": "https://dev.azure.com/GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "StorageAccountNamecopyIndex()", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "storageLoop", + "count": 1 + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8-ip-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "publicIpLoop", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8-copyIndex()" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8-nic-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8-ip-copyIndex()", + "MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8-ip-copyIndex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8-copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/StorageAccountNamecopyIndex()", + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic-copyIndex()" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F1" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8-copyIndex()", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD", + "customData": "[base64(variables('publicIPAddressName'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "redhat", + "offer": "rhel", + "sku": "7.3", + "version": "latest" + }, + "osDisk": { + "name": "osdisk1", + "vhd": { + "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', concat(variables('storageAccountName'), copyIndex())), '2020-08-01-preview').primaryEndpoints.blob, 'vhds/', parameters('dnsLabelPrefix'), copyIndex(), '.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8-nic-copyIndex()" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "configScript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-8-copyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/full-rh-vstsbuild-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh full-rh-vstsbuild-install.sh vstsAccountURL GEN-UNIQUE GEN-UNIQUE GEN-UNIQUEcopyIndex() GEN-UNIQUE-8" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT58 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT58 new file mode 100644 index 0000000..db8373a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT58 @@ -0,0 +1,1188 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-ha-cluster/azuredeploy.json", + "/application-workloads/chef/chef-ha-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962884381, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-ha-cluster/azuredeploy.json", + "/application-workloads/chef/chef-ha-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT58", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT58", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/chef-ha-cluster/scripts" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "_secretsLocation": { + "type": "string", + "metadata": { + "description": "URL of the Standard storage account blob container to receive shared secrets and config files. (ie. https://mystandardstorage.blob.core.windows.net/artifactsfolder )" + } + }, + "_secretsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Generated Shared Acccess Signature token to access _secretsLocation" + } + }, + "adminUsername": { + "type": "string", + "minLength": 1, + "defaultValue": "ubuntu", + "metadata": { + "description": "Administrator username on all VMs" + }, + "value": "GEN-UNIQUE" + }, + "chefBEType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "Chef BE VM Storage Type must match chefBEvmSize" + } + }, + "chefBEvmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5" + ], + "minLength": 1, + "metadata": { + "description": "Chef BE VM Size must match chefBEType" + } + }, + "chefDNSName": { + "type": "string", + "metadata": { + "description": "DNS name used for public IP addresses and as base for naming other resources. Must be globally unique and 3 to 61 characters long." + }, + "minLength": 3, + "maxLength": 61, + "value": "GEN-UNIQUE-13" + }, + "chefFEType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "Chef FE VM Storage Type must match chefFEvmSize" + } + }, + "chefFEvmSize": { + "type": "string", + "defaultValue": "Standard_F4", + "allowedValues": [ + "Standard_F1", + "Standard_F2", + "Standard_F4", + "Standard_F16", + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5" + ], + "minLength": 1, + "metadata": { + "description": "Chef FE VM Size must match chefFEType" + } + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "SSH rsa public key file as a string." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "storageURL": { + "type": "string", + "metadata": { + "description": "URL for Azure Storage should need changing for regional only" + }, + "defaultValue": "core.windows.net" + }, + "ubuntuVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "metadata": { + "description": "Ubuntu version" + } + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "bePoolName": "chefpool", + "BEStorageAccountContainerName": "vhds", + "ChefBEAvailName": "BEAvail", + "chefbeName": "[concat('chefbe', uniqueString(resourceGroup().id))]", + "ChefFEAvailName": "FEAvail", + "cheffeName": "[concat('cheffe', uniqueString(resourceGroup().id))]", + "FE0setupscriptScriptFileName": "FE0Setup.sh", + "FEsetupscriptScriptFileName": "FESetup.sh", + "FEStorageAccountContainerName": "vhds", + "FollowerSetupScriptFileName": "BEFollowerSetup.sh", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/cheffelb/frontendIPConfigurations/loadBalancerFrontEnd", + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "lbID": "Microsoft.Network/loadBalancers/cheffelb", + "lbProbeID": "Microsoft.Network/loadBalancers/cheffelb/probes/https", + "LeaderSetupScriptFileName": "BELeaderSetup.sh", + "loadBalancerName": "cheffelb", + "location": "[resourceGroup().location]", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/chefpublicip", + "publicIPAddressName": "chefpublicip", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "subnetName": "chefsubnet", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/chefvnet/chefsubnet", + "virtualNetworkName": "chefvnet", + "tagvalues": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "chefvnet", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "tags": { + "displayName": "ChefVirtualNetwork", + "provider": "(tagvalues).provider" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "chefsubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "[variables('chefbeName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [], + "tags": { + "displayName": "BEStorage", + "provider": "(tagvalues).provider" + }, + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "name": "[variables('cheffeName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [], + "tags": { + "displayName": "FEStorage", + "provider": "(tagvalues).provider" + }, + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "chefpublicip", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "tags": { + "displayName": "FEPublicIP", + "provider": "(tagvalues).provider" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('chefDNSName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "cheffelb", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "tags": { + "displayName": "FELoadBalancer", + "provider": "(tagvalues).provider" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/chefpublicip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/chefpublicip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "chefpool" + } + ], + "inboundNatRules": [ + { + "name": "ssh-fe0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/cheffelb/frontendIPConfigurations/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50000, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh-fe1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/cheffelb/frontendIPConfigurations/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh-fe2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/cheffelb/frontendIPConfigurations/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50002, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "probes": [ + { + "name": "https", + "properties": { + "protocol": "Tcp", + "port": 443 + } + } + ], + "loadBalancingRules": [ + { + "name": "https", + "properties": { + "protocol": "Tcp", + "backendAddressPool": { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]" + }, + "backendPort": 443, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/cheffelb/frontendIPConfigurations/loadBalancerFrontEnd" + }, + "frontendPort": 443, + "probe": { + "id": "Microsoft.Network/loadBalancers/cheffelb/probes/https" + }, + "loadDistribution": "SourceIPProtocol" + } + }, + { + "name": "http", + "properties": { + "protocol": "Tcp", + "backendAddressPool": { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]" + }, + "backendPort": 80, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/cheffelb/frontendIPConfigurations/loadBalancerFrontEnd" + }, + "frontendPort": 80, + "probe": { + "id": "Microsoft.Network/loadBalancers/cheffelb/probes/https" + }, + "loadDistribution": "SourceIPProtocol" + } + } + ] + } + }, + { + "name": "BEAvail", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "apiVersion": "2017-12-01", + "dependsOn": [], + "tags": { + "displayName": "BEAvailSet", + "provider": "(tagvalues).provider" + }, + "sku": { + "name": "Aligned" + }, + "properties": { + "platformUpdateDomainCount": 3, + "platformFaultDomainCount": 3 + } + }, + { + "name": "FEAvail", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "apiVersion": "2017-12-01", + "dependsOn": [], + "tags": { + "displayName": "FEAvailSet", + "provider": "(tagvalues).provider" + }, + "sku": { + "name": "Aligned" + }, + "properties": { + "platformUpdateDomainCount": 3, + "platformFaultDomainCount": 3 + } + }, + { + "name": "BE0Nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/chefvnet" + ], + "tags": { + "displayName": "BE0Nic", + "provider": "(tagvalues).provider" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "SubnetRef" + }, + "privateIPAddress": "10.0.0.10" + } + } + ] + } + }, + { + "name": "BE0", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('chefbeName'))]", + "[concat('Microsoft.Network/networkInterfaces/', 'BE0Nic')]", + "[concat('Microsoft.Compute/availabilitySets/',variables('ChefBEAvailName'))]" + ], + "tags": { + "displayName": "BE0", + "provider": "(tagvalues).provider" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "be0", + "adminUsername": "adminusername", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY", + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "BE0_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/BE0Nic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/BEAvail" + } + }, + "resources": [ + { + "name": "BE0Setup", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/BE0" + ], + "tags": { + "displayName": "BE0Setup" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/chef-ha-cluster/scripts/BELeaderSetup.sh parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "sh BELeaderSetup.sh \"_secretsLocation\" \"_secretsLocationSasToken\"" + } + } + } + ] + }, + { + "name": "BE1Nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/chefvnet" + ], + "tags": { + "displayName": "BE1Nic", + "provider": "(tagvalues).provider" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "SubnetRef" + }, + "privateIPAddress": "10.0.0.11" + } + } + ] + } + }, + { + "name": "BE1", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('chefbeName'))]", + "[concat('Microsoft.Network/networkInterfaces/', 'BE1Nic')]", + "[concat('Microsoft.Compute/availabilitySets/',variables('ChefBEAvailName'))]" + ], + "tags": { + "displayName": "BE1", + "provider": "(tagvalues).provider" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "be1", + "adminUsername": "adminusername", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY", + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "BE1_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/BE1Nic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/BEAvail" + } + }, + "resources": [ + { + "name": "BE1Setup", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/BE1", + "Microsoft.Compute/virtualMachines/extensions/BE0/BE0Setup" + ], + "tags": { + "displayName": "BE1Setup" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/chef-ha-cluster/scripts/BEFollowerSetup.sh parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "sh BEFollowerSetup.sh \"_secretsLocation\" \"_secretsLocationSasToken\"" + } + } + } + ] + }, + { + "name": "BE2Nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/chefvnet" + ], + "tags": { + "displayName": "BE2Nic", + "provider": "(tagvalues).provider" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "SubnetRef" + }, + "privateIPAddress": "10.0.0.12" + } + } + ] + } + }, + { + "name": "BE2", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('chefbeName'))]", + "[concat('Microsoft.Network/networkInterfaces/', 'BE2Nic')]", + "[concat('Microsoft.Compute/availabilitySets/',variables('ChefBEAvailName'))]" + ], + "tags": { + "displayName": "BE2", + "provider": "(tagvalues).provider" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "be2", + "adminUsername": "adminusername", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY", + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "BE2_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/BE2Nic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/BEAvail" + } + }, + "resources": [ + { + "name": "BE2Setup", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/BE2", + "Microsoft.Compute/virtualMachines/extensions/BE0/BE0Setup", + "Microsoft.Compute/virtualMachines/extensions/BE1/BE1Setup" + ], + "tags": { + "displayName": "BE2Setup" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/chef-ha-cluster/scripts/BEFollowerSetup.sh parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "sh BEFollowerSetup.sh \"_secretsLocation\" \"_secretsLocationSasToken\"" + } + } + } + ] + }, + { + "name": "FE0Nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/chefvnet", + "Microsoft.Network/loadBalancers/cheffelb" + ], + "tags": { + "displayName": "FE0Nic", + "provider": "(tagvalues).provider" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "SubnetRef" + }, + "privateIPAddress": "10.0.0.50", + "loadBalancerBackendAddressPools": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/inboundNatRules/ssh-fe0')]" + } + ] + } + } + ] + } + }, + { + "name": "FE0", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('cheffeName'))]", + "[concat('Microsoft.Network/networkInterfaces/', 'FE0Nic')]", + "[concat('Microsoft.Compute/availabilitySets/',variables('ChefFEAvailName'))]" + ], + "tags": { + "displayName": "FE0", + "provider": "(tagvalues).provider" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F4" + }, + "osProfile": { + "computerName": "fe0", + "adminUsername": "adminusername", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY", + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "FE0_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/FE0Nic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/FEAvail" + } + }, + "resources": [ + { + "name": "FE0Setup", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/FE0", + "Microsoft.Compute/virtualMachines/extensions/BE0/BE0Setup", + "Microsoft.Compute/virtualMachines/extensions/BE1/BE1Setup", + "Microsoft.Compute/virtualMachines/extensions/BE2/BE2Setup" + ], + "tags": { + "displayName": "FE0Setup" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/chef-ha-cluster/scripts/FE0Setup.sh parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "sh FE0Setup.sh \"_secretsLocation\" \"_secretsLocationSasToken\"" + } + } + } + ] + }, + { + "name": "FE1Nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/chefvnet", + "Microsoft.Network/loadBalancers/cheffelb" + ], + "tags": { + "displayName": "FE1Nic", + "provider": "(tagvalues).provider" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "SubnetRef" + }, + "privateIPAddress": "10.0.0.51", + "loadBalancerBackendAddressPools": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/inboundNatRules/ssh-fe1')]" + } + ] + } + } + ] + } + }, + { + "name": "FE1", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('cheffeName'))]", + "[concat('Microsoft.Network/networkInterfaces/', 'FE1Nic')]", + "[concat('Microsoft.Compute/availabilitySets/',variables('ChefFEAvailName'))]" + ], + "tags": { + "displayName": "FE1", + "provider": "(tagvalues).provider" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F4" + }, + "osProfile": { + "computerName": "fe1", + "adminUsername": "adminusername", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY", + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "FE1_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/FE1Nic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/FEAvail" + } + }, + "resources": [ + { + "name": "FE1Setup", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/FE1", + "Microsoft.Compute/virtualMachines/extensions/FE0/FE0Setup" + ], + "tags": { + "displayName": "FE1Setup" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/chef-ha-cluster/scripts/FESetup.sh parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "sh FESetup.sh \"_secretsLocation\" \"_secretsLocationSasToken\"" + } + } + } + ] + }, + { + "name": "FE2Nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/chefvnet", + "Microsoft.Network/loadBalancers/cheffelb" + ], + "tags": { + "displayName": "FE2Nic", + "provider": "(tagvalues).provider" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "SubnetRef" + }, + "privateIPAddress": "10.0.0.52", + "loadBalancerBackendAddressPools": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/inboundNatRules/ssh-fe2')]" + } + ] + } + } + ] + } + }, + { + "name": "FE2", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('cheffeName'))]", + "[concat('Microsoft.Network/networkInterfaces/', 'FE2Nic')]", + "[concat('Microsoft.Compute/availabilitySets/',variables('ChefFEAvailName'))]" + ], + "tags": { + "displayName": "FE2", + "provider": "(tagvalues).provider" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F4" + }, + "osProfile": { + "computerName": "fe2", + "adminUsername": "adminusername", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY", + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "FE2_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/FE2Nic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/FEAvail" + } + }, + "resources": [ + { + "name": "FE2Setup", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/FE2", + "Microsoft.Compute/virtualMachines/extensions/FE0/FE0Setup" + ], + "tags": { + "displayName": "FE2Setup" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/chef-ha-cluster/scripts/FESetup.sh parameters('_artifactsLocationSasToken')" + ] + }, + "protectedSettings": { + "commandToExecute": "sh FESetup.sh \"_secretsLocation\" \"_secretsLocationSasToken\"" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT580 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT580 new file mode 100644 index 0000000..07a8334 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT580 @@ -0,0 +1,269 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/vsts-fullbuild-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-fullbuild-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962897230, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-fullbuild-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-fullbuild-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT580", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT580", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vstsAccount": { + "type": "string", + "metadata": { + "description": "Team Services Account." + }, + "value": "GEN-UNIQUE" + }, + "vstsPAT": { + "type": "string", + "metadata": { + "description": "Team Services PAT for user with build permissions" + }, + "value": "GEN-UNIQUE" + }, + "vstsPoolName": { + "type": "string", + "metadata": { + "description": "Team Services Agent Pool Name." + }, + "value": "GEN-UNIQUE" + }, + "vstsAgentName": { + "type": "string", + "metadata": { + "description": "Team Services Agent Name" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Linux VM User Account Name" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator Password" + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_F1", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "imagePublisher": "canonical", + "imageOffer": "ubuntuserver", + "imageSKU": "16.04.0-LTS", + "baseName": "[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "nicName": "myNic1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressName": "myIP1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE-8", + "virtualNetworkName": "MyVNET", + "storageAccountType": "Standard_LRS", + "storageAccountName": "vsts1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "vstsAccountUrl": "https://dev.azure.com/GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "StorageAccountName", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myIP1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myIP1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myIP1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/StorageAccountName", + "Microsoft.Network/networkInterfaces/myNic1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F1" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "canonical", + "offer": "ubuntuserver", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNic1[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-8" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/full-vstsbuild-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh full-vstsbuild-install.sh vstsAccountURL GEN-UNIQUE GEN-UNIQUE GEN-UNIQUE GEN-UNIQUE-8" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT581 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT581 new file mode 100644 index 0000000..1f61ad7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT581 @@ -0,0 +1,272 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/vsts-minbuildjava-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-minbuildjava-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962897240, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-minbuildjava-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-minbuildjava-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT581", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT581", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vstsAccount": { + "type": "string", + "metadata": { + "description": "Team Services Account." + }, + "value": "GEN-UNIQUE" + }, + "vstsPAT": { + "type": "string", + "metadata": { + "description": "Team Services PAT for user with build permissions" + }, + "value": "GEN-UNIQUE" + }, + "vstsPoolName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "Team Services Agent Pool Name" + }, + "value": "GEN-UNIQUE" + }, + "vstsAgentName": { + "type": "string", + "defaultValue": "ubuntu-build-minJava", + "metadata": { + "description": "Team Services Agent Name" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "defaultValue": "vstsbuild", + "metadata": { + "description": "Linux VM User Account Name" + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin Password" + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "imagePublisher": "canonical", + "imageOffer": "ubuntuserver", + "imageSKU": "16.04.0-LTS", + "baseName": "[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "nicName": "myNic2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressName": "myIP2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "virtualNetworkName": "MyVNET", + "storageAccountType": "Standard_LRS", + "storageAccountName": "vsts2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "vstsAccountUrl": "https://dev.azure.com/GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "StorageAccountName", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myIP2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myIP2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myIP2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//StorageAccountName", + "Microsoft.Network/networkInterfaces//myNic2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "canonical", + "offer": "ubuntuserver", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNic2[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/java-vstsbuild-install.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh java-vstsbuild-install.sh vstsAccountURL GEN-UNIQUE GEN-UNIQUE GEN-UNIQUE GEN-UNIQUE-8" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT582 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT582 new file mode 100644 index 0000000..d70ae16 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT582 @@ -0,0 +1,367 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/vsts-tomcat-redhat-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-tomcat-redhat-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962897255, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-tomcat-redhat-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-tomcat-redhat-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT582", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT582", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Linux VM user account name" + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "tomcatUserName": { + "type": "string", + "defaultValue": "tcdeploy", + "metadata": { + "description": "User name for Tomcat manager" + }, + "value": "GEN-UNIQUE" + }, + "tomcatPassword": { + "type": "securestring", + "metadata": { + "description": "Password for Tomcat manager" + }, + "value": "GEN-PASSWORD" + }, + "sshPassPhrase": { + "type": "string", + "metadata": { + "description": "Pass phrase for SSH certificate" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_F1", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "imagePublisher": "redhat", + "imageOffer": "rhel", + "imageSKU": "7.2", + "baseName": "[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "nicName": "myNic8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressName": "myIP8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "virtualNetworkName": "MyVNET8", + "frontEndNSGName": "GEN-UNIQUE-nsg8", + "storageAccountType": "Standard_LRS", + "storageAccountName": "vsts8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "StorageAccountName", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myIP8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-nsg8", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Custom Network Security Group" + }, + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "default-allow-tomcat", + "properties": { + "description": "Allow WEB/Tomcat", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1010, + "direction": "Inbound" + } + }, + { + "name": "default-allow-ftp", + "properties": { + "description": "Allow FTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1020, + "direction": "Inbound" + } + }, + { + "name": "default-allow-ftps", + "properties": { + "description": "Allow FTPS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "13450-13454", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1030, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-nsg8" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-nsg8" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myIP8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]", + "Microsoft.Network/virtualNetworks//MyVNET8", + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-nsg8" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-nsg8" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myIP8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET8/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//StorageAccountName", + "Microsoft.Network/networkInterfaces//myNic8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F1" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "[base64(variables('publicIPAddressName'))]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "redhat", + "offer": "rhel", + "sku": "7.2", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNic8[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id,uniquestring(deployment().name))]" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/tomcat-setup-redhat.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh tomcat-setup-redhat.sh GEN-UNIQUE GEN-UNIQUE GEN-PASSWORD GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT583 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT583 new file mode 100644 index 0000000..011ef19 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT583 @@ -0,0 +1,352 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/visualstudio/vsts-tomcat-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-tomcat-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962897267, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/visualstudio/vsts-tomcat-ubuntu-vm/azuredeploy.json", + "/application-workloads/visualstudio/vsts-tomcat-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT583", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT583", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Linux VM User Account Name" + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "default" + }, + "tomcatUserName": { + "type": "string", + "metadata": { + "description": "User name for Tomcat manager" + }, + "value": "GEN-UNIQUE" + }, + "tomcatPassword": { + "type": "securestring", + "metadata": { + "description": "Password for Tomcat manager" + }, + "value": "GEN-PASSWORD" + }, + "sshPassPhrase": { + "type": "string", + "metadata": { + "description": "Pass phrase for SSH certificate" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_F1", + "metadata": { + "description": "VM Size or SKU." + } + } + }, + "variables": { + "imagePublisher": "canonical", + "imageOffer": "ubuntuserver", + "imageSKU": "16.04.0-LTS", + "baseName": "[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "nicName": "myNic7[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressName": "myIP7[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "publicIPAddressType": "Dynamic", + "vmName": "default", + "virtualNetworkName": "MyVNET7", + "frontEndNSGName": "default-nsg7", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/MyVNET7/Subnet-1", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myIP7[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "default" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "default-nsg7", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Custom Network Security Group" + }, + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "default-allow-tomcat", + "properties": { + "description": "Allow WEB/Tomcat", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1010, + "direction": "Inbound" + } + }, + { + "name": "default-allow-ftp", + "properties": { + "description": "Allow FTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1020, + "direction": "Inbound" + } + }, + { + "name": "default-allow-ftps", + "properties": { + "description": "Allow FTPS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "13450-13454", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1030, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET7", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//default-nsg7" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-nsg7" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNic7[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myIP7[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]", + "Microsoft.Network/virtualNetworks//MyVNET7", + "Microsoft.Network/networkSecurityGroups//default-nsg7" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-nsg7" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myIP7[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET7/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myNic7[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F1" + }, + "osProfile": { + "computerName": "default", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "customData": "[base64(variables('publicIPAddressName'))]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "canonical", + "offer": "ubuntuserver", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "name": "default_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNic7[uniquestring(parameters('dnsLabelPrefix'),resourceGroup().id)]" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "default/newuserscript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//default" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/tomcat-setup-ubuntu.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh tomcat-setup-ubuntu.sh GEN-UNIQUE GEN-UNIQUE GEN-PASSWORD GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT584 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT584 new file mode 100644 index 0000000..5d521c9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT584 @@ -0,0 +1,317 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wildfly/wildfly-standalone-centos8/azuredeploy.json", + "/application-workloads/wildfly/wildfly-standalone-centos8/azuredeploy.parameters.json" + ], + "timestamp": 1642962897307, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wildfly/wildfly-standalone-centos8/azuredeploy.json", + "/application-workloads/wildfly/wildfly-standalone-centos8/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT584", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT584", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Linux VM user account name" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine" + } + }, + "adminPasswordOrSSHKey": { + "type": "securestring", + "metadata": { + "description": "Password or SSH key for the Virtual Machine" + }, + "value": "GEN-PASSWORD" + }, + "wildflyUserName": { + "type": "string", + "metadata": { + "description": "User name for WildFly Manager" + }, + "value": "GEN-UNIQUE" + }, + "wildflyPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for WildFly Manager" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "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" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_E2S_v3", + "Standard_E4S_v3", + "Standard_E8S_v3", + "Standard_F2S_v2", + "Standard_F4S_v2", + "Standard_F8S_v2" + ], + "metadata": { + "description": "The size of the Virtual Machine" + } + } + }, + "variables": { + "singlequote": "'", + "imagePublisher": "OpenLogic", + "imageOffer": "CentOS", + "imageSKU": "8.0", + "nicName": "centos-vm-nic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "centosvm-subnet", + "subnetPrefix": "10.0.0.0/24", + "vmName": "centos-vm", + "virtualNetworkName": "centosvm-vnet", + "bootStorageAccountName": "[concat('bootstrg', uniqueString(resourceGroup().id))]", + "storageAccountType": "Standard_LRS", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + }, + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/centosvm-vnet/centosvm-subnet", + "scriptFolder": "scripts", + "fileToBeDownloaded": "JBoss-EAP_on_Azure.war", + "scriptArgs": "[concat('-a ', uri(parameters('_artifactsLocation'), '.'), ' -t \"', parameters('_artifactsLocationSasToken'), '\" -p ', variables('scriptFolder'), ' -f ', variables('fileToBeDownloaded'))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-01-01", + "name": "pid-2c0c0514-a608-492e-b64e-bc4ace59035b", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "[variables('bootStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "tags": { + "QuickstartName": "WildFly 18 on CentOS 8 (stand-alone VM)" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "centosvm-vnet", + "location": "[resourceGroup().location]", + "tags": { + "QuickstartName": "WildFly 18 on CentOS 8 (stand-alone VM)" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "centosvm-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-11-01", + "name": "centos-vm-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "centosvm-vnet" + ], + "tags": { + "QuickstartName": "WildFly 18 on CentOS 8 (stand-alone VM)" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/centosvm-vnet/centosvm-subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "centos-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('nicName')]", + "[variables('bootStorageAccountName')]" + ], + "tags": { + "QuickstartName": "WildFly 18 on CentOS 8 (stand-alone VM)" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "centos-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "8.0", + "version": "latest" + }, + "osDisk": { + "name": "centos-vm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/centos-vm-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('bootStorageAccountName'), '2021-02-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "name": "centos-vm/wildfly-setup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "centos-vm" + ], + "tags": { + "QuickstartName": "WildFly 18 on CentOS 8 (stand-alone VM)" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/wildfly-setup.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('sh wildfly-setup.sh',' ',variables('scriptArgs'),' ',parameters('wildflyUserName'),' ',variables('singlequote'),parameters('wildflyPassword'),variables('singlequote'))]" + } + } + } + ], + "outputs": { + "vm Private IP Address": { + "type": "string", + "value": "[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]" + }, + "appURL": { + "type": "string", + "value": "[format('http://{0}:8080/JBoss-EAP_on_Azure/',reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress)]" + }, + "adminConsole": { + "type": "string", + "value": "[concat('http://', reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress, ':9990')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT585 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT585 new file mode 100644 index 0000000..57b28e0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT585 @@ -0,0 +1,308 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/aci-wordpress/azuredeploy.json", + "/application-workloads/wordpress/aci-wordpress/azuredeploy.parameters.json" + ], + "timestamp": 1642962897324, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/aci-wordpress/azuredeploy.json", + "/application-workloads/wordpress/aci-wordpress/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT585", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.resources/deploymentscripts", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT585", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "4731966915929708136" + } + }, + "parameters": { + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "Storage Account Name" + } + }, + "siteName": { + "type": "string", + "defaultValue": "[parameters('storageAccountName')]", + "metadata": { + "description": "WordPress Site Name" + } + }, + "mySqlPassword": { + "type": "secureString", + "metadata": { + "description": "MySQL database password" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "mysqlPassword": { + "value": "GEN-PASSWORD" + } + }, + "functions": [], + "variables": { + "cpuCores": "0.5", + "memoryInGb": "0.7", + "wordpressContainerGroupName": "wordpress-containerinstance", + "wordpressShareName": "wordpress-share", + "mysqlShareName": "mysql-share", + "scriptName": "createFileShare", + "identityName": "scratch", + "roleDefinitionId": "microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "roleAssignmentName": "[guid(variables('identityName'), variables('roleDefinitionId'), resourceGroup().id)]", + "sqlScriptToExecute": "[format('Get-AzStorageAccount -StorageAccountName {0} -ResourceGroupName {1} | New-AzStorageShare -Name {2}', parameters('storageAccountName'), resourceGroup().name, variables('mysqlShareName'))]", + "wpScriptToExecute": "[format('Get-AzStorageAccount -StorageAccountName {0} -ResourceGroupName {1} | New-AzStorageShare -Name {2}', parameters('storageAccountName'), resourceGroup().name, variables('wordpressShareName'))]" + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "scratch", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('identityName'), variables('roleDefinitionId'), resourceGroup().id)]", + "properties": { + "roleDefinitionId": "microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/scratch" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "dependsOn": [ + "Microsoft.Authorization/roleAssignments/[guid(variables('identityName'), variables('roleDefinitionId'), resourceGroup().id)]" + ] + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "[format('{0}-{1}', variables('scriptName'), variables('wordpressShareName'))]", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {} + } + }, + "properties": { + "azPowerShellVersion": "3.0", + "storageAccountSettings": { + "storageAccountName": "[uniqueString(resourceGroup().id)]", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01').keys[0].value]" + }, + "scriptContent": "[format('Get-AzStorageAccount -StorageAccountName {0} -ResourceGroupName {1} | New-AzStorageShare -Name {2}', parameters('storageAccountName'), resourceGroup().name, variables('wordpressShareName'))]", + "cleanupPreference": "OnSuccess", + "retentionInterval": "P1D", + "timeout": "PT5M" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/scratch", + "Microsoft.Storage/storageAccounts/[uniqueString(resourceGroup().id)]" + ] + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "[format('{0}-{1}', variables('scriptName'), variables('mysqlShareName'))]", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {} + } + }, + "properties": { + "azPowerShellVersion": "3.0", + "storageAccountSettings": { + "storageAccountName": "[uniqueString(resourceGroup().id)]", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01').keys[0].value]" + }, + "scriptContent": "[format('Get-AzStorageAccount -StorageAccountName {0} -ResourceGroupName {1} | New-AzStorageShare -Name {2}', parameters('storageAccountName'), resourceGroup().name, variables('mysqlShareName'))]", + "cleanupPreference": "OnSuccess", + "retentionInterval": "P1D", + "timeout": "PT5M" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/scratch", + "Microsoft.Storage/storageAccounts/[uniqueString(resourceGroup().id)]" + ] + }, + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "name": "wordpress-containerinstance", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "wordpress", + "properties": { + "image": "wordpress:4.9-apache", + "ports": [ + { + "protocol": "TCP", + "port": 80 + } + ], + "environmentVariables": [ + { + "name": "WORDPRESS_DB_HOST", + "value": "127.0.0.1:3306" + }, + { + "name": "WORDPRESS_DB_PASSWORD", + "secureValue": "mySqlPassword" + } + ], + "volumeMounts": [ + { + "mountPath": "/var/www/html", + "name": "wordpressfile" + } + ], + "resources": { + "requests": { + "cpu": "0.5", + "memoryInGB": "0.7" + } + } + } + }, + { + "name": "mysql", + "properties": { + "image": "mysql:5.6", + "ports": [ + { + "protocol": "TCP", + "port": 3306 + } + ], + "environmentVariables": [ + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "mySqlPassword" + } + ], + "volumeMounts": [ + { + "mountPath": "/var/lib/mysql", + "name": "mysqlfile" + } + ], + "resources": { + "requests": { + "cpu": "0.5", + "memoryInGB": "0.7" + } + } + } + } + ], + "volumes": [ + { + "azureFile": { + "shareName": "wordpress-share", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01').keys[0].value]", + "storageAccountName": "[uniqueString(resourceGroup().id)]" + }, + "name": "wordpressfile" + }, + { + "azureFile": { + "shareName": "mysql-share", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01').keys[0].value]", + "storageAccountName": "[uniqueString(resourceGroup().id)]" + }, + "name": "mysqlfile" + } + ], + "ipAddress": { + "ports": [ + { + "protocol": "TCP", + "port": 80 + } + ], + "type": "Public", + "dnsNameLabel": "[parameters('storageAccountName')]" + }, + "osType": "Linux" + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deploymentScripts', format('{0}-{1}', variables('scriptName'), variables('mysqlShareName')))]", + "[resourceId('Microsoft.Resources/deploymentScripts', format('{0}-{1}', variables('scriptName'), variables('wordpressShareName')))]", + "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" + ] + } + ], + "outputs": { + "siteFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', variables('wordpressContainerGroupName'))).ipAddress.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT586 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT586 new file mode 100644 index 0000000..686b92a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT586 @@ -0,0 +1,517 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/aci-wordpress-vnet/azuredeploy.json", + "/application-workloads/wordpress/aci-wordpress-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962897339, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/aci-wordpress-vnet/azuredeploy.json", + "/application-workloads/wordpress/aci-wordpress-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT586", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.containerinstance/containergroups", + "microsoft.network/networkprofiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT586", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "defaultValue": "aci-vnet", + "metadata": { + "description": "VNet name" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnet1AddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix for ACI" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "aci-subnet", + "metadata": { + "description": "Subnet name for ACI" + } + }, + "subnet2AddressPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "Subnet prefix for application gateway" + } + }, + "subnet2Name": { + "type": "string", + "defaultValue": "ag-subnet", + "metadata": { + "description": "Subnet name for application gateway" + } + }, + "mysqlPassword": { + "type": "securestring", + "metadata": { + "description": "MySQL database password" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[uniquestring(resourceGroup().id)]", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "publicIp1", + "publicIPRef": "Microsoft.Network/publicIPAddresses/publicIp1", + "networkProfileName": "aci-networkProfile", + "interfaceConfigName": "eth0", + "interfaceIpConfig": "ipconfigprofile1", + "image": "mcr.microsoft.com/azure-cli", + "shareContainerGroupName": "createshare-containerinstance", + "wordpressContainerGroupName": "wordpress-containerinstance", + "mysqlContainerGroupName": "mysql-containerinstance", + "wordpressShareName": "wordpress-share", + "mysqlShareName": "mysql-share", + "cpuCores": "1.0", + "memoryInGb": "1.5", + "skuName": "Standard_Medium", + "capacity": "2", + "applicationGatewayName": "applicationGateway1", + "subnet2Ref": "Microsoft.Network/virtualNetworks/subnets/aci-vnet/ag-subnet", + "wordpressContainerGroupRef": "Microsoft.ContainerInstance/containerGroups//wordpresscontainerGroupName", + "mysqlContainerGroupRef": "Microsoft.ContainerInstance/containerGroups//mysql-containerinstance" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[uniquestring(resourceGroup().id)]", + "apiVersion": "2021-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('acisite', uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "aci-vnet", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "aci-subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "serviceEndpoints": [ + { + "service": "Microsoft.Storage", + "locations": [ + "[resourceGroup().location]" + ] + } + ], + "delegations": [ + { + "name": "DelegationService", + "properties": { + "serviceName": "Microsoft.ContainerInstance/containerGroups" + } + } + ] + } + }, + { + "name": "ag-subnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "name": "aci-networkProfile", + "type": "Microsoft.Network/networkProfiles", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/aci-vnet" + ], + "properties": { + "containerNetworkInterfaceConfigurations": [ + { + "name": "eth0", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigprofile1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/aci-vnet/aci-subnet" + } + } + } + ] + } + } + ] + } + }, + { + "name": "createshare-containerinstance", + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//[uniquestring(resourceGroup().id)]" + ], + "properties": { + "containers": [ + { + "name": "wordpress-share", + "properties": { + "image": "mcr.microsoft.com/azure-cli", + "command": [ + "az", + "storage", + "share", + "create", + "--name", + "wordpress-share" + ], + "environmentVariables": [ + { + "name": "AZURE_STORAGE_KEY", + "value": "[listKeys(variables('storageAccountName'),'2021-06-01').keys[0].value]" + }, + { + "name": "AZURE_STORAGE_ACCOUNT", + "value": "[uniquestring(resourceGroup().id)]" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + } + } + }, + { + "name": "mysql-share", + "properties": { + "image": "mcr.microsoft.com/azure-cli", + "command": [ + "az", + "storage", + "share", + "create", + "--name", + "mysql-share" + ], + "environmentVariables": [ + { + "name": "AZURE_STORAGE_KEY", + "value": "[listKeys(variables('storageAccountName'),'2021-06-01').keys[0].value]" + }, + { + "name": "AZURE_STORAGE_ACCOUNT", + "value": "[uniquestring(resourceGroup().id)]" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + } + } + } + ], + "restartPolicy": "OnFailure", + "osType": "Linux" + } + }, + { + "name": "mysql-containerinstance", + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ContainerInstance/containerGroups//createshare-containerinstance", + "Microsoft.Network/networkProfiles//aci-networkProfile" + ], + "properties": { + "containers": [ + { + "name": "mysql", + "properties": { + "image": "mysql:5.6", + "ports": [ + { + "protocol": "Tcp", + "port": 3306 + } + ], + "environmentVariables": [ + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "GEN-PASSWORD" + } + ], + "volumeMounts": [ + { + "mountPath": "/var/lib/mysql", + "name": "mysqlfile" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + } + } + } + ], + "volumes": [ + { + "azureFile": { + "shareName": "mysql-share", + "storageAccountKey": "[listKeys(variables('storageAccountName'),'2021-06-01').keys[0].value]", + "storageAccountName": "[uniquestring(resourceGroup().id)]" + }, + "name": "mysqlfile" + } + ], + "networkProfile": { + "Id": "Microsoft.Network/networkProfiles/aci-networkProfile" + }, + "osType": "Linux" + } + }, + { + "name": "wordpress-containerinstance", + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ContainerInstance/containerGroups//createshare-containerinstance", + "Microsoft.ContainerInstance/containerGroups//mysql-containerinstance" + ], + "properties": { + "containers": [ + { + "name": "wordpress", + "properties": { + "image": "wordpress:4.9-apache", + "ports": [ + { + "protocol": "Tcp", + "port": 80 + } + ], + "environmentVariables": [ + { + "name": "WORDPRESS_DB_HOST", + "value": "[concat(reference(variables('mysqlContainerGroupRef')).ipAddress.ip, ':3306')]" + }, + { + "name": "WORDPRESS_DB_PASSWORD", + "value": "GEN-PASSWORD" + } + ], + "volumeMounts": [ + { + "mountPath": "/var/www/html", + "name": "wordpressfile" + } + ], + "resources": { + "requests": { + "cpu": "1.0", + "memoryInGb": "1.5" + } + } + } + } + ], + "volumes": [ + { + "azureFile": { + "shareName": "wordpress-share", + "storageAccountKey": "[listKeys(variables('storageAccountName'),'2021-06-01').keys[0].value]", + "storageAccountName": "[uniquestring(resourceGroup().id)]" + }, + "name": "wordpressfile" + } + ], + "networkProfile": { + "Id": "Microsoft.Network/networkProfiles/aci-networkProfile" + }, + "osType": "Linux" + } + }, + { + "apiVersion": "2020-05-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//aci-vnet", + "Microsoft.Network/publicIPAddresses//publicIp1", + "Microsoft.ContainerInstance/containerGroups//wordpress-containerinstance" + ], + "properties": { + "sku": { + "name": "Standard_Medium", + "tier": "Standard", + "capacity": "2" + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/aci-vnet/ag-subnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp1" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "[reference(variables('wordpressContainerGroupRef')).ipAddress.ip]" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts/applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "outputs": { + "SiteFQDN": { + "type": "string", + "value": "[reference(variables('publicIPRef')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT587 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT587 new file mode 100644 index 0000000..dcbb32c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT587 @@ -0,0 +1,333 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/docker-wordpress-mysql/azuredeploy.json", + "/application-workloads/wordpress/docker-wordpress-mysql/azuredeploy.parameters.json" + ], + "timestamp": 1642962897389, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/docker-wordpress-mysql/azuredeploy.json", + "/application-workloads/wordpress/docker-wordpress-mysql/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT587", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT587", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "type": "securestring", + "metadata": { + "description": "Root password password for the MySQL database." + }, + "value": "GEN-PASSWORD" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the virtual machine." + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "18.04-LTS", + "nsgName": "myNSG", + "nicName": "myVMNic", + "extensionName": "DockerExtension", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyDockerVM", + "virtualNetworkName": "MyVNET", + "nsgID": "Microsoft.Network/networkSecurityGroups/myNSG", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/myNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "myNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "http", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyDockerVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MyDockerVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyDockerVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyDockerVM/DockerExtension", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyDockerVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "environment": { + "MYSQL_ROOT_PASSWORD": "GEN-PASSWORD" + } + }, + "settings": { + "compose": { + "db": { + "image": "mysql", + "ports": [ + "3306:3306" + ], + "volumes": [ + "/var/lib/mysql:/var/lib/mysql" + ], + "environment": [ + "MYSQL_ROOT_PASSWORD" + ] + }, + "wordpress": { + "image": "wordpress", + "ports": [ + "80:80" + ], + "links": [ + "db:mysql" + ] + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT588 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT588 new file mode 100644 index 0000000..5cfbdd2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT588 @@ -0,0 +1,149 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/wordpress-app-service-mysql-inapp/azuredeploy.json", + "/application-workloads/wordpress/wordpress-app-service-mysql-inapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962897436, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-app-service-mysql-inapp/azuredeploy.json", + "/application-workloads/wordpress/wordpress-app-service-mysql-inapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT588", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT588", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sku": { + "type": "string", + "metadata": { + "description": "wordpress site name" + }, + "allowedValues": [ + "F1", + "B1", + "S1" + ], + "defaultValue": "F1", + "value": "B1" + }, + "repoUrl": { + "type": "string", + "metadata": { + "description": "GitHub repo to deploy to App Service" + }, + "defaultValue": "https://github.com/azureappserviceoss/wordpress-azure" + }, + "branch": { + "type": "string", + "metadata": { + "description": "GitHub repo branch to deploy to App Service" + }, + "defaultValue": "master" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "hostingPlanName": "[concat(uniquestring(resourceGroup().id),'hostingplan')]", + "siteName": "[concat(uniquestring(resourceGroup().id),'website')]" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "sku": { + "name": "B1", + "capacity": 1 + }, + "name": "[variables('hostingPlanName')]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Web/sites", + "name": "[variables('siteName')]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "properties": { + "name": "[variables('siteName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]", + "siteConfig": { + "localMySqlEnabled": true, + "appSettings": [ + { + "name": "WEBSITE_MYSQL_ENABLED", + "value": "1" + }, + { + "name": "WEBSITE_MYSQL_GENERAL_LOG", + "value": "0" + }, + { + "name": "WEBSITE_MYSQL_SLOW_QUERY_LOG", + "value": "0" + }, + { + "name": "WEBSITE_MYSQL_ARGUMENTS", + "value": "--max_allowed_packet=16M" + } + ] + } + }, + "resources": [ + { + "type": "sourcecontrols", + "name": "web", + "apiVersion": "2020-06-01", + "properties": { + "RepoUrl": "https://github.com/azureappserviceoss/wordpress-azure", + "branch": "master", + "IsManualIntegration": true + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', variables('siteName'))]" + ] + }, + { + "type": "config", + "name": "web", + "apiVersion": "2020-06-01", + "properties": { + "phpVersion": "7.0" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/sites/', variables('siteName'))]" + ] + } + ], + "dependsOn": [ + "[resourceId('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT589 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT589 new file mode 100644 index 0000000..678fd9d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT589 @@ -0,0 +1,540 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/mysql-replication.json" + ], + "timestamp": 1642962897455, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/mysql-replication.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT589", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT589", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsName": { + "type": "string", + "metadata": { + "description": "Connect to your cluster using dnsName.location.cloudapp.azure.com" + } + }, + "vmUserName": { + "type": "string", + "metadata": { + "description": "user name to ssh to the VMs" + } + }, + "mysqlRootPassword": { + "type": "securestring", + "metadata": { + "description": "mysql root user password single quote not allowed" + } + }, + "mysqlReplicationPassword": { + "type": "securestring", + "metadata": { + "description": "mysql replication user password single quote not allowed" + } + }, + "mysqlProbePassword": { + "type": "securestring", + "metadata": { + "description": "mysql probe password single quote not allowed" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "size for the VMs" + } + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Identifies whether to use a new or existing Virtual Network" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "mysqlvnet", + "metadata": { + "description": "New or existing Virtual network name" + } + }, + "dbSubnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "subnet name for the MySQL nodes" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "IP address in CIDR for virtual network" + } + }, + "dbSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "IP address in CIDR for db subnet" + } + }, + "dbSubnetStartAddress": { + "type": "string", + "defaultValue": "10.0.1.4", + "metadata": { + "description": "Start IP address in the subnet for the VMs" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "OpenLogic", + "metadata": { + "description": "publisher for the VM OS image" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "CentOS", + "metadata": { + "description": "VM OS name" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "8_2", + "metadata": { + "description": "VM OS version" + } + }, + "mysqlFrontEndPort0": { + "type": "int", + "defaultValue": 3306, + "metadata": { + "description": "MySQL public port master" + } + }, + "mysqlFrontEndPort1": { + "type": "int", + "defaultValue": 3307, + "metadata": { + "description": "MySQL public port slave" + } + }, + "sshNatRuleFrontEndPort0": { + "type": "int", + "defaultValue": 64001, + "metadata": { + "description": "public ssh port for VM1" + } + }, + "sshNatRuleFrontEndPort1": { + "type": "int", + "defaultValue": 64002, + "metadata": { + "description": "public ssh port for VM2" + } + }, + "mysqlProbePort0": { + "type": "int", + "defaultValue": 9200, + "metadata": { + "description": "MySQL public port master" + } + }, + "mysqlProbePort1": { + "type": "int", + "defaultValue": 9201, + "metadata": { + "description": "MySQL public port slave" + } + }, + "publicIPName": { + "type": "string", + "defaultValue": "mysqlIP01", + "metadata": { + "description": "public IP name for MySQL loadbalancer" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "templateAPIVersion": "2015-01-01", + "nodeCount": 2, + "lbPublicIPName": "mysqlIP01", + "lbName": "dnsName-lb", + "ilbBackendAddressPoolName": "dnsName-ilbBackendPool", + "sshIPConfigName": "dnsName-sshIPCfg", + "nicName": "dnsName-nic", + "availabilitySetName": "dnsName-set", + "customScriptFilePath": "[uri(parameters('_artifactsLocation'), concat('scripts/azuremysql.sh', parameters('_artifactsLocationSasToken')))]", + "mysqlConfigFilePath": "[uri(parameters('_artifactsLocation'), concat('scripts/my.cnf.template', parameters('_artifactsLocationSasToken')))]", + "virtualNetworkSetupURL": "[uri(parameters('_artifactsLocation'), concat('nested/vnet-',parameters('vnetNewOrExisting'),'.json', parameters('_artifactsLocationSasToken')))]", + "sa": "10.0.1.4", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "DBName": "[concat(uniquestring(resourceGroup().id),'wordpress')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/vmUserName/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "name": "SettingUpVirtualNetwork", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/vnet-',parameters('vnetNewOrExisting'),'.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "mysqlvnet" + }, + "virtualNetworkAddressPrefix": { + "value": "10.0.0.0/16" + }, + "dbSubnetName": { + "value": "default" + }, + "dbSubnetAddressPrefix": { + "value": "10.0.1.0/24" + }, + "location": { + "value": "location" + } + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "mysqlIP01", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "dnsName" + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "dnsName-set", + "apiVersion": "2017-12-01", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "dnsName-niccopyIndex()", + "location": "location", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Resources/deployments//SettingUpVirtualNetwork", + "Microsoft.Network/loadBalancers//dnsName-lb" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigcopyIndex()", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(copyIndex(variables('ipOctet3')), 255)), '.', mod(copyIndex(variables('ipOctet3')), 255))]", + "subnet": { + "id": "[reference('Microsoft.Resources/deployments/SettingUpVirtualNetwork', variables('templateAPIVersion')).outputs.dbSubnetRef.value]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//dnsName-lb/dnsName-ilbBackendPool" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/dnsName-lb/dnsNameNatRulecopyIndex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/dnsName-lb/dnsNameProbeNatRulecopyIndex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/dnsName-lb/dnsNameMySQLNatRulecopyIndex()" + } + ] + } + } + ] + } + }, + { + "name": "dnsNamecopyIndex()", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2018-10-01", + "location": "location", + "copy": { + "name": "vmLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/availabilitySets/dnsName-set", + "Microsoft.Network/networkInterfaces/dnsName-niccopyIndex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/dnsName-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "dnsNamecopyIndex()", + "adminUsername": "vmUserName", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "8_2", + "version": "latest" + }, + "osDisk": { + "name": "dnsNamecopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "dnsNamecopyIndex()_DataDisk1", + "diskSizeGB": "1000", + "lun": 0, + "createOption": "Empty" + }, + { + "name": "dnsNamecopyIndex()_DataDisk2", + "diskSizeGB": "1000", + "lun": 1, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dnsName-niccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "dnsNamecopyIndex()/setupMySQL", + "apiVersion": "2015-06-15", + "location": "location", + "copy": { + "name": "extLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//dnsNamecopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/azuremysql.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[format('{0} {1} {2} ''{3}'' ''{4}'' ''{5}'' ''{6}'' {7} {8}', 'bash azuremysql.sh', copyIndex(1), concat(variables('ipOctet01'), add(variables('ipOctet2'), div(copyIndex(variables('ipOctet3')), 255)), '.', mod(copyIndex(variables('ipOctet3')), 255)), variables('mysqlConfigFilePath'), parameters('mysqlReplicationPassword'), parameters('mysqlRootPassword'), parameters('mysqlProbePassword'), parameters('dbSubnetAddressPrefix'), variables('DBName'))]" + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/loadBalancers", + "name": "dnsName-lb", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//mysqlIP01" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "dnsName-sshIPCfg", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/mysqlIP01" + } + } + } + ], + "backendAddressPools": [ + { + "name": "dnsName-ilbBackendPool" + } + ], + "inboundNatRules": [ + { + "name": "dnsNameNatRule0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//dnsName-lb/dnsName-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 64001, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "dnsNameNatRule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//dnsName-lb/dnsName-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 64002, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "dnsNameMySQLNatRule0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//dnsName-lb/dnsName-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 3306, + "backendPort": 3306, + "enableFloatingIP": false + } + }, + { + "name": "dnsNameMySQLNatRule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//dnsName-lb/dnsName-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 3307, + "backendPort": 3306, + "enableFloatingIP": false + } + }, + { + "name": "dnsNameProbeNatRule0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//dnsName-lb/dnsName-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 9200, + "backendPort": 9200, + "enableFloatingIP": false + } + }, + { + "name": "dnsNameProbeNatRule1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations//dnsName-lb/dnsName-sshIPCfg" + }, + "protocol": "Tcp", + "frontendPort": 9201, + "backendPort": 9200, + "enableFloatingIP": false + } + } + ] + } + } + ], + "outputs": { + "fqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('lbPublicIPName')),'2020-08-01').dnsSettings.fqdn]", + "type": "string" + }, + "ipaddress": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('lbPublicIPName')),'2020-08-01').ipAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT59 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT59 new file mode 100644 index 0000000..279de35 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT59 @@ -0,0 +1,54 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-json-parameters-linux-vm/prereqs/prereq.azuredeploy.json", + "/application-workloads/chef/chef-json-parameters-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962884402, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-json-parameters-linux-vm/prereqs/prereq.azuredeploy.json", + "/application-workloads/chef/chef-json-parameters-linux-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT59", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT59", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDnsName": { + "type": "string", + "metadata": { + "description": "DNS name" + }, + "value": "GEN-UNIQUE-8" + } + }, + "variables": {}, + "resources": [], + "outputs": { + "chefserverurl": { + "type": "string", + "value": "[concat('https://',parameters('vmDnsName'),'.cloudapp.net/organizations/Orgname')]" + }, + "vmdnsName": { + "type": "string", + "value": "[toLower(parameters('vmDnsName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT590 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT590 new file mode 100644 index 0000000..b3e63df --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT590 @@ -0,0 +1,53 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/vnet-existing.json" + ], + "timestamp": 1642962897474, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/vnet-existing.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT590", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT590", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string" + }, + "dbSubnetName": { + "type": "string" + }, + "vnetExistingResourceGroupName": { + "type": "string", + "defaultValue": "" + } + }, + "variables": { + "vnetID": "parameters('vnetExistingResourceGroupName')/Microsoft.Network/virtualNetworks/virtualNetworkName" + }, + "resources": [], + "outputs": { + "dbSubnetRef": { + "value": "[concat(variables('vnetID'), '/subnets/', parameters('dbSubnetName'))]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT591 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT591 new file mode 100644 index 0000000..9a6ca1a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT591 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/vnet-new.json" + ], + "timestamp": 1642962897489, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/vnet-new.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT591", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT591", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string" + }, + "virtualNetworkAddressPrefix": { + "type": "string" + }, + "dbSubnetName": { + "type": "string" + }, + "dbSubnetAddressPrefix": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vnetID": "Microsoft.Network/virtualNetworks/virtualNetworkName", + "dbSubnet": "Microsoft.Network/virtualNetworks/virtualNetworkName/subnets/dbSubnetName" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetworkName", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressPrefix" + ] + }, + "subnets": [ + { + "name": "dbSubnetName", + "properties": { + "addressPrefix": "dbSubnetAddressPrefix" + } + } + ] + } + } + ], + "outputs": { + "dbSubnetRef": { + "value": "[variables('dbSubnet')]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT592 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT592 new file mode 100644 index 0000000..5d2af56 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT592 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/website.json" + ], + "timestamp": 1642962897532, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/nested/website.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT592", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT592", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string" + }, + "hostingPlanName": { + "type": "string" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Free", + "Shared", + "Basic", + "Standard", + "Premium" + ], + "defaultValue": "Free" + }, + "workerSize": { + "type": "string", + "defaultValue": "0" + }, + "dbServer": { + "type": "string" + }, + "dbName": { + "type": "string" + }, + "dbAdminPassword": { + "type": "securestring" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "repoUrl": "https://github.com/azureappserviceoss/wordpress-azure", + "branch": "master", + "workerSize": "0", + "sku": "Free", + "hostingPlanName": "hostingPlanName" + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "hostingPlanName", + "type": "Microsoft.Web/serverfarms", + "location": "location", + "properties": { + "name": "hostingPlanName", + "workerSize": "0", + "numberOfWorkers": 0 + }, + "sku": { + "tier": "Free", + "name": "F1" + } + }, + { + "apiVersion": "2019-08-01", + "name": "siteName", + "type": "Microsoft.Web/sites", + "location": "location", + "tags": { + "[concat('hidden-related:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms//hostingPlanName" + ], + "properties": { + "name": "siteName", + "serverFarmId": "Microsoft.Web/serverfarms//hostingPlanName" + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "connectionstrings", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites//siteName" + ], + "properties": { + "defaultConnection": { + "value": "Database=dbName;Data Source=dbServer;User Id=admin;Password=dbAdminPassword", + "type": "MySql" + } + } + }, + { + "apiVersion": "2019-08-01", + "name": "web", + "type": "config", + "dependsOn": [ + "Microsoft.Web/Sites//siteName" + ], + "properties": { + "phpVersion": "5.6" + } + }, + { + "apiVersion": "2020-12-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "Microsoft.Web/Sites/siteName", + "Microsoft.Web/Sites/config//siteName/connectionstrings", + "Microsoft.Web/Sites/config//siteName/web" + ], + "properties": { + "RepoUrl": "https://github.com/azureappserviceoss/wordpress-azure", + "branch": "master", + "IsManualIntegration": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT593 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT593 new file mode 100644 index 0000000..fac8748 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT593 @@ -0,0 +1,408 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/azuredeploy.json", + "/application-workloads/wordpress/wordpress-mysql-replication/azuredeploy.parameters.json" + ], + "timestamp": 1642962897563, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-mysql-replication/azuredeploy.json", + "/application-workloads/wordpress/wordpress-mysql-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT593", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT593", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "type": "string", + "metadata": { + "description": "wordpress site name" + }, + "value": "GEN-UNIQUE" + }, + "hostingPlanName": { + "type": "string", + "metadata": { + "description": "website host plan" + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "defaultValue": "Standard", + "metadata": { + "description": "website sku" + } + }, + "workerSize": { + "type": "string", + "defaultValue": "1", + "metadata": { + "description": "website worker size" + } + }, + "dnsName": { + "type": "string", + "metadata": { + "description": "Connect to your cluster using dnsName.location.cloudapp.azure.com" + }, + "value": "GEN-UNIQUE" + }, + "publicIPName": { + "type": "string", + "defaultValue": "mysqlIP01", + "metadata": { + "description": "public IP name for MySQL loadbalancer" + } + }, + "vmUserName": { + "type": "string", + "metadata": { + "description": "user name to ssh to the VMs" + }, + "value": "GEN-UNIQUE" + }, + "mysqlRootPassword": { + "type": "securestring", + "metadata": { + "description": "mysql root user password" + }, + "value": "GEN-PASSWORD" + }, + "mysqlReplicationPassword": { + "type": "securestring", + "metadata": { + "description": "mysql replication user password" + }, + "value": "GEN-PASSWORD" + }, + "mysqlProbePassword": { + "type": "securestring", + "metadata": { + "description": "mysql probe password" + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "size for the VMs" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "mysqlvnet", + "metadata": { + "description": "New or Existing Virtual network name for the cluster" + } + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Identifies whether to use new or existing Virtual Network" + } + }, + "dbSubnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "subnet name for the MySQL nodes" + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "IP address in CIDR for virtual network" + } + }, + "dbSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "IP address in CIDR for db subnet" + } + }, + "dbSubnetStartAddress": { + "type": "string", + "defaultValue": "10.0.1.4", + "metadata": { + "description": "Start IP address for the VMs in db subnet" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "OpenLogic", + "metadata": { + "description": "publisher for the VM OS image" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "CentOS", + "metadata": { + "description": "VM OS name" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "8_2", + "metadata": { + "description": "VM OS version" + } + }, + "mysqlFrontEndPort0": { + "type": "int", + "defaultValue": 3306, + "metadata": { + "description": "MySQL public port" + } + }, + "mysqlFrontEndPort1": { + "type": "int", + "defaultValue": 3307, + "metadata": { + "description": "MySQL public port" + } + }, + "sshNatRuleFrontEndPort0": { + "type": "int", + "defaultValue": 64001, + "metadata": { + "description": "public ssh port for VM1" + } + }, + "sshNatRuleFrontEndPort1": { + "type": "int", + "defaultValue": 64002, + "metadata": { + "description": "public ssh port for VM2" + } + }, + "mysqlProbePort0": { + "type": "int", + "defaultValue": 9200, + "metadata": { + "description": "MySQL public port master" + } + }, + "mysqlProbePort1": { + "type": "int", + "defaultValue": 9201, + "metadata": { + "description": "MySQL public port slave" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "wpdbname": "[concat(uniquestring(resourceGroup().id),'wordpress')]" + }, + "resources": [ + { + "name": "mysql", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/mysql-replication.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "dnsName": { + "value": "GEN-UNIQUE" + }, + "vmUserName": { + "value": "GEN-UNIQUE" + }, + "mysqlRootPassword": { + "value": "GEN-PASSWORD" + }, + "mysqlReplicationPassword": { + "value": "GEN-PASSWORD" + }, + "mysqlProbePassword": { + "value": "GEN-PASSWORD" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "virtualNetworkName": { + "value": "mysqlvnet" + }, + "vnetNewOrExisting": { + "value": "new" + }, + "dbSubnetName": { + "value": "default" + }, + "vnetAddressPrefix": { + "value": "10.0.0.0/16" + }, + "dbSubnetAddressPrefix": { + "value": "10.0.1.0/24" + }, + "dbSubnetStartAddress": { + "value": "10.0.1.4" + }, + "imagePublisher": { + "value": "OpenLogic" + }, + "imageOffer": { + "value": "CentOS" + }, + "imageSKU": { + "value": "8_2" + }, + "mysqlFrontEndPort0": { + "value": 3306 + }, + "mysqlFrontEndPort1": { + "value": 3307 + }, + "sshNatRuleFrontEndPort0": { + "value": 64001 + }, + "sshNatRuleFrontEndPort1": { + "value": 64002 + }, + "mysqlProbePort0": { + "value": 9200 + }, + "mysqlProbePort1": { + "value": 9201 + }, + "publicIPName": { + "value": "mysqlIP01" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "name": "website", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/mysql" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/website.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "siteName": { + "value": "GEN-UNIQUE" + }, + "hostingPlanName": { + "value": "GEN-UNIQUE" + }, + "sku": { + "value": "Standard" + }, + "workerSize": { + "value": "1" + }, + "DbServer": { + "value": "GEN-UNIQUE.[resourceGroup().location].cloudapp.azure.com:3306" + }, + "DbName": { + "value": "[variables('wpdbname')]" + }, + "DbAdminPassword": { + "value": "GEN-PASSWORD" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT594 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT594 new file mode 100644 index 0000000..56fe537 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT594 @@ -0,0 +1,307 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/wordpress/wordpress-single-vm-ubuntu/azuredeploy.json", + "/application-workloads/wordpress/wordpress-single-vm-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962897600, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/wordpress/wordpress-single-vm-ubuntu/azuredeploy.json", + "/application-workloads/wordpress/wordpress-single-vm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT594", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT594", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDnsName": { + "type": "string", + "metadata": { + "description": "This is the unique DNS name of the for the public IP for your VM" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "This is the username you wish to assign to your VMs admin account" + }, + "value": "GEN-UNIQUE" + }, + "mySqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password for your mySQL account" + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of VM" + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "nicName": "NIC-WEB-01", + "addressPrefix": "10.0.0.0/16", + "imagePublisher": "Canonical", + "imageVersion": "latest", + "imageSKU": "18.04-LTS", + "imageOffer": "UbuntuServer", + "subnetName": "SNET-WEB-PROD", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "StandardSSD_LRS", + "publicIPAddressName": "PIP-WEB-01", + "publicIPAddressType": "Dynamic", + "vmName": "GEN-UNIQUE", + "virtualNetworkName": "VNET-WEB-PROD", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/VNET-WEB-PROD/SNET-WEB-PROD", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "WEB-NSG" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "PIP-WEB-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "WEB-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-80", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET-WEB-PROD", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/WEB-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "SNET-WEB-PROD", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/WEB-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "NIC-WEB-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//PIP-WEB-01", + "Microsoft.Network/virtualNetworks//VNET-WEB-PROD" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PIP-WEB-01" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET-WEB-PROD/SNET-WEB-PROD" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//NIC-WEB-01" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/NIC-WEB-01" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/newuserscript", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_wordpress.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_wordpress.sh GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT595 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT595 new file mode 100644 index 0000000..adba44f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT595 @@ -0,0 +1,507 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/zulu/Linux-Java-ZuluOpenJDK/azuredeploy.json", + "/application-workloads/zulu/Linux-Java-ZuluOpenJDK/azuredeploy.parameters.json" + ], + "timestamp": 1642962897608, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/zulu/Linux-Java-ZuluOpenJDK/azuredeploy.json", + "/application-workloads/zulu/Linux-Java-ZuluOpenJDK/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT595", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT595", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "OS": { + "type": "string", + "defaultValue": "Ubuntu 20.04-LTS", + "allowedValues": [ + "Ubuntu 20.04-LTS", + "Ubuntu 18.04-LTS", + "Debian 10", + "Debian 9", + "CentOS 8.1" + ], + "metadata": { + "description": "The Linux distribution for the VM. This will pick a fully patched image of the selected distribution." + } + }, + "javaPackageName": { + "type": "string", + "defaultValue": "Azul_Zulu_OpenJDK-8-JDK", + "allowedValues": [ + "Azul_Zulu_OpenJDK-7-JDK", + "Azul_Zulu_OpenJDK-7-JRE", + "Azul_Zulu_OpenJDK-7-JRE-Headless", + "Azul_Zulu_OpenJDK-8-JDK", + "Azul_Zulu_OpenJDK-8-JRE", + "Azul_Zulu_OpenJDK-8-JRE-Headless", + "Azul_Zulu_OpenJDK-11-JDK", + "Azul_Zulu_OpenJDK-11-JRE", + "Azul_Zulu_OpenJDK-11-JRE-Headless", + "Azul_Zulu_OpenJDK-13-JDK", + "Azul_Zulu_OpenJDK-13-JRE", + "Azul_Zulu_OpenJDK-13-JRE-Headless" + ], + "metadata": { + "description": "Azul Zulu OpenJDK JVM for Azure package name" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size for the Virtual Machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "linux-zulu", + "metadata": { + "description": "Name for the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or SSH key for the Virtual Machine." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "storageNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new storage account should be provisioned." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the storage account" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS" + ], + "metadata": { + "description": "Storage account type" + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the existing storage account" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new virtual network should be provisioned." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "VirtualNetwork", + "metadata": { + "description": "Name of the virtual network" + } + }, + "addressPrefixes": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "Address prefix of the virtual network" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix of the virtual network" + } + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the existing virtual network" + } + }, + "publicIpNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new public ip should be provisioned." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "PublicIp", + "metadata": { + "description": "Name of the public ip address" + } + }, + "publicIpDns": { + "type": "string", + "defaultValue": "[concat('linux-vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS of the public ip address for the VM" + } + }, + "publicIpResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the public ip address" + } + }, + "publicIpAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Allocation method for the public ip address" + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "Name of the resource group for the public ip address" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "imageReference": { + "Ubuntu 20.04-LTS": { + "publisher": "Canonical", + "offer": "0001-com-ubuntu-server-focal", + "sku": "20_04-lts", + "version": "latest" + }, + "Ubuntu 18.04-LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "Debian 10": { + "publisher": "Debian", + "offer": "debian-10", + "sku": "10", + "version": "latest" + }, + "Debian 9": { + "publisher": "credativ", + "offer": "Debian", + "sku": "9", + "version": "latest" + }, + "CentOS 8.1": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "8_1", + "version": "latest" + } + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "linux-zulu-nsg", + "nicName": "linux-zulu-nic", + "publicIpAddressId": { + "id": "[resourceGroup().name]/Microsoft.Network/publicIPAddresses/PublicIp" + }, + "scriptFile": { + "Ubuntu 20.04-LTS": { + "scriptFileName": "apt-zulu-install.sh" + }, + "Ubuntu 18.04-LTS": { + "scriptFileName": "apt-zulu-install.sh" + }, + "Debian 9": { + "scriptFileName": "apt-zulu-install.sh" + }, + "Debian 10": { + "scriptFileName": "apt-zulu-install.sh" + }, + "CentOS 8.1": { + "scriptFileName": "yum-zulu-install.sh" + } + } + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('storage', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "VirtualNetwork", + "location": "[resourceGroup().location]", + "dependsOn": [ + "linux-zulu-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/linux-zulu-nsg" + } + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-11-01", + "name": "PublicIp", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('linux-vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "name": "linux-zulu-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSSH", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-11-01", + "name": "linux-zulu-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "PublicIp", + "VirtualNetwork", + "linux-zulu-nsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets//VirtualNetwork/default" + }, + "publicIPAddress": "[if(not(equals(parameters('publicIpNewOrExisting'), 'none')), variables('publicIpAddressId') , json('null'))]" + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/linux-zulu-nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "linux-zulu", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('storage', uniqueString(resourceGroup().id))]", + "linux-zulu-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "linux-zulu", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "(imageReference)[parameters(OS)]", + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/linux-zulu-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId(parameters('storageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2019-06-01').primaryEndpoints.blob]" + } + } + }, + "resources": [ + { + "type": "extensions", + "apiVersion": "2019-12-01", + "name": "installScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "linux-zulu" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/', variables('scriptFile')[parameters('OS')].scriptFileName, parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('bash ', variables('scriptFile')[parameters('OS')].scriptFileName, ' ', parameters('javaPackageName'))]" + } + } + } + ] + } + ], + "outputs": { + "ssh-command": { + "type": "string", + "value": "[if(equals(parameters('publicIpNewOrExisting'), 'none'), 'no public ip', concat('ssh ', parameters('adminUsername'), '@', reference(resourceId(parameters('publicIpResourceGroupName'), 'Microsoft.Network/publicIPAddresses', parameters('publicIpName')), '2019-11-01').dnsSettings.fqdn))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT596 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT596 new file mode 100644 index 0000000..e9a59a9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT596 @@ -0,0 +1,462 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/zulu/Windows-Java-ZuluOpenJDK/azuredeploy.json", + "/application-workloads/zulu/Windows-Java-ZuluOpenJDK/azuredeploy.parameters.json" + ], + "timestamp": 1642962897632, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/zulu/Windows-Java-ZuluOpenJDK/azuredeploy.json", + "/application-workloads/zulu/Windows-Java-ZuluOpenJDK/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT596", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT596", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "windowsVersion": { + "type": "string", + "defaultValue": "Server 2019 Datacenter", + "allowedValues": [ + "Server 2019 Datacenter", + "Server 2016 Datacenter", + "Desktop 10 Enterprise", + "Desktop 10 Enterprise N", + "Desktop 10 Pro", + "Desktop 10 Pro N" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of the selected Windows version." + } + }, + "javaPackageName": { + "type": "string", + "defaultValue": "Azul_Zulu_OpenJDK-8-JDK", + "allowedValues": [ + "Azul_Zulu_OpenJDK-7-JDK", + "Azul_Zulu_OpenJDK-7-JRE", + "Azul_Zulu_OpenJDK-8-JDK", + "Azul_Zulu_OpenJDK-8-JRE", + "Azul_Zulu_OpenJDK-11-JDK", + "Azul_Zulu_OpenJDK-11-JRE", + "Azul_Zulu_OpenJDK-13-JDK", + "Azul_Zulu_OpenJDK-13-JRE" + ], + "metadata": { + "description": "Azul Zulu OpenJDK JVM for Azure package name" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size for the Virtual Machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "window-zulu", + "metadata": { + "description": "Name for the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "storageNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new storage account should be provisioned." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the storage account" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Storage account type" + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the existing storage account" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new virtual network should be provisioned." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "VirtualNetwork", + "metadata": { + "description": "Name of the virtual network" + } + }, + "addressPrefixes": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "Address prefix of the virtual network" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix of the virtual network" + } + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the existing virtual network" + } + }, + "publicIpNewOrExisting": { + "type": "string", + "defaultValue": "new", + "metadata": { + "description": "Determines whether or not a new public ip should be provisioned." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "PublicIp", + "metadata": { + "description": "Name of the public ip address" + } + }, + "publicIpDns": { + "type": "string", + "defaultValue": "[concat('window-vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS of the public ip address for the VM" + } + }, + "publicIpResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the public ip address" + } + }, + "publicIpAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Allocation method for the public ip address" + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard" + ], + "metadata": { + "description": "Name of the resource group for the public ip address" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "imageReference": { + "Server 2019 Datacenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "Server 2016 Datacenter": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "Desktop 10 Enterprise": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "19h2-ent", + "version": "latest" + }, + "Desktop 10 Enterprise N": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "19h2-entn", + "version": "latest" + }, + "Desktop 10 Pro": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "19h2-pro", + "version": "latest" + }, + "Desktop 10 Pro N": { + "publisher": "MicrosoftWindowsDesktop", + "offer": "Windows-10", + "sku": "19h2-pron", + "version": "latest" + } + }, + "networkSecurityGroupName": "window-zulu-nsg", + "nicName": "window-zulu-nic", + "publicIpAddressId": { + "id": "[resourceGroup().name]/Microsoft.Network/publicIPAddresses/PublicIp" + }, + "scriptFileName": "zulu-install.ps1" + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('storage', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "VirtualNetwork", + "location": "[resourceGroup().location]", + "dependsOn": [ + "window-zulu-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/window-zulu-nsg" + } + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-11-01", + "name": "PublicIp", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('window-vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "name": "window-zulu-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowRDP", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-11-01", + "name": "window-zulu-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "PublicIp", + "VirtualNetwork", + "window-zulu-nsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets//VirtualNetwork/default" + }, + "publicIPAddress": "[if(not(equals(parameters('publicIpNewOrExisting'), 'none')), variables('publicIpAddressId') , json('null'))]" + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/window-zulu-nsg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "window-zulu", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('storage', uniqueString(resourceGroup().id))]", + "window-zulu-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "window-zulu", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": "(imageReference)[parameters(windowsVersion)]", + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/window-zulu-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId(parameters('storageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2019-06-01').primaryEndpoints.blob]" + } + } + }, + "resources": [ + { + "type": "extensions", + "apiVersion": "2019-12-01", + "name": "installScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "window-zulu" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File zulu-install.ps1 Azul_Zulu_OpenJDK-8-JDK" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT597 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT597 new file mode 100644 index 0000000..7cc9fb7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT597 @@ -0,0 +1,454 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/100-marketplace-sample/azuredeploy.json", + "/demos/100-marketplace-sample/azuredeploy.parameters.json" + ], + "timestamp": 1642962897646, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/100-marketplace-sample/azuredeploy.json", + "/demos/100-marketplace-sample/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT597", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT597", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "vmName": { + "type": "string", + "defaultValue": "linux-vm", + "metadata": { + "description": "Name for the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "password", + "sshPublicKey" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Password or ssh key for the Virtual Machine." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Size for the Virtual Machine." + } + }, + "storageNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not a new storage account should be provisioned." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the storage account" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Storage account type" + } + }, + "storageAccountResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the existing storage account" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not a new virtual network should be provisioned." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "VirtualNetwork", + "metadata": { + "description": "Name of the virtual network" + } + }, + "addressPrefixes": { + "type": "array", + "defaultValue": [ + "10.0.0.0/16" + ], + "metadata": { + "description": "Address prefix of the virtual network" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "Name of the subnet" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet prefix of the virtual network" + } + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the existing virtual network" + } + }, + "publicIpNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "none", + "new", + "existing" + ], + "metadata": { + "description": "Determines whether or not a new public ip should be provisioned." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "PublicIp", + "metadata": { + "description": "Name of the public ip address" + } + }, + "publicIpDns": { + "type": "string", + "defaultValue": "[concat('linux-vm-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS of the public ip address for the VM" + } + }, + "publicIpResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "Name of the resource group for the public ip address" + } + }, + "publicIpAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static", + "" + ], + "metadata": { + "description": "Allocation method for the public ip address" + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "" + ], + "metadata": { + "description": "Name of the resource group for the public ip address" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "nicName": "linux-vm-nic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "publicIpAddressId": { + "id": "[resourceGroup().name]/Microsoft.Network/publicIPAddresses/PublicIp" + }, + "networkSecurityGroupName": "nsg-ssh", + "fileToBeCopied": "FileToBeCopied.txt", + "scriptFolder": "scripts", + "scriptFileName": "copyfilefromazure.sh", + "scriptArgs": "[concat('-a ', uri(parameters('_artifactsLocation'), '.'), ' -t \"', parameters('_artifactsLocationSasToken'), '\" -p ', variables('scriptFolder'), ' -f ', variables('fileToBeCopied'))]" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "name": "pid-00000000-0000-0000-0000-000000000000", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "condition": false, + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('storage', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "PublicIp", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('linux-vm-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "VirtualNetwork", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "nsg-ssh", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "22", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "linux-vm-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "PublicIp", + "VirtualNetwork", + "nsg-ssh" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceGroup().name]/Microsoft.Network/virtualNetworks/subnets//VirtualNetwork/default" + }, + "publicIPAddress": "[if(not(equals(parameters('publicIpNewOrExisting'), 'none')), variables('publicIpAddressId') , json('null'))]" + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg-ssh" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "linux-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('storage', uniqueString(resourceGroup().id))]", + "linux-vm-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "linux-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/linux-vm-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId(parameters('storageAccountResourceGroupName'), 'Microsoft.Storage/storageAccounts/', parameters('storageAccountName')), '2018-02-01').primaryEndpoints.blob]" + } + } + }, + "resources": [ + { + "type": "extensions", + "name": "configScript", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "linux-vm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/copyfilefromazure.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash ', variables('scriptFileName'), ' ', variables('scriptArgs'))]" + } + } + } + ] + } + ], + "outputs": { + "ssh-command": { + "type": "string", + "value": "[if(equals(parameters('publicIpNewOrExisting'), 'none'), 'no public ip, vnet access only', concat('ssh ', parameters('adminUsername'), '@', reference(resourceId(parameters('publicIpResourceGroupName'), 'Microsoft.Network/publicIPAddresses', parameters('publicIpName')), '2018-04-01').dnsSettings.fqdn))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT598 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT598 new file mode 100644 index 0000000..5ba42bb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT598 @@ -0,0 +1,476 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/2fe-lb80-rdp-1be-nsg-rdp/azuredeploy.json", + "/demos/2fe-lb80-rdp-1be-nsg-rdp/azuredeploy.parameters.json" + ], + "timestamp": 1642962897656, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/2fe-lb80-rdp-1be-nsg-rdp/azuredeploy.json", + "/demos/2fe-lb80-rdp-1be-nsg-rdp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT598", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT598", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicDnsName": { + "type": "string", + "metadata": { + "description": "Unique public DNS prefix for the deployment. The fqdn will look something like '.westus.cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM. Exclusion list: 'admin','administrator'" + }, + "value": "pietro" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "windowsVmSku": { + "type": "string", + "defaultValue": "2019-Datacenter", + "metadata": { + "description": "Windows Image VM SKU" + } + }, + "sqlVmOffer": { + "type": "string", + "defaultValue": "sql2019-ws2019", + "metadata": { + "description": "SQL VM Image Offer" + } + }, + "sqlVmSku": { + "type": "string", + "defaultValue": "standard", + "allowedValues": [ + "standard", + "enterprise" + ], + "metadata": { + "description": "SQL VM Image SKU" + } + }, + "sqlVmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "SQL VM Size" + } + }, + "windowsVmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Windows VM Size" + } + } + }, + "variables": { + "vnetAddressRange": "10.0.0.0/16", + "subnetAddressRange": "10.0.0.0/24", + "subnetName": "Subnet", + "vnetName": "VNET", + "numberOfInstances": 2, + "availabilitySetName": "myavlset", + "vmName": "vm", + "nicsql": "vmsql", + "newStorageAccountName": "[concat('st', uniqueString(resourceGroup().id))]", + "subnet-id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "SQLimagePublisher": "MicrosoftSQLServer", + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "vmsqlIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myavlset", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + }, + { + "comments": "Simple Network Security Group for subnet [Subnet]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-03-01", + "name": "loadBalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicIp" + ], + "properties": { + "frontendIpConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBAP" + } + ], + "inboundNatRules": [ + { + "name": "rdp0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 6001, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "rdp1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 6002, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer/lbprobe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15 + }, + "name": "lbrule" + } + ], + "probes": [ + { + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 2 + }, + "name": "lbprobe" + } + ] + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "vmsql", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "vmcopyindex()", + "copy": { + "name": "netIntLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "VNET", + "Microsoft.Network/loadBalancers/loadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/loadBalancer/rdpcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "vmsql", + "location": "[resourceGroup().location]", + "dependsOn": [ + "VNET", + "Microsoft.Network/networkSecurityGroups/vmsql" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vmsql" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vmsqlIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myavlset" + }, + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "vmcopyindex()", + "adminUsername": "pietro", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmcopyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('newStorageAccountName')).primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmsql", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicsql'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "vmsql", + "adminUsername": "pietro", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "sql2019-ws2019", + "sku": "standard", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmsql" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('newStorageAccountName')).primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT599 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT599 new file mode 100644 index 0000000..8ffa756 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT599 @@ -0,0 +1,476 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/2fe-linux-lb80-ssh-1be-win-nsg-rdp-datadisk-ssd/azuredeploy.json", + "/demos/2fe-linux-lb80-ssh-1be-win-nsg-rdp-datadisk-ssd/azuredeploy.parameters.json" + ], + "timestamp": 1642962897681, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/2fe-linux-lb80-ssh-1be-win-nsg-rdp-datadisk-ssd/azuredeploy.json", + "/demos/2fe-linux-lb80-ssh-1be-win-nsg-rdp-datadisk-ssd/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT599", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT599", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicDnsName": { + "type": "string", + "metadata": { + "description": "Unique public DNS prefix for the deployment. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM. Exclusion list: 'admin','administrator'" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM" + }, + "value": "GEN-PASSWORD" + }, + "sizeOfDiskInGB": { + "type": "int", + "defaultValue": 128, + "minValue": 128, + "maxValue": 1024, + "metadata": { + "description": "Size of data disk in GB 128-1024" + } + }, + "vmSizeFE": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size allowed for Front End" + } + }, + "vmSizeSQL": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM size allowed for SQL Server Back End" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vnetAddressRange": "10.0.0.0/16", + "subnetAddressRange": "10.0.0.0/24", + "subnetName": "Subnet", + "numberOfInstances": 2, + "availabilitySetName": "myavlset", + "vmName": "vm", + "nicsql": "vmsql", + "storageAccountNameDiag": "[concat('diag',uniqueString(resourceGroup().id))]", + "subnet-id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSku": "14.04.5-LTS", + "SQLimagePublisher": "MicrosoftSQLServer", + "SQLimageOffer": "sql2019-ws2019", + "SQLimageSku": "Standard", + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "vmsqlIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myavlset", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountNameDiag')]", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + }, + { + "comments": "Simple Network Security Group for subnet [Subnet]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2018-10-01", + "name": "loadBalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "publicIp" + ], + "properties": { + "frontendIpConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBAP" + } + ], + "inboundNatRules": [ + { + "name": "rdp0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 6001, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "rdp1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 6002, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/loadBalancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer/lbprobe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15 + }, + "name": "lbrule" + } + ], + "probes": [ + { + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 2 + }, + "name": "lbprobe" + } + ] + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "vmsql", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "vmcopyindex()", + "copy": { + "name": "netIntLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "VNET", + "loadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/loadBalancer/rdpcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "vmsql", + "location": "[resourceGroup().location]", + "dependsOn": [ + "VNET", + "Microsoft.Network/networkSecurityGroups/vmsql" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vmsql" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/vmsqlIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountNameDiag'))]", + "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('vmName'),copyindex()))]", + "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myavlset" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "vmcopyindex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmcopyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountNameDiag'), '2019-06-01').primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmsql", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountNameDiag'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicsql'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "vmsql", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "sql2019-ws2019", + "sku": "Standard", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 128, + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": 128, + "lun": 1, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmsql" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountNameDiag'), '2019-06-01').primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT6 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT6 new file mode 100644 index 0000000..3e4cde3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT6 @@ -0,0 +1,73 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/nic.json" + ], + "timestamp": 1642962883306, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/nic.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT6", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT6", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicName": { + "type": "string", + "metadata": { + "Description": "The name of the NIC to Create or Update" + } + }, + "ipConfigurations": { + "type": "array", + "metadata": { + "Description": "The IP configurations of the NIC" + } + }, + "dnsServers": { + "type": "array", + "metadata": { + "Description": "The DNS Servers of the NIC" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "name": "nicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-03-01", + "properties": { + "ipConfigurations": "ipConfigurations", + "dnsSettings": { + "dnsServers": "dnsServers" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT60 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT60 new file mode 100644 index 0000000..b47119e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT60 @@ -0,0 +1,420 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/chef-json-parameters-linux-vm/azuredeploy.json", + "/application-workloads/chef/chef-json-parameters-linux-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962884410, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/chef-json-parameters-linux-vm/azuredeploy.json", + "/application-workloads/chef/chef-json-parameters-linux-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT60", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT60", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDnsName": { + "type": "string", + "metadata": { + "description": "DNS name for the VM" + }, + "value": "GET-PREREQ-vmdnsName" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the Virtual Machines" + }, + "value": "GEN-UNIQUE" + }, + "osType": { + "type": "string", + "allowedValues": [ + "Ubuntu-18.04-LTS", + "Ubuntu-12.04.5-LTS", + "Centos-7.1", + "Centos-7" + ], + "defaultValue": "Ubuntu-18.04-LTS", + "metadata": { + "description": "The type of the operating system you want to deploy." + }, + "value": "Ubuntu-18.04-LTS" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "VM Size" + }, + "value": "Standard_A0" + }, + "chef_node_name": { + "type": "string", + "metadata": { + "description": "The name for the node (VM) in the Chef Organization" + }, + "value": "GEN-UNIQUE" + }, + "chef_server_url": { + "type": "string", + "metadata": { + "description": "Organization URL for the Chef Server. Example https://ChefServerDnsName.cloudapp.net/organizations/Orgname" + }, + "value": "GET-PREREQ-chefserverurl" + }, + "validation_client_name": { + "type": "string", + "metadata": { + "description": "Validator key name for the organization. Example : MyOrg-validator" + }, + "value": "GEN-UNIQUE" + }, + "runlist": { + "type": "string", + "defaultValue": "recipe[getting-started]", + "metadata": { + "description": "Optional Run List to Execute" + }, + "value": "recipe[getting-started]" + }, + "validation_key": { + "type": "string", + "metadata": { + "description": "JSON Escaped Validation Key" + }, + "value": "GEN-UNIQUE" + }, + "validation_key_format": { + "type": "string", + "allowedValues": [ + "plaintext", + "base64encoded" + ], + "defaultValue": "plaintext", + "metadata": { + "description": "Format in which Validation Key is given. e.g. plaintext, base64encoded" + }, + "value": "plaintext" + }, + "secret": { + "type": "securestring", + "defaultValue": "[uniqueString(newGuid())]", + "metadata": { + "description": "Encrypted Data bag secret" + }, + "value": "GEN-UNIQUE" + }, + "chef_service_interval": { + "type": "string", + "defaultValue": "30", + "metadata": { + "description": "Frequency(in minutes) at which the chef-service runs." + }, + "value": "60" + }, + "bootstrap_version": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "Chef Client Version" + }, + "value": "12.15.19" + }, + "bootstrap_channel": { + "type": "string", + "defaultValue": "stable", + "metadata": { + "description": "Release channel for Chef Client Version" + }, + "value": "stable" + }, + "daemon": { + "type": "string", + "defaultValue": "service", + "metadata": { + "description": "Daemon option is only for Windows. Allowed values: none/service/task" + }, + "value": "none" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "images": { + "Ubuntu-18.04-LTS": { + "sku": "18.04-LTS", + "offer": "UbuntuServer", + "publisher": "Canonical" + }, + "Ubuntu-12.04.5-LTS": { + "sku": "12.04.5-LTS", + "offer": "UbuntuServer", + "publisher": "Canonical" + }, + "Centos-7.1": { + "sku": "7.1", + "offer": "CentOS", + "publisher": "OpenLogic" + }, + "Centos-7": { + "sku": "7", + "offer": "CentOS", + "publisher": "OpenLogic" + } + }, + "vmExtensionName": "LinuxChefExtension", + "vmName": "GET-PREREQ-vmdnsName", + "storageAccountType": "Standard_LRS", + "newStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'cheflinuxvm')]", + "publicIPAddressName": "myPublicIP1", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "MyVNET1", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "subnet-1", + "subnet2Name": "subnet-2", + "subnet1Prefix": "10.0.0.0/24", + "subnet2Prefix": "10.0.1.0/24", + "nicName": "myVMNic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP1", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GET-PREREQ-vmdnsName" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + }, + { + "name": "subnet-2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP1", + "Microsoft.Network/virtualNetworks//MyVNET1" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP1" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET1/subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GET-PREREQ-vmdnsName", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GET-PREREQ-vmdnsName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "(images)[parameters(osType)].publisher", + "offer": "(images)[parameters(osType)].offer", + "sku": "(images)[parameters(osType)].sku", + "version": "latest" + }, + "osDisk": { + "name": "GET-PREREQ-vmdnsName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GET-PREREQ-vmdnsName/LinuxChefExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GET-PREREQ-vmdnsName" + ], + "properties": { + "publisher": "Chef.Bootstrap.WindowsAzure", + "type": "LinuxChefClient", + "typeHandlerVersion": "1210.12", + "autoUpgradeMinorVersion": true, + "settings": { + "bootstrap_options": { + "chef_node_name": "GEN-UNIQUE", + "chef_server_url": "GET-PREREQ-chefserverurl", + "validation_client_name": "GEN-UNIQUE" + }, + "runlist": "recipe[getting-started]", + "validation_key_format": "plaintext", + "chef_service_interval": "60", + "bootstrap_version": "12.15.19", + "bootstrap_channel": "stable", + "daemon": "none" + }, + "protectedSettings": { + "validation_key": "GEN-UNIQUE", + "secret": "GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT600 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT600 new file mode 100644 index 0000000..c6dc1af --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT600 @@ -0,0 +1,296 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/aci-bc/azuredeploy.json", + "/demos/aci-bc/azuredeploy.parameters.json" + ], + "timestamp": 1642962897713, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/aci-bc/azuredeploy.json", + "/demos/aci-bc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT600", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.containerinstance/containergroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT600", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "15438671126649560723" + } + }, + "parameters": { + "contGroupName": { + "type": "string", + "defaultValue": "msdyn365bc", + "metadata": { + "description": "Name for the container group" + } + }, + "dnsPrefix": { + "type": "string", + "maxLength": 50, + "metadata": { + "description": "The DNS label for the public IP address. It must be lowercase. It should match the following regular expression, or it will raise an error: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$" + }, + "value": "GEN-UNIQUE" + }, + "letsEncryptMail": { + "type": "string", + "metadata": { + "description": "The eMail address to be used when requesting a Let's Encrypt certificate" + }, + "value": "GEN-UNIQUE" + }, + "bcRelease": { + "type": "string", + "defaultValue": "mcr.microsoft.com/businesscentral:10.0.19041.985", + "metadata": { + "description": "Dynamics 365 Business Central Generic image (10.0.19041.985 is the version of Windows Server). See https://mcr.microsoft.com/v2/businesscentral/tags/list" + } + }, + "bcArtifactUrl": { + "type": "string", + "defaultValue": "https://bcartifacts.azureedge.net/onprem/19.2.32968.33504/w1", + "metadata": { + "description": "Dynamics 365 Business Central artifact URL. See https://freddysblog.com/2020/06/25/working-with-artifacts/ to understand how to find the right one." + } + }, + "username": { + "type": "string", + "metadata": { + "description": "Username for your BC super user" + }, + "value": "GEN-UNIQUE-10" + }, + "password": { + "type": "secureString", + "metadata": { + "description": "Password for your BC super user and your sa user on the database" + }, + "value": "GEN-PASSWORD" + }, + "cpuCores": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of CPU cores to allocate to the container" + } + }, + "memoryInGb": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The amount of memory to allocate to the container in gigabytes. Provide a minimum of 3 as he container will include SQL Server and BCST" + } + }, + "customNavSettings": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Custom settings for the BCST" + } + }, + "customWebSettings": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Custom settings for the Web Client" + } + }, + "acceptEula": { + "type": "string", + "defaultValue": "N", + "allowedValues": [ + "Y", + "N" + ], + "metadata": { + "description": "Change to 'Y' to accept the end user license agreement available at https://go.microsoft.com/fwlink/?linkid=861843. This is necessary to successfully run the container" + }, + "value": "Y" + }, + "azurecontainerSuffix": { + "type": "string", + "defaultValue": ".azurecontainer.io", + "allowedValues": [ + ".azurecontainer.io" + ], + "metadata": { + "description": "Please select the Azure container URL suffix for your current region. For the standard Azure cloud, this is azurecontainer.io" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "image": "mcr.microsoft.com/businesscentral:10.0.19041.985", + "publicdnsname": "[format('{0}.{1}{2}', parameters('dnsPrefix'), parameters('location'), parameters('azurecontainerSuffix'))]", + "foldersZipUri": "[uri(parameters('_artifactsLocation'), format('scripts/SetupCertificate.zip{0}', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.ContainerInstance/containerGroups", + "apiVersion": "2021-09-01", + "name": "msdyn365bc", + "location": "[resourceGroup().location]", + "properties": { + "containers": [ + { + "name": "msdyn365bc", + "properties": { + "environmentVariables": [ + { + "name": "ACCEPT_EULA", + "value": "Y" + }, + { + "name": "accept_outdated", + "value": "y" + }, + { + "name": "username", + "value": "GEN-UNIQUE-10" + }, + { + "name": "password", + "value": "GEN-PASSWORD" + }, + { + "name": "customNavSettings", + "value": "" + }, + { + "name": "customWebSettings", + "value": "" + }, + { + "name": "PublicDnsName", + "value": "[format('{0}.{1}{2}', parameters('dnsPrefix'), parameters('location'), parameters('azurecontainerSuffix'))]" + }, + { + "name": "folders", + "value": "[format('c:\\run\\my={0}', variables('foldersZipUri'))]" + }, + { + "name": "ContactEMailForLetsEncrypt", + "value": "GEN-UNIQUE" + }, + { + "name": "artifacturl", + "value": "https://bcartifacts.azureedge.net/onprem/19.2.32968.33504/w1" + }, + { + "name": "certificatePfxPassword", + "value": "GEN-PASSWORD" + } + ], + "image": "mcr.microsoft.com/businesscentral:10.0.19041.985", + "ports": [ + { + "protocol": "TCP", + "port": 443 + }, + { + "protocol": "TCP", + "port": 8080 + }, + { + "protocol": "TCP", + "port": 7049 + }, + { + "protocol": "TCP", + "port": 7048 + }, + { + "protocol": "TCP", + "port": 80 + } + ], + "resources": { + "requests": { + "cpu": 2, + "memoryInGB": 4 + } + } + } + } + ], + "restartPolicy": "Never", + "osType": "Windows", + "ipAddress": { + "type": "Public", + "ports": [ + { + "protocol": "TCP", + "port": 443 + }, + { + "protocol": "TCP", + "port": 8080 + }, + { + "protocol": "TCP", + "port": 7049 + }, + { + "protocol": "TCP", + "port": 7048 + }, + { + "protocol": "TCP", + "port": 80 + } + ], + "dnsNameLabel": "GEN-UNIQUE" + } + } + } + ], + "outputs": { + "containerIPAddressFqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('contGroupName'))).ipAddress.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT603 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT603 new file mode 100644 index 0000000..c9a57df --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT603 @@ -0,0 +1,2424 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/aks-nat-agic/azuredeploy.json", + "/demos/aks-nat-agic/azuredeploy.parameters.json" + ], + "timestamp": 1642962897790, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/aks-nat-agic/azuredeploy.json", + "/demos/aks-nat-agic/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT603", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/bastionhosts", + "microsoft.network/privateendpoints", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.operationalinsights/workspaces", + "microsoft.containerservice/managedclusters", + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.network/applicationgatewaywebapplicationfirewallpolicies", + "microsoft.insights/activitylogalerts", + "microsoft.compute/virtualmachines", + "microsoft.network/publicipprefixes", + "microsoft.network/natgateways", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.containerregistry/registries", + "microsoft.network/networksecuritygroups", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT603", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "aksClusterName": { + "defaultValue": "[concat('aks-', uniqueString(resourceGroup().id))]", + "type": "string", + "metadata": { + "description": "Specifies the name of the AKS cluster." + } + }, + "aksClusterDnsPrefix": { + "defaultValue": "[parameters('aksClusterName')]", + "type": "string", + "metadata": { + "description": "Specifies the DNS prefix specified when creating the managed cluster." + } + }, + "aksClusterTags": { + "defaultValue": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "type": "object", + "metadata": { + "description": "Specifies the tags of the AKS cluster." + } + }, + "aksClusterNetworkPlugin": { + "defaultValue": "azure", + "type": "string", + "allowedValues": [ + "azure", + "kubenet" + ], + "metadata": { + "description": "Specifies the network plugin used for building Kubernetes network. - azure or kubenet." + } + }, + "aksClusterNetworkPolicy": { + "defaultValue": "azure", + "type": "string", + "allowedValues": [ + "azure", + "calico" + ], + "metadata": { + "description": "Specifies the network policy used for building Kubernetes network. - calico or azure" + } + }, + "aksClusterPodCidr": { + "defaultValue": "10.244.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the CIDR notation IP range from which to assign pod IPs when kubenet is used." + } + }, + "aksClusterServiceCidr": { + "defaultValue": "10.3.0.0/16", + "type": "string", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges." + } + }, + "aksClusterDnsServiceIP": { + "defaultValue": "10.3.0.10", + "type": "string", + "metadata": { + "description": "Specifies the IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr." + } + }, + "aksClusterDockerBridgeCidr": { + "defaultValue": "172.17.0.1/16", + "type": "string", + "metadata": { + "description": "Specifies the CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any Subnet IP ranges or the Kubernetes service address range." + } + }, + "aksClusterLoadBalancerSku": { + "defaultValue": "standard", + "type": "string", + "allowedValues": [ + "basic", + "standard" + ], + "metadata": { + "description": "Specifies the sku of the load balancer used by the virtual machine scale sets used by nodepools." + } + }, + "aksClusterOutboundType": { + "defaultValue": "userAssignedNATGateway", + "type": "string", + "allowedValues": [ + "loadBalancer", + "managedNATGateway", + "userAssignedNATGateway", + "userDefinedRouting" + ], + "metadata": { + "description": "Specifies outbound (egress) routing method. - loadBalancer or userDefinedRouting." + } + }, + "aksClusterSkuTier": { + "type": "string", + "defaultValue": "Paid", + "allowedValues": [ + "Paid", + "Free" + ], + "metadata": { + "description": "Specifies the tier of a managed cluster SKU: Paid or Free" + } + }, + "aksClusterKubernetesVersion": { + "type": "string", + "defaultValue": "1.21.2", + "metadata": { + "description": "Specifies the version of Kubernetes specified when creating the managed cluster." + } + }, + "aksClusterAdminUsername": { + "defaultValue": "azureuser", + "type": "string", + "metadata": { + "description": "Specifies the administrator username of Linux virtual machines." + }, + "value": "GEN-UNIQUE" + }, + "aksClusterSshPublicKey": { + "defaultValue": null, + "type": "string", + "metadata": { + "description": "Specifies the SSH RSA public key string for the Linux nodes." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "aadProfileTenantId": { + "defaultValue": "[subscription().tenantId]", + "type": "string", + "metadata": { + "description": "Specifies the tenant id of the Azure Active Directory used by the AKS cluster for authentication." + } + }, + "aadProfileAdminGroupObjectIDs": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the AAD group object IDs that will have admin role of the cluster." + } + }, + "aksClusterEnablePrivateCluster": { + "defaultValue": false, + "type": "bool", + "metadata": { + "description": "Specifies whether to create the cluster as a private cluster or not." + } + }, + "aadProfileManaged": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable managed AAD integration." + } + }, + "aadProfileEnableAzureRBAC": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to to enable Azure RBAC for Kubernetes authorization." + } + }, + "systemNodePoolName": { + "defaultValue": "system", + "type": "string", + "metadata": { + "description": "Specifies the unique name of of the system node pool profile in the context of the subscription and resource group." + } + }, + "systemNodePoolVmSize": { + "defaultValue": "Standard_D16s_v3", + "type": "string", + "metadata": { + "description": "Specifies the vm size of nodes in the system node pool." + } + }, + "systemNodePoolOsDiskSizeGB": { + "defaultValue": 100, + "type": "int", + "metadata": { + "description": "Specifies the OS Disk Size in GB to be used to specify the disk size for every machine in the system agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.." + } + }, + "systemNodePoolAgentCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the number of agents (VMs) to host docker containers in the system node pool. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1." + } + }, + "systemNodePoolOsType": { + "defaultValue": "Linux", + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Specifies the OS type for the vms in the system node pool. Choose from Linux and Windows. Default to Linux." + } + }, + "systemNodePoolMaxPods": { + "defaultValue": 30, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of pods that can run on a node in the system node pool. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment." + } + }, + "systemNodePoolMaxCount": { + "defaultValue": 5, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of nodes for auto-scaling for the system node pool." + } + }, + "systemNodePoolMinCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the minimum number of nodes for auto-scaling for the system node pool." + } + }, + "systemNodePoolEnableAutoScaling": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable auto-scaling for the system node pool." + } + }, + "systemNodePoolScaleSetPriority": { + "defaultValue": "Regular", + "allowedValues": [ + "Spot", + "Regular" + ], + "type": "string", + "metadata": { + "description": "Specifies the virtual machine scale set priority in the system node pool: Spot or Regular." + } + }, + "systemNodePoolScaleSetEvictionPolicy": { + "defaultValue": "Delete", + "allowedValues": [ + "Delete", + "Deallocate" + ], + "type": "string", + "metadata": { + "description": "Specifies the ScaleSetEvictionPolicy to be used to specify eviction policy for spot virtual machine scale set. Default to Delete. Allowed values are Delete or Deallocate." + } + }, + "systemNodePoolNodeLabels": { + "defaultValue": {}, + "type": "object", + "metadata": { + "description": "Specifies the Agent pool node labels to be persisted across all nodes in the system node pool." + } + }, + "systemNodePoolNodeTaints": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. - string" + } + }, + "systemNodePoolType": { + "defaultValue": "VirtualMachineScaleSets", + "type": "string", + "allowedValues": [ + "VirtualMachineScaleSets", + "AvailabilitySet" + ], + "metadata": { + "description": "Specifies the type for the system node pool: VirtualMachineScaleSets or AvailabilitySet" + } + }, + "systemNodePoolAvailabilityZones": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the availability zones for the agent nodes in the system node pool. Requirese the use of VirtualMachineScaleSets as node pool type." + } + }, + "userNodePoolName": { + "defaultValue": "user", + "type": "string", + "metadata": { + "description": "Specifies the unique name of of the user node pool profile in the context of the subscription and resource group." + } + }, + "userNodePoolVmSize": { + "defaultValue": "Standard_D16s_v3", + "type": "string", + "metadata": { + "description": "Specifies the vm size of nodes in the user node pool." + } + }, + "userNodePoolOsDiskSizeGB": { + "defaultValue": 100, + "type": "int", + "metadata": { + "description": "Specifies the OS Disk Size in GB to be used to specify the disk size for every machine in the system agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.." + } + }, + "userNodePoolAgentCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the number of agents (VMs) to host docker containers in the user node pool. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1." + } + }, + "userNodePoolOsType": { + "defaultValue": "Linux", + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Specifies the OS type for the vms in the user node pool. Choose from Linux and Windows. Default to Linux." + } + }, + "userNodePoolMaxPods": { + "defaultValue": 30, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of pods that can run on a node in the user node pool. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment." + } + }, + "userNodePoolMaxCount": { + "defaultValue": 5, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of nodes for auto-scaling for the user node pool." + } + }, + "userNodePoolMinCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the minimum number of nodes for auto-scaling for the user node pool." + } + }, + "userNodePoolEnableAutoScaling": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable auto-scaling for the user node pool." + } + }, + "userNodePoolScaleSetPriority": { + "defaultValue": "Regular", + "allowedValues": [ + "Spot", + "Regular" + ], + "type": "string", + "metadata": { + "description": "Specifies the virtual machine scale set priority in the user node pool: Spot or Regular." + } + }, + "userNodePoolScaleSetEvictionPolicy": { + "defaultValue": "Delete", + "allowedValues": [ + "Delete", + "Deallocate" + ], + "type": "string", + "metadata": { + "description": "Specifies the ScaleSetEvictionPolicy to be used to specify eviction policy for spot virtual machine scale set. Default to Delete. Allowed values are Delete or Deallocate." + } + }, + "userNodePoolNodeLabels": { + "defaultValue": {}, + "type": "object", + "metadata": { + "description": "Specifies the Agent pool node labels to be persisted across all nodes in the user node pool." + } + }, + "userNodePoolNodeTaints": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. - string" + } + }, + "userNodePoolType": { + "defaultValue": "VirtualMachineScaleSets", + "type": "string", + "allowedValues": [ + "VirtualMachineScaleSets", + "AvailabilitySet" + ], + "metadata": { + "description": "Specifies the type for the user node pool: VirtualMachineScaleSets or AvailabilitySet" + } + }, + "userNodePoolAvailabilityZones": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the availability zones for the agent nodes in the user node pool. Requirese the use of VirtualMachineScaleSets as node pool type." + } + }, + "httpApplicationRoutingEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the httpApplicationRouting add-on is enabled or not." + } + }, + "aciConnectorLinuxEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the aciConnectorLinux add-on is enabled or not." + } + }, + "azurePolicyEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether the azurepolicy add-on is enabled or not." + } + }, + "kubeDashboardEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the kubeDashboard add-on is enabled or not." + } + }, + "podIdentityProfileEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether the pod identity addon is enabled.." + } + }, + "autoScalerProfileScanInterval": { + "type": "string", + "defaultValue": "10s", + "metadata": { + "description": "Specifies the scan interval of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterAdd": { + "type": "string", + "defaultValue": "10m", + "metadata": { + "description": "Specifies the scale down delay after add of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterDelete": { + "type": "string", + "defaultValue": "20s", + "metadata": { + "description": "Specifies the scale down delay after delete of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterFailure": { + "type": "string", + "defaultValue": "3m", + "metadata": { + "description": "Specifies scale down delay after failure of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownUnneededTime": { + "type": "string", + "defaultValue": "10m", + "metadata": { + "description": "Specifies the scale down unneeded time of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownUnreadyTime": { + "type": "string", + "defaultValue": "20m", + "metadata": { + "description": "Specifies the scale down unready time of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileUtilizationThreshold": { + "type": "string", + "defaultValue": "0.5", + "metadata": { + "description": "Specifies the utilization threshold of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileMaxGracefulTerminationSec": { + "type": "string", + "defaultValue": "600", + "metadata": { + "description": "Specifies the max graceful termination time interval in seconds for the auto-scaler of the AKS cluster." + } + }, + "virtualNetworkName": { + "defaultValue": "[concat(parameters('aksClusterName'), 'Vnet')]", + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network." + } + }, + "virtualNetworkAddressPrefixes": { + "defaultValue": "10.0.0.0/8", + "type": "string", + "metadata": { + "description": "Specifies the address prefixes of the virtual network." + } + }, + "aksSubnetName": { + "defaultValue": "AksSystemSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the system node pool of the AKS cluster." + } + }, + "aksSubnetAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the system node pool of the AKS cluster." + } + }, + "podSubnetName": { + "defaultValue": "PodSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the pods of the AKS cluster." + } + }, + "podSubnetAddressPrefix": { + "defaultValue": "10.1.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the pods of the AKS cluster." + } + }, + "vmSubnetName": { + "type": "string", + "defaultValue": "VmSubnet", + "metadata": { + "description": "Specifies the name of the subnet which contains the virtual machine." + } + }, + "vmSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.2.0.0/24", + "metadata": { + "description": "Specifies the address prefix of the subnet which contains the virtual machine." + } + }, + "bastionSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.2.1.0/24", + "metadata": { + "description": "Specifies the Bastion subnet IP prefix. This prefix must be within vnet IP prefix address space." + } + }, + "applicationGatewaySubnetName": { + "type": "string", + "defaultValue": "ApplicationGatewaySubnet", + "metadata": { + "description": "Specifies the name of the subnet which contains the the Application Gateway." + } + }, + "applicationGatewaySubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.2.2.0/24", + "metadata": { + "description": "Specifies the address prefix of the subnet which contains the Application Gateway." + } + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "[concat(parameters('aksClusterName'), 'Workspace')]", + "metadata": { + "description": "Specifies the name of the Log Analytics Workspace." + }, + "value": "GEN-UNIQUE" + }, + "logAnalyticsSku": { + "type": "string", + "allowedValues": [ + "Free", + "Standalone", + "PerNode", + "PerGB2018" + ], + "defaultValue": "PerNode", + "metadata": { + "description": "Specifies the service tier of the workspace: Free, Standalone, PerNode, Per-GB." + } + }, + "logAnalyticsRetentionInDays": { + "type": "int", + "defaultValue": 60, + "metadata": { + "description": "Specifies the workspace data retention in days. -1 means Unlimited retention for the Unlimited Sku. 730 days is the maximum allowed for all other Skus." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_DS3_v2", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "Premium_ZRS", + "StandardSSD_LRS", + "StandardSSD_ZRS", + "Standard_LRS", + "UltraSSD_LRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('boot', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + }, + "acrPrivateEndpointName": { + "type": "string", + "defaultValue": "AcrPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the Azure Container Registry." + } + }, + "acrName": { + "type": "string", + "defaultValue": "[concat('acr', uniqueString(resourceGroup().id))]", + "minLength": 5, + "maxLength": 50, + "metadata": { + "description": "Name of your Azure Container Registry" + } + }, + "acrAdminUserEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable admin user that have push / pull permission to the registry." + } + }, + "acrNetworkRuleSetDefaultAction": { + "type": "string", + "defaultValue": "Deny", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "The default action of allow or deny when no other rules match. Allowed values: Allow or Deny" + } + }, + "acrPublicNetworkAccess": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Whether or not public network access is allowed for the container registry. Allowed values: Enabled or Disabled" + } + }, + "acrSku": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Tier of your Azure Container Registry." + } + }, + "bastionHostName": { + "type": "string", + "defaultValue": "[concat(parameters('aksClusterName'), 'Bastion')]", + "metadata": { + "description": "Specifies the name of the Azure Bastion resource." + } + }, + "keyVaultPrivateEndpointName": { + "type": "string", + "defaultValue": "KeyVaultPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the Key Vault." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Key Vault resource." + } + }, + "keyVaultNetworkRuleSetDefaultAction": { + "type": "string", + "defaultValue": "Deny", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "The default action of allow or deny when no other rules match. Allowed values: Allow or Deny" + } + }, + "applicationGatewayName": { + "type": "string", + "defaultValue": "[concat('appgw-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Application Gateway." + } + }, + "applicationGatewayZones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Specifies the availability zones of the Application Gateway." + } + }, + "wafPolicyName": { + "type": "String", + "defaultValue": "[concat(parameters('applicationGatewayName'), 'WafPolicy')]", + "metadata": { + "description": "Specifies the name of the WAF policy" + } + }, + "wafPolicyMode": { + "type": "string", + "defaultValue": "Prevention", + "allowedValues": [ + "Detection", + "Prevention" + ], + "metadata": { + "description": "Specifies the mode of the WAF policy." + } + }, + "wafPolicyState": { + "type": "string", + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled " + ], + "metadata": { + "description": "Specifies the state of the WAF policy." + } + }, + "wafPolicyFileUploadLimitInMb": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "Specifies the maximum file upload size in Mb for the WAF policy." + } + }, + "wafPolicyMaxRequestBodySizeInKb": { + "type": "int", + "defaultValue": 128, + "metadata": { + "description": "Specifies the maximum request body size in Kb for the WAF policy." + } + }, + "wafPolicyRequestBodyCheck": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies the whether to allow WAF to check request Body." + } + }, + "wafPolicyRuleSetType": { + "type": "string", + "defaultValue": "OWASP", + "metadata": { + "description": "Specifies the rule set type." + } + }, + "wafPolicyRuleSetVersion": { + "type": "string", + "defaultValue": "3.1", + "metadata": { + "description": "Specifies the rule set version." + } + }, + "natGatewayName": { + "defaultValue": "[concat(parameters('aksClusterName'), 'NatGateway')]", + "type": "String", + "metadata": { + "description": "Specifies the name of the NAT gateway resource" + } + }, + "publicIPPrefixName": { + "type": "string", + "defaultValue": "[concat(parameters('aksClusterName'), 'PublicIpPrefix')]", + "metadata": { + "description": "Specifies the name of the public IP prefix." + } + }, + "publicIPPrefixLength": { + "type": "int", + "defaultValue": 28, + "minValue": 28, + "maxValue": 31, + "metadata": { + "description": "Specifies the length of the public IP prefix." + } + } + }, + "variables": { + "readerRoleDefinitionName": "acdd72a7-3385-48ef-bd42-f606fba81ae7", + "contributorRoleDefinitionName": "b24988ac-6180-42a0-ab88-20f7382dd24c", + "acrPullRoleDefinitionName": "7f951dda-4ed3-4680-a7ca-43fe172d538d", + "aksClusterUserDefinedManagedIdentityName": "[concat('aks-', uniqueString(resourceGroup().id))]ManagedIdentity", + "aksClusterUserDefinedManagedIdentityId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]ManagedIdentity", + "applicationGatewayUserDefinedManagedIdentityName": "[concat('appgw-', uniqueString(resourceGroup().id))]ManagedIdentity", + "applicationGatewayUserDefinedManagedIdentityId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('appgw-', uniqueString(resourceGroup().id))]ManagedIdentity", + "aadPodIdentityUserDefinedManagedIdentityName": "[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity", + "aadPodIdentityUserDefinedManagedIdentityId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity", + "vmSubnetNsgName": "VmSubnetNsg", + "vmSubnetNsgId": "Microsoft.Network/networkSecurityGroups/VmSubnetNsg", + "virtualNetworkId": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "aksSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSystemSubnet", + "podSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/PodSubnet", + "vmSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet", + "applicationGatewaySubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/ApplicationGatewaySubnet", + "vmNicName": "TestVmNic", + "vmNicId": "Microsoft.Network/networkInterfaces/TestVmNic", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "blobPublicDNSZoneForwarder": "[concat('blob.', environment().suffixes.storage)]", + "blobPrivateDnsZoneName": "[concat('privatelink.', variables('blobPublicDNSZoneForwarder'))]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "blobPrivateDnsZoneGroupName": "blobPrivateDnsZoneGroup", + "blobPrivateDnsZoneGroupId": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "vmId": "Microsoft.Compute/virtualMachines/TestVm", + "omsAgentForLinuxName": "LogAnalytics", + "omsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics", + "omsDependencyAgentForLinuxName": "DependencyAgent", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "bastionPublicIpAddressName": "[concat('aks-', uniqueString(resourceGroup().id))]Bastion", + "bastionPublicIpAddressId": "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp", + "bastionSubnetName": "AzureBastionSubnet", + "bastionSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AzureBastionSubnet", + "bastionHostId": "Microsoft.Network/bastionHosts/[concat(parameters('aksClusterName'), 'Bastion')]", + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "readerRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('readerRoleDefinitionName'))]", + "contributorRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinitionName'))]", + "acrPullRoleAssignmentName": "[guid(variables('aksClusterUserDefinedManagedIdentityId'), variables('acrPullRoleId'), resourceGroup().id)]", + "acrPullRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('acrPullRoleDefinitionName'))]", + "aksReaderRoleAssignmentName": "[guid(variables('aksClusterUserDefinedManagedIdentityId'), variables('readerRoleId'), resourceGroup().id)]", + "aksContributorRoleAssignmentName": "[guid(variables('aksClusterUserDefinedManagedIdentityId'), variables('contributorRoleId'), resourceGroup().id)]", + "aksContributorRoleAssignmentId": "Microsoft.Authorization/roleAssignments/[guid(variables('aksClusterUserDefinedManagedIdentityId'), variables('contributorRoleId'), resourceGroup().id)]", + "appGwContributorRoleAssignmentName": "[guid(variables('applicationGatewayUserDefinedManagedIdentityId'), variables('contributorRoleId'), resourceGroup().id)]", + "containerInsightsSolutionName": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "acrPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateDnsZoneName": "privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateEndpointGroupName": "registry", + "acrPrivateDnsZoneGroupName": "registryPrivateDnsZoneGroup", + "acrPrivateDnsZoneGroupId": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/AcrPrivateEndpoint/registryPrivateDnsZoneGroup", + "acrPrivateEndpointId": "Microsoft.Network/privateEndpoints/AcrPrivateEndpoint", + "acrId": "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "aksClusterId": "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "keyVaultPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateDnsZoneName": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateEndpointId": "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint", + "keyVaultPrivateEndpointGroupName": "vault", + "keyVaultPrivateDnsZoneGroupName": "vaultPrivateDnsZoneGroup", + "keyVaultPrivateDnsZoneGroupId": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup", + "keyVaultId": "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "wafPolicyId": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/[concat(parameters('applicationGatewayName'), 'WafPolicy')]", + "applicationGatewayId": "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]", + "applicationGatewayPublicIPAddressName": "[concat('appgw-', uniqueString(resourceGroup().id))]PublicIp", + "applicationGatewayPublicIPAddressId": "Microsoft.Network/publicIPAddresses/[concat('appgw-', uniqueString(resourceGroup().id))]PublicIp", + "applicationGatewayIPConfigurationName": "applicationGatewayIPConfiguration", + "applicationGatewayFrontendIPConfigurationName": "applicationGatewayFrontendIPConfiguration", + "applicationGatewayFrontendIPConfigurationId": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayFrontendIPConfiguration", + "applicationGatewayFrontendPortName": "applicationGatewayFrontendPort", + "applicationGatewayFrontendPortId": "Microsoft.Network/applicationGateways/frontendPorts/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayFrontendPort", + "applicationGatewayHttpListenerName": "applicationGatewayHttpListener", + "applicationGatewayHttpListenerId": "Microsoft.Network/applicationGateways/httpListeners/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayHttpListener", + "applicationGatewayBackendAddressPoolName": "applicationGatewayBackendPool", + "applicationGatewayBackendAddressPoolId": "Microsoft.Network/applicationGateways/backendAddressPools/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayBackendPool", + "applicationGatewayBackendHttpSettingsName": "applicationGatewayBackendHttpSettings", + "applicationGatewayBackendHttpSettingsId": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayBackendHttpSettings", + "applicationGatewayRequestRoutingRuleName": "default", + "publicIPPrefixId": "Microsoft.Network/publicIPPrefixes/[concat(parameters('aksClusterName'), 'PublicIpPrefix')]", + "natGatewayId": "Microsoft.Network/natGateways/[concat(parameters('aksClusterName'), 'NatGateway')]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPPrefixes", + "apiVersion": "2021-03-01", + "name": "[concat(parameters('aksClusterName'), 'PublicIpPrefix')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "prefixLength": 28, + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/natGateways", + "apiVersion": "2020-06-01", + "name": "[concat(parameters('aksClusterName'), 'NatGateway')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/publicIPPrefixes/[concat(parameters('aksClusterName'), 'PublicIpPrefix')]" + ], + "properties": { + "idleTimeoutInMinutes": 4, + "publicIpPrefixes": [ + { + "id": "Microsoft.Network/publicIPPrefixes/[concat(parameters('aksClusterName'), 'PublicIpPrefix')]" + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('bastionPublicIpAddressName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/bastionHosts", + "name": "[concat(parameters('aksClusterName'), 'Bastion')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AzureBastionSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp" + } + } + } + ] + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/bastionHosts/[concat(parameters('aksClusterName'), 'Bastion')]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "BastionAuditLogs", + "enabled": true + } + ] + } + } + ] + }, + { + "apiVersion": "2021-08-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('boot', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TestVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "TestVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/TestVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_DS3_v2" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "TestVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 50, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 50, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('vmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TestVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "VmSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/VmSubnetNsg", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[concat(parameters('aksClusterName'), 'Vnet')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/VmSubnetNsg", + "Microsoft.Network/publicIPPrefixes/[concat(parameters('aksClusterName'), 'PublicIpPrefix')]", + "Microsoft.Network/natGateways/[concat(parameters('aksClusterName'), 'NatGateway')]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/8" + ] + }, + "subnets": [ + { + "name": "AksSystemSubnet", + "properties": { + "addressPrefix": "10.0.0.0/16", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "natGateway": { + "id": "Microsoft.Network/natGateways/[concat(parameters('aksClusterName'), 'NatGateway')]" + } + } + }, + { + "name": "PodSubnet", + "properties": { + "addressPrefix": "10.1.0.0/16", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "natGateway": { + "id": "Microsoft.Network/natGateways/[concat(parameters('aksClusterName'), 'NatGateway')]" + } + } + }, + { + "name": "VmSubnet", + "properties": { + "addressPrefix": "10.2.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/VmSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "natGateway": { + "id": "Microsoft.Network/natGateways/[concat(parameters('aksClusterName'), 'NatGateway')]" + } + } + }, + { + "name": "ApplicationGatewaySubnet", + "properties": { + "addressPrefix": "10.2.2.0/24", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "10.2.1.0/24" + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "comments": "User-Defined Managed Identity defined for the AKS cluster. Used to access the Virtual Network and other resources.", + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[variables('aksClusterUserDefinedManagedIdentityName')]", + "location": "[resourceGroup().location]" + }, + { + "comments": "User-Defined Managed Identity used by the Application Gateway is assigned. Used to access Azure Key Vault.", + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[variables('applicationGatewayUserDefinedManagedIdentityName')]", + "location": "[resourceGroup().location]" + }, + { + "comments": "User-Defined Managed Identity used by an AAD Pod Identity. Used to access Azure Key Vault.", + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[variables('aadPodIdentityUserDefinedManagedIdentityName')]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('aksClusterUserDefinedManagedIdentityId'), variables('contributorRoleId'), resourceGroup().id)]", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]ManagedIdentity", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinitionName'))]", + "description": "Assign the cluster user-defined managed identity contributor role on the resource group.", + "principalId": "[reference(variables('aksClusterUserDefinedManagedIdentityName')).principalId]", + "principalType": "ServicePrincipal", + "scope": "[resourceGroup().id]" + } + }, + { + "comments": "Grant the AKS cluster ingress controller pod managed identity with reader role permissions over Key Vault; paired with the Access Policy, this allows our ingress controller to pull certificates.", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('aksClusterUserDefinedManagedIdentityId'), variables('readerRoleId'), resourceGroup().id)]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('readerRoleDefinitionName'))]", + "principalId": "[reference(variables('aadPodIdentityUserDefinedManagedIdentityId')).principalId]", + "principalType": "ServicePrincipal", + "scope": "[resourceGroup().id]" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('aksClusterUserDefinedManagedIdentityId'), variables('acrPullRoleId'), resourceGroup().id)]", + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('acrPullRoleDefinitionName'))]", + "principalId": "[reference(variables('aksClusterId'), '2020-12-01', 'Full').properties.identityProfile.kubeletidentity.objectId]", + "principalType": "ServicePrincipal", + "scope": "[resourceGroup().id]" + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('appgw-', uniqueString(resourceGroup().id))]ManagedIdentity", + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity" + ], + "properties": { + "accessPolicies": [ + { + "tenantId": "[reference(variables('applicationGatewayUserDefinedManagedIdentityId')).tenantId]", + "objectId": "[reference(variables('applicationGatewayUserDefinedManagedIdentityId')).principalId]", + "permissions": { + "secrets": [ + "get", + "list" + ], + "certificates": [ + "get" + ] + } + }, + { + "tenantId": "[reference(variables('aadPodIdentityUserDefinedManagedIdentityId')).tenantId]", + "objectId": "[reference(variables('aadPodIdentityUserDefinedManagedIdentityId')).principalId]", + "permissions": { + "secrets": [ + "get", + "list" + ], + "certificates": [ + "get" + ] + } + } + ], + "sku": { + "family": "A", + "name": "standard" + }, + "tenantId": "[subscription().tenantId]", + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Deny" + }, + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "enableSoftDelete": false + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "AuditEvent", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + } + ] + }, + { + "name": "[concat('acr', uniqueString(resourceGroup().id))]", + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "location": "[resourceGroup().location]", + "comments": "Container registry for storing docker images", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]" + ], + "tags": { + "displayName": "Container Registry", + "container.registry": "[concat('acr', uniqueString(resourceGroup().id))]" + }, + "sku": { + "name": "Premium", + "tier": "Premium" + }, + "properties": { + "adminUserEnabled": false, + "networkRuleSet": { + "defaultAction": "Deny" + }, + "policies": { + "quarantinePolicy": { + "status": "disabled" + }, + "trustPolicy": { + "type": "Notary", + "status": "disabled" + }, + "retentionPolicy": { + "days": 15, + "status": "enabled" + } + }, + "publicNetworkAccess": "Enabled", + "encryption": { + "status": "disabled" + }, + "dataEndpointEnabled": true, + "networkRuleBypassOptions": "AzureServices" + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "metrics": [ + { + "timeGrain": "PT1M", + "category": "AllMetrics", + "enabled": true + } + ], + "logs": [ + { + "category": "ContainerRegistryRepositoryEvents", + "enabled": true + }, + { + "category": "ContainerRegistryLoginEvents", + "enabled": true + } + ] + } + } + ] + }, + { + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2021-09-01", + "name": "[concat('aks-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[variables('aksClusterUserDefinedManagedIdentityId')]": {} + } + }, + "tags": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "Microsoft.Network/bastionHosts/[concat(parameters('aksClusterName'), 'Bastion')]", + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup", + "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/AcrPrivateEndpoint/registryPrivateDnsZoneGroup", + "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/BlobStorageAccountPrivateEndpoint/blobPrivateDnsZoneGroup", + "Microsoft.Authorization/roleAssignments/[guid(variables('aksClusterUserDefinedManagedIdentityId'), variables('contributorRoleId'), resourceGroup().id)]" + ], + "properties": { + "kubernetesVersion": "1.21.2", + "dnsPrefix": "[parameters('aksClusterName')]", + "sku": { + "name": "Basic", + "tier": "Paid" + }, + "agentPoolProfiles": [ + { + "name": "[tolower(parameters('systemNodePoolName'))]", + "count": 3, + "vmSize": "Standard_D16s_v3", + "osDiskSizeGB": 100, + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSystemSubnet", + "podSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/PodSubnet", + "maxPods": 30, + "osType": "Linux", + "maxCount": 5, + "minCount": 3, + "scaleSetPriority": "Regular", + "scaleSetEvictionPolicy": "Delete", + "enableAutoScaling": true, + "mode": "System", + "type": "VirtualMachineScaleSets", + "availabilityZones": [], + "nodeLabels": {}, + "nodeTaints": [] + }, + { + "name": "[tolower(parameters('userNodePoolName'))]", + "count": 3, + "vmSize": "Standard_D16s_v3", + "osDiskSizeGB": 100, + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSystemSubnet", + "podSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/PodSubnet", + "maxPods": 30, + "osType": "Linux", + "maxCount": 5, + "minCount": 3, + "scaleSetPriority": "Regular", + "scaleSetEvictionPolicy": "Delete", + "enableAutoScaling": true, + "mode": "User", + "type": "VirtualMachineScaleSets", + "availabilityZones": [], + "nodeLabels": {}, + "nodeTaints": [] + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "addonProfiles": { + "httpApplicationRouting": { + "enabled": false + }, + "omsagent": { + "enabled": true, + "config": { + "logAnalyticsWorkspaceResourceID": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + } + }, + "aciConnectorLinux": { + "enabled": false + }, + "azurepolicy": { + "enabled": true, + "config": { + "version": "v2" + } + }, + "kubeDashboard": { + "enabled": false + }, + "ingressApplicationGateway": { + "config": { + "applicationGatewayId": "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]" + }, + "enabled": true, + "identity": { + "clientId": "[reference(variables('applicationGatewayUserDefinedManagedIdentityId')).clientId]", + "objectId": "[reference(variables('applicationGatewayUserDefinedManagedIdentityId')).principalId]", + "resourceId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('appgw-', uniqueString(resourceGroup().id))]ManagedIdentity" + } + } + }, + "podIdentityProfile": { + "enabled": true + }, + "enableRBAC": true, + "networkProfile": { + "networkPlugin": "azure", + "networkPolicy": "azure", + "podCidr": "10.244.0.0/16", + "serviceCidr": "10.3.0.0/16", + "dnsServiceIP": "10.3.0.10", + "dockerBridgeCidr": "172.17.0.1/16", + "outboundType": "userAssignedNATGateway", + "loadBalancerSku": "standard", + "loadBalancerProfile": "[json('null')]" + }, + "aadProfile": { + "managed": true, + "enableAzureRBAC": true, + "adminGroupObjectIDs": [], + "tenantID": "[subscription().tenantId]" + }, + "autoScalerProfile": { + "scan-interval": "10s", + "scale-down-delay-after-add": "10m", + "scale-down-delay-after-delete": "20s", + "scale-down-delay-after-failure": "3m", + "scale-down-unneeded-time": "10m", + "scale-down-unready-time": "20m", + "scale-down-utilization-threshold": "0.5", + "max-graceful-termination-sec": "600" + }, + "apiServerAccessProfile": { + "enablePrivateCluster": false + } + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "kube-apiserver", + "enabled": true + }, + { + "category": "kube-audit", + "enabled": true + }, + { + "category": "kube-audit-admin", + "enabled": true + }, + { + "category": "kube-controller-manager", + "enabled": true + }, + { + "category": "kube-scheduler", + "enabled": true + }, + { + "category": "cluster-autoscaler", + "enabled": true + }, + { + "category": "guard", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + } + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerNode" + }, + "retentionInDays": 60 + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "name": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "location": "[resourceGroup().location]", + "dependsOn": [ + "microsoft.operationalinsights/workspaces/GEN-UNIQUE" + ], + "plan": { + "name": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "promotionCode": "", + "product": "OMSGallery/ContainerInsights", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "microsoft.operationalinsights/workspaces/GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('blobPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('virtualNetworkId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2018-09-01", + "name": "[concat(variables('keyVaultPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('acrPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "blobPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobStorageAccountPrivateEndpointId')]", + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "KeyVaultPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "KeyVaultPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "groupIds": [ + "vault" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "vaultPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]" + } + } + ] + } + } + ] + }, + { + "condition": false, + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "AcrPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "AcrPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "groupIds": [ + "registry" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "condition": false, + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "registryPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "Microsoft.Network/privateEndpoints/AcrPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]" + } + } + ] + } + } + ] + }, + { + "type": "microsoft.insights/activityLogAlerts", + "apiVersion": "2017-04-01", + "name": "AllAzureAdvisorAlert", + "location": "Global", + "properties": { + "scopes": [ + "[resourceGroup().id]" + ], + "condition": { + "allOf": [ + { + "field": "category", + "equals": "Recommendation" + }, + { + "field": "operationName", + "equals": "Microsoft.Advisor/recommendations/available/action" + } + ] + }, + "enabled": true, + "description": "All azure advisor alerts" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('applicationGatewayPublicIPAddressName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies", + "apiVersion": "2020-06-01", + "name": "[concat(parameters('applicationGatewayName'), 'WafPolicy')]", + "location": "[resourceGroup().location]", + "properties": { + "customRules": [ + { + "name": "BlockMe", + "priority": 1, + "ruleType": "MatchRule", + "action": "Block", + "matchConditions": [ + { + "matchVariables": [ + { + "variableName": "QueryString" + } + ], + "operator": "Contains", + "negationConditon": false, + "matchValues": [ + "blockme" + ] + } + ] + }, + { + "name": "BlockEvilBot", + "priority": 2, + "ruleType": "MatchRule", + "action": "Block", + "matchConditions": [ + { + "matchVariables": [ + { + "variableName": "RequestHeaders", + "selector": "User-Agent" + } + ], + "operator": "Contains", + "negationConditon": false, + "matchValues": [ + "evilbot" + ], + "transforms": [ + "Lowercase" + ] + } + ] + } + ], + "policySettings": { + "requestBodyCheck": true, + "maxRequestBodySizeInKb": 128, + "fileUploadLimitInMb": 100, + "mode": "Prevention", + "state": "Enabled" + }, + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "OWASP", + "ruleSetVersion": "3.1" + } + ] + } + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2020-05-01", + "name": "[concat('appgw-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.Network/publicIPAddresses/[concat('appgw-', uniqueString(resourceGroup().id))]PublicIp", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/[concat(parameters('applicationGatewayName'), 'WafPolicy')]" + ], + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[variables('applicationGatewayUserDefinedManagedIdentityId')]": {} + } + }, + "zones": [], + "properties": { + "sku": { + "name": "WAF_v2", + "tier": "WAF_v2" + }, + "gatewayIPConfigurations": [ + { + "name": "applicationGatewayIPConfiguration", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/ApplicationGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "applicationGatewayFrontendIPConfiguration", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat('appgw-', uniqueString(resourceGroup().id))]PublicIp" + } + } + } + ], + "frontendPorts": [ + { + "name": "applicationGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "autoscaleConfiguration": { + "minCapacity": 0, + "maxCapacity": 10 + }, + "enableHttp2": false, + "probes": [ + { + "name": "defaultHttpProbe", + "properties": { + "protocol": "Http", + "path": "/", + "interval": 30, + "timeout": 30, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": true, + "minServers": 0 + } + }, + { + "name": "defaultHttpsProbe", + "properties": { + "protocol": "Https", + "path": "/", + "interval": 30, + "timeout": 30, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": true, + "minServers": 0 + } + } + ], + "backendAddressPools": [ + { + "name": "applicationGatewayBackendPool" + } + ], + "backendHttpSettingsCollection": [ + { + "name": "applicationGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled" + } + } + ], + "httpListeners": [ + { + "name": "applicationGatewayHttpListener", + "properties": { + "firewallPolicy": { + "id": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/[concat(parameters('applicationGatewayName'), 'WafPolicy')]" + }, + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayFrontendIPConfiguration" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "default", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/[concat('appgw-', uniqueString(resourceGroup().id))]/applicationGatewayBackendHttpSettings" + } + } + } + ], + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Prevention", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.1", + "requestBodyCheck": true, + "maxRequestBodySizeInKb": 128, + "fileUploadLimitInMb": 100 + }, + "firewallPolicy": { + "id": "Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/[concat(parameters('applicationGatewayName'), 'WafPolicy')]" + } + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "dependsOn": [ + "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "ApplicationGatewayAccessLog", + "enabled": true + }, + { + "category": "ApplicationGatewayPerformanceLog", + "enabled": true + }, + { + "category": "ApplicationGatewayFirewallLog", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + } + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(variables('applicationGatewayUserDefinedManagedIdentityId'), variables('contributorRoleId'), resourceGroup().id)]", + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "Microsoft.Network/applicationGateways/[concat('appgw-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinitionName'))]", + "principalId": "[reference(variables('aksClusterId'), '2020-12-01', 'Full').properties.addonProfiles.ingressApplicationGateway.identity.objectId]", + "principalType": "ServicePrincipal", + "scope": "[resourceGroup().id]" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT604 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT604 new file mode 100644 index 0000000..1422ca6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT604 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/alert-to-queue-with-logic-app/azuredeploy.json", + "/demos/alert-to-queue-with-logic-app/azuredeploy.parameters.json" + ], + "timestamp": 1642962897836, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/alert-to-queue-with-logic-app/azuredeploy.json", + "/demos/alert-to-queue-with-logic-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT604", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT604", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name for the logic app." + }, + "value": "AlertToQueue" + }, + "serviceBusConnectionString": { + "type": "securestring", + "metadata": { + "description": "The Azure Service Bus namespace connection string." + }, + "value": "GEN-PASSWORD" + }, + "serviceBusConnectionName": { + "type": "string", + "metadata": { + "description": "The name for the Service Bus connection." + }, + "value": "AlertQueue" + }, + "serviceBusQueueName": { + "type": "string", + "metadata": { + "description": "The name of the queue to add a message to." + }, + "value": "myQueue" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "singleQuote": "'" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "location": "[resourceGroup().location]", + "name": "AlertQueue", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'servicebus')]" + }, + "displayName": "servicebus", + "parameterValues": { + "connectionString": "GEN-PASSWORD" + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "AlertToQueue", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/AlertQueue" + ], + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "request", + "kind": "Http" + } + }, + "actions": { + "Send_message": { + "type": "ApiConnection", + "inputs": { + "body": { + "ContentData": "@{encodeBase64(triggerBody())}" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['servicebus']['connectionId']" + } + }, + "method": "post", + "path": "/@{encodeURIComponent(, variables(singleQuote), parameters(serviceBusQueueName), variables(singleQuote), )}/messages" + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "servicebus": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'servicebus')]", + "connectionId": "Microsoft.Web/connections/AlertQueue" + } + } + } + } + } + } + ], + "outputs": { + "WebHookURI": { + "type": "string", + "value": "Use listCallbackURL(resourceId('Microsoft.Logic/workflows/triggers', parameter('logicAppName'), 'manual'), '2019-05-01').value to retrieve the URL. The value contains a secret." + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT605 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT605 new file mode 100644 index 0000000..ebc5428 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT605 @@ -0,0 +1,197 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/alert-to-slack-with-logic-app/azuredeploy.json", + "/demos/alert-to-slack-with-logic-app/azuredeploy.parameters.json" + ], + "timestamp": 1642962897852, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/alert-to-slack-with-logic-app/azuredeploy.json", + "/demos/alert-to-slack-with-logic-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT605", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT605", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name for the logic app." + }, + "value": "GEN-UNIQUE-8" + }, + "slackConnectionName": { + "type": "string", + "defaultValue": "SlackConnection", + "metadata": { + "description": "The name for the Slack connection." + }, + "value": "slackConnection" + }, + "slackChannel": { + "type": "string", + "defaultValue": "#general", + "metadata": { + "description": "The Slack channel to post to." + }, + "value": "#general" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "location": "[resourceGroup().location]", + "name": "slackConnection", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'slack')]" + }, + "displayName": "slack" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE-8", + "dependsOn": [ + "Microsoft.Web/connections/slackConnection" + ], + "location": "[resourceGroup().location]", + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "request", + "kind": "Http", + "inputs": { + "schema": { + "properties": { + "context": { + "properties": { + "name": { + "type": "string" + }, + "portalLink": { + "type": "string" + }, + "resourceName": { + "type": "string" + } + }, + "required": [ + "name", + "portalLink", + "resourceName" + ], + "type": "object" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status", + "context" + ], + "type": "object", + "\uff04schema": "http://json-schema.org/draft-04/schema#" + } + } + } + }, + "actions": { + "Http": { + "type": "Http", + "inputs": { + "body": { + "longUrl": "@{triggerBody()['context']['portalLink']}" + }, + "headers": { + "Content-Type": "application/json" + }, + "method": "POST", + "uri": "https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyBkT1BRbA-uULHz8HMUAi0ywJtpNLXHShI" + } + }, + "Post_Message": { + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['slack']['connectionId']" + } + }, + "method": "post", + "path": "/chat.postMessage", + "queries": { + "channel": "#general", + "text": "Azure Alert - '@{triggerBody()['context']['name']}' @{triggerBody()['status']} on '@{triggerBody()['context']['resourceName']}'. Details: @{body('Http')['id']}" + } + }, + "runAfter": { + "Http": [ + "Succeeded" + ] + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "slack": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'slack')]", + "connectionId": "Microsoft.Web/connections/slackConnection" + } + } + } + } + } + } + ], + "outputs": { + "WebHookURI": { + "type": "string", + "value": "Use 'listCallbackURL(resourceId('Microsoft.Logic/workflows/triggers', parameter('logicAppName'), 'manual'), '2019-05-01').value' to retrieve the callback URL, the value contains a secret and is not recommended in an output." + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT606 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT606 new file mode 100644 index 0000000..0c069e2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT606 @@ -0,0 +1,217 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/alert-to-text-message-with-logic-app/azuredeploy.json", + "/demos/alert-to-text-message-with-logic-app/azuredeploy.parameters.json" + ], + "timestamp": 1642962897877, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/alert-to-text-message-with-logic-app/azuredeploy.json", + "/demos/alert-to-text-message-with-logic-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT606", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT606", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "metadata": { + "description": "The name for the logic app." + }, + "value": "AlertToText" + }, + "twilioSid": { + "type": "securestring", + "metadata": { + "description": "Your Twilio SID." + }, + "value": "GEN-PASSWORD" + }, + "twilioToken": { + "type": "securestring", + "metadata": { + "description": "Your Twilio AuthToken." + }, + "value": "GEN-PASSWORD" + }, + "twilioConnectionName": { + "type": "string", + "defaultValue": "TwilioConnection", + "metadata": { + "description": "The name for the Twilio connection." + }, + "value": "TwilioConnection" + }, + "twilioAccountNumber": { + "type": "string", + "metadata": { + "description": "The Twilio number the message will send from." + }, + "value": "+15551234567" + }, + "toPhoneNumber": { + "type": "string", + "metadata": { + "description": "The phone number the message will send to." + }, + "value": "5551234567" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "location": "[resourceGroup().location]", + "name": "TwilioConnection", + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'twilio')]" + }, + "displayName": "twilio", + "parameterValues": { + "sid": "GEN-PASSWORD", + "token": "GEN-PASSWORD" + } + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2016-06-01", + "name": "AlertToText", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/TwilioConnection" + ], + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "manual": { + "type": "request", + "kind": "Http", + "inputs": { + "schema": { + "properties": { + "context": { + "properties": { + "name": { + "type": "string" + }, + "portalLink": { + "type": "string" + }, + "resourceName": { + "type": "string" + } + }, + "required": [ + "name", + "portalLink", + "resourceName" + ], + "type": "object" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status", + "context" + ], + "type": "object", + "\uff04schema": "http://json-schema.org/draft-04/schema#" + } + } + } + }, + "actions": { + "Http": { + "type": "Http", + "inputs": { + "body": { + "longUrl": "@{triggerBody()['context']['portalLink']}" + }, + "headers": { + "Content-Type": "application/json" + }, + "method": "POST", + "uri": "https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyBkT1BRbA-uULHz8HMUAi0ywJtpNLXHShI" + } + }, + "Send_Message": { + "type": "ApiConnection", + "inputs": { + "body": { + "body": "Azure Alert - '@{triggerBody()['context']['name']}' @{triggerBody()['status']} on '@{triggerBody()['context']['resourceName']}'. Details: @{body('Http')['id']}", + "from": "+15551234567", + "to": "5551234567" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['twilio']['connectionId']" + } + }, + "method": "post", + "path": "/Messages.json" + }, + "runAfter": { + "Http": [ + "Succeeded" + ] + } + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "twilio": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'twilio')]", + "connectionId": "Microsoft.Web/connections/TwilioConnection" + } + } + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT607 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT607 new file mode 100644 index 0000000..6cd2dc6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT607 @@ -0,0 +1,283 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/alsid-syslog-proxy/azuredeploy.json", + "/demos/alsid-syslog-proxy/azuredeploy.parameters.json" + ], + "timestamp": 1642962897887, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/alsid-syslog-proxy/azuredeploy.json", + "/demos/alsid-syslog-proxy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT607", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT607", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "minLength": 1, + "type": "String", + "metadata": { + "description": "Hostname of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminUserName": { + "minLength": 1, + "type": "String", + "metadata": { + "description": "User name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "SecureString", + "metadata": { + "description": "Password of the administrator account of the virtual machine" + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[concat('a', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "workspaceId": { + "type": "String", + "metadata": { + "description": "The ID of the log analytics workspace where you want to forward the logs. To find it, go to your workspace and you will have both the workspace ID and Primary key in the 'Agent management' tab." + }, + "value": "GEN-GUID" + }, + "primaryKey": { + "type": "String", + "metadata": { + "description": "The key to authenticate to the log analytics workspace where you want to forward the logs. To find it, go to your workspace and you will have both the workspace ID and Primary key in the 'Agent management' tab." + }, + "value": "GEN-UNIQUE" + }, + "vmUbuntuOSVersion": { + "defaultValue": "18.04-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.2-LTS", + "15.04", + "18.04-LTS" + ], + "type": "String", + "metadata": { + "description": "Version of the Ubuntu OS." + } + }, + "vmSize": { + "defaultValue": "Standard_A3", + "type": "String", + "metadata": { + "description": "Size of the virtual machine's disk" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location where resources should be deployed." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "vmImagePublisher": "Canonical", + "vmImageOffer": "UbuntuServer", + "vmNicName": "GEN-UNIQUENetworkInterface", + "netPrefix": "10.0.0.0/16", + "netSubnet1Name": "Subnet-1", + "netSubnet1Prefix": "10.0.0.0/24", + "netSubnet2Name": "Subnet-2", + "netSubnet2Prefix": "10.0.1.0/24", + "publicIPAddressName": "alsid-syslog-IP", + "setupScriptURI": "[uri(parameters('_artifactsLocation'), concat('scripts/setup.sh', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUENetworkInterface" + ], + "tags": { + "displayName": "vm" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "vmAdminUsername", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "vmOSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUENetworkInterface" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2020-06-01", + "type": "extensions", + "name": "config-app", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "tags": { + "displayName": "config-app" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('sudo sh setup.sh', parameters('workspaceId'), ' ', parameters('primaryKey'), ' ', parameters('_artifactsLocation'), ' ', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.FQDN, ' ', parameters('_artifactsLocationSasToken'))]" + } + } + } + ] + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "alsid-syslog-IP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "net", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "net" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "Subnet-2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUENetworkInterface", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//net", + "Microsoft.Network/publicIPAddresses//alsid-syslog-IP" + ], + "tags": { + "displayName": "vmNic" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "[resourceId ('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]" + }, + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//net/Subnet-1" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT608 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT608 new file mode 100644 index 0000000..7813e89 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT608 @@ -0,0 +1,335 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/anti-malware-extension-windows-vm/azuredeploy.json", + "/demos/anti-malware-extension-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962897922, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/anti-malware-extension-windows-vm/azuredeploy.json", + "/demos/anti-malware-extension-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT608", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT608", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Type of Storage" + } + }, + "publicIPAddressName": { + "type": "string", + "metadata": { + "description": "Public IP Address Name" + }, + "value": "GEN-UNIQUE" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Public IP Address Type" + }, + "value": "Dynamic" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM" + }, + "value": "julie" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + }, + "value": "Standard_A2" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "Image SKU" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "windows" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "VNET Name" + }, + "value": "GEN-UNIQUE" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "VNET address space" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "description": "Subnet 1 name" + } + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet 1 address space" + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the NIC" + }, + "value": "GEN-UNIQUE" + }, + "vmExtensionName": { + "type": "string", + "metadata": { + "description": "Extension name" + }, + "value": "malware" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The region you wish to deploy your resources to" + } + } + }, + "variables": { + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "julie", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "julie", + "adminUsername": "windows", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "julie_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "julie/malware", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/julie" + ], + "properties": { + "publisher": "Microsoft.Azure.Security", + "type": "IaaSAntimalware", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "settings": { + "AntimalwareEnabled": true, + "Exclusions": { + "Paths": "C:\\Users", + "Extensions": ".txt", + "Processes": "taskmgr.exe" + }, + "RealtimeProtectionEnabled": "true", + "ScheduledScanSettings": { + "isEnabled": "true", + "scanType": "Quick", + "day": "7", + "time": "120" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT609 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT609 new file mode 100644 index 0000000..3a70aea --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT609 @@ -0,0 +1,646 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/app-service-environment-azfirewall/nestedtemplates/vnet.json" + ], + "timestamp": 1642962897963, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/app-service-environment-azfirewall/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT609", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/azurefirewalls", + "microsoft.network/networksecuritygroups", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT609", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location (region) for all resources" + } + }, + "vnetResourceName": { + "type": "string", + "metadata": { + "description": "The name of the vnet" + } + }, + "vnetAddressRange": { + "type": "string", + "metadata": { + "description": "Address range of the virtual network" + } + }, + "aseSubnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + } + }, + "aseSubnetAddressRange": { + "type": "string", + "metadata": { + "description": "Address range that will be used by the App Service Environment" + } + }, + "aseNSGName": { + "type": "string", + "metadata": { + "description": "Name of the NSG for the App Service Environment" + } + }, + "aseRouteTableName": { + "type": "string", + "metadata": { + "description": "Name of the ASE Route Table" + } + }, + "azureFirewallName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Firewall" + } + }, + "deployAzureFirewall": { + "type": "bool", + "metadata": { + "description": "Toggle whether to deploy the Azure Firewall" + } + }, + "azureFirewallRouteTableName": { + "type": "string", + "metadata": { + "description": "Name of the Azure Firewall Route Table" + } + }, + "azureFirewallSubnetAddressRange": { + "type": "string", + "metadata": { + "description": "Address range that will be used by the Azure Firewall Subnet" + } + }, + "azureFirewallPublicIP": { + "type": "string", + "metadata": { + "description": "Name for the Azure Firewall public IP resource" + } + }, + "tags": { + "type": "object", + "metadata": { + "description": "Resource Tags." + } + }, + "aseSubnetServiceEndpoints": { + "type": "array", + "metadata": { + "description": "Service Endpoints enabled on the ASE subnet" + } + }, + "azureMonitorFQDNs": { + "type": "array", + "metadata": { + "description": "FQDNs to whitelist for Azure Monitor" + } + }, + "aseManagementIps": { + "type": "array", + "metadata": { + "description": "List of ASE management IPs" + } + } + }, + "variables": { + "nsgId": "Microsoft.Network/networkSecurityGroups/aseNSGName", + "azureFirewallPrivateIpArray": "[split(parameters('azureFireWallSubnetAddressRange'),'.')]", + "azureFireWallPrivateIp": "[concat(variables('azureFirewallPrivateIpArray')[0],'.',variables('azureFirewallPrivateIpArray')[1],'.',variables('azureFirewallPrivateIpArray')[2],'.4')]", + "credentialAPIFQDN": "control-location.identity.azure.net" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "aseNSGName", + "location": "location", + "tags": "tags", + "properties": { + "securityRules": [ + { + "name": "AppServiceManagement", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AppServiceManagement", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ASE-internal-inbound", + "properties": { + "description": "ASE-internal-inbound", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "192.168.250.0/24", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Inbound-HTTP", + "properties": { + "description": "Allow HTTP", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Inbound-HTTPS", + "properties": { + "description": "Allow HTTPS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "Inbound-FTP", + "properties": { + "description": "Allow FTP over port 21", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "21", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 140, + "direction": "Inbound" + } + }, + { + "name": "Inbound-FTPS", + "properties": { + "description": "Allow FTPS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "990", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 150, + "direction": "Inbound" + } + }, + { + "name": "Inbound-FTP-Data", + "properties": { + "description": "RDP", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "10001-10020", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 160, + "direction": "Inbound" + } + }, + { + "name": "Inbound-Remote-Debugging", + "properties": { + "description": "Visual Studio remote debugging", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "4016-4022", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 170, + "direction": "Inbound" + } + }, + { + "name": "Outbound-443", + "properties": { + "description": "Azure Storage blob", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "Outbound-SMB", + "properties": { + "description": "Azure Storage queue", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "445", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Outbound" + } + }, + { + "name": "Outbound-DB", + "properties": { + "description": "Database", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Outbound" + } + }, + { + "name": "Outbound-DB2", + "properties": { + "description": "Database 2", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "11000-11999", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Outbound" + } + }, + { + "name": "Outbound-DB3", + "properties": { + "description": "Database 3", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "14000-14999", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "Outbound-DNS", + "properties": { + "description": "DNS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "53", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "ASE-internal-outbound", + "properties": { + "description": "Azure Storage queue", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "192.168.250.0/24", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "Outbound-80", + "properties": { + "description": "Outbound 80", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "ASE-to-VNET", + "properties": { + "description": "ASE to VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "192.168.250.0/23", + "access": "Allow", + "priority": 180, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-11-01", + "name": "aseRouteTableName", + "location": "location", + "tags": "tags", + "properties": { + "copy": [ + { + "name": "routes", + "count": 30, + "input": { + "name": "[if(equals(copyIndex('routes'),0),'DefaultRoute',concat(parameters('aseManagementIps')[copyIndex('routes')],'-Route'))]", + "properties": { + "addressPrefix": "[if(equals(copyIndex('routes'),0),'0.0.0.0/0',concat(parameters('aseManagementIps')[copyIndex('routes')],'/32'))]", + "nextHopType": "[if(equals(copyIndex('routes'),0),'VirtualAppliance','Internet')]", + "nextHopIpAddress": "[if(equals(copyIndex('routes'),0),variables('azureFireWallPrivateIp'), json('null'))]" + } + } + } + ], + "disableBgpRoutePropagation": true + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-11-01", + "name": "azureFirewallRouteTableName", + "location": "location", + "tags": "tags", + "properties": { + "routes": [ + { + "name": "default-route", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "Internet" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "vnetResourceName", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/aseNSGName", + "Microsoft.Network/routeTables/aseRouteTableName", + "Microsoft.Network/routeTables/azureFirewallRouteTableName" + ], + "tags": "tags", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "vnetAddressRange" + ] + }, + "subnets": [ + { + "name": "aseSubnetName", + "properties": { + "addressPrefix": "aseSubnetAddressRange", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/aseNSGName" + }, + "routeTable": { + "id": "Microsoft.Network/routeTables/aseRouteTableName" + }, + "serviceEndpoints": "aseSubnetServiceEndpoints" + } + }, + { + "name": "AzureFirewallSubnet", + "properties": { + "addressPrefix": "azureFirewallSubnetAddressRange", + "routeTable": { + "id": "Microsoft.Network/routeTables/azureFirewallRouteTableName" + } + } + } + ] + } + }, + { + "condition": "deployAzureFirewall", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "azureFirewallPublicIp", + "location": "location", + "sku": { + "name": "Standard" + }, + "tags": "tags", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "condition": "deployAzureFirewall", + "type": "Microsoft.Network/azureFirewalls", + "apiVersion": "2020-11-01", + "name": "azureFirewallName", + "location": "location", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/vnetResourceName", + "Microsoft.Network/publicIpAddresses/azureFirewallPublicIP" + ], + "tags": "tags", + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnetResourceName/AzureFirewallSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIpAddresses/azureFirewallPublicIP" + } + } + } + ], + "ApplicationRuleCollections": [ + { + "Name": "AppServiceEnvironment", + "properties": { + "Priority": 500, + "Action": { + "Type": "Allow" + }, + "Rules": [ + { + "Name": "ASE", + "FqdnTags": [ + "WindowsUpdate", + "AppServiceEnvironment" + ], + "Protocols": [ + { + "ProtocolType": "Http", + "Port": 80 + }, + { + "ProtocolType": "Https", + "Port": 443 + } + ] + }, + { + "Name": "Managed Identity API", + "targetFqdns": [ + "control-location.identity.azure.net" + ], + "protocols": [ + { + "ProtocolType": "Https", + "Port": 443 + } + ], + "sourceAddresses": [ + "aseSubnetAddressRange" + ] + }, + { + "Name": "AzureMonitorRules", + "targetFqdns": "azureMonitorFQDNs", + "protocols": [ + { + "ProtocolType": "Https", + "Port": 443 + } + ], + "sourceAddresses": [ + "aseSubnetAddressRange" + ] + } + ] + } + } + ], + "NetworkRuleCollections": [ + { + "Name": "Time-Diagnostics", + "properties": { + "Priority": 300, + "Action": { + "Type": "Allow" + }, + "Rules": [ + { + "Name": "Time", + "Protocols": [ + "Any" + ], + "SourceAddresses": [ + "*" + ], + "DestinationAddresses": [ + "*" + ], + "DestinationPorts": [ + "123" + ] + }, + { + "Name": "Diagnostics", + "Protocols": [ + "Any" + ], + "SourceAddresses": [ + "*" + ], + "DestinationAddresses": [ + "*" + ], + "DestinationPorts": [ + "12000" + ] + } + ] + } + }, + { + "name": "AzMonitor", + "properties": { + "priority": 200, + "action": { + "type": "Allow" + }, + "rules": [ + { + "name": "AzMonitor", + "protocols": [ + "TCP" + ], + "sourceAddresses": [ + "*" + ], + "destinationAddresses": [ + "AzureMonitor" + ], + "destinationPorts": [ + "80", + "443", + "12000" + ] + } + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT61 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT61 new file mode 100644 index 0000000..31fdb2a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT61 @@ -0,0 +1,159 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/database-new.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884419, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/database-new.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT61", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT61", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "value": "westus" + }, + "newsqlServerName": { + "type": "string" + }, + "existingSQLServerName": { + "type": "string" + }, + "dbAdminName": { + "type": "string" + }, + "dbAdminPassword": { + "type": "securestring" + }, + "sqlDBName": { + "type": "string" + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": { + "sql-api-version": "2014-04-01", + "sqldb-api-version": "2015-05-01-preview", + "sqlfirewallrules-api-version": "2014-04-01" + }, + "resources": [ + { + "name": "newsqlServerName", + "type": "Microsoft.Sql/servers", + "location": "westus", + "apiVersion": "2014-04-01", + "properties": { + "administratorLogin": "dbAdminName", + "administratorLoginPassword": "dbAdminPassword", + "version": "12.0" + }, + "tags": { + "quickstartName": "quickstartTags", + "provider": "trendmicroTags" + }, + "resources": [ + { + "name": "sqlDBName", + "type": "databases", + "location": "westus", + "apiVersion": "2015-05-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers/newsqlServerName" + ], + "properties": { + "edition": "Standard", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "21474836480", + "requestedServiceObjectiveName": "S3" + } + }, + { + "apiVersion": "2014-04-01", + "dependsOn": [ + "Microsoft.Sql/servers/newsqlServerName" + ], + "location": "westus", + "name": "AllowAllAzureIps", + "properties": { + "endIpAddress": "0.0.0.0", + "startIpAddress": "0.0.0.0" + }, + "type": "firewallrules" + } + ] + } + ], + "outputs": { + "sqlServerFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Sql/servers/', parameters('newsqlServerName'))).fullyQualifiedDomainName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT610 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT610 new file mode 100644 index 0000000..d78e508 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT610 @@ -0,0 +1,561 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/app-service-environment-azfirewall/azuredeploy.json", + "/demos/app-service-environment-azfirewall/azuredeploy.parameters.json" + ], + "timestamp": 1642962897981, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/app-service-environment-azfirewall/azuredeploy.json", + "/demos/app-service-environment-azfirewall/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT610", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.web/hostingenvironments", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT610", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location (region) for all resources. Use the location value, not the display name, e.g. eastus, not East US 2" + } + }, + "aseName": { + "type": "string", + "defaultValue": "[concat('ASE', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the ASE resource" + } + }, + "vnetResourceName": { + "type": "string", + "defaultValue": "virtualNetwork", + "metadata": { + "description": "The name of the vNet" + } + }, + "applicationName": { + "type": "string", + "defaultValue": "application1", + "metadata": { + "description": "Name of the initial ASE App (without the FQDN)" + } + }, + "internalLoadBalancingMode": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ + 0, + 3 + ], + "metadata": { + "description": "0 = public VIP only, 1 = only ports 80/443 are mapped to ILB VIP, 2 = only FTP ports are mapped to ILB VIP, 3 = both ports 80/443 and FTP ports are mapped to an ILB VIP." + } + }, + "aseSubnetName": { + "type": "string", + "defaultValue": "ase-subnet", + "metadata": { + "description": "Subnet name which will contain the App Service Environment" + } + }, + "serverFarmsAseAspName": { + "type": "string", + "defaultValue": "ase-asp", + "metadata": { + "description": "Name of the app service" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "vnetAddressRange": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address range for the virtual network in CIDR notation" + } + }, + "aseSubnetAddressRange": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Address range for the ASE subnet in CIDR notation within the vnetAddress range" + } + }, + "aseNSGName": { + "type": "string", + "defaultValue": "ase-NSG", + "metadata": { + "description": "Name for the NSG attached to the ASE subnet" + } + }, + "aseRouteTableName": { + "type": "string", + "defaultValue": "ase-RouteTable", + "metadata": { + "description": "Name of the Route Table attached to the ASE subnet" + } + }, + "azureFirewallName": { + "type": "string", + "defaultValue": "azFirewall", + "metadata": { + "description": "Name of the Azure Firewall" + } + }, + "deployAzureFirewall": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Toggle whether to deploy the Azure Firewall" + } + }, + "azureFirewallRouteTableName": { + "type": "string", + "defaultValue": "azFirewall-RouteTable", + "metadata": { + "description": "Name of the Azure Firewall Route Table" + } + }, + "azureFirewallSubnetAddressRange": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "Address range that will be used by the Azure Firewall Subnet within the vnetAddress range" + } + }, + "azureFirewallPublicIP": { + "type": "string", + "defaultValue": "AzFirewall-pip", + "metadata": { + "description": "Name for the Azure Firewall public IP resource" + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "The collection of resource tags passed from parameters file" + }, + "value": { + "tag1": "value1", + "tag2": "value2" + } + }, + "aseSubnetServiceEndpoints": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Service Endpoints enabled on the ASE subnet" + }, + "value": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ] + }, + "aseManagementIps": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "List of ASE management IP addresses" + }, + "value": [ + "0.0.0.0", + "13.64.115.203", + "13.66.140.0", + "13.67.8.128", + "13.69.64.128", + "13.69.227.128", + "13.70.73.128", + "13.71.170.64", + "13.71.194.129", + "13.75.34.192", + "13.75.127.117", + "13.77.50.128", + "13.78.109.0", + "13.89.171.0", + "13.94.141.115", + "13.94.143.126", + "13.94.149.179", + "20.36.106.128", + "20.36.114.64", + "23.100.226.236", + "23.102.135.246", + "23.102.188.65", + "40.69.106.128", + "40.70.146.128", + "40.71.13.64", + "40.74.100.64", + "40.78.194.128", + "40.79.130.64", + "40.79.178.128", + "40.83.120.64", + "40.83.121.56", + "40.83.125.161", + "40.90.240.166", + "40.91.126.196", + "40.112.242.192", + "40.119.4.111", + "40.124.47.188", + "51.140.146.64", + "51.140.210.128", + "52.151.25.45", + "52.162.80.89", + "52.162.106.192", + "52.165.152.214", + "52.165.153.122", + "52.165.154.193", + "52.165.158.140", + "52.174.22.21", + "52.178.177.147", + "52.178.184.149", + "52.178.190.65", + "52.178.195.197", + "52.187.56.50", + "52.187.59.251", + "52.187.63.19", + "52.187.63.37", + "52.224.105.172", + "52.225.177.153", + "52.231.18.64", + "52.231.146.128", + "65.52.14.230", + "65.52.172.237", + "65.52.193.203", + "70.37.57.58", + "70.37.89.222", + "104.43.242.137", + "104.44.129.141", + "104.44.129.243", + "104.44.129.255", + "104.44.134.255", + "104.208.54.11", + "104.211.81.64", + "104.211.146.128", + "104.214.49.0", + "157.55.176.93", + "157.55.208.185", + "191.233.203.64", + "191.236.154.88" + ] + }, + "azureMonitorFQDNs": { + "type": "array", + "metadata": { + "description": "FQDNs to whitelist for Azure Monitor" + }, + "value": [ + "dc.services.visualstudio.com", + "dc.applicationinsights.microsoft.com", + "rt.services.visualstudio.com", + "rt.applicationinsights.microsoft.com", + "agent.azureserviceprofiler.net", + "*.agent.azureserviceprofiler.net" + ] + } + }, + "variables": { + "subnetId": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork/ase-subnet", + "nestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "BuildOrUpdateASENetworking", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vnetResourceName": { + "value": "virtualNetwork" + }, + "vnetAddressRange": { + "value": "10.0.0.0/16" + }, + "aseSubnetName": { + "value": "ase-subnet" + }, + "aseSubnetAddressRange": { + "value": "10.0.0.0/24" + }, + "aseNSGName": { + "value": "ase-NSG" + }, + "aseRouteTableName": { + "value": "ase-RouteTable" + }, + "azureFirewallName": { + "value": "azFirewall" + }, + "azureFirewallSubnetAddressRange": { + "value": "10.0.1.0/24" + }, + "azureFirewallRouteTableName": { + "value": "azFirewall-RouteTable" + }, + "azureFirewallPublicIP": { + "value": "AzFirewall-pip" + }, + "deployAzureFirewall": { + "value": true + }, + "tags": { + "value": { + "tag1": "value1", + "tag2": "value2" + } + }, + "aseSubnetServiceEndpoints": { + "value": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ] + }, + "aseManagementIps": { + "value": [ + "0.0.0.0", + "13.64.115.203", + "13.66.140.0", + "13.67.8.128", + "13.69.64.128", + "13.69.227.128", + "13.70.73.128", + "13.71.170.64", + "13.71.194.129", + "13.75.34.192", + "13.75.127.117", + "13.77.50.128", + "13.78.109.0", + "13.89.171.0", + "13.94.141.115", + "13.94.143.126", + "13.94.149.179", + "20.36.106.128", + "20.36.114.64", + "23.100.226.236", + "23.102.135.246", + "23.102.188.65", + "40.69.106.128", + "40.70.146.128", + "40.71.13.64", + "40.74.100.64", + "40.78.194.128", + "40.79.130.64", + "40.79.178.128", + "40.83.120.64", + "40.83.121.56", + "40.83.125.161", + "40.90.240.166", + "40.91.126.196", + "40.112.242.192", + "40.119.4.111", + "40.124.47.188", + "51.140.146.64", + "51.140.210.128", + "52.151.25.45", + "52.162.80.89", + "52.162.106.192", + "52.165.152.214", + "52.165.153.122", + "52.165.154.193", + "52.165.158.140", + "52.174.22.21", + "52.178.177.147", + "52.178.184.149", + "52.178.190.65", + "52.178.195.197", + "52.187.56.50", + "52.187.59.251", + "52.187.63.19", + "52.187.63.37", + "52.224.105.172", + "52.225.177.153", + "52.231.18.64", + "52.231.146.128", + "65.52.14.230", + "65.52.172.237", + "65.52.193.203", + "70.37.57.58", + "70.37.89.222", + "104.43.242.137", + "104.44.129.141", + "104.44.129.243", + "104.44.129.255", + "104.44.134.255", + "104.208.54.11", + "104.211.81.64", + "104.211.146.128", + "104.214.49.0", + "157.55.176.93", + "157.55.208.185", + "191.233.203.64", + "191.236.154.88" + ] + }, + "azureMonitorFQDNs": { + "value": [ + "dc.services.visualstudio.com", + "dc.applicationinsights.microsoft.com", + "rt.services.visualstudio.com", + "rt.applicationinsights.microsoft.com", + "agent.azureserviceprofiler.net", + "*.agent.azureserviceprofiler.net" + ] + } + } + } + }, + { + "type": "Microsoft.Web/hostingEnvironments", + "apiVersion": "2020-12-01", + "name": "[concat('ASE', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "ASEV2", + "tags": { + "displayName": "Deploy ASE" + }, + "dependsOn": [ + "Microsoft.Resources/deployments/BuildOrUpdateASENetworking" + ], + "properties": { + "name": "[concat('ASE', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "ipSslAddressCount": 0, + "internalLoadBalancingMode": 3, + "virtualNetwork": { + "Id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork/ase-subnet" + } + } + }, + { + "type": "Microsoft.web/serverfarms", + "apiVersion": "2020-12-01", + "name": "ase-asp", + "location": "[resourceGroup().location]", + "sku": { + "name": "I1", + "tier": "Isolated" + }, + "tags": { + "displayName": "Deploy App Service" + }, + "kind": "app", + "properties": { + "name": "ase-asp", + "workerSize": "0", + "workerSizeId": "0", + "numberOfWorkers": "1", + "reserved": false, + "hostingEnvironment": "[concat('ASE', uniqueString(resourceGroup().id))]" + }, + "dependsOn": [ + "Microsoft.Web/hostingEnvironments/[concat('ASE', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "application1", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Deploy Web App" + }, + "kind": "app", + "properties": { + "enabled": true, + "serverFarmId": "Microsoft.Web/serverfarms/ase-asp", + "reserved": false, + "scmSiteAlsoStopped": false, + "hostingEnvironmentProfile": { + "id": "Microsoft.Web/hostingEnvironments/[concat('ASE', uniqueString(resourceGroup().id))]" + }, + "clientAffinityEnabled": true, + "clientCertEnabled": false, + "hostNamesDisabled": false, + "containerSize": 0, + "dailyMemoryTimeQuota": 0, + "httpsOnly": false + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/ase-asp", + "Microsoft.Web/hostingEnvironments/[concat('ASE', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "microsoft.insights/components", + "apiVersion": "2020-02-02-preview", + "name": "application1", + "location": "[resourceGroup().location]", + "tags": { + "applicationType": "web", + "displayName": "Deploy Application Insights" + }, + "kind": "web", + "properties": { + "Application_Type": "web", + "Flow_Type": "Redfield", + "Request_Source": "AppServiceEnablementCreate" + }, + "dependsOn": [ + "Microsoft.Resources/deployments/BuildOrUpdateASENetworking" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT611 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT611 new file mode 100644 index 0000000..2aee4d0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT611 @@ -0,0 +1,331 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/application-gateway-demo-setup/azuredeploy.json", + "/demos/application-gateway-demo-setup/azuredeploy.parameters.json" + ], + "timestamp": 1642962898007, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/application-gateway-demo-setup/azuredeploy.json", + "/demos/application-gateway-demo-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT611", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT611", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "size": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Application Gateway size/SKU" + } + }, + "capacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Application Gateway instance number" + } + }, + "cookieBasedAffinity": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Disabled", + "metadata": { + "description": "If cookie-based affinity is enabled the requests from the same client are hitting the same Web server" + }, + "value": "Disabled" + }, + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "User name for the backend Web servers" + }, + "value": "wsadmin" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the backend Web servers" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "applicationGatewayName": "applicationGateway1", + "publicIPAddressName": "testAppGWIP", + "virtualNetworkName": "virtualNetwork1", + "subnetName": "appGatewaySubnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet", + "publicIPRef": "Microsoft.Network/publicIPAddresses/testAppGWIP", + "backendDnsPrefix": "backend-", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/28", + "webServerTemplateName": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.json", + "server1TestPage": "

This is Server 1

", + "server2TestPage": "

This is Server 2

", + "serverTestPageInfo": "

Send next request. If Cookie-based affinity is enabled, clear the cookies to change the backend server.

Request headers:
$value){echo \"$h: $value
\n\";}?>

" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "webServer1", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//testAppGWIP" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "wsadmin" + }, + "authenticationType": { + "value": "password" + }, + "adminPasswordOrKey": { + "value": "GEN-PASSWORD" + }, + "dnsNameForPublicIP": { + "value": "[concat(variables('backendDnsPrefix'), uniqueString(reference(resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))).resourceGuid), '-1')]" + }, + "testPageBody": { + "value": "

This is Server 1

Send next request. If Cookie-based affinity is enabled, clear the cookies to change the backend server.

Request headers:
$value){echo \"$h: $value
\n\";}?>

" + }, + "testPage": { + "value": "index.php" + }, + "testPageTitle": { + "value": "Server 1" + }, + "installPHP": { + "value": true + } + } + } + }, + { + "apiVersion": "2020-08-01", + "name": "webServer2", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//testAppGWIP" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/apache/ubuntu-apache-test-page/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "wsadmin" + }, + "authenticationType": { + "value": "password" + }, + "adminPasswordOrKey": { + "value": "GEN-PASSWORD" + }, + "dnsNameForPublicIP": { + "value": "[concat(variables('backendDnsPrefix'), uniqueString(reference(resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))).resourceGuid), '-2')]" + }, + "testPageBody": { + "value": "

This is Server 2

Send next request. If Cookie-based affinity is enabled, clear the cookies to change the backend server.

Request headers:
$value){echo \"$h: $value
\n\";}?>

" + }, + "testPage": { + "value": "index.php" + }, + "testPageTitle": { + "value": "Server 2" + }, + "installPHP": { + "value": true + } + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "testAppGWIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetwork1", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/28" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "name": "applicationGateway1", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetwork1", + "Microsoft.Network/publicIPAddresses//testAppGWIP", + "webServer1", + "webServer2" + ], + "properties": { + "sku": { + "name": "Standard_Medium", + "tier": "Standard", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork1/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/testAppGWIP" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "[reference('webServer1').outputs.fqdn.value]" + }, + { + "IpAddress": "[reference('webServer2').outputs.fqdn.value]" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "requestTimeout": 30, + "requestRoutingRules": [ + { + "id": "Microsoft.Network/applicationGateways/requestRoutingRules//applicationGateway1/rule1" + } + ] + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "Id": "Microsoft.Network/applicationGateways/frontendIPConfigurations//applicationGateway1/appGatewayFrontendIP" + }, + "FrontendPort": { + "Id": "Microsoft.Network/applicationGateways/frontendPorts//applicationGateway1/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners//applicationGateway1/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools//applicationGateway1/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection//applicationGateway1/appGatewayBackendHttpSettings" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT612 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT612 new file mode 100644 index 0000000..3bf1804 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT612 @@ -0,0 +1,360 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/application-gateway-logviewer-goaccess/azuredeploy.json", + "/demos/application-gateway-logviewer-goaccess/azuredeploy.parameters.json" + ], + "timestamp": 1642962898022, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/application-gateway-logviewer-goaccess/azuredeploy.json", + "/demos/application-gateway-logviewer-goaccess/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT612", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT612", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username you want to use for the VM the template creates" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Size of the VM" + }, + "value": "Standard_A2_v2" + }, + "dnsNameForPublicIP": { + "type": "string", + "defaultValue": "[uniqueString(resourceGroup().id)]", + "metadata": { + "description": "The DNS name (prefix) you want to use for the VM to map against its public IP" + } + }, + "appGwAccessLogsBlobSasUri": { + "type": "string", + "metadata": { + "description": "The SAS URL connection string for the storage account blog where your Application Gateway Access Logs are stored" + }, + "value": "GEN-UNIQUE-24" + }, + "filterRegexForAppGwAccessLogs": { + "type": "string", + "defaultValue": ".*", + "metadata": { + "description": "A regex to use to filter the Application Gateway Access Logs to a specific subset. For example, if you have multiple application gateways publishing logs to the same storage account blob, and you only want GoAccess to surface traffic stats for say one of the Application Gateways, you can provide a regex for this field to filter to just that instance." + }, + "value": ".*" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vmName": "[uniqueString(resourceGroup().id)]", + "nicName": "[uniqueString(resourceGroup().id)]_vmnic", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "subnetName": "DefaultSubnet", + "publicIPAddressName": "[uniqueString(resourceGroup().id)]_publicip", + "virtualNetworkName": "[uniqueString(resourceGroup().id)]_vnet", + "networkSecurityGroupName": "[uniqueString(resourceGroup().id)]_nsg", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/[uniqueString(resourceGroup().id)]_vnet/DefaultSubnet", + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('scripts/setup_vm.sh', parameters('_artifactsLocationSasToken')))]", + "appGatewayLogProcessorArtifactUri": "[uri(parameters('_artifactsLocation'), concat('scripts/AppGatewayLogProcessor.zip', parameters('_artifactsLocationSasToken')))]", + "appGwAccessLogsBlobSasUriVar": "\"GEN-UNIQUE-24\"", + "filterRegexForAppGwAccessLogsVar": "\"|.*|\"", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[uniqueString(resourceGroup().id)]_publicip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[uniqueString(resourceGroup().id)]" + } + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[uniqueString(resourceGroup().id)]_nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 132, + "direction": "Inbound" + } + }, + { + "name": "http", + "properties": { + "provisioningState": "Succeeded", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 131, + "direction": "Inbound" + } + }, + { + "name": "https", + "properties": { + "provisioningState": "Succeeded", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "GoAccessSocket", + "properties": { + "provisioningState": "Succeeded", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 129, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[uniqueString(resourceGroup().id)]_vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "DefaultSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[uniqueString(resourceGroup().id)]_vmnic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[uniqueString(resourceGroup().id)]_publicip", + "Microsoft.Network/virtualNetworks//[uniqueString(resourceGroup().id)]_vnet", + "Microsoft.Network/networkSecurityGroups//[uniqueString(resourceGroup().id)]_nsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[uniqueString(resourceGroup().id)]_publicip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[uniqueString(resourceGroup().id)]_vnet/DefaultSubnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[uniqueString(resourceGroup().id)]_nsg" + } + } + }, + { + "apiVersion": "2018-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//[uniqueString(resourceGroup().id)]_vmnic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "[uniqueString(resourceGroup().id)]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "[uniqueString(resourceGroup().id)]_osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "[uniqueString(resourceGroup().id)]_datadisk1", + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[uniqueString(resourceGroup().id)]_vmnic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[uniqueString(resourceGroup().id)]/newuserscript", + "apiVersion": "2018-06-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//[uniqueString(resourceGroup().id)]" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup_vm.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/AppGatewayLogProcessor.zip', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setup_vm.sh \"GEN-UNIQUE-24\" \"|.*|\"" + } + } + } + ], + "outputs": { + "goAccessReportUrl": { + "type": "string", + "value": "[concat(reference(variables('publicIPAddressName')).dnsSettings.fqdn, '/report.html')]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT613 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT613 new file mode 100644 index 0000000..cb852a5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT613 @@ -0,0 +1,211 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/arm-asm-s2s/azuredeploy.json", + "/demos/arm-asm-s2s/azuredeploy.parameters.json" + ], + "timestamp": 1642962898046, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/arm-asm-s2s/azuredeploy.json", + "/demos/arm-asm-s2s/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT613", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/localnetworkgateways", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT613", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "localGatewayName": { + "type": "string", + "metadata": { + "description": "Name for gateway connected to other VNet/on-prem network" + }, + "value": "GEN-UNIQUE-8" + }, + "localGatewayIpAddress": { + "type": "string", + "metadata": { + "description": "Public IP address for the gateway to connect to (from other VNet/on-prem)" + }, + "value": "137.117.100.62" + }, + "localGatewayAddressPrefix": { + "type": "string", + "metadata": { + "description": "CIDR block for remote network" + }, + "value": "10.1.0.0/16" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name for new virtual network" + }, + "value": "GEN-UNIQUE-8" + }, + "addressPrefix": { + "type": "string", + "metadata": { + "description": "Name for new virtual network" + }, + "value": "10.3.0.0/16" + }, + "subnet1Name": { + "type": "string", + "defaultValue": "Subnet1", + "metadata": { + "description": "Name for VM subnet in the new VNet" + } + }, + "gatewaySubnet": { + "type": "string", + "defaultValue": "GatewaySubnet", + "metadata": { + "description": "Name for gateway subnet in new VNet" + }, + "allowedValues": [ + "GatewaySubnet" + ] + }, + "subnet1Prefix": { + "type": "string", + "metadata": { + "description": "CIDR block for VM subnet" + }, + "value": "10.3.0.0/24" + }, + "gatewaySubnetPrefix": { + "type": "string", + "metadata": { + "description": "CIDR block for gateway subnet" + }, + "value": "10.3.200.0/29" + }, + "gatewayPublicIPName": { + "type": "string", + "metadata": { + "description": "Name for public IP object used for the new gateway" + }, + "value": "GEN-UNIQUE-8" + }, + "gatewayName": { + "type": "string", + "metadata": { + "description": "Name for the new gateway" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location where resources reside." + } + } + }, + "variables": { + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8/GatewaySubnet" + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/localNetworkGateways", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "localNetworkAddressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "gatewayIpAddress": "137.117.100.62" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.3.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet1", + "properties": { + "addressPrefix": "10.3.0.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.3.200.0/29" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8" + } + }, + "name": "vnetGatewayConfig" + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT614 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT614 new file mode 100644 index 0000000..08e08be --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT614 @@ -0,0 +1,230 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/arm-template-retrieve-azure-storage-access-keys/azuredeploy.json", + "/demos/arm-template-retrieve-azure-storage-access-keys/azuredeploy.parameters.json" + ], + "timestamp": 1642962898057, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/arm-template-retrieve-azure-storage-access-keys/azuredeploy.json", + "/demos/arm-template-retrieve-azure-storage-access-keys/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT614", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.storage/storageaccounts", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT614", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Azure Storage account." + }, + "value": "GEN-UNIQUE" + }, + "storageAccountSku": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS", + "Premium_ZRS", + "Standard_GZRS", + "Standard_RAGZRS" + ], + "metadata": { + "description": "Sku on which to run the Azure Storage account." + } + }, + "storageAccountKind": { + "type": "string", + "defaultValue": "StorageV2", + "allowedValues": [ + "Storage", + "StorageV2", + "BlobStorage", + "FileStorage", + "BlockBlobStorage" + ], + "metadata": { + "description": "Indicates the type of storage account." + } + }, + "storageAccountContainerName": { + "type": "string", + "defaultValue": "my-container", + "metadata": { + "description": "Set the name of the container to create in the Storage account." + } + }, + "storageConnectionName": { + "type": "string", + "defaultValue": "[concat('storageconnection', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Logic Apps API connection used to connect to the Azure Storage account." + }, + "value": "GEN-UNIQUE" + }, + "logicAppName": { + "type": "string", + "defaultValue": "[concat('logicapp', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Logic App." + }, + "value": "GEN-UNIQUE" + }, + "logicAppPollingIntervalInMinutes": { + "type": "int", + "defaultValue": 30, + "metadata": { + "description": "The polling interval used to check for items on the Storage account." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location where resources reside." + } + }, + "azureMgmtUri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Azure Management URI" + }, + "value": "https://management.azure.com:443/" + } + }, + "variables": { + "storageAccountId": "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ], + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azureblob')]" + }, + "parameterValues": { + "accountName": "GEN-UNIQUE", + "accessKey": "[listKeys(variables('storageAccountId'), '2019-04-01').keys[0].value]" + }, + "testLinks": [ + { + "requestUri": "[uri(parameters('azureMgmtUri'), concat('subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/connections/', parameters('storageConnectionName'), '/extensions/proxy/testconnection?api-version=2018-07-01-preview'))]", + "method": "get" + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/connections/GEN-UNIQUE" + ], + "properties": { + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + } + }, + "triggers": { + "When_a_blob_is_added_or_modified_(properties_only)": { + "recurrence": { + "frequency": "Minute", + "interval": 30 + }, + "splitOn": "@triggerBody()", + "metadata": { + "JTJmbXktY29udGFpbmVy": "/my-container" + }, + "type": "ApiConnection", + "inputs": { + "host": { + "connection": { + "name": "@parameters('$connections')['azureblob']['connectionId']" + } + }, + "method": "get", + "path": "/datasets/default/triggers/batch/onupdatedfile", + "queries": { + "folderId": "JTJmbXktY29udGFpbmVy", + "maxFileCount": 10 + } + } + } + }, + "actions": { + "Process_blobs": { + "type": "Scope" + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azureblob": { + "connectionId": "Microsoft.Web/connections/GEN-UNIQUE", + "connectionName": "azureblob", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azureblob')]" + } + } + } + }, + "state": "Enabled" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT615 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT615 new file mode 100644 index 0000000..b712de5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT615 @@ -0,0 +1,922 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/asr-automation-recovery/azuredeploy.json", + "/demos/asr-automation-recovery/azuredeploy.parameters.json" + ], + "timestamp": 1642962898085, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/asr-automation-recovery/azuredeploy.json", + "/demos/asr-automation-recovery/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT615", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT615", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Specify the name of your Automation Account" + }, + "value": "GEN-UNIQUE-20" + }, + "modulesUri": { + "type": "string", + "defaultValue": "https://devopsgallerystorage.blob.core.windows.net/packages/", + "metadata": { + "description": "Default modules URI" + } + }, + "automationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "westcentralus", + "usgovvirginia", + "usgovtexas", + "usgovarizona" + ], + "metadata": { + "description": "Specify the region for your automation account" + }, + "value": "westeurope" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "URI to artifacts location" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "assets": { + "aaVariables": { + "AzureSubscriptionId": { + "name": "AzureSubscriptionId", + "description": "Azure subscription Id" + } + } + }, + "asrScripts": { + "runbooks": [ + { + "name": "ASR-AddPublicIp", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-AddPublicIp.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable public IP on every VM in a Recovery Plan" + }, + { + "name": "ASR-SQL-FailoverAG", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-SQL-FailoverAG.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to handle SQL Always On failover" + }, + { + "name": "ASR-AddSingleNSGPublicIp", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-AddSingleNSGPublicIp.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable NSG and Public IP on every VM in a Recovery Plan" + }, + { + "name": "ASR-AddSingleLoadBalancer", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-AddSingleLoadBalancer.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable a single Load Balancer for all the VMs in the recovery plan" + }, + { + "name": "ASR-AddMulitpleLoadBalancers", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-AddMultipleLoadBalancers.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable multiple Load Balancers for selected VMs in the recovery plan" + }, + { + "name": "ASR-DNS-UpdateIP", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-DNS-UpdateIP.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to update DNS for VMs within the recovery plan" + }, + { + "name": "ASR-Wordpress-ChangeMysqlConfig", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-Wordpress-ChangeMysqlConfig.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to configure Mysql as part of a recovery plan" + }, + { + "name": "ASR-SQL-FailoverAGClassic", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-SQL-FailoverAGClassic.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to failover SQL Availability Groups" + } + ], + "modules": [ + { + "name": "AzureRm.Compute", + "url": "[uri(parameters('modulesUri'),'azurerm.compute.2.8.0.nupkg')]" + }, + { + "name": "AzureRm.Resources", + "url": "[uri(parameters('modulesUri'),'azurerm.resources.3.7.0.nupkg')]" + }, + { + "name": "AzureRm.Network", + "url": "[uri(parameters('modulesUri'),'azurerm.network.3.6.0.nupkg')]" + }, + { + "name": "AzureRm.Automation", + "url": "[uri(parameters('modulesUri'),'azurerm.automation.1.0.3.nupkg')]" + } + ] + }, + "azureRmProfile": { + "name": "AzureRm.Profile", + "url": "[uri(parameters('modulesUri'),'azurerm.profile.2.7.0.nupkg')]" + } + }, + "resources": [ + { + "name": "GEN-UNIQUE-20", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2021-04-01", + "location": "westeurope", + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "(assets).aaVariables.AzureSubscriptionId.name", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(assets).aaVariables.AzureSubscriptionId.description", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + } + ] + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "GEN-UNIQUE-20/(azureRmProfile).name", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "contentLink": { + "uri": "(azureRmProfile).url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "westeurope", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT616 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT616 new file mode 100644 index 0000000..8ca09d7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT616 @@ -0,0 +1,922 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/asr-automation-recovery/azuredeploy.json", + "/demos/asr-automation-recovery/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962898121, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/asr-automation-recovery/azuredeploy.json", + "/demos/asr-automation-recovery/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT616", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT616", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Specify the name of your Automation Account" + }, + "value": "GEN-UNIQUE-20" + }, + "modulesUri": { + "type": "string", + "defaultValue": "https://devopsgallerystorage.blob.core.windows.net/packages/", + "metadata": { + "description": "Default modules URI" + } + }, + "automationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "westcentralus", + "usgovvirginia", + "usgovtexas", + "usgovarizona" + ], + "metadata": { + "description": "Specify the region for your automation account" + }, + "value": "usgovarizona" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "URI to artifacts location" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "assets": { + "aaVariables": { + "AzureSubscriptionId": { + "name": "AzureSubscriptionId", + "description": "Azure subscription Id" + } + } + }, + "asrScripts": { + "runbooks": [ + { + "name": "ASR-AddPublicIp", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-AddPublicIp.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable public IP on every VM in a Recovery Plan" + }, + { + "name": "ASR-SQL-FailoverAG", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-SQL-FailoverAG.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to handle SQL Always On failover" + }, + { + "name": "ASR-AddSingleNSGPublicIp", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-AddSingleNSGPublicIp.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable NSG and Public IP on every VM in a Recovery Plan" + }, + { + "name": "ASR-AddSingleLoadBalancer", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-AddSingleLoadBalancer.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable a single Load Balancer for all the VMs in the recovery plan" + }, + { + "name": "ASR-AddMulitpleLoadBalancers", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-AddMultipleLoadBalancers.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable multiple Load Balancers for selected VMs in the recovery plan" + }, + { + "name": "ASR-DNS-UpdateIP", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-DNS-UpdateIP.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to update DNS for VMs within the recovery plan" + }, + { + "name": "ASR-Wordpress-ChangeMysqlConfig", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-Wordpress-ChangeMysqlConfig.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to configure Mysql as part of a recovery plan" + }, + { + "name": "ASR-SQL-FailoverAGClassic", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/ASR-SQL-FailoverAGClassic.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to failover SQL Availability Groups" + } + ], + "modules": [ + { + "name": "AzureRm.Compute", + "url": "[uri(parameters('modulesUri'),'azurerm.compute.2.8.0.nupkg')]" + }, + { + "name": "AzureRm.Resources", + "url": "[uri(parameters('modulesUri'),'azurerm.resources.3.7.0.nupkg')]" + }, + { + "name": "AzureRm.Network", + "url": "[uri(parameters('modulesUri'),'azurerm.network.3.6.0.nupkg')]" + }, + { + "name": "AzureRm.Automation", + "url": "[uri(parameters('modulesUri'),'azurerm.automation.1.0.3.nupkg')]" + } + ] + }, + "azureRmProfile": { + "name": "AzureRm.Profile", + "url": "[uri(parameters('modulesUri'),'azurerm.profile.2.7.0.nupkg')]" + } + }, + "resources": [ + { + "name": "GEN-UNIQUE-20", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2021-04-01", + "location": "usgovarizona", + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "(assets).aaVariables.AzureSubscriptionId.name", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(assets).aaVariables.AzureSubscriptionId.description", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + } + ] + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "GEN-UNIQUE-20/(azureRmProfile).name", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "contentLink": { + "uri": "(azureRmProfile).url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2020-01-13-preview", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "usgovarizona", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/modules//GEN-UNIQUE-20/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT617 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT617 new file mode 100644 index 0000000..8e210e0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT617 @@ -0,0 +1,583 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/asr-oms-monitoring/azuredeploy.json", + "/demos/asr-oms-monitoring/azuredeploy.parameters.json" + ], + "timestamp": 1642962898143, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/asr-oms-monitoring/azuredeploy.json", + "/demos/asr-oms-monitoring/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT617", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT617", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Create new or refer to an existing Log Analytic Workspace" + } + }, + "omsAutomationAccountName": { + "type": "string", + "metadata": { + "description": "Use an existing Automation account or create a new" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "ingestScheduleGuid": { + "type": "string", + "metadata": { + "description": "GUID for the schedule creation - create a unique before deploy" + }, + "value": "GEN-GUID" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "psModulesUri": { + "type": "string", + "defaultValue": "https://devopsgallerystorage.blob.core.windows.net/packages/", + "metadata": { + "description": "Default modules URI" + }, + "value": "https://devopsgallerystorage.blob.core.windows.net/packages/" + }, + "omslogAnalyticsWorkspaceName": { + "value": "GEN-UNIQUE-10" + }, + "omsautomationAccountName": { + "value": "GEN-UNIQUE-11" + } + }, + "variables": { + "psModules": { + "azureRmProfile": { + "name": "AzureRm.Profile", + "url": "[uri(parameters('psModulesUri'),'azurerm.profile.1.0.11.nupkg')]" + }, + "azureRmResources": { + "name": "AzureRm.Resources", + "url": "[uri(parameters('psModulesUri'),'azurerm.resources.2.0.2.nupkg')]" + }, + "azureStorage": { + "name": "Azure.Storage", + "url": "[uri(parameters('psModulesUri'),'azure.storage.1.1.5.nupkg')]" + }, + "azureRmStorage": { + "name": "AzureRm.Storage", + "url": "[uri(parameters('psModulesUri'),'azurerm.storage.1.1.3.nupkg')]" + }, + "azureRmOperationalInsights": { + "name": "AzureRm.OperationalInsights", + "url": "[uri(parameters('psModulesUri'),'azurerm.operationalinsights.1.0.9.nupkg')]" + }, + "azureRmSiteRecovery": { + "name": "AzureRm.SiteRecovery", + "url": "[uri(parameters('psModulesUri'),'azurerm.siterecovery.1.1.10.nupkg')]" + }, + "azureRmRecoveryServices": { + "name": "AzureRm.RecoveryServices", + "url": "[uri(parameters('psModulesUri'),'azurerm.recoveryservices.1.1.3.nupkg')]" + }, + "azureRmBackup": { + "name": "AzureRm.Backup", + "url": "[uri(parameters('psModulesUri'),'azurerm.backup.1.0.9.nupkg')]" + }, + "azureRmCompute": { + "name": "AzureRm.Compute", + "url": "[uri(parameters('psModulesUri'),'azurerm.compute.1.3.3.nupkg')]" + }, + "azureRmAutomation": { + "name": "AzureRm.Automation", + "url": "[uri(parameters('psModulesUri'),'azurerm.automation.1.0.11.nupkg')]" + }, + "omsASRMonitoring": { + "name": "OMSIngestionAPI", + "url": "https://github.com/krnese/AzureDeploy/raw/master/OMS/OMSIngestionAPI.zip" + } + }, + "runbooks": { + "omsASRMonitoring": { + "name": "OMSASRMonitoring", + "version": "1.0.0.0", + "description": "Runbook to automatically ingest Recovery Services data and events into OMS Log Analytics", + "type": "PowerShell" + } + }, + "ingestScheduleName": "IngestAPISchedule", + "ingestionScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/OMSASRMonitoring.ps1', parameters('_artifactsLocationSasToken')))]", + "ingestInterval": "1", + "ingestFrequency": "hour", + "azureSubscriptionId": "AzureSubscriptionId", + "omsWorkspaceId": "OMSWorkspaceId", + "omsWorkspaceKey": "OMSWorkspacekey" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "[resourceGroup().location]", + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Microsoft-Windows-Hyper-V-VMMS-Admin", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsEvent", + "properties": { + "eventLogName": "Microsoft-Windows-Hyper-V-VMMS-Admin", + "eventTypes": [ + { + "eventType": "Error" + }, + { + "eventType": "Warning" + }, + { + "eventType": "Information" + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Average Replication Size" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent2", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Replication Throughput" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent3", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Network Send Throughput" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent4", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Replication Count" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent5", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Network Bytes Sent" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent6", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Last Replication Size" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent7", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Resynchronized Bytes" + } + } + ] + }, + { + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "name": "omsAutomationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "OMSWorkspaceId", + "type": "variables", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "OMS Workspace Id", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')),'2020-08-01').customerId,'\"')]" + } + }, + { + "name": "OMSWorkspacekey", + "type": "variables", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "OMS Workspace key", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2020-08-01').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureSubscriptionId", + "type": "variables", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "Azure Subscription Id", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "(psModules).azureRmOperationalInsights.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRMOperationalInsights.url" + } + } + }, + { + "name": "(psModules).azureRmResources.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRMResources.url" + } + } + }, + { + "name": "(psModules).azureRmAutomation.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules/omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules/omsAutomationAccountName/(psModules).azureRmResources.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRMAutomation.url" + } + } + }, + { + "name": "(psModules).azureRmStorage.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmStorage.url" + } + } + }, + { + "name": "(psModules).azureStorage.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureStorage.url" + } + } + }, + { + "name": "(psModules).azureRmCompute.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmCompute.url" + } + } + }, + { + "name": "(psModules).azureRmSiteRecovery.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRmSiteRecovery.url" + } + } + }, + { + "name": "(psModules).azureRmbackup.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmBackup.url" + } + } + }, + { + "name": "(psModules).azureRmRecoveryServices.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//GEN-UNIQUE-11/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmRecoveryServices.url" + } + } + }, + { + "name": "(psModules).azureRmProfile.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmProfile.url" + } + } + }, + { + "name": "(psModules).omsASRMonitoring.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).omsASRMonitoring.url" + } + } + }, + { + "name": "(runbooks).omsASRMonitoring.name", + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/variables//omsAutomationAccountName/AzureSubscriptionId", + "Microsoft.Automation/automationAccounts/variables//omsAutomationAccountName/OMSWorkspaceId", + "Microsoft.Automation/automationAccounts/variables//omsAutomationAccountName/OMSWorkspacekey", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmResources.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmCompute.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmStorage.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmRecoveryServices.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmSiteRecovery.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmBackup.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmOperationalInsights.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmAutomation.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).omsASRMonitoring.name" + ], + "properties": { + "runbookType": "(runbooks).omsASRMonitoring.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).omsASRMonitoring.description", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/OMSASRMonitoring.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "(runbooks).omsASRMonitoring.version" + } + } + }, + { + "name": "omsAutomationAccountName/ingestscheduleName", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/runbooks//omsAutomationAccountName/(runbooks).omsASRMonitoring.name" + ], + "properties": { + "description": "OMS Ingestion API Scheduler", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "omsAutomationAccountName/IngestScheduleGuid", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/schedules//omsAutomationAccountName/ingestscheduleName", + "Microsoft.Automation/automationAccounts/runbooks//omsAutomationAccountName/(runbooks).omsASRMonitoring.name", + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "schedule": { + "name": "IngestAPISchedule" + }, + "runbook": { + "name": "(Runbooks).omsASRMonitoring.name" + } + } + } + ] + } + ], + "outputs": { + "AutomationAccontName": { + "value": "[concat('Microsoft.Automation/automationAccounts/', parameters('omsAutomationAccountName'))]", + "type": "string" + }, + "LogAnalyticsworkspacename": { + "value": "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT618 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT618 new file mode 100644 index 0000000..4a28c37 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT618 @@ -0,0 +1,583 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/asr-oms-monitoring/azuredeploy.json", + "/demos/asr-oms-monitoring/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962898154, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/asr-oms-monitoring/azuredeploy.json", + "/demos/asr-oms-monitoring/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT618", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT618", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Create new or refer to an existing Log Analytic Workspace" + } + }, + "omsAutomationAccountName": { + "type": "string", + "metadata": { + "description": "Use an existing Automation account or create a new" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "usgovvirginia" + }, + "ingestScheduleGuid": { + "type": "string", + "metadata": { + "description": "GUID for the schedule creation - create a unique before deploy" + }, + "value": "GEN-GUID" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "psModulesUri": { + "type": "string", + "defaultValue": "https://devopsgallerystorage.blob.core.windows.net/packages/", + "metadata": { + "description": "Default modules URI" + } + }, + "omslogAnalyticsWorkspaceName": { + "value": "GEN-UNIQUE-10" + }, + "omsautomationAccountName": { + "value": "GEN-UNIQUE-11" + } + }, + "variables": { + "psModules": { + "azureRmProfile": { + "name": "AzureRm.Profile", + "url": "[uri(parameters('psModulesUri'),'azurerm.profile.1.0.11.nupkg')]" + }, + "azureRmResources": { + "name": "AzureRm.Resources", + "url": "[uri(parameters('psModulesUri'),'azurerm.resources.2.0.2.nupkg')]" + }, + "azureStorage": { + "name": "Azure.Storage", + "url": "[uri(parameters('psModulesUri'),'azure.storage.1.1.5.nupkg')]" + }, + "azureRmStorage": { + "name": "AzureRm.Storage", + "url": "[uri(parameters('psModulesUri'),'azurerm.storage.1.1.3.nupkg')]" + }, + "azureRmOperationalInsights": { + "name": "AzureRm.OperationalInsights", + "url": "[uri(parameters('psModulesUri'),'azurerm.operationalinsights.1.0.9.nupkg')]" + }, + "azureRmSiteRecovery": { + "name": "AzureRm.SiteRecovery", + "url": "[uri(parameters('psModulesUri'),'azurerm.siterecovery.1.1.10.nupkg')]" + }, + "azureRmRecoveryServices": { + "name": "AzureRm.RecoveryServices", + "url": "[uri(parameters('psModulesUri'),'azurerm.recoveryservices.1.1.3.nupkg')]" + }, + "azureRmBackup": { + "name": "AzureRm.Backup", + "url": "[uri(parameters('psModulesUri'),'azurerm.backup.1.0.9.nupkg')]" + }, + "azureRmCompute": { + "name": "AzureRm.Compute", + "url": "[uri(parameters('psModulesUri'),'azurerm.compute.1.3.3.nupkg')]" + }, + "azureRmAutomation": { + "name": "AzureRm.Automation", + "url": "[uri(parameters('psModulesUri'),'azurerm.automation.1.0.11.nupkg')]" + }, + "omsASRMonitoring": { + "name": "OMSIngestionAPI", + "url": "https://github.com/krnese/AzureDeploy/raw/master/OMS/OMSIngestionAPI.zip" + } + }, + "runbooks": { + "omsASRMonitoring": { + "name": "OMSASRMonitoring", + "version": "1.0.0.0", + "description": "Runbook to automatically ingest Recovery Services data and events into OMS Log Analytics", + "type": "PowerShell" + } + }, + "ingestScheduleName": "IngestAPISchedule", + "ingestionScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/OMSASRMonitoring.ps1', parameters('_artifactsLocationSasToken')))]", + "ingestInterval": "1", + "ingestFrequency": "hour", + "azureSubscriptionId": "AzureSubscriptionId", + "omsWorkspaceId": "OMSWorkspaceId", + "omsWorkspaceKey": "OMSWorkspacekey" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "usgovvirginia", + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Microsoft-Windows-Hyper-V-VMMS-Admin", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsEvent", + "properties": { + "eventLogName": "Microsoft-Windows-Hyper-V-VMMS-Admin", + "eventTypes": [ + { + "eventType": "Error" + }, + { + "eventType": "Warning" + }, + { + "eventType": "Information" + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Average Replication Size" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent2", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Replication Throughput" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent3", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Network Send Throughput" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent4", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Replication Count" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent5", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Network Bytes Sent" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent6", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Last Replication Size" + } + }, + { + "apiVersion": "2020-08-01", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent7", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsLogAnalyticsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Resynchronized Bytes" + } + } + ] + }, + { + "apiVersion": "2021-04-01", + "location": "usgovvirginia", + "name": "omsAutomationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "OMSWorkspaceId", + "type": "variables", + "apiVersion": "2021-04-01", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "OMS Workspace Id", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')),'2020-08-01').customerId,'\"')]" + } + }, + { + "name": "OMSWorkspacekey", + "type": "variables", + "apiVersion": "2021-04-01", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "OMS Workspace key", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2020-08-01').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureSubscriptionId", + "type": "variables", + "apiVersion": "2021-04-01", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "Azure Subscription Id", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "(psModules).azureRmOperationalInsights.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRMOperationalInsights.url" + } + } + }, + { + "name": "(psModules).azureRmResources.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRMResources.url" + } + } + }, + { + "name": "(psModules).azureRmAutomation.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules/omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules/omsAutomationAccountName/(psModules).azureRmResources.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRMAutomation.url" + } + } + }, + { + "name": "(psModules).azureRmStorage.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmStorage.url" + } + } + }, + { + "name": "(psModules).azureStorage.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureStorage.url" + } + } + }, + { + "name": "(psModules).azureRmCompute.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmCompute.url" + } + } + }, + { + "name": "(psModules).azureRmSiteRecovery.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRmSiteRecovery.url" + } + } + }, + { + "name": "(psModules).azureRmbackup.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmBackup.url" + } + } + }, + { + "name": "(psModules).azureRmRecoveryServices.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//GEN-UNIQUE-11/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmRecoveryServices.url" + } + } + }, + { + "name": "(psModules).azureRmProfile.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmProfile.url" + } + } + }, + { + "name": "(psModules).omsASRMonitoring.name", + "type": "Modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).omsASRMonitoring.url" + } + } + }, + { + "name": "(runbooks).omsASRMonitoring.name", + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/variables//omsAutomationAccountName/AzureSubscriptionId", + "Microsoft.Automation/automationAccounts/variables//omsAutomationAccountName/OMSWorkspaceId", + "Microsoft.Automation/automationAccounts/variables//omsAutomationAccountName/OMSWorkspacekey", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmResources.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmCompute.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureStorage.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmStorage.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmRecoveryServices.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmSiteRecovery.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmBackup.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmOperationalInsights.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).azureRmAutomation.name", + "Microsoft.Automation/automationAccounts/Modules//omsAutomationAccountName/(psModules).omsASRMonitoring.name" + ], + "properties": { + "runbookType": "(runbooks).omsASRMonitoring.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).omsASRMonitoring.description", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/OMSASRMonitoring.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "(runbooks).omsASRMonitoring.version" + } + } + }, + { + "name": "omsAutomationAccountName/ingestscheduleName", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2021-04-01", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/runbooks//omsAutomationAccountName/(runbooks).omsASRMonitoring.name" + ], + "properties": { + "description": "OMS Ingestion API Scheduler", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "omsAutomationAccountName/IngestScheduleGuid", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2021-04-01", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/schedules//omsAutomationAccountName/ingestscheduleName", + "Microsoft.Automation/automationAccounts/runbooks//omsAutomationAccountName/(runbooks).omsASRMonitoring.name", + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "schedule": { + "name": "IngestAPISchedule" + }, + "runbook": { + "name": "(Runbooks).omsASRMonitoring.name" + } + } + } + ] + } + ], + "outputs": { + "AutomationAccontName": { + "value": "[concat('Microsoft.Automation/automationAccounts/', parameters('omsAutomationAccountName'))]", + "type": "string" + }, + "LogAnalyticsworkspacename": { + "value": "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT619 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT619 new file mode 100644 index 0000000..de271ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT619 @@ -0,0 +1,883 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/asrRunbooks.json" + ], + "timestamp": 1642962898165, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/asrRunbooks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT619", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT619", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Specify the name of your Automation Account" + } + }, + "automationRegion": { + "type": "string", + "metadata": { + "description": "Specify the region for your automation account" + } + } + }, + "variables": { + "assets": { + "aaVariables": { + "AzureSubscriptionId": { + "name": "AzureSubscriptionId", + "description": "Azure subscription Id" + } + } + }, + "asrScripts": { + "runbooks": [ + { + "name": "ASR-AddPublicIp", + "url": "[uri(deployment().properties.templateLink.uri, 'scripts/ASR-AddPublicIp.ps1')]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable public IP on every VM in a Recovery Plan" + }, + { + "name": "ASR-SQL-FailoverAG", + "url": "[uri(deployment().properties.templateLink.uri, 'scripts/ASR-SQL-FailoverAG.ps1')]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to handle SQL Always On failover" + }, + { + "name": "ASR-AddSingleNSGPublicIp", + "url": "[uri(deployment().properties.templateLink.uri, 'scripts/ASR-AddSingleNSGPublicIp.ps1')]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable NSG and Public IP on every VM in a Recovery Plan" + }, + { + "name": "ASR-AddSingleLoadBalancer", + "url": "[uri(deployment().properties.templateLink.uri, 'scripts/ASR-AddSingleLoadBalancer.ps1')]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable a single Load Balancer for all the VMs in the recovery plan" + }, + { + "name": "ASR-AddMulitpleLoadBalancers", + "url": "[uri(deployment().properties.templateLink.uri, 'scripts/ASR-AddMultipleLoadBalancers.ps1')]", + "version": "1.0.0.0", + "type": "PowerShell", + "description": "ASR Runbook to enable multiple Load Balancers for selected VMs in the recovery plan" + }, + { + "name": "ASR-DNS-UpdateIP", + "url": "[uri(deployment().properties.templateLink.uri, 'scripts/ASR-DNS-UpdateIP.ps1')]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to update DNS for VMs within the recovery plan" + }, + { + "name": "ASR-Wordpress-ChangeMysqlConfig", + "url": "[uri(deployment().properties.templateLink.uri, 'scripts/ASR-Wordpress-ChangeMysqlConfig.ps1')]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to configure Mysql as part of a recovery plan" + }, + { + "name": "ASR-SQL-FailoverAGClassic", + "url": "[uri(deployment().properties.templateLink.uri, 'scripts/ASR-SQL-FailoverAGClassic.ps1')]", + "version": "1.0.0.0", + "type": "PowerShellWorkflow", + "description": "ASR Runbook to failover SQL Availability Group" + } + ], + "modules": [ + { + "name": "AzureRm.Compute", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.compute.2.8.0.nupkg" + }, + { + "name": "AzureRm.Resources", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.resources.3.7.0.nupkg" + }, + { + "name": "AzureRm.Network", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.network.3.6.0.nupkg" + }, + { + "name": "AzureRm.Automation", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.automation.1.0.3.nupkg" + } + ] + }, + "azureRmProfile": { + "name": "AzureRm.Profile", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.profile.2.7.0.nupkg" + } + }, + "resources": [ + { + "name": "automationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2015-10-31", + "location": "automationRegion", + "properties": { + "sku": { + "name": "OMS" + } + }, + "resources": [ + { + "name": "(assets).aaVariables.AzureSubscriptionId.name", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/automationAccountName" + ], + "tags": {}, + "properties": { + "description": "(assets).aaVariables.AzureSubscriptionId.description", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + } + ] + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').runbooks[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "(asrScripts).runbooks[copyIndex()].description", + "runbookType": "(asrScripts).runbooks[copyIndex()].type", + "logProgress": false, + "logVerbose": true, + "publishContentLink": { + "uri": "(asrScripts).runbooks[copyIndex()].url", + "version": "(asrScripts).runbooks[copyIndex()].version" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "automationAccountName/(azureRmProfile).name", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "contentLink": { + "uri": "(azureRmProfile).url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + }, + { + "apiVersion": "2015-10-31", + "type": "Microsoft.Automation/automationAccounts/modules", + "name": "[concat(parameters('automationAccountName'), '/', variables('asrScripts').modules[copyIndex()].Name)]", + "location": "automationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules//automationAccountName/(azureRmProfile).name" + ], + "properties": { + "contentLink": { + "uri": "(asrScripts).modules[copyIndex()].url" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT62 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT62 new file mode 100644 index 0000000..b3b1eef --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT62 @@ -0,0 +1,311 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884434, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT62", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.hdinsight/clusters", + "microsoft.storage/storageaccounts", + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT62", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterType": { + "type": "string", + "allowedValues": [ + "hadoop", + "hbase", + "storm", + "spark" + ], + "metadata": { + "description": "The type of the HDInsight cluster to create." + }, + "value": "hadoop" + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "hdi-datameer-avyan-cluster" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "hdiuser" + }, + "sshPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "clusterWorkerNodeCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The number of nodes in the HDInsight cluster." + } + }, + "storageAccount": { + "type": "string", + "metadata": { + "description": "The name of the storage account to use" + }, + "value": "stgmsignite2016" + }, + "location": { + "type": "string", + "defaultValue": "westus", + "allowedValues": [ + "westus", + "eastus", + "centralus" + ], + "metadata": { + "description": "Location where all the resources will be deployed" + }, + "value": "westus" + }, + "clusterVNetName": { + "type": "string", + "metadata": { + "description": "The name of the VirtualNetwork that the cluster need to bind to" + }, + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "type": "string", + "metadata": { + "description": "The VNet subnet CIDR start address" + }, + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "type": "string", + "metadata": { + "description": "The VNet subnet CIDR address range" + }, + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "type": "string", + "metadata": { + "description": "The VNet subnet Name of the HD cluster" + }, + "value": "hdi-datameer-avyan-clustersubnet" + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": { + "storageAccountName": "stgmsignite2016", + "defaultApiVersion": "2018-02-01", + "clusterApiVersion": "2015-03-01-preview", + "clusterVNetName": "datameerP2PVnet", + "clusterVNetSubnetName": "hdi-datameer-avyan-clustersubnet", + "clusterVnetAddressSpace": "10.7.0.0/16", + "clusterVNetSubnetAddressRange": "10.7.4.0/24" + }, + "resources": [ + { + "name": "stgmsignite2016", + "type": "Microsoft.Storage/storageAccounts", + "location": "westus", + "apiVersion": "2018-02-01", + "tags": { + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "dependsOn": [], + "sku": { + "name": "Standard_LRS" + }, + "properties": {} + }, + { + "name": "hdi-datameer-avyan-cluster", + "type": "Microsoft.HDInsight/clusters", + "location": "westus", + "apiVersion": "2015-03-01-preview", + "tags": { + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/stgmsignite2016" + ], + "properties": { + "clusterVersion": "3.2", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "hdiadmin", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), variables('defaultApiVersion')).primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "hdi-datameer-avyan-cluster", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), variables('defaultApiVersion')).key1]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "hdiuser", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/datameerP2PVnet", + "subnet": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/hdi-datameer-avyan-clustersubnet" + }, + "scriptActions": [] + }, + { + "name": "workernode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "hdiuser", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/datameerP2PVnet", + "subnet": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/hdi-datameer-avyan-clustersubnet" + }, + "scriptActions": [] + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Small" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "hdiuser", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/datameerP2PVnet", + "subnet": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/hdi-datameer-avyan-clustersubnet" + }, + "scriptActions": [] + } + ] + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "datameerdatameer_2016-08-12T19.37.23.326Z", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://gallery.azure.com/artifact/20151001/datameer.datameerdatameer.1.0.2/Artifacts/mainTemplate.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "galleryPackageIdentity": { + "value": "datameer.datameerdatameer.1.0.2" + }, + "edgeNodeSize": { + "value": "Standard_D4_v3" + } + } + }, + "dependsOn": [ + "Microsoft.HDInsight/clusters/hdi-datameer-avyan-cluster" + ] + } + ], + "outputs": { + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + }, + "datameerAppURL": { + "type": "string", + "value": "[concat('https://',parameters('clusterName'),'-dtu.apps.azurehdinsight.net:443')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT621 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT621 new file mode 100644 index 0000000..d3a1f82 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT621 @@ -0,0 +1,288 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/dscConfigs.json" + ], + "timestamp": 1642962898223, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/dscConfigs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT621", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT621", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the Automation account" + } + }, + "omsAutomationRegion": { + "type": "string", + "defaultValue": "West Europe", + "metadata": { + "description": "Specify the region for your Automation account" + } + }, + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Specify the name of your existing OMS Automation account to store the configuration" + } + } + }, + "variables": { + "assets": { + "psModules": { + "xPSDSC": { + "name": "xPSDesiredStateConfiguration", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/xpsdesiredstateconfiguration.3.9.0.nupkg" + } + }, + "aaVariables": { + "OMSWorkspaceId": { + "name": "OMSWorkspaceId", + "description": "Workspace ID for the Log Analytics workspace" + }, + "OMSWorkspaceKey": { + "name": "OMSWorkspaceKey", + "description": "Primary key for the Log Analytics workspace" + }, + "AzureSubscriptionId": { + "name": "SubscriptionId", + "description": "Azure subscription Id" + } + }, + "dsc": { + "omsConfig": { + "name": "OMS", + "description": "DSC configuration for installing and configuring OMS agent", + "uri": "[uri(deployment().properties.templateLink.uri, 'scripts/oms.ps1')]" + }, + "omsService": { + "name": "OMSSERVICE", + "description": "DSC configuration for keeping the OMS agent in a running state", + "uri": "[uri(deployment().properties.templateLink.uri, 'scripts/omsservice.ps1')]" + }, + "omsAsrComplete": { + "name": "OMSASR", + "description": "DSC configuration for installing the OMS and Azure agent for protected machines for ASR", + "uri": "[uri(deployment().properties.templateLink.uri, 'scripts/omsasr.ps1')]" + } + }, + "guids": { + "guid1": "[guid(parameters('omsAutomationAccountName'))]", + "guid2": "[guid(parameters('omsWorkspaceName'))]", + "guid3": "[guid(resourceGroup().id, deployment().name)]" + } + } + }, + "resources": [ + { + "name": "", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2015-01-01-preview", + "location": "West Europe", + "properties": { + "sku": { + "name": "OMS" + } + }, + "resources": [ + { + "name": "(assets).aaVariables.OMSWorkspaceId.name", + "type": "variables", + "apiVersion": "2015-01-01-preview", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "(assets).aaVariables.OMSWorkspaceId.description", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2015-11-01-preview').customerId,'\"')]" + } + }, + { + "name": "(assets).aaVariables.OMSWorkspaceKey.name", + "type": "variables", + "apiVersion": "2015-01-01-preview", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Remote file for the passphrase", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2015-11-01-preview').primarySharedKey,'\"')]" + } + }, + { + "name": "(assets).aaVariables.AzureSubscriptionId.name", + "type": "variables", + "apiVersion": "2015-01-01-preview", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "(assets).aaVariables.AzureSubscriptionId.description", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "(assets).psModules.xPSDSC.name", + "type": "Modules", + "apiVersion": "2015-01-01-preview", + "tags": {}, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Variables/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Variables/(assets).aaVariables.OMSWorkspaceKey.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.xPSDSC.uri" + } + } + }, + { + "name": "(assets).dsc.omsConfig.name", + "type": "Configurations", + "apiVersion": "2015-01-01-preview", + "location": "West Europe", + "tags": {}, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Variables/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Variables/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Modules/(assets).psModules.xPSDSC.name" + ], + "properties": { + "logVerbose": false, + "description": "(assets).dsc.omsConfig.description", + "state": "Published", + "overwrite": "true", + "source": { + "type": "uri", + "value": "(assets).dsc.omsConfig.uri", + "version": "1.0.0.0" + } + } + }, + { + "name": "(assets).guids.guid1", + "type": "Compilationjobs", + "apiVersion": "2015-01-01-preview", + "tags": {}, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Configurations/(assets).dsc.omsConfig.name" + ], + "properties": { + "configuration": { + "name": "(assets).dsc.omsConfig.name" + } + } + }, + { + "name": "(assets).dsc.omsAsrComplete.name", + "type": "Configurations", + "apiVersion": "2015-01-01-preview", + "location": "West Europe", + "tags": {}, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Variables/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Variables/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Modules/(assets).psModules.xPSDSC.name" + ], + "properties": { + "logVerbose": false, + "description": "(assets).dsc.omsAsrComplete.description", + "state": "Published", + "overwrite": "true", + "source": { + "type": "uri", + "value": "(assets).dsc.omsAsrComplete.uri", + "version": "1.0.0.0" + } + } + }, + { + "name": "(assets).guids.guid2", + "type": "Compilationjobs", + "apiVersion": "2015-01-01-preview", + "tags": {}, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Configurations/(assets).dsc.omsAsrComplete.name" + ], + "properties": { + "configuration": { + "name": "(assets).dsc.omsAsrComplete.name" + } + } + }, + { + "name": "(assets).dsc.omsService.name", + "type": "Configurations", + "apiVersion": "2015-01-01-preview", + "location": "West Europe", + "tags": {}, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Variables/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Variables/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Modules/(assets).psModules.xPSDSC.name" + ], + "properties": { + "logVerbose": false, + "description": "(assets).dsc.omsService.description", + "state": "Published", + "overwrite": "true", + "source": { + "type": "uri", + "Value": "(assets).dsc.omsService.uri" + } + } + }, + { + "name": "(assets).guids.guid3", + "type": "Compilationjobs", + "apiVersion": "2015-01-01-preview", + "tags": {}, + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/Configurations/(assets).dsc.omsService.name" + ], + "properties": { + "configuration": { + "name": "(assets).dsc.omsService.name" + } + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT622 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT622 new file mode 100644 index 0000000..e474ded --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT622 @@ -0,0 +1,83 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedLinuxBackup.json" + ], + "timestamp": 1642962898233, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedLinuxBackup.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT622", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT622", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "instanceCount": { + "type": "int" + }, + "vmNameSuffix": { + "type": "string", + "metadata": { + "description": "Name of Azure Virtual Machines" + } + }, + "vmRgName": { + "type": "string" + }, + "omsRecoveryVaultName": { + "type": "string", + "metadata": { + "description": "Recovery services vault name where the VMs will be backed up to. The default vaule is 'Backup-vault'." + } + }, + "omsRecoveryVaultRegion": { + "type": "string", + "metadata": { + "description": "Location of the Backup Vault" + } + } + }, + "variables": { + "backupFabric": "Azure", + "backupPolicy": "DefaultPolicy", + "v2VmType": "Microsoft.Compute/virtualMachines", + "v2VmContainer": "iaasvmcontainer;iaasvmcontainerv2;", + "v2Vm": "vm;iaasvmcontainerv2;" + }, + "resources": [ + { + "name": "omsRecoveryVaultName/Azure/iaasvmcontainer;iaasvmcontainerv2;vmRgName;vmNameSuffixVMcopyIndex()/vm;iaasvmcontainerv2;vmRgName;vmNameSuffixVMcopyIndex()", + "apiVersion": "2016-12-01", + "location": "omsRecoveryVaultRegion", + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "copy": { + "name": "iaasBackupCopy", + "count": "instanceCount" + }, + "properties": { + "protectedItemType": "Microsoft.Compute/virtualMachines", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/omsRecoveryVaultName/DefaultPolicy", + "sourceResourceId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('vmRgName'), '/providers/Microsoft.Compute/virtualMachines/', parameters('vmNameSuffix'), 'VM', copyIndex())]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT623 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT623 new file mode 100644 index 0000000..41f8e1c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT623 @@ -0,0 +1,438 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedVms.json" + ], + "timestamp": 1642962898266, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedVms.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT623", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT623", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "instanceCount": { + "type": "int", + "defaultValue": 2, + "maxValue": 10, + "metadata": { + "description": "Specify the number of VMs to create" + } + }, + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Azure Automation account name" + } + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "VM", + "metadata": { + "description": "Assing a prefix for the VMs you will create" + } + }, + "platform": { + "type": "string", + "defaultValue": "WinSrv", + "allowedValues": [ + "WinSrv", + "Linux" + ], + "metadata": { + "description": "Select the OS type to deploy" + } + }, + "username": { + "type": "string", + "defaultValue": "azureadmin", + "metadata": { + "description": "User name for the OS." + } + }, + "pwdOrSsh": { + "type": "securestring", + "metadata": { + "description": "Provide pwd if WinSrv, SSH if Linux." + } + }, + "omsResourceGroup": { + "type": "string", + "metadata": { + "description": "Specify name of Resource Group containing the mgmt services" + } + }, + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Specify the name of your OMS workspace" + } + }, + "omsRecoveryVaultName": { + "type": "string", + "metadata": { + "description": "Name of Recovery Vault" + } + }, + "omsRecoveryVaultRegion": { + "type": "string", + "metadata": { + "description": "Recovery Vault region" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "availabilitySetName": "vmAvSet", + "vNetName": "managedVnet", + "vNetAddressPrefix": "192.168.0.0/16", + "subnetName": "subnet01", + "subnetAddressPrefix": "192.168.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/managedVnet/subnet01", + "windowsOffer": "WindowsServer", + "windowsSku": "2016-Datacenter", + "windowsPublisher": "MicrosoftWindowsServer", + "linuxOffer": "UbuntuServer", + "linuxSku": "12.04.5-LTS", + "linuxPublisher": "Canonical", + "windowsMgmtType": "MicrosoftMonitoringAgent", + "windowsMgmtVersion": "1.0", + "linuxMgmtType": "OmsAgentForLinux", + "linuxMgmtVersion": "1.4", + "modulesUrl": "[uri(deployment().properties.templateLink.uri, 'scripts/UpdateLCMforAAPull.zip')]", + "configurationFunction": "UpdateLCMforAAPull.ps1\\ConfigureLCMforAAPull", + "configurationMode": "ApplyAndMonitor", + "configurationModeFrequencyMins": 15, + "refreshFrequencyMins": 30, + "rebootNodeIfNeeded": true, + "actionAfterReboot": "ContinueConfiguration", + "allowModuleOverwrite": true, + "configName": "OMSSERVICE.localhost" + }, + "resources": [ + { + "apiVersion": "2017-04-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "VMIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "VMIP", + "count": "instancecount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('vmNamePrefix'), 'VM', copyIndex()))]" + } + } + }, + { + "apiVersion": "2017-04-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "managedVnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet01", + "properties": { + "addressPrefix": "192.168.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2017-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "VMniccopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "VMnic", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/VMIPcopyIndex()", + "Microsoft.Network/virtualNetworks/managedVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/VMIPcopyIndex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/managedVnet/subnet01" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2017-03-30", + "name": "vmAvSet", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 3 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "VMWinSrvcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "VM", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkinterfaces/VMniccopyIndex()", + "Microsoft.Compute/availabilitySets//vmAvSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets//vmAvSet" + }, + "hardwareprofile": { + "vmsize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "VMWinSrvcopyIndex()", + "adminusername": "azureadmin", + "adminpassword": "pwdOrSsh" + }, + "storageProfile": { + "imageReference": { + "publisher": "[if(equals(parameters('platform'), 'WinSrv'), variables('windowsPublisher'), variables('linuxPublisher'))]", + "offer": "[if(equals(parameters('platform'), 'WinSrv'), variables('windowsOffer'), variables('linuxOffer'))]", + "version": "latest", + "sku": "[if(equals(parameters('platform'), 'WinSrv'), variables('windowsSku'), variables('linuxSku'))]" + }, + "osdisk": { + "name": "WinSrv-osDiskcopyIndex()", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "caching": "ReadWrite" + } + }, + "networkprofile": { + "networkinterfaces": [ + { + "id": "Microsoft.Network/networkinterfaces/VMniccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2017-03-30", + "name": "VMWinSrvcopyIndex()/OMS", + "location": "[resourceGroup().location]", + "copy": { + "name": "VMWinSrvOMS", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/VMWinSrvcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "[if(equals(parameters('platform'), 'WinSrv'), variables('windowsMgmtType'), variables('linuxMgmtType'))]", + "typeHandlerVersion": "[if(equals(parameters('platform'), 'WinSrv'), variables('windowsMgmtVersion'), variables('linuxMgmtVersion'))]", + "autoUpgradeMinorVersion": true, + "settings": { + "workspaceId": "[reference(resourceId(parameters('omsResourceGroup'), 'Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2015-11-01-preview').customerId]", + "azureResourceId": "Microsoft.Compute/virtualMachines//VMWinSrvcopyIndex()" + }, + "protectedSettings": { + "workspaceKey": "[listKeys(resourceId(parameters('omsResourceGroup'),'Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2015-11-01-preview').primarySharedKey]" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "VMWinSrvcopyIndex()/ServiceMap", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "copy": { + "name": "VMWinSrvServiceMap", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/VMWinSrvcopyIndex()/extensions//OMS" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "[if(equals(parameters('platform'), 'WinSrv'), 'DependencyAgentWindows', 'DependencyAgentLinux')]", + "typeHandlerVersion": "9.1", + "autoUpgradeMinorVersion": true + } + }, + { + "condition": false, + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "VMWinSrvcopyIndex()/DSC", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "copy": { + "name": "VMWinSrvDSC", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/VMWinSrvcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "Items": { + "registrationKeyPrivate": "[listKeys(resourceId(parameters('omsResourceGroup'), 'Microsoft.Automation/automationAccounts/', parameters('automationAccountName')), '2015-01-01-preview').Keys[0].value]" + } + }, + "settings": { + "ModulesUrl": "[uri(deployment().properties.templateLink.uri, 'scripts/UpdateLCMforAAPull.zip')]", + "SasToken": "", + "ConfigurationFunction": "UpdateLCMforAAPull.ps1\\ConfigureLCMforAAPull", + "Properties": [ + { + "Name": "RegistrationKey", + "Value": { + "UserName": "PLACEHOLDER_DONOTUSE", + "Password": "PrivateSettingsRef:registrationKeyPrivate" + }, + "TypeName": "System.Management.Automation.PSCredential" + }, + { + "Name": "RegistrationUrl", + "Value": "[reference(resourceId(parameters('omsResourceGroup'), 'Microsoft.Automation/automationAccounts/', parameters('automationAccountName')), '2015-01-01-preview').registrationUrl]", + "TypeName": "System.String" + }, + { + "Name": "NodeConfigurationName", + "Value": "OMSSERVICE.localhost", + "TypeName": "System.String" + }, + { + "Name": "ConfigurationMode", + "Value": "ApplyAndMonitor", + "TypeName": "System.String" + }, + { + "Name": "ConfigurationModeFrequencyMins", + "Value": 15, + "TypeName": "System.Int32" + }, + { + "Name": "RefreshFrequencyMins", + "Value": 30, + "TypeName": "System.Int32" + }, + { + "Name": "RebootNodeIfNeeded", + "Value": true, + "TypeName": "System.Boolean" + }, + { + "Name": "ActionAfterReboot", + "Value": "ContinueConfiguration", + "TypeName": "System.String" + }, + { + "Name": "AllowModuleOverwrite", + "Value": true, + "TypeName": "System.Boolean" + } + ] + } + } + }, + { + "apiVersion": "2017-05-10", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "omsResourceGroup", + "name": "enableBackup", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/VMWinSrv0/extensions/OMS" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, 'managedVmsBackup.json')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "instanceCount": { + "value": 2 + }, + "vmNamePrefix": { + "value": "VM" + }, + "vmRgName": { + "value": "[resourceGroup().name]" + }, + "omsRecoveryVaultName": { + "value": "omsRecoveryVaultName" + }, + "omsRecoveryVaultRegion": { + "value": "omsRecoveryVaultRegion" + }, + "platform": { + "value": "WinSrv" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT624 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT624 new file mode 100644 index 0000000..c43dee5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT624 @@ -0,0 +1,93 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedVmsBackup.json" + ], + "timestamp": 1642962898275, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/managedVmsBackup.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT624", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT624", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "instanceCount": { + "type": "int" + }, + "vmNamePrefix": { + "type": "string", + "metadata": { + "description": "Name of Azure Virtual Machines" + } + }, + "vmRgName": { + "type": "string", + "metadata": { + "description": "Resource group containing the virtual machines." + } + }, + "omsRecoveryVaultName": { + "type": "string", + "metadata": { + "description": "Recovery services vault name where the VMs will be backed up to. The default vaule is 'Backup-vault'." + } + }, + "omsRecoveryVaultRegion": { + "type": "string", + "metadata": { + "description": "Location of the Backup Vault" + } + }, + "platform": { + "type": "string", + "metadata": { + "description": "Specify OS platform" + } + } + }, + "variables": { + "backupFabric": "Azure", + "backupPolicy": "DefaultPolicy", + "v2VmType": "Microsoft.Compute/virtualMachines", + "v2VmContainer": "iaasvmcontainer;iaasvmcontainerv2;", + "v2Vm": "vm;iaasvmcontainerv2;" + }, + "resources": [ + { + "name": "omsRecoveryVaultName/Azure/iaasvmcontainer;iaasvmcontainerv2;vmRgName;vmNamePrefixplatformcopyIndex()/vm;iaasvmcontainerv2;vmRgName;vmNamePrefixplatformcopyIndex()", + "apiVersion": "2016-12-01", + "location": "omsRecoveryVaultRegion", + "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems", + "copy": { + "name": "iaasBackupCopy", + "count": "instanceCount" + }, + "properties": { + "protectedItemType": "Microsoft.Compute/virtualMachines", + "policyId": "Microsoft.RecoveryServices/vaults/backupPolicies/omsRecoveryVaultName/DefaultPolicy", + "sourceResourceId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('vmRgName'), '/providers/Microsoft.Compute/virtualMachines/', parameters('vmNamePrefix'), parameters('platform'), copyIndex())]" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT625 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT625 new file mode 100644 index 0000000..59ad288 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT625 @@ -0,0 +1,303 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/mgmtDashboards.json" + ], + "timestamp": 1642962898283, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/mgmtDashboards.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT625", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.portal/dashboards" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT625", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmResourceGroup": { + "type": "string" + }, + "omsAutomationAccountName": { + "type": "string" + }, + "omsRecoveryVaultName": { + "type": "string" + }, + "omsWorkspaceName": { + "type": "string" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Portal/dashboards", + "apiVersion": "2015-08-01-preview", + "location": "[resourceGroup().location]", + "name": "[concat('AzureMgmt', resourceGroup().name, '-dashboard')]", + "properties": { + "lenses": { + "0": { + "order": 0, + "parts": { + "0": { + "position": { + "x": 0, + "y": 0, + "rowSpan": 4, + "colSpan": 6 + }, + "metadata": { + "inputs": [], + "type": "Extension[azure]/HubsExtension/PartType/MarkdownPart", + "settings": { + "content": { + "settings": { + "content": "### Demo environment for Azure mgmt!\r\n\r\nThis dashboard contains pointers to all mgmt services and workloads.\r\n\r\nFeedback/questions:\r\n\r\nkrnese@microsoft.com \r\n\r\n\r\n", + "title": "Azure Management", + "subtitle": "" + } + } + } + } + }, + "1": { + "position": { + "x": 6, + "y": 0, + "rowSpan": 4, + "colSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceGroup", + "value": "[resourceGroup().id]" + } + ], + "type": "Extension/HubsExtension/PartType/ResourceGroupMapPinnedPart", + "asset": { + "idInputName": "resourceGroup", + "type": "ResourceGroups" + }, + "defaultMenuItemId": "overview" + } + }, + "2": { + "position": { + "x": 0, + "y": 4, + "rowSpan": 2, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "resourceId", + "value": "Microsoft.RecoveryServices/vaults//omsRecoveryVaultName" + } + ], + "type": "Extension/Microsoft_Azure_RecoveryServices/PartType/ResourcePart", + "asset": { + "idInputName": "resourceId", + "type": "RecoveryServicesResource" + }, + "defaultMenuItemId": "overview" + } + }, + "3": { + "position": { + "x": 2, + "y": 4, + "rowSpan": 2, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "inferredBladePinPartInputs.id", + "value": "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + }, + { + "name": "accountResourceId", + "value": "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + } + ], + "type": "Extension/Microsoft_Azure_Automation/PartType/InferredBladePinPartAccountDashboardBlade", + "asset": { + "idInputName": "accountResourceId", + "type": "Account" + }, + "defaultMenuItemId": "overview" + } + }, + "4": { + "position": { + "x": 4, + "y": 4, + "rowSpan": 2, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "id", + "value": "Microsoft.OperationalInsights/workspaces//omsWorkspaceName" + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/WorkspacePart", + "asset": { + "idInputName": "id", + "type": "Workspace" + }, + "defaultMenuItemId": "Overview" + } + }, + "5": { + "position": { + "x": 6, + "y": 4, + "rowSpan": 4, + "colSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceGroup", + "value": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('vmResourceGroup'))]" + } + ], + "type": "Extension/HubsExtension/PartType/ResourceGroupMapPinnedPart", + "asset": { + "idInputName": "resourceGroup", + "type": "ResourceGroups" + }, + "defaultMenuItemId": "overview" + } + }, + "6": { + "position": { + "x": 0, + "y": 6, + "rowSpan": 2, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "resourceId", + "value": "Microsoft.RecoveryServices/vaults//omsRecoveryVaultName" + } + ], + "type": "Extension/Microsoft_Azure_RecoveryServices/Blade/ResourceBlade/Lens/BackupItemsLens/PartInstance/BackupProtectedItemsSummaryPart" + } + }, + "7": { + "position": { + "x": 2, + "y": 6, + "rowSpan": 1, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "accountResourceId", + "value": "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + } + ], + "type": "Extension/Microsoft_Azure_Automation/Blade/AccountDashboardBlade/Lens/ResourcesLens/PartInstance/RunbooksCollectionPart" + } + }, + "8": { + "position": { + "x": 4, + "y": 6, + "rowSpan": 1, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "id", + "value": "Microsoft.OperationalInsights/workspaces//omsWorkspaceName" + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/Blade/WorkspaceBlade/Lens/ManagementLens/PartInstance/LogSearchPart" + } + }, + "9": { + "position": { + "x": 2, + "y": 7, + "rowSpan": 1, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "accountResourceId", + "value": "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + } + ], + "type": "Extension/Microsoft_Azure_Automation/Blade/AccountDashboardBlade/Lens/ResourcesLens/PartInstance/DsConfigurationsCollectionPart", + "asset": { + "idInputName": "accountResourceId", + "type": "Account" + } + } + }, + "10": { + "position": { + "x": 4, + "y": 7, + "rowSpan": 1, + "colSpan": 2 + }, + "metadata": { + "inputs": [ + { + "name": "id", + "value": "Microsoft.OperationalInsights/workspaces//omsWorkspaceName" + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/Blade/WorkspaceBlade/Lens/ManagementLens/PartInstance/OverviewPart" + } + } + } + } + }, + "metadata": { + "model": { + "timeRange": { + "value": { + "relative": { + "duration": 24, + "timeUnit": 1 + } + }, + "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange" + } + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT626 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT626 new file mode 100644 index 0000000..a9a6cf0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT626 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsAutomation.json" + ], + "timestamp": 1642962898295, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsAutomation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT626", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT626", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the Automation account" + } + }, + "omsAutomationRegion": { + "type": "string", + "metadata": { + "description": "Specify the region for your Automation account" + } + }, + "omsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the OMS workspace" + } + }, + "omsRecoveryVaultName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the ASR Recovery Vault" + } + } + }, + "variables": { + "runbooks": { + "omsABUscript": { + "name": "AzureIaasBackup", + "version": "1.0.0.0", + "description": "Runbook to automatically backup IaaS VMs within the ABU region", + "type": "PowerShell", + "Id": "" + } + }, + "scriptUri": "[uri(deployment().properties.templateLink.uri, 'scripts/Automated-IaaS-Backup.ps1')]", + "azureSubscriptionId": "AzureSubscriptionId", + "omsWorkspaceId": "OMSWorkspaceId", + "omsWorkspaceKey": "OMSWorkspacekey", + "omsWorkspaceNameAsset": "OMSWorkspaceName", + "omsResourceGroupName": "OMSResourceGroupName", + "omsRecoveryVault": "OMSRecoveryVault" + }, + "resources": [ + { + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "name": "", + "type": "Microsoft.Automation/automationAccounts", + "comments": "Automation account for OMS", + "properties": { + "sku": { + "name": "OMS" + } + }, + "resources": [ + { + "name": "OMSWorkspaceId", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts// parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "OMS Workspace Id", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')),'2015-11-01-preview').customerId,'\"')]" + } + }, + { + "name": "OMSWorkspacekey", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts// parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "OMS Workspace key", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2015-11-01-preview').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureSubscriptionId", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts// parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Azure Subscription Id", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "OMSRecoveryVault", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts// parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "OMS Recovery Vault Name", + "value": "\"parameters('omsRecoveryVaultName')\"" + } + }, + { + "name": "OMSResourceGroupName", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts// parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "OMS Recovery Vault Name", + "value": "[concat('\"',resourceGroup().name,'\"')]" + } + }, + { + "name": "OMSWorkspaceName", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts// parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "OMS Recovery Vault Name", + "value": "\"parameters('omsWorkspaceName')\"" + } + }, + { + "name": "(runbooks).omsABUscript.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/OMSWorkspaceId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/OMSWorkspacekey" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).omsABUscript.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).omsABUscript.description", + "publishContentLink": { + "uri": "[uri(deployment().properties.templateLink.uri, 'scripts/Automated-IaaS-Backup.ps1')]", + "version": "(runbooks).omsABUscript.version" + } + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT627 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT627 new file mode 100644 index 0000000..06c6028 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT627 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsRecoveryServices.json" + ], + "timestamp": 1642962898303, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsRecoveryServices.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT627", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT627", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsRecoveryVaultName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the ASR Recovery Vault" + } + }, + "omsRecoveryVaultRegion": { + "type": "string", + "metadata": { + "description": "Specify the region for your Recovery Vault" + } + } + }, + "variables": { + "recoveryStorageAccountName": "[toLower(concat('asr', uniqueString(resourceGroup().id)))]", + "recoveryStorageType": "Standard_LRS" + }, + "resources": [ + { + "apiVersion": "2016-06-01", + "location": "omsRecoveryVaultRegion", + "name": "", + "type": "Microsoft.RecoveryServices/vaults", + "comments": "ASR Recovery Vault for OMS", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2016-06-01", + "name": "HyperVPrimarySite", + "type": "replicationFabrics", + "id": "Microsoft.RecoveryServices/vaults/replicationFabrics/ parameters('omsRecoveryVaultName')/HyperVPrimarySite", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/ parameters('omsRecoveryVaultName')" + ], + "properties": { + "friendlyName": "PrimarySite", + "fabricType": "HyperVSite" + } + }, + { + "apiVersion": "2016-06-01", + "name": "DefaultVMwarePolicy", + "type": "replicationPolicies", + "id": "Microsoft.RecoveryServices/vaults/replicationPolicies/ parameters('omsRecoveryVaultName')/DefaultVMwarePolicy", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/ parameters('omsRecoveryVaultName')" + ], + "properties": { + "subscriptionid": "[subscription().subscriptionId]", + "friendlyName": "DefaultVMwarePolicy", + "providerSpecificInput": { + "instanceType": "InMageAzureV2", + "crashConsistentFrequencyInMinutes": 5, + "recoveryPointThresholdInMinutes": 15, + "recoveryPointHistory": 1440, + "appConsistentFrequencyInMinutes": 60, + "multiVmSyncStatus": "Enable" + } + } + }, + { + "apiVersion": "2016-06-01", + "name": "DefaultVMwarePolicy-failback", + "type": "replicationPolicies", + "id": "Microsoft.RecoveryServices/vaults/replicationPolicies/ parameters('omsRecoveryVaultName')/DefaultVMwarePolicy-failback", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/ parameters('omsRecoveryVaultName')", + "Microsoft.RecoveryServices/vaults/ parameters('omsRecoveryVaultName')/replicationPolicies/DefaultVMwarePolicy" + ], + "properties": { + "subscriptionid": "[subscription().subscriptionId]", + "friendlyName": "DefaultVMwarePolicy-failback", + "providerSpecificInput": { + "instanceType": "InMage", + "recoveryPointThresholdInMinutes": 15, + "recoveryPointHistory": 1440, + "appConsistentFrequencyInMinutes": 60, + "multiVmSyncStatus": "Enable" + } + } + }, + { + "apiVersion": "2016-06-01", + "name": "DefaultHyperVPolicy", + "type": "replicationPolicies", + "id": "Microsoft.RecoveryServices/vaults/replicationPolicies/ parameters('omsRecoveryVaultName')/DefaultHyperVPolicy", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/ parameters('omsRecoveryVaultName')" + ], + "properties": { + "subscriptionId": "[subscription().subscriptionId]", + "friendlyName": "DefaultHyperVPolicy", + "providerSpecificInput": { + "instanceType": "HyperVReplicaAzure", + "recoveryPointHistoryDurationInHours": 2, + "applicationConsistentSnapshotFrequencyInHours": 0, + "replicationInterval": 900, + "onlineReplicationStartTime": "", + "activeStorageAccountId": "[reference(resourceId('Microsoft.Storage/storageAccounts/',variables('recoveryStorageAccountName')))]", + "encryption": "Disable" + } + } + } + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[toLower(concat('asr', uniqueString(resourceGroup().id)))]", + "apiVersion": "2016-01-01", + "location": "omsRecoveryVaultRegion", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT628 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT628 new file mode 100644 index 0000000..8271ed5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT628 @@ -0,0 +1,455 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsWorkspace.json" + ], + "timestamp": 1642962898314, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/nestedtemplates/omsWorkspace.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT628", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT628", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Assign a name for the Log Analytic Workspace Name" + } + }, + "omsWorkspaceRegion": { + "type": "string", + "metadata": { + "description": "Specify the region for your Workspace" + } + } + }, + "variables": { + "batch1": { + "solutions": [ + { + "name": "Security(, parameters(omsWorkspaceName), )", + "marketplaceName": "Security" + }, + { + "name": "AgentHealthAssessment(, parameters(omsWorkspaceName), )", + "marketplaceName": "AgentHealthAssessment" + }, + { + "name": "ChangeTracking(, parameters(omsWorkspaceName), )", + "marketplaceName": "ChangeTracking" + }, + { + "name": "Updates(, parameters(omsWorkspaceName), )", + "marketplaceName": "Updates" + }, + { + "name": "AzureActivity(, parameters(omsWorkspaceName), )", + "marketplaceName": "AzureActivity" + }, + { + "name": "ServiceMap(, parameters(omsWorkspaceName), )", + "marketplaceName": "ServiceMap" + }, + { + "name": "AzureAutomation(, parameters(omsWorkspaceName), )", + "marketplaceName": "AzureAutomation" + }, + { + "name": "AzureSQLAnalytics(, parameters(omsWorkspaceName), )", + "marketplaceName": "AzureSQLAnalytics" + }, + { + "name": "AlertManagement(, parameters(omsWorkspaceName), )", + "marketplaceName": "AlertManagement" + }, + { + "name": "AntiMalware(, parameters(omsWorkspaceName), )", + "marketplaceName": "AntiMalware" + }, + { + "name": "AzureNSGAnalytics(, parameters(omsWorkspaceName), )", + "marketplaceName": "AzureNSGAnalytics" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2017-03-15-preview", + "location": "omsWorkspaceRegion", + "name": "omsWorkspaceName", + "type": "Microsoft.OperationalInsights/workspaces", + "comments": "Log Analytics workspace", + "properties": { + "sku": { + "name": "pernode" + }, + "features": { + "legacy": 0, + "searchVersion": 1 + } + }, + "resources": [ + { + "name": "AzureActivityLog", + "type": "datasources", + "apiVersion": "2015-11-01-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "AzureActivityLog", + "properties": { + "linkedResourceId": "[concat(subscription().id, '/providers/Microsoft.Insights/eventTypes/management')]" + } + } + ] + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "omsWorkspaceRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT629 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT629 new file mode 100644 index 0000000..fd03050 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT629 @@ -0,0 +1,376 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azmgmt-demo/azuredeploy.json", + "/demos/azmgmt-demo/azuredeploy.parameters.json" + ], + "timestamp": 1642962898326, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azmgmt-demo/azuredeploy.json", + "/demos/azmgmt-demo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT629", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT629", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "azMgmtPrefix": { + "type": "string", + "metadata": { + "description": "Provide a prefix for the Azure mgmt. services that will be created" + }, + "value": "GEN-UNIQUE20" + }, + "instanceCount": { + "type": "int", + "defaultValue": 2, + "maxValue": 10, + "metadata": { + "description": "Specify the number of VMs to create" + }, + "value": 1 + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "az1demo", + "metadata": { + "description": "Assing a prefix for the VMs you will create" + }, + "value": "GEN-UNIQUE10" + }, + "platform": { + "type": "string", + "defaultValue": "WinSrv", + "allowedValues": [ + "WinSrv", + "Linux" + ], + "metadata": { + "description": "Select the OS type to deploy." + }, + "value": "Linux" + }, + "username": { + "type": "string", + "defaultValue": "azureadmin", + "metadata": { + "description": "Assign a username to the VMs. Default will be 'azureadmin'." + }, + "value": "azureadmin" + }, + "pwdOrSsh": { + "type": "securestring", + "metadata": { + "description": "Specify pwd if platform is WinSrv, or ssh if Linux." + }, + "value": "GEN-PASSWORD" + }, + "vmResourceGroup": { + "type": "string", + "metadata": { + "description": "Specify the name of an existing Resource Group where the VMs will be deployed." + }, + "value": "" + } + }, + "variables": { + "nestedTemplates": { + "omsRecoveryServices": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/omsRecoveryServices.json')]", + "omsAutomation": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/omsAutomation.json')]", + "omsWorkspace": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/omsWorkspace.json')]", + "managedVMs": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/managedVms.json')]", + "asrRunbooks": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/asrRunbooks.json')]", + "dscConfigs": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/dscConfigs.json')]", + "mgmtDashboards": "[uri(deployment().properties.templateLink.uri, 'nestedtemplates/mgmtDashboards.json')]" + }, + "resourceNames": { + "omsWorkspace": "[concat(parameters('azMgmtPrefix'), uniquestring(resourceGroup().name, '-oms'))]", + "azureAutomation": "[concat(parameters('azMgmtPrefix'), uniquestring(resourceGroup().name, '-auto'))]", + "azureRecoveryServices": "[concat(parameters('azMgmtPrefix'), uniquestring(resourceGroup().name, '-recovery'))]" + }, + "azMgmtLocationMap": { + "eastasia": "southeastasia", + "southeastasia": "southeastasia", + "centralus": "westcentralus", + "eastus": "eastus", + "eastus2": "eastus", + "westus": "westcentralus", + "northcentralus": "westcentralus", + "southcentralus": "westcentralus", + "northeurope": "westeurope", + "westeurope": "westeurope", + "japanwest": "southeastasia", + "japaneast": "southeastasia", + "brazilsouth": "eastus", + "australiaeast": "australiasoutheast", + "australiasoutheast": "australiasoutheast", + "southindia": "southeastasia", + "centralindia": "southeastasia", + "westindia": "southeastasia", + "canadacentral": "eastus", + "canadaeast": "eastus", + "uksouth": "westeurope", + "ukwest": "westeurope", + "westcentralus": "westcentralus", + "westus2": "westcentralus", + "koreacentral": "southeastasia", + "koreasouth": "southeastasia", + "eastus2euap": "eastus" + }, + "azMgmtLocation": "(azMgmtLocationMap)[resourceGroup().location]", + "azAutoLocationMap": { + "eastasia": "southeastasia", + "southeastasia": "southeastasia", + "centralus": "westcentralus", + "eastus": "eastus2", + "eastus2": "eastus2", + "westus": "westcentralus", + "northcentralus": "westcentralus", + "southcentralus": "southcentralus", + "northeurope": "westeurope", + "westeurope": "westeurope", + "japanwest": "southeastasia", + "japaneast": "southeastasia", + "brazilsouth": "eastus2", + "australiaeast": "australiasoutheast", + "australiasoutheast": "australiasoutheast", + "southindia": "southeastasia", + "centralindia": "southeastasia", + "westindia": "southeastasia", + "canadacentral": "eastus2", + "canadaeast": "eastus2", + "uksouth": "westeurope", + "ukwest": "westeurope", + "westcentralus": "westcentralus", + "westus2": "westcentralus", + "koreacentral": "southeastasia", + "koreasouth": "southeastasia", + "eastus2euap": "eastus2" + }, + "azAutoLocation": "(azAutoLocationMap)[resourceGroup().location]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2017-05-10", + "name": "omsWorkspace", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsWorkspace", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsWorkspaceName": { + "value": "(resourceNames).omsWorkspace" + }, + "omsWorkspaceRegion": { + "value": "(azMgmtLocationMap)[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2017-05-10", + "name": "omsRecoveryServices", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsRecoveryServices", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsRecoveryVaultName": { + "value": "(resourceNames).azureRecoveryServices" + }, + "omsRecoveryVaultRegion": { + "value": "(azMgmtLocationMap)[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2017-05-10", + "name": "omsAutomation", + "dependsOn": [ + "Microsoft.Resources/deployments/omsRecoveryServices", + "Microsoft.Resources/deployments/omsWorkspace" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsAutomation", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsAutomationAccountName": { + "value": "(resourceNames).azureAutomation" + }, + "omsAutomationRegion": { + "value": "(azAutoLocationMap)[resourceGroup().location]" + }, + "omsRecoveryVaultName": { + "value": "(resourceNames).azureRecoveryServices" + }, + "omsWorkspaceName": { + "value": "(resourceNames).omsWorkspace" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2017-05-10", + "name": "asrRunbooks", + "dependsOn": [ + "omsAutomation" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).asrRunbooks", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "automationAccountName": { + "value": "(resourceNames).azureAutomation" + }, + "automationRegion": { + "value": "(azAutoLocationMap)[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2017-05-10", + "name": "dscConfigs", + "dependsOn": [ + "omsAutomation" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).dscConfigs", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsAutomationAccountName": { + "value": "(resourceNames).azureAutomation" + }, + "omsAutomationRegion": { + "value": "(azAutoLocationMap)[resourceGroup().location]" + }, + "omsWorkspaceName": { + "value": "(resourceNames).omsWorkspace" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2017-05-10", + "name": "deployVMs", + "resourceGroup": "", + "dependsOn": [ + "omsWorkspace", + "omsRecoveryServices", + "dscConfigs" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).managedVMs", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "instanceCount": { + "value": 1 + }, + "vmNamePrefix": { + "value": "GEN-UNIQUE10" + }, + "platform": { + "value": "Linux" + }, + "userName": { + "value": "userName" + }, + "pwdOrSsh": { + "value": "GEN-PASSWORD" + }, + "omsRecoveryVaultName": { + "value": "(resourceNames).azureRecoveryServices" + }, + "omsRecoveryVaultRegion": { + "value": "(azMgmtLocationMap)[resourceGroup().location]" + }, + "omsResourceGroup": { + "value": "[resourceGroup().name]" + }, + "omsWorkspaceName": { + "value": "(resourceNames).omsWorkspace" + }, + "automationAccountName": { + "value": "(resourceNames).azureAutomation" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2017-05-10", + "name": "mgmtDashboards", + "dependsOn": [ + "omsAutomation", + "omsWorkspace", + "omsRecoveryServices" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).mgmtDashboards", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsWorkspaceName": { + "value": "(resourceNames).omsWorkspace" + }, + "omsRecoveryVaultName": { + "value": "(resourceNames).azureRecoveryServices" + }, + "omsAutomationAccountName": { + "value": "(resourceNames).azureAutomation" + }, + "vmResourceGroup": { + "value": "" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT63 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT63 new file mode 100644 index 0000000..d6a59fb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT63 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/empty-resources.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884499, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/empty-resources.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT63", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT63", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "value": "westus" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT630 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT630 new file mode 100644 index 0000000..f840790 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT630 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-governance-operations-automation/nested/AutomationRunbooksOMSDashboard/deployRunbookOnSchedule.json" + ], + "timestamp": 1642962898338, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/nested/AutomationRunbooksOMSDashboard/deployRunbookOnSchedule.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT630", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts/schedules", + "microsoft.automation/automationaccounts/jobschedules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT630", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accountName": { + "type": "string", + "metadata": { + "description": "The name of the Automation account to use. If this account exists, check the SKU and tags to make sure they match the exisitng account." + } + }, + "scheduleName": { + "type": "string", + "metadata": { + "description": "The name of the schedule." + } + }, + "runbookName": { + "type": "string", + "metadata": { + "description": "The name of the runbook to associate the schedule with." + } + }, + "startTime": { + "type": "string", + "defaultValue": "12/30/2015 12:00:00", + "metadata": { + "description": "The time to start the schedule on. This is a datetime in Automation." + } + }, + "frequency": { + "type": "string", + "allowedValues": [ + "onetime", + "hour", + "day", + "week", + "month" + ], + "metadata": { + "description": "The frequency of the schedule." + } + }, + "interval": { + "type": "int", + "metadata": { + "description": "The interval for the schedule to repeat on. " + } + }, + "jobScheduleGuid": { + "type": "string", + "metadata": { + "description": "The GUID for the job schedule. This identifier links the schedule to the runbook." + } + }, + "quickstartTags": { + "type": "object" + } + }, + "resources": [ + { + "name": "accountName/scheduleName", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2021-04-01", + "properties": { + "description": "My schedule description", + "startTime": "12/30/2015 12:00:00", + "isEnabled": true, + "interval": "interval", + "frequency": "frequency" + } + }, + { + "name": "accountName/jobScheduleGuid", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/schedules/accountName/scheduleName" + ], + "tags": { + "quickstartName": "quickstartTags" + }, + "properties": { + "schedule": { + "name": "scheduleName" + }, + "runbook": { + "name": "[ parameters('runbookName')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT631 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT631 new file mode 100644 index 0000000..f812b33 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT631 @@ -0,0 +1,347 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-governance-operations-automation/nested/AutomationRunbooksOMSDashboard/OMSAutomationRunbooksDashboard.json" + ], + "timestamp": 1642962898360, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/nested/AutomationRunbooksOMSDashboard/OMSAutomationRunbooksDashboard.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT631", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT631", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsId": { + "type": "string", + "metadata": { + "description": "Provide the OMS Workspace ID." + } + }, + "omsKey": { + "type": "string", + "metadata": { + "description": "Provide the OMS Workspace KEY." + } + }, + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Provide the name of an existing Automation Account with SPN." + } + }, + "automationRegion": { + "type": "string", + "metadata": { + "description": "Location of the existing Automation Account." + } + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": { + "i-webrunbookDescription": "Authenticates to Azure and ingests all the WebApps metrics into an OMS wokrspace specified", + "i-sqlrunbookDescription": "Authenticates to Azure and ingests all the SQL Database metrics into an OMS wokrspace specified", + "s-runbookDescription": "Creates the schedules for the ingestion runbook to run every ten minutes on the hour", + "webIngestionRunbookName": "webAzureIngestion", + "sqlIngestionRunbookName": "sqlAzureIngestion", + "scheduleRunbookName": "scheduleIngestion", + "webIngestionScriptUri": "[uri(parameters('_artifactsLocation'), concat('nested/AutomationRunbooksOMSDashboard/scripts/webappazureIngestion.ps1', parameters('_artifactsLocationSasToken')))]", + "sqlIngestionScriptUri": "[uri(parameters('_artifactsLocation'), concat('nested/AutomationRunbooksOMSDashboard/scripts/sqlazureIngestion.ps1', parameters('_artifactsLocationSasToken')))]", + "scheduleScriptUri": "[uri(parameters('_artifactsLocation'), concat('nested/AutomationRunbooksOMSDashboard/scripts/scheduleIngestion.ps1', parameters('_artifactsLocationSasToken')))]", + "sku": "Basic", + "psModules": { + "AzureRmProfile": { + "Name": "AzureRm.Profile", + "URL": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.profile.1.0.9.nupkg" + }, + "AzureRmInsights": { + "Name": "AzureRm.Insights", + "URL": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.insights.1.0.9.nupkg" + }, + "AzureRmSql": { + "Name": "AzureRm.SQL", + "URL": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.sql.1.0.9.nupkg" + }, + "AzureRmResources": { + "Name": "AzureRm.Resources", + "URL": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.resources.2.0.0.nupkg" + }, + "AzureRmAutomation": { + "Name": "AzureRm.Automation", + "URL": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.automation.1.0.9.nupkg" + }, + "OMSIngestionAPI": { + "Name": "OMSIngestionAPI", + "URL": "https://devopsgallerystorage.blob.core.windows.net/packages/omsingestionapi.1.3.0.nupkg" + } + } + }, + "resources": [ + { + "name": "automationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2021-04-01", + "location": "automationRegion", + "tags": { + "quickstartName": "quickstartTags" + }, + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "webAzureIngestion", + "type": "runbooks", + "location": "automationRegion", + "apiVersion": "2020-01-13-preview", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "runbookType": "PowerShell", + "logProgress": false, + "logVerbose": false, + "description": "Authenticates to Azure and ingests all the WebApps metrics into an OMS wokrspace specified", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/AutomationRunbooksOMSDashboard/scripts/webappazureIngestion.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + }, + { + "name": "sqlAzureIngestion", + "type": "runbooks", + "location": "automationRegion", + "apiVersion": "2020-01-13-preview", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "runbookType": "PowerShell", + "logProgress": false, + "logVerbose": false, + "description": "Authenticates to Azure and ingests all the SQL Database metrics into an OMS wokrspace specified", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/AutomationRunbooksOMSDashboard/scripts/sqlazureIngestion.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + }, + { + "name": "OPSINSIGHTS_WS_ID", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "Encrypted value of the users OMS Workspace ID", + "isEncrypted": true, + "type": "string", + "value": "\"omsId\"" + } + }, + { + "name": "OPSINSIGHTS_WS_KEY", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "Encrypted value of the users OMS Workspace KEY", + "isEncrypted": true, + "value": "\"omsKey\"" + } + }, + { + "name": "SubscriptionID", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "The subscription ID for the resource", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "metricresourceGroupName", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "The name of the resource group where your Azure Resource is hosted.", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',resourceGroup().name,'\"')]" + } + }, + { + "name": "AzureAutomationAccount", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": false, + "type": "string", + "value": "\"automationAccountName\"" + } + }, + { + "name": "AzureAutomationResourceGroup", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "description": "The name of the resource group", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',resourceGroup().name,'\"')]" + } + }, + { + "name": "(psModules).AzureRmProfile.Name", + "type": "modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRmProfile.URL" + } + } + }, + { + "name": "(psModules).AzureRmResources.Name", + "type": "modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules/automationAccountName/(psModules).AzureRmProfile.Name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRMResources.URL" + } + } + }, + { + "name": "(psModules).AzureRmInsights.Name", + "type": "modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules/automationAccountName/(psModules).AzureRmProfile.Name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRMInsights.URL" + } + } + }, + { + "name": "(psModules).AzureRmSql.Name", + "type": "modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules/automationAccountName/(psModules).AzureRmProfile.Name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRmSql.URL" + } + } + }, + { + "name": "(psModules).AzureRmAutomation.Name", + "type": "modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules/automationAccountName/(psModules).AzureRmProfile.Name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).AzureRMAutomation.URL" + } + } + }, + { + "name": "(psModules).OMSIngestionAPI.Name", + "type": "modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName", + "Microsoft.Automation/automationAccounts/modules/automationAccountName/(psModules).AzureRmProfile.Name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).OMSIngestionAPI.URL" + } + } + }, + { + "name": "scheduleIngestion", + "type": "runbooks", + "location": "automationRegion", + "apiVersion": "2020-01-13-preview", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//automationAccountName" + ], + "properties": { + "runbookType": "PowerShell", + "logProgress": false, + "logVerbose": false, + "description": "Creates the schedules for the ingestion runbook to run every ten minutes on the hour", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/AutomationRunbooksOMSDashboard/scripts/scheduleIngestion.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT632 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT632 new file mode 100644 index 0000000..41c7b38 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT632 @@ -0,0 +1,80 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-governance-operations-automation/nested/OMSCommon/OMSCommon.json" + ], + "timestamp": 1642962898386, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/nested/OMSCommon/OMSCommon.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT632", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT632", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "workspaceName" + } + }, + "serviceTier": { + "type": "string", + "allowedValues": [ + "Free", + "Standard", + "Premium" + ], + "metadata": { + "description": "Service Tier: Free, Standard, or Premium" + } + }, + "omsRegion": { + "type": "string" + }, + "quickstartTags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "type": "Microsoft.OperationalInsights/workspaces", + "name": "workspaceName", + "location": "omsRegion", + "tags": { + "quickstartName": "quickstartTags" + }, + "properties": { + "sku": { + "Name": "serviceTier" + } + } + } + ], + "outputs": { + "workspaceIdOutput": { + "value": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')), '2020-10-01').customerId]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT633 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT633 new file mode 100644 index 0000000..9a63277 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT633 @@ -0,0 +1,618 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-governance-operations-automation/azuredeploy.json", + "/demos/azure-governance-operations-automation/azuredeploy.parameters.json" + ], + "timestamp": 1642962898395, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/azuredeploy.json", + "/demos/azure-governance-operations-automation/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT633", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.insights/metricalerts", + "microsoft.insights/actiongroups", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT633", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceSharedKey": { + "type": "string", + "metadata": { + "description": "Shared key of the OMS workspace" + }, + "value": "GEN-PASSWORD" + }, + "skuName": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ], + "metadata": { + "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Describes plan's instance count" + } + }, + "sqlAdministratorLogin": { + "type": "string", + "defaultValue": "cloudwiseuser", + "metadata": { + "description": "The account name to use for the database server administrator." + }, + "value": "cloudwiseuser" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password to use for the database server administrator." + }, + "value": "GEN-PASSWORD" + }, + "omsWorkspaceName": { + "type": "string", + "defaultValue": "CloudWiseOMSWorkspace", + "metadata": { + "description": "Provide the OMS Workspace Name." + }, + "value": "CloudWiseOMSWorkspace" + }, + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Provide the name of an existing Automation Account with SPN." + }, + "value": "cloudwise-automation" + }, + "automationRegion": { + "type": "string", + "metadata": { + "description": "Location of the existing Automation Account." + }, + "value": "East US 2" + }, + "omsRegion": { + "type": "string", + "metadata": { + "description": "Location of the OMS regions." + }, + "value": "East US" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "actionGroupName": { + "type": "string", + "metadata": { + "description": "The name of the action group." + }, + "value": "GEN-UNIQUE" + }, + "actionGroupShortName": { + "type": "string", + "metadata": { + "description": "The short name of the action group." + }, + "value": "acg" + }, + "emails": { + "type": "array", + "metadata": { + "description": "A list of strings representing the email addresses to send alerts to." + }, + "value": [ + "youremail@yourdomain.com" + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "hostingPlanName": "[concat('CloudWiseHostingplan-', uniqueString(resourceGroup().id))]", + "webSiteName": "[concat('CloudWise', uniqueString(resourceGroup().id))]", + "sqlserverName": "[concat('sqlcloudwise', uniqueString(resourceGroup().id))]", + "sqlDatabaseName": "cloudwisedb", + "sqlCollation": "SQL_Latin1_General_CP1_CI_AS", + "sqlMaxSizeBytes": "1073741824", + "sqlEdition": "Basic", + "sqlRequestedServiceObjectiveName": "Basic", + "insightsName": "[concat(variables('webSiteName'),'insights')]", + "omsWorkspaceName": "[concat(parameters('omsWorkspaceName'), uniqueString(resourceGroup().id, deployment().name))]", + "OMSWebAppsRunBookAndDashboardTemplateFolder": "nested/AutomationRunbooksOMSDashboard", + "OMSWebAppsRunBookAndDashboardTemplateFileName": "OMSAutomationRunbooksDashboard.json", + "OMSCommonTemplateFolder": "nested/OMSCommon", + "OMSCommonTemplateFileName": "OMSCommon.json", + "quickstartTags": { + "type": "object", + "name": "azure-governance-operations-automation" + } + }, + "resources": [ + { + "name": "[variables('sqlserverName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "SqlServer", + "quickstartName": "(quickstartTags).name" + }, + "apiVersion": "2021-02-01-preview", + "properties": { + "administratorLogin": "cloudwiseuser", + "administratorLoginPassword": "GEN-PASSWORD" + }, + "resources": [ + { + "name": "cloudwisedb", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers//sqlServerName" + ], + "properties": { + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + } + ] + }, + { + "apiVersion": "2020-12-01", + "name": "[variables('hostingPlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "HostingPlan", + "quickstartName": "(quickstartTags).name" + }, + "sku": { + "name": "F1", + "capacity": 1 + }, + "properties": { + "name": "[variables('hostingPlanName')]" + } + }, + { + "apiVersion": "2020-12-01", + "name": "[variables('webSiteName')]", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('hostingPlanName')]" + ], + "tags": { + "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName')))]": "empty", + "displayName": "Website", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "name": "[variables('webSiteName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "name": "web", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]", + "[resourceId('Microsoft.Web/Sites/extensions', variables('webSiteName'), 'MSDeploy')]" + ], + "tags": { + "displayName": "WebAppConfig", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "netFrameworkVersion": "v4.6" + } + }, + { + "apiVersion": "2020-12-01", + "type": "config", + "name": "connectionstrings", + "dependsOn": [ + "[variables('webSiteName')]", + "[resourceId('Microsoft.Web/Sites/extensions', variables('webSiteName'), 'MSDeploy')]" + ], + "properties": { + "DefaultConnection": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', variables('sqlserverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('sqlDatabaseName'), ';User Id=', parameters('sqlAdministratorLogin'), '@', variables('sqlserverName'), ';Password=', parameters('sqlAdministratorLoginPassword'), ';', 'MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]", + "type": "SQLServer" + }, + "SQLCONNSTR_DefaultConnection": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', variables('sqlserverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('sqlDatabaseName'), ';User Id=', parameters('sqlAdministratorLogin'), '@', variables('sqlserverName'), ';Password=', parameters('sqlAdministratorLoginPassword'), ';', 'MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]", + "type": "SQLServer" + } + } + }, + { + "name": "MSDeploy", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Web/sites//Websitename" + ], + "tags": { + "displayName": "WebAppMSDeploy", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "packageUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/package.zip', parameters('_artifactsLocationSasToken')))]" + } + } + ] + }, + { + "name": "[concat(variables('hostingPlanName'), '-', resourceGroup().name)]", + "type": "Microsoft.Insights/autoscalesettings", + "location": "[resourceGroup().location]", + "apiVersion": "2015-04-01", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "tags": { + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "Resource", + "displayName": "[concat(variables('insightsName'), ' AutoScale')]", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "name": "[concat(variables('hostingPlanName'), '-', resourceGroup().name)]", + "profiles": [ + { + "name": "Default", + "capacity": { + "minimum": "1", + "maximum": "2", + "default": "1" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 80 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT10M" + } + }, + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT1H", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1H" + } + } + ] + } + ], + "enabled": false, + "targetResourceUri": "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + } + }, + { + "name": "GEN-UNIQUE", + "type": "microsoft.insights/actionGroups", + "apiVersion": "2019-06-01", + "location": "global", + "properties": { + "groupShortName": "acg", + "enabled": true, + "emailReceivers": [ + { + "name": "test", + "emailAddress": null, + "useCommonAlertSchema": true + } + ] + } + }, + { + "name": "[concat('The average CPU is high across all the instances of ', variables('hostingPlanName'))]", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "tags": { + "[concat('hidden-link:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "Resource" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "targetResourceType": "Microsoft.Web/serverfarms", + "targetResourceRegion": "[resourceGroup().location]", + "evaluationFrequency": "PT1M", + "windowSize": "PT15M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'), '-cpupercentage')]", + "metricName": "CpuPercentage", + "operator": "GreaterThan", + "threshold": 90, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "[resourceId('Microsoft.Insights/components',variables('insightsName'))]", + "metricName": "[concat('The average CPU is high across all the instances of ', variables('hostingPlanName'))]" + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "name": "[concat('LongHttpQueue ', variables('hostingPlanName'))]", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "tags": { + "[concat('hidden-link:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "Resource" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "targetResourceType": "Microsoft.Web/serverfarms", + "targetResourceRegion": "[resourceGroup().location]", + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'), '-httpqueuelegth')]", + "metricName": "HttpQueueLength", + "operator": "GreaterThan", + "threshold": 100, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "[resourceId('Microsoft.Insights/components',variables('insightsName'))]", + "metricName": "[concat('The HTTP queue for the instances of ', variables('hostingPlanName'), ' has a large number of pending requests.')]" + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "name": "[concat('ServerErrors ', variables('webSiteName'))]", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" + ], + "tags": { + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webSiteName'))]": "Resource" + }, + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" + ], + "targetResourceType": "Microsoft.Web/sites", + "targetResourceRegion": "[resourceGroup().location]", + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "[concat('Microsoft.Web/sites', variables('webSiteName'), '-5XX-errors')]", + "metricName": "Http5xx", + "operator": "GreaterThan", + "threshold": 0, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + }, + { + "name": "[concat('Microsoft.Web/sites', variables('webSiteName'), '-403-errors')]", + "metricName": "Http403", + "operator": "GreaterThan", + "threshold": 0, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "[resourceId('Microsoft.Insights/components',variables('insightsName'))]", + "metricName": "[concat(variables('webSiteName'), 'server errors')]" + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "name": "[variables('insightsName')]", + "type": "Microsoft.Insights/components", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" + ], + "tags": { + "displayName": "[concat('Component', variables('insightsName'))]", + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webSiteName'))]": "Resource", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "Application_Type": "web" + } + }, + { + "name": "omsWorkspace", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('OMSCommonTemplateFolder'), '/', variables('OMSCommonTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "[variables('omsWorkspaceName')]" + }, + "omsRegion": { + "value": "East US" + }, + "serviceTier": { + "value": "Free" + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "azure-governance-operations-automation" + } + } + } + } + }, + { + "name": "OMSAutomationRunBooksAndDashboard", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/omsWorkspace" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('OMSWebAppsRunBookAndDashboardTemplateFolder'), '/', variables('OMSWebAppsRunBookAndDashboardTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsId": { + "value": "[reference('omsWorkspace').outputs.workspaceIdOutput.value]" + }, + "omsKey": { + "value": "GEN-PASSWORD" + }, + "automationAccountName": { + "value": "cloudwise-automation" + }, + "automationRegion": { + "value": "East US 2" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "azure-governance-operations-automation" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT634 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT634 new file mode 100644 index 0000000..914efac --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT634 @@ -0,0 +1,619 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-governance-operations-automation/azuredeploy.json", + "/demos/azure-governance-operations-automation/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962898405, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-governance-operations-automation/azuredeploy.json", + "/demos/azure-governance-operations-automation/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT634", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.insights/autoscalesettings", + "microsoft.insights/metricalerts", + "microsoft.insights/actiongroups", + "microsoft.insights/components", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT634", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceSharedKey": { + "type": "string", + "metadata": { + "description": "Shared key of the OMS workspace" + }, + "value": "GEN-PASSWORD" + }, + "skuName": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1", + "P2", + "P3", + "P4" + ], + "metadata": { + "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" + } + }, + "skuCapacity": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Describes plan's instance count" + } + }, + "sqlAdministratorLogin": { + "type": "string", + "defaultValue": "cloudwiseuser", + "metadata": { + "description": "The account name to use for the database server administrator." + }, + "value": "cloudwiseuser" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password to use for the database server administrator." + }, + "value": "GEN-PASSWORD" + }, + "omsWorkspaceName": { + "type": "string", + "defaultValue": "CloudWiseOMSWorkspace", + "metadata": { + "description": "Provide the OMS Workspace Name." + }, + "value": "CloudWiseOMSWorkspace" + }, + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Provide the name of an existing Automation Account with SPN." + }, + "value": "cloudwise-automation" + }, + "automationRegion": { + "type": "string", + "metadata": { + "description": "Location of the existing Automation Account." + }, + "value": "US Gov Virginia" + }, + "omsRegion": { + "type": "string", + "metadata": { + "description": "Location of the OMS regions." + }, + "value": "US Gov Virginia" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "actionGroupName": { + "type": "string", + "metadata": { + "description": "The name of the action group." + }, + "value": "GEN-UNIQUE" + }, + "actionGroupShortName": { + "type": "string", + "metadata": { + "description": "The short name of the action group." + }, + "value": "acg" + }, + "emails": { + "type": "array", + "metadata": { + "description": "A list of strings representing the email addresses to send alerts to." + }, + "value": [ + "youremail@yourdomain.com" + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "US Gov Virginia" + } + }, + "variables": { + "hostingPlanName": "[concat('CloudWiseHostingplan-', uniqueString(resourceGroup().id))]", + "webSiteName": "[concat('CloudWise', uniqueString(resourceGroup().id))]", + "sqlserverName": "[concat('sqlcloudwise', uniqueString(resourceGroup().id))]", + "sqlDatabaseName": "cloudwisedb", + "sqlCollation": "SQL_Latin1_General_CP1_CI_AS", + "sqlMaxSizeBytes": "1073741824", + "sqlEdition": "Basic", + "sqlRequestedServiceObjectiveName": "Basic", + "insightsName": "[concat(variables('webSiteName'),'insights')]", + "omsWorkspaceName": "[concat(parameters('omsWorkspaceName'), uniqueString(resourceGroup().id, deployment().name))]", + "OMSWebAppsRunBookAndDashboardTemplateFolder": "nested/AutomationRunbooksOMSDashboard", + "OMSWebAppsRunBookAndDashboardTemplateFileName": "OMSAutomationRunbooksDashboard.json", + "OMSCommonTemplateFolder": "nested/OMSCommon", + "OMSCommonTemplateFileName": "OMSCommon.json", + "quickstartTags": { + "type": "object", + "name": "azure-governance-operations-automation" + } + }, + "resources": [ + { + "name": "[variables('sqlserverName')]", + "type": "Microsoft.Sql/servers", + "location": "US Gov Virginia", + "tags": { + "displayName": "SqlServer", + "quickstartName": "(quickstartTags).name" + }, + "apiVersion": "2021-02-01-preview", + "properties": { + "administratorLogin": "cloudwiseuser", + "administratorLoginPassword": "GEN-PASSWORD" + }, + "resources": [ + { + "name": "cloudwisedb", + "type": "databases", + "location": "US Gov Virginia", + "apiVersion": "2021-02-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers//sqlServerName" + ], + "properties": { + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + } + ] + }, + { + "apiVersion": "2020-12-01", + "name": "[variables('hostingPlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "US Gov Virginia", + "tags": { + "displayName": "HostingPlan", + "quickstartName": "(quickstartTags).name" + }, + "sku": { + "name": "F1", + "capacity": 1 + }, + "properties": { + "name": "[variables('hostingPlanName')]" + } + }, + { + "apiVersion": "2020-12-01", + "name": "[variables('webSiteName')]", + "type": "Microsoft.Web/sites", + "location": "US Gov Virginia", + "dependsOn": [ + "[variables('hostingPlanName')]" + ], + "tags": { + "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName')))]": "empty", + "displayName": "Website", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "name": "[variables('webSiteName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "name": "web", + "type": "config", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]", + "[resourceId('Microsoft.Web/Sites/extensions', variables('webSiteName'), 'MSDeploy')]" + ], + "tags": { + "displayName": "WebAppConfig", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "netFrameworkVersion": "v4.6" + } + }, + { + "apiVersion": "2020-12-01", + "type": "config", + "name": "connectionstrings", + "dependsOn": [ + "[variables('webSiteName')]", + "[resourceId('Microsoft.Web/Sites/extensions', variables('webSiteName'), 'MSDeploy')]" + ], + "properties": { + "DefaultConnection": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', variables('sqlserverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('sqlDatabaseName'), ';User Id=', parameters('sqlAdministratorLogin'), '@', variables('sqlserverName'), ';Password=', parameters('sqlAdministratorLoginPassword'), ';', 'MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]", + "type": "SQLServer" + }, + "SQLCONNSTR_DefaultConnection": { + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', variables('sqlserverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('sqlDatabaseName'), ';User Id=', parameters('sqlAdministratorLogin'), '@', variables('sqlserverName'), ';Password=', parameters('sqlAdministratorLoginPassword'), ';', 'MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]", + "type": "SQLServer" + } + } + }, + { + "name": "MSDeploy", + "type": "extensions", + "location": "US Gov Virginia", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Web/sites//Websitename" + ], + "tags": { + "displayName": "WebAppMSDeploy", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "packageUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/package.zip', parameters('_artifactsLocationSasToken')))]" + } + } + ] + }, + { + "name": "[concat(variables('hostingPlanName'), '-', resourceGroup().name)]", + "type": "Microsoft.Insights/autoscalesettings", + "location": "US Gov Virginia", + "apiVersion": "2015-04-01", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "tags": { + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "Resource", + "displayName": "[concat(variables('insightsName'), ' AutoScale')]", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "name": "[concat(variables('hostingPlanName'), '-', resourceGroup().name)]", + "profiles": [ + { + "name": "Default", + "capacity": { + "minimum": "1", + "maximum": "2", + "default": "1" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 80 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT10M" + } + }, + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT1H", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1H" + } + } + ] + } + ], + "enabled": false, + "targetResourceUri": "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + } + }, + { + "name": "GEN-UNIQUE", + "type": "microsoft.insights/actionGroups", + "apiVersion": "2019-06-01", + "location": "global", + "properties": { + "groupShortName": "acg", + "enabled": true, + "emailReceivers": [ + { + "name": "test", + "emailAddress": null, + "useCommonAlertSchema": true + } + ] + } + }, + { + "name": "[concat('The average CPU is high across all the instances of ', variables('hostingPlanName'))]", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "tags": { + "[concat('hidden-link:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "Resource" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "targetResourceType": "Microsoft.Web/serverfarms", + "targetResourceRegion": "US Gov Virginia", + "evaluationFrequency": "PT1M", + "windowSize": "PT15M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'), '-cpupercentage')]", + "metricName": "CpuPercentage", + "operator": "GreaterThan", + "threshold": 90, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "[resourceId('Microsoft.Insights/components',variables('insightsName'))]", + "metricName": "[concat('The average CPU is high across all the instances of ', variables('hostingPlanName'))]" + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "name": "[concat('LongHttpQueue ', variables('hostingPlanName'))]", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "tags": { + "[concat('hidden-link:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "Resource" + }, + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('hostingPlanName'))]" + ], + "targetResourceType": "Microsoft.Web/serverfarms", + "targetResourceRegion": "US Gov Virginia", + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "[concat('Microsoft.Web/serverfarms/', variables('hostingPlanName'), '-httpqueuelegth')]", + "metricName": "HttpQueueLength", + "operator": "GreaterThan", + "threshold": 100, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "[resourceId('Microsoft.Insights/components',variables('insightsName'))]", + "metricName": "[concat('The HTTP queue for the instances of ', variables('hostingPlanName'), ' has a large number of pending requests.')]" + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "name": "[concat('ServerErrors ', variables('webSiteName'))]", + "type": "Microsoft.Insights/metricAlerts", + "apiVersion": "2018-03-01", + "location": "global", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" + ], + "tags": { + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webSiteName'))]": "Resource" + }, + "properties": { + "severity": 1, + "enabled": true, + "scopes": [ + "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" + ], + "targetResourceType": "Microsoft.Web/sites", + "targetResourceRegion": "US Gov Virginia", + "evaluationFrequency": "PT1M", + "windowSize": "PT5M", + "criteria": { + "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", + "allOf": [ + { + "name": "[concat('Microsoft.Web/sites', variables('webSiteName'), '-5XX-errors')]", + "metricName": "Http5xx", + "operator": "GreaterThan", + "threshold": 0, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + }, + { + "name": "[concat('Microsoft.Web/sites', variables('webSiteName'), '-403-errors')]", + "metricName": "Http403", + "operator": "GreaterThan", + "threshold": 0, + "timeAggregation": "Average", + "criterionType": "StaticThresholdCriterion" + } + ], + "componentId": "[resourceId('Microsoft.Insights/components',variables('insightsName'))]", + "metricName": "[concat(variables('webSiteName'), 'server errors')]" + }, + "actions": [ + { + "actionGroupId": "microsoft.insights/actionGroups/GEN-UNIQUE" + } + ] + } + }, + { + "name": "[variables('insightsName')]", + "type": "Microsoft.Insights/components", + "location": "US Gov Virginia", + "apiVersion": "2020-02-02", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" + ], + "tags": { + "displayName": "[concat('Component', variables('insightsName'))]", + "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webSiteName'))]": "Resource", + "quickstartName": "(quickstartTags).name" + }, + "properties": { + "Application_Type": "web" + } + }, + { + "name": "omsWorkspace", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('OMSCommonTemplateFolder'), '/', variables('OMSCommonTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "[variables('omsWorkspaceName')]" + }, + "omsRegion": { + "value": "US Gov Virginia" + }, + "serviceTier": { + "value": "Free" + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "azure-governance-operations-automation" + } + } + } + } + }, + { + "name": "OMSAutomationRunBooksAndDashboard", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/omsWorkspace" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('OMSWebAppsRunBookAndDashboardTemplateFolder'), '/', variables('OMSWebAppsRunBookAndDashboardTemplateFileName'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsId": { + "value": "[reference('omsWorkspace').outputs.workspaceIdOutput.value]" + }, + "omsKey": { + "value": "GEN-PASSWORD" + }, + "automationAccountName": { + "value": "cloudwise-automation" + }, + "automationRegion": { + "value": "US Gov Virginia" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "azure-governance-operations-automation" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT635 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT635 new file mode 100644 index 0000000..55670be --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT635 @@ -0,0 +1,908 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-resource-optimization-toolkit/azuredeploy.json", + "/demos/azure-resource-optimization-toolkit/azuredeploy.parameters.json" + ], + "timestamp": 1642962898422, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-resource-optimization-toolkit/azuredeploy.json", + "/demos/azure-resource-optimization-toolkit/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT635", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts/schedules", + "microsoft.automation/automationaccounts/jobschedules", + "microsoft.automation/automationaccounts/credentials", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules", + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/variables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT635", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newGuid": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "Enter new GUID, you can generate one from Powershell using new-guid or get one from this site: GUID Generator" + } + }, + "automationAccountName": { + "type": "string", + "defaultValue": "[concat('aa-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Assign a name for the Automation account of your choosing. Must be a unique name as Azure Automation accounts are FQDNs" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the region for your Automation account" + }, + "value": "eastus2" + }, + "azureAdmin": { + "type": "string", + "metadata": { + "description": "Enter your service admin user, ex: serviceaccount@microsoft.com. Must be owner on the subscription you're deploying to during template deployment." + }, + "value": "GEN-UNIQUE" + }, + "azureAdminPwd": { + "type": "securestring", + "metadata": { + "description": "Enter the password for the service admin user. The pwd is encrypted during runtime and in the Automation assets" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "AzureRM.Profile": { + "name": "AzureRm.Profile", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.profile.2.8.0.nupkg" + }, + "psModules": [ + { + "name": "AzureRM.Compute", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.compute.2.9.0.nupkg" + }, + { + "name": "AzureRm.Resources", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.resources.3.8.0.nupkg" + }, + { + "name": "AzureRm.KeyVault", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.keyvault.2.8.0.nupkg" + }, + { + "name": "AzureRm.Automation", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.automation.2.8.0.nupkg" + }, + { + "name": "AzureRm.OperationalInsights", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.operationalinsights.2.8.0.nupkg" + }, + { + "name": "AzureRm.SiteRecovery", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.siterecovery.3.7.0.nupkg" + }, + { + "name": "AzureRm.RecoveryServices", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.recoveryservices.2.8.0.nupkg" + }, + { + "name": "AzureRm.Backup", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.backup.2.8.0.nupkg" + }, + { + "name": "AzureRm.Insights", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.insights.2.8.0.nupkg" + } + ], + "runbooks": [ + { + "name": "Bootstrap_Main", + "version": "1.0.0.0", + "description": "Configurates Azure Automation account for anything we can't handle in ARM", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Bootstrap_Main.ps1', parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "SequencedSnooze_Parent", + "version": "1.0.0.0", + "description": "Sequenced Snooze(stop) or UnSnooze(start)", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/SequencedSnooze/SequencedSnooze_Parent.ps1', parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "DisableAllOptimizations", + "version": "1.0.0.0", + "description": "Abort the ARO Toolkit", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/DisableAllOptimizations.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AROToolkit_AutoUpdate", + "version": "1.0.0.0", + "description": "Autoupdate the ARO Toolkit", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/AROToolkit_AutoUpdate.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "ScheduledSnooze_Parent", + "version": "1.0.0.0", + "description": "Parallel execution of scheduled snooze actions", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/ScheduleSnooze/ScheduledSnooze_Parent.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "ScheduledSnooze_Child", + "version": "1.0.0.0", + "description": "Placeholder", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/ScheduleSnooze/ScheduledSnooze_Child.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AutoSnooze_StopVM_Child", + "version": "1.0.0.0", + "description": "Runbook to stop indivual ARM VM, called by CreateAlertsForAzureRmVM", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Snooze/AutoSnooze_StopVM_Child.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AutoSnooze_CreateAlert_Parent", + "version": "1.0.0.0", + "description": "Runbook to create alerts for AutoSnooze", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Snooze/AutoSnooze_CreateAlert_Parent.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AutoSnooze_CreateAlert_Child", + "version": "1.0.0.0", + "description": "Runbook to create or disable alert for AutoSnooze", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Snooze/AutoSnooze_CreateAlert_Child.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AutoSnooze_Disable", + "version": "1.0.0.0", + "description": "Disable the AutoSnooze", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Snooze/AutoSnooze_Disable.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "DeleteResourceGroups_Parent", + "version": "1.0.0.0", + "description": "This runbook will delete resource groups", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/DeleteRG/DeleteResourceGroups_Parent.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "DeleteResourceGroup_Child", + "version": "1.0.0.0", + "description": "This runbook will delete resource groups", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/DeleteRG/DeleteResourceGroup_Child.ps1',parameters('_artifactsLocationSasToken')))]" + } + ], + "internalAzureSubscriptionId": { + "name": "Internal_AzureSubscriptionId", + "description": "Azure Subscription Id", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + }, + "automationVariables": [ + { + "name": "Internal_AROAutomationAccountName", + "description": "OMS Azure Automation Account Name", + "value": "\"[concat('aa-', uniqueString(resourceGroup().id))]\"" + }, + { + "name": "Internal_AROResourceGroupName", + "description": "ARO Azure Automation Account resource group name", + "value": "[concat('\"',resourceGroup().name,'\"')]" + }, + { + "name": "External_ExcludeVMNames", + "description": "Excluded VMs as comma separated list: vm1,vm2,vm3", + "value": "\"\"" + }, + { + "name": "External_ResourceGroupNames", + "description": "Resource groups (as comma seperated) targeted for Snooze actions: rg1,rg2,rg3", + "value": "\"\"" + }, + { + "name": "External_AutoSnooze_Condition", + "description": "This is the conditional operator required for configuring the condition before triggering an alert. Possible values are [GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual]", + "value": "\"LessThan\"" + }, + { + "name": "External_AutoSnooze_Description", + "description": "Alert to stop the VM if the CPU % exceed the threshold", + "value": "\"Alert to stop the VM if the CPU % exceed the threshold\"" + }, + { + "name": "External_AutoSnooze_MetricName", + "description": "Name of the metric the Azure Alert rule is to be configured for", + "value": "\"Percentage CPU\"" + }, + { + "name": "External_AutoSnooze_Threshold", + "description": "Threshold for the Azure Alert rule. Possible percentage values ranging from 1 to 100", + "value": "\"5\"" + }, + { + "name": "External_AutoSnooze_TimeAggregationOperator", + "description": "The time aggregation operator which will be applied to the selected window size to evaluate the condition. Possible values are [Average, Minimum, Maximum, Total, Last]", + "value": "\"Average\"" + }, + { + "name": "External_AutoSnooze_TimeWindow", + "description": "The window size over which Azure will analyze selected metric for triggering an alert. This parameter accepts input in timespan format. Possible values are from 5 mins to 6 hours.", + "value": "\"06:00:00\"" + } + ], + "azureCredentials": "AzureCredentials", + "AROToolkitVersion": "1.0.0.0" + }, + "resources": [ + { + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2021-04-01", + "location": "eastus2", + "name": "[concat('aa-', uniqueString(resourceGroup().id))]", + "tags": { + "AROToolkitVersion": "1.0.0.0" + }, + "comments": "Automation account", + "properties": { + "sku": { + "name": "Basic" + } + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/(internalAzureSubscriptionId).name", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(internalAzureSubscriptionId).description", + "isEncrypted": true, + "type": "string", + "value": "(internalAzureSubscriptionId).value" + } + }, + { + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/AzureCredentials", + "type": "Microsoft.Automation/automationAccounts/credentials", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "Azure Subscription Credentials", + "password": "GEN-PASSWORD", + "userName": "GEN-UNIQUE" + } + }, + { + "comments": "provision the AzureRM.Profile module first since others are depenedent on it", + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/(AzureRM.Profile).name", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "contentLink": { + "uri": "(AzureRM.Profile).url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/startBootstrap", + "type": "Microsoft.Automation/automationAccounts/schedules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(runbooks)[0].name" + ], + "properties": { + "description": "Starts the bootstrap runbooks", + "expiryTime": "9999-12-31T17:59:00-06:00", + "isEnabled": true, + "frequency": "OneTime" + } + }, + { + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/[newGuid()]", + "type": "Microsoft.Automation/automationAccounts/jobSchedules", + "apiVersion": "2021-04-01", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "startBootstrap", + "modulesLoop" + ], + "properties": { + "schedule": { + "name": "startBootstrap" + }, + "runbook": { + "name": "Bootstrap_Main" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT636 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT636 new file mode 100644 index 0000000..7fc5ada --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT636 @@ -0,0 +1,908 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-resource-optimization-toolkit/azuredeploy.json", + "/demos/azure-resource-optimization-toolkit/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962898436, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-resource-optimization-toolkit/azuredeploy.json", + "/demos/azure-resource-optimization-toolkit/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT636", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts/schedules", + "microsoft.automation/automationaccounts/jobschedules", + "microsoft.automation/automationaccounts/credentials", + "microsoft.automation/automationaccounts/runbooks", + "microsoft.automation/automationaccounts/modules", + "microsoft.automation/automationaccounts", + "microsoft.automation/automationaccounts/variables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT636", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newGuid": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "Enter new GUID, you can generate one from Powershell using new-guid or get one from this site: GUID Generator" + } + }, + "automationAccountName": { + "type": "string", + "defaultValue": "[concat('aa-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Assign a name for the Automation account of your choosing. Must be a unique name as Azure Automation accounts are FQDNs" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the region for your Automation account" + }, + "value": "usgovtexas" + }, + "azureAdmin": { + "type": "string", + "metadata": { + "description": "Enter your service admin user, ex: serviceaccount@microsoft.com. Must be owner on the subscription you're deploying to during template deployment." + }, + "value": "GEN-UNIQUE" + }, + "azureAdminPwd": { + "type": "securestring", + "metadata": { + "description": "Enter the password for the service admin user. The pwd is encrypted during runtime and in the Automation assets" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "AzureRM.Profile": { + "name": "AzureRm.Profile", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.profile.2.8.0.nupkg" + }, + "psModules": [ + { + "name": "AzureRM.Compute", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.compute.2.9.0.nupkg" + }, + { + "name": "AzureRm.Resources", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.resources.3.8.0.nupkg" + }, + { + "name": "AzureRm.KeyVault", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.keyvault.2.8.0.nupkg" + }, + { + "name": "AzureRm.Automation", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.automation.2.8.0.nupkg" + }, + { + "name": "AzureRm.OperationalInsights", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.operationalinsights.2.8.0.nupkg" + }, + { + "name": "AzureRm.SiteRecovery", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.siterecovery.3.7.0.nupkg" + }, + { + "name": "AzureRm.RecoveryServices", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.recoveryservices.2.8.0.nupkg" + }, + { + "name": "AzureRm.Backup", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.backup.2.8.0.nupkg" + }, + { + "name": "AzureRm.Insights", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.insights.2.8.0.nupkg" + } + ], + "runbooks": [ + { + "name": "Bootstrap_Main", + "version": "1.0.0.0", + "description": "Configurates Azure Automation account for anything we can't handle in ARM", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Bootstrap_Main.ps1', parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "SequencedSnooze_Parent", + "version": "1.0.0.0", + "description": "Sequenced Snooze(stop) or UnSnooze(start)", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/SequencedSnooze/SequencedSnooze_Parent.ps1', parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "DisableAllOptimizations", + "version": "1.0.0.0", + "description": "Abort the ARO Toolkit", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/DisableAllOptimizations.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AROToolkit_AutoUpdate", + "version": "1.0.0.0", + "description": "Autoupdate the ARO Toolkit", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/AROToolkit_AutoUpdate.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "ScheduledSnooze_Parent", + "version": "1.0.0.0", + "description": "Parallel execution of scheduled snooze actions", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/ScheduleSnooze/ScheduledSnooze_Parent.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "ScheduledSnooze_Child", + "version": "1.0.0.0", + "description": "Placeholder", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/ScheduleSnooze/ScheduledSnooze_Child.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AutoSnooze_StopVM_Child", + "version": "1.0.0.0", + "description": "Runbook to stop indivual ARM VM, called by CreateAlertsForAzureRmVM", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Snooze/AutoSnooze_StopVM_Child.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AutoSnooze_CreateAlert_Parent", + "version": "1.0.0.0", + "description": "Runbook to create alerts for AutoSnooze", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Snooze/AutoSnooze_CreateAlert_Parent.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AutoSnooze_CreateAlert_Child", + "version": "1.0.0.0", + "description": "Runbook to create or disable alert for AutoSnooze", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Snooze/AutoSnooze_CreateAlert_Child.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "AutoSnooze_Disable", + "version": "1.0.0.0", + "description": "Disable the AutoSnooze", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Snooze/AutoSnooze_Disable.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "DeleteResourceGroups_Parent", + "version": "1.0.0.0", + "description": "This runbook will delete resource groups", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/DeleteRG/DeleteResourceGroups_Parent.ps1',parameters('_artifactsLocationSasToken')))]" + }, + { + "name": "DeleteResourceGroup_Child", + "version": "1.0.0.0", + "description": "This runbook will delete resource groups", + "type": "PowerShell", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/DeleteRG/DeleteResourceGroup_Child.ps1',parameters('_artifactsLocationSasToken')))]" + } + ], + "internalAzureSubscriptionId": { + "name": "Internal_AzureSubscriptionId", + "description": "Azure Subscription Id", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + }, + "automationVariables": [ + { + "name": "Internal_AROAutomationAccountName", + "description": "OMS Azure Automation Account Name", + "value": "\"[concat('aa-', uniqueString(resourceGroup().id))]\"" + }, + { + "name": "Internal_AROResourceGroupName", + "description": "ARO Azure Automation Account resource group name", + "value": "[concat('\"',resourceGroup().name,'\"')]" + }, + { + "name": "External_ExcludeVMNames", + "description": "Excluded VMs as comma separated list: vm1,vm2,vm3", + "value": "\"\"" + }, + { + "name": "External_ResourceGroupNames", + "description": "Resource groups (as comma seperated) targeted for Snooze actions: rg1,rg2,rg3", + "value": "\"\"" + }, + { + "name": "External_AutoSnooze_Condition", + "description": "This is the conditional operator required for configuring the condition before triggering an alert. Possible values are [GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual]", + "value": "\"LessThan\"" + }, + { + "name": "External_AutoSnooze_Description", + "description": "Alert to stop the VM if the CPU % exceed the threshold", + "value": "\"Alert to stop the VM if the CPU % exceed the threshold\"" + }, + { + "name": "External_AutoSnooze_MetricName", + "description": "Name of the metric the Azure Alert rule is to be configured for", + "value": "\"Percentage CPU\"" + }, + { + "name": "External_AutoSnooze_Threshold", + "description": "Threshold for the Azure Alert rule. Possible percentage values ranging from 1 to 100", + "value": "\"5\"" + }, + { + "name": "External_AutoSnooze_TimeAggregationOperator", + "description": "The time aggregation operator which will be applied to the selected window size to evaluate the condition. Possible values are [Average, Minimum, Maximum, Total, Last]", + "value": "\"Average\"" + }, + { + "name": "External_AutoSnooze_TimeWindow", + "description": "The window size over which Azure will analyze selected metric for triggering an alert. This parameter accepts input in timespan format. Possible values are from 5 mins to 6 hours.", + "value": "\"06:00:00\"" + } + ], + "azureCredentials": "AzureCredentials", + "AROToolkitVersion": "1.0.0.0" + }, + "resources": [ + { + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2021-04-01", + "location": "usgovtexas", + "name": "[concat('aa-', uniqueString(resourceGroup().id))]", + "tags": { + "AROToolkitVersion": "1.0.0.0" + }, + "comments": "Automation account", + "properties": { + "sku": { + "name": "Basic" + } + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('automationAccountName'), '/', variables('automationVariables')[copyIndex()].name)]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(automationVariables)[copyIndex()].description", + "value": "(automationVariables)[copyIndex()].value" + } + }, + { + "type": "Microsoft.Automation/automationAccounts/variables", + "apiVersion": "2021-04-01", + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/(internalAzureSubscriptionId).name", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "(internalAzureSubscriptionId).description", + "isEncrypted": true, + "type": "string", + "value": "(internalAzureSubscriptionId).value" + } + }, + { + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/AzureCredentials", + "type": "Microsoft.Automation/automationAccounts/credentials", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "description": "Azure Subscription Credentials", + "password": "GEN-PASSWORD", + "userName": "GEN-UNIQUE" + } + }, + { + "comments": "provision the AzureRM.Profile module first since others are depenedent on it", + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/(AzureRM.Profile).name", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "contentLink": { + "uri": "(AzureRM.Profile).url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('psModules')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/modules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name" + ], + "properties": { + "contentLink": { + "uri": "(psModules)[copyIndex()].url" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat(parameters('automationAccountName'), '/', variables('runbooks')[copyIndex()].name)]", + "type": "Microsoft.Automation/automationAccounts/runbooks", + "apiVersion": "2020-01-13-preview", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(AzureRM.Profile).name", + "modulesLoop" + ], + "tags": { + "version": "(runbooks)[copyIndex()].version" + }, + "properties": { + "runbookType": "(runbooks)[copyIndex()].type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks)[copyIndex()].description", + "publishContentLink": { + "uri": "(runbooks)[copyIndex()].scriptUri", + "version": "(runbooks)[copyIndex()].version" + } + } + }, + { + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/startBootstrap", + "type": "Microsoft.Automation/automationAccounts/schedules", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "(runbooks)[0].name" + ], + "properties": { + "description": "Starts the bootstrap runbooks", + "expiryTime": "9999-12-31T17:59:00-06:00", + "isEnabled": true, + "frequency": "OneTime" + } + }, + { + "name": "[concat('aa-', uniqueString(resourceGroup().id))]/[newGuid()]", + "type": "Microsoft.Automation/automationAccounts/jobSchedules", + "apiVersion": "2021-04-01", + "location": "usgovtexas", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/[concat('aa-', uniqueString(resourceGroup().id))]", + "startBootstrap", + "modulesLoop" + ], + "properties": { + "schedule": { + "name": "startBootstrap" + }, + "runbook": { + "name": "Bootstrap_Main" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT637 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT637 new file mode 100644 index 0000000..b456996 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT637 @@ -0,0 +1,239 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-sql-managed-instance/nestedtemplates/vnet.json" + ], + "timestamp": 1642962898447, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-sql-managed-instance/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT637", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT637", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources" + } + }, + "vnetResourceName": { + "type": "string", + "metadata": { + "description": "The name of the vnet" + } + }, + "vnetAddressRange": { + "type": "string", + "metadata": { + "description": "Address range of the virtual network" + } + }, + "managedInstanceSubnetName": { + "type": "string", + "metadata": { + "description": "Managed Instance Subnet name" + } + }, + "managedInstanceSubnetAddressRange": { + "type": "string", + "metadata": { + "description": "Managed Instance Subnet range" + } + }, + "managedInstanceNSGName": { + "type": "string", + "metadata": { + "description": "Name of the Managed Instance NSG" + } + }, + "managedInstanceRouteTableName": { + "type": "string", + "metadata": { + "description": "Name of the Managed Instance Route Table" + } + }, + "miManagementIps": { + "type": "array", + "metadata": { + "description": "List of MI management IP ranges" + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-11-01", + "location": "location", + "name": "managedInstanceNsgName", + "properties": { + "securityRules": [ + { + "name": "allow-management-outbound", + "properties": { + "description": "Allow outbound management TCP traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 110, + "direction": "Outbound", + "destinationPortRanges": [ + "443", + "12000" + ] + } + }, + { + "name": "inbound-management", + "properties": { + "description": "Management ports for the Managed Instance", + "protocol": "TCP", + "sourcePortRange": "*", + "sourceAddressPrefix": "SqlManagement", + "destinationAddressPrefix": "managedInstanceSubnetAddressRange", + "access": "Allow", + "priority": 100, + "direction": "Inbound", + "destinationPortRanges": [ + "9000", + "9003", + "1438", + "1440", + "1452" + ] + } + }, + { + "name": "outbound-mi-subnet", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "managedInstanceSubnetAddressRange", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "inbound-mi-subnet", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "managedInstanceSubnetAddressRange", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "inbound-health-probe", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 140, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2019-11-01", + "name": "managedInstanceRouteTableName", + "location": "location", + "tags": { + "displayName": "Deploy Azure SQL Managed Instance UDR" + }, + "properties": { + "copy": [ + { + "name": "routes", + "count": 29, + "input": { + "name": "[if(equals(copyIndex('routes'),0),'subnet_to_vnetlocal',concat(replace(parameters('miManagementIps')[copyIndex('routes')],'/','-'),'-next-hop-internet-route'))]", + "properties": { + "addressPrefix": "[if(equals(copyIndex('routes'),0),parameters('managedInstanceSubnetAddressRange'),parameters('miManagementIps')[copyIndex('routes')])]", + "nextHopType": "[if(equals(copyIndex('routes'),0),'VnetLocal','Internet')]" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-11-01", + "name": "vnetResourceName", + "location": "location", + "tags": { + "displayName": "Deploy VNet" + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/managedInstanceNSGName", + "Microsoft.Network/routeTables/managedInstanceRouteTableName" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "vnetAddressRange" + ] + }, + "subnets": [ + { + "name": "managedInstanceSubnetName", + "properties": { + "addressPrefix": "managedInstanceSubnetAddressRange", + "routeTable": { + "id": "Microsoft.Network/routeTables/managedInstanceRouteTableName" + }, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/managedInstanceNSGName" + }, + "delegations": [ + { + "properties": { + "serviceName": "Microsoft.Sql/managedInstances" + }, + "name": "managedInstanceSubnetName-delegation" + } + ] + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT638 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT638 new file mode 100644 index 0000000..0aabbd7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT638 @@ -0,0 +1,788 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/azure-sql-managed-instance/azuredeploy.json", + "/demos/azure-sql-managed-instance/azuredeploy.parameters.json" + ], + "timestamp": 1642962898455, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/azure-sql-managed-instance/azuredeploy.json", + "/demos/azure-sql-managed-instance/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT638", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.sql/managedinstances" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT638", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "vnetResourceName": { + "type": "string", + "defaultValue": "virtualNetwork", + "metadata": { + "description": "The name of the vnet" + } + }, + "managedInstanceSubnetName": { + "type": "string", + "defaultValue": "mi-subnet", + "metadata": { + "description": "Managed Instance Subnet name" + } + }, + "sqlManagedInstanceName": { + "type": "string", + "defaultValue": "[concat('managedInstance-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the Azure SQL Managed Instance - must be globally unique, contain only lowercase letters, numbers and '-'" + } + }, + "sqlManagedInstanceAdminLogin": { + "type": "string", + "metadata": { + "description": "Admin user for Managed Instance" + }, + "value": "GEN-UNIQUE" + }, + "sqlManagedInstancePassword": { + "type": "securestring", + "metadata": { + "description": "Admin user password - must be 16-128 characters, must contain 3 of uppercase, lowercase, numbers and non-alphanumeric characters, and cannot contain all or part of the login name" + }, + "value": "GEN-PASSWORD" + }, + "sqlManagedInstance-storageSizeInGB": { + "type": "string", + "defaultValue": "256", + "metadata": { + "description": "Amount of Storage in GB for this instance" + } + }, + "sqlManagedInstance-vCores": { + "type": "string", + "defaultValue": "8", + "metadata": { + "description": "Number of vCores for this instance" + } + }, + "sqlManagedInstance-licenseType": { + "type": "string", + "defaultValue": "BasePrice", + "metadata": { + "description": "Type of license: BasePrice (BYOL) or LicenceIncluded" + }, + "allowedValues": [ + "BasePrice", + "LicenseIncluded" + ] + }, + "sqlManagedInstance-skuName": { + "type": "string", + "defaultValue": "GP_Gen5", + "metadata": { + "description": "SKU NAME (GP_Gen4, GP_Gen5, BC_GEN5)" + }, + "allowedValues": [ + "GP_Gen4", + "GP_Gen5", + "BC_Gen4", + "BC_Gen5" + ] + }, + "sqlManagedInstance-skuEdition": { + "type": "string", + "defaultValue": "GeneralPurpose", + "metadata": { + "description": "SKU Edition (GeneralPurpose, BusinessCritical) " + }, + "allowedValues": [ + "GeneralPurpose", + "BusinessCritical" + ] + }, + "sqlManagedInstance-hardwareFamily": { + "type": "string", + "defaultValue": "Gen5", + "metadata": { + "description": "Hardware family (Gen4, Gen5)" + }, + "allowedValues": [ + "Gen4", + "Gen5" + ] + }, + "sqlManagedInstance-collation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "SQL Collation" + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Tags for the Managed Instance SQL resource." + }, + "value": { + "tag1": "value1", + "tag2": "value2" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + }, + "defaultValue": "" + }, + "vnetAddressRange": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address range for the virtual network in CIDR notation" + } + }, + "managedInstanceNSGName": { + "type": "string", + "defaultValue": "mi-NSG", + "metadata": { + "description": "Name of the Managed Instance NSG" + } + }, + "managedInstanceRouteTableName": { + "type": "string", + "defaultValue": "mi-RouteTable", + "metadata": { + "description": "Name of the Managed Instance Route Table" + } + }, + "managedInstanceSubnetAddressRange": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Managed Instance Subnet range" + } + }, + "miManagementIps": { + "type": "array", + "defaultValue": [ + "vnetLocalRoute", + "13.64.0.0/11", + "13.104.0.0/14", + "20.33.0.0/16", + "20.34.0.0/15", + "20.36.0.0/14", + "20.40.0.0/13", + "20.48.0.0/12", + "20.64.0.0/10", + "20.128.0.0/16", + "20.135.0.0/16", + "20.136.0.0/16", + "20.140.0.0/15", + "20.143.0.0/16", + "20.144.0.0/14", + "20.150.0.0/15", + "20.160.0.0/12", + "20.176.0.0/14", + "20.180.0.0/14", + "20.184.0.0/13", + "20.192.0.0/10", + "40.64.0.0/10", + "51.4.0.0/15", + "51.8.0.0/16", + "51.10.0.0/15", + "51.18.0.0/16", + "51.51.0.0/16", + "51.53.0.0/16", + "51.103.0.0/16", + "51.104.0.0/15", + "51.132.0.0/16", + "51.136.0.0/15", + "51.138.0.0/16", + "51.140.0.0/14", + "51.144.0.0/15", + "52.96.0.0/12", + "52.112.0.0/14", + "52.125.0.0/16", + "52.126.0.0/15", + "52.130.0.0/15", + "52.132.0.0/14", + "52.136.0.0/13", + "52.145.0.0/16", + "52.146.0.0/15", + "52.148.0.0/14", + "52.152.0.0/13", + "52.160.0.0/11", + "52.224.0.0/11", + "64.4.0.0/18", + "65.52.0.0/14", + "66.119.144.0/20", + "70.37.0.0/17", + "70.37.128.0/18", + "91.190.216.0/21", + "94.245.64.0/18", + "103.9.8.0/22", + "103.25.156.0/24", + "103.25.157.0/24", + "103.25.158.0/23", + "103.36.96.0/22", + "103.255.140.0/22", + "104.40.0.0/13", + "104.146.0.0/15", + "104.208.0.0/13", + "111.221.16.0/20", + "111.221.64.0/18", + "129.75.0.0/16", + "131.107.0.0/16", + "131.253.1.0/24", + "131.253.3.0/24", + "131.253.5.0/24", + "131.253.6.0/24", + "131.253.8.0/24", + "131.253.12.0/22", + "131.253.16.0/23", + "131.253.18.0/24", + "131.253.21.0/24", + "131.253.22.0/23", + "131.253.24.0/21", + "131.253.32.0/20", + "131.253.61.0/24", + "131.253.62.0/23", + "131.253.64.0/18", + "131.253.128.0/17", + "132.245.0.0/16", + "134.170.0.0/16", + "134.177.0.0/16", + "137.116.0.0/15", + "137.135.0.0/16", + "138.91.0.0/16", + "138.196.0.0/16", + "139.217.0.0/16", + "139.219.0.0/16", + "141.251.0.0/16", + "146.147.0.0/16", + "147.243.0.0/16", + "150.171.0.0/16", + "150.242.48.0/22", + "157.54.0.0/15", + "157.56.0.0/14", + "157.60.0.0/16", + "167.105.0.0/16", + "167.220.0.0/16", + "168.61.0.0/16", + "168.62.0.0/15", + "191.232.0.0/13", + "192.32.0.0/16", + "192.48.225.0/24", + "192.84.159.0/24", + "192.84.160.0/23", + "192.197.157.0/24", + "193.149.64.0/19", + "193.221.113.0/24", + "194.69.96.0/19", + "194.110.197.0/24", + "198.105.232.0/22", + "198.200.130.0/24", + "198.206.164.0/24", + "199.60.28.0/24", + "199.74.210.0/24", + "199.103.90.0/23", + "199.103.122.0/24", + "199.242.32.0/20", + "199.242.48.0/21", + "202.89.224.0/20", + "204.13.120.0/21", + "204.14.180.0/22", + "204.79.135.0/24", + "204.79.179.0/24", + "204.79.181.0/24", + "204.79.188.0/24", + "204.79.195.0/24", + "204.79.196.0/23", + "204.79.252.0/24", + "204.152.18.0/23", + "204.152.140.0/23", + "204.231.192.0/24", + "204.231.194.0/23", + "204.231.197.0/24", + "204.231.198.0/23", + "204.231.200.0/21", + "204.231.208.0/20", + "204.231.236.0/24", + "205.174.224.0/20", + "206.138.168.0/21", + "206.191.224.0/19", + "207.46.0.0/16", + "207.68.128.0/18", + "208.68.136.0/21", + "208.76.44.0/22", + "208.84.0.0/21", + "209.240.192.0/19", + "213.199.128.0/18", + "216.32.180.0/22", + "216.220.208.0/20", + "23.96.0.0/13", + "42.159.0.0/16", + "51.13.0.0/17", + "51.107.0.0/16", + "51.116.0.0/16", + "51.120.0.0/16", + "51.120.128.0/17", + "51.124.0.0/16", + "102.37.0.0/18", + "102.133.0.0/16", + "199.30.16.0/20", + "204.79.180.0/24" + ], + "metadata": { + "description": "List of MI management IP ranges" + } + }, + "miManagementIPs": { + "value": [ + "vnetLocalRoute", + "13.64.0.0/11", + "13.104.0.0/14", + "20.33.0.0/16", + "20.34.0.0/15", + "20.36.0.0/14", + "20.40.0.0/13", + "20.48.0.0/12", + "20.64.0.0/10", + "20.128.0.0/16", + "20.135.0.0/16", + "20.136.0.0/16", + "20.140.0.0/15", + "20.143.0.0/16", + "20.144.0.0/14", + "20.150.0.0/15", + "20.160.0.0/12", + "20.176.0.0/14", + "20.180.0.0/14", + "20.184.0.0/13", + "20.192.0.0/10", + "40.64.0.0/10", + "51.4.0.0/15", + "51.8.0.0/16", + "51.10.0.0/15", + "51.18.0.0/16", + "51.51.0.0/16", + "51.53.0.0/16", + "51.103.0.0/16", + "51.104.0.0/15", + "51.132.0.0/16", + "51.136.0.0/15", + "51.138.0.0/16", + "51.140.0.0/14", + "51.144.0.0/15", + "52.96.0.0/12", + "52.112.0.0/14", + "52.125.0.0/16", + "52.126.0.0/15", + "52.130.0.0/15", + "52.132.0.0/14", + "52.136.0.0/13", + "52.145.0.0/16", + "52.146.0.0/15", + "52.148.0.0/14", + "52.152.0.0/13", + "52.160.0.0/11", + "52.224.0.0/11", + "64.4.0.0/18", + "65.52.0.0/14", + "66.119.144.0/20", + "70.37.0.0/17", + "70.37.128.0/18", + "91.190.216.0/21", + "94.245.64.0/18", + "103.9.8.0/22", + "103.25.156.0/24", + "103.25.157.0/24", + "103.25.158.0/23", + "103.36.96.0/22", + "103.255.140.0/22", + "104.40.0.0/13", + "104.146.0.0/15", + "104.208.0.0/13", + "111.221.16.0/20", + "111.221.64.0/18", + "129.75.0.0/16", + "131.107.0.0/16", + "131.253.1.0/24", + "131.253.3.0/24", + "131.253.5.0/24", + "131.253.6.0/24", + "131.253.8.0/24", + "131.253.12.0/22", + "131.253.16.0/23", + "131.253.18.0/24", + "131.253.21.0/24", + "131.253.22.0/23", + "131.253.24.0/21", + "131.253.32.0/20", + "131.253.61.0/24", + "131.253.62.0/23", + "131.253.64.0/18", + "131.253.128.0/17", + "132.245.0.0/16", + "134.170.0.0/16", + "134.177.0.0/16", + "137.116.0.0/15", + "137.135.0.0/16", + "138.91.0.0/16", + "138.196.0.0/16", + "139.217.0.0/16", + "139.219.0.0/16", + "141.251.0.0/16", + "146.147.0.0/16", + "147.243.0.0/16", + "150.171.0.0/16", + "150.242.48.0/22", + "157.54.0.0/15", + "157.56.0.0/14", + "157.60.0.0/16", + "167.105.0.0/16", + "167.220.0.0/16", + "168.61.0.0/16", + "168.62.0.0/15", + "191.232.0.0/13", + "192.32.0.0/16", + "192.48.225.0/24", + "192.84.159.0/24", + "192.84.160.0/23", + "192.197.157.0/24", + "193.149.64.0/19", + "193.221.113.0/24", + "194.69.96.0/19", + "194.110.197.0/24", + "198.105.232.0/22", + "198.200.130.0/24", + "198.206.164.0/24", + "199.60.28.0/24", + "199.74.210.0/24", + "199.103.90.0/23", + "199.103.122.0/24", + "199.242.32.0/20", + "199.242.48.0/21", + "202.89.224.0/20", + "204.13.120.0/21", + "204.14.180.0/22", + "204.79.135.0/24", + "204.79.179.0/24", + "204.79.181.0/24", + "204.79.188.0/24", + "204.79.195.0/24", + "204.79.196.0/23", + "204.79.252.0/24", + "204.152.18.0/23", + "204.152.140.0/23", + "204.231.192.0/24", + "204.231.194.0/23", + "204.231.197.0/24", + "204.231.198.0/23", + "204.231.200.0/21", + "204.231.208.0/20", + "204.231.236.0/24", + "205.174.224.0/20", + "206.138.168.0/21", + "206.191.224.0/19", + "207.46.0.0/16", + "207.68.128.0/18", + "208.68.136.0/21", + "208.76.44.0/22", + "208.84.0.0/21", + "209.240.192.0/19", + "213.199.128.0/18", + "216.32.180.0/22", + "216.220.208.0/20", + "23.96.0.0/13", + "42.159.0.0/16", + "51.13.0.0/17", + "51.107.0.0/16", + "51.116.0.0/16", + "51.120.0.0/16", + "51.120.128.0/17", + "51.124.0.0/16", + "102.37.0.0/18", + "102.133.0.0/16", + "199.30.16.0/20", + "204.79.180.0/24" + ] + } + }, + "variables": { + "nestedtemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "BuildMINetworking", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "nestedTemplateUri", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vnetResourceName": { + "value": "virtualNetwork" + }, + "vnetAddressRange": { + "value": "10.0.0.0/16" + }, + "managedInstanceSubnetName": { + "value": "mi-subnet" + }, + "managedInstanceSubnetAddressRange": { + "value": "10.0.0.0/24" + }, + "managedInstanceNSGName": { + "value": "mi-NSG" + }, + "managedInstanceRouteTableName": { + "value": "mi-RouteTable" + }, + "miManagementIps": { + "value": [ + "vnetLocalRoute", + "13.64.0.0/11", + "13.104.0.0/14", + "20.33.0.0/16", + "20.34.0.0/15", + "20.36.0.0/14", + "20.40.0.0/13", + "20.48.0.0/12", + "20.64.0.0/10", + "20.128.0.0/16", + "20.135.0.0/16", + "20.136.0.0/16", + "20.140.0.0/15", + "20.143.0.0/16", + "20.144.0.0/14", + "20.150.0.0/15", + "20.160.0.0/12", + "20.176.0.0/14", + "20.180.0.0/14", + "20.184.0.0/13", + "20.192.0.0/10", + "40.64.0.0/10", + "51.4.0.0/15", + "51.8.0.0/16", + "51.10.0.0/15", + "51.18.0.0/16", + "51.51.0.0/16", + "51.53.0.0/16", + "51.103.0.0/16", + "51.104.0.0/15", + "51.132.0.0/16", + "51.136.0.0/15", + "51.138.0.0/16", + "51.140.0.0/14", + "51.144.0.0/15", + "52.96.0.0/12", + "52.112.0.0/14", + "52.125.0.0/16", + "52.126.0.0/15", + "52.130.0.0/15", + "52.132.0.0/14", + "52.136.0.0/13", + "52.145.0.0/16", + "52.146.0.0/15", + "52.148.0.0/14", + "52.152.0.0/13", + "52.160.0.0/11", + "52.224.0.0/11", + "64.4.0.0/18", + "65.52.0.0/14", + "66.119.144.0/20", + "70.37.0.0/17", + "70.37.128.0/18", + "91.190.216.0/21", + "94.245.64.0/18", + "103.9.8.0/22", + "103.25.156.0/24", + "103.25.157.0/24", + "103.25.158.0/23", + "103.36.96.0/22", + "103.255.140.0/22", + "104.40.0.0/13", + "104.146.0.0/15", + "104.208.0.0/13", + "111.221.16.0/20", + "111.221.64.0/18", + "129.75.0.0/16", + "131.107.0.0/16", + "131.253.1.0/24", + "131.253.3.0/24", + "131.253.5.0/24", + "131.253.6.0/24", + "131.253.8.0/24", + "131.253.12.0/22", + "131.253.16.0/23", + "131.253.18.0/24", + "131.253.21.0/24", + "131.253.22.0/23", + "131.253.24.0/21", + "131.253.32.0/20", + "131.253.61.0/24", + "131.253.62.0/23", + "131.253.64.0/18", + "131.253.128.0/17", + "132.245.0.0/16", + "134.170.0.0/16", + "134.177.0.0/16", + "137.116.0.0/15", + "137.135.0.0/16", + "138.91.0.0/16", + "138.196.0.0/16", + "139.217.0.0/16", + "139.219.0.0/16", + "141.251.0.0/16", + "146.147.0.0/16", + "147.243.0.0/16", + "150.171.0.0/16", + "150.242.48.0/22", + "157.54.0.0/15", + "157.56.0.0/14", + "157.60.0.0/16", + "167.105.0.0/16", + "167.220.0.0/16", + "168.61.0.0/16", + "168.62.0.0/15", + "191.232.0.0/13", + "192.32.0.0/16", + "192.48.225.0/24", + "192.84.159.0/24", + "192.84.160.0/23", + "192.197.157.0/24", + "193.149.64.0/19", + "193.221.113.0/24", + "194.69.96.0/19", + "194.110.197.0/24", + "198.105.232.0/22", + "198.200.130.0/24", + "198.206.164.0/24", + "199.60.28.0/24", + "199.74.210.0/24", + "199.103.90.0/23", + "199.103.122.0/24", + "199.242.32.0/20", + "199.242.48.0/21", + "202.89.224.0/20", + "204.13.120.0/21", + "204.14.180.0/22", + "204.79.135.0/24", + "204.79.179.0/24", + "204.79.181.0/24", + "204.79.188.0/24", + "204.79.195.0/24", + "204.79.196.0/23", + "204.79.252.0/24", + "204.152.18.0/23", + "204.152.140.0/23", + "204.231.192.0/24", + "204.231.194.0/23", + "204.231.197.0/24", + "204.231.198.0/23", + "204.231.200.0/21", + "204.231.208.0/20", + "204.231.236.0/24", + "205.174.224.0/20", + "206.138.168.0/21", + "206.191.224.0/19", + "207.46.0.0/16", + "207.68.128.0/18", + "208.68.136.0/21", + "208.76.44.0/22", + "208.84.0.0/21", + "209.240.192.0/19", + "213.199.128.0/18", + "216.32.180.0/22", + "216.220.208.0/20", + "23.96.0.0/13", + "42.159.0.0/16", + "51.13.0.0/17", + "51.107.0.0/16", + "51.116.0.0/16", + "51.120.0.0/16", + "51.120.128.0/17", + "51.124.0.0/16", + "102.37.0.0/18", + "102.133.0.0/16", + "199.30.16.0/20", + "204.79.180.0/24" + ] + } + } + } + }, + { + "type": "Microsoft.Sql/managedInstances", + "apiVersion": "2019-06-01-preview", + "name": "[concat('managedInstance-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "GP_Gen5", + "tier": "GeneralPurpose" + }, + "identity": { + "type": "SystemAssigned" + }, + "tags": { + "tag1": "value1", + "tag2": "value2" + }, + "dependsOn": [ + "Microsoft.Resources/deployments/BuildMINetworking" + ], + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "subnetId": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork/mi-subnet", + "storageSizeInGB": "256", + "vCores": "8", + "licenseType": "BasePrice", + "hardwareFamily": "Gen5", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "publicDataEndpointEnabled": "false" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT639 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT639 new file mode 100644 index 0000000..1d4faec --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT639 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-all-tabs-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-all-tabs-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898467, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-all-tabs-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-all-tabs-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT639", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT639", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "sku": "pergb2018", + "tags": { + "UsedByArmTemplateTest": "true" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "UsedByArmTemplateTest": "true" + }, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + } + ], + "outputs": { + "existingLogicAppWorkspace": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "existingWorkspaceResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingWorkspaceSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "existingWorkspacesToQuery": { + "type": "array", + "value": "[array(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT64 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT64 new file mode 100644 index 0000000..6acc935 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT64 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/orchestrator-server-setup-trend.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884524, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/orchestrator-server-setup-trend.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT64", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT64", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "value": "westus" + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/configureOrchestrator", + "apiVersion": "2015-05-01-preview", + "location": "westus", + "tags": { + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/sysgain/cloudtry-p2p-public-artifacts/master/scripts/TrendMicro/p2porchAllinOneTrend.sh" + ], + "commandToExecute": "sh p2porchAllinOneTrend.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT640 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT640 new file mode 100644 index 0000000..372a2b4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT640 @@ -0,0 +1,1712 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-all-tabs-report/azuredeploy.json", + "/demos/backup-all-tabs-report/azuredeploy.parameters.json" + ], + "timestamp": 1642962898478, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-all-tabs-report/azuredeploy.json", + "/demos/backup-all-tabs-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT640", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT640", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "String", + "defaultValue": "AllTabs", + "metadata": { + "description": "Name of the Logic App to be created." + } + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region in which the Logic App should be created." + } + }, + "logicAppWorkspace": { + "type": "String", + "metadata": { + "description": "Name of the existing Log Analytics workspace that the Logic App should connect to. Note that the Logic App connects to a single workspace, but can query data across multiple workspaces. Use the 'Workspaces To Query' parameter to specify the list of workspaces that the Logic App should query data from." + }, + "value": "GET-PREREQ-existingLogicAppWorkspace" + }, + "workspaceSubscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceSubscriptionId" + }, + "workspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group name of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceResourceGroup" + }, + "workspacesToQuery": { + "type": "Array", + "metadata": { + "description": "List of workspaces that the Logic App should query data from. Should be a comma-separated array of values of the format ['/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName1}','/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName2}']" + }, + "value": "GET-PREREQ-existingWorkspacesToQuery" + }, + "emailFrequency": { + "type": "String", + "allowedValues": [ + "Day", + "Week", + "Month" + ], + "defaultValue": "Day", + "metadata": { + "description": "Frequency at whch emails should be received by the recipient(s). Select 'Day' for sending emails once a day, 'Week' for sending emails once a week, or 'Month' for sending emails once a month." + } + }, + "recipientEmailId": { + "type": "String", + "metadata": { + "description": "Email id of the recipient(s). To specify multiple email ids, use a semicolon-separated list." + }, + "value": "vijeya@microsoft.com" + }, + "startDate": { + "type": "String", + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "metadata": { + "description": "Start Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "endDate": { + "type": "String", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "End Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "vaultSubscriptionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of subscriptions in which Recovery Services vaults exist. Should be of the format '{subscriptionId1},{subscriptionId2},..'. Default value is '*', which enables the Logic App to query data across all backup subscriptions that are sending data to the specified Log Analytics workspaces." + } + }, + "vaultLocationListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of regions in which Recovery Services vaults exist. Should be of the format 'location1,location2,..' (eg. eastus,westus). Default value is '*', which enables the Logic App to query data for vaults across all Azure regions in the specified subscriptions." + } + }, + "vaultListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Recovery Services vaults. Should be of the format 'vaultname1,vaultname2,..'. Default value is '*', which enables the Logic App to query data for all vaults in the specified subscriptions and locations." + } + }, + "backupSolutionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Azure Backup solutions being used in your environment. Should be of the format 'solution1,solution2,..' (eg. Azure VM Backup,SQL in Azure VM Backup,DPM). Default value is '*', which enables the Logic App to query data across all Azure Backup solutions being used." + } + }, + "excludeLegacyEvent": { + "type": "Bool", + "defaultValue": true, + "metadata": { + "description": "Selecting 'true' enables the Logic App to avoid querying data that is sent to the legacy Azure Diagnostics table in the Log Analytics workspace(s). Excluding the legacy table improves query performance time." + } + }, + "dailyRPRetentionFilter": { + "type": "Int", + "defaultValue": -1, + "metadata": { + "description": "For the grid 'Backup Instances with large retention duration' that is exported by the Logic App, you can use this parameter to display only those backup instances whose configured retention duration for daily retention points is greater than the value specified in this parameter. To display all backup instances irrespective of their daily retention point duration, use the value -1." + } + }, + "weeklyRPRetentionFilter": { + "type": "Int", + "defaultValue": -1, + "metadata": { + "description": "For the grid 'Backup Instances with large retention duration' that is exported by the Logic App, you can use this parameter to display only those backup instances whose configured retention duration for weekly retention points is greater than the value specified in this parameter. To display all backup instances irrespective of their weekly retention point duration, use the value -1." + } + }, + "monthlyRPRetentionFilter": { + "type": "Int", + "defaultValue": -1, + "metadata": { + "description": "For the grid 'Backup Instances with large retention duration' that is exported by the Logic App, you can use this parameter to display only those backup instances whose configured retention duration for monthly retention points is greater than the value specified in this parameter. To display all backup instances irrespective of their monthly retention point duration, use the value -1." + } + }, + "yearlyRPRetentionFilter": { + "type": "Int", + "defaultValue": -1, + "metadata": { + "description": "For the grid 'Backup Instances with large retention duration' that is exported by the Logic App, you can use this parameter to display only those backup instances whose configured retention duration for yearly retention points is greater than the value specified in this parameter. To display all backup instances irrespective of their yearly retention point duration, use the value -1." + } + }, + "aggregationType": { + "type": "String", + "allowedValues": [ + "Daily", + "Weekly", + "Monthly" + ], + "defaultValue": "Daily", + "metadata": { + "description": "Use to specify the granularity at which data is sampled in the case of trend graphs." + } + }, + "resourceTags": { + "type": "object", + "defaultValue": { + "UsedByBackupReports": "true" + }, + "metadata": { + "description": "Tags to be assigned to the Logic App and the API connection resources." + } + }, + "emailSubject": { + "type": "string", + "defaultValue": "All Tabs", + "metadata": { + "description": "Subject of the email to be received by the recipient(s)." + } + } + }, + "variables": { + "office365ConnectionName": "[resourceGroup().location]-office365", + "azureMonitorLogsConnectionName": "[resourceGroup().location]-azuremonitorlogs" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-office365", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + }, + "displayName": "office365" + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-azuremonitorlogs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "displayName": "azuremonitorlogs" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "AllTabs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "dependsOn": [ + "Microsoft.Web/connections/[resourceGroup().location]-office365", + "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + }, + "dataToExport": { + "defaultValue": "All Tabs", + "type": "String" + }, + "aggregationType": { + "defaultValue": "\"Daily\"", + "type": "String" + }, + "backupSolutionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "excludeLegacyEvent": { + "defaultValue": true, + "type": "Bool" + }, + "dailyRetentionParam": { + "defaultValue": -1, + "type": "Int" + }, + "monthlyRetentionParam": { + "defaultValue": -1, + "type": "Int" + }, + "endDate": { + "defaultValue": "[utcNow('u')]", + "type": "String" + }, + "startDate": { + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "type": "String" + }, + "vaultListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultLocationListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultSubscriptionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "weeklyRetentionParam": { + "defaultValue": -1, + "type": "Int" + }, + "workspacesToQuery": { + "defaultValue": "GET-PREREQ-existingWorkspacesToQuery", + "type": "Array" + }, + "yearlyRetentionParam": { + "defaultValue": -1, + "type": "Int" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Day", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "For_each": { + "foreach": "@parameters('workspacesToQuery')", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "AzureDiagnostics_Incomplete", + "value": " workspace('@{items('For_each')}').AzureDiagnostics," + } + }, + "Append_to_string_variable_2": { + "runAfter": { + "Append_to_string_variable": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "CoreAzureBackup_Incomplete", + "value": " workspace('@{items('For_each')}').CoreAzureBackup," + } + }, + "Append_to_string_variable_3": { + "runAfter": { + "Append_to_string_variable_2": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupJobs_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupJobs," + } + }, + "Append_to_string_variable_4": { + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupPolicy_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupPolicy," + } + }, + "Append_to_string_variable_5": { + "runAfter": { + "Append_to_string_variable_4": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupProtectedInstance," + } + }, + "Append_to_string_variable_6": { + "runAfter": { + "Append_to_string_variable_5": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupStorage_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupStorage," + } + } + }, + "runAfter": { + "Initialize_variable-AddonAzureBackupStorage": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "If_Any_Scope_Failed": { + "actions": { + "Send_an_email_(V2)-FailureRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "

The Logic App Run did not execute to completion.
\n
Status: @{result('Scope')[0]['status']}

Learn more about how to troubleshoot the error

", + "Subject": "All Tabs", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Scope": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ], + "Scope-2": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ], + "Scope-3": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ] + }, + "else": { + "actions": { + "Send_an_email_(V2)-SuccessfulRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Attachments": [ + { + "ContentBytes": "@{base64(body('Create_CSV_table-OptimizeGrid1'))}", + "Name": "InactiveResources.csv" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-OptimizeGrid2'))}", + "Name": "RetentionOptimizations.csv" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-OptimizeGrid3'))}", + "Name": "BackupScheduleOptimizations.csv" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-BillingGroupTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-BillingGroupTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-BillingGroupTabCloudStorageTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-BillingGroupTabCloudStorageTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-JobOperation')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-JobOperation')?['attachmentName']" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-JobList'))}", + "Name": "JobList.csv" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-BillingGroupList'))}", + "Name": "BillingGroupList.csv" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-JobFailureCode')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-JobFailureCode')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-JobStatus')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-JobStatus')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-BackupInstanceTabCloudStorageTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-BackupInstanceTabCloudStorageTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-BackupInstanceTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-BackupInstanceTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-BackupInstanceList'))}", + "Name": "BackupInstanceList.csv" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-PolicyTabCloudStorageTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-PolicyTabCloudStorageTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-PolicyTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-PolicyTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-PolicyList'))}", + "Name": "PoliciesList.csv" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-ByBackupInstance-ItemsBackedupDaily'))}", + "Name": "PolicyAdherenceByBackupInstance-ItemsBackedupDaily.csv" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-ByBackupInstance-ItemsBackedupWeekly'))}", + "Name": "PolicyAdherenceByBackupInstance-ItemsBackedupWeekly.csv" + } + ], + "Body": "


\nBackup Reports
\n

\nEmail Contents
\n

\n1. Inline
a. Summary - Key Parameters by Backup Solution
b. Backup Instances - Trend of backup instances count over time
c. Backup Instances - Trend of backup cloud storage (GB) consumed over time
d. Billing Groups - Trend of protected instances count over time
e. Billing Groups - Trend of backup cloud storage GMB) consumed over time
f. Jobs - Jobs by Status over time
g. Jobs - Jobs by Operation
h. Jobs - Jobs by Failure Code
i. Policies - Trend of active policy count over time
j. Policies - Trend of cloud storage (GB) consumed over time
k. Policy Adherence - Policy Adherence by Time Period for items backed up daily
l. Policy Adherence - Policy Adherence by Time Period for items backed up weekly
\n
\n2. Attachments
a. Backup Instances - List of all backup instances with details on policy, backup storage consumed, storage replication type etc.
b. Billing Groups - List of all billing groups with details on protected instances, backup storage consumed, storage replication type etc.
c. Jobs - List of all backup and restore jobs triggered in selected time range
d. Policies - List of all backup policies with details on number of associated items, total cloud storage consumed (GB) etc.
e. Inactive Resources - Backup Instances with no recovery point in selected time range.
f. Retention Optimizations - List of all backup instances with retentions greater than specified value.
g. Backup Schedule Optimizations - List of all databases configured for daily full backup.
h. Policy Adherence - Policy Adherence by Backup Instance for items backed up daily.
i. Policy Adherence - Policy Adherence by Backup Instance for items backed up weekly.
Learn more about Backup Reports

Summary
\n
\n@{base64ToString(body('Run_query_and_visualize_results-SummaryGrid')?['body'])}
\n
\nBackupInstance
\n
\n@{variables('BackupInstanceVisual')}
\n
\nBillingGroup
\n
\n@{variables('BillingGroupVisual')}
\n
\nJob
\n
\n
@{variables('JobVisual')}
\n
\nPolicy

\n
\n@{variables('PoliciesVisual')}
\n
\nPolicyAdherence
\n
\n
@{variables('PolicyAdherenceVisual')}

", + "Subject": "All Tabs", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + } + }, + "expression": { + "or": [ + { + "equals": [ + "@result('Scope')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "TimedOut" + ] + }, + { + "equals": [ + "@result('Scope-2')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope-2')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope-2')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope-2')[0]['status']", + "TimedOut" + ] + }, + { + "equals": [ + "@result('Scope-3')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope-3')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope-3')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope-3')[0]['status']", + "TimedOut" + ] + } + ] + }, + "type": "If" + }, + "Initialize_variable-AddonAzureBackupJobs": { + "runAfter": { + "Initialize_variable-CoreAzureBackup": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupJobs_Incomplete", + "type": "string", + "value": "let AddonAzureBackupJobs = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupPolicy": { + "runAfter": { + "Initialize_variable-AddonAzureBackupJobs": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupPolicy_Incomplete", + "type": "string", + "value": "let AddonAzureBackupPolicy = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupProtectedInstance": { + "runAfter": { + "Initialize_variable-AddonAzureBackupPolicy": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "type": "string", + "value": "let AddonAzureBackupProtectedInstance = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupStorage": { + "runAfter": { + "Initialize_variable-AddonAzureBackupProtectedInstance": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupStorage_Incomplete", + "type": "string", + "value": "let AddonAzureBackupStorage = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AzureDiagnostics": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AzureDiagnostics_Incomplete", + "type": "string", + "value": "let AzureDiagnostics = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-BackupInstanceEmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-JobEmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceVisual", + "type": "string" + } + ] + } + }, + "Initialize_variable-BackupInstanceFunction": { + "runAfter": { + "Initialize_variable-ReportFilterForLatestData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n// DatasourceSetType\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet LatestBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| where BackupItemUniqueId != \"\"\n// To show as per as on 'AsonDay'\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true) \n};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet LatestBackupItemAssociationAndStorageConsumptionTable = ()\n{\nLatestBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n)on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {union (LatestBackupItemAssociationAndStorageConsumptionTable | where (_RangeEnd-_RangeStart == 1d)), (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-BackupInstanceTrendFunction": { + "runAfter": { + "Initialize_variable-BackupInstanceFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceTrendFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Trend')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-NoDataMessage": { + "inputs": { + "variables": [ + { + "name": "NoDataMessage", + "type": "array", + "value": [ + { + "Message": "No records found" + } + ] + } + ] + }, + "runAfter": { + "Initialize_variable-BillingGroupEmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Initialize_variable-BillingGroupEmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-PolicyAdherenceEmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BillingGroupVisual", + "type": "string" + } + ] + } + }, + "Initialize_variable-BillingGroupFunction": { + "runAfter": { + "Initialize_variable-PolicyFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BillingGroupFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')}\nlet _BillingGroupName = \"*\";\n//Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\nlet AzureStorageProtectedInstanceCountCutoffDate = datetime(2/01/2021, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedInstanceUnderAzureDiagnostics = (isProtectedContainerBillingType:bool)\n{\n let ProtectedInstanceTable = AzureDiagnostics \n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedInstance\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"),\n ProtectedInstanceCount = toint(columnifexists(\"ProtectedInstanceCount_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId;\nProtectedInstanceTable\n};\nlet ProtectedInstanceUnderResourceSpecific = (isProtectedContainerBillingType:bool)\n{\nlet ProtectedInstanceTable = AddonAzureBackupProtectedInstance \n| where OperationName == \"ProtectedInstance\" and State != \"Deleted\"\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId;\nProtectedInstanceTable\n};\nlet ProtectedInstanceHistoryUnderAzureDiagnostics = (isProtectedContainerBillingType:bool)\n{\n let ProtectedInstanceTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedInstance\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"),\n ProtectedInstanceCount = toint(columnifexists(\"ProtectedInstanceCount_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nProtectedInstanceTable\n};\nlet ProtectedInstanceHistoryUnderResourceSpecific = (isProtectedContainerBillingType:bool)\n{\nlet ProtectedInstanceTable = AddonAzureBackupProtectedInstance \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"ProtectedInstance\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay = startofday(TimeGenerated)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay;\nProtectedInstanceTable\n};\n// BusinessLogic\nlet LatestBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| where BackupItemUniqueId != \"\"\n// To show as per as on 'AsonDay'\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or BackupItemFriendlyName contains (_BillingGroupName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or BackupItemFriendlyName contains (_BillingGroupName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nBase_Size\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nBase_Size\n};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\t\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\nBase_Size\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tBase_Size\n};\nlet LatestBackupItemAssociationAndStorageConsumptionTable = ()\n{\nLatestBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n)on BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nVaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, TimeRangeEndDay = startofday(TimeGenerated)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = () \n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(BI_HistoryCombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nVaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, TimeRangeEndDay\n};\nlet LatestProtectedContainerHistoryInfoTableExcludingDPMVMs = (){\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable \n| where not((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \nor (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n| summarize StorageConsumedInMBs = sum(StorageConsumedInMBs), BackupItemFrontEndSize = sum(BackupItemFrontEndSize), ProtectedContainerName = any(ProtectedContainerName), ProtectedContainerFriendlyName = any(ProtectedContainerFriendlyName), CustomBackupManagementType = iff((any(BackupManagementType) has \"AzureWorkload\"), any(strcat(BackupManagementType, \"/\", BackupItemType)), any(BackupManagementType)), BackupManagementType = any(BackupManagementType), BackupSolution = any(BackupSolution), VaultUniqueId = any(VaultUniqueId), VaultName = any(VaultName), VaultTags = any(VaultTags), SubscriptionId = any(SubscriptionId), ResourceGroupName = any(ResourceGroupName), AzureDataCenter = any(AzureDataCenter), StorageReplicationType = any(StorageReplicationType), ResourceId = any(ResourceId), TimeGenerated = any(TimeGenerated) by ProtectedContainerUniqueId, TimeRangeEndDay\n};\nlet LatestProtectedContainerInfoTableExcludingDPMVMs = (){\n// projecting TimeRangeDay to distill the report for RangeEndDay\nLatestBackupItemAssociationAndStorageConsumptionTable\n| where not((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \nor (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n// CustomBackupManagementType needed to distinguish 'AzureWorkload' \n| summarize StorageConsumedInMBs = sum(StorageConsumedInMBs), BackupItemFrontEndSize = sum(BackupItemFrontEndSize), ProtectedContainerName = any(ProtectedContainerName), ProtectedContainerFriendlyName= any(ProtectedContainerFriendlyName), CustomBackupManagementType = iff((any(BackupManagementType) has \"AzureWorkload\"), any(strcat(BackupManagementType, \"/\", BackupItemType)), any(BackupManagementType)),\nBackupManagementType = any(BackupManagementType), BackupSolution = any(BackupSolution), VaultUniqueId = any(VaultUniqueId), VaultName = any(VaultName), VaultTags = any(VaultTags), SubscriptionId = any(SubscriptionId), ResourceGroupName = any(ResourceGroupName), AzureDataCenter = any(AzureDataCenter), StorageReplicationType = any(StorageReplicationType), ResourceId = any(ResourceId), TimeGenerated = any(TimeGenerated), TimeRangeEndDay = startofday(any(TimeGenerated)) by ProtectedContainerUniqueId\n};\nlet TotalProtectedInstanceHistoryTable = (isProtectedContainerBillingType:bool) \n{union isfuzzy = true \n(ProtectedInstanceHistoryUnderAzureDiagnostics(isProtectedContainerBillingType) | where _ExcludeLegacyEvent == false),\n(ProtectedInstanceHistoryUnderResourceSpecific(isProtectedContainerBillingType))\n// ProtectedInstance is at BillingGroup level. CustomBackupManagementType can be the filter used.\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay\n};\nlet LatestProtectedInstanceTable = (isProtectedContainerBillingType:bool) \n{union isfuzzy = true \n(ProtectedInstanceUnderAzureDiagnostics(isProtectedContainerBillingType) | where _ExcludeLegacyEvent == false),\n(ProtectedInstanceUnderResourceSpecific(isProtectedContainerBillingType))\n| where startofday(TimeGenerated) == AsonDay\n// ProtectedInstance is at BillingGroup level. CustomBackupManagementType can be the filter used.\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay = startofday(TimeGenerated)\n};\nlet LatestProtectedInstanceHistoryTableFromProtectedContainerUniqueId = ()\n{ \nTotalProtectedInstanceHistoryTable(true) \n| join kind= rightouter (LatestProtectedContainerHistoryInfoTableExcludingDPMVMs) on ProtectedContainerUniqueId, TimeRangeEndDay\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementType = BackupManagementType1, BackupSolution, CustomBackupManagementType, BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, BillingGroupUniqueId = ProtectedContainerUniqueId1, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter,\nStorageReplicationType, ResourceId\n};\nlet LatestProtectedInstanceTableFromProtectedContainerUniqueId = ()\n{ \nLatestProtectedInstanceTable(true)\n| join kind= rightouter (LatestProtectedContainerInfoTableExcludingDPMVMs ) on ProtectedContainerUniqueId\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementType = BackupManagementType1, BackupSolution, CustomBackupManagementType, BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, BillingGroupUniqueId = ProtectedContainerUniqueId1, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter,\nStorageReplicationType, ResourceId\n};\nlet LatestProtectedInstanceHistoryTableFromBackupItemUniqueId = ()\n{ \n(TotalProtectedInstanceHistoryTable(false) \n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\"))\n| join kind= rightouter (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where ((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \n or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n | extend CustomBackupManagementType = BackupManagementType) on BackupItemUniqueId, TimeRangeEndDay\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, CustomBackupManagementType, BackupManagementType, BackupSolution, BillingGroupType = \"Datasource\", BillingGroupFriendlyName = BackupItemFriendlyName, BillingGroupUniqueId = BackupItemUniqueId1, BillingGroupName = BackupItemName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet LatestProtectedInstanceTableFromBackupItemUniqueId = ()\n{ \n(LatestProtectedInstanceTable(false)\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\"))\n| join kind= rightouter \n// applicable only for DPM VM Scenarios\n(LatestBackupItemAssociationAndStorageConsumptionTable | where ((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \nor (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n| extend CustomBackupManagementType = BackupManagementType) on BackupItemUniqueId\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementType, CustomBackupManagementType, BackupSolution, BillingGroupType = \"Datasource\", BillingGroupFriendlyName = BackupItemFriendlyName, \n BillingGroupUniqueId = BackupItemUniqueId1, BillingGroupName = BackupItemName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\n// Special handling for DPM, AzureBackupServer Cluster scenario - Node PS has ProtectedInstance, whereas Cluster PS has storage Consumption\nlet LatestProtectedInstanceHistoryTableFromDPMNodeProtectedContainerUniqueId = ()\n{ \n((TotalProtectedInstanceHistoryTable(true) \n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where ProtectedInstanceCount > 0)\n| join kind= leftanti (LatestProtectedContainerHistoryInfoTableExcludingDPMVMs ) on ProtectedContainerUniqueId, TimeRangeEndDay\n| project ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay)\n| join (\nunion isfuzzy = true \n(ProtectedContainerUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ProtectedContainerUnderResourceSpecific())\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId)\n on ProtectedContainerUniqueId\n // BackupItemFrontEndSize and StorageConsumed will be 0.0 as the same will be calculated at cluster level \n // As it is DPM or AzureBackupServer, no extra handling needed for AzureWorkload\n // Ideally the TimeGenerated field should come from BackupItem/ProtectedContainer. This is a special case and we are getting the container properties from latest table and not from history table.\n| project TimeRangeEndDay, TimeGenerated, ProtectedInstanceCount, BackupItemFrontEndSize = 0.0, StorageConsumedInMBs = 0.0, BackupManagementType, CustomBackupManagementType = BackupManagementType, \nBackupSolution = iff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \"DPM\"), BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, \n BillingGroupUniqueId = ProtectedContainerUniqueId, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\n// Special handling for DPM, AzureBackupServer Cluster scenario - Node PS has ProtectedInstance, whereas Cluster PS has storage Consumption\nlet LatestProtectedInstanceTableFromDPMNodeProtectedContainerUniqueId = ()\n{ \n(\n(LatestProtectedInstanceTable(true)\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where ProtectedInstanceCount > 0)\n| join kind= leftanti (LatestProtectedContainerInfoTableExcludingDPMVMs ) on ProtectedContainerUniqueId\n| project ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay)\n| join (\nunion isfuzzy = true \n(ProtectedContainerUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ProtectedContainerUnderResourceSpecific())\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId)\n on ProtectedContainerUniqueId\n // BackupItemFrontEndSize and StorageConsumed will be 0.0 as the same will be calculated at cluster level \n // As it is DPM or AzureBackupServer, no extra handling needed for AzureWorkload\n // Ideally the TimeGenerated field should come from BackupItem/ProtectedContainer. This is a special case and we are getting the container properties from latest table and not from history table.\n| project TimeRangeEndDay, TimeGenerated, ProtectedInstanceCount, BackupItemFrontEndSize = 0.0, StorageConsumedInMBs = 0.0, BackupManagementType, CustomBackupManagementType = BackupManagementType,\n BackupSolution = iff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \"DPM\"), BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, \n BillingGroupUniqueId = ProtectedContainerUniqueId, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet ProtectedInstanceHistoryMetric = ( )\n{ union \n(LatestProtectedInstanceHistoryTableFromProtectedContainerUniqueId()),\n(LatestProtectedInstanceHistoryTableFromBackupItemUniqueId()),\n(LatestProtectedInstanceHistoryTableFromDPMNodeProtectedContainerUniqueId)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| project CustomBackupManagementType, BackupItemFrontEndSize, StorageConsumedInMBs, BillingGroupUniqueId, BillingGroupFriendlyName, BillingGroupName, ProtectedInstanceCount, BillingGroupType, TimeRangeEndDay, TimeGenerated, BackupManagementType, BackupSolution, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet ProtectedInstanceMetric = ( ) \n{ union \n(LatestProtectedInstanceTableFromBackupItemUniqueId() ),\n(LatestProtectedInstanceTableFromProtectedContainerUniqueId()),\n(LatestProtectedInstanceTableFromDPMNodeProtectedContainerUniqueId)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| project CustomBackupManagementType, BackupManagementType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs, ProtectedInstanceCount, BillingGroupUniqueId, BillingGroupFriendlyName, BillingGroupName, BillingGroupType, TimeRangeEndDay, TimeGenerated, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet FinalTable = () {union (ProtectedInstanceMetric | where (_RangeEnd-_RangeStart == 1d)), (ProtectedInstanceHistoryMetric | where (_RangeEnd-_RangeStart > 1d))\n};\n// Display Tweaks for AFS and null ProtectedInstanceCount\n// Billing Entity is at BackupManagementType level and not at DS level. \nlet FinalTable_V1Vault = () {FinalTable\n| project CustomBackupManagementType, BackupManagementType, BackupSolution, ProtectedInstanceCount = iff(isempty(ProtectedInstanceCount), 0.0 ,todouble(ProtectedInstanceCount)/10), StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), todouble(StorageConsumedInMBs)), BackupItemFrontEndSize = iff(isempty(BackupItemFrontEndSize), todouble(0), todouble(BackupItemFrontEndSize)), BillingGroupUniqueId, BillingGroupType, BillingGroupName, BillingGroupFriendlyName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, StorageReplicationType, ProtectedContainerName, TimeGenerated\n| project UniqueId = BillingGroupUniqueId, Name = BillingGroupName, Type = BillingGroupType, FriendlyName = BillingGroupFriendlyName, SourceSizeInMBs = BackupItemFrontEndSize, ExtendedProperties = pack(\"ProtectedInstanceCount\", ProtectedInstanceCount), VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, BackupSolution, VaultUniqueId, VaultName, VaultResourceId = ResourceId, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultTags, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-BillingGroupTrendFunction": { + "runAfter": { + "Initialize_variable-BillingGroupFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BillingGroupTrendFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Trend')}\nlet _BillingGroupName = \"*\";\n//Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\nlet AzureStorageProtectedInstanceCountCutoffDate = datetime(2/01/2021, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated)) \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedInstanceUnderAzureDiagnostics = (isProtectedContainerBillingType:bool)\n{\n let ProtectedInstanceTable = AzureDiagnostics \n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedInstance\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"),\n ProtectedInstanceCount = toint(columnifexists(\"ProtectedInstanceCount_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId;\nProtectedInstanceTable\n};\nlet ProtectedInstanceUnderResourceSpecific = (isProtectedContainerBillingType:bool)\n{\nlet ProtectedInstanceTable = AddonAzureBackupProtectedInstance \n| where OperationName == \"ProtectedInstance\" and State != \"Deleted\"\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId;\nProtectedInstanceTable\n};\nlet ProtectedInstanceHistoryUnderAzureDiagnostics = (isProtectedContainerBillingType:bool)\n{\n let ProtectedInstanceTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedInstance\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"),\n ProtectedInstanceCount = toint(columnifexists(\"ProtectedInstanceCount_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nProtectedInstanceTable\n};\nlet ProtectedInstanceHistoryUnderResourceSpecific = (isProtectedContainerBillingType:bool)\n{\nlet ProtectedInstanceTable = AddonAzureBackupProtectedInstance \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"ProtectedInstance\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay = startofday(TimeGenerated)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay;\nProtectedInstanceTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or BackupItemFriendlyName contains (_BillingGroupName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\t\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\nBase_Size\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tBase_Size\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = () \n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(BI_HistoryCombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nVaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, TimeRangeEndDay\n};\nlet LatestProtectedContainerHistoryInfoTableExcludingDPMVMs = (){\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable \n| where not((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \nor (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n| summarize StorageConsumedInMBs = sum(StorageConsumedInMBs), BackupItemFrontEndSize = sum(BackupItemFrontEndSize), ProtectedContainerName = any(ProtectedContainerName), ProtectedContainerFriendlyName = any(ProtectedContainerFriendlyName), CustomBackupManagementType = iff((any(BackupManagementType) has \"AzureWorkload\"), any(strcat(BackupManagementType, \"/\", BackupItemType)), any(BackupManagementType)), BackupManagementType = any(BackupManagementType), BackupSolution = any(BackupSolution), VaultUniqueId = any(VaultUniqueId), VaultName = any(VaultName), VaultTags = any(VaultTags), SubscriptionId = any(SubscriptionId), ResourceGroupName = any(ResourceGroupName), AzureDataCenter = any(AzureDataCenter), StorageReplicationType = any(StorageReplicationType), ResourceId = any(ResourceId), TimeGenerated = any(TimeGenerated) by ProtectedContainerUniqueId, TimeRangeEndDay\n};\nlet TotalProtectedInstanceHistoryTable = (isProtectedContainerBillingType:bool) \n{union isfuzzy = true \n(ProtectedInstanceHistoryUnderAzureDiagnostics(isProtectedContainerBillingType) | where _ExcludeLegacyEvent == false),\n(ProtectedInstanceHistoryUnderResourceSpecific(isProtectedContainerBillingType))\n// ProtectedInstance is at BillingGroup level. CustomBackupManagementType can be the filter used.\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay\n};\nlet LatestProtectedInstanceHistoryTableFromProtectedContainerUniqueId = ()\n{ \nTotalProtectedInstanceHistoryTable(true) \n| join kind= rightouter (LatestProtectedContainerHistoryInfoTableExcludingDPMVMs) on ProtectedContainerUniqueId, TimeRangeEndDay\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementType = BackupManagementType1, BackupSolution, CustomBackupManagementType, BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, BillingGroupUniqueId = ProtectedContainerUniqueId1, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter,\nStorageReplicationType, ResourceId\n};\nlet LatestProtectedInstanceHistoryTableFromBackupItemUniqueId = ()\n{ \n(TotalProtectedInstanceHistoryTable(false) \n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\"))\n| join kind= rightouter (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where ((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \n or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n | extend CustomBackupManagementType = BackupManagementType) on BackupItemUniqueId, TimeRangeEndDay\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, CustomBackupManagementType, BackupManagementType, BackupSolution, BillingGroupType = \"Datasource\", BillingGroupFriendlyName = BackupItemFriendlyName, BillingGroupUniqueId = BackupItemUniqueId1, BillingGroupName = BackupItemName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\n// Special handling for DPM, AzureBackupServer Cluster scenario - Node PS has ProtectedInstance, whereas Cluster PS has storage Consumption\nlet LatestProtectedInstanceHistoryTableFromDPMNodeProtectedContainerUniqueId = ()\n{ \n((TotalProtectedInstanceHistoryTable(true) \n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where ProtectedInstanceCount > 0)\n| join kind= leftanti (LatestProtectedContainerHistoryInfoTableExcludingDPMVMs ) on ProtectedContainerUniqueId, TimeRangeEndDay\n| project ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay)\n| join (\nunion isfuzzy = true \n(ProtectedContainerUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ProtectedContainerUnderResourceSpecific())\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId)\n on ProtectedContainerUniqueId\n // BackupItemFrontEndSize and StorageConsumed will be 0.0 as the same will be calculated at cluster level \n // As it is DPM or AzureBackupServer, no extra handling needed for AzureWorkload\n // Ideally the TimeGenerated field should come from BackupItem/ProtectedContainer. This is a special case and we are getting the container properties from latest table and not from history table.\n| project TimeRangeEndDay, TimeGenerated, ProtectedInstanceCount, BackupItemFrontEndSize = 0.0, StorageConsumedInMBs = 0.0, BackupManagementType, CustomBackupManagementType = BackupManagementType, \nBackupSolution = iff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \"DPM\"), BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, \n BillingGroupUniqueId = ProtectedContainerUniqueId, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet ProtectedInstanceHistoryMetric = ( )\n{ union \n(LatestProtectedInstanceHistoryTableFromProtectedContainerUniqueId()),\n(LatestProtectedInstanceHistoryTableFromBackupItemUniqueId()),\n(LatestProtectedInstanceHistoryTableFromDPMNodeProtectedContainerUniqueId)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| project CustomBackupManagementType, BackupItemFrontEndSize, StorageConsumedInMBs, BillingGroupUniqueId, BillingGroupFriendlyName, BillingGroupName, ProtectedInstanceCount, BillingGroupType, TimeRangeEndDay, TimeGenerated, BackupManagementType, BackupSolution, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet FinalTable = () {ProtectedInstanceHistoryMetric\n};\n// Display Tweaks for AFS and null ProtectedInstanceCount\n// Billing Entity is at BackupManagementType level and not at DS level. \nlet FinalTable_V1Vault = () {FinalTable\n| project CustomBackupManagementType, BackupManagementType, BackupSolution, ProtectedInstanceCount = iff(isempty(ProtectedInstanceCount), 0.0 ,todouble(ProtectedInstanceCount)/10), StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), todouble(StorageConsumedInMBs)), BackupItemFrontEndSize = iff(isempty(BackupItemFrontEndSize), todouble(0), todouble(BackupItemFrontEndSize)), BillingGroupUniqueId, BillingGroupType, BillingGroupName, BillingGroupFriendlyName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, StorageReplicationType, ProtectedContainerName, TimeGenerated\n| project UniqueId = BillingGroupUniqueId, Name = BillingGroupName, Type = BillingGroupType, FriendlyName = BillingGroupFriendlyName, SourceSizeInMBs = BackupItemFrontEndSize, ExtendedProperties = pack(\"ProtectedInstanceCount\", ProtectedInstanceCount), VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, BackupSolution, VaultUniqueId, VaultName, VaultResourceId = ResourceId, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultTags, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-CoreAzureBackup": { + "runAfter": { + "Initialize_variable-AzureDiagnostics": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "CoreAzureBackup_Incomplete", + "type": "string", + "value": "let CoreAzureBackup = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-JobEmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-PolicyEmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "JobVisual", + "type": "string" + } + ] + } + }, + "Initialize_variable-JobFunction": { + "runAfter": { + "Initialize_variable-BackupInstanceTrendFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "JobFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n// Report filters\n@{variables('ReportFilter_Trend')}\nlet _ProtectionStateList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _JobOperationList = \"*\";\nlet _JobStatusList = \"*\";\nlet _JobFailureCodeList = \"*\";\nlet _ExcludeLog = true;\n// Other Vars\nlet ExtRangeStart = _RangeStart - 2d;\nlet ExtRangeEnd = _RangeEnd + 2d;\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet JobUnderAzureDiagnostics = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AzureDiagnostics \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"Job\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n// Exclude Log Jobs and InProgress Jobs\n| project JobOperation = columnifexists(\"JobOperation_s\", \"\") , JobOperationSubType = columnifexists(\"JobOperationSubType_s\", \"\"), JobUniqueIdGuid = columnifexists(\"JobUniqueId_g\", \"\") , JobUniqueIdStr = columnifexists(\"JobUniqueId_s\", \"\"),\nProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), AdHocOrScheduledJob = columnifexists(\"AdHocOrScheduledJob_s\",\"\"), RecoveryJobDestination = columnifexists(\"RecoveryJobDestination_s\",\"\"),\nRecoveryJobRPDateTime = todatetime(columnifexists(\"RecoveryJobRPDateTime_s\",\"\")), RecoveryJobRPLocation = columnifexists(\"RecoveryJobRPLocation_s\",\"\"), RecoveryLocationType = columnifexists(\"RecoveryLocationType_s\",\"\"),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\",\"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\",\"\"),\nJobStatus = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode = columnifexists(\"JobFailureCode_s\",\"\"), JobStartDateTime = todatetime(columnifexists(\"JobStartDateTime_s\",\"\")), JobDurationInSecs = todouble(columnifexists(\"JobDurationInSecs_s\", \"\")),\nDataTransferredInMB = todouble(columnifexists(\"DataTransferredInMB_s\",\"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\",\"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog) \n| extend JobUniqueId = iff(JobUniqueIdGuid == \"\", JobUniqueIdStr, JobUniqueIdGuid) \n| project-away JobUniqueIdGuid, JobUniqueIdStr\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId ;\nJobTable\n};\nlet JobUnderResourceSpecific = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AddonAzureBackupJobs \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Job\" \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog)\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId;\nJobTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet LatestBackupItemWithProtectedContainerTable = () \n{\nTotalBackupItemDimensionTable\n| join (union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics()| where _ExcludeLegacyEvent == false),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId) on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet JobFinalTable = (){\n union isfuzzy = true \n(JobUnderAzureDiagnostics(true)| where _ExcludeLegacyEvent == false),\n(JobUnderResourceSpecific(true))\n| project JobStatus, JobUniqueId, JobOperation, JobFailureCode, JobOperationSubType, JobStartDateTime, DataTransferredInMB, AdHocOrScheduledJob, JobDurationInSecs, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId, ProtectedContainerUniqueId, TimeGenerated \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId\n| where JobOperation in~ (_JobOperationList) or '*' in (_JobOperationList)\n| where JobStatus in~ (_JobStatusList) or '*' in (_JobStatusList)\n| where JobFailureCode in~ (_JobFailureCodeList) or '*' in (_JobFailureCodeList)\n| join kind= inner (LatestBackupItemWithProtectedContainerTable) on BackupItemUniqueId\n| project JobUniqueId, JobOperation, JobStatus, JobFailureCode, JobOperationSubType, JobStartDateTime, JobDurationInSecs, DataTransferredInMB, AdHocOrScheduledJob, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId = BackupItemUniqueId1, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, StorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(JobFinalTable)))\n| project UniqueId = JobUniqueId, OperationCategory = JobOperation, Operation = JobOperationSubType, Status = JobStatus, ErrorTitle = JobFailureCode, StartTime = JobStartDateTime, DurationInSecs = JobDurationInSecs, DataTransferredInMBs = DataTransferredInMB, RestoreJobRPDateTime = RecoveryJobRPDateTime, RestoreJobRPLocation = RecoveryJobRPLocation, BackupInstanceUniqueId = BackupItemUniqueId, BackupInstanceId, BackupInstanceFriendlyName = BackupItemFriendlyName, DatasourceResourceId, DatasourceFriendlyName = BackupItemFriendlyName, DatasourceType, BackupSolution, DatasourceSetResourceId, DatasourceSetType, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-PolicyAdherenceEmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-BackupInstanceEmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "PolicyAdherenceVisual", + "type": "string" + } + ] + } + }, + "Initialize_variable-PolicyEmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-BillingGroupTrendFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "PoliciesVisual", + "type": "string" + } + ] + } + }, + "Initialize_variable-PolicyFunction": { + "runAfter": { + "Initialize_variable-JobFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "PolicyFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')} \n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet PolicyWithExtendedPropsUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), PolicyTimeZone = columnifexists(\"PolicyTimeZone_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), DiffBackupFormat = columnifexists(\"DiffBackupFormat_s\", \"\"),\nDiffBackupDaysofTheWeek = columnifexists(\"DiffBackupDaysofTheWeek_s\", \"\"), DiffBackupRetentionDuration = toint(columnifexists(\"DiffBackupRetentionDuration_s\", \"\")), DiffBackupTime = columnifexists(\"DiffBackupTime_s\", \"\"), LogBackupFrequency = toint(columnifexists(\"LogBackupFrequency_s\", \"\")), LogBackupRetentionDuration = toint(columnifexists(\"LogBackupRetentionDuration_s\", \"\")),\nBackupFrequency = columnifexists(\"BackupFrequency_s\", \"\"), BackupTimes = columnifexists(\"BackupTimes_s\", \"\"), BackupDaysOfTheWeek = columnifexists(\"BackupDaysOfTheWeek_s\", \"\"), RetentionType = columnifexists(\"RetentionType_s\", \"\"), RetentionDuration = toint(columnifexists(\"RetentionDuration_s\", \"\")),\nDailyRetentionDuration = toint(columnifexists(\"DailyRetentionDuration_s\", \"\")), DailyRetentionTimes = columnifexists(\"DailyRetentionTimes_s\", \"\"), \nWeeklyRetentionDuration = toint(columnifexists(\"WeeklyRetentionDuration_s\", \"\")), WeeklyRetentionTimes = columnifexists(\"WeeklyRetentionTimes_s\", \"\"), WeeklyRetentionDaysOfTheWeek = columnifexists(\"WeeklyRetentionDaysOfTheWeek_s\", \"\"),\nMonthlyRetentionDuration = toint(columnifexists(\"MonthlyRetentionDuration_s\", \"\")), MonthlyRetentionTimes = columnifexists(\"MonthlyRetentionTimes_s\", \"\"), MonthlyRetentionFormat = columnifexists(\"MonthlyRetentionFormat_s\", \"\"), MonthlyRetentionDaysOfTheMonth = columnifexists(\"MonthlyRetentionDaysOfTheMonth_s\", \"\"), MonthlyRetentionDaysOfTheWeek = columnifexists(\"MonthlyRetentionDaysOfTheWeek_s\", \"\"), MonthlyRetentionWeeksOfTheMonth = columnifexists(\"MonthlyRetentionWeeksOfTheMonth_s\", \"\"),\nYearlyRetentionDuration = toint(columnifexists(\"YearlyRetentionDuration_s\", \"\")), YearlyRetentionTimes = columnifexists(\"YearlyRetentionTimes_s\", \"\"), YearlyRetentionMonthsOfTheYear = columnifexists(\"YearlyRetentionMonthsOfTheYear_s\", \"\"), YearlyRetentionFormat = columnifexists(\"YearlyRetentionFormat_s\", \"\"), YearlyRetentionDaysOfTheMonth = columnifexists(\"YearlyRetentionDaysOfTheMonth_s\", \"\"), YearlyRetentionDaysOfTheWeek = columnifexists(\"YearlyRetentionDaysOfTheWeek_s\", \"\"), YearlyRetentionWeeksOfTheMonth = columnifexists(\"YearlyRetentionWeeksOfTheMonth_s\", \"\"), ResourceId, TimeGenerated\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), ResourceId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated;\n PolicyTable \n};\nlet PolicyWithExtendedPropsUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where OperationName == \"Policy\" \n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated;\n PolicyTable \n};\nlet PolicyHistoryWithExtendedPropsUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), PolicyTimeZone = columnifexists(\"PolicyTimeZone_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), DiffBackupFormat = columnifexists(\"DiffBackupFormat_s\", \"\"),\nDiffBackupDaysofTheWeek = columnifexists(\"DiffBackupDaysofTheWeek_s\", \"\"), DiffBackupRetentionDuration = toint(columnifexists(\"DiffBackupRetentionDuration_s\", \"\")), DiffBackupTime = columnifexists(\"DiffBackupTime_s\", \"\"), LogBackupFrequency = toint(columnifexists(\"LogBackupFrequency_s\", \"\")), LogBackupRetentionDuration = toint(columnifexists(\"LogBackupRetentionDuration_s\", \"\")),\nBackupFrequency = columnifexists(\"BackupFrequency_s\", \"\"), BackupTimes = columnifexists(\"BackupTimes_s\", \"\"), BackupDaysOfTheWeek = columnifexists(\"BackupDaysOfTheWeek_s\", \"\"), RetentionType = columnifexists(\"RetentionType_s\", \"\"), RetentionDuration = toint(columnifexists(\"RetentionDuration_s\", \"\")),\nDailyRetentionDuration = toint(columnifexists(\"DailyRetentionDuration_s\", \"\")), DailyRetentionTimes = columnifexists(\"DailyRetentionTimes_s\", \"\"), \nWeeklyRetentionDuration = toint(columnifexists(\"WeeklyRetentionDuration_s\", \"\")), WeeklyRetentionTimes = columnifexists(\"WeeklyRetentionTimes_s\", \"\"), WeeklyRetentionDaysOfTheWeek = columnifexists(\"WeeklyRetentionDaysOfTheWeek_s\", \"\"),\nMonthlyRetentionDuration = toint(columnifexists(\"MonthlyRetentionDuration_s\", \"\")), MonthlyRetentionTimes = columnifexists(\"MonthlyRetentionTimes_s\", \"\"), MonthlyRetentionFormat = columnifexists(\"MonthlyRetentionFormat_s\", \"\"), MonthlyRetentionDaysOfTheMonth = columnifexists(\"MonthlyRetentionDaysOfTheMonth_s\", \"\"), MonthlyRetentionDaysOfTheWeek = columnifexists(\"MonthlyRetentionDaysOfTheWeek_s\", \"\"), MonthlyRetentionWeeksOfTheMonth = columnifexists(\"MonthlyRetentionWeeksOfTheMonth_s\", \"\"),\nYearlyRetentionDuration = toint(columnifexists(\"YearlyRetentionDuration_s\", \"\")), YearlyRetentionTimes = columnifexists(\"YearlyRetentionTimes_s\", \"\"), YearlyRetentionMonthsOfTheYear = columnifexists(\"YearlyRetentionMonthsOfTheYear_s\", \"\"), YearlyRetentionFormat = columnifexists(\"YearlyRetentionFormat_s\", \"\"), YearlyRetentionDaysOfTheMonth = columnifexists(\"YearlyRetentionDaysOfTheMonth_s\", \"\"), YearlyRetentionDaysOfTheWeek = columnifexists(\"YearlyRetentionDaysOfTheWeek_s\", \"\"), YearlyRetentionWeeksOfTheMonth = columnifexists(\"YearlyRetentionWeeksOfTheMonth_s\", \"\"), ResourceId, TimeGenerated\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), ResourceId, TimeRangeEndDay = startofday(TimeGenerated)\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\nPolicyTable\n};\nlet PolicyHistoryWithExtendedPropsUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId, TimeRangeEndDay = startofday(TimeGenerated)\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n PolicyTable \n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\n// Business Logic\nlet ActivePolicyUnderAzureDiagnostics = ()\n{\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderAzureDiagnostics() | join kind = inner\n\t(BackupItemAssociationUnderAzureDiagnostics() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter\n\t| join kind= inner (\n\t PolicyWithExtendedPropsUnderAzureDiagnostics ) on ResourceId, PolicyUniqueId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated;\n\t};\nBIA_Policy\n};\nlet ActivePolicyUnderResourceSpecific = ()\n{\t\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderResourceSpecific() | join kind = inner\n\t(BackupItemAssociationUnderResourceSpecific() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter\n\t| join kind= inner (\n\t PolicyWithExtendedPropsUnderResourceSpecific ) on ResourceId, PolicyUniqueId\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated;\n\t};\nBIA_Policy\n};\nlet ActivePolicyHistoryUnderAzureDiagnostics = ()\n{\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderAzureDiagnostics() | join kind = inner\n\t(BackupItemAssociationHistoryUnderAzureDiagnostics() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeRangeEndDay\t\n\t| join kind= inner (\n\t PolicyHistoryWithExtendedPropsUnderAzureDiagnostics ) on ResourceId, PolicyUniqueId, TimeRangeEndDay\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n\t};\nBIA_Policy\n};\nlet ActivePolicyHistoryUnderResourceSpecific = ()\n{\t\t\n\tlet BIA_Policy = ()\n\t{\t\n\tBackupItemUnderResourceSpecific() | join kind = inner\n\t(BackupItemAssociationHistoryUnderResourceSpecific() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeRangeEndDay\n\t| join kind= inner (\n\t PolicyHistoryWithExtendedPropsUnderResourceSpecific ) on ResourceId, PolicyUniqueId, TimeRangeEndDay\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n\t};\nBIA_Policy\n};\nlet PolicyExtended_LatestTable = () {\nunion\n(ActivePolicyUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ActivePolicyUnderResourceSpecific())\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId};\nlet PolicyExtended_HistoryTable = () {\nunion\n(ActivePolicyHistoryUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ActivePolicyHistoryUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId, TimeRangeEndDay};\nlet FinalTable_V1Vault = () {union (PolicyExtended_LatestTable | where (_RangeEnd-_RangeStart == 1d)), (PolicyExtended_HistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project UniqueId = PolicyUniqueId, Name = PolicyName, TimeZone = PolicyTimeZone, Id = strcat(ResourceId, \"/backupPolicies/\", PolicyName), \nBackupFrequency = iff(isnotempty(BackupFrequency), pack(\"BackupFrequency\", BackupFrequency), dynamic(null)),\nDiffBackupFormat = iff(isnotempty(DiffBackupFormat), pack(\"DiffBackupFormat\", DiffBackupFormat), dynamic(null)),\nLogBackupFrequency = iff(isnotempty(LogBackupFrequency), pack(\"LogBackupFrequency\", LogBackupFrequency), dynamic(null)),\nDailyRetentionDuration = iff(isnotempty(DailyRetentionDuration), pack(\"DailyRetentionDuration\", DailyRetentionDuration), dynamic(null)),\nWeeklyRetentionDuration = iff(isnotempty(WeeklyRetentionDuration), pack(\"WeeklyRetentionDuration\", WeeklyRetentionDuration), dynamic(null)),\nMonthlyRetentionDuration = iff(isnotempty(MonthlyRetentionDuration), pack(\"MonthlyRetentionDuration\", MonthlyRetentionDuration), dynamic(null)),\nYearlyRetentionDuration = iff(isnotempty(YearlyRetentionDuration), pack(\"YearlyRetentionDuration\", YearlyRetentionDuration), dynamic(null)),\nDiffBackupRetentionDuration = iff(isnotempty(DiffBackupRetentionDuration), pack(\"DiffBackupRetentionDuration\", DiffBackupRetentionDuration), dynamic(null)),\nLogBackupRetentionDuration = iff(isnotempty(LogBackupRetentionDuration), pack(\"LogBackupRetentionDuration\", LogBackupRetentionDuration), dynamic(null)),\nBackupSolution, TimeGenerated, VaultUniqueId, VaultResourceId = ResourceId, VaultName, VaultTags, VaultLocation = AzureDataCenter, VaultSubscriptionId = SubscriptionId, VaultStore_StorageReplicationType = StorageReplicationType,VaultType = \"Microsoft.Recoveryservices/vaults\"\n| project UniqueId, Name, TimeZone, Id, BackupSolution, TimeGenerated, VaultUniqueId, VaultResourceId, VaultName, VaultTags, VaultLocation, VaultSubscriptionId, VaultStore_StorageReplicationType, VaultType, ExtendedProperties = bag_merge(BackupFrequency, DiffBackupFormat, LogBackupFrequency, DailyRetentionDuration, WeeklyRetentionDuration, MonthlyRetentionDuration, YearlyRetentionDuration, DiffBackupRetentionDuration, LogBackupRetentionDuration)\n};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-ReportFilterForHistoricalData": { + "runAfter": { + "Initialize_variable-UnionOfWorkspaces": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Trend", + "type": "string", + "value": "let _RangeStart = iff((datetime(@{parameters('startDate')}) == datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('startDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');\nlet _AggregationType = @{parameters('aggregationType')};" + } + ] + } + }, + "Initialize_variable-ReportFilterForLatestData": { + "runAfter": { + "Initialize_variable-ReportFilterForHistoricalData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Latest", + "type": "string", + "value": "let _RangeStart = iff(( datetime(@{parameters('endDate')})== datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('endDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');" + } + ] + } + }, + "Initialize_variable-UnionOfWorkspaces": { + "runAfter": { + "For_each": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "workspacesToQuery_Custom", + "type": "string", + "value": "@{concat(concat(substring(variables('AddonAzureBackupStorage_Incomplete'),0,sub(length(variables('AddonAzureBackupStorage_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupProtectedInstance_Incomplete'),0,sub(length(variables('AddonAzureBackupProtectedInstance_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupPolicy_Incomplete'),0,sub(length(variables('AddonAzureBackupPolicy_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupJobs_Incomplete'),0,sub(length(variables('AddonAzureBackupJobs_Incomplete')),1)),'};'),\r\nconcat(substring(variables('CoreAzureBackup_Incomplete'),0,sub(length(variables('CoreAzureBackup_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AzureDiagnostics_Incomplete'),0,sub(length(variables('AzureDiagnostics_Incomplete')),1)),'};'))}" + } + ] + } + }, + "Scope": { + "actions": { + "Create_CSV_table-BackupInstanceList": { + "runAfter": { + "Run_query_and_list_results-BackupInstanceList": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-BackupInstanceList')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-BackupInstanceList')?['value'])" + } + }, + "Create_CSV_table-JobList": { + "runAfter": { + "Run_query_and_list_results-JobList": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-JobList')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-JobList')?['value'])" + } + }, + "Run_query_and_list_results-BackupInstanceList": { + "runAfter": { + "Run_query_and_visualize_results-BackupInstanceTabCloudStorageTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceFunction')}\n| project Id, BackupInstance=FriendlyName, Container=DatasourceSetFriendlyName, ResourceGroup=iff(DatasourceType==\"Azure Backup Agent\" or DatasourceType==\"Azure Backup Server\" or DatasourceType==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), Policy=PolicyName, CloudStorage=VaultStore_StorageConsumptionInMBs/1024, Vault=VaultResourceId, StorageReplicationType=VaultStore_StorageReplicationType, AzureResource=DatasourceSetResourceId, DatasourceType", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-JobList": { + "runAfter": { + "Run_query_and_visualize_results-JobStatus": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('JobFunction')}\n| project BackupInstance=BackupInstanceFriendlyName, BackupInstanceId, Container=DatasourceSetFriendlyName, ResourceGroup=iff(DatasourceType==\"Azure Backup Agent\" or DatasourceType==\"Azure Backup Server\" or DatasourceType==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), OperationCategory, JobStatus=Status, JobStartDateTime=StartTime, JobDuration=DurationInSecs/3600, ErrorTitle, DataTransferred=DataTransferredInMBs, AzureResource=DatasourceSetResourceId, DatasourceType ", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_visualize_results-BackupInstanceTabCloudStorageTrend": { + "runAfter": { + "Run_query_and_visualize_results-BackupInstanceTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceTrendFunction')}\n// query to transform function output\n| summarize StorageConsumedInGBs = sum(VaultStore_StorageConsumptionInMBs)/(1024) by TimeRangeEndDay = startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Run_query_and_visualize_results-BackupInstanceTrend": { + "runAfter": { + "Set_variable-JobEmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceTrendFunction')}\n// query to transform function output\n| summarize BackupItemCount = count(UniqueId) by startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Run_query_and_visualize_results-JobFailureCode": { + "runAfter": { + "Run_query_and_visualize_results-JobOperation": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('JobFunction')}\n// query to transform function output\n| where Status == \"Failed\"\n| summarize JobFailureCode = any(ErrorTitle), JobOperation = any(OperationCategory) by UniqueId\n| summarize count(JobOperation) by JobFailureCode\n| sort by count_JobOperation", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Pie Chart" + } + } + }, + "Run_query_and_visualize_results-JobOperation": { + "type": "ApiConnection", + "inputs": { + "body": "@{variables('JobFunction')}\n// query to transform function output\n| summarize Status = any(Status), Operation = any(OperationCategory) by UniqueId\n| summarize count(Status) by Operation\n| sort by Operation", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Bar Chart" + } + } + }, + "Run_query_and_visualize_results-JobStatus": { + "runAfter": { + "Run_query_and_visualize_results-JobFailureCode": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('JobFunction')}\n// query to transform function output\n| summarize arg_max(TimeGenerated, Status) by UniqueId\n| summarize count(Status) by Status, bin(TimeGenerated, 1d)\n| project TimeGenerated, count_Status, JobStatus = ( iff(Status == \"Completed\", \"Succeeded\", iff(Status == \"CompletedWithWarnings\", \"SucceededWithWarnings\", Status)))\n| sort by TimeGenerated asc", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Bar Chart" + } + } + }, + "Set_variable-BackupInstanceEmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-BackupInstanceList": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "BackupInstanceVisual", + "value": "
\n

Backup Instances Trend

\n
\n\n
\n

Cloud Storage Trend

\n
\n\n
\n
" + } + }, + "Set_variable-JobEmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-JobList": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "JobVisual", + "value": "
\n

Jobs by Status

\n
\n\n
\n

Jobs by JobOperation

\n
\n\n
\n

Jobs by Failure Code

\n
\n\n
\n
" + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + }, + "Scope-2": { + "actions": { + "Create_CSV_table-BillingGroupList": { + "runAfter": { + "Run_query_and_list_results-BillingGroupList": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-BillingGroupList')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-BillingGroupList')?['value'])" + } + }, + "Create_CSV_table-ByBackupInstance-ItemsBackedupDaily": { + "runAfter": { + "Run_query_and_list_results-ByBackupInstance-ItemsBackedupWeekly": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-ByBackupInstance-ItemsBackedupDaily')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-ByBackupInstance-ItemsBackedupDaily')?['value'])" + } + }, + "Create_CSV_table-ByBackupInstance-ItemsBackedupWeekly": { + "runAfter": { + "Create_CSV_table-ByBackupInstance-ItemsBackedupDaily": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-ByBackupInstance-ItemsBackedupWeekly')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-ByBackupInstance-ItemsBackedupWeekly')?['value'])" + } + }, + "Run_query_and_list_results-BillingGroupList": { + "runAfter": { + "Run_query_and_visualize_results-BillingGroupTabCloudStorageTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BillingGroupFunction')}\n| extend name_array = split(Name,\";\")\n| extend name_arraylen = array_length(name_array)\n| project BilledEntity=FriendlyName, BilledEntityResourceGroup=iff(name_arraylen == 3, name_array[(name_arraylen-2)], \"(none)\"), BilledEntityType=Type, BackupSolution, ProtectedInstances=todouble(parse_json(ExtendedProperties).ProtectedInstanceCount), CloudStorage=VaultStore_StorageConsumptionInMBs/1024, StorageReplicationType=VaultStore_StorageReplicationType, Vault=VaultResourceId, VaultResourceGroup=split(split(tolower(VaultResourceId), '/resourcegroups/')[1],'/')[0], Subscription=VaultSubscriptionId", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-ByBackupInstance-ItemsBackedupDaily": { + "runAfter": { + "Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupWeekly": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = startofday(datetime(@{parameters('startDate')}));\nlet RangeEnd = startofday(datetime(@{parameters('endDate')}));\nlet aggregationTypeParam = @{parameters('aggregationType')};\nlet BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet JobFunctionRedirect = ()\n{\n@{variables('JobFunction')}\n| where OperationCategory == \"Backup\"\n};\n// Grid specific params\nlet bin_Value = iff(aggregationTypeParam == \"Weekly\", 7d, iff(aggregationTypeParam == \"Monthly\", 28d, 1d));\nlet sum_isJobSuccessInTheTimePeriod_Value = iff(aggregationTypeParam == \"Weekly\", \"7\", iff(aggregationTypeParam == \"Monthly\", \"28\", \"1\")); \nlet duration_Value = iff(aggregationTypeParam == \"Weekly\", \"6.00:00:00\", iff(aggregationTypeParam == \"Monthly\", \"27.00:00:00\", \"00.00:00:00\")); \nlet BackupInstanceWithDailyBackup = (){\nBackupInstanceRedirect\n| join kind = inner (\n// calling LA System Function\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Daily\"\n};\n// Grid Logic\nlet JobInfo = ()\n{\nJobFunctionRedirect\n| join kind = inner (BackupInstanceWithDailyBackup) on $left.BackupInstanceUniqueId == $right.UniqueId\n| summarize jobCount = count(), jobSuccessCount = countif(Status == \"Completed\" or Status == \"CompletedWithWarnings\"), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId=any(BackupInstanceId), BackupSolution = any(BackupSolution), DatasourceSetResourceId = any(DatasourceSetResourceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName) by BackupInstanceUniqueId, JobCreationDate = startofday(StartTime)\n| project ResourceGroup=iff(BackupSolution ==\"Azure Backup Agent\" or BackupSolution ==\"Azure Backup Server\" or BackupSolution ==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]), jobCount, jobSuccessCount, BackupInstanceFriendlyName, BackupInstanceUniqueId, DatasourceSetFriendlyName, JobCreationDate, BackupInstanceId\n};\nJobInfo\n| summarize by BackupInstanceUniqueId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, BackupInstanceId\n| extend Day = range(RangeEnd, RangeStart, -1d)\n| mv-expand Day\n| project BackupInstanceUniqueId, BackupInstanceFriendlyName, BackupInstanceId, DatasourceSetFriendlyName, ResourceGroup, todatetime(Day)\n| join kind = leftouter \n( JobInfo\n) on BackupInstanceUniqueId, $left.Day == $right.JobCreationDate\n| sort by BackupInstanceUniqueId, Day desc\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, Day, jobTotalCountInTheTimePeriod = iff(isnull(jobCount), 0, jobCount), isJobSuccessInTheTimePeriod =iff(isnull(jobCount), 0, iff((jobSuccessCount > 1), 1, jobSuccessCount))\n| summarize max(Day), min(Day), sum(isJobSuccessInTheTimePeriod), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName),BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, bin_at(Day, bin_Value, RangeEnd + 1d)\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, Period = iff(aggregationTypeParam == \"Weekly\" or aggregationTypeParam == \"Monthly\", strcat(format_datetime(todatetime(min_Day),\"yyyy/MM/dd\"), \" - \", format_datetime(todatetime(max_Day),\"yyyy/MM/dd\")), format_datetime(todatetime(min_Day),\"yyyy/MM/dd\")), sum_isJobSuccessInTheTimePeriod, duration = max_Day - min_Day, Day\n// Exclude partial week/month\n| where duration == duration_Value\n| summarize sum_isJobSuccessInTheTimePeriod = countif(sum_isJobSuccessInTheTimePeriod == sum_isJobSuccessInTheTimePeriod_Value), Day= (any(Day)), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, Period\n| evaluate pivot(Period, any(sum_isJobSuccessInTheTimePeriod), BackupInstanceFriendlyName, BackupInstanceId, BackupInstanceUniqueId, DatasourceSetFriendlyName, ResourceGroup)\n| sort by BackupInstanceUniqueId asc", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "WonderDemoMonitoringRG", + "resourcename": "WonderDemoMonitoring", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "ef4ab5a7-c2c0-4304-af80-af49f48af3d1", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-ByBackupInstance-ItemsBackedupWeekly": { + "runAfter": { + "Run_query_and_list_results-ByBackupInstance-ItemsBackedupDaily": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = startofday(datetime(@{parameters('startDate')}));\nlet RangeEnd = startofday(datetime(@{parameters('endDate')}));\nlet aggregationTypeParam = @{parameters('aggregationType')};\nlet BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet JobFunctionRedirect = ()\n{\n@{variables('JobFunction')}\n| where OperationCategory == \"Backup\"\n};\n// Grid specific params\nlet bin_Value = iff(aggregationTypeParam == \"Monthly\", 28d, 7d);\nlet sum_isJobSuccessInTheTimePeriod_Value = iff(aggregationTypeParam == \"Monthly\", \"4\", \"1\"); \nlet duration_Value = iff(aggregationTypeParam == \"Monthly\", \"27.00:00:00\", \"6.00:00:00\"); \nlet BackupInstanceWithWeeklyBackup = (){\nBackupInstanceRedirect\n| join kind = inner (\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Weekly\"\n};\n// Grid Logic\nlet JobInfo = ()\n{\nJobFunctionRedirect\n| join kind = inner (BackupInstanceWithWeeklyBackup) on $left.BackupInstanceUniqueId == $right.UniqueId\n| summarize jobCount = count(), jobSuccessCount = countif(Status == \"Completed\" or Status == \"CompletedWithWarnings\"), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId = any(BackupInstanceId), BackupSolution = any(BackupSolution), DatasourceSetResourceId = any(DatasourceSetResourceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName) by BackupInstanceUniqueId, JobCreationDate = startofday(StartTime)\n| project ResourceGroup=iff(BackupSolution ==\"Azure Backup Agent\" or BackupSolution ==\"Azure Backup Server\" or BackupSolution ==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]), jobCount, jobSuccessCount, BackupInstanceFriendlyName, BackupInstanceUniqueId, DatasourceSetFriendlyName, JobCreationDate, BackupInstanceId\n};\nJobInfo\n| summarize by BackupInstanceUniqueId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, BackupInstanceId\n| extend Day = range(RangeEnd, RangeStart, -1d)\n| mv-expand Day\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, todatetime(Day)\n| join kind = leftouter \n( JobInfo\n) on BackupInstanceUniqueId, $left.Day == $right.JobCreationDate\n| sort by BackupInstanceUniqueId, Day desc\n// Create weekly buckets to check if SLA met\n| summarize max(Day), min(Day), sum(jobSuccessCount), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName),BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, bin_at(Day, 7d, RangeEnd + 1d)\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, Day, sum_isJobSuccessInTheTimePeriod = iff(sum_jobSuccessCount > 1, 1, sum_jobSuccessCount), max_Day, min_Day\n| summarize max_Day = max(max_Day), min_Day = min(min_Day), sum_isJobSuccessInTheTimePeriod = sum(sum_isJobSuccessInTheTimePeriod), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, Day = bin_at(Day, bin_Value, RangeEnd + 1d)\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, Period = strcat(format_datetime(todatetime(min_Day),\"yyyy/MM/dd\"), \" - \", format_datetime(todatetime(max_Day),\"yyyy/MM/dd\")), sum_isJobSuccessInTheTimePeriod, duration = max_Day - min_Day, Day\n// Exclude partial week/month\n| where duration == duration_Value\n| summarize sum_isJobSuccessInTheTimePeriod = countif(sum_isJobSuccessInTheTimePeriod == sum_isJobSuccessInTheTimePeriod_Value), Day= (any(Day)), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, Period\n| evaluate pivot(Period, any(sum_isJobSuccessInTheTimePeriod), BackupInstanceFriendlyName, BackupInstanceId, BackupInstanceUniqueId, DatasourceSetFriendlyName, ResourceGroup)\n| sort by BackupInstanceUniqueId asc", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "WonderDemoMonitoringRG", + "resourcename": "WonderDemoMonitoring", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "ef4ab5a7-c2c0-4304-af80-af49f48af3d1", + "timerange": "Set in query" + } + } + }, + "Run_query_and_visualize_results-BillingGroupTabCloudStorageTrend": { + "runAfter": { + "Run_query_and_visualize_results-BillingGroupTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BillingGroupTrendFunction')}\n// query to transform function output\n| summarize StorageConsumedInGBs = sum(VaultStore_StorageConsumptionInMBs)/1024 by startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Run_query_and_visualize_results-BillingGroupTrend": { + "runAfter": { + "Run_query_and_visualize_results-SummaryGrid": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BillingGroupTrendFunction')}\n// query to transform function output\n| summarize ProtectedInstanceCount = sum(todouble(parse_json(ExtendedProperties).ProtectedInstanceCount)) by startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupDaily": { + "runAfter": { + "Set_variable-BillingGroupEmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = startofday(datetime(@{parameters('startDate')}));\nlet RangeEnd = startofday(datetime(@{parameters('endDate')}));\nlet aggregationTypeParam = @{parameters('aggregationType')};\nlet BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet JobFunctionRedirect = ()\n{\n@{variables('JobFunction')}\n| where OperationCategory == \"Backup\"\n};\n// Grid specific params\nlet bin_Value = iff(aggregationTypeParam == \"Weekly\", 7d, iff(aggregationTypeParam == \"Monthly\", 28d, 1d));\nlet sum_isJobSuccessInTheTimePeriod_Value = iff(aggregationTypeParam == \"Weekly\", \"7\", iff(aggregationTypeParam == \"Monthly\", \"28\", \"1\")); \nlet duration_Value = iff(aggregationTypeParam == \"Weekly\", \"6.00:00:00\", iff(aggregationTypeParam == \"Monthly\", \"27.00:00:00\", \"00.00:00:00\")); \nlet BackupInstanceWithDailyBackup = (){\nBackupInstanceRedirect\n| join kind = inner (\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Daily\"\n};\n// Grid Logic\nlet JobInfo = ()\n{\n// calling LA System Function\nJobFunctionRedirect\n| join kind = inner (BackupInstanceWithDailyBackup) on $left.BackupInstanceUniqueId == $right.UniqueId\n| summarize jobCount =count(), jobSuccessCount = countif(Status == \"Completed\" or Status == \"CompletedWithWarnings\"), jobFailureCount = countif(Status == \"Failed\" or Status == \"Cancelled\") by BackupInstanceUniqueId, JobCreationDate = startofday(StartTime)\n};\nJobInfo\n| summarize by BackupInstanceUniqueId\n| extend Day = range(RangeEnd, RangeStart, -1d)\n| mv-expand Day\n| project BackupInstanceUniqueId, todatetime(Day)\n| join kind = leftouter \n( JobInfo\n) on BackupInstanceUniqueId, $left.Day == $right.JobCreationDate\n// calculating isJobSuccess in the timeperiod to determine if it is successfull throughout the timeperiod\n| project BackupInstanceUniqueId, Day, isJobSuccessInTheTimePeriod =iff(isnull(jobCount), 0, iff((jobSuccessCount > 1), 1, jobSuccessCount)), jobFailureCount\n| summarize max(Day), min(Day), sum(isJobSuccessInTheTimePeriod), sum(jobFailureCount) by BackupInstanceUniqueId, bin_at(Day, bin_Value, RangeEnd + 1d)\n//| where BackupInstanceUniqueId in (\"westus;1541146419693764636;iaasvmcontainerv2;arult-test;cvarshrbac\",\"southeastasia;7777938885731870052;iaasvmcontainerv2;trinadhkselfhostrg;databasevm8\")\n| project BackupInstanceUniqueId, Period = iff(aggregationTypeParam == \"Weekly\" or aggregationTypeParam == \"Monthly\", strcat(format_datetime(todatetime(min_Day),\"yyyy/MM/dd\"), \" - \", format_datetime(todatetime(max_Day),\"yyyy/MM/dd\")), format_datetime(todatetime(min_Day),\"yyyy/MM/dd\")), sum_isJobSuccessInTheTimePeriod, sum_jobFailureCount, duration = max_Day - min_Day, Day\n// Exclude partial week/month\n| where duration == duration_Value\n| summarize ItemsWithSuccessfulDailyBackup = countif(sum_isJobSuccessInTheTimePeriod == sum_isJobSuccessInTheTimePeriod_Value), ItemsWithoutSuccessfulDailyBackup = countif(sum_isJobSuccessInTheTimePeriod != sum_isJobSuccessInTheTimePeriod_Value), Day= (any(Day)), sum_jobFailureCount = any(sum_jobFailureCount) by BackupInstanceUniqueId, Period\n| summarize ItemsWithSuccessfulDailyBackup = sum(ItemsWithSuccessfulDailyBackup), ItemsWithoutSuccessfulDailyBackup = sum(ItemsWithoutSuccessfulDailyBackup), FailedBackupJobs = sum(sum_jobFailureCount), RangeStartValue = (any(Day)) by Period\n| sort by RangeStartValue desc | project-away RangeStartValue", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "WonderDemoMonitoringRG", + "resourcename": "WonderDemoMonitoring", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "ef4ab5a7-c2c0-4304-af80-af49f48af3d1", + "timerange": "Set in query", + "visType": "Html Table" + } + } + }, + "Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupWeekly": { + "runAfter": { + "Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupDaily": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = startofday(datetime(@{parameters('startDate')}));\nlet RangeEnd = startofday(datetime(@{parameters('endDate')}));\nlet aggregationTypeParam = @{parameters('aggregationType')};\nlet BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet JobFunctionRedirect = ()\n{\n@{variables('JobFunction')}\n| where OperationCategory == \"Backup\"\n};\nlet bin_Value = iff(aggregationTypeParam == \"Monthly\", 28d, 7d);\nlet sum_isJobSuccessInTheTimePeriod_Value = iff(aggregationTypeParam == \"Monthly\", \"4\", \"1\"); \nlet duration_Value = iff(aggregationTypeParam == \"Monthly\", \"27.00:00:00\", \"6.00:00:00\"); \nlet BackupInstanceWithWeeklyBackup = (){\nBackupInstanceRedirect\n| join kind = inner (\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Weekly\"\n};\n// Grid Logic\nlet JobInfo = ()\n{\nJobFunctionRedirect\n| join kind = inner (BackupInstanceWithWeeklyBackup) on $left.BackupInstanceUniqueId == $right.UniqueId\n| summarize jobCount =count(), jobSuccessCount = countif(Status == \"Completed\" or Status == \"CompletedWithWarnings\"), jobFailureCount = countif(Status == \"Failed\" or Status == \"Cancelled\") by BackupInstanceUniqueId, JobCreationDate = startofday(StartTime)\n};\nJobInfo\n| summarize by BackupInstanceUniqueId\n| extend Day = range(RangeEnd, RangeStart, -1d)\n| mv-expand Day\n| project BackupInstanceUniqueId, todatetime(Day)\n| join kind = leftouter \n( JobInfo\n) on BackupInstanceUniqueId, $left.Day == $right.JobCreationDate\n// Create weekly buckets to check if SLA met\n| summarize max(Day), min(Day), sum(jobSuccessCount), sum(jobFailureCount) by BackupInstanceUniqueId, bin_at(Day, 7d, RangeEnd + 1d)\n| project BackupInstanceUniqueId, Day, sum_isJobSuccessInTheTimePeriod = iff(sum_jobSuccessCount > 1, 1, sum_jobSuccessCount), sum_jobFailureCount, max_Day, min_Day\n| summarize max_Day = max(max_Day), min_Day = min(min_Day), sum_isJobSuccessInTheTimePeriod = sum(sum_isJobSuccessInTheTimePeriod), sum_jobFailureCount = sum(sum_jobFailureCount) by BackupInstanceUniqueId, Day = bin_at(Day, bin_Value, RangeEnd + 1d)\n| project BackupInstanceUniqueId, Period = strcat(format_datetime(todatetime(min_Day),\"yyyy/MM/dd\"), \" - \", format_datetime(todatetime(max_Day),\"yyyy/MM/dd\")), sum_isJobSuccessInTheTimePeriod, sum_jobFailureCount, duration = max_Day - min_Day, Day\n// Exclude partial week/month\n| where duration == duration_Value\n| summarize ItemsWithSuccessfulWeeklyBackup = countif(sum_isJobSuccessInTheTimePeriod == sum_isJobSuccessInTheTimePeriod_Value), ItemsWithoutSuccessfulWeeklyBackup = countif(sum_isJobSuccessInTheTimePeriod != sum_isJobSuccessInTheTimePeriod_Value), Day= (any(Day)), sum_jobFailureCount = any(sum_jobFailureCount) by BackupInstanceUniqueId, Period\n| summarize ItemsWithSuccessfulWeeklyBackup = sum(ItemsWithSuccessfulWeeklyBackup), ItemsWithoutSuccessfulWeeklyBackup = sum(ItemsWithoutSuccessfulWeeklyBackup), FailedBackupJobs = sum(sum_jobFailureCount), RangeStartValue = (any(Day)) by Period\n| sort by RangeStartValue desc | project-away RangeStartValue\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "WonderDemoMonitoringRG", + "resourcename": "WonderDemoMonitoring", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "ef4ab5a7-c2c0-4304-af80-af49f48af3d1", + "timerange": "Set in query", + "visType": "Html Table" + } + } + }, + "Run_query_and_visualize_results-SummaryGrid": { + "type": "ApiConnection", + "inputs": { + "body": "let BackupInstanceDetails = (){\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n// query to transform function output\n| summarize BackupInstances=count(UniqueId), CloudStorage=sum(VaultStore_StorageConsumptionInMBs)/(1024) by BackupSolution\n};\nlet JobSuccessPercentageTable = (){\n// calling LA System Function\n@{variables('JobFunction')}\n// query to transform function output\n| extend success=iff((Status == \"Completed\" or Status == \"CompletedWithWarnings\") , 1 , 0)\n| extend record = iff(UniqueId != \"\", 1, 0) // to be used for total row count\n| summarize SuccessfulCount =sum(success), TotalCount=sum(record) by BackupSolution\n| extend JobSuccessPercentage = (SuccessfulCount*100)/todouble(TotalCount)\n| project-away SuccessfulCount, TotalCount\n};\nBackupInstanceDetails | join kind = leftouter (JobSuccessPercentageTable) on BackupSolution | project-away BackupSolution1 | project BackupSolution, BackupInstances, JobSuccessPercentage=iff( (isnan( JobSuccessPercentage) or isinf( JobSuccessPercentage) or isempty( JobSuccessPercentage)), \"-\", strcat(tostring(round( JobSuccessPercentage,2)), \" %\")), CloudStorage", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Html Table" + } + } + }, + "Set_variable-BillingGroupEmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-BillingGroupList": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "BillingGroupVisual", + "value": "
\n

Protected Instances Trend

\n
\n\n
\n

Cloud Storage Trend

\n
\n\n
\n
" + } + }, + "Set_variable-PolicyAdherenceEmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-ByBackupInstance-ItemsBackedupWeekly": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "PolicyAdherenceVisual", + "value": "
\n

PolicyAdherenceByTimePeriod-ItemsBackedupDaily

\n@{base64ToString(body('Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupDaily')?['body'])}\n

PolicyAdherenceByTimePeriod-ItemsBackedupWeekly

\n@{base64ToString(body('Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupWeekly')?['body'])}\n
" + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + }, + "Scope-3": { + "actions": { + "Create_CSV_table-OptimizeGrid1": { + "runAfter": { + "Run_query_and_list_results-OptimizeGrid3": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-OptimizeGrid1')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-OptimizeGrid1')?['value'])" + } + }, + "Create_CSV_table-OptimizeGrid2": { + "runAfter": { + "Create_CSV_table-OptimizeGrid1": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-OptimizeGrid2')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-OptimizeGrid2')?['value'])" + } + }, + "Create_CSV_table-OptimizeGrid3": { + "runAfter": { + "Create_CSV_table-OptimizeGrid2": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-OptimizeGrid3')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-OptimizeGrid3')?['value'])" + } + }, + "Create_CSV_table-PolicyList": { + "runAfter": { + "Run_query_and_list_results-PolicyList": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-PolicyList')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-PolicyList')?['value'])" + } + }, + "Run_query_and_list_results-OptimizeGrid1": { + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = datetime(@{parameters('startDate')});\nlet RangeEnd = datetime(@{parameters('endDate')});\nlet BackupInstanceFunctionRedirect = (){\n@{variables('BackupInstanceFunction')}\n};\nlet BackupItemWithoutSuccessfulBackup = (){\n// calling LA System Function\n@{variables('JobFunction')}\n| where OperationCategory has \"Backup\"\n| where Status in (\"Completed\",\"CompletedWithWarnings\")\n| join kind= rightanti (\n// calling LA System Function\nBackupInstanceFunctionRedirect\n) on $left.BackupInstanceUniqueId == $right.UniqueId\n| project UniqueId, BackupInstanceFriendlyName = FriendlyName, DatasourceType, ProtectionInfo, VaultResourceId\n};\nlet BackupItemWithoutSuccessfulBackupAndItsRecoveryPointTable = ()\n{\nBackupItemWithoutSuccessfulBackup | join \n(\n// calling LA System Function\nBackupInstanceFunctionRedirect\n) on UniqueId\n| where not(LatestRecoveryPoint >= RangeStart and LatestRecoveryPoint <= RangeEnd)\n};\nBackupItemWithoutSuccessfulBackupAndItsRecoveryPointTable\n| sort by UniqueId asc \n| project BackupInstance=BackupInstanceFriendlyName, Id, Container=DatasourceSetFriendlyName, ResourceGroup=iff(DatasourceType==\"Azure Backup Agent\" or DatasourceType==\"Azure Backup Server\" or DatasourceType==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), Policy=PolicyName, LatestRecoveryPoint, Vault=VaultResourceId, AzureResource=DatasourceSetResourceId, DatasourceType", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-OptimizeGrid2": { + "runAfter": { + "Run_query_and_list_results-OptimizeGrid1": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let DailyRetentionParam = @{parameters('dailyRetentionParam')};\nlet WeeklyRetentionParam = @{parameters('weeklyRetentionParam')};\nlet MonthlyRetentionParam = @{parameters('monthlyRetentionParam')};\nlet YearlyRetentionParam = @{parameters('yearlyRetentionParam')};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n| extend ExtendedPropertiesJson = parse_json(ExtendedProperties)\n};\nlet BackupInstanceFunctionRedirect = ()\n{\n@{variables('BackupInstanceFunction')}\n};\nlet OutputTable = () {union isfuzzy = true \n// calling LA System Function\nBackupInstanceFunctionRedirect\n| join kind = leftouter (\n// calling LA System Function\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n};\nOutputTable\n// query to transform function output\n| extend DailyRPRetentionDuration = ExtendedPropertiesJson.DailyRetentionDuration, WeeklyRPRetentionDuration = ExtendedPropertiesJson.WeeklyRetentionDuration, MonthlyRPRetentionDuration = ExtendedPropertiesJson.MonthlyRetentionDuration, YearlyRPRetentionDuration = ExtendedPropertiesJson.YearlyRetentionDuration\n| where (DailyRPRetentionDuration > DailyRetentionParam) and (WeeklyRPRetentionDuration > WeeklyRetentionParam) and (MonthlyRPRetentionDuration > MonthlyRetentionParam) and (YearlyRPRetentionDuration > YearlyRetentionParam)\n| project Id, BackupInstance=FriendlyName, Container=DatasourceSetFriendlyName, ResourceGroup=iff(DatasourceType==\"Azure Backup Agent\" or DatasourceType==\"Azure Backup Server\" or DatasourceType==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), Policy=Name, DailyRPRetentionDuration, WeeklyRPRetentionDuration, MonthlyRPRetentionDuration, YearlyRPRetentionDuration, Vault=VaultResourceId, AzureResource=DatasourceSetResourceId, DatasourceType\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-OptimizeGrid3": { + "runAfter": { + "Run_query_and_list_results-OptimizeGrid2": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet LatestAzureWorkloadBackupItemDimensionTable = () {union isfuzzy = true \n// calling LA System Function\nBackupInstanceRedirect\n| where BackupSolution in~ (\"SQL in Azure VM Backup\",\"SAP HANA in Azure VM Backup\") \n| join kind = leftouter (\n// calling LA System Function\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Daily\"\n};\nLatestAzureWorkloadBackupItemDimensionTable\n| sort by UniqueId asc \n| project Id, BackupInstance=FriendlyName, Container=DatasourceSetFriendlyName, ResourceGroup=iff(BackupSolution==\"Azure Backup Agent\" or BackupSolution==\"Azure Backup Server\" or BackupSolution==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), Policy=Name, Vault=VaultResourceId, AzureResource=DatasourceSetResourceId, DatasourceType", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-PolicyList": { + "runAfter": { + "Run_query_and_visualize_results-PolicyTabCloudStorageTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceFunction')}\n// query to transform function output\n| where PolicyUniqueId != \"\"\n| summarize sum(SourceSizeInMBs), sum(VaultStore_StorageConsumptionInMBs), count(UniqueId), StorageReplicationType = any(VaultStore_StorageReplicationType), PolicyName = any(PolicyName), Vault = any(VaultResourceId), PolicyId = any(PolicyId) by PolicyUniqueId, VaultResourceId\n| project PolicyId, PolicyName, BackupInstances=count_UniqueId, CloudStorage = sum_VaultStore_StorageConsumptionInMBs/1024, Vault, StorageReplicationType, VaultAndPolicyUniqueId = strcat(Vault,PolicyUniqueId)", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_visualize_results-PolicyTabCloudStorageTrend": { + "runAfter": { + "Run_query_and_visualize_results-PolicyTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceTrendFunction')}\n// query to transform function output\n| summarize StorageConsumedInGBs = sum(VaultStore_StorageConsumptionInMBs)/(1024) by TimeRangeEndDay = startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Run_query_and_visualize_results-PolicyTrend": { + "runAfter": { + "Create_CSV_table-OptimizeGrid3": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceTrendFunction')}\n// query to transform function output\n| where PolicyUniqueId != \"\"\n| summarize ActivePolicyCount = dcount(strcat(VaultResourceId, PolicyUniqueId), 4) by TimeRangeEndDay = startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Set_variable-PolicyEmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-PolicyList": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "PoliciesVisual", + "value": "
\n

Active Policy Trend

\n
\n\n
\n

Cloud Storage Trend

\n
\n\n
\n
" + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azuremonitorlogs": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs", + "connectionName": "[resourceGroup().location]-azuremonitorlogs", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "office365": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-office365", + "connectionName": "[resourceGroup().location]-office365", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT641 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT641 new file mode 100644 index 0000000..07ee287 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT641 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-backupinstances-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-backupinstances-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898507, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-backupinstances-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-backupinstances-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT641", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT641", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "sku": "pergb2018", + "tags": { + "UsedByArmTemplateTest": "true" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "UsedByArmTemplateTest": "true" + }, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + } + ], + "outputs": { + "existingLogicAppWorkspace": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "existingWorkspaceResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingWorkspaceSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "existingWorkspacesToQuery": { + "type": "array", + "value": "[array(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT642 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT642 new file mode 100644 index 0000000..5777f18 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT642 @@ -0,0 +1,802 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-backupinstances-report/azuredeploy.json", + "/demos/backup-backupinstances-report/azuredeploy.parameters.json" + ], + "timestamp": 1642962898523, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-backupinstances-report/azuredeploy.json", + "/demos/backup-backupinstances-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT642", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT642", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "String", + "defaultValue": "BackupInstances", + "metadata": { + "description": "Name of the Logic App to be created." + } + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region in which the Logic App should be created." + } + }, + "logicAppWorkspace": { + "type": "String", + "metadata": { + "description": "Name of the existing Log Analytics workspace that the Logic App should connect to. Note that the Logic App connects to a single workspace, but can query data across multiple workspaces. Use the 'Workspaces To Query' parameter to specify the list of workspaces that the Logic App should query data from." + }, + "value": "GET-PREREQ-existingLogicAppWorkspace" + }, + "workspaceSubscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceSubscriptionId" + }, + "workspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group name of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceResourceGroup" + }, + "workspacesToQuery": { + "type": "Array", + "metadata": { + "description": "List of workspaces that the Logic App should query data from. Should be a comma-separated array of values of the format ['/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName1}','/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName2}']" + }, + "value": "GET-PREREQ-existingWorkspacesToQuery" + }, + "emailFrequency": { + "type": "String", + "allowedValues": [ + "Day", + "Week", + "Month" + ], + "defaultValue": "Day", + "metadata": { + "description": "Frequency at whch emails should be received by the recipient(s). Select 'Day' for sending emails once a day, 'Week' for sending emails once a week, or 'Month' for sending emails once a month." + } + }, + "recipientEmailId": { + "type": "String", + "metadata": { + "description": "Email id of the recipient(s). To specify multiple email ids, use a semicolon-separated list." + }, + "value": "vijeya@microsoft.com" + }, + "startDate": { + "type": "String", + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "metadata": { + "description": "Start Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "endDate": { + "type": "String", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "End Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "vaultSubscriptionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of subscriptions in which Recovery Services vaults exist. Should be of the format '{subscriptionId1},{subscriptionId2},..'. Default value is '*', which enables the Logic App to query data across all backup subscriptions that are sending data to the specified Log Analytics workspaces." + } + }, + "vaultLocationListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of regions in which Recovery Services vaults exist. Should be of the format 'location1,location2,..' (eg. eastus,westus). Default value is '*', which enables the Logic App to query data for vaults across all Azure regions in the specified subscriptions." + } + }, + "vaultListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Recovery Services vaults. Should be of the format 'vaultname1,vaultname2,..'. Default value is '*', which enables the Logic App to query data for all vaults in the specified subscriptions and locations." + } + }, + "backupSolutionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Azure Backup solutions being used in your environment. Should be of the format 'solution1,solution2,..' (eg. Azure VM Backup,SQL in Azure VM Backup,DPM). Default value is '*', which enables the Logic App to query data across all Azure Backup solutions being used." + } + }, + "excludeLegacyEvent": { + "type": "Bool", + "defaultValue": true, + "metadata": { + "description": "Selecting 'true' enables the Logic App to avoid querying data that is sent to the legacy Azure Diagnostics table in the Log Analytics workspace(s). Excluding the legacy table improves query performance time." + } + }, + "aggregationType": { + "type": "String", + "allowedValues": [ + "Daily", + "Weekly", + "Monthly" + ], + "defaultValue": "Daily", + "metadata": { + "description": "Use to specify the granularity at which data is sampled in the case of trend graphs." + } + }, + "resourceTags": { + "type": "object", + "defaultValue": { + "UsedByBackupReports": "true" + }, + "metadata": { + "description": "Tags to be assigned to the Logic App and the API connection resources." + } + }, + "emailSubject": { + "type": "string", + "defaultValue": "Backup Instances", + "metadata": { + "description": "Subject of the email to be received by the recipient(s)." + } + } + }, + "variables": { + "office365ConnectionName": "[resourceGroup().location]-office365", + "azureMonitorLogsConnectionName": "[resourceGroup().location]-azuremonitorlogs" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-office365", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + }, + "displayName": "office365" + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-azuremonitorlogs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "displayName": "azuremonitorlogs" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "BackupInstances", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "dependsOn": [ + "Microsoft.Web/connections/[resourceGroup().location]-office365", + "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + }, + "dataToExport": { + "defaultValue": "Backup Instances", + "type": "String" + }, + "aggregationType": { + "defaultValue": "\"Daily\"", + "type": "String" + }, + "backupSolutionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "excludeLegacyEvent": { + "defaultValue": true, + "type": "Bool" + }, + "endDate": { + "defaultValue": "[utcNow('u')]", + "type": "String" + }, + "startDate": { + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "type": "String" + }, + "vaultListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultLocationListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultSubscriptionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "workspacesToQuery": { + "defaultValue": "GET-PREREQ-existingWorkspacesToQuery", + "type": "Array" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Day", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "For_each": { + "foreach": "@parameters('workspacesToQuery')", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "AzureDiagnostics_Incomplete", + "value": " workspace('@{items('For_each')}').AzureDiagnostics," + } + }, + "Append_to_string_variable_2": { + "runAfter": { + "Append_to_string_variable": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "CoreAzureBackup_Incomplete", + "value": " workspace('@{items('For_each')}').CoreAzureBackup," + } + }, + "Append_to_string_variable_3": { + "runAfter": { + "Append_to_string_variable_2": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupJobs_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupJobs," + } + }, + "Append_to_string_variable_4": { + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupPolicy_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupPolicy," + } + }, + "Append_to_string_variable_5": { + "runAfter": { + "Append_to_string_variable_4": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupProtectedInstance," + } + }, + "Append_to_string_variable_6": { + "runAfter": { + "Append_to_string_variable_5": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupStorage_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupStorage," + } + } + }, + "runAfter": { + "Initialize_variable-AddonAzureBackupStorage": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "If_Scope_Failed": { + "actions": { + "Send_an_email_(V2)-FailureRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "

The Logic App Run did not execute to completion.
\n
Status: @{result('Scope')[0]['status']}

Learn more about how to troubleshoot the error

", + "Subject": "Backup Instances", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Scope": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ] + }, + "else": { + "actions": { + "Send_an_email_(V2)-SuccessfulRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Attachments": [ + { + "ContentBytes": "@{body('Run_query_and_visualize_results-BackupInstanceTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-BackupInstanceTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-CloudStorageTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-CloudStorageTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-BackupInstancesList'))}", + "Name": "BackupInstancesList.csv" + } + ], + "Body": "


\nBackup Instances Report
\n

\nEmail Contents
\n

\n1. Inline
a. Trend of Backup Instances count over time
b. Trend of Backup Cloud Storage (GB) over time
\n
\n2. Attachment
List of all backup instances with details on policy, backup storage consumed, storage replication type etc.

Learn more about Backup Reports
\n
\n@{variables('visual')}
\n
\n
\n

\n

", + "Subject": "Backup Instances", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + } + }, + "expression": { + "or": [ + { + "equals": [ + "@result('Scope')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "TimedOut" + ] + } + ] + }, + "type": "If" + }, + "Initialize_variable-AddonAzureBackupJobs": { + "runAfter": { + "Initialize_variable-CoreAzureBackup": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupJobs_Incomplete", + "type": "string", + "value": "let AddonAzureBackupJobs = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupPolicy": { + "runAfter": { + "Initialize_variable-AddonAzureBackupJobs": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupPolicy_Incomplete", + "type": "string", + "value": "let AddonAzureBackupPolicy = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupProtectedInstance": { + "runAfter": { + "Initialize_variable-AddonAzureBackupPolicy": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "type": "string", + "value": "let AddonAzureBackupProtectedInstance = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupStorage": { + "runAfter": { + "Initialize_variable-AddonAzureBackupProtectedInstance": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupStorage_Incomplete", + "type": "string", + "value": "let AddonAzureBackupStorage = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AzureDiagnostics": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AzureDiagnostics_Incomplete", + "type": "string", + "value": "let AzureDiagnostics = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-BackupInstanceFunction": { + "runAfter": { + "Initialize_variable-ReportFilterForLatestData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n// DatasourceSetType\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet LatestBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| where BackupItemUniqueId != \"\"\n// To show as per as on 'AsonDay'\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true) \n};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet LatestBackupItemAssociationAndStorageConsumptionTable = ()\n{\nLatestBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n)on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {union (LatestBackupItemAssociationAndStorageConsumptionTable | where (_RangeEnd-_RangeStart == 1d)), (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-BackupInstanceTrendFunction": { + "runAfter": { + "Initialize_variable-BackupInstanceFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceTrendFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Trend')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-CoreAzureBackup": { + "runAfter": { + "Initialize_variable-AzureDiagnostics": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "CoreAzureBackup_Incomplete", + "type": "string", + "value": "let CoreAzureBackup = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-BackupInstanceTrendFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "visual", + "type": "string" + } + ] + } + }, + "Initialize_variable-ReportFilterForHistoricalData": { + "runAfter": { + "Initialize_variable-UnionOfWorkspaces": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Trend", + "type": "string", + "value": "let _RangeStart = iff((datetime(@{parameters('startDate')}) == datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('startDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');\nlet _AggregationType = @{parameters('aggregationType')};" + } + ] + } + }, + "Initialize_variable-ReportFilterForLatestData": { + "runAfter": { + "Initialize_variable-ReportFilterForHistoricalData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Latest", + "type": "string", + "value": "let _RangeStart = iff(( datetime(@{parameters('endDate')})== datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('endDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');" + } + ] + } + }, + "Initialize_variable-UnionOfWorkspaces": { + "runAfter": { + "For_each": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "workspacesToQuery_Custom", + "type": "string", + "value": "@{concat(concat(substring(variables('AddonAzureBackupStorage_Incomplete'),0,sub(length(variables('AddonAzureBackupStorage_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupProtectedInstance_Incomplete'),0,sub(length(variables('AddonAzureBackupProtectedInstance_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupPolicy_Incomplete'),0,sub(length(variables('AddonAzureBackupPolicy_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupJobs_Incomplete'),0,sub(length(variables('AddonAzureBackupJobs_Incomplete')),1)),'};'),\r\nconcat(substring(variables('CoreAzureBackup_Incomplete'),0,sub(length(variables('CoreAzureBackup_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AzureDiagnostics_Incomplete'),0,sub(length(variables('AzureDiagnostics_Incomplete')),1)),'};'))}" + } + ] + } + }, + "Initialize_variable-NoDataMessage": { + "inputs": { + "variables": [ + { + "name": "NoDataMessage", + "type": "array", + "value": [ + { + "Message": "No records found" + } + ] + } + ] + }, + "runAfter": { + "Initialize_variable-EmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Scope": { + "actions": { + "Create_CSV_table-BackupInstancesList": { + "runAfter": { + "Run_query_and_list_results-BackupInstancesList": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-BackupInstancesList')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-BackupInstancesList')?['value'])" + } + }, + "Run_query_and_list_results-BackupInstancesList": { + "runAfter": { + "Run_query_and_visualize_results-CloudStorageTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceFunction')}\n| project Id, BackupInstance=FriendlyName, Container=DatasourceSetFriendlyName, ResourceGroup=iff(DatasourceType==\"Azure Backup Agent\" or DatasourceType==\"Azure Backup Server\" or DatasourceType==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), Policy=PolicyName, CloudStorage=VaultStore_StorageConsumptionInMBs/1024, Vault=VaultResourceId, StorageReplicationType=VaultStore_StorageReplicationType, AzureResource=DatasourceSetResourceId, DatasourceType", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_visualize_results-BackupInstanceTrend": { + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceTrendFunction')}\n// query to transform function output\n| summarize BackupItemCount = count(UniqueId) by startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Run_query_and_visualize_results-CloudStorageTrend": { + "runAfter": { + "Run_query_and_visualize_results-BackupInstanceTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceTrendFunction')}\n// query to transform function output\n| summarize StorageConsumedInGBs = sum(VaultStore_StorageConsumptionInMBs)/(1024) by TimeRangeEndDay = startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Set_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-BackupInstancesList": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "visual", + "value": "
\n

Backup Instances Trend

\n
\n\n
\n

Cloud Storage Trend

\n
\n\n
\n
" + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azuremonitorlogs": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs", + "connectionName": "[resourceGroup().location]-azuremonitorlogs", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "office365": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-office365", + "connectionName": "[resourceGroup().location]-office365", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT643 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT643 new file mode 100644 index 0000000..09476a8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT643 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-jobs-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-jobs-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898536, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-jobs-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-jobs-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT643", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT643", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "sku": "pergb2018", + "tags": { + "UsedByArmTemplateTest": "true" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "UsedByArmTemplateTest": "true" + }, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + } + ], + "outputs": { + "existingLogicAppWorkspace": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "existingWorkspaceResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingWorkspaceSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "existingWorkspacesToQuery": { + "type": "array", + "value": "[array(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT644 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT644 new file mode 100644 index 0000000..0a744f4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT644 @@ -0,0 +1,815 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-jobs-report/azuredeploy.json", + "/demos/backup-jobs-report/azuredeploy.parameters.json" + ], + "timestamp": 1642962898546, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-jobs-report/azuredeploy.json", + "/demos/backup-jobs-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT644", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT644", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "String", + "defaultValue": "Jobs", + "metadata": { + "description": "Name of the Logic App to be created." + } + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region in which the Logic App should be created." + } + }, + "logicAppWorkspace": { + "type": "String", + "metadata": { + "description": "Name of the existing Log Analytics workspace that the Logic App should connect to. Note that the Logic App connects to a single workspace, but can query data across multiple workspaces. Use the 'Workspaces To Query' parameter to specify the list of workspaces that the Logic App should query data from." + }, + "value": "GET-PREREQ-existingLogicAppWorkspace" + }, + "workspaceSubscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceSubscriptionId" + }, + "workspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group name of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceResourceGroup" + }, + "workspacesToQuery": { + "type": "Array", + "metadata": { + "description": "List of workspaces that the Logic App should query data from. Should be a comma-separated array of values of the format ['/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName1}','/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName2}']" + }, + "value": "GET-PREREQ-existingWorkspacesToQuery" + }, + "emailFrequency": { + "type": "String", + "allowedValues": [ + "Day", + "Week", + "Month" + ], + "defaultValue": "Day", + "metadata": { + "description": "Frequency at whch emails should be received by the recipient(s). Select 'Day' for sending emails once a day, 'Week' for sending emails once a week, or 'Month' for sending emails once a month." + } + }, + "recipientEmailId": { + "type": "String", + "metadata": { + "description": "Email id of the recipient(s). To specify multiple email ids, use a semicolon-separated list." + }, + "value": "vijeya@microsoft.com" + }, + "startDate": { + "type": "String", + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "metadata": { + "description": "Start Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "endDate": { + "type": "String", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "End Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "vaultSubscriptionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of subscriptions in which Recovery Services vaults exist. Should be of the format '{subscriptionId1},{subscriptionId2},..'. Default value is '*', which enables the Logic App to query data across all backup subscriptions that are sending data to the specified Log Analytics workspaces." + } + }, + "vaultLocationListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of regions in which Recovery Services vaults exist. Should be of the format 'location1,location2,..' (eg. eastus,westus). Default value is '*', which enables the Logic App to query data for vaults across all Azure regions in the specified subscriptions." + } + }, + "vaultListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Recovery Services vaults. Should be of the format 'vaultname1,vaultname2,..'. Default value is '*', which enables the Logic App to query data for all vaults in the specified subscriptions and locations." + } + }, + "backupSolutionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Azure Backup solutions being used in your environment. Should be of the format 'solution1,solution2,..' (eg. Azure VM Backup,SQL in Azure VM Backup,DPM). Default value is '*', which enables the Logic App to query data across all Azure Backup solutions being used." + } + }, + "excludeLegacyEvent": { + "type": "Bool", + "defaultValue": true, + "metadata": { + "description": "Selecting 'true' enables the Logic App to avoid querying data that is sent to the legacy Azure Diagnostics table in the Log Analytics workspace(s). Excluding the legacy table improves query performance time." + } + }, + "aggregationType": { + "type": "String", + "allowedValues": [ + "Daily", + "Weekly", + "Monthly" + ], + "defaultValue": "Daily", + "metadata": { + "description": "Use to specify the granularity at which data is sampled in the case of trend graphs." + } + }, + "resourceTags": { + "type": "object", + "defaultValue": { + "UsedByBackupReports": "true" + }, + "metadata": { + "description": "Tags to be assigned to the Logic App and the API connection resources." + } + }, + "emailSubject": { + "type": "string", + "defaultValue": "Jobs", + "metadata": { + "description": "Subject of the email to be received by the recipient(s)." + } + } + }, + "variables": { + "office365ConnectionName": "[resourceGroup().location]-office365", + "azureMonitorLogsConnectionName": "[resourceGroup().location]-azuremonitorlogs" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-office365", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + }, + "displayName": "office365" + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-azuremonitorlogs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "displayName": "azuremonitorlogs" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "Jobs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "dependsOn": [ + "Microsoft.Web/connections/[resourceGroup().location]-office365", + "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + }, + "dataToExport": { + "defaultValue": "Jobs", + "type": "String" + }, + "aggregationType": { + "defaultValue": "\"Daily\"", + "type": "String" + }, + "backupSolutionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "excludeLegacyEvent": { + "defaultValue": true, + "type": "Bool" + }, + "endDate": { + "defaultValue": "[utcNow('u')]", + "type": "String" + }, + "startDate": { + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "type": "String" + }, + "vaultListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultLocationListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultSubscriptionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "workspacesToQuery": { + "defaultValue": "GET-PREREQ-existingWorkspacesToQuery", + "type": "Array" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Day", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "For_each": { + "foreach": "@parameters('workspacesToQuery')", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "AzureDiagnostics_Incomplete", + "value": " workspace('@{items('For_each')}').AzureDiagnostics," + } + }, + "Append_to_string_variable_2": { + "runAfter": { + "Append_to_string_variable": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "CoreAzureBackup_Incomplete", + "value": " workspace('@{items('For_each')}').CoreAzureBackup," + } + }, + "Append_to_string_variable_3": { + "runAfter": { + "Append_to_string_variable_2": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupJobs_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupJobs," + } + }, + "Append_to_string_variable_4": { + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupPolicy_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupPolicy," + } + }, + "Append_to_string_variable_5": { + "runAfter": { + "Append_to_string_variable_4": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupProtectedInstance," + } + }, + "Append_to_string_variable_6": { + "runAfter": { + "Append_to_string_variable_5": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupStorage_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupStorage," + } + } + }, + "runAfter": { + "Initialize_variable-AddonAzureBackupStorage": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "If_Scope_Failed": { + "actions": { + "Send_an_email_(V2)-FailureRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "

The Logic App Run did not execute to completion.
\n
Status: @{result('Scope')[0]['status']}

Learn more about how to troubleshoot the error

", + "Subject": "Jobs", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Scope": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ] + }, + "else": { + "actions": { + "Send_an_email_(V2)-SuccessfulRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Attachments": [ + { + "ContentBytes": "@{body('Run_query_and_visualize_results-JobOperation')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-JobOperation')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-JobStatus')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-JobStatus')?['attachmentName']" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-JobList'))}", + "Name": "JobList.csv" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-JobFailureCode')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-JobFailureCode')?['attachmentName']" + } + ], + "Body": "


\nJobs Report
\n

\nEmail Contents
\n

\n1. Inline
a. Jobs by Status over time
b. Jobs by Operation
c. Jobs by Failure Code\n
\n
2. Attachments
a. List of backup and restore jobs in selected time range

Learn more about Backup Reports
\n
\n@{variables('visual')}
\n
\n
\n

\n
\n

", + "Subject": "Jobs", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + } + }, + "expression": { + "or": [ + { + "equals": [ + "@result('Scope')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "TimedOut" + ] + } + ] + }, + "type": "If" + }, + "Initialize_variable-AddonAzureBackupJobs": { + "runAfter": { + "Initialize_variable-CoreAzureBackup": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupJobs_Incomplete", + "type": "string", + "value": "let AddonAzureBackupJobs = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupPolicy": { + "runAfter": { + "Initialize_variable-AddonAzureBackupJobs": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupPolicy_Incomplete", + "type": "string", + "value": "let AddonAzureBackupPolicy = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupProtectedInstance": { + "runAfter": { + "Initialize_variable-AddonAzureBackupPolicy": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "type": "string", + "value": "let AddonAzureBackupProtectedInstance = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupStorage": { + "runAfter": { + "Initialize_variable-AddonAzureBackupProtectedInstance": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupStorage_Incomplete", + "type": "string", + "value": "let AddonAzureBackupStorage = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AzureDiagnostics": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AzureDiagnostics_Incomplete", + "type": "string", + "value": "let AzureDiagnostics = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-BackupInstanceTrendFunction": { + "runAfter": { + "Initialize_variable-JobFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceTrendFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Trend')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-CoreAzureBackup": { + "runAfter": { + "Initialize_variable-AzureDiagnostics": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "CoreAzureBackup_Incomplete", + "type": "string", + "value": "let CoreAzureBackup = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-BackupInstanceTrendFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "visual", + "type": "string" + } + ] + } + }, + "Initialize_variable-JobFunction": { + "runAfter": { + "Initialize_variable-ReportFilterForHistoricalData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "JobFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n// Report filters\n@{variables('ReportFilter_Trend')}\nlet _ProtectionStateList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _JobOperationList = \"*\";\nlet _JobStatusList = \"*\";\nlet _JobFailureCodeList = \"*\";\nlet _ExcludeLog = true;\n// Other Vars\nlet ExtRangeStart = _RangeStart - 2d;\nlet ExtRangeEnd = _RangeEnd + 2d;\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet JobUnderAzureDiagnostics = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AzureDiagnostics \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"Job\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n// Exclude Log Jobs and InProgress Jobs\n| project JobOperation = columnifexists(\"JobOperation_s\", \"\") , JobOperationSubType = columnifexists(\"JobOperationSubType_s\", \"\"), JobUniqueIdGuid = columnifexists(\"JobUniqueId_g\", \"\") , JobUniqueIdStr = columnifexists(\"JobUniqueId_s\", \"\"),\nProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), AdHocOrScheduledJob = columnifexists(\"AdHocOrScheduledJob_s\",\"\"), RecoveryJobDestination = columnifexists(\"RecoveryJobDestination_s\",\"\"),\nRecoveryJobRPDateTime = todatetime(columnifexists(\"RecoveryJobRPDateTime_s\",\"\")), RecoveryJobRPLocation = columnifexists(\"RecoveryJobRPLocation_s\",\"\"), RecoveryLocationType = columnifexists(\"RecoveryLocationType_s\",\"\"),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\",\"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\",\"\"),\nJobStatus = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode = columnifexists(\"JobFailureCode_s\",\"\"), JobStartDateTime = todatetime(columnifexists(\"JobStartDateTime_s\",\"\")), JobDurationInSecs = todouble(columnifexists(\"JobDurationInSecs_s\", \"\")),\nDataTransferredInMB = todouble(columnifexists(\"DataTransferredInMB_s\",\"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\",\"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog) \n| extend JobUniqueId = iff(JobUniqueIdGuid == \"\", JobUniqueIdStr, JobUniqueIdGuid) \n| project-away JobUniqueIdGuid, JobUniqueIdStr\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId ;\nJobTable\n};\nlet JobUnderResourceSpecific = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AddonAzureBackupJobs \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Job\" \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog)\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId;\nJobTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet LatestBackupItemWithProtectedContainerTable = () \n{\nTotalBackupItemDimensionTable\n| join (union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics()| where _ExcludeLegacyEvent == false),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId) on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet JobFinalTable = (){\n union isfuzzy = true \n(JobUnderAzureDiagnostics(true)| where _ExcludeLegacyEvent == false),\n(JobUnderResourceSpecific(true))\n| project JobStatus, JobUniqueId, JobOperation, JobFailureCode, JobOperationSubType, JobStartDateTime, DataTransferredInMB, AdHocOrScheduledJob, JobDurationInSecs, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId, ProtectedContainerUniqueId, TimeGenerated \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId\n| where JobOperation in~ (_JobOperationList) or '*' in (_JobOperationList)\n| where JobStatus in~ (_JobStatusList) or '*' in (_JobStatusList)\n| where JobFailureCode in~ (_JobFailureCodeList) or '*' in (_JobFailureCodeList)\n| join kind= inner (LatestBackupItemWithProtectedContainerTable) on BackupItemUniqueId\n| project JobUniqueId, JobOperation, JobStatus, JobFailureCode, JobOperationSubType, JobStartDateTime, JobDurationInSecs, DataTransferredInMB, AdHocOrScheduledJob, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId = BackupItemUniqueId1, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, StorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(JobFinalTable)))\n| project UniqueId = JobUniqueId, OperationCategory = JobOperation, Operation = JobOperationSubType, Status = JobStatus, ErrorTitle = JobFailureCode, StartTime = JobStartDateTime, DurationInSecs = JobDurationInSecs, DataTransferredInMBs = DataTransferredInMB, RestoreJobRPDateTime = RecoveryJobRPDateTime, RestoreJobRPLocation = RecoveryJobRPLocation, BackupInstanceUniqueId = BackupItemUniqueId, BackupInstanceId, BackupInstanceFriendlyName = BackupItemFriendlyName, DatasourceResourceId, DatasourceFriendlyName = BackupItemFriendlyName, DatasourceType, BackupSolution, DatasourceSetResourceId, DatasourceSetType, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-ReportFilterForHistoricalData": { + "runAfter": { + "Initialize_variable-UnionOfWorkspaces": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Trend", + "type": "string", + "value": "let _RangeStart = iff((datetime(@{parameters('startDate')}) == datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('startDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');\nlet _AggregationType = @{parameters('aggregationType')};" + } + ] + } + }, + "Initialize_variable-NoDataMessage": { + "inputs": { + "variables": [ + { + "name": "NoDataMessage", + "type": "array", + "value": [ + { + "Message": "No records found" + } + ] + } + ] + }, + "runAfter": { + "Initialize_variable-EmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Initialize_variable-UnionOfWorkspaces": { + "runAfter": { + "For_each": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "workspacesToQuery_Custom", + "type": "string", + "value": "@{concat(concat(substring(variables('AddonAzureBackupStorage_Incomplete'),0,sub(length(variables('AddonAzureBackupStorage_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupProtectedInstance_Incomplete'),0,sub(length(variables('AddonAzureBackupProtectedInstance_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupPolicy_Incomplete'),0,sub(length(variables('AddonAzureBackupPolicy_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupJobs_Incomplete'),0,sub(length(variables('AddonAzureBackupJobs_Incomplete')),1)),'};'),\r\nconcat(substring(variables('CoreAzureBackup_Incomplete'),0,sub(length(variables('CoreAzureBackup_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AzureDiagnostics_Incomplete'),0,sub(length(variables('AzureDiagnostics_Incomplete')),1)),'};'))}" + } + ] + } + }, + "Scope": { + "actions": { + "Create_CSV_table-JobList": { + "runAfter": { + "Run_query_and_list_results-JobList": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-JobList')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-JobList')?['value'])" + } + }, + "Run_query_and_list_results-JobList": { + "runAfter": { + "Run_query_and_visualize_results-JobFailureCode": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('JobFunction')}\n| project BackupInstance=BackupInstanceFriendlyName, BackupInstanceId, Container=DatasourceSetFriendlyName, ResourceGroup=iff(DatasourceType==\"Azure Backup Agent\" or DatasourceType==\"Azure Backup Server\" or DatasourceType==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), OperationCategory, JobStatus=Status, JobStartDateTime=StartTime, JobDuration=DurationInSecs/3600, ErrorTitle, DataTransferred=DataTransferredInMBs, AzureResource=DatasourceSetResourceId, DatasourceType ", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_visualize_results-JobFailureCode": { + "runAfter": { + "Run_query_and_visualize_results-JobOperation": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('JobFunction')}\n// query to transform function output\n| where Status == \"Failed\"\n| summarize JobFailureCode = any(ErrorTitle), JobOperation = any(OperationCategory) by UniqueId\n| summarize count(JobOperation) by JobFailureCode\n| sort by count_JobOperation", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Pie Chart" + } + } + }, + "Run_query_and_visualize_results-JobOperation": { + "runAfter": { + "Run_query_and_visualize_results-JobStatus": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('JobFunction')}\n// query to transform function output\n| summarize Status = any(Status), Operation = any(OperationCategory) by UniqueId\n| summarize count(Status) by Operation\n| sort by Operation", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Bar Chart" + } + } + }, + "Run_query_and_visualize_results-JobStatus": { + "type": "ApiConnection", + "inputs": { + "body": "@{variables('JobFunction')}\n// query to transform function output\n| summarize arg_max(TimeGenerated, Status) by UniqueId\n| summarize count(Status) by Status, bin(TimeGenerated, 1d)\n| project TimeGenerated, count_Status, JobStatus = ( iff(Status == \"Completed\", \"Succeeded\", iff(Status == \"CompletedWithWarnings\", \"SucceededWithWarnings\", Status)))\n| sort by TimeGenerated asc", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Bar Chart" + } + } + }, + "Set_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-JobList": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "visual", + "value": "
\n

Jobs by Status

\n
\n\n
\n

Jobs by JobOperation

\n
\n\n
\n

Jobs by Failure Code

\n
\n\n
\n
" + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azuremonitorlogs": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs", + "connectionName": "[resourceGroup().location]-azuremonitorlogs", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "office365": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-office365", + "connectionName": "[resourceGroup().location]-office365", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT645 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT645 new file mode 100644 index 0000000..d6c49ba --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT645 @@ -0,0 +1,502 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/nested/azure_alerts.json" + ], + "timestamp": 1642962898557, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/azure_alerts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT645", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT645", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "workspaceName/azure_alerts", + "type": "Microsoft.OperationalInsights/workspaces/views", + "properties": { + "Name": "Alerts from Azure Resources Backup", + "Author": "Microsoft", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Alerts by Alert Type", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Alerts by Alert Type", + "Subtitle": "You can filter by Datasource Type by Clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\", \"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertType_s | sort by count_ desc ", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\", \"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertType_s | sort by count_ desc", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Alert Type", + "Value": "No of Alerts" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertType_s | sort by count_ desc | search {selected item}; Alerts | join kind=leftsemi ( Selection ) on AlertType_s | project AlertUniqueId, AlertType_s, TimeGenerated, AlertStatus_s, BackupItemUniqueId_s ", + "NavigationSelect": { + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertType_s | sort by count_ desc | search {selected item}; Alerts | join kind=leftsemi ( Selection ) on AlertType_s | project AlertUniqueId, AlertType_s, TimeGenerated, AlertStatus_s, BackupItemUniqueId_s " + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Alerts Created vs Alerts Resolved", + "newGroup": false, + "useIcon": false + }, + "Trend1": { + "Legend": "Alerts Created", + "LegendColor": "#00188f", + "ChartQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\", \"\" ), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\", \"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(AlertUniqueId) by bin(TimeGenerated,1h)", + "Calculation": { + "Operation": "Sum" + } + }, + "Trend2": { + "Legend": "Alerts Resolved", + "LegendColor": "#0072c6", + "ChartQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\") , BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\"| project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_s | where AlertStatus_s==\"Resolved\"; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(AlertUniqueId) by bin(TimeGenerated,1h)", + "Calculation": { + "Operation": "Sum" + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\") | extend AlertUniqueId = columnifexists (\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\"); Alerts | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by AlertUniqueId | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend CurrentStatus = AlertStatus_s | join kind=leftouter ( Alerts | summarize arg_max(TimeGenerated,*) by TimeGenerated, AlertUniqueId | summarize HitCount = count() by AlertUniqueId ) on AlertUniqueId | project AlertUniqueId , AlertStatus_s, AlertType_s, HitCount | sort by AlertStatus_s asc, HitCount desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Alert Unique ID", + "Value": "Hit Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\"| extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by AlertUniqueId | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend CurrentStatus = AlertStatus_s | join kind=leftouter ( Alerts | summarize arg_max(TimeGenerated,*) by TimeGenerated, AlertUniqueId | summarize HitCount = count() by AlertUniqueId ) on AlertUniqueId | project AlertUniqueId , AlertStatus_s, AlertCode_s, AlertType_s, HitCount | sort by AlertStatus_s asc, HitCount desc | search {selected item}; Alerts | join kind=inner(Selection) on AlertUniqueId | summarize arg_max(TimeGenerated, *) by AlertUniqueId |project TimeGenerated, AlertUniqueId, BackupItemUniqueId_s, AlertType_s, AlertCode_s, AlertStatus_s, HitCount", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\"| extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by AlertUniqueId | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend CurrentStatus = AlertStatus_s | join kind=leftouter ( Alerts | summarize arg_max(TimeGenerated,*) by TimeGenerated, AlertUniqueId | summarize HitCount = count() by AlertUniqueId ) on AlertUniqueId | project AlertUniqueId , AlertStatus_s, AlertCode_s, AlertType_s, HitCount | sort by AlertStatus_s asc, HitCount desc | search {selected item}; Alerts | join kind=inner(Selection) on AlertUniqueId | summarize arg_max(TimeGenerated, *) by AlertUniqueId |project TimeGenerated, AlertUniqueId, BackupItemUniqueId_s, AlertType_s, AlertCode_s, AlertStatus_s, HitCount" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Active Alerts by Severity", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Active Alerts by Severity", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\", \"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_s; Alerts | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | where AlertUniqueId_s != \"\" | where AlertStatus_s==\"Active\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertSeverity_s | sort by count_ desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Critical", + "color": "#eb3c00" + }, + { + "value": "Warning", + "color": "#ff8c00" + }, + { + "value": "Information", + "color": "#fff100" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\", \"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_s; Alerts | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | where AlertUniqueId_s != \"\" | where AlertStatus_s==\"Active\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertSeverity_s | sort by count_ desc ", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Alert Severity", + "Value": "No of Alerts" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where AlertStatus_s==\"Active\" | summarize count() by AlertSeverity_s | sort by count_ desc | search {selected item}; Alerts | join kind=leftsemi(Selection) on AlertSeverity_s |where AlertStatus_s==\"Active\" | project AlertUniqueId, AlertSeverity_s, BackupItemUniqueId_s, AlertCode_s, AlertStatus_s, TimeGenerated ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where AlertStatus_s==\"Active\" | summarize count() by AlertSeverity_s | sort by count_ desc | search {selected item}; Alerts | join kind=leftsemi(Selection) on AlertSeverity_s |where AlertStatus_s==\"Active\" | project AlertUniqueId, AlertSeverity_s, BackupItemUniqueId_s, AlertCode_s, AlertStatus_s, TimeGenerated " + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Resolved Alerts by Severity", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Resolved Alerts by Severity", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\", \"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_s; Alerts | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | where AlertUniqueId_s != \"\" | where AlertStatus_s==\"Resolved\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertSeverity_s | sort by count_ desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Critical", + "color": "#eb3c00" + }, + { + "value": "Warning", + "color": "#ff8c00" + }, + { + "value": "Information", + "color": "#fff100" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\", \"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_s; Alerts | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | where AlertUniqueId_s != \"\" | where AlertStatus_s==\"Resolved\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertSeverity_s | sort by count_ desc ", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Alert Severity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where AlertStatus_s==\"Active\" | summarize count() by AlertSeverity_s | sort by count_ desc | search {selected item}; Alerts | join kind=leftsemi(Selection) on AlertSeverity_s |where AlertStatus_s==\"Resolved\" | project AlertUniqueId, AlertSeverity_s, BackupItemUniqueId_s, AlertCode_s, AlertStatus_s, TimeGenerated ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where AlertStatus_s==\"Active\" | summarize count() by AlertSeverity_s | sort by count_ desc | search {selected item}; Alerts | join kind=leftsemi(Selection) on AlertSeverity_s |where AlertStatus_s==\"Resolved\" | project AlertUniqueId, AlertSeverity_s, BackupItemUniqueId_s, AlertCode_s, AlertStatus_s, TimeGenerated " + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Avg Alert Resolution Time per week (hrs)", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Avg Alert Resolution Time per week (hrs)", + "Subtitle": "Stretch the time axis to see the trend (above time filter)" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\"); let AlertStarts= Alerts |summarize arg_min(TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds= Alerts | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); Table1 | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} | summarize avg(timeToResolveInHrs) by bin(Alert_TimeGenerated,7d)", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\"); let AlertStarts= Alerts |summarize arg_min(TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds= Alerts | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); Table1 | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} | summarize avg(timeToResolveInHrs) by bin(Alert_TimeGenerated,7d)", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Week Start", + "Value": "Average resolution Time (hrs)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend TimeGenerated=columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\", \"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s = columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId = columnifexists(\"AlertUniqueId_s\", \"AlertUniqueId_g\"), Alert_TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts= Alerts | summarize arg_min(TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); Table1 | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} | extend weekStart=bin(TimeGenerated,7d) | summarize avg(timeToResolveInHrs) by weekStart", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend TimeGenerated=columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\", \"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s = columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId = columnifexists(\"AlertUniqueId_s\", \"AlertUniqueId_g\"), Alert_TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts= Alerts | summarize arg_min(TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); Table1 | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} | extend weekStart=bin(TimeGenerated,7d) | summarize avg(timeToResolveInHrs) by weekStart" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top 3 backup Items by Avg Alert Resolution time", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Breakup by Avg Alert Resolution time (hrs)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\", \"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts= Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists (\"AlertUniqueId_g\", \"\"), AlertUniqueId_s = columnifexists (\"AlertUniqueId_s\",\"\"), Alert_TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\", \"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists (\"AlertUniqueId_s\", \"AlertUniqueId_g\")|where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts=Alerts | summarize arg_min(TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} ; Table2 | extend BackupItemFriendlyName=columnifexists(\"BackupItemFriendlyName_s2\",\"BackupItemFriendlyName_s\") | summarize avg(timeToResolveInHrs) by BackupItemFriendlyName | sort by avg_timeToResolveInHrs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\", \"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts= Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists (\"AlertUniqueId_g\", \"\"), AlertUniqueId_s = columnifexists (\"AlertUniqueId_s\",\"\"), Alert_TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\", \"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId = columnifexists (\"AlertUniqueId_s\", \"AlertUniqueId_g\")|where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts=Alerts | summarize arg_min(TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} ; Table2 | extend BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s2\",\"BackupItemFriendlyName_s\") | summarize avg(timeToResolveInHrs) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by avg_timeToResolveInHrs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item Id", + "Value": "Avg Alerts Resolution Time" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\", \"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts= Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists (\"AlertUniqueId_g\", \"\"), AlertUniqueId_s = columnifexists (\"AlertUniqueId_s\",\"\"), Alert_TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists (\"AlertUniqueId_s\", \"AlertUniqueId_g\")|where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts=Alerts | summarize arg_min(TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} ; Table2 | extend BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s2\",\"BackupItemFriendlyName_s\") | summarize avg(timeToResolveInHrs) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by avg_timeToResolveInHrs desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\", \"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts= Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists (\"AlertUniqueId_g\", \"\"), AlertUniqueId_s = columnifexists (\"AlertUniqueId_s\",\"\"), Alert_TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists (\"AlertUniqueId_s\", \"AlertUniqueId_g\")|where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts=Alerts | summarize arg_min(TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} ; Table2 | extend BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s2\",\"BackupItemFriendlyName_s\") | summarize avg(timeToResolveInHrs) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by avg_timeToResolveInHrs desc | search {selected item}" + } + } + } + } + ], + "Filters": [ + { + "FieldName": "BackupItemType_s", + "QueryForValues": "AzureDiagnostics | where Category == \"AzureBackupReport\" |distinct BackupItemType_s", + "Title": "DatasourceType" + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "TileOne": { + "Legend": "Alerts Created in Period", + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\"| where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId | count " + }, + "TileTwo": { + "Legend": "Active Alerts Created in Period", + "Query": " AzureDiagnostics | where Category == \"AzureBackupReport\"| where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s == \"Active\" |count " + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT646 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT646 new file mode 100644 index 0000000..b28b9d9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT646 @@ -0,0 +1,334 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/nested/backup_items.json" + ], + "timestamp": 1642962898569, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/backup_items.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT646", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT646", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "workspaceName/backup_items", + "type": "Microsoft.OperationalInsights/workspaces/views", + "properties": { + "Name": "Backup Items", + "Author": "Microsoft", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Backup Items by Backup Item Type", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Backup Items by Backup Item Type", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName == \"BackupItem\"; BackupItems | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\") , BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemUniqueId_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | where ${DatasourceType} | summarize count(BackupItemUniqueId_s) by BackupItemType_s | sort by count_BackupItemUniqueId_s desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems=Events | where OperationName==\"BackupItem\"; BackupItems | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") , BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") , BackupManagementType_s = columnifexists(\"BackupManagementType_s\", \"\") , TimeGenerated = columnifexists(\"TimeGenerated\",\"\")| where BackupItemUniqueId_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | where ${DatasourceType} | summarize count(BackupItemUniqueId_s) by BackupItemType_s, BackupManagementType_s | sort by count_BackupItemUniqueId_s desc", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Datasource Type", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems=Events | where OperationName==\"BackupItem\"; BackupItems | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemProtectionState_s = columnifexists(\"BackupItemProtectionState_s\",\"\") | where BackupItemUniqueId_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | where ${DatasourceType} | summarize count(BackupItemUniqueId_s) by BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s | project-away count_BackupItemUniqueId_s | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems=Events | where OperationName==\"BackupItem\"; BackupItems | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemProtectionState_s = columnifexists(\"BackupItemProtectionState_s\",\"\") | where BackupItemUniqueId_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | where ${DatasourceType} | summarize count(BackupItemUniqueId_s) by BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s | project-away count_BackupItemUniqueId_s | where {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Backup Items by Protection status", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Last Known Protection Status" + }, + "Donut": { + "Query": "let BackupItems = AzureDiagnostics | where SchemaVersion_s==\"V2\" | where Category == \"AzureBackupReport\" | where OperationName==\"BackupItem\"; BackupItems | extend BackupItemProtectionState_s = columnifexists(\"BackupItemProtectionState_s\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\") , TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s =columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemProtectionState_s != \"\" | where ${DatasourceType} | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | summarize count(BackupItemUniqueId_s) by BackupItemProtectionState_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#ff8c00", + "#55d455", + "#6dc2e9" + ] + } + }, + "List": { + "Query": "let BackupItems = AzureDiagnostics | where SchemaVersion_s==\"V2\" | where Category == \"AzureBackupReport\" | where OperationName==\"BackupItem\"; BackupItems | extend BackupItemProtectionState_s = columnifexists(\"BackupItemProtectionState_s\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\") | where BackupItemProtectionState_s != \"\" | where ${DatasourceType} | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | summarize count(BackupItemUniqueId_s) by BackupManagementType_s, BackupItemProtectionState_s", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Management Type", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let BackupItems = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName==\"BackupItem\" | where SchemaVersion_s==\"V2\" ; BackupItems | extend BackupItemProtectionState_s=columnifexists(\"BackupItemProtectionState_s\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s= columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\") | where BackupItemProtectionState_s != \"\" and BackupItemType_s != \"\" | where ${DatasourceType} | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | project BackupItemFriendlyName_s,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s | search {selected item}", + "NavigationSelect": { + "NavigationQuery": "let BackupItems = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName==\"BackupItem\" | where SchemaVersion_s==\"V2\" ; BackupItems | extend BackupItemProtectionState_s=columnifexists(\"BackupItemProtectionState_s\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s= columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\") | where BackupItemProtectionState_s != \"\" and BackupItemType_s != \"\" | where ${DatasourceType} | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | project BackupItemFriendlyName_s,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top 3 Backup Items by Alerts Generated", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Top 3 Backup Items by Alerts Generated" + }, + "Donut": { + "Query": "let BackupIdNameMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"),BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=(AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") |where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\")| extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId ) | union kind=outer (AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId) |extend startTime=TimeGenerated ; Alerts | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | summarize count(AlertUniqueId) by BackupItemFriendlyName | sort by count_AlertUniqueId desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let BackupIdNameMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\")| where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=(AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") |where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\")| extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId ) | union kind=outer (AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId) |extend startTime=TimeGenerated ; Alerts | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s1\",\"BackupItemUniqueId_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\", \"BackupItemFriendlyName_s\")| where ${DatasourceType} | summarize count(AlertUniqueId) by BackupItemUniqueId, BackupItemFriendlyName | sort by count_AlertUniqueId desc ", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let BackupIdNameMap = AzureDiagnostics | where Category == \"AzureBackupReport\" |where SchemaVersion_s==\"V2\" | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=(AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\") |where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId ) | union kind=outer (AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId) |extend startTime=TimeGenerated ; Alerts | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType} | search {selected item}", + "NavigationSelect": { + "NavigationQuery": " let BackupIdNameMap = AzureDiagnostics | where Category == \"AzureBackupReport\" |where SchemaVersion_s==\"V2\" | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=(AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\") |where BackupManagementType_s !in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId=columnifexists(\"AlertUniqueId_s\",\"AlertUniqueId_g\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId ) | union kind=outer (AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId) |extend startTime=TimeGenerated ; Alerts | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType} | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Backup Items by Last Successful Backup Time", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Backup Items", + "Query": "let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; BackupIdTypeMap | summarize dcount(BackupItemUniqueId_s)" + }, + "SecondTile": { + "Legend": "Backup Jobs", + "Query": "let Events= AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName==\"Job\" | extend JobOperation_s=columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g=columnifexists(\"JobUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\")| where JobOperation_s==\"Backup\" | where JobUniqueId_g!=\"\" | summarize arg_max(TimeGenerated, *) by JobUniqueId_g ; let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; Jobs | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) " + }, + "List": { + "Query": "let BackupIdNameMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName==\"BackupItem\" | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s ,BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let LastSuccessfulBackupJobs = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g=columnifexists(\"JobUniqueId_g\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") |where JobOperation_s == \"Backup\" | where JobStatus_s == \"Completed\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, Job_TimeGenerated; LastSuccessfulBackupJobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType} | project BackupItemUniqueId_s, BackupItemFriendlyName_s, Job_TimeGenerated | sort by Job_TimeGenerated desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Last Successful Backup Time" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let BackupIdNameMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName==\"BackupItem\" | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s ,BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let LastSuccessfulBackupJobs = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g=columnifexists(\"JobUniqueId_g\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") |where JobOperation_s == \"Backup\" | where JobStatus_s == \"Completed\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, Job_TimeGenerated; LastSuccessfulBackupJobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType} | project-away BackupItem_TimeGenerated | search {selected item}", + "NavigationSelect": { + "NavigationQuery": "let BackupIdNameMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName==\"BackupItem\" | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s ,BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let LastSuccessfulBackupJobs = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g=columnifexists(\"JobUniqueId_g\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") |where JobOperation_s == \"Backup\" | where JobStatus_s == \"Completed\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, Job_TimeGenerated; LastSuccessfulBackupJobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType} | project-away BackupItem_TimeGenerated | search {selected item}" + } + } + } + } + ], + "Filters": [ + { + "FieldName": "BackupItemType_s", + "QueryForValues": "AzureDiagnostics | where Category == \"AzureBackupReport\"|distinct BackupItemType_s", + "Title": "DatasourceType" + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Tile": { + "Legend": "Backup Items", + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | distinct BackupItemUniqueId_s | count" + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT647 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT647 new file mode 100644 index 0000000..04da189 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT647 @@ -0,0 +1,628 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/nested/backup_jobs_log.json" + ], + "timestamp": 1642962898585, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/backup_jobs_log.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT647", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT647", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "workspaceName/backup_jobs_log", + "type": "Microsoft.OperationalInsights/workspaces/views", + "properties": { + "Name": "Backup Jobs (Log)", + "Author": "Microsoft", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Status", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Status", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": " let Events= AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"); let Jobs = Events | where OperationName == \"Job\" |extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"); Jobs | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\", \"Recovery point_Log\") | join kind=leftouter ( BackupItems ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#eb3c00" + }, + { + "value": "CompletedWithWarnings", + "color": "#ffb900" + } + ] + } + }, + "List": { + "Query": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName ==\"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"); let BackupItems = Events | where OperationName ==\"BackupItem\" | extend BackupItemType_s= columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s ) on BackupItemUniqueId_s| where ${DatasourceType} | project BackupItemFriendlyName_s, BackupItemUniqueId_s, JobStatus_s, Vault=Resource | summarize count() by BackupItemUniqueId_s , BackupItemFriendlyName_s, JobStatus_s, Vault | order by count_ desc", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events=AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"); let BackupItems = Events | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\" , \"\"); let ProtectedContainers = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists (\"ProtectedContainerUniqueId_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated,*) by BackupItemUniqueId_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( ProtectedContainers | summarize arg_max(TimeGenerated,*) by ProtectedContainerUniqueId_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Vault=Resource, JobFailureCode_s | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events=AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"); let BackupItems = Events | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\" , \"\"); let ProtectedContainers = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists (\"ProtectedContainerUniqueId_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated,*) by BackupItemUniqueId_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( ProtectedContainers | summarize arg_max(TimeGenerated,*) by ProtectedContainerUniqueId_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Vault=Resource, JobFailureCode_s | where {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top 3 Backup Items by Job Duration", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Total Job Duration (Hrs)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" ; let BackupIdNameMap = BackupItems | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s= columnifexists (\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s==\"Log\" or JobOperationSubType_s == \"Recovery point_Log\" | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s | sort by totalDurationInHrs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Total Job Duration (hrs)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName ==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobDurationInSecs_s = columnifexists (\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobStatus_s, JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; let Selection = Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc | search {selected item} | join ( BackupIdNameMap ) on BackupItemFriendlyName_s; Selection | join(Jobs) on BackupItemUniqueId_s ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName ==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobDurationInSecs_s = columnifexists (\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobStatus_s, JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; let Selection = Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc | search {selected item} | join ( BackupIdNameMap ) on BackupItemFriendlyName_s; Selection | join(Jobs) on BackupItemUniqueId_s " + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Total Data Transferred", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Total Data Transferred (MB)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" ; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists (\"JobUniqueId_g\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\", \"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\")| where JobOperation_s==\"Backup\" | where JobOperationSubType_s==\"Log\" or JobOperationSubType_s == \"Recovery point_Log\" | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\", \"BackupItemType_s\") | where ${DatasourceType} | summarize sum(todouble(DataTransferredInMB_s)) by bin(TimeGenerated, 1d), JobOperation_s", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\") , TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\", \"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Total Data Transferred (MB)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\", \"\") , JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\",\"\") | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\", \"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithTotalDataTransferred = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc | search {selected item}; JobsWithTotalDataTransferred | join(Jobs| where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\")) on BackupItemUniqueId_s | project JobUniqueId_g, TimeGenerated, DataTransferredInMB_s, JobStatus_s, ProtectedContainerUniqueId_s, BackupItemUniqueId_s, BackupItemFriendlyName, JobOperation_s", + "NavigationSelect": { + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\", \"\") , JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\",\"\") | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\", \"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithTotalDataTransferred = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc | search {selected item}; JobsWithTotalDataTransferred | join(Jobs| where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\")) on BackupItemUniqueId_s | project JobUniqueId_g, TimeGenerated, DataTransferredInMB_s, JobStatus_s, ProtectedContainerUniqueId_s, BackupItemUniqueId_s, BackupItemFriendlyName, JobOperation_s" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Failed Backup Job Count per day", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Failed Backup Job Count per day", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Failed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend JobDate = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, JobDate, timeOfJob | project timeOfJob, BackupItemFriendlyName, JobDate, FailedBackupJobCount=count_JobUniqueId_g | sort by JobDate asc | summarize sum(toint(FailedBackupJobCount)) by bin(timeOfJob, 1d)", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\") , BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend JobStatus_s = columnifexists(\"JobStatus_s\", \"\"),BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Failed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemFriendlyName, BackupItemUniqueId_s, Job_Date | project BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, FailedBackupJobCount=count_JobUniqueId_g | sort by Job_Date asc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "#Failed Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") | where ${DatasourceType}; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let BackupIdNameMap = BackupItems |extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s, BackupItemType_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob | project BackupItemUniqueId_s,BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob| sort by Job_Date desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") | where ${DatasourceType}; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let BackupIdNameMap = BackupItems |extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s, BackupItemType_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob | project BackupItemUniqueId_s,BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob| sort by Job_Date desc | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Successful Backup Job Count Per Day", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Successful Backup Job Count Per Day", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s, BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; SuccessfulBackupJobs | extend JobDate = format_datetime(TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, JobDate, timeOfJob | project timeOfJob, BackupItemFriendlyName, JobDate, SuccessfulBackupJobCount=count_JobUniqueId_g | sort by JobDate asc | summarize sum(SuccessfulBackupJobCount) by bin(timeOfJob, 1d)", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\") | where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date | project BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, SuccessfulBackupJobCount=count_JobUniqueId_g | sort by Job_Date desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "#Successful Backup Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count() by BackupItemUniqueId_s, BackupItemFriendlyName=columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\"), Job_Date, timeOfJob, JobUniqueId_g, JobStatus_s, ProtectedContainerUniqueId_s | sort by Job_Date desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count() by BackupItemUniqueId_s, BackupItemFriendlyName=columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\"), Job_Date, timeOfJob, JobUniqueId_g, JobStatus_s, ProtectedContainerUniqueId_s | sort by Job_Date desc | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Failed Jobs by Failure Code", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Failed jobs by Failure Code", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists (\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by JobFailureCode_s | sort by count_JobUniqueId_g desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists (\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by JobFailureCode_s | sort by count_JobUniqueId_g desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Failure Code", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs=Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" ,\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs=Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" ,\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Creation Time", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Creation Time", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3) | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | project timeBucketStart24, timeBucketStart12 , timeBucketEnd12 , timeBucketStartMeridian , timeBucketEndMeridian , count_JobUniqueId_g | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | summarize noOfJobs=sum(count_JobUniqueId_g) by timeBucketString | sort by noOfJobs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3) | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | project timeBucketStart24, timeBucketStart12 , timeBucketEnd12 , timeBucketStartMeridian , timeBucketEndMeridian , count_JobUniqueId_g | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | summarize noOfJobs=sum(count_JobUniqueId_g) by timeBucketString | sort by noOfJobs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Time of Day", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName == \"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\", \"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated= columnifexists(\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s=columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" ,\"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g; let JobsWithTimeBucket = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | sort by count_JobUniqueId_g desc; let Selection=JobsWithTimeBucket | search {selected item}; Selection | join( JobsWithTimeBucket) on timeBucketString | project TimeOfDay=timeBucketString, JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName == \"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\", \"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated= columnifexists(\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s=columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" ,\"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g; let JobsWithTimeBucket = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | sort by count_JobUniqueId_g desc; let Selection=JobsWithTimeBucket | search {selected item}; Selection | join( JobsWithTimeBucket) on timeBucketString | project TimeOfDay=timeBucketString, JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Duration", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Duration", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\", \"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") |summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600) | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | summarize noOfJobs= sum(count_JobUniqueId_g) by JobDurationString | sort by noOfJobs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\", \"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" , \"Recovery point_Log\") |summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600) | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | summarize noOfJobs= sum(count_JobUniqueId_g) by JobDurationString | sort by noOfJobs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Job Duration", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\"), ProtectedContainerUniqueId_s =columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s=columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g; let BackupIdTypeMap = BackupItems |extend BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithDurationString = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" ,\"Recovery point_Log\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | sort by count_JobUniqueId_g desc; let Selection = JobsWithDurationString | search {selected item}; Selection | join ( JobsWithDurationString ) on JobDurationString | project JobDurationString,JobUniqueId_g, JobStatus_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\"), ProtectedContainerUniqueId_s =columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s=columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g; let BackupIdTypeMap = BackupItems |extend BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithDurationString = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s==\"Backup\" | where JobOperationSubType_s in~(\"Log\" ,\"Recovery point_Log\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | sort by count_JobUniqueId_g desc; let Selection = JobsWithDurationString | search {selected item}; Selection | join ( JobsWithDurationString ) on JobDurationString | project JobDurationString,JobUniqueId_g, JobStatus_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s " + } + } + } + } + ], + "Filters": [ + { + "FieldName": "BackupItemType_s", + "QueryForValues": "AzureDiagnostics | where Category == \"AzureBackupReport\"| distinct BackupItemType_s", + "Title": "DatasourceType" + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" | extend JobOperation_s=columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s in~(\"Log\",\"Recovery point_Log\") | summarize dcount(JobUniqueId_g) by JobStatus_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#eb3c00" + }, + { + "value": "CompletedWithWarnings", + "color": "#ffb900" + } + ] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT648 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT648 new file mode 100644 index 0000000..c2dbf04 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT648 @@ -0,0 +1,628 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/nested/backup_jobs_non_log.json" + ], + "timestamp": 1642962898607, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/backup_jobs_non_log.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT648", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT648", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "workspaceName/backup_jobs_non_log", + "type": "Microsoft.OperationalInsights/workspaces/views", + "properties": { + "Name": "Backup Jobs (Non Log)", + "Author": "Microsoft", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Status", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Status", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": " let Events= AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"); let Jobs = Events | where OperationName == \"Job\" |extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"); Jobs | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\", \"Recovery point_Log\") | join kind=leftouter ( BackupItems ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#55d455", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#eb3c00" + }, + { + "value": "CompletedWithWarnings", + "color": "#ffb900" + } + ] + } + }, + "List": { + "Query": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName ==\"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"); let BackupItems = Events | where OperationName ==\"BackupItem\" | extend BackupItemType_s= columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s ) on BackupItemUniqueId_s| where ${DatasourceType} | project BackupItemFriendlyName_s, BackupItemUniqueId_s, JobStatus_s, Vault=Resource | summarize count() by BackupItemUniqueId_s , BackupItemFriendlyName_s, JobStatus_s, Vault | order by count_ desc", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events=AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"); let BackupItems = Events | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\" , \"\"); let ProtectedContainers = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists (\"ProtectedContainerUniqueId_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated,*) by BackupItemUniqueId_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( ProtectedContainers | summarize arg_max(TimeGenerated,*) by ProtectedContainerUniqueId_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Vault=Resource, JobFailureCode_s | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events=AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"); let BackupItems = Events | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\" , \"\"); let ProtectedContainers = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists (\"ProtectedContainerUniqueId_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated,*) by BackupItemUniqueId_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( ProtectedContainers | summarize arg_max(TimeGenerated,*) by ProtectedContainerUniqueId_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Vault=Resource, JobFailureCode_s | where {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top 3 Backup Items by Job Duration", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Total Job Duration (Hrs)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" ; let BackupIdNameMap = BackupItems | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s= columnifexists (\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\", \"Recovery point_Log\" )| summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s | sort by totalDurationInHrs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Total Job Duration (hrs)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName ==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobDurationInSecs_s = columnifexists (\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobStatus_s, JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; let Selection = Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc | search {selected item} | join ( BackupIdNameMap ) on BackupItemFriendlyName_s; Selection | join(Jobs) on BackupItemUniqueId_s ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName ==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobDurationInSecs_s = columnifexists (\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobStatus_s, JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; let Selection = Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc | search {selected item} | join ( BackupIdNameMap ) on BackupItemFriendlyName_s; Selection | join(Jobs) on BackupItemUniqueId_s " + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Total Data Transferred", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Total Data Transferred (MB)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" ; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists (\"JobUniqueId_g\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\", \"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\")| where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\", \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\", \"BackupItemType_s\") | where ${DatasourceType} | summarize sum(todouble(DataTransferredInMB_s)) by bin(TimeGenerated, 1d), JobOperation_s", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\") , TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\", \"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Total Data Transferred (MB)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\", \"\") , JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\",\"\") | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\", \"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithTotalDataTransferred = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc | search {selected item}; JobsWithTotalDataTransferred | join(Jobs| where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\")) on BackupItemUniqueId_s | project JobUniqueId_g, TimeGenerated, DataTransferredInMB_s, JobStatus_s, ProtectedContainerUniqueId_s, BackupItemUniqueId_s, BackupItemFriendlyName, JobOperation_s", + "NavigationSelect": { + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\", \"\") , JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\",\"\") | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\", \"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithTotalDataTransferred = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc | search {selected item}; JobsWithTotalDataTransferred | join(Jobs| where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\")) on BackupItemUniqueId_s | project JobUniqueId_g, TimeGenerated, DataTransferredInMB_s, JobStatus_s, ProtectedContainerUniqueId_s, BackupItemUniqueId_s, BackupItemFriendlyName, JobOperation_s" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Failed Backup Job Count Per Day", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Failed Backup Job Count Per Day", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Failed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend JobDate = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, JobDate, timeOfJob | project timeOfJob, BackupItemFriendlyName, JobDate, FailedBackupJobCount=count_JobUniqueId_g | sort by JobDate asc | summarize sum(toint(FailedBackupJobCount)) by bin(timeOfJob, 1d)", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\") , BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend JobStatus_s = columnifexists(\"JobStatus_s\", \"\"),BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Failed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemFriendlyName, BackupItemUniqueId_s, Job_Date | project BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, FailedBackupJobCount=count_JobUniqueId_g | sort by Job_Date asc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item Id", + "Value": "#Failed Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") | where ${DatasourceType}; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let BackupIdNameMap = BackupItems |extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s, BackupItemType_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob | project BackupItemUniqueId_s,BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob| sort by Job_Date desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") | where ${DatasourceType}; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let BackupIdNameMap = BackupItems |extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s, BackupItemType_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob | project BackupItemUniqueId_s,BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob| sort by Job_Date desc | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Successful Backup Job Count Per Day", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Successful Backup Job Count Per Day", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s, BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; SuccessfulBackupJobs | extend JobDate = format_datetime(TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, JobDate, timeOfJob | project timeOfJob, BackupItemFriendlyName, JobDate, SuccessfulBackupJobCount=count_JobUniqueId_g | sort by JobDate asc | summarize sum(SuccessfulBackupJobCount) by bin(timeOfJob, 1d)", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\") | where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date | project BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, SuccessfulBackupJobCount=count_JobUniqueId_g | sort by Job_Date desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "#Successful Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count() by BackupItemUniqueId_s, BackupItemFriendlyName=columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\"), Job_Date, timeOfJob, JobUniqueId_g, JobStatus_s, ProtectedContainerUniqueId_s | sort by Job_Date desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count() by BackupItemUniqueId_s, BackupItemFriendlyName=columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\"), Job_Date, timeOfJob, JobUniqueId_g, JobStatus_s, ProtectedContainerUniqueId_s | sort by Job_Date desc | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Failed Jobs by Failure Code", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Failed jobs by Failure Code", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists (\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by JobFailureCode_s | sort by count_JobUniqueId_g desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists (\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by JobFailureCode_s | sort by count_JobUniqueId_g desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Failure Code", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs=Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" ,\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs=Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" ,\"Recovery point_Log\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Creation Time", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Creation Time", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3) | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | project timeBucketStart24, timeBucketStart12 , timeBucketEnd12 , timeBucketStartMeridian , timeBucketEndMeridian , count_JobUniqueId_g | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | summarize noOfJobs=sum(count_JobUniqueId_g) by timeBucketString | sort by noOfJobs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3) | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | project timeBucketStart24, timeBucketStart12 , timeBucketEnd12 , timeBucketStartMeridian , timeBucketEndMeridian , count_JobUniqueId_g | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | summarize noOfJobs=sum(count_JobUniqueId_g) by timeBucketString | sort by noOfJobs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Time of Day", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName == \"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\", \"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated= columnifexists(\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s=columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" ,\"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g; let JobsWithTimeBucket = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | sort by count_JobUniqueId_g desc; let Selection=JobsWithTimeBucket | search {selected item}; Selection | join( JobsWithTimeBucket) on timeBucketString | project TimeOfDay=timeBucketString, JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName == \"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\", \"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated= columnifexists(\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s=columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" ,\"Recovery point_Log\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g; let JobsWithTimeBucket = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | sort by count_JobUniqueId_g desc; let Selection=JobsWithTimeBucket | search {selected item}; Selection | join( JobsWithTimeBucket) on timeBucketString | project TimeOfDay=timeBucketString, JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Duration", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Duration", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\", \"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") |summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600) | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | summarize noOfJobs= sum(count_JobUniqueId_g) by JobDurationString | sort by noOfJobs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\", \"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" , \"Recovery point_Log\") |summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600) | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | summarize noOfJobs= sum(count_JobUniqueId_g) by JobDurationString | sort by noOfJobs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Job Duration", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\"), ProtectedContainerUniqueId_s =columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s=columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g; let BackupIdTypeMap = BackupItems |extend BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithDurationString = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" ,\"Recovery point_Log\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | sort by count_JobUniqueId_g desc; let Selection = JobsWithDurationString | search {selected item}; Selection | join ( JobsWithDurationString ) on JobDurationString | project JobDurationString,JobUniqueId_g, JobStatus_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\"), ProtectedContainerUniqueId_s =columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s=columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g; let BackupIdTypeMap = BackupItems |extend BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithDurationString = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s==\"Backup\" | where JobOperationSubType_s !in~(\"Log\" ,\"Recovery point_Log\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | sort by count_JobUniqueId_g desc; let Selection = JobsWithDurationString | search {selected item}; Selection | join ( JobsWithDurationString ) on JobDurationString | project JobDurationString,JobUniqueId_g, JobStatus_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s " + } + } + } + } + ], + "Filters": [ + { + "FieldName": "BackupItemType_s", + "QueryForValues": "AzureDiagnostics | where Category == \"AzureBackupReport\" |distinct BackupItemType_s", + "Title": "DatasourceType" + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" | extend JobOperation_s=columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s !in~(\"Log\",\"Recovery point_Log\") | summarize dcount(JobUniqueId_g) by JobStatus_s ", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#e81123" + }, + { + "value": "CompletedWithWarnings", + "color": "#ffb900" + } + ] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT649 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT649 new file mode 100644 index 0000000..54c18bd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT649 @@ -0,0 +1,276 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/nested/cloud_storage.json" + ], + "timestamp": 1642962898625, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/cloud_storage.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT649", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT649", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "workspaceName/cloud_storage", + "type": "Microsoft.OperationalInsights/workspaces/views", + "properties": { + "Name": "Cloud Storage", + "Author": "Microsoft", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Total Cloud Storage Consumed (GB)", + "newGroup": false, + "useIcon": false + }, + "Trend1": { + "Legend": "GRS (avg)", + "LegendColor": "#00188f", + "ChartQuery": "let VaultIdRepMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Vault\" | extend StorageReplicationType_s = columnifexists(\"StorageReplicationType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), VaultUniqueId_s=columnifexists(\"VaultUniqueId_s\",\"\") | summarize arg_max(TimeGenerated, *) by VaultUniqueId_s | where StorageReplicationType_s == \"GeoRedundant\" ; let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Storages= AzureDiagnostics | where Category == \"AzureBackupReport\" |where OperationName == \"Storage\" |extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s=columnifexists(\"StorageType_s\", \"\") |summarize arg_max(TimeGenerated, *) by StorageUniqueId_s | project StorageUniqueId_s, StorageType_s | extend storage_type=StorageType_s; let StorageAssociations = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s=columnifexists(\"StorageConsumedInMBs_s\",\"\"), StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), VaultUniqueId_s=columnifexists(\"VaultUniqueId_s\",\"\") | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, VaultUniqueId_s, StorageUniqueId_s, TimeGenerated; StorageAssociations | join kind=inner ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | join kind=inner( VaultIdRepMap ) on VaultUniqueId_s | join kind=inner ( Storages ) on StorageUniqueId_s | where storage_type==\"Cloud\" | summarize arg_max(TimeGenerated,dayCharge=StorageInGB) by BackupItemUniqueId_s, bin(TimeGenerated, 1d) | summarize TotalCharge = sum(dayCharge) by TimeGenerated", + "Calculation": { + "Operation": "Average" + } + }, + "Trend2": { + "Legend": "LRS (avg)", + "LegendColor": "#0072c6", + "ChartQuery": "let VaultIdRepMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Vault\" | extend StorageReplicationType_s = columnifexists(\"StorageReplicationType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), VaultUniqueId_s=columnifexists(\"VaultUniqueId_s\",\"\") |where StorageReplicationType_s != \"\" | summarize arg_max(TimeGenerated, *) by VaultUniqueId_s | where StorageReplicationType_s == \"LocallyRedundant\" ; let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Storages= AzureDiagnostics | where Category == \"AzureBackupReport\" |where OperationName == \"Storage\" |extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s=columnifexists(\"StorageType_s\", \"\") |summarize arg_max(TimeGenerated, *) by StorageUniqueId_s | project StorageUniqueId_s, StorageType_s | extend storage_type=StorageType_s; let StorageAssociations = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s=columnifexists(\"StorageConsumedInMBs_s\",\"\"), StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), VaultUniqueId_s=columnifexists(\"VaultUniqueId_s\",\"\") | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, VaultUniqueId_s, StorageUniqueId_s, TimeGenerated; StorageAssociations | join kind=inner ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | join ( VaultIdRepMap ) on VaultUniqueId_s | join kind=inner ( Storages ) on StorageUniqueId_s | where storage_type==\"Cloud\" | summarize arg_max(TimeGenerated,dayCharge=StorageInGB) by BackupItemUniqueId_s, bin(TimeGenerated, 1d) | summarize TotalCharge = sum(dayCharge) by TimeGenerated", + "Calculation": { + "Operation": "Average" + } + }, + "List": { + "Query": "let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s=columnifexists(\"BackupItemFriendlyName_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, item_name=BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let StorageAssociations = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), StorageName_s=columnifexists(\"StorageName_s\",\"\") | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s, StorageUniqueId_s; let Storages=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | extend StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s=columnifexists(\"StorageType_s\",\"\"), StorageName_s=columnifexists(\"StorageName_s\",\"\")| distinct StorageUniqueId_s, StorageType_s, StorageName_s; StorageAssociations | join kind=inner ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\", \"BackupItemType_s\") | extend StorageConsumedInMBs_s=columnifexists(\"StorageConsumedInMBs_s\",\"\") | where ${DatasourceType} | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, StorageName_s, item_name | join kind=inner ( Storages ) on StorageUniqueId_s | project StorageUniqueId_s, StorageName_s, StorageInGB, BackupItemUniqueId_s, StorageType_s, item_name | where StorageType_s==\"Cloud\" | project BackupItemUniqueId_s, BackupItemFriendlyName=item_name , StorageInGB| order by StorageInGB desc", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Storage (GB)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s=columnifexists(\"BackupItemFriendlyName_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, item_name=BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let StorageAssociations = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageConsumedInMBs_s = columnifexists (\"StorageConsumedInMBs_s\",\"\") |summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s, StorageUniqueId_s; let Storages=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | extend StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s=columnifexists(\"StorageType_s\",\"\") |distinct StorageUniqueId_s, StorageType_s; StorageAssociations | join kind=inner ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, item_name | join kind= inner( Storages ) on StorageUniqueId_s | project StorageInGB, BackupItemUniqueId_s, StorageType_s, item_name, StorageUniqueId_s | where StorageType_s==\"Cloud\" | project StorageInGB, BackupItemFriendlyName=item_name, BackupItemUniqueId_s, StorageUniqueId_s | order by StorageInGB desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": " let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s=columnifexists(\"BackupItemFriendlyName_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, item_name=BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let StorageAssociations = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageConsumedInMBs_s = columnifexists (\"StorageConsumedInMBs_s\",\"\") |summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s, StorageUniqueId_s; let Storages=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | extend StorageUniqueId_s=columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s=columnifexists(\"StorageType_s\",\"\") |distinct StorageUniqueId_s, StorageType_s; StorageAssociations | join kind=inner ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, item_name | join kind= inner( Storages ) on StorageUniqueId_s | project StorageInGB, BackupItemUniqueId_s, StorageType_s, item_name, StorageUniqueId_s | where StorageType_s==\"Cloud\" | project StorageInGB, BackupItemFriendlyName=item_name, BackupItemUniqueId_s, StorageUniqueId_s | order by StorageInGB desc | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top 3 Vaults by Storage Consumed (GB)", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Top 3 Vaults by Storage Consumed (GB)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"StorageAssociation\" |extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s, BackupItemUniqueId_s | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" \t| where SchemaVersion_s==\"V2\" | where OperationName == \"Storage\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageName_s=columnifexists(\"StorageName_s\",\"\") , StorageType_s = columnifexists(\"StorageType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s | project StorageUniqueId_s, StorageName_s ,BackupItemUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s==\"Cloud\" | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | summarize totalStorage=sum(StorageInGB) by StorageUniqueId_s, StorageName_s | project StorageName_s, totalStorage | sort by totalStorage desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"StorageAssociation\" |extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s, BackupItemUniqueId_s | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" \t| where SchemaVersion_s==\"V2\" | where OperationName == \"Storage\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageName_s=columnifexists(\"StorageName_s\",\"\") , StorageType_s = columnifexists(\"StorageType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s | project StorageUniqueId_s, StorageName_s ,BackupItemUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s==\"Cloud\" | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | summarize totalStorage=sum(StorageInGB) by StorageUniqueId_s, StorageName_s | project StorageName_s, totalStorage | sort by totalStorage desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Vault", + "Value": "Storage In GB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\") | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Storage\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageName_s = columnifexists(\"StorageName_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageType_s = columnifexists(\"StorageType_s\",\"\") | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s | project StorageUniqueId_s, StorageName_s ,BackupItemUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s==\"Cloud\" | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | search {selected item}", + "NavigationSelect": { + "NavigationQuery": "let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\") | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Storage\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageName_s = columnifexists(\"StorageName_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageType_s = columnifexists(\"StorageType_s\",\"\") | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s | project StorageUniqueId_s, StorageName_s ,BackupItemUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s==\"Cloud\" | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage by Storage Replication type (GB)", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Storage by Storage Replication type (GB)" + }, + "Donut": { + "Query": "let VaultIdRepMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Vault\" |extend StorageReplicationType_s = columnifexists(\"StorageReplicationType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), VaultUniqueId_s = columnifexists(\"VaultUniqueId_s\",\"\") |where StorageReplicationType_s != \"\" | summarize arg_max(TimeGenerated, *) by VaultUniqueId_s; let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let StorageAssociations=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), VaultUniqueId_s = columnifexists(\"VaultUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\")| extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, VaultUniqueId_s, StorageUniqueId_s, TimeGenerated | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s, BackupItemUniqueId_s ; let Storages=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s = columnifexists(\"StorageType_s\",\"\")| summarize arg_max(TimeGenerated, *) by StorageUniqueId_s | project StorageUniqueId_s, StorageType_s | extend storage_type=StorageType_s ; StorageAssociations | join kind=inner( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | join kind= inner ( VaultIdRepMap ) on VaultUniqueId_s | join kind=leftouter ( Storages ) on StorageUniqueId_s | where storage_type==\"Cloud\" | summarize TotalCharge = sum(StorageInGB) by StorageReplicationType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let VaultIdRepMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Vault\" |extend StorageReplicationType_s = columnifexists(\"StorageReplicationType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), VaultUniqueId_s = columnifexists(\"VaultUniqueId_s\",\"\") |where StorageReplicationType_s != \"\" | summarize arg_max(TimeGenerated, *) by VaultUniqueId_s; let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let StorageAssociations=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), VaultUniqueId_s = columnifexists(\"VaultUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\")| extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, VaultUniqueId_s, StorageUniqueId_s, TimeGenerated | summarize arg_max(TimeGenerated,*) by StorageUniqueId_s, BackupItemUniqueId_s ; let Storages=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s = columnifexists(\"StorageType_s\",\"\")| summarize arg_max(TimeGenerated, *) by StorageUniqueId_s | project StorageUniqueId_s, StorageType_s | extend storage_type=StorageType_s ; StorageAssociations | join kind=inner( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | join kind= inner ( VaultIdRepMap ) on VaultUniqueId_s | join kind=leftouter ( Storages ) on StorageUniqueId_s | where storage_type==\"Cloud\" | summarize TotalCharge = sum(StorageInGB) by StorageReplicationType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Replication Type", + "Value": "Storage (GB)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let VaultIdRepMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Vault\" | extend StorageReplicationType_s = columnifexists(\"StorageReplicationType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), VaultUniqueId_s = columnifexists(\"VaultUniqueId_s\",\"\") | where StorageReplicationType_s != \"\" | summarize arg_max(TimeGenerated, *) by VaultUniqueId_s; let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let StorageAssociations=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), VaultUniqueId_s = columnifexists(\"VaultUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, VaultUniqueId_s, StorageUniqueId_s, TimeGenerated ; let Storages=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" |extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s = columnifexists(\"StorageType_s\",\"\"), StorageReplicationType_s = columnifexists(\"StorageReplicationType_s\",\"\") | summarize arg_max(TimeGenerated, *) by StorageUniqueId_s | project StorageUniqueId_s, StorageType_s, StorageReplicationType_s | extend storage_type=StorageType_s; let Table1 = StorageAssociations | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | join kind=leftouter ( VaultIdRepMap ) on VaultUniqueId_s | join kind=leftouter ( Storages ) on StorageUniqueId_s | where storage_type==\"Cloud\" | summarize arg_max(TimeGenerated,*) by BackupItemUniqueId_s, StorageReplicationType_s, bin(TimeGenerated, 1d); let Selection = Table1 | summarize TotalCharge = sum(StorageInGB) by StorageReplicationType_s | search {selected item}; Selection | join(Table1) on StorageReplicationType_s | project StorageReplicationType_s, VaultUniqueId_s, StorageInGB, BackupItemUniqueId_s", + "NavigationSelect": { + "NavigationQuery": "let VaultIdRepMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Vault\" | extend StorageReplicationType_s = columnifexists(\"StorageReplicationType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), VaultUniqueId_s = columnifexists(\"VaultUniqueId_s\",\"\") | where StorageReplicationType_s != \"\" | summarize arg_max(TimeGenerated, *) by VaultUniqueId_s; let BackupIdTypeMap = AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let StorageAssociations=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), VaultUniqueId_s = columnifexists(\"VaultUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, VaultUniqueId_s, StorageUniqueId_s, TimeGenerated ; let Storages=AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" |extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s = columnifexists(\"StorageType_s\",\"\"), StorageReplicationType_s = columnifexists(\"StorageReplicationType_s\",\"\") | summarize arg_max(TimeGenerated, *) by StorageUniqueId_s | project StorageUniqueId_s, StorageType_s, StorageReplicationType_s | extend storage_type=StorageType_s; let Table1 = StorageAssociations | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where ${DatasourceType} | join kind=leftouter ( VaultIdRepMap ) on VaultUniqueId_s | join kind=leftouter ( Storages ) on StorageUniqueId_s | where storage_type==\"Cloud\" | summarize arg_max(TimeGenerated,*) by BackupItemUniqueId_s, StorageReplicationType_s, bin(TimeGenerated, 1d); let Selection = Table1 | summarize TotalCharge = sum(StorageInGB) by StorageReplicationType_s | search {selected item}; Selection | join(Table1) on StorageReplicationType_s | project StorageReplicationType_s, VaultUniqueId_s, StorageInGB, BackupItemUniqueId_s" + } + } + } + } + ], + "Filters": [ + { + "FieldName": "BackupItemType_s", + "QueryForValues": "AzureDiagnostics | where Category == \"AzureBackupReport\"|distinct BackupItemType_s", + "Title": "DatasourceType" + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Tile": { + "Legend": "Total Cloud Storage Consumed (GB)", + "Query": " AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"StorageAssociation\" | extend StorageConsumedInMBs_s = columnifexists(\"StorageConsumedInMBs_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s=columnifexists(\"StorageType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\")| extend CloudStorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project CloudStorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\" | where OperationName == \"Storage\" | extend StorageUniqueId_s = columnifexists(\"StorageUniqueId_s\",\"\"), StorageType_s=columnifexists(\"StorageType_s\",\"\")|distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s == \"Cloud\" | summarize arg_max(TimeGenerated, *) by StorageUniqueId_s,BackupItemUniqueId_s | summarize sum(CloudStorageInGB)" + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT65 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT65 new file mode 100644 index 0000000..d2c6875 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT65 @@ -0,0 +1,572 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-chefnodes.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884558, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-chefnodes.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT65", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT65", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "value": "westus" + }, + "network-api-version": { + "type": "string", + "defaultValue": "" + }, + "compute-api-version": { + "type": "string", + "defaultValue": "" + }, + "deployment-api-version2": { + "type": "string", + "defaultValue": "" + }, + "adminUsernameChefWorkstation": { + "type": "string", + "defaultValue": "" + }, + "adminPasswordChefWorkstation": { + "type": "securestring", + "defaultValue": "" + }, + "publicIPDomainNameLabelChefWorkstation": { + "type": "string", + "defaultValue": "" + }, + "publicIPDomainNameLabelDSAgentWindows": { + "type": "string", + "defaultValue": "" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "" + }, + "adminUsernameDSAgent": { + "type": "string", + "defaultValue": "" + }, + "publicIPDomainNameLabelDSAgent": { + "type": "string", + "defaultValue": "" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "" + }, + "linuxvmcount": { + "type": "int", + "defaultValue": "" + }, + "windowsvmcount": { + "type": "int", + "defaultValue": "" + }, + "ManagerAddress": { + "type": "string", + "defaultValue": "" + }, + "subnet4Ref": { + "type": "string", + "defaultValue": "" + }, + "vmNameChefWorkstation": { + "type": "string", + "defaultValue": "" + }, + "vmSizeChefWorkstation": { + "type": "string", + "defaultValue": "" + }, + "vmNameDSAWindows": { + "type": "string", + "defaultValue": "" + }, + "vmSizeDSAWindows": { + "type": "string", + "defaultValue": "" + }, + "vmNameDSAgent": { + "type": "string", + "defaultValue": "" + }, + "vmSizeDSAgent": { + "type": "string", + "defaultValue": "" + }, + "imagePublisherWindows": { + "type": "string", + "defaultValue": "" + }, + "imageOfferWindows": { + "type": "string", + "defaultValue": "" + }, + "imagePublisherLinux": { + "type": "string", + "defaultValue": "" + }, + "imageOfferLinux": { + "type": "string", + "defaultValue": "" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "" + }, + "vmStorageAccountContainerName": { + "type": "string", + "defaultValue": "" + }, + "ActivationPort": { + "type": "string", + "defaultValue": "" + }, + "TenantIdentifier": { + "type": "string", + "defaultValue": "" + }, + "TenantActivationPassword": { + "type": "securestring", + "defaultValue": "" + }, + "adminUsernameDSAgentWindows": { + "type": "string", + "defaultValue": "" + }, + "adminPasswordDSAgentWindows": { + "type": "securestring", + "defaultValue": "" + }, + "tagvalues": { + "type": "object", + "defaultValue": "" + }, + "chefprefix": { + "type": "string", + "defaultValue": "" + }, + "keyName": { + "type": "string", + "defaultValue": "" + }, + "kmServerUrl": { + "type": "string", + "defaultValue": "" + }, + "chef_node_name": { + "type": "string", + "defaultValue": "" + }, + "chef_server_url": { + "type": "string", + "defaultValue": "" + }, + "validation_client_name": { + "type": "string", + "defaultValue": "" + }, + "validation_key_format": { + "type": "string", + "defaultValue": "" + }, + "runlist": { + "type": "string", + "defaultValue": "" + }, + "resourcegroupName": { + "type": "string", + "defaultValue": "" + }, + "chefnodeCustomScripturl": { + "type": "string", + "defaultValue": "" + }, + "baseUrl": { + "type": "string", + "metadata": { + "description": "Base public URL for the script. Most likely this will be your Github, Azure Blob or Dropbox URL" + } + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrPublicKeyDSAgent": { + "type": "securestring" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": { + "publicIPAddressNameChefWorkstation": "publicIPChefWorkstation", + "networkInterfaceNameChefWorkstation": "parameters('vmNameChefWorkstation')-nic", + "securityGroupNameChefWorkstation": "parameters('vmNameChefWorkstation')-nic-nsg", + "publicIPAddressNameDSAWindows": "publicipdsawindows", + "networkInterfaceNameDSAWindows": "parameters('vmNameDSAWindows')-nic", + "securityGroupNameDSAWindows": "parameters('vmNameDSAWindows')-nic-nsg", + "publicIPAddressNameDSAgent": "publicipdsalinux", + "networkInterfaceNameDSAgent": "parameters('vmNameDSAgent')-nic", + "securityGroupNameDSAgent": "parameters('vmNameDSAgent')-nic-nsg", + "vmExtensionName": "ChefnodeExtension", + "vmExtensionName2": "ChefCustomScript", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/ parameters('adminUsernameDSAgent')/.ssh/authorized_keys", + "keyData": "adminPasswordOrPublicKeyDSAgent" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "parameters('chefprefix')publicIPChefWorkstation", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "parameters('chefprefix')parameters('publicIPDomainNameLabelChefWorkstation')" + } + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "parameters('chefprefix')parameters('vmNameChefWorkstation')-nic", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/parameters('chefprefix')publicIPChefWorkstation" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('chefprefix')publicIPChefWorkstation" + }, + "subnet": { + "id": "" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "parameters('chefprefix')parameters('vmNameChefWorkstation')", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ parameters('chefprefix')parameters('vmNameChefWorkstation')-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "" + }, + "osProfile": { + "computerName": "", + "adminUsername": "", + "adminPassword": "" + }, + "storageProfile": { + "imageReference": { + "publisher": "", + "offer": "", + "sku": "", + "version": "latest" + }, + "osDisk": { + "name": "parameters('chefprefix')parameters('vmNameChefWorkstation')-osDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/parameters('chefprefix')parameters('vmNameChefWorkstation')-nic" + } + ] + } + }, + "resources": [] + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "parameters('chefprefix')publicipdsalinuxcopyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "parameters('chefprefix')parameters('publicIPDomainNameLabelDSAgent')copyindex()" + } + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "parameters('chefprefix')parameters('vmNameDSAgent')-niccopyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/ parameters('chefprefix')publicipdsalinuxcopyindex()" + ], + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('chefprefix')publicipdsalinuxcopyindex()" + }, + "subnet": { + "id": "" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "parameters('chefprefix')parameters('vmNameDSAgent')copyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ parameters('chefprefix')parameters('vmNameDSAgent')-niccopyindex()" + ], + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "hardwareProfile": { + "vmSize": "" + }, + "osProfile": { + "computerName": "", + "adminUsername": "", + "adminPassword": "adminPasswordOrPublicKeyDSAgent", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "", + "offer": "", + "sku": "", + "version": "latest" + }, + "osDisk": { + "name": "parameters('chefprefix')parameters('vmNameDSAgent')copyindex()-osDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/parameters('chefprefix')parameters('vmNameDSAgent')-niccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "parameters('chefprefix')parameters('vmNameDSAgent')copyIndex()/ChefnodeExtension", + "apiVersion": "2015-05-01-preview", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "copy": { + "name": "foo", + "count": "" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ parameters('chefprefix')parameters('vmNameDSAgent')copyindex()" + ], + "properties": { + "publisher": "Chef.Bootstrap.WindowsAzure", + "type": "LinuxChefClient", + "typeHandlerVersion": "1210.12", + "autoUpgradeMinorVersion": true, + "settings": { + "bootstrap_options": { + "chef_node_name": "parameters('chef_node_name')copyIndex()", + "chef_server_url": "", + "validation_client_name": "" + }, + "validation_key_format": "", + "runlist": "", + "client_rb": "ssl_verify_mode :verify_none" + }, + "protectedSettings": { + "validation_key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMnpwOTRCd0FvanRzbzF0R3hVekJySUNPWHd1Y09RWUhKWm54QnFBRnlGWTVNZ3hPClEvZWZPOGtFd2ZMNmVVaWYyQVJpd1FNb0xwSHQyd1Rsanp1SG9NZFduREpqanFuRWVHN2lFT2pSOExPOUxMWUUKVW1DVWthVFN0aDVCbUs3SEFOZExhUnRhWE1FU3ljem9QNFA2WEpaRXArVzZZOWkrRTRrcjcxajVOOXVCSVZzbwpGVTc3RDMrZnQ3THdFVHU3blBXWkl1OUMyUlZMb2d4b2lnSWdlUmNsSmlKaFdWaWR5OHNaaHMwMkJkY3pKUlJFClpQSmJIUld6dCtGN2RJdWVQSW81aW5LdEhNeE5Vay90bnY0U3RnS0l5RzBuc01IUWNJNmNPbDE0Lzh4Mjl1OTgKdTA1a1FwRHljWWxodWRBVXBZOGF6blNhZTV2Z2lxUGxQNU0rWFFJREFRQUJBb0lCQUg2QllFWEVvdkQ3RFpPdQpoa1l3SnNxZVhJbW9MM3dRYUd0Z1M5K2cwL1ZwSEJRdldiS0szODRtRDZMRHpablRPTG4wdmUvWEhJYlRHc2g2CktPWGdXa0dEQmcyWVhpN2k5RWJ5NVcwUWpLVXpjd1NyL0E1MVFRWlNjRzA3UkdzUTRERXlDNGdaaXFsZm1MSHUKbGs2Z29BWnhpQ2pDdmk0RDBwdC9XbVVCbUw2TDBLTXlwbThiM0ZkVFdPeENFWE1KZTZXeHdxSUZxejRyWFpxSwpyWkxmdDc5c3Y2ZzdQMUsraVFVcGxaaHd6SEJtUjVQS283enZBS29UQ0hBeUVpRHZyM0ZySTNhVThLRktaalg0CjBvdFlKVERpNHh6TWJMcWVoT2V5SFZNNEJlRnFTOHZGYjF2ZkVVSU44emRLdS9WNGJveWI3VDRjY3AzQmVlOWEKUGQ1TXVKa0NnWUVBOE5uc3dPVVFuR0t4WUN3YlgwWGUydHByNkFKK2djYmNJempJaHIxM1UrKzlGbXc2c01nZgpNMk9IekFZOTMveU8yMi84Z0l4TFA3TVpGbHRFNzdhQkpSL0xCZTBMRXVOYU50Ri94cENoRktkTHlWSHdkUGtBCmpMY0pmRmQ3TXhpejk4d3Y2cnhSZDRMOU5WaXZVakwwYytOYmpUNVVpQWNsNmxGeFRrSUhZaU1DZ1lFQTZRUm8KSnBrSG95VVZnMnFsWjJuRlVyU3FOWS9qTnIvSWR2WmNuYnIxM3ZmZ2dGVzZOQW83aXZTNGxQVlhMNVFuNndHTwpsUkxXR2g3ZEVRTlpPdWtZUFR6SjVCNVh4LzhnMVVJdFI5VHRtM242cE1SWnJWbDIxVHc5dXA5aW5HQ0krdXdWCmJJb2x5anNtQ25tU1JWckdHZ0NxT0J1SW1SOExyRVUzK0VuRHBYOENnWUFPN1pMdENjV1R5OUl1b2MwNGhINGgKbG5RbHR6SGNIVlU3b2FOY0pwWWt6N0VxbUo2eW9sUzh2S2lJRHNMN0JRNWRyMzA1QW5rUGc2eEVaSGZMVzhaNQpaSlVTMHZSaXdWQ3dJU0FJVUtLTFF5dEJXU0RNUHpxM2ZnaktlaW1hcXlkTWJvMXh3U1pUZi96dHQ0ZDJVczR2CitLR09DWlQzc1dtNk1qNFJtYW9YZlFLQmdRQ2VTM0VaYjNJQndZcUkyU1QrU0p0VTRRaVVGR2h0WkFHaDF5RDUKd2UyUGgrTEtLL0t2c1pmYmdQMzNxMmVNR2VDNFJEbUJTZWVLblJiZW5PQzhKV2RqQ20yNGUyaDBvL3ZCQkJEUQpzSFN0MzBLSE5pQVpwQ0lYSDdKcm1pVWFTSFlseDhXU0U1TXllOVlPM2FHaFhkWWdDZjJZMmhPRXVkTnJOeWFiCmxEakZyd0tCZ1FDRDh5TTZiTCswMU5CekkzT2JPZXROYU5BeGVkeC96TElVTGNnRW1tK0JZR2QrTFNCVnNDVEUKanIxN0ZxZEVhVXNOL1E1ZEVsQ0pHbVowUVR5MkFWQThodUk0YmtEQ21LRGM1VnMyTCs5RXpyUkdqOU1xbGs4SQoxeFhwWGVUdHAybFZ2YkRsN0VZYklkazREa3NJZVRYeXhKS0dNWkRjQ1UxekJRMTNpMmNTUWc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQ==" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "parameters('chefprefix')parameters('vmNameDSAgent')copyIndex()/ChefCustomScript", + "apiVersion": "2015-05-01-preview", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "copy": { + "name": "foo", + "count": "" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ parameters('chefprefix')parameters('vmNameDSAgent')copyindex()", + "Microsoft.Compute/virtualMachines/ parameters('chefprefix')parameters('vmNameDSAgent')copyindex()/extensions/ChefnodeExtension" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "" + ], + "commandToExecute": "sh p2pchefnodebootstrap.sh parameters('keyName') parameters('kmServerUrl')" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT650 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT650 new file mode 100644 index 0000000..1e32053 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT650 @@ -0,0 +1,488 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/nested/on_prem_alerts.json" + ], + "timestamp": 1642962898637, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/on_prem_alerts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT650", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT650", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "workspaceName/on_prem_alerts", + "type": "Microsoft.OperationalInsights/workspaces/views", + "properties": { + "Name": "Alerts from On-Premises Resources Backup", + "Author": "Microsoft", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Alerts by Alert Type", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Alerts by Alert Type", + "Subtitle": "Filter by Datasource Type by Clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertType_s | sort by count_ desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertType_s | sort by count_ desc", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Alert Type", + "Value": "No of Alerts" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\", \"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertType_s=columnifexists(\"AlertType_s\", \"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists (\"AlertUniqueId_g\", \"AlertUniqueId_s\" ) | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertType_s | sort by count_ desc | search {selected item}; Alerts | join kind=leftsemi ( Selection ) on AlertType_s | project AlertUniqueId, AlertType_s, TimeGenerated, AlertStatus_s, BackupItemUniqueId_s", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\", \"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertType_s=columnifexists(\"AlertType_s\", \"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists (\"AlertUniqueId_g\", \"AlertUniqueId_s\" ) | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertType_s | sort by count_ desc | search {selected item}; Alerts | join kind=leftsemi ( Selection ) on AlertType_s | project AlertUniqueId, AlertType_s, TimeGenerated, AlertStatus_s, BackupItemUniqueId_s" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Alerts Created vs Alerts Resolved", + "newGroup": false, + "useIcon": false + }, + "Trend1": { + "Legend": "Alerts Created", + "LegendColor": "#00188f", + "ChartQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\") , BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists (\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s = columnifexists(\"AlertUniqueId_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") |where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_min(TimeGenerated, *) by AlertUniqueId; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(AlertUniqueId) by bin(TimeGenerated,1h)", + "Calculation": { + "Operation": "Sum" + } + }, + "Trend2": { + "Legend": "Alerts Resolved", + "LegendColor": "#0072c6", + "ChartQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") |where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\") , AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s = columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists (\"AlertUniqueId_g\",\"AlertUniqueId_s\")| where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_g; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where AlertStatus_s==\"Resolved\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(AlertUniqueId) by bin(TimeGenerated,1h)", + "Calculation": { + "Operation": "Sum" + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s=columnifexists(\"AlertStatus_s\", \"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\"); Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by AlertUniqueId | extend CurrentStatus = AlertStatus_s | join kind=leftouter ( Alerts | summarize arg_max(TimeGenerated, *) by TimeGenerated, AlertUniqueId | summarize HitCount = count() by AlertUniqueId ) on AlertUniqueId | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"\") | where ${DatasourceType} | project AlertUniqueId , AlertStatus_s, AlertType_s, HitCount | sort by AlertStatus_s asc, HitCount desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Alert Unique ID", + "Value": "Hit Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") |where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\")| where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\"); let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertUniqueId != \"\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend CurrentStatus = AlertStatus_s | join kind=leftouter ( Alerts | summarize arg_max(TimeGenerated,*) by TimeGenerated, AlertUniqueId | summarize HitCount = count() by AlertUniqueId ) on AlertUniqueId | where AlertUniqueId !=\"\" | project AlertUniqueId , AlertStatus_s, AlertCode_s, AlertType_s, HitCount | sort by AlertStatus_s asc, HitCount desc | search {selected item}; Alerts | join kind=inner(Selection) on AlertUniqueId | summarize arg_max(TimeGenerated, *) by AlertUniqueId |project TimeGenerated, AlertUniqueId, BackupItemUniqueId_s, AlertType_s, AlertCode_s, AlertStatus_s, HitCount", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\") |where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), AlertType_s=columnifexists(\"AlertType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\")| where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\"); let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertUniqueId != \"\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend CurrentStatus = AlertStatus_s | join kind=leftouter ( Alerts | summarize arg_max(TimeGenerated,*) by TimeGenerated, AlertUniqueId | summarize HitCount = count() by AlertUniqueId ) on AlertUniqueId | where AlertUniqueId !=\"\" | project AlertUniqueId , AlertStatus_s, AlertCode_s, AlertType_s, HitCount | sort by AlertStatus_s asc, HitCount desc | search {selected item}; Alerts | join kind=inner(Selection) on AlertUniqueId | summarize arg_max(TimeGenerated, *) by AlertUniqueId |project TimeGenerated, AlertUniqueId, BackupItemUniqueId_s, AlertType_s, AlertCode_s, AlertStatus_s, HitCount" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Active Alerts by Severity", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Active Alerts by Severity", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\", \"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\", \"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_g | where AlertUniqueId_g != \"\"; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where AlertStatus_s==\"Active\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertSeverity_s | sort by count_ desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Critical", + "color": "#eb3c00" + }, + { + "value": "Warning", + "color": "#ff8c00" + }, + { + "value": "Information", + "color": "#fff100" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\", \"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\", \"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_g | where AlertUniqueId_g != \"\"; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where AlertStatus_s==\"Active\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertSeverity_s | sort by count_ desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Alert Severity", + "Value": "No of Alerts" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\", \"\"), TimeGenerated=columnifexists(\"TimeGenerated\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\") , AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s = columnifexists(\"AlertUniqueId_s\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\", \"AlertUniqueId_s\") |where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where AlertUniqueId_g != \"\" | where AlertStatus_s==\"Active\" | summarize count() by AlertSeverity_s | sort by count_ desc | search {selected item} ; Alerts | join kind=leftsemi(Selection) on AlertSeverity_s | where AlertStatus_s==\"Active\"| project AlertUniqueId, AlertSeverity_s, BackupItemUniqueId_s, AlertCode_s, AlertStatus_s, Alert_TimeGenerated ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\", \"\"), TimeGenerated=columnifexists(\"TimeGenerated\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\") , AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s = columnifexists(\"AlertUniqueId_s\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\", \"AlertUniqueId_s\") |where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where AlertUniqueId_g != \"\" | where AlertStatus_s==\"Active\" | summarize count() by AlertSeverity_s | sort by count_ desc | search {selected item} ; Alerts | join kind=leftsemi(Selection) on AlertSeverity_s | where AlertStatus_s==\"Active\"| project AlertUniqueId, AlertSeverity_s, BackupItemUniqueId_s, AlertCode_s, AlertStatus_s, Alert_TimeGenerated " + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Resolved Alerts by Severity", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Resolved Alerts by Severity", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\", \"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\", \"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_g | where AlertUniqueId_g != \"\"; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where AlertStatus_s==\"Resolved\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertSeverity_s | sort by count_ desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\", \"\") , AlertStatus_s=columnifexists(\"AlertStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\", \"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | extend AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId_g | where AlertUniqueId_g != \"\"; Alerts | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where AlertStatus_s==\"Resolved\" | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count() by AlertSeverity_s | sort by count_ desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Alert Severity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\", \"\"), TimeGenerated=columnifexists(\"TimeGenerated\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\") , AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s = columnifexists(\"AlertUniqueId_s\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\", \"AlertUniqueId_s\") |where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where AlertUniqueId_g != \"\" | where AlertStatus_s==\"Active\" | summarize count() by AlertSeverity_s | sort by count_ desc | search {selected item} ; Alerts | join kind=leftsemi(Selection) on AlertSeverity_s | where AlertStatus_s==\"Resolved\"| project AlertUniqueId, AlertSeverity_s, BackupItemUniqueId_s, AlertCode_s, AlertStatus_s, Alert_TimeGenerated ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\", \"\"), TimeGenerated=columnifexists(\"TimeGenerated\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts=Events | where OperationName == \"Alert\" | extend BackupManagementType_s=columnifexists(\"BackupManagementType_s\",\"\") , AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s = columnifexists(\"AlertUniqueId_s\",\"\"), AlertSeverity_s=columnifexists(\"AlertSeverity_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), AlertCode_s=columnifexists(\"AlertCode_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\", \"AlertUniqueId_s\") |where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId; let Selection = Alerts | join kind=leftouter ( BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where AlertUniqueId_g != \"\" | where AlertStatus_s==\"Active\" | summarize count() by AlertSeverity_s | sort by count_ desc | search {selected item} ; Alerts | join kind=leftsemi(Selection) on AlertSeverity_s | where AlertStatus_s==\"Resolved\"| project AlertUniqueId, AlertSeverity_s, BackupItemUniqueId_s, AlertCode_s, AlertStatus_s, Alert_TimeGenerated " + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Avg Alert Resolution Time per week (hrs)", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Avg Alert Resolution Time per week (hrs)", + "Subtitle": "Stretch the time axis to see the trend (above time filter)" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts= Alerts |summarize arg_min(Alert_TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds= Alerts | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); Table1 | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} | summarize avg(timeToResolveInHrs) by bin(Alert_TimeGenerated,7d)", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts= Alerts |summarize arg_min(Alert_TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds= Alerts | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); Table1 | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} | summarize avg(timeToResolveInHrs) by bin(Alert_TimeGenerated,7d)", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Week Start", + "Value": "Average resolution Time (hrs)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts= Alerts |summarize arg_min(Alert_TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds= Alerts | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); Table1 | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} | summarize avg(timeToResolveInHrs) by bin(Alert_TimeGenerated,7d)", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")|where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts = Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists(\"AlertUniqueId_g\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\"), Alert_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts= Alerts |summarize arg_min(Alert_TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds= Alerts | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); Table1 | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} | summarize avg(timeToResolveInHrs) by bin(Alert_TimeGenerated,7d)" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top 3 backup Items by Avg Alert Resolution time", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Breakup by Avg Alert Resolution time (hrs)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\", \"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts= Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists (\"AlertUniqueId_g\", \"\"), AlertUniqueId_s = columnifexists (\"AlertUniqueId_s\",\"\"), Alert_TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\", \"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId = columnifexists (\"AlertUniqueId_g\", \"AlertUniqueId_s\")|where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts=Alerts | summarize arg_min(Alert_TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} ; Table2 | extend BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s2\",\"BackupItemFriendlyName_s\") | summarize avg(timeToResolveInHrs) by BackupItemFriendlyName | sort by avg_timeToResolveInHrs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\", \"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts= Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists (\"AlertUniqueId_g\", \"\"), AlertUniqueId_s = columnifexists (\"AlertUniqueId_s\",\"\"), Alert_TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\", \"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend AlertUniqueId = columnifexists (\"AlertUniqueId_g\", \"AlertUniqueId_s\")|where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts=Alerts | summarize arg_min(Alert_TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} ; Table2 | extend BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s2\",\"BackupItemFriendlyName_s\") | summarize avg(timeToResolveInHrs) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by avg_timeToResolveInHrs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Avg Resolution Time (hrs)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\", \"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts= Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists (\"AlertUniqueId_g\", \"\"), AlertUniqueId_s = columnifexists (\"AlertUniqueId_s\",\"\"), Alert_TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\", \"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId = columnifexists (\"AlertUniqueId_g\", \"AlertUniqueId_s\")|where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts=Alerts | summarize arg_min(Alert_TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} ; Table2 | extend BackupItemFriendlyName = columnifexists (\"BackupItemFriendlyName_s2\", \"BackupItemFriendlyName_s\") | summarize avg(timeToResolveInHrs) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by avg_timeToResolveInHrs desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\", \"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\", \"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Alerts= Events | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_g = columnifexists (\"AlertUniqueId_g\", \"\"), AlertUniqueId_s = columnifexists (\"AlertUniqueId_s\",\"\"), Alert_TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\", \"\") , BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| extend AlertUniqueId = columnifexists (\"AlertUniqueId_g\", \"AlertUniqueId_s\")|where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") ; let AlertStarts=Alerts | summarize arg_min(Alert_TimeGenerated, *) by AlertUniqueId | extend startTime=Alert_TimeGenerated; let AlertEnds=Alerts | summarize arg_max(Alert_TimeGenerated, *) by AlertUniqueId | where AlertStatus_s==\"Resolved\" | extend endTime=Alert_TimeGenerated; let Table1 = AlertStarts | join kind=inner ( AlertEnds ) on AlertUniqueId | extend timeToResolveInHrs=datetime_diff(\"hour\",endTime,startTime); let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s2\",\"BackupItemType_s\") | where ${DatasourceType} ; Table2 | extend BackupItemFriendlyName = columnifexists (\"BackupItemFriendlyName_s2\", \"BackupItemFriendlyName_s\") | summarize avg(timeToResolveInHrs) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by avg_timeToResolveInHrs desc | search {selected item}" + } + } + } + } + ], + "Filters": [ + { + "FieldName": "BackupItemType_s", + "QueryForValues": "AzureDiagnostics | where Category == \"AzureBackupReport\" | distinct BackupItemType_s", + "Title": "DatasourceType" + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "TileOne": { + "Legend": "Alerts Created in Period", + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\"| where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId |count " + }, + "TileTwo": { + "Legend": "Active Alerts Created in Period", + "Query": " AzureDiagnostics | where Category == \"AzureBackupReport\"| where SchemaVersion_s==\"V2\" | where OperationName == \"Alert\" | extend BackupManagementType_s = columnifexists(\"BackupManagementType_s\",\"\"), AlertUniqueId_s=columnifexists(\"AlertUniqueId_s\",\"\"), AlertUniqueId_g=columnifexists(\"AlertUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), AlertStatus_s = columnifexists(\"AlertStatus_s\",\"\") | extend AlertUniqueId=columnifexists(\"AlertUniqueId_g\",\"AlertUniqueId_s\") | where BackupManagementType_s in~(\"MAB\",\"DPM\",\"AzureBackupServer\") | summarize arg_max(TimeGenerated, *) by AlertUniqueId | where AlertStatus_s == \"Active\" |count " + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT651 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT651 new file mode 100644 index 0000000..7fa0e34 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT651 @@ -0,0 +1,628 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/nested/restore_jobs.json" + ], + "timestamp": 1642962898646, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/nested/restore_jobs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT651", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/views" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT651", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "workspaceName/restore_jobs", + "type": "Microsoft.OperationalInsights/workspaces/views", + "properties": { + "Name": "Restore Jobs", + "Author": "Microsoft", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Status", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Status", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": " let Events= AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"); let Jobs = Events | where OperationName == \"Job\" |extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"); Jobs | extend TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\", \"Recovery\") | join kind=leftouter ( BackupItems ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc ", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#eb3c00" + }, + { + "value": "CompletedWithWarnings", + "color": "#ffb900" + } + ] + } + }, + "List": { + "Query": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName ==\"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"); let BackupItems = Events | where OperationName ==\"BackupItem\" | extend BackupItemType_s= columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\",\"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s ) on BackupItemUniqueId_s| where ${DatasourceType} | project BackupItemFriendlyName_s, BackupItemUniqueId_s, JobStatus_s, Vault=Resource | summarize count() by BackupItemUniqueId_s , BackupItemFriendlyName_s, JobStatus_s, Vault | order by count_ desc", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events=AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"); let BackupItems = Events | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\" , \"\"); let ProtectedContainers = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists (\"ProtectedContainerUniqueId_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\",\"Recovery\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated,*) by BackupItemUniqueId_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( ProtectedContainers | summarize arg_max(TimeGenerated,*) by ProtectedContainerUniqueId_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Vault=Resource, JobFailureCode_s | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events=AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s=columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"); let BackupItems = Events | where OperationName == \"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\" , \"\"); let ProtectedContainers = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists (\"ProtectedContainerUniqueId_s\",\"\"); Jobs | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\"), Resource = columnifexists(\"Resource\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\",\"Recovery\") | summarize arg_max(TimeGenerated,*) by JobUniqueId_g | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( BackupItems | summarize arg_max(TimeGenerated,*) by BackupItemUniqueId_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( ProtectedContainers | summarize arg_max(TimeGenerated,*) by ProtectedContainerUniqueId_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Vault=Resource, JobFailureCode_s | where {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top 3 Backup Items by Job Duration", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Total Job Duration (Hrs)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" ; let BackupIdNameMap = BackupItems | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName == \"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s= columnifexists (\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\",\"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s | sort by totalDurationInHrs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") |where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\") | where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Total Job Duration (hrs)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName ==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobDurationInSecs_s = columnifexists (\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobStatus_s, JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; let Selection = Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc | search {selected item} | join ( BackupIdNameMap ) on BackupItemFriendlyName_s; Selection | join(Jobs) on BackupItemUniqueId_s ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists (\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemType_s, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let ContainerIdNameMap = Events | where OperationName ==\"ProtectedContainer\" | extend ProtectedContainerFriendlyName_s = columnifexists(\"ProtectedContainerFriendlyName_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") |where ProtectedContainerFriendlyName_s != \"\" | project TimeGenerated, ProtectedContainerFriendlyName_s , ProtectedContainerUniqueId_s | summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobDurationInSecs_s = columnifexists (\"JobDurationInSecs_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | project BackupItemUniqueId_s, JobUniqueId_g , JobStatus_s, JobDurationInSecs_s, ProtectedContainerUniqueId_s; let Table1 = Jobs | join kind=leftouter ( ContainerIdNameMap ) on ProtectedContainerUniqueId_s; let Table2 = Table1 | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s; let Selection = Table2 | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where BackupItemFriendlyName_s !=\"\" | summarize totalDurationInHrs = round(sum(todouble(JobDurationInSecs_s)/3600),2) by BackupItemUniqueId_s, BackupItemFriendlyName_s | sort by totalDurationInHrs desc | search {selected item} | join ( BackupIdNameMap ) on BackupItemFriendlyName_s; Selection | join(Jobs) on BackupItemUniqueId_s " + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Total Data Transferred", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Total Data Transferred (MB)", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" ; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists (\"JobUniqueId_g\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\", \"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\")| where JobOperation_s !in~(\"Restore\", \"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\", \"BackupItemType_s\") | where ${DatasourceType} | summarize sum(todouble(DataTransferredInMB_s)) by bin(TimeGenerated, 1d), JobOperation_s", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\") , TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\", \"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "Total Data Transferred (MB)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\", \"\") , JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\",\"\") | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\", \"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithTotalDataTransferred = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s in~(\"Restore\",\"Recovery\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc | search {selected item}; JobsWithTotalDataTransferred | join(Jobs| where JobOperation_s in~(\"Restore\",\"Recovery\")) on BackupItemUniqueId_s | project JobUniqueId_g, TimeGenerated, DataTransferredInMB_s, JobStatus_s, ProtectedContainerUniqueId_s, BackupItemUniqueId_s, BackupItemFriendlyName, JobOperation_s", + "NavigationSelect": { + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\", \"\") , JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), DataTransferredInMB_s = columnifexists(\"DataTransferredInMB_s\",\"\") | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\", \"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s, BackupItemFriendlyName_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithTotalDataTransferred = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s in~(\"Restore\",\"Recovery\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\") | where ${DatasourceType} | summarize totalDataTransferred=sum(todouble(DataTransferredInMB_s)) by BackupItemUniqueId_s, BackupItemFriendlyName | sort by totalDataTransferred desc | search {selected item}; JobsWithTotalDataTransferred | join(Jobs| where JobOperation_s in~(\"Restore\",\"Recovery\")) on BackupItemUniqueId_s | project JobUniqueId_g, TimeGenerated, DataTransferredInMB_s, JobStatus_s, ProtectedContainerUniqueId_s, BackupItemUniqueId_s, BackupItemFriendlyName, JobOperation_s" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Failed Restore Job Count per day", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Failed Restore Job Count per day", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Failed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend JobDate = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, JobDate, timeOfJob | project timeOfJob, BackupItemFriendlyName, JobDate, FailedBackupJobCount=count_JobUniqueId_g | sort by JobDate asc | summarize sum(toint(FailedBackupJobCount)) by bin(timeOfJob, 1d)", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\") , BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend JobStatus_s = columnifexists(\"JobStatus_s\", \"\"),BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists (\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Failed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemFriendlyName, BackupItemUniqueId_s, Job_Date | project BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, FailedBackupJobCount=count_JobUniqueId_g | sort by Job_Date asc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item Id", + "Value": "#Failed Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") | where ${DatasourceType}; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s in~(\"Restore\",\"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let BackupIdNameMap = BackupItems |extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s, BackupItemType_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob | project BackupItemUniqueId_s,BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob| sort by Job_Date desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\") | where ${DatasourceType}; let Jobs = Events| where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists (\"JobOperation_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s in~(\"Restore\",\"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let BackupIdNameMap = BackupItems |extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s, BackupItemType_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let FailedBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; FailedBackupJobs | extend Job_Date = format_datetime(timeOfJob, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob | project BackupItemUniqueId_s,BackupItemFriendlyName, Job_Date, ProtectedContainerUniqueId_s, timeOfJob| sort by Job_Date desc | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Successful Restore Job Count Per day", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Successful Restore Job Count Per day", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "LineChart": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project TimeGenerated, BackupItemFriendlyName_s, BackupItemType_s, BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} ; SuccessfulBackupJobs | extend JobDate = format_datetime(TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, JobDate, timeOfJob | project timeOfJob, BackupItemFriendlyName, JobDate, SuccessfulBackupJobCount=count_JobUniqueId_g | sort by JobDate asc | summarize sum(SuccessfulBackupJobCount) by bin(timeOfJob, 1d)", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\") | where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap | extend BackupItemFriendlyName=BackupItemFriendlyName_s ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count(JobUniqueId_g) by BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date | project BackupItemUniqueId_s, BackupItemFriendlyName, Job_Date, SuccessfulBackupJobCount=count_JobUniqueId_g | sort by Job_Date desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Backup Item ID", + "Value": "#Successful Backup Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count() by BackupItemUniqueId_s, BackupItemFriendlyName=columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\"), Job_Date, timeOfJob, JobUniqueId_g, JobStatus_s, ProtectedContainerUniqueId_s | sort by Job_Date desc | search {selected item}", + "NavigationSelect": { + "NavigationQuery": " let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"); let BackupIdNameMap = BackupItems | extend BackupItemFriendlyName_s = columnifexists(\"BackupItemFriendlyName_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemFriendlyName_s != \"\" | project BackupItem_TimeGenerated, BackupItemFriendlyName_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\", \"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\", \"\"), ProtectedContainerUniqueId_s = columnifexists(\"ProtectedContainerUniqueId_s\",\"\")| where JobStatus_s == \"Completed\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | extend timeOfJob = Job_TimeGenerated; let SuccessfulBackupJobs = Jobs | join kind=leftouter ( BackupIdNameMap ) on BackupItemUniqueId_s | where ${DatasourceType}; SuccessfulBackupJobs | extend Job_Date = format_datetime(Job_TimeGenerated, \"MM/dd/yy\") | summarize count() by BackupItemUniqueId_s, BackupItemFriendlyName=columnifexists(\"BackupItemFriendlyName_s1\",\"BackupItemFriendlyName_s\"), Job_Date, timeOfJob, JobUniqueId_g, JobStatus_s, ProtectedContainerUniqueId_s | sort by Job_Date desc | search {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Failed jobs by Failure Code", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Failed jobs by Failure Code", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists (\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s in~(\"Restore\",\"Recovery\") | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by JobFailureCode_s | sort by count_JobUniqueId_g desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists (\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs= Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s in~(\"Restore\",\"Recovery\") | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by JobFailureCode_s | sort by count_JobUniqueId_g desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Failure Code", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs=Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s in~(\"Restore\" ,\"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists (\"BackupItemType_s\",\"\"), TimeGenerated =columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs=Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobStatus_s = columnifexists(\"JobStatus_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobFailureCode_s = columnifexists(\"JobFailureCode_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobStatus_s == \"Failed\" | where JobOperation_s in~(\"Restore\" ,\"Recovery\") | summarize arg_max(TimeGenerated, *) by JobUniqueId_g | where JobUniqueId_g!=\"\"; Jobs | join kind=leftouter (BackupIdTypeMap) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | where {selected item}" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Creation Time", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Creation Time", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | where JobOperation_s in~(\"Restore\" , \"Recovery\") ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3) | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | project timeBucketStart24, timeBucketStart12 , timeBucketEnd12 , timeBucketStartMeridian , timeBucketEndMeridian , count_JobUniqueId_g | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | summarize noOfJobs=sum(count_JobUniqueId_g) by timeBucketString | sort by noOfJobs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s= columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g | where JobOperation_s in~(\"Restore\" , \"Recovery\") ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3) | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | project timeBucketStart24, timeBucketStart12 , timeBucketEnd12 , timeBucketStartMeridian , timeBucketEndMeridian , count_JobUniqueId_g | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | summarize noOfJobs=sum(count_JobUniqueId_g) by timeBucketString | sort by noOfJobs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Time of Day", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName == \"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\", \"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated= columnifexists(\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s=columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | where JobOperation_s in~(\"Restore\" ,\"Recovery\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g; let JobsWithTimeBucket = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | sort by count_JobUniqueId_g desc; let Selection=JobsWithTimeBucket | search {selected item}; Selection | join( JobsWithTimeBucket) on timeBucketString | project TimeOfDay=timeBucketString, JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName == \"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\", \"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName==\"Job\" | extend BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") , JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), Job_TimeGenerated= columnifexists(\"TimeGenerated\",\"\"), ProtectedContainerUniqueId_s=columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\")| extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobUniqueId_g!=\"\" | where JobOperation_s in~(\"Restore\" ,\"Recovery\") | summarize arg_max(Job_TimeGenerated, *) by JobUniqueId_g; let JobsWithTimeBucket = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | extend timeOfDay=datetime_part(\"Hour\",Job_TimeGenerated) | summarize count(JobUniqueId_g) by bin(timeOfDay,3), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend timeBucketStart24 = iff(timeOfDay-1.5>0,timeOfDay-1.5,timeOfDay-1.5+24), timeBucketEnd24=iff(timeOfDay+1.5<24,timeOfDay+1.5,timeOfDay+1.5-24) | extend timeBucketStart12=iff(timeBucketStart24>12,timeBucketStart24-12, timeBucketStart24) , timeBucketStartMeridian = iff(timeBucketStart24<12,\"AM\", iff(timeBucketStart24<24,\"PM\",\"AM\")), timeBucketEnd12=iff(timeBucketEnd24>12,timeBucketEnd24-12, timeBucketEnd24) , timeBucketEndMeridian = iff(timeBucketEnd24<12,\"AM\", iff(timeBucketEnd24<24,\"PM\",\"AM\")) | extend timeBucketStartHr=toint(timeBucketStart12), timeBucketStartMin=toint((timeBucketStart12-floor(timeBucketStart12,1))*60), timeBucketEndHr=toint(timeBucketEnd12), timeBucketEndMin=toint((timeBucketEnd12-floor(timeBucketEnd12,1))*60) | extend timeBucketStartMinString=iff(timeBucketStartMin>9,tostring(timeBucketStartMin),iff(timeBucketStartMin>0,strcat(\"0\",timeBucketStartMin), \"00\")), timeBucketEndMinString=iff(timeBucketEndMin>9,tostring(timeBucketEndMin),iff(timeBucketEndMin>0,strcat(\"0\",timeBucketEndMin), \"00\")) | extend timeBucketString = strcat(tostring(timeBucketStartHr),\":\",timeBucketStartMinString,timeBucketStartMeridian, \"-\",tostring(timeBucketEndHr), \":\", timeBucketEndMinString,timeBucketEndMeridian) | sort by count_JobUniqueId_g desc; let Selection=JobsWithTimeBucket | search {selected item}; Selection | join( JobsWithTimeBucket) on timeBucketString | project TimeOfDay=timeBucketString, JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s" + } + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Jobs by Job Duration", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs by Job Duration", + "Subtitle": "Filter by Datasource Type by clicking the (+) above" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\", \"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") |summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600) | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | summarize noOfJobs= sum(count_JobUniqueId_g) by JobDurationString | sort by noOfJobs desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let BackupIdTypeMap = BackupItems | extend BackupItemType_s = columnifexists(\"BackupItemType_s\",\"\"), BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\")| where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let Jobs = Events | where OperationName == \"Job\" | extend BackupItemUniqueId_s = columnifexists (\"BackupItemUniqueId_s\",\"\"), JobOperation_s = columnifexists(\"JobOperation_s\",\"\") , Job_TimeGenerated = columnifexists(\"TimeGenerated\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\", \"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s in~(\"Restore\" , \"Recovery\") |summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g ; Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600) | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | summarize noOfJobs= sum(count_JobUniqueId_g) by JobDurationString | sort by noOfJobs desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Job Duration", + "Value": "No of Jobs" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\"), ProtectedContainerUniqueId_s =columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s=columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g; let BackupIdTypeMap = BackupItems |extend BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithDurationString = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s in~(\"Restore\" ,\"Recovery\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | sort by count_JobUniqueId_g desc; let Selection = JobsWithDurationString | search {selected item}; Selection | join ( JobsWithDurationString ) on JobDurationString | project JobDurationString,JobUniqueId_g, JobStatus_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s ", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; let BackupItems = Events | where OperationName==\"BackupItem\"; let Jobs = Events | where OperationName == \"Job\" | extend JobOperation_s = columnifexists(\"JobOperation_s\",\"\"), Job_TimeGenerated = columnifexists(\"TimeGenerated\", \"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobDurationInSecs_s = columnifexists(\"JobDurationInSecs_s\",\"\"), ProtectedContainerUniqueId_s =columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), JobStatus_s=columnifexists(\"JobStatus_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | summarize arg_max(Job_TimeGenerated,*) by JobUniqueId_g; let BackupIdTypeMap = BackupItems |extend BackupItem_TimeGenerated=columnifexists(\"TimeGenerated\",\"\"), BackupItemType_s=columnifexists(\"BackupItemType_s\",\"\"), BackupItemUniqueId_s = columnifexists(\"BackupItemUniqueId_s\",\"\") | where BackupItemType_s != \"\" | project BackupItem_TimeGenerated, BackupItemType_s , BackupItemUniqueId_s | summarize arg_max(BackupItem_TimeGenerated, *) by BackupItemUniqueId_s; let JobsWithDurationString = Jobs | join kind=leftouter ( BackupIdTypeMap ) on BackupItemUniqueId_s | where JobOperation_s in~(\"Restore\" ,\"Recovery\") | extend BackupItemType_s=columnifexists(\"BackupItemType_s1\",\"BackupItemType_s\") | where ${DatasourceType} | summarize count(JobUniqueId_g) by bin(todouble(JobDurationInSecs_s), 600), JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s | extend JobDurationInMin = todouble(JobDurationInSecs_s) / 60 | extend JobDurationLowerLimit=iff(JobDurationInMin>5,JobDurationInMin - 5,todouble(0)), JobDurationUpperLimit = JobDurationInMin + 5 | extend JobDurationString=strcat(tostring(JobDurationLowerLimit),\" to \",tostring(JobDurationUpperLimit), \" min\") | sort by count_JobUniqueId_g desc; let Selection = JobsWithDurationString | search {selected item}; Selection | join ( JobsWithDurationString ) on JobDurationString | project JobDurationString,JobUniqueId_g, JobStatus_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s " + } + } + } + } + ], + "Filters": [ + { + "FieldName": "BackupItemType_s", + "QueryForValues": "AzureDiagnostics | where Category == \"AzureBackupReport\" |distinct BackupItemType_s", + "Title": "DatasourceType" + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" | where SchemaVersion_s==\"V2\"; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" | extend JobOperation_s=columnifexists(\"JobOperation_s\",\"\"), JobUniqueId_g = columnifexists(\"JobUniqueId_g\",\"\"), JobStatus_s = columnifexists(\"JobStatus_s\",\"\") | where JobOperation_s in~(\"Restore\",\"Recovery\") | summarize dcount(JobUniqueId_g) by JobStatus_s ", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#eb3c00" + }, + { + "value": "CompletedWithWarnings", + "color": "#ffb900" + } + ] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT652 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT652 new file mode 100644 index 0000000..d2b01e4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT652 @@ -0,0 +1,73 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/prereqs/prereq.azuredeploy.json", + "/demos/backup-la-reporting/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898664, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/prereqs/prereq.azuredeploy.json", + "/demos/backup-la-reporting/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT652", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT652", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "GEN-UNIQUE-32", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [ + { + "name": "GEN-UNIQUE-32", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-10-01", + "location": "[resourceGroup().location]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('workspaceName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT653 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT653 new file mode 100644 index 0000000..2955cc8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT653 @@ -0,0 +1,191 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-la-reporting/azuredeploy.json", + "/demos/backup-la-reporting/azuredeploy.parameters.json" + ], + "timestamp": 1642962898676, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-la-reporting/azuredeploy.json", + "/demos/backup-la-reporting/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT653", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT653", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name." + }, + "value": "GET-PREREQ-workspaceName" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "nestedTemplates": { + "backup_jobs_non_log": "[uri(parameters('_artifactsLocation'), concat('nested/backup_jobs_non_log.json', parameters('_artifactsLocationSasToken')))]", + "backup_jobs_log": "[uri(parameters('_artifactsLocation'), concat('nested/backup_jobs_log.json', parameters('_artifactsLocationSasToken')))]", + "restore_jobs": "[uri(parameters('_artifactsLocation'), concat('nested/restore_jobs.json', parameters('_artifactsLocationSasToken')))]", + "azure_alerts": "[uri(parameters('_artifactsLocation'), concat('nested/azure_alerts.json', parameters('_artifactsLocationSasToken')))]", + "on_prem_alerts": "[uri(parameters('_artifactsLocation'), concat('nested/on_prem_alerts.json', parameters('_artifactsLocationSasToken')))]", + "backup_items": "[uri(parameters('_artifactsLocation'), concat('nested/backup_items.json', parameters('_artifactsLocationSasToken')))]", + "cloud_storage": "[uri(parameters('_artifactsLocation'), concat('nested/cloud_storage.json', parameters('_artifactsLocationSasToken')))]" + } + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "name": "backup_jobs_non_log", + "type": "Microsoft.Resources/deployments", + "resourceGroup": "[resourceGroup().name]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).backup_jobs_non_log", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "GET-PREREQ-workspaceName" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "backup_jobs_log", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).backup_jobs_log", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "GET-PREREQ-workspaceName" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "restore_jobs", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).restore_jobs", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "GET-PREREQ-workspaceName" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "azure_alerts", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).azure_alerts", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "GET-PREREQ-workspaceName" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "on_prem_alerts", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).on_prem_alerts", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "GET-PREREQ-workspaceName" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "backup_items", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).backup_items", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "GET-PREREQ-workspaceName" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "cloud_storage", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).cloud_storage", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "workspaceName": { + "value": "GET-PREREQ-workspaceName" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT654 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT654 new file mode 100644 index 0000000..6b8d452 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT654 @@ -0,0 +1,729 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-oms-monitoring/azuredeploy.json", + "/demos/backup-oms-monitoring/azuredeploy.parameters.json" + ], + "timestamp": 1642962898685, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-oms-monitoring/azuredeploy.json", + "/demos/backup-oms-monitoring/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT654", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT654", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceLocation": { + "type": "string", + "allowedValues": [ + "centralus", + "eastus", + "eastus2", + "northcentralus", + "northeurope", + "southcentralus", + "westcentralus", + "westeurope", + "westus", + "westus2", + "uaenorth", + "switzerlandnorth", + "uksouth", + "francecentral", + "norwayeast", + "koreacentral", + "australiasoutheast", + "australiaeast", + "japaneast", + "centralindia", + "southeastasia", + "eastasia", + "chinaeast2", + "canadacentral", + "brazilsouth", + "usgovarizona", + "usgovvirginia" + ], + "metadata": { + "description": "Specify the workspace region" + }, + "value": "westus" + }, + "workspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specify the workspace name" + }, + "value": "GEN-UNIQUE-10" + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "Azure Backup Monitoring Solution", + "solutionName": "[concat('AzureBackup', '[', parameters('workspaceName'), ']')]", + "publisher": "Microsoft", + "displayName": "Azure Backup Monitoring Solution", + "description": "Monitor and analyze your Backup Vaults", + "author": "Microsoft" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "westus", + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "Azure Backup Monitoring Solution", + "type": "views", + "location": "westus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "Azure Backup Monitoring", + "NewGroup": false, + "Color": "#00d8cc" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAYAAACAvzbMAAAgAElEQVR4Xu3dB2ClZZk24OecnF6TTJLJJNP70EEEFRRkERQFXFQW1rWsZXV3de2/uoB1BTvruqwN112wAoroIiBNROlKnZ7JtGTSM8npLSf/e79hBCMzZL587ZxzX/vHZCbzM5NTvvt73vK8nmlFiIiIDpN39m8QERHNBQOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgM8Uwrs3+TiOrflHrnp8pVmaxUJVeZlqz6PFyclv2lKfX1tOTUHyhWp0X9Pymry4TXI+L3ePSHT916RtX/JP0eafZ7ZUHAK5EmjyTU57j6HPfz3rQRMECIGkDh6TBIqZCYKFVVSFRlX74q/fkpFRpTMqY+surPTKpAwZ9T+SFTVYTMzOXhwEVCZYgOEo/MhEhA/SKoPhK+mdDoCDVJuwqR7ohPukJeaQ4gZLwSU6ESVB/481Q/GCBEdaii3taoKjIqFLany9KbmZK+fEV2ZisyWJgJi9LUTFCoTPlTQMyXygj9gXBBsCA8OlWoLI/6ZJkKlVUx9bX6jOol6mOY1DoGCFGdyKtAGFeVxYAKiMcnyvLkZElVGaq6KE3pMCmqoMBwlBMQKsEmkbhvZrhrmQqUE1uCskYFCgImqX4PgUO1hQFCVMMwj4Ehqc3pkjy6vyyPTpR0lZEqT+vvuVlQVSkIjrUxvxzXEpCTWv2yQlUnnD+pHQwQohqDN2y6XJUdKigeGivJQ+NF2asqDUyIq+KjJoVVddKqEgXDXC9rC6lA8cti9ZsxjIWRazFAiGoE3qhjxarcP1bUH4/sL+lfu73SOFyqKJFOFR4ntQbl1AUBOV5VJ5hLIfdhgBC5XKk6LftUafH7kZLcM1KQrZmyqkBmltfWM8yxJwMeOToZkLM6w3JCs186gk16FRi5AwOEyKUQELtzFbltsCC/UcGxK1up2SGq+Yr6RDbE/XKmCpIz2oN6uTA5jwFC5ELYn3H3cEGHx3ZVcTRqcMwW86Ei8ctruiJycmtA2jATT45hgBC5yGixKveMFuXGvpz0MDgOCkFyXHNAXr84LC9oCXDllkMYIEQugJ3iT6XK8sM9WXlwrCjZyuw/Qc9lQdAjL+8Iy98sCcvKqF/vNyH7MECIHIaNfz/Zk5Nbh/IymK/O/jY9D2TGyliTXNAdlVcvCun2KWQPBgiRQ7C66r7RovxAhccf95fqbjmu3TCvfnpHSC5eEpFjmgM6WMhaDBAiBwyrquP6vrzctC+nvmbVYaYVqhp549KonL0wxLkRizFAiGz2xGRJvtubld+p6oNVhzWw7PfszrC8ZXlU724nazBAiGyCifI7hgvy3Z0Z2Znh8iqrYcMhNh/+w6qYvKAlyAl2CzBAiGyAPlWY6/jRnqxudEj26Qp75W0rYnJuV5gdf03GACGyGDYFour41UCe+zoc0hzwyEVLovI3SyLSwlVapmGAEFloa7os/7E9LfePleq2dxWGhjBX7fZwRG68RlUh/7gqJu04nITmjQFCZBGczfEf29Lqc3n2t+pKW9Ajr+yMyJ5cRS8McHNQIuzO6gzJu1SI4GREmh/WckQWeGCsKF/Ykqr78IAmj0fO6AjKJRsS8qpFIX22h1th1dutAwX5yta07Mpxu/98MUCITPZ7dRf+5W0p2ZJqjAvU1DSOy52WhaEm+cjahLx9ZVy3GHErFEj3jhTlSyrgMcRIxjFAiEyEyuPK7SnpSbt8QsBk5afHrdBG5M3LIvIBFSTLoy4uRQRBX5Irt7ESmQ8GCLkShhrQ6iOvvshUqvoIV3xgOeyBr/GRrcz8GfxZp4fecULgV9QFqdHCA55dbwS8HnnNorB89qiknNIWcPUBUA+MleSrW9P63BU6fJxEJ8fh7hWb7Arq834VCjimdUh9TJaqKjymVUhUpfL0qxRNP3A90h9Y/aP+B6294z6vJNXdb3vQI4tCTRJt8kqoySNYbOPDH7TYlnRZLt+UkicmG29IBJPonzwiKS9tD83+ll7CfM3urPyiP6eCfvZ33eMVC0PykXVxHlR1mBggZCtUFgiEjPpiQF1RBgpV6c2UpTdbkZHClExUZqoKVBQYFcHHs9t9HPgSkYCv8Rkra2Y+ZgID52fHVIAsCjfJiqhPf2Az2UL1zZgKmgjOSjURhkCuUOHx4Hhp9rcawqECBHLq+byxP6+CJCNDLu37hSrp/O6wvH9NnOevHwYGCFkOL7CMqiwGilPy5GRFNqfKslOFRp8KEAw/ofooWXRdwQ0ldh9HVWgsV0GCMyOOSfrlSPXRqiqW8Dz7W4yrf/jnt6Tk14OF2d9qGM8XIICbgHtHCnL1zqw85dIqDfcVb10elbevjM37ddEoGCBkGcxXDKrQeHyiLA+ru/NNKjjGS1OifsuxJoK4SKACwYohHI364gVBWRf36Y1lh3vRQKX07d6Mbk9iVQDWgrkEyAEY6vvWjoxeqebGxyzh98g/r47LGxZHXD134xYMEDIVgmFEJcRGdZd590hRd54dVb924xwlrg+4YGCo66SWoLykLSAbEv45DWHg5/zxnpxctSPlyp/NTocTIIDXx3V783JdX1YmS+67/CwKe/WellPb5vbzNDIGCJmiol5Gw8WqPiDptsGCPs97ouT8yqi5QmagR9KJLQE5oyMkJ6jPGOI6GKy4+uTGCenPufA22maHGyCAocubB/LyvV0ZVz6GGOb89FFJPX9GB8cAoXnBnXhfviJ3DyM48no5ZK3fkSdVVYIT7c7uDMkLVZBguOvZejIVvcscw3JkLEAACyT+OFGS7+zI6EB2aljzYF7TFZIPr03wiNxDYICQYftLVblLBcfP+3OyXVUcbm+md7iwPBiVyIVLwnJ8c1BPxOPOGbvMf96Xd90FzylGA+QArGK7ujcrt6sbkKKLihG0ZHnP6oRctDTCs0QOggFChw0b+HD3fYMKjsfVHWS2xiuO59Ma8MhpHSG5cHFEtqQrcqUKEJ7p8Yz5BgjgZgRLfTEvMph3T4p0hr3yKfWzvWhBcPa3SBggdJgwRPXDPTl9tzjuwglQq2BFDiZXVXbKSKFaM3M7djAjQAAV3R1DBflWb1p6XXRi42ntQfnUkUmeI/Ic+IjQnKCdyP8NFOSyJyfl+r25hgoPwHg9JnuHGR6WwTAR5p0+rS7WL1MX7TkshrPFg+NF+Vk/hyyfi0ueInIzLLv8xo6MXL55QrfqcPN5D1T7jk4G5NINCb0Xww2t4TG3d0NfVu9hoT/HAKFD+uP+knxmU0quU1VHra+uotqBnlQ4OfB9axJ6HsJpmJfBewCbR+kZzj8z5Eo43+HWwYJ8atOkPjsBY/9Edor7vXLhkohctiEpxzX7Z3/bVoiN34wU5LejxdnfamgMEPoLaH6HXdb/vi0le7LumcykxoPFC6e0BeXjGxJy5sKgPtfcKdg1f2NfTobrbb36PDj4dJAbYTnld3Zm5Js70jLo0s6p1HjWxf3ysfVJeduKmKOnHWJI99dDBc4DPo0BQn+C8PhWb0ZVH1lXn91A7uL5s+OkrNMW9Opuudjc1x1x5tKFKRAEyDA6ghIDhGZgpdV/9qT1El2GBx0OzJfZtcQVh4Sd3xWWy49q1s0vndghvi1dllsGCvrMmkbHACF98t93erPyy31c605zgz0aWGKrT4P0e/TpkHbBvMixzQE9L3KOChO7DxHEFMgdQ3kZ4FwId6I3OixLvEpVHj9RlQfDgw7AnT1CAscB45yUmAqJJI4NVr/ZFvLKAn+TdKjPzTj9UYXI2rhf79S2MUe0yXJVft6fl2t3Z2S0aN8LGJP5WGJ88dLGPjeEAdLAMPTwg905VX2kOWzV4HDQVqAJVYVHukI+WRnzSXsAYdEkS1SpgTNTWlVY+NXVEuHiezpc3AA3PrcPFeS7OzOyPW3fZqUTWvzyxWNa9NxMo2KANLAb+nJ63gPndlDjwGUfwz7YZ9EWmDk7Hquc1qrQwBkoLeqCmGjyqkDx/KkKcTu8gnHiJU47vH/Mnn1LaPv/0Q1JeeXCUMNWIQyQBoX+Pp/ZNOnKw3zIfLjARVQgYNgJpy6uic0Exmr1EVPlRLBpprKoddij8YM9Od16xI4u0dibcsmGxm20yABpQDi74/JNKXl0gr196hmqDMxZdKkvcEDW8c1+6Y40qapj5vx3rGiqR5jXw4KQa/dYf9phpwrky49u1ufGNCIGSIPBWR6Xb0npZYhUfzDkhIltDEkd3zITGssiPn0YVr0GxnPBvMgf9xflqp6MPGbhjRIe0jcvj8q7V8Uk2IDjWAyQBoI31c/6Z1qU2FHekz1wEcN4/FIVFCe1BuXE1pnQQPXRSKHxXLapavu7vVm5Z6Rg2YmZRyX98uVjm1U1YvN6YhdggDSQR8aL8ulNKdmbs+idRLbCPgxMgJ+sQuPFCwKyXlUdOL870IB3woeCfU7X9eXk+3uyup+V2ZIBjz618OUd8ztQqxYxQBoE3kT/tjmllztSbWtWF6zVMb+8tE0FR1tAloR9ek6DDq6gyu9bBgtyze6M7DT5tEMsgX7jsplhrEZ7HhggDQAdFzB09eWtKcvKeLIWLksLQ149GX5OZ0iOSPilNeitiSW2bvLEZEm+uSMjD42VdF8rsxyZ8MnlxzTrocNGwgBpALtyFbn0yUl5atK6yUSyBuKhXQUH5jbO7wrJWlV5JBt0yahZ+vIVuWZXTlUkecmUp005ohgdgj97JPpzBWd/q64xQOocSnccR/vDPVlbNleRebBn46XtQTl3UVhWRn2ScMsh4XUAS33/byAv39qRlnET5kWwGf1Ny6LyzgZbjcVXZJ3Dno/b1J0Ww6N2tAQ8cl53WK44ulk+sjYhxzUHGB4mw7LmpZEmvYHSDMUqhsfKuqJpJHxV1jH0uvq/gYIM8WComoDh85d3BOXTRyblQ2vj8oKWQMMvw7VCXlXlv9iXl69uS8uwie8NDI2NlhprkpEBUse2psry25GCKWO8ZB2s4jmxxS8fXpfUy0Ff1h7SezjIfGh1gs2FX9yS0o0XzexAnVLVx47sVEO93/gqrVO4y/rVYMHUOywy36KwV/5uWVQuU1XHa7vCnCC30BZ1Q/WVbTi6ICsZM5dgPQ0V/+5sRcoNdNAUX611aneuIveOFky9wyLzYNPyy9qD8lkVHNg/gOWfDTT3aiu8B+4aKsilGyfkNnVTZdV8IP67PZmynqBvFAyQOoQboAfHSjLK6sOVFkea5F0r43LphoSc2BrkPIeFcODU93dn5YvbUtKTtn5+oj8/JfutSigXYoDUobHSlNw1XNArQ8g9MDp1mqo6PqWqjjctj0hHA/ZOshOOnP3a9rR8c0daBvP2vBkmVHjsL9nzd7kBA6TOoPp4fKKsNw+Se2BPB/YJ4BzvE1sC3EFuIQwgPTxelM9umtTH3dp52ib2XSG4GmUQiwFSZzKVqjw4Xmq49ehutj7hk/+3LiHvXBlryI6tdjrQ8wp93+4bLekbKjvh79+ZqUixQSYfGSB1ZlSVz49OFDl57gJYiYsT6zBkdebCEOc6LIaho+/uzMoXt0zK7qyNZcezYPpjn6pAsCKrETBA6kxPusKNgy6AVusXLYnKR9cndJt1slaPuuv/6va0/O+ujEyY0JrEKNy4Tagga5R5dAZIHUH5/OD+YkMtI3Sj9qBX3rM6oZfntgcbY8jKqVccLtj3jRblE09NyC/78+KG+eu0ev+VG6TFIAOkjqQrVdkyWbZ93JeesSzaJB9al5CLlkZ0v6V6gos1Nqim1O31aLGqT/v7vbp43zFUkH15+yeO8W+5vi8nn9syKZtS7lk0glWQmItsBOzGW0ceGi/KpU9Ncve5Q3AmxL+sjcsLW4I1vylwJiyqupqdVBdD7CnqzVakTwXFcHFKD9NgvwM+R1RQYpEAWrDY9WOjJcn3d+fkp/1Z1x3PjNbuVx7bos9uqXcMkDpRUmXHD/fk9Jp3HhplvxNa/PJ+FR7HJGvzooGqNacCAy0+0MUAp/YhMPAxUKjo4VHc8aNX4OwR0oTfoxtA2nWk6xMTJbl6Z1YPXc3+t7gBjri94qjGOBuEAVIn0upu8Os9GblBlfQcwrLXya0BeZ8KD5wSWEvQswnj9egguzVVkUfVhbk3U9GriDAEowqNOa3ma1N33J88Iikvbbc2QLCyCaHx7d6MbHbRkNVsMVWRXaYej7M7rX083IABUifQQuHSJyfURYCnDtoFw1QID8x5rI7VxlGmqFTRNRZVBjacPqZCY0e2LJOlaT1cZeRiYEeAYN7lJ3tzuhHiaNHIv9I+WIH3sQ1JOb8rPPtbdYeT6HUCPX+GcMtItkF4YNiqFsIjp8IBk97XqYvwZzZNyiVPTag7+bT8dqQo/bmZoSu3XpZxc/Sfqrr+750Z14fHAY3SkZcBUicwmZmby3gDmeIFLX754Lq4rHPxHg9cxDAchQ60X9iakg8/PiFX9cyEBnpDuX2uDC/nB8eLcpkKOwzN2tmSZD7wLnTj3IwVGCB1AG+0PnU1wPDE4cDGaHxgxzQa/eFcZ3zGr/Fx4Pt2raypFcck/fLeNXFZE3NneOD1sDNbkZ/25eWyJyfk3zZPyk39edmTnaqZizDCD2eWX745JX/cX3tL0zExUGP/ZEM4B1IHsDoGXUd/vCf3p997Jgg8uoVGVH94Jeb3SLP6RtTnlYj6vaD6Pv4cmvupb+sXPtpo4WWB3bSV6ZnVN4XqzGe9rLOMu9dpPamJ38NnvOH1n6/W9xtnZaxJLt2QlBNa3LfaCs8JmmjePVyUO4fz0p+zJzDMngPBHhMMtV3fl5X9Du4qNwrtzt6zOi5vXBat+5svBkgdwATjFVtS+vjaReEmWRn1693QC9UruSPYJF0hr7Spr0MqLLAv2qc+YwJYf6hfozGs51kv9QOj4XhlYEfJgbupKfUF7m7xgcDIqi/GitgXMC1Dhaf3B6h/y4C6amE+BivD8GfdPlQyV3hMP7wu4brVNbg778mW5fbBotw2NBMcdo5mmhkgaEmCVVY4AKpWh4Fw8/auVXF56/KoruDrGQOkDuDO88nJkv7cHfFJqyopAiodfE9XIFa/hnEBQ+sGVB8V9YsMgqU0pcIFE/tV2Zwqy65sRS8XRZdgzNXUWq8g7HX4Z3VXeUF3WD+mboDHfV+hIrep4LhlMCd7s2jiN/tPWc+MAMENyQNjRb2/A6vDahleHeeq18nH1yckXOcJwgAhS+Eih2DDEBgqlO3pimxTH1g6ik1qk6WqLcMs84EhPpxbjt5WGPJzA1R3tw8X5Ya9WdmewTncs/+EfeYbIFgh9tP+nFyzKysjTiSgBdYlfPLlY5tlSdj9K/TmgwFCtpoZ0sIGtqpenomL3x/GS7I1U9btuFGhuOkFibg4qzOkl+sucsFZHpiTekzdoeOgpHtHCjLpgnNf5hMgg0+3JPm5ChAsJa4XaGfy8fVJOaMjVPNtbQ6FAUKOQoWCXc84x+SpybLeDY3hOLsmgJ8PVlxdfkxSFrvgThIX21sGCnJdX1YGbDqidS6MBsjj6rn+Vm9GHhwr2TpnYweMXJ3XHZYProlLHCVsnWKAkGvgIpJ9ujJ5SFUl948VpUdVJuOlaUeWcTYHZu4inZ40x8++MVXShyWhYabbTis+3ADBcvN7RjDfkdEtVOrVC1sD8rmjktLhgsrVKgwQciUM1aDlxrZ0WV9ssKEMLcPtWtEVVQXH21bE5c3LIo5OmmOF3c1PVx1ocOhGhxMgWFhxXV9OblA/z1iN7Co3CkcZf/34lro+E6Z+ayuqadiX0hrwyosWBOV9a+Jy+VHN6oIe0y3TseHRai9Wf+/rHF5xhf0QGOL5ek/KteFxOHRLkh1p+R9VedR7eABWG2LYsZ5/UlYgVDOw1HOwOCW/HS7JHUN52aKqEyvmSbojXrni6GZHW7MfmB94aKzk+v0Qz1eBYGjyYVVBfkf9PFgAUG/zHQeDeZA1cZ+8qjMsL2kLyLKITy+vrycMEKpJ6PF0+2BBbhnM66XBZl2U0En13avi8qZlUUdWz+DHQMtydBbAcudacKgAwXwHhuDQuNFNE/92QpCsjPnk3K6wvGJhyBWr+czCAKGahYvTXlWC3KouUL8emun1NN8XMybMP7Y+IS3YTmwzzPv8cl9Brt6Z1h1ya8XBAmSk+MwSXTcsN3Yabk7Wx/1y4dKo7uSMIdpaxwChmofqA5PtP96bkzuHCob3EywKe+ULxzgzdIW9MTfty+sTJWut/xMC5BMqQHCk7QEYXvzezqzcrp4PJ1bQuRmCBKcVYnPqseq15kSla5baj0BqeBgi2JDw6zX3l6gL2THN/sPuQYSJ+XM6w460Z0d44LCk7/TWXngccOAiiHmq348W5bMbJxkeB4F5uzuHivJp9Rj9r959b8FEnk1YgVDdwfzIT/bk5Jf7cnoPyVxgkvOSDUnpxu2hjdDNGOFxdW/GcOXktI6QVz5/dLMcmfTLj9Tj/sM9WRku1M4QnJMwioWVhm9ZHpXjm2uvGmGAUF1C2/nfjBTl2t0Z2fI8m9WSfo98XIXHWQvtbTuBORyc2YE5j1pe1rpQBcg7VsZ0aGC/Co7HpcODYwLevDwmZ6vXYC01YGSAUF1Dw0YchXrHUOGgmxCxMuYTRyRsbTmBeRv0s7qqJzXnKsmtfOp6F1chjArKyaaOtS6mHsjzusIqSKLSWSMrtex7xxA5YGXUJ+9fk5A3LYvpSmM2tCt59aKQreEBvxstyH/vStd8eABG3jB3w/CYHwQwDtK6cltanyhZC1iBUEPAqYl3Dhflu71p2fH0rm6MFLxhSUTvdLdz2AANIz+7aVJ662B3OVnj2Ga/vHd1TE5sDc7+lqvYe9tFroSVMhhSOfBRj3cUOMfjVZ0h+ci6hByRmOms2xb0yjmd9o45o7XFN3oyDA86JByq9cWtaX3IlpuxAqlTCAIsqUQ44O47OzVz1gYOdsIBPpjALVVF/xpfYxgCrwRMIuPIW5yhHvLia9FH4UbUF7jQ6rPV1de45uJ76FlVax5TFcDXtqVlVXxm6W8Eg/g2mFAP+Nd60nJjX372t4ie04pYk7x3VVxevjBk+cmiRjBA6gT2EmBJaF6FAbrWYgwVn9MqGUbUXe9ocUpS6muECf4sdj3DgXX6z34VzJyRPvPZq75CM9Fwk1cFh0da/DNnrSd9M5+XRb2yNOJTwTITMGGf9UfomqEvXxG/+gHRKdWOlVd4brCxDud9A+ZIEb4zIYzhtGfOqUe1hCaOCHocFYznBs8Xjgw+cGOAwDerfQu52+JIk3x4bVxO7/jLVjFOY4DUKIQAWn0PqHDYV6jKllRZtqbLMqbucnHa34EqQ59TbvIzrKsPz8x567h7x+oRBMuqmF/WJ/yyNOyVLhUqzahaaiRQrIbmiP/Vk9HDg6tjPlmggmtB0Cut/pnqLqYeVJXBKkA8em8AHjNUiAgOVTyqCnJaH/+LmwDcDOD0xiH1eUg99zh/Hs/3zM3B7L+Z6sHyaJP8v3UJvYPdTRggNQR3seOlmbBAV1O079iZq+gT/bCZ1ek7Ulz0cGcdUhdDnOC3NuGTIxMBOb7ZLwvUVTFh80ont8Dzgos9nr829Tjg8UH1YXTqBf89BAsqEazcwU5mnLPRk52STamS7M1N6fPn8/omYvb/b6pVq2JNctkRSTmu2f5WOwfDAHE5XHRG1R3m5smKPLK/JE9MlvQFI112/8UBVQqGvTBZvVpVJ6eou6e1cZ90q5Sxe9ms0zBUaPVQGapSnEGBCrQnXVEVaUW/XnarmwzMv1jR+p7shZuxTxyZlBU48cwFGCAuhCcEwxQ9mYo+jQ+Tvno+Q4VGLT9ZeM23Bprk+JaAPrAJbwbMQRi9E6dDwxAmXjM4Q+VJVbHeN1bUVSuGv4ouv/mggzu9Iyj/uj7hiqNyGSAugjFsLPP8w/6yPjAJAYKhCaeHpsyGwIj5PbJKJcpp7SE5sTUgKyI+21ZDNSIMd6GlOqqRP6pKFg0Pd+nKpM5eXA0AxfvfLo3Ku1fFbF2C/lwYIC6AoYe9+Yru0HnXcEH61dc1shF13nAThcnkl7aF5Ex1Z3VkMuD4m6LeIUyw2AJzaXcMF1WgFHUfK7MXW5B1UM2/b21CXt8dsXxo9FAYIA5CcOxRYXHbQEHuVMGBYSq3z2tYBW+CdhUkOFPir1SQ4EwOViTWS5erul8Ybl5+N6ZuXnJTHN6qEUsiTfK5o5OOnF9zAAPEARiSQpVxU39e7hopSJ9607KP0AxERnvIK2d0hOQ1i0L6fA4sFyZrYbFGv7qBwYFcd6vX5M5MhUFSA85YiPmQpF6o4gQGiM1G1bsSnWFxVsUWE8/yrjeIjG51h3XuorC8UgUJlgVzZMt6GN7qQ5AMF+WWgZzs4c2Nq2EI+B9WxvV5Ik68PxggNsEE+e9HinLjvrw8Ml7kkso5wqa6NTGfXLAkKmd1BBtu+a9TsM9kV3ZK3ejk5ZbBPA+IcrGusFcuP7rZkf0hDBAboK0Izn64SVUdXPViDCYN0crhDYsjcnQy4MjdViPCUmDsor9pX0HuHSnolVzkPq/uCumd6kmbb7AYIBZC1fGb4aJcsyujN3Vxlcv8LY02ycWqGjm7MyStKE/IFphsv2e0JD/ry+pOsRx6dZeE3yPvX5uQv6aembgAAB7uSURBVO4O29o6iAFiEUxI4nCYwzmXm+YGx5ZjtdbbVkT1JDvZB+fNX69e1zcPcFjLbY5O+uULxzZLl40bDBkgJsOdGQ4Muro3Iw+Pl3inZqENCZ+8aXlML/tFB1uyB5afYzPiNbuz8oh6jbOydgeMXr1ndVzetCxq294QBoiJ8Ma6ebAg/7srI3uynCW3Q2vAIxcvjcqFiyOS5JCWrQ5U2TcP5GS0yMuIGxypbqo+r6qQJWF7emUxQEwyjNK+L6/eUFlONNoMFfsrOsPytuVR1zSZaxSY57t3pChX78zIdi5LdxyGd9+xMi5vXhaxZf8UA8QEGBf++va03DVU4OYrB72wNSDvXxtXd2GcF7EbzqL5wZ6c3DaQ53vAYetVFfKVY1ukG2liMQbIPD01WZJv7sjK70bdfXZxo1in3jzvXR2TFy8IcamvzXDg1Y/35uSn/TlOsDsIcyEfWZ/QS96tfgtw0HgeMJH4hS1phoeLbE1V5PPqObldVYMHjusle2AO6u9XROVDaxOyLGr93S89N3QOuGe4oJdeW40BYtD9Y0X54taUPDlZnv0tchh6i125LSU37cvr1hxkn4DXo/foXLIhoYcUyRnbMxXZlLL+2sQAMQBnKXxJhceWVIP0XK9BOCv8qp6ZEOHErv1Oag3KpUck5OUd7jrDu1GMF6v6MDo0ybQSA+QwPaAqjyu3p6Q3w2W6boelpd/uzcgvB/K6txPZa1nEp8fiz+8O655mZB/szfnD/pnjr63Ep/UwPDRelK9sS0tP2tonhcyDydxv9KTl1kFn50TwVyPE9LnlFRw1W9WTzjhedlx94MzySfV7WfU93DVieazFN4+2wK7oD6yJy4VLonq5NdlnT64iT05aO0rCVVhzhNPbPreZcx61qjvilY+uS+gWKFbCRT8/VRXc+GXUZxxJjBb+GfUNhAU+cur3ESSY4yw//fbDijGfxyMB9UVUfcTUR2uwSfc4Svo8+ux49P7C2n6c2BiqsSVmCMdrdmXlx3uzDXPaptPwCnnDkoh8cG3cstcLA2QOcHb0FZtS8uB4afa3qIasijXJx9Zjcte8cfkDgbFfXSBHVLWzLV2R7ZmyPl1ySKVIRlUURfWHUH3gzyI0UAkd6k2H/V8zgaI+1C9UhugLwCJ1C9+sQgRDQ2vjflkeVaHi96qQ8Vp2gTATKqtrd2d1pwaGiD2wJ+TK41r0a8cKDJDngeGFr25Lya8GnB0CIXMc2+yXTx6ZlJXz2LGOl0FKvS4GVUBgtctTqirdpD4QGOnKTPVh5fATDp9DYGDZ7NKwT/9M6+M+Wa1CpVmFiZvPlM+ox+d/dmblB3uyPBPHBh2hmbNCTmyxZkUcA+QQME79jR0Z+cnenKUXBLIXVgZ9XFUiHYd5V4aL36CqMv44UZKHxor6REkMzWBOw8nXB36MyNMVytHNAXlRa0DWJfzS4tLKBI/X93ZlVTWSkQJDxFJ4bbx9RUw3WLTitcAAOQhUGzf25+Vr21OSYm+ruoKdun+n3lDvWhmb05sKk92b0mW9LPLh8aIennLr3TN+nLjfI+tifjmlPSintgX1RPZcfk474TH9j560PmjNyfBtBGdhX466YbKi2SgD5CDuGy3KFVtSsjfn0isFzUvEJ/oAntd3R56z9TUuasPFKd2u/NbBvB6qwoR4LV3s0AqpS/0P5nxesTAk6+I+ifnMv4gYhcfz31WI3Lwvz+FhCx2R8OlzQqzo0MsAeQ5oU/3Jpybkkf1ccVXPcLrh5Ucl5ajkn48Pp8pVuXO4qA9N2jhZcm21cTgwFn56e0jOWRSSDQm/a85PQSPSz2yclAfGuEDFKu1Br3z6yKS8pM28xSMHMEBmwfjs19VdEc45qKW7TTLmZe1BuXTDzHwIguN+dSH7xb6cPDFZlnSdDV1iFGuRqkhOUReS87vCsibms6Xl9/N5UoX0FZtTsomdHSyBSvQD6w5ebc8HA2QWtL748tZU3V086LnhovqW5VF9d4aK47bBvLqJmP2n6s/iSJNcoC4o53aF9B4Tp/1utCCf2ZRiF18LYM7vrctj8o6VUdMrTwbIs/RkKnLpUxPscdVgsKIXeymw4c+GBqaugTvT41sCcvGSiJzYGnR0+S+aXmK141Wq+q+HIUM3wbP6qkUh+Sgm0pEmJjL3v1bDsMnph3uyDI8GhE1tA/nGCg/Ahfq+0ZJ8YuOkfHNHRgYdXFOLobTXL47I+RYMszQ6VAhDhZlNrWZjgDwNx3L+dqQw+7eJ6t7+Eu7+s/Jvm1L6jBunVkRhqfFFSyNyVJInSpot9XT/NbMxQGSm6dg1u7O6eytRI0LxgYPRLts4Idf15fRiEicsj/jkn1bFpCvMS5OZMMKCfmxma/hnCY/p7UNF3SyRqNH156ryXz1puXpnRjd+dMKJrQE5ryuiJ3/JHFPTaN7JADEdGt/9cl9O988nIuyDmZbvq4r8C1tTstOBrofoSnxBd1hevMD8fQuNCjfKkxasLG3oAEFL7Zv3FbjbnGgWFB+3DhT0yZtOhAj25Vy0JKI3wdH8VVT1gbNmzNbQzw7ODL5zmL14iA4Gq7Qu35ySxyfs3ymOoazXdnMoywwYjOQQlolQfdwyWNDdVYno4B4eL8kXt6RsnycMeD1yfndIVsXM7+HUaBAdJQu2/DVsgPRkynLfGM/4IJqLjamKPs55o80hsijkk/O7InrTI82PBfnRmAGC6gMrrwbzrD6I5gqVyJe22Dsngs3xZy4MygkWHYjUKLA3E4sTzNaQAYIjau8bK3Lug+gwPTZR1rvWR3Dsok3agk16LgTnnJAxeOSaLLjaW/CfdDdMJN09XJQ9Nt5FEdWTO4YK+qROHAplB1z8TlIVyLGz2u7T3KE9jBWHijVcgIypF/3vR4tStOe1T1R3ULn/aiAvN+6zbwVjIuCVVy0KS8xn/kWwEfg9Hmm24LFrqADBax0l+C5WH0TzgtYnaD5697A9C1Fw6Tu5NSDHNbMKMQLDVxEGyPygv8+D40VLNtQQNRqc3fHt3oxsS9uzMqtFVSE43xvt9+nwYAI9ZEGb44YKkL25iu42yvggMse2dEWuVZWIHTdlGMI/SVUhK6Ps1nu4YurBi1mwI9P8/6JLYaz20YmyjNq4eoSoEdw1VJBbBwu2zIe0Bb16KMuC+eC6tiDYJHEOYRmH866xdLcRjislshMOpvrhnoxsTlnf7gRDMae0B6UlYP7FsF4hbJdEmiTmM/9yb/5/0aVw2hp2n9twk0TUcHZkpuTHe3GevPXvsKVhnxzFJb1zhpGrDlWBoDWM2RomQNCCwanzDYgawb2jBXlAVflWaw545dS2oEQ4mT4nCI7OUJMlw34NESA4jWuzChBOfxBZZ7I0Ldf35WTA4rPVcSHckPDrVVn0/FrV47Qsak0zsYZ4BsZKU7oCsb64Jmpsj06U9E51qyfUl4abuBprjrrUY9UWYIAYhgOjxrj1nMhyKD5uGyzIsMXlfsTnlSNUFWLBwqK6gvkPBG3YivEraYAAQefdJyfLkqkwQIjsgMUq94xY26wU18Njk36JMkEOCY/Pcc0MEMMQIDsyFfa+IrIJqpDbB/OW77laFG6ShAWb4+pJs3p8VsZ8upmiFer+0c+qAOnPT9nSr4eIZmxJl+V3YyVLq5C4zysroj7dJ4ue25GqSlsYtGb+A+o+QLD/Y7DA3YNEdkK/0ruHCjJh4dJ5DM+sUXfXFl4faxoWqR2dDFg2fAV1HyBYUpixYXMTEf25TamS7Mha12gR+xu6Iz7xWzU+U+M6w016/sPKh6euAwTDViOFqnD+nMh+k+VpuX+sJBUrDuOWmYn0BQGPBOv6KmbchrhfukLWlmd1/dCXVILszVeEBQiR/TD/8ch4ydIl9DjuNmpBj6dal1TBenpHSOIWLzKw9r/usKJ6Be9DpzcickSfuoHDIW5W3cMl/R5Lx/hr1bKIT05o9lu+wKCuAySvKpDJsnV3P0R0aOnytDw+UZK8RcMA0SavJV1maxny9CULgro6s1pdP/JYwssJdCLn4O2HjbzjZWtGAjCRjl5P9IzOsFde3hG0pHnibHX9yGdV9VHmBhAiR+0rVGTAwqFkG66TNWOm+gjJkrA9rYrrNkAQG2Olqp5IJyLnZMrTsjFVsWRTIcKDI1jPWBxpkvO6QhKxqcVL3T70yA0MX3EEi8hZWISF4xSsuJnzeGaGsWjGixcEZW3cvi7FdRsgU9PTklJ3PvhMRM7anatI2qIFLXyLz+gKe+X8rrAEbQzUOg4QkdxUlT2wiFxgvFSVvRbMg+D9XeCbXLdtf8XCsG6caKe6DRDA8BVfWkTOw3EKu7JTps+DTKv/y3KcWu86f223vdUH1G2AoKydUncmLG+JnDdVnWlsavY8COY/jm0O6J3XjSrcJHLBkojuTGy3ug2QqrozQSNQa0Zdiehw4L2IxqYlk0sQBMhFS8LyuaOS8qpFoYYMkpe2h+T0tuDs37ZF3QYITHEAi8gV8E7EAVNWzFdgJ/qpbSG5dENSPr4+KS9eENBzAo1gZaxJ3rI8Ks0ObaZ05m+1gUf9n8+D/yUiN5goV3V7IavgfJCzFobkkiMS8salUVkYqtvLm4ahq9d1R2Vd3P6hqwPq+hHGXhoGCJE7pCtVyVk84Y055MVhn7x7VUw+c1RSTm4N2NLSw274kc7sDOtNg7hRdkrdBgheSDhoxsHHloieBd2x8ybPgRxMSKXGya1BXY28fklEYjbtzLbL+oRPVVkRy9u1Px9n/3YL4eWC7fw2r2ojooNAdtjdm25pxCfvWx2Xf1kbl446GdJCs8R/VBXWeht3nB9MfTyizwFlK9ZEN7EEIXIFRIdVpxMeCm4kX9cdkQ+tTcgaB+cLzIDTFy9eEpWXOLTqarY6DhCPJFV5xwqEyB1QfOQqs3/XHrihPLszJP+6ISFHJ52/czcCC63eoMLjDYsjjs57PFvdBgiCo9nvkYBLHmiiRofao2R/AfJnjm8OyIfWxeWEltoLkTMWhuTvl0dt67Q7F3UbINCiIjtg/aFcRDRnDieIcpwKkQ+sjctRNVSJvKw9KP+0KiYLMIblIu7615is2c/jLoncAu/EkEvGlI9OBuT9a2J6NZPbnaiqJQQeFgS4TV1fXUvT0+K+h5yoMWEeAqMCbvGC1pm7eqxqcqtjm/3ywXUJR/pczYV7H7l5mChV5deDBfnK1rT0Zh2atSOiP4N+WP158xsqGoVaCH2k3rkyLgm/OyqjZ8M8zcc3JOSIhHuH2jzT0w6sq7NIqlyVB8ZKcvtQQR7ZX5T9Ts/YEdGf4BK9JNokr1wYlrM6Q/qu2g27xAtT0/Lt3oxcuzsrFp15dVjwkJzaHpT3rI7JOhfs9TiUuggQvAAemyjJTfvycv9YUVUgNf8jEdUtbJ5eqs/ujuggWRRyfqXLSHFKPrc5Jb8ZLs7+lq2wwOpM9ZggPNCSxe1qPkD68hX5RX9BhUdOhgouuH0gojlBbmBFFPY14Cxvp5enPq5uQi/bOCl7suafnDgXaI54fndE3ro8Kp0uCNW5qNkAQU+d344U5fuq7NyaLuvxVSKqPa0Bj6pEwnLhkoisdHCyGFMzP96bk//sSdm+4bE96JW/WxaV1y0O19TK0ZoMEFQdP9qTk5sH8hyuIqoDWN27Pu6TtyyPyWntQd0M0Qn71Z3o5ZtTeh7VLkckfPK2FTM/NxrA1pKaChA0Y3t4vChX92bk0Ymy6ecrE5GzFgQ9em7kYlWNdDg0jPPI/pJc8uSE5UPi+PFe2haSt6+MuqIxohE1EyAYssIk+bW7M9Kfs/aJJSLnoPg4rSMo/7DSmY6zWGb8Xz0ZPTxu1fElXWGvXLw0KucuCjt2mqAZaiJAhgtT6snMyc/6c5Kx6hklIlfZkPDJu1SInNYRsv1gOOwf++gTE7I9be5kCCbKX9Ye0nMdJ7QEXNMU0SjXB8jefEWuUncDtw8WOGRF1GA6Q17559Vx3Uk3YOP8AK411+zKyjd3pKVowoAHFpihlfxrFkXk1YtCNV11PJurA6QnU5GvbU/L70aKLmjBRkROwLzIm5fF5G+WRGydXN+dq8i/qipkY2p+VQiGq85aGJbzusN6/0utVx3P5toA2ZQqy9e2peXB8dLsbxFRg8GRtG9fEZOLlkYkbFOI4PTEa3fn5FsGqhAUS21Br7xkQVAuUMGxNu63Nfzs4soAeWKyJJ/fnFIhMr/kJ6L6Efd75I1Lo/KW5VHbQmRHtiIffny/7MzMbXMhuq23hbxyaltIzuwIyoaEv6b2dRwu1wXI9kxZPrcpJY9NlGd/i4gaHCah370qLn+rKhE79kygTdK/b0/L9Xtzh5yDRYXUHWmSU1XFgRVka2J+20LOSa4KEKx8+NKWlNw/xmErInpuyYBH3rUyLm9YHLYlRB4YK8onNk7K8Kx9ITieoy3YJGtjPjm9IyzHJH2yMNSkqhDr/01u4ZoAGS1W5UtbU3LboH07QImoNiFEPro+Ked0hmZ/y3S4Nn1y44TcN1rSm/9ag17dJffYZEBOXhDQzSCT6BDZgFwRIOlyVa7akZEbVJnIbR5ENBdLo03yiQ0JObE1OPtbpsJkOvru/WF/SdYl/LrlSqeqPGIqNBpglOqQHA8QjCtix+c3dqSlMLd5KiIi7fhmv1xyRFJWx6xtwlhRl0mcFdII8xqHw/G66/6xgvxgT5bhQUSHDT3xvrcrI5MWnwSFvRsMj7/kaIBgidy3e7N/MTlFRDRXdw4V5Of9eT3URPZyLECylWk9dPXUJJfrEpFxGL24vi8nD3PTse0cCRDMe9yq7hpuG8zrQ1yIiOajLzcl3+nNyCDHwm3lSID0Zstyw96s7ad+EVH92pgqy68GCnrCm+xhe4Bg6AqnCW41uU0yETU2HGv90/6sXm5L9rA9QB6dKMqdwwUOXRGR6fblqvKzvrzeW0bWszVAxtUtwnV78zLJc8yJyAK4stw7WpB72Q7JFrYGyL2jRVWB8IklIutgbvUX/TndgoSsZVuAYHXEjX05VVqy+iAiaz05WZK7RniKqdVsCxBUH1glQURktayqQm7Zl5eRIpf1WsmWAJkoVeWuoYLuJUNEZIct6bI8sp83rVayPEBQQT4wXpJNaT6RRGSfvCo+fjWQkxTvXC1jeYBgOd3dwwVJceUVEdlsm7pxZbsk61geINsyFXlsoqQrESIiO40Vp+V23MCyCrGEpQGClgIPjZW4nI6IHIEb18fVDewQJ9MtYWmAIDjuGytyKR0ROWZffkr+uL/M7hcWsDRAejMVGSyw5xUROQcNeu9XN7IF3smazrIAyasn6/fqSdvPyXMictj2TFn6eDNrOssCBEdMbk6VOXxFRI4bL1bl0f1lnlpoMssCBMNXe3jgBxG5ANbxbE2XJcc7WlNZEiB4jrarAGHfKyJyAxQeW1Nl3RGczGNJgGQqVenJVvQBL0REbrCvMCUD2J5OprEkQLDmersqF1l/EJFbYGHPHhUgnAYxjyUBMlqoygR3fhKRi2BEZEuqrIOEzGFJgPRmK3ySiMhVUHnw2mQuSwJkp3qSChU+SUTkLpifLXIMyzSWBEhfbkovmyMicpOMurHtz3N7gVksCZDJCtODiNwHw1cDhSo3OJvEmgDhBDoRuRB2oqPJK3ekm8OSAOGTQ0RuhMERnA3CS5Q5LAkQzp8TkRthbCQzVdVnFdH8WRIgfG6IyI1QeUyWOAdiFksChE8OEbkVJtI5zG4OSwKEiMitsMaHHbHMwQAhooaCeRAWIOZggBARkSEMECIiMoQBQkQNpUl9eD2zf5eMYIAQUUNBePDCZw5LHkemOxG5VbDJIz4PL1JmYIAQUUNJ+L3is+TK13gseRgt+Y8SEc2TKj4k7mMFYhZLrvU+liBE5EI+HSBejpKYxJIAieFZIiJyGQxdtQebxG/Jla/xWPIwIuGJiNzGr0qPBQEOYZnFkit9d5gJT0Tugwn0pVHf7N8mgyy5zC+N+CTIQUYicplIk0dimEknU1gSIKtiPolwHoSIXGZJ2CchBohpLAmQzpBXJz0RkVtgWH1t3CdhXptMY0mALAw2ybIIxxmJyD0QHKuiPj2RTuawJECaA15Zn/BzIp2IXKNFXZe6wmilSGax5BIfUAm/IsqxRiJyj7Uxv7QFGSBmsiRAYH3Cx7QnIlcIqivduoSfm5xNZlmAtPq9sjrmY8sAInJczO+RY5I+3YmXzGNZgMR8XjmlLaQblxEROWlF1C/r4n7h1chclgUIKo/1cZ+euCIicgqKjhe2BPRNLZnL0ke0K9QkL1BPHFOfiJyyIOiVF7YGdJCQuSwNEKzCOqk1KNwSQkROOSLh1+2VyHyWBggc2+yX9XH/7N8mIrIc+ia+tC3EoXSLWP6oovf+6R0h4YpeIrLbElV5nNLG4SurWB4geOJObQvKYpaQRGQjLAD9K3XzujDEu1erWB4ggPHHl7eHuCeEiGyzKIzRjyAX8VjIlgBBFXLGwqB6Qm3564iowaEP3xmq+lgc5siHlWy7oqM31jmdEd1SgIjISsvV9eb87jBbt1vMtss5Tig8uzMkK2K8IyAi6yAzzloY4pESNrAtQAAnFb62OyKc0yIiq2xI+OWcRWGuvLKBrQGC5/OM9qAcmwzM/hYR0bwl/B75a3WTuoh3qbawNUCgQz2xFy+NqM+2/9VEVMdwg3paR0jOXBjkik+bOHIVf9GCoLyaJSYRmWhZtEkuWhKRJI9CtY0jjzR6ZL1+cUSOTrLFCRHNHzpdvE5dU9g2yV6OBAh0q2f87Sui0smhLCKap1ctCst5HNWwnaNXbwxlXbw0ylVZRGQYjs9+07KoJNkw0XaOPuJ+r0de2x2WszvDs79FRPS8sBjn3StjeqMy2c/RAAFMeGEo68RWLu0lormL+z3y98tjckpbcPa3yCaOBwig2eK/rInJmjjvIojo+WGu44LuiPx1d1iPZJAzXBEgcEwyIO9ZHZPuiGv+SUTkQgiPc7rC8uZlmD9leDjJVVfrl7WH5J9WJbjJkIgO6hWdIXnvqpg+65yc5apnAPcSZ3cG5R9XxRkiRPRnMFJ1WntQ3rsa1wcu3XQD112lfR6PnKfK03czRIjoWc7oCMqH18f1HjJyB8+0Mvs33WBK/atuHSzIN3akpS83NfvbRNQgMM1x5sKQvH9tnE0SXca1AXLA3cMF+XpPWnozDBGiRoO9ged3R+QdK6I829yFXB8g8Mj+knxThcgf9pfF9f9YIjJFS8AjFy6Jyt8uZYNEt6qJAIHduYp8pzcjvx4sSKk6+7tEVE+wnP+dK+PyyoUhLtV1sZoJEBgrVuX6vpz8rD8nwwWmCFG9QVa8oCUgb1sRlRe2Btkc0eVqKkCgVJ2WB8aK8r2dWXlisqwn24mo9uE0wdcsCssbl0W50qpG1FyAHNCbrciP9uTk10N5mSzV5I9ARDKzv2Nd3CcXLY3KX3UEJebjfEetqNkAgWxlWu5T1chP+3Ly2ERJClyoRVRTsNfrzI6QvH5JRFayo27NqekAOWBQJcfP+/Pyq8G87M1OcaUWkcshK05sCepmiCcvCEqYkx01qS4CBDA3gmGtm1SQ/F5VJf25Kc6PELkMWrAfEffLud0RecmCgLTyEKiaVjcBckBBpUZPpiw/31eQ340W9Gqtal39hES1B3Pi6Lh9ZmdITm8PSnuQk+T1oO4C5IBMpSp7VBVy93BR7lVBMpCfkslyXf6oRK6EvX9tQa+sUxXHKzvDcnyzXwcHj++oH3UbIAdgGGukOCUPjpfknpGCbJosy2ixKpW6/qmJnINqY3XMrwIjIKd1BPUKK66sqk91HyAHIEhS5arszVXk0YmyPKwCZZf6elL9Xk6lCedLiIzBsRzJgFfPZxyVDMgLWwKyPuGT9kCTRHwsN+pZwwTIsyEsMMQ1pCqTJycrsj1dlh2Zim6XgjDBhDzbpRD9JQw/ITAC6gsc6LQ86pNVUVQbflkV80nC7+WKqgbSkAHybBX142PifUJVIoP5KRkuTctOFSa92bL+dUoFSlaFTbE6U6VwrwnVO4QEMgAfOG8cgRBVlcQCFQ5dEZ+sVkGxNNyku+NiTgPfY2g0poYPkOeSV0kxWlLhUZ6WMVWl9OWrMqo+I2T25qZUlVJVbzK+Yag+4AKAVzOCA4ERUh9Ybhv3eaVZhUZ3RIWFqjZaAupD/bpVfY2D34gYIEREZAiXRhARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMuT/A80KizI2kDcpAAAAAElFTkSuQmCC", + "Label": "Monitoring Solution pack for Azure Backup", + "Link": { + "Label": "More info", + "Url": "https://azure.microsoft.com/en-us/services/backup/" + } + }, + "List": [ + { + "Title": "Monitor Azure Backup!", + "Content": "## Welcome to the monitoring solution of Azure Backup!\nYou can view:\n\n1. **Backup Jobs** and what backup jobs *failed*\n2. **Restore jobs** and what restore jobs *failed*\n3. **Critical Alerts** that need your urgent attention\n4. **Cloud Storage in GB** view along with **Top 5** datasources backed up along with their storage in GB\n5. **Data sources** being backed up\n\n\n[Microsoft](https://assets.onestore.ms/cdnfiles/onestorerolling-1607-15000/shell/v3/images/logo/microsoft.png \"Microsoft\")" + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Backup Jobs Breakdown (Non Log)", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Backup Jobs Breakdown (Non Log)" + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Job\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#55d455", + "#ba141a", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#ba141a" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | distinct JobUniqueId_g, BackupItemUniqueId_s, JobStatus_s, Resource | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s, JobStatus_s, Resource | extend Vault= Resource | summarize count() by BackupItemFriendlyName_s, JobStatus_s, Vault, BackupItemUniqueId_s | order by count_ desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Data Sources", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | distinct JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s, RecommendedAction_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | distinct JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s, RecommendedAction_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Backup Jobs BreakDown (Log)", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Backup Jobs Breakdown (Log)" + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Job\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and (JobOperationSubType_s == \"Log\" or JobOperationSubType_s == \"Recovery point_Log\") | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#dd5900" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and (JobOperationSubType_s == \"Log\" or JobOperationSubType_s == \"Recovery point_Log\") | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project BackupItemFriendlyName_s , JobStatus_s, Resource | extend Vault= Resource | summarize count() by BackupItemFriendlyName_s, JobStatus_s, Vault | order by count_ desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Datasources", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and (JobOperationSubType_s == \"Log\" or JobOperationSubType_s == \"Recovery point_Log\") | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and (JobOperationSubType_s == \"Log\" or JobOperationSubType_s == \"Recovery point_Log\") | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Restore Jobs Breakdown", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Restore Jobs Breakdown" + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Job\" | where JobOperation_s == \"Restore\" or JobOperation_s == \"Recovery\" | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#007233", + "#ba141a", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Cancelled", + "color": "#fff100" + }, + { + "value": "Completed", + "color": "#007233" + }, + { + "value": "Failed", + "color": "#ba141a" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | where OperationName == \"Job\" and JobOperation_s == \"Restore\" or JobOperation_s == \"Recovery\" and JobStatus_s == \"Failed\" | distinct JobUniqueId_g, BackupItemUniqueId_s, JobStatus_s, Resource | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s, JobStatus_s, Resource | extend Vault= Resource | summarize count() by BackupItemFriendlyName_s, BackupItemUniqueId_s , JobStatus_s, Vault | order by count_ desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Data Sources", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | where OperationName == \"Job\" and JobOperation_s == \"Restore\" or JobOperation_s == \"Recovery\" and JobStatus_s == \"Failed\" | distinct JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | where OperationName == \"Job\" and JobOperation_s == \"Restore\" or JobOperation_s == \"Recovery\" and JobStatus_s == \"Failed\" | distinct JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Alerts from Azure Resources Backup", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Active Alert Distribution " + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Alert\" | where AlertUniqueId_s != \"\" | summarize arg_max(TimeGenerated, *) by AlertUniqueId_s | extend CurrentStatus = AlertStatus_s | join (AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_s ) on AlertUniqueId_s | project AlertUniqueId_s, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s | where CurrentStatus == \"Active\" | summarize count() by AlertSeverity_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#e81123", + "#008272", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Critical", + "color": "#e81123" + }, + { + "value": "Warning", + "color": "#fff100" + }, + { + "value": "Information", + "color": "#55d455" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_s != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_s | extend CurrentStatus = AlertStatus_s | join (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_s ) on AlertUniqueId_s | project AlertUniqueId_s, lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | project BackupItemName_s, AlertCode_s, HitCount | order by HitCount desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Data Sources", + "Value": "HitCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_s != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_s | extend CurrentStatus = AlertStatus_s | join (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_s ) on AlertUniqueId_s | project AlertUniqueId_s, lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s, Resource | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | project AlertCode_s, lastOccurred, BackupItemName_s, CurrentStatus, AlertSeverity_s, HitCount, RecommendedAction_s, Resource | extend Vault= Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_s != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_s | extend CurrentStatus = AlertStatus_s | join (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_s ) on AlertUniqueId_s | project AlertUniqueId_s, lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s, Resource | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | project AlertCode_s, lastOccurred, BackupItemName_s, CurrentStatus, AlertSeverity_s, HitCount, RecommendedAction_s, Resource | extend Vault= Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Alerts from On-prem backup", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Active Alert distribution" + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Alert\" | where AlertUniqueId_g != \"\" | summarize arg_max(TimeGenerated, *) by AlertUniqueId_g | extend CurrentStatus = AlertStatus_s | join kind= inner (AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_g ) on AlertUniqueId_g | project AlertUniqueId_g, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s | where CurrentStatus == \"Active\" | summarize count() by AlertSeverity_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Critical", + "color": "#ba141a" + }, + { + "value": "Warning", + "color": "#ffb900" + }, + { + "value": "Information", + "color": "#55d455" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_g != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_g | extend CurrentStatus = AlertStatus_s | join (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_g ) on AlertUniqueId_g | project AlertUniqueId_g, lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s | where CurrentStatus == \"Active\" | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | project BackupItemName_s, AlertCode_s, HitCount | order by HitCount desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_g != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_g | extend CurrentStatus = AlertStatus_s | join kind=inner (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_g ) on AlertUniqueId_g | project AlertUniqueId_g, BackupManagementServerUniqueId_s, ProtectedContainerUniqueId_s ,lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s, Resource | where CurrentStatus == \"Active\" | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | join kind=leftouter( Events | where OperationName == \"BackupManagementServer\" | distinct BackupManagmentServerUniqueId_s, BackupManagmentServerName_s | project BackupManagmentServerUniqueId_s, BackupManagmentServerName_s ) on $left.BackupManagementServerUniqueId_s == $right.BackupManagmentServerUniqueId_s | project AlertCode_s, lastOccurred, BackupItemName_s, ProtectedContainerFriendlyName_s, BackupManagmentServerName_s, CurrentStatus, AlertSeverity_s, HitCount, RecommendedAction_s, Resource | extend Vault= Resource | project-away Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_g != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_g | extend CurrentStatus = AlertStatus_s | join kind=inner (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_g ) on AlertUniqueId_g | project AlertUniqueId_g, BackupManagementServerUniqueId_s, ProtectedContainerUniqueId_s ,lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s, Resource | where CurrentStatus == \"Active\" | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | join kind=leftouter( Events | where OperationName == \"BackupManagementServer\" | distinct BackupManagmentServerUniqueId_s, BackupManagmentServerName_s | project BackupManagmentServerUniqueId_s, BackupManagmentServerName_s ) on $left.BackupManagementServerUniqueId_s == $right.BackupManagmentServerUniqueId_s | project AlertCode_s, lastOccurred, BackupItemName_s, ProtectedContainerFriendlyName_s, BackupManagmentServerName_s, CurrentStatus, AlertSeverity_s, HitCount, RecommendedAction_s, Resource | extend Vault= Resource | project-away Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Active Datasources Protected", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Last known Protection status" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"BackupItem\" | where BackupItemProtectionState_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s, BackupItemProtectionState_s | summarize dcount(BackupItemUniqueId_s) by BackupItemProtectionState_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#ff8c00", + "#55d455", + "#6dc2e9" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"BackupItem\" | where BackupItemProtectionState_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s | summarize dcount(BackupItemUniqueId_s) by BackupManagementType_s,BackupItemProtectionState_s | order by BackupManagementType_s desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "BackupManagement Type", + "Value": "BackupItems" + }, + "Color": "#ff8c00", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"BackupItem\" | where BackupItemProtectionState_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, Resource | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, Resource | extend Vault= Resource | project-away Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"BackupItem\" | where BackupItemProtectionState_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, Resource | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, Resource | extend Vault= Resource | project-away Resource | where {selected item}" + } + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Cloud Storage in GB", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Cloud storage in GB" + }, + "LineChart": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend CloudStorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project CloudStorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s == \"Cloud\" | summarize dayCharge = avg(CloudStorageInGB) by BackupItemUniqueId_s, bin(TimeGenerated, 1d) | summarize TotalCharge = sum(dayCharge) by bin(TimeGenerated, 1d)", + "yAxis": { + "isLogarithmic": false, + "customLabel": "Cloud Storage (GB)" + } + }, + "List": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s, StorageUniqueId_s | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | project StorageInGB, BackupItemUniqueId_s, StorageType_s | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project StorageInGB, BackupItemFriendlyName_s, BackupItemUniqueId_s, StorageType_s | where StorageType_s == \"Cloud\" | order by StorageInGB desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Data Sources", + "Value": "Cloud Data in GB" + }, + "Color": "#eb3c00", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s == \"Cloud\" | project StorageInGB, BackupItemUniqueId_s, StorageType_s, TimeGenerated | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project StorageInGB, BackupItemFriendlyName_s, BackupItemUniqueId_s, StorageType_s, TimeGenerated | where {selected item} | summarize dayCharge = avg(StorageInGB) by BackupItemUniqueId_s, bin(TimeGenerated, 1d)", + "NavigationSelect": { + "NavigationQuery": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s == \"Cloud\" | project StorageInGB, BackupItemUniqueId_s, StorageType_s, TimeGenerated | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project StorageInGB, BackupItemFriendlyName_s, BackupItemUniqueId_s, StorageType_s, TimeGenerated | where {selected item} | summarize dayCharge = avg(StorageInGB) by BackupItemUniqueId_s, bin(TimeGenerated, 1d)" + } + } + } + } + ], + "OverviewTile": { + "Id": "SingleQueryDonutBuilderTileV1", + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Job\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#55d455", + "#e81123", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#ba141a" + } + ] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "westus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT655 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT655 new file mode 100644 index 0000000..b803093 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT655 @@ -0,0 +1,729 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-oms-monitoring/azuredeploy.json", + "/demos/backup-oms-monitoring/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962898696, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-oms-monitoring/azuredeploy.json", + "/demos/backup-oms-monitoring/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT655", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT655", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceLocation": { + "type": "string", + "allowedValues": [ + "centralus", + "eastus", + "eastus2", + "northcentralus", + "northeurope", + "southcentralus", + "westcentralus", + "westeurope", + "westus", + "westus2", + "uaenorth", + "switzerlandnorth", + "uksouth", + "francecentral", + "norwayeast", + "koreacentral", + "australiasoutheast", + "australiaeast", + "japaneast", + "centralindia", + "southeastasia", + "eastasia", + "chinaeast2", + "canadacentral", + "brazilsouth", + "usgovarizona", + "usgovvirginia" + ], + "metadata": { + "description": "Specify the workspace region" + }, + "value": "usgovvirginia" + }, + "workspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specify the workspace name" + }, + "value": "GEN-UNIQUE-10" + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "Azure Backup Monitoring Solution", + "solutionName": "[concat('AzureBackup', '[', parameters('workspaceName'), ']')]", + "publisher": "Microsoft", + "displayName": "Azure Backup Monitoring Solution", + "description": "Monitor and analyze your Backup Vaults", + "author": "Microsoft" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "usgovvirginia", + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "Azure Backup Monitoring Solution", + "type": "views", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "Azure Backup Monitoring", + "NewGroup": false, + "Color": "#00d8cc" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAYAAACAvzbMAAAgAElEQVR4Xu3dB2ClZZk24OecnF6TTJLJJNP70EEEFRRkERQFXFQW1rWsZXV3de2/uoB1BTvruqwN112wAoroIiBNROlKnZ7JtGTSM8npLSf/e79hBCMzZL587ZxzX/vHZCbzM5NTvvt73vK8nmlFiIiIDpN39m8QERHNBQOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgMYYAQEZEhDBAiIjKEAUJERIYwQIiIyBAGCBERGcIAISIiQxggRERkCAOEiIgM8Uwrs3+TiOrflHrnp8pVmaxUJVeZlqz6PFyclv2lKfX1tOTUHyhWp0X9Pymry4TXI+L3ePSHT916RtX/JP0eafZ7ZUHAK5EmjyTU57j6HPfz3rQRMECIGkDh6TBIqZCYKFVVSFRlX74q/fkpFRpTMqY+surPTKpAwZ9T+SFTVYTMzOXhwEVCZYgOEo/MhEhA/SKoPhK+mdDoCDVJuwqR7ohPukJeaQ4gZLwSU6ESVB/481Q/GCBEdaii3taoKjIqFLany9KbmZK+fEV2ZisyWJgJi9LUTFCoTPlTQMyXygj9gXBBsCA8OlWoLI/6ZJkKlVUx9bX6jOol6mOY1DoGCFGdyKtAGFeVxYAKiMcnyvLkZElVGaq6KE3pMCmqoMBwlBMQKsEmkbhvZrhrmQqUE1uCskYFCgImqX4PgUO1hQFCVMMwj4Ehqc3pkjy6vyyPTpR0lZEqT+vvuVlQVSkIjrUxvxzXEpCTWv2yQlUnnD+pHQwQohqDN2y6XJUdKigeGivJQ+NF2asqDUyIq+KjJoVVddKqEgXDXC9rC6lA8cti9ZsxjIWRazFAiGoE3qhjxarcP1bUH4/sL+lfu73SOFyqKJFOFR4ntQbl1AUBOV5VJ5hLIfdhgBC5XKk6LftUafH7kZLcM1KQrZmyqkBmltfWM8yxJwMeOToZkLM6w3JCs186gk16FRi5AwOEyKUQELtzFbltsCC/UcGxK1up2SGq+Yr6RDbE/XKmCpIz2oN6uTA5jwFC5ELYn3H3cEGHx3ZVcTRqcMwW86Ei8ctruiJycmtA2jATT45hgBC5yGixKveMFuXGvpz0MDgOCkFyXHNAXr84LC9oCXDllkMYIEQugJ3iT6XK8sM9WXlwrCjZyuw/Qc9lQdAjL+8Iy98sCcvKqF/vNyH7MECIHIaNfz/Zk5Nbh/IymK/O/jY9D2TGyliTXNAdlVcvCun2KWQPBgiRQ7C66r7RovxAhccf95fqbjmu3TCvfnpHSC5eEpFjmgM6WMhaDBAiBwyrquP6vrzctC+nvmbVYaYVqhp549KonL0wxLkRizFAiGz2xGRJvtubld+p6oNVhzWw7PfszrC8ZXlU724nazBAiGyCifI7hgvy3Z0Z2Znh8iqrYcMhNh/+w6qYvKAlyAl2CzBAiGyAPlWY6/jRnqxudEj26Qp75W0rYnJuV5gdf03GACGyGDYFour41UCe+zoc0hzwyEVLovI3SyLSwlVapmGAEFloa7os/7E9LfePleq2dxWGhjBX7fZwRG68RlUh/7gqJu04nITmjQFCZBGczfEf29Lqc3n2t+pKW9Ajr+yMyJ5cRS8McHNQIuzO6gzJu1SI4GREmh/WckQWeGCsKF/Ykqr78IAmj0fO6AjKJRsS8qpFIX22h1th1dutAwX5yta07Mpxu/98MUCITPZ7dRf+5W0p2ZJqjAvU1DSOy52WhaEm+cjahLx9ZVy3GHErFEj3jhTlSyrgMcRIxjFAiEyEyuPK7SnpSbt8QsBk5afHrdBG5M3LIvIBFSTLoy4uRQRBX5Irt7ESmQ8GCLkShhrQ6iOvvshUqvoIV3xgOeyBr/GRrcz8GfxZp4fecULgV9QFqdHCA55dbwS8HnnNorB89qiknNIWcPUBUA+MleSrW9P63BU6fJxEJ8fh7hWb7Arq834VCjimdUh9TJaqKjymVUhUpfL0qxRNP3A90h9Y/aP+B6294z6vJNXdb3vQI4tCTRJt8kqoySNYbOPDH7TYlnRZLt+UkicmG29IBJPonzwiKS9tD83+ll7CfM3urPyiP6eCfvZ33eMVC0PykXVxHlR1mBggZCtUFgiEjPpiQF1RBgpV6c2UpTdbkZHClExUZqoKVBQYFcHHs9t9HPgSkYCv8Rkra2Y+ZgID52fHVIAsCjfJiqhPf2Az2UL1zZgKmgjOSjURhkCuUOHx4Hhp9rcawqECBHLq+byxP6+CJCNDLu37hSrp/O6wvH9NnOevHwYGCFkOL7CMqiwGilPy5GRFNqfKslOFRp8KEAw/ofooWXRdwQ0ldh9HVWgsV0GCMyOOSfrlSPXRqiqW8Dz7W4yrf/jnt6Tk14OF2d9qGM8XIICbgHtHCnL1zqw85dIqDfcVb10elbevjM37ddEoGCBkGcxXDKrQeHyiLA+ru/NNKjjGS1OifsuxJoK4SKACwYohHI364gVBWRf36Y1lh3vRQKX07d6Mbk9iVQDWgrkEyAEY6vvWjoxeqebGxyzh98g/r47LGxZHXD134xYMEDIVgmFEJcRGdZd590hRd54dVb924xwlrg+4YGCo66SWoLykLSAbEv45DWHg5/zxnpxctSPlyp/NTocTIIDXx3V783JdX1YmS+67/CwKe/WellPb5vbzNDIGCJmiol5Gw8WqPiDptsGCPs97ouT8yqi5QmagR9KJLQE5oyMkJ6jPGOI6GKy4+uTGCenPufA22maHGyCAocubB/LyvV0ZVz6GGOb89FFJPX9GB8cAoXnBnXhfviJ3DyM48no5ZK3fkSdVVYIT7c7uDMkLVZBguOvZejIVvcscw3JkLEAACyT+OFGS7+zI6EB2aljzYF7TFZIPr03wiNxDYICQYftLVblLBcfP+3OyXVUcbm+md7iwPBiVyIVLwnJ8c1BPxOPOGbvMf96Xd90FzylGA+QArGK7ujcrt6sbkKKLihG0ZHnP6oRctDTCs0QOggFChw0b+HD3fYMKjsfVHWS2xiuO59Ma8MhpHSG5cHFEtqQrcqUKEJ7p8Yz5BgjgZgRLfTEvMph3T4p0hr3yKfWzvWhBcPa3SBggdJgwRPXDPTl9tzjuwglQq2BFDiZXVXbKSKFaM3M7djAjQAAV3R1DBflWb1p6XXRi42ntQfnUkUmeI/Ic+IjQnKCdyP8NFOSyJyfl+r25hgoPwHg9JnuHGR6WwTAR5p0+rS7WL1MX7TkshrPFg+NF+Vk/hyyfi0ueInIzLLv8xo6MXL55QrfqcPN5D1T7jk4G5NINCb0Xww2t4TG3d0NfVu9hoT/HAKFD+uP+knxmU0quU1VHra+uotqBnlQ4OfB9axJ6HsJpmJfBewCbR+kZzj8z5Eo43+HWwYJ8atOkPjsBY/9Edor7vXLhkohctiEpxzX7Z3/bVoiN34wU5LejxdnfamgMEPoLaH6HXdb/vi0le7LumcykxoPFC6e0BeXjGxJy5sKgPtfcKdg1f2NfTobrbb36PDj4dJAbYTnld3Zm5Js70jLo0s6p1HjWxf3ysfVJeduKmKOnHWJI99dDBc4DPo0BQn+C8PhWb0ZVH1lXn91A7uL5s+OkrNMW9Opuudjc1x1x5tKFKRAEyDA6ghIDhGZgpdV/9qT1El2GBx0OzJfZtcQVh4Sd3xWWy49q1s0vndghvi1dllsGCvrMmkbHACF98t93erPyy31c605zgz0aWGKrT4P0e/TpkHbBvMixzQE9L3KOChO7DxHEFMgdQ3kZ4FwId6I3OixLvEpVHj9RlQfDgw7AnT1CAscB45yUmAqJJI4NVr/ZFvLKAn+TdKjPzTj9UYXI2rhf79S2MUe0yXJVft6fl2t3Z2S0aN8LGJP5WGJ88dLGPjeEAdLAMPTwg905VX2kOWzV4HDQVqAJVYVHukI+WRnzSXsAYdEkS1SpgTNTWlVY+NXVEuHiezpc3AA3PrcPFeS7OzOyPW3fZqUTWvzyxWNa9NxMo2KANLAb+nJ63gPndlDjwGUfwz7YZ9EWmDk7Hquc1qrQwBkoLeqCmGjyqkDx/KkKcTu8gnHiJU47vH/Mnn1LaPv/0Q1JeeXCUMNWIQyQBoX+Pp/ZNOnKw3zIfLjARVQgYNgJpy6uic0Exmr1EVPlRLBpprKoddij8YM9Od16xI4u0dibcsmGxm20yABpQDi74/JNKXl0gr196hmqDMxZdKkvcEDW8c1+6Y40qapj5vx3rGiqR5jXw4KQa/dYf9phpwrky49u1ufGNCIGSIPBWR6Xb0npZYhUfzDkhIltDEkd3zITGssiPn0YVr0GxnPBvMgf9xflqp6MPGbhjRIe0jcvj8q7V8Uk2IDjWAyQBoI31c/6Z1qU2FHekz1wEcN4/FIVFCe1BuXE1pnQQPXRSKHxXLapavu7vVm5Z6Rg2YmZRyX98uVjm1U1YvN6YhdggDSQR8aL8ulNKdmbs+idRLbCPgxMgJ+sQuPFCwKyXlUdOL870IB3woeCfU7X9eXk+3uyup+V2ZIBjz618OUd8ztQqxYxQBoE3kT/tjmllztSbWtWF6zVMb+8tE0FR1tAloR9ek6DDq6gyu9bBgtyze6M7DT5tEMsgX7jsplhrEZ7HhggDQAdFzB09eWtKcvKeLIWLksLQ149GX5OZ0iOSPilNeitiSW2bvLEZEm+uSMjD42VdF8rsxyZ8MnlxzTrocNGwgBpALtyFbn0yUl5atK6yUSyBuKhXQUH5jbO7wrJWlV5JBt0yahZ+vIVuWZXTlUkecmUp005ohgdgj97JPpzBWd/q64xQOocSnccR/vDPVlbNleRebBn46XtQTl3UVhWRn2ScMsh4XUAS33/byAv39qRlnET5kWwGf1Ny6LyzgZbjcVXZJ3Dno/b1J0Ww6N2tAQ8cl53WK44ulk+sjYhxzUHGB4mw7LmpZEmvYHSDMUqhsfKuqJpJHxV1jH0uvq/gYIM8WComoDh85d3BOXTRyblQ2vj8oKWQMMvw7VCXlXlv9iXl69uS8uwie8NDI2NlhprkpEBUse2psry25GCKWO8ZB2s4jmxxS8fXpfUy0Ff1h7SezjIfGh1gs2FX9yS0o0XzexAnVLVx47sVEO93/gqrVO4y/rVYMHUOywy36KwV/5uWVQuU1XHa7vCnCC30BZ1Q/WVbTi6ICsZM5dgPQ0V/+5sRcoNdNAUX611aneuIveOFky9wyLzYNPyy9qD8lkVHNg/gOWfDTT3aiu8B+4aKsilGyfkNnVTZdV8IP67PZmynqBvFAyQOoQboAfHSjLK6sOVFkea5F0r43LphoSc2BrkPIeFcODU93dn5YvbUtKTtn5+oj8/JfutSigXYoDUobHSlNw1XNArQ8g9MDp1mqo6PqWqjjctj0hHA/ZOshOOnP3a9rR8c0daBvP2vBkmVHjsL9nzd7kBA6TOoPp4fKKsNw+Se2BPB/YJ4BzvE1sC3EFuIQwgPTxelM9umtTH3dp52ib2XSG4GmUQiwFSZzKVqjw4Xmq49ehutj7hk/+3LiHvXBlryI6tdjrQ8wp93+4bLekbKjvh79+ZqUixQSYfGSB1ZlSVz49OFDl57gJYiYsT6zBkdebCEOc6LIaho+/uzMoXt0zK7qyNZcezYPpjn6pAsCKrETBA6kxPusKNgy6AVusXLYnKR9cndJt1slaPuuv/6va0/O+ujEyY0JrEKNy4Tagga5R5dAZIHUH5/OD+YkMtI3Sj9qBX3rM6oZfntgcbY8jKqVccLtj3jRblE09NyC/78+KG+eu0ev+VG6TFIAOkjqQrVdkyWbZ93JeesSzaJB9al5CLlkZ0v6V6gos1Nqim1O31aLGqT/v7vbp43zFUkH15+yeO8W+5vi8nn9syKZtS7lk0glWQmItsBOzGW0ceGi/KpU9Ncve5Q3AmxL+sjcsLW4I1vylwJiyqupqdVBdD7CnqzVakTwXFcHFKD9NgvwM+R1RQYpEAWrDY9WOjJcn3d+fkp/1Z1x3PjNbuVx7bos9uqXcMkDpRUmXHD/fk9Jp3HhplvxNa/PJ+FR7HJGvzooGqNacCAy0+0MUAp/YhMPAxUKjo4VHc8aNX4OwR0oTfoxtA2nWk6xMTJbl6Z1YPXc3+t7gBjri94qjGOBuEAVIn0upu8Os9GblBlfQcwrLXya0BeZ8KD5wSWEvQswnj9egguzVVkUfVhbk3U9GriDAEowqNOa3ma1N33J88Iikvbbc2QLCyCaHx7d6MbHbRkNVsMVWRXaYej7M7rX083IABUifQQuHSJyfURYCnDtoFw1QID8x5rI7VxlGmqFTRNRZVBjacPqZCY0e2LJOlaT1cZeRiYEeAYN7lJ3tzuhHiaNHIv9I+WIH3sQ1JOb8rPPtbdYeT6HUCPX+GcMtItkF4YNiqFsIjp8IBk97XqYvwZzZNyiVPTag7+bT8dqQo/bmZoSu3XpZxc/Sfqrr+750Z14fHAY3SkZcBUicwmZmby3gDmeIFLX754Lq4rHPxHg9cxDAchQ60X9iakg8/PiFX9cyEBnpDuX2uDC/nB8eLcpkKOwzN2tmSZD7wLnTj3IwVGCB1AG+0PnU1wPDE4cDGaHxgxzQa/eFcZ3zGr/Fx4Pt2raypFcck/fLeNXFZE3NneOD1sDNbkZ/25eWyJyfk3zZPyk39edmTnaqZizDCD2eWX745JX/cX3tL0zExUGP/ZEM4B1IHsDoGXUd/vCf3p997Jgg8uoVGVH94Jeb3SLP6RtTnlYj6vaD6Pv4cmvupb+sXPtpo4WWB3bSV6ZnVN4XqzGe9rLOMu9dpPamJ38NnvOH1n6/W9xtnZaxJLt2QlBNa3LfaCs8JmmjePVyUO4fz0p+zJzDMngPBHhMMtV3fl5X9Du4qNwrtzt6zOi5vXBat+5svBkgdwATjFVtS+vjaReEmWRn1693QC9UruSPYJF0hr7Spr0MqLLAv2qc+YwJYf6hfozGs51kv9QOj4XhlYEfJgbupKfUF7m7xgcDIqi/GitgXMC1Dhaf3B6h/y4C6amE+BivD8GfdPlQyV3hMP7wu4brVNbg778mW5fbBotw2NBMcdo5mmhkgaEmCVVY4AKpWh4Fw8/auVXF56/KoruDrGQOkDuDO88nJkv7cHfFJqyopAiodfE9XIFa/hnEBQ+sGVB8V9YsMgqU0pcIFE/tV2Zwqy65sRS8XRZdgzNXUWq8g7HX4Z3VXeUF3WD+mboDHfV+hIrep4LhlMCd7s2jiN/tPWc+MAMENyQNjRb2/A6vDahleHeeq18nH1yckXOcJwgAhS+Eih2DDEBgqlO3pimxTH1g6ik1qk6WqLcMs84EhPpxbjt5WGPJzA1R3tw8X5Ya9WdmewTncs/+EfeYbIFgh9tP+nFyzKysjTiSgBdYlfPLlY5tlSdj9K/TmgwFCtpoZ0sIGtqpenomL3x/GS7I1U9btuFGhuOkFibg4qzOkl+sucsFZHpiTekzdoeOgpHtHCjLpgnNf5hMgg0+3JPm5ChAsJa4XaGfy8fVJOaMjVPNtbQ6FAUKOQoWCXc84x+SpybLeDY3hOLsmgJ8PVlxdfkxSFrvgThIX21sGCnJdX1YGbDqidS6MBsjj6rn+Vm9GHhwr2TpnYweMXJ3XHZYProlLHCVsnWKAkGvgIpJ9ujJ5SFUl948VpUdVJuOlaUeWcTYHZu4inZ40x8++MVXShyWhYabbTis+3ADBcvN7RjDfkdEtVOrVC1sD8rmjktLhgsrVKgwQciUM1aDlxrZ0WV9ssKEMLcPtWtEVVQXH21bE5c3LIo5OmmOF3c1PVx1ocOhGhxMgWFhxXV9OblA/z1iN7Co3CkcZf/34lro+E6Z+ayuqadiX0hrwyosWBOV9a+Jy+VHN6oIe0y3TseHRai9Wf+/rHF5xhf0QGOL5ek/KteFxOHRLkh1p+R9VedR7eABWG2LYsZ5/UlYgVDOw1HOwOCW/HS7JHUN52aKqEyvmSbojXrni6GZHW7MfmB94aKzk+v0Qz1eBYGjyYVVBfkf9PFgAUG/zHQeDeZA1cZ+8qjMsL2kLyLKITy+vrycMEKpJ6PF0+2BBbhnM66XBZl2U0En13avi8qZlUUdWz+DHQMtydBbAcudacKgAwXwHhuDQuNFNE/92QpCsjPnk3K6wvGJhyBWr+czCAKGahYvTXlWC3KouUL8emun1NN8XMybMP7Y+IS3YTmwzzPv8cl9Brt6Z1h1ya8XBAmSk+MwSXTcsN3Yabk7Wx/1y4dKo7uSMIdpaxwChmofqA5PtP96bkzuHCob3EywKe+ULxzgzdIW9MTfty+sTJWut/xMC5BMqQHCk7QEYXvzezqzcrp4PJ1bQuRmCBKcVYnPqseq15kSla5baj0BqeBgi2JDw6zX3l6gL2THN/sPuQYSJ+XM6w460Z0d44LCk7/TWXngccOAiiHmq348W5bMbJxkeB4F5uzuHivJp9Rj9r959b8FEnk1YgVDdwfzIT/bk5Jf7cnoPyVxgkvOSDUnpxu2hjdDNGOFxdW/GcOXktI6QVz5/dLMcmfTLj9Tj/sM9WRku1M4QnJMwioWVhm9ZHpXjm2uvGmGAUF1C2/nfjBTl2t0Z2fI8m9WSfo98XIXHWQvtbTuBORyc2YE5j1pe1rpQBcg7VsZ0aGC/Co7HpcODYwLevDwmZ6vXYC01YGSAUF1Dw0YchXrHUOGgmxCxMuYTRyRsbTmBeRv0s7qqJzXnKsmtfOp6F1chjArKyaaOtS6mHsjzusIqSKLSWSMrtex7xxA5YGXUJ+9fk5A3LYvpSmM2tCt59aKQreEBvxstyH/vStd8eABG3jB3w/CYHwQwDtK6cltanyhZC1iBUEPAqYl3Dhflu71p2fH0rm6MFLxhSUTvdLdz2AANIz+7aVJ662B3OVnj2Ga/vHd1TE5sDc7+lqvYe9tFroSVMhhSOfBRj3cUOMfjVZ0h+ci6hByRmOms2xb0yjmd9o45o7XFN3oyDA86JByq9cWtaX3IlpuxAqlTCAIsqUQ44O47OzVz1gYOdsIBPpjALVVF/xpfYxgCrwRMIuPIW5yhHvLia9FH4UbUF7jQ6rPV1de45uJ76FlVax5TFcDXtqVlVXxm6W8Eg/g2mFAP+Nd60nJjX372t4ie04pYk7x3VVxevjBk+cmiRjBA6gT2EmBJaF6FAbrWYgwVn9MqGUbUXe9ocUpS6muECf4sdj3DgXX6z34VzJyRPvPZq75CM9Fwk1cFh0da/DNnrSd9M5+XRb2yNOJTwTITMGGf9UfomqEvXxG/+gHRKdWOlVd4brCxDud9A+ZIEb4zIYzhtGfOqUe1hCaOCHocFYznBs8Xjgw+cGOAwDerfQu52+JIk3x4bVxO7/jLVjFOY4DUKIQAWn0PqHDYV6jKllRZtqbLMqbucnHa34EqQ59TbvIzrKsPz8x567h7x+oRBMuqmF/WJ/yyNOyVLhUqzahaaiRQrIbmiP/Vk9HDg6tjPlmggmtB0Cut/pnqLqYeVJXBKkA8em8AHjNUiAgOVTyqCnJaH/+LmwDcDOD0xiH1eUg99zh/Hs/3zM3B7L+Z6sHyaJP8v3UJvYPdTRggNQR3seOlmbBAV1O079iZq+gT/bCZ1ek7Ulz0cGcdUhdDnOC3NuGTIxMBOb7ZLwvUVTFh80ont8Dzgos9nr829Tjg8UH1YXTqBf89BAsqEazcwU5mnLPRk52STamS7M1N6fPn8/omYvb/b6pVq2JNctkRSTmu2f5WOwfDAHE5XHRG1R3m5smKPLK/JE9MlvQFI112/8UBVQqGvTBZvVpVJ6eou6e1cZ90q5Sxe9ms0zBUaPVQGapSnEGBCrQnXVEVaUW/XnarmwzMv1jR+p7shZuxTxyZlBU48cwFGCAuhCcEwxQ9mYo+jQ+Tvno+Q4VGLT9ZeM23Bprk+JaAPrAJbwbMQRi9E6dDwxAmXjM4Q+VJVbHeN1bUVSuGv4ouv/mggzu9Iyj/uj7hiqNyGSAugjFsLPP8w/6yPjAJAYKhCaeHpsyGwIj5PbJKJcpp7SE5sTUgKyI+21ZDNSIMd6GlOqqRP6pKFg0Pd+nKpM5eXA0AxfvfLo3Ku1fFbF2C/lwYIC6AoYe9+Yru0HnXcEH61dc1shF13nAThcnkl7aF5Ex1Z3VkMuD4m6LeIUyw2AJzaXcMF1WgFHUfK7MXW5B1UM2/b21CXt8dsXxo9FAYIA5CcOxRYXHbQEHuVMGBYSq3z2tYBW+CdhUkOFPir1SQ4EwOViTWS5erul8Ybl5+N6ZuXnJTHN6qEUsiTfK5o5OOnF9zAAPEARiSQpVxU39e7hopSJ9607KP0AxERnvIK2d0hOQ1i0L6fA4sFyZrYbFGv7qBwYFcd6vX5M5MhUFSA85YiPmQpF6o4gQGiM1G1bsSnWFxVsUWE8/yrjeIjG51h3XuorC8UgUJlgVzZMt6GN7qQ5AMF+WWgZzs4c2Nq2EI+B9WxvV5Ik68PxggNsEE+e9HinLjvrw8Ml7kkso5wqa6NTGfXLAkKmd1BBtu+a9TsM9kV3ZK3ejk5ZbBPA+IcrGusFcuP7rZkf0hDBAboK0Izn64SVUdXPViDCYN0crhDYsjcnQy4MjdViPCUmDsor9pX0HuHSnolVzkPq/uCumd6kmbb7AYIBZC1fGb4aJcsyujN3Vxlcv8LY02ycWqGjm7MyStKE/IFphsv2e0JD/ry+pOsRx6dZeE3yPvX5uQv6aembgAAB7uSURBVO4O29o6iAFiEUxI4nCYwzmXm+YGx5ZjtdbbVkT1JDvZB+fNX69e1zcPcFjLbY5O+uULxzZLl40bDBkgJsOdGQ4Muro3Iw+Pl3inZqENCZ+8aXlML/tFB1uyB5afYzPiNbuz8oh6jbOydgeMXr1ndVzetCxq294QBoiJ8Ma6ebAg/7srI3uynCW3Q2vAIxcvjcqFiyOS5JCWrQ5U2TcP5GS0yMuIGxypbqo+r6qQJWF7emUxQEwyjNK+L6/eUFlONNoMFfsrOsPytuVR1zSZaxSY57t3pChX78zIdi5LdxyGd9+xMi5vXhaxZf8UA8QEGBf++va03DVU4OYrB72wNSDvXxtXd2GcF7EbzqL5wZ6c3DaQ53vAYetVFfKVY1ukG2liMQbIPD01WZJv7sjK70bdfXZxo1in3jzvXR2TFy8IcamvzXDg1Y/35uSn/TlOsDsIcyEfWZ/QS96tfgtw0HgeMJH4hS1phoeLbE1V5PPqObldVYMHjusle2AO6u9XROVDaxOyLGr93S89N3QOuGe4oJdeW40BYtD9Y0X54taUPDlZnv0tchh6i125LSU37cvr1hxkn4DXo/foXLIhoYcUyRnbMxXZlLL+2sQAMQBnKXxJhceWVIP0XK9BOCv8qp6ZEOHErv1Oag3KpUck5OUd7jrDu1GMF6v6MDo0ybQSA+QwPaAqjyu3p6Q3w2W6boelpd/uzcgvB/K6txPZa1nEp8fiz+8O655mZB/szfnD/pnjr63Ep/UwPDRelK9sS0tP2tonhcyDydxv9KTl1kFn50TwVyPE9LnlFRw1W9WTzjhedlx94MzySfV7WfU93DVieazFN4+2wK7oD6yJy4VLonq5NdlnT64iT05aO0rCVVhzhNPbPreZcx61qjvilY+uS+gWKFbCRT8/VRXc+GXUZxxJjBb+GfUNhAU+cur3ESSY4yw//fbDijGfxyMB9UVUfcTUR2uwSfc4Svo8+ux49P7C2n6c2BiqsSVmCMdrdmXlx3uzDXPaptPwCnnDkoh8cG3cstcLA2QOcHb0FZtS8uB4afa3qIasijXJx9Zjcte8cfkDgbFfXSBHVLWzLV2R7ZmyPl1ySKVIRlUURfWHUH3gzyI0UAkd6k2H/V8zgaI+1C9UhugLwCJ1C9+sQgRDQ2vjflkeVaHi96qQ8Vp2gTATKqtrd2d1pwaGiD2wJ+TK41r0a8cKDJDngeGFr25Lya8GnB0CIXMc2+yXTx6ZlJXz2LGOl0FKvS4GVUBgtctTqirdpD4QGOnKTPVh5fATDp9DYGDZ7NKwT/9M6+M+Wa1CpVmFiZvPlM+ox+d/dmblB3uyPBPHBh2hmbNCTmyxZkUcA+QQME79jR0Z+cnenKUXBLIXVgZ9XFUiHYd5V4aL36CqMv44UZKHxor6REkMzWBOw8nXB36MyNMVytHNAXlRa0DWJfzS4tLKBI/X93ZlVTWSkQJDxFJ4bbx9RUw3WLTitcAAOQhUGzf25+Vr21OSYm+ruoKdun+n3lDvWhmb05sKk92b0mW9LPLh8aIennLr3TN+nLjfI+tifjmlPSintgX1RPZcfk474TH9j560PmjNyfBtBGdhX466YbKi2SgD5CDuGy3KFVtSsjfn0isFzUvEJ/oAntd3R56z9TUuasPFKd2u/NbBvB6qwoR4LV3s0AqpS/0P5nxesTAk6+I+ifnMv4gYhcfz31WI3Lwvz+FhCx2R8OlzQqzo0MsAeQ5oU/3Jpybkkf1ccVXPcLrh5Ucl5ajkn48Pp8pVuXO4qA9N2jhZcm21cTgwFn56e0jOWRSSDQm/a85PQSPSz2yclAfGuEDFKu1Br3z6yKS8pM28xSMHMEBmwfjs19VdEc45qKW7TTLmZe1BuXTDzHwIguN+dSH7xb6cPDFZlnSdDV1iFGuRqkhOUReS87vCsibms6Xl9/N5UoX0FZtTsomdHSyBSvQD6w5ebc8HA2QWtL748tZU3V086LnhovqW5VF9d4aK47bBvLqJmP2n6s/iSJNcoC4o53aF9B4Tp/1utCCf2ZRiF18LYM7vrctj8o6VUdMrTwbIs/RkKnLpUxPscdVgsKIXeymw4c+GBqaugTvT41sCcvGSiJzYGnR0+S+aXmK141Wq+q+HIUM3wbP6qkUh+Sgm0pEmJjL3v1bDsMnph3uyDI8GhE1tA/nGCg/Ahfq+0ZJ8YuOkfHNHRgYdXFOLobTXL47I+RYMszQ6VAhDhZlNrWZjgDwNx3L+dqQw+7eJ6t7+Eu7+s/Jvm1L6jBunVkRhqfFFSyNyVJInSpot9XT/NbMxQGSm6dg1u7O6eytRI0LxgYPRLts4Idf15fRiEicsj/jkn1bFpCvMS5OZMMKCfmxma/hnCY/p7UNF3SyRqNH156ryXz1puXpnRjd+dMKJrQE5ryuiJ3/JHFPTaN7JADEdGt/9cl9O988nIuyDmZbvq4r8C1tTstOBrofoSnxBd1hevMD8fQuNCjfKkxasLG3oAEFL7Zv3FbjbnGgWFB+3DhT0yZtOhAj25Vy0JKI3wdH8VVT1gbNmzNbQzw7ODL5zmL14iA4Gq7Qu35ySxyfs3ymOoazXdnMoywwYjOQQlolQfdwyWNDdVYno4B4eL8kXt6RsnycMeD1yfndIVsXM7+HUaBAdJQu2/DVsgPRkynLfGM/4IJqLjamKPs55o80hsijkk/O7InrTI82PBfnRmAGC6gMrrwbzrD6I5gqVyJe22Dsngs3xZy4MygkWHYjUKLA3E4sTzNaQAYIjau8bK3Lug+gwPTZR1rvWR3Dsok3agk16LgTnnJAxeOSaLLjaW/CfdDdMJN09XJQ9Nt5FEdWTO4YK+qROHAplB1z8TlIVyLGz2u7T3KE9jBWHijVcgIypF/3vR4tStOe1T1R3ULn/aiAvN+6zbwVjIuCVVy0KS8xn/kWwEfg9Hmm24LFrqADBax0l+C5WH0TzgtYnaD5697A9C1Fw6Tu5NSDHNbMKMQLDVxEGyPygv8+D40VLNtQQNRqc3fHt3oxsS9uzMqtFVSE43xvt9+nwYAI9ZEGb44YKkL25iu42yvggMse2dEWuVZWIHTdlGMI/SVUhK6Ps1nu4YurBi1mwI9P8/6JLYaz20YmyjNq4eoSoEdw1VJBbBwu2zIe0Bb16KMuC+eC6tiDYJHEOYRmH866xdLcRjislshMOpvrhnoxsTlnf7gRDMae0B6UlYP7FsF4hbJdEmiTmM/9yb/5/0aVw2hp2n9twk0TUcHZkpuTHe3GevPXvsKVhnxzFJb1zhpGrDlWBoDWM2RomQNCCwanzDYgawb2jBXlAVflWaw545dS2oEQ4mT4nCI7OUJMlw34NESA4jWuzChBOfxBZZ7I0Ldf35WTA4rPVcSHckPDrVVn0/FrV47Qsak0zsYZ4BsZKU7oCsb64Jmpsj06U9E51qyfUl4abuBprjrrUY9UWYIAYhgOjxrj1nMhyKD5uGyzIsMXlfsTnlSNUFWLBwqK6gvkPBG3YivEraYAAQefdJyfLkqkwQIjsgMUq94xY26wU18Njk36JMkEOCY/Pcc0MEMMQIDsyFfa+IrIJqpDbB/OW77laFG6ShAWb4+pJs3p8VsZ8upmiFer+0c+qAOnPT9nSr4eIZmxJl+V3YyVLq5C4zysroj7dJ4ue25GqSlsYtGb+A+o+QLD/Y7DA3YNEdkK/0ruHCjJh4dJ5DM+sUXfXFl4faxoWqR2dDFg2fAV1HyBYUpixYXMTEf25TamS7Mha12gR+xu6Iz7xWzU+U+M6w016/sPKh6euAwTDViOFqnD+nMh+k+VpuX+sJBUrDuOWmYn0BQGPBOv6KmbchrhfukLWlmd1/dCXVILszVeEBQiR/TD/8ch4ydIl9DjuNmpBj6dal1TBenpHSOIWLzKw9r/usKJ6Be9DpzcickSfuoHDIW5W3cMl/R5Lx/hr1bKIT05o9lu+wKCuAySvKpDJsnV3P0R0aOnytDw+UZK8RcMA0SavJV1maxny9CULgro6s1pdP/JYwssJdCLn4O2HjbzjZWtGAjCRjl5P9IzOsFde3hG0pHnibHX9yGdV9VHmBhAiR+0rVGTAwqFkG66TNWOm+gjJkrA9rYrrNkAQG2Olqp5IJyLnZMrTsjFVsWRTIcKDI1jPWBxpkvO6QhKxqcVL3T70yA0MX3EEi8hZWISF4xSsuJnzeGaGsWjGixcEZW3cvi7FdRsgU9PTklJ3PvhMRM7anatI2qIFLXyLz+gKe+X8rrAEbQzUOg4QkdxUlT2wiFxgvFSVvRbMg+D9XeCbXLdtf8XCsG6caKe6DRDA8BVfWkTOw3EKu7JTps+DTKv/y3KcWu86f223vdUH1G2AoKydUncmLG+JnDdVnWlsavY8COY/jm0O6J3XjSrcJHLBkojuTGy3ug2QqrozQSNQa0Zdiehw4L2IxqYlk0sQBMhFS8LyuaOS8qpFoYYMkpe2h+T0tuDs37ZF3QYITHEAi8gV8E7EAVNWzFdgJ/qpbSG5dENSPr4+KS9eENBzAo1gZaxJ3rI8Ks0ObaZ05m+1gUf9n8+D/yUiN5goV3V7IavgfJCzFobkkiMS8salUVkYqtvLm4ahq9d1R2Vd3P6hqwPq+hHGXhoGCJE7pCtVyVk84Y055MVhn7x7VUw+c1RSTm4N2NLSw274kc7sDOtNg7hRdkrdBgheSDhoxsHHloieBd2x8ybPgRxMSKXGya1BXY28fklEYjbtzLbL+oRPVVkRy9u1Px9n/3YL4eWC7fw2r2ojooNAdtjdm25pxCfvWx2Xf1kbl446GdJCs8R/VBXWeht3nB9MfTyizwFlK9ZEN7EEIXIFRIdVpxMeCm4kX9cdkQ+tTcgaB+cLzIDTFy9eEpWXOLTqarY6DhCPJFV5xwqEyB1QfOQqs3/XHrihPLszJP+6ISFHJ52/czcCC63eoMLjDYsjjs57PFvdBgiCo9nvkYBLHmiiRofao2R/AfJnjm8OyIfWxeWEltoLkTMWhuTvl0dt67Q7F3UbINCiIjtg/aFcRDRnDieIcpwKkQ+sjctRNVSJvKw9KP+0KiYLMIblIu7615is2c/jLoncAu/EkEvGlI9OBuT9a2J6NZPbnaiqJQQeFgS4TV1fXUvT0+K+h5yoMWEeAqMCbvGC1pm7eqxqcqtjm/3ywXUJR/pczYV7H7l5mChV5deDBfnK1rT0Zh2atSOiP4N+WP158xsqGoVaCH2k3rkyLgm/OyqjZ8M8zcc3JOSIhHuH2jzT0w6sq7NIqlyVB8ZKcvtQQR7ZX5T9Ts/YEdGf4BK9JNokr1wYlrM6Q/qu2g27xAtT0/Lt3oxcuzsrFp15dVjwkJzaHpT3rI7JOhfs9TiUuggQvAAemyjJTfvycv9YUVUgNf8jEdUtbJ5eqs/ujuggWRRyfqXLSHFKPrc5Jb8ZLs7+lq2wwOpM9ZggPNCSxe1qPkD68hX5RX9BhUdOhgouuH0gojlBbmBFFPY14Cxvp5enPq5uQi/bOCl7suafnDgXaI54fndE3ro8Kp0uCNW5qNkAQU+d344U5fuq7NyaLuvxVSKqPa0Bj6pEwnLhkoisdHCyGFMzP96bk//sSdm+4bE96JW/WxaV1y0O19TK0ZoMEFQdP9qTk5sH8hyuIqoDWN27Pu6TtyyPyWntQd0M0Qn71Z3o5ZtTeh7VLkckfPK2FTM/NxrA1pKaChA0Y3t4vChX92bk0Ymy6ecrE5GzFgQ9em7kYlWNdDg0jPPI/pJc8uSE5UPi+PFe2haSt6+MuqIxohE1EyAYssIk+bW7M9Kfs/aJJSLnoPg4rSMo/7DSmY6zWGb8Xz0ZPTxu1fElXWGvXLw0KucuCjt2mqAZaiJAhgtT6snMyc/6c5Kx6hklIlfZkPDJu1SInNYRsv1gOOwf++gTE7I9be5kCCbKX9Ye0nMdJ7QEXNMU0SjXB8jefEWuUncDtw8WOGRF1GA6Q17559Vx3Uk3YOP8AK411+zKyjd3pKVowoAHFpihlfxrFkXk1YtCNV11PJurA6QnU5GvbU/L70aKLmjBRkROwLzIm5fF5G+WRGydXN+dq8i/qipkY2p+VQiGq85aGJbzusN6/0utVx3P5toA2ZQqy9e2peXB8dLsbxFRg8GRtG9fEZOLlkYkbFOI4PTEa3fn5FsGqhAUS21Br7xkQVAuUMGxNu63Nfzs4soAeWKyJJ/fnFIhMr/kJ6L6Efd75I1Lo/KW5VHbQmRHtiIffny/7MzMbXMhuq23hbxyaltIzuwIyoaEv6b2dRwu1wXI9kxZPrcpJY9NlGd/i4gaHCah370qLn+rKhE79kygTdK/b0/L9Xtzh5yDRYXUHWmSU1XFgRVka2J+20LOSa4KEKx8+NKWlNw/xmErInpuyYBH3rUyLm9YHLYlRB4YK8onNk7K8Kx9ITieoy3YJGtjPjm9IyzHJH2yMNSkqhDr/01u4ZoAGS1W5UtbU3LboH07QImoNiFEPro+Ked0hmZ/y3S4Nn1y44TcN1rSm/9ag17dJffYZEBOXhDQzSCT6BDZgFwRIOlyVa7akZEbVJnIbR5ENBdLo03yiQ0JObE1OPtbpsJkOvru/WF/SdYl/LrlSqeqPGIqNBpglOqQHA8QjCtix+c3dqSlMLd5KiIi7fhmv1xyRFJWx6xtwlhRl0mcFdII8xqHw/G66/6xgvxgT5bhQUSHDT3xvrcrI5MWnwSFvRsMj7/kaIBgidy3e7N/MTlFRDRXdw4V5Of9eT3URPZyLECylWk9dPXUJJfrEpFxGL24vi8nD3PTse0cCRDMe9yq7hpuG8zrQ1yIiOajLzcl3+nNyCDHwm3lSID0Zstyw96s7ad+EVH92pgqy68GCnrCm+xhe4Bg6AqnCW41uU0yETU2HGv90/6sXm5L9rA9QB6dKMqdwwUOXRGR6fblqvKzvrzeW0bWszVAxtUtwnV78zLJc8yJyAK4stw7WpB72Q7JFrYGyL2jRVWB8IklIutgbvUX/TndgoSsZVuAYHXEjX05VVqy+iAiaz05WZK7RniKqdVsCxBUH1glQURktayqQm7Zl5eRIpf1WsmWAJkoVeWuoYLuJUNEZIct6bI8sp83rVayPEBQQT4wXpJNaT6RRGSfvCo+fjWQkxTvXC1jeYBgOd3dwwVJceUVEdlsm7pxZbsk61geINsyFXlsoqQrESIiO40Vp+V23MCyCrGEpQGClgIPjZW4nI6IHIEb18fVDewQJ9MtYWmAIDjuGytyKR0ROWZffkr+uL/M7hcWsDRAejMVGSyw5xUROQcNeu9XN7IF3smazrIAyasn6/fqSdvPyXMictj2TFn6eDNrOssCBEdMbk6VOXxFRI4bL1bl0f1lnlpoMssCBMNXe3jgBxG5ANbxbE2XJcc7WlNZEiB4jrarAGHfKyJyAxQeW1Nl3RGczGNJgGQqVenJVvQBL0REbrCvMCUD2J5OprEkQLDmersqF1l/EJFbYGHPHhUgnAYxjyUBMlqoygR3fhKRi2BEZEuqrIOEzGFJgPRmK3ySiMhVUHnw2mQuSwJkp3qSChU+SUTkLpifLXIMyzSWBEhfbkovmyMicpOMurHtz3N7gVksCZDJCtODiNwHw1cDhSo3OJvEmgDhBDoRuRB2oqPJK3ekm8OSAOGTQ0RuhMERnA3CS5Q5LAkQzp8TkRthbCQzVdVnFdH8WRIgfG6IyI1QeUyWOAdiFksChE8OEbkVJtI5zG4OSwKEiMitsMaHHbHMwQAhooaCeRAWIOZggBARkSEMECIiMoQBQkQNpUl9eD2zf5eMYIAQUUNBePDCZw5LHkemOxG5VbDJIz4PL1JmYIAQUUNJ+L3is+TK13gseRgt+Y8SEc2TKj4k7mMFYhZLrvU+liBE5EI+HSBejpKYxJIAieFZIiJyGQxdtQebxG/Jla/xWPIwIuGJiNzGr0qPBQEOYZnFkit9d5gJT0Tugwn0pVHf7N8mgyy5zC+N+CTIQUYicplIk0dimEknU1gSIKtiPolwHoSIXGZJ2CchBohpLAmQzpBXJz0RkVtgWH1t3CdhXptMY0mALAw2ybIIxxmJyD0QHKuiPj2RTuawJECaA15Zn/BzIp2IXKNFXZe6wmilSGax5BIfUAm/IsqxRiJyj7Uxv7QFGSBmsiRAYH3Cx7QnIlcIqivduoSfm5xNZlmAtPq9sjrmY8sAInJczO+RY5I+3YmXzGNZgMR8XjmlLaQblxEROWlF1C/r4n7h1chclgUIKo/1cZ+euCIicgqKjhe2BPRNLZnL0ke0K9QkL1BPHFOfiJyyIOiVF7YGdJCQuSwNEKzCOqk1KNwSQkROOSLh1+2VyHyWBggc2+yX9XH/7N8mIrIc+ia+tC3EoXSLWP6oovf+6R0h4YpeIrLbElV5nNLG4SurWB4geOJObQvKYpaQRGQjLAD9K3XzujDEu1erWB4ggPHHl7eHuCeEiGyzKIzRjyAX8VjIlgBBFXLGwqB6Qm3564iowaEP3xmq+lgc5siHlWy7oqM31jmdEd1SgIjISsvV9eb87jBbt1vMtss5Tig8uzMkK2K8IyAi6yAzzloY4pESNrAtQAAnFb62OyKc0yIiq2xI+OWcRWGuvLKBrQGC5/OM9qAcmwzM/hYR0bwl/B75a3WTuoh3qbawNUCgQz2xFy+NqM+2/9VEVMdwg3paR0jOXBjkik+bOHIVf9GCoLyaJSYRmWhZtEkuWhKRJI9CtY0jjzR6ZL1+cUSOTrLFCRHNHzpdvE5dU9g2yV6OBAh0q2f87Sui0smhLCKap1ctCst5HNWwnaNXbwxlXbw0ylVZRGQYjs9+07KoJNkw0XaOPuJ+r0de2x2WszvDs79FRPS8sBjn3StjeqMy2c/RAAFMeGEo68RWLu0lormL+z3y98tjckpbcPa3yCaOBwig2eK/rInJmjjvIojo+WGu44LuiPx1d1iPZJAzXBEgcEwyIO9ZHZPuiGv+SUTkQgiPc7rC8uZlmD9leDjJVVfrl7WH5J9WJbjJkIgO6hWdIXnvqpg+65yc5apnAPcSZ3cG5R9XxRkiRPRnMFJ1WntQ3rsa1wcu3XQD112lfR6PnKfK03czRIjoWc7oCMqH18f1HjJyB8+0Mvs33WBK/atuHSzIN3akpS83NfvbRNQgMM1x5sKQvH9tnE0SXca1AXLA3cMF+XpPWnozDBGiRoO9ged3R+QdK6I829yFXB8g8Mj+knxThcgf9pfF9f9YIjJFS8AjFy6Jyt8uZYNEt6qJAIHduYp8pzcjvx4sSKk6+7tEVE+wnP+dK+PyyoUhLtV1sZoJEBgrVuX6vpz8rD8nwwWmCFG9QVa8oCUgb1sRlRe2Btkc0eVqKkCgVJ2WB8aK8r2dWXlisqwn24mo9uE0wdcsCssbl0W50qpG1FyAHNCbrciP9uTk10N5mSzV5I9ARDKzv2Nd3CcXLY3KX3UEJebjfEetqNkAgWxlWu5T1chP+3Ly2ERJClyoRVRTsNfrzI6QvH5JRFayo27NqekAOWBQJcfP+/Pyq8G87M1OcaUWkcshK05sCepmiCcvCEqYkx01qS4CBDA3gmGtm1SQ/F5VJf25Kc6PELkMWrAfEffLud0RecmCgLTyEKiaVjcBckBBpUZPpiw/31eQ340W9Gqtal39hES1B3Pi6Lh9ZmdITm8PSnuQk+T1oO4C5IBMpSp7VBVy93BR7lVBMpCfkslyXf6oRK6EvX9tQa+sUxXHKzvDcnyzXwcHj++oH3UbIAdgGGukOCUPjpfknpGCbJosy2ixKpW6/qmJnINqY3XMrwIjIKd1BPUKK66sqk91HyAHIEhS5arszVXk0YmyPKwCZZf6elL9Xk6lCedLiIzBsRzJgFfPZxyVDMgLWwKyPuGT9kCTRHwsN+pZwwTIsyEsMMQ1pCqTJycrsj1dlh2Zim6XgjDBhDzbpRD9JQw/ITAC6gsc6LQ86pNVUVQbflkV80nC7+WKqgbSkAHybBX142PifUJVIoP5KRkuTctOFSa92bL+dUoFSlaFTbE6U6VwrwnVO4QEMgAfOG8cgRBVlcQCFQ5dEZ+sVkGxNNyku+NiTgPfY2g0poYPkOeSV0kxWlLhUZ6WMVWl9OWrMqo+I2T25qZUlVJVbzK+Yag+4AKAVzOCA4ERUh9Ybhv3eaVZhUZ3RIWFqjZaAupD/bpVfY2D34gYIEREZAiXRhARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMoQBQkREhjBAiIjIEAYIEREZwgAhIiJDGCBERGQIA4SIiAxhgBARkSEMECIiMuT/A80KizI2kDcpAAAAAElFTkSuQmCC", + "Label": "Monitoring Solution pack for Azure Backup", + "Link": { + "Label": "More info", + "Url": "https://azure.microsoft.com/en-us/services/backup/" + } + }, + "List": [ + { + "Title": "Monitor Azure Backup!", + "Content": "## Welcome to the monitoring solution of Azure Backup!\nYou can view:\n\n1. **Backup Jobs** and what backup jobs *failed*\n2. **Restore jobs** and what restore jobs *failed*\n3. **Critical Alerts** that need your urgent attention\n4. **Cloud Storage in GB** view along with **Top 5** datasources backed up along with their storage in GB\n5. **Data sources** being backed up\n\n\n[Microsoft](https://assets.onestore.ms/cdnfiles/onestorerolling-1607-15000/shell/v3/images/logo/microsoft.png \"Microsoft\")" + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Backup Jobs Breakdown (Non Log)", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Backup Jobs Breakdown (Non Log)" + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Job\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#55d455", + "#ba141a", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#ba141a" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | distinct JobUniqueId_g, BackupItemUniqueId_s, JobStatus_s, Resource | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s, JobStatus_s, Resource | extend Vault= Resource | summarize count() by BackupItemFriendlyName_s, JobStatus_s, Vault, BackupItemUniqueId_s | order by count_ desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Data Sources", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | distinct JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s, RecommendedAction_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | distinct JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s, RecommendedAction_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s , ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Backup Jobs BreakDown (Log)", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Backup Jobs Breakdown (Log)" + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Job\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and (JobOperationSubType_s == \"Log\" or JobOperationSubType_s == \"Recovery point_Log\") | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#dd5900" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and (JobOperationSubType_s == \"Log\" or JobOperationSubType_s == \"Recovery point_Log\") | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project BackupItemFriendlyName_s , JobStatus_s, Resource | extend Vault= Resource | summarize count() by BackupItemFriendlyName_s, JobStatus_s, Vault | order by count_ desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Datasources", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and (JobOperationSubType_s == \"Log\" or JobOperationSubType_s == \"Recovery point_Log\") | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where OperationName == \"Job\" and JobOperation_s == \"Backup\" and JobStatus_s == \"Failed\" and (JobOperationSubType_s == \"Log\" or JobOperationSubType_s == \"Recovery point_Log\") | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Restore Jobs Breakdown", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Restore Jobs Breakdown" + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Job\" | where JobOperation_s == \"Restore\" or JobOperation_s == \"Recovery\" | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#007233", + "#ba141a", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Cancelled", + "color": "#fff100" + }, + { + "value": "Completed", + "color": "#007233" + }, + { + "value": "Failed", + "color": "#ba141a" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | where OperationName == \"Job\" and JobOperation_s == \"Restore\" or JobOperation_s == \"Recovery\" and JobStatus_s == \"Failed\" | distinct JobUniqueId_g, BackupItemUniqueId_s, JobStatus_s, Resource | project BackupItemUniqueId_s, JobStatus_s, Resource | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemUniqueId_s, JobStatus_s, Resource | extend Vault= Resource | summarize count() by BackupItemFriendlyName_s, BackupItemUniqueId_s , JobStatus_s, Vault | order by count_ desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Data Sources", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | where OperationName == \"Job\" and JobOperation_s == \"Restore\" or JobOperation_s == \"Recovery\" and JobStatus_s == \"Failed\" | distinct JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\" ; Events | where OperationName == \"Job\" and JobOperation_s == \"Restore\" or JobOperation_s == \"Recovery\" and JobStatus_s == \"Failed\" | distinct JobUniqueId_g, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | project BackupItemUniqueId_s, ProtectedContainerUniqueId_s, JobStatus_s, Resource, JobFailureCode_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s | project BackupItemUniqueId_s , BackupItemFriendlyName_s, BackupItemName_s, BackupItemType_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, BackupItemType_s, JobStatus_s, Resource, JobFailureCode_s | extend Vault= Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Alerts from Azure Resources Backup", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Active Alert Distribution " + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Alert\" | where AlertUniqueId_s != \"\" | summarize arg_max(TimeGenerated, *) by AlertUniqueId_s | extend CurrentStatus = AlertStatus_s | join (AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_s ) on AlertUniqueId_s | project AlertUniqueId_s, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s | where CurrentStatus == \"Active\" | summarize count() by AlertSeverity_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#e81123", + "#008272", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Critical", + "color": "#e81123" + }, + { + "value": "Warning", + "color": "#fff100" + }, + { + "value": "Information", + "color": "#55d455" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_s != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_s | extend CurrentStatus = AlertStatus_s | join (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_s ) on AlertUniqueId_s | project AlertUniqueId_s, lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | project BackupItemName_s, AlertCode_s, HitCount | order by HitCount desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Data Sources", + "Value": "HitCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_s != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_s | extend CurrentStatus = AlertStatus_s | join (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_s ) on AlertUniqueId_s | project AlertUniqueId_s, lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s, Resource | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | project AlertCode_s, lastOccurred, BackupItemName_s, CurrentStatus, AlertSeverity_s, HitCount, RecommendedAction_s, Resource | extend Vault= Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_s != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_s | extend CurrentStatus = AlertStatus_s | join (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_s ) on AlertUniqueId_s | project AlertUniqueId_s, lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s, Resource | join kind=inner ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | project AlertCode_s, lastOccurred, BackupItemName_s, CurrentStatus, AlertSeverity_s, HitCount, RecommendedAction_s, Resource | extend Vault= Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Alerts from On-prem backup", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Active Alert distribution" + }, + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Alert\" | where AlertUniqueId_g != \"\" | summarize arg_max(TimeGenerated, *) by AlertUniqueId_g | extend CurrentStatus = AlertStatus_s | join kind= inner (AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_g ) on AlertUniqueId_g | project AlertUniqueId_g, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s | where CurrentStatus == \"Active\" | summarize count() by AlertSeverity_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Critical", + "color": "#ba141a" + }, + { + "value": "Warning", + "color": "#ffb900" + }, + { + "value": "Information", + "color": "#55d455" + } + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_g != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_g | extend CurrentStatus = AlertStatus_s | join (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_g ) on AlertUniqueId_g | project AlertUniqueId_g, lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s | where CurrentStatus == \"Active\" | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | project BackupItemName_s, AlertCode_s, HitCount | order by HitCount desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_g != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_g | extend CurrentStatus = AlertStatus_s | join kind=inner (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_g ) on AlertUniqueId_g | project AlertUniqueId_g, BackupManagementServerUniqueId_s, ProtectedContainerUniqueId_s ,lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s, Resource | where CurrentStatus == \"Active\" | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | join kind=leftouter( Events | where OperationName == \"BackupManagementServer\" | distinct BackupManagmentServerUniqueId_s, BackupManagmentServerName_s | project BackupManagmentServerUniqueId_s, BackupManagmentServerName_s ) on $left.BackupManagementServerUniqueId_s == $right.BackupManagmentServerUniqueId_s | project AlertCode_s, lastOccurred, BackupItemName_s, ProtectedContainerFriendlyName_s, BackupManagmentServerName_s, CurrentStatus, AlertSeverity_s, HitCount, RecommendedAction_s, Resource | extend Vault= Resource | project-away Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"Alert\" | where AlertUniqueId_g != \"\" | summarize lastOccurred = arg_max(TimeGenerated, *) by AlertUniqueId_g | extend CurrentStatus = AlertStatus_s | join kind=inner (Events | where OperationName == \"Alert\" | where AlertStatus_s == \"Active\" | summarize HitCount = count() by AlertUniqueId_g ) on AlertUniqueId_g | project AlertUniqueId_g, BackupManagementServerUniqueId_s, ProtectedContainerUniqueId_s ,lastOccurred, HitCount , CurrentStatus , AlertCode_s, AlertSeverity_s, BackupItemUniqueId_s, RecommendedAction_s, Resource | where CurrentStatus == \"Active\" | join kind=leftouter ( Events | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s, BackupItemName_s ) on BackupItemUniqueId_s | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | join kind=leftouter( Events | where OperationName == \"BackupManagementServer\" | distinct BackupManagmentServerUniqueId_s, BackupManagmentServerName_s | project BackupManagmentServerUniqueId_s, BackupManagmentServerName_s ) on $left.BackupManagementServerUniqueId_s == $right.BackupManagmentServerUniqueId_s | project AlertCode_s, lastOccurred, BackupItemName_s, ProtectedContainerFriendlyName_s, BackupManagmentServerName_s, CurrentStatus, AlertSeverity_s, HitCount, RecommendedAction_s, Resource | extend Vault= Resource | project-away Resource | where {selected item}" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Active Datasources Protected", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Last known Protection status" + }, + "Donut": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"BackupItem\" | where BackupItemProtectionState_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s, BackupItemProtectionState_s | summarize dcount(BackupItemUniqueId_s) by BackupItemProtectionState_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#ff8c00", + "#55d455", + "#6dc2e9" + ] + } + }, + "List": { + "Query": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"BackupItem\" | where BackupItemProtectionState_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s | summarize dcount(BackupItemUniqueId_s) by BackupManagementType_s,BackupItemProtectionState_s | order by BackupManagementType_s desc", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "BackupManagement Type", + "Value": "BackupItems" + }, + "Color": "#ff8c00", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"BackupItem\" | where BackupItemProtectionState_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, Resource | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, Resource | extend Vault= Resource | project-away Resource | where {selected item}", + "NavigationSelect": { + "NavigationQuery": "let Events = AzureDiagnostics | where Category == \"AzureBackupReport\"; Events | where OperationName == \"BackupItem\" | where BackupItemProtectionState_s != \"\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s, ProtectedContainerUniqueId_s, Resource | join kind=leftouter ( Events | where OperationName == \"ProtectedContainer\" | distinct ProtectedContainerUniqueId_s, ProtectedContainerFriendlyName_s | project ProtectedContainerUniqueId_s , ProtectedContainerFriendlyName_s ) on ProtectedContainerUniqueId_s | project BackupItemFriendlyName_s, BackupItemName_s ,BackupItemType_s, BackupManagementType_s, BackupItemProtectionState_s, BackupItemUniqueId_s, ProtectedContainerFriendlyName_s, Resource | extend Vault= Resource | project-away Resource | where {selected item}" + } + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Cloud Storage in GB", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Cloud storage in GB" + }, + "LineChart": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend CloudStorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project CloudStorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s == \"Cloud\" | summarize dayCharge = avg(CloudStorageInGB) by BackupItemUniqueId_s, bin(TimeGenerated, 1d) | summarize TotalCharge = sum(dayCharge) by bin(TimeGenerated, 1d)", + "yAxis": { + "isLogarithmic": false, + "customLabel": "Cloud Storage (GB)" + } + }, + "List": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | summarize arg_max(TimeGenerated, *) by BackupItemUniqueId_s, StorageUniqueId_s | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | project StorageInGB, BackupItemUniqueId_s, StorageType_s | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project StorageInGB, BackupItemFriendlyName_s, BackupItemUniqueId_s, StorageType_s | where StorageType_s == \"Cloud\" | order by StorageInGB desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Data Sources", + "Value": "Cloud Data in GB" + }, + "Color": "#eb3c00", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s == \"Cloud\" | project StorageInGB, BackupItemUniqueId_s, StorageType_s, TimeGenerated | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project StorageInGB, BackupItemFriendlyName_s, BackupItemUniqueId_s, StorageType_s, TimeGenerated | where {selected item} | summarize dayCharge = avg(StorageInGB) by BackupItemUniqueId_s, bin(TimeGenerated, 1d)", + "NavigationSelect": { + "NavigationQuery": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"StorageAssociation\" | extend StorageInGB = todouble(StorageConsumedInMBs_s) / 1024 | project StorageInGB, BackupItemUniqueId_s, StorageUniqueId_s, TimeGenerated | join kind=inner ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Storage\" | distinct StorageUniqueId_s, StorageType_s | project StorageUniqueId_s, StorageType_s ) on StorageUniqueId_s | where StorageType_s == \"Cloud\" | project StorageInGB, BackupItemUniqueId_s, StorageType_s, TimeGenerated | join kind=leftouter ( AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"BackupItem\" | distinct BackupItemUniqueId_s, BackupItemFriendlyName_s | project BackupItemUniqueId_s, BackupItemFriendlyName_s ) on BackupItemUniqueId_s | project StorageInGB, BackupItemFriendlyName_s, BackupItemUniqueId_s, StorageType_s, TimeGenerated | where {selected item} | summarize dayCharge = avg(StorageInGB) by BackupItemUniqueId_s, bin(TimeGenerated, 1d)" + } + } + } + } + ], + "OverviewTile": { + "Id": "SingleQueryDonutBuilderTileV1", + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Donut": { + "Query": "AzureDiagnostics | where Category == \"AzureBackupReport\" | where OperationName == \"Job\" | extend JobOperationSubType_s = columnifexists(\"JobOperationSubType_s\", \"\") | where JobOperation_s == \"Backup\" and JobOperationSubType_s != \"Log\" and JobOperationSubType_s != \"Recovery point_Log\" | summarize AggregatedValue = dcount(JobUniqueId_g) by JobStatus_s | order by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#55d455", + "#e81123", + "#00bcf2" + ], + "valueColorMapping": [ + { + "value": "Completed", + "color": "#55d455" + }, + { + "value": "Failed", + "color": "#ba141a" + } + ] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated" + } + } + } + } + } + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT656 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT656 new file mode 100644 index 0000000..13a02a1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT656 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-optimize-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-optimize-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898709, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-optimize-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-optimize-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT656", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT656", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "sku": "pergb2018", + "tags": { + "UsedByArmTemplateTest": "true" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "UsedByArmTemplateTest": "true" + }, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + } + ], + "outputs": { + "existingLogicAppWorkspace": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "existingWorkspaceResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingWorkspaceSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "existingWorkspacesToQuery": { + "type": "array", + "value": "[array(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT657 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT657 new file mode 100644 index 0000000..e50ca02 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT657 @@ -0,0 +1,857 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-optimize-report/azuredeploy.json", + "/demos/backup-optimize-report/azuredeploy.parameters.json" + ], + "timestamp": 1642962898718, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-optimize-report/azuredeploy.json", + "/demos/backup-optimize-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT657", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT657", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "String", + "defaultValue": "Optimize", + "metadata": { + "description": "Name of the Logic App to be created." + } + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region in which the Logic App should be created." + } + }, + "logicAppWorkspace": { + "type": "String", + "metadata": { + "description": "Name of the existing Log Analytics workspace that the Logic App should connect to. Note that the Logic App connects to a single workspace, but can query data across multiple workspaces. Use the 'Workspaces To Query' parameter to specify the list of workspaces that the Logic App should query data from." + }, + "value": "GET-PREREQ-existingLogicAppWorkspace" + }, + "workspaceSubscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceSubscriptionId" + }, + "workspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group name of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceResourceGroup" + }, + "workspacesToQuery": { + "type": "Array", + "metadata": { + "description": "List of workspaces that the Logic App should query data from. Should be a comma-separated array of values of the format ['/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName1}','/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName2}']" + }, + "value": "GET-PREREQ-existingWorkspacesToQuery" + }, + "emailFrequency": { + "type": "String", + "allowedValues": [ + "Day", + "Week", + "Month" + ], + "defaultValue": "Day", + "metadata": { + "description": "Frequency at whch emails should be received by the recipient(s). Select 'Day' for sending emails once a day, 'Week' for sending emails once a week, or 'Month' for sending emails once a month." + } + }, + "recipientEmailId": { + "type": "String", + "metadata": { + "description": "Email id of the recipient(s). To specify multiple email ids, use a semicolon-separated list." + }, + "value": "vijeya@microsoft.com" + }, + "startDate": { + "type": "String", + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "metadata": { + "description": "Start Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "endDate": { + "type": "String", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "End Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "vaultSubscriptionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of subscriptions in which Recovery Services vaults exist. Should be of the format '{subscriptionId1},{subscriptionId2},..'. Default value is '*', which enables the Logic App to query data across all backup subscriptions that are sending data to the specified Log Analytics workspaces." + } + }, + "vaultLocationListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of regions in which Recovery Services vaults exist. Should be of the format 'location1,location2,..' (eg. eastus,westus). Default value is '*', which enables the Logic App to query data for vaults across all Azure regions in the specified subscriptions." + } + }, + "vaultListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Recovery Services vaults. Should be of the format 'vaultname1,vaultname2,..'. Default value is '*', which enables the Logic App to query data for all vaults in the specified subscriptions and locations." + } + }, + "backupSolutionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Azure Backup solutions being used in your environment. Should be of the format 'solution1,solution2,..' (eg. Azure VM Backup,SQL in Azure VM Backup,DPM). Default value is '*', which enables the Logic App to query data across all Azure Backup solutions being used." + } + }, + "excludeLegacyEvent": { + "type": "Bool", + "defaultValue": true, + "metadata": { + "description": "Selecting 'true' enables the Logic App to avoid querying data that is sent to the legacy Azure Diagnostics table in the Log Analytics workspace(s). Excluding the legacy table improves query performance time." + } + }, + "dailyRPRetentionFilter": { + "type": "Int", + "defaultValue": -1, + "metadata": { + "description": "For the grid 'Backup Instances with large retention duration' that is exported by the Logic App, you can use this parameter to display only those backup instances whose configured retention duration for daily retention points is greater than the value specified in this parameter. To display all backup instances irrespective of their daily retention point duration, use the value -1." + } + }, + "weeklyRPRetentionFilter": { + "type": "Int", + "defaultValue": -1, + "metadata": { + "description": "For the grid 'Backup Instances with large retention duration' that is exported by the Logic App, you can use this parameter to display only those backup instances whose configured retention duration for weekly retention points is greater than the value specified in this parameter. To display all backup instances irrespective of their weekly retention point duration, use the value -1." + } + }, + "monthlyRPRetentionFilter": { + "type": "Int", + "defaultValue": -1, + "metadata": { + "description": "For the grid 'Backup Instances with large retention duration' that is exported by the Logic App, you can use this parameter to display only those backup instances whose configured retention duration for monthly retention points is greater than the value specified in this parameter. To display all backup instances irrespective of their monthly retention point duration, use the value -1." + } + }, + "yearlyRPRetentionFilter": { + "type": "Int", + "defaultValue": -1, + "metadata": { + "description": "For the grid 'Backup Instances with large retention duration' that is exported by the Logic App, you can use this parameter to display only those backup instances whose configured retention duration for yearly retention points is greater than the value specified in this parameter. To display all backup instances irrespective of their yearly retention point duration, use the value -1." + } + }, + "aggregationType": { + "type": "String", + "allowedValues": [ + "Daily", + "Weekly", + "Monthly" + ], + "defaultValue": "Daily", + "metadata": { + "description": "Use to specify the granularity at which data is sampled in the case of trend graphs." + } + }, + "resourceTags": { + "type": "object", + "defaultValue": { + "UsedByBackupReports": "true" + }, + "metadata": { + "description": "Tags to be assigned to the Logic App and the API connection resources." + } + }, + "emailSubject": { + "type": "string", + "defaultValue": "Optimize", + "metadata": { + "description": "Subject of the email to be received by the recipient(s)." + } + } + }, + "variables": { + "office365ConnectionName": "[resourceGroup().location]-office365", + "azureMonitorLogsConnectionName": "[resourceGroup().location]-azuremonitorlogs" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-office365", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + }, + "displayName": "office365" + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-azuremonitorlogs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "displayName": "azuremonitorlogs" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "Optimize", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "dependsOn": [ + "Microsoft.Web/connections/[resourceGroup().location]-office365", + "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + }, + "dataToExport": { + "defaultValue": "Optimize", + "type": "String" + }, + "aggregationType": { + "defaultValue": "\"Daily\"", + "type": "String" + }, + "backupSolutionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "excludeLegacyEvent": { + "defaultValue": true, + "type": "Bool" + }, + "dailyRetentionParam": { + "defaultValue": -1, + "type": "Int" + }, + "monthlyRetentionParam": { + "defaultValue": -1, + "type": "Int" + }, + "endDate": { + "defaultValue": "[utcNow('u')]", + "type": "String" + }, + "startDate": { + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "type": "String" + }, + "vaultListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultLocationListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultSubscriptionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "weeklyRetentionParam": { + "defaultValue": -1, + "type": "Int" + }, + "workspacesToQuery": { + "defaultValue": "GET-PREREQ-existingWorkspacesToQuery", + "type": "Array" + }, + "yearlyRetentionParam": { + "defaultValue": -1, + "type": "Int" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Day", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "For_each": { + "foreach": "@parameters('workspacesToQuery')", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "AzureDiagnostics_Incomplete", + "value": " workspace('@{items('For_each')}').AzureDiagnostics," + } + }, + "Append_to_string_variable_2": { + "runAfter": { + "Append_to_string_variable": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "CoreAzureBackup_Incomplete", + "value": " workspace('@{items('For_each')}').CoreAzureBackup," + } + }, + "Append_to_string_variable_3": { + "runAfter": { + "Append_to_string_variable_2": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupJobs_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupJobs," + } + }, + "Append_to_string_variable_4": { + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupPolicy_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupPolicy," + } + }, + "Append_to_string_variable_5": { + "runAfter": { + "Append_to_string_variable_4": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupProtectedInstance," + } + }, + "Append_to_string_variable_6": { + "runAfter": { + "Append_to_string_variable_5": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupStorage_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupStorage," + } + } + }, + "runAfter": { + "Initialize_variable-AddonAzureBackupStorage": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "If_Scope_Failed": { + "actions": { + "Send_an_email_(V2)-FailureRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "

The Logic App Run did not execute to completion.
\n
Status: @{result('Scope')[0]['status']}

Learn more about how to troubleshoot the error

", + "Subject": "Optimize", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Scope": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ] + }, + "else": { + "actions": { + "Send_an_email_(V2)-SuccessfulRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Attachments": [ + { + "ContentBytes": "@{base64(body('Create_CSV_table-Grid1'))}", + "Name": "InactiveResources.csv" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-Grid2'))}", + "Name": "RetentionOptimizations.csv" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-Grid3'))}", + "Name": "BackupScheduleOptimizations.csv" + } + ], + "Body": "


\nOptimization Opportunities
\n

\nEmail Contents
\n

\n1. Attachments
a. Inactive Resources - Backup Instances with no recovery point in selected time range.
b. Retention Optimizations - List of all backup instances with retentions greater than specified value.
c. Backup Schedule Optimizations - List of all databases configured for daily full backup.

Learn more about Backup Reports", + "Subject": "Optimize", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + } + }, + "expression": { + "or": [ + { + "equals": [ + "@result('Scope')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "TimedOut" + ] + } + ] + }, + "type": "If" + }, + "Initialize_variable-AddonAzureBackupJobs": { + "runAfter": { + "Initialize_variable-CoreAzureBackup": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupJobs_Incomplete", + "type": "string", + "value": "let AddonAzureBackupJobs = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupPolicy": { + "runAfter": { + "Initialize_variable-AddonAzureBackupJobs": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupPolicy_Incomplete", + "type": "string", + "value": "let AddonAzureBackupPolicy = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupProtectedInstance": { + "runAfter": { + "Initialize_variable-AddonAzureBackupPolicy": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "type": "string", + "value": "let AddonAzureBackupProtectedInstance = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupStorage": { + "runAfter": { + "Initialize_variable-AddonAzureBackupProtectedInstance": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupStorage_Incomplete", + "type": "string", + "value": "let AddonAzureBackupStorage = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-NoDataMessage": { + "inputs": { + "variables": [ + { + "name": "NoDataMessage", + "type": "array", + "value": [ + { + "Message": "No records found" + } + ] + } + ] + }, + "runAfter": { + "Initialize_variable-PolicyFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Initialize_variable-AzureDiagnostics": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AzureDiagnostics_Incomplete", + "type": "string", + "value": "let AzureDiagnostics = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-BackupInstanceFunction": { + "runAfter": { + "Initialize_variable-ReportFilterForLatestData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n// DatasourceSetType\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet LatestBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| where BackupItemUniqueId != \"\"\n// To show as per as on 'AsonDay'\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true) \n};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet LatestBackupItemAssociationAndStorageConsumptionTable = ()\n{\nLatestBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n)on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {union (LatestBackupItemAssociationAndStorageConsumptionTable | where (_RangeEnd-_RangeStart == 1d)), (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-CoreAzureBackup": { + "runAfter": { + "Initialize_variable-AzureDiagnostics": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "CoreAzureBackup_Incomplete", + "type": "string", + "value": "let CoreAzureBackup = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-JobFunction": { + "runAfter": { + "Initialize_variable-BackupInstanceFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "JobFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n// Report filters\n@{variables('ReportFilter_Trend')}\nlet _ProtectionStateList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _JobOperationList = \"*\";\nlet _JobStatusList = \"*\";\nlet _JobFailureCodeList = \"*\";\nlet _ExcludeLog = true;\n// Other Vars\nlet ExtRangeStart = _RangeStart - 2d;\nlet ExtRangeEnd = _RangeEnd + 2d;\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet JobUnderAzureDiagnostics = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AzureDiagnostics \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"Job\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n// Exclude Log Jobs and InProgress Jobs\n| project JobOperation = columnifexists(\"JobOperation_s\", \"\") , JobOperationSubType = columnifexists(\"JobOperationSubType_s\", \"\"), JobUniqueIdGuid = columnifexists(\"JobUniqueId_g\", \"\") , JobUniqueIdStr = columnifexists(\"JobUniqueId_s\", \"\"),\nProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), AdHocOrScheduledJob = columnifexists(\"AdHocOrScheduledJob_s\",\"\"), RecoveryJobDestination = columnifexists(\"RecoveryJobDestination_s\",\"\"),\nRecoveryJobRPDateTime = todatetime(columnifexists(\"RecoveryJobRPDateTime_s\",\"\")), RecoveryJobRPLocation = columnifexists(\"RecoveryJobRPLocation_s\",\"\"), RecoveryLocationType = columnifexists(\"RecoveryLocationType_s\",\"\"),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\",\"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\",\"\"),\nJobStatus = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode = columnifexists(\"JobFailureCode_s\",\"\"), JobStartDateTime = todatetime(columnifexists(\"JobStartDateTime_s\",\"\")), JobDurationInSecs = todouble(columnifexists(\"JobDurationInSecs_s\", \"\")),\nDataTransferredInMB = todouble(columnifexists(\"DataTransferredInMB_s\",\"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\",\"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog) \n| extend JobUniqueId = iff(JobUniqueIdGuid == \"\", JobUniqueIdStr, JobUniqueIdGuid) \n| project-away JobUniqueIdGuid, JobUniqueIdStr\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId ;\nJobTable\n};\nlet JobUnderResourceSpecific = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AddonAzureBackupJobs \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Job\" \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog)\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId;\nJobTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet LatestBackupItemWithProtectedContainerTable = () \n{\nTotalBackupItemDimensionTable\n| join (union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics()| where _ExcludeLegacyEvent == false),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId) on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet JobFinalTable = (){\n union isfuzzy = true \n(JobUnderAzureDiagnostics(true)| where _ExcludeLegacyEvent == false),\n(JobUnderResourceSpecific(true))\n| project JobStatus, JobUniqueId, JobOperation, JobFailureCode, JobOperationSubType, JobStartDateTime, DataTransferredInMB, AdHocOrScheduledJob, JobDurationInSecs, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId, ProtectedContainerUniqueId, TimeGenerated \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId\n| where JobOperation in~ (_JobOperationList) or '*' in (_JobOperationList)\n| where JobStatus in~ (_JobStatusList) or '*' in (_JobStatusList)\n| where JobFailureCode in~ (_JobFailureCodeList) or '*' in (_JobFailureCodeList)\n| join kind= inner (LatestBackupItemWithProtectedContainerTable) on BackupItemUniqueId\n| project JobUniqueId, JobOperation, JobStatus, JobFailureCode, JobOperationSubType, JobStartDateTime, JobDurationInSecs, DataTransferredInMB, AdHocOrScheduledJob, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId = BackupItemUniqueId1, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, StorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(JobFinalTable)))\n| project UniqueId = JobUniqueId, OperationCategory = JobOperation, Operation = JobOperationSubType, Status = JobStatus, ErrorTitle = JobFailureCode, StartTime = JobStartDateTime, DurationInSecs = JobDurationInSecs, DataTransferredInMBs = DataTransferredInMB, RestoreJobRPDateTime = RecoveryJobRPDateTime, RestoreJobRPLocation = RecoveryJobRPLocation, BackupInstanceUniqueId = BackupItemUniqueId, BackupInstanceId, BackupInstanceFriendlyName = BackupItemFriendlyName, DatasourceResourceId, DatasourceFriendlyName = BackupItemFriendlyName, DatasourceType, BackupSolution, DatasourceSetResourceId, DatasourceSetType, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-PolicyFunction": { + "runAfter": { + "Initialize_variable-JobFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "PolicyFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')} \n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet PolicyWithExtendedPropsUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), PolicyTimeZone = columnifexists(\"PolicyTimeZone_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), DiffBackupFormat = columnifexists(\"DiffBackupFormat_s\", \"\"),\nDiffBackupDaysofTheWeek = columnifexists(\"DiffBackupDaysofTheWeek_s\", \"\"), DiffBackupRetentionDuration = toint(columnifexists(\"DiffBackupRetentionDuration_s\", \"\")), DiffBackupTime = columnifexists(\"DiffBackupTime_s\", \"\"), LogBackupFrequency = toint(columnifexists(\"LogBackupFrequency_s\", \"\")), LogBackupRetentionDuration = toint(columnifexists(\"LogBackupRetentionDuration_s\", \"\")),\nBackupFrequency = columnifexists(\"BackupFrequency_s\", \"\"), BackupTimes = columnifexists(\"BackupTimes_s\", \"\"), BackupDaysOfTheWeek = columnifexists(\"BackupDaysOfTheWeek_s\", \"\"), RetentionType = columnifexists(\"RetentionType_s\", \"\"), RetentionDuration = toint(columnifexists(\"RetentionDuration_s\", \"\")),\nDailyRetentionDuration = toint(columnifexists(\"DailyRetentionDuration_s\", \"\")), DailyRetentionTimes = columnifexists(\"DailyRetentionTimes_s\", \"\"), \nWeeklyRetentionDuration = toint(columnifexists(\"WeeklyRetentionDuration_s\", \"\")), WeeklyRetentionTimes = columnifexists(\"WeeklyRetentionTimes_s\", \"\"), WeeklyRetentionDaysOfTheWeek = columnifexists(\"WeeklyRetentionDaysOfTheWeek_s\", \"\"),\nMonthlyRetentionDuration = toint(columnifexists(\"MonthlyRetentionDuration_s\", \"\")), MonthlyRetentionTimes = columnifexists(\"MonthlyRetentionTimes_s\", \"\"), MonthlyRetentionFormat = columnifexists(\"MonthlyRetentionFormat_s\", \"\"), MonthlyRetentionDaysOfTheMonth = columnifexists(\"MonthlyRetentionDaysOfTheMonth_s\", \"\"), MonthlyRetentionDaysOfTheWeek = columnifexists(\"MonthlyRetentionDaysOfTheWeek_s\", \"\"), MonthlyRetentionWeeksOfTheMonth = columnifexists(\"MonthlyRetentionWeeksOfTheMonth_s\", \"\"),\nYearlyRetentionDuration = toint(columnifexists(\"YearlyRetentionDuration_s\", \"\")), YearlyRetentionTimes = columnifexists(\"YearlyRetentionTimes_s\", \"\"), YearlyRetentionMonthsOfTheYear = columnifexists(\"YearlyRetentionMonthsOfTheYear_s\", \"\"), YearlyRetentionFormat = columnifexists(\"YearlyRetentionFormat_s\", \"\"), YearlyRetentionDaysOfTheMonth = columnifexists(\"YearlyRetentionDaysOfTheMonth_s\", \"\"), YearlyRetentionDaysOfTheWeek = columnifexists(\"YearlyRetentionDaysOfTheWeek_s\", \"\"), YearlyRetentionWeeksOfTheMonth = columnifexists(\"YearlyRetentionWeeksOfTheMonth_s\", \"\"), ResourceId, TimeGenerated\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), ResourceId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated;\n PolicyTable \n};\nlet PolicyWithExtendedPropsUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where OperationName == \"Policy\" \n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated;\n PolicyTable \n};\nlet PolicyHistoryWithExtendedPropsUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), PolicyTimeZone = columnifexists(\"PolicyTimeZone_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), DiffBackupFormat = columnifexists(\"DiffBackupFormat_s\", \"\"),\nDiffBackupDaysofTheWeek = columnifexists(\"DiffBackupDaysofTheWeek_s\", \"\"), DiffBackupRetentionDuration = toint(columnifexists(\"DiffBackupRetentionDuration_s\", \"\")), DiffBackupTime = columnifexists(\"DiffBackupTime_s\", \"\"), LogBackupFrequency = toint(columnifexists(\"LogBackupFrequency_s\", \"\")), LogBackupRetentionDuration = toint(columnifexists(\"LogBackupRetentionDuration_s\", \"\")),\nBackupFrequency = columnifexists(\"BackupFrequency_s\", \"\"), BackupTimes = columnifexists(\"BackupTimes_s\", \"\"), BackupDaysOfTheWeek = columnifexists(\"BackupDaysOfTheWeek_s\", \"\"), RetentionType = columnifexists(\"RetentionType_s\", \"\"), RetentionDuration = toint(columnifexists(\"RetentionDuration_s\", \"\")),\nDailyRetentionDuration = toint(columnifexists(\"DailyRetentionDuration_s\", \"\")), DailyRetentionTimes = columnifexists(\"DailyRetentionTimes_s\", \"\"), \nWeeklyRetentionDuration = toint(columnifexists(\"WeeklyRetentionDuration_s\", \"\")), WeeklyRetentionTimes = columnifexists(\"WeeklyRetentionTimes_s\", \"\"), WeeklyRetentionDaysOfTheWeek = columnifexists(\"WeeklyRetentionDaysOfTheWeek_s\", \"\"),\nMonthlyRetentionDuration = toint(columnifexists(\"MonthlyRetentionDuration_s\", \"\")), MonthlyRetentionTimes = columnifexists(\"MonthlyRetentionTimes_s\", \"\"), MonthlyRetentionFormat = columnifexists(\"MonthlyRetentionFormat_s\", \"\"), MonthlyRetentionDaysOfTheMonth = columnifexists(\"MonthlyRetentionDaysOfTheMonth_s\", \"\"), MonthlyRetentionDaysOfTheWeek = columnifexists(\"MonthlyRetentionDaysOfTheWeek_s\", \"\"), MonthlyRetentionWeeksOfTheMonth = columnifexists(\"MonthlyRetentionWeeksOfTheMonth_s\", \"\"),\nYearlyRetentionDuration = toint(columnifexists(\"YearlyRetentionDuration_s\", \"\")), YearlyRetentionTimes = columnifexists(\"YearlyRetentionTimes_s\", \"\"), YearlyRetentionMonthsOfTheYear = columnifexists(\"YearlyRetentionMonthsOfTheYear_s\", \"\"), YearlyRetentionFormat = columnifexists(\"YearlyRetentionFormat_s\", \"\"), YearlyRetentionDaysOfTheMonth = columnifexists(\"YearlyRetentionDaysOfTheMonth_s\", \"\"), YearlyRetentionDaysOfTheWeek = columnifexists(\"YearlyRetentionDaysOfTheWeek_s\", \"\"), YearlyRetentionWeeksOfTheMonth = columnifexists(\"YearlyRetentionWeeksOfTheMonth_s\", \"\"), ResourceId, TimeGenerated\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), ResourceId, TimeRangeEndDay = startofday(TimeGenerated)\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\nPolicyTable\n};\nlet PolicyHistoryWithExtendedPropsUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId, TimeRangeEndDay = startofday(TimeGenerated)\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n PolicyTable \n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\n// Business Logic\nlet ActivePolicyUnderAzureDiagnostics = ()\n{\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderAzureDiagnostics() | join kind = inner\n\t(BackupItemAssociationUnderAzureDiagnostics() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter\n\t| join kind= inner (\n\t PolicyWithExtendedPropsUnderAzureDiagnostics ) on ResourceId, PolicyUniqueId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated;\n\t};\nBIA_Policy\n};\nlet ActivePolicyUnderResourceSpecific = ()\n{\t\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderResourceSpecific() | join kind = inner\n\t(BackupItemAssociationUnderResourceSpecific() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter\n\t| join kind= inner (\n\t PolicyWithExtendedPropsUnderResourceSpecific ) on ResourceId, PolicyUniqueId\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated;\n\t};\nBIA_Policy\n};\nlet ActivePolicyHistoryUnderAzureDiagnostics = ()\n{\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderAzureDiagnostics() | join kind = inner\n\t(BackupItemAssociationHistoryUnderAzureDiagnostics() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeRangeEndDay\t\n\t| join kind= inner (\n\t PolicyHistoryWithExtendedPropsUnderAzureDiagnostics ) on ResourceId, PolicyUniqueId, TimeRangeEndDay\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n\t};\nBIA_Policy\n};\nlet ActivePolicyHistoryUnderResourceSpecific = ()\n{\t\t\n\tlet BIA_Policy = ()\n\t{\t\n\tBackupItemUnderResourceSpecific() | join kind = inner\n\t(BackupItemAssociationHistoryUnderResourceSpecific() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeRangeEndDay\n\t| join kind= inner (\n\t PolicyHistoryWithExtendedPropsUnderResourceSpecific ) on ResourceId, PolicyUniqueId, TimeRangeEndDay\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n\t};\nBIA_Policy\n};\nlet PolicyExtended_LatestTable = () {\nunion\n(ActivePolicyUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ActivePolicyUnderResourceSpecific())\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId};\nlet PolicyExtended_HistoryTable = () {\nunion\n(ActivePolicyHistoryUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ActivePolicyHistoryUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId, TimeRangeEndDay};\nlet FinalTable_V1Vault = () {union (PolicyExtended_LatestTable | where (_RangeEnd-_RangeStart == 1d)), (PolicyExtended_HistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project UniqueId = PolicyUniqueId, Name = PolicyName, TimeZone = PolicyTimeZone, Id = strcat(ResourceId, \"/backupPolicies/\", PolicyName), \nBackupFrequency = iff(isnotempty(BackupFrequency), pack(\"BackupFrequency\", BackupFrequency), dynamic(null)),\nDiffBackupFormat = iff(isnotempty(DiffBackupFormat), pack(\"DiffBackupFormat\", DiffBackupFormat), dynamic(null)),\nLogBackupFrequency = iff(isnotempty(LogBackupFrequency), pack(\"LogBackupFrequency\", LogBackupFrequency), dynamic(null)),\nDailyRetentionDuration = iff(isnotempty(DailyRetentionDuration), pack(\"DailyRetentionDuration\", DailyRetentionDuration), dynamic(null)),\nWeeklyRetentionDuration = iff(isnotempty(WeeklyRetentionDuration), pack(\"WeeklyRetentionDuration\", WeeklyRetentionDuration), dynamic(null)),\nMonthlyRetentionDuration = iff(isnotempty(MonthlyRetentionDuration), pack(\"MonthlyRetentionDuration\", MonthlyRetentionDuration), dynamic(null)),\nYearlyRetentionDuration = iff(isnotempty(YearlyRetentionDuration), pack(\"YearlyRetentionDuration\", YearlyRetentionDuration), dynamic(null)),\nDiffBackupRetentionDuration = iff(isnotempty(DiffBackupRetentionDuration), pack(\"DiffBackupRetentionDuration\", DiffBackupRetentionDuration), dynamic(null)),\nLogBackupRetentionDuration = iff(isnotempty(LogBackupRetentionDuration), pack(\"LogBackupRetentionDuration\", LogBackupRetentionDuration), dynamic(null)),\nBackupSolution, TimeGenerated, VaultUniqueId, VaultResourceId = ResourceId, VaultName, VaultTags, VaultLocation = AzureDataCenter, VaultSubscriptionId = SubscriptionId, VaultStore_StorageReplicationType = StorageReplicationType,VaultType = \"Microsoft.Recoveryservices/vaults\"\n| project UniqueId, Name, TimeZone, Id, BackupSolution, TimeGenerated, VaultUniqueId, VaultResourceId, VaultName, VaultTags, VaultLocation, VaultSubscriptionId, VaultStore_StorageReplicationType, VaultType, ExtendedProperties = bag_merge(BackupFrequency, DiffBackupFormat, LogBackupFrequency, DailyRetentionDuration, WeeklyRetentionDuration, MonthlyRetentionDuration, YearlyRetentionDuration, DiffBackupRetentionDuration, LogBackupRetentionDuration)\n};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-ReportFilterForHistoricalData": { + "runAfter": { + "Initialize_variable-UnionOfWorkspaces": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Trend", + "type": "string", + "value": "let _RangeStart = iff((datetime(@{parameters('startDate')}) == datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('startDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');\nlet _AggregationType = @{parameters('aggregationType')};" + } + ] + } + }, + "Initialize_variable-ReportFilterForLatestData": { + "runAfter": { + "Initialize_variable-ReportFilterForHistoricalData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Latest", + "type": "string", + "value": "let _RangeStart = iff(( datetime(@{parameters('endDate')})== datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('endDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');" + } + ] + } + }, + "Initialize_variable-UnionOfWorkspaces": { + "runAfter": { + "For_each": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "workspacesToQuery_Custom", + "type": "string", + "value": "@{concat(concat(substring(variables('AddonAzureBackupStorage_Incomplete'),0,sub(length(variables('AddonAzureBackupStorage_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupProtectedInstance_Incomplete'),0,sub(length(variables('AddonAzureBackupProtectedInstance_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupPolicy_Incomplete'),0,sub(length(variables('AddonAzureBackupPolicy_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupJobs_Incomplete'),0,sub(length(variables('AddonAzureBackupJobs_Incomplete')),1)),'};'),\r\nconcat(substring(variables('CoreAzureBackup_Incomplete'),0,sub(length(variables('CoreAzureBackup_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AzureDiagnostics_Incomplete'),0,sub(length(variables('AzureDiagnostics_Incomplete')),1)),'};'))}" + } + ] + } + }, + "Scope": { + "actions": { + "Create_CSV_table-Grid1": { + "runAfter": { + "Run_query_and_list_results-Grid3": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-Grid1')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-Grid1')?['value'])" + } + }, + "Create_CSV_table-Grid2": { + "runAfter": { + "Create_CSV_table-Grid1": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-Grid2')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-Grid2')?['value'])" + } + }, + "Create_CSV_table-Grid3": { + "runAfter": { + "Create_CSV_table-Grid2": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-Grid3')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-Grid3')?['value'])" + } + }, + "Run_query_and_list_results-Grid1": { + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = datetime(@{parameters('startDate')});\nlet RangeEnd = datetime(@{parameters('endDate')});\nlet BackupInstanceFunctionRedirect = (){\n@{variables('BackupInstanceFunction')}\n};\nlet BackupItemWithoutSuccessfulBackup = (){\n// calling LA System Function\n@{variables('JobFunction')}\n| where OperationCategory has \"Backup\"\n| where Status in (\"Completed\",\"CompletedWithWarnings\")\n| join kind= rightanti (\n// calling LA System Function\nBackupInstanceFunctionRedirect\n) on $left.BackupInstanceUniqueId == $right.UniqueId\n| project UniqueId, BackupInstanceFriendlyName = FriendlyName, DatasourceType, ProtectionInfo, VaultResourceId\n};\nlet BackupItemWithoutSuccessfulBackupAndItsRecoveryPointTable = ()\n{\nBackupItemWithoutSuccessfulBackup | join \n(\n// calling LA System Function\nBackupInstanceFunctionRedirect\n) on UniqueId\n| where not(LatestRecoveryPoint >= RangeStart and LatestRecoveryPoint <= RangeEnd)\n};\nBackupItemWithoutSuccessfulBackupAndItsRecoveryPointTable\n| sort by UniqueId asc \n| project BackupInstance=BackupInstanceFriendlyName, Id, Container=DatasourceSetFriendlyName, ResourceGroup=iff(DatasourceType==\"Azure Backup Agent\" or DatasourceType==\"Azure Backup Server\" or DatasourceType==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), Policy=PolicyName, LatestRecoveryPoint, Vault=VaultResourceId, AzureResource=DatasourceSetResourceId, DatasourceType", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-Grid2": { + "runAfter": { + "Run_query_and_list_results-Grid1": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let DailyRetentionParam = @{parameters('dailyRetentionParam')};\nlet WeeklyRetentionParam = @{parameters('weeklyRetentionParam')};\nlet MonthlyRetentionParam = @{parameters('monthlyRetentionParam')};\nlet YearlyRetentionParam = @{parameters('yearlyRetentionParam')};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n| extend ExtendedPropertiesJson = parse_json(ExtendedProperties)\n};\nlet BackupInstanceFunctionRedirect = ()\n{\n@{variables('BackupInstanceFunction')}\n};\nlet OutputTable = () {union isfuzzy = true \n// calling LA System Function\nBackupInstanceFunctionRedirect\n| join kind = leftouter (\n// calling LA System Function\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n};\nOutputTable\n// query to transform function output\n| extend DailyRPRetentionDuration = ExtendedPropertiesJson.DailyRetentionDuration, WeeklyRPRetentionDuration = ExtendedPropertiesJson.WeeklyRetentionDuration, MonthlyRPRetentionDuration = ExtendedPropertiesJson.MonthlyRetentionDuration, YearlyRPRetentionDuration = ExtendedPropertiesJson.YearlyRetentionDuration\n| where (DailyRPRetentionDuration > DailyRetentionParam) and (WeeklyRPRetentionDuration > WeeklyRetentionParam) and (MonthlyRPRetentionDuration > MonthlyRetentionParam) and (YearlyRPRetentionDuration > YearlyRetentionParam)\n| project Id, BackupInstance=FriendlyName, Container=DatasourceSetFriendlyName, ResourceGroup=iff(DatasourceType==\"Azure Backup Agent\" or DatasourceType==\"Azure Backup Server\" or DatasourceType==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), Policy=Name, DailyRPRetentionDuration, WeeklyRPRetentionDuration, MonthlyRPRetentionDuration, YearlyRPRetentionDuration, Vault=VaultResourceId, AzureResource=DatasourceSetResourceId, DatasourceType\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-Grid3": { + "runAfter": { + "Run_query_and_list_results-Grid2": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet LatestAzureWorkloadBackupItemDimensionTable = () {union isfuzzy = true \n// calling LA System Function\nBackupInstanceRedirect\n| where BackupSolution in~ (\"SQL in Azure VM Backup\",\"SAP HANA in Azure VM Backup\") \n| join kind = leftouter (\n// calling LA System Function\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Daily\"\n};\nLatestAzureWorkloadBackupItemDimensionTable\n| sort by UniqueId asc \n| project Id, BackupInstance=FriendlyName, Container=DatasourceSetFriendlyName, ResourceGroup=iff(BackupSolution==\"Azure Backup Agent\" or BackupSolution==\"Azure Backup Server\" or BackupSolution==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]\n), Policy=Name, Vault=VaultResourceId, AzureResource=DatasourceSetResourceId, DatasourceType", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azuremonitorlogs": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs", + "connectionName": "[resourceGroup().location]-azuremonitorlogs", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "office365": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-office365", + "connectionName": "[resourceGroup().location]-office365", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT658 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT658 new file mode 100644 index 0000000..14a81a1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT658 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-policies-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-policies-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898730, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-policies-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-policies-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT658", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT658", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "sku": "pergb2018", + "tags": { + "UsedByArmTemplateTest": "true" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "UsedByArmTemplateTest": "true" + }, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + } + ], + "outputs": { + "existingLogicAppWorkspace": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "existingWorkspaceResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingWorkspaceSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "existingWorkspacesToQuery": { + "type": "array", + "value": "[array(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT659 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT659 new file mode 100644 index 0000000..8a6ba72 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT659 @@ -0,0 +1,802 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-policies-report/azuredeploy.json", + "/demos/backup-policies-report/azuredeploy.parameters.json" + ], + "timestamp": 1642962898742, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-policies-report/azuredeploy.json", + "/demos/backup-policies-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT659", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT659", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "String", + "defaultValue": "Policies", + "metadata": { + "description": "Name of the Logic App to be created." + } + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region in which the Logic App should be created." + } + }, + "logicAppWorkspace": { + "type": "String", + "metadata": { + "description": "Name of the existing Log Analytics workspace that the Logic App should connect to. Note that the Logic App connects to a single workspace, but can query data across multiple workspaces. Use the 'Workspaces To Query' parameter to specify the list of workspaces that the Logic App should query data from." + }, + "value": "GET-PREREQ-existingLogicAppWorkspace" + }, + "workspaceSubscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceSubscriptionId" + }, + "workspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group name of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceResourceGroup" + }, + "workspacesToQuery": { + "type": "Array", + "metadata": { + "description": "List of workspaces that the Logic App should query data from. Should be a comma-separated array of values of the format ['/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName1}','/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName2}']" + }, + "value": "GET-PREREQ-existingWorkspacesToQuery" + }, + "emailFrequency": { + "type": "String", + "allowedValues": [ + "Day", + "Week", + "Month" + ], + "defaultValue": "Day", + "metadata": { + "description": "Frequency at whch emails should be received by the recipient(s). Select 'Day' for sending emails once a day, 'Week' for sending emails once a week, or 'Month' for sending emails once a month." + } + }, + "recipientEmailId": { + "type": "String", + "metadata": { + "description": "Email id of the recipient(s). To specify multiple email ids, use a semicolon-separated list." + }, + "value": "vijeya@microsoft.com" + }, + "startDate": { + "type": "String", + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "metadata": { + "description": "Start Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "endDate": { + "type": "String", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "End Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "vaultSubscriptionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of subscriptions in which Recovery Services vaults exist. Should be of the format '{subscriptionId1},{subscriptionId2},..'. Default value is '*', which enables the Logic App to query data across all backup subscriptions that are sending data to the specified Log Analytics workspaces." + } + }, + "vaultLocationListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of regions in which Recovery Services vaults exist. Should be of the format 'location1,location2,..' (eg. eastus,westus). Default value is '*', which enables the Logic App to query data for vaults across all Azure regions in the specified subscriptions." + } + }, + "vaultListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Recovery Services vaults. Should be of the format 'vaultname1,vaultname2,..'. Default value is '*', which enables the Logic App to query data for all vaults in the specified subscriptions and locations." + } + }, + "backupSolutionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Azure Backup solutions being used in your environment. Should be of the format 'solution1,solution2,..' (eg. Azure VM Backup,SQL in Azure VM Backup,DPM). Default value is '*', which enables the Logic App to query data across all Azure Backup solutions being used." + } + }, + "excludeLegacyEvent": { + "type": "Bool", + "defaultValue": true, + "metadata": { + "description": "Selecting 'true' enables the Logic App to avoid querying data that is sent to the legacy Azure Diagnostics table in the Log Analytics workspace(s). Excluding the legacy table improves query performance time." + } + }, + "aggregationType": { + "type": "String", + "allowedValues": [ + "Daily", + "Weekly", + "Monthly" + ], + "defaultValue": "Daily", + "metadata": { + "description": "Use to specify the granularity at which data is sampled in the case of trend graphs." + } + }, + "resourceTags": { + "type": "object", + "defaultValue": { + "UsedByBackupReports": "true" + }, + "metadata": { + "description": "Tags to be assigned to the Logic App and the API connection resources." + } + }, + "emailSubject": { + "type": "string", + "defaultValue": "Policies", + "metadata": { + "description": "Subject of the email to be received by the recipient(s)." + } + } + }, + "variables": { + "office365ConnectionName": "[resourceGroup().location]-office365", + "azureMonitorLogsConnectionName": "[resourceGroup().location]-azuremonitorlogs" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-office365", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + }, + "displayName": "office365" + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-azuremonitorlogs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "displayName": "azuremonitorlogs" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "Policies", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "dependsOn": [ + "Microsoft.Web/connections/[resourceGroup().location]-office365", + "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + }, + "dataToExport": { + "defaultValue": "Policies", + "type": "String" + }, + "aggregationType": { + "defaultValue": "\"Daily\"", + "type": "String" + }, + "backupSolutionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "excludeLegacyEvent": { + "defaultValue": true, + "type": "Bool" + }, + "endDate": { + "defaultValue": "[utcNow('u')]", + "type": "String" + }, + "startDate": { + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "type": "String" + }, + "vaultListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultLocationListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultSubscriptionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "workspacesToQuery": { + "defaultValue": "GET-PREREQ-existingWorkspacesToQuery", + "type": "Array" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Day", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "For_each": { + "foreach": "@parameters('workspacesToQuery')", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "AzureDiagnostics_Incomplete", + "value": " workspace('@{items('For_each')}').AzureDiagnostics," + } + }, + "Append_to_string_variable_2": { + "runAfter": { + "Append_to_string_variable": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "CoreAzureBackup_Incomplete", + "value": " workspace('@{items('For_each')}').CoreAzureBackup," + } + }, + "Append_to_string_variable_3": { + "runAfter": { + "Append_to_string_variable_2": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupJobs_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupJobs," + } + }, + "Append_to_string_variable_4": { + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupPolicy_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupPolicy," + } + }, + "Append_to_string_variable_5": { + "runAfter": { + "Append_to_string_variable_4": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupProtectedInstance," + } + }, + "Append_to_string_variable_6": { + "runAfter": { + "Append_to_string_variable_5": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupStorage_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupStorage," + } + } + }, + "runAfter": { + "Initialize_variable-AddonAzureBackupStorage": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "If_Scope_Failed": { + "actions": { + "Send_an_email_(V2)-FailureRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "

The Logic App Run did not execute to completion.
\n
Status: @{result('Scope')[0]['status']}

Learn more about how to troubleshoot the error

", + "Subject": "Policies", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Scope": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ] + }, + "else": { + "actions": { + "Send_an_email_(V2)-SuccessfulRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Attachments": [ + { + "ContentBytes": "@{body('Run_query_and_visualize_results-PolicyTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-PolicyTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-CloudStorageTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-CloudStorageTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-PoliciesList'))}", + "Name": "ActivePoliciesList.csv" + } + ], + "Body": "


\nPolicies Report
\n

\nEmail Contents
\n

\n1. Inline
a. Trend of active policy count over time
b. Trend of backup cloud storage (GB) consumed over time
2. Attachments
a. List of all backup policies with details on number of associated items, total cloud storage consumed (GB) etc.

Learn more about Backup Reports
\n
\n@{variables('visual')}
\n
\n
\n

\n
\n

", + "Subject": "Policies", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + } + }, + "expression": { + "or": [ + { + "equals": [ + "@result('Scope')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "TimedOut" + ] + } + ] + }, + "type": "If" + }, + "Initialize_variable-AddonAzureBackupJobs": { + "runAfter": { + "Initialize_variable-CoreAzureBackup": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupJobs_Incomplete", + "type": "string", + "value": "let AddonAzureBackupJobs = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupPolicy": { + "runAfter": { + "Initialize_variable-AddonAzureBackupJobs": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupPolicy_Incomplete", + "type": "string", + "value": "let AddonAzureBackupPolicy = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupProtectedInstance": { + "runAfter": { + "Initialize_variable-AddonAzureBackupPolicy": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "type": "string", + "value": "let AddonAzureBackupProtectedInstance = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupStorage": { + "runAfter": { + "Initialize_variable-AddonAzureBackupProtectedInstance": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupStorage_Incomplete", + "type": "string", + "value": "let AddonAzureBackupStorage = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AzureDiagnostics": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AzureDiagnostics_Incomplete", + "type": "string", + "value": "let AzureDiagnostics = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-BackupInstanceFunction": { + "runAfter": { + "Initialize_variable-ReportFilterForLatestData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n// DatasourceSetType\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet LatestBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| where BackupItemUniqueId != \"\"\n// To show as per as on 'AsonDay'\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true) \n};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet LatestBackupItemAssociationAndStorageConsumptionTable = ()\n{\nLatestBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n)on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {union (LatestBackupItemAssociationAndStorageConsumptionTable | where (_RangeEnd-_RangeStart == 1d)), (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-BackupInstanceTrendFunction": { + "runAfter": { + "Initialize_variable-BackupInstanceFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceTrendFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Trend')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-CoreAzureBackup": { + "runAfter": { + "Initialize_variable-AzureDiagnostics": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "CoreAzureBackup_Incomplete", + "type": "string", + "value": "let CoreAzureBackup = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-BackupInstanceTrendFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "visual", + "type": "string" + } + ] + } + }, + "Initialize_variable-ReportFilterForHistoricalData": { + "runAfter": { + "Initialize_variable-UnionOfWorkspaces": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Trend", + "type": "string", + "value": "let _RangeStart = iff((datetime(@{parameters('startDate')}) == datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('startDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');\nlet _AggregationType = @{parameters('aggregationType')};" + } + ] + } + }, + "Initialize_variable-ReportFilterForLatestData": { + "runAfter": { + "Initialize_variable-ReportFilterForHistoricalData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Latest", + "type": "string", + "value": "let _RangeStart = iff(( datetime(@{parameters('endDate')})== datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('endDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');" + } + ] + } + }, + "Initialize_variable-NoDataMessage": { + "inputs": { + "variables": [ + { + "name": "NoDataMessage", + "type": "array", + "value": [ + { + "Message": "No records found" + } + ] + } + ] + }, + "runAfter": { + "Initialize_variable-EmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Initialize_variable-UnionOfWorkspaces": { + "runAfter": { + "For_each": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "workspacesToQuery_Custom", + "type": "string", + "value": "@{concat(concat(substring(variables('AddonAzureBackupStorage_Incomplete'),0,sub(length(variables('AddonAzureBackupStorage_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupProtectedInstance_Incomplete'),0,sub(length(variables('AddonAzureBackupProtectedInstance_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupPolicy_Incomplete'),0,sub(length(variables('AddonAzureBackupPolicy_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupJobs_Incomplete'),0,sub(length(variables('AddonAzureBackupJobs_Incomplete')),1)),'};'),\r\nconcat(substring(variables('CoreAzureBackup_Incomplete'),0,sub(length(variables('CoreAzureBackup_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AzureDiagnostics_Incomplete'),0,sub(length(variables('AzureDiagnostics_Incomplete')),1)),'};'))}" + } + ] + } + }, + "Scope": { + "actions": { + "Create_CSV_table-PoliciesList": { + "runAfter": { + "Run_query_and_list_results-PoliciesList": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-PoliciesList')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-PoliciesList')?['value'])" + } + }, + "Run_query_and_list_results-PoliciesList": { + "runAfter": { + "Run_query_and_visualize_results-CloudStorageTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceFunction')}\n// query to transform function output\n| where PolicyUniqueId != \"\"\n| summarize sum(SourceSizeInMBs), sum(VaultStore_StorageConsumptionInMBs), count(UniqueId), StorageReplicationType = any(VaultStore_StorageReplicationType), PolicyName = any(PolicyName), Vault = any(VaultResourceId), PolicyId = any(PolicyId) by PolicyUniqueId, VaultResourceId\n| project PolicyId, PolicyName, BackupInstances=count_UniqueId, CloudStorage = sum_VaultStore_StorageConsumptionInMBs/1024, Vault, StorageReplicationType, VaultAndPolicyUniqueId = strcat(Vault,PolicyUniqueId)", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_visualize_results-CloudStorageTrend": { + "runAfter": { + "Run_query_and_visualize_results-PolicyTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceTrendFunction')}\n// query to transform function output\n| summarize StorageConsumedInGBs = sum(VaultStore_StorageConsumptionInMBs)/(1024) by TimeRangeEndDay = startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Run_query_and_visualize_results-PolicyTrend": { + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BackupInstanceTrendFunction')}\n// query to transform function output\n| where PolicyUniqueId != \"\"\n| summarize ActivePolicyCount = dcount(strcat(VaultResourceId, PolicyUniqueId), 4) by TimeRangeEndDay = startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Set_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-PoliciesList": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "visual", + "value": "
\n

Active Policy Trend

\n
\n\n
\n

Cloud Storage Trend

\n
\n\n
\n
" + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azuremonitorlogs": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs", + "connectionName": "[resourceGroup().location]-azuremonitorlogs", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "office365": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-office365", + "connectionName": "[resourceGroup().location]-office365", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT66 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT66 new file mode 100644 index 0000000..5486692 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT66 @@ -0,0 +1,426 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-chefserver.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884588, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-chefserver.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT66", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT66", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPAddressNameChefServer": { + "defaultValue": "", + "type": "string" + }, + "publicIPDomainNameLabelChefServer": { + "defaultValue": "", + "type": "string" + }, + "networkSecurityGroupNameChefServer": { + "defaultValue": "", + "type": "string" + }, + "networkInterfaceNameChefServer": { + "defaultValue": "", + "type": "string" + }, + "vmNameChefServer": { + "defaultValue": "", + "type": "string" + }, + "vmAdminUsernameChefServer": { + "defaultValue": "", + "type": "string" + }, + "vmAdminPasswordOrPublicKeyChefServer": { + "defaultValue": "", + "type": "SecureString" + }, + "storageAccountName": { + "defaultValue": "", + "type": "string" + }, + "vmStorageAccountContainerName": { + "defaultValue": "", + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "value": "westus" + }, + "network-api-version": { + "type": "string", + "defaultValue": "" + }, + "compute-api-version": { + "type": "string", + "defaultValue": "" + }, + "tagvalues": { + "type": "object", + "defaultValue": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "publisherChefServer": { + "type": "string", + "defaultValue": "" + }, + "offerChoosedChefServer": { + "type": "object", + "defaultValue": "" + }, + "subnet2Ref": { + "type": "string", + "defaultValue": "" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "" + }, + "chefUserName": { + "type": "string", + "defaultValue": "" + }, + "chefUserFirstName": { + "type": "string", + "defaultValue": "" + }, + "chefUserLastName": { + "type": "string", + "defaultValue": "" + }, + "chefUserEmail": { + "type": "string", + "defaultValue": "" + }, + "chefUserPassword": { + "type": "securestring", + "defaultValue": "" + }, + "chefOrgShortName": { + "type": "string", + "defaultValue": "" + }, + "chefOrgFullName": { + "type": "string", + "defaultValue": "" + }, + "chefServerScriptUrl": { + "type": "string", + "defaultValue": "" + }, + "publicIPDomainNameLabelOrchServer": { + "type": "string", + "defaultValue": "" + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "authenticationType": { + "type": "string" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": { + "singleQuote": "'", + "publicIPDomainNameLabelOrchServer": "http://parameters('publicIPDomainNameLabelOrchServer').westus.cloudapp.azure.com:33001/key", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/ parameters('vmAdminUsernameChefServer')/.ssh/authorized_keys", + "keyData": "" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "", + "apiVersion": "2017-03-30", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "plan": { + "name": null, + "product": null, + "publisher": "" + }, + "properties": { + "hardwareProfile": { + "vmSize": null + }, + "storageProfile": { + "imageReference": { + "publisher": "", + "offer": null, + "sku": null, + "version": "latest" + }, + "osDisk": { + "name": "parameters('vmNameChefServer')-osDisk", + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "dataDisks": [] + }, + "osProfile": { + "computerName": "", + "adminUsername": "", + "secrets": [], + "adminPassword": "", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ parameters('networkInterfaceNameChefServer')" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ parameters('networkInterfaceNameChefServer')" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "parameters('vmNameChefServer')/chefServerSetup", + "apiVersion": "2015-05-01-preview", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ parameters('vmNameChefServer')" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "" + ], + "commandToExecute": "bash chefserver.sh parameters('chefUserName') parameters('chefUserFirstName') parameters('chefUserLastName') parameters('chefUserEmail') ' parameters('chefUserPassword')' parameters('chefOrgShortName') 'parameters('chefOrgFullName')' http://parameters('publicIPDomainNameLabelOrchServer').westus.cloudapp.azure.com:33001/key" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "", + "apiVersion": "2017-06-01", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ parameters('publicIPAddressNameChefServer')" + }, + "subnet": { + "id": "" + } + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ parameters('networkSecurityGroupNameChefServer')" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/ parameters('publicIPAddressNameChefServer')", + "Microsoft.Network/networkSecurityGroups/ parameters('networkSecurityGroupNameChefServer')" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "", + "apiVersion": "2017-06-01", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1010, + "direction": "Inbound" + } + }, + { + "name": "http", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1020, + "direction": "Inbound" + } + }, + { + "name": "https", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1030, + "direction": "Inbound" + } + }, + { + "name": "https8443", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1040, + "direction": "Inbound" + } + } + ] + }, + "dependsOn": [] + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "", + "apiVersion": "2015-06-15", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "properties": { + "publicIPAllocationMethod": "", + "dnsSettings": { + "domainNameLabel": "" + }, + "idleTimeoutInMinutes": 4 + }, + "dependsOn": [] + } + ], + "outputs": { + "chefserverUri": { + "type": "string", + "value": "[concat('https://',reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressNameChefServer'))).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT660 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT660 new file mode 100644 index 0000000..b28cd20 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT660 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-policyadherence-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-policyadherence-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898768, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-policyadherence-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-policyadherence-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT660", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT660", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "sku": "pergb2018", + "tags": { + "UsedByArmTemplateTest": "true" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "UsedByArmTemplateTest": "true" + }, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + } + ], + "outputs": { + "existingLogicAppWorkspace": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "existingWorkspaceResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingWorkspaceSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "existingWorkspacesToQuery": { + "type": "array", + "value": "[array(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT661 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT661 new file mode 100644 index 0000000..dfce169 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT661 @@ -0,0 +1,869 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-policyadherence-report/azuredeploy.json", + "/demos/backup-policyadherence-report/azuredeploy.parameters.json" + ], + "timestamp": 1642962898780, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-policyadherence-report/azuredeploy.json", + "/demos/backup-policyadherence-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT661", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT661", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "String", + "defaultValue": "PolicyAdherence", + "metadata": { + "description": "Name of the Logic App to be created." + } + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region in which the Logic App should be created." + } + }, + "logicAppWorkspace": { + "type": "String", + "metadata": { + "description": "Name of the existing Log Analytics workspace that the Logic App should connect to. Note that the Logic App connects to a single workspace, but can query data across multiple workspaces. Use the 'Workspaces To Query' parameter to specify the list of workspaces that the Logic App should query data from." + }, + "value": "GET-PREREQ-existingLogicAppWorkspace" + }, + "workspaceSubscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceSubscriptionId" + }, + "workspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group name of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceResourceGroup" + }, + "workspacesToQuery": { + "type": "Array", + "metadata": { + "description": "List of workspaces that the Logic App should query data from. Should be a comma-separated array of values of the format ['/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName1}','/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName2}']" + }, + "value": "GET-PREREQ-existingWorkspacesToQuery" + }, + "emailFrequency": { + "type": "String", + "allowedValues": [ + "Day", + "Week", + "Month" + ], + "defaultValue": "Day", + "metadata": { + "description": "Frequency at whch emails should be received by the recipient(s). Select 'Day' for sending emails once a day, 'Week' for sending emails once a week, or 'Month' for sending emails once a month." + } + }, + "recipientEmailId": { + "type": "String", + "metadata": { + "description": "Email id of the recipient(s). To specify multiple email ids, use a semicolon-separated list." + }, + "value": "vijeya@microsoft.com" + }, + "startDate": { + "type": "String", + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "metadata": { + "description": "Start Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "endDate": { + "type": "String", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "End Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "vaultSubscriptionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of subscriptions in which Recovery Services vaults exist. Should be of the format '{subscriptionId1},{subscriptionId2},..'. Default value is '*', which enables the Logic App to query data across all backup subscriptions that are sending data to the specified Log Analytics workspaces." + } + }, + "vaultLocationListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of regions in which Recovery Services vaults exist. Should be of the format 'location1,location2,..' (eg. eastus,westus). Default value is '*', which enables the Logic App to query data for vaults across all Azure regions in the specified subscriptions." + } + }, + "vaultListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Recovery Services vaults. Should be of the format 'vaultname1,vaultname2,..'. Default value is '*', which enables the Logic App to query data for all vaults in the specified subscriptions and locations." + } + }, + "backupSolutionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Azure Backup solutions being used in your environment. Should be of the format 'solution1,solution2,..' (eg. Azure VM Backup,SQL in Azure VM Backup,DPM). Default value is '*', which enables the Logic App to query data across all Azure Backup solutions being used." + } + }, + "excludeLegacyEvent": { + "type": "Bool", + "defaultValue": true, + "metadata": { + "description": "Selecting 'true' enables the Logic App to avoid querying data that is sent to the legacy Azure Diagnostics table in the Log Analytics workspace(s). Excluding the legacy table improves query performance time." + } + }, + "aggregationType": { + "type": "String", + "allowedValues": [ + "Daily", + "Weekly", + "Monthly" + ], + "defaultValue": "Daily", + "metadata": { + "description": "Use to specify the granularity at which data is sampled in the case of trend graphs." + } + }, + "resourceTags": { + "type": "object", + "defaultValue": { + "UsedByBackupReports": "true" + }, + "metadata": { + "description": "Tags to be assigned to the Logic App and the API connection resources." + } + }, + "emailSubject": { + "type": "string", + "defaultValue": "Policy Adherence", + "metadata": { + "description": "Subject of the email to be received by the recipient(s)." + } + } + }, + "variables": { + "office365ConnectionName": "[resourceGroup().location]-office365", + "azureMonitorLogsConnectionName": "[resourceGroup().location]-azuremonitorlogs" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-office365", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + }, + "displayName": "office365" + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-azuremonitorlogs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "displayName": "azuremonitorlogs" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "PolicyAdherence", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "dependsOn": [ + "Microsoft.Web/connections/[resourceGroup().location]-office365", + "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + }, + "dataToExport": { + "defaultValue": "Policy Adherence", + "type": "String" + }, + "aggregationType": { + "defaultValue": "\"Daily\"", + "type": "String" + }, + "backupSolutionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "excludeLegacyEvent": { + "defaultValue": true, + "type": "Bool" + }, + "endDate": { + "defaultValue": "[utcNow('u')]", + "type": "String" + }, + "startDate": { + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "type": "String" + }, + "vaultListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultLocationListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultSubscriptionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "workspacesToQuery": { + "defaultValue": "GET-PREREQ-existingWorkspacesToQuery", + "type": "Array" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Day", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "For_each": { + "foreach": "@parameters('workspacesToQuery')", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "AzureDiagnostics_Incomplete", + "value": " workspace('@{items('For_each')}').AzureDiagnostics," + } + }, + "Append_to_string_variable_2": { + "runAfter": { + "Append_to_string_variable": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "CoreAzureBackup_Incomplete", + "value": " workspace('@{items('For_each')}').CoreAzureBackup," + } + }, + "Append_to_string_variable_3": { + "runAfter": { + "Append_to_string_variable_2": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupJobs_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupJobs," + } + }, + "Append_to_string_variable_4": { + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupPolicy_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupPolicy," + } + }, + "Append_to_string_variable_5": { + "runAfter": { + "Append_to_string_variable_4": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupProtectedInstance," + } + }, + "Append_to_string_variable_6": { + "runAfter": { + "Append_to_string_variable_5": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupStorage_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupStorage," + } + } + }, + "runAfter": { + "Initialize_variable-AddonAzureBackupStorage": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "If_Scope_Failed": { + "actions": { + "Send_an_email_(V2)-FailureRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "

The Logic App Run did not execute to completion.
\n
Status: @{result('Scope')[0]['status']}

Learn more about how to troubleshoot the error

", + "Subject": "Policy Adherence", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Scope": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ] + }, + "else": { + "actions": { + "Send_an_email_(V2)-SuccessfulRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Attachments": [ + { + "ContentBytes": "@{base64(body('Create_CSV_table-ByBackupInstance-ItemsBackedupDaily'))}", + "Name": "PolicyAdherenceByBackupInstance-ItemsBackedupDaily.csv" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-ByBackupInstance-ItemsBackedupWeekly'))}", + "Name": "PolicyAdherenceByBackupInstance-ItemsBackedupWeekly.csv" + } + ], + "Body": "


\nPolicy Adherence Report
\n

\nEmail Contents
\n

\n1. Inline
a. Policy Adherence by time period for items backed up daily
b. Policy adherence by time period for items backed up weekly
\n
\n2. Attachments
a. Policy adherence by backup instance for items backed up daily
b. Policy adherence by backup instance for items backed up weekly

Learn more about Backup Reports
\n
\n@{variables('visual')}
\n
\n
\n

\n
\n

", + "Subject": "Policy Adherence", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + } + }, + "expression": { + "or": [ + { + "equals": [ + "@result('Scope')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "TimedOut" + ] + } + ] + }, + "type": "If" + }, + "Initialize_variable-AddonAzureBackupJobs": { + "runAfter": { + "Initialize_variable-CoreAzureBackup": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupJobs_Incomplete", + "type": "string", + "value": "let AddonAzureBackupJobs = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupPolicy": { + "runAfter": { + "Initialize_variable-AddonAzureBackupJobs": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupPolicy_Incomplete", + "type": "string", + "value": "let AddonAzureBackupPolicy = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupProtectedInstance": { + "runAfter": { + "Initialize_variable-AddonAzureBackupPolicy": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "type": "string", + "value": "let AddonAzureBackupProtectedInstance = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupStorage": { + "runAfter": { + "Initialize_variable-AddonAzureBackupProtectedInstance": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupStorage_Incomplete", + "type": "string", + "value": "let AddonAzureBackupStorage = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AzureDiagnostics": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AzureDiagnostics_Incomplete", + "type": "string", + "value": "let AzureDiagnostics = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-BackupInstanceFunction": { + "runAfter": { + "Initialize_variable-JobFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n// DatasourceSetType\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet LatestBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| where BackupItemUniqueId != \"\"\n// To show as per as on 'AsonDay'\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true) \n};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet LatestBackupItemAssociationAndStorageConsumptionTable = ()\n{\nLatestBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n)on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {union (LatestBackupItemAssociationAndStorageConsumptionTable | where (_RangeEnd-_RangeStart == 1d)), (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-BackupInstanceTrendFunction": { + "runAfter": { + "Initialize_variable-BackupInstanceFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceTrendFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Trend')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-CoreAzureBackup": { + "runAfter": { + "Initialize_variable-AzureDiagnostics": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "CoreAzureBackup_Incomplete", + "type": "string", + "value": "let CoreAzureBackup = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-PolicyFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "visual", + "type": "string" + } + ] + } + }, + "Initialize_variable-NoDataMessage": { + "inputs": { + "variables": [ + { + "name": "NoDataMessage", + "type": "array", + "value": [ + { + "Message": "No records found" + } + ] + } + ] + }, + "runAfter": { + "Initialize_variable-EmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Initialize_variable-JobFunction": { + "runAfter": { + "Initialize_variable-ReportFilterForHistoricalData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "JobFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n// Report filters\n@{variables('ReportFilter_Trend')}\nlet _ProtectionStateList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _JobOperationList = \"*\";\nlet _JobStatusList = \"*\";\nlet _JobFailureCodeList = \"*\";\nlet _ExcludeLog = true;\n// Other Vars\nlet ExtRangeStart = _RangeStart - 2d;\nlet ExtRangeEnd = _RangeEnd + 2d;\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet JobUnderAzureDiagnostics = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AzureDiagnostics \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"Job\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n// Exclude Log Jobs and InProgress Jobs\n| project JobOperation = columnifexists(\"JobOperation_s\", \"\") , JobOperationSubType = columnifexists(\"JobOperationSubType_s\", \"\"), JobUniqueIdGuid = columnifexists(\"JobUniqueId_g\", \"\") , JobUniqueIdStr = columnifexists(\"JobUniqueId_s\", \"\"),\nProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), AdHocOrScheduledJob = columnifexists(\"AdHocOrScheduledJob_s\",\"\"), RecoveryJobDestination = columnifexists(\"RecoveryJobDestination_s\",\"\"),\nRecoveryJobRPDateTime = todatetime(columnifexists(\"RecoveryJobRPDateTime_s\",\"\")), RecoveryJobRPLocation = columnifexists(\"RecoveryJobRPLocation_s\",\"\"), RecoveryLocationType = columnifexists(\"RecoveryLocationType_s\",\"\"),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\",\"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\",\"\"),\nJobStatus = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode = columnifexists(\"JobFailureCode_s\",\"\"), JobStartDateTime = todatetime(columnifexists(\"JobStartDateTime_s\",\"\")), JobDurationInSecs = todouble(columnifexists(\"JobDurationInSecs_s\", \"\")),\nDataTransferredInMB = todouble(columnifexists(\"DataTransferredInMB_s\",\"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\",\"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog) \n| extend JobUniqueId = iff(JobUniqueIdGuid == \"\", JobUniqueIdStr, JobUniqueIdGuid) \n| project-away JobUniqueIdGuid, JobUniqueIdStr\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId ;\nJobTable\n};\nlet JobUnderResourceSpecific = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AddonAzureBackupJobs \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Job\" \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog)\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId;\nJobTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet LatestBackupItemWithProtectedContainerTable = () \n{\nTotalBackupItemDimensionTable\n| join (union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics()| where _ExcludeLegacyEvent == false),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId) on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet JobFinalTable = (){\n union isfuzzy = true \n(JobUnderAzureDiagnostics(true)| where _ExcludeLegacyEvent == false),\n(JobUnderResourceSpecific(true))\n| project JobStatus, JobUniqueId, JobOperation, JobFailureCode, JobOperationSubType, JobStartDateTime, DataTransferredInMB, AdHocOrScheduledJob, JobDurationInSecs, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId, ProtectedContainerUniqueId, TimeGenerated \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId\n| where JobOperation in~ (_JobOperationList) or '*' in (_JobOperationList)\n| where JobStatus in~ (_JobStatusList) or '*' in (_JobStatusList)\n| where JobFailureCode in~ (_JobFailureCodeList) or '*' in (_JobFailureCodeList)\n| join kind= inner (LatestBackupItemWithProtectedContainerTable) on BackupItemUniqueId\n| project JobUniqueId, JobOperation, JobStatus, JobFailureCode, JobOperationSubType, JobStartDateTime, JobDurationInSecs, DataTransferredInMB, AdHocOrScheduledJob, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId = BackupItemUniqueId1, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, StorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(JobFinalTable)))\n| project UniqueId = JobUniqueId, OperationCategory = JobOperation, Operation = JobOperationSubType, Status = JobStatus, ErrorTitle = JobFailureCode, StartTime = JobStartDateTime, DurationInSecs = JobDurationInSecs, DataTransferredInMBs = DataTransferredInMB, RestoreJobRPDateTime = RecoveryJobRPDateTime, RestoreJobRPLocation = RecoveryJobRPLocation, BackupInstanceUniqueId = BackupItemUniqueId, BackupInstanceId, BackupInstanceFriendlyName = BackupItemFriendlyName, DatasourceResourceId, DatasourceFriendlyName = BackupItemFriendlyName, DatasourceType, BackupSolution, DatasourceSetResourceId, DatasourceSetType, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-PolicyFunction": { + "runAfter": { + "Initialize_variable-BackupInstanceTrendFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "PolicyFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')} \n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet PolicyWithExtendedPropsUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), PolicyTimeZone = columnifexists(\"PolicyTimeZone_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), DiffBackupFormat = columnifexists(\"DiffBackupFormat_s\", \"\"),\nDiffBackupDaysofTheWeek = columnifexists(\"DiffBackupDaysofTheWeek_s\", \"\"), DiffBackupRetentionDuration = toint(columnifexists(\"DiffBackupRetentionDuration_s\", \"\")), DiffBackupTime = columnifexists(\"DiffBackupTime_s\", \"\"), LogBackupFrequency = toint(columnifexists(\"LogBackupFrequency_s\", \"\")), LogBackupRetentionDuration = toint(columnifexists(\"LogBackupRetentionDuration_s\", \"\")),\nBackupFrequency = columnifexists(\"BackupFrequency_s\", \"\"), BackupTimes = columnifexists(\"BackupTimes_s\", \"\"), BackupDaysOfTheWeek = columnifexists(\"BackupDaysOfTheWeek_s\", \"\"), RetentionType = columnifexists(\"RetentionType_s\", \"\"), RetentionDuration = toint(columnifexists(\"RetentionDuration_s\", \"\")),\nDailyRetentionDuration = toint(columnifexists(\"DailyRetentionDuration_s\", \"\")), DailyRetentionTimes = columnifexists(\"DailyRetentionTimes_s\", \"\"), \nWeeklyRetentionDuration = toint(columnifexists(\"WeeklyRetentionDuration_s\", \"\")), WeeklyRetentionTimes = columnifexists(\"WeeklyRetentionTimes_s\", \"\"), WeeklyRetentionDaysOfTheWeek = columnifexists(\"WeeklyRetentionDaysOfTheWeek_s\", \"\"),\nMonthlyRetentionDuration = toint(columnifexists(\"MonthlyRetentionDuration_s\", \"\")), MonthlyRetentionTimes = columnifexists(\"MonthlyRetentionTimes_s\", \"\"), MonthlyRetentionFormat = columnifexists(\"MonthlyRetentionFormat_s\", \"\"), MonthlyRetentionDaysOfTheMonth = columnifexists(\"MonthlyRetentionDaysOfTheMonth_s\", \"\"), MonthlyRetentionDaysOfTheWeek = columnifexists(\"MonthlyRetentionDaysOfTheWeek_s\", \"\"), MonthlyRetentionWeeksOfTheMonth = columnifexists(\"MonthlyRetentionWeeksOfTheMonth_s\", \"\"),\nYearlyRetentionDuration = toint(columnifexists(\"YearlyRetentionDuration_s\", \"\")), YearlyRetentionTimes = columnifexists(\"YearlyRetentionTimes_s\", \"\"), YearlyRetentionMonthsOfTheYear = columnifexists(\"YearlyRetentionMonthsOfTheYear_s\", \"\"), YearlyRetentionFormat = columnifexists(\"YearlyRetentionFormat_s\", \"\"), YearlyRetentionDaysOfTheMonth = columnifexists(\"YearlyRetentionDaysOfTheMonth_s\", \"\"), YearlyRetentionDaysOfTheWeek = columnifexists(\"YearlyRetentionDaysOfTheWeek_s\", \"\"), YearlyRetentionWeeksOfTheMonth = columnifexists(\"YearlyRetentionWeeksOfTheMonth_s\", \"\"), ResourceId, TimeGenerated\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), ResourceId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated;\n PolicyTable \n};\nlet PolicyWithExtendedPropsUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where OperationName == \"Policy\" \n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated;\n PolicyTable \n};\nlet PolicyHistoryWithExtendedPropsUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), PolicyTimeZone = columnifexists(\"PolicyTimeZone_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), DiffBackupFormat = columnifexists(\"DiffBackupFormat_s\", \"\"),\nDiffBackupDaysofTheWeek = columnifexists(\"DiffBackupDaysofTheWeek_s\", \"\"), DiffBackupRetentionDuration = toint(columnifexists(\"DiffBackupRetentionDuration_s\", \"\")), DiffBackupTime = columnifexists(\"DiffBackupTime_s\", \"\"), LogBackupFrequency = toint(columnifexists(\"LogBackupFrequency_s\", \"\")), LogBackupRetentionDuration = toint(columnifexists(\"LogBackupRetentionDuration_s\", \"\")),\nBackupFrequency = columnifexists(\"BackupFrequency_s\", \"\"), BackupTimes = columnifexists(\"BackupTimes_s\", \"\"), BackupDaysOfTheWeek = columnifexists(\"BackupDaysOfTheWeek_s\", \"\"), RetentionType = columnifexists(\"RetentionType_s\", \"\"), RetentionDuration = toint(columnifexists(\"RetentionDuration_s\", \"\")),\nDailyRetentionDuration = toint(columnifexists(\"DailyRetentionDuration_s\", \"\")), DailyRetentionTimes = columnifexists(\"DailyRetentionTimes_s\", \"\"), \nWeeklyRetentionDuration = toint(columnifexists(\"WeeklyRetentionDuration_s\", \"\")), WeeklyRetentionTimes = columnifexists(\"WeeklyRetentionTimes_s\", \"\"), WeeklyRetentionDaysOfTheWeek = columnifexists(\"WeeklyRetentionDaysOfTheWeek_s\", \"\"),\nMonthlyRetentionDuration = toint(columnifexists(\"MonthlyRetentionDuration_s\", \"\")), MonthlyRetentionTimes = columnifexists(\"MonthlyRetentionTimes_s\", \"\"), MonthlyRetentionFormat = columnifexists(\"MonthlyRetentionFormat_s\", \"\"), MonthlyRetentionDaysOfTheMonth = columnifexists(\"MonthlyRetentionDaysOfTheMonth_s\", \"\"), MonthlyRetentionDaysOfTheWeek = columnifexists(\"MonthlyRetentionDaysOfTheWeek_s\", \"\"), MonthlyRetentionWeeksOfTheMonth = columnifexists(\"MonthlyRetentionWeeksOfTheMonth_s\", \"\"),\nYearlyRetentionDuration = toint(columnifexists(\"YearlyRetentionDuration_s\", \"\")), YearlyRetentionTimes = columnifexists(\"YearlyRetentionTimes_s\", \"\"), YearlyRetentionMonthsOfTheYear = columnifexists(\"YearlyRetentionMonthsOfTheYear_s\", \"\"), YearlyRetentionFormat = columnifexists(\"YearlyRetentionFormat_s\", \"\"), YearlyRetentionDaysOfTheMonth = columnifexists(\"YearlyRetentionDaysOfTheMonth_s\", \"\"), YearlyRetentionDaysOfTheWeek = columnifexists(\"YearlyRetentionDaysOfTheWeek_s\", \"\"), YearlyRetentionWeeksOfTheMonth = columnifexists(\"YearlyRetentionWeeksOfTheMonth_s\", \"\"), ResourceId, TimeGenerated\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), ResourceId, TimeRangeEndDay = startofday(TimeGenerated)\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\nPolicyTable\n};\nlet PolicyHistoryWithExtendedPropsUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId, TimeRangeEndDay = startofday(TimeGenerated)\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n PolicyTable \n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\n// Business Logic\nlet ActivePolicyUnderAzureDiagnostics = ()\n{\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderAzureDiagnostics() | join kind = inner\n\t(BackupItemAssociationUnderAzureDiagnostics() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter\n\t| join kind= inner (\n\t PolicyWithExtendedPropsUnderAzureDiagnostics ) on ResourceId, PolicyUniqueId\n| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated;\n\t};\nBIA_Policy\n};\nlet ActivePolicyUnderResourceSpecific = ()\n{\t\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderResourceSpecific() | join kind = inner\n\t(BackupItemAssociationUnderResourceSpecific() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter\n\t| join kind= inner (\n\t PolicyWithExtendedPropsUnderResourceSpecific ) on ResourceId, PolicyUniqueId\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated;\n\t};\nBIA_Policy\n};\nlet ActivePolicyHistoryUnderAzureDiagnostics = ()\n{\t\n\tlet BIA_Policy = ()\n\t{\n\tBackupItemUnderAzureDiagnostics() | join kind = inner\n\t(BackupItemAssociationHistoryUnderAzureDiagnostics() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeRangeEndDay\t\n\t| join kind= inner (\n\t PolicyHistoryWithExtendedPropsUnderAzureDiagnostics ) on ResourceId, PolicyUniqueId, TimeRangeEndDay\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n\t};\nBIA_Policy\n};\nlet ActivePolicyHistoryUnderResourceSpecific = ()\n{\t\t\n\tlet BIA_Policy = ()\n\t{\t\n\tBackupItemUnderResourceSpecific() | join kind = inner\n\t(BackupItemAssociationHistoryUnderResourceSpecific() ) on BackupItemUniqueId\n\t| project BackupItemUniqueId, BackupItemType, BackupSolution, ResourceId, PolicyUniqueId, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeRangeEndDay\n\t| join kind= inner (\n\t PolicyHistoryWithExtendedPropsUnderResourceSpecific ) on ResourceId, PolicyUniqueId, TimeRangeEndDay\n\t| project PolicyUniqueId, PolicyName, PolicyTimeZone, DiffBackupFormat, DiffBackupDaysofTheWeek, DiffBackupRetentionDuration,\nDiffBackupTime, LogBackupFrequency, LogBackupRetentionDuration, BackupFrequency, BackupTimes, BackupDaysOfTheWeek, RetentionType, RetentionDuration, DailyRetentionDuration, DailyRetentionTimes, WeeklyRetentionDuration, WeeklyRetentionTimes, WeeklyRetentionDaysOfTheWeek, MonthlyRetentionDuration, MonthlyRetentionTimes, MonthlyRetentionFormat, MonthlyRetentionDaysOfTheMonth, MonthlyRetentionDaysOfTheWeek, MonthlyRetentionWeeksOfTheMonth, YearlyRetentionDuration, YearlyRetentionTimes, YearlyRetentionMonthsOfTheYear, YearlyRetentionFormat, YearlyRetentionDaysOfTheMonth, YearlyRetentionDaysOfTheWeek, YearlyRetentionWeeksOfTheMonth, StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, BackupItemUniqueId, BackupItemType, BackupSolution, BackupManagementType, ResourceId, TimeGenerated, TimeRangeEndDay;\n\t};\nBIA_Policy\n};\nlet PolicyExtended_LatestTable = () {\nunion\n(ActivePolicyUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ActivePolicyUnderResourceSpecific())\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId};\nlet PolicyExtended_HistoryTable = () {\nunion\n(ActivePolicyHistoryUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ActivePolicyHistoryUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId, TimeRangeEndDay};\nlet FinalTable_V1Vault = () {union (PolicyExtended_LatestTable | where (_RangeEnd-_RangeStart == 1d)), (PolicyExtended_HistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project UniqueId = PolicyUniqueId, Name = PolicyName, TimeZone = PolicyTimeZone, Id = strcat(ResourceId, \"/backupPolicies/\", PolicyName), \nBackupFrequency = iff(isnotempty(BackupFrequency), pack(\"BackupFrequency\", BackupFrequency), dynamic(null)),\nDiffBackupFormat = iff(isnotempty(DiffBackupFormat), pack(\"DiffBackupFormat\", DiffBackupFormat), dynamic(null)),\nLogBackupFrequency = iff(isnotempty(LogBackupFrequency), pack(\"LogBackupFrequency\", LogBackupFrequency), dynamic(null)),\nDailyRetentionDuration = iff(isnotempty(DailyRetentionDuration), pack(\"DailyRetentionDuration\", DailyRetentionDuration), dynamic(null)),\nWeeklyRetentionDuration = iff(isnotempty(WeeklyRetentionDuration), pack(\"WeeklyRetentionDuration\", WeeklyRetentionDuration), dynamic(null)),\nMonthlyRetentionDuration = iff(isnotempty(MonthlyRetentionDuration), pack(\"MonthlyRetentionDuration\", MonthlyRetentionDuration), dynamic(null)),\nYearlyRetentionDuration = iff(isnotempty(YearlyRetentionDuration), pack(\"YearlyRetentionDuration\", YearlyRetentionDuration), dynamic(null)),\nDiffBackupRetentionDuration = iff(isnotempty(DiffBackupRetentionDuration), pack(\"DiffBackupRetentionDuration\", DiffBackupRetentionDuration), dynamic(null)),\nLogBackupRetentionDuration = iff(isnotempty(LogBackupRetentionDuration), pack(\"LogBackupRetentionDuration\", LogBackupRetentionDuration), dynamic(null)),\nBackupSolution, TimeGenerated, VaultUniqueId, VaultResourceId = ResourceId, VaultName, VaultTags, VaultLocation = AzureDataCenter, VaultSubscriptionId = SubscriptionId, VaultStore_StorageReplicationType = StorageReplicationType,VaultType = \"Microsoft.Recoveryservices/vaults\"\n| project UniqueId, Name, TimeZone, Id, BackupSolution, TimeGenerated, VaultUniqueId, VaultResourceId, VaultName, VaultTags, VaultLocation, VaultSubscriptionId, VaultStore_StorageReplicationType, VaultType, ExtendedProperties = bag_merge(BackupFrequency, DiffBackupFormat, LogBackupFrequency, DailyRetentionDuration, WeeklyRetentionDuration, MonthlyRetentionDuration, YearlyRetentionDuration, DiffBackupRetentionDuration, LogBackupRetentionDuration)\n};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-ReportFilterForHistoricalData": { + "runAfter": { + "Initialize_variable-ReportFilterForLatestData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Trend", + "type": "string", + "value": "let _RangeStart = iff((datetime(@{parameters('startDate')}) == datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('startDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');\nlet _AggregationType = @{parameters('aggregationType')};" + } + ] + } + }, + "Initialize_variable-ReportFilterForLatestData": { + "runAfter": { + "Initialize_variable-UnionOfWorkspaces": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Latest", + "type": "string", + "value": "let _RangeStart = iff(( datetime(@{parameters('endDate')})== datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('endDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');" + } + ] + } + }, + "Initialize_variable-UnionOfWorkspaces": { + "runAfter": { + "For_each": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "workspacesToQuery_Custom", + "type": "string", + "value": "@{concat(concat(substring(variables('AddonAzureBackupStorage_Incomplete'),0,sub(length(variables('AddonAzureBackupStorage_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupProtectedInstance_Incomplete'),0,sub(length(variables('AddonAzureBackupProtectedInstance_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupPolicy_Incomplete'),0,sub(length(variables('AddonAzureBackupPolicy_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupJobs_Incomplete'),0,sub(length(variables('AddonAzureBackupJobs_Incomplete')),1)),'};'),\r\nconcat(substring(variables('CoreAzureBackup_Incomplete'),0,sub(length(variables('CoreAzureBackup_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AzureDiagnostics_Incomplete'),0,sub(length(variables('AzureDiagnostics_Incomplete')),1)),'};'))}" + } + ] + } + }, + "Scope": { + "actions": { + "Create_CSV_table-ByBackupInstance-ItemsBackedupDaily": { + "runAfter": { + "Run_query_and_list_results-ByBackupInstance-ItemsBackedupWeekly": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-ByBackupInstance-ItemsBackedupDaily')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-ByBackupInstance-ItemsBackedupDaily')?['value'])" + } + }, + "Create_CSV_table-ByBackupInstance-ItemsBackedupWeekly": { + "runAfter": { + "Create_CSV_table-ByBackupInstance-ItemsBackedupDaily": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-ByBackupInstance-ItemsBackedupWeekly')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-ByBackupInstance-ItemsBackedupWeekly')?['value'])" + } + }, + "Run_query_and_list_results-ByBackupInstance-ItemsBackedupDaily": { + "runAfter": { + "Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupWeekly": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = startofday(datetime(@{parameters('startDate')}));\nlet RangeEnd = startofday(datetime(@{parameters('endDate')}));\nlet aggregationTypeParam = @{parameters('aggregationType')};\nlet BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet JobFunctionRedirect = ()\n{\n@{variables('JobFunction')}\n| where OperationCategory == \"Backup\"\n};\n// Grid specific params\nlet bin_Value = iff(aggregationTypeParam == \"Weekly\", 7d, iff(aggregationTypeParam == \"Monthly\", 28d, 1d));\nlet sum_isJobSuccessInTheTimePeriod_Value = iff(aggregationTypeParam == \"Weekly\", \"7\", iff(aggregationTypeParam == \"Monthly\", \"28\", \"1\")); \nlet duration_Value = iff(aggregationTypeParam == \"Weekly\", \"6.00:00:00\", iff(aggregationTypeParam == \"Monthly\", \"27.00:00:00\", \"00.00:00:00\")); \nlet BackupInstanceWithDailyBackup = (){\nBackupInstanceRedirect\n| join kind = inner (\n// calling LA System Function\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Daily\"\n};\n// Grid Logic\nlet JobInfo = ()\n{\nJobFunctionRedirect\n| join kind = inner (BackupInstanceWithDailyBackup) on $left.BackupInstanceUniqueId == $right.UniqueId\n| summarize jobCount = count(), jobSuccessCount = countif(Status == \"Completed\" or Status == \"CompletedWithWarnings\"), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId=any(BackupInstanceId), BackupSolution = any(BackupSolution), DatasourceSetResourceId = any(DatasourceSetResourceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName) by BackupInstanceUniqueId, JobCreationDate = startofday(StartTime)\n| project ResourceGroup=iff(BackupSolution ==\"Azure Backup Agent\" or BackupSolution ==\"Azure Backup Server\" or BackupSolution ==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]), jobCount, jobSuccessCount, BackupInstanceFriendlyName, BackupInstanceUniqueId, DatasourceSetFriendlyName, JobCreationDate, BackupInstanceId\n};\nJobInfo\n| summarize by BackupInstanceUniqueId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, BackupInstanceId\n| extend Day = range(RangeEnd, RangeStart, -1d)\n| mv-expand Day\n| project BackupInstanceUniqueId, BackupInstanceFriendlyName, BackupInstanceId, DatasourceSetFriendlyName, ResourceGroup, todatetime(Day)\n| join kind = leftouter \n( JobInfo\n) on BackupInstanceUniqueId, $left.Day == $right.JobCreationDate\n| sort by BackupInstanceUniqueId, Day desc\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, Day, jobTotalCountInTheTimePeriod = iff(isnull(jobCount), 0, jobCount), isJobSuccessInTheTimePeriod =iff(isnull(jobCount), 0, iff((jobSuccessCount > 1), 1, jobSuccessCount))\n| summarize max(Day), min(Day), sum(isJobSuccessInTheTimePeriod), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName),BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, bin_at(Day, bin_Value, RangeEnd + 1d)\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, Period = iff(aggregationTypeParam == \"Weekly\" or aggregationTypeParam == \"Monthly\", strcat(format_datetime(todatetime(min_Day),\"yyyy/MM/dd\"), \" - \", format_datetime(todatetime(max_Day),\"yyyy/MM/dd\")), format_datetime(todatetime(min_Day),\"yyyy/MM/dd\")), sum_isJobSuccessInTheTimePeriod, duration = max_Day - min_Day, Day\n// Exclude partial week/month\n| where duration == duration_Value\n| summarize sum_isJobSuccessInTheTimePeriod = countif(sum_isJobSuccessInTheTimePeriod == sum_isJobSuccessInTheTimePeriod_Value), Day= (any(Day)), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, Period\n| evaluate pivot(Period, any(sum_isJobSuccessInTheTimePeriod), BackupInstanceFriendlyName, BackupInstanceId, BackupInstanceUniqueId, DatasourceSetFriendlyName, ResourceGroup)\n| sort by BackupInstanceUniqueId asc", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_list_results-ByBackupInstance-ItemsBackedupWeekly": { + "runAfter": { + "Run_query_and_list_results-ByBackupInstance-ItemsBackedupDaily": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = startofday(datetime(@{parameters('startDate')}));\nlet RangeEnd = startofday(datetime(@{parameters('endDate')}));\nlet aggregationTypeParam = @{parameters('aggregationType')};\nlet BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet JobFunctionRedirect = ()\n{\n@{variables('JobFunction')}\n| where OperationCategory == \"Backup\"\n};\n// Grid specific params\nlet bin_Value = iff(aggregationTypeParam == \"Monthly\", 28d, 7d);\nlet sum_isJobSuccessInTheTimePeriod_Value = iff(aggregationTypeParam == \"Monthly\", \"4\", \"1\"); \nlet duration_Value = iff(aggregationTypeParam == \"Monthly\", \"27.00:00:00\", \"6.00:00:00\"); \nlet BackupInstanceWithWeeklyBackup = (){\nBackupInstanceRedirect\n| join kind = inner (\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Weekly\"\n};\n// Grid Logic\nlet JobInfo = ()\n{\nJobFunctionRedirect\n| join kind = inner (BackupInstanceWithWeeklyBackup) on $left.BackupInstanceUniqueId == $right.UniqueId\n| summarize jobCount = count(), jobSuccessCount = countif(Status == \"Completed\" or Status == \"CompletedWithWarnings\"), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId = any(BackupInstanceId), BackupSolution = any(BackupSolution), DatasourceSetResourceId = any(DatasourceSetResourceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName) by BackupInstanceUniqueId, JobCreationDate = startofday(StartTime)\n| project ResourceGroup=iff(BackupSolution ==\"Azure Backup Agent\" or BackupSolution ==\"Azure Backup Server\" or BackupSolution ==\"DPM\",\"(none)\",split(split(tostring(tolower(DatasourceSetResourceId)), '/resourcegroups/')[1],'/')[0]), jobCount, jobSuccessCount, BackupInstanceFriendlyName, BackupInstanceUniqueId, DatasourceSetFriendlyName, JobCreationDate, BackupInstanceId\n};\nJobInfo\n| summarize by BackupInstanceUniqueId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, BackupInstanceId\n| extend Day = range(RangeEnd, RangeStart, -1d)\n| mv-expand Day\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, todatetime(Day)\n| join kind = leftouter \n( JobInfo\n) on BackupInstanceUniqueId, $left.Day == $right.JobCreationDate\n| sort by BackupInstanceUniqueId, Day desc\n// Create weekly buckets to check if SLA met\n| summarize max(Day), min(Day), sum(jobSuccessCount), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName),BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, bin_at(Day, 7d, RangeEnd + 1d)\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, Day, sum_isJobSuccessInTheTimePeriod = iff(sum_jobSuccessCount > 1, 1, sum_jobSuccessCount), max_Day, min_Day\n| summarize max_Day = max(max_Day), min_Day = min(min_Day), sum_isJobSuccessInTheTimePeriod = sum(sum_isJobSuccessInTheTimePeriod), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, Day = bin_at(Day, bin_Value, RangeEnd + 1d)\n| project BackupInstanceUniqueId, BackupInstanceId, BackupInstanceFriendlyName, DatasourceSetFriendlyName, ResourceGroup, Period = strcat(format_datetime(todatetime(min_Day),\"yyyy/MM/dd\"), \" - \", format_datetime(todatetime(max_Day),\"yyyy/MM/dd\")), sum_isJobSuccessInTheTimePeriod, duration = max_Day - min_Day, Day\n// Exclude partial week/month\n| where duration == duration_Value\n| summarize sum_isJobSuccessInTheTimePeriod = countif(sum_isJobSuccessInTheTimePeriod == sum_isJobSuccessInTheTimePeriod_Value), Day= (any(Day)), BackupInstanceFriendlyName = any(BackupInstanceFriendlyName), BackupInstanceId = any(BackupInstanceId), DatasourceSetFriendlyName = any(DatasourceSetFriendlyName), ResourceGroup = any(ResourceGroup) by BackupInstanceUniqueId, Period\n| evaluate pivot(Period, any(sum_isJobSuccessInTheTimePeriod), BackupInstanceFriendlyName, BackupInstanceId, BackupInstanceUniqueId, DatasourceSetFriendlyName, ResourceGroup)\n| sort by BackupInstanceUniqueId asc", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupDaily": { + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = startofday(datetime(@{parameters('startDate')}));\nlet RangeEnd = startofday(datetime(@{parameters('endDate')}));\nlet aggregationTypeParam = @{parameters('aggregationType')};\nlet BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet JobFunctionRedirect = ()\n{\n@{variables('JobFunction')}\n| where OperationCategory == \"Backup\"\n};\n// Grid specific params\nlet bin_Value = iff(aggregationTypeParam == \"Weekly\", 7d, iff(aggregationTypeParam == \"Monthly\", 28d, 1d));\nlet sum_isJobSuccessInTheTimePeriod_Value = iff(aggregationTypeParam == \"Weekly\", \"7\", iff(aggregationTypeParam == \"Monthly\", \"28\", \"1\")); \nlet duration_Value = iff(aggregationTypeParam == \"Weekly\", \"6.00:00:00\", iff(aggregationTypeParam == \"Monthly\", \"27.00:00:00\", \"00.00:00:00\")); \nlet BackupInstanceWithDailyBackup = (){\nBackupInstanceRedirect\n| join kind = inner (\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Daily\"\n};\n// Grid Logic\nlet JobInfo = ()\n{\n// calling LA System Function\nJobFunctionRedirect\n| join kind = inner (BackupInstanceWithDailyBackup) on $left.BackupInstanceUniqueId == $right.UniqueId\n| summarize jobCount =count(), jobSuccessCount = countif(Status == \"Completed\" or Status == \"CompletedWithWarnings\"), jobFailureCount = countif(Status == \"Failed\" or Status == \"Cancelled\") by BackupInstanceUniqueId, JobCreationDate = startofday(StartTime)\n};\nJobInfo\n| summarize by BackupInstanceUniqueId\n| extend Day = range(RangeEnd, RangeStart, -1d)\n| mv-expand Day\n| project BackupInstanceUniqueId, todatetime(Day)\n| join kind = leftouter \n( JobInfo\n) on BackupInstanceUniqueId, $left.Day == $right.JobCreationDate\n// calculating isJobSuccess in the timeperiod to determine if it is successfull throughout the timeperiod\n| project BackupInstanceUniqueId, Day, isJobSuccessInTheTimePeriod =iff(isnull(jobCount), 0, iff((jobSuccessCount > 1), 1, jobSuccessCount)), jobFailureCount\n| summarize max(Day), min(Day), sum(isJobSuccessInTheTimePeriod), sum(jobFailureCount) by BackupInstanceUniqueId, bin_at(Day, bin_Value, RangeEnd + 1d)\n//| where BackupInstanceUniqueId in (\"westus;1541146419693764636;iaasvmcontainerv2;arult-test;cvarshrbac\",\"southeastasia;7777938885731870052;iaasvmcontainerv2;trinadhkselfhostrg;databasevm8\")\n| project BackupInstanceUniqueId, Period = iff(aggregationTypeParam == \"Weekly\" or aggregationTypeParam == \"Monthly\", strcat(format_datetime(todatetime(min_Day),\"yyyy/MM/dd\"), \" - \", format_datetime(todatetime(max_Day),\"yyyy/MM/dd\")), format_datetime(todatetime(min_Day),\"yyyy/MM/dd\")), sum_isJobSuccessInTheTimePeriod, sum_jobFailureCount, duration = max_Day - min_Day, Day\n// Exclude partial week/month\n| where duration == duration_Value\n| summarize ItemsWithSuccessfulDailyBackup = countif(sum_isJobSuccessInTheTimePeriod == sum_isJobSuccessInTheTimePeriod_Value), ItemsWithoutSuccessfulDailyBackup = countif(sum_isJobSuccessInTheTimePeriod != sum_isJobSuccessInTheTimePeriod_Value), Day= (any(Day)), sum_jobFailureCount = any(sum_jobFailureCount) by BackupInstanceUniqueId, Period\n| summarize ItemsWithSuccessfulDailyBackup = sum(ItemsWithSuccessfulDailyBackup), ItemsWithoutSuccessfulDailyBackup = sum(ItemsWithoutSuccessfulDailyBackup), FailedBackupJobs = sum(sum_jobFailureCount), RangeStartValue = (any(Day)) by Period\n| sort by RangeStartValue desc | project-away RangeStartValue", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Html Table" + } + } + }, + "Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupWeekly": { + "runAfter": { + "Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupDaily": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "let RangeStart = startofday(datetime(@{parameters('startDate')}));\nlet RangeEnd = startofday(datetime(@{parameters('endDate')}));\nlet aggregationTypeParam = @{parameters('aggregationType')};\nlet BackupInstanceRedirect = ()\n{\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n};\nlet PolicyFunctionRedirect = ()\n{\n@{variables('PolicyFunction')}\n};\nlet JobFunctionRedirect = ()\n{\n@{variables('JobFunction')}\n| where OperationCategory == \"Backup\"\n};\nlet bin_Value = iff(aggregationTypeParam == \"Monthly\", 28d, 7d);\nlet sum_isJobSuccessInTheTimePeriod_Value = iff(aggregationTypeParam == \"Monthly\", \"4\", \"1\"); \nlet duration_Value = iff(aggregationTypeParam == \"Monthly\", \"27.00:00:00\", \"6.00:00:00\"); \nlet BackupInstanceWithWeeklyBackup = (){\nBackupInstanceRedirect\n| join kind = inner (\nPolicyFunctionRedirect\n) on $left.PolicyUniqueId == $right.UniqueId, $left.VaultResourceId == $right.VaultResourceId\n| where parse_json(ExtendedProperties).BackupFrequency == \"Weekly\"\n};\n// Grid Logic\nlet JobInfo = ()\n{\nJobFunctionRedirect\n| join kind = inner (BackupInstanceWithWeeklyBackup) on $left.BackupInstanceUniqueId == $right.UniqueId\n| summarize jobCount =count(), jobSuccessCount = countif(Status == \"Completed\" or Status == \"CompletedWithWarnings\"), jobFailureCount = countif(Status == \"Failed\" or Status == \"Cancelled\") by BackupInstanceUniqueId, JobCreationDate = startofday(StartTime)\n};\nJobInfo\n| summarize by BackupInstanceUniqueId\n| extend Day = range(RangeEnd, RangeStart, -1d)\n| mv-expand Day\n| project BackupInstanceUniqueId, todatetime(Day)\n| join kind = leftouter \n( JobInfo\n) on BackupInstanceUniqueId, $left.Day == $right.JobCreationDate\n// Create weekly buckets to check if SLA met\n| summarize max(Day), min(Day), sum(jobSuccessCount), sum(jobFailureCount) by BackupInstanceUniqueId, bin_at(Day, 7d, RangeEnd + 1d)\n| project BackupInstanceUniqueId, Day, sum_isJobSuccessInTheTimePeriod = iff(sum_jobSuccessCount > 1, 1, sum_jobSuccessCount), sum_jobFailureCount, max_Day, min_Day\n| summarize max_Day = max(max_Day), min_Day = min(min_Day), sum_isJobSuccessInTheTimePeriod = sum(sum_isJobSuccessInTheTimePeriod), sum_jobFailureCount = sum(sum_jobFailureCount) by BackupInstanceUniqueId, Day = bin_at(Day, bin_Value, RangeEnd + 1d)\n| project BackupInstanceUniqueId, Period = strcat(format_datetime(todatetime(min_Day),\"yyyy/MM/dd\"), \" - \", format_datetime(todatetime(max_Day),\"yyyy/MM/dd\")), sum_isJobSuccessInTheTimePeriod, sum_jobFailureCount, duration = max_Day - min_Day, Day\n// Exclude partial week/month\n| where duration == duration_Value\n| summarize ItemsWithSuccessfulWeeklyBackup = countif(sum_isJobSuccessInTheTimePeriod == sum_isJobSuccessInTheTimePeriod_Value), ItemsWithoutSuccessfulWeeklyBackup = countif(sum_isJobSuccessInTheTimePeriod != sum_isJobSuccessInTheTimePeriod_Value), Day= (any(Day)), sum_jobFailureCount = any(sum_jobFailureCount) by BackupInstanceUniqueId, Period\n| summarize ItemsWithSuccessfulWeeklyBackup = sum(ItemsWithSuccessfulWeeklyBackup), ItemsWithoutSuccessfulWeeklyBackup = sum(ItemsWithoutSuccessfulWeeklyBackup), FailedBackupJobs = sum(sum_jobFailureCount), RangeStartValue = (any(Day)) by Period\n| sort by RangeStartValue desc | project-away RangeStartValue\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "WonderDemoMonitoringRG", + "resourcename": "WonderDemoMonitoring", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "ef4ab5a7-c2c0-4304-af80-af49f48af3d1", + "timerange": "Set in query", + "visType": "Html Table" + } + } + }, + "Set_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-ByBackupInstance-ItemsBackedupWeekly": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "visual", + "value": "
\n

Policy Adherence By Time Period - Items Backed up Daily

\n@{base64ToString(body('Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupDaily')?['body'])}\n

Policy Adherence By Time Period - Items Backed up Weekly

\n@{base64ToString(body('Run_query_and_visualize_results-ByTimePeriod-ItemsBackedupWeekly')?['body'])}\n
" + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azuremonitorlogs": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs", + "connectionName": "[resourceGroup().location]-azuremonitorlogs", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "office365": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-office365", + "connectionName": "[resourceGroup().location]-office365", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT662 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT662 new file mode 100644 index 0000000..f4758c8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT662 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-summary-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-summary-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898793, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-summary-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-summary-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT662", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT662", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "sku": "pergb2018", + "tags": { + "UsedByArmTemplateTest": "true" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "UsedByArmTemplateTest": "true" + }, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + } + ], + "outputs": { + "existingLogicAppWorkspace": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "existingWorkspaceResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingWorkspaceSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "existingWorkspacesToQuery": { + "type": "array", + "value": "[array(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT663 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT663 new file mode 100644 index 0000000..263bf9d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT663 @@ -0,0 +1,676 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-summary-report/azuredeploy.json", + "/demos/backup-summary-report/azuredeploy.parameters.json" + ], + "timestamp": 1642962898802, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-summary-report/azuredeploy.json", + "/demos/backup-summary-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT663", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT663", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "String", + "defaultValue": "Summary", + "metadata": { + "description": "Name of the Logic App to be created." + } + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region in which the Logic App should be created." + } + }, + "logicAppWorkspace": { + "type": "String", + "metadata": { + "description": "Name of the existing Log Analytics workspace that the Logic App should connect to. Note that the Logic App connects to a single workspace, but can query data across multiple workspaces. Use the 'Workspaces To Query' parameter to specify the list of workspaces that the Logic App should query data from." + }, + "value": "GET-PREREQ-existingLogicAppWorkspace" + }, + "workspaceSubscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceSubscriptionId" + }, + "workspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group name of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceResourceGroup" + }, + "workspacesToQuery": { + "type": "Array", + "metadata": { + "description": "List of workspaces that the Logic App should query data from. Should be a comma-separated array of values of the format ['/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName1}','/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName2}']" + }, + "value": "GET-PREREQ-existingWorkspacesToQuery" + }, + "emailFrequency": { + "type": "String", + "allowedValues": [ + "Day", + "Week", + "Month" + ], + "defaultValue": "Day", + "metadata": { + "description": "Frequency at which emails should be received by the recipient(s). Select 'Day' for sending emails once a day, 'Week' for sending emails once a week, or 'Month' for sending emails once a month." + } + }, + "recipientEmailId": { + "type": "String", + "metadata": { + "description": "Email id of the recipient(s). To specify multiple email ids, use a semicolon-separated list." + }, + "value": "vijeya@microsoft.com" + }, + "startDate": { + "type": "String", + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "metadata": { + "description": "Start Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "endDate": { + "type": "String", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "End Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "vaultSubscriptionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of subscriptions in which Recovery Services vaults exist. Should be of the format '{subscriptionId1},{subscriptionId2},..'. Default value is '*', which enables the Logic App to query data across all backup subscriptions that are sending data to the specified Log Analytics workspaces." + } + }, + "vaultLocationListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of regions in which Recovery Services vaults exist. Should be of the format 'location1,location2,..' (eg. eastus,westus). Default value is '*', which enables the Logic App to query data for vaults across all Azure regions in the specified subscriptions." + } + }, + "vaultListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Recovery Services vaults. Should be of the format 'vaultname1,vaultname2,..'. Default value is '*', which enables the Logic App to query data for all vaults in the specified subscriptions and locations." + } + }, + "backupSolutionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Azure Backup solutions being used in your environment. Should be of the format 'solution1,solution2,..' (eg. Azure VM Backup,SQL in Azure VM Backup,DPM). Default value is '*', which enables the Logic App to query data across all Azure Backup solutions being used." + } + }, + "excludeLegacyEvent": { + "type": "Bool", + "defaultValue": true, + "metadata": { + "description": "Selecting 'true' enables the Logic App to avoid querying data that is sent to the legacy Azure Diagnostics table in the Log Analytics workspace(s). Excluding the legacy table improves query performance time." + } + }, + "aggregationType": { + "type": "String", + "allowedValues": [ + "Daily", + "Weekly", + "Monthly" + ], + "defaultValue": "Daily", + "metadata": { + "description": "Use to specify the granularity at which data is sampled in the case of trend graphs." + } + }, + "resourceTags": { + "type": "object", + "defaultValue": { + "UsedByBackupReports": "true" + }, + "metadata": { + "description": "Tags to be assigned to the Logic App and the API connection resources." + } + }, + "emailSubject": { + "type": "string", + "defaultValue": "Summary", + "metadata": { + "description": "Subject of the email to be received by the recipient(s)." + } + } + }, + "variables": { + "office365ConnectionName": "[resourceGroup().location]-office365", + "azureMonitorLogsConnectionName": "[resourceGroup().location]-azuremonitorlogs" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-office365", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + }, + "displayName": "office365" + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-azuremonitorlogs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "displayName": "azuremonitorlogs" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "Summary", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "dependsOn": [ + "Microsoft.Web/connections/[resourceGroup().location]-office365", + "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + }, + "dataToExport": { + "defaultValue": "Summary", + "type": "String" + }, + "aggregationType": { + "defaultValue": "\"Daily\"", + "type": "String" + }, + "backupSolutionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "excludeLegacyEvent": { + "defaultValue": true, + "type": "Bool" + }, + "endDate": { + "defaultValue": "[utcNow('u')]", + "type": "String" + }, + "startDate": { + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "type": "String" + }, + "vaultListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultLocationListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultSubscriptionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "workspacesToQuery": { + "defaultValue": "GET-PREREQ-existingWorkspacesToQuery", + "type": "Array" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Day", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "For_each": { + "foreach": "@parameters('workspacesToQuery')", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "AzureDiagnostics_Incomplete", + "value": " workspace('@{items('For_each')}').AzureDiagnostics," + } + }, + "Append_to_string_variable_2": { + "runAfter": { + "Append_to_string_variable": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "CoreAzureBackup_Incomplete", + "value": " workspace('@{items('For_each')}').CoreAzureBackup," + } + }, + "Append_to_string_variable_3": { + "runAfter": { + "Append_to_string_variable_2": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupJobs_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupJobs," + } + }, + "Append_to_string_variable_4": { + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupPolicy_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupPolicy," + } + }, + "Append_to_string_variable_5": { + "runAfter": { + "Append_to_string_variable_4": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupProtectedInstance," + } + }, + "Append_to_string_variable_6": { + "runAfter": { + "Append_to_string_variable_5": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupStorage_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupStorage," + } + } + }, + "runAfter": { + "Initialize_variable-AddonAzureBackupStorage": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "If_Scope_Failed": { + "actions": { + "Send_an_email_(V2)-FailureRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "

The Logic App Run did not execute to completion.
\n
Status: @{result('Scope')[0]['status']}

Learn more about how to troubleshoot the error

", + "Subject": "Summary", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Scope": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ] + }, + "else": { + "actions": { + "Send_an_email_(V2)-SuccessfulRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "


\nBackup Reports - Summary
\n

\nEmail Contents
\n

\n1. Inline
a. Key parameters by Backup Solution

Learn more about Backup Reports
\n
\n@{base64ToString(body('Run_query_and_visualize_results-SummaryGrid')?['body'])}
\n
\n

", + "Subject": "Summary", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + } + }, + "expression": { + "or": [ + { + "equals": [ + "@result('Scope')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "TimedOut" + ] + } + ] + }, + "type": "If" + }, + "Initialize_variable-AddonAzureBackupJobs": { + "runAfter": { + "Initialize_variable-CoreAzureBackup": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupJobs_Incomplete", + "type": "string", + "value": "let AddonAzureBackupJobs = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupPolicy": { + "runAfter": { + "Initialize_variable-AddonAzureBackupJobs": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupPolicy_Incomplete", + "type": "string", + "value": "let AddonAzureBackupPolicy = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupProtectedInstance": { + "runAfter": { + "Initialize_variable-AddonAzureBackupPolicy": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "type": "string", + "value": "let AddonAzureBackupProtectedInstance = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupStorage": { + "runAfter": { + "Initialize_variable-AddonAzureBackupProtectedInstance": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupStorage_Incomplete", + "type": "string", + "value": "let AddonAzureBackupStorage = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AzureDiagnostics": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AzureDiagnostics_Incomplete", + "type": "string", + "value": "let AzureDiagnostics = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-BackupInstanceFunction": { + "runAfter": { + "Initialize_variable-ReportFilterForLatestData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BackupInstanceFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')}\nlet _ProtectionInfoList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _DisplayAllFields = true;\n// Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureBackupServer\", iff(BackupItemType == \"SQLDB\",\"SQLDataBase\",BackupItemType), \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n// DatasourceSetType\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet RecoveryPointUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderAzureDiagnostics = ()\n{\n let RecoveryPointTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"RecoveryPoint\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project LatestRecoveryPointLocation = columnifexists(\"LatestRecoveryPointLocation_s\", \"\"), OldestRecoveryPointLocation = columnifexists(\"OldestRecoveryPointLocation_s\", \"\"), LatestRecoveryPointTime = todatetime(columnifexists(\"LatestRecoveryPointTime_s\", \"\")), OldestRecoveryPointTime = todatetime(columnifexists(\"OldestRecoveryPointTime_s\", \"\")),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet RecoveryPointHistoryUnderResourceSpecific = ()\n{\n let RecoveryPointTable = CoreAzureBackup \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"RecoveryPoint\" and State != \"Deleted\"\n| project LatestRecoveryPointLocation, OldestRecoveryPointLocation, LatestRecoveryPointTime, OldestRecoveryPointTime,\nBackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n// Interested in only Vault/Cloud RPs\n| where LatestRecoveryPointLocation has \"Cloud\" \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nRecoveryPointTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\n// BusinessLogic\nlet LatestBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| where BackupItemUniqueId != \"\"\n// To show as per as on 'AsonDay'\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet JoinWithRP = (T:(BackupItemUniqueId:string))\n{\nT | join kind= leftouter (\n RecoveryPointUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime) on BackupItemUniqueId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nlet Base_RP = ()\n{\nJoinWithRP(Base)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Policy_RP = ()\n{\nJoinWithRP(Base_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_RP = ()\n{\nJoinWithRP(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy = ()\n{\nJoinWithPolicy(Base_Size)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nlet Base_Size_Policy_RP = ()\n{\nJoinWithRP(Base_Size_Policy)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, ResourceId\n};\nunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true) \n};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderAzureDiagnostics | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n\t{\n\tT | join kind= leftouter (\n\t PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n\t};\n\tlet JoinWithRP = (T:(BackupItemUniqueId:string, TimeRangeEndDay:datetime))\n\t{\n\tT | join kind= leftouter (\n\t RecoveryPointHistoryUnderResourceSpecific | project BackupItemUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeRangeEndDay) on BackupItemUniqueId, TimeRangeEndDay\n\t};\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy = ()\n\t{\n\tJoinWithPolicy(Base) \n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_RP = ()\n\t{\n\tJoinWithRP(Base)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_RP = ()\n\t{\n\tJoinWithRP(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy = ()\n\t{\n\tJoinWithPolicy(Base_Size)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size_Policy_RP = ()\n\t{\n\tJoinWithRP(Base_Size_Policy)\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName,BackupItemFrontEndSize, StorageConsumedInMBs, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tunion ( Base | where _DisplayAllFields == false ),\t \n\t ( Base_Size_Policy_RP | where _DisplayAllFields== true)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = ()\n//let partition_data = (p:long, n:long)\n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_HistoryCombinationUnderResourceSpecific())\n//| where hash(BackupItemUniqueId, n) == p\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet LatestBackupItemAssociationAndStorageConsumptionTable = ()\n{\nLatestBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false\n),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n)on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, VaultUniqueId,\nVaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime\n};\nlet FinalTable = () {union (LatestBackupItemAssociationAndStorageConsumptionTable | where (_RangeEnd-_RangeStart == 1d)), (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where (_RangeEnd-_RangeStart > 1d))\n| project BackupItemName, BackupItemFriendlyName, BackupItemProtectionState, PolicyUniqueId, PolicyName = iff(BackupItemProtectionState == \"ProtectionStopped\", \"(none)\", PolicyName), SubscriptionId, ResourceGroupName, AzureDataCenter, VaultUniqueId, VaultName, VaultTags, BackupManagementType, BackupItemType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), StorageConsumedInMBs), ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupItemUniqueId, StorageReplicationType, OldestRecoveryPointTime, LatestRecoveryPointTime, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(FinalTable)))\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| project UniqueId = BackupItemUniqueId, Id = BackupInstanceId, FriendlyName = BackupItemFriendlyName, ProtectionInfo = BackupItemProtectionState, LatestRecoveryPoint = LatestRecoveryPointTime, OldestRecoveryPoint = OldestRecoveryPointTime, SourceSizeInMBs = BackupItemFrontEndSize, VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, DataSourceFriendlyName = BackupItemFriendlyName, BackupSolution, DatasourceType, DatasourceResourceId, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, DatasourceSetResourceId, DatasourceSetType, PolicyName, PolicyUniqueId, PolicyId = strcat(ResourceId, \"/backupPolicies/\", PolicyName), VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultStore_StorageReplicationType = StorageReplicationType, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-CoreAzureBackup": { + "runAfter": { + "Initialize_variable-AzureDiagnostics": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "CoreAzureBackup_Incomplete", + "type": "string", + "value": "let CoreAzureBackup = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-JobFunction": { + "runAfter": { + "Initialize_variable-BackupInstanceFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "JobFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n// Report filters\n@{variables('ReportFilter_Trend')}\nlet _ProtectionStateList = \"*\";\nlet _DatasourceSetName = \"*\";\nlet _BackupInstanceName = \"*\";\nlet _JobOperationList = \"*\";\nlet _JobStatusList = \"*\";\nlet _JobFailureCodeList = \"*\";\nlet _ExcludeLog = true;\n// Other Vars\nlet ExtRangeStart = _RangeStart - 2d;\nlet ExtRangeEnd = _RangeEnd + 2d;\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\nlet Extend_DatasourceType = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend DatasourceType = iff(BackupManagementType == \"IaaSVM\", \"Microsoft.Compute/virtualMachines\", \niff(BackupManagementType == \"MAB\", BackupItemType, \niff(BackupManagementType == \"DPM\", BackupItemType, \niff(BackupManagementType == \"AzureBackupServer\", BackupItemType, \niff(BackupManagementType == \"AzureStorage\", \"Microsoft.Storage/storageAccounts/fileServices/shares\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQLDataBase\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAPHanaDatabase\", \"\")))))))\n};\nlet Extend_BackupInstanceId = (T:(ResourceId:string, BackupManagementType:string, BackupItemType:string, ProtectedContainerName:string, BackupItemName:string))\n{\nT | extend BackupInstanceId = toupper(iff ((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/IaasVMContainer;\", ProtectedContainerName, \"/protectedItems/VM;\", ProtectedContainerName),\niff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/StorageContainer;\", ProtectedContainerName, \"/protectedItems/AzureFileShare;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SQLDataBase;\", BackupItemName) , \niff((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\"), strcat(ResourceId,\"/backupFabrics/Azure/protectionContainers/VMAppContainer;\", ProtectedContainerName, \"/protectedItems/SAPHanaDatabase;\", BackupItemName), \"\")))))\n};\nlet Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId = (T:(ResourceId:string, ProtectedContainerName:string, BackupManagementType:string, BackupItemType:string, BackupItemUniqueId:string, BackupItemName:string, BackupItemFriendlyName:string))\n{\nT | extend prefix = array_strcat(array_split(split(ResourceId,\"/\"), 4)[0] ,\"/\")\n| extend container_array = split(ProtectedContainerName,\";\")\n| extend container_arraylen = array_length(container_array)\n| extend containerNameString = iff(container_arraylen == 3, ProtectedContainerName, \"\")\n| parse containerNameString with entityType:string \";\" rgName:string \";\" entityName:string\n| extend entityURL = iff((BackupManagementType == \"AzureStorage\" and BackupItemType == \"AzureFileShare\"), iff(entityType == \"storage\", \"/Microsoft.Storage/storageAccounts/\", \"/Microsoft.ClassicStorage/storageAccounts/\"), iff((BackupManagementType == \"IaaSVM\" and BackupItemType == \"VM\"), iff(entityType =~ \"iaasvmcontainerv2\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), iff(((BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\") or (BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\")), iff(entityType =~ \"compute\", \"/Microsoft.Compute/virtualMachines/\", \"/Microsoft.ClassicCompute/virtualMachines/\"), \"\")))\n| extend DatasourceSetResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), \"\" , iff(containerNameString != \"\", strcat(prefix, \"/\", rgName, \"/providers\", entityURL, entityName), \"\")))\n//BackupSolution\n| extend DatasourceSetType = iff(BackupManagementType == \"IaaSVM\", iff(entityType =~ \"iaasvmcontainerv2\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", iff(entityType == \"storage\", \"Microsoft.Storage/storageAccounts\", \"Microsoft.ClassicStorage/storageAccounts\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", iff(entityType =~ \"compute\", \"Microsoft.Compute/virtualMachines\", \"Microsoft.ClassicCompute/virtualMachines\"), \"\")))))))\n| extend DatasourceResourceId = toupper(iff(BackupManagementType in (\"DPM\", \"AzureBackupServer\", \"MAB\"), BackupItemUniqueId, \niff(BackupManagementType == \"IaaSVM\", DatasourceSetResourceId, \niff(BackupManagementType == \"AzureStorage\", strcat(DatasourceSetResourceId, \"/fileServices/default/shares/\", BackupItemFriendlyName),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SQLDataBase;\", BackupItemName),\"\"),\niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\",iff(DatasourceSetResourceId != \"\",strcat(DatasourceSetResourceId, \"/providers/Microsoft.RecoveryServices/backupProtectedItem/SAPHanaDatabase;\", BackupItemName),\"\"),\"\"))))))\n| project-away prefix, container_array, container_arraylen, containerNameString, entityURL \n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet PolicyUnderAzureDiagnostics = ()\n{\nlet PolicyTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where OperationName == \"Policy\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"), PolicyName = columnifexists(\"PolicyName_s\", \"\"), ResourceId, BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupManagementType, PolicyName, ResourceId, TimeGenerated \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet PolicyUnderResourceSpecific = ()\n{\nlet PolicyTable = AddonAzureBackupPolicy\n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Policy\" \n| project PolicyUniqueId, PolicyName, ResourceId, TimeGenerated, BackupManagementType\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by PolicyUniqueId, ResourceId;\nPolicyTable\n};\nlet JobUnderAzureDiagnostics = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AzureDiagnostics \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"Job\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n// Exclude Log Jobs and InProgress Jobs\n| project JobOperation = columnifexists(\"JobOperation_s\", \"\") , JobOperationSubType = columnifexists(\"JobOperationSubType_s\", \"\"), JobUniqueIdGuid = columnifexists(\"JobUniqueId_g\", \"\") , JobUniqueIdStr = columnifexists(\"JobUniqueId_s\", \"\"),\nProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\",\"\"), AdHocOrScheduledJob = columnifexists(\"AdHocOrScheduledJob_s\",\"\"), RecoveryJobDestination = columnifexists(\"RecoveryJobDestination_s\",\"\"),\nRecoveryJobRPDateTime = todatetime(columnifexists(\"RecoveryJobRPDateTime_s\",\"\")), RecoveryJobRPLocation = columnifexists(\"RecoveryJobRPLocation_s\",\"\"), RecoveryLocationType = columnifexists(\"RecoveryLocationType_s\",\"\"),\nBackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\",\"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\",\"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\",\"\"),\nJobStatus = columnifexists(\"JobStatus_s\",\"\"), JobFailureCode = columnifexists(\"JobFailureCode_s\",\"\"), JobStartDateTime = todatetime(columnifexists(\"JobStartDateTime_s\",\"\")), JobDurationInSecs = todouble(columnifexists(\"JobDurationInSecs_s\", \"\")),\nDataTransferredInMB = todouble(columnifexists(\"DataTransferredInMB_s\",\"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\",\"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog) \n| extend JobUniqueId = iff(JobUniqueIdGuid == \"\", JobUniqueIdStr, JobUniqueIdGuid) \n| project-away JobUniqueIdGuid, JobUniqueIdStr\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId ;\nJobTable\n};\nlet JobUnderResourceSpecific = (IsBackupItemAssociatedJobsOnly:bool)\n{\nlet JobTable = AddonAzureBackupJobs \n// Take records until previous day\n| where TimeGenerated >= ExtRangeStart and TimeGenerated <= ExtRangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"Job\" \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (IsBackupItemAssociatedJobsOnly and BackupItemUniqueId != \"\") or ( not(IsBackupItemAssociatedJobsOnly))\n// Exclude Log Jobs and InProgress Jobs\n| where not(JobStatus == \"InProgress\")\n| where ( _ExcludeLog and not((JobOperation == \"Backup\" and JobOperationSubType == \"Log\") or (JobOperation == \"Backup\" and JobOperationSubType == \"Recovery point_Log\"))) or not(_ExcludeLog)\n| where JobStartDateTime >= _RangeStart and JobStartDateTime <= _RangeEnd\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId;\nJobTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BackupInstanceName) or _BackupInstanceName == \"*\" or BackupItemFriendlyName contains (_BackupInstanceName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderAzureDiagnostics | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet JoinWithPolicy = (T:(PolicyUniqueId:string, ResourceId:string))\n{\nT | join kind= leftouter (\n PolicyUnderResourceSpecific | project PolicyUniqueId, PolicyName, ResourceId) on PolicyUniqueId, ResourceId\n};\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Policy = ()\n{\nJoinWithPolicy(Base) \n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated, ResourceId\n};\nBase_Policy\n};\nlet LatestBackupItemWithProtectedContainerTable = () \n{\nTotalBackupItemDimensionTable\n| join (union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics()| where _ExcludeLegacyEvent == false),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId) on BackupItemUniqueId\n| where isempty(_DatasourceSetName) or _DatasourceSetName == \"*\" or ProtectedContainerFriendlyName contains (_DatasourceSetName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet JobFinalTable = (){\n union isfuzzy = true \n(JobUnderAzureDiagnostics(true)| where _ExcludeLegacyEvent == false),\n(JobUnderResourceSpecific(true))\n| project JobStatus, JobUniqueId, JobOperation, JobFailureCode, JobOperationSubType, JobStartDateTime, DataTransferredInMB, AdHocOrScheduledJob, JobDurationInSecs, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId, ProtectedContainerUniqueId, TimeGenerated \n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, JobUniqueId\n| where JobOperation in~ (_JobOperationList) or '*' in (_JobOperationList)\n| where JobStatus in~ (_JobStatusList) or '*' in (_JobStatusList)\n| where JobFailureCode in~ (_JobFailureCodeList) or '*' in (_JobFailureCodeList)\n| join kind= inner (LatestBackupItemWithProtectedContainerTable) on BackupItemUniqueId\n| project JobUniqueId, JobOperation, JobStatus, JobFailureCode, JobOperationSubType, JobStartDateTime, JobDurationInSecs, DataTransferredInMB, AdHocOrScheduledJob, RecoveryJobDestination,\nRecoveryJobRPDateTime, RecoveryJobRPLocation, RecoveryLocationType, BackupItemUniqueId = BackupItemUniqueId1, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState, StorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, PolicyName, TimeGenerated\n};\nlet FinalTable_V1Vault = () {Extend_DatasourceType(Extend_BackupInstanceId(Extend_DatasourceSetResourceId_DatasourceSetType_DatasourceResourceId(JobFinalTable)))\n| project UniqueId = JobUniqueId, OperationCategory = JobOperation, Operation = JobOperationSubType, Status = JobStatus, ErrorTitle = JobFailureCode, StartTime = JobStartDateTime, DurationInSecs = JobDurationInSecs, DataTransferredInMBs = DataTransferredInMB, RestoreJobRPDateTime = RecoveryJobRPDateTime, RestoreJobRPLocation = RecoveryJobRPLocation, BackupInstanceUniqueId = BackupItemUniqueId, BackupInstanceId, BackupInstanceFriendlyName = BackupItemFriendlyName, DatasourceResourceId, DatasourceFriendlyName = BackupItemFriendlyName, DatasourceType, BackupSolution, DatasourceSetResourceId, DatasourceSetType, DatasourceSetFriendlyName = ProtectedContainerFriendlyName, VaultResourceId = ResourceId, VaultUniqueId, VaultName, VaultTags, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-ReportFilterForHistoricalData": { + "runAfter": { + "Initialize_variable-UnionOfWorkspaces": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Trend", + "type": "string", + "value": "let _RangeStart = iff((datetime(@{parameters('startDate')}) == datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('startDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');\nlet _AggregationType = @{parameters('aggregationType')};" + } + ] + } + }, + "Initialize_variable-ReportFilterForLatestData": { + "runAfter": { + "Initialize_variable-ReportFilterForHistoricalData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Latest", + "type": "string", + "value": "let _RangeStart = iff(( datetime(@{parameters('endDate')})== datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('endDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');" + } + ] + } + }, + "Initialize_variable-UnionOfWorkspaces": { + "runAfter": { + "For_each": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "workspacesToQuery_Custom", + "type": "string", + "value": "@{concat(concat(substring(variables('AddonAzureBackupStorage_Incomplete'),0,sub(length(variables('AddonAzureBackupStorage_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupProtectedInstance_Incomplete'),0,sub(length(variables('AddonAzureBackupProtectedInstance_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupPolicy_Incomplete'),0,sub(length(variables('AddonAzureBackupPolicy_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupJobs_Incomplete'),0,sub(length(variables('AddonAzureBackupJobs_Incomplete')),1)),'};'),\r\nconcat(substring(variables('CoreAzureBackup_Incomplete'),0,sub(length(variables('CoreAzureBackup_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AzureDiagnostics_Incomplete'),0,sub(length(variables('AzureDiagnostics_Incomplete')),1)),'};'))}" + } + ] + } + }, + "Scope": { + "actions": { + "Run_query_and_visualize_results-SummaryGrid": { + "type": "ApiConnection", + "inputs": { + "body": "let BackupInstanceDetails = (){\n// calling LA System Function\n@{variables('BackupInstanceFunction')}\n// query to transform function output\n| summarize BackupInstances=count(UniqueId), CloudStorage=sum(VaultStore_StorageConsumptionInMBs)/(1024) by BackupSolution\n};\nlet JobSuccessPercentageTable = (){\n// calling LA System Function\n@{variables('JobFunction')}\n// query to transform function output\n| extend success=iff((Status == \"Completed\" or Status == \"CompletedWithWarnings\") , 1 , 0)\n| extend record = iff(UniqueId != \"\", 1, 0) // to be used for total row count\n| summarize SuccessfulCount =sum(success), TotalCount=sum(record) by BackupSolution\n| extend JobSuccessPercentage = (SuccessfulCount*100)/todouble(TotalCount)\n| project-away SuccessfulCount, TotalCount\n};\nBackupInstanceDetails | join kind = leftouter (JobSuccessPercentageTable) on BackupSolution | project-away BackupSolution1 | project BackupSolution, BackupInstances, JobSuccessPercentage=iff( (isnan( JobSuccessPercentage) or isinf( JobSuccessPercentage) or isempty( JobSuccessPercentage)), \"-\", strcat(tostring(round( JobSuccessPercentage,2)), \" %\")), CloudStorage", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Html Table" + } + } + } + }, + "runAfter": { + "Initialize_variable-JobFunction": [ + "Succeeded" + ] + }, + "type": "Scope" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azuremonitorlogs": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs", + "connectionName": "[resourceGroup().location]-azuremonitorlogs", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "office365": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-office365", + "connectionName": "[resourceGroup().location]-office365", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT664 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT664 new file mode 100644 index 0000000..e662ec6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT664 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-usage-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-usage-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898812, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-usage-report/prereqs/prereq.azuredeploy.json", + "/demos/backup-usage-report/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT664", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT664", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "value": "GEN-UNIQUE-32" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "sku": "pergb2018", + "tags": { + "UsedByArmTemplateTest": "true" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-32", + "location": "[resourceGroup().location]", + "tags": { + "UsedByArmTemplateTest": "true" + }, + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "pergb2018" + } + } + } + ], + "outputs": { + "existingLogicAppWorkspace": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "existingWorkspaceResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingWorkspaceSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "existingWorkspacesToQuery": { + "type": "array", + "value": "[array(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT665 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT665 new file mode 100644 index 0000000..06fffe5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT665 @@ -0,0 +1,802 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/backup-usage-report/azuredeploy.json", + "/demos/backup-usage-report/azuredeploy.parameters.json" + ], + "timestamp": 1642962898820, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/backup-usage-report/azuredeploy.json", + "/demos/backup-usage-report/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT665", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/connections", + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT665", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "String", + "defaultValue": "Usage", + "metadata": { + "description": "Name of the Logic App to be created." + } + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region in which the Logic App should be created." + } + }, + "logicAppWorkspace": { + "type": "String", + "metadata": { + "description": "Name of the existing Log Analytics workspace that the Logic App should connect to. Note that the Logic App connects to a single workspace, but can query data across multiple workspaces. Use the 'Workspaces To Query' parameter to specify the list of workspaces that the Logic App should query data from." + }, + "value": "GET-PREREQ-existingLogicAppWorkspace" + }, + "workspaceSubscriptionId": { + "type": "string", + "metadata": { + "description": "Subscription Id of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceSubscriptionId" + }, + "workspaceResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group name of the existing Log Analytics workspace that the Logic App should connect to." + }, + "value": "GET-PREREQ-existingWorkspaceResourceGroup" + }, + "workspacesToQuery": { + "type": "Array", + "metadata": { + "description": "List of workspaces that the Logic App should query data from. Should be a comma-separated array of values of the format ['/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName1}','/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName2}']" + }, + "value": "GET-PREREQ-existingWorkspacesToQuery" + }, + "emailFrequency": { + "type": "String", + "allowedValues": [ + "Day", + "Week", + "Month" + ], + "defaultValue": "Day", + "metadata": { + "description": "Frequency at whch emails should be received by the recipient(s). Select 'Day' for sending emails once a day, 'Week' for sending emails once a week, or 'Month' for sending emails once a month." + } + }, + "recipientEmailId": { + "type": "String", + "metadata": { + "description": "Email id of the recipient(s). To specify multiple email ids, use a semicolon-separated list." + }, + "value": "vijeya@microsoft.com" + }, + "startDate": { + "type": "String", + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "metadata": { + "description": "Start Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "endDate": { + "type": "String", + "defaultValue": "[utcNow('u')]", + "metadata": { + "description": "End Date and Time (in UTC) of the data to be queried by the Logic App. Use yyyy-MM-dd HH:mm:ssZ format." + } + }, + "vaultSubscriptionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of subscriptions in which Recovery Services vaults exist. Should be of the format '{subscriptionId1},{subscriptionId2},..'. Default value is '*', which enables the Logic App to query data across all backup subscriptions that are sending data to the specified Log Analytics workspaces." + } + }, + "vaultLocationListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of regions in which Recovery Services vaults exist. Should be of the format 'location1,location2,..' (eg. eastus,westus). Default value is '*', which enables the Logic App to query data for vaults across all Azure regions in the specified subscriptions." + } + }, + "vaultListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Recovery Services vaults. Should be of the format 'vaultname1,vaultname2,..'. Default value is '*', which enables the Logic App to query data for all vaults in the specified subscriptions and locations." + } + }, + "backupSolutionListFilter": { + "type": "String", + "defaultValue": "*", + "metadata": { + "description": "Use to filter data queried by the Logic App to a limited set of Azure Backup solutions being used in your environment. Should be of the format 'solution1,solution2,..' (eg. Azure VM Backup,SQL in Azure VM Backup,DPM). Default value is '*', which enables the Logic App to query data across all Azure Backup solutions being used." + } + }, + "excludeLegacyEvent": { + "type": "Bool", + "defaultValue": true, + "metadata": { + "description": "Selecting 'true' enables the Logic App to avoid querying data that is sent to the legacy Azure Diagnostics table in the Log Analytics workspace(s). Excluding the legacy table improves query performance time." + } + }, + "aggregationType": { + "type": "String", + "allowedValues": [ + "Daily", + "Weekly", + "Monthly" + ], + "defaultValue": "Daily", + "metadata": { + "description": "Use to specify the granularity at which data is sampled in the case of trend graphs." + } + }, + "resourceTags": { + "type": "object", + "defaultValue": { + "UsedByBackupReports": "true" + }, + "metadata": { + "description": "Tags to be assigned to the Logic App and the API connection resources." + } + }, + "emailSubject": { + "type": "string", + "defaultValue": "Usage", + "metadata": { + "description": "Subject of the email to be received by the recipient(s)." + } + } + }, + "variables": { + "office365ConnectionName": "[resourceGroup().location]-office365", + "azureMonitorLogsConnectionName": "[resourceGroup().location]-azuremonitorlogs" + }, + "resources": [ + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-office365", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + }, + "displayName": "office365" + } + }, + { + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[resourceGroup().location]-azuremonitorlogs", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "properties": { + "api": { + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "displayName": "azuremonitorlogs" + } + }, + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "Usage", + "location": "[resourceGroup().location]", + "tags": { + "UsedByBackupReports": "true" + }, + "dependsOn": [ + "Microsoft.Web/connections/[resourceGroup().location]-office365", + "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs" + ], + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": { + "$connections": { + "defaultValue": {}, + "type": "Object" + }, + "dataToExport": { + "defaultValue": "Usage", + "type": "String" + }, + "aggregationType": { + "defaultValue": "\"Daily\"", + "type": "String" + }, + "backupSolutionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "excludeLegacyEvent": { + "defaultValue": true, + "type": "Bool" + }, + "endDate": { + "defaultValue": "[utcNow('u')]", + "type": "String" + }, + "startDate": { + "defaultValue": "[dateTimeAdd(utcNow('u'), '-P7D')]", + "type": "String" + }, + "vaultListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultLocationListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "vaultSubscriptionListFilter": { + "defaultValue": "\"*\"", + "type": "String" + }, + "workspacesToQuery": { + "defaultValue": "GET-PREREQ-existingWorkspacesToQuery", + "type": "Array" + } + }, + "triggers": { + "Recurrence": { + "recurrence": { + "frequency": "Day", + "interval": 1 + }, + "type": "Recurrence" + } + }, + "actions": { + "For_each": { + "foreach": "@parameters('workspacesToQuery')", + "actions": { + "Append_to_string_variable": { + "type": "AppendToStringVariable", + "inputs": { + "name": "AzureDiagnostics_Incomplete", + "value": " workspace('@{items('For_each')}').AzureDiagnostics," + } + }, + "Append_to_string_variable_2": { + "runAfter": { + "Append_to_string_variable": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "CoreAzureBackup_Incomplete", + "value": " workspace('@{items('For_each')}').CoreAzureBackup," + } + }, + "Append_to_string_variable_3": { + "runAfter": { + "Append_to_string_variable_2": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupJobs_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupJobs," + } + }, + "Append_to_string_variable_4": { + "runAfter": { + "Append_to_string_variable_3": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupPolicy_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupPolicy," + } + }, + "Append_to_string_variable_5": { + "runAfter": { + "Append_to_string_variable_4": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupProtectedInstance," + } + }, + "Append_to_string_variable_6": { + "runAfter": { + "Append_to_string_variable_5": [ + "Succeeded" + ] + }, + "type": "AppendToStringVariable", + "inputs": { + "name": "AddonAzureBackupStorage_Incomplete", + "value": " workspace('@{items('For_each')}').AddonAzureBackupStorage," + } + } + }, + "runAfter": { + "Initialize_variable-AddonAzureBackupStorage": [ + "Succeeded" + ] + }, + "type": "Foreach" + }, + "If_Scope_Failed": { + "actions": { + "Send_an_email_(V2)-FailureRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Body": "

The Logic App Run did not execute to completion.
\n
Status: @{result('Scope')[0]['status']}

Learn more about how to troubleshoot the error

", + "Subject": "Usage", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + }, + "runAfter": { + "Scope": [ + "Succeeded", + "Failed", + "Skipped", + "TimedOut" + ] + }, + "else": { + "actions": { + "Send_an_email_(V2)-SuccessfulRun": { + "type": "ApiConnection", + "inputs": { + "body": { + "Attachments": [ + { + "ContentBytes": "@{body('Run_query_and_visualize_results-BillingGroupTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-BillingGroupTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{body('Run_query_and_visualize_results-CloudStorageTrend')?['attachmentContent']}", + "Name": "@body('Run_query_and_visualize_results-CloudStorageTrend')?['attachmentName']" + }, + { + "ContentBytes": "@{base64(body('Create_CSV_table-BillingGroupList'))}", + "Name": "BillingGroupList.csv" + } + ], + "Body": "


\nUsage Report
\n

\nEmail Contents
\n

\n1. Inline
a. Trend of protected instance count over time
b. Trend of backup cloud storage (GB) consumed over time
2. Attachments
a. List of all billin groups with details on protected instance count, total cloud storage consumed (GB), storage replication type etc.

Learn more about Backup Reports
\n
\n@{variables('visual')}
\n
\n
\n

\n
\n

", + "Subject": "Usage", + "To": "vijeya@microsoft.com" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['office365']['connectionId']" + } + }, + "method": "post", + "path": "/v2/Mail" + } + } + } + }, + "expression": { + "or": [ + { + "equals": [ + "@result('Scope')[0]['status']", + "Failed" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Aborted" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "Skipped" + ] + }, + { + "equals": [ + "@result('Scope')[0]['status']", + "TimedOut" + ] + } + ] + }, + "type": "If" + }, + "Initialize_variable-NoDataMessage": { + "inputs": { + "variables": [ + { + "name": "NoDataMessage", + "type": "array", + "value": [ + { + "Message": "No records found" + } + ] + } + ] + }, + "runAfter": { + "Initialize_variable-EmailBodyForSuccessfulRun": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" + }, + "Initialize_variable-AddonAzureBackupJobs": { + "runAfter": { + "Initialize_variable-CoreAzureBackup": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupJobs_Incomplete", + "type": "string", + "value": "let AddonAzureBackupJobs = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupPolicy": { + "runAfter": { + "Initialize_variable-AddonAzureBackupJobs": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupPolicy_Incomplete", + "type": "string", + "value": "let AddonAzureBackupPolicy = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupProtectedInstance": { + "runAfter": { + "Initialize_variable-AddonAzureBackupPolicy": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupProtectedInstance_Incomplete", + "type": "string", + "value": "let AddonAzureBackupProtectedInstance = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AddonAzureBackupStorage": { + "runAfter": { + "Initialize_variable-AddonAzureBackupProtectedInstance": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AddonAzureBackupStorage_Incomplete", + "type": "string", + "value": "let AddonAzureBackupStorage = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-AzureDiagnostics": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "AzureDiagnostics_Incomplete", + "type": "string", + "value": "let AzureDiagnostics = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-BillingGroupFunction": { + "runAfter": { + "Initialize_variable-ReportFilterForLatestData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BillingGroupFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Latest')}\nlet _BillingGroupName = \"*\";\n//Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\nlet AzureStorageProtectedInstanceCountCutoffDate = datetime(2/01/2021, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedInstanceUnderAzureDiagnostics = (isProtectedContainerBillingType:bool)\n{\n let ProtectedInstanceTable = AzureDiagnostics \n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedInstance\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"),\n ProtectedInstanceCount = toint(columnifexists(\"ProtectedInstanceCount_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId;\nProtectedInstanceTable\n};\nlet ProtectedInstanceUnderResourceSpecific = (isProtectedContainerBillingType:bool)\n{\nlet ProtectedInstanceTable = AddonAzureBackupProtectedInstance \n| where OperationName == \"ProtectedInstance\" and State != \"Deleted\"\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId;\nProtectedInstanceTable\n};\nlet ProtectedInstanceHistoryUnderAzureDiagnostics = (isProtectedContainerBillingType:bool)\n{\n let ProtectedInstanceTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedInstance\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"),\n ProtectedInstanceCount = toint(columnifexists(\"ProtectedInstanceCount_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nProtectedInstanceTable\n};\nlet ProtectedInstanceHistoryUnderResourceSpecific = (isProtectedContainerBillingType:bool)\n{\nlet ProtectedInstanceTable = AddonAzureBackupProtectedInstance \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"ProtectedInstance\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay = startofday(TimeGenerated)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay;\nProtectedInstanceTable\n};\n// BusinessLogic\nlet LatestBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| where BackupItemUniqueId != \"\"\n// To show as per as on 'AsonDay'\n| where startofday(TimeGenerated) == AsonDay\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or BackupItemFriendlyName contains (_BillingGroupName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or BackupItemFriendlyName contains (_BillingGroupName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_CombinationUnderAzureDiagnostics = ()\n{\nlet Base = () {ProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderAzureDiagnostics \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderAzureDiagnostics | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nBase_Size\n};\nlet BI_CombinationUnderResourceSpecific = ()\n{\nlet Base = () {ProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n| join kind= rightouter (\n BackupItemAssociationUnderResourceSpecific \n\t// To show as per as on 'AsonDay'\n\t| where startofday(TimeGenerated) == AsonDay\n\t| project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n) on ProtectedContainerUniqueId \n| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, ResourceId\n};\nlet Base_Size = ()\n{\nBase\n| join kind= leftouter (\n BackupItemFrontEndSizeUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated \n) on BackupItemUniqueId\n// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n| join kind= leftouter (\n StorageAssociationUnderResourceSpecific | where startofday(TimeGenerated) == AsonDay | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated\n) on BackupItemUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n StorageConsumedInMBs, TimeGenerated, ResourceId\n};\nBase_Size\n};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\t\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\nBase_Size\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tBase_Size\n};\nlet LatestBackupItemAssociationAndStorageConsumptionTable = ()\n{\nLatestBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_CombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(BI_CombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n)on BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nVaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, TimeRangeEndDay = startofday(TimeGenerated)\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = () \n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(BI_HistoryCombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nVaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, TimeRangeEndDay\n};\nlet LatestProtectedContainerHistoryInfoTableExcludingDPMVMs = (){\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable \n| where not((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \nor (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n| summarize StorageConsumedInMBs = sum(StorageConsumedInMBs), BackupItemFrontEndSize = sum(BackupItemFrontEndSize), ProtectedContainerName = any(ProtectedContainerName), ProtectedContainerFriendlyName = any(ProtectedContainerFriendlyName), CustomBackupManagementType = iff((any(BackupManagementType) has \"AzureWorkload\"), any(strcat(BackupManagementType, \"/\", BackupItemType)), any(BackupManagementType)), BackupManagementType = any(BackupManagementType), BackupSolution = any(BackupSolution), VaultUniqueId = any(VaultUniqueId), VaultName = any(VaultName), VaultTags = any(VaultTags), SubscriptionId = any(SubscriptionId), ResourceGroupName = any(ResourceGroupName), AzureDataCenter = any(AzureDataCenter), StorageReplicationType = any(StorageReplicationType), ResourceId = any(ResourceId), TimeGenerated = any(TimeGenerated) by ProtectedContainerUniqueId, TimeRangeEndDay\n};\nlet LatestProtectedContainerInfoTableExcludingDPMVMs = (){\n// projecting TimeRangeDay to distill the report for RangeEndDay\nLatestBackupItemAssociationAndStorageConsumptionTable\n| where not((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \nor (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n// CustomBackupManagementType needed to distinguish 'AzureWorkload' \n| summarize StorageConsumedInMBs = sum(StorageConsumedInMBs), BackupItemFrontEndSize = sum(BackupItemFrontEndSize), ProtectedContainerName = any(ProtectedContainerName), ProtectedContainerFriendlyName= any(ProtectedContainerFriendlyName), CustomBackupManagementType = iff((any(BackupManagementType) has \"AzureWorkload\"), any(strcat(BackupManagementType, \"/\", BackupItemType)), any(BackupManagementType)),\nBackupManagementType = any(BackupManagementType), BackupSolution = any(BackupSolution), VaultUniqueId = any(VaultUniqueId), VaultName = any(VaultName), VaultTags = any(VaultTags), SubscriptionId = any(SubscriptionId), ResourceGroupName = any(ResourceGroupName), AzureDataCenter = any(AzureDataCenter), StorageReplicationType = any(StorageReplicationType), ResourceId = any(ResourceId), TimeGenerated = any(TimeGenerated), TimeRangeEndDay = startofday(any(TimeGenerated)) by ProtectedContainerUniqueId\n};\nlet TotalProtectedInstanceHistoryTable = (isProtectedContainerBillingType:bool) \n{union isfuzzy = true \n(ProtectedInstanceHistoryUnderAzureDiagnostics(isProtectedContainerBillingType) | where _ExcludeLegacyEvent == false),\n(ProtectedInstanceHistoryUnderResourceSpecific(isProtectedContainerBillingType))\n// ProtectedInstance is at BillingGroup level. CustomBackupManagementType can be the filter used.\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay\n};\nlet LatestProtectedInstanceTable = (isProtectedContainerBillingType:bool) \n{union isfuzzy = true \n(ProtectedInstanceUnderAzureDiagnostics(isProtectedContainerBillingType) | where _ExcludeLegacyEvent == false),\n(ProtectedInstanceUnderResourceSpecific(isProtectedContainerBillingType))\n| where startofday(TimeGenerated) == AsonDay\n// ProtectedInstance is at BillingGroup level. CustomBackupManagementType can be the filter used.\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay = startofday(TimeGenerated)\n};\nlet LatestProtectedInstanceHistoryTableFromProtectedContainerUniqueId = ()\n{ \nTotalProtectedInstanceHistoryTable(true) \n| join kind= rightouter (LatestProtectedContainerHistoryInfoTableExcludingDPMVMs) on ProtectedContainerUniqueId, TimeRangeEndDay\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementType = BackupManagementType1, BackupSolution, CustomBackupManagementType, BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, BillingGroupUniqueId = ProtectedContainerUniqueId1, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter,\nStorageReplicationType, ResourceId\n};\nlet LatestProtectedInstanceTableFromProtectedContainerUniqueId = ()\n{ \nLatestProtectedInstanceTable(true)\n| join kind= rightouter (LatestProtectedContainerInfoTableExcludingDPMVMs ) on ProtectedContainerUniqueId\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementType = BackupManagementType1, BackupSolution, CustomBackupManagementType, BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, BillingGroupUniqueId = ProtectedContainerUniqueId1, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter,\nStorageReplicationType, ResourceId\n};\nlet LatestProtectedInstanceHistoryTableFromBackupItemUniqueId = ()\n{ \n(TotalProtectedInstanceHistoryTable(false) \n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\"))\n| join kind= rightouter (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where ((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \n or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n | extend CustomBackupManagementType = BackupManagementType) on BackupItemUniqueId, TimeRangeEndDay\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, CustomBackupManagementType, BackupManagementType, BackupSolution, BillingGroupType = \"Datasource\", BillingGroupFriendlyName = BackupItemFriendlyName, BillingGroupUniqueId = BackupItemUniqueId1, BillingGroupName = BackupItemName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet LatestProtectedInstanceTableFromBackupItemUniqueId = ()\n{ \n(LatestProtectedInstanceTable(false)\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\"))\n| join kind= rightouter \n// applicable only for DPM VM Scenarios\n(LatestBackupItemAssociationAndStorageConsumptionTable | where ((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \nor (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n| extend CustomBackupManagementType = BackupManagementType) on BackupItemUniqueId\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementType, CustomBackupManagementType, BackupSolution, BillingGroupType = \"Datasource\", BillingGroupFriendlyName = BackupItemFriendlyName, \n BillingGroupUniqueId = BackupItemUniqueId1, BillingGroupName = BackupItemName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\n// Special handling for DPM, AzureBackupServer Cluster scenario - Node PS has ProtectedInstance, whereas Cluster PS has storage Consumption\nlet LatestProtectedInstanceHistoryTableFromDPMNodeProtectedContainerUniqueId = ()\n{ \n((TotalProtectedInstanceHistoryTable(true) \n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where ProtectedInstanceCount > 0)\n| join kind= leftanti (LatestProtectedContainerHistoryInfoTableExcludingDPMVMs ) on ProtectedContainerUniqueId, TimeRangeEndDay\n| project ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay)\n| join (\nunion isfuzzy = true \n(ProtectedContainerUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ProtectedContainerUnderResourceSpecific())\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId)\n on ProtectedContainerUniqueId\n // BackupItemFrontEndSize and StorageConsumed will be 0.0 as the same will be calculated at cluster level \n // As it is DPM or AzureBackupServer, no extra handling needed for AzureWorkload\n // Ideally the TimeGenerated field should come from BackupItem/ProtectedContainer. This is a special case and we are getting the container properties from latest table and not from history table.\n| project TimeRangeEndDay, TimeGenerated, ProtectedInstanceCount, BackupItemFrontEndSize = 0.0, StorageConsumedInMBs = 0.0, BackupManagementType, CustomBackupManagementType = BackupManagementType, \nBackupSolution = iff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \"DPM\"), BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, \n BillingGroupUniqueId = ProtectedContainerUniqueId, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\n// Special handling for DPM, AzureBackupServer Cluster scenario - Node PS has ProtectedInstance, whereas Cluster PS has storage Consumption\nlet LatestProtectedInstanceTableFromDPMNodeProtectedContainerUniqueId = ()\n{ \n(\n(LatestProtectedInstanceTable(true)\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where ProtectedInstanceCount > 0)\n| join kind= leftanti (LatestProtectedContainerInfoTableExcludingDPMVMs ) on ProtectedContainerUniqueId\n| project ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay)\n| join (\nunion isfuzzy = true \n(ProtectedContainerUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ProtectedContainerUnderResourceSpecific())\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId)\n on ProtectedContainerUniqueId\n // BackupItemFrontEndSize and StorageConsumed will be 0.0 as the same will be calculated at cluster level \n // As it is DPM or AzureBackupServer, no extra handling needed for AzureWorkload\n // Ideally the TimeGenerated field should come from BackupItem/ProtectedContainer. This is a special case and we are getting the container properties from latest table and not from history table.\n| project TimeRangeEndDay, TimeGenerated, ProtectedInstanceCount, BackupItemFrontEndSize = 0.0, StorageConsumedInMBs = 0.0, BackupManagementType, CustomBackupManagementType = BackupManagementType,\n BackupSolution = iff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \"DPM\"), BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, \n BillingGroupUniqueId = ProtectedContainerUniqueId, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet ProtectedInstanceHistoryMetric = ( )\n{ union \n(LatestProtectedInstanceHistoryTableFromProtectedContainerUniqueId()),\n(LatestProtectedInstanceHistoryTableFromBackupItemUniqueId()),\n(LatestProtectedInstanceHistoryTableFromDPMNodeProtectedContainerUniqueId)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| project CustomBackupManagementType, BackupItemFrontEndSize, StorageConsumedInMBs, BillingGroupUniqueId, BillingGroupFriendlyName, BillingGroupName, ProtectedInstanceCount, BillingGroupType, TimeRangeEndDay, TimeGenerated, BackupManagementType, BackupSolution, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet ProtectedInstanceMetric = ( ) \n{ union \n(LatestProtectedInstanceTableFromBackupItemUniqueId() ),\n(LatestProtectedInstanceTableFromProtectedContainerUniqueId()),\n(LatestProtectedInstanceTableFromDPMNodeProtectedContainerUniqueId)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| project CustomBackupManagementType, BackupManagementType, BackupSolution, BackupItemFrontEndSize, StorageConsumedInMBs, ProtectedInstanceCount, BillingGroupUniqueId, BillingGroupFriendlyName, BillingGroupName, BillingGroupType, TimeRangeEndDay, TimeGenerated, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet FinalTable = () {union (ProtectedInstanceMetric | where (_RangeEnd-_RangeStart == 1d)), (ProtectedInstanceHistoryMetric | where (_RangeEnd-_RangeStart > 1d))\n};\n// Display Tweaks for AFS and null ProtectedInstanceCount\n// Billing Entity is at BackupManagementType level and not at DS level. \nlet FinalTable_V1Vault = () {FinalTable\n| project CustomBackupManagementType, BackupManagementType, BackupSolution, ProtectedInstanceCount = iff(isempty(ProtectedInstanceCount), 0.0 ,todouble(ProtectedInstanceCount)/10), StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), todouble(StorageConsumedInMBs)), BackupItemFrontEndSize = iff(isempty(BackupItemFrontEndSize), todouble(0), todouble(BackupItemFrontEndSize)), BillingGroupUniqueId, BillingGroupType, BillingGroupName, BillingGroupFriendlyName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, StorageReplicationType, ProtectedContainerName, TimeGenerated\n| project UniqueId = BillingGroupUniqueId, Name = BillingGroupName, Type = BillingGroupType, FriendlyName = BillingGroupFriendlyName, SourceSizeInMBs = BackupItemFrontEndSize, ExtendedProperties = pack(\"ProtectedInstanceCount\", ProtectedInstanceCount), VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, BackupSolution, VaultUniqueId, VaultName, VaultResourceId = ResourceId, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultTags, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-BillingGroupTrendFunction": { + "runAfter": { + "Initialize_variable-BillingGroupFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "BillingGroupTrendFunction", + "type": "string", + "value": "@{variables('workspacesToQuery_Custom')}\n@{variables('ReportFilter_Trend')}\nlet _BillingGroupName = \"*\";\n//Other Vars\nlet AsonDay = _RangeEnd-1d;\nlet AzureStorageCutoffDate = datetime(6/01/2020, 12:00:00.000 AM);\nlet AzureStorageProtectedInstanceCountCutoffDate = datetime(2/01/2021, 12:00:00.000 AM);\n// HelperFunctions\nlet Extend_BackupSolution = (T:(BackupManagementType:string, BackupItemType:string))\n{\nT | extend BackupSolution = iff(BackupManagementType == \"IaaSVM\", \"Azure Virtual Machine Backup\", \niff(BackupManagementType == \"MAB\", \"Azure Backup Agent\", \niff(BackupManagementType == \"DPM\", \"DPM\", \niff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \niff(BackupManagementType == \"AzureStorage\", \"Azure Storage (Azure Files) Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SQLDataBase\", \"SQL in Azure VM Backup\", \niff(BackupManagementType == \"AzureWorkload\" and BackupItemType == \"SAPHanaDatabase\", \"SAP HANA in Azure VM Backup\", \"\")))))))\n};\n// Source Tables\nlet VaultUnderAzureDiagnostics = ()\n{\nAzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"Vault\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\"\n| project VaultName = columnifexists(\"VaultName_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), VaultTags = columnifexists(\"VaultTags_s\", \"\"), AzureDataCenter = columnifexists(\"AzureDataCenter_s\", \"\"), ResourceGroupName = columnifexists(\"ResourceGroupName_s\", \"\"), SubscriptionId = toupper(SubscriptionId), StorageReplicationType = columnifexists(\"StorageReplicationType_s\", \"\"), ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated\n};\nlet VaultUnderResourceSpecific = ()\n{\nCoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"Vault\" \n| project StorageReplicationType, VaultUniqueId, VaultName, VaultTags, SubscriptionId = toupper(SubscriptionId), ResourceGroupName, AzureDataCenter, ResourceId, TimeGenerated \n| where SubscriptionId in~ (_VaultSubscriptionList) or '*' in (_VaultSubscriptionList)\n| where AzureDataCenter in~ (_VaultLocationList) or '*' in (_VaultLocationList)\n| where VaultName in~ (_VaultList) or '*' in (_VaultList)\n| summarize arg_max(TimeGenerated, *) by ResourceId\n};\nlet ResourceIdListUnderAzureDiagnostics = materialize(VaultUnderAzureDiagnostics | distinct ResourceId);\nlet ResourceIdListUnderResourceSpecific = materialize(VaultUnderResourceSpecific | distinct ResourceId);\nlet BackupItemUnderAzureDiagnostics = ()\n{\nlet SourceBackupItemTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItem\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupItemProtectionState = columnifexists(\"BackupItemProtectionState_s\", \"\"), BackupItemAppVersion = columnifexists(\"BackupItemAppVersion_s\", \"\"),SecondaryBackupProtectionState = columnifexists(\"SecondaryBackupProtectionState_s\", \"\"), BackupItemName = columnifexists(\"BackupItemName_s\", \"\"), BackupItemFriendlyName = columnifexists(\"BackupItemFriendlyName_s\", \"\"),\nBackupItemType = columnifexists(\"BackupItemType_s\", \"\"), ProtectionGroupName = columnifexists(\"ProtectionGroupName_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderAzureDiagnostics | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemUnderResourceSpecific = ()\n{\nlet SourceBackupItemTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"BackupItem\" and State != \"Deleted\"\n//Handle MAB system state\n// Excluding SecondaryBackupProtectionState, BackupItemAppVersion, ProtectionGroupName\n| project BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupItemName = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), \"System State\", BackupItemName), BackupItemProtectionState, BackupItemAppVersion, SecondaryBackupProtectionState, ProtectionGroupName, BackupItemFriendlyName, BackupItemType, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\");\nlet BackupItemTable = Extend_BackupSolution(SourceBackupItemTable)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nVaultUnderResourceSpecific | join (\n BackupItemTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet BackupItemAssociationUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\") , PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), \nVaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), PolicyUniqueIdGuid = columnifexists(\"PolicyUniqueId_g\", \"\"), PolicyUniqueIdStr = columnifexists(\"PolicyUniqueId_s\", \"\"),\nTimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n// PolicyUniqueId can be either guid or string due to AzureDiagnostics behaviour\n| project PolicyUniqueId = iff(PolicyUniqueIdGuid == \"\", PolicyUniqueIdStr, PolicyUniqueIdGuid), BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemAssociationHistoryUnderResourceSpecific = ()\n{\nlet BackupItemAssociationTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemAssociation\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Handle MAB SystemState\n| project PolicyUniqueId, BackupItemUniqueId = iff((BackupManagementType == \"MAB\" and BackupItemUniqueId contains \"ssbv\\\\\"), replace(@\"[^;]+$\", @\"systemstate\", BackupItemUniqueId ), BackupItemUniqueId), BackupManagementServerUniqueId, ProtectedContainerUniqueId, VaultUniqueId, BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemAssociationTable\n};\nlet BackupItemFrontEndSizeHistoryUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeHistoryUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderAzureDiagnostics = ()\n{\n let BackupItemFrontEndSizeTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"BackupItemFrontEndSizeConsumption\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemFrontEndSize = todouble(columnifexists(\"BackupItemFrontEndSize_s\", \"\")), BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet BackupItemFrontEndSizeUnderResourceSpecific = ()\n{\nlet BackupItemFrontEndSizeTable = CoreAzureBackup \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"BackupItemFrontEndSizeConsumption\" and State != \"Deleted\"\n| project BackupItemFrontEndSize, BackupItemUniqueId, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nBackupItemFrontEndSizeTable\n};\nlet StorageAssociationHistoryUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationHistoryUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now()) \n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated)) \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nStorageAssociationTable\n};\nlet StorageAssociationUnderAzureDiagnostics = ()\n{\n let StorageAssociationTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"StorageAssociation\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), VaultUniqueId = columnifexists(\"VaultUniqueId_s\", \"\"), StorageUniqueId = columnifexists(\"StorageUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"), StorageConsumedInMBs = todouble(columnifexists(\"StorageConsumedInMBs_s\", \"\")), \nStorageAllocatedInMBs = todouble(columnifexists(\"StorageAllocatedInMBs_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet StorageAssociationUnderResourceSpecific = ()\n{\nlet StorageAssociationTable = AddonAzureBackupStorage \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"StorageAssociation\" and State != \"Deleted\"\n// Not Projecting ProtectedContainerUniqueId - DPM/AzureBackupServer ProtectedContainer (incase of cluster) is node PS and not cluster PS\n| project BackupItemUniqueId, VaultUniqueId, BackupManagementServerUniqueId, StorageUniqueId, StorageConsumedInMBs, StorageAllocatedInMBs, BackupManagementType, TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n// Providers like DPM, AzureBackupServer has Disk storage. Filtering out cloud storage only.\n| where split(StorageUniqueId, \";\")[2] has \"cloud\"\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId;\nStorageAssociationTable\n};\nlet ProtectedContainerUnderAzureDiagnostics = ()\n{\nlet ProtectedContainerTable = AzureDiagnostics\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedContainer\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), ProtectedContainerFriendlyName = columnifexists(\"ProtectedContainerFriendlyName_s\", \"\"), AgentVersion = columnifexists(\"AgentVersion_s\", \"\"),\nProtectedContainerOSType = columnifexists(\"ProtectedContainerOSType_s\", \"\"), ProtectedContainerOSVersion = columnifexists(\"ProtectedContainerOSVersion_s\", \"\"), ProtectedContainerWorkloadType = columnifexists(\"ProtectedContainerWorkloadType_s\", \"\"), ProtectedContainerName = columnifexists(\"ProtectedContainerName_s\", \"\"), ProtectedContainerProtectionState = columnifexists(\"ProtectedContainerProtectionState_s\", \"\"), ProtectedContainerLocation = columnifexists(\"ProtectedContainerLocation_s\", \"\"), ProtectedContainerType = columnifexists(\"ProtectedContainerType_s\", \"\"),\nBackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderAzureDiagnostics | join (\n ProtectedContainerTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedContainerUnderResourceSpecific = ()\n{\nlet ProtectedContainerTable = CoreAzureBackup\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where OperationName == \"ProtectedContainer\" and State != \"Deleted\"\n| project ProtectedContainerUniqueId, ProtectedContainerFriendlyName, AgentVersion,\nProtectedContainerOSType, ProtectedContainerOSVersion, ProtectedContainerWorkloadType, ProtectedContainerName, ProtectedContainerProtectionState, ProtectedContainerLocation, ProtectedContainerType,\nBackupManagementType, TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId;\nVaultUnderResourceSpecific | join (\n ProtectedContainerTable \n) on ResourceId\n| project-away ResourceId1, TimeGenerated1;\n};\nlet ProtectedInstanceUnderAzureDiagnostics = (isProtectedContainerBillingType:bool)\n{\n let ProtectedInstanceTable = AzureDiagnostics \n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedInstance\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"),\n ProtectedInstanceCount = toint(columnifexists(\"ProtectedInstanceCount_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId \n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId;\nProtectedInstanceTable\n};\nlet ProtectedInstanceUnderResourceSpecific = (isProtectedContainerBillingType:bool)\n{\nlet ProtectedInstanceTable = AddonAzureBackupProtectedInstance \n| where OperationName == \"ProtectedInstance\" and State != \"Deleted\"\n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId \n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId;\nProtectedInstanceTable\n};\nlet ProtectedInstanceHistoryUnderAzureDiagnostics = (isProtectedContainerBillingType:bool)\n{\n let ProtectedInstanceTable = AzureDiagnostics \n // Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderAzureDiagnostics)\n| where Category == \"AzureBackupReport\" and OperationName == \"ProtectedInstance\" and columnifexists(\"SchemaVersion_s\", \"\") == \"V2\" and columnifexists(\"State_s\", \"\") != \"Deleted\"\n| project BackupItemUniqueId = columnifexists(\"BackupItemUniqueId_s\", \"\"), ProtectedContainerUniqueId = columnifexists(\"ProtectedContainerUniqueId_s\", \"\"), BackupManagementServerUniqueId = columnifexists(\"BackupManagementServerUniqueId_s\", \"\"),\n ProtectedInstanceCount = toint(columnifexists(\"ProtectedInstanceCount_s\", \"\")), BackupManagementType = columnifexists(\"BackupManagementType_s\", \"\"), TimeGenerated, ResourceId\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\") \n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay = startofday(TimeGenerated);\nProtectedInstanceTable\n};\nlet ProtectedInstanceHistoryUnderResourceSpecific = (isProtectedContainerBillingType:bool)\n{\nlet ProtectedInstanceTable = AddonAzureBackupProtectedInstance \n// Take records until previous day\n| where TimeGenerated >= _RangeStart and TimeGenerated <= _RangeEnd and TimeGenerated < startofday(now())\n| where ResourceId in (ResourceIdListUnderResourceSpecific)\n| where OperationName == \"ProtectedInstance\" and State != \"Deleted\"\n| where not(TimeGenerated <= AzureStorageCutoffDate and BackupManagementType == \"AzureStorage\")\n| where (_AggregationType =~ \"Daily\") or (_AggregationType =~ \"Weekly\" and startofday(TimeGenerated) == startofweek(TimeGenerated)) or (_AggregationType =~ \"Monthly\" and startofday(TimeGenerated) == startofmonth(TimeGenerated))\n| where (BackupItemUniqueId == \"\" and isProtectedContainerBillingType) or (ProtectedContainerUniqueId == \"\" and not(isProtectedContainerBillingType))\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId,\n ProtectedInstanceCount = iff((BackupManagementType == \"AzureStorage\" and TimeGenerated <= AzureStorageProtectedInstanceCountCutoffDate), 0, ProtectedInstanceCount), BackupManagementType, TimeGenerated, ResourceId\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay = startofday(TimeGenerated)\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementServerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay;\nProtectedInstanceTable\n};\n// BusinessLogic\nlet TotalBackupItemDimensionTable = () {union isfuzzy = true \n(BackupItemUnderAzureDiagnostics()),\n(BackupItemUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or BackupItemFriendlyName contains (_BillingGroupName)\n| extend BackupItemProtectionState = iff(BackupItemProtectionState in (\"Protected\", \"ActivelyProtected\",\"ProtectionError\"), \"Protected\", iff(BackupItemProtectionState in (\"IRPending\"), \"InitialBackupPending\", iff(isnotempty(BackupItemProtectionState),\"ProtectionStopped\",BackupItemProtectionState)))\n//| where BackupItemProtectionState in~ (_ProtectionInfoList) or '*' in (_ProtectionInfoList)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nStorageReplicationType, ResourceId, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter};\nlet BI_HistoryCombinationUnderAzureDiagnostics = ()\n{\t\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderAzureDiagnostics | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderAzureDiagnostics | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderAzureDiagnostics | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderAzureDiagnostics | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\nBase_Size\n};\nlet BI_HistoryCombinationUnderResourceSpecific = ()\n{\n\tlet Base = ()\n\t{\n\tProtectedContainerUnderResourceSpecific | distinct ProtectedContainerName, ProtectedContainerFriendlyName, ProtectedContainerUniqueId \n\t| join kind= rightouter (\n\t\tBackupItemAssociationHistoryUnderResourceSpecific | project ProtectedContainerUniqueId, BackupItemUniqueId, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t) on ProtectedContainerUniqueId\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId = ProtectedContainerUniqueId1, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tlet Base_Size = ()\n\t{\n\tBase\n\t| join kind= leftouter (\n\t BackupItemFrontEndSizeHistoryUnderResourceSpecific | project BackupItemFrontEndSize, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay \n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t// using leftouter due to AzureStorage - storageconsumption table is not emitted. inner join will exclude AzureStorage BackupItems.\n\t| join kind= leftouter (\n\t StorageAssociationHistoryUnderResourceSpecific | project StorageConsumedInMBs, BackupItemUniqueId, TimeGenerated, TimeRangeEndDay\n\t) on BackupItemUniqueId, TimeRangeEndDay\n\t| project BackupItemUniqueId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, BackupManagementServerUniqueId, PolicyUniqueId, BackupItemFrontEndSize,\n\t StorageConsumedInMBs, TimeGenerated, TimeRangeEndDay, ResourceId\n\t};\n\tBase_Size\n};\nlet LatestBackupItemAssociationAndStorageConsumptionHistoryTable = () \n{\nTotalBackupItemDimensionTable | join \n(union isfuzzy = true \n(BI_HistoryCombinationUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(BI_HistoryCombinationUnderResourceSpecific())\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, TimeRangeEndDay)\n on BackupItemUniqueId\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| project BackupItemUniqueId, BackupItemName, BackupItemFriendlyName, BackupManagementType, BackupItemType, BackupSolution, BackupItemProtectionState,\nVaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, TimeGenerated, ResourceId, ProtectedContainerUniqueId, ProtectedContainerName, ProtectedContainerFriendlyName, PolicyUniqueId, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementServerUniqueId, StorageReplicationType, TimeRangeEndDay\n};\nlet LatestProtectedContainerHistoryInfoTableExcludingDPMVMs = (){\nLatestBackupItemAssociationAndStorageConsumptionHistoryTable \n| where not((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \nor (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n| summarize StorageConsumedInMBs = sum(StorageConsumedInMBs), BackupItemFrontEndSize = sum(BackupItemFrontEndSize), ProtectedContainerName = any(ProtectedContainerName), ProtectedContainerFriendlyName = any(ProtectedContainerFriendlyName), CustomBackupManagementType = iff((any(BackupManagementType) has \"AzureWorkload\"), any(strcat(BackupManagementType, \"/\", BackupItemType)), any(BackupManagementType)), BackupManagementType = any(BackupManagementType), BackupSolution = any(BackupSolution), VaultUniqueId = any(VaultUniqueId), VaultName = any(VaultName), VaultTags = any(VaultTags), SubscriptionId = any(SubscriptionId), ResourceGroupName = any(ResourceGroupName), AzureDataCenter = any(AzureDataCenter), StorageReplicationType = any(StorageReplicationType), ResourceId = any(ResourceId), TimeGenerated = any(TimeGenerated) by ProtectedContainerUniqueId, TimeRangeEndDay\n};\nlet TotalProtectedInstanceHistoryTable = (isProtectedContainerBillingType:bool) \n{union isfuzzy = true \n(ProtectedInstanceHistoryUnderAzureDiagnostics(isProtectedContainerBillingType) | where _ExcludeLegacyEvent == false),\n(ProtectedInstanceHistoryUnderResourceSpecific(isProtectedContainerBillingType))\n// ProtectedInstance is at BillingGroup level. CustomBackupManagementType can be the filter used.\n//| where BackupManagementType in (BackupManagementTypeParam) or '*' in (BackupManagementTypeParam)\n| summarize arg_max(TimeGenerated, *) by BackupItemUniqueId, ProtectedContainerUniqueId, TimeRangeEndDay\n| project BackupItemUniqueId, ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay\n};\nlet LatestProtectedInstanceHistoryTableFromProtectedContainerUniqueId = ()\n{ \nTotalProtectedInstanceHistoryTable(true) \n| join kind= rightouter (LatestProtectedContainerHistoryInfoTableExcludingDPMVMs) on ProtectedContainerUniqueId, TimeRangeEndDay\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, BackupManagementType = BackupManagementType1, BackupSolution, CustomBackupManagementType, BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, BillingGroupUniqueId = ProtectedContainerUniqueId1, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter,\nStorageReplicationType, ResourceId\n};\nlet LatestProtectedInstanceHistoryTableFromBackupItemUniqueId = ()\n{ \n(TotalProtectedInstanceHistoryTable(false) \n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\"))\n| join kind= rightouter (LatestBackupItemAssociationAndStorageConsumptionHistoryTable | where ((BackupManagementType has \"DPM\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"DPM\" and BackupItemType has \"HyperVVM\") \n or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"VMwareVM\") or (BackupManagementType has \"AzureBackupServer\" and BackupItemType has \"HyperVVM\"))\n | extend CustomBackupManagementType = BackupManagementType) on BackupItemUniqueId, TimeRangeEndDay\n| project TimeRangeEndDay = TimeRangeEndDay1, TimeGenerated = TimeGenerated1, ProtectedInstanceCount, BackupItemFrontEndSize, StorageConsumedInMBs, CustomBackupManagementType, BackupManagementType, BackupSolution, BillingGroupType = \"Datasource\", BillingGroupFriendlyName = BackupItemFriendlyName, BillingGroupUniqueId = BackupItemUniqueId1, BillingGroupName = BackupItemName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\n// Special handling for DPM, AzureBackupServer Cluster scenario - Node PS has ProtectedInstance, whereas Cluster PS has storage Consumption\nlet LatestProtectedInstanceHistoryTableFromDPMNodeProtectedContainerUniqueId = ()\n{ \n((TotalProtectedInstanceHistoryTable(true) \n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where ProtectedInstanceCount > 0)\n| join kind= leftanti (LatestProtectedContainerHistoryInfoTableExcludingDPMVMs ) on ProtectedContainerUniqueId, TimeRangeEndDay\n| project ProtectedContainerUniqueId, BackupManagementType, ResourceId, TimeGenerated, ProtectedInstanceCount, TimeRangeEndDay)\n| join (\nunion isfuzzy = true \n(ProtectedContainerUnderAzureDiagnostics() | where _ExcludeLegacyEvent == false),\n(ProtectedContainerUnderResourceSpecific())\n| where BackupManagementType in (\"DPM\",\"AzureBackupServer\")\n| where isempty(_BillingGroupName) or _BillingGroupName == \"*\" or ProtectedContainerFriendlyName contains (_BillingGroupName)\n| summarize arg_max(TimeGenerated, *) by ProtectedContainerUniqueId)\n on ProtectedContainerUniqueId\n // BackupItemFrontEndSize and StorageConsumed will be 0.0 as the same will be calculated at cluster level \n // As it is DPM or AzureBackupServer, no extra handling needed for AzureWorkload\n // Ideally the TimeGenerated field should come from BackupItem/ProtectedContainer. This is a special case and we are getting the container properties from latest table and not from history table.\n| project TimeRangeEndDay, TimeGenerated, ProtectedInstanceCount, BackupItemFrontEndSize = 0.0, StorageConsumedInMBs = 0.0, BackupManagementType, CustomBackupManagementType = BackupManagementType, \nBackupSolution = iff(BackupManagementType == \"AzureBackupServer\", \"Azure Backup Server\", \"DPM\"), BillingGroupType = \"DatasourceSet\", BillingGroupFriendlyName = ProtectedContainerFriendlyName, \n BillingGroupUniqueId = ProtectedContainerUniqueId, BillingGroupName = ProtectedContainerName, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet ProtectedInstanceHistoryMetric = ( )\n{ union \n(LatestProtectedInstanceHistoryTableFromProtectedContainerUniqueId()),\n(LatestProtectedInstanceHistoryTableFromBackupItemUniqueId()),\n(LatestProtectedInstanceHistoryTableFromDPMNodeProtectedContainerUniqueId)\n| where BackupSolution in~ (_BackupSolutionList) or '*' in (_BackupSolutionList)\n| project CustomBackupManagementType, BackupItemFrontEndSize, StorageConsumedInMBs, BillingGroupUniqueId, BillingGroupFriendlyName, BillingGroupName, ProtectedInstanceCount, BillingGroupType, TimeRangeEndDay, TimeGenerated, BackupManagementType, BackupSolution, ProtectedContainerName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, StorageReplicationType, ResourceId\n};\nlet FinalTable = () {ProtectedInstanceHistoryMetric\n};\n// Display Tweaks for AFS and null ProtectedInstanceCount\n// Billing Entity is at BackupManagementType level and not at DS level. \nlet FinalTable_V1Vault = () {FinalTable\n| project CustomBackupManagementType, BackupManagementType, BackupSolution, ProtectedInstanceCount = iff(isempty(ProtectedInstanceCount), 0.0 ,todouble(ProtectedInstanceCount)/10), StorageConsumedInMBs = iff(isempty(StorageConsumedInMBs), todouble(0), todouble(StorageConsumedInMBs)), BackupItemFrontEndSize = iff(isempty(BackupItemFrontEndSize), todouble(0), todouble(BackupItemFrontEndSize)), BillingGroupUniqueId, BillingGroupType, BillingGroupName, BillingGroupFriendlyName, VaultUniqueId, VaultName, VaultTags, SubscriptionId, ResourceGroupName, AzureDataCenter, ResourceId, StorageReplicationType, ProtectedContainerName, TimeGenerated\n| project UniqueId = BillingGroupUniqueId, Name = BillingGroupName, Type = BillingGroupType, FriendlyName = BillingGroupFriendlyName, SourceSizeInMBs = BackupItemFrontEndSize, ExtendedProperties = pack(\"ProtectedInstanceCount\", ProtectedInstanceCount), VaultStore_StorageConsumptionInMBs = StorageConsumedInMBs, BackupSolution, VaultUniqueId, VaultName, VaultResourceId = ResourceId, VaultSubscriptionId = SubscriptionId, VaultLocation = AzureDataCenter, VaultStore_StorageReplicationType = StorageReplicationType, VaultTags, VaultType = \"Microsoft.RecoveryServices/vaults\", TimeGenerated};\n// FinalTable_DPPVault to be added later\nFinalTable_V1Vault \n| where \"Microsoft.RecoveryServices/vaults\" in~ (_VaultTypeList) or '*' in (_VaultTypeList)" + } + ] + } + }, + "Initialize_variable-CoreAzureBackup": { + "runAfter": { + "Initialize_variable-AzureDiagnostics": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "CoreAzureBackup_Incomplete", + "type": "string", + "value": "let CoreAzureBackup = ()\n{\nunion" + } + ] + } + }, + "Initialize_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Initialize_variable-BillingGroupTrendFunction": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "visual", + "type": "string" + } + ] + } + }, + "Initialize_variable-ReportFilterForHistoricalData": { + "runAfter": { + "Initialize_variable-UnionOfWorkspaces": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Trend", + "type": "string", + "value": "let _RangeStart = iff((datetime(@{parameters('startDate')}) == datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('startDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');\nlet _AggregationType = @{parameters('aggregationType')};" + } + ] + } + }, + "Initialize_variable-ReportFilterForLatestData": { + "runAfter": { + "Initialize_variable-ReportFilterForHistoricalData": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ReportFilter_Latest", + "type": "string", + "value": "let _RangeStart = iff(( datetime(@{parameters('endDate')})== datetime(null)), startofday(ago(1d)), startofday(datetime(@{parameters('endDate')})));\nlet _RangeEnd = iff((datetime(@{parameters('endDate')})== datetime(null)), startofday(now()), startofday(datetime(@{parameters('endDate')})) + 1d);\nlet _VaultSubscriptionList = split(@{parameters('vaultSubscriptionListFilter')}, ',');\nlet _VaultLocationList = split(@{parameters('vaultLocationListFilter')}, ',');\nlet _VaultList = split(@{parameters('vaultListFilter')}, ',');\nlet _VaultTypeList = \"*\";\nlet _ExcludeLegacyEvent = @{parameters('excludeLegacyEvent')};\nlet _BackupSolutionList = split(@{parameters('backupSolutionListFilter')}, ',');" + } + ] + } + }, + "Initialize_variable-UnionOfWorkspaces": { + "runAfter": { + "For_each": [ + "Succeeded" + ] + }, + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "workspacesToQuery_Custom", + "type": "string", + "value": "@{concat(concat(substring(variables('AddonAzureBackupStorage_Incomplete'),0,sub(length(variables('AddonAzureBackupStorage_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupProtectedInstance_Incomplete'),0,sub(length(variables('AddonAzureBackupProtectedInstance_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupPolicy_Incomplete'),0,sub(length(variables('AddonAzureBackupPolicy_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AddonAzureBackupJobs_Incomplete'),0,sub(length(variables('AddonAzureBackupJobs_Incomplete')),1)),'};'),\r\nconcat(substring(variables('CoreAzureBackup_Incomplete'),0,sub(length(variables('CoreAzureBackup_Incomplete')),1)),'};'),\r\nconcat(substring(variables('AzureDiagnostics_Incomplete'),0,sub(length(variables('AzureDiagnostics_Incomplete')),1)),'};'))}" + } + ] + } + }, + "Scope": { + "actions": { + "Create_CSV_table-BillingGroupList": { + "runAfter": { + "Run_query_and_list_results-BillingGroupList": [ + "Succeeded" + ] + }, + "type": "Table", + "inputs": { + "format": "CSV", + "from": "@if(empty(body('Run_query_and_list_results-BillingGroupList')?['value']),variables('NoDataMessage'),body('Run_query_and_list_results-BillingGroupList')?['value'])" + } + }, + "Run_query_and_list_results-BillingGroupList": { + "runAfter": { + "Run_query_and_visualize_results-CloudStorageTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BillingGroupFunction')}\n| extend name_array = split(Name,\";\")\n| extend name_arraylen = array_length(name_array)\n| project BilledEntity=FriendlyName, BilledEntityResourceGroup=iff(name_arraylen == 3, name_array[(name_arraylen-2)], \"(none)\"), BilledEntityType=Type, BackupSolution, ProtectedInstances=todouble(parse_json(ExtendedProperties).ProtectedInstanceCount), CloudStorage=VaultStore_StorageConsumptionInMBs/1024, StorageReplicationType=VaultStore_StorageReplicationType, Vault=VaultResourceId, VaultResourceGroup=split(split(tolower(VaultResourceId), '/resourcegroups/')[1],'/')[0], Subscription=VaultSubscriptionId", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/queryData", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query" + } + } + }, + "Run_query_and_visualize_results-BillingGroupTrend": { + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BillingGroupTrendFunction')}\n// query to transform function output\n| summarize ProtectedInstanceCount = sum(todouble(parse_json(ExtendedProperties).ProtectedInstanceCount)) by startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Run_query_and_visualize_results-CloudStorageTrend": { + "runAfter": { + "Run_query_and_visualize_results-BillingGroupTrend": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": "@{variables('BillingGroupTrendFunction')}\n// query to transform function output\n| summarize StorageConsumedInGBs = sum(VaultStore_StorageConsumptionInMBs)/1024 by startofday(TimeGenerated)\n", + "host": { + "connection": { + "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']" + } + }, + "method": "post", + "path": "/visualizeQuery", + "queries": { + "resourcegroups": "GET-PREREQ-existingWorkspaceResourceGroup", + "resourcename": "GET-PREREQ-existingLogicAppWorkspace", + "resourcetype": "Log Analytics Workspace", + "subscriptions": "GET-PREREQ-existingWorkspaceSubscriptionId", + "timerange": "Set in query", + "visType": "Time Chart" + } + } + }, + "Set_variable-EmailBodyForSuccessfulRun": { + "runAfter": { + "Create_CSV_table-BillingGroupList": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "visual", + "value": "
\n

Protected Instances Trend

\n
\n\n
\n

Cloud Storage Trend

\n
\n\n
\n
" + } + } + }, + "runAfter": { + "Initialize_variable-NoDataMessage": [ + "Succeeded" + ] + }, + "type": "Scope" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": { + "$connections": { + "value": { + "azuremonitorlogs": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-azuremonitorlogs", + "connectionName": "[resourceGroup().location]-azuremonitorlogs", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azuremonitorlogs')]" + }, + "office365": { + "connectionId": "Microsoft.Web/connections/[resourceGroup().location]-office365", + "connectionName": "[resourceGroup().location]-office365", + "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'office365')]" + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT666 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT666 new file mode 100644 index 0000000..1ac67df --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT666 @@ -0,0 +1,361 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/bootstorm-vm-boot-time/azuredeploy.json", + "/demos/bootstorm-vm-boot-time/azuredeploy.parameters.json" + ], + "timestamp": 1642962898831, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/bootstorm-vm-boot-time/azuredeploy.json", + "/demos/bootstorm-vm-boot-time/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT666", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT666", + "collection": "armtemplate", + "json": { + "contentVersion": "1.16.05.27", + "parameters": { + "azureAccountUsername": { + "type": "string", + "metadata": { + "description": "Azure account SPN user name to authenticate inside controller VM." + }, + "value": "GEN-UNIQUE" + }, + "azureAccountPassword": { + "type": "securestring", + "metadata": { + "description": "Azure account SPN password to authenticate inside controller VM." + }, + "value": "GEN-PASSWORD" + }, + "tenantId": { + "type": "string", + "metadata": { + "description": "Azure Subscription Tenant Id." + }, + "value": "" + }, + "vmCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of VMs to create." + }, + "value": 2 + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "addressPrefix": "10.0.0.0/16", + "location": "[resourceGroup().location]", + "subnetName": "[concat('vsn', uniqueString(resourceGroup().id))]", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressType": "Dynamic", + "publicIPAddressName": "[concat('ip', uniqueString(resourceGroup().id))]", + "uniqueDnsNameForPublicIP": "[concat('dns', uniqueString(resourceGroup().id))]", + "uniqueStorageAccountName": "[concat('sa', uniqueString(resourceGroup().id))]", + "uniqueStorageAccountContainerName": "[concat('sc', uniqueString(resourceGroup().id))]", + "adResourceID": "null", + "vmOsSku": "2012-R2-Datacenter", + "vmAdminUsername": "vmadministrator", + "vmAdminPassword": "pwd0a!8b7", + "vmName": "[concat('vm', uniqueString(resourceGroup().id))]", + "vmOsDiskName": "[concat('od', uniqueString(resourceGroup().id))]", + "vmSize": "Standard_A2", + "vmNicName": "[concat('nc', uniqueString(resourceGroup().id))]", + "virtualNetworkName": "[concat('vn', uniqueString(resourceGroup().id))]", + "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]", + "nsgName": "[concat('ng', uniqueString(resourceGroup().id))]", + "nsgID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('nsgName'))]", + "modulesPath": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/bootstorm-vm-boot-time/", + "moduleVMBootAll": "VMBootAll.zip", + "modulesUrlVMBootAll": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/bootstorm-vm-boot-time/VMBootAll.zip", + "configurationFunctionVMBootAll": "VMBootAll.ps1\\ConfigureVMBootAll" + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Storage/storageAccounts", + "name": "[tolower(variables('uniqueStorageAccountName'))]", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('uniqueDnsNameForPublicIP')]" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('nsgName')]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "nsgsrule", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[variables('subnetName')]", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "[variables('nsgID')]" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('vmNicName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/',variables('publicIPAddressName'))]", + "[concat('Microsoft.Network/virtualNetworks/',variables('virtualNetworkName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigpublic", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "subnet": { + "id": "[variables('subnetRef')]" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(variables('vmNicName'),copyIndex())]", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "[concat('Microsoft.Network/virtualNetworks/',variables('virtualNetworkName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfigprivate", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('subnetRef')]" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "[variables('vmName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('uniqueStorageAccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/',variables('vmNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "vmadministrator", + "adminPassword": "pwd0a!8b7" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[concat(variables('vmName'),'_OSDisk')]", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('vmNicName')))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStorageAccountName')),'2015-06-15').primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "[concat(variables('vmName'),copyIndex())]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": 2 + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('uniqueStorageAccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/',variables('vmNicName'),copyIndex())]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "vmadministrator", + "adminPassword": "pwd0a!8b7" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[concat(variables('vmName'),copyIndex(),'_OSDisk')]", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('vmNicName'),copyIndex()))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStorageAccountName')),'2015-06-15').primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmName'),'/dscExtension')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/',variables('vmName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.15", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/bootstorm-vm-boot-time/VMBootAll.zip", + "configurationFunction": "VMBootAll.ps1\\ConfigureVMBootAll", + "properties": { + "azureAccountUsername": "GEN-UNIQUE", + "azureAccountPassword": "GEN-PASSWORD", + "AdResourceID": "null", + "TenantId": "", + "VMName": "[variables('vmName')]", + "VMCount": 2, + "VMAdminUserName": "vmadministrator", + "VMAdminPassword": "pwd0a!8b7", + "AzureStorageAccount": "[variables('uniqueStorageAccountName')]", + "AzureStorageAccessKey": "[listKeys(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStorageAccountName')), '2015-06-15').key1]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT667 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT667 new file mode 100644 index 0000000..0a40c12 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT667 @@ -0,0 +1,587 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/centos-2nics-lb-cluster/azuredeploy.json", + "/demos/centos-2nics-lb-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898839, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/centos-2nics-lb-cluster/azuredeploy.json", + "/demos/centos-2nics-lb-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT667", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT667", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for VM" + }, + "value": "GEN-UNIQUE" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique storage account name. Must be between 3 and 24 characters in length and use numbers and lower-case letters only." + }, + "value": "GEN-UNIQUE" + }, + "numberOfInstances": { + "type": "int", + "defaultValue": 2, + "allowedValues": [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "metadata": { + "description": "Number of VMs to deploy (2-10)" + }, + "value": 2 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_A3", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_A10", + "Standard_A11", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "Size of the Virtual Machine." + } + }, + "dnsNameforLBIP": { + "type": "string", + "metadata": { + "description": "DNS name for Load Balancer IP" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/centos-2nics-lb-cluster/", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "vmsize": { + "value": "Standard_D2_v3" + } + }, + "variables": { + "imagePublisher": "OpenLogic", + "imageOffer": "CentOS", + "imageSKU": "7.1", + "customScriptFilePath": "[uri(parameters('_artifactsLocation'), concat('deploy.sh', parameters('_artifactsLocationSasToken')))]", + "customScriptCommandToExecute": "bash deploy.sh", + "publicIPAddressName": "myPublicIP", + "virtualNetworkName": "myVNET", + "availabilitySetName": "myAvSet", + "vnetID": "Microsoft.Network/virtualNetworks/myVNET", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "subnet1Ref": "Microsoft.Network/virtualNetworks/myVNET/subnets/Subnet-1", + "subnet2Name": "Subnet-2", + "subnet2Prefix": "10.0.1.0/24", + "subnet2Ref": "Microsoft.Network/virtualNetworks/myVNET/subnets/Subnet-2", + "vmStorageAccountContainerName": "vhds", + "lbName": "myLB", + "lbID": "Microsoft.Network/loadBalancers/myLB", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd", + "lbPoolID": "Microsoft.Network/loadBalancers/myLB/backendAddressPools/BackendPool1", + "lbProbeID": "Microsoft.Network/loadBalancers/myLB/probes/tcpProbe", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/myPublicIP", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "accountType": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myAvSet", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "Subnet-2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic1copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/myVNET", + "Microsoft.Network/loadBalancers/myLB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/myVNET/subnets/Subnet-1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/myLB/backendAddressPools/BackendPool1" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/myLB/inboundNatRules/sshcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic2copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/myVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/myVNET/subnets/Subnet-2" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "name": "myLB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool1" + } + ], + "inboundNatRules": [ + { + "name": "ssh0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50000, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh2", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50002, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh3", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50003, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh4", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50004, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh5", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50005, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh6", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50006, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh7", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50007, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh8", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50008, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh9", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50009, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "ssh10", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50010, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/myLB/frontendIPConfigurations/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/myLB/backendAddressPools/BackendPool1" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 10, + "probe": { + "id": "Microsoft.Network/loadBalancers/myLB/probes/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": "5", + "numberOfProbes": "2" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "myvmcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/nic1copyIndex()", + "Microsoft.Network/networkInterfaces/nic2copyIndex()", + "Microsoft.Storage/storageAccounts/GEN-UNIQUE", + "Microsoft.Compute/availabilitySets/myAvSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "vmcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.1", + "version": "latest" + }, + "osDisk": { + "name": "myvmcopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "properties": { + "primary": true + }, + "id": "Microsoft.Network/networkInterfaces/nic1copyindex()" + }, + { + "properties": { + "primary": false + }, + "id": "Microsoft.Network/networkInterfaces/nic2copyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myvmcopyIndex()/extension", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/myvmcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('deploy.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash deploy.sh copyIndex() 2" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT668 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT668 new file mode 100644 index 0000000..75a9589 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT668 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/cloud-shell-vnet/prereqs/prereq.azuredeploy.json", + "/demos/cloud-shell-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898849, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/cloud-shell-vnet/prereqs/prereq.azuredeploy.json", + "/demos/cloud-shell-vnet/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT668", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT668", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the VNET to inject Cloud Shell into" + }, + "value": "GEN-VNET-NAME" + }, + "vnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add" + }, + "value": "10.0.0.0/16" + }, + "defaultSubnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "Name of the subnet to use for cloud shell containers" + } + }, + "defaultSubnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add" + }, + "value": "10.0.0.0/26" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "resources": [ + { + "name": "GEN-VNET-NAME", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-04-01", + "tags": { + "displayName": "The VNET" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/26" + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "[parameters('vnetName')]" + }, + "defaultSubnetAddressPrefix": { + "type": "string", + "value": "[parameters('defaultSubnetAddressPrefix')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT669 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT669 new file mode 100644 index 0000000..e20bd7b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT669 @@ -0,0 +1,336 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/cloud-shell-vnet/azuredeploy.json", + "/demos/cloud-shell-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962898863, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/cloud-shell-vnet/azuredeploy.json", + "/demos/cloud-shell-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT669", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.authorization/roleassignments", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.relay/namespaces", + "microsoft.network/privatednszones/a", + "microsoft.network/privateendpoints", + "microsoft.network/networkprofiles", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT669", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "11655401541265786166" + } + }, + "parameters": { + "existingVNETName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET to inject Cloud Shell into." + }, + "value": "GET-PREREQ-vnetName" + }, + "relayNamespaceName": { + "type": "string", + "metadata": { + "description": "Name of Azure Relay Namespace." + }, + "value": "GEN-UNIQUE-8" + }, + "azureContainerInstanceOID": { + "type": "string", + "metadata": { + "description": "Object Id of Azure Container Instance Service Principal. We have to grant this permission to create hybrid connections in the Azure Relay you specify. To get it: Get-AzADServicePrincipal -DisplayNameBeginsWith 'Azure Container Instance'" + }, + "value": "GEN-AZUREAD-OBJECTID" + }, + "containerSubnetName": { + "type": "string", + "defaultValue": "cloudshellsubnet", + "metadata": { + "description": "Name of the subnet to use for cloud shell containers." + } + }, + "containerSubnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add for cloud shell. e.g. 10.0.1.0/26" + }, + "value": "10.0.1.0/26" + }, + "relaySubnetName": { + "type": "string", + "defaultValue": "relaysubnet", + "metadata": { + "description": "Name of the subnet to use for private link of relay namespace." + } + }, + "relaySubnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add for relay. e.g. 10.0.2.0/26" + }, + "value": "10.0.2.0/26" + }, + "storageSubnetName": { + "type": "string", + "defaultValue": "storagesubnet", + "metadata": { + "description": "Name of the subnet to use for storage account." + } + }, + "storageSubnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add for storage. e.g. 10.0.3.0/26" + }, + "value": "10.0.3.0/26" + }, + "privateEndpointName": { + "type": "string", + "defaultValue": "cloudshellRelayEndpoint", + "metadata": { + "description": "Name of Private Endpoint for Azure Relay." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "networkProfileName": "[format('aci-networkProfile-{0}', parameters('location'))]", + "contributorRoleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "networkRoleDefinitionId": "Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7", + "privateDnsZoneName": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'privatelink.servicebus.usgovcloudapi.net', 'privatelink.servicebus.windows.net')]", + "vnetResourceId": "Microsoft.Network/virtualNetworks/GET-PREREQ-vnetName" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-04-01", + "name": "[format('{0}/{1}', parameters('existingVNETName'), parameters('containerSubnetName'))]", + "properties": { + "addressPrefix": "10.0.1.0/26", + "serviceEndpoints": [ + { + "service": "Microsoft.Storage", + "locations": [ + "[resourceGroup().location]" + ] + } + ], + "delegations": [ + { + "name": "CloudShellDelegation", + "properties": { + "serviceName": "Microsoft.ContainerInstance/containerGroups" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkProfiles", + "apiVersion": "2019-11-01", + "name": "[format('aci-networkProfile-{0}', parameters('location'))]", + "location": "[resourceGroup().location]", + "properties": { + "containerNetworkInterfaceConfigurations": [ + { + "name": "[format('eth-{0}', parameters('containerSubnetName'))]", + "properties": { + "ipConfigurations": [ + { + "name": "[format('ipconfig-{0}', parameters('containerSubnetName'))]", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/cloudshellsubnet" + } + } + } + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/cloudshellsubnet" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Network/networkProfiles/{0}', variables('networkProfileName'))]", + "name": "[guid(variables('networkRoleDefinitionId'), parameters('azureContainerInstanceOID'), variables('networkProfileName'))]", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7", + "principalId": "GEN-AZUREAD-OBJECTID" + }, + "dependsOn": [ + "Microsoft.Network/networkProfiles/[format('aci-networkProfile-{0}', parameters('location'))]" + ] + }, + { + "type": "Microsoft.Relay/namespaces", + "apiVersion": "2018-01-01-preview", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Standard" + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.Relay/namespaces/{0}', parameters('relayNamespaceName'))]", + "name": "[guid(variables('contributorRoleDefinitionId'), parameters('azureContainerInstanceOID'), parameters('relayNamespaceName'))]", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "principalId": "GEN-AZUREAD-OBJECTID" + }, + "dependsOn": [ + "Microsoft.Relay/namespaces/GEN-UNIQUE-8" + ] + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-04-01", + "name": "[format('{0}/{1}', parameters('existingVNETName'), parameters('relaySubnetName'))]", + "properties": { + "addressPrefix": "10.0.2.0/26", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/cloudshellsubnet" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-04-01", + "name": "cloudshellRelayEndpoint", + "location": "[resourceGroup().location]", + "properties": { + "privateLinkServiceConnections": [ + { + "name": "cloudshellRelayEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Relay/namespaces/GEN-UNIQUE-8", + "groupIds": [ + "namespace" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/relaysubnet" + } + }, + "dependsOn": [ + "Microsoft.Relay/namespaces/GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/relaysubnet" + ] + }, + { + "type": "Microsoft.Network/virtualNetworks/subnets", + "apiVersion": "2020-04-01", + "name": "[format('{0}/{1}', parameters('existingVNETName'), parameters('storageSubnetName'))]", + "properties": { + "addressPrefix": "10.0.3.0/26", + "serviceEndpoints": [ + { + "service": "Microsoft.Storage", + "locations": [ + "[resourceGroup().location]" + ] + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/relaysubnet" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'privatelink.servicebus.usgovcloudapi.net', 'privatelink.servicebus.windows.net')]", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "apiVersion": "2020-01-01", + "name": "[format('{0}/{1}', variables('privateDnsZoneName'), parameters('relayNamespaceName'))]", + "properties": { + "ttl": 3600, + "aRecords": [ + { + "ipv4Address": "[first(first(reference(resourceId('Microsoft.Network/privateEndpoints', parameters('privateEndpointName'))).customDnsConfigs).ipAddresses)]" + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[if(equals(toLower(environment().name), 'azureusgovernment'), 'privatelink.servicebus.usgovcloudapi.net', 'privatelink.servicebus.windows.net')]", + "Microsoft.Network/privateEndpoints/cloudshellRelayEndpoint" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "[format('{0}/{1}', variables('privateDnsZoneName'), parameters('relayNamespaceName'))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/GET-PREREQ-vnetName" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/[if(equals(toLower(environment().name), 'azureusgovernment'), 'privatelink.servicebus.usgovcloudapi.net', 'privatelink.servicebus.windows.net')]" + ] + } + ], + "outputs": { + "vnetId": { + "type": "string", + "value": "[variables('vnetResourceId')]" + }, + "containerSubnetId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('existingVNETName'), parameters('containerSubnetName'))]" + }, + "storageSubnetId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('existingVNETName'), parameters('storageSubnetName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT67 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT67 new file mode 100644 index 0000000..debd087 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT67 @@ -0,0 +1,505 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-dsagents.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884649, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-dsagents.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT67", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT67", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "value": "westus" + }, + "network-api-version": { + "type": "string", + "defaultValue": "" + }, + "compute-api-version": { + "type": "string", + "defaultValue": "" + }, + "publicIPDomainNameLabelDSAgentWindows": { + "type": "string", + "defaultValue": "" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "" + }, + "adminUsernameDSAgent": { + "type": "string", + "defaultValue": "" + }, + "adminPasswordOrPublicKeyDSAgent": { + "type": "securestring", + "defaultValue": "" + }, + "publicIPDomainNameLabelDSAgent": { + "type": "string", + "defaultValue": "" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "" + }, + "linuxvmcount": { + "type": "int", + "defaultValue": "" + }, + "windowsvmcount": { + "type": "int", + "defaultValue": "" + }, + "ManagerAddress": { + "type": "string", + "defaultValue": "" + }, + "subnet4Ref": { + "type": "string", + "defaultValue": "" + }, + "vmNameDSAWindows": { + "type": "string", + "defaultValue": "" + }, + "vmSizeDSAWindows": { + "type": "string", + "defaultValue": "" + }, + "vmNameDSAgent": { + "type": "string", + "defaultValue": "" + }, + "vmSizeDSAgent": { + "type": "string", + "defaultValue": "" + }, + "imagePublisherWindows": { + "type": "string", + "defaultValue": "" + }, + "imageOfferWindows": { + "type": "string", + "defaultValue": "" + }, + "imagePublisherLinux": { + "type": "string", + "defaultValue": "" + }, + "imageOfferLinux": { + "type": "string", + "defaultValue": "" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "" + }, + "vmStorageAccountContainerName": { + "type": "string", + "defaultValue": "" + }, + "ActivationPort": { + "type": "string", + "defaultValue": "" + }, + "TenantIdentifier": { + "type": "string", + "defaultValue": "" + }, + "TenantActivationPassword": { + "type": "securestring", + "defaultValue": "" + }, + "adminUsernameDSAgentWindows": { + "type": "string", + "defaultValue": "" + }, + "adminPasswordDSAgentWindows": { + "type": "securestring", + "defaultValue": "" + }, + "tagvalues": { + "type": "object", + "defaultValue": "" + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "authenticationType": { + "type": "string" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": { + "publicIPAddressNameDSAWindows": "publicipdsawindows", + "networkInterfaceNameDSAWindows": "parameters('vmNameDSAWindows')-nic", + "publicIPAddressNameDSAgent": "publicipdsalinux", + "networkInterfaceNameDSAgent": "parameters('vmNameDSAgent')-nic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/ parameters('adminUsernameDSAgent')/.ssh/authorized_keys", + "keyData": "" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicipdsawindowscopyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "parameters('publicIPDomainNameLabelDSAgentWindows')copyindex()" + } + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "parameters('vmNameDSAWindows')-niccopyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicipdsawindowscopyindex()" + ], + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicipdsawindowscopyindex()" + }, + "subnet": { + "id": "" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "parameters('vmNameDSAWindows')copyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "copy": { + "name": "foo", + "count": "" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/parameters('vmNameDSAWindows')-niccopyindex()" + ], + "properties": { + "hardwareProfile": { + "vmSize": "" + }, + "osProfile": { + "computerName": "", + "adminUsername": "", + "adminPassword": "" + }, + "storageProfile": { + "imageReference": { + "publisher": "", + "offer": "", + "sku": "", + "version": "latest" + }, + "osDisk": { + "name": "parameters('vmNameDSAWindows')copyindex()-osDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/parameters('vmNameDSAWindows')-niccopyindex()" + } + ] + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "parameters('vmNameDSAWindows')copyindex()/Installation", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "copy": { + "name": "foo", + "count": "" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ parameters('vmNameDSAWindows')copyindex()" + ], + "properties": { + "publisher": "TrendMicro.DeepSecurity", + "type": "TrendMicroDSA", + "typeHandlerVersion": "9.6", + "autoUpgradeMinorVersion": true, + "settings": { + "DSMname": "", + "DSMport": "", + "policyNameorID": "" + }, + "protectedSettings": { + "tenantID": "", + "tenantPassword": "" + } + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicipdsalinuxcopyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "parameters('publicIPDomainNameLabelDSAgent')copyindex()" + } + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "parameters('vmNameDSAgent')-niccopyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicipdsalinuxcopyindex()" + ], + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicipdsalinuxcopyindex()" + }, + "subnet": { + "id": "" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "parameters('vmNameDSAgent')copyindex()", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/parameters('vmNameDSAgent')-niccopyindex()" + ], + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "hardwareProfile": { + "vmSize": "" + }, + "osProfile": { + "computerName": "", + "adminUsername": "", + "adminPassword": "", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "", + "offer": "", + "sku": "", + "version": "latest" + }, + "osDisk": { + "name": "parameters('vmNameDSAgent')copyindex()-osDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/parameters('vmNameDSAgent')-niccopyindex()" + } + ] + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "parameters('vmNameDSAgent')copyindex()/Installation", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ parameters('vmNameDSAgent')copyindex()" + ], + "copy": { + "name": "foo", + "count": "" + }, + "properties": { + "publisher": "TrendMicro.DeepSecurity", + "type": "TrendMicroDSALinux", + "typeHandlerVersion": "9.6", + "autoUpgradeMinorVersion": true, + "settings": { + "DSMname": "", + "DSMport": "", + "policyNameorID": "" + }, + "protectedSettings": { + "tenantID": "", + "tenantPassword": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT670 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT670 new file mode 100644 index 0000000..03e728d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT670 @@ -0,0 +1,173 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/cloud-shell-vnet-storage/prereqs/prereq.azuredeploy.json", + "/demos/cloud-shell-vnet-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962898872, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/cloud-shell-vnet-storage/prereqs/prereq.azuredeploy.json", + "/demos/cloud-shell-vnet-storage/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT670", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT670", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the VNET to inject Cloud Shell into" + }, + "value": "GEN-VNET-NAME" + }, + "vnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add" + }, + "value": "10.0.0.0/16" + }, + "defaultSubnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "Name of the subnet to use for cloud shell containers" + } + }, + "defaultSubnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add" + }, + "value": "10.0.0.0/26" + }, + "containerSubnetName": { + "type": "string", + "defaultValue": "cloudshellsubnet", + "metadata": { + "description": "Name of the subnet to use for cloud shell containers" + } + }, + "containerSubnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add" + }, + "value": "10.0.1.0/26" + }, + "storageSubnetName": { + "type": "string", + "defaultValue": "storagesubnet", + "metadata": { + "description": "Name of the subnet to use for storage account" + } + }, + "storageSubnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Address space of the subnet to add for storage subnet" + }, + "value": "10.0.3.0/26" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "resources": [ + { + "name": "GEN-VNET-NAME", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-04-01", + "tags": { + "displayName": "The VNET" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/26" + } + }, + { + "name": "cloudshellsubnet", + "properties": { + "addressPrefix": "10.0.1.0/26", + "serviceEndpoints": [ + { + "service": "Microsoft.Storage", + "locations": [ + "[resourceGroup().location]" + ] + } + ], + "delegations": [ + { + "name": "CloudShellDelegation", + "properties": { + "serviceName": "Microsoft.ContainerInstance/containerGroups" + } + } + ] + } + }, + { + "name": "storagesubnet", + "properties": { + "addressPrefix": "10.0.3.0/26", + "serviceEndpoints": [ + { + "service": "Microsoft.Storage", + "locations": [ + "[resourceGroup().location]" + ] + } + ] + } + } + ] + } + } + ], + "outputs": { + "vnetName": { + "type": "string", + "value": "[parameters('vnetName')]" + }, + "containerSubnetName": { + "type": "string", + "value": "[parameters('containerSubnetName')]" + }, + "storageSubnetName": { + "type": "string", + "value": "[parameters('storageSubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT671 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT671 new file mode 100644 index 0000000..15027bf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT671 @@ -0,0 +1,171 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/cloud-shell-vnet-storage/azuredeploy.json", + "/demos/cloud-shell-vnet-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962898879, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/cloud-shell-vnet-storage/azuredeploy.json", + "/demos/cloud-shell-vnet-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT671", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts/fileservices/shares", + "microsoft.storage/storageaccounts", + "microsoft.storage/storageaccounts/fileservices", + "microsoft.storage/storageaccounts/blobservices" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT671", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingVNETName": { + "type": "string", + "metadata": { + "description": "Name of the virtual network to use for cloud shell containers." + }, + "value": "GET-PREREQ-vnetName" + }, + "existingStorageSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet to use for storage account." + }, + "value": "GET-PREREQ-storageSubnetName" + }, + "existingContainerSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet to use for cloud shell containers." + }, + "value": "GET-PREREQ-containerSubnetName" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the storage account in subnet." + }, + "value": "GEN-UNIQUE-8" + }, + "fileShareName": { + "type": "string", + "defaultValue": "acsshare", + "metadata": { + "description": "Name of the fileshare in storage account." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "containerSubnetRef": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-containerSubnetName", + "storageSubnetRef": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-storageSubnetName" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "networkAcls": { + "bypass": "None", + "virtualNetworkRules": [ + { + "id": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-containerSubnetName", + "action": "Allow" + }, + { + "id": "Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-vnetName/GET-PREREQ-storageSubnetName", + "action": "Allow" + } + ], + "defaultAction": "Deny" + }, + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "file": { + "keyType": "Account", + "enabled": true + }, + "blob": { + "keyType": "Account", + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Cool" + } + }, + { + "type": "Microsoft.Storage/storageAccounts/blobServices", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE-8/default", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE-8" + ], + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "properties": { + "deleteRetentionPolicy": { + "enabled": false + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts/fileServices", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE-8/default", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE-8" + ], + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + } + }, + { + "type": "Microsoft.Storage/storageAccounts/fileServices/shares", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE-8/default/acsshare", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/fileServices/GEN-UNIQUE-8/default", + "Microsoft.Storage/storageAccounts/GEN-UNIQUE-8" + ], + "properties": { + "shareQuota": 6 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT672 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT672 new file mode 100644 index 0000000..6a7e91d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT672 @@ -0,0 +1,265 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/azuredeploy.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898888, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/azuredeploy.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT672", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT672", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "minLength": 3, + "maxLength": 15, + "metadata": { + "description": "The HPC Pack cluster name. It must be unique in the location because it is also used as the public DNS name prefix for the cluster. For example, the public DNS name is '<clustername>.westus.cloudapp.azure.com' if the resource group location is 'West US'. It must contain between 3 and 15 characters with lowercase letters and numbers, and must start with a letter." + }, + "value": "GEN-UNIQUE-12" + }, + "privateDomainName": { + "type": "string", + "defaultValue": "hpc.local", + "metadata": { + "description": "The fully qualified domain name (FQDN) for the private domain forest which will be created by this template, for example 'hpc.local'." + }, + "value": "hpc.local" + }, + "headNodeVMSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "The VM size of the head node. Note that some VM sizes in the list are only available in some particular locations. Please check the availability and the price of the VM sizes at https://azure.microsoft.com/en-us/pricing/details/virtual-machines before deployment." + }, + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "type": "string", + "defaultValue": "ComputeNode", + "allowedValues": [ + "ComputeNode", + "ComputeNodeWithExcel" + ], + "metadata": { + "description": "The VM image of the compute nodes" + }, + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "type": "string", + "defaultValue": "IaaSCN-", + "minLength": 1, + "maxLength": 12, + "metadata": { + "description": "The name prefix of the compute nodes. It must be no more than 12 characters, begin with a letter, and contain only letters, numbers and hyphens. For example, if 'IaaSCN-' is specified, the compute node names will be 'IaaSCN-000', 'IaaSCN-001', ..." + }, + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "type": "int", + "defaultValue": 2, + "minValue": 1, + "maxValue": 500, + "metadata": { + "description": "The number of the compute nodes" + }, + "value": 2 + }, + "computeNodeVMSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "The VM size of the compute nodes. Note that some VM sizes in the list are only available in some particular locations. Please check the availability and the price of the VM sizes at https://azure.microsoft.com/en-us/pricing/details/virtual-machines before deployment." + }, + "value": "Standard_D4_v3" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name for the virtual machines and the Active Directory domain." + }, + "value": "azureuser" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password for the virtual machines and the Active Directory domain" + }, + "value": "GEN-PASSWORD" + }, + "headNodePostConfigScript": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional URL of a public available PowerShell script you want to run on the head node after it is configured. The script will be run as the Local System account. You can also specify arguments for the script, for example 'http://www.contoso.com/myhnpostscript.ps1 -Arg1 arg1 -Arg2 arg2'." + } + }, + "computeNodePostConfigScript": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional URL of a public available PowerShell script you want to run on the compute nodes after they are configured. The script will be run as the Local System account. You can also specify arguments for the script, for example 'http://www.contoso.com/mycnpostscript.ps1 -Arg1 arg1 -Arg2 arg2'." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + }, + "defaultValue": "" + } + }, + "variables": { + "virtualNetworkName": "GEN-UNIQUE-12VNet", + "publicIPAddressName": "GEN-UNIQUE-12-PublicIP-HN", + "computeNodeImageOsPlatform": "Windows", + "computeNodeImages": { + "ComputeNode": { + "publisher": "MicrosoftWindowsServerHPCPack", + "offer": "WindowsServerHPCPack", + "sku": "2012R2CN", + "version": "latest" + }, + "ComputeNodeWithExcel": { + "publisher": "MicrosoftWindowsServerHPCPack", + "offer": "WindowsServerHPCPack", + "sku": "2012R2CNExcel", + "version": "latest" + } + }, + "currentComputeNodeImage": "(computeNodeImages)[parameters(computeNodeImage)]" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Resources/deployments", + "name": "mainTemplate", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('mainTemplate.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "clusterName": { + "value": "GEN-UNIQUE-12" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-12VNet" + }, + "privateDomainName": { + "value": "hpc.local" + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "headNodeDiskType": { + "value": "HDD" + }, + "computeNodeImageOsPlatform": { + "value": "Windows" + }, + "computeNodeImagePublisher": { + "value": "(currentComputeNodeImage).publisher" + }, + "computeNodeImageOffer": { + "value": "(currentComputeNodeImage).offer" + }, + "computeNodeImageSku": { + "value": "(currentComputeNodeImage).sku" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeDiskType": { + "value": "HDD" + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + }, + "publicIPName": { + "value": "GEN-UNIQUE-12-PublicIP-HN" + }, + "publicIPRGName": { + "value": "[resourceGroup().name]" + }, + "publicIPNewOrExisting": { + "value": "new" + }, + "publicIPDNSNameLabel": { + "value": "GEN-UNIQUE-12" + }, + "adminUsername": { + "value": "azureuser" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "headNodePostConfigScript": { + "value": "[trim(parameters('headNodePostConfigScript'))]" + }, + "computeNodePostConfigScript": { + "value": "[trim(parameters('computeNodePostConfigScript'))]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": { + "clusterDnsName": { + "type": "string", + "value": "[reference('mainTemplate').outputs.clusterDNSName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT673 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT673 new file mode 100644 index 0000000..b7dd6bf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT673 @@ -0,0 +1,220 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/headnode-rdma-disabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898896, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/headnode-rdma-disabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT673", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT673", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The VM name" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The VM role size" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage account type for the disks of the VM" + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "The network interface name" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The user name of the administrator" + }, + "value": "azureuser" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the administrator" + }, + "value": "GEN-PASSWORD" + }, + "availabilitySetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The availability set name" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + } + }, + "privateDomainName": { + "type": "string", + "metadata": { + "description": "The fully qualified domain name (FQDN) for the private domain forest which will be created by this template, for example 'hpc.local'." + }, + "value": "hpc.local" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "clusterName": { + "value": "GEN-UNIQUE-12" + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServerHPCPack", + "offer": "WindowsServerHPCPack", + "sku": "2012R2", + "version": "latest" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "vmName-datadisk", + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 500, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "lun": 0 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/promoteDomainController", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.26", + "autoUpgradeMinorVersion": true, + "settings": { + "configuration": { + "url": "[uri(parameters('_artifactsLocation'), concat('CreateADPDC.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "script": "CreateADPDC.ps1", + "function": "CreateADPDC" + }, + "configurationArguments": { + "DomainName": "hpc.local" + } + }, + "protectedSettings": { + "configurationArguments": { + "AdminCreds": { + "UserName": "azureuser", + "Password": "GEN-PASSWORD" + } + } + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT674 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT674 new file mode 100644 index 0000000..682682c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT674 @@ -0,0 +1,241 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/headnode-rdma-enabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898905, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/headnode-rdma-enabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT674", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT674", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The VM name" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The VM role size" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage account type for the disks of the VM" + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "The network interface name" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The user name of the administrator" + }, + "value": "azureuser" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the administrator" + }, + "value": "GEN-PASSWORD" + }, + "availabilitySetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The availability set name to join if specified" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + } + }, + "privateDomainName": { + "type": "string", + "metadata": { + "description": "The fully qualified domain name (FQDN) for the private domain forest which will be created by this template, for example 'hpc.local'." + }, + "value": "hpc.local" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "clusterName": { + "value": "GEN-UNIQUE-12" + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + } + }, + "variables": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/ parameters('availabilitySetName')" + } + }, + "resources": [ + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "properties": { + "availabilitySet": "[if(empty(parameters('availabilitySetName')), json('null'), variables('availabilitySet'))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServerHPCPack", + "offer": "WindowsServerHPCPack", + "sku": "2012R2", + "version": "latest" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "vmName-datadisk", + "caching": "None", + "createOption": "Empty", + "diskSizeGB": 500, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "lun": 0 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/installRDMADriver", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "Microsoft.HpcCompute", + "type": "HpcVmDrivers", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/promoteDomainController", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName", + "Microsoft.Compute/virtualMachines/extensions/vmName/installRDMADriver" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.26", + "autoUpgradeMinorVersion": true, + "settings": { + "configuration": { + "url": "[uri(parameters('_artifactsLocation'), concat('CreateADPDC.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "script": "CreateADPDC.ps1", + "function": "CreateADPDC" + }, + "configurationArguments": { + "DomainName": "hpc.local" + } + }, + "protectedSettings": { + "configurationArguments": { + "AdminCreds": { + "UserName": "azureuser", + "Password": "GEN-PASSWORD" + } + } + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT675 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT675 new file mode 100644 index 0000000..df787a5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT675 @@ -0,0 +1,253 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/linuxnode.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898913, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/linuxnode.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT675", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT675", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicName": { + "type": "string", + "metadata": { + "description": "The network interface name for the VM" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The Id of the subnet in which the node is created" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The VM name" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The VM role size" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage account type for the disks of the VM" + } + }, + "imgPublisher": { + "type": "string", + "metadata": { + "description": "The publisher of the VM image" + } + }, + "imgOffer": { + "type": "string", + "metadata": { + "description": "The offer of the VM image" + } + }, + "imgSku": { + "type": "string", + "metadata": { + "description": "The sku of the VM image" + } + }, + "imgVersion": { + "type": "string", + "metadata": { + "description": "The version of the VM image" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The user name of the administrator" + }, + "value": "azureuser" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the administrator" + }, + "value": "GEN-PASSWORD" + }, + "availabilitySetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The availability set name to join if specified" + } + }, + "customData": { + "type": "string", + "metadata": { + "description": "The custom data in base64 format" + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "The HPC cluster name" + }, + "value": "GEN-UNIQUE-12" + }, + "privateDomainName": { + "type": "string", + "metadata": { + "description": "The fully qualified domain name (FQDN) for the private domain forest which will be created by this template, for example 'hpc.local'." + }, + "value": "hpc.local" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + } + }, + "variables": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/ parameters('availabilitySetName')" + } + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicName", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "IPConfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + } + } + } + ] + } + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicName" + ], + "properties": { + "availabilitySet": "[if(empty(parameters('availabilitySetName')), json('null'), variables('availabilitySet'))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "customData": "customData", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "imgPublisher", + "offer": "imgOffer", + "sku": "imgSku", + "version": "imgVersion" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/installHPCNodeAgent", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "Microsoft.HpcPack", + "type": "LinuxNodeAgent", + "typeHandlerVersion": "1.6", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "ClusterName": "GEN-UNIQUE-12.hpc.local" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT676 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT676 new file mode 100644 index 0000000..b1db60a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT676 @@ -0,0 +1,589 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/mainTemplate.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898922, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/mainTemplate.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT676", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT676", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "type": "string", + "minLength": 3, + "maxLength": 15, + "metadata": { + "description": "The HPC Pack cluster name, also used as the host name of the head node. It must contain between 3 and 15 characters with lowercase letters and numbers, and must start with a letter." + }, + "value": "GEN-UNIQUE-12" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the virtual network to be created. It must contain between 2 and 63 characters, start with a letter, end with a letter or number, and may contain only letters, numbers, underscores, periods, or hyphens." + } + }, + "privateDomainName": { + "type": "string", + "defaultValue": "hpc.local", + "metadata": { + "description": "The fully qualified domain name (FQDN) for the private domain forest which will be created by this template, for example 'hpc.local'." + }, + "value": "hpc.local" + }, + "headNodeVMSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "The VM size of the head node, all available VM sizes in Azure can be found at https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-windows-sizes. Note that some VM sizes in the list are only available in some particular locations. Please check the availability and the price of the VM sizes at https://azure.microsoft.com/pricing/details/virtual-machines/windows/ before deployment." + }, + "value": "Standard_D8_v3" + }, + "headNodeDiskType": { + "type": "string", + "defaultValue": "SSD", + "allowedValues": [ + "HDD", + "SSD" + ], + "metadata": { + "description": "The disk type of head node VM. Note that SSD only supports DS-series, DSv2-series, GS-series, and Fs-series VMs." + } + }, + "computeNodeImageOsPlatform": { + "type": "string", + "allowedValues": [ + "Windows", + "Linux" + ], + "metadata": { + "description": "The VM image OS platform for the compute nodes" + } + }, + "computeNodeImagePublisher": { + "type": "string", + "metadata": { + "description": "The VM image publisher for the compute nodes" + } + }, + "computeNodeImageOffer": { + "type": "string", + "metadata": { + "description": "The VM image offer for the compute nodes" + } + }, + "computeNodeImageSku": { + "type": "string", + "metadata": { + "description": "The VM image sku for the compute nodes" + } + }, + "computeNodeNamePrefix": { + "type": "string", + "minLength": 1, + "maxLength": 12, + "defaultValue": "IaaSCN", + "metadata": { + "description": "The name prefix of the compute nodes. It must be no more than 12 characters, begin with a letter, and contain only letters, numbers and hyphens. For example, if 'IaaSCN-' is specified, the compute node names will be 'IaaSCN-000', 'IaaSCN-001', ..." + }, + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "type": "int", + "defaultValue": 10, + "minValue": 1, + "maxValue": 500, + "metadata": { + "description": "The number of the compute nodes" + }, + "value": 2 + }, + "computeNodeVMSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "The VM size of the compute nodes, all available VM sizes in Azure can be found at https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-windows-sizes. Note that some VM sizes in the list are only available in some particular locations. Please check the availability and the price of the VM sizes at https://azure.microsoft.com/pricing/details/virtual-machines/windows/ before deployment." + }, + "value": "Standard_D4_v3" + }, + "computeNodeDiskType": { + "type": "string", + "defaultValue": "HDD", + "allowedValues": [ + "HDD", + "SSD" + ], + "metadata": { + "description": "The disk type of the compute node VMs. Note that SSD only supports DS-series, DSv2-series, GS-series, and Fs-series VMs." + } + }, + "publicIPName": { + "type": "string", + "metadata": { + "description": "The name of the public IP address" + } + }, + "publicIPRGName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Resource group for the public IP address resource" + } + }, + "publicIPNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Indicates whether the public IP address is new or existing" + } + }, + "publicIPDNSNameLabel": { + "type": "string", + "metadata": { + "description": "The DNS name label of the public IP address" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name for the virtual machines and the Active Directory domain." + }, + "value": "azureuser" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator password for the virtual machines and the Active Directory domain" + }, + "value": "GEN-PASSWORD" + }, + "headNodePostConfigScript": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional URL of a public available PowerShell script you want to run on the head node after it is configured. The script will be run as the Local System account. You can also specify arguments for the script, for example 'http://www.contoso.com/myhnpostscript.ps1 -Arg1 arg1 -Arg2 arg2'." + } + }, + "computeNodePostConfigScript": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional URL of a public available PowerShell script you want to run on the compute nodes after they are configured. The script will be run as the Local System account. You can also specify arguments for the script, for example 'http://www.contoso.com/mycnpostscript.ps1 -Arg1 arg1 -Arg2 arg2'." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "computeNodeImage": { + "value": "ComputeNode" + } + }, + "variables": { + "storageAccountTypes": { + "HDD": "Standard_LRS", + "SSD": "Premium_LRS" + }, + "hnStorageAccountName": "[toLower(concat('hpc', uniqueString(resourceGroup().id, toLower(parameters('clusterName')))))]", + "hnStorageAccountId": "Microsoft.Storage/storageAccounts/[toLower(concat('hpc', uniqueString(resourceGroup().id, toLower(parameters('clusterName')))))]", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/22", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/virtualNetworkName/Subnet-1", + "publicIPAddressType": "Dynamic", + "availabilitySetNamePrefix": "GEN-UNIQUE-12-avset", + "nbrVMPerAvailabilitySet": 180, + "availabilitySetNumber": "[add(div(parameters('computeNodeNumber'), variables('nbrVMPerAvailabilitySet')), 1)]", + "nicNameSuffix": "[concat('-nic', uniqueString(variables('subnetRef')))]", + "nicNameHN": "[concat(parameters('clusterName'), variables('nicNameSuffix'))]", + "vmSizeSuffix": "[uniqueString(resourceGroup().id)]", + "suffixA8Size": "Standard_A8[uniqueString(resourceGroup().id)]", + "suffixA9Size": "Standard_A9[uniqueString(resourceGroup().id)]", + "suffixH16rSize": "Standard_H16r[uniqueString(resourceGroup().id)]", + "suffixH16mrSize": "Standard_H16mr[uniqueString(resourceGroup().id)]", + "suffixNC24rSize": "Standard_NC24r[uniqueString(resourceGroup().id)]", + "suffixHNSize": "Standard_D8_v3[uniqueString(resourceGroup().id)]", + "suffixCNSize": "Standard_D4_v3[uniqueString(resourceGroup().id)]", + "cnRDMACapable": "[replace(replace(replace(replace(replace(replace(variables('suffixCNSize'), variables('suffixA8Size'), 'enabled'), variables('suffixA9Size'), 'enabled'), variables('suffixH16rSize'), 'enabled'), variables('suffixH16mrSize'), 'enabled'), variables('suffixNC24rSize'), 'enabled'), variables('suffixCNSize'), 'disabled')]", + "hnRDMACapable": "[replace(replace(replace(replace(replace(replace(variables('suffixHNSize'), variables('suffixA8Size'), 'enabled'), variables('suffixA9Size'), 'enabled'), variables('suffixH16rSize'), 'enabled'), variables('suffixH16mrSize'), 'enabled'), variables('suffixNC24rSize'), 'enabled'), variables('suffixHNSize'), 'disabled')]", + "hnRDMAJumpBox": { + "disabled-disabled": "disabled", + "disabled-enabled": "disabled", + "enabled-disabled": "disabled", + "enabled-enabled": "enabled" + }, + "hnRDMAState": "(hnRDMAJumpBox)[concat(variables(hnRDMACapable), -, variables(cnRDMACapable))]", + "cnRDMAState": "[replace(replace(replace(replace(replace(replace(variables('suffixCNSize'), variables('suffixA8Size'), 'enabled'), variables('suffixA9Size'), 'enabled'), variables('suffixH16rSize'), 'enabled'), variables('suffixH16mrSize'), 'enabled'), variables('suffixNC24rSize'), 'enabled'), variables('suffixCNSize'), 'disabled')]", + "cnOsPlatformRelated": { + "Linux": { + "template": "linuxnode.json" + }, + "Windows": { + "template": "windowsnode-rdma-[replace(replace(replace(replace(replace(replace(variables('suffixCNSize'), variables('suffixA8Size'), 'enabled'), variables('suffixA9Size'), 'enabled'), variables('suffixH16rSize'), 'enabled'), variables('suffixH16mrSize'), 'enabled'), variables('suffixNC24rSize'), 'enabled'), variables('suffixCNSize'), 'disabled')].json" + } + }, + "curCNOSPlatformRelated": "(cnOsPlatformRelated)[parameters(computeNodeImageOsPlatform)]", + "computeNodeTemplateUrl": "[uri(parameters('_artifactsLocation'), concat(variables('curCNOSPlatformRelated').template, parameters('_artifactsLocationSasToken')))]", + "computeNodeCustomData": "[base64(concat('HPCClusterName=', parameters('clusterName'), '\r\nImageCategory=public\r\nImageName=', parameters('computeNodeImageOffer'), '-', parameters('computeNodeImageSku'), '\r\nVMSize=', parameters('computeNodeVMSize')))]", + "adminBase64Password": "[base64(parameters('adminPassword'))]", + "iaasInfoArg": "[concat('-SubscriptionId ', subscription().subscriptionId, ' -VNet ', parameters('virtualNetworkName'), ' -Subnet ', variables('subnet1Name'), ' -Location \"', parameters('location'), '\" -ResourceGroup ', resourceGroup().name)]", + "headNodeCommandStr": "[concat('powershell.exe -ExecutionPolicy Unrestricted -File PrepareHN.ps1 -DomainFQDN ', parameters('privateDomainName'), ' -AdminUserName ', parameters('adminUsername'), ' -AdminBase64Password \"', variables('adminBase64Password'), '\" -CNSize ', parameters('computeNodeVMSize'), ' -PostConfigScript \"', base64(trim(parameters('headNodePostConfigScript'))), '\" ', variables('iaasInfoArg'))]", + "hnStorageConnStrPrefix": "DefaultEndpointsProtocol=https;AccountName=[toLower(concat('hpc', uniqueString(resourceGroup().id, toLower(parameters('clusterName')))))];AccountKey=" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[toLower(concat('hpc', uniqueString(resourceGroup().id, toLower(parameters('clusterName')))))]", + "apiVersion": "2021-04-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetworkName", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/22" + } + } + ] + } + }, + { + "name": "setupClusterPublicIP", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2017-05-10", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('publicip-', parameters('publicIPNewOrExisting'), '.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "publicIPAddressName": { + "value": "publicIPName" + }, + "publicIPAddressType": { + "value": "Dynamic" + }, + "domainNameLabel": { + "value": "publicIPDNSNameLabel" + }, + "publicIPRGName": { + "value": "publicIpRGName" + }, + "location": { + "value": "location" + } + } + } + }, + { + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicNameHN')]", + "location": "location", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//virtualNetworkName", + "Microsoft.Resources/deployments/setupClusterPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IPConfig", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.4", + "publicIPAddress": { + "id": "[reference('setupClusterPublicIP').outputs.resourceId.value]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetworkName/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "[concat(variables('availabilitySetNamePrefix'), padLeft(string(copyIndex()), 2, '0'))]", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformUpdateDomainCount": 5, + "platformFaultDomainCount": 2 + }, + "copy": { + "name": "availabilitySetCopy", + "count": "[add(div(parameters('computeNodeNumber'), variables('nbrVMPerAvailabilitySet')), 1)]" + } + }, + { + "apiVersion": "2017-05-10", + "type": "Microsoft.Resources/deployments", + "name": "createHeadNode", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicNameHN'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('hnStorageAccountName'))]", + "availabilitySetCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('headnode-rdma-', variables('hnRDMAState'), '.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "GEN-UNIQUE-12" + }, + "vmSize": { + "value": "Standard_D8_v3" + }, + "storageAccountType": { + "value": "(storageAccountTypes)[parameters(headNodeDiskType)]" + }, + "nicName": { + "value": "[variables('nicNameHN')]" + }, + "adminUsername": { + "value": "azureuser" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "availabilitySetName": { + "value": "GEN-UNIQUE-12-avset00" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "privateDomainName": { + "value": "hpc.local" + }, + "location": { + "value": "location" + } + } + } + }, + { + "apiVersion": "2017-05-10", + "type": "Microsoft.Resources/deployments", + "name": "updateVNetDNS", + "dependsOn": [ + "Microsoft.Resources/deployments/createHeadNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('vnet-with-dns-server.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "virtualNetworkName" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "Subnet-1" + }, + "subnetRange": { + "value": "10.0.0.0/22" + }, + "DNSServerAddress": { + "value": [ + "10.0.0.4", + "8.8.8.8" + ] + }, + "location": { + "value": "location" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-12/configureHeadNode", + "apiVersion": "2017-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Resources/deployments/updateVNetDNS" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('PrepareHN.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('HPCHNPrepare.ps1', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat(variables('headNodeCommandStr'), ' -AzureStorageConnStr \"', variables('hnStorageConnStrPrefix'), listKeys(variables('hnStorageAccountId'),'2017-10-01').keys[0].value, '\" -PublicDnsName ', reference('setupClusterPublicIP').outputs.fqdn.value)]" + } + } + }, + { + "apiVersion": "2017-05-10", + "type": "Microsoft.Resources/deployments", + "name": "[concat('create', parameters('computeNodeNamePrefix'), padLeft(string(copyIndex()), 3, '0'))]", + "dependsOn": [ + "availabilitySetCopy", + "Microsoft.Resources/deployments/updateVNetDNS" + ], + "copy": { + "name": "CN", + "count": 2 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('curCNOSPlatformRelated').template, parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "nicName": { + "value": "[concat(parameters('computeNodeNamePrefix'), padLeft(string(copyIndex()), 3, '0'), variables('nicNameSuffix'))]" + }, + "subnetId": { + "value": "Microsoft.Network/virtualNetworks/subnets/virtualNetworkName/Subnet-1" + }, + "vmName": { + "value": "[concat(parameters('computeNodeNamePrefix'), padLeft(string(copyIndex()), 3, '0'))]" + }, + "vmSize": { + "value": "Standard_D4_v3" + }, + "storageAccountType": { + "value": "(storageAccountTypes)[parameters(computeNodeDiskType)]" + }, + "imgPublisher": { + "value": "computeNodeImagePublisher" + }, + "imgOffer": { + "value": "computeNodeImageOffer" + }, + "imgSku": { + "value": "computeNodeImageSku" + }, + "imgVersion": { + "value": "latest" + }, + "adminUsername": { + "value": "azureuser" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "availabilitySetName": { + "value": "[concat(variables('availabilitySetNamePrefix'), padLeft(string(div(add(copyIndex(), 1), variables('nbrVMPerAvailabilitySet'))), 2, '0'))]" + }, + "customData": { + "value": "[base64(concat('HPCClusterName=', parameters('clusterName'), '\r\nImageCategory=public\r\nImageName=', parameters('computeNodeImageOffer'), '-', parameters('computeNodeImageSku'), '\r\nVMSize=', parameters('computeNodeVMSize')))]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "clusterName": { + "value": "GEN-UNIQUE-12" + }, + "privateDomainName": { + "value": "hpc.local" + }, + "computeNodePostConfigScript": { + "value": "[trim(parameters('computeNodePostConfigScript'))]" + }, + "location": { + "value": "location" + } + } + } + } + ], + "outputs": { + "clusterDNSName": { + "type": "string", + "value": "[reference('setupClusterPublicIP').outputs.fqdn.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT677 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT677 new file mode 100644 index 0000000..2eaa13b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT677 @@ -0,0 +1,82 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/publicip-existing.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898936, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/publicip-existing.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT677", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT677", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPAddressName": { + "type": "string" + }, + "publicIpRGName": { + "type": "string" + }, + "clusterName": { + "value": "GEN-UNIQUE-12" + }, + "privateDomainName": { + "value": "hpc.local" + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + }, + "adminUsername": { + "value": "azureuser" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + } + }, + "variables": { + "publicIpId": "publicIpRGName/Microsoft.Network/publicIPAddresses/publicIPAddressName" + }, + "resources": [], + "outputs": { + "resourceId": { + "type": "string", + "value": "[variables('publicIpId')]" + }, + "fqdn": { + "value": "[reference(variables('publicIpId'),'2017-10-01').dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT678 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT678 new file mode 100644 index 0000000..348d91e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT678 @@ -0,0 +1,109 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/publicip-new.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898963, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/publicip-new.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT678", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT678", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPAddressName": { + "type": "string" + }, + "publicIPAddressType": { + "type": "string" + }, + "domainNameLabel": { + "type": "string" + }, + "publicIpRGName": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "clusterName": { + "value": "GEN-UNIQUE-12" + }, + "privateDomainName": { + "value": "hpc.local" + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + }, + "adminUsername": { + "value": "azureuser" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + } + }, + "variables": { + "publicIpId": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddressName", + "apiVersion": "2021-02-01", + "location": "location", + "properties": { + "publicIPAllocationMethod": "publicIPAddressType", + "dnsSettings": { + "domainNameLabel": "domainNameLabel" + } + } + } + ], + "outputs": { + "resourceId": { + "type": "string", + "value": "[variables('publicIpId')]" + }, + "fqdn": { + "value": "[reference(variables('publicIpId'),'2017-10-01').dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT679 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT679 new file mode 100644 index 0000000..0969249 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT679 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/vnet-with-dns-server.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898972, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/vnet-with-dns-server.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT679", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT679", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new VNET in CIDR format" + }, + "defaultValue": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "description": "The address range of the subnet created in the new VNET" + }, + "defaultValue": "10.0.0.0/24" + }, + "DNSServerAddress": { + "type": "array", + "metadata": { + "description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "clusterName": { + "value": "GEN-UNIQUE-12" + }, + "privateDomainName": { + "value": "hpc.local" + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + }, + "adminUsername": { + "value": "azureuser" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "dhcpOptions": { + "dnsServers": "DNSServerAddress" + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT68 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT68 new file mode 100644 index 0000000..38251f3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT68 @@ -0,0 +1,428 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-orchestrator.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884692, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-orchestrator.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT68", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT68", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPDomainNameLabelOrchServer": { + "defaultValue": "", + "type": "string" + }, + "networkSecurityGroupNameOrchServer": { + "defaultValue": "", + "type": "string" + }, + "networkInterfaceNameOrchServer": { + "defaultValue": "", + "type": "string" + }, + "vmNameOrchServer": { + "defaultValue": "", + "type": "string" + }, + "vmAdminUsernameOrchServer": { + "defaultValue": "", + "type": "string" + }, + "storageAccountName": { + "defaultValue": "", + "type": "string" + }, + "vmStorageAccountContainerName": { + "defaultValue": "", + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "value": "westus" + }, + "network-api-version": { + "type": "string", + "defaultValue": "" + }, + "compute-api-version": { + "type": "string", + "defaultValue": "" + }, + "deployment-api-version2": { + "type": "string", + "defaultValue": "" + }, + "tagvalues": { + "type": "object", + "defaultValue": "" + }, + "imagePublisherLinux": { + "type": "string", + "defaultValue": "" + }, + "imageOfferLinux": { + "type": "string", + "defaultValue": "" + }, + "orcServerubuntuOSVersion": { + "type": "string", + "defaultValue": "" + }, + "vmSizeOrcServer": { + "type": "string", + "defaultValue": "" + }, + "subnet2Ref": { + "type": "string", + "defaultValue": "" + }, + "installOrchTemplateurl": { + "type": "string", + "defaultValue": "" + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "authenticationType": { + "type": "string" + }, + "vmAdminPasswordOrPublicKeyOrchServer": { + "type": "securestring" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": { + "publicIPAddressNameOrchServer": "publicipOrchestratorServer", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/ parameters('vmAdminUsernameOrchServer')/.ssh/authorized_keys", + "keyData": "vmAdminPasswordOrPublicKeyOrchServer" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "name": "", + "apiVersion": "2017-03-30", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "properties": { + "hardwareProfile": { + "vmSize": "" + }, + "storageProfile": { + "imageReference": { + "publisher": "", + "offer": "", + "sku": "", + "version": "latest" + }, + "osDisk": { + "name": "parameters('vmNameOrchServer')-osDisk", + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "dataDisks": [] + }, + "osProfile": { + "computerName": "", + "adminUsername": "", + "secrets": [], + "adminPassword": "vmAdminPasswordOrPublicKeyOrchServer", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ parameters('networkInterfaceNameOrchServer')" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ parameters('networkInterfaceNameOrchServer')" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "parameters('vmNameOrchServer')/installdockerandcompose", + "apiVersion": "2015-05-01-preview", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ parameters('vmNameOrchServer')" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true, + "settings": {} + } + }, + { + "name": "orchestratorapplication", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ parameters('vmNameOrchServer')/extensions/installdockerandcompose" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "westus" + }, + "vmName": { + "value": "" + }, + "datameerTags": { + "value": "datameerTags" + }, + "trendmicroTags": { + "value": "trendmicroTags" + }, + "chefSoftwareTags": { + "value": "chefSoftwareTags" + }, + "quickstartTags": { + "value": "quickstartTags" + } + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicipOrchestratorServer", + "apiVersion": "2017-06-01", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "" + }, + "idleTimeoutInMinutes": 4 + }, + "dependsOn": [] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "", + "apiVersion": "2017-06-01", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicipOrchestratorServer" + }, + "subnet": { + "id": "" + } + } + } + ], + "dnsSettings": { + "dnsServers": [] + }, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ parameters('networkSecurityGroupNameOrchServer')" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/publicipOrchestratorServer", + "Microsoft.Network/networkSecurityGroups/ parameters('networkSecurityGroupNameOrchServer')" + ] + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "", + "apiVersion": "2017-06-01", + "location": "westus", + "tags": { + "program": null, + "project": null, + "quickstartName": "quickstartTags", + "provider": "chefSoftwareTags" + }, + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1010, + "direction": "Inbound" + } + }, + { + "name": "http", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1020, + "direction": "Inbound" + } + }, + { + "name": "https", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1030, + "direction": "Inbound" + } + }, + { + "name": "https8443", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1040, + "direction": "Inbound" + } + }, + { + "name": "http33001", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "33001", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1050, + "direction": "Inbound" + } + } + ] + }, + "dependsOn": [] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT680 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT680 new file mode 100644 index 0000000..f32fe24 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT680 @@ -0,0 +1,280 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/windowsnode-rdma-disabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898980, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/windowsnode-rdma-disabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT680", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT680", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicName": { + "type": "string", + "metadata": { + "description": "The network interface name for the VM" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The Id of the subnet in which the node is created" + } + }, + "availabilitySetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The availability set name to join if specified" + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "The HPC cluster name" + }, + "value": "GEN-UNIQUE-12" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The VM name" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The VM role size" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage account type for the disks of the VM" + } + }, + "imgPublisher": { + "type": "string", + "metadata": { + "description": "The publisher of the VM image" + } + }, + "imgOffer": { + "type": "string", + "metadata": { + "description": "The offer of the VM image" + } + }, + "imgSku": { + "type": "string", + "metadata": { + "description": "The sku of the VM image" + } + }, + "imgVersion": { + "type": "string", + "metadata": { + "description": "The version of the VM image" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The user name of the administrator" + }, + "value": "azureuser" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the administrator" + }, + "value": "GEN-PASSWORD" + }, + "customData": { + "type": "string", + "metadata": { + "description": "The custom data in base64 format" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + } + }, + "privateDomainName": { + "type": "string", + "metadata": { + "description": "The fully qualified domain name (FQDN) for the private domain forest which will be created by this template, for example 'hpc.local'." + }, + "value": "hpc.local" + }, + "computeNodePostConfigScript": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional URL of a public available PowerShell script you want to run on the compute nodes after they are configured. You can also specify arguments for the script, for example 'http://www.consto.com/mypostscript.ps1 -Arg1 arg1 -Arg2 arg2'." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicName", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "IPConfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + } + } + } + ] + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "customData": "customData" + }, + "storageProfile": { + "imageReference": { + "publisher": "imgPublisher", + "offer": "imgOffer", + "sku": "imgSku", + "version": "imgVersion" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/configureComputeNode", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.26", + "autoUpgradeMinorVersion": true, + "settings": { + "configuration": { + "url": "[uri(parameters('_artifactsLocation'), concat('ConfigComputeNode.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "script": "ConfigComputeNode.ps1", + "function": "ConfigComputeNode" + }, + "configurationArguments": { + "DomainName": "hpc.local", + "PostConfigScript": "" + } + }, + "protectedSettings": { + "configurationArguments": { + "AdminCreds": { + "UserName": "azureuser", + "Password": "GEN-PASSWORD" + } + } + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT681 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT681 new file mode 100644 index 0000000..3759ca3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT681 @@ -0,0 +1,301 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/create-hpc-cluster/windowsnode-rdma-enabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962898988, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/create-hpc-cluster/windowsnode-rdma-enabled.json", + "/demos/create-hpc-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT681", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT681", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicName": { + "type": "string", + "metadata": { + "description": "The network interface name for the VM" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "The Id of the subnet in which the node is created" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The VM name" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The VM role size" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage account type for the disks of the VM" + } + }, + "imgPublisher": { + "type": "string", + "metadata": { + "description": "The publisher of the VM image" + } + }, + "imgOffer": { + "type": "string", + "metadata": { + "description": "The offer of the VM image" + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "The HPC cluster name" + }, + "value": "GEN-UNIQUE-12" + }, + "imgSku": { + "type": "string", + "metadata": { + "description": "The sku of the VM image" + } + }, + "imgVersion": { + "type": "string", + "metadata": { + "description": "The version of the VM image" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The user name of the administrator" + }, + "value": "azureuser" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the administrator" + }, + "value": "GEN-PASSWORD" + }, + "availabilitySetName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The availability set name to join if specified" + } + }, + "customData": { + "type": "string", + "metadata": { + "description": "The custom data in base64 format" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + } + }, + "privateDomainName": { + "type": "string", + "metadata": { + "description": "The fully qualified domain name (FQDN) for the private domain forest which will be created by this template, for example 'hpc.local'." + }, + "value": "hpc.local" + }, + "computeNodePostConfigScript": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Optional URL of a public available PowerShell script you want to run on the compute nodes after they are configured. You can also specify arguments for the script, for example 'http://www.consto.com/mypostscript.ps1 -Arg1 arg1 -Arg2 arg2'." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "headNodeVMSize": { + "value": "Standard_D8_v3" + }, + "computeNodeImage": { + "value": "ComputeNode" + }, + "computeNodeNamePrefix": { + "value": "IaaSCN-" + }, + "computeNodeNumber": { + "value": 2 + }, + "computeNodeVMSize": { + "value": "Standard_D4_v3" + } + }, + "variables": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/ parameters('availabilitySetName')" + } + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicName", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "IPConfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + } + } + } + ] + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicName" + ], + "properties": { + "availabilitySet": "[if(empty(parameters('availabilitySetName')), json('null'), variables('availabilitySet'))]", + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "customData": "customData" + }, + "storageProfile": { + "imageReference": { + "publisher": "imgPublisher", + "offer": "imgOffer", + "sku": "imgSku", + "version": "imgVersion" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicName" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/installRDMADriver", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName" + ], + "properties": { + "publisher": "Microsoft.HpcCompute", + "type": "HpcVmDrivers", + "typeHandlerVersion": "1.1", + "autoUpgradeMinorVersion": true + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmName/configureComputeNode", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmName", + "Microsoft.Compute/virtualMachines/extensions/vmName/installRDMADriver" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.26", + "autoUpgradeMinorVersion": true, + "settings": { + "configuration": { + "url": "[uri(parameters('_artifactsLocation'), concat('ConfigComputeNode.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "script": "ConfigComputeNode.ps1", + "function": "ConfigComputeNode" + }, + "configurationArguments": { + "DomainName": "hpc.local", + "PostConfigScript": "" + } + }, + "protectedSettings": { + "configurationArguments": { + "AdminCreds": { + "UserName": "azureuser", + "Password": "GEN-PASSWORD" + } + } + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT682 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT682 new file mode 100644 index 0000000..a579032 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT682 @@ -0,0 +1,1051 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/custom-private-dns/nested/linux-client/setuplinuxclient.json" + ], + "timestamp": 1642962898996, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/nested/linux-client/setuplinuxclient.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT682", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT682", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmList": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "List of virtual machines to be configured. If using multiple VMs, make their names comma separate, e.g. VM01,VM02,VM03." + } + }, + "dnsZone": { + "type": "string", + "metadata": { + "description": "Name of the dnsZone to use as the suffix on the clients and to register records in" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and scripts, that this script depends on" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "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", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vmListArray": "[split(replace(parameters('vmList'),' ',''),',')]" + }, + "resources": [ + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable DDNS", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/ddns-dhcphook', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh setuplinuxclient.sh dnsZone" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT683 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT683 new file mode 100644 index 0000000..09698e7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT683 @@ -0,0 +1,1009 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/custom-private-dns/nested/server/setupserver.json" + ], + "timestamp": 1642962899006, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/nested/server/setupserver.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT683", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT683", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmList": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "List of virtual machines to be configured. If using multiple VMs, make their names comma separate, e.g. VM01,VM02,VM03." + } + }, + "dnsZone": { + "type": "string", + "metadata": { + "description": "Name of the forward dnsZone to configure for updates" + } + }, + "vnetName": { + "type": "string", + "metadata": { + "description": "Name of the vnet for which to create the reverse DNS zone" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and scripts, that this script depends on" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "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", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vmListArray": "[split(replace(parameters('vmList'),' ',''),',')]", + "vnetID": "Microsoft.Network/virtualNetworks//vnetName" + }, + "resources": [ + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + }, + { + "comments": "DNS server setup - assumes AD has already been setup", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsServer')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File nested/server/setupserver.ps1', ' ', parameters('dnsZone'), ' ', reference(variables('vnetID'), '2016-12-01').addressSpace.addressPrefixes[0])]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT684 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT684 new file mode 100644 index 0000000..6a0ceb7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT684 @@ -0,0 +1,1002 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/custom-private-dns/nested/windows-client/setupwinclient.json" + ], + "timestamp": 1642962899025, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/nested/windows-client/setupwinclient.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT684", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT684", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmList": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "List of virtual machines to be configured. If using multiple VMs, make their names comma separate, e.g. VM01,VM02,VM03." + } + }, + "dnsZone": { + "type": "string", + "metadata": { + "description": "Name of the dnsZone to use as the suffix on the clients and to register records in" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and scripts, that this script depends on" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "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", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vmListArray": "[split(replace(parameters('vmList'),' ',''),',')]" + }, + "resources": [ + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + }, + { + "comments": "DNS client setup - set suffix and enable PTR record registration", + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmListArray')[copyIndex()],'/SetupDnsClient')]", + "location": "location", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.8", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File nested/windows-client/setupwinclient.ps1 dnsZone" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT685 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT685 new file mode 100644 index 0000000..d214250 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT685 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/custom-private-dns/nested/genericvm.json" + ], + "timestamp": 1642962899067, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/nested/genericvm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT685", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT685", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "subnetId": { + "type": "string", + "metadata": { + "description": "Reference to the subnet to put the VM's NIC in" + } + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the VM, also sets the computer name and is the based for the NIC's name" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the VM" + }, + "defaultValue": "Standard_A1" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the Administrator of the new VM and Domain" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account of the new VM and Domain" + } + }, + "imagePublisher": { + "type": "string", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "metadata": { + "description": "Image SKU" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "nicName": "vmName-nic" + }, + "resources": [ + { + "name": "vmName-nic", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + } + } + } + ] + } + }, + { + "name": "vmName", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/vmName-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSKU", + "version": "latest" + }, + "osDisk": { + "name": "vmName_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmName-nic" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT686 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT686 new file mode 100644 index 0000000..400f7f1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT686 @@ -0,0 +1,305 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/custom-private-dns/azuredeploy.json", + "/demos/custom-private-dns/azuredeploy.parameters.json" + ], + "timestamp": 1642962899078, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/custom-private-dns/azuredeploy.json", + "/demos/custom-private-dns/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT686", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT686", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "defaultValue": "ad-vm", + "metadata": { + "description": "Virtual machine name." + }, + "value": "GEN-UNIQUE-10" + }, + "dnsZoneName": { + "type": "string", + "defaultValue": "private.local", + "metadata": { + "description": "The private DNS suffix and zone name." + }, + "value": "private.local" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the Administrator of the new VM and Domain" + }, + "defaultValue": "adAdministrator", + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account of the new VM and Domain" + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + } + }, + "variables": {}, + "resources": [ + { + "comments": "This uses one of the other templates to deploy a pair of AD controllers", + "name": "adDeployment", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/active-directory-new-domain/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "domainName": { + "value": "private.local" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "virtualMachineName": { + "value": "GEN-UNIQUE-10" + } + } + } + }, + { + "comments": "This deployment modifies the DNS servers to allow dynamic and reverse DNS", + "name": "setupServer", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/adDeployment" + ], + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/server/setupserver.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmList": { + "value": "GEN-UNIQUE-10" + }, + "dnsZone": { + "value": "private.local" + }, + "vnetName": { + "value": "[reference('adDeployment').outputs.virtualNetworkName.value]" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "comments": "Create an example Windows client VM", + "name": "setupWindowsClient", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/setupServer" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/genericvm.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "WindowsClient" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "subnetId": { + "value": "[resourceId(reference('adDeployment').outputs.virtualNetworkResourceGroupName.value, 'Microsoft.Network/virtualNetworks/subnets', reference('adDeployment').outputs.virtualNetworkName.value, reference('adDeployment').outputs.virtualNetworkSubnetName.value)]" + }, + "imagePublisher": { + "value": "MicrosoftWindowsServer" + }, + "imageOffer": { + "value": "WindowsServer" + }, + "imageSKU": { + "value": "2012-R2-Datacenter" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "comments": "Install the extension on the Windows Client", + "name": "WindowsExtension", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/setupWindowsClient" + ], + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/windows-client/setupwinclient.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmList": { + "value": "WindowsClient" + }, + "dnsZone": { + "value": "private.local" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "comments": "Create an example Ubuntu client VM", + "name": "setupLinuxClient", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments/setupServer" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/genericvm.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmName": { + "value": "LinuxClient" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "subnetId": { + "value": "[resourceId(reference('adDeployment').outputs.virtualNetworkResourceGroupName.value, 'Microsoft.Network/virtualNetworks/subnets', reference('adDeployment').outputs.virtualNetworkName.value, reference('adDeployment').outputs.virtualNetworkSubnetName.value)]" + }, + "imagePublisher": { + "value": "Canonical" + }, + "imageOffer": { + "value": "UbuntuServer" + }, + "imageSKU": { + "value": "14.04.5-LTS" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "comments": "Install the extension on the Linux Client", + "name": "LinuxExtension", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/setupLinuxClient" + ], + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/linux-client/setuplinuxclient.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vmList": { + "value": "LinuxClient" + }, + "dnsZone": { + "value": "private.local" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT687 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT687 new file mode 100644 index 0000000..06785c9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT687 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.compute/vm.windows.json" + ], + "timestamp": 1642962899091, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.compute/vm.windows.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT687", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT687", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the virtual machine" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the virtual machine" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin user password for virtual machine" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of VM" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer" + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer" + }, + "osSku": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "OS sku for VM" + } + }, + "nicId": { + "type": "string", + "metadata": { + "description": "Network interface id." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "VM deployment location." + } + }, + "dataDiskSizeInGB": { + "type": "int", + "defaultValue": 128, + "metadata": { + "description": "Size for Data Disks." + } + }, + "numberOfDataDisks": { + "type": "int", + "minValue": 0, + "maxValue": 16, + "defaultValue": 1, + "metadata": { + "description": "The number of dataDisks to be returned in the output array." + } + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2018-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName", + "location": "location", + "tags": "tags", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "diskSizeGB": 128, + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "nicId" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT688 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT688 new file mode 100644 index 0000000..a853042 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT688 @@ -0,0 +1,407 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "timestamp": 1642962899100, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT688", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT688", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "defaultValue": "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + }, + "omsSolutionsName": { + "type": "array" + }, + "tags": { + "type": "object" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Free", + "Standalone", + "PerNode" + ], + "defaultValue": "Free", + "metadata": { + "description": "Service Tier: Free, Standalone, or PerNode" + } + }, + "dataRetention": { + "type": "int", + "defaultValue": 90, + "minValue": 7, + "maxValue": 730, + "metadata": { + "description": "Number of days of retention. Free plans can only have 7 days, Standalone and OMS plans include 30 days for free" + } + }, + "location": { + "type": "string", + "allowedValues": [ + "East US", + "West Europe", + "Southeast Asia", + "Australia Southeast" + ] + } + }, + "resources": [ + { + "name": "[concat('oms-workspace',uniqueString(resourceGroup().id))]", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2017-04-26-preview", + "location": "location", + "tags": "tags", + "properties": { + "sku": { + "name": "Free" + }, + "retention": 90 + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "kind": "AzureActivityLog", + "name": "[concat(parameters('omsWorkspaceName'), '/', subscription().subscriptionId)]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "properties": { + "linkedResourceId": "[concat(subscription().Id, '/providers/microsoft.insights/eventTypes/management')]" + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('omsWorkspaceName')]" + }, + "workspaceId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2017-04-26-preview').customerId]" + }, + "workspaceKey": { + "type": "string", + "value": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2017-04-26-preview').primarySharedKey]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT689 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT689 new file mode 100644 index 0000000..33c0364 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT689 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/nic-with-pip.json" + ], + "timestamp": 1642962899116, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/nic-with-pip.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT689", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT689", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nicName": { + "type": "string" + }, + "publicIPAddressId": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "privateIPAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ] + }, + "location": { + "type": "string" + }, + "nsgId": { + "type": "string", + "defaultValue": "" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2018-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicName", + "location": "location", + "tags": "tags", + "properties": { + "networkSecurityGroup": { + "id": "" + }, + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "publicIPAddressId" + }, + "subnet": { + "id": "subnetId" + } + } + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT69 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT69 new file mode 100644 index 0000000..c080e1b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT69 @@ -0,0 +1,450 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-splunkenterprise.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884775, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-splunkenterprise.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT69", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT69", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "value": "westus" + }, + "network-api-version": { + "type": "string", + "defaultValue": "" + }, + "compute-api-version": { + "type": "string", + "defaultValue": "" + }, + "vmNameSplunkEnterprise": { + "type": "string", + "defaultValue": "" + }, + "vmAdminUsernameSplunkEnterprise": { + "defaultValue": "", + "type": "string" + }, + "vmAdminPasswordSplunkEnterprise": { + "defaultValue": "", + "type": "SecureString" + }, + "splunkAdminPassword": { + "defaultValue": "", + "type": "SecureString" + }, + "publicIPAddressSettingsSplunk": { + "type": "object", + "metadata": { + "description": "Public IP address settings object" + } + }, + "networkSecurityGroupNameSplunkEnterprise": { + "type": "string", + "defaultValue": "" + }, + "networkInterfaceNameSplunkEnterprise": { + "defaultValue": "", + "type": "string" + }, + "machineSettings": { + "type": "object" + }, + "subnet3Ref": { + "type": "string" + }, + "osSettingsSplunk": { + "type": "object" + }, + "tagvalues": { + "type": "object", + "defaultValue": { + "program": "p2p", + "project": "TrendMicro" + } + }, + "udpPort": { + "defaultValue": "", + "type": "string" + }, + "storageAccountName": { + "defaultValue": "", + "type": "string" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": { + "publicIpName": "machineSettings", + "splunkServerRole": "splunk_server", + "singleQuote": "'", + "clusterMasterIp": "machineSettings" + }, + "resources": [ + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat(parameters('publicIPAddressSettingsSplunk').name, parameters('publicIPAddressSettingsSplunk').map[copyindex()])]", + "copy": { + "name": "publicIPAddressLoop", + "count": "publicIPAddressSettingsSplunk" + }, + "location": "westus", + "tags": { + "program": "p2p", + "project": "TrendMicro" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('publicIPAddressSettingsSplunk').domainNamePrefix, parameters('publicIPAddressSettingsSplunk').map[copyindex()])]" + } + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "", + "location": "westus", + "tags": { + "program": "p2p", + "project": "TrendMicro" + }, + "properties": { + "securityRules": [ + { + "name": "Allow-SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "machineSettings", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Allow-HTTP", + "properties": { + "description": "Allows HTTP traffic on port 8000", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Allow-HTTPS", + "properties": { + "description": "Allows HTTPS traffic on port 443", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Allow-HTTP-Event-Collector", + "properties": { + "description": "Allows HTTP(S) Event Collector traffic on port 8088", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8088", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "Allow-Receiver-TCP", + "properties": { + "description": "Allows receiver TCP traffic on port 9997", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9997", + "sourceAddressPrefix": "machineSettings", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 140, + "direction": "Inbound" + } + }, + { + "name": "Allow-Mgmt-From-VNET", + "properties": { + "description": "Allows mgmt on port 8089 from VNET only", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8089", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 150, + "direction": "Inbound" + } + }, + { + "name": "Allow-Custom-UDP", + "properties": { + "description": "Allows UDP port entered by user", + "protocol": "Udp", + "sourcePortRange": "*", + "destinationPortRange": "", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 160, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "", + "location": "westus", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/ parameters('networkSecurityGroupNameSplunkEnterprise')", + "Microsoft.Network/publicIPAddresses/machineSettings" + ], + "tags": { + "program": "p2p", + "project": "TrendMicro" + }, + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ parameters('networkSecurityGroupNameSplunkEnterprise')" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "machineSettings", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/machineSettings" + }, + "subnet": { + "id": "subnet3Ref" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "", + "location": "westus", + "tags": { + "program": "p2p", + "project": "TrendMicro" + }, + "plan": { + "name": "osSettingsSplunk", + "publisher": "osSettingsSplunk", + "product": "osSettingsSplunk" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ parameters('networkInterfaceNameSplunkEnterprise')" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/machineSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "", + "adminUsername": "", + "adminPassword": "" + }, + "storageProfile": { + "imageReference": "osSettingsSplunk", + "osDisk": { + "name": "parameters('vmNameSplunkEnterprise')_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "parameters('vmNameSplunkEnterprise')_DataDisk1", + "diskSizeGB": "machineSettings", + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "parameters('vmNameSplunkEnterprise')_DataDisk2", + "diskSizeGB": "machineSettings", + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "parameters('vmNameSplunkEnterprise')_DataDisk3", + "diskSizeGB": "machineSettings", + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "parameters('vmNameSplunkEnterprise')_DataDisk4", + "diskSizeGB": "machineSettings", + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "parameters('vmNameSplunkEnterprise')_DataDisk5", + "diskSizeGB": "machineSettings", + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "parameters('vmNameSplunkEnterprise')_DataDisk6", + "diskSizeGB": "machineSettings", + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "parameters('vmNameSplunkEnterprise')_DataDisk7", + "diskSizeGB": "machineSettings", + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "parameters('vmNameSplunkEnterprise')_DataDisk8", + "diskSizeGB": "machineSettings", + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ parameters('networkInterfaceNameSplunkEnterprise')" + } + ] + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "parameters('vmNameSplunkEnterprise')/node-setup", + "location": "westus", + "tags": { + "program": "p2p", + "project": "TrendMicro" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ parameters('vmNameSplunkEnterprise')", + "Microsoft.Network/networkInterfaces/ parameters('networkInterfaceNameSplunkEnterprise')" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.5", + "settings": { + "fileUris": "osSettingsSplunk" + }, + "protectedSettings": { + "commandToExecute": "bash node-setup.sh -r splunk_server -c machineSettings -u parameters('udpPort') -p ' parameters('splunkAdminPassword')'" + } + } + } + ], + "outputs": { + "splunkenterpriseUri": { + "type": "string", + "value": "[concat('https://',reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressSettingsSplunk').name)).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT690 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT690 new file mode 100644 index 0000000..4f21a0c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT690 @@ -0,0 +1,61 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/nsg.json" + ], + "timestamp": 1642962899124, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/nsg.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT690", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT690", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "nsgName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "securityRules": { + "type": "array" + }, + "tags": { + "type": "object" + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2018-06-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsgName", + "location": "location", + "tags": "tags", + "properties": { + "securityRules": "securityRules" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT691 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT691 new file mode 100644 index 0000000..436d692 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT691 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "timestamp": 1642962899132, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT691", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT691", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPAddressName": { + "type": "string" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic" + }, + "dnsNameForPublicIP": { + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2018-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddressName", + "location": "location", + "tags": "tags", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNameForPublicIP" + } + } + } + ], + "outputs": { + "publicIPAddressName": { + "type": "string", + "value": "[parameters('publicIPAddressName')]" + }, + "publicIPResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT692 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT692 new file mode 100644 index 0000000..d9e04b1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT692 @@ -0,0 +1,67 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "timestamp": 1642962899140, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT692", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT692", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "addressPrefix": { + "type": "string" + }, + "subnets": { + "type": "array" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2018-06-01", + "name": "vnetName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "tags": "tags", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": "subnets" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT693 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT693 new file mode 100644 index 0000000..cc8d422 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT693 @@ -0,0 +1,524 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ddos-attack-prevention/azuredeploy.json", + "/demos/ddos-attack-prevention/azuredeploy.parameters.json" + ], + "timestamp": 1642962899149, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ddos-attack-prevention/azuredeploy.json", + "/demos/ddos-attack-prevention/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT693", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.insights/alertrules", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT693", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/ddos-attack-prevention/", + "metadata": { + "description": "this will be the location for artifacts" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "this will be the sas key to access artifacts" + } + }, + "location": { + "type": "string", + "allowedValues": [ + "East US", + "West Europe", + "Southeast Asia", + "Australia Southeast" + ], + "metadata": { + "description": "your resources will be created in this location" + }, + "value": "East US" + }, + "omsSku": { + "type": "string", + "defaultValue": "PerNode", + "allowedValues": [ + "Free", + "Standalone", + "PerNode" + ], + "metadata": { + "description": "this will be you SKU for OMS" + } + }, + "vNetName": { + "type": "string", + "defaultValue": "ddos-attack-vnet", + "metadata": { + "description": "this will be name of the VNET" + } + }, + "vNetAddressSpace": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "this will be address space for VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "subnet-01", + "metadata": { + "description": "this will be name of the subnet" + } + }, + "subnetAddressSpace": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "this will be address space for subnet" + } + }, + "nsgNamePrefix": { + "type": "string", + "defaultValue": "ddos-attack", + "metadata": { + "description": "this will be prefix used for NSG" + } + }, + "pipAddressType": { + "type": "string", + "defaultValue": "dynamic", + "allowedValues": [ + "dynamic", + "static" + ], + "metadata": { + "description": "this will be the type of public IP address used for the VM name" + } + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "vm", + "metadata": { + "description": "this will be the prefix used for the VM name" + } + }, + "adminUserName": { + "type": "string", + "metadata": { + "description": "this will be the user name of the VMs deployed" + }, + "value": "GEN-UNIQUE" + }, + "adminUserPassword": { + "type": "securestring", + "metadata": { + "description": "this will be the password of the user created on the user" + }, + "value": "GEN-PASSWORD" + }, + "emailToSendAlertsTo": { + "type": "string", + "defaultValue": "dummy@contoso.com", + "metadata": { + "description": "attack email alerts will be sent to this email id" + } + } + }, + "variables": { + "omsWorkspaceName": "[concat('DDOS-Attack','-',uniqueString(resourceGroup().id))]", + "omsSolutions": [ + "Security", + "AzureActivity", + "AntiMalware" + ], + "tags": { + "scenario": "Vm-DDOS-Attack-Prevention" + }, + "subnets": [ + { + "name": "subnet-01", + "properties": { + "addressPrefix": "10.1.0.0/24" + } + } + ], + "nsgName": "ddos-attack-nsg", + "nsgSecurityRules": [ + { + "name": "allow-inbound-http", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "allow-inbound-rdp", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 2000, + "direction": "Inbound" + } + } + ], + "vmName": "vm-with-ddos", + "omsTemplateUri": "[concat(uri(parameters('_artifactsLocation'),'nested/microsoft.loganalytics/workspaces.json'),parameters('_artifactsLocationSasToken'))]", + "vnetTemplateUri": "[concat(uri(parameters('_artifactsLocation'),'nested/microsoft.network/virtualnetworks.json'),parameters('_artifactsLocationSasToken'))]", + "nsgTemplateUri": "[concat(uri(parameters('_artifactsLocation'),'nested/microsoft.network/nsg.json'),parameters('_artifactsLocationSasToken'))]", + "pipTemplateUri": "[concat(uri(parameters('_artifactsLocation'),'nested/microsoft.network/publicipaddress.json'),parameters('_artifactsLocationSasToken'))]", + "nicTemplateUri": "[concat(uri(parameters('_artifactsLocation'),'nested/microsoft.network/nic-with-pip.json'),parameters('_artifactsLocationSasToken'))]", + "vmTemplateUri": "[concat(uri(parameters('_artifactsLocation'),'nested/microsoft.compute/vm.windows.json'),parameters('_artifactsLocationSasToken'))]", + "dscScriptUri": "[concat(uri(parameters('_artifactsLocation'),'DSC/DesiredStateConfig.ps1.zip'),parameters('_artifactsLocationSasToken'))]" + }, + "resources": [ + { + "apiVersion": "2018-05-01", + "name": "deploy-ddos-attack-oms-resource", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('omsTemplateUri')]" + }, + "parameters": { + "omsWorkspaceName": { + "value": "[variables('omsWorkspaceName')]" + }, + "omsSolutionsName": { + "value": [ + "Security", + "AzureActivity", + "AntiMalware" + ] + }, + "sku": { + "value": "PerNode" + }, + "location": { + "value": "East US" + }, + "tags": { + "value": { + "scenario": "Vm-DDOS-Attack-Prevention" + } + } + } + } + }, + { + "apiVersion": "2018-05-01", + "name": "vnetName--resource", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('vnetTemplateUri')]" + }, + "parameters": { + "vnetName": { + "value": "vnetName" + }, + "addressPrefix": { + "value": "10.1.0.0/16" + }, + "subnets": { + "value": [ + { + "name": "subnet-01", + "properties": { + "addressPrefix": "10.1.0.0/24" + } + } + ] + }, + "location": { + "value": "East US" + }, + "tags": { + "value": { + "scenario": "Vm-DDOS-Attack-Prevention" + } + } + } + } + }, + { + "apiVersion": "2018-05-01", + "name": "ddos-attack-nsg--resource", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('nsgTemplateUri')]" + }, + "parameters": { + "nsgName": { + "value": "ddos-attack-nsg" + }, + "securityRules": { + "value": [ + { + "name": "allow-inbound-http", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "allow-inbound-rdp", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 2000, + "direction": "Inbound" + } + } + ] + }, + "location": { + "value": "East US" + }, + "tags": { + "value": { + "scenario": "Vm-DDOS-Attack-Prevention" + } + } + } + } + }, + { + "apiVersion": "2018-05-01", + "name": "vm-with-ddos-pip-resource", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('pipTemplateUri')]" + }, + "parameters": { + "publicIPAddressName": { + "value": "vm-with-ddos-pip" + }, + "publicIPAddressType": { + "value": "dynamic" + }, + "dnsNameForPublicIP": { + "value": "[concat(variables('vmName'),uniqueString(resourceGroup().id, 'pip'),'-pip')]" + }, + "location": { + "value": "East US" + }, + "tags": { + "value": { + "scenario": "Vm-DDOS-Attack-Prevention" + } + } + } + } + }, + { + "apiVersion": "2018-05-01", + "name": "vm-with-ddos-nic-resource", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "vm-with-ddos-pip-resource", + "ddos-attack-nsg--resource", + "vnetName--resource" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('nicTemplateUri')]" + }, + "parameters": { + "nicName": { + "value": "vm-with-ddos-nic" + }, + "publicIPAddressId": { + "value": "Microsoft.Network/publicIPAddresses/vm-with-ddos-pip" + }, + "subnetId": { + "value": "[resourceId('Microsoft.Network/virtualNetworks/subnets',parameters('vnetName'), variables('subnets')[0].name)]" + }, + "location": { + "value": "East US" + }, + "nsgId": { + "value": "Microsoft.Network/networkSecurityGroups/ddos-attack-nsg" + }, + "tags": { + "value": { + "scenario": "Vm-DDOS-Attack-Prevention" + } + } + } + } + }, + { + "apiVersion": "2018-05-01", + "name": "deploy-vm-with-ddos-resource", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "vm-with-ddos-nic-resource" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('vmTemplateUri')]" + }, + "parameters": { + "vmName": { + "value": "vm-with-ddos" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "nicId": { + "value": "Microsoft.Network/networkInterfaces/vm-with-ddos-nic" + }, + "location": { + "value": "East US" + }, + "tags": { + "value": { + "scenario": "Vm-DDOS-Attack-Prevention" + } + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vm-with-ddos/OMSExtension", + "apiVersion": "2018-06-01", + "location": "East US", + "dependsOn": [ + "deploy-vm-with-ddos-resource", + "deploy-ddos-attack-oms-resource" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "MicrosoftMonitoringAgent", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "workspaceId": "[reference('deploy-ddos-attack-oms-resource').outputs.workspaceId.value]" + }, + "protectedSettings": { + "workspaceKey": "[reference('deploy-ddos-attack-oms-resource').outputs.workspaceKey.value]" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vm-with-ddos/DSCExtension", + "apiVersion": "2018-06-01", + "location": "East US", + "dependsOn": [ + "deploy-vm-with-ddos-resource", + "deploy-ddos-attack-oms-resource" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "configuration": { + "url": "[variables('dscScriptUri')]", + "script": "DesiredStateConfig.ps1", + "function": "Main" + }, + "configurationArguments": { + "MachineName": "vm-with-ddos" + } + }, + "protectedSettings": {} + } + }, + { + "type": "microsoft.insights/alertrules", + "name": "DDoS-attack-metric-alert-rule", + "apiVersion": "2016-03-01", + "location": "East US", + "dependsOn": [ + "vm-with-ddos-pip-resource" + ], + "properties": { + "name": "DDoS attack alert", + "description": "Under DDoS attack alert", + "isEnabled": true, + "condition": { + "odata.type": "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition", + "dataSource": { + "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource", + "resourceUri": "[reference(concat(variables('vmName'),'-pip','-resource')).outputs.publicIPResourceId.value]", + "metricNamespace": null, + "metricName": "IfUnderDDoSAttack" + }, + "operator": "GreaterThanOrEqual", + "threshold": 1, + "windowSize": "PT5M" + }, + "actions": [ + { + "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction", + "sendToServiceOwners": true, + "customEmails": [ + "dummy@contoso.com" + ] + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT694 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT694 new file mode 100644 index 0000000..8a86ac5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT694 @@ -0,0 +1,316 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/devtest-p2s-iis/azuredeploy.json", + "/demos/devtest-p2s-iis/azuredeploy.parameters.json" + ], + "timestamp": 1642962899163, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/devtest-p2s-iis/azuredeploy.json", + "/demos/devtest-p2s-iis/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT694", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT694", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "environmentPrefix": { + "type": "string", + "metadata": { + "description": "Prefix to use for most of the resources." + }, + "defaultValue": "DevTest", + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "size of vm." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vpnClientAddressPoolPrefix": { + "type": "string", + "metadata": { + "description": "The IP address range from which VPN clients will receive an IP address when connected. Range specified must not overlap with on-premise network." + }, + "defaultValue": "10.10.8.0/24", + "value": "10.10.8.0/24" + }, + "clientRootCertName": { + "type": "string", + "metadata": { + "description": "The name of the client root certificate used to authenticate VPN clients. This is a common name used to identify the root cert." + }, + "value": "GEN-UNIQUE-8" + }, + "clientRootCertData": { + "type": "string", + "metadata": { + "description": "Client root certificate data used to authenticate VPN clients." + }, + "value": "MIIC9jCCAeKgAwIBAgIQ6vuFtl5UuqBIU6v+063S7jAJBgUrDgMCHQUAMBUxEzARBgNVBAMTClAyU1ZQTlJvb3QwHhcNMTYwNDA4MTkxNzIxWhcNMzkxMjMxMjM1OTU5WjAVMRMwEQYDVQQDEwpQMlNWUE5Sb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxgLWfOWw3gaj8wBne6llVsjKAUPw41aBjm5gwnhB2fwRh1LiJ5784JgsL2Mz+syz9f2zDGBYv1tXFiN5T//fpl3NOG5iWXTpYiJsy2hScOdOAoCUDGJNnAEyRZgwLQeosHBrSexDF+40q2vhe56pcdQAeXr+wjUamogTV9a6PDV2MIm6H+D1wGRhJ6WylltOQTQayqfa/YJ42z791t2t+SI8kfmApuyWU4BsAPyFk2qPIVZhe0PTB2S88LI+pIwqZsHLlm4MKZ4UsYxFHUAsecwG6r0ZwrxUqU5JDtHDAUdZcR4LCqtKoKhRrfk4mFPsgdLf7xv4hKzytfoAQ0EF0wIDAQABo0owSDBGBgNVHQEEPzA9gBCEzXExm3SI08M1qgJ5myW+oRcwFTETMBEGA1UEAxMKUDJTVlBOUm9vdIIQ6vuFtl5UuqBIU6v+063S7jAJBgUrDgMCHQUAA4IBAQBHpGJDm70KYk+BJakeUCKZmt9yqN8y5PQnBVxQUPhiXHIsOjf3+Rv8wihtjWC3kUjmRBdyVVvrXjZXH/wsWDaLjOLvcb2kP4RvVVIkUxudtVABrYj2yCZkO1bP1jDigF4dDJFg5klJlDXlVmZS/RdkG2H58ZhA2gQ11j5+oCWeiEjN5tpG1ze81ogCXiQrZ3+RUVgewmzAV/Ax4P+Q2K9/iw66z4RAfjsJ58/bUgemX8SssqLLVH+CtBPd8aYdrkHqBVkuFnxEie3uyPhNAdqFe5XlIEZXIqOt8f7Mwhq90QvEyDGmGhe8byhBrGrP3ZApufSyewVNq8XGwIsz1lE4" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "newStorageAccount": "[concat(uniqueString(resourceGroup().id),'store')]", + "storageAccountType": "Standard_LRS", + "vnetName": "GEN-UNIQUE-8Vnet", + "vnetAddressPrefix": "10.0.0.0/23", + "gatewaySubnetPrefix": "10.0.1.0/24", + "gatewayPublicIPName": "GEN-UNIQUE-8GatewayPIP", + "gatewayName": "GEN-UNIQUE-8Gateway", + "gatewaySku": "Basic", + "gatewaySubnetRef": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8Vnet/GatewaySubnet", + "appSubnetName": "appSubnet", + "appSubnetPrefix": "10.0.0.0/24", + "appSubnetRef": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8Vnet/appSubnet", + "nicName": "GEN-UNIQUE-8NIC01", + "vmName": "GEN-UNIQUE-8VM01", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "imageSKU": "2019-Datacenter", + "vmExtensionName": "dscExtension", + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('DevTestWebsite.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "DevTestWebsite.ps1\\DevTestWebsite" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccount')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8GatewayPIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8Vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/23" + ] + }, + "subnets": [ + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + }, + { + "name": "appSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8NIC01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8Vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8Vnet/appSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8VM01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('newStorageAccount'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8VM01", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8VM01_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8NIC01" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8VM01/dscExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8VM01" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('DevTestWebsite.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "DevTestWebsite.ps1\\DevTestWebsite", + "Properties": { + "MachineName": "GEN-UNIQUE-8VM01" + } + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "GEN-UNIQUE-8Gateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8GatewayPIP", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8Vnet" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8Vnet/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8GatewayPIP" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": "false", + "vpnClientConfiguration": { + "vpnClientAddressPool": { + "addressPrefixes": [ + "10.10.8.0/24" + ] + }, + "vpnClientRootCertificates": [ + { + "name": "GEN-UNIQUE-8", + "properties": { + "PublicCertData": "MIIC9jCCAeKgAwIBAgIQ6vuFtl5UuqBIU6v+063S7jAJBgUrDgMCHQUAMBUxEzARBgNVBAMTClAyU1ZQTlJvb3QwHhcNMTYwNDA4MTkxNzIxWhcNMzkxMjMxMjM1OTU5WjAVMRMwEQYDVQQDEwpQMlNWUE5Sb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxgLWfOWw3gaj8wBne6llVsjKAUPw41aBjm5gwnhB2fwRh1LiJ5784JgsL2Mz+syz9f2zDGBYv1tXFiN5T//fpl3NOG5iWXTpYiJsy2hScOdOAoCUDGJNnAEyRZgwLQeosHBrSexDF+40q2vhe56pcdQAeXr+wjUamogTV9a6PDV2MIm6H+D1wGRhJ6WylltOQTQayqfa/YJ42z791t2t+SI8kfmApuyWU4BsAPyFk2qPIVZhe0PTB2S88LI+pIwqZsHLlm4MKZ4UsYxFHUAsecwG6r0ZwrxUqU5JDtHDAUdZcR4LCqtKoKhRrfk4mFPsgdLf7xv4hKzytfoAQ0EF0wIDAQABo0owSDBGBgNVHQEEPzA9gBCEzXExm3SI08M1qgJ5myW+oRcwFTETMBEGA1UEAxMKUDJTVlBOUm9vdIIQ6vuFtl5UuqBIU6v+063S7jAJBgUrDgMCHQUAA4IBAQBHpGJDm70KYk+BJakeUCKZmt9yqN8y5PQnBVxQUPhiXHIsOjf3+Rv8wihtjWC3kUjmRBdyVVvrXjZXH/wsWDaLjOLvcb2kP4RvVVIkUxudtVABrYj2yCZkO1bP1jDigF4dDJFg5klJlDXlVmZS/RdkG2H58ZhA2gQ11j5+oCWeiEjN5tpG1ze81ogCXiQrZ3+RUVgewmzAV/Ax4P+Q2K9/iw66z4RAfjsJ58/bUgemX8SssqLLVH+CtBPd8aYdrkHqBVkuFnxEie3uyPhNAdqFe5XlIEZXIqOt8f7Mwhq90QvEyDGmGhe8byhBrGrP3ZApufSyewVNq8XGwIsz1lE4" + } + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT695 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT695 new file mode 100644 index 0000000..e67c32f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT695 @@ -0,0 +1,325 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/diskraid-ubuntu-vm/azuredeploy.json", + "/demos/diskraid-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962899171, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/diskraid-ubuntu-vm/azuredeploy.json", + "/demos/diskraid-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT695", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT695", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username used when provisioning a virtual machines" + }, + "value": "GEN-UNIQUE-8" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Unique namespace for the Storage Account where the Virtual Machine's disks will be placed" + }, + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "description": "Virtual Network" + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of the virtual machine" + } + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address space for the VNET" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "Data", + "metadata": { + "description": "Subnet name for the VNET that resources will be provisioned in to" + } + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Address space for the subnet" + } + }, + "dnsName": { + "type": "string", + "metadata": { + "description": "Load balancer subdomain name: for example (.westus.cloudapp.azure.com)" + }, + "value": "GEN-UNIQUE-13" + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 20, + "metadata": { + "description": "Size of each data disk attached to data nodes in (Gb)" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8/Data", + "scriptUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh", + "securityGroupName": "diskraidnsg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "diskraidnsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Data", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-8", + "Microsoft.Network/publicIPAddresses//publicIP", + "Microsoft.Network/networkSecurityGroups//diskraidnsg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE-8/Data" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/diskraidnsg" + } + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "myvm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nic", + "Microsoft.Storage/storageAccounts//GEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "myvm", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "myvm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "myvm_DataDisk1", + "diskSizeGB": 20, + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "myvm_DataDisk2", + "diskSizeGB": 20, + "lun": 1, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic" + } + ] + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myvm/azureVmUtils", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//myvm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/shared_scripts/ubuntu/vm-disk-utils-0.1.sh" + ], + "commandToExecute": "bash vm-disk-utils-0.1.sh -s" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT696 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT696 new file mode 100644 index 0000000..978bcbd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT696 @@ -0,0 +1,525 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dmz-nsg/azuredeploy.json", + "/demos/dmz-nsg/azuredeploy.parameters.json" + ], + "timestamp": 1642962899179, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dmz-nsg/azuredeploy.json", + "/demos/dmz-nsg/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT696", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT696", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Username for the Virtual Machines." + }, + "value": "TheAdmin" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machines." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "description" + }, + "defaultValue": "Standard_D4_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "NSGName": "myVNetNSG", + "VM01Name": "IIS01", + "VM02Name": "AppVM01", + "VM03Name": "AppVM02", + "VM04Name": "DNS01", + "VNetName": "VNet01", + "Subnet1Name": "FrontEnd", + "Subnet1Prefix": "10.0.1.0/24", + "Subnet2Name": "BackEnd", + "Subnet2Prefix": "10.0.2.0/24", + "NIC01SubnetRef": "Microsoft.Network/virtualNetworks/subnets/VNet01/FrontEnd", + "NIC02SubnetRef": "Microsoft.Network/virtualNetworks/subnets/VNet01/BackEnd", + "NIC03SubnetRef": "Microsoft.Network/virtualNetworks/subnets/VNet01/BackEnd", + "NIC04SubnetRef": "Microsoft.Network/virtualNetworks/subnets/VNet01/BackEnd", + "imageOffer": "WindowsServer", + "imagePublisher": "MicrosoftWindowsServer", + "windowsOSVersion": "2019-Datacenter" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "VNet01", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VNet01" + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//myVNetNSG", + "Microsoft.Network/publicIPAddresses//IIS01_NIC_PIP" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.1.0/24", + "10.0.2.0/24" + ] + }, + "subnets": [ + { + "name": "FrontEnd", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myVNetNSG" + } + } + }, + { + "name": "BackEnd", + "properties": { + "addressPrefix": "10.0.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myVNetNSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "IIS01_NIC_PIP", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "IIS01 NIC PIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4 + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "IIS01_NIC", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "IIS01 NIC" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VNet01" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.1.5", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/IIS01_NIC_PIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNet01/FrontEnd" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "AppVM01_NIC", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "AppVM01 NIC" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VNet01" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.2.5", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNet01/BackEnd" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "AppVM02_NIC", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "AppVM02 NIC" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VNet01" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.2.6", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNet01/BackEnd" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "DNS01_NIC", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "DNS01 NIC" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//VNet01" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.2.4", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNet01/BackEnd" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "IIS01", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "IIS01" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//IIS01_NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "IIS01", + "adminUsername": "TheAdmin", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "properties": { + "primary": true + }, + "id": "Microsoft.Network/networkInterfaces/IIS01_NIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "AppVM01", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "AppVM01" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//AppVM01_NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "AppVM01", + "adminUsername": "TheAdmin", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "properties": { + "primary": true + }, + "id": "Microsoft.Network/networkInterfaces/AppVM01_NIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "AppVM02", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "AppVM02" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//AppVM02_NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "AppVM02", + "adminUsername": "TheAdmin", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "properties": { + "primary": true + }, + "id": "Microsoft.Network/networkInterfaces/AppVM02_NIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "DNS01", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "DNS01" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//DNS01_NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "DNS01", + "adminUsername": "TheAdmin", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "properties": { + "primary": true + }, + "id": "Microsoft.Network/networkInterfaces/DNS01_NIC" + } + ] + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "myVNetNSG", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "myVNetNSG" + }, + "properties": { + "securityRules": [ + { + "name": "enable_dns_rule", + "properties": { + "description": "Enable Internal DNS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "53", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "10.0.2.4", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "enable_rdp_rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "enable_web_rule", + "properties": { + "description": "Enable Internet to [variables('VM01Name')]", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "10.0.1.5", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "enable_app_rule", + "properties": { + "description": "Enable [variables('VM01Name')] to [variables('VM02Name')]", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "10.0.1.5", + "destinationAddressPrefix": "10.0.2.5", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "deny_internet_rule", + "properties": { + "description": "Isolate the [variables('VNetName')] VNet from the Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Deny", + "priority": 140, + "direction": "Inbound" + } + }, + { + "name": "deny_frontend_rule", + "properties": { + "description": "Isolate the [variables('Subnet1Name')] subnet from the [variables('Subnet2Name')] subnet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "10.0.1.0/24", + "destinationAddressPrefix": "10.0.2.0/24", + "access": "Deny", + "priority": 150, + "direction": "Inbound" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT697 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT697 new file mode 100644 index 0000000..16a4370 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT697 @@ -0,0 +1,331 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dns-forwarder/azuredeploy.json", + "/demos/dns-forwarder/azuredeploy.parameters.json" + ], + "timestamp": 1642962899188, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-forwarder/azuredeploy.json", + "/demos/dns-forwarder/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT697", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT697", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "defaultValue": "dnsproxy", + "metadata": { + "description": "Name of the Virtual Machine." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account for diagnostics. Storage account names must be globally unique." + }, + "value": "GEN-UNIQUE" + }, + "forwardIP": { + "type": "string", + "defaultValue": "168.63.129.16", + "metadata": { + "description": "This is the IP address to forward DNS queries to. The default value represents Azure's internal DNS recursive resolvers." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Virtual machine size" + }, + "defaultValue": "Standard_A1_v2" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "ubuntuOSVersion": "18.04-LTS", + "asetName": "dnsproxy-avail", + "nsgName": "dnsproxy-nsg", + "vnetName": "dnsproxy-vnet", + "vnetAddressPrefix": "10.0.0.0/8", + "subNet1Name": "subnet1", + "subNet1Prefix": "10.1.0.0/16", + "storType": "Standard_LRS", + "location": "[resourceGroup().location]", + "nicName": "dnsproxy-nic", + "pipName": "dnsproxy-pip", + "scriptUrl": "[uri(parameters('_artifactsLocation'), concat('forwarderSetup.sh', parameters('_artifactsLocationSasToken')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/StorageAccounts", + "comments": "Storage account for the VHD files for the VMs", + "name": "GEN-UNIQUE", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Compute/availabilitySets", + "comments": "availability set for creating a HA cluster, run the template multiple times to get multiple DNS servers", + "name": "dnsproxy-avail", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "comments": "An NSG to prevent inbound traffic other than SSH, set sourceAddressPrefix to restrict access further or block all together (or remove the public ip) and ssh in from another vm", + "name": "dnsproxy-nsg", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow_ssh_in", + "properties": { + "description": "The only thing allowed is SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "comments": "An example virtual network, for real scenarios add the DNS forwarder to your own vnet", + "name": "dnsproxy-vnet", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/8" + ] + }, + "subnets": [ + { + "name": "subnet1Name", + "properties": { + "addressPrefix": "10.1.0.0/16" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "comments": "A public IP to allow us to SSH into the VM, not recommended for production DNS servers", + "name": "dnsproxy-pip", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "comments": "A single network interface on each DNS server", + "name": "dnsproxy-nic", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//dnsproxy-pip", + "Microsoft.Network/virtualNetworks//dnsproxy-vnet", + "Microsoft.Network/networkSecurityGroups//dnsproxy-nsg" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dnsproxy-nsg" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dnsproxy-pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/dnsproxy-vnet/subnet1Name" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "comments": "A stock Ubuntu server, a VM extension will add the DNS server to it later", + "name": "dnsproxy", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//dnsproxy-nic", + "Microsoft.Storage/StorageAccounts//GEN-UNIQUE", + "Microsoft.Compute/availabilitySets//dnsproxy-avail" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/dnsproxy-avail" + }, + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "dnsproxy", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dnsproxy-nic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', toLower(parameters('storageAccountName')))).primaryEndpoints.blob]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "comments": "The shell script to install Bind9 and setup the ACL and forwarders. If this step fails, check the logs in /var/log/waagent.log and /var/log/azure/* for details", + "name": "dnsproxy/setupdnsfirewall", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//dnsproxy" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('forwarderSetup.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh forwarderSetup.sh 168.63.129.16 10.0.0.0/8" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT698 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT698 new file mode 100644 index 0000000..3e4eab9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT698 @@ -0,0 +1,160 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dns-records-office365/azuredeploy.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "timestamp": 1642962899196, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-records-office365/azuredeploy.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT698", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/dnszones" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT698", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsZoneName": { + "type": "string", + "metadata": { + "description": "Name of the DNS Zone to create or update." + }, + "value": "contoso.local" + }, + "ttl": { + "type": "int", + "defaultValue": 3600, + "metadata": { + "description": "Time to live value, in seconds" + }, + "value": 3600 + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "recordTypes": { + "type": "array", + "defaultValue": [ + "mail", + "mdm", + "sfb" + ], + "metadata": { + "description": "A delimited list that defines the resources to create, acceptable values are (mail,mdm, and sfb). A combination of all or just one of the values can be used." + }, + "value": [ + "mail", + "mdm", + "sfb" + ] + } + }, + "resources": [ + { + "apiVersion": "2018-05-01", + "type": "Microsoft.Network/dnszones", + "name": "contoso.local", + "location": "global" + }, + { + "name": "[concat('SettingUpDNSRecods','-',parameters('recordTypes')[copyIndex()])]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Network/dnszones/contoso.local" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(parameters('recordTypes')[copyIndex()],'.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "dnsZoneName": { + "value": "contoso.local" + }, + "ttl": { + "value": 3600 + } + } + } + }, + { + "name": "[concat('SettingUpDNSRecods','-',parameters('recordTypes')[copyIndex()])]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Network/dnszones/contoso.local" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(parameters('recordTypes')[copyIndex()],'.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "dnsZoneName": { + "value": "contoso.local" + }, + "ttl": { + "value": 3600 + } + } + } + }, + { + "name": "[concat('SettingUpDNSRecods','-',parameters('recordTypes')[copyIndex()])]", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Network/dnszones/contoso.local" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(parameters('recordTypes')[copyIndex()],'.json',parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "dnsZoneName": { + "value": "contoso.local" + }, + "ttl": { + "value": 3600 + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT699 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT699 new file mode 100644 index 0000000..8e31db7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT699 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dns-records-office365/mail.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "timestamp": 1642962899204, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-records-office365/mail.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT699", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/dnszones/cname", + "microsoft.network/dnszones/mx", + "microsoft.network/dnszones/txt" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT699", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsZoneName": { + "type": "string", + "metadata": { + "description": "Name of the DNS Zone." + }, + "value": "contoso.local" + }, + "ttl": { + "type": "int", + "defaultValue": "3600", + "metadata": { + "description": "Time to live value, in seconds." + }, + "value": 3600 + }, + "recordTypes": { + "value": [ + "mail", + "mdm", + "sfb" + ] + } + }, + "variables": { + "mx": "[concat(replace(parameters('dnsZoneName'),'.','-'),'.mail.protection.outlook.com')]" + }, + "resources": [ + { + "comments": "CNAME record needed for autodiscover endpoint for making it easier to configure Outlook.", + "type": "Microsoft.Network/dnszones/CNAME", + "name": "contoso.local/autodiscover", + "apiVersion": "2018-05-01", + "properties": { + "TTL": 3600, + "CNAMERecord": { + "cname": "autodiscover.outlook.com" + } + } + }, + { + "type": "Microsoft.Network/dnszones/CNAME", + "name": "contoso.local/msoid", + "apiVersion": "2018-05-01", + "properties": { + "TTL": 3600, + "CNAMERecord": { + "cname": "clientconfig.microsoftonline-p.net" + } + } + }, + { + "comments": "MX record so email for your domain will be routed to Office 365", + "type": "Microsoft.Network/dnszones/MX", + "name": "contoso.local/@", + "apiVersion": "2016-04-01", + "properties": { + "TTL": 3600, + "MXRecords": [ + { + "exchange": "[variables('mx')]", + "preference": 0 + } + ] + } + }, + { + "comments": "TXT record for Sender policy framework (SPF) records, which are used to prevent spam.", + "type": "Microsoft.Network/dnszones/TXT", + "name": "contoso.local/@", + "apiVersion": "2016-04-01", + "properties": { + "TTL": "TTL", + "TXTRecords": [ + { + "value": [ + "v=spf1 include:spf.protection.outlook.com -all" + ] + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT7 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT7 new file mode 100644 index 0000000..26e6da7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT7 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/vnet-with-dns-server.json" + ], + "timestamp": 1642962883318, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/vnet-with-dns-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT7", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT7", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "Description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "Description": "The address range of the new VNET in CIDR format" + }, + "defaultValue": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "Description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "Description": "The address range of the subnet created in the new VNET" + }, + "defaultValue": "10.0.0.0/24" + }, + "DNSServerAddress": { + "type": "array", + "metadata": { + "Description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-03-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "dhcpOptions": { + "dnsServers": "DNSServerAddress" + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT70 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT70 new file mode 100644 index 0000000..1c63bba --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT70 @@ -0,0 +1,490 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-trenddsm.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962884825, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-trenddsm.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT70", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT70", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "" + }, + "vmStorageAccountContainerName": { + "type": "string", + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "value": "westus" + }, + "network-api-version": { + "type": "string", + "defaultValue": "" + }, + "compute-api-version": { + "type": "string", + "defaultValue": "" + }, + "tagvalues": { + "type": "object", + "defaultValue": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "publicIPAddressNameTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "publicIPDomainNameLabelTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "" + }, + "nicNameTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "dsmvnet" + }, + "subnet1Ref": { + "type": "string", + "defaultValue": "" + }, + "securityGroupNameTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "managerPortTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "heartbeatPortTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "vmNameTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "publisherTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "offerChoosedTrendDSM": { + "type": "object", + "defaultValue": "" + }, + "vmAdminNameTrendDSM": { + "type": "string", + "defaultValue": "" + }, + "vmAdminPasswordOrPublicKeyTrendDSM": { + "type": "securestring", + "defaultValue": "" + }, + "deployment-api-version": { + "type": "string", + "defaultValue": "" + }, + "baseUrl": { + "type": "string", + "metadata": { + "description": "The base URL for dependent assets", + "artifactsBaseUrl": "" + }, + "defaultValue": "https://deepsecurityazure.blob.core.windows.net/dsmtemplate" + }, + "dsmAdminName": { + "type": "string", + "defaultValue": "" + }, + "dsmAdminPassword": { + "type": "securestring", + "defaultValue": "" + }, + "databaseOption": { + "type": "string", + "defaultValue": "" + }, + "newsqlServerName": { + "type": "string", + "defaultValue": "" + }, + "existingSQLServerName": { + "type": "string", + "defaultValue": "" + }, + "dbAdminName": { + "type": "string", + "defaultValue": "" + }, + "dbAdminPassword": { + "type": "securestring", + "defaultValue": "" + }, + "dbName": { + "type": "string", + "defaultValue": "" + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "authenticationType": { + "type": "string" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": { + "licenseMode": "10", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/ parameters('vmAdminNameTrendDSM')/.ssh/authorized_keys", + "keyData": "" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "trendmicroTags" + }, + "properties": { + "publicIPAllocationMethod": "", + "dnsSettings": { + "domainNameLabel": "" + } + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "trendmicroTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/ parameters('publicIPAddressNameTrendDSM')", + "Microsoft.Network/networkSecurityGroups/ parameters('securityGroupNameTrendDSM')" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ parameters('securityGroupNameTrendDSM')" + }, + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('publicIPAddressNameTrendDSM')" + }, + "subnet": { + "id": "" + } + } + } + ] + } + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "trendmicroTags" + }, + "properties": { + "securityRules": [ + { + "name": "allow-inbound-ssh", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "allow-inbound-dsmportal", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1100, + "direction": "Inbound" + } + }, + { + "name": "allow-inbound-dsmagent", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4118", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1200, + "direction": "Inbound" + } + }, + { + "name": "allow-inbound-dsmheartbeat", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1300, + "direction": "Inbound" + } + }, + { + "name": "allow-inbound-dsmdownload", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4122", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1400, + "direction": "Inbound" + } + }, + { + "name": "allow-inbound-dsmwebinstaller", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1500, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "trendmicroTags" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ parameters('nicNameTrendDSM')", + "Microsoft.Resources/deployments/buildSQLServer" + ], + "plan": { + "publisher": "", + "product": null, + "name": null + }, + "properties": { + "hardwareProfile": { + "vmSize": null + }, + "osProfile": { + "computerName": "", + "adminUsername": "", + "adminPassword": "", + "customData": "[base64(concat('vmName:',base64(parameters('vmNameTrendDSM')),',databaseServer:',reference('buildSQLServer').outputs.sqlServerFQDN.value,',databaseName:',base64(parameters('dbName')),',location:',parameters('location'),',managerPort:',parameters('managerPortTrendDSM'),',heartbeatPort:',parameters('heartbeatPortTrendDSM'),',vmFQDN:',reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressNameTrendDSM')),'2015-06-15').dnsSettings.fqdn,',publicIP:,adminUsername:',base64(parameters('dsmAdminName')),',adminPassword:',base64(parameters('dsmAdminPassword')),',databaseUserName:',base64(parameters('dbAdminName')),',databaseUserPassword:',base64(parameters('dbAdminPassword')),',subscriptionId:',subscription().subscriptionId,',databaseOption:',parameters('databaseOption'),',vmSize:',parameters('offerChoosedTrendDSM').vmSize,',licenseMode:',variables('licenseMode')))]", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "", + "offer": null, + "sku": null, + "version": "2.0.0" + }, + "osDisk": { + "name": "parameters('vmNameTrendDSM')-osDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/parameters('nicNameTrendDSM')" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "https://parameters('storageAccountName').blob.core.windows.net/" + } + } + } + }, + { + "name": "buildSQLServer", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://deepsecurityazure.blob.core.windows.net/dsmtemplate/nested/database-parameters('databaseOption').json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "westus" + }, + "newsqlServerName": { + "value": "" + }, + "existingSQLServerName": { + "value": "" + }, + "dbAdminName": { + "value": "" + }, + "dbAdminPassword": { + "value": "" + }, + "sqlDBName": { + "value": "" + }, + "datameerTags": { + "value": "datameerTags" + }, + "trendmicroTags": { + "value": "trendmicroTags" + }, + "chefSoftwareTags": { + "value": "chefSoftwareTags" + }, + "quickstartTags": { + "value": "quickstartTags" + } + } + } + } + ], + "outputs": { + "trendmicrodsmUri": { + "type": "string", + "value": "[concat('https://',reference(resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressNameTrendDSM'))).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT700 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT700 new file mode 100644 index 0000000..e5e43c3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT700 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dns-records-office365/mdm.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "timestamp": 1642962899212, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-records-office365/mdm.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT700", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/dnszones/cname" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT700", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsZoneName": { + "type": "string", + "metadata": { + "description": "Name of the DNS Zone." + }, + "value": "contoso.local" + }, + "ttl": { + "type": "int", + "defaultValue": "3600", + "metadata": { + "description": "Time to live value, in seconds." + }, + "value": 3600 + }, + "recordTypes": { + "value": [ + "mail", + "mdm", + "sfb" + ] + } + }, + "resources": [ + { + "type": "Microsoft.Network/dnszones/CNAME", + "name": "contoso.local/enterpriseregistration", + "apiVersion": "2018-05-01", + "properties": { + "TTL": 3600, + "CNAMERecord": { + "cname": "enterpriseregistration.windows.net" + } + } + }, + { + "comments": "CNAME record needed for Mobile Device Management (MDM) with Office 365.", + "type": "Microsoft.Network/dnszones/CNAME", + "name": "contoso.local/enterpriseenrollment", + "apiVersion": "2018-05-01", + "properties": { + "TTL": 3600, + "CNAMERecord": { + "cname": "enterpriseenrollment.manage.microsoft.com" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT701 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT701 new file mode 100644 index 0000000..8dbb0c6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT701 @@ -0,0 +1,143 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dns-records-office365/sfb.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "timestamp": 1642962899223, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dns-records-office365/sfb.json", + "/demos/dns-records-office365/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT701", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/dnszones/cname", + "microsoft.network/dnszones/srv" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT701", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsZoneName": { + "type": "string", + "metadata": { + "description": "Name of the DNS Zone." + }, + "value": "contoso.local" + }, + "ttl": { + "type": "int", + "defaultValue": "3600", + "metadata": { + "description": "Time to live value, in seconds." + }, + "value": 3600 + }, + "recordTypes": { + "value": [ + "mail", + "mdm", + "sfb" + ] + } + }, + "variables": {}, + "resources": [ + { + "comments": "CNAME record needed for autodiscover endpoint for making it easier to configure Outlook.", + "type": "Microsoft.Network/dnszones/CNAME", + "name": "contoso.local/autodiscover", + "apiVersion": "2018-05-01", + "properties": { + "TTL": 3600, + "CNAMERecord": { + "cname": "autodiscover.outlook.com" + } + } + }, + { + "comments": "CNAME record needed for autodiscover endpoint for making it easier to configure Skype for Business.", + "type": "Microsoft.Network/dnszones/CNAME", + "name": "contoso.local/lyncdiscover", + "apiVersion": "2016-04-01", + "properties": { + "TTL": 3600, + "CNAMERecord": { + "cname": "webdir.online.lync.com" + } + } + }, + { + "type": "Microsoft.Network/dnszones/CNAME", + "name": "contoso.local/msoid", + "apiVersion": "2016-04-01", + "properties": { + "TTL": 3600, + "CNAMERecord": { + "cname": "clientconfig.microsoftonline-p.net" + } + } + }, + { + "type": "Microsoft.Network/dnszones/CNAME", + "name": "contoso.local/sip", + "apiVersion": "2016-04-01", + "properties": { + "TTL": 3600, + "CNAMERecord": { + "cname": "sipdir.online.lync.com" + } + } + }, + { + "comments": "SRV record to specify sip federation location for Skype for Business.", + "type": "Microsoft.Network/dnszones/SRV", + "name": "contoso.local/_sipfederationtls._tcp", + "apiVersion": "2016-04-01", + "properties": { + "TTL": 3600, + "SRVRecords": [ + { + "port": 5061, + "priority": 100, + "target": "sipfed.online.lync.com", + "weight": 1 + } + ] + } + }, + { + "comments": "SRV record to specify sip location for Skype for Business.", + "type": "Microsoft.Network/dnszones/SRV", + "name": "contoso.local/_sip._tls", + "apiVersion": "2016-04-01", + "properties": { + "TTL": 3600, + "SRVRecords": [ + { + "port": 443, + "priority": 100, + "target": "sipdir.online.lync.com", + "weight": 1 + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT702 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT702 new file mode 100644 index 0000000..0f892fc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT702 @@ -0,0 +1,138 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/docker-rancher/azuredeploy.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "timestamp": 1642962899232, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/docker-rancher/azuredeploy.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT702", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT702", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "uniqueDeployPrefix": { + "type": "string", + "metadata": { + "description": "The unique prefix used for the nodes & dns. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the virtual machine used for the deployment" + }, + "defaultValue": "Standard_A2_v2", + "value": "Standard_A2_v2" + }, + "deploymentType": { + "type": "string", + "defaultValue": "Server", + "allowedValues": [ + "Nodes", + "Server" + ], + "metadata": { + "description": "Choose if you want to add nodes to an existing server or deploy a server without any nodes." + }, + "value": "Server" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/docker-rancher/." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "deployTypeParam": { + "Nodes": "nodes.json", + "Server": "server.json" + }, + "deployTypeParamValue": "(deployTypeParam)[parameters(deploymentType)]", + "templateDeployUrl": "[uri(parameters('_artifactsLocation'), concat(variables('deployTypeParamValue'), parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "name": "rancherdeploy", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat(variables('deployTypeParamValue'), parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "rancherName": { + "value": "GEN-UNIQUE" + }, + "rancherVmSize": { + "value": "Standard_A2_v2" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT703 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT703 new file mode 100644 index 0000000..6ef2136 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT703 @@ -0,0 +1,361 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/docker-rancher/nodes.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "timestamp": 1642962899241, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/docker-rancher/nodes.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT703", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT703", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "rancherApi": { + "type": "string", + "metadata": { + "description": "The api link to your RancherHost. Example : http://myrancherhost.kvaes.be:8080/v1/scripts/AA12A123A1A1234A12A1:1234567890000:aAaaaaA1AaAaAlaAAaaaaAAAaaA" + } + }, + "rancherName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The prefix you want to use as hostname" + } + }, + "rancherVmSize": { + "type": "string", + "metadata": { + "description": "The size of the virtual machine used for the nodes" + }, + "defaultValue": "Standard_A2_v2" + }, + "rancherCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The amount of nodes to be provisioned" + }, + "minValue": 1, + "maxValue": 250 + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "uniqueDeployPrefix": { + "value": "GEN-UNIQUE" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "deploymentType": { + "value": "Server" + } + }, + "variables": { + "availabilitySet": "", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'ranchernode')]", + "networkSecurityGroupName": "", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "18.04-LTS", + "virtualNetworkName": "", + "addressPrefix": "192.168.253.0/24", + "subnetName": "", + "subnetPrefix": "192.168.253.0/24", + "publicIPAddressType": "Dynamic", + "storageAccountType": "Standard_LRS", + "vmSize": "Standard_A2_v2", + "extensionName": "DockerExtension", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/ variables('virtualNetworkName')/ variables('subnetName')" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-04-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "", + "apiVersion": "2020-06-01", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "", + "apiVersion": "2020-05-01", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "SSH", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "rVPN500", + "properties": { + "description": "rVPN500", + "protocol": "Udp", + "sourcePortRange": "*", + "destinationPortRange": "500", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + }, + { + "name": "rVPN4500", + "properties": { + "description": "rVPN4500", + "protocol": "Udp", + "sourcePortRange": "*", + "destinationPortRange": "4500", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 400, + "direction": "Inbound" + } + }, + { + "name": "Docker", + "properties": { + "description": "Docker", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "2375", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups// variables('networkSecurityGroupName')" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.253.0/24" + ] + }, + "subnets": [ + { + "name": "", + "properties": { + "addressPrefix": "192.168.253.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/ variables('networkSecurityGroupName')" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "parameters('rancherName')copyIndex()", + "location": "location", + "copy": { + "name": "pipLoopNode", + "count": 1 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "parameters('rancherName')copyIndex()" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "parameters('rancherName')copyIndex()-nic", + "location": "location", + "copy": { + "name": "nicLoopNode", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//parameters('rancherName')copyIndex()", + "Microsoft.Network/virtualNetworks// variables('virtualNetworkName')" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/parameters('rancherName')copyIndex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/ variables('virtualNetworkName')/ variables('subnetName')" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "parameters('rancherName')copyIndex()", + "location": "location", + "copy": { + "name": "vmLoopNode", + "count": 1 + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(parameters('rancherName'), copyIndex(), '-nic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "parameters('rancherName')copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "parameters('rancherName')copyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/parameters('rancherName')copyIndex()-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "parameters('rancherName')copyIndex()/DockerExtension", + "apiVersion": "2019-12-01", + "location": "location", + "copy": { + "name": "extLoopNode", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//parameters('rancherName')copyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "docker": { + "port": "2375" + }, + "compose": { + "rancheragent": { + "image": "rancher/agent:latest", + "restart": "always", + "privileged": true, + "volumes": [ + "/var/run/docker.sock:/var/run/docker.sock" + ], + "command": "rancherApi" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT704 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT704 new file mode 100644 index 0000000..dafd780 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT704 @@ -0,0 +1,332 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/docker-rancher/server.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "timestamp": 1642962899251, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/docker-rancher/server.json", + "/demos/docker-rancher/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT704", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT704", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "maxLength": 72, + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "rancherName": { + "type": "string", + "metadata": { + "description": "The prefix you want to use as hostname" + } + }, + "rancherVmSize": { + "defaultValue": "Standard_A2_v2", + "type": "String", + "metadata": { + "description": "The size of the virtual machine for the Server" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources, ex eastus2, westus2..." + } + }, + "osImageSKU": { + "defaultValue": "18.04-LTS", + "allowedValues": [ + "16.04-LTS", + "18.04-LTS" + ], + "type": "String", + "metadata": { + "description": "Set the OS Image SKU" + } + }, + "storageAccountType": { + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "type": "String", + "metadata": { + "description": "Set the Virtual Machine OS Disk type" + } + }, + "uniqueDeployPrefix": { + "value": "GEN-UNIQUE" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "deploymentType": { + "value": "Server" + } + }, + "variables": { + "availabilitySetName": "[toLower(concat(parameters('rancherName'), '-avset'))]", + "vmSize": "Standard_A2_v2", + "osImagePublisher": "Canonical", + "osImageOffer": "UbuntuServer", + "osImageVersion": "latest", + "virtualNetworkName": "[toLower(concat(parameters('rancherName'), '-vnet'))]", + "addressPrefix": "192.168.254.0/24", + "subnetName": "[toLower(concat(parameters('rancherName'), '-subnet'))]", + "subnetPrefix": "192.168.254.0/24", + "NICPrefix": "-nic", + "publicIPAddressType": "Dynamic", + "publicIPAddressName1": "[toLower(concat(parameters('rancherName'), '-pip1'))]", + "networkSecurityGroupName": "[toLower(concat(parameters('rancherName'), '-nsg'))]", + "extensionName": "DockerExtension" + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2020-06-01", + "name": "[toLower(concat(parameters('rancherName'), '-avset'))]", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 1, + "platformUpdateDomainCount": 1 + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-12-01", + "name": "[toLower(concat(parameters('rancherName'), '-nsg'))]", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "SSH", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Rancher", + "properties": { + "description": "Rancher-HTTPS", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "Docker", + "properties": { + "description": "Docker", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "2375", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[toLower(concat(parameters('rancherName'), '-vnet'))]", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//[toLower(concat(parameters('rancherName'), '-nsg'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.254.0/24" + ] + }, + "subnets": [ + { + "name": "[toLower(concat(parameters('rancherName'), '-subnet'))]", + "properties": { + "addressPrefix": "192.168.254.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[toLower(concat(parameters('rancherName'), '-nsg'))]" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "[toLower(concat(parameters('rancherName'), '-pip1'))]", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "rancherName" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "name": "rancherName-nic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(concat(parameters('rancherName'), '-pip1'))]", + "Microsoft.Network/virtualNetworks//[toLower(concat(parameters('rancherName'), '-vnet'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(concat(parameters('rancherName'), '-pip1'))]" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(concat(parameters('rancherName'), '-vnet'))]/[toLower(concat(parameters('rancherName'), '-subnet'))]" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "rancherName", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//rancherName-nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "rancherName", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "rancherName_Os_Disk_1", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/rancherName-nic" + } + ] + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/[toLower(concat(parameters('rancherName'), '-avset'))]" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-12-01", + "name": "rancherName/DockerExtension", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//rancherName" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "docker": { + "port": "2375" + }, + "compose": { + "rancheragent": { + "image": "rancher/rancher:stable", + "restart": "always", + "ports": [ + "8443:443" + ] + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT705 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT705 new file mode 100644 index 0000000..41f2d01 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT705 @@ -0,0 +1,320 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dsc-extension-iis-server-windows-vm/azuredeploy.json", + "/demos/dsc-extension-iis-server-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962899272, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dsc-extension-iis-server-windows-vm/azuredeploy.json", + "/demos/dsc-extension-iis-server-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT705", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT705", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "diskType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Type of the Storage for disks" + } + }, + "vmName": { + "type": "string", + "defaultValue": "iis", + "metadata": { + "description": "Name of the VM" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Size of the VM" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "Image SKU" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "moduleFilePath": { + "type": "string", + "metadata": { + "description": "Relative path for the DSC configuration module." + }, + "defaultValue": "ContosoWebsite.ps1.zip" + }, + "configurationFunction": { + "type": "string", + "defaultValue": "ContosoWebsite.ps1\\ContosoWebsite", + "metadata": { + "description": "DSC configuration function to call" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "virtualNetworkName": "dscVNET", + "vnetAddressPrefix": "10.0.0.0/16", + "subnet1Name": "dscSubnet-1", + "subnet1Prefix": "10.0.0.0/24", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/dscVNET/dscSubnet-1", + "publicIPAddressType": "Dynamic", + "publicIPAddressName": "dscPubIP", + "nicName": "dscNIC", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "vmExtensionName": "dscExtension", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "dscPubIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-80", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-443", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "443", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-3389", + "properties": { + "priority": 1002, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "dscVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "dscSubnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "dscNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/dscPubIP", + "Microsoft.Network/virtualNetworks/dscVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dscPubIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/dscVNET/dscSubnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "iis", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/dscNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "iis", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "iis_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dscNIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "iis/dscExtension", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/iis" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat(parameters('moduleFilePath'), parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "ContosoWebsite.ps1\\ContosoWebsite", + "Properties": { + "MachineName": "iis" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT706 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT706 new file mode 100644 index 0000000..90364c3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT706 @@ -0,0 +1,299 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dsc-pullserver-to-win-server/azuredeploy.json", + "/demos/dsc-pullserver-to-win-server/azuredeploy.parameters.json" + ], + "timestamp": 1642962899307, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dsc-pullserver-to-win-server/azuredeploy.json", + "/demos/dsc-pullserver-to-win-server/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT706", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT706", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The admin user name for the VM created." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The admin password for the VM created." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The machine type for the server vm." + }, + "value": "Standard_A2" + }, + "dscPullSrvName": { + "type": "string", + "metadata": { + "description": "The name of the Windows vm." + }, + "value": "PullSrv" + }, + "dscPullIPDnsName": { + "type": "string", + "metadata": { + "description": "The name of the public ip address" + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "VirtualNetworkPrefix": "10.0.0.0/16", + "VirtualNetworkSubnet1Name": "Subnet-1", + "VirtualNetworkSubnet1Prefix": "10.0.0.0/24", + "VirtualNetworkSubnet2Name": "Subnet-2", + "VirtualNetworkSubnet2Prefix": "10.0.1.0/24", + "dscPullSrvSubnetRef": "Microsoft.Network/virtualNetworks/subnets/dscVirtualNetwork/Subnet-1", + "dscPullSrvNicName": "dscNetworkInterface", + "dscPullIPName": "dscPublicIPAddress", + "deployDSCPullServerConfigurationFile": "[uri(parameters('_artifactsLocation'), concat('ConfigurePullServer.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "deployDSCPullServerConfigurationFunction": "ConfigurePullServer.ps1\\ConfigurePullServer", + "windowsOSVersion": "2012-R2-Datacenter", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-80", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-3389", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "dscVirtualNetwork", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + }, + { + "name": "Subnet-2", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "name": "dscNetworkInterface", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//dscVirtualNetwork" + ], + "tags": { + "displayName": "dscPullSrvNic" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAddress": "10.0.0.5", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/dscVirtualNetwork/Subnet-1" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dscPublicIPAddress" + } + } + } + ] + } + }, + { + "name": "PullSrv", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//dscNetworkInterface" + ], + "tags": { + "displayName": "dscPullSrv" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "PullSrv", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "PullSrv_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dscNetworkInterface" + } + ] + } + }, + "resources": [ + { + "name": "deployDSCPullServer", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//PullSrv" + ], + "tags": { + "displayName": "deployDSCPullServer" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('ConfigurePullServer.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "ConfigurePullServer.ps1\\ConfigurePullServer" + } + } + } + ] + }, + { + "name": "dscPublicIPAddress", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "tags": { + "displayName": "dscPullIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT707 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT707 new file mode 100644 index 0000000..b691dfb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT707 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/dynamic-web-tests/prereqs/prereq.azuredeploy.json", + "/demos/dynamic-web-tests/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962899318, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/dynamic-web-tests/prereqs/prereq.azuredeploy.json", + "/demos/dynamic-web-tests/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT707", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT707", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Name of Application Insights resource." + }, + "value": "new_app_insights_resource" + }, + "type": { + "type": "string", + "defaultValue": "web", + "metadata": { + "description": "Type of app you are deploying. This field is for legacy reasons and will not impact the type of App Insights resource you deploy." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "requestSource": { + "type": "string", + "defaultValue": "CustomDeployment", + "metadata": { + "description": "Source of Azure Resource Manager deployment" + } + } + }, + "resources": [ + { + "name": "new_app_insights_resource", + "type": "microsoft.insights/components", + "location": "[resourceGroup().location]", + "apiVersion": "2020-02-02", + "properties": { + "ApplicationId": "new_app_insights_resource", + "Application_Type": "web", + "Flow_Type": "Redfield", + "Request_Source": "CustomDeployment" + } + } + ], + "outputs": { + "appName": { + "type": "string", + "value": "[parameters('name')]" + }, + "appInsightsResource": { + "type": "string", + "value": "[resourceId('microsoft.insights/components', parameters('name'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT708 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT708 new file mode 100644 index 0000000..a003663 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT708 @@ -0,0 +1,414 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/e-shop-website-with-ilb-ase/prereqs/prereq.azuredeploy.json", + "/demos/e-shop-website-with-ilb-ase/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962899332, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/e-shop-website-with-ilb-ase/prereqs/prereq.azuredeploy.json", + "/demos/e-shop-website-with-ilb-ase/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT708", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/routetables", + "microsoft.web/hostingenvironments", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT708", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment." + }, + "value": "GEN-UNIQUE-16" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the App Service Environment." + } + } + }, + "variables": { + "location": "[resourceGroup().location]", + "vnetName": "GEN-UNIQUE-16-vnet", + "vnetAddressPrefix": "192.168.250.0/23", + "aseSubnetName": "GEN-UNIQUE-16-subnet", + "aseSubnetAddressPrefix": "192.168.250.0/24", + "subnetRouteTableName": "GEN-UNIQUE-16-route-table", + "subnetNSGName": "GEN-UNIQUE-16-nsg" + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "GEN-UNIQUE-16", + "location": "[resourceGroup().location]", + "kind": "ASEV2", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-16-vnet" + ], + "properties": { + "name": "GEN-UNIQUE-16", + "location": "[resourceGroup().location]", + "virtualNetwork": { + "Id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-16-vnet/GEN-UNIQUE-16-subnet", + "Subnet": "GEN-UNIQUE-16-subnet" + }, + "internalLoadBalancingMode": 3 + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-16-vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//GEN-UNIQUE-16-nsg", + "Microsoft.Network/routeTables//GEN-UNIQUE-16-route-table" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.250.0/23" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-16-subnet", + "properties": { + "addressPrefix": "192.168.250.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-16-nsg" + }, + "routeTable": { + "id": "Microsoft.Network/routeTables/GEN-UNIQUE-16-route-table" + }, + "serviceEndpoints": [ + { + "service": "Microsoft.Sql", + "locations": [ + "[resourceGroup().location]" + ] + }, + { + "service": "Microsoft.Storage", + "locations": [ + "[resourceGroup().location]" + ] + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/routeTables", + "name": "GEN-UNIQUE-16-route-table", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "UDR - Subnet" + }, + "properties": { + "routes": [ + { + "name": "GEN-UNIQUE-16-route", + "properties": { + "addressPrefix": "0.0.0.0/0", + "nextHopType": "Internet" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-16-nsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG - Subnet" + }, + "properties": { + "securityRules": [ + { + "name": "Inbound-management", + "properties": { + "description": "Used to manage ASE from public VIP", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "454-455", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ASE-internal-inbound", + "properties": { + "description": "ASE-internal-inbound", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "192.168.250.0/24", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Inbound-HTTP", + "properties": { + "description": "Allow HTTP", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Inbount-HTTPS", + "properties": { + "description": "Allow HTTPS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "Inbound-FTP", + "properties": { + "description": "Allow FTP over port 21", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "21", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 140, + "direction": "Inbound" + } + }, + { + "name": "Inbound-FTPS", + "properties": { + "description": "Allow FTPS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "990", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 150, + "direction": "Inbound" + } + }, + { + "name": "Inbound-FTP-Data", + "properties": { + "description": "RDP", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "10001-10020", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 160, + "direction": "Inbound" + } + }, + { + "name": "Inbound-Remote-Debugging", + "properties": { + "description": "Visual Studio remote debugging", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "4016-4022", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 170, + "direction": "Inbound" + } + }, + { + "name": "Outbound-443", + "properties": { + "description": "Azure Storage blob", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "Outbound-SMB", + "properties": { + "description": "Azure Storage queue", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "445", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Outbound" + } + }, + { + "name": "Outbound-DB", + "properties": { + "description": "Database", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Outbound" + } + }, + { + "name": "Outbound-DB2", + "properties": { + "description": "Database 2", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "11000-11999", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Outbound" + } + }, + { + "name": "Outbound-DB3", + "properties": { + "description": "Database 3", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "14000-14999", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "Outbound-DNS", + "properties": { + "description": "DNS", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "53", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "ASE-internal-outbound", + "properties": { + "description": "Azure Storage queue", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "192.168.250.0/24", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "Outbound-80", + "properties": { + "description": "Outbound 80", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "ASE-to-VNET", + "properties": { + "description": "ASE to VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "192.168.250.0/23", + "access": "Allow", + "priority": 180, + "direction": "Outbound" + } + } + ] + } + } + ], + "outputs": { + "existingASEName": { + "type": "string", + "value": "[parameters('name')]" + }, + "existingASELocation": { + "type": "string", + "value": "[parameters('location')]" + }, + "existingASEDNSSuffix": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/hostingEnvironments', parameters('name')), '2019-08-01').dnsSuffix]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT709 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT709 new file mode 100644 index 0000000..f2f3cc0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT709 @@ -0,0 +1,913 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/e-shop-website-with-ilb-ase/azuredeploy.json", + "/demos/e-shop-website-with-ilb-ase/azuredeploy.parameters.json" + ], + "timestamp": 1642962899344, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/e-shop-website-with-ilb-ase/azuredeploy.json", + "/demos/e-shop-website-with-ilb-ase/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT709", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.web/sites", + "microsoft.cdn/profiles", + "microsoft.sql/servers", + "microsoft.cache/redis", + "microsoft.network/virtualnetworks/subnets", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT709", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingASEName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment." + }, + "value": "GET-PREREQ-existingASEName" + }, + "existingASELocation": { + "type": "string", + "metadata": { + "description": "Location of the App Service Environment." + }, + "value": "GET-PREREQ-existingASELocation" + }, + "existingASEDNSSuffix": { + "type": "string", + "metadata": { + "description": "DNS Suffix used for the ILB ASE" + }, + "value": "internal-contoso.com" + }, + "dnsSuffix": { + "type": "string", + "metadata": { + "description": "Root domain name used to access web apps on internet." + }, + "value": "contoso.com" + }, + "sqlServerAdministratorLogin": { + "type": "string", + "metadata": { + "description": "Administrator login name of the Azure SQL Server." + }, + "value": "GEN-UNIQUE" + }, + "sqlServerAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Administrator login password of the Azure SQL Server." + }, + "value": "GEN-PASSWORD" + }, + "azureAdTenantId": { + "type": "string", + "metadata": { + "description": "Directory ID of the Azure Active Directory used by the Admin App." + }, + "value": "GEN-UNIQUE" + }, + "azureAdClientId": { + "type": "string", + "metadata": { + "description": "Application ID of the Admin App Registration." + }, + "value": "GEN-UNIQUE" + }, + "appInsightsLocation": { + "type": "string", + "metadata": { + "description": "description" + }, + "value": "East US" + } + }, + "variables": { + "location": "existingAseLocation", + "vnetName": "existingAseName-vnet", + "aseSubnetName": "existingAseName-subnet", + "aseSubnetAddressPrefix": "192.168.251.64/26", + "agSubnetName": "app-gateway-subnet", + "aspName": "existingAseName-asp", + "webAppName": "existingAseName-web", + "contentAppName": "existingAseName-content", + "apiAppName": "existingAseName-api", + "adminAppName": "existingAseName-admin", + "appInsightsName": "existingAseName-app-insights", + "sqlServerName": "existingAseName-sql-server", + "storageAccountName": "[concat(replace(parameters('existingAseName'), '-', ''), '')]", + "redisCacheName": "existingAseName-cache", + "redisCacheSubnetName": "redis-cache-subnet", + "redisCacheSubnetAddressPrefix": "192.168.251.0/26", + "redisCacheStaticIP": "192.168.251.62", + "appGatewayName": "existingAseName-waf", + "appGatewayPublicIPName": "existingAseName-waf-ip", + "appGatewayPublicIPDnsPrefix": "existingAseName-waf", + "cdnName": "existingAseName-cdn", + "cdnWebAppEndpointName": "existingAseName-cdn-web", + "cdnStorageEndpointName": "existingAseName-cdn-storage", + "webAppExternalHostName": "existingAseName-web.contoso.com", + "webAppInternalHostName": "existingAseName-web.internal-contoso.com", + "apiAppInternalHostName": "existingAseName-api.internal-contoso.com", + "contentAppExternalHostName": "existingAseName-content.contoso.com", + "contentAppInternalHostName": "existingAseName-content.internal-contoso.com", + "adminAppExternalHostName": "existingAseName-admin.contoso.com", + "adminAppInternalHostName": "existingAseName-admin.internal-contoso.com", + "sourceCodeRepositoryURL": "https://github.com/OGCanviz/e-shop-website-with-ilb-ase/" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "existingAseName-vnet/redis-cache-subnet", + "properties": { + "addressPrefix": "192.168.251.0/26" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "existingAseName-vnet/app-gateway-subnet", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets//existingAseName-vnet/redis-cache-subnet" + ], + "properties": { + "addressPrefix": "192.168.251.64/26" + } + }, + { + "apiVersion": "2020-02-02", + "type": "microsoft.insights/components", + "name": "existingAseName-app-insights", + "location": "East US", + "properties": { + "Application_Type": "web", + "Request_Source": "IbizaWebAppExtensionCreate" + } + }, + { + "apiVersion": "2021-04-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "existingAseLocation", + "sku": { + "name": "Standard_RAGRS" + }, + "kind": "StorageV2", + "properties": { + "supportsHttpsTrafficOnly": false, + "accessTier": "Hot", + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Cache/Redis", + "name": "existingAseName-cache", + "location": "existingAseLocation", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets//existingAseName-vnet/redis-cache-subnet" + ], + "properties": { + "sku": { + "name": "Premium", + "family": "P", + "capacity": 1 + }, + "subnetId": "Microsoft.Network/virtualNetworks/subnets//existingAseName-vnet/redis-cache-subnet", + "staticIP": "192.168.251.62", + "enableNonSslPort": true + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/serverfarms", + "name": "existingAseName-asp", + "location": "existingAseLocation", + "kind": "app", + "properties": { + "name": "existingAseName-asp", + "workerSize": "0", + "workerSizeId": "0", + "numberOfWorkers": "1", + "reserved": false, + "hostingEnvironment": "existingAseName" + }, + "sku": { + "tier": "Isolated", + "name": "I1" + } + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/sites", + "name": "existingAseName-content", + "location": "existingAseLocation", + "dependsOn": [ + "Microsoft.Web/serverfarms//existingAseName-asp" + ], + "properties": { + "name": "existingAseName-content", + "serverFarmId": "Microsoft.Web/serverfarms//existingAseName-asp", + "hostingEnvironment": "existingAseName", + "siteConfig": { + "alwaysOn": true, + "appSettings": [ + { + "name": "project", + "value": "src/Web/wwwroot" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "Microsoft.Web/sites//existingAseName-content" + ], + "properties": { + "RepoUrl": "https://github.com/OGCanviz/e-shop-website-with-ilb-ase/", + "branch": "master", + "IsManualIntegration": true + } + } + ] + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/sites", + "name": "existingAseName-api", + "location": "existingAseLocation", + "dependsOn": [ + "Microsoft.Web/serverfarms//existingAseName-asp", + "microsoft.insights/components//existingAseName-app-insights" + ], + "properties": { + "name": "existingAseName-api", + "serverFarmId": "Microsoft.Web/serverfarms//existingAseName-asp", + "hostingEnvironment": "existingAseName", + "siteConfig": { + "alwaysOn": true, + "appSettings": [ + { + "name": "ApplicationInsights:InstrumentationKey", + "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2020-02-02').InstrumentationKey]" + }, + { + "name": "project", + "value": "src/API/API.csproj" + } + ], + "connectionstrings": [ + { + "name": "SalesConnection", + "type": "SQLAzure", + "connectionString": "[concat('Server=tcp:', reference(variables('sqlServerName')).fullyQualifiedDomainName, ',1433;Initial Catalog=Sales;Persist Security Info=False;User ID=', parameters('sqlServerAdministratorLogin'), ';Password=', parameters('sqlServerAdministratorLoginPassword'), ';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "Microsoft.Web/sites//existingAseName-api" + ], + "properties": { + "RepoUrl": "https://github.com/OGCanviz/e-shop-website-with-ilb-ase/", + "branch": "master", + "IsManualIntegration": true + } + } + ] + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/sites", + "name": "existingAseName-admin", + "location": "existingAseLocation", + "dependsOn": [ + "Microsoft.Web/serverfarms//existingAseName-asp", + "microsoft.insights/components//existingAseName-app-insights" + ], + "properties": { + "name": "existingAseName-admin", + "serverFarmId": "Microsoft.Web/serverfarms//existingAseName-asp", + "hostingEnvironment": "existingAseName", + "siteConfig": { + "alwaysOn": true, + "appSettings": [ + { + "name": "AzureAd:Domain", + "value": "" + }, + { + "name": "AzureAd:TenantId", + "value": "GEN-UNIQUE" + }, + { + "name": "AzureAd:ClientId", + "value": "GEN-UNIQUE" + }, + { + "name": "ODataServiceBaseUrl", + "value": "http://existingAseName-api.internal-contoso.com" + }, + { + "name": "ApplicationInsights:InstrumentationKey", + "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2020-02-02').InstrumentationKey]" + }, + { + "name": "project", + "value": "src/Admin/Admin.csproj" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "Microsoft.Web/sites//existingAseName-admin", + "Microsoft.Web/sites/sourcecontrols//existingAseName-api/web" + ], + "properties": { + "RepoUrl": "https://github.com/OGCanviz/e-shop-website-with-ilb-ase/", + "branch": "master", + "IsManualIntegration": true + } + } + ] + }, + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/sites", + "name": "existingAseName-web", + "location": "existingAseLocation", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms/', variables('aspName'))]", + "[resourceId('microsoft.insights/components/', variables('appInsightsName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Cache/Redis/', variables('redisCacheName'))]" + ], + "properties": { + "name": "existingAseName-web", + "serverFarmId": "Microsoft.Web/serverfarms//existingAseName-asp", + "hostingEnvironment": "existingAseName", + "siteConfig": { + "alwaysOn": true, + "appSettings": [ + { + "name": "ODataServiceBaseUrl", + "value": "http://existingAseName-api.internal-contoso.com" + }, + { + "name": "cdn:url", + "value": "[concat('http://', reference(resourceId('microsoft.cdn/profiles/endpoints/', variables('cdnName'), variables('cdnWebAppEndpointName')), '2020-09-01').hostName)]" + }, + { + "name": "CatalogBaseUrl", + "value": "https://existingAseName-cdn-storage.azureedge.net" + }, + { + "name": "ApplicationInsights:InstrumentationKey", + "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2020-02-02').InstrumentationKey]" + }, + { + "name": "project", + "value": "src/Web/Web.csproj" + } + ], + "connectionstrings": [ + { + "name": "CatalogConnection", + "type": "SQLAzure", + "connectionString": "[concat('Server=tcp:', reference(variables('sqlServerName')).fullyQualifiedDomainName, ',1433;Initial Catalog=Catalog;Persist Security Info=False;User ID=', parameters('sqlServerAdministratorLogin'), ';Password=', parameters('sqlServerAdministratorLoginPassword'), ';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]" + }, + { + "name": "SalesConnection", + "type": "SQLAzure", + "connectionString": "[concat('Server=tcp:', reference(variables('sqlServerName')).fullyQualifiedDomainName, ',1433;Initial Catalog=Sales;Persist Security Info=False;User ID=', parameters('sqlServerAdministratorLogin'), ';Password=', parameters('sqlServerAdministratorLoginPassword'), ';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]" + }, + { + "name": "IdentityConnection", + "type": "SQLAzure", + "connectionString": "[concat('Server=tcp:', reference(variables('sqlServerName')).fullyQualifiedDomainName, ',1433;Initial Catalog=Identity;Persist Security Info=False;User ID=', parameters('sqlServerAdministratorLogin'), ';Password=', parameters('sqlServerAdministratorLoginPassword'), ';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]" + }, + { + "name": "StorageConnection", + "type": "Custom", + "connectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listkeys(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2021-04-01').keys[0].value,';')]" + }, + { + "name": "RedisConnection", + "type": "Custom", + "connectionString": "[concat(variables('redisCacheName'), '.redis.cache.windows.net:6380,password=', listKeys(resourceId('Microsoft.Cache/Redis/', variables('redisCacheName')), '2020-06-01').primaryKey, ',ssl=True,abortConnect=False')]" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "Microsoft.Web/sites//existingAseName-web", + "Microsoft.Web/sites/sourcecontrols//existingAseName-admin/web" + ], + "properties": { + "RepoUrl": "https://github.com/OGCanviz/e-shop-website-with-ilb-ase/", + "branch": "master", + "IsManualIntegration": true + } + } + ] + }, + { + "apiVersion": "2020-11-01-preview", + "type": "Microsoft.Sql/servers", + "location": "existingAseLocation", + "name": "existingAseName-sql-server", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "apiVersion": "2020-11-01-preview", + "type": "databases", + "location": "existingAseLocation", + "name": "Catalog", + "dependsOn": [ + "Microsoft.Sql/servers//existingAseName-sql-server" + ], + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "zoneRedundant": false + } + }, + { + "apiVersion": "2020-11-01-preview", + "type": "databases", + "location": "existingAseLocation", + "name": "Sales", + "dependsOn": [ + "Microsoft.Sql/servers//existingAseName-sql-server" + ], + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "zoneRedundant": false + } + }, + { + "apiVersion": "2020-11-01-preview", + "type": "databases", + "location": "existingAseLocation", + "name": "Identity", + "dependsOn": [ + "Microsoft.Sql/servers//existingAseName-sql-server" + ], + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "zoneRedundant": false + } + }, + { + "apiVersion": "2020-11-01-preview", + "type": "virtualNetworkRules", + "name": "allow-access-from-existingAseName-subnet", + "dependsOn": [ + "Microsoft.Sql/servers//existingAseName-sql-server" + ], + "properties": { + "virtualNetworkSubnetId": "Microsoft.Network/virtualNetworks/subnets//existingAseName-vnet/existingAseName-subnet" + } + } + ] + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/applicationGateways", + "name": "existingAseName-waf", + "location": "existingAseLocation", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/subnets//existingAseName-vnet/app-gateway-subnet", + "Microsoft.Network/publicIPAddresses//existingAseName-waf-ip" + ], + "properties": { + "sku": { + "name": "WAF_Medium", + "tier": "WAF", + "capacity": 1 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//existingAseName-vnet/app-gateway-subnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses//existingAseName-waf-ip" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "webAppBackendPool", + "properties": { + "BackendAddresses": [ + { + "fqdn": "existingAseName-web.internal-contoso.com" + } + ] + } + }, + { + "name": "contentAppBackendPool", + "properties": { + "BackendAddresses": [ + { + "fqdn": "existingAseName-content.internal-contoso.com" + } + ] + } + }, + { + "name": "adminAppBackendPool", + "properties": { + "BackendAddresses": [ + { + "fqdn": "existingAseName-admin.internal-contoso.com" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "webAppBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "PickHostNameFromBackendAddress": false, + "probe": { + "id": "Microsoft.Network/applicationGateways/probes/existingAseName-waf/webAppProbe" + } + } + }, + { + "name": "contentAppBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "PickHostNameFromBackendAddress": false, + "probe": { + "id": "Microsoft.Network/applicationGateways/probes/existingAseName-waf/contentAppProbe" + } + } + }, + { + "name": "adminAppBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Disabled", + "PickHostNameFromBackendAddress": false, + "probe": { + "id": "Microsoft.Network/applicationGateways/probes/existingAseName-waf/adminAppProbe" + } + } + } + ], + "httpListeners": [ + { + "name": "webAppHttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/existingAseName-waf/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/existingAseName-waf/appGatewayFrontendPort" + }, + "Protocol": "Http", + "HostName": "existingAseName-web.contoso.com" + } + }, + { + "name": "contentAppHttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/existingAseName-waf/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/existingAseName-waf/appGatewayFrontendPort" + }, + "Protocol": "Http", + "HostName": "existingAseName-content.contoso.com" + } + }, + { + "name": "adminAppHttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/existingAseName-waf/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/existingAseName-waf/appGatewayFrontendPort" + }, + "Protocol": "Http", + "HostName": "existingAseName-admin.contoso.com" + } + } + ], + "requestRoutingRules": [ + { + "Name": "webAppRule", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/existingAseName-waf/webAppHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/existingAseName-waf/webAppBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/existingAseName-waf/webAppBackendHttpSettings" + } + } + }, + { + "Name": "contentAppRule", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/existingAseName-waf/contentAppHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/existingAseName-waf/contentAppBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/existingAseName-waf/contentAppBackendHttpSettings" + } + } + }, + { + "Name": "adminAppRule", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/existingAseName-waf/adminAppHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/existingAseName-waf/adminAppBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/existingAseName-waf/adminAppBackendHttpSettings" + } + } + } + ], + "probes": [ + { + "name": "webAppProbe", + "properties": { + "protocol": "Http", + "path": "/", + "host": "existingAseName-web.internal-contoso.com", + "interval": 30, + "timeout": 120, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": false + } + }, + { + "name": "contentAppProbe", + "properties": { + "protocol": "Http", + "path": "/", + "host": "existingAseName-content.internal-contoso.com", + "interval": 30, + "timeout": 120, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": false + } + }, + { + "name": "adminAppProbe", + "properties": { + "protocol": "Http", + "path": "/", + "host": "existingAseName-admin.internal-contoso.com", + "interval": 30, + "timeout": 120, + "unhealthyThreshold": 3, + "pickHostNameFromBackendHttpSettings": false + } + } + ], + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Prevention", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.0", + "disabledRuleGroups": [ + { + "ruleGroupName": "REQUEST-920-PROTOCOL-ENFORCEMENT", + "rules": [ + 920350 + ] + }, + { + "ruleGroupName": "REQUEST-931-APPLICATION-ATTACK-RFI", + "rules": [ + 931130 + ] + }, + { + "ruleGroupName": "REQUEST-942-APPLICATION-ATTACK-SQLI", + "rules": [ + 942130, + 942440 + ] + } + ] + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "existingAseName-waf-ip", + "location": "existingAseLocation", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "existingAseName-waf" + } + } + }, + { + "apiVersion": "2020-09-01", + "type": "microsoft.cdn/profiles", + "name": "existingAseName-cdn", + "location": "existingAseLocation", + "sku": { + "name": "standard_verizon" + }, + "resources": [ + { + "apiVersion": "2020-09-01", + "type": "endpoints", + "name": "existingAseName-cdn-web", + "location": "existingAseLocation", + "dependsOn": [ + "microsoft.cdn/profiles//existingAseName-cdn" + ], + "properties": { + "isHttpAllowed": true, + "isHttpsAllowed": false, + "origins": [ + { + "name": "contentApp", + "properties": { + "hostName": "existingAseName-content.contoso.com" + } + } + ], + "isCompressionEnabled": true, + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "text/javascript", + "application/x-javascript", + "application/javascript", + "application/json", + "application/xml" + ], + "optimizationType": "GeneralWebDelivery", + "originHostHeader": "existingAseName-content.contoso.com" + } + }, + { + "apiVersion": "2020-09-01", + "type": "endpoints", + "name": "existingAseName-cdn-storage", + "location": "existingAseLocation", + "dependsOn": [ + "[resourceId('microsoft.cdn/profiles/', variables('cdnName'))]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "properties": { + "isHttpAllowed": true, + "isHttpsAllowed": true, + "origins": [ + { + "name": "Storage", + "properties": { + "hostName": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').primaryEndpoints.blob, 'https://', ''), '/', '')]" + } + } + ], + "isCompressionEnabled": true, + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "text/javascript", + "application/x-javascript", + "application/javascript", + "application/json", + "application/xml" + ], + "optimizationType": "GeneralWebDelivery", + "originHostHeader": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-04-01').primaryEndpoints.blob, 'https://', ''), '/', '')]" + } + } + ] + } + ], + "outputs": { + "webAppURL": { + "type": "string", + "value": "[concat('http://', variables('webAppExternalHostName'))]" + }, + "adminAppURL": { + "type": "string", + "value": "[concat('http://', variables('adminAppExternalHostName'))]" + }, + "adminAppRedirectURL": { + "type": "string", + "value": "[concat('http://', variables('adminAppExternalHostName'), '/signin-oidc')]" + }, + "appGatewayPublicIPFqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses/', variables('appGatewayPublicIPName')), '2020-11-01').dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT71 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT71 new file mode 100644 index 0000000..86daa50 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT71 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-vnetstorage.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "timestamp": 1642962885184, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/trendp2p-vnetstorage.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/nested/datameer-hdinsight.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT71", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT71", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "defaultValue": "" + }, + "storage-api-version": { + "type": "string", + "defaultValue": "" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "value": "westus" + }, + "network-api-version": { + "type": "string", + "defaultValue": "" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "dsmvnet" + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "" + }, + "subnet1Name": { + "type": "string", + "defaultValue": "" + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "" + }, + "subnet2Name": { + "type": "string", + "defaultValue": "" + }, + "subnet2Prefix": { + "type": "string", + "defaultValue": "" + }, + "subnet3Name": { + "type": "string", + "defaultValue": "" + }, + "subnet3Prefix": { + "type": "string", + "defaultValue": "" + }, + "subnet4Name": { + "type": "string", + "defaultValue": "" + }, + "subnet4Prefix": { + "type": "string", + "defaultValue": "" + }, + "tagvalues": { + "type": "object", + "defaultValue": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "availabilitySetSettings": { + "type": "object", + "metadata": { + "description": "Availability Set settings object" + } + }, + "datameerTags": { + "type": "object" + }, + "trendmicroTags": { + "type": "object" + }, + "chefSoftwareTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "clusterName": { + "value": "hdi-datameer-avyan-cluster" + }, + "clusterType": { + "value": "hadoop" + }, + "clusterLoginUserName": { + "value": "hdiadmin" + }, + "clusterLoginPassword": { + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "value": "hdiuser" + }, + "sshPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccount": { + "value": "stgmsignite2016" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "hdi-datameer-avyan-clustersubnet" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "", + "apiVersion": "2018-02-01", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "sku": { + "name": "" + }, + "properties": {} + }, + { + "apiVersion": "2017-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "dsmvnet", + "location": "westus", + "tags": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef", + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "" + ] + }, + "subnets": [ + { + "name": "", + "properties": { + "addressPrefix": "" + } + }, + { + "name": "", + "properties": { + "addressPrefix": "" + } + }, + { + "name": "", + "properties": { + "addressPrefix": "" + } + }, + { + "name": "", + "properties": { + "addressPrefix": "" + } + } + ] + } + }, + { + "apiVersion": "2017-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "availabilitySetSettingscopyindex()", + "tags": { + "quickstartName": "quickstartTags", + "provider": "datameerTags" + }, + "copy": { + "name": "availabilitySetLoop", + "count": "availabilitySetSettings" + }, + "location": "westus", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": "availabilitySetSettings", + "platformUpdateDomainCount": "availabilitySetSettings" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT710 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT710 new file mode 100644 index 0000000..a493ae2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT710 @@ -0,0 +1,226 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/eset-vm-extension/azuredeploy.json", + "/demos/eset-vm-extension/azuredeploy.parameters.json" + ], + "timestamp": 1642962899356, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/eset-vm-extension/azuredeploy.json", + "/demos/eset-vm-extension/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT710", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT710", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "defaultValue": "myVM", + "metadata": { + "description": "Vitual machine's unique name." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Virtual machine size" + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "Windows-Server-Technical-Preview" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, Windows-Server-Technical-Preview." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "diskStorageType": "StandardSSD_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "myVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "myVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "myVM/fileSecurityExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//myVM" + ], + "properties": { + "publisher": "ESET", + "type": "FileSecurity", + "typeHandlerVersion": "6.5" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT711 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT711 new file mode 100644 index 0000000..9dbb90b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT711 @@ -0,0 +1,558 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/haproxy-redundant-floatingip-ubuntu/azuredeploy.json", + "/demos/haproxy-redundant-floatingip-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962899372, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/haproxy-redundant-floatingip-ubuntu/azuredeploy.json", + "/demos/haproxy-redundant-floatingip-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT711", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT711", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "SSH rsa public key file as a string." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "lbDNSLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the load balancer Public IP. Must be lowercase. It should match with the regex: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE" + }, + "haproxyVMNamePrefix": { + "type": "string", + "defaultValue": "haproxyvm-", + "metadata": { + "description": "Prefix to use for names of VMs under the load balancer" + } + }, + "appVMNamePrefix": { + "type": "string", + "defaultValue": "appvm-", + "metadata": { + "description": "Prefix to use for names of application VMs" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "15.10" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.5-LTS, 15.10." + }, + "value": "14.04.5-LTS" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + }, + "value": "Standard_D2_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "location" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id), 'haproxysa')]", + "numberOfHAproxyInstances": 2, + "haproxyVMScripts": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('haproxyvm-configure.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('keepalived-action.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('keepalived-check-appsvc.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sudo bash -x haproxyvm-configure.sh -a appvm-0 -a appvm-1 -p 80 -l GEN-UNIQUE.[resourceGroup().location].cloudapp.azure.com -t 80 -m haproxyvm-0 -b haproxyvm-1" + }, + "numberOfAppInstances": 2, + "appVMScripts": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('apache-setup.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sudo bash apache-setup.sh" + }, + "appVMPort": 80, + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "nicNamePrefix": "nic-", + "storageAccountType": "StandardSSD_LRS", + "haproxyAvailabilitySetName": "haproxyAvSet", + "appAvailabilitySetName": "appAvSet", + "vnetName": "haproxyVNet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "lbName": "haproxyLB", + "lbPublicIPAddressType": "Static", + "lbPublicIPAddressName": "haproxyLB-publicip", + "lbVIPPort": 80 + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "StandardSSD_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "haproxyAvSet", + "location": "[resourceGroup().location]", + "properties": { + "PlatformUpdateDomainCount": 3, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "appAvSet", + "location": "[resourceGroup().location]", + "properties": { + "PlatformUpdateDomainCount": 3, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "haproxyLB-publicip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "haproxyVNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "name": "haproxyLB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//haproxyLB-publicip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/haproxyLB-publicip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool1" + } + ], + "inboundNatRules": [ + { + "name": "SSH-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/haproxyLB/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 22, + "enableFloatingIP": false + } + }, + { + "name": "SSH-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/haproxyLB/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50002, + "backendPort": 22, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/haproxyLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/haproxyLB/BackendPool1" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/haproxyLB/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "haproxyvm-nic-copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "haproxyNicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//haproxyVNet", + "Microsoft.Network/loadBalancers//haproxyLB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/haproxyVNet/variables (subnetName)" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/haproxyLB/BackendPool1" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/haproxyLB/SSH-VMcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "haproxyvm-copyindex()", + "copy": { + "name": "haproxyVMLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(parameters('haproxyVMNamePrefix'), variables('nicNamePrefix'), copyindex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('haproxyAvailabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/haproxyAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "haproxyvm-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "haproxyvm-OSDisk-copyindex()", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/haproxyvm-nic-copyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-01-01').primaryEndpoints.blob)]" + } + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "appvm-nic-copyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "appNicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//haproxyVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/haproxyVNet/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "appvm-copyindex()", + "copy": { + "name": "appVMLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', concat(parameters('appVMNamePrefix'), variables('nicNamePrefix'), copyindex()))]", + "[resourceId('Microsoft.Compute/availabilitySets/', variables('appAvailabilitySetName'))]" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/appAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "appvm-copyIndex()", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "appvm-OSDisk-copyindex()", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/appvm-nic-copyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-01-01').primaryEndpoints.blob)]" + } + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "appvm-copyindex()/configureappvm", + "copy": { + "name": "appVMExtensionsLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//appvm-copyindex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "(appVMScripts).fileUris" + }, + "protectedSettings": { + "commandToExecute": "(appVMScripts).commandToExecute" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "haproxyvm-copyindex()/configureHAproxyVM", + "copy": { + "name": "haproxyVMExtensionsLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//haproxyvm-copyindex()", + "appVMExtensionsLoop" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "(haproxyVMScripts).fileUris", + "commandToExecute": "(haproxyVMScripts).commandToExecute" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT712 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT712 new file mode 100644 index 0000000..c3239d8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT712 @@ -0,0 +1,317 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/hdinsight-linux-run-script-action/azuredeploy.json", + "/demos/hdinsight-linux-run-script-action/azuredeploy.parameters.json" + ], + "timestamp": 1642962899384, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/hdinsight-linux-run-script-action/azuredeploy.json", + "/demos/hdinsight-linux-run-script-action/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT712", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.storage/storageaccounts", + "microsoft.hdinsight/clusters" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT712", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "clusterVNetAddressSpace": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The virtual network's address range in CIDR notion. It must be contained in one of the standard private address spaces: 10.0.0.0/8, 172.160.0.0/12, or 192.168.0.0/16." + } + }, + "clusterVNetSubnetName": { + "type": "string", + "defaultValue": "default", + "metadata": { + "description": "The name of the subnet to create in the virtual network." + } + }, + "clusterVNetSubnetAddressRange": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The subnet's address range in CIDR notation. It must be contained by the address space of the virtual network." + } + }, + "clusterName": { + "type": "string", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "GEN-UNIQUE-10" + }, + "clusterType": { + "type": "string", + "defaultValue": "hadoop", + "allowedValues": [ + "hadoop", + "hbase" + ], + "metadata": { + "description": "The type of HDInsight cluster to create." + }, + "value": "hadoop" + }, + "clusterLoginUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "GEN-UNIQUE" + }, + "clusterLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "sshUserName": { + "type": "string", + "metadata": { + "description": "These credentials can be used to remotely access the cluster and the edge node virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "sshPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "clusterStorageAccountName": { + "type": "string", + "metadata": { + "description": "The name of the storage account to be created and be used as the cluster's storage." + }, + "value": "GEN-UNIQUE-10" + }, + "clusterWorkerNodeCount": { + "type": "int", + "defaultValue": 4, + "metadata": { + "description": "The number of nodes in the HDInsight cluster." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "scriptActionUri": { + "type": "string", + "defaultValue": "[uri(parameters('_artifactsLocation'), concat('setEnvVar.sh', parameters('_artifactsLocationSasToken')))]", + "metadata": { + "description": "A public http(s) uri that points to a script action which will set an environment variable on each node." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "clusterNodeSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "allowedValues": [ + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "All nodes will be deployed using the specified hardware profile: D12(4 CPU Cores, 28GB of RAM), D13(8 CPU Cores, 56GB of RAM), D14(16 CPU Cores, 112 GB of RAM)." + } + } + }, + "variables": { + "defaultApiVersion": "2015-05-01-preview", + "clusterVNetName": "GEN-UNIQUE-10-vnet" + }, + "resources": [ + { + "name": "GEN-UNIQUE-10-vnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "sku": { + "name": "Standard_LRS" + } + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.HDInsight/clusters", + "location": "[resourceGroup().location]", + "apiVersion": "2018-06-01-preview", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-10", + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-10-vnet" + ], + "properties": { + "clusterVersion": "3.6", + "osType": "Linux", + "clusterDefinition": { + "kind": "hadoop", + "configurations": { + "gateway": { + "restAuthCredential.isEnabled": true, + "restAuthCredential.username": "GEN-UNIQUE", + "restAuthCredential.password": "GEN-PASSWORD" + } + } + }, + "storageProfile": { + "storageaccounts": [ + { + "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts/', parameters('clusterStorageAccountName')), '2020-08-01-preview').primaryEndpoints.blob),'https:',''),'/','')]", + "isDefault": true, + "container": "GEN-UNIQUE-10", + "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('clusterStorageAccountName')), variables('defaultApiVersion')).key1]" + } + ] + }, + "computeProfile": { + "roles": [ + { + "name": "headnode", + "targetInstanceCount": 2, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet", + "subnet": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet/subnets/default" + }, + "scriptActions": [ + { + "name": "setenvironmentvariableHeadNode", + "uri": "[uri(parameters('_artifactsLocation'), concat('setEnvVar.sh', parameters('_artifactsLocationSasToken')))]", + "parameters": "headnode" + } + ] + }, + { + "name": "workernode", + "targetInstanceCount": 4, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet", + "subnet": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet/subnets/default" + }, + "scriptActions": [ + { + "name": "setenvironmentvariableWorkerNode", + "uri": "[uri(parameters('_artifactsLocation'), concat('setEnvVar.sh', parameters('_artifactsLocationSasToken')))]", + "parameters": "workernode" + } + ] + }, + { + "name": "zookeepernode", + "targetInstanceCount": 3, + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "linuxOperatingSystemProfile": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD" + } + }, + "virtualNetworkProfile": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet", + "subnet": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10-vnet/subnets/default" + }, + "scriptActions": [ + { + "name": "setenvironmentvariableZookeeperNode", + "uri": "[uri(parameters('_artifactsLocation'), concat('setEnvVar.sh', parameters('_artifactsLocationSasToken')))]", + "parameters": "zookeepernode" + } + ] + } + ] + } + } + } + ], + "outputs": { + "vnet": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks',variables('clusterVNetName')))]" + }, + "cluster": { + "type": "object", + "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT713 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT713 new file mode 100644 index 0000000..4ded2ed --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT713 @@ -0,0 +1,769 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/hub-and-spoke-sandbox/azuredeploy.json", + "/demos/hub-and-spoke-sandbox/azuredeploy.parameters.json" + ], + "timestamp": 1642962899399, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/hub-and-spoke-sandbox/azuredeploy.json", + "/demos/hub-and-spoke-sandbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT713", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.network/virtualnetworkgateways", + "microsoft.network/virtualnetworks/virtualnetworkpeerings", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.network/virtualnetworks/subnets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT713", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "metadata": { + "description": "The Windows version for Windows Jump-host VM." + } + }, + "winVmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "Size for Windows jump-host VM" + } + }, + "winVmUser": { + "type": "string", + "metadata": { + "description": "Username for Windows jump-host VM" + }, + "value": "GEN-UNIQUE" + }, + "winVmPassword": { + "type": "securestring", + "metadata": { + "description": "Password for Windows jump-host VM. The password must be between 6-72 characters long and must satisfy at least 3 of password complexity requirements from the following: 1) Contains an uppercase character 2) Contains a lowercase character 3) Contains a numeric digit 4) Contains a special character 5) Control characters are not allowed" + }, + "value": "GEN-PASSWORD" + }, + "winVmDnsPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for Windows jump-host VM." + }, + "value": "GEN-UNIQUE-13" + }, + "deployVpnGateway": { + "type": "string", + "defaultValue": "No", + "allowedValues": [ + "Yes", + "No" + ], + "metadata": { + "description": "Whether or not to deploy a VPN Gateway in the Hub" + }, + "value": "Yes" + }, + "gatewaySku": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "VpnGw1", + "VpnGw2", + "VpnGw3" + ], + "metadata": { + "description": "The SKU of the Gateway, if deployed" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "hubVnetName": "hubVnet", + "hubVnetPrefix": "192.168.0.0/20", + "dmzSubnetName": "DMZSubnet", + "dmzSubnetPrefix": "192.168.0.0/25", + "mgmtSubnetName": "ManagementSubnet", + "mgmtSubnetPrefix": "192.168.1.0/24", + "sharedSubnetName": "SharedSubnet", + "sharedSubnetPrefix": "192.168.4.0/22", + "gatewaySubnetName": "GatewaySubnet", + "gatewaySubnetPrefix": "192.168.15.224/27", + "gatewayName": "hubVpnGateway", + "gatewayPIPName": "hubVpnGatewayPublicIp", + "subnetGatewayId": "Microsoft.Network/virtualNetworks/subnets/hubVnet/GatewaySubnet", + "winJmphostName": "winJmphostVm", + "devSpokeVnetName": "spokeDevVnet", + "devSpokeVnetPrefix": "10.10.0.0/16", + "prodSpokeVnetName": "spokeProdVnet", + "prodSpokeVnetPrefix": "10.100.0.0/16", + "spokeWorkloadSubnetName": "WorkloadSubnet", + "devSpokeWorkloadSubnetPrefix": "10.10.0.0/16", + "prodSpokeWorkloadSubnetPrefix": "10.100.0.0/16", + "hubID": "Microsoft.Network/virtualNetworks//hubVnet", + "devSpokeID": "Microsoft.Network/virtualNetworks//spokeDevVnet", + "prodSpokeID": "Microsoft.Network/virtualNetworks//spokeProdVnet", + "winVmNicName": "winJmphostVmNIC", + "winVmStorageName": "[concat('hubwinvm',uniquestring(resourceGroup().id))]", + "winNsgName": "winJmpHostNsg", + "winJmphostPublicIpName": "winJmphostVmPublicIp" + }, + "resources": [ + { + "comments": "HUB Virtual Network (VNet)", + "type": "Microsoft.Network/virtualNetworks", + "name": "hubVnet", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "192.168.0.0/20" + ] + }, + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "comments": "Management Subnet", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "hubVnet/ManagementSubnet", + "apiVersion": "2019-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet" + ], + "properties": { + "addressPrefix": "192.168.1.0/24" + } + }, + { + "comments": "Shared Subnet", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "hubVnet/SharedSubnet", + "apiVersion": "2019-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet" + ], + "properties": { + "addressPrefix": "192.168.4.0/22" + } + }, + { + "comments": "DMZ Subnet", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "hubVnet/DMZSubnet", + "apiVersion": "2019-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet" + ], + "properties": { + "addressPrefix": "192.168.0.0/25" + } + }, + { + "condition": false, + "comments": "Gateway Subnet", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "hubVnet/GatewaySubnet", + "apiVersion": "2019-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet" + ], + "properties": { + "addressPrefix": "192.168.15.224/27" + } + }, + { + "comments": "Development Spoke Virtual Network (VNet)", + "type": "Microsoft.Network/virtualNetworks", + "name": "spokeDevVnet", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.10.0.0/16" + ] + }, + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "comments": "Development Workload Subnet", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "spokeDevVnet/WorkloadSubnet", + "apiVersion": "2019-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/spokeDevVnet" + ], + "properties": { + "addressPrefix": "10.10.0.0/16" + } + }, + { + "comments": "Production Spoke Virtual Network (VNet)", + "type": "Microsoft.Network/virtualNetworks", + "name": "spokeProdVnet", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.100.0.0/16" + ] + }, + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "comments": "Production Workload Subnet", + "type": "Microsoft.Network/virtualNetworks/subnets", + "name": "spokeProdVnet/WorkloadSubnet", + "apiVersion": "2019-11-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/spokeProdVnet" + ], + "properties": { + "addressPrefix": "10.100.0.0/16" + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "hubVnet/gwPeering_hubVnet_spokeDevVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/GatewaySubnet", + "Microsoft.Network/virtualNetworks/spokeDevVnet", + "Microsoft.Network/virtualNetworks/subnets/spokeDevVnet/WorkloadSubnet" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": true, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks//spokeDevVnet" + } + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "hubVnet/peering_hubVnet_spokeDevVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet", + "Microsoft.Network/virtualNetworks/spokeDevVnet", + "Microsoft.Network/virtualNetworks/subnets/spokeDevVnet/WorkloadSubnet" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks//spokeDevVnet" + } + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "hubVnet/gwPeering_hubVnet_spokeProdVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/GatewaySubnet", + "Microsoft.Network/virtualNetworks/spokeProdVnet", + "Microsoft.Network/virtualNetworks/subnets/spokeProdVnet/WorkloadSubnet" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": true, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks//spokeProdVnet" + } + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "hubVnet/peering_hubVnet_spokeProdVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet", + "Microsoft.Network/virtualNetworks/spokeProdVnet", + "Microsoft.Network/virtualNetworks/subnets/spokeProdVnet/WorkloadSubnet" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks//spokeProdVnet" + } + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "spokeDevVnet/gwPeering_spokeDevVnet_hubVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/GatewaySubnet", + "Microsoft.Network/virtualNetworks/spokeDevVnet", + "Microsoft.Network/virtualNetworks/subnets/spokeDevVnet/WorkloadSubnet", + "Microsoft.Network/virtualNetworkGateways/hubVpnGateway" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": true, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks//hubVnet" + } + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "spokeDevVnet/peering_spokeDevVnet_hubVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet", + "Microsoft.Network/virtualNetworks/spokeDevVnet", + "Microsoft.Network/virtualNetworks/subnets/spokeDevVnet/WorkloadSubnet" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks//hubVnet" + } + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "spokeProdVnet/gwPeering_spokeProdVnet_hubVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/GatewaySubnet", + "Microsoft.Network/virtualNetworks/spokeProdVnet", + "Microsoft.Network/virtualNetworks/subnets/spokeProdVnet/WorkloadSubnet", + "Microsoft.Network/virtualNetworkGateways/hubVpnGateway" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": true, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks//hubVnet" + } + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "spokeProdVnet/peering_spokeProdVnet_hubVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/hubVnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/SharedSubnet", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/DMZSubnet", + "Microsoft.Network/virtualNetworks/spokeProdVnet", + "Microsoft.Network/virtualNetworks/subnets/spokeProdVnet/WorkloadSubnet" + ], + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "Microsoft.Network/virtualNetworks//hubVnet" + } + } + }, + { + "comments": "Windows Jump-Hosts", + "type": "Microsoft.Compute/virtualMachines", + "name": "winJmphostVm", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', variables('winVmNicName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('winVmStorageName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 20, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "osProfile": { + "computerName": "winJmphostVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVMAgent": true + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/winJmphostVmNIC" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('winVmStorageName'), '2019-06-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "comments": "Network Interface Card (NIC) for Win Jump-Host", + "type": "Microsoft.Network/networkInterfaces", + "name": "winJmphostVmNIC", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/winJmphostVmPublicIp", + "Microsoft.Network/networkSecurityGroups/winJmpHostNsg", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "winJmpHostIpConfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/winJmphostVmPublicIp" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/hubVnet/ManagementSubnet" + }, + "primary": true, + "privateIPAddressVersion": "IPv4" + } + } + ], + "enableAcceleratedNetworking": false, + "enableIPForwarding": false, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/winJmpHostNsg" + }, + "primary": true + } + }, + { + "comments": "NSG For Windows Jump Host", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "winJmpHostNsg", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "NSG_RULE_INBOUND_RDP", + "properties": { + "description": "Allow inbound RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1000, + "direction": "Inbound" + } + } + ], + "defaultSecurityRules": [ + { + "name": "AllowVnetInBound", + "properties": { + "description": "Allow inbound traffic from all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Inbound" + } + }, + { + "name": "AllowAzureLoadBalancerInBound", + "properties": { + "description": "Allow inbound traffic from azure load balancer", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 65001, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "description": "Deny all inbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Inbound" + } + }, + { + "name": "AllowVnetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to all VMs in VNET", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 65000, + "direction": "Outbound" + } + }, + { + "name": "AllowInternetOutBound", + "properties": { + "description": "Allow outbound traffic from all VMs to Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 65001, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "description": "Deny all outbound traffic", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 65500, + "direction": "Outbound" + } + } + ] + } + }, + { + "comments": "Public IP (PIP) for Windows JumpHost", + "type": "Microsoft.Network/publicIPAddresses", + "sku": { + "name": "Basic", + "tier": "Regional" + }, + "name": "winJmphostVmPublicIp", + "apiVersion": "2019-11-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAddressVersion": "IPv4", + "publicIPAllocationMethod": "Static", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('winVmDnsPrefix'))]" + } + } + }, + { + "comments": "Storage account for WIN VM", + "type": "Microsoft.Storage/storageAccounts", + "sku": { + "name": "Standard_GRS", + "tier": "Standard" + }, + "kind": "Storage", + "name": "[variables('winVmStorageName')]", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": false, + "encryption": { + "services": { + "file": { + "enabled": true + }, + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "hubVpnGatewayPublicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "condition": false, + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworkGateways", + "name": "hubVpnGateway", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/hubVpnGatewayPublicIp", + "Microsoft.Network/virtualNetworks/subnets/hubVnet/GatewaySubnet" + ], + "properties": { + "ipConfigurations": [ + { + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/hubVnet/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/hubVpnGatewayPublicIp" + } + }, + "name": "vnetGatewayConfig" + } + ], + "sku": { + "name": "Basic", + "tier": "Basic" + }, + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "enableBgp": false + } + } + ], + "outputs": { + "Jumphost VM IP address": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('winJmphostPublicIpName'))).IpAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT714 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT714 new file mode 100644 index 0000000..2ef1bc3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT714 @@ -0,0 +1,220 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/identitygovernance-entitlementmanagement-extensibility-sample-logicapp/azuredeploy.json", + "/demos/identitygovernance-entitlementmanagement-extensibility-sample-logicapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962899410, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/identitygovernance-entitlementmanagement-extensibility-sample-logicapp/azuredeploy.json", + "/demos/identitygovernance-entitlementmanagement-extensibility-sample-logicapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT714", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT714", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "String", + "metadata": { + "Description": "Name of the Logicapp" + }, + "value": "AzureAD-EntitlementManagement-Custom-Extension" + }, + "location": { + "type": "String", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "Description": "Deployment location" + } + }, + "catalogId": { + "type": "String", + "metadata": { + "Description": "Catalog Id from Entitlement Management" + }, + "value": "GEN-GUID" + }, + "resourceApplicationId": { + "type": "String", + "metadata": { + "Description": "Resource application Id from Entitlement Management" + }, + "value": "GEN-GUID" + } + }, + "variables": { + "catalogIdExpression": "@{triggerBody()?['CatalogId']}" + }, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "apiVersion": "2019-05-01", + "name": "AzureAD-EntitlementManagement-Custom-Extension", + "location": "[resourceGroup().location]", + "tags": { + "Purpose": "Azure AD Entitlement Management" + }, + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "triggers": { + "manual": { + "type": "Request", + "kind": "Http", + "inputs": { + "schema": { + "properties": { + "AccessPackageAssignmentId": { + "type": "string" + }, + "AccessPackageAssignmentRequestId": { + "type": "string" + }, + "AccessPackageId": { + "type": "string" + }, + "AccessPackageName": { + "type": "string" + }, + "AccessPackagePolicyId": { + "type": "string" + }, + "AccessPackagePolicyName": { + "type": "string" + }, + "CatalogId": { + "type": "string" + }, + "CatalogName": { + "type": "string" + }, + "ConnectedOrganizationName": { + "type": "string" + }, + "Event": { + "type": "string" + }, + "RequestCreatedDateTime": { + "type": "string" + }, + "TargetEmail": { + "type": "string" + }, + "TargetId": { + "type": "string" + }, + "TargetDisplayName": { + "type": "string" + } + }, + "type": "object" + } + }, + "operationOptions": "IncludeAuthorizationHeadersInOutputs" + } + }, + "actions": { + "Condition": { + "actions": { + "Condition_2": { + "actions": {}, + "expression": { + "and": [ + { + "equals": [ + "@triggerBody()?['Event']", + "CustomExtensionConnectionTest" + ] + } + ] + }, + "runAfter": {}, + "type": "If" + } + }, + "expression": { + "and": [ + { + "equals": [ + "@{triggerBody()?['CatalogId']}", + "[trim(parameters('catalogId'))]" + ] + } + ] + }, + "runAfter": {}, + "type": "If" + } + }, + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + }, + "parameters": {}, + "accessControl": { + "triggers": { + "openAuthenticationPolicies": { + "policies": { + "AzureADEntitlementManagementAuthPolicy": { + "type": "AAD", + "claims": [ + { + "name": "iss", + "value": "[concat('https://sts.windows.net/', subscription().tenantId, '/')]" + }, + { + "name": "aud", + "value": "[trim(parameters('resourceApplicationId'))]" + }, + { + "name": "appid", + "value": "810dcf14-1858-4bf2-8134-4c369fa3235b" + } + ] + }, + "AzureADEntitlementManagementAuthPolicyV2App": { + "type": "AAD", + "claims": [ + { + "name": "iss", + "value": "[concat(environment().authentication.loginEndpoint, subscription().tenantId, '/v2.0')]" + }, + { + "name": "aud", + "value": "[trim(parameters('resourceApplicationId'))]" + }, + { + "name": "azp", + "value": "810dcf14-1858-4bf2-8134-4c369fa3235b" + } + ] + } + } + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT715 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT715 new file mode 100644 index 0000000..981d000 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT715 @@ -0,0 +1,633 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/iis-2vm-sql-1vm/azuredeploy.json", + "/demos/iis-2vm-sql-1vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962899436, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/iis-2vm-sql-1vm/azuredeploy.json", + "/demos/iis-2vm-sql-1vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT715", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT715", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "envPrefixName": { + "type": "string", + "metadata": { + "description": "Prefix for the environment (2-5 characters)" + }, + "defaultValue": "cust1", + "value": "GEN-UNIQUE-5" + }, + "username": { + "type": "string", + "metadata": { + "description": "SQL IaaS VM local administrator username" + }, + "value": "GEN-UNIQUE" + }, + "password": { + "type": "securestring", + "metadata": { + "description": "SQL IaaS VM local administrator password" + }, + "value": "GEN-PASSWORD" + }, + "webSrvVMSize": { + "type": "string", + "allowedValues": [ + "Standard_D2s_v3" + ], + "metadata": { + "description": "The size of the Web Server VMs Created" + }, + "defaultValue": "Standard_D2s_v3" + }, + "numberOfWebSrvs": { + "type": "int", + "metadata": { + "description": "Number of Web Servers" + }, + "allowedValues": [ + 1, + 2 + ], + "defaultValue": 1 + }, + "sqlVMSize": { + "type": "string", + "allowedValues": [ + "Standard_D4s_v3" + ], + "metadata": { + "description": "The size of the SQL VM Created" + }, + "defaultValue": "Standard_D4s_v3" + }, + "diskType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "The type of the Storage Account created" + }, + "defaultValue": "Premium_LRS" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "virtualNetworkName": "GEN-UNIQUE-5Vnet", + "addressPrefix": "10.0.0.0/16", + "feSubnetPrefix": "10.0.0.0/24", + "dbSubnetPrefix": "10.0.2.0/24", + "feNSGName": "feNsg", + "dbNSGName": "dbNsg", + "sqlSrvDBName": "GEN-UNIQUE-5sqlSrv14", + "sqlVmSize": "Standard_D4s_v3", + "sqlSrvDBNicName": "GEN-UNIQUE-5sqlSrv14Nic", + "sqlPublicIP": "GEN-UNIQUE-5SqlPip", + "sqlImagePublisher": "MicrosoftSQLServer", + "sqlImageOffer": "SQL2014SP2-WS2012R2", + "sqlImageSku": "Standard", + "webSrvName": "GEN-UNIQUE-5webSrv", + "webSrvVMSize": "Standard_D2s_v3", + "webSrvNicName": "GEN-UNIQUE-5webSrvNic", + "webSrvPublicIP": "GEN-UNIQUE-5websrvpip", + "webSrvAvailabilitySetName": "GEN-UNIQUE-5webSrvAS", + "webSrvNumbOfInstances": 1, + "webSrvDnsNameforLBIP": "[concat(toLower(variables('webSrvName')), 'lb')]", + "webLbName": "GEN-UNIQUE-5webSrvlb", + "vmExtensionName": "dscExtension", + "configurationFunction": "WebServerConfig.ps1\\WebServerConfig" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "feNsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "FrontEndNSG" + }, + "properties": { + "securityRules": [ + { + "name": "rdp_rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web_rule", + "properties": { + "description": "Allow WEB", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "dbNsg", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "BackEndNSG" + }, + "properties": { + "securityRules": [ + { + "name": "Allow_FE", + "properties": { + "description": "Allow FE Subnet", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "10.0.0.0/24", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "rdp_rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Block_FE", + "properties": { + "description": "Block App Subnet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "10.0.0.0/24", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 121, + "direction": "Inbound" + } + }, + { + "name": "Block_Internet", + "properties": { + "description": "Block Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 200, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-5Vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//feNsg", + "Microsoft.Network/networkSecurityGroups//dbNsg" + ], + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "FESubnetName", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/feNsg" + } + } + }, + { + "name": "DBSubnetName", + "properties": { + "addressPrefix": "10.0.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dbNsg" + } + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-5SqlPip", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "tags": { + "displayName": "SqlPIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4 + } + }, + { + "name": "GEN-UNIQUE-5sqlSrv14Nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-5Vnet" + ], + "tags": { + "displayName": "SQLSrvDBNic" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5Vnet/DBSubnetName" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-5SqlPip" + } + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-5sqlSrv14", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-5sqlSrv14Nic", + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-5SqlPip" + ], + "tags": { + "displayName": "SQL-Svr-DB" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-5sqlSrv14", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2014SP2-WS2012R2", + "sku": "Standard", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-5sqlSrv14_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-5sqlSrv14Nic" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-5webSrvAS", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "tags": { + "displayName": "WebSrvAvailabilitySet" + }, + "sku": { + "name": "Aligned" + } + }, + { + "name": "GEN-UNIQUE-5websrvpip", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "tags": { + "displayName": "WebSrvPIP for LB" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "idleTimeoutInMinutes": 4, + "dnsSettings": { + "domainNameLabel": "[variables('webSrvDnsNameforLBIP')]" + } + } + }, + { + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE-5webSrvlb", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Web LB" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-5websrvpip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-5websrvpip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool1" + } + ], + "inboundNatRules": [ + { + "name": "RDP-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-5webSrvlb/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "RDP-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-5webSrvlb/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50002, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-5webSrvlb/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5webSrvlb/BackendPool1" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5webSrvlb/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-5webSrvNiccopyindex()", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "copy": { + "name": "nicLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE-5Vnet", + "Microsoft.Network/loadBalancers//GEN-UNIQUE-5webSrvlb" + ], + "tags": { + "displayName": "WebSrvNic" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5Vnet/FESubnetName" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5webSrvlb/BackendPool1" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/GEN-UNIQUE-5webSrvlb/RDP-VMcopyindex()" + } + ] + } + } + ] + } + }, + { + "name": "GEN-UNIQUE-5webSrvcopyindex()", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "copy": { + "name": "webSrvMachineLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-5webSrvNiccopyindex()", + "Microsoft.Compute/availabilitySets//GEN-UNIQUE-5webSrvAS" + ], + "tags": { + "displayName": "WebSrv" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE-5webSrvAS" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-5webSrvcopyindex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-5webSrvcopyindex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-5webSrvNiccopyindex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-5webSrvcopyindex()/dscExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "copy": { + "name": "webSrvMachineLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-5webSrvcopyindex()" + ], + "tags": { + "displayName": "VM Extensions" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/WebServerConfig.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "WebServerConfig.ps1\\WebServerConfig", + "wmfVersion": "4.0" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT716 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT716 new file mode 100644 index 0000000..8f6b22c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT716 @@ -0,0 +1,325 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/imagebuilder-windowsbaseline/azuredeploy.json", + "/demos/imagebuilder-windowsbaseline/azuredeploy.parameters.json" + ], + "timestamp": 1642962899450, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/imagebuilder-windowsbaseline/azuredeploy.json", + "/demos/imagebuilder-windowsbaseline/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT716", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.compute/galleries", + "microsoft.compute/galleries/images", + "microsoft.resources/deploymentscripts", + "microsoft.virtualmachineimages/imagetemplates", + "microsoft.managedidentity/userassignedidentities", + "microsoft.authorization/roledefinitions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT716", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Azure region where resources in the template should be deployed." + } + }, + "customizerScriptName": { + "type": "string", + "defaultValue": "scripts/runScript.ps1", + "metadata": { + "description": "The name of the customizer script which will be executed during image build." + } + }, + "templateIdentityName": { + "type": "string", + "defaultValue": "[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]", + "metadata": { + "description": "Name of the user-assigned managed identity used by Azure Image Builder template, and for triggering the Azure Image Builder build at the end of the deployment" + } + }, + "templateIdentityRoleDefinitionName": { + "type": "string", + "defaultValue": "[guid(resourceGroup().id)]", + "metadata": { + "description": "Permissions to allow for the user-assigned managed identity." + } + }, + "imageGalleryName": { + "type": "string", + "defaultValue": "[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]", + "metadata": { + "description": "Name of the new Azure Image Gallery resource." + } + }, + "imageDefinitionProperties": { + "type": "object", + "defaultValue": { + "name": "Win2019_AzureWindowsBaseline_Definition", + "publisher": "AzureWindowsBaseline", + "offer": "WindowsServer", + "sku": "2019-Datacenter" + }, + "metadata": { + "description": "Detailed image information to set for the custom image produced by the Azure Image Builder build." + } + }, + "imageTemplateName": { + "type": "string", + "defaultValue": "Win2019_AzureWindowsBaseline_Template", + "metadata": { + "description": "Name of the template to create in Azure Image Builder." + } + }, + "runOutputName": { + "type": "string", + "defaultValue": "Win2019_AzureWindowsBaseline_CustomImage", + "metadata": { + "description": "Name of the custom iamge to create and distribute using Azure Image Builder." + } + }, + "replicationRegions": { + "type": "array", + "defaultValue": [ + "centralus", + "eastus2", + "westus2", + "northeurope", + "westeurope" + ], + "metadata": { + "description": "List the regions in Azure where you would like to replicate the custom image after it is created." + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "A unique string generated for each deployment, to make sure the script is always run." + } + } + }, + "functions": [], + "variables": { + "customizerScriptUri": "[uri(parameters('_artifactsLocation'), format('{0}{1}', parameters('customizerScriptName'), parameters('_artifactsLocationSasToken')))]", + "templateIdentityRoleAssignmentName": "[guid(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('templateIdentityName')), resourceGroup().id, resourceId('Microsoft.Authorization/roleDefinitions', parameters('templateIdentityRoleDefinitionName')))]" + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleDefinitions", + "apiVersion": "2018-07-01", + "name": "[guid(resourceGroup().id)]", + "properties": { + "roleName": "[guid(resourceGroup().id)]", + "description": "Used for AIB template and ARM deployment script that runs AIB build", + "type": "customRole", + "isCustom": true, + "permissions": [ + { + "actions": [ + "Microsoft.Compute/galleries/read", + "Microsoft.Compute/galleries/images/read", + "Microsoft.Compute/galleries/images/versions/read", + "Microsoft.Compute/galleries/images/versions/write", + "Microsoft.Compute/images/read", + "Microsoft.Compute/images/write", + "Microsoft.Compute/images/delete", + "Microsoft.Storage/storageAccounts/blobServices/containers/read", + "Microsoft.Storage/storageAccounts/blobServices/containers/write", + "Microsoft.ContainerInstance/containerGroups/read", + "Microsoft.ContainerInstance/containerGroups/write", + "Microsoft.ContainerInstance/containerGroups/start/action", + "Microsoft.Resources/deployments/read", + "Microsoft.Resources/deploymentScripts/read", + "Microsoft.Resources/deploymentScripts/write", + "Microsoft.VirtualMachineImages/imageTemplates/run/action" + ] + } + ], + "assignableScopes": [ + "[resourceGroup().id]" + ] + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2021-04-01-preview", + "name": "[guid(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('templateIdentityName')), resourceGroup().id, resourceId('Microsoft.Authorization/roleDefinitions', parameters('templateIdentityRoleDefinitionName')))]", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/[guid(resourceGroup().id)]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('templateIdentityName'))).principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]", + "Microsoft.Authorization/roleDefinitions/[guid(resourceGroup().id)]" + ] + }, + { + "type": "Microsoft.Compute/galleries", + "apiVersion": "2020-09-30", + "name": "[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Compute/galleries/images", + "apiVersion": "2020-09-30", + "name": "[format('{0}/{1}', parameters('imageGalleryName'), parameters('imageDefinitionProperties').name)]", + "location": "[resourceGroup().location]", + "properties": { + "osType": "Windows", + "osState": "Generalized", + "identifier": { + "publisher": "AzureWindowsBaseline", + "offer": "WindowsServer", + "sku": "2019-Datacenter" + }, + "recommended": { + "vCPUs": { + "min": 2, + "max": 8 + }, + "memory": { + "min": 16, + "max": 48 + } + }, + "hyperVGeneration": "V1" + }, + "dependsOn": [ + "Microsoft.Compute/galleries/[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]" + ] + }, + { + "type": "Microsoft.VirtualMachineImages/imageTemplates", + "apiVersion": "2020-02-14", + "name": "Win2019_AzureWindowsBaseline_Template", + "location": "[resourceGroup().location]", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('templateIdentityName'))]": {} + } + }, + "properties": { + "buildTimeoutInMinutes": 60, + "vmProfile": { + "vmSize": "Standard_D2_v3", + "osDiskSizeGB": 127 + }, + "source": { + "type": "PlatformImage", + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "customize": [ + { + "type": "WindowsUpdate", + "searchCriteria": "IsInstalled=0", + "filters": [ + "exclude:$_.Title -like '*Preview*'", + "include:$true" + ], + "updateLimit": 40 + }, + { + "type": "PowerShell", + "name": "AzureWindowsBaseline", + "runElevated": true, + "scriptUri": "[uri(parameters('_artifactsLocation'), format('{0}{1}', parameters('customizerScriptName'), parameters('_artifactsLocationSasToken')))]" + } + ], + "distribute": [ + { + "type": "SharedImage", + "galleryImageId": "Microsoft.Compute/galleries/images/[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]/Win2019_AzureWindowsBaseline_Definition", + "runOutputName": "Win2019_AzureWindowsBaseline_CustomImage", + "replicationRegions": [ + "centralus", + "eastus2", + "westus2", + "northeurope", + "westeurope" + ] + } + ] + }, + "dependsOn": [ + "Microsoft.Compute/galleries/images/[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]/Win2019_AzureWindowsBaseline_Definition", + "Microsoft.ManagedIdentity/userAssignedIdentities/[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]" + ] + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "Image_template_build", + "location": "[resourceGroup().location]", + "kind": "AzurePowerShell", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('templateIdentityName'))]": {} + } + }, + "properties": { + "forceUpdateTag": "[newGuid()]", + "azPowerShellVersion": "6.2", + "scriptContent": "[format('Invoke-AzResourceAction -ResourceName \"{0}\" -ResourceGroupName \"{1}\" -ResourceType \"Microsoft.VirtualMachineImages/imageTemplates\" -ApiVersion \"2020-02-14\" -Action Run -Force', parameters('imageTemplateName'), resourceGroup().name)]", + "timeout": "PT1H", + "cleanupPreference": "OnSuccess", + "retentionInterval": "P1D" + }, + "dependsOn": [ + "Microsoft.VirtualMachineImages/imageTemplates/Win2019_AzureWindowsBaseline_Template", + "Microsoft.ManagedIdentity/userAssignedIdentities/[substring(format('ImageGallery_{0}', guid(resourceGroup().id)), 0, 21)]", + "Microsoft.Authorization/roleAssignments/[guid(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('templateIdentityName')), resourceGroup().id, resourceId('Microsoft.Authorization/roleDefinitions', parameters('templateIdentityRoleDefinitionName')))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT717 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT717 new file mode 100644 index 0000000..4734e4e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT717 @@ -0,0 +1,259 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/integrationpatterns-messagerouter-logicapp/azuredeploy.json", + "/demos/integrationpatterns-messagerouter-logicapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962899467, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/integrationpatterns-messagerouter-logicapp/azuredeploy.json", + "/demos/integrationpatterns-messagerouter-logicapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT717", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.logic/workflows" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT717", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "logicAppName": { + "type": "string", + "defaultValue": "MessageRouter", + "metadata": { + "description": "The name for the logic app." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Logic/workflows", + "name": "MessageRouter", + "apiVersion": "2019-05-01", + "location": "[resourceGroup().location]", + "properties": { + "state": "Enabled", + "definition": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "triggers": { + "manual": { + "type": "Request", + "kind": "Http", + "inputs": { + "schema": { + "properties": { + "Address": { + "type": "string" + }, + "City": { + "type": "string" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "actions": { + "Initialize_variable": { + "type": "InitializeVariable", + "inputs": { + "variables": [ + { + "name": "ResultURL", + "type": "string" + } + ] + } + }, + "Response": { + "runAfter": { + "Switch": [ + "Succeeded" + ] + }, + "type": "Response", + "inputs": { + "body": { + "Response": "Message can be seen at @{variables('ResultURL')}" + }, + "statusCode": 200 + } + }, + "Switch": { + "runAfter": { + "Initialize_variable": [ + "Succeeded" + ] + }, + "cases": { + "Amsterdam": { + "case": "Amsterdam", + "actions": { + "Send_To_Amsterdam": { + "type": "Http", + "inputs": { + "body": { + "description": "Uploaded from Logic Apps", + "files": { + "Amsterdam.txt": { + "content": "Name: @{triggerBody()?['Name']}\nAddress: @{triggerBody()?['Address']}\nCity: @{triggerBody()?['City']}" + } + }, + "public": true + }, + "method": "POST", + "uri": "https://api.github.com/gists" + } + }, + "Set_Amsterdam_Result": { + "runAfter": { + "Send_To_Amsterdam": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "ResultURL", + "value": "@{body('Send_To_Amsterdam')?['html_url']}" + } + } + } + }, + "New_York": { + "case": "New York", + "actions": { + "Send_To_New_York": { + "type": "Http", + "inputs": { + "body": { + "description": "Uploaded from Logic Apps", + "files": { + "New York.txt": { + "content": "Name: @{triggerBody()?['Name']}\nAddress: @{triggerBody()?['Address']}\nCity: @{triggerBody()?['City']}" + } + }, + "public": true + }, + "method": "POST", + "uri": "https://api.github.com/gists" + } + }, + "Set_New_York_Result": { + "runAfter": { + "Send_To_New_York": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "ResultURL", + "value": "@{body('Send_To_New_York')?['html_url']}" + } + } + } + }, + "Paris": { + "case": "Paris", + "actions": { + "Send_To_Paris": { + "type": "Http", + "inputs": { + "body": { + "description": "Uploaded from Logic Apps", + "files": { + "Paris.txt": { + "content": "Name: @{triggerBody()?['Name']}\nAddress: @{triggerBody()?['Address']}\nCity: @{triggerBody()?['City']}" + } + }, + "public": true + }, + "method": "POST", + "uri": "https://api.github.com/gists" + } + }, + "Set_Paris_Result": { + "runAfter": { + "Send_To_Paris": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "ResultURL", + "value": "@{body('Send_To_Paris')?['html_url']}" + } + } + } + } + }, + "default": { + "actions": { + "Send_To_Other_Cities": { + "type": "Http", + "inputs": { + "body": { + "description": "Uploaded from Logic Apps", + "files": { + "Other Cities.txt": { + "content": "Name: @{triggerBody()?['Name']}\nAddress: @{triggerBody()?['Address']}\nCity: @{triggerBody()?['City']}" + } + }, + "public": true + }, + "method": "POST", + "uri": "https://api.github.com/gists" + } + }, + "Set_Other_Cities_Result": { + "runAfter": { + "Send_To_Other_Cities": [ + "Succeeded" + ] + }, + "type": "SetVariable", + "inputs": { + "name": "ResultURL", + "value": "@{body('Send_To_Other_Cities')?['html_url']}" + } + } + } + }, + "expression": "@triggerBody()?['City']", + "type": "Switch" + } + }, + "\uff04schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT718 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT718 new file mode 100644 index 0000000..5698cf2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT718 @@ -0,0 +1,236 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/integrationpatterns-messagerouter-servicebus/azuredeploy.json", + "/demos/integrationpatterns-messagerouter-servicebus/azuredeploy.parameters.json" + ], + "timestamp": 1642962899478, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/integrationpatterns-messagerouter-servicebus/azuredeploy.json", + "/demos/integrationpatterns-messagerouter-servicebus/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT718", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.servicebus/namespaces", + "microsoft.servicebus/namespaces/topics", + "microsoft.servicebus/namespaces/topics/subscriptions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT718", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "IncomingDeliveryRequestsTopicname": { + "type": "string", + "defaultValue": "incomingdeliveryrequests", + "metadata": { + "description": "The name for the Service Bus Topic." + } + }, + "MessageRouterServiceBusnamespacePrefix": { + "type": "string", + "defaultValue": "MessageRouterServiceBus", + "metadata": { + "description": "The prefix of the name for the Service Bus namespace, will be appended with a unique string." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "serviceBusnamespacename": "[concat(parameters('MessageRouterServiceBusnamespacePrefix'), '-', uniquestring(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.ServiceBus/namespaces", + "apiVersion": "2018-01-01-preview", + "name": "[variables('serviceBusnamespacename')]", + "location": "[resourceGroup().location]", + "kind": "Messaging", + "sku": { + "name": "Standard", + "capacity": 1, + "tier": "Standard" + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics", + "apiVersion": "2015-08-01", + "name": "[concat(variables('serviceBusnamespacename'), '/', parameters('IncomingDeliveryRequestsTopicname'))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusnamespacename'))]" + ], + "properties": { + "defaultMessageTimeToLive": "14.00:00:00", + "enableBatchedOperations": false, + "enableExpress": false, + "enablePartitioning": true, + "enableSubscriptionPartitioning": false, + "filteringMessagesBeforePublishing": false, + "isAnonymousAccessible": false, + "isExpress": false, + "maxSizeInMegabytes": 1024, + "requiresDuplicateDetection": false, + "sizeInBytes": 0, + "supportOrdering": false + } + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions", + "apiVersion": "2015-08-01", + "name": "[concat(variables('serviceBusnamespacename'), '/', parameters('IncomingDeliveryRequestsTopicname'), '/HighPriority')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusnamespacename'))]", + "[resourceId('Microsoft.ServiceBus/namespaces/topics', variables('serviceBusnamespacename'), parameters('IncomingDeliveryRequestsTopicname'))]" + ], + "properties": { + "deadLetteringOnFilterEvaluationExceptions": false, + "deadLetteringOnMessageExpiration": true, + "defaultMessageTimeToLive": "14.00:00:00", + "enableBatchedOperations": false, + "lockDuration": "00:00:30", + "maxDeliveryCount": 10, + "requiresSession": false + }, + "resources": [ + { + "type": "Rules", + "apiVersion": "2015-08-01", + "name": "HighPriority", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions', variables('serviceBusnamespacename'), parameters('IncomingDeliveryRequestsTopicname'), 'HighPriority')]" + ], + "properties": { + "filter": { + "sqlExpression": "Priority='High'" + } + } + } + ] + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions", + "apiVersion": "2015-08-01", + "name": "[concat(variables('serviceBusnamespacename'), '/', parameters('IncomingDeliveryRequestsTopicname'), '/Log')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusnamespacename'))]", + "[resourceId('Microsoft.ServiceBus/namespaces/topics', variables('serviceBusnamespacename'), parameters('IncomingDeliveryRequestsTopicname'))]" + ], + "properties": { + "deadLetteringOnFilterEvaluationExceptions": false, + "deadLetteringOnMessageExpiration": true, + "defaultMessageTimeToLive": "14.00:00:00", + "enableBatchedOperations": false, + "lockDuration": "00:00:30", + "maxDeliveryCount": 10, + "requiresSession": false + }, + "resources": [ + { + "type": "Rules", + "apiVersion": "2015-08-01", + "name": "LogAll", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions', variables('serviceBusnamespacename'), parameters('IncomingDeliveryRequestsTopicname'), 'Log')]" + ], + "properties": { + "filter": { + "sqlExpression": "1=1" + } + } + } + ] + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions", + "apiVersion": "2015-08-01", + "name": "[concat(variables('serviceBusnamespacename'), '/', parameters('IncomingDeliveryRequestsTopicname'), '/LowPriority')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusnamespacename'))]", + "[resourceId('Microsoft.ServiceBus/namespaces/topics', variables('serviceBusnamespacename'), parameters('IncomingDeliveryRequestsTopicname'))]" + ], + "properties": { + "deadLetteringOnFilterEvaluationExceptions": false, + "deadLetteringOnMessageExpiration": true, + "defaultMessageTimeToLive": "14.00:00:00", + "enableBatchedOperations": false, + "lockDuration": "00:00:30", + "maxDeliveryCount": 10, + "requiresSession": false + }, + "resources": [ + { + "type": "Rules", + "apiVersion": "2015-08-01", + "name": "LowPriority", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions', variables('serviceBusnamespacename'), parameters('IncomingDeliveryRequestsTopicname'), 'LowPriority')]" + ], + "properties": { + "filter": { + "sqlExpression": "Priority='Low'" + } + } + } + ] + }, + { + "type": "Microsoft.ServiceBus/namespaces/topics/subscriptions", + "apiVersion": "2015-08-01", + "name": "[concat(variables('serviceBusnamespacename'), '/', parameters('IncomingDeliveryRequestsTopicname'), '/NormalPriority')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces', variables('serviceBusnamespacename'))]", + "[resourceId('Microsoft.ServiceBus/namespaces/topics', variables('serviceBusnamespacename'), parameters('IncomingDeliveryRequestsTopicname'))]" + ], + "properties": { + "deadLetteringOnFilterEvaluationExceptions": false, + "deadLetteringOnMessageExpiration": true, + "defaultMessageTimeToLive": "14.00:00:00", + "enableBatchedOperations": false, + "lockDuration": "00:00:30", + "maxDeliveryCount": 10, + "requiresSession": false + }, + "resources": [ + { + "type": "Rules", + "apiVersion": "2015-08-01", + "name": "NormalPriority", + "dependsOn": [ + "[resourceId('Microsoft.ServiceBus/namespaces/topics/subscriptions', variables('serviceBusnamespacename'), parameters('IncomingDeliveryRequestsTopicname'), 'NormalPriority')]" + ], + "properties": { + "filter": { + "sqlExpression": "Priority='Normal'" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT719 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT719 new file mode 100644 index 0000000..60aa97a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT719 @@ -0,0 +1,431 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ipv6-in-vnet/azuredeploy.json", + "/demos/ipv6-in-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962899503, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ipv6-in-vnet/azuredeploy.json", + "/demos/ipv6-in-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT719", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT719", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM. Exclusion list: 'admin','administrator'" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "description" + } + } + }, + "variables": { + "vnetv4AddressRange": "10.0.0.0/16", + "vnetv6AddressRange": "ace:cab:deca::/48", + "subnetv4AddressRange": "10.0.0.0/24", + "subnetv6AddressRange": "ace:cab:deca:deed::/64", + "subnetName": "DualStackSubnet", + "newStorageAccountName": "[concat('st', uniqueString(resourceGroup().id))]", + "availabilitySetName": "myavset", + "subnet-id": "Microsoft.Network/virtualNetworks/subnets/VNET/DualStackSubnet", + "numberOfInstances": 2, + "vmName": "DsVM", + "publicipName": "RDPpublicIp", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "imageSku": "2019-Datacenter" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "RDPpublicIpcopyindex()", + "copy": { + "name": "publicIpLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "lbpublicip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "lbpublicip-v6", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv6" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myavset", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": "2", + "platformUpdateDomainCount": "5" + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "name": "loadBalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/lbpublicip", + "Microsoft.Network/publicIPAddresses/lbpublicip-v6" + ], + "properties": { + "frontendIpConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lbpublicip" + } + } + }, + { + "name": "LBFE-v6", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lbpublicip-v6" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBAP" + }, + { + "name": "LBBAP-v6" + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15 + }, + "name": "lbrule" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancer/LBFE-v6" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP-v6" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80 + }, + "name": "lbrule-v6" + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16", + "ace:cab:deca::/48" + ] + }, + "subnets": [ + { + "name": "DualStackSubnet", + "properties": { + "addressPrefixes": [ + "10.0.0.0/24", + "ace:cab:deca:deed::/64" + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "dsNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-HTTP-in", + "properties": { + "description": "Allow HTTP", + "protocol": "TCP", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1001, + "direction": "Inbound" + } + }, + { + "name": "allow-all-out", + "properties": { + "description": "Allow out All", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1002, + "direction": "Outbound" + } + }, + { + "name": "allow-RDP-in", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1003, + "direction": "Inbound" + } + }, + { + "name": "allow-MyIpv6App-out", + "properties": { + "description": "Allow My IPv6 App", + "protocol": "Tcp", + "sourcePortRange": "33819-33829", + "destinationPortRange": "5000-6000", + "sourceAddressPrefix": "ace:cab:deca:deed::/64", + "destinationAddressPrefixes": [ + "cab:cab:aaaa:bbbb::/64", + "cab:cab:1111:2222::/64" + ], + "access": "Allow", + "priority": 1004, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "name": "v6routeTable", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "routes": [ + { + "name": "v6route", + "properties": { + "addressPrefix": "cab:cab::/96", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "ace:cab:deca:f00d::1" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "DsVMcopyindex()", + "copy": { + "name": "netIntLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/VNET", + "Microsoft.Network/networkSecurityGroups/dsNsg", + "Microsoft.Network/loadBalancers/loadBalancer", + "publicIpLoop" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dsNsg" + }, + "ipConfigurations": [ + { + "name": "ipconfig-v4", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv4", + "primary": true, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/RDPpublicIpcopyindex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/DualStackSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + } + ] + } + }, + { + "name": "ipconfig-v6", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv6", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/DualStackSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP-v6" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "DsVMcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts',variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Compute/availabilitySets',variables('availabilitySetName'))]", + "netIntLoop" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myavset" + }, + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "DsVMcopyindex()", + "adminUsername": "adminUserName", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/DsVMcopyindex()" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT72 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT72 new file mode 100644 index 0000000..48df4a6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT72 @@ -0,0 +1,1478 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/azuredeploy.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/azuredeploy.parameters.json" + ], + "timestamp": 1642962885308, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/datameer-trend-chef-riskanalysis/azuredeploy.json", + "/application-workloads/chef/datameer-trend-chef-riskanalysis/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT72", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT72", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "westus", + "allowedValues": [ + "westus", + "eastus", + "centralus" + ], + "metadata": { + "description": "Location where all the resources deploy" + }, + "value": "westus" + }, + "hdiclusterType": { + "type": "string", + "defaultValue": "hadoop", + "allowedValues": [ + "hadoop", + "hbase", + "storm", + "spark" + ], + "metadata": { + "description": "The type of the HDInsight cluster to create." + }, + "value": "hadoop" + }, + "hdiclusterName": { + "type": "string", + "defaultValue": "datameerhdi", + "metadata": { + "description": "The name of the HDInsight cluster to create." + }, + "value": "datameerhdi" + }, + "hdiclusterLoginUserName": { + "type": "string", + "defaultValue": "demo", + "metadata": { + "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards." + }, + "value": "demo" + }, + "hdiclusterLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 8 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "hdisshUserName": { + "type": "string", + "defaultValue": "demo", + "metadata": { + "description": "These credentials can be used to remotely access the cluster." + }, + "value": "demo" + }, + "hdisshPassword": { + "type": "securestring", + "metadata": { + "description": "The password must be at least 8 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter." + }, + "value": "GEN-PASSWORD" + }, + "hdistorageAccount": { + "type": "string", + "defaultValue": "hadoopstgacc", + "metadata": { + "description": "The name of the storage account to use" + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on all Linux Virtual Machines. SSH key is recommended." + } + }, + "vmAdminNameTrendDSM": { + "type": "string", + "defaultValue": "demo", + "metadata": { + "description": "TrendMicro Deep Security Manager Virtual Machine admin username" + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrPublicKeyTrendDSM": { + "type": "securestring", + "metadata": { + "description": "TrendMicro Deep Security Manager Virtual Machine admin password or SSH public key. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSizeTrendDSM": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3" + ], + "metadata": { + "description": "TrendMicro Deep Security Manager Virtual Machine size" + }, + "value": "Standard_D2_v3" + }, + "dsmAdminName": { + "type": "string", + "defaultValue": "demo", + "metadata": { + "description": "TrendMicro Deep Security Manager application username (To login to Trend DSM from browser)" + }, + "value": "demo" + }, + "dsmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "TrendMicro Deep Security Manager application password (To login to Trend DSM from browser)" + }, + "value": "GEN-PASSWORD" + }, + "dbName": { + "type": "string", + "defaultValue": "dsm", + "metadata": { + "description": "TrendMicro Deep Security Manager database name" + }, + "value": "dsm" + }, + "dbAdminName": { + "type": "string", + "defaultValue": "demo", + "metadata": { + "description": "TrendMicro Deep Security Manager database admin user" + }, + "value": "demo" + }, + "dbAdminPassword": { + "type": "securestring", + "metadata": { + "description": "TrendMicro Deep Security Manager database admin password" + }, + "value": "GEN-PASSWORD" + }, + "publicIPDomainNameLabelTrendDSM": { + "type": "string", + "defaultValue": "publicdnstrenddsm", + "metadata": { + "description": "TrendMicro Deep Security Manager unique public DNS prefix" + }, + "value": "GEN-UNIQUE" + }, + "managerPortTrendDSM": { + "type": "string", + "defaultValue": "443", + "metadata": { + "description": "TrendMicro Deep Security Manager management port" + }, + "value": "443" + }, + "heartbeatPortTrendDSM": { + "type": "string", + "defaultValue": "4120", + "metadata": { + "description": "TrendMicro Deep Security Manager heartbeat port" + }, + "value": "4120" + }, + "vmAdminUsernameOrchServer": { + "defaultValue": "demo", + "type": "string", + "metadata": { + "description": "Orchestrator Server Virtual Machine admin username" + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrPublicKeyOrchServer": { + "type": "securestring", + "metadata": { + "description": "Orchestrator Server Virtual Machine admin password or SSH public key. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "publicIPDomainNameLabelOrchServer": { + "defaultValue": "publicdnsorcserver", + "type": "string", + "metadata": { + "description": "Orchestrator Server unique public DNS prefix" + }, + "value": "GEN-UNIQUE" + }, + "vmAdminUsernameChefServer": { + "defaultValue": "demo", + "type": "string", + "metadata": { + "description": "Chef Server Virtual Machine admin username" + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrPublicKeyChefServer": { + "type": "securestring", + "metadata": { + "description": "Chef Server Virtual Machine admin password or SSH public key. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSizeChefServer": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3" + ], + "metadata": { + "description": "Chef Server Virtual Machine size" + }, + "value": "Standard_D2_v3" + }, + "publicIPDomainNameLabelChefServer": { + "type": "string", + "defaultValue": "publicdnschefserver", + "metadata": { + "description": "Chef Server unique public DNS prefix" + }, + "value": "GEN-UNIQUE" + }, + "chefUserName": { + "type": "string", + "defaultValue": "chefuser", + "metadata": { + "description": "Chef user name" + }, + "value": "chefuser" + }, + "chefUserFirstName": { + "type": "string", + "defaultValue": "chef", + "metadata": { + "description": "Chef user first name" + }, + "value": "chef" + }, + "chefUserLastName": { + "type": "string", + "defaultValue": "user", + "metadata": { + "description": "Chef user last name" + }, + "value": "user" + }, + "chefUserEmail": { + "type": "string", + "defaultValue": "chef@noone.com", + "metadata": { + "description": "Chef user email" + }, + "value": "chef@noone.com" + }, + "chefUserPassword": { + "type": "securestring", + "metadata": { + "description": "Chef user password" + }, + "value": "GEN-PASSWORD" + }, + "chefOrgShortName": { + "type": "string", + "defaultValue": "ct", + "metadata": { + "description": "Chef org short name" + }, + "value": "ct" + }, + "chefOrgFullName": { + "type": "string", + "defaultValue": "Chef Test Inc", + "metadata": { + "description": "Chef Org full name" + }, + "value": "Chef Test Inc" + }, + "adminUsernameChefWorkstation": { + "type": "string", + "defaultValue": "demo", + "metadata": { + "description": "Chef Workstation Virtual Machine admin username" + }, + "value": "demo" + }, + "adminPasswordChefWorkstation": { + "type": "securestring", + "metadata": { + "description": "Chef Workstation Virtual Machine admin password" + }, + "value": "GEN-PASSWORD" + }, + "vmSizeChefWorkstation": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3" + ], + "metadata": { + "description": "Chef Workstation Virtual Machine size" + }, + "value": "Standard_D2_v3" + }, + "publicIPDomainNameLabelChefWorkstation": { + "type": "string", + "defaultValue": "publicdnschefws", + "metadata": { + "description": "Chef Workstation unique public DNS prefix" + }, + "value": "GEN-UNIQUE" + }, + "adminUsernameDSAgentWindows": { + "type": "string", + "defaultValue": "demo", + "metadata": { + "description": "Windows Deep Security Agent Virtual Machine admin username" + }, + "value": "demo" + }, + "adminPasswordDSAgentWindows": { + "type": "securestring", + "metadata": { + "description": "Windows Deep Security Agent Virtual Machine admin password" + }, + "value": "GEN-PASSWORD" + }, + "publicIPDomainNameLabelDSAgentWindows": { + "type": "string", + "defaultValue": "dnsdsagwin", + "metadata": { + "description": "Windows Deep Security Agent unique public DNS prefix" + }, + "value": "GEN-UNIQUE" + }, + "windowsvmcount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Count of Windows Deep Security Agents to deploy" + }, + "value": 1 + }, + "adminUsernameDSAgent": { + "type": "string", + "defaultValue": "demo", + "metadata": { + "description": "Linux Deep Security Agent Virtual Machine admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordOrPublicKeyDSAgent": { + "type": "securestring", + "metadata": { + "description": "Linux Deep Security Agent Virtual Machine admin password or SSH public key. SSH key recommended" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "publicIPDomainNameLabelDSAgent": { + "type": "string", + "defaultValue": "dnsdsaglinux", + "metadata": { + "description": "Linux Deep Security Agent unique public DNS prefix" + }, + "value": "GEN-UNIQUE" + }, + "linuxvmcount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Count of Linux Deep Security Agents to deploy" + }, + "value": 1 + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "Artifactslocation" + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/chef/datameer-trend-chef-riskanalysis/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Reserved for deploying using Visual Studio. Please keep it as an empty string" + } + } + }, + "variables": { + "location": "westus", + "vmNameTrendDSM": "trendMicroDSM", + "vmNameChefServer": "chefServer", + "vmNameChefWorkstation": "chefWS", + "vmNameDSAWindows": "dsawindows", + "vmNameDSAgent": "dsalinux", + "vmNameOrchServer": "orchestratorServer", + "nicNameTrendDSM": "trendMicroDSM-nic", + "networkInterfaceNameChefServer": "chefServer-nic", + "networkInterfaceNameOrchServer": "orchestratorServer-nic", + "securityGroupNameTrendDSM": "trendMicroDSM-nic-nsg", + "networkSecurityGroupNameChefServer": "chefServer-nic-nsg", + "networkSecurityGroupNameOrchServer": "orchestratorServer-nic-nsg", + "virtualNetworkName": "datameerP2PVnet", + "vnetAddressPrefix": "10.7.0.0/16", + "subnet1Name": "trendMicroDSMsubnet", + "subnet1Prefix": "10.7.0.0/24", + "subnet2Name": "chefServersubnet", + "subnet2Prefix": "10.7.1.0/24", + "subnet3StartAddress": "10.7.2.5", + "subnet4Name": "vmsubnet", + "subnet4Prefix": "10.7.3.0/24", + "subnet3Name": "(datameerHDInsightCluster).clusterNamesubnet", + "subnet3Prefix": "10.7.4.0/24", + "publicIPAddressType": "Dynamic", + "publicIPAddressNameTrendDSM": "publicIPTrendDSM", + "publicIPAddressNameChefServer": "publicIPChefServer", + "vnetID": "Microsoft.Network/virtualNetworks/datameerP2PVnet", + "subnet1Ref": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/trendMicroDSMsubnet", + "subnet2Ref": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/chefServersubnet", + "subnet3Ref": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/(datameerHDInsightCluster).clusterNamesubnet", + "subnet4Ref": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/vmsubnet", + "storageAccountName": "[tolower(concat(trim(substring(concat(variables('vmNameTrendDSM'),' '),0,6)),uniquestring(resourceGroup().id)))]", + "storageAccountType": "Standard_LRS", + "vmStorageAccountContainerName": "vhds", + "newsqlServerName": "[tolower(concat(variables('vmNameTrendDSM'),uniquestring(resourceGroup().id),'-sql'))]", + "storage-api-version": "2015-06-15", + "deployment-api-version": "2015-11-01", + "deployment-api-version2": "2015-01-01", + "network-api-version": "2015-06-15", + "compute-api-version": "2015-06-15", + "automation-api-version": "2015-01-01-preview", + "automation-api-version2": "2015-10-31", + "publisherTrendDSM": "trendmicro", + "publisherChefServer": "chef-software", + "licenseMode": "10", + "databaseOption": "new", + "offerChoosedTrendDSM": "concat(offer, parameters(vmSizeTrendDSM))", + "offerChoosedChefServer": "concat(offer, parameters(vmSizeChefServer))", + "offerStandard_D2_v2": { + "vmSize": "Standard_D2_v3", + "vmSku": "dxxn25d2v2", + "product": "deep-security-vm" + }, + "offerStandard_D3_v2": { + "vmSize": "Standard_D4_v3", + "vmSku": "dxxn50d3v2", + "product": "deep-security-vm" + }, + "offerStandard_D4_v2": { + "vmSize": "Standard_D8_v3", + "vmSku": "dxxn100d4v2", + "product": "deep-security-vm" + }, + "offerStandard_D5_v2": { + "vmSize": "Standard_D16_v3", + "vmSku": "dxxn200d5v2", + "product": "deep-security-vm" + }, + "offerBYOL": { + "vmSize": "Standard_D2_v3", + "vmSku": "dxxnbyol", + "product": "deep-security-vm-byol" + }, + "offerStandard_D2": { + "vmSize": "Standard_D2_v3", + "vmSku": "azure_marketplace_25", + "product": "chef-server" + }, + "availabilitySetSettings": { + "name": "datameerP2PVnet-aset", + "count": 1, + "fdCount": 3, + "udCount": 5 + }, + "sshFrom": "0.0.0.0/0", + "forwardedDataFrom": "0.0.0.0/0", + "emptyTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/empty-resources.json', parameters('_artifactsLocationSasToken')))]", + "availabilitySetCount": 1, + "imagePublisherWindows": "MicrosoftWindowsServer", + "imageOfferWindows": "WindowsServer", + "imagePublisherLinux": "Canonical", + "imageOfferLinux": "UbuntuServer", + "TenantIdentifier": "NA", + "TenantActivationPassword": "NA", + "tagvalues": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + }, + "existingSQLServerName": "", + "networkExists": "new", + "ManagerAddress": "GEN-UNIQUE[uniquestring(resourceGroup().id)].westus.cloudapp.azure.com", + "udpPort": "5005", + "chefServerScriptUrl": "[uri(parameters('_artifactsLocation'), concat('scripts/chefserver.sh', parameters('_artifactsLocationSasToken')))]", + "chefprefix": "chef", + "vmSizeDSAWindows": "Standard_D2_v3", + "windowsOSVersion": "2012-R2-Datacenter", + "vmSizeDSAgent": "Standard_D2_v3", + "ubuntuOSVersion": "14.04.2-LTS", + "uniqueString": "[uniquestring(resourceGroup().id)]", + "keyName": "validatorkey", + "resourcegroupName": "[resourceGroup().name]", + "kmServerUrl": "GEN-UNIQUE[uniquestring(resourceGroup().id)].westus.cloudapp.azure.com", + "chef_node_name": "chefnodedsagent", + "chef_server_url": "https://GEN-UNIQUE[uniquestring(resourceGroup().id)].westus.cloudapp.azure.com/organizations/ct", + "validation_client_name": "ct-validator", + "validation_key_format": "base64encoded", + "runlist": "recipe[trendmicro]", + "vmSizeOrcServer": "Standard_D2_v3", + "orcServerubuntuOSVersion": "14.04.2-LTS", + "installOrchTemplateurl": "[uri(parameters('_artifactsLocation'), concat('nested/orchestrator-server-setup-trend.json', parameters('_artifactsLocationSasToken')))]", + "chefnodeCustomScripturl": "[uri(parameters('_artifactsLocation'), concat('scripts/p2pchefnodebootstrap.sh', parameters('_artifactsLocationSasToken')))]", + "vnetstorageSciptrul": "[uri(parameters('_artifactsLocation'), concat('nested/trendp2p-vnetstorage.json', parameters('_artifactsLocationSasToken')))]", + "datameerHDInsightCluster": { + "defaultApiVersion": "2015-05-01-preview", + "clusterName": "[tolower(concat(trim(substring(concat(parameters('hdiclusterName'),' '),0,6)),uniquestring(resourceGroup().id)))]", + "standaloneTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/datameer-hdinsight.json', parameters('_artifactsLocationSasToken')))]", + "clusterType": "hadoop", + "clusterLoginUserName": "demo", + "clusterLoginPassword": "GEN-PASSWORD", + "sshUserName": "demo", + "sshPassword": "GEN-PASSWORD", + "storageAccount": "[tolower(concat(trim(substring(concat(parameters('hdistorageAccount'),' '),0,6)),uniquestring(resourceGroup().id)))]" + }, + "datameerTags": { + "type": "object", + "provider": "ED5CBF45-2AA4-4408-B52D-1C76DFCA0BD7" + }, + "trendmicroTags": { + "type": "object", + "provider": "F0253A01-8156-4D41-BD91-E182158D4972" + }, + "chefSoftwareTags": { + "type": "object", + "provider": "33194f91-eb5f-4110-827a-e95f640a9e46" + }, + "quickstartTags": { + "type": "object", + "name": "datameer-trend-chef-riskanalysis" + } + }, + "resources": [ + { + "comments": "Common", + "name": "vnetstorage", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/trendp2p-vnetstorage.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageAccountName": { + "value": "[tolower(concat(trim(substring(concat(variables('vmNameTrendDSM'),' '),0,6)),uniquestring(resourceGroup().id)))]" + }, + "storage-api-version": { + "value": "2015-06-15" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "location": { + "value": "westus" + }, + "network-api-version": { + "value": "2015-06-15" + }, + "virtualNetworkName": { + "value": "datameerP2PVnet" + }, + "vnetAddressPrefix": { + "value": "10.7.0.0/16" + }, + "subnet1Name": { + "value": "trendMicroDSMsubnet" + }, + "subnet1Prefix": { + "value": "10.7.0.0/24" + }, + "subnet2Name": { + "value": "chefServersubnet" + }, + "subnet2Prefix": { + "value": "10.7.1.0/24" + }, + "subnet3Name": { + "value": "(datameerHDInsightCluster).clusterNamesubnet" + }, + "subnet3Prefix": { + "value": "10.7.4.0/24" + }, + "subnet4Name": { + "value": "vmsubnet" + }, + "subnet4Prefix": { + "value": "10.7.3.0/24" + }, + "tagvalues": { + "value": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "availabilitySetSettings": { + "value": { + "name": "datameerP2PVnet-aset", + "count": 1, + "fdCount": 3, + "udCount": 5 + } + }, + "datameerTags": { + "value": { + "type": "object", + "provider": "ED5CBF45-2AA4-4408-B52D-1C76DFCA0BD7" + } + }, + "trendmicroTags": { + "value": { + "type": "object", + "provider": "F0253A01-8156-4D41-BD91-E182158D4972" + } + }, + "chefSoftwareTags": { + "value": { + "type": "object", + "provider": "33194f91-eb5f-4110-827a-e95f640a9e46" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "datameer-trend-chef-riskanalysis" + } + } + } + } + }, + { + "name": "trendmicrodsm", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments/vnetstorage" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/trendp2p-trenddsm.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageAccountName": { + "value": "[tolower(concat(trim(substring(concat(variables('vmNameTrendDSM'),' '),0,6)),uniquestring(resourceGroup().id)))]" + }, + "vmStorageAccountContainerName": { + "value": "vhds" + }, + "location": { + "value": "westus" + }, + "network-api-version": { + "value": "2015-06-15" + }, + "compute-api-version": { + "value": "2015-06-15" + }, + "tagvalues": { + "value": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "publicIPDomainNameLabelTrendDSM": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "publicIPAddressType": { + "value": "Dynamic" + }, + "publicIPAddressNameTrendDSM": { + "value": "publicIPTrendDSM" + }, + "nicNameTrendDSM": { + "value": "trendMicroDSM-nic" + }, + "virtualNetworkName": { + "value": "datameerP2PVnet" + }, + "subnet1Ref": { + "value": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/trendMicroDSMsubnet" + }, + "securityGroupNameTrendDSM": { + "value": "trendMicroDSM-nic-nsg" + }, + "managerPortTrendDSM": { + "value": "443" + }, + "heartbeatPortTrendDSM": { + "value": "4120" + }, + "vmNameTrendDSM": { + "value": "trendMicroDSM" + }, + "publisherTrendDSM": { + "value": "trendmicro" + }, + "offerChoosedTrendDSM": { + "value": "concat(offer, parameters(vmSizeTrendDSM))" + }, + "vmAdminNameTrendDSM": { + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrPublicKeyTrendDSM": { + "value": "GEN-SSH-PUB-KEY" + }, + "linuxConfigurationChoosenTrendDSM": { + "value": "linuxConfigurationChoosenTrendDSM" + }, + "deployment-api-version": { + "value": "2015-11-01" + }, + "baseUrl": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/chef/datameer-trend-chef-riskanalysis/" + }, + "databaseOption": { + "value": "new" + }, + "newsqlServerName": { + "value": "[tolower(concat(variables('vmNameTrendDSM'),uniquestring(resourceGroup().id),'-sql'))]" + }, + "existingSQLServerName": { + "value": "" + }, + "dbAdminName": { + "value": "demo" + }, + "dbAdminPassword": { + "value": "GEN-PASSWORD" + }, + "dbName": { + "value": "dsm" + }, + "dsmAdminName": { + "value": "demo" + }, + "dsmAdminPassword": { + "value": "GEN-PASSWORD" + }, + "datameerTags": { + "value": { + "type": "object", + "provider": "ED5CBF45-2AA4-4408-B52D-1C76DFCA0BD7" + } + }, + "trendmicroTags": { + "value": { + "type": "object", + "provider": "F0253A01-8156-4D41-BD91-E182158D4972" + } + }, + "chefSoftwareTags": { + "value": { + "type": "object", + "provider": "33194f91-eb5f-4110-827a-e95f640a9e46" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "datameer-trend-chef-riskanalysis" + } + }, + "authenticationType": { + "value": "sshPublicKey" + } + } + } + }, + { + "name": "orchestrator", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments/vnetstorage" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/trendp2p-orchestrator.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageAccountName": { + "value": "[tolower(concat(trim(substring(concat(variables('vmNameTrendDSM'),' '),0,6)),uniquestring(resourceGroup().id)))]" + }, + "location": { + "value": "westus" + }, + "network-api-version": { + "value": "2015-06-15" + }, + "compute-api-version": { + "value": "2015-06-15" + }, + "deployment-api-version2": { + "value": "2015-01-01" + }, + "tagvalues": { + "value": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "publicIPDomainNameLabelOrchServer": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "vmNameOrchServer": { + "value": "orchestratorServer" + }, + "networkInterfaceNameOrchServer": { + "value": "orchestratorServer-nic" + }, + "networkSecurityGroupNameOrchServer": { + "value": "orchestratorServer-nic-nsg" + }, + "vmAdminUsernameOrchServer": { + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrPublicKeyOrchServer": { + "value": "GEN-SSH-PUB-KEY" + }, + "vmStorageAccountContainerName": { + "value": "vhds" + }, + "imagePublisherLinux": { + "value": "Canonical" + }, + "imageOfferLinux": { + "value": "UbuntuServer" + }, + "orcServerubuntuOSVersion": { + "value": "14.04.2-LTS" + }, + "vmSizeOrcServer": { + "value": "Standard_D2_v3" + }, + "subnet2Ref": { + "value": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/chefServersubnet" + }, + "installOrchTemplateurl": { + "value": "[uri(parameters('_artifactsLocation'), concat('nested/orchestrator-server-setup-trend.json', parameters('_artifactsLocationSasToken')))]" + }, + "datameerTags": { + "value": { + "type": "object", + "provider": "ED5CBF45-2AA4-4408-B52D-1C76DFCA0BD7" + } + }, + "trendmicroTags": { + "value": { + "type": "object", + "provider": "F0253A01-8156-4D41-BD91-E182158D4972" + } + }, + "chefSoftwareTags": { + "value": { + "type": "object", + "provider": "33194f91-eb5f-4110-827a-e95f640a9e46" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "datameer-trend-chef-riskanalysis" + } + }, + "authenticationType": { + "value": "sshPublicKey" + } + } + } + }, + { + "name": "chefserver", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [ + "Microsoft.Resources/deployments/vnetstorage", + "Microsoft.Resources/deployments/trendmicrodsm", + "Microsoft.Resources/deployments/orchestrator" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/trendp2p-chefserver.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageAccountName": { + "value": "[tolower(concat(trim(substring(concat(variables('vmNameTrendDSM'),' '),0,6)),uniquestring(resourceGroup().id)))]" + }, + "publicIPAddressNameChefServer": { + "value": "publicIPChefServer" + }, + "publicIPDomainNameLabelChefServer": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "networkSecurityGroupNameChefServer": { + "value": "chefServer-nic-nsg" + }, + "networkInterfaceNameChefServer": { + "value": "chefServer-nic" + }, + "vmNameChefServer": { + "value": "chefServer" + }, + "vmAdminUsernameChefServer": { + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrPublicKeyChefServer": { + "value": "GEN-SSH-PUB-KEY" + }, + "vmStorageAccountContainerName": { + "value": "vhds" + }, + "location": { + "value": "westus" + }, + "network-api-version": { + "value": "2015-06-15" + }, + "compute-api-version": { + "value": "2015-06-15" + }, + "tagvalues": { + "value": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "publisherChefServer": { + "value": "chef-software" + }, + "offerChoosedChefServer": { + "value": "concat(offer, parameters(vmSizeChefServer))" + }, + "subnet2Ref": { + "value": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/chefServersubnet" + }, + "publicIPAddressType": { + "value": "Dynamic" + }, + "chefUserName": { + "value": "chefuser" + }, + "chefUserFirstName": { + "value": "chef" + }, + "chefUserLastName": { + "value": "user" + }, + "chefUserEmail": { + "value": "chef@noone.com" + }, + "chefUserPassword": { + "value": "GEN-PASSWORD" + }, + "chefOrgShortName": { + "value": "ct" + }, + "chefOrgFullName": { + "value": "Chef Test Inc" + }, + "chefServerScriptUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/chefserver.sh', parameters('_artifactsLocationSasToken')))]" + }, + "publicIPDomainNameLabelOrchServer": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "datameerTags": { + "value": { + "type": "object", + "provider": "ED5CBF45-2AA4-4408-B52D-1C76DFCA0BD7" + } + }, + "trendmicroTags": { + "value": { + "type": "object", + "provider": "F0253A01-8156-4D41-BD91-E182158D4972" + } + }, + "chefSoftwareTags": { + "value": { + "type": "object", + "provider": "33194f91-eb5f-4110-827a-e95f640a9e46" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "datameer-trend-chef-riskanalysis" + } + }, + "authenticationType": { + "value": "sshPublicKey" + } + } + } + }, + { + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "name": "dsagents", + "dependsOn": [ + "Microsoft.Resources/deployments/vnetstorage", + "Microsoft.Resources/deployments/trendmicrodsm", + "Microsoft.Resources/deployments/chefserver" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/trendp2p-dsagents.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "westus" + }, + "network-api-version": { + "value": "2015-06-15" + }, + "compute-api-version": { + "value": "2015-06-15" + }, + "vmNameDSAWindows": { + "value": "dsawindows" + }, + "vmSizeDSAWindows": { + "value": "Standard_D2_v3" + }, + "adminUsernameDSAgentWindows": { + "value": "demo" + }, + "adminPasswordDSAgentWindows": { + "value": "GEN-PASSWORD" + }, + "publicIPDomainNameLabelDSAgentWindows": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "windowsOSVersion": { + "value": "2012-R2-Datacenter" + }, + "windowsvmcount": { + "value": 1 + }, + "vmNameDSAgent": { + "value": "dsalinux" + }, + "vmSizeDSAgent": { + "value": "Standard_D2_v3" + }, + "adminUsernameDSAgent": { + "value": "GEN-UNIQUE" + }, + "adminPasswordOrPublicKeyDSAgent": { + "value": "GEN-SSH-PUB-KEY" + }, + "publicIPDomainNameLabelDSAgent": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "ubuntuOSVersion": { + "value": "14.04.2-LTS" + }, + "linuxvmcount": { + "value": 1 + }, + "ManagerAddress": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)].westus.cloudapp.azure.com" + }, + "subnet4Ref": { + "value": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/vmsubnet" + }, + "imagePublisherWindows": { + "value": "MicrosoftWindowsServer" + }, + "imageOfferWindows": { + "value": "WindowsServer" + }, + "imagePublisherLinux": { + "value": "Canonical" + }, + "imageOfferLinux": { + "value": "UbuntuServer" + }, + "storageAccountName": { + "value": "[tolower(concat(trim(substring(concat(variables('vmNameTrendDSM'),' '),0,6)),uniquestring(resourceGroup().id)))]" + }, + "vmStorageAccountContainerName": { + "value": "vhds" + }, + "ActivationPort": { + "value": "4120" + }, + "TenantIdentifier": { + "value": "NA" + }, + "TenantActivationPassword": { + "value": "NA" + }, + "tagvalues": { + "value": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "datameerTags": { + "value": { + "type": "object", + "provider": "ED5CBF45-2AA4-4408-B52D-1C76DFCA0BD7" + } + }, + "trendmicroTags": { + "value": { + "type": "object", + "provider": "F0253A01-8156-4D41-BD91-E182158D4972" + } + }, + "chefSoftwareTags": { + "value": { + "type": "object", + "provider": "33194f91-eb5f-4110-827a-e95f640a9e46" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "datameer-trend-chef-riskanalysis" + } + }, + "authenticationType": { + "value": "sshPublicKey" + } + } + } + }, + { + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "name": "chefnodes", + "dependsOn": [ + "Microsoft.Resources/deployments/vnetstorage", + "Microsoft.Resources/deployments/trendmicrodsm", + "Microsoft.Resources/deployments/chefserver" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/trendp2p-chefnodes.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "westus" + }, + "network-api-version": { + "value": "2015-06-15" + }, + "compute-api-version": { + "value": "2015-06-15" + }, + "deployment-api-version2": { + "value": "2015-01-01" + }, + "vmNameChefWorkstation": { + "value": "chefWS" + }, + "vmSizeChefWorkstation": { + "value": "Standard_D2_v3" + }, + "adminUsernameChefWorkstation": { + "value": "demo" + }, + "adminPasswordChefWorkstation": { + "value": "GEN-PASSWORD" + }, + "publicIPDomainNameLabelChefWorkstation": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "vmNameDSAWindows": { + "value": "dsawindows" + }, + "vmSizeDSAWindows": { + "value": "Standard_D2_v3" + }, + "adminUsernameDSAgentWindows": { + "value": "demo" + }, + "adminPasswordDSAgentWindows": { + "value": "GEN-PASSWORD" + }, + "publicIPDomainNameLabelDSAgentWindows": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "windowsOSVersion": { + "value": "2012-R2-Datacenter" + }, + "windowsvmcount": { + "value": 1 + }, + "vmNameDSAgent": { + "value": "dsalinux" + }, + "vmSizeDSAgent": { + "value": "Standard_D2_v3" + }, + "adminUsernameDSAgent": { + "value": "GEN-UNIQUE" + }, + "adminPasswordOrPublicKeyDSAgent": { + "value": "GEN-SSH-PUB-KEY" + }, + "publicIPDomainNameLabelDSAgent": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)]" + }, + "ubuntuOSVersion": { + "value": "14.04.2-LTS" + }, + "linuxvmcount": { + "value": 1 + }, + "ManagerAddress": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)].westus.cloudapp.azure.com" + }, + "subnet4Ref": { + "value": "Microsoft.Network/virtualNetworks/datameerP2PVnet/subnets/vmsubnet" + }, + "imagePublisherWindows": { + "value": "MicrosoftWindowsServer" + }, + "imageOfferWindows": { + "value": "WindowsServer" + }, + "imagePublisherLinux": { + "value": "Canonical" + }, + "imageOfferLinux": { + "value": "UbuntuServer" + }, + "storageAccountName": { + "value": "[tolower(concat(trim(substring(concat(variables('vmNameTrendDSM'),' '),0,6)),uniquestring(resourceGroup().id)))]" + }, + "vmStorageAccountContainerName": { + "value": "vhds" + }, + "ActivationPort": { + "value": "4120" + }, + "TenantIdentifier": { + "value": "NA" + }, + "TenantActivationPassword": { + "value": "NA" + }, + "tagvalues": { + "value": { + "program": "PushToPilot", + "project": "DatameerTrendHDInsightChef" + } + }, + "chefprefix": { + "value": "chef" + }, + "keyName": { + "value": "validatorkey" + }, + "kmServerUrl": { + "value": "GEN-UNIQUE[uniquestring(resourceGroup().id)].westus.cloudapp.azure.com" + }, + "chef_node_name": { + "value": "chefnodedsagent" + }, + "chef_server_url": { + "value": "https://GEN-UNIQUE[uniquestring(resourceGroup().id)].westus.cloudapp.azure.com/organizations/ct" + }, + "validation_client_name": { + "value": "ct-validator" + }, + "validation_key_format": { + "value": "base64encoded" + }, + "runlist": { + "value": "recipe[trendmicro]" + }, + "resourcegroupName": { + "value": "[resourceGroup().name]" + }, + "chefnodeCustomScripturl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/p2pchefnodebootstrap.sh', parameters('_artifactsLocationSasToken')))]" + }, + "baseUrl": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/chef/datameer-trend-chef-riskanalysis/" + }, + "datameerTags": { + "value": { + "type": "object", + "provider": "ED5CBF45-2AA4-4408-B52D-1C76DFCA0BD7" + } + }, + "trendmicroTags": { + "value": { + "type": "object", + "provider": "F0253A01-8156-4D41-BD91-E182158D4972" + } + }, + "chefSoftwareTags": { + "value": { + "type": "object", + "provider": "33194f91-eb5f-4110-827a-e95f640a9e46" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "datameer-trend-chef-riskanalysis" + } + }, + "authenticationType": { + "value": "sshPublicKey" + } + } + } + }, + { + "apiVersion": "2015-01-01", + "type": "Microsoft.Resources/deployments", + "name": "datameerhdinsight", + "dependsOn": [ + "Microsoft.Resources/deployments/vnetstorage" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(datameerHDInsightCluster).standaloneTemplateUrl", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "westus" + }, + "clusterName": { + "value": "(datameerHDInsightCluster).clusterName" + }, + "clusterType": { + "value": "(datameerHDInsightCluster).clusterType" + }, + "clusterLoginUserName": { + "value": "(datameerHDInsightCluster).clusterLoginUserName" + }, + "clusterLoginPassword": { + "value": "(datameerHDInsightCluster).clusterLoginPassword" + }, + "sshUserName": { + "value": "(datameerHDInsightCluster).sshUserName" + }, + "sshPassword": { + "value": "(datameerHDInsightCluster).sshPassword" + }, + "storageAccount": { + "value": "(datameerHDInsightCluster).storageAccount" + }, + "clusterVNetName": { + "value": "datameerP2PVnet" + }, + "clusterVnetAddressSpace": { + "value": "10.7.0.0/16" + }, + "clusterVNetSubnetAddressRange": { + "value": "10.7.4.0/24" + }, + "clusterVNetSubnetName": { + "value": "(datameerHDInsightCluster).clusterNamesubnet" + }, + "datameerTags": { + "value": { + "type": "object", + "provider": "ED5CBF45-2AA4-4408-B52D-1C76DFCA0BD7" + } + }, + "trendmicroTags": { + "value": { + "type": "object", + "provider": "F0253A01-8156-4D41-BD91-E182158D4972" + } + }, + "chefSoftwareTags": { + "value": { + "type": "object", + "provider": "33194f91-eb5f-4110-827a-e95f640a9e46" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "datameer-trend-chef-riskanalysis" + } + } + } + } + } + ], + "outputs": { + "TrendMicro DSM URI": { + "type": "string", + "value": "[reference('trendmicrodsm').outputs.trendmicrodsmUri.value]" + }, + "Chef Server URI": { + "type": "string", + "value": "[reference('chefserver').outputs.chefserverUri.value]" + }, + "Datameer App URI": { + "type": "string", + "value": "[reference('datameerhdinsight').outputs.datameerAppURL.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT720 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT720 new file mode 100644 index 0000000..a408643 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT720 @@ -0,0 +1,445 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ipv6-in-vnet-stdlb/azuredeploy.json", + "/demos/ipv6-in-vnet-stdlb/azuredeploy.parameters.json" + ], + "timestamp": 1642962899521, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ipv6-in-vnet-stdlb/azuredeploy.json", + "/demos/ipv6-in-vnet-stdlb/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT720", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/availabilitysets", + "microsoft.network/routetables" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT720", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM. Exclusion list: 'admin','administrator'" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs to deploy in VNET." + } + } + }, + "variables": { + "vnetv4AddressRange": "10.0.0.0/16", + "vnetv6AddressRange": "ace:cab:deca::/48", + "subnetv4AddressRange": "10.0.0.0/24", + "subnetv6AddressRange": "ace:cab:deca:deed::/64", + "subnetName": "DualStackSubnet", + "availabilitySetName": "myavset", + "numberOfInstances": 2, + "vmName": "DsVM", + "publicipName": "RDPpublicIp", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "imageSku": "2019-Datacenter" + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "RDPpublicIpcopyindex()", + "copy": { + "name": "publicIpLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "lbpublicip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "lbpublicip-v6", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv6" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myavset", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-07-01", + "name": "loadBalancer", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/lbpublicip", + "Microsoft.Network/publicIPAddresses/lbpublicip-v6" + ], + "properties": { + "frontendIpConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lbpublicip" + } + } + }, + { + "name": "LBFE-v6", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/lbpublicip-v6" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBAP" + }, + { + "name": "LBBAP-v6" + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancer/LBFE" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer/IPv4IPv6probe" + } + }, + "name": "lbrule" + }, + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancer/LBFE-v6" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP-v6" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/loadBalancer/IPv4IPv6probe" + } + }, + "name": "lbrule-v6" + } + ], + "probes": [ + { + "name": "IPv4IPv6probe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16", + "ace:cab:deca::/48" + ] + }, + "subnets": [ + { + "name": "DualStackSubnet", + "properties": { + "addressPrefixes": [ + "10.0.0.0/24", + "ace:cab:deca:deed::/64" + ] + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "dsNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-HTTP-in", + "properties": { + "description": "Allow HTTP", + "protocol": "TCP", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1001, + "direction": "Inbound" + } + }, + { + "name": "allow-all-out", + "properties": { + "description": "Allow out All", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1002, + "direction": "Outbound" + } + }, + { + "name": "allow-RDP-in", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1003, + "direction": "Inbound" + } + }, + { + "name": "allow-MyIpv6App-out", + "properties": { + "description": "Allow My IPv6 App", + "protocol": "Tcp", + "sourcePortRange": "33819-33829", + "destinationPortRange": "5000-6000", + "sourceAddressPrefix": "ace:cab:deca:deed::/64", + "destinationAddressPrefixes": [ + "cab:cab:aaaa:bbbb::/64", + "cab:cab:1111:2222::/64" + ], + "access": "Allow", + "priority": 1004, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/routeTables", + "name": "v6routeTable", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "properties": { + "routes": [ + { + "name": "v6route", + "properties": { + "addressPrefix": "cab:cab::/96", + "nextHopType": "VirtualAppliance", + "nextHopIpAddress": "ace:cab:deca:f00d::1" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "DsVMcopyindex()", + "copy": { + "name": "netIntLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/VNET", + "Microsoft.Network/networkSecurityGroups/dsNsg", + "Microsoft.Network/loadBalancers/loadBalancer", + "publicIpLoop" + ], + "properties": { + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dsNsg" + }, + "ipConfigurations": [ + { + "name": "ipconfig-v4", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv4", + "primary": true, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/RDPpublicIpcopyindex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/DualStackSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP" + } + ] + } + }, + { + "name": "ipconfig-v6", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv6", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/DualStackSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/LBBAP-v6" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "DsVMcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/availabilitySets/myavset", + "netIntLoop" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myavset" + }, + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "DsVMcopyindex()", + "adminUsername": "adminUserName", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/DsVMcopyindex()" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT721 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT721 new file mode 100644 index 0000000..2654250 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT721 @@ -0,0 +1,387 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ipv6-in-vnet-vmss/azuredeploy.json", + "/demos/ipv6-in-vnet-vmss/azuredeploy.parameters.json" + ], + "timestamp": 1642962899551, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ipv6-in-vnet-vmss/azuredeploy.json", + "/demos/ipv6-in-vnet-vmss/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT721", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT721", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator of the new VM. Exclusion list: 'admin','administrator'" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "vmssName": { + "type": "string", + "defaultValue": "MySet", + "metadata": { + "description": "String used as a base for naming resources (9 characters or less)." + }, + "maxLength": 9 + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "defaultValue": 2, + "minValue": 1, + "maxValue": 100 + } + }, + "variables": { + "vnetv4AddressRange": "10.0.0.0/16", + "vnetv6AddressRange": "ace:cab:deca::/48", + "subnetv4AddressRange": "10.0.0.0/24", + "subnetv6AddressRange": "ace:cab:deca:deed::/64", + "virtualNetworkName": "MySetvnet", + "subnetName": "MySetsubnet", + "natPoolName": "MySetnatpool", + "bePoolName": "MySetbepool", + "bePoolv6Name": "MySetbepoolv6", + "natStartPort": 50000, + "natEndPort": 50120, + "natBackendPort": 3389, + "nicName": "MySetnic", + "ipConfigName": "MySetipconfig", + "ipConfigNameV6": "MySetipconfig-v6", + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + }, + "resources": [ + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MySetvnet", + "location": "[resourceGroup().location]", + "properties": { + "dhcpOptions": { + "dnsServers": [ + "cafe:43::", + "cafe:45::" + ] + }, + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16", + "ace:cab:deca::/48" + ] + }, + "subnets": [ + { + "name": "MySetsubnet", + "properties": { + "addressPrefixes": [ + "10.0.0.0/24", + "ace:cab:deca:deed::/64" + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "PIPv4", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "PIPv6", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv6" + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "loadBalancer", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/PIPv4", + "Microsoft.Network/publicIPAddresses/PIPv6" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PIPv4" + } + } + }, + { + "name": "LBFE-v6", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PIPv6" + } + } + } + ], + "backendAddressPools": [ + { + "name": "MySetbepool" + }, + { + "name": "MySetbepoolv6" + } + ], + "inboundNatPools": [ + { + "name": "MySetnatpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/loadBalancer/LBFE" + }, + "protocol": "tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50120, + "backendPort": 3389 + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "VmssNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "allow-HTTP-in", + "properties": { + "description": "Allow HTTP", + "protocol": "TCP", + "sourcePortRange": "80", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1001, + "direction": "Inbound" + } + }, + { + "name": "allow-all-out", + "properties": { + "description": "Allow out All", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1002, + "direction": "Outbound" + } + }, + { + "name": "allow-RDP-in", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 1003, + "direction": "Inbound" + } + }, + { + "name": "allow-MyIpv6App-out", + "properties": { + "description": "Allow My IPv6 App", + "protocol": "Tcp", + "sourcePortRange": "33819-33829", + "destinationPortRange": "5000-6000", + "sourceAddressPrefix": "ace:cab:deca:deed::/64", + "destinationAddressPrefixes": [ + "cab:cab:aaaa:bbbb::/64", + "cab:cab:1111:2222::/64" + ], + "access": "Allow", + "priority": 1004, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "MySet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers//loadBalancer", + "Microsoft.Network/virtualNetworks//MySetvnet" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "MySet", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "MySetnic", + "properties": { + "primary": true, + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/VmssNsg" + }, + "ipConfigurations": [ + { + "name": "MySetipconfig", + "properties": { + "primary": true, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MySetvnet/MySetsubnet" + }, + "privateIPAddressVersion": "IPv4", + "publicipaddressconfiguration": { + "name": "pub1", + "properties": { + "idleTimeoutInMinutes": 15 + } + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/MySetbepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/loadBalancer/MySetnatpool" + } + ] + } + }, + { + "name": "MySetipconfig-v6", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MySetvnet/MySetsubnet" + }, + "privateIPAddressVersion": "IPv6", + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/loadBalancer/MySetbepoolv6" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT722 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT722 new file mode 100644 index 0000000..49daf37 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT722 @@ -0,0 +1,441 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/kubernetes-on-ubuntu-vmss/azuredeploy.json", + "/demos/kubernetes-on-ubuntu-vmss/azuredeploy.parameters.json" + ], + "timestamp": 1642962899595, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/kubernetes-on-ubuntu-vmss/azuredeploy.json", + "/demos/kubernetes-on-ubuntu-vmss/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT722", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT722", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "The name of your VM master node." + }, + "value": "GEN-UNIQUE" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "The name of your VMSS cluster." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key for the Virtual Machine." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "defaultNodeCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The initial node size of your VMSS cluster." + } + }, + "minNodeCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The min node size of your VMSS cluster." + } + }, + "maxNodeCount": { + "type": "int", + "defaultValue": 20, + "metadata": { + "description": "The max node size of your VMSS cluster." + } + }, + "spClientId": { + "type": "string", + "metadata": { + "description": "ServicePrincipal ClientID" + }, + "value": "GEN-UNIQUE-13" + }, + "spClientSecret": { + "type": "securestring", + "metadata": { + "description": "ServicePrincipal Secret" + }, + "value": "GEN-UNIQUE-13" + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat('k8s-cluster-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + "vmssDnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat('k8s-vmss-cluster-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the VMSS." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the VM" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "vNet", + "metadata": { + "description": "Name of the VNET" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "Name of the subnet in the virtual network" + } + }, + "vmssSubnetName": { + "type": "string", + "defaultValue": "VMSSSubnet", + "metadata": { + "description": "Name of the VMSS subnet in the virtual network" + } + } + }, + "variables": { + "publicIpAddressName": "GEN-UNIQUEPublicIP", + "vmssPublicIpAddressName": "GEN-UNIQUEPublicIP", + "networkInterfaceName": "GEN-UNIQUENetInt", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet", + "vmssSubnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/VMSSSubnet", + "osDiskType": "StandardSSD_LRS", + "scriptsDir": "scripts", + "masterScriptFileName": "cloud-init-master.sh", + "vmssScriptFileName": "cloud-init-vmss.sh", + "subscriptionId": "[subscription().subscriptionId]", + "tenantId": "[subscription().tenantId]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUENetInt", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//vNet", + "Microsoft.Network/publicIpAddresses//GEN-UNIQUEPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/Subnet" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIpAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIPAddressName" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "VMSSSubnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUEPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4", + "dnsSettings": { + "domainNameLabel": "[toLower(concat('k8s-cluster-', uniqueString(resourceGroup().id)))]" + }, + "idleTimeoutInMinutes": 10 + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUENetInt" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUENetInt" + } + ] + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/customScript", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "[concat('bash ', variables('masterScriptFileName'), ' ', parameters('spClientId'), ' ', parameters('spClientSecret'), ' ', resourceGroup().name, ' ', variables('subscriptionId'), ' ', variables('tenantId'))]", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptsDir'), '/', variables('masterScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "tags": { + "cluster-autoscaler-enabled": "true", + "cluster-autoscaler-name": "[resourceGroup().name]", + "min": 1, + "max": 20, + "poolName": "GEN-UNIQUE" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//GEN-UNIQUENetInt" + ], + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_D2s_v3", + "tier": "Standard", + "capacity": 1 + }, + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nicGEN-UNIQUE", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ipconfigVmssGEN-UNIQUE", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/VMSSSubnet" + }, + "publicIPAddressConfiguration": { + "name": "GEN-UNIQUEPublicIP", + "properties": { + "idleTimeoutInMinutes": 10, + "dnsSettings": { + "domainNameLabel": "[toLower(concat('k8s-vmss-cluster-', uniqueString(resourceGroup().id)))]" + } + } + } + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "customVmssScript", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "[concat('bash ', variables('vmssScriptFileName'), ' ', parameters('spClientId'), ' ', parameters('spClientSecret'), ' ', resourceGroup().name, ' ', variables('subscriptionId'), ' ', variables('tenantId'), ' ', parameters('location'), ' ', parameters('vmssSubnetName'), ' ', parameters('virtualNetworkName'))]", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptsDir'), '/', variables('vmssScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ] + } + } + } + ] + } + } + } + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT723 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT723 new file mode 100644 index 0000000..dc0c682 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT723 @@ -0,0 +1,334 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/lamp-app/azuredeploy.json", + "/demos/lamp-app/azuredeploy.parameters.json" + ], + "timestamp": 1642962899635, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/lamp-app/azuredeploy.json", + "/demos/lamp-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT723", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT723", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountNamePrefix": { + "type": "string", + "maxLength": 11, + "metadata": { + "description": "Name prefix of the Storage Account" + }, + "value": "GEN-UNIQUE-11" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "mySqlPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the MySQL admin user." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "15.10" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.5-LTS, 15.10." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "The size of the virtual machine." + }, + "value": "Standard_A2" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyUbuntuVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "networkSecurityGroupName": "default-NSG", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-80", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "80", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyUbuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-11", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "MyUbuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyUbuntuVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyUbuntuVM/newuserscript", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyUbuntuVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_lamp.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_lamp.sh GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT724 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT724 new file mode 100644 index 0000000..55ccca2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT724 @@ -0,0 +1,393 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/managed-disk-performance-meter/azuredeploy.json", + "/demos/managed-disk-performance-meter/azuredeploy.parameters.json" + ], + "timestamp": 1642962899652, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/managed-disk-performance-meter/azuredeploy.json", + "/demos/managed-disk-performance-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT724", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT724", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "Size of the VM that runs the test. Use VMs with high performance to get better results" + } + }, + "dataDiskHostCaching": { + "type": "string", + "defaultValue": "ReadOnly", + "allowedValues": [ + "", + "ReadOnly", + "ReadWrite" + ], + "metadata": { + "description": "Data disk caching type for the test disk" + } + }, + "diskSizeGB": { + "type": "string", + "allowedValues": [ + "128", + "512", + "1023" + ], + "defaultValue": "1023", + "metadata": { + "description": "Disk size in GB" + } + }, + "testType": { + "type": "string", + "allowedValues": [ + "read", + "write", + "randread", + "randwrite", + "randtrim", + "rw", + "readwrite", + "randrw" + ], + "defaultValue": "randread", + "metadata": { + "description": "Disk test type to run. (rand: random, sequential otherwise; rw - read/write)" + } + }, + "testSize": { + "type": "string", + "allowedValues": [ + "32m", + "64m", + "128m", + "256m", + "512m", + "1g", + "2g", + "10g", + "30g" + ], + "defaultValue": "1g", + "metadata": { + "description": "Size of the file to test." + } + }, + "testBlockSize": { + "type": "string", + "allowedValues": [ + "4k", + "8k", + "16k", + "32k", + "64k" + ], + "defaultValue": "8k", + "metadata": { + "description": "Size of the block to test." + } + }, + "secondsToRunTest": { + "type": "int", + "defaultValue": 30, + "metadata": { + "description": "Number of seconds for the test to run." + } + }, + "threadsToRunTest": { + "type": "int", + "defaultValue": 4, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of worker threads for the test to run." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the test VMs." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "osVersion": "14.04.5-LTS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "testVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "publicIP", + "virtualNetworkName": "testVNET", + "scriptFolder": "scripts", + "storageAccountName": "[concat(uniqueString(resourceGroup().id), 'storage')]", + "frontEndNSGName": "[concat('webtestnsg-', uniqueString(resourceGroup().id))]", + "vmName": "testVM", + "testScriptFileName": "disktest.sh", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "testVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "testVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "publicIP", + "testVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/testVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('frontEndNSGName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG" + }, + "dependsOn": [ + "publicIP" + ], + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "testVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('storageAccountName')]", + "[variables('nicName')]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "testVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "1023", + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/testVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), '2021-01-01').primaryEndpoints.blob]" + } + } + }, + "resources": [ + { + "type": "extensions", + "name": "CustomScriptExtension", + "apiVersion": "2015-06-15", + "dependsOn": [ + "testVM" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.5", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptFolder'), '/', variables('testScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sudo bash disktest.sh 1g randread 30 4 8k" + } + } + } + ] + } + ], + "outputs": { + "testresult": { + "type": "string", + "value": "[trim(split(reference('CustomScriptExtension').instanceView.statuses[0].message, '\n')[2])]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT725 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT725 new file mode 100644 index 0000000..22da233 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT725 @@ -0,0 +1,471 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/managed-disk-raid-performance-meter/azuredeploy.json", + "/demos/managed-disk-raid-performance-meter/azuredeploy.parameters.json" + ], + "timestamp": 1642962899697, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/managed-disk-raid-performance-meter/azuredeploy.json", + "/demos/managed-disk-raid-performance-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT725", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT725", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "allowedValues": [ + "Standard_A5", + "Standard_A8", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4_v3", + "Standard_D32_v3", + "Standard_D4s_v3", + "Standard_D32s_v3" + ], + "defaultValue": "Standard_D4_v3", + "metadata": { + "description": "Size of the VM that runs the test." + } + }, + "dataDiskHostCaching": { + "type": "string", + "defaultValue": "ReadOnly", + "allowedValues": [ + "", + "ReadOnly", + "ReadWrite" + ], + "metadata": { + "description": "Data disk caching type for the test disk." + } + }, + "diskSizeGB": { + "type": "string", + "allowedValues": [ + "128", + "512", + "1023" + ], + "defaultValue": "1023", + "metadata": { + "description": "Disk size in GB." + } + }, + "disksInRAID": { + "type": "int", + "defaultValue": 5, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of disks striped in RAID. Should not be greater than selected instance type allows." + } + }, + "testType": { + "type": "string", + "allowedValues": [ + "read", + "write", + "randread", + "randwrite", + "randtrim", + "rw", + "readwrite", + "randrw" + ], + "defaultValue": "write", + "metadata": { + "description": "Disk test type to run. (rand: random, sequential otherwise; rw - read/write)." + } + }, + "testSize": { + "type": "string", + "allowedValues": [ + "32m", + "64m", + "128m", + "256m", + "512m", + "1g", + "2g", + "10g", + "30g" + ], + "defaultValue": "1g", + "metadata": { + "description": "Size of the file to test." + } + }, + "testBlockSize": { + "type": "string", + "allowedValues": [ + "4k", + "8k", + "16k", + "32k", + "64k", + "128k", + "256k" + ], + "defaultValue": "64k", + "metadata": { + "description": "Size of the block to test." + } + }, + "secondsToRunTest": { + "type": "int", + "defaultValue": 30, + "metadata": { + "description": "Number of seconds for the test to run." + } + }, + "threadsToRunTest": { + "type": "int", + "defaultValue": 8, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of worker threads for the test to run." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the test VMs." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "osVersion": "14.04.5-LTS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "testVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "publicIP", + "virtualNetworkName": "testVNET", + "scriptFolder": "scripts", + "storageAccountName": "[concat(uniqueString(resourceGroup().id), 'storage')]", + "frontEndNSGName": "[concat('webtestnsg-', uniqueString(resourceGroup().id))]", + "vmName": "testVM", + "testScriptFileName": "disktest.sh", + "diskArray": [ + { + "diskSizeGB": "1023", + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 1, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 2, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 3, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 4, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 5, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 6, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 7, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 8, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "diskSizeGB": "1023", + "lun": 9, + "caching": "ReadOnly", + "createOption": "Empty" + } + ], + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "testVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "testVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "publicIP", + "testVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/testVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('frontEndNSGName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG" + }, + "dependsOn": [ + "publicIP" + ], + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "testVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('storageAccountName')]", + "[variables('nicName')]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "testVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": "[take(variables('diskArray'),parameters('disksInRAID'))]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/testVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[concat(reference(variables('storageAccountName'), '2021-01-01').primaryEndpoints.blob)]" + } + } + }, + "resources": [ + { + "type": "extensions", + "name": "CustomScriptExtension", + "apiVersion": "2015-06-15", + "dependsOn": [ + "testVM" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.5", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptFolder'), '/', variables('testScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sudo bash disktest.sh 1g write 30 8 64k 5" + } + } + } + ] + } + ], + "outputs": { + "testresult": { + "type": "string", + "value": "[trim(split(reference('CustomScriptExtension').instanceView.statuses[0].message, '\n')[2])]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT726 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT726 new file mode 100644 index 0000000..c9286a0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT726 @@ -0,0 +1,296 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/mcafee-extension-windows-vm/azuredeploy.json", + "/demos/mcafee-extension-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962899707, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/mcafee-extension-windows-vm/azuredeploy.json", + "/demos/mcafee-extension-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT726", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT726", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Storage Account Name" + }, + "value": "GEN-UNIQUE-8" + }, + "publicIPAddressName": { + "type": "string", + "metadata": { + "description": "Public IP Address Name" + }, + "value": "GEN-UNIQUE-8" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic" + ], + "metadata": { + "description": "Public IP Address Type" + }, + "value": "Dynamic" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM" + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + }, + "value": "Standard_D4_v3" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "Image SKU" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "VNET Name" + }, + "value": "GEN-VNET-NAME" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "VNET address space" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "description": "Subnet 1 name" + } + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet 1 address space" + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the NIC" + }, + "value": "GEN-UNIQUE-8" + }, + "vmExtensionName": { + "type": "string", + "metadata": { + "description": "Extension name" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountType": "Standard_LRS" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-8", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE-8", + "Microsoft.Network/virtualNetworks//GEN-VNET-NAME" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE-8", + "Microsoft.Network/networkInterfaces//GEN-UNIQUE-8" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-8_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-8" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8/GEN-UNIQUE-8", + "apiVersion": "2015-05-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE-8" + ], + "properties": { + "publisher": "McAfee.EndpointSecurity", + "type": "McAfeeEndpointSecurity", + "typeHandlerVersion": "6.0", + "settings": { + "featureVS": "true", + "featureBP": "true", + "featureFW": "true", + "relayServer": "false" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT727 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT727 new file mode 100644 index 0000000..3ea9570 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT727 @@ -0,0 +1,390 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/memcached-multi-vm-ubuntu/azuredeploy.json", + "/demos/memcached-multi-vm-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962899730, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/memcached-multi-vm-ubuntu/azuredeploy.json", + "/demos/memcached-multi-vm-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT727", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT727", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique name of the new storage account that will be created to store virtual machine VHDs" + }, + "value": "GEN-UNIQUE" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "Domain name of the publicly accessible Apache test web server" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Virtual machine administrator username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Virtual machine administrator password" + }, + "value": "GEN-PASSWORD" + }, + "memcachedVmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Size of the memcached virtual machine" + } + }, + "apacheVmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Size of the Apache virtual machine" + } + }, + "numberOfMemcachedInstances": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of memcached virtual machines to provision" + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Virtual network name" + }, + "value": "GEN-UNIQUE" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Virtual network address prefix" + } + }, + "subnetDmzPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "Address prefix for the DMZ subnet" + } + }, + "subnetMemcachedPrefix": { + "type": "string", + "defaultValue": "10.1.1.0/24", + "metadata": { + "description": "Address prefix for the Memcached subnet" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "subnetMemcachedName": "GEN-UNIQUE-subnet", + "subnetDmzName": "GEN-UNIQUE-dmzsubnet", + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "subnetDmzRef": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE/GEN-UNIQUE-dmzsubnet", + "subnetMemcachedRef": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE/GEN-UNIQUE-subnet", + "memcachedMachineNamePrefix": "memcached" + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-dmzsubnet", + "properties": { + "addressPrefix": "10.1.0.0/24" + } + }, + { + "name": "GEN-UNIQUE-subnet", + "properties": { + "addressPrefix": "10.1.1.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicapache", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE/GEN-UNIQUE-dmzsubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicmemcachedcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "memcachedNicLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//GEN-UNIQUE" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-UNIQUE/GEN-UNIQUE-subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicapache", + "Microsoft.Storage/storageAccounts//GEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicapache" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "memcachedcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "memcachedVmLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicmemcachedcopyindex()", + "Microsoft.Storage/storageAccounts//GEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A0" + }, + "osProfile": { + "computerName": "memcachedcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat('http://', parameters('newStorageAccountName'), '.blob.', environment().suffixes.storage, '/vhds/', variables('memcachedMachineNamePrefix'), copyindex(), '-osdisk.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicmemcachedcopyindex()" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "memcachedcopyindex()/install_memcached", + "location": "[resourceGroup().location]", + "copy": { + "name": "extensionLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines//memcachedcopyindex()", + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_memcached.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('sh install_memcached.sh ', ' ', concat(reference(resourceId('Microsoft.Network/networkInterfaces/', concat('nicmemcached', copyindex()))).ipConfigurations[0].properties.privateIPAddress, ' ', reference('nicapache').ipConfigurations[0].properties.privateIPAddress))]" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/install_apache", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_apache.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh install_apache.sh 1 10.1.1.0/24" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT728 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT728 new file mode 100644 index 0000000..32ae31f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT728 @@ -0,0 +1,301 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/monitor-action-groups/azuredeploy.json", + "/demos/monitor-action-groups/azuredeploy.parameters.json" + ], + "timestamp": 1642962899750, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-action-groups/azuredeploy.json", + "/demos/monitor-action-groups/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT728", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/actiongroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT728", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "16070852643720121598" + } + }, + "parameters": { + "actionGroupName": { + "type": "string", + "metadata": { + "description": "Unique name (within the Resource Group) for the Action group." + }, + "value": "myActionGroup" + }, + "actionGroupShortName": { + "type": "string", + "metadata": { + "description": "Short name (maximum 12 characters) for the Action group." + }, + "value": "agShortName" + }, + "emailReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of email receivers that are part of this action group." + }, + "value": [ + { + "name": "contosoEmail", + "emailAddress": "devops@contoso.com" + } + ] + }, + "smsReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of SMS receivers that are part of this action group." + }, + "value": [ + { + "name": "smsReceiver", + "countryCode": "1", + "phoneNumber": "2134567891" + } + ] + }, + "webhookReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of webhook receivers that are part of this action group." + }, + "value": [ + { + "name": "webhookReceiver", + "serviceUri": "https://webhookURI.contoso.com", + "useCommonAlertSchema": true + } + ] + }, + "itsmReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of ITSM receivers that are part of this action group" + }, + "value": [ + { + "name": "itsmReceiver", + "workspaceId": "GEN-UNIQUE-20", + "connectionId": "1234567890", + "ticketConfiguration": "1234567890", + "region": "eastus" + } + ] + }, + "azureAppPushReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of AzureAppPush receivers that are part of this action group" + }, + "value": [ + { + "name": "azureAppPushReceiver", + "emailAddress": "devops@contoso.com" + } + ] + }, + "automationRunbookReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of AutomationRunbook receivers that are part of this action group." + }, + "value": [ + { + "name": "automationRunbookReceiver", + "automationAccountId": "GEN-UNIQUE-30", + "runbookName": "AzureAutomationTutorialPython2", + "webhookResourceId": "GEN-UNIQUE-20", + "isGlobalRunbook": true, + "serviceUri": "https://automationServiceURI.contoso.com", + "useCommonAlertSchema": true + } + ] + }, + "voiceReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of voice receivers that are part of this action group." + }, + "value": [ + { + "name": "voiceReceiver", + "countryCode": "1", + "phoneNumber": "2134567891" + } + ] + }, + "logicAppReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of logic app receivers that are part of this action group." + }, + "value": [ + { + "name": "logicAppReceiver", + "resourceId": "GEN-UNIQUE-20", + "callbackUrl": "https://callbackURI.contoso.com", + "useCommonAlertSchema": true + } + ] + }, + "azureFunctionReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of azure function receivers that are part of this action group." + }, + "value": [ + { + "name": "azureFunctionReceiver", + "functionAppResourceId": "GEN-UNIQUE-20", + "functionName": "myFunctionName", + "httpTriggerUrl": "https://triggerURI.contoso.com", + "useCommonAlertSchema": true + } + ] + }, + "armRoleReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of ARM role receivers that are part of this action group. Roles are Azure RBAC roles and only built-in roles are supported." + }, + "value": [ + { + "name": "armRoleReceiver", + "roleId": "GEN-UNIQUE-20", + "useCommonAlertSchema": true + } + ] + } + }, + "functions": [], + "resources": [ + { + "type": "microsoft.insights/actionGroups", + "apiVersion": "2019-06-01", + "name": "myActionGroup", + "location": "Global", + "properties": { + "groupShortName": "agShortName", + "enabled": true, + "emailReceivers": [ + { + "name": "contosoEmail", + "emailAddress": "devops@contoso.com" + } + ], + "smsReceivers": [ + { + "name": "smsReceiver", + "countryCode": "1", + "phoneNumber": "2134567891" + } + ], + "webhookReceivers": [ + { + "name": "webhookReceiver", + "serviceUri": "https://webhookURI.contoso.com", + "useCommonAlertSchema": true + } + ], + "itsmReceivers": [ + { + "name": "itsmReceiver", + "workspaceId": "GEN-UNIQUE-20", + "connectionId": "1234567890", + "ticketConfiguration": "1234567890", + "region": "eastus" + } + ], + "azureAppPushReceivers": [ + { + "name": "azureAppPushReceiver", + "emailAddress": "devops@contoso.com" + } + ], + "automationRunbookReceivers": [ + { + "name": "automationRunbookReceiver", + "automationAccountId": "GEN-UNIQUE-30", + "runbookName": "AzureAutomationTutorialPython2", + "webhookResourceId": "GEN-UNIQUE-20", + "isGlobalRunbook": true, + "serviceUri": "https://automationServiceURI.contoso.com", + "useCommonAlertSchema": true + } + ], + "voiceReceivers": [ + { + "name": "voiceReceiver", + "countryCode": "1", + "phoneNumber": "2134567891" + } + ], + "logicAppReceivers": [ + { + "name": "logicAppReceiver", + "resourceId": "GEN-UNIQUE-20", + "callbackUrl": "https://callbackURI.contoso.com", + "useCommonAlertSchema": true + } + ], + "azureFunctionReceivers": [ + { + "name": "azureFunctionReceiver", + "functionAppResourceId": "GEN-UNIQUE-20", + "functionName": "myFunctionName", + "httpTriggerUrl": "https://triggerURI.contoso.com", + "useCommonAlertSchema": true + } + ], + "armRoleReceivers": [ + { + "name": "armRoleReceiver", + "roleId": "GEN-UNIQUE-20", + "useCommonAlertSchema": true + } + ] + } + } + ], + "outputs": { + "actionGroupId": { + "type": "string", + "value": "[resourceId('microsoft.insights/actionGroups', parameters('actionGroupName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT729 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT729 new file mode 100644 index 0000000..9aa432b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT729 @@ -0,0 +1,277 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/monitor-action-groups/azuredeploy.json", + "/demos/monitor-action-groups/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962899771, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-action-groups/azuredeploy.json", + "/demos/monitor-action-groups/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT729", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/actiongroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT729", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "16070852643720121598" + } + }, + "parameters": { + "actionGroupName": { + "type": "string", + "metadata": { + "description": "Unique name (within the Resource Group) for the Action group." + }, + "value": "myActionGroup" + }, + "actionGroupShortName": { + "type": "string", + "metadata": { + "description": "Short name (maximum 12 characters) for the Action group." + }, + "value": "agShortName" + }, + "emailReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of email receivers that are part of this action group." + }, + "value": [ + { + "name": "contosoEmail", + "emailAddress": "devops@contoso.com" + } + ] + }, + "smsReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of SMS receivers that are part of this action group." + }, + "value": [ + { + "name": "smsReceiver", + "countryCode": "1", + "phoneNumber": "2134567891" + } + ] + }, + "webhookReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of webhook receivers that are part of this action group." + }, + "value": [ + { + "name": "webhookReceiver", + "serviceUri": "https://webhookURI.contoso.com", + "useCommonAlertSchema": true + } + ] + }, + "itsmReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of ITSM receivers that are part of this action group" + }, + "value": [ + { + "name": "itsmReceiver", + "workspaceId": "GEN-UNIQUE-20", + "connectionId": "1234567890", + "ticketConfiguration": "1234567890", + "region": "usgovvirginia" + } + ] + }, + "azureAppPushReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of AzureAppPush receivers that are part of this action group" + } + }, + "automationRunbookReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of AutomationRunbook receivers that are part of this action group." + }, + "value": [ + { + "name": "automationRunbookReceiver", + "automationAccountId": "GEN-UNIQUE-30", + "runbookName": "AzureAutomationTutorialPython2", + "webhookResourceId": "GEN-UNIQUE-20", + "isGlobalRunbook": true, + "serviceUri": "https://automationServiceURI.contoso.com", + "useCommonAlertSchema": true + } + ] + }, + "voiceReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of voice receivers that are part of this action group." + } + }, + "logicAppReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of logic app receivers that are part of this action group." + }, + "value": [ + { + "name": "logicAppReceiver", + "resourceId": "GEN-UNIQUE-20", + "callbackUrl": "https://callbackURI.contoso.com", + "useCommonAlertSchema": true + } + ] + }, + "azureFunctionReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of azure function receivers that are part of this action group." + }, + "value": [ + { + "name": "azureFunctionReceiver", + "functionAppResourceId": "GEN-UNIQUE-20", + "functionName": "myFunctionName", + "httpTriggerUrl": "https://triggerURI.contoso.com", + "useCommonAlertSchema": true + } + ] + }, + "armRoleReceivers": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The list of ARM role receivers that are part of this action group. Roles are Azure RBAC roles and only built-in roles are supported." + }, + "value": [ + { + "name": "armRoleReceiver", + "roleId": "GEN-UNIQUE-20", + "useCommonAlertSchema": true + } + ] + } + }, + "functions": [], + "resources": [ + { + "type": "microsoft.insights/actionGroups", + "apiVersion": "2019-06-01", + "name": "myActionGroup", + "location": "Global", + "properties": { + "groupShortName": "agShortName", + "enabled": true, + "emailReceivers": [ + { + "name": "contosoEmail", + "emailAddress": "devops@contoso.com" + } + ], + "smsReceivers": [ + { + "name": "smsReceiver", + "countryCode": "1", + "phoneNumber": "2134567891" + } + ], + "webhookReceivers": [ + { + "name": "webhookReceiver", + "serviceUri": "https://webhookURI.contoso.com", + "useCommonAlertSchema": true + } + ], + "itsmReceivers": [ + { + "name": "itsmReceiver", + "workspaceId": "GEN-UNIQUE-20", + "connectionId": "1234567890", + "ticketConfiguration": "1234567890", + "region": "usgovvirginia" + } + ], + "azureAppPushReceivers": [], + "automationRunbookReceivers": [ + { + "name": "automationRunbookReceiver", + "automationAccountId": "GEN-UNIQUE-30", + "runbookName": "AzureAutomationTutorialPython2", + "webhookResourceId": "GEN-UNIQUE-20", + "isGlobalRunbook": true, + "serviceUri": "https://automationServiceURI.contoso.com", + "useCommonAlertSchema": true + } + ], + "voiceReceivers": [], + "logicAppReceivers": [ + { + "name": "logicAppReceiver", + "resourceId": "GEN-UNIQUE-20", + "callbackUrl": "https://callbackURI.contoso.com", + "useCommonAlertSchema": true + } + ], + "azureFunctionReceivers": [ + { + "name": "azureFunctionReceiver", + "functionAppResourceId": "GEN-UNIQUE-20", + "functionName": "myFunctionName", + "httpTriggerUrl": "https://triggerURI.contoso.com", + "useCommonAlertSchema": true + } + ], + "armRoleReceivers": [ + { + "name": "armRoleReceiver", + "roleId": "GEN-UNIQUE-20", + "useCommonAlertSchema": true + } + ] + } + } + ], + "outputs": { + "actionGroupId": { + "type": "string", + "value": "[resourceId('microsoft.insights/actionGroups', parameters('actionGroupName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT73 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT73 new file mode 100644 index 0000000..bfc2533 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT73 @@ -0,0 +1,344 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/chef/multi-vm-chef-template-ubuntu-vm/azuredeploy.json", + "/application-workloads/chef/multi-vm-chef-template-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962885385, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/chef/multi-vm-chef-template-ubuntu-vm/azuredeploy.json", + "/application-workloads/chef/multi-vm-chef-template-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT73", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT73", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDnsName": { + "type": "string", + "metadata": { + "description": "DNS name for the VM" + }, + "value": "GEN-UNIQUE-8" + }, + "numberOfInstances": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of VM instances to create, default is 2" + }, + "value": 2 + }, + "availabilitySetName": { + "type": "string", + "metadata": { + "description": "Availability Set name for the VMs" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the Virtual Machines" + }, + "value": "GEN-UNIQUE" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": " Publisher for the OS image, the default is Canonical" + }, + "value": "Canonical" + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "The name of the image offer. The default is Ubuntu" + }, + "value": "UbuntuServer" + }, + "imageSKU": { + "type": "string", + "defaultValue": "16.04-LTS", + "metadata": { + "description": "Version of the image. The default is 16.04-LTS" + }, + "value": "16.04-LTS" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM Size" + } + }, + "validation_client_name": { + "type": "string", + "metadata": { + "description": "Validator key name for the organization. Example: myorg-validator" + }, + "value": "GEN-UNIQUE" + }, + "runlist": { + "type": "string", + "defaultValue": "recipe[getting-started::default]", + "metadata": { + "description": "Optional Run List to Execute" + }, + "value": "recipe[getting-started]" + }, + "validation_key": { + "type": "securestring", + "metadata": { + "description": "JSON Escaped Validation Key" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vmExtensionName": "LinuxChefExtension", + "vmName": "GEN-UNIQUE-8", + "chef_server_url": "https://GEN-UNIQUE-8.cloudapp.net/organizations/Orgname", + "publicIPAddressName": "chefPublicIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "MyVNET", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "nicName": "myVMNic", + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "GEN-UNIQUE", + "apiVersion": "2021-07-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + }, + "sku": { + "name": "Aligned" + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "2017-03-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "chefPublicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "publicIPLoop", + "count": 2 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8copyIndex()" + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "2017-03-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "2017-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNiccopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/chefPublicIPcopyIndex()", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/chefPublicIPcopyIndex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/subnet-1" + } + } + } + ] + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-8copyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNiccopyIndex()", + "Microsoft.Compute/availabilitySets/GEN-UNIQUE" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/GEN-UNIQUE" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-8copyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNiccopyIndex()" + } + ] + } + }, + "tags": { + "provider": "[toUpper('33194f91-eb5f-4110-827a-e95f640a9e46')]" + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-8copyIndex()/LinuxChefExtension", + "apiVersion": "2016-04-30-preview", + "location": "[resourceGroup().location]", + "copy": { + "name": "extensionLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-8copyIndex()" + ], + "properties": { + "publisher": "Chef.Bootstrap.WindowsAzure", + "type": "LinuxChefClient", + "typeHandlerVersion": "1210.12", + "settings": { + "bootstrap_options": { + "chef_server_url": "https://GEN-UNIQUE-8.cloudapp.net/organizations/Orgname", + "validation_client_name": "GEN-UNIQUE" + }, + "runlist": "recipe[getting-started]" + }, + "protectedSettings": { + "validation_key": "GEN-UNIQUE" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT730 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT730 new file mode 100644 index 0000000..fcfe9b5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT730 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/monitor-autoscale-alert/azuredeploy.json", + "/demos/monitor-autoscale-alert/azuredeploy.parameters.json" + ], + "timestamp": 1642962899788, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-autoscale-alert/azuredeploy.json", + "/demos/monitor-autoscale-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT730", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.insights/actiongroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT730", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "actionGroupName": { + "type": "string", + "defaultValue": "autoscaleActionGroup", + "minLength": 1, + "metadata": { + "description": "Name for the Action group." + }, + "value": "autoscaleActionGroup" + }, + "actionGroupShortName": { + "type": "string", + "defaultValue": "autoscaleAG", + "minLength": 1, + "maxLength": 12, + "metadata": { + "description": "Short name for the Action group." + }, + "value": "autoscaleAG" + }, + "emailAddress": { + "type": "string", + "metadata": { + "description": "Email address." + }, + "value": "someemail@contoso.com" + }, + "activityLogAlertName": { + "type": "string", + "defaultValue": "autoscaleAlert", + "minLength": 1, + "metadata": { + "description": "Name for the Activity log alert." + }, + "value": "autoscaleAlert" + } + }, + "resources": [ + { + "type": "Microsoft.Insights/actionGroups", + "apiVersion": "2019-06-01", + "name": "autoscaleActionGroup", + "location": "Global", + "properties": { + "groupShortName": "autoscaleAG", + "enabled": true, + "emailReceivers": [ + { + "name": "emailReceiver", + "emailAddress": "someemail@contoso.com" + } + ] + } + }, + { + "type": "Microsoft.Insights/activityLogAlerts", + "apiVersion": "2017-04-01", + "name": "autoscaleAlert", + "location": "Global", + "dependsOn": [ + "autoscaleActionGroup" + ], + "properties": { + "enabled": true, + "scopes": [ + "[subscription().id]" + ], + "condition": { + "allOf": [ + { + "field": "Category", + "equals": "Autoscale" + } + ] + }, + "actions": { + "actionGroups": [ + { + "actionGroupId": "Microsoft.Insights/actionGroups/autoscaleActionGroup" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT731 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT731 new file mode 100644 index 0000000..6c7e88d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT731 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/monitor-autoscale-failed-alert/azuredeploy.json", + "/demos/monitor-autoscale-failed-alert/azuredeploy.parameters.json" + ], + "timestamp": 1642962899796, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-autoscale-failed-alert/azuredeploy.json", + "/demos/monitor-autoscale-failed-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT731", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.insights/actiongroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT731", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "actionGroupName": { + "type": "string", + "defaultValue": "autoscaleActionGroup", + "minLength": 1, + "metadata": { + "description": "Name for the Action group." + }, + "value": "autoscaleActionGroup" + }, + "actionGroupShortName": { + "type": "string", + "defaultValue": "autoscaleAG", + "minLength": 1, + "maxLength": 12, + "metadata": { + "description": "Short name for the Action group." + }, + "value": "autoscaleAG" + }, + "emailAddress": { + "type": "string", + "metadata": { + "description": "Email address." + }, + "value": "someemail@contoso.com" + }, + "activityLogAlertName": { + "type": "string", + "defaultValue": "autoscaleFailedAlert", + "minLength": 1, + "metadata": { + "description": "Name for the Activity log alert." + }, + "value": "autoscaleFailedAlert" + } + }, + "resources": [ + { + "type": "Microsoft.Insights/actionGroups", + "apiVersion": "2019-06-01", + "name": "autoscaleActionGroup", + "location": "Global", + "properties": { + "groupShortName": "autoscaleAG", + "enabled": true, + "emailReceivers": [ + { + "name": "emailReceiver", + "emailAddress": "someemail@contoso.com" + } + ] + } + }, + { + "type": "Microsoft.Insights/activityLogAlerts", + "apiVersion": "2017-04-01", + "name": "autoscaleFailedAlert", + "location": "Global", + "dependsOn": [ + "autoscaleActionGroup" + ], + "properties": { + "enabled": true, + "scopes": [ + "[subscription().id]" + ], + "condition": { + "allOf": [ + { + "field": "Category", + "equals": "Autoscale" + }, + { + "field": "Status", + "equals": "Failed" + } + ] + }, + "actions": { + "actionGroups": [ + { + "actionGroupId": "Microsoft.Insights/actionGroups/autoscaleActionGroup" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT732 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT732 new file mode 100644 index 0000000..68b5d7e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT732 @@ -0,0 +1,410 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/monitor-autoscale-vmss-simplemetricbased/azuredeploy.json", + "/demos/monitor-autoscale-vmss-simplemetricbased/azuredeploy.parameters.json" + ], + "timestamp": 1642962899855, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-autoscale-vmss-simplemetricbased/azuredeploy.json", + "/demos/monitor-autoscale-vmss-simplemetricbased/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT732", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT732", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2016-Datacenter", + "allowedValues": [ + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Datacenter", + "2016-Datacenter-Server-Core", + "2016-Datacenter-with-Containers" + ], + "metadata": { + "description": "The Windows version for the VM." + }, + "value": "2012-R2-Datacenter" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure." + }, + "minLength": 3, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of VM instances (1000 or less)." + }, + "minValue": 1, + "maxValue": 1000 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username." + }, + "value": "windows" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password." + }, + "value": "GEN-PASSWORD" + }, + "minimumCapacity": { + "type": "Int", + "defaultValue": 2, + "metadata": { + "description": "The minimum capacity. Autoscale engine will ensure the instance count is at least this value." + }, + "minValue": 1, + "maxValue": 1000 + }, + "maximumCapacity": { + "type": "Int", + "defaultValue": 10, + "metadata": { + "description": "The maximum capacity. Autoscale engine will ensure the instance count is not greater than this value." + }, + "minValue": 1, + "maxValue": 1000 + }, + "defaultCapacity": { + "type": "Int", + "defaultValue": 10, + "metadata": { + "description": "The default capacity. Autoscale engine will preventively set the instance count to be this value if it can not find any metric data." + }, + "minValue": 1, + "maxValue": 1000 + }, + "metricName": { + "type": "string", + "defaultValue": "Percentage CPU", + "metadata": { + "description": "The metric name." + } + }, + "metricThresholdToScaleOut": { + "type": "Int", + "defaultValue": 60, + "metadata": { + "description": "The metric upper threshold. If the metric value is above this threshold then autoscale engine will initiate scale out action." + } + }, + "metricThresholdToScaleIn": { + "type": "Int", + "defaultValue": 20, + "metadata": { + "description": "The metric lower threshold. If the metric value is below this threshold then autoscale engine will initiate scale in action." + } + }, + "changePercentScaleOut": { + "type": "Int", + "defaultValue": 20, + "metadata": { + "description": "The percentage to increase the instance count when autoscale engine is initiating scale out action." + } + }, + "changePercentScaleIn": { + "type": "Int", + "defaultValue": 10, + "metadata": { + "description": "The percentage to decrease the instance count when autoscale engine is initiating scale in action." + } + }, + "autoscaleEnabled": { + "type": "Bool", + "metadata": { + "description": "A boolean to indicate whether the autoscale policy is enabled or disabled." + }, + "value": true + } + }, + "variables": { + "settingName": "[concat(toLower(variables('namingInfix')), '-setting')]", + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "loadBalancerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "natPoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "bePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 3389, + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd", + "osType": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/loadBalancers//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_A1", + "tier": "Standard", + "capacity": 2 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "windows", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool" + } + ] + } + } + ] + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Insights/autoscalesettings", + "name": "[variables('settingName')]", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]" + ], + "apiVersion": "2015-04-01", + "location": "[resourceGroup().location]", + "properties": { + "profiles": [ + { + "name": "DefaultAutoscaleProfile", + "capacity": { + "minimum": 2, + "maximum": 10, + "default": 10 + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "timeGrain": "PT5M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Increase", + "type": "PercentChangeCount", + "value": 20, + "cooldown": "PT10M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "timeGrain": "PT5M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 20 + }, + "scaleAction": { + "direction": "Decrease", + "type": "PercentChangeCount", + "value": 10, + "cooldown": "PT10M" + } + } + ] + } + ], + "enabled": true, + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT733 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT733 new file mode 100644 index 0000000..5583743 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT733 @@ -0,0 +1,215 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/monitor-autoscale-webappserviceplan-simplemetricbased/azuredeploy.json", + "/demos/monitor-autoscale-webappserviceplan-simplemetricbased/azuredeploy.parameters.json" + ], + "timestamp": 1642962899908, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-autoscale-webappserviceplan-simplemetricbased/azuredeploy.json", + "/demos/monitor-autoscale-webappserviceplan-simplemetricbased/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT733", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/autoscalesettings", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT733", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "svcPlanName": { + "type": "string", + "defaultValue": "SampleAppServicePlan", + "metadata": { + "description": "The name of the App Service plan." + }, + "value": "GEN-UNIQUE-8" + }, + "sku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "The pricing tier for the App Service plan." + }, + "value": "Standard" + }, + "svcPlanSize": { + "defaultValue": "S1", + "type": "string", + "metadata": { + "description": "The instance size of the app." + }, + "value": "S1" + }, + "minimumCapacity": { + "type": "Int", + "defaultValue": 2, + "metadata": { + "description": "The minimum capacity. Autoscale engine will ensure the instance count is at least this value." + } + }, + "maximumCapacity": { + "type": "Int", + "defaultValue": 5, + "metadata": { + "description": "The maximum capacity. Autoscale engine will ensure the instance count is not greater than this value." + } + }, + "defaultCapacity": { + "type": "Int", + "defaultValue": 5, + "metadata": { + "description": "The default capacity. Autoscale engine will preventively set the instance count to be this value if it can not find any metric data." + } + }, + "metricName": { + "type": "string", + "defaultValue": "CpuPercentage", + "metadata": { + "description": "The metric name." + } + }, + "metricThresholdToScaleOut": { + "type": "Int", + "defaultValue": 60, + "metadata": { + "description": "The metric upper threshold. If the metric value is above this threshold then autoscale engine will initiate scale out action." + } + }, + "metricThresholdToScaleIn": { + "type": "Int", + "defaultValue": 20, + "metadata": { + "description": "The metric lower threshold. If the metric value is below this threshold then autoscale engine will initiate scale in action." + } + }, + "changePercentScaleOut": { + "type": "Int", + "defaultValue": 20, + "metadata": { + "description": "The percentage to increase the instance count when autoscale engine is initiating scale out action." + } + }, + "changePercentScaleIn": { + "type": "Int", + "defaultValue": 10, + "metadata": { + "description": "The percentage to decrease the instance count when autoscale engine is initiating scale in action." + } + }, + "autoscaleEnabled": { + "type": "Bool", + "metadata": { + "description": "A boolean to indicate whether the autoscale policy is enabled or disabled." + }, + "value": true + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for resources." + } + } + }, + "variables": { + "settingName": "[concat(toLower(parameters('svcPlanName')), '-setting')]", + "targetResourceId": "Microsoft.Web/serverFarms//GEN-UNIQUE-8" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "sku": { + "name": "S1", + "tier": "Standard", + "capacity": 1 + } + }, + { + "type": "Microsoft.Insights/autoscalesettings", + "name": "[variables('settingName')]", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE-8" + ], + "apiVersion": "2014-04-01", + "location": "[resourceGroup().location]", + "properties": { + "profiles": [ + { + "name": "DefaultAutoscaleProfile", + "capacity": { + "minimum": 2, + "maximum": 5, + "default": 5 + }, + "rules": [ + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "Microsoft.Web/serverFarms//GEN-UNIQUE-8", + "timeGrain": "PT5M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 60 + }, + "scaleAction": { + "direction": "Increase", + "type": "PercentChangeCount", + "value": 20, + "cooldown": "PT10M" + } + }, + { + "metricTrigger": { + "metricName": "CpuPercentage", + "metricResourceUri": "Microsoft.Web/serverFarms//GEN-UNIQUE-8", + "timeGrain": "PT5M", + "statistic": "Average", + "timeWindow": "PT10M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 20 + }, + "scaleAction": { + "direction": "Decrease", + "type": "PercentChangeCount", + "value": 10, + "cooldown": "PT10M" + } + } + ] + } + ], + "enabled": true, + "targetResourceUri": "Microsoft.Web/serverFarms//GEN-UNIQUE-8" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT734 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT734 new file mode 100644 index 0000000..9fd2343 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT734 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/monitor-servicehealth-alert/azuredeploy.json", + "/demos/monitor-servicehealth-alert/azuredeploy.parameters.json" + ], + "timestamp": 1642962899955, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/monitor-servicehealth-alert/azuredeploy.json", + "/demos/monitor-servicehealth-alert/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT734", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.insights/activitylogalerts", + "microsoft.insights/actiongroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT734", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "actionGroupName": { + "type": "string", + "defaultValue": "serviceHealthActionGroup", + "minLength": 1, + "metadata": { + "description": "Name for the Action group." + }, + "value": "serviceHealthActionGroup" + }, + "actionGroupShortName": { + "type": "string", + "defaultValue": "serviceAG", + "minLength": 1, + "maxLength": 12, + "metadata": { + "description": "Short name for the Action group." + }, + "value": "serviceAG" + }, + "emailAddress": { + "type": "string", + "metadata": { + "description": "Email address." + }, + "value": "someemail@contoso.com" + }, + "activityLogAlertName": { + "type": "string", + "defaultValue": "serviceHealthAlert", + "minLength": 1, + "metadata": { + "description": "Name for the Activity log alert." + }, + "value": "serviceHealthAlert" + } + }, + "resources": [ + { + "type": "Microsoft.Insights/actionGroups", + "apiVersion": "2019-06-01", + "name": "serviceHealthActionGroup", + "location": "Global", + "properties": { + "groupShortName": "serviceAG", + "enabled": true, + "emailReceivers": [ + { + "name": "emailReceiver", + "emailAddress": "someemail@contoso.com" + } + ] + } + }, + { + "type": "Microsoft.Insights/activityLogAlerts", + "apiVersion": "2017-04-01", + "name": "serviceHealthAlert", + "location": "Global", + "dependsOn": [ + "serviceHealthActionGroup" + ], + "properties": { + "enabled": true, + "scopes": [ + "[subscription().id]" + ], + "condition": { + "allOf": [ + { + "field": "category", + "equals": "ServiceHealth" + } + ] + }, + "actions": { + "actionGroups": [ + { + "actionGroupId": "Microsoft.Insights/actionGroups/serviceHealthActionGroup" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT737 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT737 new file mode 100644 index 0000000..9889daf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT737 @@ -0,0 +1,801 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/multi-tier-service-networking/azuredeploy.json", + "/demos/multi-tier-service-networking/azuredeploy.parameters.json" + ], + "timestamp": 1642962900389, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/multi-tier-service-networking/azuredeploy.json", + "/demos/multi-tier-service-networking/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT737", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/applicationgateways", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT737", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newDBStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the DB Virtual Machine disks will be placed." + }, + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "narayan" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "appVmNamePrefix": { + "type": "string", + "defaultValue": "MultiTierApp", + "metadata": { + "description": "Prefix for the name of Application servers" + } + }, + "dbVmNamePrefix": { + "type": "string", + "defaultValue": "MultiTierDB", + "metadata": { + "description": "Prefix for the name of Database servers" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ], + "metadata": { + "description": "Type of public IP address" + } + }, + "appServersPublicIPPrefix": { + "type": "string", + "defaultValue": "appserverpubIP", + "metadata": { + "description": "Prefix for the name of Database servers" + } + }, + "skuName": { + "type": "string", + "allowedValues": [ + "Standard_Small", + "Standard_Medium", + "Standard_Large" + ], + "defaultValue": "Standard_Medium", + "metadata": { + "description": "Sku Name" + } + }, + "appGatewayCapacity": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "Number of instances of the Application Gateway" + } + }, + "multitierILB": { + "type": "string", + "defaultValue": "ILBforSql", + "metadata": { + "description": "Internal Load Balancer name" + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, 2016-Datacenter, 2019-Datacenter." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "storageAccountType": "Standard_LRS", + "VNetName": "multiTierVNet", + "FESubnetName": "FrontendSubnet", + "AppSubnetName": "AppSubnet", + "BESubnetName": "BackendSubnet", + "VNetAddressPrefix": "10.1.0.0/16", + "FrontendPrefix": "10.1.0.0/24", + "AppPrefix": "10.1.1.0/24", + "BackendPrefix": "10.1.2.0/24", + "appAvailabilitySetName": "appAvSet", + "AppServerIP1": "10.1.1.4", + "AppServerIP2": "10.1.1.5", + "FeNsgname": "FrontendNSG", + "AppNsgname": "AppNSG", + "BeNsgname": "BackendNSG", + "appGatewayName": "multitierAppGateway", + "appGatewayPubIPName": "multitierAppGatewayIP", + "ILBIP": "10.1.2.100", + "appNicName": "appNic", + "dbNicName": "dbNic", + "appScaleCount": 2, + "dbSclaeCount": 3, + "dbAvailabilitySetName": "DbAvlSet" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE-8", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "multitierAppGatewayIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "appserverpubIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 2 + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "multiTierVNet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//FrontendNSG", + "Microsoft.Network/networkSecurityGroups//AppNSG", + "Microsoft.Network/networkSecurityGroups//BackendNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "FrontendSubnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/FrontendNSG" + } + } + }, + { + "name": "AppSubnet", + "properties": { + "addressPrefix": "10.1.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/AppNSG" + } + } + }, + { + "name": "BackendSubnet", + "properties": { + "addressPrefix": "10.1.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/BackendNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "FrontendNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "rdp_rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web_rule", + "properties": { + "description": "Allow Website", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "App_subnet_rule", + "properties": { + "description": "Outbound to App", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "10.1.1.0/24", + "access": "Allow", + "priority": 1000, + "direction": "Outbound" + } + }, + { + "name": "Block_Internal_Network", + "properties": { + "description": "Outbound to Internal Network", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Deny", + "priority": 2000, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "AppNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "fe_rule", + "properties": { + "description": "Allow Frontend", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "10.1.0.0/24", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "rdp_rule", + "properties": { + "description": "Allow RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "vnet_rule", + "properties": { + "description": "Block Internal Network", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 300, + "direction": "Inbound" + } + }, + { + "name": "DB_outbound_rule", + "properties": { + "description": "Allow Outbound DB", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "10.1.2.0/24", + "access": "Allow", + "priority": 1000, + "direction": "Outbound" + } + }, + { + "name": "Deny_Internet", + "properties": { + "description": "Deny_Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 2000, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "BackendNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "app_rule", + "properties": { + "description": "Allow App servers", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "10.1.1.0/24", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "vnet_rule", + "properties": { + "description": "Block Internal Network", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 200, + "direction": "Inbound" + } + }, + { + "name": "Deny_Internet", + "properties": { + "description": "Deny_Internet", + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 1000, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "multitierAppGateway", + "type": "Microsoft.Network/applicationGateways", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//multiTierVNet", + "Microsoft.Network/publicIPAddresses//multitierAppGatewayIP" + ], + "properties": { + "sku": { + "name": "Standard_Medium", + "tier": "Standard", + "capacity": 2 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//multiTierVNet/FrontendSubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/multitierAppGatewayIP" + } + } + } + ], + "frontendPorts": [ + { + "name": "appGatewayFrontendPort", + "properties": { + "Port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "appGatewayBackendPool", + "properties": { + "BackendAddresses": [ + { + "IpAddress": "10.1.1.4" + }, + { + "IpAddress": "10.1.1.5" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "appGatewayBackendHttpSettings", + "properties": { + "Port": 80, + "Protocol": "Http", + "CookieBasedAffinity": "Enabled" + } + } + ], + "httpListeners": [ + { + "name": "appGatewayHttpListener", + "properties": { + "FrontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations//multitierAppGateway/appGatewayFrontendIP" + }, + "FrontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts//multitierAppGateway/appGatewayFrontendPort" + }, + "Protocol": "Http" + } + } + ], + "requestRoutingRules": [ + { + "Name": "rule1", + "properties": { + "RuleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners//multitierAppGateway/appGatewayHttpListener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools//multitierAppGateway/appGatewayBackendPool" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection//multitierAppGateway/appGatewayBackendHttpSettings" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "ILBforSql", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//multiTierVNet" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//multiTierVNet/BackendSubnet" + }, + "privateIPAddress": "10.1.2.100", + "privateIPAllocationMethod": "Static" + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool1" + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/ILBforSql/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/ILBforSql/BackendPool1" + }, + "protocol": "Tcp", + "frontendPort": 1433, + "backendPort": 1433, + "enableFloatingIP": true, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/ILBforSql/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 1433, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "appNiccopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//appserverpubIPcopyIndex()", + "Microsoft.Network/virtualNetworks//multiTierVNet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat('10.1.1.', copyIndex(4))]", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/appserverpubIPcopyIndex()" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//multiTierVNet/AppSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "dbNiccopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//multiTierVNet", + "Microsoft.Network/loadBalancers//ILBforSql" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat('10.1.2.', copyIndex(4))]", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//multiTierVNet/BackendSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/ILBforSql/BackendPool1" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "appAvSet", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MultiTierAppcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//appNiccopyIndex()", + "Microsoft.Compute/availabilitySets//appAvSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/appAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MultiTierAppcopyIndex()", + "adminUsername": "narayan", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/appNiccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "DbAvlSet", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MultiTierDBcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "foo", + "count": 3 + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces//dbNiccopyIndex()", + "Microsoft.Compute/availabilitySets//DbAvlSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/DbAvlSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MultiTierDBcopyIndex()", + "adminUsername": "narayan", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dbNiccopyIndex()" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT738 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT738 new file mode 100644 index 0000000..fa0f7b4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT738 @@ -0,0 +1,1022 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/nested-vms-in-virtual-network/azuredeploy.json", + "/demos/nested-vms-in-virtual-network/azuredeploy.parameters.json" + ], + "timestamp": 1642962900500, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nested-vms-in-virtual-network/azuredeploy.json", + "/demos/nested-vms-in-virtual-network/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT738", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT738", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "4253688112151179551" + } + }, + "parameters": { + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "HostPublicIPAddressName": { + "type": "string", + "defaultValue": "HVHOSTPIP", + "metadata": { + "description": "Resource Name for Public IP address attached to Hyper-V Host" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "VirtualNetwork", + "metadata": { + "description": "Hyper-V Host and Guest VMs Virtual Network" + } + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/22", + "metadata": { + "description": "Virtual Network Address Space" + } + }, + "NATSubnetName": { + "type": "string", + "defaultValue": "NAT", + "metadata": { + "description": "NAT Subnet Name" + } + }, + "NATSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "NAT Subnet Address Space" + } + }, + "hyperVSubnetName": { + "type": "string", + "defaultValue": "Hyper-V-LAN", + "metadata": { + "description": "Hyper-V Host Subnet Name" + } + }, + "hyperVSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "Hyper-V Host Subnet Address Space" + } + }, + "ghostedSubnetName": { + "type": "string", + "defaultValue": "Ghosted", + "metadata": { + "description": "Ghosted Subnet Name" + } + }, + "ghostedSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.2.0/24", + "metadata": { + "description": "Ghosted Subnet Address Space" + } + }, + "azureVMsSubnetName": { + "type": "string", + "defaultValue": "Azure-VMs", + "metadata": { + "description": "Azure VMs Subnet Name" + } + }, + "azureVMsSubnetPrefix": { + "type": "string", + "defaultValue": "10.0.3.0/24", + "metadata": { + "description": "Azure VMs Address Space" + } + }, + "HostNetworkInterface1Name": { + "type": "string", + "defaultValue": "HVHOSTNIC1", + "metadata": { + "description": "Hyper-V Host Network Interface 1 Name, attached to NAT Subnet" + } + }, + "HostNetworkInterface2Name": { + "type": "string", + "defaultValue": "HVHOSTNIC2", + "metadata": { + "description": "Hyper-V Host Network Interface 2 Name, attached to Hyper-V LAN Subnet" + } + }, + "HostVirtualMachineName": { + "type": "string", + "defaultValue": "HVHOST", + "maxLength": 15, + "metadata": { + "description": "Name of Hyper-V Host Virtual Machine, Maximum of 15 characters, use letters and numbers only." + } + }, + "HostVirtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D32_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3", + "Standard_D64_v3", + "Standard_E2_v3", + "Standard_E4_v3", + "Standard_E8_v3", + "Standard_E16_v3", + "Standard_E32_v3", + "Standard_E64_v3", + "Standard_D64s_v3", + "Standard_E2s_v3", + "Standard_E4s_v3", + "Standard_E8s_v3", + "Standard_E16s_v3", + "Standard_E32s_v3", + "Standard_E64s_v3" + ], + "metadata": { + "description": "Size of the Host Virtual Machine" + } + }, + "HostAdminUsername": { + "type": "string", + "metadata": { + "description": "Admin Username for the Host Virtual Machine" + } + }, + "HostAdminPassword": { + "type": "secureString", + "metadata": { + "description": "Admin User Password for the Host Virtual Machine" + }, + "value": "GEN-PASSWORD" + }, + "HostAdminUserName": { + "value": "GEN-UNIQUE" + } + }, + "functions": [], + "variables": { + "NATSubnetNSGName": "[format('{0}NSG', parameters('NATSubnetName'))]", + "hyperVSubnetNSGName": "[format('{0}NSG', parameters('hyperVSubnetName'))]", + "ghostedSubnetNSGName": "[format('{0}NSG', parameters('ghostedSubnetName'))]", + "azureVMsSubnetNSGName": "[format('{0}NSG', parameters('azureVMsSubnetName'))]", + "azureVMsSubnetUDRName": "[format('{0}UDR', parameters('azureVMsSubnetName'))]", + "DSCInstallWindowsFeaturesUri": "[uri(parameters('_artifactsLocation'), format('dsc/dscinstallwindowsfeatures.zip{0}', parameters('_artifactsLocationSasToken')))]", + "HVHostSetupScriptUri": "[uri(parameters('_artifactsLocation'), format('hvhostsetup.ps1{0}', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-02-01", + "name": "HVHOSTPIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(format('{0}-{1}', parameters('HostVirtualMachineName'), uniqueString(resourceGroup().id)))]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}NSG', parameters('NATSubnetName'))]", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}NSG', parameters('hyperVSubnetName'))]", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}NSG', parameters('ghostedSubnetName'))]", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "[format('{0}NSG', parameters('azureVMsSubnetName'))]", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "VirtualNetwork", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/22" + ] + }, + "subnets": [ + { + "name": "NAT", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('{0}NSG', parameters('NATSubnetName'))]" + } + } + }, + { + "name": "Hyper-V-LAN", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('{0}NSG', parameters('hyperVSubnetName'))]" + } + } + }, + { + "name": "Ghosted", + "properties": { + "addressPrefix": "10.0.2.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('{0}NSG', parameters('ghostedSubnetName'))]" + } + } + }, + { + "name": "Azure-VMs", + "properties": { + "addressPrefix": "10.0.3.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('{0}NSG', parameters('azureVMsSubnetName'))]" + }, + "routeTable": { + "id": "[reference(resourceId('Microsoft.Resources/deployments', 'udrDeploy'), '2019-10-01').outputs.udrId.value]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[format('{0}NSG', parameters('azureVMsSubnetName'))]", + "Microsoft.Resources/deployments/udrDeploy", + "Microsoft.Network/networkSecurityGroups/[format('{0}NSG', parameters('ghostedSubnetName'))]", + "Microsoft.Network/networkSecurityGroups/[format('{0}NSG', parameters('hyperVSubnetName'))]", + "Microsoft.Network/networkSecurityGroups/[format('{0}NSG', parameters('NATSubnetName'))]" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-03-01", + "name": "HVHOST", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[format('{0}OsDisk', parameters('HostVirtualMachineName'))]", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "caching": "ReadWrite" + }, + "dataDisks": [ + { + "lun": 0, + "name": "[format('{0}DataDisk1', parameters('HostVirtualMachineName'))]", + "createOption": "Empty", + "diskSizeGB": 1024, + "caching": "ReadOnly", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + ] + }, + "osProfile": { + "computerName": "HVHOST", + "adminUsername": "HostAdminUsername", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[reference(resourceId('Microsoft.Resources/deployments', 'createNic1'), '2019-10-01').outputs.nicId.value]", + "properties": { + "primary": true + } + }, + { + "id": "[reference(resourceId('Microsoft.Resources/deployments', 'createNic2'), '2019-10-01').outputs.nicId.value]", + "properties": { + "primary": false + } + } + ] + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/createNic1", + "Microsoft.Resources/deployments/createNic2" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-03-01", + "name": "[format('{0}/{1}', parameters('HostVirtualMachineName'), 'InstallWindowsFeatures')]", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.77", + "autoUpgradeMinorVersion": true, + "settings": { + "wmfVersion": "latest", + "configuration": { + "url": "[uri(parameters('_artifactsLocation'), format('dsc/dscinstallwindowsfeatures.zip{0}', parameters('_artifactsLocationSasToken')))]", + "script": "DSCInstallWindowsFeatures.ps1", + "function": "InstallWindowsFeatures" + } + } + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/HVHOST" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-03-01", + "name": "[format('{0}/{1}', parameters('HostVirtualMachineName'), 'HVHOSTSetup')]", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.9", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), format('hvhostsetup.ps1{0}', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[format('powershell -ExecutionPolicy Unrestricted -File HVHostSetup.ps1 -NIC1IPAddress {0} -NIC2IPAddress {1} -GhostedSubnetPrefix {2} -VirtualNetworkPrefix {3}', reference(resourceId('Microsoft.Resources/deployments', 'createNic1'), '2019-10-01').outputs.assignedIp.value, reference(resourceId('Microsoft.Resources/deployments', 'createNic2'), '2019-10-01').outputs.assignedIp.value, parameters('ghostedSubnetPrefix'), parameters('virtualNetworkAddressPrefix'))]" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/createNic1", + "Microsoft.Resources/deployments/createNic2", + "Microsoft.Compute/virtualMachines/HVHOST", + "Microsoft.Compute/virtualMachines/extensions/HVHOST/InstallWindowsFeatures" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "createNic1", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "nicName": { + "value": "HVHOSTNIC1" + }, + "subnetId": { + "value": "[format('{0}/subnets/{1}', resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName')), parameters('NATSubnetName'))]" + }, + "pipId": { + "value": "Microsoft.Network/publicIPAddresses/HVHOSTPIP" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "15585594711656125126" + } + }, + "parameters": { + "nicName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "pipId": { + "type": "string", + "defaultValue": "" + }, + "ipAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ] + }, + "staticIpAddress": { + "type": "string", + "defaultValue": "" + }, + "enableIPForwarding": { + "type": "bool", + "defaultValue": false + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "nicName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "primary": true, + "privateIPAllocationMethod": "ipAllocationMethod", + "privateIPAddress": "staticIpAddress", + "subnet": { + "id": "subnetId" + }, + "publicIPAddress": "[if(equals(parameters('pipId'), ''), null(), createObject('id', parameters('pipId')))]" + } + } + ], + "enableIPForwarding": "enableIPForwarding" + } + } + ], + "outputs": { + "nicId": { + "type": "string", + "value": "Microsoft.Network/networkInterfaces/nicName" + }, + "assignedIp": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', parameters('nicName'))).ipConfigurations[0].properties.privateIPAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/HVHOSTPIP", + "Microsoft.Network/virtualNetworks/VirtualNetwork" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "createNic2", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "nicName": { + "value": "HVHOSTNIC2" + }, + "enableIPForwarding": { + "value": true + }, + "subnetId": { + "value": "[format('{0}/subnets/{1}', resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName')), parameters('hyperVSubnetName'))]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "15585594711656125126" + } + }, + "parameters": { + "nicName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "pipId": { + "type": "string", + "defaultValue": "" + }, + "ipAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ] + }, + "staticIpAddress": { + "type": "string", + "defaultValue": "" + }, + "enableIPForwarding": { + "type": "bool", + "defaultValue": false + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "nicName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "primary": true, + "privateIPAllocationMethod": "ipAllocationMethod", + "privateIPAddress": "staticIpAddress", + "subnet": { + "id": "subnetId" + }, + "publicIPAddress": "[if(equals(parameters('pipId'), ''), null(), createObject('id', parameters('pipId')))]" + } + } + ], + "enableIPForwarding": "enableIPForwarding" + } + } + ], + "outputs": { + "nicId": { + "type": "string", + "value": "Microsoft.Network/networkInterfaces/nicName" + }, + "assignedIp": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', parameters('nicName'))).ipConfigurations[0].properties.privateIPAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/VirtualNetwork" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "updateNic1", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "ipAllocationMethod": { + "value": "Static" + }, + "staticIpAddress": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'createNic1'), '2019-10-01').outputs.assignedIp.value]" + }, + "nicName": { + "value": "HVHOSTNIC1" + }, + "subnetId": { + "value": "[format('{0}/subnets/{1}', resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName')), parameters('NATSubnetName'))]" + }, + "pipId": { + "value": "Microsoft.Network/publicIPAddresses/HVHOSTPIP" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "15585594711656125126" + } + }, + "parameters": { + "nicName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "pipId": { + "type": "string", + "defaultValue": "" + }, + "ipAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ] + }, + "staticIpAddress": { + "type": "string", + "defaultValue": "" + }, + "enableIPForwarding": { + "type": "bool", + "defaultValue": false + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "nicName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "primary": true, + "privateIPAllocationMethod": "ipAllocationMethod", + "privateIPAddress": "staticIpAddress", + "subnet": { + "id": "subnetId" + }, + "publicIPAddress": "[if(equals(parameters('pipId'), ''), null(), createObject('id', parameters('pipId')))]" + } + } + ], + "enableIPForwarding": "enableIPForwarding" + } + } + ], + "outputs": { + "nicId": { + "type": "string", + "value": "Microsoft.Network/networkInterfaces/nicName" + }, + "assignedIp": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', parameters('nicName'))).ipConfigurations[0].properties.privateIPAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/createNic1", + "Microsoft.Network/publicIPAddresses/HVHOSTPIP", + "Microsoft.Network/virtualNetworks/VirtualNetwork" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "updateNic2", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "ipAllocationMethod": { + "value": "Static" + }, + "staticIpAddress": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'createNic2'), '2019-10-01').outputs.assignedIp.value]" + }, + "nicName": { + "value": "HVHOSTNIC2" + }, + "enableIPForwarding": { + "value": true + }, + "subnetId": { + "value": "[format('{0}/subnets/{1}', resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName')), parameters('hyperVSubnetName'))]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "15585594711656125126" + } + }, + "parameters": { + "nicName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "pipId": { + "type": "string", + "defaultValue": "" + }, + "ipAllocationMethod": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic", + "Static" + ] + }, + "staticIpAddress": { + "type": "string", + "defaultValue": "" + }, + "enableIPForwarding": { + "type": "bool", + "defaultValue": false + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "nicName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "primary": true, + "privateIPAllocationMethod": "ipAllocationMethod", + "privateIPAddress": "staticIpAddress", + "subnet": { + "id": "subnetId" + }, + "publicIPAddress": "[if(equals(parameters('pipId'), ''), null(), createObject('id', parameters('pipId')))]" + } + } + ], + "enableIPForwarding": "enableIPForwarding" + } + } + ], + "outputs": { + "nicId": { + "type": "string", + "value": "Microsoft.Network/networkInterfaces/nicName" + }, + "assignedIp": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', parameters('nicName'))).ipConfigurations[0].properties.privateIPAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/createNic2", + "Microsoft.Network/virtualNetworks/VirtualNetwork" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "udrDeploy", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "udrName": { + "value": "[format('{0}UDR', parameters('azureVMsSubnetName'))]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "7650487793556412399" + } + }, + "parameters": { + "udrName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "" + }, + "nextHopAddress": { + "type": "string", + "defaultValue": "" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-06-01", + "name": "udrName", + "location": "[resourceGroup().location]", + "properties": { + "routes": "[if(equals(parameters('addressPrefix'), ''), null(), createArray(createObject('name', 'Nested-VMs', 'properties', createObject('addressPrefix', parameters('addressPrefix'), 'nextHopType', 'VirtualAppliance', 'nextHopIpAddress', parameters('nextHopAddress')))))]" + } + } + ], + "outputs": { + "udrId": { + "type": "string", + "value": "Microsoft.Network/routeTables/udrName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "udrUpdate", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "udrName": { + "value": "[format('{0}UDR', parameters('azureVMsSubnetName'))]" + }, + "addressPrefix": { + "value": "10.0.2.0/24" + }, + "nextHopAddress": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'createNic2'), '2019-10-01').outputs.assignedIp.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "7650487793556412399" + } + }, + "parameters": { + "udrName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "" + }, + "nextHopAddress": { + "type": "string", + "defaultValue": "" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2020-06-01", + "name": "udrName", + "location": "[resourceGroup().location]", + "properties": { + "routes": "[if(equals(parameters('addressPrefix'), ''), null(), createArray(createObject('name', 'Nested-VMs', 'properties', createObject('addressPrefix', parameters('addressPrefix'), 'nextHopType', 'VirtualAppliance', 'nextHopIpAddress', parameters('nextHopAddress')))))]" + } + } + ], + "outputs": { + "udrId": { + "type": "string", + "value": "Microsoft.Network/routeTables/udrName" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/createNic2" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT739 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT739 new file mode 100644 index 0000000..bb5abd2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT739 @@ -0,0 +1,306 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/nested/nfs-ha-vm.json", + "/demos/nfs-ha-cluster-ubuntu/nested/nfs-ha.param.json" + ], + "timestamp": 1642962900518, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/nested/nfs-ha-vm.json", + "/demos/nfs-ha-cluster-ubuntu/nested/nfs-ha.param.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT739", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT739", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "vmIndex": { + "metadata": { + "description": "Index of the VM" + }, + "type": "int" + }, + "location": { + "type": "string", + "metadata": { + "description": "Azure location where this template is to be deployed" + } + }, + "subnetId": { + "metadata": { + "description": "Azure resource ID of the subnet where this NFS-HA cluster is to be deployed" + }, + "type": "string" + }, + "ipAddrs": { + "metadata": { + "description": "Statically assigned private IP addresses that should be assigned to the two VMs' NICs to be deployed. Must belong to the IP range of the specified subnet" + }, + "type": "array" + }, + "nfsClientsIPRange": { + "metadata": { + "description": "IP range of the allowed NFS clients. E.g., 10.0.0.0/24" + }, + "type": "string", + "value": "10.0.0.0/24" + }, + "enableAccelNwSwitch": { + "metadata": { + "description": "Switch to enable Azure Accelerated Networking (Note: this feature is NOT available for D1-level VM SKU)" + }, + "type": "bool", + "defaultValue": false + }, + "availSetId": { + "metadata": { + "description": "Azure resource ID of the availability set where this VM is to be deployed" + }, + "type": "string" + }, + "vmSku": { + "metadata": { + "description": "Azure VM SKU for the NFS HA VMs" + }, + "type": "string", + "defaultValue": "Standard_D2s_v3" + }, + "adminUserName": { + "metadata": { + "description": "VM admin user name" + }, + "type": "string", + "defaultValue": "azureadmin" + }, + "sshPublicKey": { + "metadata": { + "description": "SSH public key for the admin user" + }, + "type": "string", + "value": "" + }, + "osType": { + "metadata": { + "description": "OS type (offer/publisher/sku/version) info" + }, + "type": "object" + }, + "osDiskStorageType": { + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "metadata": { + "description": "Azure storage type for all VMs' OS disks. With htmlLocalCopySwith true, Premium_LRS (SSD) is strongly recommended, as PHP files will be served from OS disks." + }, + "type": "string" + }, + "dataDiskCountPerVM": { + "metadata": { + "description": "Number of data disks per VM. 2 or more disks will be configured as RAID0" + }, + "defaultValue": 1, + "minValue": 1, + "maxValue": 8, + "type": "int" + }, + "dataDiskSizeInGB": { + "defaultValue": 32, + "metadata": { + "description": "Size of each disk in an NFS server" + }, + "type": "int" + }, + "resourcesUniqueString": { + "metadata": { + "description": "Unique string of fixed length (e.g., 6) identifying related resources" + }, + "type": "string", + "defaultValue": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + }, + "lbBeId": { + "metadata": { + "description": "Azure resource ID of the load balancer backend pool to which this VM's NIC should be added" + }, + "type": "string" + }, + "node0IPAddr": { + "value": "10.0.0.111" + }, + "node1IPAddr": { + "value": "10.0.0.122" + }, + "lbFrontEndIpAddr": { + "value": "10.0.0.100" + } + }, + "variables": { + "nicName": "nfs-ha-nicvmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "ipCfgName": "nfs-ha-ipcfgvmIndex", + "vmResourceName": "nfs-ha-vmvmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "vmName": "hanodevmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/setup_nfs_ha.sh', parameters('_artifactsLocationSasToken')))]", + "commonFunctionsScriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh', parameters('_artifactsLocationSasToken')))]", + "cmdExec": "[concat('bash -x setup_nfs_ha.sh hanode0-', parameters('resourcesUniqueString'), ' ', parameters('ipAddrs')[0], ' hanode1-', parameters('resourcesUniqueString'), ' ', parameters('ipAddrs')[1], ' ', parameters('nfsClientsIPRange'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "location": "location", + "name": "nfs-ha-nicvmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "properties": { + "ipConfigurations": [ + { + "name": "ipcfgName", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "ipAddrs)[parameters(vmIndex", + "subnet": { + "id": "subnetId" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "lbBeId" + } + ] + } + } + ], + "enableAcceleratedNetworking": false + }, + "tags": { + "displayName": "NIC for NFS-HA nodevmIndex VM" + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nfs-ha-nicvmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + ], + "location": "location", + "name": "nfs-ha-vmvmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "properties": { + "availabilitySet": { + "id": "availSetId" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nfs-ha-nicvmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + } + ] + }, + "osProfile": { + "adminUsername": "azureadmin", + "computerName": "hanodevmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/azureadmin/.ssh/authorized_keys", + "keyData": "" + } + ] + } + } + }, + "storageProfile": { + "imageReference": "osType", + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "name": "nfs-ha-vmvmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]_osDisk" + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": 32, + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty" + } + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//nfs-ha-vmvmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + ], + "location": "location", + "name": "setup_nfs_ha", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup_nfs_ha.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/helper_functions.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('bash -x setup_nfs_ha.sh hanode0-', parameters('resourcesUniqueString'), ' ', parameters('ipAddrs')[0], ' hanode1-', parameters('resourcesUniqueString'), ' ', parameters('ipAddrs')[1], ' ', parameters('nfsClientsIPRange'))]" + }, + "type": "CustomScript", + "typeHandlerVersion": "2.0" + }, + "tags": { + "displayName": "NFS-HA VM setup CustomScript extension" + } + } + ], + "tags": { + "displayName": "NFS-HA Virtual Machine hanodevmIndex-[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT74 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT74 new file mode 100644 index 0000000..152333e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT74 @@ -0,0 +1,315 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/ckan/docker-ckan/azuredeploy.json", + "/application-workloads/ckan/docker-ckan/azuredeploy.parameters.json" + ], + "timestamp": 1642962885408, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/ckan/docker-ckan/azuredeploy.json", + "/application-workloads/ckan/docker-ckan/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT74", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT74", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-13" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the Virtual Machine." + }, + "value": "Standard_D2_v3" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "ubuntuOSVersion": "16.04-LTS", + "nsgName": "myNSG", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyDockerCkanVM", + "virtualNetworkName": "MyVNET", + "nsgID": "Microsoft.Network/networkSecurityGroups/myNSG", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/myNSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myNSG" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2015-05-01-preview", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "myNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "http", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "ssh", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyDockerCkanVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MyDockerCkanVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyDockerCkanVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyDockerCkanVM/ckanDocker", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyDockerCkanVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "DockerExtension", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "compose": { + "db": { + "image": "ckan/postgresql" + }, + "solr": { + "image": "milafrerichs/ckan_solr" + }, + "ckan": { + "image": "ckan/ckan", + "ports": [ + "80:80" + ], + "links": [ + "db:db", + "solr:solr" + ] + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT741 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT741 new file mode 100644 index 0000000..fa9c938 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT741 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/prereqs/prereq.azuredeploy.json", + "/demos/nfs-ha-cluster-ubuntu/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962900562, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/prereqs/prereq.azuredeploy.json", + "/demos/nfs-ha-cluster-ubuntu/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT741", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT741", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure location where this template is to be deployed" + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "nfs-ha-vnet-default", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/24" + ] + }, + "subnets": [ + { + "name": "nfs-ha-subnet-default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "outputs": { + "subnetId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'nfs-ha-vnet-default', 'nfs-ha-subnet-default')]" + }, + "node0IPAddr": { + "type": "string", + "value": "10.0.0.111" + }, + "node1IPAddr": { + "type": "string", + "value": "10.0.0.122" + }, + "nfsClientsIPRange": { + "type": "string", + "value": "10.0.0.0/24" + }, + "lbFrontEndIpAddr": { + "type": "string", + "value": "10.0.0.100" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT742 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT742 new file mode 100644 index 0000000..ab09a60 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT742 @@ -0,0 +1,251 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/azuredeploy.json", + "/demos/nfs-ha-cluster-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962900579, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/nfs-ha-cluster-ubuntu/azuredeploy.json", + "/demos/nfs-ha-cluster-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT742", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT742", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure location where this template is to be deployed" + } + }, + "subnetId": { + "metadata": { + "description": "Azure resource ID of the subnet where this NFS-HA cluster is to be deployed" + }, + "type": "string", + "value": "GET-PREREQ-subnetId" + }, + "node0IPAddr": { + "metadata": { + "description": "IP address of node 0 (statically assigned). E.g., 10.0.0.11. Must belong to the IP range of the specified subnet" + }, + "type": "string", + "value": "GET-PREREQ-node0IPAddr" + }, + "node1IPAddr": { + "metadata": { + "description": "IP address of node 1 (statically assigned). E.g., 10.0.0.22. Must belong to the IP range of the specified subnet" + }, + "type": "string", + "value": "GET-PREREQ-node1IPAddr" + }, + "nfsClientsIPRange": { + "metadata": { + "description": "IP range of the allowed NFS clients. E.g., 10.0.0.0/24" + }, + "type": "string", + "value": "GET-PREREQ-nfsClientsIPRange" + }, + "lbFrontEndIpAddr": { + "metadata": { + "description": "IP address of the load balancer front-end (statically assigned). E.g., 10.0.0.100. Must belong to the IP range of the specified subnet" + }, + "type": "string", + "value": "GET-PREREQ-lbFrontEndIpAddr" + }, + "enableAccelNwSwitch": { + "metadata": { + "description": "Switch to enable Azure Accelerated Networking (Note: this feature is NOT available for D1-level VM SKU)" + }, + "type": "bool", + "defaultValue": false + }, + "vmSku": { + "metadata": { + "description": "Azure VM SKU for the NFS HA VMs" + }, + "type": "string", + "defaultValue": "Standard_D2s_v3" + }, + "adminUserName": { + "metadata": { + "description": "VM admin user name" + }, + "type": "string", + "defaultValue": "azureadmin" + }, + "sshPublicKey": { + "metadata": { + "description": "SSH public key for the admin user" + }, + "type": "string", + "value": "GEN-SSH-PUB-KEY" + }, + "osType": { + "metadata": { + "description": "OS type (offer/publisher/sku/version) info" + }, + "type": "object", + "defaultValue": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osDiskStorageType": { + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "Standard_LRS" + ], + "metadata": { + "description": "Azure storage type for all VMs' OS disks. With htmlLocalCopySwith true, Premium_LRS (SSD) is strongly recommended, as PHP files will be served from OS disks." + }, + "type": "string" + }, + "dataDiskCountPerVM": { + "metadata": { + "description": "Number of data disks per VM. 2 or more disks will be configured as RAID0" + }, + "defaultValue": 1, + "minValue": 1, + "maxValue": 8, + "type": "int" + }, + "dataDiskSizeInGB": { + "defaultValue": 32, + "metadata": { + "description": "Size per disk in an NFS server" + }, + "type": "int" + }, + "resourcesUniqueString": { + "metadata": { + "description": "Unique string of fixed length (e.g., 6) identifying related resources" + }, + "type": "string", + "defaultValue": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "pid-38a42e4d-89db-4159-9b75-9113b6eae9b6", + "properties": { + "mode": "Incremental", + "template": { + "contentVersion": "1.0.0.0", + "resources": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "nfs-ha-deployment", + "properties": { + "mode": "Incremental", + "parameters": { + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "subnetId": { + "value": "GET-PREREQ-subnetId" + }, + "node0IPAddr": { + "value": "GET-PREREQ-node0IPAddr" + }, + "node1IPAddr": { + "value": "GET-PREREQ-node1IPAddr" + }, + "nfsClientsIPRange": { + "value": "GET-PREREQ-nfsClientsIPRange" + }, + "lbFrontEndIpAddr": { + "value": "GET-PREREQ-lbFrontEndIpAddr" + }, + "enableAccelNwSwitch": { + "value": false + }, + "vmSku": { + "value": "Standard_D2s_v3" + }, + "adminUserName": { + "value": "azureadmin" + }, + "sshPublicKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "osType": { + "value": { + "offer": "UbuntuServer", + "publisher": "Canonical", + "sku": "16.04-LTS", + "version": "latest" + } + }, + "osDiskStorageType": { + "value": "Premium_LRS" + }, + "dataDiskCountPerVM": { + "value": 1 + }, + "dataDiskSizeInGB": { + "value": 32 + }, + "resourcesUniqueString": { + "value": "[substring(uniqueString(resourceGroup().id, deployment().name), 3, 6)]" + } + }, + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/nfs-ha.json', parameters('_artifactsLocationSasToken')))]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT743 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT743 new file mode 100644 index 0000000..2d22a22 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT743 @@ -0,0 +1,751 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-active-directory-security-audit-solution/azuredeploy.json", + "/demos/oms-active-directory-security-audit-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900595, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-active-directory-security-audit-solution/azuredeploy.json", + "/demos/oms-active-directory-security-audit-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT743", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT743", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources" + }, + "defaultValue": "[resourceGroup().location]" + }, + "pricingTier": { + "type": "string", + "defaultValue": "Standalone", + "allowedValues": [ + "Free", + "Standalone", + "PerNode" + ], + "metadata": { + "description": "Service Tier: Free, Standalone, or PerNode" + } + } + }, + "variables": { + "ViewDescription": "Active Directory Security Audit monitoring solution", + "ViewName": "Users And Groups Monitoring", + "ViewName2": "User Account Security Monitoring" + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Standalone" + } + }, + "resources": [ + { + "name": "AD Security Audit Solution", + "location": "[resourceGroup().location]", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE/Users And Groups Monitoring", + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE/User Account Security Monitoring" + ] + }, + "plan": { + "name": "AD Security Audit Solution", + "Version": "1.1", + "product": "MillenniumSolution", + "publisher": "asithad", + "promotionCode": "" + } + }, + { + "apiVersion": "2017-03-03-preview", + "name": "GEN-UNIQUE/Users And Groups Monitoring", + "type": "Microsoft.OperationalInsights/workspaces/views", + "location": "[resourceGroup().location]", + "id": "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE/Users And Groups Monitoring", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + ], + "properties": { + "Id": "Users And Groups Monitoring", + "Name": "Users And Groups Monitoring", + "DisplayName": "Users And Groups Monitoring", + "Description": "Active Directory Security Audit monitoring solution", + "Author": "asithad", + "Source": "Local", + "Dashboard": [ + { + "Id": "NumberTileListBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Created User Accounts", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Tile": { + "Legend": "User Account Created", + "Query": "SecurityEvent | where (EventID == 624 or EventID == 4720) | summarize count() by TargetUserName | count" + }, + "List": { + "Query": "SecurityEvent | where (EventID == 624 or EventID == 4720) | extend CreatedBy = SubjectUserName | extend AccountName = SamAccountName | extend Time =TimeGenerated +330m | project AccountName, CreatedBy,Time", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Account Name", + "Value": "Date and Time" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "NumberTileListBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Deleted User Accounts", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Tile": { + "Query": "SecurityEvent | where (EventID == 630 or EventID == 4726) | summarize count() by TargetUserName | count", + "Legend": "User Account Deleted " + }, + "List": { + "Query": "SecurityEvent | where (EventID == 630 or EventID == 4726) | extend DeletedBy = SubjectUserName | extend AccountName = TargetUserName | extend Time =TimeGenerated +330m | project AccountName, DeletedBy,Time", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Account Name", + "Value": "Date and Time" + }, + "Color": "#ba141a", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "TwoNumberTileListBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Global Group Membership Changes ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Tile": { + "Legend": "Users Added - Domain/Enterprise Admin group", + "Query": "search in (SecurityEvent) EventID == 4728 or EventID == 4732 or EventID == 4756 or EventID == 632 or EventID == 636 or EventID == 660 | where TargetUserName == \"Domain Admins\" or TargetUserName ==\"Enterprise Admins\" | summarize AggregatedValue = count() by MemberName | count" + }, + "SecondTile": { + "Legend": "Users Removed - Domain/Enterprise Admin group", + "Query": "search in (SecurityEvent) EventID == 4729 or EventID == 4733 or EventID == 4757 or EventID == 633 or EventID == 637 or EventID == 661 | where TargetUserName == \"Domain Admins\" or TargetUserName ==\"Enterprise Admins\" | summarize AggregatedValue = count() by MemberName | count" + }, + "List": { + "Query": "search in (SecurityEvent) EventID == 4728 or EventID == 4732 or EventID == 4756 or EventID == 632 or EventID == 636 or EventID == 660 or EventID == 4729 or EventID == 4733 or EventID == 4757 or EventID == 633 or EventID == 637 or EventID == 661 | extend Action = iff(Activity ==\"4728 - A member was added to a security-enabled global group.\" ,\"Added\",\"Removed\" ) | extend GroupName = TargetUserName | extend Time =TimeGenerated +330m | project Action , GroupName, Time", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Action", + "Value": "Date and Time" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "NotableQueriesBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "List of queries", + "newGroup": false, + "preselectedFilters": "Type, Computer", + "renderMode": "grid" + }, + "queries": [ + { + "query": "Type=SecurityEvent (EventID=624 OR EventID=4720) | EXTEND SubjectAccount AS CreatedBy | Select TimeGenerated, TargetAccount, CreatedBy, Computer", + "displayName": "Accounts Created" + }, + { + "query": "SecurityEvent | where (EventID == 630 or EventID == 4726) | extend DeletedBy = SubjectAccount | project TimeGenerated, TargetAccount, DeletedBy, Computer", + "displayName": "Accounts Deleted" + }, + { + "query": "search in (SecurityEvent) EventID == 4728 or EventID == 4732 or EventID == 4756 or EventID == 632 or EventID == 636 or EventID == 660 or EventID == 4729 or EventID == 4733 or EventID == 4757 or EventID == 633 or EventID == 637 or EventID == 661 | extend Action = iff(Activity ==\"4728 - A member was added to a security-enabled global group.\" ,\"Added\",\"Removed\" ) | project Action , MemberName, TargetUserName, TimeGenerated | sort by TimeGenerated desc", + "displayName": "Group Membership Changes" + }, + { + "query": "SecurityEvent | where (EventID == 631 or EventID == 4727) | extend CreatedBy = SubjectUserName | extend GroupName = TargetUserName | project CreatedBy, GroupName, Activity, TimeGenerated ", + "displayName": "Groups Created" + }, + { + "query": "SecurityEvent | where (EventID == 634 or EventID == 4730) | extend DeletedBy = SubjectUserName | extend GroupName = TargetUserName | project DeletedBy, GroupName, Activity, TimeGenerated ", + "displayName": "Groups Deleted" + } + ] + } + }, + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "", + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RD6RXhpZgAATU0AKgAAAAgABAE7AAIAAAAQAAAISodpAAQAAAABAAAIWpydAAEAAAAgAAAQ0uocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFzaXRoYSBEZSBTaWx2YQAABZADAAIAAAAUAAAQqJAEAAIAAAAUAAAQvJKRAAIAAAADMjEAAJKSAAIAAAADMjEAAOocAAcAAAgMAAAInAAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIwMTg6MDg6MzEgMTU6MTc6MjcAMjAxODowODozMSAxNToxNzoyNwAAAEEAcwBpAHQAaABhACAARABlACAAUwBpAGwAdgBhAAAA/+ELImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTgtMDgtMzFUMTU6MTc6MjcuMjEzPC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPkFzaXRoYSBEZSBTaWx2YTwvcmRmOmxpPjwvcmRmOlNlcT4NCgkJCTwvZGM6Y3JlYXRvcj48L3JkZjpEZXNjcmlwdGlvbj48L3JkZjpSREY+PC94OnhtcG1ldGE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAcFBQYFBAcGBQYIBwcIChELCgkJChUPEAwRGBUaGRgVGBcbHichGx0lHRcYIi4iJSgpKywrGiAvMy8qMicqKyr/2wBDAQcICAoJChQLCxQqHBgcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKir/wAARCACtANUDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDkqKKK/Rj82CiiigAooooAKKKKACiiigAooooAKKXFFACUUUUAFFFFABRRRQAUUUtACUUUUDCiiigQUUUUAFFFFABRRRQAUUUUAFFFFABT443lkWOJGd2OFVRkk1d0XRb7xBqkdhpkJlmk/JR3YnsK9+8IeAtM8KW6uqrc37L+8uXXv6L6CuDF46nhVrq+x6GDwNTFO60j3PMdA+EWt6oizaky6bC3IEgzIR/u9vxrutP+Dvhq1UfbDc3r9y8hQH8BXe0V83VzLE1H8Vl5H01HLcNSXw3fmcuvw28JKuBo0R9yxJqnefCfwndIfLs5bZuzRTNx+BOK7SiudYqundTf3nQ8LQas4L7jx3W/grcxK0mg363AHSG4G1j9D0rzbU9Jv9GvDa6nayW0w/hdcZ9x619V1n61oWneILBrTVbZZoz0P8SH1B7V6WHzarB2q6r8TzcTlFKavS0f4HyxRXV+NvAt54RvA4LXGnytiK4x0/2W9D/OuUr6WnUhVgpwd0z5erSnSm4TVmFFFFaGYUUUtABSU5tu47M7c8Z64ptIYUUUUxBRRRQAUUUUAFFFFABRRRQAU+KJ55kiiUvI7BVUDkk0yvQ/g/4fXU/Ekmp3CbodPUFQehkPT8v61hXrKjSdR9DfD0XXqqmup6Z4E8IQ+E9DVHVW1CcBrmT3/uD2FdRRRXw1SpKrNznuz7ynTjSgoQ2QUUUVmaBRRTJ5DFbSygZMaMwHrgZpiH0V47D8a9Rluo4jpFqA8gXPmnjnHpXsZGDXRXwtXD29orXOfD4qliL+zd7FXUtOtdX02ew1CIS2867XU/zHuK+a/FXhy48L+IJ9OuPmVTuhk7SIehr6drgPi74fXU/Cw1KJM3OntuJHUxk4I/kfwrtyzFOjV5H8MvzOLNMKq1FzXxR/I8Hooor64+OCiiigAooooAKKKKACiiigAooooAKKKKACinxRSTyrHCjSOxwqqMk11T/DvV7PSYtS1ZVtIpJ44REeZPnbGcdqynVhTspO1zWnRqVE3FXscnXv3wi08WfgOKfGHvJnlJ9gdo/9Bqu3wm8NaZpN1JJHcXk0cDsHlkIG4L1wuK3vh+Avw/0cD/n3z/48a+fzDGwxFC1Puv1PosvwNTDV71Oz/Q6KmyNsidhztUn8hTqZN/x7y/8AXNv5V4J77PHl+Nepm4Ef9k2mC+377euK9jjbfGjH+JQfzFfKEf8Ax/L/ANdh/wChV9UmQw6d5oGSkG4A98LmvazTD0qPJ7NWvf8AQ8XK8TVrc/tHe1v1J6hvP+Qfc/8AXF/5GvIU+NWqteLCdKssGUJnLdN2PWvXblt+lzt03W7H81rz62Fq4dr2i3PQo4qliFL2b2Ple0/5CUH/AF2X/wBCr6wb7xr5PtP+QlB/12X/ANCr6wb7xr1c63p/P9Dyck+Gp8v1EqC/tFv9NubRxlZ4XjIPuCKnpyjLDFeAm07o+gaurM+SriIwXMsJ6xuyH8Dio69uvPCHgK8v5rN/tCXk0hzdrK2A5PT+719vxryzxZ4Yu/CeuyafdnzFxvhmAwJUPQ+x7Eeor7DB5nh8Y3Gk9UfG43LMTg0p1VozEooor0zywooooAKKKKACiiigAooooAK0NF0W98QarFp+mxeZNIfwQd2J7AVRjjeWRY41Lu5CqoGSSe1dnoviTUvhpqN/p7afaz3TMokZ2JK4HQEdqwrTnGLVPWXRG9CEJSTqaR6s6O0+Hv8AYHjfSLG01m6huLm1lkkuIVUFCuOFyOhzV34haBf6R4Se9fxJqV95U8ZWKfbtzng8DqMVkaV4313xZ45sLnT9OsheW1vKiRvIQjKcZJPrxWt4+k8XX3hf7Lq+n6bBby3Eab4JizBicD8Oa8R+3VemqrV9L7X3Z7q9g6FR0ou3Te2yPPJfHfieWJ45NaumR1KsC3UEV7t4C48BaP8A9e/9TXkVx8I/EtvbSzSfZdsaF2xKOgGa9c8BHPgHRyP+ff8AqanMp0JUV7G2/T0LyyFeNZ+2vt19UdDTJv8Aj3l/65t/Kn02VS0MijqUIH5V4C3Pfex8ox/8fy/9dh/6FX1NP/yB5P8Ar2P/AKBXgqfDDxaLtXOl/KJA2fNXpn6177NE7aa8SjLmAoB77cV7ua1adR0+SSe/6Hg5TRqU1U54tbfqfLMP/IWj/wCvgf8AodfUk3/IIl/69j/6BXg0fwy8WrqCSnS/kEwYnzV6bs+te+Sxs2nSRAfOYCgHvtxRmtWnUcOSSe/6DyqlUpqpzxaufK1p/wAhKD/rsv8A6FX1g33jXz3b/DHxbHexSPpeFWQMT5q9M/WvoQ9TU5vVp1HDkae+3yHk9KpTU+eLW2/zErG8V6v/AGTo5jibFzc5RMdVHc/59a2tyojSSEKiAsxPQAV5Xr2qtrGrSXJyIx8sSnso6f4/jXyWYYn2NKy3Z9dl+H9tVu9kZtbmu6Z/wnfgMqg36xpQ3Rf3pVxyPxA/NR61h1oaHqr6PqsVyuSn3ZFH8Snr/j+FeLluNlgsRGrE9nMsFHG4eVKR490pK7z4qeF00jXE1bT1B07VP3qlfupIeWH0P3h9T6VwlftNCtGvTVSGzPxWvRlQqOnPdCUUUtamIlFFFMQUUUUAFFFFAHV/D77PbeJI9SvrG8vIbQblW1tzLiTtnHTHWmeKo7zxF4w1K903Tb50aQbkNu25OOjDHFei/CW60rSfBzSXWpWdvcXU7OySzqrADgcE+1aPhfWtLh8WeKpJdTs40luozG7TqA429Qc814VTFyhXqTjC7irfij6CnhIzw9OnKdlJ3/BnmngSW58L+MoLnU9MvxmFwsSWzF246hcciu28a+MrbUtChgj0vVYSt5DJuntGRTtbOMnv6CtbUta0yT4naHcJqVo8MdnOryLOpVScYBOeKX4g6zptz4cgSDUrSVxfW7FUmUkAPyeD0rmnV9tXp1JQ1f8Am/I6IUvY4epTjPRX/JeY7UfH9pNpl3GNG1pS8DrlrFgBlep4rU8A8eANH/69/wCpqxqviLRn0i+VNYsGLW7gAXKEk7T71X8A/wDIgaN/17j+Zrz529g7RtqvyZ6ML+3V5X0f5o6GiiiuE7gooooAKKKKACiio7q6isLKW7uDiOJcn39v6UpNRV2OKcnZHN+ONY+zWa6ZA37yYbpSOy+n4n9B71wVWL+9l1G/mu5zl5WyR6DsPwHFek/8IdoX/Pj/AORn/wDiq+YlTqZhVlOD0Xc+mU6eX0owktX2PLqK9R/4Q7Qv+fH/AMjP/wDFUf8ACHaF/wA+P/kZ/wD4qq/sqv3X4/5C/tWh2f4f5nJabBB4s8LXfhjUGAfaZLSRv4GHI/I/oSK8QvrOfTr6ezvIzHPA5jkQ9iDivW7iQ6T4jnex/d/ZrlxGMk4AYjHvxxVP4q6DFqenW3jDS0+WRVjvFH8J6Kx+h+U/8Br6vhjMeVvCVH6f1/XQ+S4ny1SSxdNev9fj955TRS0lffnwAUUUUCFopCrN90geuTRQOwUtJRQI988BeF9EvfAum3N1pdvPNJGS8jx5JOai8NeGdGufFXieGfS7eSO3uY1iVo8hAV6CvHbTxNrVjapbWeqXUMKfdjR8AV3nw00m58UR6rd3WualazCVN7W8gHmcdWyDk18/iMNUpRqVJVNH66an0WHxVKtKnThT1XproVvjFpFhpOoaWmm2cVqskTlxGuNxyK4LSo0k1myR0DK1xGrKR1BYcV6trngO3vPG+k6Tf6vqV3FcW0shkmkUsm3HA+XpVbxR8MdK8O6XBfWN7emb7XDGC7L8u5sZGB1rfD4ulClClKTba3+bMMTg6s6s6sY2Se3yR3uqeD/D8ek3jpo1qrLA7KRF0IWl8AgnwBo/BP8Ao47e5rM1HwM8OmXcn/CT62+yB22tMuGwvQ/L0rN8IeDmv/CGm3Q8RavbebCG8qGVQicngDbXjNRlQfNUvquj7M9pOca65adtH1XdHo+D6H8qMH0P5V5voPhy61XUNagn8S6wi6feeRGUmXLLtByfl680258PXcPjmz0VfEusG3ns3uGczLuDA4wPlxisvq0OZx59lfZ9rmn1mfKpcm7tuu9j0rB9D+VGD6H8q818UeHrvQ7WxltfEusObi+itm8yZeFdsEjC9a0tW8GzWGj3t3F4o1tnt7d5VDTLglVJGfl9qX1eFk+ffyZX1ipdrk280dxg+h/KkciNdzkKo7scVwOh+FJtS8O2eo3XifWkeeASuEmXA9cfLXjeq6vqE99cRPqd5PCkrKnmTscqCQM9q6aGXqvJxjPbfQ5sRmLoQUpQ321PpD/hIdKbVItOhvI57yU/LDCd5x1JJHAAFc3451jzbhdLt2/dw/NKR3bsPw/r7Vh/DvSE8J+EJ/Et9GPt1+u22VhyEPT/AL6I3fQCs6SR5pXklYs7sWZj1JPevmM9q06Evq1J37s+myKlUrx+s1Vbshte2V4nXUf8LA1X/n3s/wDvhv8A4qvJy/E08Pzc/W36nr5hhqlfl5Ol/wBD0SiuVtvFF7N4QvNVaKATwTCNVCttIynUZz/Ee9Yv/CwNV/597P8A74b/AOKr154+hC1+queRDAVp3t0djE1r/kP6h/19Sf8AoRrW8KXsEvn6JqSiSyv1KbW6biMY/EfrisG6uHu7ya5kCh5pGkYL0BJzxUSsVYMpIIOQR2r52nXlSr+1h3PoalCNWh7KfY4XxT4fn8MeIrnTLjLCNt0UhH+sjP3W/wA9wax69r8aaUPG/gZNVtkDarpYPmKo5kTqw/L5h+I714pX7NluNjjMPGot+p+MZlgpYLESpvboFFFFeieabvhu0t7o3P2hFbaE257Z3f4UVjRTyw58qRkz12nrRXNOlOUrqR1U60IxScSOiiiuk5TY8NeHLjxRqhsLOeGGfYXUSnG7HUCvQ/Ael+KNBu9a03SP7Mka3mRZ2uN3XHG3BHFeYaTqdxo2rW2oWbbZreQOvv7H2Ner+FPG8Ta1r2oWuj6ldx3s6OBbwl/LwvQ4rysf7blaSTjb8bo9fL3R5ottqV/wsyfUH8X/APCwdIMyaT9u+yzeSF3+Xt43buc59KPGr+LzocI1VNJEP2yHaYN+7fu+XqemetJqHi4y/EDSL3+wtWUw2syeQ1uRI+ccqMcgd6b438Yi98PxpJomq2iR3cMrS3FuUXCtnGcda82EanPT9xf035npTlT5Knvv+kvI3dRk8dnTLvz49D8vyX37d+cbecfNWb4PfxmPB+mDTU0c2nkjyjNv34yeuGqK/wDjFoNzp9zClteBpYmQZTuRipPCHjE2HhDTbX+wNYuPJhC+bDbFkbk8g45rN0q8aL5qaWq6eT8zVVKMqy5ajej6+a8iLwy/jAap4g+wppJlN/8A6T5u/AfYPu4PTGOtY3i7xL4k8MeMLDUdTg057r7I8cawhtm0nknnOa1/DXi82eqeIJBoWrTfab/zCsVuWMfyAbW44PtXMfEe7vPFniCxWx0bUYpo7Zh5M0BDsM9QMdK6qMG8TapBcttfu9TlrTUcNenN819Pv9CG9+I+s+KrjTtPktbKJhexSRsoYDeGGM89M16FrUnjk6DqH2qPRRAbWTzdm/cF2nOPm64rx2y0jVtF1fT73UNKvYoo7qM/NCQWO4HaM9zXsGteN2udC1CH/hHdaj822kTe9qQq5UjJOOlPF0owlBUIpr+vMnB1ZTjN15NP+vIwZ9c8UaF8Nbe4f+y1sXtlhiPzeaQwPvjOM1w3gLws3irxRDayBjaQ/vbpv9gHpn1J4/M9qTxJ4pbXNL0fS7ZXW2sLcIVPV5O5/LGPxr0/RtNHgHwCkLDZq+pfPMe6cdP+Ag4+pNLFYhZdhJ1ZK0pX/r+urHhcO8xxcKUW3GKX9f10RH4t1Zb/AFIW1rgWloPLjVeAT3P6YH0rBorb8O+Hf7f+0/6V9n8jb/yz3bt2fcelflD9piq2mrZ+rr2eFo66JGJRXbf8K6/6in/kv/8AZUf8K6/6in/kv/8AZVt/Z+J/l/Ff5mP9oYb+b8H/AJFGw/5Jpqf/AF9L/OOuXr0qDwp5Hhm50j7bu+0SiTzfKxt5XjGefu+vesv/AIV1/wBRT/yX/wDsq6a+CxE1C0dlbdd2c9HG4eLneW7vs+yOJortv+Fdf9RT/wAl/wD7KsTxF4d/sD7N/pX2jz93/LPbt249z61x1MHXpRc5xsl5o66eMoVZKEJa+jGeGNY/sjVlaQ/6PN8ko9B2P4f41w/xL8Kf8Iz4laS0TGn32ZbfHRD/ABJ+BPHsRXQV032KPxz4HuNDuGX7faDfayN6j7v4fwn2Ir6DhzMvqtf2U37r/r+vmfP8SZZ9aoe1gveX9f18jweipJoZLa4kgnRo5Y2KOjDBUg4INR1+qH5QFFFFMAooooAK6vwJ41n8IaoSymWwuCBcRDr/ALw9xXKUVnUpxqwcJq6ZpSqzpTU4PVHu174q0O6+ImhahFqtt9lWymDyNIFCE4wGz0Psag+KHiPRtS8Dz29hq1ndTGVCI4plZiBnsDXjuk6m+kajHdxQwzlODHOm5WB6giu61Dxh4a1zQ4IF0iHTr8XULPtjGwoG+bDDtj1rxpYFUqtOUU2o+ne+p7cMf7alUjJpN+va2h5wSOeR+dfQfgrxToNn4L0u3utasYJo4QHjedQynJ6jNaFzpvhq80W8m06102cC3dlaEK2PlPpVLwNoGlXPgfSZrjTLaWR4AWdogSTk965sXi6eJo+/Fqz/AEZ1YPB1MLV9ySd1+qKfhTxNodrq3iV7jWLKJJ9R3xM86gOuxRkc8imXniXRH+KGnXi6vZtbJp0iNMJ12qxPAJz1qbwvo2kNqvif7XYWnlwajtTzUACLsXgZ6CsLxHqfhLRvHtpcNDZz2cdi6yRWyBwZM8A44zWUYU51pKKbfL+hpKdSFGLk0lzef8xseOfEuiXtjpa2er2c7R6nBI4jnViqhhknB6Csn4j/ABMgNpLo/hy4EzTLtuLpDlQp6qp759a4TxX4tg179xp2kWunWituGxB5jfUj+VYFlZT6jfwWdnGZJ53EcaDuScV6eHy+nGMZVPs3dn+p5mIzGpKUo0/tWV1+h3Hwn8LLq2uNq9+oFhphD5bo0nUD6D7x/D1rpNf1ZtY1aS458ofJEp7KP8ev41r6lDB4Q8I2nhrT2BlZN1zIOrE/eP4n9BiuWr8+4hzJ4vEckX7q/r+v+AfoPDuWrCYfnkvef9f1/wAEK7b4df8AMR/7Zf8As9bukaRpsuiWMkmn2ru1vGWZoFJJKjknFaVtZWtnu+yW0MG/G7yowu7HTOPrWGEwEqVSNVy/po6MXj41acqSX9JnjVFev/2LpX/QMs//AAHX/CuD8cWtvaa3DHawRwIbdSVjQKCdzc4FcGIwEqFPncrndh8fGvPkSsc5RRWv4UgiuPE1pFcRJLG2/KOoYH5GPQ1w04c81BdXY7qk+SDm+iuZFdR4r/5AHh7/AK9f/ZY67f8AsXSv+gZZ/wDgOv8AhUsun2U8ccc9nBIkQxGrxKQg9ACOOg/Kvchls4wnHm3t+dzw55lCU4y5dr/lY8bq3pWoyaVqUN3DyUPzL/eXuK9I1fSNNi0S+kj0+1R1t5CrLAoIIU8g4ryyvMxGHnhJx113PTw+Ihi4S002GfFzw3H5sHinS13Wt6ALjaPuvjhvxHB9x715hXvXhqa21jS7vwzqvz290jeXnsepA9x94e4rxbXtGufD+uXWmXo/e277d2OHXqGHsRg1+pZDmKxmGUX8S/r+vkflmf5c8HiXJfDL+vx/zM6iiivoj5wKKKKACiiigAooooAkjnliz5UsiZ67WIzVyDXdVtYFhttRuYo1GAiSEAVn0VLjF7opTlHZk73lzIzl7iVjIdz5c/MfU1DSUU7JbCbb3CvWPhJ4fisbO58XaouI4lZLQEdezMP/AEEfjXm+haW+t69ZabG203Uyxlv7oJ5P4DJr2vxZdwWVvbeHtMXy7WzRQyj1A4H5cn3NfOcQZh9Uw3Kt5f1/Xlc+k4ey/wCt4nnltH+v687HPahey6jfzXc5+eVs49B2H4Cq9FFfkjbk7s/XElFWR6/ov/IA0/8A69Y//QRV2vNrXxxqVpZw20cFqUhjWNSyNkgDHPzVL/wsDVf+fez/AO+G/wDiq+khmWHUUnf7j5ueXV3JtW+89Erzv4gf8h+D/r1X/wBCaj/hYGq/8+9n/wB8N/8AFVjaxrFxrd4tzdJGjrGIwIwQMAk9yfWuXG42jWo8kNzqwWCq0avPPYoVt+Dv+Rss/wDgf/oDViVa03UJdL1CK8t1RpI84DgkcgjsR615NGShVjJ7Jo9atFzpSit2mexUV53/AMLA1X/n3s/++G/+Ko/4WBqv/PvZ/wDfDf8AxVfR/wBp4fu/uPnf7NxHl952+tf8gDUP+vWT/wBBNeQV0d1441K7s5raSC1CTRtGxVGyARjj5q5yvIx+Ip15RcOh62Aw9ShFqfUfBNJbXCTQsUkjYMrDsRWl8SNFj8VeE4PE2nR/6XZptuUUclO//fJ5+hNZVdH4M1L7PqhsJwHtrwbGVuRuxx+fT8a6Mnx0sHiU1sznzjARxmGcXujwqitjxZpiaN4u1PT4V2xQ3DCNSeiHlR+RFFfssJKcVJdT8YnFwk4voY9FLRVEiUUtFACUUtFACUUtFACUUtFAGj4e1c6D4isdTEfmC2mDsgONw7j8s17FLqHg/wAVP/aMHiCDTZpQDJFdMqEHHoxH6HFeGUV5eYZXQzBJVeh6uX5riMvb9l1Pb/7I8N/9DrpX/f2P/wCOUf2R4b/6HXSv+/sf/wAcrxCivG/1UwXn+P8Amez/AK2Y3sv6+R7f/ZHhv/oddK/7+x//AByj+yPDf/Q66V/39j/+OV4hRR/qpgvP8f8AMP8AWzG9l/XyPb/7I8N/9DrpX/f2P/45R/ZHhv8A6HXSv+/sf/xyvEKKP9VMF5/j/mH+tmN7L+vke3/2R4b/AOh10r/v7H/8co/sjw3/ANDrpX/f2P8A+OV4hRR/qpgvP8f8w/1sxvZf18j2/wDsjw3/ANDrpX/f2P8A+OUf2R4b/wCh10r/AL+x/wDxyvEKSj/VTBef4/5h/rZjey/r5HuH9keG/wDoddK/7+x//HKP7I8N/wDQ66V/39j/APjleH0Uf6qYLz/H/MP9bMd2X9fI9w/sjw3/ANDrpX/f2P8A+OVJbXfg/wAN3K3114ltr54gWjjtiHyfopPP5V4YKKunwtgoSUtdCKnFONnFx01NHxDqv9t+I7/UgrItzO0iq3VVzwD+GKKzqK+ojFRiorofLSk5Scnuz//Z", + "Label": "Security Audit", + "Link": { + "Label": "More info", + "Url": "https://asitha.info/" + } + }, + "List": [ + { + "Title": "Active Directory Security Audit Solution", + "Content": "## Users and Groups Monitoring View\n1. Created user accounts\n2. Deleted user accounts\n3. Group membership changes - Domain Admin and Local Admin\n4. Related quries\n \n\nPost your feedback and Let us know how to improve this solution \n\n#### Solution by Asitha De Silva" + } + ] + } + } + ], + "OverviewTile": { + "Id": "DoubleNumberBuilderTile", + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "TileOne": { + "Legend": "Account Created", + "Query": "SecurityEvent | where (EventID == 624 or EventID == 4720) | summarize count() by SamAccountName | count" + }, + "TileTwo": { + "Legend": "Account Deleted", + "Query": "SecurityEvent | where (EventID == 630 or EventID == 4726) | summarize count() by TargetUserName | count" + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search * | limit 1 | project TimeGenerated", + "Message": "" + } + } + } + } + } + }, + { + "apiVersion": "2017-03-03-preview", + "name": "GEN-UNIQUE/User Account Security Monitoring", + "type": "Microsoft.OperationalInsights/workspaces/views", + "location": "[resourceGroup().location]", + "id": "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE/User Account Security Monitoring", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "Id": "User Account Security Monitoring", + "Name": "User Account Security Monitoring", + "DisplayName": "User Account Security Monitoring", + "Description": "Active Directory Security Audit monitoring solution", + "Author": "asithad", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Id": "NumberTileListBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Logged on Users to Active Directory Domain", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Tile": { + "Legend": "User Login - Last 24 Hours", + "Query": "SecurityEvent | where AccountType =~ \"user\" and EventID == 4624 and TimeGenerated > ago(1d) | summarize count() by Account | count" + }, + "List": { + "Query": "SecurityEvent | where AccountType =~ \"user\" and EventID == 4624 | summarize LastLogin = max(TimeGenerated +330m) by Account | sort by LastLogin ", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "User Name", + "Value": "Last login - Date and Time" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "3", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "5", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Failed logon attampts by User", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Users failed most", + "Subtitle": "" + }, + "Donut": { + "Query": "SecurityEvent | where EventID == 4771 | summarize AggregatedValue = count() by TargetUserName | sort by AggregatedValue desc// Oql: Type=SecurityEvent EventID=4771 |measure count() by TargetUserName", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "SecurityEvent | where EventID == 4771 | summarize AggregatedValue = count() by TargetUserName", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "User Name", + "Value": "No of Attempt " + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Failed Logon attampt by Computer", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Computers that had most failed logon attampts", + "Subtitle": "" + }, + "Donut": { + "Query": "SecurityEvent | where EventID == 4771 | summarize AggregatedValue = count() by IpAddress | sort by AggregatedValue desc", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "SecurityEvent | where EventID == 4771 | summarize AggregatedValue = count() by IpAddress// Oql: Type=SecurityEvent EventID=4771 |measure count() by IPAddress_CF", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "NumberTileListBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Locked User Accounts", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Tile": { + "Query": "SecurityEvent | where EventID == 4740 | summarize count() by TargetUserName | count", + "Legend": "Number of Locked Accounts" + }, + "List": { + "Query": "SecurityEvent | where EventID == 4740 | extend Source= TargetDomainName | summarize count() by TargetUserName,Source", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "User Name", + "Value": "No of Locked" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "NumberTileListBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Users Logon Device", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Tile": { + "Query": "SecurityEvent | where AccountType =~ \"user\" and EventID == 4624 and TimeGenerated > ago(1d) | summarize count() by Account ", + "Legend": "User Name with their logon Computer IP" + }, + "List": { + "Query": "SecurityEvent | where EventID == 4624 | where TargetUserName != \"MSOL_d7b788949824\" | extend DeviceIP = IpAddress | extend AccountName = TargetUserName| extend IP=replace(@'::ffff:', @' \\1', DeviceIP) | extend Time =TimeGenerated +330m | summarize by AccountName, IP,Time", + "HideGraph": false, + "enableSparklines": false, + "operation": "Average", + "ColumnsTitle": { + "Name": "User Name", + "Value": "Updated On" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "", + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RD6RXhpZgAATU0AKgAAAAgABAE7AAIAAAAQAAAISodpAAQAAAABAAAIWpydAAEAAAAgAAAQ0uocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFzaXRoYSBEZSBTaWx2YQAABZADAAIAAAAUAAAQqJAEAAIAAAAUAAAQvJKRAAIAAAADMjEAAJKSAAIAAAADMjEAAOocAAcAAAgMAAAInAAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIwMTg6MDg6MzEgMTU6MTc6MjcAMjAxODowODozMSAxNToxNzoyNwAAAEEAcwBpAHQAaABhACAARABlACAAUwBpAGwAdgBhAAAA/+ELImh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTgtMDgtMzFUMTU6MTc6MjcuMjEzPC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPkFzaXRoYSBEZSBTaWx2YTwvcmRmOmxpPjwvcmRmOlNlcT4NCgkJCTwvZGM6Y3JlYXRvcj48L3JkZjpEZXNjcmlwdGlvbj48L3JkZjpSREY+PC94OnhtcG1ldGE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAcFBQYFBAcGBQYIBwcIChELCgkJChUPEAwRGBUaGRgVGBcbHichGx0lHRcYIi4iJSgpKywrGiAvMy8qMicqKyr/2wBDAQcICAoJChQLCxQqHBgcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKir/wAARCACtANUDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDkqKKK/Rj82CiiigAooooAKKKKACiiigAooooAKKXFFACUUUUAFFFFABRRRQAUUUtACUUUUDCiiigQUUUUAFFFFABRRRQAUUUUAFFFFABT443lkWOJGd2OFVRkk1d0XRb7xBqkdhpkJlmk/JR3YnsK9+8IeAtM8KW6uqrc37L+8uXXv6L6CuDF46nhVrq+x6GDwNTFO60j3PMdA+EWt6oizaky6bC3IEgzIR/u9vxrutP+Dvhq1UfbDc3r9y8hQH8BXe0V83VzLE1H8Vl5H01HLcNSXw3fmcuvw28JKuBo0R9yxJqnefCfwndIfLs5bZuzRTNx+BOK7SiudYqundTf3nQ8LQas4L7jx3W/grcxK0mg363AHSG4G1j9D0rzbU9Jv9GvDa6nayW0w/hdcZ9x619V1n61oWneILBrTVbZZoz0P8SH1B7V6WHzarB2q6r8TzcTlFKavS0f4HyxRXV+NvAt54RvA4LXGnytiK4x0/2W9D/OuUr6WnUhVgpwd0z5erSnSm4TVmFFFFaGYUUUtABSU5tu47M7c8Z64ptIYUUUUxBRRRQAUUUUAFFFFABRRRQAU+KJ55kiiUvI7BVUDkk0yvQ/g/4fXU/Ekmp3CbodPUFQehkPT8v61hXrKjSdR9DfD0XXqqmup6Z4E8IQ+E9DVHVW1CcBrmT3/uD2FdRRRXw1SpKrNznuz7ynTjSgoQ2QUUUVmaBRRTJ5DFbSygZMaMwHrgZpiH0V47D8a9Rluo4jpFqA8gXPmnjnHpXsZGDXRXwtXD29orXOfD4qliL+zd7FXUtOtdX02ew1CIS2867XU/zHuK+a/FXhy48L+IJ9OuPmVTuhk7SIehr6drgPi74fXU/Cw1KJM3OntuJHUxk4I/kfwrtyzFOjV5H8MvzOLNMKq1FzXxR/I8Hooor64+OCiiigAooooAKKKKACiiigAooooAKKKKACinxRSTyrHCjSOxwqqMk11T/DvV7PSYtS1ZVtIpJ44REeZPnbGcdqynVhTspO1zWnRqVE3FXscnXv3wi08WfgOKfGHvJnlJ9gdo/9Bqu3wm8NaZpN1JJHcXk0cDsHlkIG4L1wuK3vh+Avw/0cD/n3z/48a+fzDGwxFC1Puv1PosvwNTDV71Oz/Q6KmyNsidhztUn8hTqZN/x7y/8AXNv5V4J77PHl+Nepm4Ef9k2mC+377euK9jjbfGjH+JQfzFfKEf8Ax/L/ANdh/wChV9UmQw6d5oGSkG4A98LmvazTD0qPJ7NWvf8AQ8XK8TVrc/tHe1v1J6hvP+Qfc/8AXF/5GvIU+NWqteLCdKssGUJnLdN2PWvXblt+lzt03W7H81rz62Fq4dr2i3PQo4qliFL2b2Ple0/5CUH/AF2X/wBCr6wb7xr5PtP+QlB/12X/ANCr6wb7xr1c63p/P9Dyck+Gp8v1EqC/tFv9NubRxlZ4XjIPuCKnpyjLDFeAm07o+gaurM+SriIwXMsJ6xuyH8Dio69uvPCHgK8v5rN/tCXk0hzdrK2A5PT+719vxryzxZ4Yu/CeuyafdnzFxvhmAwJUPQ+x7Eeor7DB5nh8Y3Gk9UfG43LMTg0p1VozEooor0zywooooAKKKKACiiigAooooAK0NF0W98QarFp+mxeZNIfwQd2J7AVRjjeWRY41Lu5CqoGSSe1dnoviTUvhpqN/p7afaz3TMokZ2JK4HQEdqwrTnGLVPWXRG9CEJSTqaR6s6O0+Hv8AYHjfSLG01m6huLm1lkkuIVUFCuOFyOhzV34haBf6R4Se9fxJqV95U8ZWKfbtzng8DqMVkaV4313xZ45sLnT9OsheW1vKiRvIQjKcZJPrxWt4+k8XX3hf7Lq+n6bBby3Eab4JizBicD8Oa8R+3VemqrV9L7X3Z7q9g6FR0ou3Te2yPPJfHfieWJ45NaumR1KsC3UEV7t4C48BaP8A9e/9TXkVx8I/EtvbSzSfZdsaF2xKOgGa9c8BHPgHRyP+ff8AqanMp0JUV7G2/T0LyyFeNZ+2vt19UdDTJv8Aj3l/65t/Kn02VS0MijqUIH5V4C3Pfex8ox/8fy/9dh/6FX1NP/yB5P8Ar2P/AKBXgqfDDxaLtXOl/KJA2fNXpn6177NE7aa8SjLmAoB77cV7ua1adR0+SSe/6Hg5TRqU1U54tbfqfLMP/IWj/wCvgf8AodfUk3/IIl/69j/6BXg0fwy8WrqCSnS/kEwYnzV6bs+te+Sxs2nSRAfOYCgHvtxRmtWnUcOSSe/6DyqlUpqpzxaufK1p/wAhKD/rsv8A6FX1g33jXz3b/DHxbHexSPpeFWQMT5q9M/WvoQ9TU5vVp1HDkae+3yHk9KpTU+eLW2/zErG8V6v/AGTo5jibFzc5RMdVHc/59a2tyojSSEKiAsxPQAV5Xr2qtrGrSXJyIx8sSnso6f4/jXyWYYn2NKy3Z9dl+H9tVu9kZtbmu6Z/wnfgMqg36xpQ3Rf3pVxyPxA/NR61h1oaHqr6PqsVyuSn3ZFH8Snr/j+FeLluNlgsRGrE9nMsFHG4eVKR490pK7z4qeF00jXE1bT1B07VP3qlfupIeWH0P3h9T6VwlftNCtGvTVSGzPxWvRlQqOnPdCUUUtamIlFFFMQUUUUAFFFFAHV/D77PbeJI9SvrG8vIbQblW1tzLiTtnHTHWmeKo7zxF4w1K903Tb50aQbkNu25OOjDHFei/CW60rSfBzSXWpWdvcXU7OySzqrADgcE+1aPhfWtLh8WeKpJdTs40luozG7TqA429Qc814VTFyhXqTjC7irfij6CnhIzw9OnKdlJ3/BnmngSW58L+MoLnU9MvxmFwsSWzF246hcciu28a+MrbUtChgj0vVYSt5DJuntGRTtbOMnv6CtbUta0yT4naHcJqVo8MdnOryLOpVScYBOeKX4g6zptz4cgSDUrSVxfW7FUmUkAPyeD0rmnV9tXp1JQ1f8Am/I6IUvY4epTjPRX/JeY7UfH9pNpl3GNG1pS8DrlrFgBlep4rU8A8eANH/69/wCpqxqviLRn0i+VNYsGLW7gAXKEk7T71X8A/wDIgaN/17j+Zrz529g7RtqvyZ6ML+3V5X0f5o6GiiiuE7gooooAKKKKACiio7q6isLKW7uDiOJcn39v6UpNRV2OKcnZHN+ONY+zWa6ZA37yYbpSOy+n4n9B71wVWL+9l1G/mu5zl5WyR6DsPwHFek/8IdoX/Pj/AORn/wDiq+YlTqZhVlOD0Xc+mU6eX0owktX2PLqK9R/4Q7Qv+fH/AMjP/wDFUf8ACHaF/wA+P/kZ/wD4qq/sqv3X4/5C/tWh2f4f5nJabBB4s8LXfhjUGAfaZLSRv4GHI/I/oSK8QvrOfTr6ezvIzHPA5jkQ9iDivW7iQ6T4jnex/d/ZrlxGMk4AYjHvxxVP4q6DFqenW3jDS0+WRVjvFH8J6Kx+h+U/8Br6vhjMeVvCVH6f1/XQ+S4ny1SSxdNev9fj955TRS0lffnwAUUUUCFopCrN90geuTRQOwUtJRQI988BeF9EvfAum3N1pdvPNJGS8jx5JOai8NeGdGufFXieGfS7eSO3uY1iVo8hAV6CvHbTxNrVjapbWeqXUMKfdjR8AV3nw00m58UR6rd3WualazCVN7W8gHmcdWyDk18/iMNUpRqVJVNH66an0WHxVKtKnThT1XproVvjFpFhpOoaWmm2cVqskTlxGuNxyK4LSo0k1myR0DK1xGrKR1BYcV6trngO3vPG+k6Tf6vqV3FcW0shkmkUsm3HA+XpVbxR8MdK8O6XBfWN7emb7XDGC7L8u5sZGB1rfD4ulClClKTba3+bMMTg6s6s6sY2Se3yR3uqeD/D8ek3jpo1qrLA7KRF0IWl8AgnwBo/BP8Ao47e5rM1HwM8OmXcn/CT62+yB22tMuGwvQ/L0rN8IeDmv/CGm3Q8RavbebCG8qGVQicngDbXjNRlQfNUvquj7M9pOca65adtH1XdHo+D6H8qMH0P5V5voPhy61XUNagn8S6wi6feeRGUmXLLtByfl680258PXcPjmz0VfEusG3ns3uGczLuDA4wPlxisvq0OZx59lfZ9rmn1mfKpcm7tuu9j0rB9D+VGD6H8q818UeHrvQ7WxltfEusObi+itm8yZeFdsEjC9a0tW8GzWGj3t3F4o1tnt7d5VDTLglVJGfl9qX1eFk+ffyZX1ipdrk280dxg+h/KkciNdzkKo7scVwOh+FJtS8O2eo3XifWkeeASuEmXA9cfLXjeq6vqE99cRPqd5PCkrKnmTscqCQM9q6aGXqvJxjPbfQ5sRmLoQUpQ321PpD/hIdKbVItOhvI57yU/LDCd5x1JJHAAFc3451jzbhdLt2/dw/NKR3bsPw/r7Vh/DvSE8J+EJ/Et9GPt1+u22VhyEPT/AL6I3fQCs6SR5pXklYs7sWZj1JPevmM9q06Evq1J37s+myKlUrx+s1Vbshte2V4nXUf8LA1X/n3s/wDvhv8A4qvJy/E08Pzc/W36nr5hhqlfl5Ol/wBD0SiuVtvFF7N4QvNVaKATwTCNVCttIynUZz/Ee9Yv/CwNV/597P8A74b/AOKr154+hC1+queRDAVp3t0djE1r/kP6h/19Sf8AoRrW8KXsEvn6JqSiSyv1KbW6biMY/EfrisG6uHu7ya5kCh5pGkYL0BJzxUSsVYMpIIOQR2r52nXlSr+1h3PoalCNWh7KfY4XxT4fn8MeIrnTLjLCNt0UhH+sjP3W/wA9wax69r8aaUPG/gZNVtkDarpYPmKo5kTqw/L5h+I714pX7NluNjjMPGot+p+MZlgpYLESpvboFFFFeieabvhu0t7o3P2hFbaE257Z3f4UVjRTyw58qRkz12nrRXNOlOUrqR1U60IxScSOiiiuk5TY8NeHLjxRqhsLOeGGfYXUSnG7HUCvQ/Ael+KNBu9a03SP7Mka3mRZ2uN3XHG3BHFeYaTqdxo2rW2oWbbZreQOvv7H2Ner+FPG8Ta1r2oWuj6ldx3s6OBbwl/LwvQ4rysf7blaSTjb8bo9fL3R5ottqV/wsyfUH8X/APCwdIMyaT9u+yzeSF3+Xt43buc59KPGr+LzocI1VNJEP2yHaYN+7fu+XqemetJqHi4y/EDSL3+wtWUw2syeQ1uRI+ccqMcgd6b438Yi98PxpJomq2iR3cMrS3FuUXCtnGcda82EanPT9xf035npTlT5Knvv+kvI3dRk8dnTLvz49D8vyX37d+cbecfNWb4PfxmPB+mDTU0c2nkjyjNv34yeuGqK/wDjFoNzp9zClteBpYmQZTuRipPCHjE2HhDTbX+wNYuPJhC+bDbFkbk8g45rN0q8aL5qaWq6eT8zVVKMqy5ajej6+a8iLwy/jAap4g+wppJlN/8A6T5u/AfYPu4PTGOtY3i7xL4k8MeMLDUdTg057r7I8cawhtm0nknnOa1/DXi82eqeIJBoWrTfab/zCsVuWMfyAbW44PtXMfEe7vPFniCxWx0bUYpo7Zh5M0BDsM9QMdK6qMG8TapBcttfu9TlrTUcNenN819Pv9CG9+I+s+KrjTtPktbKJhexSRsoYDeGGM89M16FrUnjk6DqH2qPRRAbWTzdm/cF2nOPm64rx2y0jVtF1fT73UNKvYoo7qM/NCQWO4HaM9zXsGteN2udC1CH/hHdaj822kTe9qQq5UjJOOlPF0owlBUIpr+vMnB1ZTjN15NP+vIwZ9c8UaF8Nbe4f+y1sXtlhiPzeaQwPvjOM1w3gLws3irxRDayBjaQ/vbpv9gHpn1J4/M9qTxJ4pbXNL0fS7ZXW2sLcIVPV5O5/LGPxr0/RtNHgHwCkLDZq+pfPMe6cdP+Ag4+pNLFYhZdhJ1ZK0pX/r+urHhcO8xxcKUW3GKX9f10RH4t1Zb/AFIW1rgWloPLjVeAT3P6YH0rBorb8O+Hf7f+0/6V9n8jb/yz3bt2fcelflD9piq2mrZ+rr2eFo66JGJRXbf8K6/6in/kv/8AZUf8K6/6in/kv/8AZVt/Z+J/l/Ff5mP9oYb+b8H/AJFGw/5Jpqf/AF9L/OOuXr0qDwp5Hhm50j7bu+0SiTzfKxt5XjGefu+vesv/AIV1/wBRT/yX/wDsq6a+CxE1C0dlbdd2c9HG4eLneW7vs+yOJortv+Fdf9RT/wAl/wD7KsTxF4d/sD7N/pX2jz93/LPbt249z61x1MHXpRc5xsl5o66eMoVZKEJa+jGeGNY/sjVlaQ/6PN8ko9B2P4f41w/xL8Kf8Iz4laS0TGn32ZbfHRD/ABJ+BPHsRXQV032KPxz4HuNDuGX7faDfayN6j7v4fwn2Ir6DhzMvqtf2U37r/r+vmfP8SZZ9aoe1gveX9f18jweipJoZLa4kgnRo5Y2KOjDBUg4INR1+qH5QFFFFMAooooAK6vwJ41n8IaoSymWwuCBcRDr/ALw9xXKUVnUpxqwcJq6ZpSqzpTU4PVHu174q0O6+ImhahFqtt9lWymDyNIFCE4wGz0Psag+KHiPRtS8Dz29hq1ndTGVCI4plZiBnsDXjuk6m+kajHdxQwzlODHOm5WB6giu61Dxh4a1zQ4IF0iHTr8XULPtjGwoG+bDDtj1rxpYFUqtOUU2o+ne+p7cMf7alUjJpN+va2h5wSOeR+dfQfgrxToNn4L0u3utasYJo4QHjedQynJ6jNaFzpvhq80W8m06102cC3dlaEK2PlPpVLwNoGlXPgfSZrjTLaWR4AWdogSTk965sXi6eJo+/Fqz/AEZ1YPB1MLV9ySd1+qKfhTxNodrq3iV7jWLKJJ9R3xM86gOuxRkc8imXniXRH+KGnXi6vZtbJp0iNMJ12qxPAJz1qbwvo2kNqvif7XYWnlwajtTzUACLsXgZ6CsLxHqfhLRvHtpcNDZz2cdi6yRWyBwZM8A44zWUYU51pKKbfL+hpKdSFGLk0lzef8xseOfEuiXtjpa2er2c7R6nBI4jnViqhhknB6Csn4j/ABMgNpLo/hy4EzTLtuLpDlQp6qp759a4TxX4tg179xp2kWunWituGxB5jfUj+VYFlZT6jfwWdnGZJ53EcaDuScV6eHy+nGMZVPs3dn+p5mIzGpKUo0/tWV1+h3Hwn8LLq2uNq9+oFhphD5bo0nUD6D7x/D1rpNf1ZtY1aS458ofJEp7KP8ev41r6lDB4Q8I2nhrT2BlZN1zIOrE/eP4n9BiuWr8+4hzJ4vEckX7q/r+v+AfoPDuWrCYfnkvef9f1/wAEK7b4df8AMR/7Zf8As9bukaRpsuiWMkmn2ru1vGWZoFJJKjknFaVtZWtnu+yW0MG/G7yowu7HTOPrWGEwEqVSNVy/po6MXj41acqSX9JnjVFev/2LpX/QMs//AAHX/CuD8cWtvaa3DHawRwIbdSVjQKCdzc4FcGIwEqFPncrndh8fGvPkSsc5RRWv4UgiuPE1pFcRJLG2/KOoYH5GPQ1w04c81BdXY7qk+SDm+iuZFdR4r/5AHh7/AK9f/ZY67f8AsXSv+gZZ/wDgOv8AhUsun2U8ccc9nBIkQxGrxKQg9ACOOg/Kvchls4wnHm3t+dzw55lCU4y5dr/lY8bq3pWoyaVqUN3DyUPzL/eXuK9I1fSNNi0S+kj0+1R1t5CrLAoIIU8g4ryyvMxGHnhJx113PTw+Ihi4S002GfFzw3H5sHinS13Wt6ALjaPuvjhvxHB9x715hXvXhqa21jS7vwzqvz290jeXnsepA9x94e4rxbXtGufD+uXWmXo/e277d2OHXqGHsRg1+pZDmKxmGUX8S/r+vkflmf5c8HiXJfDL+vx/zM6iiivoj5wKKKKACiiigAooooAkjnliz5UsiZ67WIzVyDXdVtYFhttRuYo1GAiSEAVn0VLjF7opTlHZk73lzIzl7iVjIdz5c/MfU1DSUU7JbCbb3CvWPhJ4fisbO58XaouI4lZLQEdezMP/AEEfjXm+haW+t69ZabG203Uyxlv7oJ5P4DJr2vxZdwWVvbeHtMXy7WzRQyj1A4H5cn3NfOcQZh9Uw3Kt5f1/Xlc+k4ey/wCt4nnltH+v687HPahey6jfzXc5+eVs49B2H4Cq9FFfkjbk7s/XElFWR6/ov/IA0/8A69Y//QRV2vNrXxxqVpZw20cFqUhjWNSyNkgDHPzVL/wsDVf+fez/AO+G/wDiq+khmWHUUnf7j5ueXV3JtW+89Erzv4gf8h+D/r1X/wBCaj/hYGq/8+9n/wB8N/8AFVjaxrFxrd4tzdJGjrGIwIwQMAk9yfWuXG42jWo8kNzqwWCq0avPPYoVt+Dv+Rss/wDgf/oDViVa03UJdL1CK8t1RpI84DgkcgjsR615NGShVjJ7Jo9atFzpSit2mexUV53/AMLA1X/n3s/++G/+Ko/4WBqv/PvZ/wDfDf8AxVfR/wBp4fu/uPnf7NxHl952+tf8gDUP+vWT/wBBNeQV0d1441K7s5raSC1CTRtGxVGyARjj5q5yvIx+Ip15RcOh62Aw9ShFqfUfBNJbXCTQsUkjYMrDsRWl8SNFj8VeE4PE2nR/6XZptuUUclO//fJ5+hNZVdH4M1L7PqhsJwHtrwbGVuRuxx+fT8a6Mnx0sHiU1sznzjARxmGcXujwqitjxZpiaN4u1PT4V2xQ3DCNSeiHlR+RFFfssJKcVJdT8YnFwk4voY9FLRVEiUUtFACUUtFACUUtFACUUtFAGj4e1c6D4isdTEfmC2mDsgONw7j8s17FLqHg/wAVP/aMHiCDTZpQDJFdMqEHHoxH6HFeGUV5eYZXQzBJVeh6uX5riMvb9l1Pb/7I8N/9DrpX/f2P/wCOUf2R4b/6HXSv+/sf/wAcrxCivG/1UwXn+P8Amez/AK2Y3sv6+R7f/ZHhv/oddK/7+x//AByj+yPDf/Q66V/39j/+OV4hRR/qpgvP8f8AMP8AWzG9l/XyPb/7I8N/9DrpX/f2P/45R/ZHhv8A6HXSv+/sf/xyvEKKP9VMF5/j/mH+tmN7L+vke3/2R4b/AOh10r/v7H/8co/sjw3/ANDrpX/f2P8A+OV4hRR/qpgvP8f8w/1sxvZf18j2/wDsjw3/ANDrpX/f2P8A+OUf2R4b/wCh10r/AL+x/wDxyvEKSj/VTBef4/5h/rZjey/r5HuH9keG/wDoddK/7+x//HKP7I8N/wDQ66V/39j/APjleH0Uf6qYLz/H/MP9bMd2X9fI9w/sjw3/ANDrpX/f2P8A+OVJbXfg/wAN3K3114ltr54gWjjtiHyfopPP5V4YKKunwtgoSUtdCKnFONnFx01NHxDqv9t+I7/UgrItzO0iq3VVzwD+GKKzqK+ojFRiorofLSk5Scnuz//Z", + "Label": "Security Audit", + "Link": { + "Label": "More info", + "Url": "http://asitha.info/" + } + }, + "List": [ + { + "Title": "Active Directory Security Audit Solution", + "Content": "## User Account Security Monitoring View\n1. Domain logged on users last 24 hours\n2. User logging failures\n3. Computers where users failed to login\n4. All Locked accounts last 24 hours\n5. Finding users logged on computer (IP)\n\n\nPost your feedback and Let us know how to improve this solution \n\n#### Solution by Asitha De Silva" + } + ] + } + } + ], + "OverviewTile": { + "Id": "SingleNumberBuilderTile", + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "Tile": { + "Legend": "Faild Login Attampts", + "Query": "SecurityEvent | where AccountType =~ \"user\" and EventID == 4625 | summarize Failed = count() by Account| count // Oql: Type=SecurityEvent AccountType=user EventID=4625 | measure count() as Failed by Account" + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "search *// Oql: *", + "Message": "" + } + } + } + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT744 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT744 new file mode 100644 index 0000000..bb34a46 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT744 @@ -0,0 +1,406 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsAutomation.json" + ], + "timestamp": 1642962900609, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsAutomation.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT744", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT744", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the Automation account" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Specify the region for your Automation account" + } + }, + "omsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the OMS workspace" + } + }, + "omsRecoveryVaultName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the ASR Recovery Vault" + } + }, + "azureAdmin": { + "type": "string", + "metadata": { + "description": "Enter your service admin user" + } + }, + "azureAdminPwd": { + "type": "securestring", + "metadata": { + "description": "Enter the pwd for the service admin user. The pwd is enrypted during runtime and in the Automation assets" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "psModules": { + "azureRmProfile": { + "name": "AzureRm.Profile", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.profile.2.8.0.nupkg" + }, + "azureRmResources": { + "name": "AzureRm.Resources", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.resources.3.8.0.nupkg" + }, + "azureStorage": { + "name": "Azure.Storage", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azure.storage.2.8.0.nupkg" + }, + "azureRmStorage": { + "name": "AzureRm.Storage", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.storage.2.8.0.nupkg" + }, + "azureRmOperationalInsights": { + "name": "AzureRm.OperationalInsights", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.operationalinsights.2.8.0.nupkg" + }, + "azureRmSiteRecovery": { + "name": "AzureRm.SiteRecovery", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.siterecovery.3.7.0.nupkg" + }, + "azureRmRecoveryServices": { + "name": "AzureRm.RecoveryServices", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.recoveryservices.2.8.0.nupkg" + }, + "azureRmBackup": { + "name": "AzureRm.Backup", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.backup.2.8.0.nupkg" + }, + "azureRmCompute": { + "name": "AzureRm.Compute", + "url": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.compute.2.9.0.nupkg" + } + }, + "runbooks": { + "omsABUscript": { + "name": "AzureIaasBackup", + "version": "1.0.0.0", + "description": "Runbook to automatically backup IaaS VMs within the ABU region", + "type": "PowerShell" + } + }, + "scriptUri": "[uri(parameters('_artifactsLocation'), concat('scripts/Automated-IaaS-Backup.ps1', parameters('_artifactsLocationSasToken')))]", + "azureSubscriptionId": "AzureSubscriptionId", + "omsWorkspaceId": "OMSWorkspaceId", + "omsWorkspaceKey": "OMSWorkspacekey", + "omsWorkspaceNameAsset": "OMSWorkspaceName", + "omsResourceGroupName": "OMSResourceGroupName", + "omsRecoveryVault": "OMSRecoveryVault", + "azureCredentials": "AzureCredentials" + }, + "resources": [ + { + "apiVersion": "2021-04-01", + "location": "location", + "name": "", + "type": "Microsoft.Automation/automationAccounts", + "comments": "Automation account for OMS", + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "OMSWorkspaceId", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts// parameters('omsAutomationAccountName')" + ], + "properties": { + "description": "OMS Workspace Id", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')),'2020-10-01').customerId,'\"')]" + } + }, + { + "name": "OMSWorkspacekey", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "properties": { + "description": "OMS Workspace key", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2020-10-01').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureSubscriptionId", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "properties": { + "description": "Azure Subscription Id", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "OMSRecoveryVault", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "properties": { + "description": "OMS Recovery Vault Name", + "value": "\"parameters('omsRecoveryVaultName')\"" + } + }, + { + "name": "OMSResourceGroupName", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "properties": { + "description": "OMS Recovery Vault Name", + "value": "[concat('\"',resourceGroup().name,'\"')]" + } + }, + { + "name": "AzureCredentials", + "type": "credentials", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "properties": { + "description": "Azure Subscription Credentials", + "password": "azureAdminPwd", + "userName": "azureAdmin" + } + }, + { + "name": "OMSWorkspaceName", + "type": "variables", + "apiVersion": "2021-04-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "properties": { + "description": "OMS Recovery Vault Name", + "value": "\"parameters('omsWorkspaceName')\"" + } + }, + { + "name": "(psModules).azureRmOperationalInsights.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmOperationalInsights.url" + } + } + }, + { + "name": "(psModules).azureRmResources.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmResources.url" + } + } + }, + { + "name": "(psModules).azureRmStorage.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmStorage.url" + } + } + }, + { + "name": "(psModules).azureStorage.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureStorage.url" + } + } + }, + { + "name": "(psModules).azureRmCompute.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmCompute.url" + } + } + }, + { + "name": "(psModules).azureRmSiteRecovery.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmSiteRecovery.url" + } + } + }, + { + "name": "(psModules).azureRmBackup.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmBackup.url" + } + } + }, + { + "name": "(psModules).azureRmRecoveryServices.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules/omsautomationAccountName/(psModules).azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmRecoveryServices.url" + } + } + }, + { + "name": "(psModules).azureRmProfile.name", + "type": "Modules", + "apiVersion": "2019-06-01", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "properties": { + "contentLink": { + "uri": "(psModules).azureRmProfile.url" + } + } + }, + { + "name": "(runbooks).omsABUscript.name", + "type": "runbooks", + "apiVersion": "2019-06-01", + "location": "location", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/variables/ parameters('omsAutomationAccountName')/AzureSubscriptionId", + "Microsoft.Automation/automationAccounts/variables/ parameters('omsAutomationAccountName')/OMSWorkspaceId", + "Microsoft.Automation/automationAccounts/variables/ parameters('omsAutomationAccountName')/OMSWorkspacekey", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmProfile.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmResources.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmCompute.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureStorage.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmStorage.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmRecoveryServices.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmSiteRecovery.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmBackup.name", + "Microsoft.Automation/automationAccounts/Modules/ parameters('omsAutomationAccountName')/(psModules).azureRmOperationalInsights.name" + ], + "properties": { + "runbookType": "(runbooks).omsABUscript.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).omsABUscript.description", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/Automated-IaaS-Backup.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "(runbooks).omsABUscript.version" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT745 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT745 new file mode 100644 index 0000000..75b865d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT745 @@ -0,0 +1,155 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsRecoveryServices.json" + ], + "timestamp": 1642962900617, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsRecoveryServices.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT745", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.recoveryservices/vaults", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT745", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsRecoveryVaultName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Assign a name for the ASR Recovery Vault" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Specify the region for your Recovery Vault" + } + } + }, + "variables": { + "recoveryStorageAccountName": "[toLower(concat('asr', uniqueString(resourceGroup().id)))]", + "recoveryStorageType": "Standard_LRS" + }, + "resources": [ + { + "apiVersion": "2020-02-02", + "location": "location", + "name": "", + "type": "Microsoft.RecoveryServices/vaults", + "comments": "ASR Recovery Vault for OMS", + "sku": { + "name": "RS0", + "tier": "Standard" + }, + "properties": {}, + "resources": [ + { + "apiVersion": "2016-06-01", + "name": "HyperVPrimarySite", + "type": "replicationFabrics", + "id": "Microsoft.RecoveryServices/vaults/replicationFabrics/ parameters('omsRecoveryVaultName')/HyperVPrimarySite", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults// parameters('omsRecoveryVaultName')" + ], + "properties": { + "friendlyName": "PrimarySite", + "fabricType": "HyperVSite" + } + }, + { + "apiVersion": "2020-02-02", + "name": "DefaultVMwarePolicy", + "type": "replicationPolicies", + "id": "Microsoft.RecoveryServices/vaults/replicationPolicies/ parameters('omsRecoveryVaultName')/DefaultVMwarePolicy", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/ parameters('omsRecoveryVaultName')" + ], + "properties": { + "subscriptionid": "[subscription().subscriptionId]", + "friendlyName": "DefaultVMwarePolicy", + "providerSpecificInput": { + "instanceType": "InMageAzureV2", + "crashConsistentFrequencyInMinutes": 5, + "recoveryPointThresholdInMinutes": 15, + "recoveryPointHistory": 1440, + "appConsistentFrequencyInMinutes": 60, + "multiVmSyncStatus": "Enable" + } + } + }, + { + "apiVersion": "2020-02-02", + "name": "DefaultVMwarePolicy-failback", + "type": "replicationPolicies", + "id": "Microsoft.RecoveryServices/vaults/replicationPolicies/ parameters('omsRecoveryVaultName')/DefaultVMwarePolicy-failback", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults/ parameters('omsRecoveryVaultName')", + "Microsoft.RecoveryServices/vaults/replicationPolicies/ parameters('omsRecoveryVaultName')/DefaultVMwarePolicy" + ], + "properties": { + "subscriptionid": "[subscription().subscriptionId]", + "friendlyName": "DefaultVMwarePolicy-failback", + "providerSpecificInput": { + "instanceType": "InMage", + "recoveryPointThresholdInMinutes": 15, + "recoveryPointHistory": 1440, + "appConsistentFrequencyInMinutes": 60, + "multiVmSyncStatus": "Enable" + } + } + }, + { + "apiVersion": "2020-02-02", + "name": "DefaultHyperVPolicy", + "type": "replicationPolicies", + "id": "Microsoft.RecoveryServices/vaults/replicationPolicies/ parameters('omsRecoveryVaultName')/DefaultHyperVPolicy", + "dependsOn": [ + "Microsoft.RecoveryServices/vaults// parameters('omsRecoveryVaultName')" + ], + "properties": { + "subscriptionId": "[subscription().subscriptionId]", + "friendlyName": "DefaultHyperVPolicy", + "providerSpecificInput": { + "instanceType": "HyperVReplicaAzure", + "recoveryPointHistoryDurationInHours": 2, + "applicationConsistentSnapshotFrequencyInHours": 0, + "replicationInterval": 900, + "activeStorageAccountId": "[reference(resourceId('Microsoft.Storage/storageAccounts/',variables('recoveryStorageAccountName')))]", + "encryption": "Disable" + } + } + } + ] + }, + { + "apiVersion": "2015-06-15", + "location": "location", + "name": "[toLower(concat('asr', uniqueString(resourceGroup().id)))]", + "type": "Microsoft.Storage/storageAccounts", + "comments": "Storage account for ASR", + "properties": { + "accountType": "Standard_LRS" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT746 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT746 new file mode 100644 index 0000000..930fec5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT746 @@ -0,0 +1,1043 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsWorkspace.json" + ], + "timestamp": 1642962900624, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-all-deploy/nestedtemplates/omsWorkspace.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT746", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT746", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Assign a name for the Log Analytic Workspace Name" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Specify the region for your Workspace" + } + } + }, + "variables": { + "batch1": { + "solutions": [ + { + "name": "Security(, parameters(omsWorkspaceName), )", + "marketplaceName": "Security" + }, + { + "name": "AgentHealthAssessment(, parameters(omsWorkspaceName), )", + "marketplaceName": "AgentHealthAssessment" + }, + { + "name": "ChangeTracking(, parameters(omsWorkspaceName), )", + "marketplaceName": "ChangeTracking" + }, + { + "name": "Updates(, parameters(omsWorkspaceName), )", + "marketplaceName": "Updates" + }, + { + "name": "AzureActivity(, parameters(omsWorkspaceName), )", + "marketplaceName": "AzureActivity" + }, + { + "name": "AzureAutomation(, parameters(omsWorkspaceName), )", + "marketplaceName": "AzureAutomation" + }, + { + "name": "ADAssessment(, parameters(omsWorkspaceName), )", + "marketplaceName": "ADAssessment" + }, + { + "name": "SQLAssessment(, parameters(omsWorkspaceName), )", + "marketplaceName": "SQLAssessment" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "location": "location", + "name": "omsWorkspaceName", + "type": "Microsoft.OperationalInsights/workspaces", + "comments": "Log Analytics workspace", + "properties": { + "sku": { + "name": "pergb2018" + }, + "retentionInDays": 180 + }, + "resources": [ + { + "name": "AzureActivityLog", + "type": "datasources", + "apiVersion": "2015-11-01-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "AzureActivityLog", + "properties": { + "linkedResourceId": "[subscriptionResourceId('Microsoft.Insights/eventTypes', 'management')]" + } + }, + { + "apiVersion": "2017-03-15-preview", + "name": "omsWorkspaceName/HyperV1", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "ETag": "*", + "category": "HyperV", + "displayName": "VMs created last 24 hours", + "query": "Event | where EventLog == \"Microsoft-Windows-Hyper-V-VMMS-Admin\" and EventID == 13003 and EventLevelName =~ \"information\" and TimeGenerated > ago(1d)" + } + }, + { + "apiVersion": "2017-03-15-preview", + "name": "omsWorkspaceName/HyperV2", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "ETag": "*", + "category": "HyperV", + "displayName": "VMs deleted last 24 hours", + "Query": "Event | where EventLog == \"Microsoft-Windows-Hyper-V-VMMS-Admin\" and EventID == 13003 and EventLevelName =~ \"information\" and TimeGenerated > ago(1d)" + } + }, + { + "apiVersion": "2017-03-15-preview", + "name": "omsWorkspaceName/HyperV3", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "ETag": "*", + "category": "HyperV", + "displayName": "Replication throughput per VM over last 24 hours", + "query": "Perf | where ObjectName == \"Hyper-V Azure Replication Agent\" and CounterName == \"Replication Throughput\" and TimeGenerated > ago(1d) | summarize AggregatedValue = avg(CounterValue) by InstanceName, bin(TimeGenerated, 15m)" + } + }, + { + "name": "omsWorkspaceName/SoftwareUpdateFailed1", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "ETag": "*", + "category": "Software Updates", + "displayName": "Failed Software Updates in the last week", + "query": "Event | where EventID == 20 and Source == \"Microsoft-Windows-WindowsUpdateClient\" and EventLog == \"System\" and TimeGenerated > ago(7d)" + } + }, + { + "name": "omsWorkspaceName/Network1", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "ETag": "*", + "category": "Networking", + "displayName": "NICs disconnected from the network in last 24 hours", + "query": "Event | where EventLog == \"System\" and Source == \"TCPIP\" and EventID == 4202 and TimeGenerated > ago(24h) | summarize AggregatedValue = count() by Computer" + } + }, + { + "name": "omsWorkspaceName/Network2", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "ETag": "*", + "category": "Networking", + "displayName": "Duplicate IP addresses detected in the last 24 hours", + "query": "Event | where (EventID == 4198 or EventID == 4199) and Source == \"TCPIP\" and EventLog == \"System\" and TimeGenerated > ago(24h)" + } + }, + { + "name": "omsWorkspaceName/NTFS1", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "ETag": "*", + "category": "NTFS", + "displayName": "NTFS File System Corruption in the last 24 hours", + "query": "Event | where EventLog == \"System\" and EventID == 98 and Source =~ \"Microsoft-Windows-Ntfs\" and TimeGenerated > ago(1d) | summarize AggregatedValue = count() by Computer" + } + }, + { + "name": "omsWorkspaceName/NTFS2", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "ETag": "*", + "category": "NTFS", + "displayName": "NTFS User Disk Quota Reached", + "query": "Event | where EventLog == \"System\" and (EventID == 40 or EventID == 36) and Source =~ \"Disk\" and TimeGenerated > ago(24h) | summarize AggregatedValue = count() by Computer" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LogicalDisk1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "LogicalDisk", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Avg Disk sec/Read" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LogicalDisk2", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "LogicalDisk", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Avg Disk sec/Write" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LogicalDisk3", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "LogicalDisk", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Current Disk Queue Length" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LogicalDisk4", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "LogicalDisk", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Disk Reads/sec" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LogicalDisk5", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "LogicalDisk", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Disk Transfers/sec" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LogicalDisk6", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "LogicalDisk", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Disk Writes/sec" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LogicalDisk7", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "LogicalDisk", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Free Megabytes" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LogicalDisk8", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "LogicalDisk", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "% Free Space" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Memory1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Memory", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Available MBytes" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Memory2", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Memory", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "% Committed Bytes In Use" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Network1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Network Adapter", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Bytes Received/sec" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Network2", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Network Adapter", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Bytes Sent/sec" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Network3", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Network Adapter", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Bytes Total/sec" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "CPU1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Processor", + "instanceName": "_Total", + "intervalSeconds": 10, + "counterName": "% Processor Time" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "CPU2", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "System", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Processor Queue Lenght" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "System", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsEvent", + "properties": { + "eventLogName": "System", + "eventTypes": [ + { + "eventType": "Error" + }, + { + "eventType": "Warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Application", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsEvent", + "properties": { + "eventLogName": "Application", + "eventTypes": [ + { + "eventType": "Error" + }, + { + "eventType": "Warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Microsoft-Windows-Hyper-V-VMMS-Admin", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsEvent", + "properties": { + "eventLogName": "Microsoft-Windows-Hyper-V-VMMS-Admin", + "eventTypes": [ + { + "eventType": "Error" + }, + { + "eventType": "Warning" + }, + { + "eventType": "Information" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent1", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Average Replication Size" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent2", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Replication Throughput" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent3", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Network Send Throughput" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent4", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Replication Count" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent5", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Network Bytes Sent" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent6", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Last Replication Size" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Hyper-VAzureReplicationAgent7", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "WindowsPerformanceCounter", + "properties": { + "objectName": "Hyper-V Azure Replication Agent", + "instanceName": "*", + "intervalSeconds": 10, + "counterName": "Resynchronized Bytes" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Linux", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "LinuxPerformanceObject", + "properties": { + "performanceCounters": [ + { + "counterName": "% Used Inodes" + }, + { + "counterName": "Free Megabytes" + }, + { + "counterName": "% Used Space" + }, + { + "counterName": "Disk Transfers/sec" + }, + { + "counterName": "Disk Reads/sec" + }, + { + "counterName": "Disk Writes/sec" + } + ], + "objectName": "Logical Disk", + "instanceName": "*", + "intervalSeconds": 10 + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "LinuxPerfCollection", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "LinuxPerformanceCollection", + "properties": { + "state": "Enabled" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "IISLog", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "IISLogs", + "properties": { + "state": "OnPremiseEnabled" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "Syslog", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "LinuxSyslog", + "properties": { + "syslogName": "kern", + "syslogSeverities": [ + { + "severity": "emerg" + }, + { + "severity": "alert" + }, + { + "severity": "crit" + }, + { + "severity": "err" + }, + { + "severity": "warning" + } + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "datasources", + "name": "SyslogCollection", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "kind": "LinuxSyslogCollection", + "properties": { + "state": "Enabled" + } + } + ] + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(variables('batch1').solutions[copyIndex()].Name)]", + "location": "location", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName" + }, + "plan": { + "name": "(batch1).solutions[copyIndex()].name", + "product": "[concat('OMSGallery/', variables('batch1').solutions[copyIndex()].marketplaceName)]", + "promotionCode": "", + "publisher": "Microsoft" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT747 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT747 new file mode 100644 index 0000000..13cdebb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT747 @@ -0,0 +1,187 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-all-deploy/azuredeploy.json", + "/demos/oms-all-deploy/azuredeploy.parameters.json" + ], + "timestamp": 1642962900635, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-all-deploy/azuredeploy.json", + "/demos/oms-all-deploy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT747", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT747", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsRecoveryVaultName": { + "type": "string", + "metadata": { + "description": "Assign a name for the ASR Recovery Vault" + }, + "value": "GEN-UNIQUE-8" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the region for your Recovery Vault" + } + }, + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Assign a name for the Log Analytic Workspace Name" + }, + "value": "GEN-UNIQUE-8" + }, + "omsAutomationAccountName": { + "type": "string", + "metadata": { + "description": "Assign a name for the Automation account" + }, + "value": "GEN-UNIQUE-10" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "azureAdmin": { + "type": "string", + "metadata": { + "description": "Enter your service admin user" + }, + "value": "azureadmin" + }, + "azureAdminPwd": { + "type": "securestring", + "metadata": { + "description": "Enter the pwd for the service admin user. The pwd is enrypted during runtime and in the Automation assets" + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "nestedTemplates": { + "omsRecoveryServices": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/omsRecoveryServices.json', parameters('_artifactsLocationSasToken')))]", + "omsAutomation": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/omsAutomation.json', parameters('_artifactsLocationSasToken')))]", + "omsWorkspace": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/omsWorkspace.json', parameters('_artifactsLocationSasToken')))]" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "omsWorkspace", + "dependsOn": [ + "Microsoft.Resources/deployments//omsRecoveryServices" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsWorkspace", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsWorkspaceName": { + "value": "GEN-UNIQUE-8" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "omsRecoveryServices", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsRecoveryServices", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsRecoveryVaultName": { + "value": "GEN-UNIQUE-8" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "omsAutomation", + "dependsOn": [ + "Microsoft.Resources/deployments//omsRecoveryServices", + "Microsoft.Resources/deployments//omsWorkspace" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsAutomation", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsAutomationAccountName": { + "value": "GEN-UNIQUE-10" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "omsRecoveryVaultName": { + "value": "GEN-UNIQUE-8" + }, + "omsWorkspaceName": { + "value": "GEN-UNIQUE-8" + }, + "azureAdmin": { + "value": "azureadmin" + }, + "azureAdminPwd": { + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT748 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT748 new file mode 100644 index 0000000..d73fd50 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT748 @@ -0,0 +1,401 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-automation-solution/azuredeploy.json", + "/demos/oms-automation-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900648, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-automation-solution/azuredeploy.json", + "/demos/oms-automation-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT748", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT748", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "workspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specify the workspace name" + }, + "value": "GEN-UNIQUE" + }, + "workspaceSku": { + "type": "string", + "defaultValue": "standard", + "allowedValues": [ + "free", + "pernode", + "standard" + ], + "metadata": { + "description": "Select the SKU for your workspace" + }, + "value": "free" + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "AzureAutomationJobMonitoring", + "solutionName": "[concat('AzureAutomationJobMonitoring', '[', parameters('workspaceName'), ']')]", + "publisher": "cameron.fuller@catapultsystems.com", + "displayName": "Azure Automation Job Monitoring", + "description": "Monitor automation runbook jobs", + "author": "cameron.fuller@catapultsystems.com" + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "free" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "Name": "Azure Automation Job Monitoring", + "Author": "cameron.fuller@catapultsystems.com", + "Source": "Local", + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Recent Azure Automation Jobs", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs run" + }, + "Donut": { + "Query": "Category=JobLogs | measure count() by RunbookName_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "Category=JobLogs | measure count() by RunbookName_s", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Name", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Recent Azure Automation Jobs", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Jobs run" + }, + "LineChart": { + "Query": "Category=JobLogs NOT(ResultType=\"started\") | measure Count() by RunbookName_s | display linechart", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "Category=JobLogs NOT(ResultType=\"started\") | measure Count() by RunbookName_s", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Type", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Recent Azure Automation Job", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Result" + }, + "Donut": { + "Query": "Category=JobLogs | measure count() by ResultType", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "Category=JobLogs | measure count() by ResultType", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Results", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Recent Azure Automation Job Streams", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Job Streams" + }, + "Donut": { + "Query": "Category=JobStreams | measure count() by RunbookName_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "Category=JobStreams | measure count() by RunbookName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "Donut": { + "Query": "Category=JobLogs | measure count() by RunbookName_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*" + } + } + } + } + } + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE/(omsSolutions).customSolution.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE/(omsSolutions).customSolution.name" + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT749 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT749 new file mode 100644 index 0000000..b3b9884 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT749 @@ -0,0 +1,1390 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeploy.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900658, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeploy.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT749", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT749", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Create a new or use an existing log analytics workspace." + }, + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "wescentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + }, + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the SKU for Log Analytics" + }, + "value": "standalone" + }, + "omsAutomationAccountName": { + "type": "string", + "metadata": { + "description": "Use an existing Automation account or create a new" + }, + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + }, + "value": "eastus2" + }, + "omsDataIngestionFrequency": { + "type": "string", + "defaultValue": "Hourly", + "allowedValues": [ + "Hourly", + "Daily" + ], + "metadata": { + "description": "Specify the Azure Usage data retrieval frequency" + }, + "value": "Hourly" + }, + "currency": { + "type": "string", + "defaultValue": "USD", + "allowedValues": [ + "ARS", + "AUD", + "BRL", + "CAD", + "CHF", + "DKK", + "EUR", + "GBP", + "HKD", + "IDR", + "INR", + "JPY", + "KRW", + "MXN", + "MYR", + "NOK", + "NZD", + "RUB", + "SAR", + "SEK", + "TRY", + "TWD", + "USD", + "ZAR" + ], + "metadata": { + "description": "Specify the Azure Billing Currency" + }, + "value": "USD" + }, + "regionInfo": { + "type": "string", + "defaultValue": "United States", + "allowedValues": [ + "Afghanistan", + "Albania", + "Algeria", + "Angola", + "Argentina", + "Armenia", + "Australia", + "Austria", + "Azerbaijan", + "Bahamas", + "Bahrain", + "Bangladesh", + "Barbados", + "Belarus", + "Belgium", + "Belize", + "Bermuda", + "Bolivia", + "Bosnia and Herzegovina", + "Botswana", + "Brazil", + "Brunei", + "Bulgaria", + "Cameroon", + "Canada", + "Cape Verde", + "Cayman Islands", + "Chile", + "Colombia", + "Costa Rica", + "Cote D'Ivoire", + "Croatia", + "Curacao", + "Cyprus", + "Czech Republic", + "Denmark", + "Dominican Republic", + "Ecuador", + "Egypt", + "El Salvador", + "Estonia", + "Ethiopia", + "Faroe Islands", + "Fiji", + "Finland", + "France", + "Georgia", + "Germany", + "Ghana", + "Greece", + "Guatemala", + "Honduras", + "Hong Kong SAR", + "Hungary", + "Iceland", + "India", + "Indonesia", + "Iraq", + "Ireland", + "Israel", + "Italy", + "Jamaica", + "Japan", + "Jordan", + "Kazakhstan", + "Kenya", + "Korea", + "Kuwait", + "Kyrgyzstan", + "Latvia", + "Lebanon", + "Libya", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macao SAR", + "Macedonia, FYRO", + "Malaysia", + "Malta", + "Mauritius", + "Mexico", + "Moldova", + "Monaco", + "Mongolia", + "Montenegro", + "Morocco", + "Namibia", + "Nepal", + "Netherlands", + "New Zealand", + "Nicaragua", + "Nigeria", + "Norway", + "Oman", + "Pakistan", + "Palestinian Territory", + "Panama", + "Paraguay", + "Peru", + "Philippines", + "Poland", + "Portugal", + "Puerto Rico", + "Qatar", + "Romania", + "Russia", + "Rwanda", + "Saint Kitts and Nevis", + "Saudi Arabia", + "Senegal", + "Serbia", + "Singapore", + "Slovakia", + "Slovenia", + "South Africa", + "Spain", + "Sri Lanka", + "Sweden", + "Switzerland", + "Taiwan", + "Tajikistan", + "Tanzania", + "Thailand", + "Trinidad and Tobago", + "Tunisia", + "Turkey", + "Turkmenistan", + "U.S. Virgin Islands", + "Uganda", + "Ukraine", + "United Arab Emirates", + "United Kingdom", + "United States", + "Uruguay", + "Uzbekistan", + "Venezuela", + "Vietnam", + "Yemen", + "Zambia", + "Zimbabwe" + ], + "metadata": { + "description": "Specify region for Azure BillingSee https://github.com/Azure/azure-content-nlnl/blob/master/articles/billing-countries-and-currencies.md for details." + }, + "value": "United States" + }, + "locale": { + "type": "string", + "defaultValue": "en-US", + "allowedValues": [ + "en-AU", + "ar-AE", + "ar-BH", + "ar-DZ", + "ar-IQ", + "ar-JO", + "ar-KW", + "ar-LB", + "ar-LY", + "ar-MA", + "ar-OM", + "ar-QA", + "ar-SA", + "ar-TN", + "ar-YE", + "bg-BG", + "ca-ES", + "cs-CZ", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "de-LI", + "de-LU", + "el-CY", + "el-GR", + "en-AE", + "en-BZ", + "en-CA", + "en-DZ", + "en-GB", + "en-HK", + "en-IE", + "en-IN", + "en-JM", + "en-JO", + "en-KE", + "en-MT", + "en-MY", + "en-NG", + "en-NZ", + "en-PH", + "en-SG", + "en-SI", + "en-SK", + "en-TH", + "en-TT", + "en-US", + "en-ZA", + "en-ZW", + "es-AR", + "es-BO", + "es-CL", + "es-CO", + "es-CR", + "es-DO", + "es-EC", + "es-ES", + "es-GT", + "es-HN", + "es-MX", + "es-NI", + "es-PA", + "es-PE", + "es-PR", + "es-PY", + "es-SV", + "es-US", + "es-UY", + "es-VE", + "et-EE", + "eu-ES", + "fi-FI", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-DZ", + "fr-FR", + "fr-LU", + "fr-MA", + "fr-MC", + "fr-SN", + "fr-TN", + "gl-ES", + "he-IL", + "hi-IN", + "hr-HR", + "hu-HU", + "id-ID", + "it-CH", + "it-IT", + "ja-JP", + "kk-KZ", + "ko-KR", + "lt-LT", + "lv-LV", + "ms-BN", + "ms-MY", + "nb-NO", + "nl-BE", + "nl-NL", + "pl-PL", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-BY", + "ru-KZ", + "ru-RU", + "ru-UA", + "sk-SK", + "sl-SI", + "sr-Cyrl-RS", + "sr-Latn-ME", + "sr-Latn-RS", + "sv-FI", + "sv-SE", + "th-TH", + "tr-TR", + "uk-UA", + "vi-VN", + "zh-CN", + "zh-HK", + "zh-MO", + "zh-SG", + "zh-TW" + ], + "metadata": { + "description": "Specify locale for Azure Billing. See https://github.com/Azure/azure-content-nlnl/blob/master/articles/billing-countries-and-currencies.md for details." + }, + "value": "en-US" + }, + "offerDurableId": { + "type": "string", + "allowedValues": [ + "MS-AZR-0003P : Pay-As-You-Go", + "MS-AZR-0041P : Support Plans", + "MS-AZR-0042P : Support Plans", + "MS-AZR-0043P : Support Plans", + "MS-AZR-0044P : Free Trial", + "MS-AZR-0059P : Visual Studio Professional subscribers", + "MS-AZR-0060P : Visual Studio Test Professional subscribers", + "MS-AZR-0062P : MSDN Platforms subscribers", + "MS-AZR-0063P : Visual Studio Enterprise subscribers", + "MS-AZR-0064P : Visual Studio Enterprise (BizSpark) subscribers", + "MS-AZR-0029P : Visual Studio Enterprise (MPN) subscribers", + "MS-AZR-0022P : Visual Studio Dev Essentials members", + "MS-AZR-0023P : Pay-As-You-Go Dev/Test", + "MS-AZR-0148P : Enterprise Dev/Test", + "MS-AZR-0025P : Action Pack", + "MS-AZR-0036P : Microsoft Azure Sponsored Offer", + "MS-AZR-0120P : Azure Pass", + "MS-AZR-0130P : Azure Pass", + "MS-AZR-0111p : Azure in Open Licensing", + "MS-AZR-0144P : Microsoft Imagine", + "MS-AZR-0149P : BizSpark Plus", + "MS-AZR-0145P : Azure in CSP", + "MS-AZR-DE-0145P : Azure Germany in CSP for Microsoft Cloud Germany", + "MS-AZR-0044P : Azure Germany Free Trial", + "MS-AZR-DE-0003P : Azure Germany Pay-As-You-Go", + "MS-AZR-DE-0041P : Azure Germany Support Plans", + "MS-AZR-DE-0042P : Azure Germany Support Plans", + "MS-AZR-DE-0043P : Azure Germany Support Plans", + "MS-AZR-0051p : Azure NotInUse" + ], + "metadata": { + "description": "Specify the Azure Offer ID available in subscription details from Azure Portal" + }, + "value": "MS-AZR-0003P : Pay-As-You-Go" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-resource-usage-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + }, + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "ingestSchedulerGuid": { + "type": "string", + "defaultValue": "cb466319-e0a8-42e4-b993-36dc45c0b158", + "metadata": { + "description": "GUID for the schedule creation - create a unique before deploy" + }, + "value": "2c84767f-feaf-47b1-9bc0-e9280ec740b1" + } + }, + "variables": { + "runbooks": { + "ingestParentRunbook": { + "name": "AzureUsage-MS-Mgmt", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Usage data and events into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestSchedulerRunbook": { + "name": "AzureUsage-Schedules-MS-Mgmt", + "version": "1.0.0.1", + "description": "Runbook to automatically create required schedules for OMS Log Analytics ingestion", + "type": "PowerShell", + "Id": "" + } + }, + "parentRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureUsage-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "schedulerRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureUsage-Schedules-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "omsSolutions": { + "customSolution": { + "name": "Azure Usage", + "solutionName": "[concat('AzureUsage', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure Usage", + "description": "Monitor Azure Usage", + "author": "volkanc@microsoft.com" + } + }, + "opsInsightWorkspaceID": "AzureUsage-OPSINSIGHTS_WS_ID", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureUsage-OPSINSIGHTS_WS_KEY", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureUsage-AzureAutomationAccount-MS-Mgmt", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureUsage-AzureAutomationResourceGroup-MS-Mgmt", + "createScheduleResourceGroupType": "string", + "createScheduleResourceGroupDescription": "The name of the resource group", + "omsAutomationSku": "basic", + "ingestInterval": "1", + "ingestFrequency": "hour", + "ingestScheduleName": "AzureUsage-Scheduler-", + "propagatetags": "1" + }, + "resources": [ + { + "name": "GEN-UNIQUE-20", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "properties": { + "sku": { + "name": "standalone" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-20/(omsSolutions).customSolution.name", + "dependsOn": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "DisplayName": "(omsSolutions).customSolution.displayName", + "Description": "(omsSolutions).customSolution.description", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "", + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAztJREFUeNrUmktoE1EUhqexKj4zJWoaqIpVaVGxKr6ogsaNbhS0YKkKFeKmriwFEaXYnY+FYjeCbmtRRBeuXIlLMe1CXGlduBOt0rS1FaF2/A+ciWMy0yT3njvN/PBtMuHc8899zJ1zp8ZxHEtAKXAE7AdNYBOwGVKO+QQ+gDfgFfii23CNhoHV4CyzWzHGEBgEA2BUKQIZqJAG0A+mHTn9AvfB2krzqeTPi8AVMOWYE92UPrBY2kAzeOeEp/fcZsncYmWMsjaQBdut8LSN22zTnQMXwYwzf5rhHJSGUJdTPeoKyjNoGT0JnoIFCt1/GXwOuNYIbirE/APawbNyhlATmNS4W4fm6NW0Rlxa/baWmsQLwROwXGMC2orXSmkpeMw55lVooAe0aK4gcUMG3NWpJ8hAA+gVWAJtRXPlqpdzLTJwlbvJpAFbID7leK3QwCpwXughFDdsgNTJOecN0A9LhIKbHkIW59rpNdAhuA2wQ+gB0hnXQBLsiqCBnaCeDKTpxUYwcDwkA5TzYTLQKryTDGMOuDoQ44eDFcEhRNpCBtYJB42HaGC9O4klVRuwl1opPNdIa2KaG7dK7nSdgXZWxCwzskOYwPmtxISBuPEQxj9pnAx8NRC4LiQDo2RgJMI98DHGtUpppbgXvNSbMEAv9af5NTKKaicDtK/+ZmCNNi0qpyRpCH3nKnHUNOROYtIj4eDTXP9JMzfAlHAbg966UEKwXE71m70+NSH67bdgFTvhrQv9AA+E7sw98Nbnd/rtjlAbDznn/ypzKc2KnKuDc1TmWgXiT3KuRZU5Oq+6LrQ6BGlWIH6f5TlbK9zM9YNhzQaOKV4rR8M8RD23q7ibG0FOo4snwA6fuC18TVWU08Zyy+snwHNLrbxu8ZJ5F7zkIXUUdNP+XTEelddPgRfFAzZ4wmXAbBUcblAOF1QP+TJVcMSU0T2lPA7G5iH5HLctcsy6AWRDTD7LbYoedNeCS2DcYOK0SnVzW+In9S5JcEtzSfRL/DbHrigfnY896C2LPvQ4B/b4PBRLiZ7KdJg9wLvhMaUCqdDnNgkqtIJ9oBlspqITWMYvSj/5pWnE+ve5zev8hkxDfwUYAP0NkvYTPlJVAAAAAElFTkSuQmCC", + "Label": "Azure Offer Types", + "Link": { + "Label": "More info", + "Url": "https://azure.microsoft.com/en-us/support/legal/offer-details/" + } + }, + "List": [ + { + "Title": "Here Are the Common Azure Offers", + "Content": "[concat('Pay-As-You-Go **0003P** \nAzure Dynamics **0033P** \nFree Trial **0044P** \nVisual Studio Professional **0059P** \nVisual Studio Test Professional **0060P** \nMSDN Platforms **0062P** \nVisual Studio Enterprise **80063P**\nPay-As-You-Go Dev/Test **0023P** \nEnterprise Dev/Test **0148P** \n\n__Use : __\n\nType=AzureUsage_CL | Top 1 |select OfferDurableId_s\nto get the Azure Offer\n\n__Check More info on top for latest Azure Offer codes__\nSolition utilizes RateCard Api for the usage rates. Check : https://github.com/Azure/azure-content-nlnl/blob/master/articles/billing-countries-and-currencies.md to see supported currencies')]" + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "USAGE SUMMARY", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Spent by Subscription", + "Subtitle": "" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by AzureSubscription_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#ffb900", + "#009e49", + "#0072c6" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by AzureSubscription_s,meterCategory_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Usage-Currency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "SPEND by Service", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Spending - All Subscriptions", + "Subtitle": "Based on Hourly Usage and Azure Offer Selected" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by meterCategory_s ", + "CenterLegend": { + "Text": "Currency", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#009e49", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by meterCategory_s ", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Service", + "Value": "Cost" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "SPEND by Subscription", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "VM Deployment Cost Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureUsage_CL CostTag_s=Overall meterCategory_s=\"Virtual Machines\" |measure sum(Cost_d) as VMcost by AzureSubscription_s interval 1HOUR", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "Cost Currency" + } + } + }, + { + "Header": { + "Title": "Storage Consumption Cost Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall meterCategory_s=\"Storage\" |measure sum(Cost_d) by AzureSubscription_s interval 1HOUR", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "Cost Currency" + } + } + }, + { + "Header": { + "Title": "Data Management Cost Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall meterCategory_s=\"Data Management\" |measure sum(Cost_d) by AzureSubscription_s interval 1HOUR", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "Cost Currency" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VM CONSUMPTION COST", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "VM Cost Over Time", + "Subtitle": "Based on Hourly Usage and Azure Offer Selected" + }, + "LineChart": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall meterCategory_s=\"Virtual Machines\" |measure sum(Cost_d) by meterCategory_s interval 1HOUR", + "Callout": { + "Title": "Total", + "Series": "", + "Operation": "Sum" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall meterCategory_s=\"Virtual Machines\" | measure sum(Cost_d) by Resource", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Deployment", + "Value": "Cost Currency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Consumption Cost", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Consumption Cost Over Time", + "Subtitle": "Based on Hourly Usage and Azure Offer Selected" + }, + "LineChart": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall meterCategory_s=\"Storage\" |measure sum(Cost_d) by meterCategory_s Interval 1HOUR", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall meterCategory_s=\"Storage\" |measure sum(Cost_d) by Resource", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "Cost Currency" + }, + "Color": "#009e49", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "COST BY Tag", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Estimated Cost by Resource Tags", + "Subtitle": "Based on Daily Billing and Azure Offer Selected" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL | measure sum(TaggedCost_d) by Tag_s", + "CenterLegend": { + "Text": "Cost Currency", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#55d455", + "#ff8c00" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureUsage_CL | measure sum(TaggedCost_d) by Tag_s", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Tag", + "Value": "Cost in Currency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Cost BY RESOURCEGROUP", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Estimated Cost By Resource Group", + "Subtitle": "Based on Daily Usage and Azure Offer Selected" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by ResourceGroup", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by AzureSubscription_s,ResourceGroup", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "ResourceGroup", + "Value": "Count" + }, + "Color": "#009e49", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top Resources ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Cost by Resource", + "Subtitle": "All costs ( Network,Storage,Data) Associated with specific resource" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by Resource", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": " Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by Resource", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Resource ", + "Value": "Total Cost" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + } + ], + "OverviewTile": { + "Id": "SingleQueryDonutBuilderTileV1", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall | measure sum(Cost_d) by meterCategory_s ", + "CenterLegend": { + "Text": "Total Currency", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#009e49", + "#ff8c00" + ], + "valueColorMapping": [] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + } + ] + }, + { + "apiVersion": "2015-10-31", + "location": "eastus2", + "name": "GEN-UNIQUE-30", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "basic" + } + }, + "resources": [ + { + "name": "AzureUsage-OPSINSIGHTS_WS_ID", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "Value of the user's omsWorkspaceId", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').customerId,'\"')]" + } + }, + { + "name": "AzureUsage-OPSINSIGHTS_WS_KEY", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "Encrypted value of the user's omsWorkspaceKey", + "isEncrypted": 1, + "type": "string", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureUsage-AzureAutomationAccount-MS-Mgmt", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": false, + "type": "string", + "value": "\"GEN-UNIQUE-30\"" + } + }, + { + "name": "AzureUsage-AzureAutomationResourceGroup-MS-Mgmt", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "The name of the resource group", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"', resourceGroup().name, '\"')]" + } + }, + { + "name": "(runbooks).ingestParentRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureUsage-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureUsage-OPSINSIGHTS_WS_KEY" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestParentRunbook.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).ingestParentRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureUsage-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestParentRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestSchedulerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureUsage-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureUsage-OPSINSIGHTS_WS_KEY" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestSchedulerRunbook.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).ingestSchedulerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureUsage-Schedules-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestSchedulerRunbook.version" + } + } + }, + { + "name": "GEN-UNIQUE-30/ingestscheduleNameHourly-2c84767f-feaf-47b1-9bc0-e9280ec740b1", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name" + ], + "tags": {}, + "properties": { + "description": "OMS Ingestion API Scheduler", + "startTime": "", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "GEN-UNIQUE-30/2c84767f-feaf-47b1-9bc0-e9280ec740b1", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/schedules/ingestscheduleNameHourly-2c84767f-feaf-47b1-9bc0-e9280ec740b1", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "schedule": { + "name": "ingestscheduleNameHourly-2c84767f-feaf-47b1-9bc0-e9280ec740b1" + }, + "runbook": { + "name": "(Runbooks).ingestSchedulerRunbook.name" + } + } + }, + { + "name": "GEN-UNIQUE-30/2c84767f-feaf-47b1-9bc0-e9280ec740b1", + "type": "Microsoft.Automation/automationAccounts/jobs", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestParentRunbook.name" + ], + "tags": {}, + "properties": { + "runbook": { + "name": "(runbooks).ingestSchedulerRunbook.name" + }, + "parameters": { + "Currency": "Currency", + "Locale": "Locale", + "RegionInfo": "RegionInfo", + "OfferDurableId": "OfferDurableId", + "propagatetags": "1", + "syncInterval": "Hourly", + "clearLocks": "1" + } + } + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestParentRunbook.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-20/(omsSolutions).customSolution.name", + "Microsoft.Automation/automationAccounts/runbooks//GEN-UNIQUE-30/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks//GEN-UNIQUE-30/(runbooks).ingestParentRunbook.name", + "Microsoft.Automation/automationAccounts/variables//GEN-UNIQUE-30/AzureUsage-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/variables//GEN-UNIQUE-30/AzureUsage-OPSINSIGHTS_WS_KEY", + "Microsoft.Automation/automationAccounts/variables//GEN-UNIQUE-30/AzureUsage-AzureAutomationAccount-MS-Mgmt", + "Microsoft.Automation/automationAccounts/variables//GEN-UNIQUE-30/AzureUsage-AzureAutomationResourceGroup-MS-Mgmt" + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT75 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT75 new file mode 100644 index 0000000..1b0fe79 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT75 @@ -0,0 +1,643 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885465, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT75", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT75", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin user name for the VMs" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the VMs (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "cmUsername": { + "type": "string", + "defaultValue": "cmadmin", + "metadata": { + "description": "User name for the Cloudera Manager" + } + }, + "cmPassword": { + "type": "securestring", + "metadata": { + "description": "password for the Cloudera Manager (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS name where the VMs will be exposed" + }, + "value": "GEN-UNIQUE-10" + }, + "masterStorageAccountType": { + "type": "string", + "defaultValue": "Premium_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for master nodes (defaults to Premium_LRS)" + }, + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for worker nodes (defaults to Standard_LRS)" + }, + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "clouderavnet", + "metadata": { + "description": "The name of the virtual network provisioned for the deployment" + }, + "value": "GEN-UNIQUE-10" + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Indicator for new or exiting Virtual Network" + } + }, + "virtualNetworkRGName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Resource Group Name for Vnet. For new VNet leave it empty, otherwise type in existing resource group name" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "clouderasubnet", + "metadata": { + "description": "Subnet name for the virtual network where resources will be provisioned" + }, + "value": "GEN-UNIQUE-10" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "Virtual Network address CIDR" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "CIDR for the subnet where VMs will be placed" + } + }, + "masterNodeIPAddress": { + "type": "string", + "defaultValue": "10.3.0.4", + "metadata": { + "description": "IP address for the first master" + } + }, + "dataNodeIPOffSetFromMaster": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "IP address from the master node, for example if the first master is 10.1.1.1, then the first dataNode would be 10.1.1.11" + } + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Eval", + "allowedValues": [ + "Eval", + "Prod" + ], + "metadata": { + "description": "T-shirt size of the Cloudera cluster (Eval, Prod)" + }, + "value": "Eval" + }, + "numberOfDataNodes": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of data nodes for Prod (defaults to 3)" + }, + "value": 3 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D16s_v3", + "metadata": { + "description": "The size of the VMs deployed in the cluster (defaults to Standard_DS14)" + }, + "allowedValues": [ + "Standard_D16s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D8s_v3" + ], + "value": "Standard_D16s_v3" + }, + "vmImage": { + "type": "string", + "defaultValue": "ClouderaCentOS6_7", + "metadata": { + "description": "The OS VM Image (defaults to ClouderaCentOS6_7)" + }, + "allowedValues": [ + "ClouderaCentOS6_7", + "ClouderaCentOS6_8" + ], + "value": "ClouderaCentOS6_7" + }, + "company": { + "type": "string", + "defaultValue": "Company", + "metadata": { + "description": "Your Company" + }, + "value": "company" + }, + "emailAddress": { + "type": "string", + "defaultValue": "email@yourcompany.com", + "metadata": { + "description": "your email" + }, + "value": "email@yourcompany.com" + }, + "businessPhone": { + "type": "string", + "defaultValue": "123456789", + "metadata": { + "description": "your business phone number" + }, + "value": "123456789" + }, + "firstName": { + "type": "string", + "defaultValue": "FirstName", + "metadata": { + "description": "Your FirstName" + }, + "value": "FirstName" + }, + "lastName": { + "type": "string", + "defaultValue": "LastName", + "metadata": { + "description": "Your LastName" + }, + "value": "LastName" + }, + "jobRole": { + "type": "string", + "defaultValue": "Administrator", + "metadata": { + "description": "Job Role" + }, + "allowedValues": [ + "Administrator", + "Analyst (Industry/Finance)", + "Analyst (Technical)", + "Architect", + "C level", + "Consultant", + "Developer", + "Director", + "Engineer", + "Individual contributor", + "Manager", + "Partner", + "Student", + "VP" + ], + "value": "Administrator" + }, + "jobFunction": { + "type": "string", + "defaultValue": "Analytics / Business Intelligence", + "metadata": { + "description": "Job Function" + }, + "allowedValues": [ + "Analytics / Business Intelligence", + "Big Data / Architecture", + "Data Warehouse / Management", + "Data Science", + "Database", + "ETL / ELT", + "Infrastructure", + "IT", + "Marketing / Sales", + "Networking", + "Manager", + "Security / Compliance", + "Storage" + ], + "value": "Storage" + } + }, + "variables": { + "templateAPIVersion": "2015-11-01", + "resourceAPIVersion": "2015-06-15", + "installCDH": "True", + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "scriptsUriDescription": "For Command Line Deployment, scriptsUri must point to an Azure-accessible location like: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos", + "scriptsUri": "[uri(deployment().properties.templateLink.uri, '.')]", + "share-resourcesUri": "[uri(deployment().properties.templateLink.uri, '.')]/shared-resources-new-vnet.json", + "data-nodeUri": "[concat(variables('scriptsUri'), '/data-node-', toLower(subString(parameters('vmSize'), 0, 13)), '.json')]", + "sa": "10.3.0.4", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterStorageAccount": { + "type": "Premium_LRS" + }, + "workerStorageAccount": { + "type": "Standard_LRS" + }, + "clusterTshirtSizeEval": { + "masterNodeCount": 1, + "dataNodeCount": 3, + "highAvailability": "false" + }, + "clusterTshirtSizeProd": { + "masterNodeCount": 3, + "dataNodeCount": 3, + "highAvailability": "true" + }, + "clusterSpec": "concat(clusterTshirtSize, parameters(tshirtSize))", + "vmImageInfo": { + "ClouderaCentOS6_7": { + "plan": { + "name": "cloudera-centos-6", + "publisher": "cloudera", + "product": "cloudera-centos-6" + }, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-6", + "sku": "cloudera-centos-6", + "version": "latest" + } + }, + "ClouderaCentOS6_8": { + "plan": { + "name": "6_8", + "publisher": "cloudera", + "product": "cloudera-centos-os" + }, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-os", + "sku": "6_8", + "version": "latest" + } + }, + "ClouderaCentOS6_7Germany": { + "plan": null, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-os", + "sku": "6_7", + "version": "latest" + } + } + }, + "vmSpec": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + }, + "networkSpec": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + }, + "newVNetId": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10", + "existingVNetId": "parameters('virtualNetworkRGName')/Microsoft.Network/virtualNetworks/GEN-UNIQUE-10", + "VNetId": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/shared-resources-new-vnet.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "masterNodeASName": { + "value": "(vmSpec).masterNodeASName" + }, + "dataNodeASName": { + "value": "(vmSpec).dataNodeASName" + } + } + } + }, + { + "name": "master-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/master-node.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "storageAccount": { + "value": { + "type": "Premium_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).masterNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + } + } + } + }, + { + "name": "data-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('data-nodeUri')]", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "templateAPIVersion": { + "value": "2015-11-01" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "storageAccount": { + "value": { + "type": "Standard_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).dataNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + } + } + } + }, + { + "name": "setup-cloudera", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/data-node", + "Microsoft.Resources/deployments/master-node" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/setup-cloudera.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "fqdn": { + "value": "[reference('master-node').outputs.fqdn.value]" + }, + "cmUsername": { + "value": "cmadmin" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "company": { + "value": "Company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + }, + "installCDH": { + "value": "True" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT750 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT750 new file mode 100644 index 0000000..6c636a8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT750 @@ -0,0 +1,711 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeployonlyautomation.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900672, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeployonlyautomation.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT750", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT750", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specify the Log Analytics workspace Id where Azure VM Inventory solution is deployed" + } + }, + "omsWorkspaceKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specify the Log Analytics workspace key where Azure VM Inventory solution is deployed" + } + }, + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use an existing Automation account or create a new" + }, + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + }, + "value": "eastus2" + }, + "omsAutomationSku": { + "type": "string", + "defaultValue": "basic", + "allowedValues": [ + "free", + "basic" + ], + "metadata": { + "description": "Specify the SKU for Automation Account" + } + }, + "omsDataIngestionFrequency": { + "type": "string", + "defaultValue": "Hourly", + "allowedValues": [ + "Hourly", + "Daily" + ], + "metadata": { + "description": "Specify the Azure Usage data retrieval frequency" + }, + "value": "Hourly" + }, + "currency": { + "type": "string", + "defaultValue": "USD", + "allowedValues": [ + "ARS", + "AUD", + "BRL", + "CAD", + "CHF", + "DKK", + "EUR", + "GBP", + "HKD", + "IDR", + "INR", + "JPY", + "KRW", + "MXN", + "MYR", + "NOK", + "NZD", + "RUB", + "SAR", + "SEK", + "TRY", + "TWD", + "USD", + "ZAR" + ], + "metadata": { + "description": "Specify the Azure Billing Currency" + }, + "value": "USD" + }, + "regionInfo": { + "type": "string", + "defaultValue": "United States", + "allowedValues": [ + "Afghanistan", + "Albania", + "Algeria", + "Angola", + "Argentina", + "Armenia", + "Australia", + "Austria", + "Azerbaijan", + "Bahamas", + "Bahrain", + "Bangladesh", + "Barbados", + "Belarus", + "Belgium", + "Belize", + "Bermuda", + "Bolivia", + "Bosnia and Herzegovina", + "Botswana", + "Brazil", + "Brunei", + "Bulgaria", + "Cameroon", + "Canada", + "Cape Verde", + "Cayman Islands", + "Chile", + "Colombia", + "Costa Rica", + "C\ufffdte d\ufffdIvoire", + "Croatia", + "Cura\ufffdao", + "Cyprus", + "Czech Republic", + "Denmark", + "Dominican Republic", + "Ecuador", + "Egypt", + "El Salvador", + "Estonia", + "Ethiopia", + "Faroe Islands", + "Fiji", + "Finland", + "France", + "Georgia", + "Germany", + "Ghana", + "Greece", + "Guatemala", + "Honduras", + "Hong Kong SAR", + "Hungary", + "Iceland", + "India", + "Indonesia", + "Iraq", + "Ireland", + "Israel", + "Italy", + "Jamaica", + "Japan", + "Jordan", + "Kazakhstan", + "Kenya", + "Korea", + "Kuwait", + "Kyrgyzstan", + "Latvia", + "Lebanon", + "Libya", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macao SAR", + "Macedonia, FYRO", + "Malaysia", + "Malta", + "Mauritius", + "Mexico", + "Moldova", + "Monaco", + "Mongolia", + "Montenegro", + "Morocco", + "Namibia", + "Nepal", + "Netherlands", + "New Zealand", + "Nicaragua", + "Nigeria", + "Norway", + "Oman", + "Pakistan", + "Palestinian Territory", + "Panama", + "Paraguay", + "Peru", + "Philippines", + "Poland", + "Portugal", + "Puerto Rico", + "Qatar", + "Romania", + "Russia", + "Rwanda", + "Saint Kitts and Nevis", + "Saudi Arabia", + "Senegal", + "Serbia", + "Singapore", + "Slovakia", + "Slovenia", + "South Africa", + "Spain", + "Sri Lanka", + "Sweden", + "Switzerland", + "Taiwan", + "Tajikistan", + "Tanzania", + "Thailand", + "Trinidad and Tobago", + "Tunisia", + "Turkey", + "Turkmenistan", + "U.S. Virgin Islands", + "Uganda", + "Ukraine", + "United Arab Emirates", + "United Kingdom", + "United States", + "Uruguay", + "Uzbekistan", + "Venezuela", + "Vietnam", + "Yemen", + "Zambia", + "Zimbabwe" + ], + "metadata": { + "description": "Specify region for Azure BillingSee https://github.com/Azure/azure-content-nlnl/blob/master/articles/billing-countries-and-currencies.md for details." + }, + "value": "United States" + }, + "locale": { + "type": "string", + "defaultValue": "en-US", + "allowedValues": [ + "en-AU", + "ar-AE", + "ar-BH", + "ar-DZ", + "ar-IQ", + "ar-JO", + "ar-KW", + "ar-LB", + "ar-LY", + "ar-MA", + "ar-OM", + "ar-QA", + "ar-SA", + "ar-TN", + "ar-YE", + "bg-BG", + "ca-ES", + "cs-CZ", + "da-DK", + "de-AT", + "de-CH", + "de-DE", + "de-LI", + "de-LU", + "el-CY", + "el-GR", + "en-AE", + "en-BZ", + "en-CA", + "en-DZ", + "en-GB", + "en-HK", + "en-IE", + "en-IN", + "en-JM", + "en-JO", + "en-KE", + "en-MT", + "en-MY", + "en-NG", + "en-NZ", + "en-PH", + "en-SG", + "en-SI", + "en-SK", + "en-TH", + "en-TT", + "en-US", + "en-ZA", + "en-ZW", + "es-AR", + "es-BO", + "es-CL", + "es-CO", + "es-CR", + "es-DO", + "es-EC", + "es-ES", + "es-GT", + "es-HN", + "es-MX", + "es-NI", + "es-PA", + "es-PE", + "es-PR", + "es-PY", + "es-SV", + "es-US", + "es-UY", + "es-VE", + "et-EE", + "eu-ES", + "fi-FI", + "fr-BE", + "fr-CA", + "fr-CH", + "fr-DZ", + "fr-FR", + "fr-LU", + "fr-MA", + "fr-MC", + "fr-SN", + "fr-TN", + "gl-ES", + "he-IL", + "hi-IN", + "hr-HR", + "hu-HU", + "id-ID", + "it-CH", + "it-IT", + "ja-JP", + "kk-KZ", + "ko-KR", + "lt-LT", + "lv-LV", + "ms-BN", + "ms-MY", + "nb-NO", + "nl-BE", + "nl-NL", + "pl-PL", + "pt-BR", + "pt-PT", + "ro-RO", + "ru-BY", + "ru-KZ", + "ru-RU", + "ru-UA", + "sk-SK", + "sl-SI", + "sr-Cyrl-RS", + "sr-Latn-ME", + "sr-Latn-RS", + "sv-FI", + "sv-SE", + "th-TH", + "tr-TR", + "uk-UA", + "vi-VN", + "zh-CN", + "zh-HK", + "zh-MO", + "zh-SG", + "zh-TW" + ], + "metadata": { + "description": "Specify locale for Azure Billing. See https://github.com/Azure/azure-content-nlnl/blob/master/articles/billing-countries-and-currencies.md for details." + }, + "value": "en-US" + }, + "offerDurableId": { + "type": "string", + "allowedValues": [ + "MS-AZR-0003P : Pay-As-You-Go", + "MS-AZR-0041P : Support Plans", + "MS-AZR-0042P : Support Plans", + "MS-AZR-0043P : Support Plans", + "MS-AZR-0044P : Free Trial", + "MS-AZR-0059P : Visual Studio Professional subscribers", + "MS-AZR-0060P : Visual Studio Test Professional subscribers", + "MS-AZR-0062P : MSDN Platforms subscribers", + "MS-AZR-0063P : Visual Studio Enterprise subscribers", + "MS-AZR-0064P : Visual Studio Enterprise (BizSpark) subscribers", + "MS-AZR-0029P : Visual Studio Enterprise (MPN) subscribers", + "MS-AZR-0022P : Visual Studio Dev Essentials members", + "MS-AZR-0023P : Pay-As-You-Go Dev/Test", + "MS-AZR-0148P : Enterprise Dev/Test", + "MS-AZR-0025P : Action Pack", + "MS-AZR-0036P : Microsoft Azure Sponsored Offer", + "MS-AZR-0120P : Azure Pass", + "MS-AZR-0130P : Azure Pass", + "MS-AZR-0111p : Azure in Open Licensing", + "MS-AZR-0144P : Microsoft Imagine", + "MS-AZR-0149P : BizSpark Plus", + "MS-AZR-0145P : Azure in CSP", + "MS-AZR-DE-0145P : Azure Germany in CSP for Microsoft Cloud Germany", + "MS-AZR-0044P : Azure Germany Free Trial", + "MS-AZR-DE-0003P : Azure Germany Pay-As-You-Go", + "MS-AZR-DE-0041P : Azure Germany Support Plans", + "MS-AZR-DE-0042P : Azure Germany Support Plans", + "MS-AZR-DE-0043P : Azure Germany Support Plans", + "MS-AZR-0051p : Azure NotInUse" + ], + "metadata": { + "description": "Specify the Azure Offer ID available in subscription details from Azure Portal" + }, + "value": "MS-AZR-0003P : Pay-As-You-Go" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + }, + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "ingestSchedulerGuid": { + "type": "string", + "defaultValue": "53c6dea7-806f-4598-9ec9-a35ca2732b54", + "metadata": { + "description": "GUID for the schedule creation - create a unique before deploy" + }, + "value": "2c84767f-feaf-47b1-9bc0-e9280ec740b1" + }, + "omsLogAnalyticsWorkspaceName": { + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "value": "standalone" + } + }, + "variables": { + "runbooks": { + "ingestParentRunbook": { + "name": "AzureUsage-MS-Mgmt", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Usage data and events into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestSchedulerRunbook": { + "name": "AzureUsage-Schedules-MS-Mgmt", + "version": "1.0.0.1", + "description": "Runbook to automatically create required schedules for OMS Log Analytics ingestion", + "type": "PowerShell", + "Id": "" + } + }, + "parentRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureUsage-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "schedulerRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureUsage-Schedules-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "opsInsightWorkspaceID": "AzureUsage-OPSINSIGHTS_WS_ID", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureUsage-OPSINSIGHTS_WS_KEY", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureUsage-AzureAutomationAccount-MS-Mgmt", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureUsage-AzureAutomationResourceGroup-MS-Mgmt", + "createScheduleResourceGroupType": "string", + "createScheduleResourceGroupDescription": "The name of the resource group", + "ingestInterval": "1", + "ingestFrequency": "hour", + "ingestScheduleName": "AzureUsage-Scheduler-", + "propagatetags": "1" + }, + "resources": [ + { + "apiVersion": "2015-10-31", + "location": "eastus2", + "name": "GEN-UNIQUE-30", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "basic" + } + }, + "resources": [ + { + "name": "AzureUsage-OPSINSIGHTS_WS_ID", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "Value of the user's omsWorkspaceId", + "isEncrypted": false, + "type": "string", + "value": "\"parameters('omsWorkspaceId')\"" + } + }, + { + "name": "(opsInsightWorkspaceKey)", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "Encrypted value of the user's omsWorkspaceKey", + "isEncrypted": 1, + "type": "string", + "value": "\"parameters('omsWorkspaceKey')\"" + } + }, + { + "name": "AzureUsage-AzureAutomationAccount-MS-Mgmt", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": false, + "type": "string", + "value": "\"GEN-UNIQUE-30\"" + } + }, + { + "name": "AzureUsage-AzureAutomationResourceGroup-MS-Mgmt", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "The name of the resource group", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"', resourceGroup().name, '\"')]" + } + }, + { + "name": "(runbooks).ingestParentRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureUsage-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureUsage-OPSINSIGHTS_WS_KEY" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestParentRunbook.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).ingestParentRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureUsage-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestParentRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestSchedulerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureUsage-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureUsage-OPSINSIGHTS_WS_KEY" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestSchedulerRunbook.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).ingestSchedulerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureUsage-Schedules-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestSchedulerRunbook.version" + } + } + }, + { + "name": "GEN-UNIQUE-30/ingestscheduleName-2c84767f-feaf-47b1-9bc0-e9280ec740b1", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name" + ], + "tags": {}, + "properties": { + "description": "OMS Ingestion API Scheduler", + "startTime": "", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "GEN-UNIQUE-30/2c84767f-feaf-47b1-9bc0-e9280ec740b1", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/schedules/ingestscheduleName-2c84767f-feaf-47b1-9bc0-e9280ec740b1", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "schedule": { + "name": "ingestscheduleName-2c84767f-feaf-47b1-9bc0-e9280ec740b1" + }, + "runbook": { + "name": "(Runbooks).ingestSchedulerRunbook.name" + } + } + }, + { + "name": "GEN-UNIQUE-30/2c84767f-feaf-47b1-9bc0-e9280ec740b1", + "type": "Microsoft.Automation/automationAccounts/jobs", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestParentRunbook.name" + ], + "tags": {}, + "properties": { + "runbook": { + "name": "(runbooks).ingestSchedulerRunbook.name" + }, + "parameters": { + "Currency": "Currency", + "Locale": "Locale", + "RegionInfo": "RegionInfo", + "OfferDurableId": "OfferDurableId", + "propagatetags": "1", + "syncInterval": "Hourly", + "clearLocks": "1" + } + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT751 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT751 new file mode 100644 index 0000000..31dac62 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT751 @@ -0,0 +1,837 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeployonlyloganalytics.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900682, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-resource-usage-solution/azuredeployonlyloganalytics.json", + "/demos/oms-azure-resource-usage-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT751", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT751", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + }, + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "wescentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + }, + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the SKU for Log Analytics" + }, + "value": "standalone" + }, + "omsDataIngestionFrequency": { + "type": "string", + "defaultValue": "Hourly", + "allowedValues": [ + "Hourly", + "Daily" + ], + "metadata": { + "description": "Specify the Azure Usage data retrieval frequency" + }, + "value": "Hourly" + }, + "currency": { + "type": "string", + "defaultValue": "USD", + "allowedValues": [ + "ARS", + "AUD", + "BRL", + "CAD", + "CHF", + "DKK", + "EUR", + "GBP", + "HKD", + "IDR", + "INR", + "JPY", + "KRW", + "MXN", + "MYR", + "NOK", + "NZD", + "RUB", + "SAR", + "SEK", + "TRY", + "TWD", + "USD", + "ZAR" + ], + "metadata": { + "description": "Specify the Azure Billing Currency" + }, + "value": "USD" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-resource-usage-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + }, + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "omsAutomationAccountName": { + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "value": "eastus2" + }, + "regionInfo": { + "value": "United States" + }, + "locale": { + "value": "en-US" + }, + "offerDurableId": { + "value": "MS-AZR-0003P : Pay-As-You-Go" + }, + "ingestSchedulerGuid": { + "value": "2c84767f-feaf-47b1-9bc0-e9280ec740b1" + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "Azure Usage", + "solutionName": "[concat('AzureUsage', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure Usage", + "description": "Monitor Azure Usage", + "author": "volkanc@microsoft.com" + } + }, + "opsInsightWorkspaceID": "AzureUsage-OPSINSIGHTS_WS_ID", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureUsage-OPSINSIGHTS_WS_KEY", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureUsage-AzureAutomationAccount-MS-Mgmt", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureUsage-AzureAutomationResourceGroup-MS-Mgmt", + "createScheduleResourceGroupType": "string", + "createScheduleResourceGroupDescription": "The name of the resource group" + }, + "resources": [ + { + "name": "GEN-UNIQUE-20", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "properties": { + "sku": { + "name": "standalone" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "dependsOn": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "DisplayName": "(omsSolutions).customSolution.displayName", + "Description": "(omsSolutions).customSolution.description", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "", + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAztJREFUeNrUmktoE1EUhqexKj4zJWoaqIpVaVGxKr6ogsaNbhS0YKkKFeKmriwFEaXYnY+FYjeCbmtRRBeuXIlLMe1CXGlduBOt0rS1FaF2/A+ciWMy0yT3njvN/PBtMuHc8899zJ1zp8ZxHEtAKXAE7AdNYBOwGVKO+QQ+gDfgFfii23CNhoHV4CyzWzHGEBgEA2BUKQIZqJAG0A+mHTn9AvfB2krzqeTPi8AVMOWYE92UPrBY2kAzeOeEp/fcZsncYmWMsjaQBdut8LSN22zTnQMXwYwzf5rhHJSGUJdTPeoKyjNoGT0JnoIFCt1/GXwOuNYIbirE/APawbNyhlATmNS4W4fm6NW0Rlxa/baWmsQLwROwXGMC2orXSmkpeMw55lVooAe0aK4gcUMG3NWpJ8hAA+gVWAJtRXPlqpdzLTJwlbvJpAFbID7leK3QwCpwXughFDdsgNTJOecN0A9LhIKbHkIW59rpNdAhuA2wQ+gB0hnXQBLsiqCBnaCeDKTpxUYwcDwkA5TzYTLQKryTDGMOuDoQ44eDFcEhRNpCBtYJB42HaGC9O4klVRuwl1opPNdIa2KaG7dK7nSdgXZWxCwzskOYwPmtxISBuPEQxj9pnAx8NRC4LiQDo2RgJMI98DHGtUpppbgXvNSbMEAv9af5NTKKaicDtK/+ZmCNNi0qpyRpCH3nKnHUNOROYtIj4eDTXP9JMzfAlHAbg966UEKwXE71m70+NSH67bdgFTvhrQv9AA+E7sw98Nbnd/rtjlAbDznn/ypzKc2KnKuDc1TmWgXiT3KuRZU5Oq+6LrQ6BGlWIH6f5TlbK9zM9YNhzQaOKV4rR8M8RD23q7ibG0FOo4snwA6fuC18TVWU08Zyy+snwHNLrbxu8ZJ5F7zkIXUUdNP+XTEelddPgRfFAzZ4wmXAbBUcblAOF1QP+TJVcMSU0T2lPA7G5iH5HLctcsy6AWRDTD7LbYoedNeCS2DcYOK0SnVzW+In9S5JcEtzSfRL/DbHrigfnY896C2LPvQ4B/b4PBRLiZ7KdJg9wLvhMaUCqdDnNgkqtIJ9oBlspqITWMYvSj/5pWnE+ve5zev8hkxDfwUYAP0NkvYTPlJVAAAAAElFTkSuQmCC", + "Label": "Azure Offer Types", + "Link": { + "Label": "More info", + "Url": "https://azure.microsoft.com/en-us/support/legal/offer-details/" + } + }, + "List": [ + { + "Title": "Here Are the Common Azure Offers", + "Content": "[concat('Pay-As-You-Go **0003P** \nAzure Dynamics **0033P** \nFree Trial **0044P** \nVisual Studio Professional **0059P** \nVisual Studio Test Professional **0060P** \nMSDN Platforms **0062P** \nVisual Studio Enterprise **80063P**\nPay-As-You-Go Dev/Test **0023P** \nEnterprise Dev/Test **0148P** \n\n__Use : __\n\nType=AzureUsage_CL | Top 1 |select OfferDurableId_s\nto get the Azure Offer\n\n__Check More info on top for latest Azure Offer codes__\nSolition utilizes RateCard Api for the usage rates. Check : https://github.com/Azure/azure-content-nlnl/blob/master/articles/billing-countries-and-currencies.md to see supported currencies')]" + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "USAGE SUMMARY", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Spent by Subscription", + "Subtitle": "" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly | measure sum(Cost_d) by AzureSubscription_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#ffb900", + "#009e49", + "#0072c6" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly | measure sum(Cost_d) by AzureSubscription_s,meterCategory_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Usage-Currency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "SPEND by Service", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Spending - All Subscriptions", + "Subtitle": "Based on Hourly Usage and Azure Offer Selected" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly | measure sum(Cost_d) by meterCategory_s ", + "CenterLegend": { + "Text": "Currency", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#009e49", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly | measure sum(Cost_d) by meterCategory_s ", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Service", + "Value": "Cost" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "SPEND by Subscription", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "VM Deployment Cost Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly meterCategory_s=\"Virtual Machines\" |measure sum(Cost_d) as VMcost by AzureSubscription_s interval 1HOUR", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "Cost Currency" + } + } + }, + { + "Header": { + "Title": "Storage Consumption Cost Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly meterCategory_s=\"Storage\" |measure sum(Cost_d) by AzureSubscription_s interval 1HOUR", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "Cost Currency" + } + } + }, + { + "Header": { + "Title": "Data Management Cost Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly meterCategory_s=\"Data Management\" |measure sum(Cost_d) by AzureSubscription_s interval 1HOUR", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "Cost Currency" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VM CONSUMPTION COST", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "VM Cost Over Time", + "Subtitle": "Based on Hourly Usage and Azure Offer Selected" + }, + "LineChart": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly meterCategory_s=\"Virtual Machines\" |measure sum(Cost_d) by meterCategory_s interval 1HOUR", + "Callout": { + "Title": "Total", + "Series": "", + "Operation": "Sum" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly meterCategory_s=\"Virtual Machines\" | measure sum(Cost_d) by Resource", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Deployment", + "Value": "Cost Currency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Consumption Cost", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Consumption Cost Over Time", + "Subtitle": "Based on Hourly Usage and Azure Offer Selected" + }, + "LineChart": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly meterCategory_s=\"Storage\" |measure sum(Cost_d) by meterCategory_s Interval 1HOUR", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly meterCategory_s=\"Storage\" |measure sum(Cost_d) by Resource", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "Cost Currency" + }, + "Color": "#009e49", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "COST BY Tag", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Estimated Cost by Resource Tags", + "Subtitle": "Based on Daily Billing and Azure Offer Selected" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL | measure sum(TaggedCost_d) by Tag_s", + "CenterLegend": { + "Text": "Cost Currency", + "Operation": "Sum", + "ArcsToSelect": [ + "Overall" + ] + }, + "Options": { + "colors": [ + "#0072c6", + "#55d455", + "#ff8c00" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureUsage_CL | measure sum(TaggedCost_d) by Tag_s", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Tag", + "Value": "Cost in Currency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Cost BY RESOURCEGROUP", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Estimated Cost By Resource Group", + "Subtitle": "Based on Daily Usage and Azure Offer Selected" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly| measure sum(Cost_d) by ResourceGroup", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly| measure sum(Cost_d) by AzureSubscription_s,ResourceGroup", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "ResourceGroup", + "Value": "Count" + }, + "Color": "#009e49", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Top Resources ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Cost by Resource", + "Subtitle": "All costs ( Network,Storage,Data) Associated with specific resource" + }, + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly| measure sum(Cost_d) by Resource", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": " Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly| measure sum(Cost_d) by Resource", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Resource ", + "Value": "Total Cost" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + } + ], + "OverviewTile": { + "Id": "SingleQueryDonutBuilderTileV1", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "Donut": { + "Query": "* Type=AzureUsage_CL CostTag_s=Overall Aggregation_s=Hourly | measure sum(Cost_d) by meterCategory_s ", + "CenterLegend": { + "Text": "Total Currency", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#009e49", + "#ff8c00" + ], + "valueColorMapping": [] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-20/(omsSolutions).customSolution.name" + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT752 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT752 new file mode 100644 index 0000000..6624f71 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT752 @@ -0,0 +1,3182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToLinkedWorkspaceAnalyticsOnly.json" + ], + "timestamp": 1642962900693, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToLinkedWorkspaceAnalyticsOnly.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT752", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT752", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "deploymentNameSuffix": { + "type": "string", + "metadata": { + "description": "Used to create unique deployment names for subsequent deployments" + } + }, + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + } + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "westcentralus", + "japaneast", + "uksouth", + "centralindia", + "canadacentral" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + } + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use an existing Automation account or create a new" + } + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast", + "northcentralus", + "brazilsouth", + "uksouth", + "westcentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "linkedWorkspaceSKU": { + "type": "array", + "defaultValue": [ + "pernode", + "OMS" + ], + "allowedValues": [ + [ + "pernode", + "OMS" + ], + [ + "free", + "free" + ] + ] + }, + "collectAuditLogs": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "This option creates extra collectors to collect and ingest storage audit logs" + } + }, + "collectionFromAllSubscriptions": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enables data collection from all subscriptions where Azure SPN has access" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "runbooks": { + "ingestMetricsRunbook": { + "name": "AzureSAIngestionMetrics-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Storage Inventory data and events into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestLogsRunbook": { + "name": "AzureSAIngestionLogs-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Storage Audit Logs into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestMetricsEnablerRunbook": { + "name": "AzureSAMetricsEnabler-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to enable Storage Analytics metrics", + "type": "PowerShell", + "Id": "" + }, + "ingestSchedulerRunbook": { + "name": "AzureSACreateSchedules-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically create required schedules for OMS Log Analytics ingestion", + "type": "PowerShell", + "Id": "" + } + }, + "ingestScheduleGuid": "[guid(uniqueString(resourceGroup().id, deployment().name))]", + "metricsRunbookUri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAIngestionMetrics-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "logsRunbookUri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAIngestionLogs-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "metricsEnablerRunbookUri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAMetricsEnabler-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "schedulerRunbookUri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSACreateSchedules-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "azureSubscriptionId": "saAzureSubscriptionId", + "omsSolutions": { + "customSolution1": { + "name": "Azure Storage Analytics", + "solutionName": "[concat('AzureStorageAnalytics', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure Storage Analytics", + "description": "Monitor and analyze Azure Storage Accounts", + "author": "volkanc@microsoft.com" + } + }, + "opsInsightWorkspaceID": "AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA", + "createScheduleResourceGroupType": "string", + "SchedulerFrequency": "Hourly", + "createScheduleResourceGroupDescription": "The name of the resource group", + "ingestScheduleName": "AzureSA-Scheduler-Hourly", + "ingestInterval": "1", + "ingestFrequency": "hour", + "alertArray": [ + { + "searchName": "Azure Storage Account IO Throttling Limit", + "description": "Each standard storage account is capped to 20.000 IOPs . This alert is indicator that one of your storage accounts is at the risk of throttling and IO might be capped.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile StorageAccount_s in {Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=StorageAccount Tier_s=Standard|measure count() by StorageAccount_s}| measure sum(MaxDiskIO_d) as TotalIO by StorageAccount_s |where TotalIO > 20000 ", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 15, + "scheduleQueryTimeSpan": 15, + "alertName": "Azure Storage Account IO Throttling Limits Reached" + }, + { + "searchName": "Azure Premium Storage Account NotinUse", + "description": "Azure does not delete the vhd files associated with VMs when the VM is deleted. If the VM is suing premium storage you will be chardged for that storage untill you migarte the data and delete the storage account.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile Uri_s=NullUri TimeGenerated>NOW-1HOUR |measure count() by StorageAccount_s", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 240, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Premium Storage Account NotinUse" + } + ], + "alertMetricArray": [ + { + "searchName": "Azure Storage Quota Usage Critical", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approaching the storage account limits.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=StorageQuotas |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s interval 15MINUTES", + "alertTresholdValue": 90, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Account Quota Consumption is greater than 90%" + }, + { + "searchName": "Azure Storage Quota Usage Warning", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approacihing the storage account limits.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=StorageQuotas |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s interval 15MINUTES", + "alertTresholdValue": 80, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Account Quota Consumption is greater than 80%" + }, + { + "searchName": "Azure Storage Availability Below 95pct", + "description": "Any value less than 100% indicates that some storage requests are failing. Examine other ErrorPercentage information to see the reason for failures. This alert is an indicator that Availability for requests fall below %95.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(Availability_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 95, + "operator": "lt", + "alertThrottleInMinutes": 240, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Availability Below 95pct" + }, + { + "searchName": "Azure Storage End2End Latency Too High", + "description": "AverageE2ELatency is a measure of end-to-end latency that includes the time taken to read the request and send the response in addition to the time taken to process the request including network latency. This alert is an indicator that AvergaeE2ELAtency for storage account is above 100ms.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(Availability_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 100, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage End2End Latency Above 100ms" + }, + { + "searchName": "Azure Storage High PercentThrottlingError", + "description": "Throttling errors occur when you exceed the scalability targets of a storage service. The storage service does this to ensure that no single client or tenant can use the service at the expense of others. This alert is an indicator that storage account has reached the throttling limits and some requests are failing.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentThrottlingError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentThrottlingError" + }, + { + "searchName": "Azure Storage High PercentTimeoutError", + "description": "The PercentTimeoutError metric represents the timeout in storage requests and is an aggregation of the following metrics: ClientTimeoutError, AnonymousClientTimeoutError, SASClientTimeoutError, ServerTimeoutError, AnonymousServerTimeoutError, and SASServerTimeoutError.This alert is an indicator that storage account has reached the throttling limits and some requests are failing.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentTimeoutError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentTimeoutError" + }, + { + "searchName": "Azure Storage High PercentNetworkError", + "description": "The PercentNetworkError metric is an aggregation of the following metrics NetworkError, AnonymousNetworkError, and SASNetworkError. These occur when the storage service detects a network error when the client makes a storage request.This alert is an indicator that storage account is facing network related errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentNetworkError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentNetworkError" + }, + { + "searchName": "Azure Storage SASAuthorizationError", + "description": "If the client application attempts to use a SAS key that does not include the necessary permissions for the operation, the storage service returns an HTTP 404 (Not found) message to the client. At the same time, you will also see a non-zero value for SASAuthorizationError in the metrics. This alert is an indicator that storage account is facing SAS Autorizations errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(SASAuthorizationError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage SASAuthorizationError Detected" + }, + { + "searchName": "Azure Storage High PercentAuthorizationError", + "description": "The percentage of requests that failed with an AuthorizationError. This alert is an indicator that storage account is facing authorization errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentAuthorizationError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentAuthorizationError" + }, + { + "searchName": "Azure Storage PercentClientOtherError", + "description": "Authenticated request that failed as expected. This error can represent many 300-400 level HTTP status codes and conditions such as NotFound and ResourceAlreadyExists. This alert is an indicator that more than 1% of the requests failed with such errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentClientOtherError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentClientOtherError" + }, + { + "searchName": "Azure Storage High PercentServerOtherError", + "description": "Authenticated request that failed due to unknown server errors, most commonly returning an HTTP 500 status code. This alert is an indicator that more than 1% of the requests failed with such errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentServerOtherError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentServerOtherError" + }, + { + "searchName": "Azure File Share Quota Usage Warning", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approacihing the storage account limits.", + "severity": "warning", + "query": "Type=AzureStorage_CL InventoryType_s=File | EXTEND product(div(ShareUsedGB_d,Quota_d),100) as ShareUsage | measure avg(ShareUsage) by FileShare_s interval 15MINUTES", + "alertTresholdValue": 80, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure File Share Quota Usage is greater than 80%" + } + ] + }, + "resources": [ + { + "name": "", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "properties": { + "sku": { + "name": "[first(parameters('linkedWorkspaceSKU'))]" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution1.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution1.name", + "dependson": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution1.name", + "DisplayName": "(omsSolutions).customSolution1.displayName", + "Description": "(omsSolutions).customSolution1.description", + "Author": "(omsSolutions).customSolution1.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "Azure Storage Analytics", + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAztJREFUeNrUmktoE1EUhqexKj4zJWoaqIpVaVGxKr6ogsaNbhS0YKkKFeKmriwFEaXYnY+FYjeCbmtRRBeuXIlLMe1CXGlduBOt0rS1FaF2/A+ciWMy0yT3njvN/PBtMuHc8899zJ1zp8ZxHEtAKXAE7AdNYBOwGVKO+QQ+gDfgFfii23CNhoHV4CyzWzHGEBgEA2BUKQIZqJAG0A+mHTn9AvfB2krzqeTPi8AVMOWYE92UPrBY2kAzeOeEp/fcZsncYmWMsjaQBdut8LSN22zTnQMXwYwzf5rhHJSGUJdTPeoKyjNoGT0JnoIFCt1/GXwOuNYIbirE/APawbNyhlATmNS4W4fm6NW0Rlxa/baWmsQLwROwXGMC2orXSmkpeMw55lVooAe0aK4gcUMG3NWpJ8hAA+gVWAJtRXPlqpdzLTJwlbvJpAFbID7leK3QwCpwXughFDdsgNTJOecN0A9LhIKbHkIW59rpNdAhuA2wQ+gB0hnXQBLsiqCBnaCeDKTpxUYwcDwkA5TzYTLQKryTDGMOuDoQ44eDFcEhRNpCBtYJB42HaGC9O4klVRuwl1opPNdIa2KaG7dK7nSdgXZWxCwzskOYwPmtxISBuPEQxj9pnAx8NRC4LiQDo2RgJMI98DHGtUpppbgXvNSbMEAv9af5NTKKaicDtK/+ZmCNNi0qpyRpCH3nKnHUNOROYtIj4eDTXP9JMzfAlHAbg966UEKwXE71m70+NSH67bdgFTvhrQv9AA+E7sw98Nbnd/rtjlAbDznn/ypzKc2KnKuDc1TmWgXiT3KuRZU5Oq+6LrQ6BGlWIH6f5TlbK9zM9YNhzQaOKV4rR8M8RD23q7ibG0FOo4snwA6fuC18TVWU08Zyy+snwHNLrbxu8ZJ5F7zkIXUUdNP+XTEelddPgRfFAzZ4wmXAbBUcblAOF1QP+TJVcMSU0T2lPA7G5iH5HLctcsy6AWRDTD7LbYoedNeCS2DcYOK0SnVzW+In9S5JcEtzSfRL/DbHrigfnY896C2LPvQ4B/b4PBRLiZ7KdJg9wLvhMaUCqdDnNgkqtIJ9oBlspqITWMYvSj/5pWnE+ve5zev8hkxDfwUYAP0NkvYTPlJVAAAAAElFTkSuQmCC", + "Label": "Azure Storage Account Monitoring", + "Link": { + "Label": "More info ", + "Url": "https://github.com/Azure/azure-quickstart-templates/blob/master/demos/oms-azure-storage-analytics-solution/README.md" + } + }, + "List": [ + { + "Title": "Solution Overview", + "Content": "\nAzure Storage Analytics Solution utilizes native **Storage REST API** capabilities and **Storage Analytics** to enable inventory of storage accounts , capacity and transaction monitoring and collecting storage audit logs from a single or multiple Azure Subscriptions. \nCollected data can be utilized to create alerts and trigger automation runbooks.\n\n Inventory and metrics are collected every 15 mins, logs are collected every 60 mins and VHD blob scan is performed every 4hours." + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Usage for Subscription", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Accounts by Deployment type", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=StorageQuotas TimeGenerated >NOW-60MINUTES |measure avg(SACurrent_d) by QuotaType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#55d455", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=StorageQuotas TimeGenerated >NOW-60MINUTES |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account Quota", + "Value": "% Utilized" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "80", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Azure Storage Inventory", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Inventory", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 AND NOT InventoryType_s=VHDFile | measure countdistinct(Uri_s) by InventoryType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [ + "StorageAccount" + ] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 AND NOT InventoryType_s=VHDFile | measure countdistinct(Uri_s) by InventoryType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Inventory", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Capacity Usage", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Utilized (GB)", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsCapacity TimeGenerated>NOW-1HOUR |measure avg(Capacity_d) as UsedGB by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#fcd116", + "#0072c6", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsCapacity TimeGenerated>NOW-1HOUR |measure avg(Capacity_d) as UsedGB by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE Account", + "Value": "UsedinGB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "400000", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "450000", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "STORAGE ACCOUNT INVENTORY", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "SA by Tier", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=StorageAccount |measure countdistinct(StorageAccount_s) by Sku_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=StorageAccount |measure countdistinct(StorageAccount_s) by Location_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA by Location", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "200", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "250", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Total Requests", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalRequests per Storage Acc", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#55d455", + "#fcd116" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalRequests_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "RequestCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - E2E Latency (ms)", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(AverageE2ELatency_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(AverageE2ELatency_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "Latency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "50", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "100", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "IAAS - Disks by SA", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "VHDs Attached to VMs", + "Subtitle": "VHD Count" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile LeaseState_s=leased | measure countdistinct(Uri_s) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile LeaseState_s=leased | measure countdistinct(Uri_s) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGEACCOUNT", + "Value": "VHD COUNT" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "35", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "40", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Throttling Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Throttling ErrorPct by Storage Service", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL |measure avg(PercentThrottlingError_d) by StorageService_s", + "Callout": { + "Title": "Avg per hour", + "Series": "", + "Operation": "Average" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=AzureStorage_CL |measure avg(PercentThrottlingError_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGEACCOUNT", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": " Top 10 " + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "Count", + "baseUnit": "Ones", + "displayUnit": "AUTO" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over Time", + "Subtitle": "TOP 10" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Ingres Traffic", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE ACCOUNT", + "Value": "Ingress Traffic" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Egress Traffic KB", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE ACCOUNT", + "Value": "Egress Traffic KB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE - TOTAL REQUESTS ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Total Request per Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "RequestCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "QUEUE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "QUEUE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "FILE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File| measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "FILE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + } + ], + "OverviewTile": { + "Id": "LineChartCalloutBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "Callout": { + "Title": "TOTAL REQUESTS", + "Series": "", + "Operation": "Sum" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + } + ] + }, + { + "apiversion": "2015-10-31", + "location": "omsAutomationRegion", + "name": "", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "[last(parameters('linkedWorkspaceSKU'))]" + } + }, + "resources": [ + { + "name": "saAzureSubscriptionId", + "type": "variables", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Azure Subscription Id", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Value of the user's omsWorkspaceId", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').customerId,'\"')]" + } + }, + { + "name": "(opsInsightWorkspaceKey)", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Encrypted value of the user's omsWorkspaceKey", + "isEncrypted": 1, + "type": "string", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": 0, + "type": "string", + "value": "\" parameters('omsAutomationAccountName')\"" + } + }, + { + "name": "AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "The name of the resource group", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"', resourceGroup().name, '\"')]" + } + }, + { + "name": "(runbooks).ingestMetricsRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestMetricsRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestMetricsRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAIngestionMetrics-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestMetricsRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestSchedulerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestSchedulerRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestSchedulerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSACreateSchedules-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestSchedulerRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestMetricsEnablerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestMetricsEnablerRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestMetricsEnablerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAMetricsEnabler-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestMetricsEnablerRunbook.version" + } + } + }, + { + "name": "parameters('omsAutomationAccountName')/ingestscheduleName", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name" + ], + "tags": {}, + "properties": { + "description": "OMS Azure Storage Runbook Scheduler", + "startTime": "", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "parameters('omsAutomationAccountName')/IngestScheduleGuid", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/schedules/ingestscheduleName", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "schedule": { + "name": "ingestscheduleName" + }, + "runbook": { + "name": "(Runbooks).ingestSchedulerRunbook.name" + }, + "parameters": { + "collectAuditLogs": "collectAuditLogs", + "collectionFromAllSubscriptions": "collectionFromAllSubscriptions" + } + } + } + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces/linkedServices", + "name": "parameters('omsLogAnalyticsWorkspaceName')/Automation", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "properties": { + "resourceId": "Microsoft.Automation/automationAccounts//parameters('omsAutomationAccountName')" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')" + ] + }, + { + "name": "(omsSolutions).customSolution1.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "plan": { + "name": "(omsSolutions).customSolution1.solutionName", + "product": "(omsSolutions).customSolution1.name", + "publisher": "(omsSolutions).customSolution1.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces// parameters('omsLogAnalyticsWorkspaceName')", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution1.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestMetricsRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestMetricsEnablerRunbook.name", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA" + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT753 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT753 new file mode 100644 index 0000000..deccfa6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT753 @@ -0,0 +1,3768 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToLinkedWorkspaceWithAuditLogs.json" + ], + "timestamp": 1642962900715, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToLinkedWorkspaceWithAuditLogs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT753", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT753", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "deploymentNameSuffix": { + "type": "string", + "metadata": { + "description": "Used to create unique deployment names for subsequent deployments" + } + }, + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + } + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "westcentralus", + "japaneast", + "uksouth", + "centralindia", + "canadacentral" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + } + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use an existing Automation account or create a new" + } + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast", + "northcentralus", + "brazilsouth", + "uksouth", + "westcentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "linkedWorkspaceSKU": { + "type": "array", + "defaultValue": [ + "pernode", + "OMS" + ], + "allowedValues": [ + [ + "pernode", + "OMS" + ], + [ + "free", + "free" + ] + ] + }, + "collectAuditLogs": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "This option creates extra collectors to collect and ingest storage audit logs" + } + }, + "collectionFromAllSubscriptions": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enables data collection from all subscriptions where Azure SPN has access" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "runbooks": { + "ingestMetricsRunbook": { + "name": "AzureSAIngestionMetrics-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Storage Inventory data and events into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestLogsRunbook": { + "name": "AzureSAIngestionLogs-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Storage Audit Logs into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestMetricsEnablerRunbook": { + "name": "AzureSAMetricsEnabler-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to enable Storage Analytics metrics", + "type": "PowerShell", + "Id": "" + }, + "ingestSchedulerRunbook": { + "name": "AzureSACreateSchedules-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically create required schedules for OMS Log Analytics ingestion", + "type": "PowerShell", + "Id": "" + } + }, + "ingestScheduleGuid": "[guid(uniqueString(resourceGroup().id, deployment().name))]", + "metricsRunbookUri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAIngestionMetrics-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "logsRunbookUri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAIngestionLogs-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "metricsEnablerRunbookUri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAMetricsEnabler-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "schedulerRunbookUri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSACreateSchedules-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "azureSubscriptionId": "saAzureSubscriptionId", + "omsSolutions": { + "customSolution1": { + "name": "Azure Storage Analytics", + "solutionName": "[concat('AzureStorageAnalytics', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure Storage Analytics", + "description": "Monitor and analyze Azure Storage Accounts", + "author": "volkanc@microsoft.com" + }, + "customSolution2": { + "name": "Azure Storage Audit Logs", + "solutionName": "[concat('AzureStorageAuditLogs', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure Storage Audit Logs", + "description": "Monitor and analyze Azure Storage Account Audit Logs", + "author": "volkanc@microsoft.com" + } + }, + "opsInsightWorkspaceID": "AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA", + "createScheduleResourceGroupType": "string", + "SchedulerFrequency": "Hourly", + "createScheduleResourceGroupDescription": "The name of the resource group", + "ingestScheduleName": "AzureSA-Scheduler-Hourly", + "ingestInterval": "1", + "ingestFrequency": "hour", + "alertArray": [ + { + "searchName": "Azure Storage Account IO Throttling Limit", + "description": "Each standard storage account is capped to 20.000 IOPs . This alert is indicator that one of your storage accounts is at the risk of throttling and IO might be capped.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile StorageAccount_s in {Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=StorageAccount Tier_s=Standard|measure count() by StorageAccount_s}| measure sum(MaxDiskIO_d) as TotalIO by StorageAccount_s |where TotalIO > 20000 ", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 15, + "scheduleQueryTimeSpan": 15, + "alertName": "Azure Storage Account IO Throttling Limits Reached" + }, + { + "searchName": "Azure Premium Storage Account NotinUse", + "description": "Azure does not delete the vhd files associated with VMs when the VM is deleted. If the VM is suing premium storage you will be chardged for that storage untill you migarte the data and delete the storage account.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile Uri_s=NullUri TimeGenerated>NOW-1HOUR |measure count() by StorageAccount_s", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 240, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Premium Storage Account NotinUse" + } + ], + "alertMetricArray": [ + { + "searchName": "Azure Storage Quota Usage Critical", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approaching the storage account limits.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=StorageQuotas |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s interval 15MINUTES", + "alertTresholdValue": 90, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Account Quota Consumption is greater than 90%" + }, + { + "searchName": "Azure Storage Quota Usage Warning", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approacihing the storage account limits.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=StorageQuotas |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s interval 15MINUTES", + "alertTresholdValue": 80, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Account Quota Consumption is greater than 80%" + }, + { + "searchName": "Azure Storage Availability Below 95pct", + "description": "Any value less than 100% indicates that some storage requests are failing. Examine other ErrorPercentage information to see the reason for failures. This alert is an indicator that Availability for requests fall below %95.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(Availability_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 95, + "operator": "lt", + "alertThrottleInMinutes": 240, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Availability Below 95pct" + }, + { + "searchName": "Azure Storage End2End Latency Too High", + "description": "AverageE2ELatency is a measure of end-to-end latency that includes the time taken to read the request and send the response in addition to the time taken to process the request including network latency. This alert is an indicator that AvergaeE2ELAtency for storage account is above 100ms.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(Availability_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 100, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage End2End Latency Above 100ms" + }, + { + "searchName": "Azure Storage High PercentThrottlingError", + "description": "Throttling errors occur when you exceed the scalability targets of a storage service. The storage service does this to ensure that no single client or tenant can use the service at the expense of others. This alert is an indicator that storage account has reached the throttling limits and some requests are failing.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentThrottlingError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentThrottlingError" + }, + { + "searchName": "Azure Storage High PercentTimeoutError", + "description": "The PercentTimeoutError metric represents the timeout in storage requests and is an aggregation of the following metrics: ClientTimeoutError, AnonymousClientTimeoutError, SASClientTimeoutError, ServerTimeoutError, AnonymousServerTimeoutError, and SASServerTimeoutError.This alert is an indicator that storage account has reached the throttling limits and some requests are failing.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentTimeoutError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentTimeoutError" + }, + { + "searchName": "Azure Storage High PercentNetworkError", + "description": "The PercentNetworkError metric is an aggregation of the following metrics NetworkError, AnonymousNetworkError, and SASNetworkError. These occur when the storage service detects a network error when the client makes a storage request.This alert is an indicator that storage account is facing network related errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentNetworkError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentNetworkError" + }, + { + "searchName": "Azure Storage SASAuthorizationError", + "description": "If the client application attempts to use a SAS key that does not include the necessary permissions for the operation, the storage service returns an HTTP 404 (Not found) message to the client. At the same time, you will also see a non-zero value for SASAuthorizationError in the metrics. This alert is an indicator that storage account is facing SAS Autorizations errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(SASAuthorizationError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage SASAuthorizationError Detected" + }, + { + "searchName": "Azure Storage High PercentAuthorizationError", + "description": "The percentage of requests that failed with an AuthorizationError. This alert is an indicator that storage account is facing authorization errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentAuthorizationError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentAuthorizationError" + }, + { + "searchName": "Azure Storage PercentClientOtherError", + "description": "Authenticated request that failed as expected. This error can represent many 300-400 level HTTP status codes and conditions such as NotFound and ResourceAlreadyExists. This alert is an indicator that more than 1% of the requests failed with such errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentClientOtherError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentClientOtherError" + }, + { + "searchName": "Azure Storage High PercentServerOtherError", + "description": "Authenticated request that failed due to unknown server errors, most commonly returning an HTTP 500 status code. This alert is an indicator that more than 1% of the requests failed with such errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentServerOtherError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentServerOtherError" + }, + { + "searchName": "Azure File Share Quota Usage Warning", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approacihing the storage account limits.", + "severity": "warning", + "query": "Type=AzureStorage_CL InventoryType_s=File | EXTEND product(div(ShareUsedGB_d,Quota_d),100) as ShareUsage | measure avg(ShareUsage) by FileShare_s interval 15MINUTES", + "alertTresholdValue": 80, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure File Share Quota Usage is greater than 80%" + } + ] + }, + "resources": [ + { + "name": "", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "properties": { + "sku": { + "name": "[first(parameters('linkedWorkspaceSKU'))]" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution1.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution1.name", + "dependson": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution1.name", + "DisplayName": "(omsSolutions).customSolution1.displayName", + "Description": "(omsSolutions).customSolution1.description", + "Author": "(omsSolutions).customSolution1.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "Azure Storage Analytics", + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAztJREFUeNrUmktoE1EUhqexKj4zJWoaqIpVaVGxKr6ogsaNbhS0YKkKFeKmriwFEaXYnY+FYjeCbmtRRBeuXIlLMe1CXGlduBOt0rS1FaF2/A+ciWMy0yT3njvN/PBtMuHc8899zJ1zp8ZxHEtAKXAE7AdNYBOwGVKO+QQ+gDfgFfii23CNhoHV4CyzWzHGEBgEA2BUKQIZqJAG0A+mHTn9AvfB2krzqeTPi8AVMOWYE92UPrBY2kAzeOeEp/fcZsncYmWMsjaQBdut8LSN22zTnQMXwYwzf5rhHJSGUJdTPeoKyjNoGT0JnoIFCt1/GXwOuNYIbirE/APawbNyhlATmNS4W4fm6NW0Rlxa/baWmsQLwROwXGMC2orXSmkpeMw55lVooAe0aK4gcUMG3NWpJ8hAA+gVWAJtRXPlqpdzLTJwlbvJpAFbID7leK3QwCpwXughFDdsgNTJOecN0A9LhIKbHkIW59rpNdAhuA2wQ+gB0hnXQBLsiqCBnaCeDKTpxUYwcDwkA5TzYTLQKryTDGMOuDoQ44eDFcEhRNpCBtYJB42HaGC9O4klVRuwl1opPNdIa2KaG7dK7nSdgXZWxCwzskOYwPmtxISBuPEQxj9pnAx8NRC4LiQDo2RgJMI98DHGtUpppbgXvNSbMEAv9af5NTKKaicDtK/+ZmCNNi0qpyRpCH3nKnHUNOROYtIj4eDTXP9JMzfAlHAbg966UEKwXE71m70+NSH67bdgFTvhrQv9AA+E7sw98Nbnd/rtjlAbDznn/ypzKc2KnKuDc1TmWgXiT3KuRZU5Oq+6LrQ6BGlWIH6f5TlbK9zM9YNhzQaOKV4rR8M8RD23q7ibG0FOo4snwA6fuC18TVWU08Zyy+snwHNLrbxu8ZJ5F7zkIXUUdNP+XTEelddPgRfFAzZ4wmXAbBUcblAOF1QP+TJVcMSU0T2lPA7G5iH5HLctcsy6AWRDTD7LbYoedNeCS2DcYOK0SnVzW+In9S5JcEtzSfRL/DbHrigfnY896C2LPvQ4B/b4PBRLiZ7KdJg9wLvhMaUCqdDnNgkqtIJ9oBlspqITWMYvSj/5pWnE+ve5zev8hkxDfwUYAP0NkvYTPlJVAAAAAElFTkSuQmCC", + "Label": "Azure Storage Account Monitoring", + "Link": { + "Label": "More info ", + "Url": "https://github.com/Azure/azure-quickstart-templates/blob/master/demos/oms-azure-storage-analytics-solution/README.md" + } + }, + "List": [ + { + "Title": "Solution Overview", + "Content": "\nAzure Storage Analytics Solution utilizes native **Storage REST API** capabilities and **Storage Analytics** to enable inventory of storage accounts , capacity and transaction monitoring and collecting storage audit logs from a single or multiple Azure Subscriptions. \nCollected data can be utilized to create alerts and trigger automation runbooks.\n\n Inventory and metrics are collected every 15 mins, logs are collected every 60 mins and VHD blob scan is performed every 4hours." + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Usage for Subscription", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Accounts by Deployment type", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=StorageQuotas TimeGenerated >NOW-60MINUTES |measure avg(SACurrent_d) by QuotaType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#55d455", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=StorageQuotas TimeGenerated >NOW-60MINUTES |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account Quota", + "Value": "% Utilized" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "80", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Azure Storage Inventory", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Inventory", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 AND NOT InventoryType_s=VHDFile | measure countdistinct(Uri_s) by InventoryType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [ + "StorageAccount" + ] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 AND NOT InventoryType_s=VHDFile | measure countdistinct(Uri_s) by InventoryType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Inventory", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Capacity Usage", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Utilized (GB)", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsCapacity TimeGenerated>NOW-1HOUR |measure avg(Capacity_d) as UsedGB by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#fcd116", + "#0072c6", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsCapacity TimeGenerated>NOW-1HOUR |measure avg(Capacity_d) as UsedGB by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE Account", + "Value": "UsedinGB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "400000", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "450000", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "STORAGE ACCOUNT INVENTORY", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "SA by Tier", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=StorageAccount |measure countdistinct(StorageAccount_s) by Sku_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=StorageAccount |measure countdistinct(StorageAccount_s) by Location_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA by Location", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "200", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "250", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Total Requests", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalRequests per Storage Acc", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#55d455", + "#fcd116" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalRequests_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "RequestCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - E2E Latency (ms)", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(AverageE2ELatency_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(AverageE2ELatency_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "Latency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "50", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "100", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "IAAS - Disks by SA", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "VHDs Attached to VMs", + "Subtitle": "VHD Count" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile LeaseState_s=leased | measure countdistinct(Uri_s) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile LeaseState_s=leased | measure countdistinct(Uri_s) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGEACCOUNT", + "Value": "VHD COUNT" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "35", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "40", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Throttling Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Throttling ErrorPct by Storage Service", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL |measure avg(PercentThrottlingError_d) by StorageService_s", + "Callout": { + "Title": "Avg per hour", + "Series": "", + "Operation": "Average" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=AzureStorage_CL |measure avg(PercentThrottlingError_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGEACCOUNT", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": " Top 10 " + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "Count", + "baseUnit": "Ones", + "displayUnit": "AUTO" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over Time", + "Subtitle": "TOP 10" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Ingres Traffic", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE ACCOUNT", + "Value": "Ingress Traffic" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Egress Traffic KB", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE ACCOUNT", + "Value": "Egress Traffic KB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE - TOTAL REQUESTS ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Total Request per Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "RequestCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "QUEUE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "QUEUE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "FILE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File| measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "FILE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + } + ], + "OverviewTile": { + "Id": "LineChartCalloutBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "Callout": { + "Title": "TOTAL REQUESTS", + "Series": "", + "Operation": "Sum" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution2.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution2.name", + "dependson": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution2.name", + "DisplayName": "(omsSolutions).customSolution2.displayName", + "Description": "(omsSolutions).customSolution2.description", + "Author": "(omsSolutions).customSolution2.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Logs By Subscription and UserAgent", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Operations Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "* Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "* Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s,UserAgent_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Logs by Subscription and Operation", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Subscriptions", + "Subtitle": "" + }, + "Donut": { + "Query": "* Type=AzureStorage_CL Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#fcd116", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureStorage_CL Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s,Operation_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Requester Tracking ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "IPs", + "Subtitle": "" + }, + "Donut": { + "Query": "* Type=AzureStorage_CL Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by RequesterIP_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#ff8c00", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureStorage_CL Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by RequesterIP_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Operations", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Top Operations", + "Subtitle": "" + }, + "Donut": { + "Query": "* Type=AzureStorage_CL Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by Operation_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureStorage_CL Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by StorageService_s,Operation_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Service", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Authentication Methods", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "SASvsAuthenticated", + "Subtitle": "" + }, + "Donut": { + "Query": "* Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AuthenticationType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#ff8c00", + "#00d8cc", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AuthenticationType_s,Status_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Authentication", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Error Logs", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Operation", + "Subtitle": "" + }, + "Donut": { + "Query": "* Type=AzureStorage_CL Type=AzureStorage_CL MetricName_s=AuditLogs AND NOT (Status_s:Success OR Status_s:SASSuccess)|measure count() by Operation_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#dd5900", + "#fcd116" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs AND NOT (Status_s:Success OR Status_s:SASSuccess)|measure count() by StorageAccount_s,StorageService_s,Operation_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "StorageAccount", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Requester IPs Excluding Azure Native Calls", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "IPs", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs AND NOT (UserAgent_s=\"\\\"Azure-Storage/0.5.0 (Native; Windows)\\\"\")|measure count() by RequesterIP_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs AND NOT (UserAgent_s=\"\\\"Azure-Storage/0.5.0 (Native; Windows)\\\"\")|measure count() by RequesterIP_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Requester IP", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + } + ], + "OverviewTile": { + "Id": "LineChartCalloutBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "LineChart": { + "Query": "* Type=AzureStorage_CL Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s ", + "Callout": { + "Title": "Total Logs", + "Series": "", + "Operation": "Sum" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + } + ] + }, + { + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "name": "", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "[last(parameters('linkedWorkspaceSKU'))]" + } + }, + "resources": [ + { + "name": "saAzureSubscriptionId", + "type": "variables", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Azure Subscription Id", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Value of the user's omsWorkspaceId", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').customerId,'\"')]" + } + }, + { + "name": "(opsInsightWorkspaceKey)", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Encrypted value of the user's omsWorkspaceKey", + "isEncrypted": 1, + "type": "string", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": 0, + "type": "string", + "value": "\" parameters('omsAutomationAccountName')\"" + } + }, + { + "name": "AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "The name of the resource group", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"', resourceGroup().name, '\"')]" + } + }, + { + "name": "(runbooks).ingestMetricsRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestMetricsRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestMetricsRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAIngestionMetrics-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestMetricsRunbook.version" + } + } + }, + { + "condition": false, + "name": "(runbooks).ingestLogsRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestLogsRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestLogsRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAIngestionLogs-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestLogsRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestSchedulerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestSchedulerRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestSchedulerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSACreateSchedules-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestSchedulerRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestMetricsEnablerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestMetricsEnablerRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestMetricsEnablerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/scripts/AzureSAMetricsEnabler-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestMetricsEnablerRunbook.version" + } + } + }, + { + "name": "parameters('omsAutomationAccountName')/ingestscheduleName", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name" + ], + "tags": {}, + "properties": { + "description": "OMS Azure Storage Runbook Scheduler", + "startTime": "", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "parameters('omsAutomationAccountName')/IngestScheduleGuid", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/schedules/ingestscheduleName", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "schedule": { + "name": "ingestscheduleName" + }, + "runbook": { + "name": "(Runbooks).ingestSchedulerRunbook.name" + }, + "parameters": { + "collectAuditLogs": "collectAuditLogs", + "collectionFromAllSubscriptions": "collectionFromAllSubscriptions" + } + } + } + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces/linkedServices", + "name": "parameters('omsLogAnalyticsWorkspaceName')/Automation", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "properties": { + "resourceId": "Microsoft.Automation/automationAccounts//parameters('omsAutomationAccountName')" + }, + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')" + ] + }, + { + "name": "(omsSolutions).customSolution1.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestMetricsRunbook.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestMetricsEnablerRunbook.name" + ], + "plan": { + "name": "(omsSolutions).customSolution1.solutionName", + "product": "(omsSolutions).customSolution1.name", + "publisher": "(omsSolutions).customSolution1.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces// parameters('omsLogAnalyticsWorkspaceName')", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution1.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestMetricsRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestMetricsEnablerRunbook.name", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA" + ] + } + }, + { + "name": "(omsSolutions).customSolution2.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution2.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestLogsRunbook.name", + "Microsoft.OperationsManagement/solutions/(omsSolutions).customSolution1.solutionName" + ], + "plan": { + "name": "(omsSolutions).customSolution2.solutionName", + "product": "(omsSolutions).customSolution2.name", + "publisher": "(omsSolutions).customSolution2.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces// parameters('omsLogAnalyticsWorkspaceName')", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution2.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestLogsRunbook.name" + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT754 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT754 new file mode 100644 index 0000000..0119fa5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT754 @@ -0,0 +1,3169 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToWorkspaceAnalyticsOnly.json" + ], + "timestamp": 1642962900736, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToWorkspaceAnalyticsOnly.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT754", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT754", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "deploymentNameSuffix": { + "type": "string", + "metadata": { + "description": "Used to create unique deployment names for subsequent deployments" + } + }, + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + } + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "westcentralus", + "japaneast", + "uksouth", + "centralindia", + "canadacentral" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + } + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use an existing Automation account or create a new" + } + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast", + "northcentralus", + "brazilsouth", + "uksouth", + "westcentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "linkedWorkspaceSKU": { + "type": "array", + "defaultValue": [ + "pernode", + "OMS" + ], + "allowedValues": [ + [ + "pernode", + "OMS" + ], + [ + "free", + "free" + ] + ] + }, + "collectAuditLogs": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "This option creates extra collectors to collect and ingest storage audit logs" + } + }, + "collectionFromAllSubscriptions": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enables data collection from all subscriptions where Azure SPN has access" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "runbooks": { + "ingestMetricsRunbook": { + "name": "AzureSAIngestionMetrics-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Storage Inventory data and events into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestLogsRunbook": { + "name": "AzureSAIngestionLogs-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Storage Audit Logs into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestMetricsEnablerRunbook": { + "name": "AzureSAMetricsEnabler-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to enable Storage Analytics metrics", + "type": "PowerShell", + "Id": "" + }, + "ingestSchedulerRunbook": { + "name": "AzureSACreateSchedules-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically create required schedules for OMS Log Analytics ingestion", + "type": "PowerShell", + "Id": "" + } + }, + "ingestScheduleGuid": "[guid(uniqueString(resourceGroup().id, deployment().name))]", + "metricsRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAIngestionMetrics-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "logsRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAIngestionLogs-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "metricsEnablerRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAMetricsEnabler-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "schedulerRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSACreateSchedules-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "azureSubscriptionId": "saAzureSubscriptionId", + "omsSolutions": { + "customSolution1": { + "name": "Azure Storage Analytics", + "solutionName": "[concat('AzureStorageAnalytics', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure Storage Analytics", + "description": "Monitor and analyze Azure Storage Accounts", + "author": "volkanc@microsoft.com" + } + }, + "opsInsightWorkspaceID": "AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA", + "createScheduleResourceGroupType": "string", + "SchedulerFrequency": "Hourly", + "createScheduleResourceGroupDescription": "The name of the resource group", + "ingestScheduleName": "AzureSA-Scheduler-Hourly", + "ingestInterval": "1", + "ingestFrequency": "hour", + "alertArray": [ + { + "searchName": "Azure Storage Account IO Throttling Limit", + "description": "Each standard storage account is capped to 20.000 IOPs . This alert is indicator that one of your storage accounts is at the risk of throttling and IO might be capped.", + "severity": "critical", + "query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=VHDFile StorageAccount_s in {Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=StorageAccount Tier_s=Standard|measure count() by StorageAccount_s}| measure sum(MaxDiskIO_d) as TotalIO by StorageAccount_s |where TotalIO > 20000 ", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 15, + "scheduleQueryTimeSpan": 15, + "alertName": "Azure Storage Account IO Throttling Limits Reached" + }, + { + "searchName": "Azure Premium Storage Account NotinUse", + "description": "Azure does not delete the vhd files associated with VMs when the VM is deleted. If the VM is suing premium storage you will be chardged for that storage untill you migarte the data and delete the storage account.", + "severity": "critical", + "query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=VHDFile Uri_s=NullUri TimeGenerated>NOW-1HOUR |measure count() by StorageAccount_s", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 240, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Premium Storage Account NotinUse" + } + ], + "alertMetricArray": [ + { + "searchName": "Azure Storage Quota Usage Critical", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approaching the storage account limits.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=StorageQuotas |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s interval 15MINUTES", + "alertTresholdValue": 90, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Account Quota Consumption is greater than 90%" + }, + { + "searchName": "Azure Storage Quota Usage Warning", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approacihing the storage account limits.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=StorageQuotas |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s interval 15MINUTES", + "alertTresholdValue": 80, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Account Quota Consumption is greater than 80%" + }, + { + "searchName": "Azure Storage Availability Below 95pct", + "description": "Any value less than 100% indicates that some storage requests are failing. Examine other ErrorPercentage information to see the reason for failures. This alert is an indicator that Availability for requests fall below %95.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(Availability_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 95, + "operator": "lt", + "alertThrottleInMinutes": 240, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Availability Below 95pct" + }, + { + "searchName": "Azure Storage End2End Latency Too High", + "description": "AverageE2ELatency is a measure of end-to-end latency that includes the time taken to read the request and send the response in addition to the time taken to process the request including network latency. This alert is an indicator that AvergaeE2ELAtency for storage account is above 100ms.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(Availability_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 100, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage End2End Latency Above 100ms" + }, + { + "searchName": "Azure Storage High PercentThrottlingError", + "description": "Throttling errors occur when you exceed the scalability targets of a storage service. The storage service does this to ensure that no single client or tenant can use the service at the expense of others. This alert is an indicator that storage account has reached the throttling limits and some requests are failing.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentThrottlingError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentThrottlingError" + }, + { + "searchName": "Azure Storage High PercentTimeoutError", + "description": "The PercentTimeoutError metric represents the timeout in storage requests and is an aggregation of the following metrics: ClientTimeoutError, AnonymousClientTimeoutError, SASClientTimeoutError, ServerTimeoutError, AnonymousServerTimeoutError, and SASServerTimeoutError.This alert is an indicator that storage account has reached the throttling limits and some requests are failing.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentTimeoutError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentTimeoutError" + }, + { + "searchName": "Azure Storage High PercentNetworkError", + "description": "The PercentNetworkError metric is an aggregation of the following metrics NetworkError, AnonymousNetworkError, and SASNetworkError. These occur when the storage service detects a network error when the client makes a storage request.This alert is an indicator that storage account is facing network related errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentNetworkError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentNetworkError" + }, + { + "searchName": "Azure Storage SASAuthorizationError", + "description": "If the client application attempts to use a SAS key that does not include the necessary permissions for the operation, the storage service returns an HTTP 404 (Not found) message to the client. At the same time, you will also see a non-zero value for SASAuthorizationError in the metrics. This alert is an indicator that storage account is facing SAS Autorizations errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(SASAuthorizationError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage SASAuthorizationError Detected" + }, + { + "searchName": "Azure Storage High PercentAuthorizationError", + "description": "The percentage of requests that failed with an AuthorizationError. This alert is an indicator that storage account is facing authorization errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentAuthorizationError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentAuthorizationError" + }, + { + "searchName": "Azure Storage PercentClientOtherError", + "description": "Authenticated request that failed as expected. This error can represent many 300-400 level HTTP status codes and conditions such as NotFound and ResourceAlreadyExists. This alert is an indicator that more than 1% of the requests failed with such errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentClientOtherError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentClientOtherError" + }, + { + "searchName": "Azure Storage High PercentServerOtherError", + "description": "Authenticated request that failed due to unknown server errors, most commonly returning an HTTP 500 status code. This alert is an indicator that more than 1% of the requests failed with such errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentServerOtherError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentServerOtherError" + }, + { + "searchName": "Azure File Share Quota Usage Warning", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approacihing the storage account limits.", + "severity": "warning", + "query": "Type=AzureStorage_CL ShowinDesigner_d!=0 InventoryType_s=File | EXTEND product(div(ShareUsedGB_d,Quota_d),100) as ShareUsage | measure avg(ShareUsage) by FileShare_s interval 15MINUTES", + "alertTresholdValue": 80, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure File Share Quota Usage is greater than 80%" + } + ] + }, + "resources": [ + { + "name": "", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "properties": { + "sku": { + "name": "free" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution1.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution1.name", + "dependson": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution1.name", + "DisplayName": "(omsSolutions).customSolution1.displayName", + "Description": "(omsSolutions).customSolution1.description", + "Author": "(omsSolutions).customSolution1.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "Azure Storage Analytics", + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAztJREFUeNrUmktoE1EUhqexKj4zJWoaqIpVaVGxKr6ogsaNbhS0YKkKFeKmriwFEaXYnY+FYjeCbmtRRBeuXIlLMe1CXGlduBOt0rS1FaF2/A+ciWMy0yT3njvN/PBtMuHc8899zJ1zp8ZxHEtAKXAE7AdNYBOwGVKO+QQ+gDfgFfii23CNhoHV4CyzWzHGEBgEA2BUKQIZqJAG0A+mHTn9AvfB2krzqeTPi8AVMOWYE92UPrBY2kAzeOeEp/fcZsncYmWMsjaQBdut8LSN22zTnQMXwYwzf5rhHJSGUJdTPeoKyjNoGT0JnoIFCt1/GXwOuNYIbirE/APawbNyhlATmNS4W4fm6NW0Rlxa/baWmsQLwROwXGMC2orXSmkpeMw55lVooAe0aK4gcUMG3NWpJ8hAA+gVWAJtRXPlqpdzLTJwlbvJpAFbID7leK3QwCpwXughFDdsgNTJOecN0A9LhIKbHkIW59rpNdAhuA2wQ+gB0hnXQBLsiqCBnaCeDKTpxUYwcDwkA5TzYTLQKryTDGMOuDoQ44eDFcEhRNpCBtYJB42HaGC9O4klVRuwl1opPNdIa2KaG7dK7nSdgXZWxCwzskOYwPmtxISBuPEQxj9pnAx8NRC4LiQDo2RgJMI98DHGtUpppbgXvNSbMEAv9af5NTKKaicDtK/+ZmCNNi0qpyRpCH3nKnHUNOROYtIj4eDTXP9JMzfAlHAbg966UEKwXE71m70+NSH67bdgFTvhrQv9AA+E7sw98Nbnd/rtjlAbDznn/ypzKc2KnKuDc1TmWgXiT3KuRZU5Oq+6LrQ6BGlWIH6f5TlbK9zM9YNhzQaOKV4rR8M8RD23q7ibG0FOo4snwA6fuC18TVWU08Zyy+snwHNLrbxu8ZJ5F7zkIXUUdNP+XTEelddPgRfFAzZ4wmXAbBUcblAOF1QP+TJVcMSU0T2lPA7G5iH5HLctcsy6AWRDTD7LbYoedNeCS2DcYOK0SnVzW+In9S5JcEtzSfRL/DbHrigfnY896C2LPvQ4B/b4PBRLiZ7KdJg9wLvhMaUCqdDnNgkqtIJ9oBlspqITWMYvSj/5pWnE+ve5zev8hkxDfwUYAP0NkvYTPlJVAAAAAElFTkSuQmCC", + "Label": "Azure Storage Account Monitoring", + "Link": { + "Label": "More info ", + "Url": "https://github.com/Azure/azure-quickstart-templates/blob/master/demos/oms-azure-storage-analytics-solution/README.md" + } + }, + "List": [ + { + "Title": "Solution Overview", + "Content": "\nAzure Storage Analytics Solution utilizes native **Storage REST API** capabilities and **Storage Analytics** to enable inventory of storage accounts , capacity and transaction monitoring and collecting storage audit logs from a single or multiple Azure Subscriptions. \nCollected data can be utilized to create alerts and trigger automation runbooks.\n\n Inventory and metrics are collected every 15 mins, logs are collected every 60 mins and VHD blob scan is performed every 4hours." + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Usage for Subscription", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Accounts by Deployment type", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=StorageQuotas TimeGenerated >NOW-60MINUTES |measure avg(SACurrent_d) by QuotaType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#55d455", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=StorageQuotas TimeGenerated >NOW-60MINUTES |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account Quota", + "Value": "% Utilized" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "80", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Azure Storage Inventory", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Inventory", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory AND NOT InventoryType_s=VHDFile | measure countdistinct(Uri_s) by InventoryType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [ + "StorageAccount" + ] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory AND NOT InventoryType_s=VHDFile | measure countdistinct(Uri_s) by InventoryType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Inventory", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Capacity Usage", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Utilized (GB)", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsCapacity TimeGenerated>NOW-1HOUR |measure avg(Capacity_d) as UsedGB by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#fcd116", + "#0072c6", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsCapacity TimeGenerated>NOW-1HOUR |measure avg(Capacity_d) as UsedGB by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE Account", + "Value": "UsedinGB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "400000", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "450000", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "STORAGE ACCOUNT INVENTORY", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "SA by Tier", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=StorageAccount |measure countdistinct(StorageAccount_s) by Sku_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=StorageAccount |measure countdistinct(StorageAccount_s) by Location_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA by Location", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "200", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "250", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Total Requests", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalRequests per Storage Acc", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#55d455", + "#fcd116" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalRequests_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "RequestCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - E2E Latency (ms)", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(AverageE2ELatency_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(AverageE2ELatency_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "Latency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "50", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "100", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "IAAS - Disks by SA", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "VHDs Attached to VMs", + "Subtitle": "VHD Count" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile LeaseState_s=leased | measure countdistinct(Uri_s) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=Inventory ShowinDesigner_d!=0 InventoryType_s=VHDFile LeaseState_s=leased | measure countdistinct(Uri_s) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGEACCOUNT", + "Value": "VHD COUNT" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "35", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "40", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Throttling Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Throttling ErrorPct by Storage Service", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL |measure avg(PercentThrottlingError_d) by StorageService_s", + "Callout": { + "Title": "Avg per hour", + "Series": "", + "Operation": "Average" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=AzureStorage_CL |measure avg(PercentThrottlingError_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGEACCOUNT", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": " Top 10 " + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "Count", + "baseUnit": "Ones", + "displayUnit": "AUTO" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over Time", + "Subtitle": "TOP 10" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Ingres Traffic", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE ACCOUNT", + "Value": "Ingress Traffic" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Egress Traffic KB", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE ACCOUNT", + "Value": "Egress Traffic KB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE - TOTAL REQUESTS ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Total Request per Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "RequestCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "QUEUE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "QUEUE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "FILE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File| measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "FILE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + } + ], + "OverviewTile": { + "Id": "LineChartCalloutBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "Callout": { + "Title": "TOTAL REQUESTS", + "Series": "", + "Operation": "Sum" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + } + ] + }, + { + "apiversion": "2015-10-31", + "location": "omsAutomationRegion", + "name": "", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "basic" + } + }, + "resources": [ + { + "name": "saAzureSubscriptionId", + "type": "variables", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Azure Subscription Id", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Value of the user's omsWorkspaceId", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').customerId,'\"')]" + } + }, + { + "name": "(opsInsightWorkspaceKey)", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Encrypted value of the user's omsWorkspaceKey", + "isEncrypted": 1, + "type": "string", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": 0, + "type": "string", + "value": "\" parameters('omsAutomationAccountName')\"" + } + }, + { + "name": "AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "The name of the resource group", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"', resourceGroup().name, '\"')]" + } + }, + { + "name": "(runbooks).ingestMetricsRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestMetricsRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestMetricsRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAIngestionMetrics-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestMetricsRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestSchedulerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestSchedulerRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestSchedulerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSACreateSchedules-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestSchedulerRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestMetricsEnablerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestMetricsEnablerRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestMetricsEnablerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAMetricsEnabler-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestMetricsEnablerRunbook.version" + } + } + }, + { + "name": "parameters('omsAutomationAccountName')/ingestscheduleName", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name" + ], + "tags": {}, + "properties": { + "description": "OMS Azure Storage Runbook Scheduler", + "startTime": "", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "parameters('omsAutomationAccountName')/IngestScheduleGuid", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/schedules/ingestscheduleName", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "schedule": { + "name": "ingestscheduleName" + }, + "runbook": { + "name": "(Runbooks).ingestSchedulerRunbook.name" + }, + "parameters": { + "collectAuditLogs": "collectAuditLogs", + "collectionFromAllSubscriptions": "collectionFromAllSubscriptions" + } + } + } + ] + }, + { + "name": "(omsSolutions).customSolution1.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "plan": { + "name": "(omsSolutions).customSolution1.solutionName", + "product": "(omsSolutions).customSolution1.name", + "publisher": "(omsSolutions).customSolution1.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces// parameters('omsLogAnalyticsWorkspaceName')", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution1.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestMetricsRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestMetricsEnablerRunbook.name", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA" + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT755 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT755 new file mode 100644 index 0000000..be08a24 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT755 @@ -0,0 +1,3759 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToWorkspaceWithAuditLogs.json" + ], + "timestamp": 1642962900756, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/deployToWorkspaceWithAuditLogs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT755", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT755", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "deploymentNameSuffix": { + "type": "string", + "metadata": { + "description": "Used to create unique deployment names for subsequent deployments" + } + }, + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + } + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "westcentralus", + "japaneast", + "uksouth", + "centralindia", + "canadacentral" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + } + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use an existing Automation account or create a new" + } + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast", + "northcentralus", + "brazilsouth", + "uksouth", + "westcentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "linkedWorkspaceSKU": { + "type": "array", + "defaultValue": [ + "pernode", + "OMS" + ], + "allowedValues": [ + [ + "pernode", + "OMS" + ], + [ + "free", + "free" + ] + ] + }, + "collectAuditLogs": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "This option creates extra collectors to collect and ingest storage audit logs" + } + }, + "collectionFromAllSubscriptions": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enables data collection from all subscriptions where Azure SPN has access" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "variables": { + "runbooks": { + "ingestMetricsRunbook": { + "name": "AzureSAIngestionMetrics-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Storage Inventory data and events into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestLogsRunbook": { + "name": "AzureSAIngestionLogs-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure Storage Audit Logs into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestMetricsEnablerRunbook": { + "name": "AzureSAMetricsEnabler-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to enable Storage Analytics metrics", + "type": "PowerShell", + "Id": "" + }, + "ingestSchedulerRunbook": { + "name": "AzureSACreateSchedules-MS-Mgmt-SA", + "version": "1.0.0.1", + "description": "Runbook to automatically create required schedules for OMS Log Analytics ingestion", + "type": "PowerShell", + "Id": "" + } + }, + "ingestScheduleGuid": "[guid(uniqueString(resourceGroup().id, deployment().name))]", + "metricsRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAIngestionMetrics-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "logsRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAIngestionLogs-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "metricsEnablerRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAMetricsEnabler-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "schedulerRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSACreateSchedules-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "azureSubscriptionId": "saAzureSubscriptionId", + "omsSolutions": { + "customSolution1": { + "name": "Azure Storage Analytics", + "solutionName": "[concat('AzureStorageAnalytics', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure Storage Analytics", + "description": "Monitor and analyze Azure Storage Accounts", + "author": "volkanc@microsoft.com" + }, + "customSolution2": { + "name": "Azure Storage Audit Logs", + "solutionName": "[concat('AzureStorageAuditLogs', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure Storage Audit Logs", + "description": "Monitor and analyze Azure Storage Account Audit Logs", + "author": "volkanc@microsoft.com" + } + }, + "opsInsightWorkspaceID": "AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA", + "createScheduleResourceGroupType": "string", + "SchedulerFrequency": "Hourly", + "createScheduleResourceGroupDescription": "The name of the resource group", + "ingestScheduleName": "AzureSA-Scheduler-Hourly", + "ingestInterval": "1", + "ingestFrequency": "hour", + "alertArray": [ + { + "searchName": "Azure Storage Account IO Throttling Limit", + "description": "Each standard storage account is capped to 20.000 IOPs . This alert is indicator that one of your storage accounts is at the risk of throttling and IO might be capped.", + "severity": "critical", + "query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=VHDFile StorageAccount_s in {Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=StorageAccount Tier_s=Standard|measure count() by StorageAccount_s}| measure sum(MaxDiskIO_d) as TotalIO by StorageAccount_s |where TotalIO > 20000 ", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 15, + "scheduleQueryTimeSpan": 15, + "alertName": "Azure Storage Account IO Throttling Limits Reached" + }, + { + "searchName": "Azure Premium Storage Account NotinUse", + "description": "Azure does not delete the vhd files associated with VMs when the VM is deleted. If the VM is suing premium storage you will be chardged for that storage untill you migarte the data and delete the storage account.", + "severity": "critical", + "query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=VHDFile Uri_s=NullUri TimeGenerated>NOW-1HOUR |measure count() by StorageAccount_s", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 240, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Premium Storage Account NotinUse" + } + ], + "alertMetricArray": [ + { + "searchName": "Azure Storage Quota Usage Critical", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approaching the storage account limits.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=StorageQuotas |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s interval 15MINUTES", + "alertTresholdValue": 90, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Account Quota Consumption is greater than 90%" + }, + { + "searchName": "Azure Storage Quota Usage Warning", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approacihing the storage account limits.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=StorageQuotas |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s interval 15MINUTES", + "alertTresholdValue": 80, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Account Quota Consumption is greater than 80%" + }, + { + "searchName": "Azure Storage Availability Below 95pct", + "description": "Any value less than 100% indicates that some storage requests are failing. Examine other ErrorPercentage information to see the reason for failures. This alert is an indicator that Availability for requests fall below %95.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(Availability_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 95, + "operator": "lt", + "alertThrottleInMinutes": 240, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage Availability Below 95pct" + }, + { + "searchName": "Azure Storage End2End Latency Too High", + "description": "AverageE2ELatency is a measure of end-to-end latency that includes the time taken to read the request and send the response in addition to the time taken to process the request including network latency. This alert is an indicator that AvergaeE2ELAtency for storage account is above 100ms.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(Availability_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 100, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage End2End Latency Above 100ms" + }, + { + "searchName": "Azure Storage High PercentThrottlingError", + "description": "Throttling errors occur when you exceed the scalability targets of a storage service. The storage service does this to ensure that no single client or tenant can use the service at the expense of others. This alert is an indicator that storage account has reached the throttling limits and some requests are failing.", + "severity": "critical", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentThrottlingError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentThrottlingError" + }, + { + "searchName": "Azure Storage High PercentTimeoutError", + "description": "The PercentTimeoutError metric represents the timeout in storage requests and is an aggregation of the following metrics: ClientTimeoutError, AnonymousClientTimeoutError, SASClientTimeoutError, ServerTimeoutError, AnonymousServerTimeoutError, and SASServerTimeoutError.This alert is an indicator that storage account has reached the throttling limits and some requests are failing.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentTimeoutError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentTimeoutError" + }, + { + "searchName": "Azure Storage High PercentNetworkError", + "description": "The PercentNetworkError metric is an aggregation of the following metrics NetworkError, AnonymousNetworkError, and SASNetworkError. These occur when the storage service detects a network error when the client makes a storage request.This alert is an indicator that storage account is facing network related errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentNetworkError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentNetworkError" + }, + { + "searchName": "Azure Storage SASAuthorizationError", + "description": "If the client application attempts to use a SAS key that does not include the necessary permissions for the operation, the storage service returns an HTTP 404 (Not found) message to the client. At the same time, you will also see a non-zero value for SASAuthorizationError in the metrics. This alert is an indicator that storage account is facing SAS Autorizations errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(SASAuthorizationError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage SASAuthorizationError Detected" + }, + { + "searchName": "Azure Storage High PercentAuthorizationError", + "description": "The percentage of requests that failed with an AuthorizationError. This alert is an indicator that storage account is facing authorization errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentAuthorizationError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentAuthorizationError" + }, + { + "searchName": "Azure Storage PercentClientOtherError", + "description": "Authenticated request that failed as expected. This error can represent many 300-400 level HTTP status codes and conditions such as NotFound and ResourceAlreadyExists. This alert is an indicator that more than 1% of the requests failed with such errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentClientOtherError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentClientOtherError" + }, + { + "searchName": "Azure Storage High PercentServerOtherError", + "description": "Authenticated request that failed due to unknown server errors, most commonly returning an HTTP 500 status code. This alert is an indicator that more than 1% of the requests failed with such errors.", + "severity": "warning", + "query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions | measure avg(PercentServerOtherError_d) by StorageAccount_s interval 15Minutes", + "alertTresholdValue": 1, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 2, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Storage High PercentServerOtherError" + }, + { + "searchName": "Azure File Share Quota Usage Warning", + "description": "Each Azure Subscription can host certain number of storage accounts. This alert is an indicator that your Azure Subscription is approacihing the storage account limits.", + "severity": "warning", + "query": "Type=AzureStorage_CL ShowinDesigner_d!=0 InventoryType_s=File | EXTEND product(div(ShareUsedGB_d,Quota_d),100) as ShareUsage | measure avg(ShareUsage) by FileShare_s interval 15MINUTES", + "alertTresholdValue": 80, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure Storage Analytics", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure File Share Quota Usage is greater than 80%" + } + ] + }, + "resources": [ + { + "name": "", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "properties": { + "sku": { + "name": "free" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution1.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution1.name", + "dependson": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution1.name", + "DisplayName": "(omsSolutions).customSolution1.displayName", + "Description": "(omsSolutions).customSolution1.description", + "Author": "(omsSolutions).customSolution1.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "InformationBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "Title": "Azure Storage Analytics", + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAztJREFUeNrUmktoE1EUhqexKj4zJWoaqIpVaVGxKr6ogsaNbhS0YKkKFeKmriwFEaXYnY+FYjeCbmtRRBeuXIlLMe1CXGlduBOt0rS1FaF2/A+ciWMy0yT3njvN/PBtMuHc8899zJ1zp8ZxHEtAKXAE7AdNYBOwGVKO+QQ+gDfgFfii23CNhoHV4CyzWzHGEBgEA2BUKQIZqJAG0A+mHTn9AvfB2krzqeTPi8AVMOWYE92UPrBY2kAzeOeEp/fcZsncYmWMsjaQBdut8LSN22zTnQMXwYwzf5rhHJSGUJdTPeoKyjNoGT0JnoIFCt1/GXwOuNYIbirE/APawbNyhlATmNS4W4fm6NW0Rlxa/baWmsQLwROwXGMC2orXSmkpeMw55lVooAe0aK4gcUMG3NWpJ8hAA+gVWAJtRXPlqpdzLTJwlbvJpAFbID7leK3QwCpwXughFDdsgNTJOecN0A9LhIKbHkIW59rpNdAhuA2wQ+gB0hnXQBLsiqCBnaCeDKTpxUYwcDwkA5TzYTLQKryTDGMOuDoQ44eDFcEhRNpCBtYJB42HaGC9O4klVRuwl1opPNdIa2KaG7dK7nSdgXZWxCwzskOYwPmtxISBuPEQxj9pnAx8NRC4LiQDo2RgJMI98DHGtUpppbgXvNSbMEAv9af5NTKKaicDtK/+ZmCNNi0qpyRpCH3nKnHUNOROYtIj4eDTXP9JMzfAlHAbg966UEKwXE71m70+NSH67bdgFTvhrQv9AA+E7sw98Nbnd/rtjlAbDznn/ypzKc2KnKuDc1TmWgXiT3KuRZU5Oq+6LrQ6BGlWIH6f5TlbK9zM9YNhzQaOKV4rR8M8RD23q7ibG0FOo4snwA6fuC18TVWU08Zyy+snwHNLrbxu8ZJ5F7zkIXUUdNP+XTEelddPgRfFAzZ4wmXAbBUcblAOF1QP+TJVcMSU0T2lPA7G5iH5HLctcsy6AWRDTD7LbYoedNeCS2DcYOK0SnVzW+In9S5JcEtzSfRL/DbHrigfnY896C2LPvQ4B/b4PBRLiZ7KdJg9wLvhMaUCqdDnNgkqtIJ9oBlspqITWMYvSj/5pWnE+ve5zev8hkxDfwUYAP0NkvYTPlJVAAAAAElFTkSuQmCC", + "Label": "Azure Storage Account Monitoring", + "Link": { + "Label": "More info ", + "Url": "https://github.com/Azure/azure-quickstart-templates/blob/master/demos/oms-azure-storage-analytics-solution/README.md" + } + }, + "List": [ + { + "Title": "Solution Overview", + "Content": "\nAzure Storage Analytics Solution utilizes native **Storage REST API** capabilities and **Storage Analytics** to enable inventory of storage accounts , capacity and transaction monitoring and collecting storage audit logs from a single or multiple Azure Subscriptions. \nCollected data can be utilized to create alerts and trigger automation runbooks.\n\n Inventory and metrics are collected every 15 mins, logs are collected every 60 mins and VHD blob scan is performed every 4hours." + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Usage for Subscription", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Accounts by Deployment type", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=StorageQuotas TimeGenerated >NOW-60MINUTES |measure avg(SACurrent_d) by QuotaType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#55d455", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=StorageQuotas TimeGenerated >NOW-60MINUTES |measure avg(Quotapct_d) by AzureSubscription_s,QuotaType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account Quota", + "Value": "% Utilized" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "80", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Azure Storage Inventory", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Storage Inventory", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory AND NOT InventoryType_s=VHDFile | measure countdistinct(Uri_s) by InventoryType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [ + "StorageAccount" + ] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory AND NOT InventoryType_s=VHDFile | measure countdistinct(Uri_s) by InventoryType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Inventory", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Capacity Usage", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Utilized (GB)", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsCapacity TimeGenerated>NOW-1HOUR |measure avg(Capacity_d) as UsedGB by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#fcd116", + "#0072c6", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsCapacity TimeGenerated>NOW-1HOUR |measure avg(Capacity_d) as UsedGB by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE Account", + "Value": "UsedinGB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "400000", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "450000", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "STORAGE ACCOUNT INVENTORY", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "SA by Tier", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=StorageAccount |measure countdistinct(StorageAccount_s) by Sku_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=StorageAccount |measure countdistinct(StorageAccount_s) by Location_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA by Location", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "200", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "250", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Total Requests", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalRequests per Storage Acc", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#55d455", + "#fcd116" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalRequests_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "RequestCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - E2E Latency (ms)", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(AverageE2ELatency_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(AverageE2ELatency_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "Latency" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "50", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "100", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "IAAS - Disks by SA", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "VHDs Attached to VMs", + "Subtitle": "VHD Count" + }, + "Donut": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=VHDFile LeaseState_s=leased | measure countdistinct(Uri_s) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL ShowinDesigner_d!=0 MetricName_s=Inventory InventoryType_s=VHDFile LeaseState_s=leased | measure countdistinct(Uri_s) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGEACCOUNT", + "Value": "VHD COUNT" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "35", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "40", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Account Throttling Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Throttling ErrorPct by Storage Service", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL |measure avg(PercentThrottlingError_d) by StorageService_s", + "Callout": { + "Title": "Avg per hour", + "Series": "", + "Operation": "Average" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=AzureStorage_CL |measure avg(PercentThrottlingError_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGEACCOUNT", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": " Top 10 " + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "Count", + "baseUnit": "Ones", + "displayUnit": "AUTO" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over Time", + "Subtitle": "TOP 10" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Ingres Traffic", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE ACCOUNT", + "Value": "Ingress Traffic" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - Egress Traffic KB", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "STORAGE ACCOUNT", + "Value": "Egress Traffic KB" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "BLOB - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Blob |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE - TOTAL REQUESTS ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Total Request per Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table TimeGenerated>NOW-1HOUR |measure sum(TotalRequests_d) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Storage Account", + "Value": "RequestCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TABLE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Table |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "QUEUE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "QUEUE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=Queue |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "FILE STORAGE METRICS", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Ingress Traffic KB Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File| measure sum(TotalIngress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalIngress_d,1024) as IngressKB | measure sum(IngressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Egress Traffic KB Over time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File | measure sum(TotalEgress_d) by StorageAccount_s |top 10 } | EXTEND div(TotalEgress_d,1024) as EgressKB | measure sum(EgressKB) by StorageAccount_s interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Total Requests Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File StorageAccount_s IN {Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File | measure sum(TotalRequests_d) by StorageAccount_s |top 10 } |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "FILE - SA Request Errors", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "TotalErrorPct by Storage Account", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError) as AvgPctError by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Percentage", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#ff8c00", + "#ffb900" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |EXTEND sum(PercentClientOtherError_d,PercentNetworkError_d,PercentTimeoutError_d,PercentThrottlingError_d,PercentAuthorizationError_d,PercentServerOtherError_d) AS TotalError |measure avg(TotalError)as AvgPctError by StorageAccount_s,StorageService_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "SA", + "Value": "Error %" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutStackedBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Request ErrorPct Distribution", + "newGroup": false + }, + "charts": [ + { + "Header": { + "Title": "Client Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentClientOtherError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Network Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentNetworkError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + }, + { + "Header": { + "Title": "Authorization Error Pct Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions StorageService_s=File |measure avg(PercentAuthorizationError_d) by StorageAccount_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + } + } + ] + } + } + ], + "OverviewTile": { + "Id": "LineChartCalloutBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=MetricsTransactions |measure sum(TotalRequests_d) by StorageAccount_s Interval 15Minutes", + "Callout": { + "Title": "TOTAL REQUESTS", + "Series": "", + "Operation": "Sum" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution2.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution2.name", + "dependson": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution2.name", + "DisplayName": "(omsSolutions).customSolution2.displayName", + "Description": "(omsSolutions).customSolution2.description", + "Author": "(omsSolutions).customSolution2.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Logs By Subscription and UserAgent", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Operations Over Time", + "Subtitle": "" + }, + "LineChart": { + "Query": "* Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "* Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s,UserAgent_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Logs by Subscription and Operation", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Subscriptions", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#fcd116", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": " Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s,Operation_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Requester Tracking ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "IPs", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by RequesterIP_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#ff8c00", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by RequesterIP_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Storage Operations", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Top Operations", + "Subtitle": "" + }, + "Donut": { + "Query": " Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by Operation_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by StorageService_s,Operation_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Service", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Authentication Methods", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "SASvsAuthenticated", + "Subtitle": "" + }, + "Donut": { + "Query": "* Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AuthenticationType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#ff8c00", + "#00d8cc", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "* Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AuthenticationType_s,Status_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Authentication", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Error Logs", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Operation", + "Subtitle": "" + }, + "Donut": { + "Query": " Type=AzureStorage_CL MetricName_s=AuditLogs AND NOT (Status_s:Success OR Status_s:SASSuccess)|measure count() by Operation_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#e81123", + "#dd5900", + "#fcd116" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs AND NOT (Status_s:Success OR Status_s:SASSuccess)|measure count() by StorageAccount_s,StorageService_s,Operation_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "StorageAccount", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Requester IPs Excluding Azure Native Calls", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "IPs", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs AND NOT (UserAgent_s=\"\\\"Azure-Storage/0.5.0 (Native; Windows)\\\"\")|measure count() by RequesterIP_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs AND NOT (UserAgent_s=\"\\\"Azure-Storage/0.5.0 (Native; Windows)\\\"\")|measure count() by RequesterIP_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Requester IP", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + } + ], + "OverviewTile": { + "Id": "LineChartCalloutBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "LineChart": { + "Query": "Type=AzureStorage_CL MetricName_s=AuditLogs | measure count() by AzureSubscription_s ", + "Callout": { + "Title": "Total Logs", + "Series": "", + "Operation": "Sum" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + } + ] + }, + { + "apiversion": "2015-10-31", + "location": "omsAutomationRegion", + "name": "", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "saAzureSubscriptionId", + "type": "variables", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Azure Subscription Id", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Value of the user's omsWorkspaceId", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').customerId,'\"')]" + } + }, + { + "name": "(opsInsightWorkspaceKey)", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "Encrypted value of the user's omsWorkspaceKey", + "isEncrypted": 1, + "type": "string", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": 0, + "type": "string", + "value": "\" parameters('omsAutomationAccountName')\"" + } + }, + { + "name": "AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "description": "The name of the resource group", + "isEncrypted": 0, + "type": "string", + "value": "[concat('\"', resourceGroup().name, '\"')]" + } + }, + { + "name": "(runbooks).ingestMetricsRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestMetricsRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestMetricsRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAIngestionMetrics-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestMetricsRunbook.version" + } + } + }, + { + "condition": false, + "name": "(runbooks).ingestLogsRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestLogsRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestLogsRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAIngestionLogs-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestLogsRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestSchedulerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestSchedulerRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestSchedulerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSACreateSchedules-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestSchedulerRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestMetricsEnablerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/variables/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestMetricsEnablerRunbook.type", + "logProgress": "false", + "logVerbose": "false", + "description": "(runbooks).ingestMetricsEnablerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/scripts/AzureSAMetricsEnabler-MS-Mgmt-SA.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestMetricsEnablerRunbook.version" + } + } + }, + { + "name": "parameters('omsAutomationAccountName')/ingestscheduleName", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name" + ], + "tags": {}, + "properties": { + "description": "OMS Azure Storage Runbook Scheduler", + "startTime": "", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "parameters('omsAutomationAccountName')/IngestScheduleGuid", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2015-10-31", + "location": "omsAutomationRegion", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/schedules/ingestscheduleName", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')" + ], + "tags": {}, + "properties": { + "schedule": { + "name": "ingestscheduleName" + }, + "runbook": { + "name": "(Runbooks).ingestSchedulerRunbook.name" + }, + "parameters": { + "collectAuditLogs": "collectAuditLogs", + "collectionFromAllSubscriptions": "collectionFromAllSubscriptions" + } + } + } + ] + }, + { + "name": "(omsSolutions).customSolution1.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestMetricsRunbook.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestMetricsEnablerRunbook.name" + ], + "plan": { + "name": "(omsSolutions).customSolution1.solutionName", + "product": "(omsSolutions).customSolution1.name", + "publisher": "(omsSolutions).customSolution1.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces// parameters('omsLogAnalyticsWorkspaceName')", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution1.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestMetricsRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestMetricsEnablerRunbook.name", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/saAzureSubscriptionId", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-OPSINSIGHTS_WS_ID-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-OPSINSIGHTS_WS_KEY-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-AzureAutomationAccount-MS-Mgmt-SA", + "Microsoft.Automation/automationAccounts/variables// parameters('omsAutomationAccountName')/AzureSAIngestion-AzureAutomationResourceGroup-MS-Mgmt-SA" + ] + } + }, + { + "name": "(omsSolutions).customSolution2.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "omsLogAnalyticsRegion", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution2.name", + "Microsoft.Automation/automationAccounts/ parameters('omsAutomationAccountName')/runbooks/(runbooks).ingestLogsRunbook.name", + "Microsoft.OperationsManagement/solutions/(omsSolutions).customSolution1.solutionName" + ], + "plan": { + "name": "(omsSolutions).customSolution2.solutionName", + "product": "(omsSolutions).customSolution2.name", + "publisher": "(omsSolutions).customSolution2.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces// parameters('omsLogAnalyticsWorkspaceName')", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views// parameters('omsLogAnalyticsWorkspaceName')/(omsSolutions).customSolution2.name", + "Microsoft.Automation/automationAccounts/runbooks// parameters('omsAutomationAccountName')/(runbooks).ingestLogsRunbook.name" + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": false + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')", + "Microsoft.OperationalInsights/workspaces/ parameters('omsLogAnalyticsWorkspaceName')/views/(omsSolutions).customSolution1.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "Total", + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertBreach" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT756 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT756 new file mode 100644 index 0000000..f242475 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT756 @@ -0,0 +1,272 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/omsDeployStorageAnalyticsOnly.json" + ], + "timestamp": 1642962900779, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/omsDeployStorageAnalyticsOnly.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT756", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT756", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "deploymentNameSuffix": { + "type": "string", + "metadata": { + "description": "Used to create unique deployment names for subsequent deployments" + } + }, + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + } + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "westcentralus", + "japaneast", + "uksouth", + "centralindia", + "canadacentral" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + } + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use an existing Automation account or create a new" + } + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast", + "northcentralus", + "brazilsouth", + "uksouth", + "westcentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "omsWorkspaceType": { + "type": "string", + "allowedValues": [ + "Linked", + "Unlinked" + ], + "metadata": { + "description": "Specify the workspace type" + } + }, + "linkedWorkspaceSKU": { + "type": "array", + "defaultValue": [ + "pernode", + "OMS" + ], + "allowedValues": [ + [ + "pernode", + "OMS" + ], + [ + "free", + "free" + ] + ], + "metadata": { + "description": "Choose the SKU for linked workspace , only valid if omsWorkspaceType is Linked otherwise ignored." + } + }, + "collectAuditLogs": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "This option creates extra collectors to collect and ingest storage audit logs" + } + }, + "collectionFromAllSubscriptions": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enables data collection from all subscriptions where Azure SPN has access" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "nestedTemplates": { + "deployToLinkedWorkspaceAnalyticsOnly": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/nestedtemplates/deployToLinkedWorkspaceAnalyticsOnly.json parameters('_artifactsLocationSasToken')", + "deployToWorkspaceAnalyticsOnly": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/nestedtemplates/deployToWorkspaceAnalyticsOnly.json parameters('_artifactsLocationSasToken')" + } + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "LinkedWSAnalyticsOnly-deploymentNameSuffix", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).deployToLinkedWorkspaceAnalyticsOnly", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "deploymentNameSuffix": { + "value": "deploymentNameSuffix" + }, + "omsLogAnalyticsWorkspaceName": { + "value": "" + }, + "omsLogAnalyticsRegion": { + "value": "omsLogAnalyticsRegion" + }, + "omsLogAnalyticsSku": { + "value": "free" + }, + "omsAutomationAccountName": { + "value": "" + }, + "omsAutomationRegion": { + "value": "omsAutomationRegion" + }, + "linkedWorkspaceSKU": { + "value": [ + "pernode", + "OMS" + ] + }, + "collectAuditLogs": { + "value": "collectAuditLogs" + }, + "collectionFromAllSubscriptions": { + "value": "collectionFromAllSubscriptions" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "AnalyticsOnly-deploymentNameSuffix", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).deployToWorkspaceAnalyticsOnly", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "deploymentNameSuffix": { + "value": "deploymentNameSuffix" + }, + "omsLogAnalyticsWorkspaceName": { + "value": "" + }, + "omsLogAnalyticsRegion": { + "value": "omsLogAnalyticsRegion" + }, + "omsLogAnalyticsSku": { + "value": "free" + }, + "omsAutomationAccountName": { + "value": "" + }, + "omsAutomationRegion": { + "value": "omsAutomationRegion" + }, + "collectAuditLogs": { + "value": "collectAuditLogs" + }, + "collectionFromAllSubscriptions": { + "value": "collectionFromAllSubscriptions" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT757 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT757 new file mode 100644 index 0000000..d3af39e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT757 @@ -0,0 +1,278 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/omsDeployStorageAnalyticsWithAuditLogs.json" + ], + "timestamp": 1642962900789, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/nestedtemplates/omsDeployStorageAnalyticsWithAuditLogs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT757", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT757", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "deploymentNameSuffix": { + "type": "string", + "metadata": { + "description": "Used to create unique deployment names for subsequent deployments" + } + }, + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + } + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "westcentralus", + "japaneast", + "uksouth", + "centralindia", + "canadacentral" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + } + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use an existing Automation account or create a new" + } + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast", + "northcentralus", + "brazilsouth", + "uksouth", + "westcentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + } + }, + "omsWorkspaceType": { + "type": "string", + "allowedValues": [ + "Linked", + "Unlinked" + ], + "metadata": { + "description": "Specify the workspace type" + } + }, + "linkedWorkspaceSKU": { + "type": "array", + "defaultValue": [ + "pernode", + "OMS" + ], + "allowedValues": [ + [ + "pernode", + "OMS" + ], + [ + "free", + "free" + ] + ], + "metadata": { + "description": "Choose the SKU for linked workspace , only valid if omsWorkspaceType is Linked otherwise ignored." + } + }, + "collectAuditLogs": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "This option creates extra collectors to collect and ingest storage audit logs" + } + }, + "collectionFromAllSubscriptions": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enables data collection from all subscriptions where Azure SPN has access" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "nestedTemplates": { + "deployToLinkedWorkspaceWithAuditLogs": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/nestedtemplates/deployToLinkedWorkspaceWithAuditLogs.json parameters('_artifactsLocationSasToken')", + "deployToWorkspaceWithAuditLogs": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2/nestedtemplates/deployToWorkspaceWithAuditLogs.json parameters('_artifactsLocationSasToken')" + } + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "AS-AnalyticswithLogs-Linked-deploymentNameSuffix", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).deployToLinkedWorkspaceWithAuditLogs", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "deploymentNameSuffix": { + "value": "deploymentNameSuffix" + }, + "omsLogAnalyticsWorkspaceName": { + "value": "" + }, + "omsLogAnalyticsRegion": { + "value": "omsLogAnalyticsRegion" + }, + "omsLogAnalyticsSku": { + "value": "free" + }, + "omsAutomationAccountName": { + "value": "" + }, + "omsAutomationRegion": { + "value": "omsAutomationRegion" + }, + "linkedWorkspaceSKU": { + "value": [ + "pernode", + "OMS" + ] + }, + "collectAuditLogs": { + "value": "collectAuditLogs" + }, + "collectionFromAllSubscriptions": { + "value": "collectionFromAllSubscriptions" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "AS-AnalyticswithLogs-deploymentNameSuffix", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).deployToWorkspaceWithAuditLogs", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "deploymentNameSuffix": { + "value": "deploymentNameSuffix" + }, + "omsLogAnalyticsWorkspaceName": { + "value": "" + }, + "omsLogAnalyticsRegion": { + "value": "omsLogAnalyticsRegion" + }, + "omsLogAnalyticsSku": { + "value": "free" + }, + "omsAutomationAccountName": { + "value": "" + }, + "omsAutomationRegion": { + "value": "omsAutomationRegion" + }, + "linkedWorkspaceSKU": { + "value": [ + "pernode", + "OMS" + ] + }, + "collectAuditLogs": { + "value": "collectAuditLogs" + }, + "collectionFromAllSubscriptions": { + "value": "collectionFromAllSubscriptions" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Volkanco/AzureDeploy/master/OMSSolutions/oms-azure-storage-analytics-solution-v2" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT758 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT758 new file mode 100644 index 0000000..43dbee1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT758 @@ -0,0 +1,303 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/azuredeploy.json", + "/demos/oms-azure-storage-analytics-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900797, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-storage-analytics-solution/azuredeploy.json", + "/demos/oms-azure-storage-analytics-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT758", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT758", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "deploymentNameSuffix": { + "type": "string", + "metadata": { + "description": "Provide an unique deployment names for each deployment subsequent deployments" + }, + "value": "GEN-UNIQUE-30" + }, + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + }, + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "westcentralus", + "japaneast", + "uksouth", + "centralindia", + "canadacentral" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing OMS workspace" + }, + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode", + "Per GB" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + }, + "value": "free" + }, + "omsAutomationAccountName": { + "type": "string", + "metadata": { + "description": "Use an existing Automation account or create a new" + }, + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast", + "northcentralus", + "brazilsouth", + "uksouth", + "westcentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + }, + "value": "eastus2" + }, + "omsWorkspaceType": { + "type": "string", + "allowedValues": [ + "Linked", + "Unlinked" + ], + "metadata": { + "description": "Specify the workspace type" + }, + "value": "Unlinked" + }, + "linkedWorkspaceSKU": { + "type": "array", + "defaultValue": [ + "pernode", + "OMS" + ], + "allowedValues": [ + [ + "pernode", + "OMS" + ], + [ + "free", + "free" + ], + [ + "Per GB", + "OMS" + ] + ], + "metadata": { + "description": "Choose the SKU for linked workspace , only valid if omsWorkspaceType is Linked otherwise ignored." + }, + "value": [ + "free", + "free" + ] + }, + "collectAuditLogs": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "This option creates extra collectors to collect and ingest storage audit logs" + }, + "value": "Disabled" + }, + "collectionFromAllSubscriptions": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "Enables data collection from all subscriptions where Azure SPN has access" + }, + "value": "Disabled" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "nestedTemplates": { + "omsDeployWithAuditLogs": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/nestedtemplates/omsDeployStorageAnalyticsWithAuditLogs.json parameters('_artifactsLocationSasToken')", + "omsDeployStorageAnalyticsOnly": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution/nestedtemplates/omsDeployStorageAnalyticsOnly.json parameters('_artifactsLocationSasToken')" + } + }, + "resources": [ + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "omsDeployWithAuditLogs-GEN-UNIQUE-30", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsDeployWithAuditLogs", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "deploymentNameSuffix": { + "value": "GEN-UNIQUE-30" + }, + "omsLogAnalyticsWorkspaceName": { + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "value": "free" + }, + "omsAutomationAccountName": { + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "value": "eastus2" + }, + "omsWorkspaceType": { + "value": "Unlinked" + }, + "linkedWorkspaceSKU": { + "value": [ + "free", + "free" + ] + }, + "collectAuditLogs": { + "value": "Disabled" + }, + "collectionFromAllSubscriptions": { + "value": "Disabled" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "omsDeployStorageAnalyticsOnly-GEN-UNIQUE-30", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsDeployStorageAnalyticsOnly", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "deploymentNameSuffix": { + "value": "GEN-UNIQUE-30" + }, + "omsLogAnalyticsWorkspaceName": { + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "value": "free" + }, + "omsAutomationAccountName": { + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "value": "eastus2" + }, + "omsWorkspaceType": { + "value": "Unlinked" + }, + "linkedWorkspaceSKU": { + "value": [ + "free", + "free" + ] + }, + "collectAuditLogs": { + "value": "Disabled" + }, + "collectionFromAllSubscriptions": { + "value": "Disabled" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-storage-analytics-solution" + } + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT759 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT759 new file mode 100644 index 0000000..df54209 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT759 @@ -0,0 +1,1551 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeploy.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900803, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeploy.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT759", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.automation/automationaccounts", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT759", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + }, + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "australiasoutheast", + "wescentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing Log Analytics workspace" + }, + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the SKU for Log Analytics" + }, + "value": "standalone" + }, + "omsAutomationAccountName": { + "type": "string", + "metadata": { + "description": "Use an existing Automation account or create a new" + }, + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + }, + "value": "eastus2" + }, + "omsDataIngestionFrequency": { + "type": "int", + "defaultValue": 30, + "allowedValues": [ + 15, + 30, + 60 + ], + "metadata": { + "description": "Specify the Azure VM Inventory retrieval frequency" + }, + "value": 30 + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + }, + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "ingestSchedulerGuid": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "GUID for the schedule creation - automatically created at deploy" + } + } + }, + "variables": { + "runbooks": { + "ingestParentRunbook": { + "name": "AzureVMInventory-MS-Mgmt", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure VM Inventory data and events into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestSchedulerRunbook": { + "name": "AzureVMInventory-Schedules-MS-Mgmt", + "version": "1.0.0.1", + "description": "Runbook to automatically create required schedules for OMS Log Analytics ingestion", + "type": "PowerShell", + "Id": "" + } + }, + "parentRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureVMInventory-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "schedulerRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureVMInventory-Schedules-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "omsSolutions": { + "customSolution": { + "name": "Azure VM Inventory", + "solutionName": "[concat('AzureVMInventory', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure VM Inventory", + "description": "Monitor Azure VMs deployed across subscriptions", + "author": "volkanc@microsoft.com" + } + }, + "opsInsightWorkspaceID": "AzureVMInventory-OPSINSIGHTS_WS_ID", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureVMInventory-OPSINSIGHT_WS_KEY", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureVMInventory-AzureAutomationAccount-MS-Mgmt", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureVMInventory-AzureAutomationResourceGroup-MS-Mgmt", + "createScheduleResourceGroupType": "string", + "createScheduleResourceGroupDescription": "The name of the resource group", + "omsAutomationSku": "basic", + "ingestInterval": "1", + "ingestFrequency": "hour", + "ingestScheduleName": "AzureVMInventory-Scheduler-Hourly", + "collectDiskInventory": "1", + "collectNICandNSGInventory": "1", + "alertArray": [ + { + "searchName": "Azure VMs in Stopped State", + "description": "Azure VMs which shutdown from within operating system will continue incurring charges. Stop the VM from the portal to prevent unnecessary consumption.", + "severity": "warning", + "query": "Type=AzureVMInventory_CL MetricName_s=VMInventory Status_s=Stopped | measure countdistinct(ID_s) by AzureSubscription_s,VmName_s", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure VM Inventory", + "scheduleIntervalInMinutes": 15, + "scheduleQueryTimeSpan": 15, + "alertName": "Azure VM Found in Stopped State" + }, + { + "searchName": "Azure Quota Usage", + "description": "Each Azure Subscription has quotas for VM cores per region. If the quota is reached new VMs annot be created", + "severity": "critical", + "query": "Type=AzureVMInventory_CL MetricName_s=ARMVMUsageStats | EXTEND div(product(currentValue_d,100),limit_d) as UsedPct | Measure Max(UsedPct) by Location_s,Usagemetric_s | where AggregatedValue >90", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure VM Inventory", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Quota Usage Reached 90% of the Subscription Quota" + } + ] + }, + "resources": [ + { + "name": "GEN-UNIQUE-20", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "properties": { + "sku": { + "name": "standalone" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-20/(omsSolutions).customSolution.name", + "dependsOn": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "DisplayName": "(omsSolutions).customSolution.displayName", + "Description": "(omsSolutions).customSolution.description", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMs by Subscription", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "VM Count", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory |measure countdistinct(ID_s) by AzureSubscription_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#9b4f96", + "#00d8cc", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory |measure countdistinct(ID_s) by AzureSubscription_s,Status_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMs by Size", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Size", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by HWProfile_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#fcd116", + "#7fba00" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by HWProfile_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "VMSIZE", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMs by Location", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Location", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by Location_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#55d455", + "#ff8c00", + "#eb3c00" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by Location_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Location", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VM by Deployement Type", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Classic vs ARM", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by DeploymentType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#55d455", + "#ff8c00", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(ID_s) by AzureSubscription_s,DeploymentType_s,OperatingSystem_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "VMCount", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VM Status", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by Status_s interval 30Minutes", + "Callout": { + "Title": "Running", + "Series": "Running", + "Operation": "Last Sample" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory Status_s=Running | measure countdistinct(VmName_s) by HWProfile_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Size", + "Value": "RuningVM" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "NumberTileListBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TAGGED VMs", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Tile": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory |measure countdistinct(Tag_s) by AzureSubscription_s", + "Legend": "Tagged VM Count" + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory |measure countdistinct(VmName_s) by Tag_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMs by Subnet", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Subnets", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNIC | measure countdistinct(VmName_s) by subnet_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNIC | measure countdistinct(VmName_s) by AzureSubscription_s,subnet_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "InputEndpoints ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "No of VMs", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMEndpoint | measure countdistinct(VmName_s) by endpointName_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMEndpoint | measure countdistinct(VmName_s) by endpointName_s,privatePort_d", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "EndpointName", + "Value": "Count" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "NSG Rules Applied", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "No of VMs", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNSGrule | measure countdistinct(VmName_s) by RuleName_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#fcd116", + "#0072c6", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNSGrule | measure countdistinct(VmName_s) by RuleName_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Rule", + "Value": "CountVM" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "NSG - Allowed Ports ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Count of Computers", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNSGrule access_s=Allow | measure countdistinct(VmName_s) by destinationPortRange_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#7fba00", + "#fcd116" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNSGrule access_s=Allow | measure countdistinct(VmName_s) by sourcePortRange_s,destinationPortRange_s,protocol_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Source", + "Value": "Count" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Cores Utilized", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Per Region", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=ARMVMUsageStats TimeGenerated>NOW-30Minutes Usagemetric_s=cores |measure max(currentValue_d) by Location_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=ARMVMUsageStats TimeGenerated>NOW-30Minutes Usagemetric_s=cores |measure max(currentValue_d) by AzureSubscription_sLocation_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Disk Count by IO", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "MAX DISK IO", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMDisk | measure countdistinct(VHDUri_s) by MaxDiskIO_d", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMDisk | measure countdistinct(VHDUri_s) by DiskIOType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "IOTYPE", + "Value": "DiskCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Disks by Storage Account", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMDisk | measure countdistinct(VHDUri_s) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMDisk | measure countdistinct(VHDUri_s) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "StorageAccount", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VM Extensions Inventory", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Extension Count", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMExtensions | measure countdistinct(VmName_s) by Extension_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMExtensions | measure countdistinct(VmName_s) by Extension_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Extension", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + } + ], + "OverviewTile": { + "Id": "LineChartCalloutBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "LineChart": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by Status_s interval 30Minutes", + "Callout": { + "Title": "Running", + "Series": "Running", + "Operation": "Last Sample" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + } + ] + }, + { + "apiVersion": "2015-10-31", + "location": "eastus2", + "name": "GEN-UNIQUE-30", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "basic" + } + }, + "resources": [ + { + "name": "AzureVMInventory-OPSINSIGHTS_WS_ID", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "Value of the user's omsWorkspaceId", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').customerId,'\"')]" + } + }, + { + "name": "(opsInsightWorkspaceKey)", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "Encrypted value of the user's omsWorkspaceKey", + "isEncrypted": 1, + "type": "string", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName')), '2015-11-01-preview').primarySharedKey,'\"')]" + } + }, + { + "name": "AzureVMInventory-AzureAutomationAccount-MS-Mgmt", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": false, + "type": "string", + "value": "\"GEN-UNIQUE-30\"" + } + }, + { + "name": "AzureVMInventory-AzureAutomationResourceGroup-MS-Mgmt", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "The name of the resource group", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"', resourceGroup().name, '\"')]" + } + }, + { + "name": "(runbooks).ingestParentRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureVMInventory-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureVMInventory-OPSINSIGHT_WS_KEY" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestParentRunbook.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).ingestParentRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureVMInventory-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestParentRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestSchedulerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureVMInventory-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureVMInventory-OPSINSIGHT_WS_KEY" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestSchedulerRunbook.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).ingestSchedulerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureVMInventory-Schedules-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestSchedulerRunbook.version" + } + } + }, + { + "name": "GEN-UNIQUE-30/ingestscheduleName-[newGuid()]", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name" + ], + "tags": {}, + "properties": { + "description": "OMS Ingestion API Scheduler", + "startTime": "", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "GEN-UNIQUE-30/[newGuid()]", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/schedules/ingestscheduleName-[newGuid()]", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "schedule": { + "name": "ingestscheduleName-[newGuid()]" + }, + "runbook": { + "name": "(Runbooks).ingestSchedulerRunbook.name" + } + } + }, + { + "name": "GEN-UNIQUE-30/[newGuid()]", + "type": "Microsoft.Automation/automationAccounts/jobs", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestParentRunbook.name" + ], + "tags": {}, + "properties": { + "runbook": { + "name": "(runbooks).ingestSchedulerRunbook.name" + }, + "parameters": { + "frequency": 30, + "getNICandNSG": "1", + "getDiskInfo": "1", + "clearLocks": "1" + } + } + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestParentRunbook.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-20/(omsSolutions).customSolution.name", + "Microsoft.Automation/automationAccounts/runbooks//GEN-UNIQUE-30/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/runbooks//GEN-UNIQUE-30/(runbooks).ingestParentRunbook.name" + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": true + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": true + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT76 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT76 new file mode 100644 index 0000000..381f6d2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT76 @@ -0,0 +1,643 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeployds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885484, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeployds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT76", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT76", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin user name for the VMs" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the VMs (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "cmUsername": { + "type": "string", + "defaultValue": "cmadmin", + "metadata": { + "description": "User name for the Cloudera Manager" + } + }, + "cmPassword": { + "type": "securestring", + "metadata": { + "description": "password for the Cloudera Manager (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS name where the VMs will be exposed" + }, + "value": "GEN-UNIQUE-10" + }, + "masterStorageAccountType": { + "type": "string", + "defaultValue": "Premium_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for master nodes (defaults to Premium_LRS)" + }, + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for worker nodes (defaults to Standard_LRS)" + }, + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "clouderavnet", + "metadata": { + "description": "The name of the virtual network provisioned for the deployment" + }, + "value": "GEN-UNIQUE-10" + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Indicator for new or exiting Virtual Network" + } + }, + "virtualNetworkRGName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Resource Group Name for Vnet. For new VNet leave it empty, otherwise type in existing resource group name" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "clouderasubnet", + "metadata": { + "description": "Subnet name for the virtual network where resources will be provisioned" + }, + "value": "GEN-UNIQUE-10" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "Virtual Network address CIDR" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "CIDR for the subnet where VMs will be placed" + } + }, + "masterNodeIPAddress": { + "type": "string", + "defaultValue": "10.3.0.4", + "metadata": { + "description": "IP address for the first master" + } + }, + "dataNodeIPOffSetFromMaster": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "IP address from the master node, for example if the first master is 10.1.1.1, then the first dataNode would be 10.1.1.11" + } + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Eval", + "allowedValues": [ + "Eval", + "Prod" + ], + "metadata": { + "description": "T-shirt size of the Cloudera cluster (Eval, Prod)" + }, + "value": "Eval" + }, + "numberOfDataNodes": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of data nodes for Prod (defaults to 3)" + }, + "value": 3 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "The size of the VMs deployed in the cluster (defaults to Standard_DS13)" + }, + "allowedValues": [ + "Standard_D16s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D8s_v3" + ], + "value": "Standard_D16s_v3" + }, + "vmImage": { + "type": "string", + "defaultValue": "ClouderaCentOS6_7", + "metadata": { + "description": "The OS VM Image (defaults to ClouderaCentOS6_7)" + }, + "allowedValues": [ + "ClouderaCentOS6_7", + "ClouderaCentOS6_8" + ], + "value": "ClouderaCentOS6_7" + }, + "company": { + "type": "string", + "defaultValue": "Company", + "metadata": { + "description": "Your Company" + }, + "value": "company" + }, + "emailAddress": { + "type": "string", + "defaultValue": "email@yourcompany.com", + "metadata": { + "description": "your email" + }, + "value": "email@yourcompany.com" + }, + "businessPhone": { + "type": "string", + "defaultValue": "123456789", + "metadata": { + "description": "your business phone number" + }, + "value": "123456789" + }, + "firstName": { + "type": "string", + "defaultValue": "FirstName", + "metadata": { + "description": "Your FirstName" + }, + "value": "FirstName" + }, + "lastName": { + "type": "string", + "defaultValue": "LastName", + "metadata": { + "description": "Your LastName" + }, + "value": "LastName" + }, + "jobRole": { + "type": "string", + "defaultValue": "Administrator", + "metadata": { + "description": "Job Role" + }, + "allowedValues": [ + "Administrator", + "Analyst (Industry/Finance)", + "Analyst (Technical)", + "Architect", + "C level", + "Consultant", + "Developer", + "Director", + "Engineer", + "Individual contributor", + "Manager", + "Partner", + "Student", + "VP" + ], + "value": "Administrator" + }, + "jobFunction": { + "type": "string", + "defaultValue": "Analytics / Business Intelligence", + "metadata": { + "description": "Job Function" + }, + "allowedValues": [ + "Analytics / Business Intelligence", + "Big Data / Architecture", + "Data Warehouse / Management", + "Data Science", + "Database", + "ETL / ELT", + "Infrastructure", + "IT", + "Marketing / Sales", + "Networking", + "Manager", + "Security / Compliance", + "Storage" + ], + "value": "Storage" + } + }, + "variables": { + "templateAPIVersion": "2015-11-01", + "resourceAPIVersion": "2015-06-15", + "installCDH": "True", + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "scriptsUriDescription": "For Command Line Deployment, scriptsUri must point to an Azure-accessible location like: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos", + "scriptsUri": "[uri(deployment().properties.templateLink.uri, '.')]", + "share-resourcesUri": "[uri(deployment().properties.templateLink.uri, '.')]/shared-resources-new-vnet.json", + "data-nodeUri": "[concat(variables('scriptsUri'), '/data-node-', toLower(subString(parameters('vmSize'), 0, 13)), '.json')]", + "sa": "10.3.0.4", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterStorageAccount": { + "type": "Premium_LRS" + }, + "workerStorageAccount": { + "type": "Standard_LRS" + }, + "clusterTshirtSizeEval": { + "masterNodeCount": 1, + "dataNodeCount": 3, + "highAvailability": "false" + }, + "clusterTshirtSizeProd": { + "masterNodeCount": 3, + "dataNodeCount": 3, + "highAvailability": "true" + }, + "clusterSpec": "concat(clusterTshirtSize, parameters(tshirtSize))", + "vmImageInfo": { + "ClouderaCentOS6_7": { + "plan": { + "name": "cloudera-centos-6", + "publisher": "cloudera", + "product": "cloudera-centos-6" + }, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-6", + "sku": "cloudera-centos-6", + "version": "latest" + } + }, + "ClouderaCentOS6_8": { + "plan": { + "name": "6_8", + "publisher": "cloudera", + "product": "cloudera-centos-os" + }, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-os", + "sku": "6_8", + "version": "latest" + } + }, + "ClouderaCentOS6_7Germany": { + "plan": null, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-os", + "sku": "6_7", + "version": "latest" + } + } + }, + "vmSpec": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + }, + "networkSpec": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + }, + "newVNetId": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10", + "existingVNetId": "parameters('virtualNetworkRGName')/Microsoft.Network/virtualNetworks/GEN-UNIQUE-10", + "VNetId": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/shared-resources-new-vnet.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "masterNodeASName": { + "value": "(vmSpec).masterNodeASName" + }, + "dataNodeASName": { + "value": "(vmSpec).dataNodeASName" + } + } + } + }, + { + "name": "master-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/master-node.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "storageAccount": { + "value": { + "type": "Premium_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).masterNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + } + } + } + }, + { + "name": "data-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('data-nodeUri')]", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "templateAPIVersion": { + "value": "2015-11-01" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "storageAccount": { + "value": { + "type": "Standard_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).dataNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + } + } + } + }, + { + "name": "setup-cloudera", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/data-node", + "Microsoft.Resources/deployments/master-node" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/setup-cloudera.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "fqdn": { + "value": "[reference('master-node').outputs.fqdn.value]" + }, + "cmUsername": { + "value": "cmadmin" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "company": { + "value": "Company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + }, + "installCDH": { + "value": "True" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT760 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT760 new file mode 100644 index 0000000..747dd5c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT760 @@ -0,0 +1,352 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeployonlyautomation.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900816, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeployonlyautomation.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT760", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT760", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceId": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specify the Log Analytics workspace Id where Azure VM Inventory solution is deployed" + } + }, + "omsWorkspaceKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specify the Log Analytics workspace key where Azure VM Inventory solution is deployed" + } + }, + "omsAutomationAccountName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Use an existing Automation account or create a new" + }, + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "southeastasia", + "eastus2", + "southcentralus", + "japaneast", + "southeastasia", + "southcentralus", + "northeurope", + "canadacentral", + "australiasoutheast", + "centralindia", + "japaneast" + ], + "metadata": { + "description": "Specify the Azure Region for your OMS Automation Account" + }, + "value": "eastus2" + }, + "omsAutomationSku": { + "type": "string", + "defaultValue": "basic", + "allowedValues": [ + "free", + "basic" + ], + "metadata": { + "description": "Specify the SKU for Automation Account" + } + }, + "omsDataIngestionFrequency": { + "type": "int", + "defaultValue": 30, + "allowedValues": [ + 15, + 30, + 60 + ], + "metadata": { + "description": "Specify the Azure VM Inventory retrieval frequency" + }, + "value": 30 + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + }, + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "ingestSchedulerGuid": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "GUID for the schedule creation - create a unique before deploy" + } + }, + "omsLogAnalyticsWorkspaceName": { + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "value": "standalone" + } + }, + "variables": { + "runbooks": { + "ingestParentRunbook": { + "name": "AzureVMInventory-MS-Mgmt", + "version": "1.0.0.1", + "description": "Runbook to automatically ingest Azure VM Inventory data and events into OMS Log Analytics", + "type": "PowerShell", + "Id": "" + }, + "ingestSchedulerRunbook": { + "name": "AzureVMInventory-Schedules-MS-Mgmt", + "version": "1.0.0.1", + "description": "Runbook to automatically create required schedules for OMS Log Analytics ingestion", + "type": "PowerShell", + "Id": "" + } + }, + "parentRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureVMInventory-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "schedulerRunbookUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureVMInventory-Schedules-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "opsInsightWorkspaceID": "AzureVMInventory-OPSINSIGHTS_WS_ID", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureVMInventory-OPSINSIGHT_WS_KEY", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureVMInventory-AzureAutomationAccount-MS-Mgmt", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureVMInventory-AzureAutomationResourceGroup-MS-Mgmt", + "createScheduleResourceGroupType": "string", + "createScheduleResourceGroupDescription": "The name of the resource group", + "collectDiskInventory": "1", + "collectNICandNSGInventory": "1", + "ingestInterval": "1", + "ingestFrequency": "hour", + "ingestScheduleName": "AzureVMInventory-Scheduler-Hourly" + }, + "resources": [ + { + "apiVersion": "2015-10-31", + "location": "eastus2", + "name": "GEN-UNIQUE-30", + "type": "Microsoft.Automation/automationAccounts", + "properties": { + "sku": { + "name": "basic" + } + }, + "resources": [ + { + "name": "AzureVMInventory-OPSINSIGHTS_WS_ID", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "Value of the user's omsWorkspaceId", + "isEncrypted": false, + "type": "string", + "value": "\"parameters('omsWorkspaceId')\"" + } + }, + { + "name": "(opsInsightWorkspaceKey)", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "Encrypted value of the user's omsWorkspaceKey", + "isEncrypted": 1, + "type": "string", + "value": "\"parameters('omsWorkspaceKey')\"" + } + }, + { + "name": "AzureVMInventory-AzureAutomationAccount-MS-Mgmt", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "The name of the Automation Account", + "isEncrypted": false, + "type": "string", + "value": "\"GEN-UNIQUE-30\"" + } + }, + { + "name": "AzureVMInventory-AzureAutomationResourceGroup-MS-Mgmt", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "description": "The name of the resource group", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"', resourceGroup().name, '\"')]" + } + }, + { + "name": "(runbooks).ingestParentRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureVMInventory-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureVMInventory-OPSINSIGHT_WS_KEY" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestParentRunbook.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).ingestParentRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureVMInventory-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestParentRunbook.version" + } + } + }, + { + "name": "(runbooks).ingestSchedulerRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureVMInventory-OPSINSIGHTS_WS_ID", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/variables/AzureVMInventory-OPSINSIGHT_WS_KEY" + ], + "tags": {}, + "properties": { + "runbookType": "(runbooks).ingestSchedulerRunbook.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).ingestSchedulerRunbook.description", + "publishContentLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution/scripts/AzureVMInventory-Schedules-MS-Mgmt.ps1 parameters('_artifactsLocationSasToken')", + "version": "(runbooks).ingestSchedulerRunbook.version" + } + } + }, + { + "name": "GEN-UNIQUE-30/ingestscheduleName-[newGuid()]", + "type": "microsoft.automation/automationAccounts/schedules", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name" + ], + "tags": {}, + "properties": { + "description": "OMS Ingestion API Scheduler", + "startTime": "", + "isEnabled": "true", + "interval": "1", + "frequency": "hour" + } + }, + { + "name": "GEN-UNIQUE-30/[newGuid()]", + "type": "microsoft.automation/automationAccounts/jobSchedules", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/schedules/ingestscheduleName-[newGuid()]", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30" + ], + "tags": {}, + "properties": { + "schedule": { + "name": "ingestscheduleName-[newGuid()]" + }, + "runbook": { + "name": "(Runbooks).ingestSchedulerRunbook.name" + } + } + }, + { + "name": "GEN-UNIQUE-30/[newGuid()]", + "type": "Microsoft.Automation/automationAccounts/jobs", + "apiVersion": "2015-10-31", + "location": "eastus2", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestSchedulerRunbook.name", + "Microsoft.Automation/automationAccounts/GEN-UNIQUE-30/runbooks/(runbooks).ingestParentRunbook.name" + ], + "tags": {}, + "properties": { + "runbook": { + "name": "(runbooks).ingestSchedulerRunbook.name" + }, + "parameters": { + "frequency": 30, + "getNICandNSG": "1", + "getDiskInfo": "1", + "clearLocks": "1" + } + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT761 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT761 new file mode 100644 index 0000000..7aa3414 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT761 @@ -0,0 +1,1315 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeployonlyloganalytics.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900823, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azure-vminventory-solution/azuredeployonlyloganalytics.json", + "/demos/oms-azure-vminventory-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT761", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/savedsearches", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT761", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsLogAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Create new or use an existing Log Analytic Workspace" + }, + "value": "GEN-UNIQUE-20" + }, + "omsLogAnalyticsRegion": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "southeastasia", + "Australia Southeast", + "wescentralus" + ], + "metadata": { + "description": "Specify the Azure Region for your new or existing Log Analytics workspace" + }, + "value": "eastus" + }, + "omsLogAnalyticsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Specify the SKU for Log Analytics" + }, + "value": "standalone" + }, + "omsDataIngestionFrequency": { + "type": "int", + "defaultValue": 30, + "allowedValues": [ + 15, + 30, + 60 + ], + "metadata": { + "description": "Specify the Azure VM Inventory retrieval frequency" + }, + "value": 30 + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + }, + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-azure-vminventory-solution" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + }, + "omsAutomationAccountName": { + "value": "GEN-UNIQUE-30" + }, + "omsAutomationRegion": { + "value": "eastus2" + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "Azure VM Inventory", + "solutionName": "[concat('AzureVMInventory', '[', parameters('omsLogAnalyticsWorkspaceName'), ']')]", + "publisher": "volkanc@microsoft.com", + "displayName": "Azure VM Inventory", + "description": "Monitor Azure VMs deployed across subscriptions", + "author": "volkanc@microsoft.com" + } + }, + "opsInsightWorkspaceID": "AzureVMInventory-OPSINSIGHTS_WS_ID", + "opsInsightWorkspaceIDType": "string", + "opsInsightWorkspaceIDDescription": "Value of the user's omsWorkspaceId", + "opsInsightWorkspaceKey": "AzureVMInventory-OPSINSIGHT_WS_KEY", + "opsInsightWorkspaceKeyType": "string", + "opsInsightWorkspaceKeyDescription": "Encrypted value of the user's omsWorkspaceKey", + "createScheduleAutomationAccountName": "AzureVMInventory-AzureAutomationAccount-MS-Mgmt", + "createScheduleAutomationAccountType": "string", + "createScheduleAutomationAccountDescription": "The name of the Automation Account", + "createScheduleResourceGroupName": "AzureVMInventory-AzureAutomationResourceGroup-MS-Mgmt", + "createScheduleResourceGroupType": "string", + "createScheduleResourceGroupDescription": "The name of the resource group", + "alertArray": [ + { + "searchName": "Azure VMs in Stopped State ", + "description": "Azure VMs which shutdown from within operating system will continue incurring charges. Stop the VM from the portal to prevent unnecessary consumption.", + "severity": "Warning", + "query": "Type=AzureVMInventory_CL MetricName_s=VMInventory Status_s=Stopped | measure countdistinct(ID_s) by AzureSubscription_s,VmName_s", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure VM Inventory", + "scheduleIntervalInMinutes": 15, + "scheduleQueryTimeSpan": 15, + "alertName": "Azure VM Stopped State" + }, + { + "searchName": "Azure Quota Usage", + "description": "Each Azure Subscription has quotas for VM cores per region. If the quota is reached new VMs annot be created", + "severity": "Critical", + "query": "Type=AzureVMInventory_CL MetricName_s=ARMVMUsageStats | EXTEND div(product(currentValue_d,100),limit_d) as UsedPct | Measure Max(UsedPct) by Location_s,Usagemetric_s | where AggregatedValue >90", + "alertTresholdValue": 0, + "operator": "gt", + "alertThrottleInMinutes": 60, + "alertBreach": 1, + "searchCategory": "Azure VM Inventory", + "scheduleIntervalInMinutes": 60, + "scheduleQueryTimeSpan": 60, + "alertName": "Azure Quota Usage Reached 90% of the Subscription Quota" + } + ] + }, + "resources": [ + { + "name": "GEN-UNIQUE-20", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "properties": { + "sku": { + "name": "standalone" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-20/(omsSolutions).customSolution.name", + "dependsOn": [ + "[Concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'))]" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "DisplayName": "(omsSolutions).customSolution.displayName", + "Description": "(omsSolutions).customSolution.description", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Dashboard": [ + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMs by Subscription", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "VM Count", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory |measure countdistinct(ID_s) by AzureSubscription_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#9b4f96", + "#00d8cc", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory |measure countdistinct(ID_s) by AzureSubscription_s,Status_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMs by Size", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Size", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by HWProfile_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#fcd116", + "#7fba00" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by HWProfile_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "VMSIZE", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMs by Location", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Location", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by Location_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#55d455", + "#ff8c00", + "#eb3c00" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by Location_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Location", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VM by Deployement Type", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Classic vs ARM", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by DeploymentType_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#55d455", + "#ff8c00", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(ID_s) by AzureSubscription_s,DeploymentType_s,OperatingSystem_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "VMCount", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartCalloutBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VM Status", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by Status_s interval 30Minutes", + "Callout": { + "Title": "Running", + "Series": "Running", + "Operation": "Last Sample" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory Status_s=Running | measure countdistinct(VmName_s) by HWProfile_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Size", + "Value": "RuningVM" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "NumberTileListBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "TAGGED VMs", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Tile": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory |measure countdistinct(Tag_s) by AzureSubscription_s", + "Legend": "Tagged VM Count" + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory |measure countdistinct(VmName_s) by Tag_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMs by Subnet", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Subnets", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNIC | measure countdistinct(VmName_s) by subnet_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNIC | measure countdistinct(VmName_s) by AzureSubscription_s,subnet_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "InputEndpoints ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "No of VMs", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMEndpoint | measure countdistinct(VmName_s) by endpointName_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMEndpoint | measure countdistinct(VmName_s) by endpointName_s,privatePort_d", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "EndpointName", + "Value": "Count" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "NSG Rules Applied", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "No of VMs", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNSGrule | measure countdistinct(VmName_s) by RuleName_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#fcd116", + "#0072c6", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNSGrule | measure countdistinct(VmName_s) by RuleName_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Rule", + "Value": "CountVM" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "NSG - Allowed Ports ", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Count of Computers", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNSGrule access_s=Allow | measure countdistinct(VmName_s) by destinationPortRange_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#7fba00", + "#fcd116" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMNSGrule access_s=Allow | measure countdistinct(VmName_s) by sourcePortRange_s,destinationPortRange_s,protocol_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Source", + "Value": "Count" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Cores Utilized", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Per Region", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=ARMVMUsageStats TimeGenerated>NOW-30Minutes Usagemetric_s=cores |measure max(currentValue_d) by Location_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=ARMVMUsageStats TimeGenerated>NOW-30Minutes Usagemetric_s=cores |measure max(currentValue_d) by AzureSubscription_sLocation_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Subscription", + "Value": "Count" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Disk Count by IO", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "MAX DISK IO", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMDisk | measure countdistinct(VHDUri_s) by MaxDiskIO_d", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMDisk | measure countdistinct(VHDUri_s) by DiskIOType_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "IOTYPE", + "Value": "DiskCount" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Disks by Storage Account", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMDisk | measure countdistinct(VHDUri_s) by StorageAccount_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#0072c6", + "#ffb900", + "#55d455" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMDisk | measure countdistinct(VHDUri_s) by StorageAccount_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "StorageAccount", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "SingleQueryDonutBuilderBladeV1", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VM Extensions Inventory", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Extension Count", + "Subtitle": "" + }, + "Donut": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMExtensions | measure countdistinct(VmName_s) by Extension_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00bcf2", + "#ffb900", + "#009e49" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMExtensions | measure countdistinct(VmName_s) by Extension_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Extension", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + } + ], + "OverviewTile": { + "Id": "LineChartCalloutBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "LineChart": { + "Query": "Type=AzureVMInventory_CL MetricName_s=VMInventory | measure countdistinct(VmName_s) by Status_s interval 30Minutes", + "Callout": { + "Title": "Running", + "Series": "Running", + "Operation": "Last Sample" + }, + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*", + "Message": "" + } + } + } + } + } + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-20/(omsSolutions).customSolution.name" + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": true + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": true + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20/views/(omsSolutions).customSolution.name", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsLogAnalyticsWorkspaceName'), '/savedSearches/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT762 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT762 new file mode 100644 index 0000000..410246d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT762 @@ -0,0 +1,429 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-azurensg-solution/azuredeploy.json", + "/demos/oms-azurensg-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900832, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-azurensg-solution/azuredeploy.json", + "/demos/oms-azurensg-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT762", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT762", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the workspace name" + }, + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the workspace region" + } + }, + "LineChartBuilderBladeId": { + "type": "string", + "defaultValue": "LineChartBuilderBlade", + "metadata": { + "description": "Line Chart Builder Blade Id" + } + }, + "NotableQueriesBuilderBladeId": { + "type": "string", + "defaultValue": "NotableQueriesBuilderBlade", + "metadata": { + "description": "Notable Queries Builder Blade Id" + } + }, + "LineChartBuilderTileId": { + "type": "string", + "defaultValue": "LineChartBuilderTile", + "metadata": { + "description": "Line Chart Builder Tile Id" + } + }, + "LineChartBuilderBladetabGroupId1": { + "type": "int", + "defaultValue": 1528570627308 + }, + "LineChartBuilderBladetabGroupId2": { + "type": "int", + "defaultValue": 1528570627318 + }, + "NotableQueriesBuilderBladetabGroupId1": { + "type": "int", + "defaultValue": 1528570627315 + }, + "NotableQueriesBuilderBladetabGroupId2": { + "type": "int", + "defaultValue": 1528570627320 + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "Azure Network Security Group Analytics", + "solutionName": "[concat('AzureNSGAnalytics', '[', parameters('workspaceName'), ']')]", + "publisher": "Microsoft", + "displayName": "Azure Network Security Group Analytics", + "description": "Gain insight into your Azure Network Security Group logs", + "author": "Microsoft" + } + } + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "[resourceGroup().location]", + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "Azure Network Security Group Analytics", + "type": "views", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Version": 2, + "Dashboard": [ + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Network Security Group Blocked Flows", + "newGroup": true, + "useIcon": false + }, + "Header": { + "Title": "Rules with blocked flows" + }, + "LineChart": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and type_s == \"block\" | summarize AggregatedValue = sum(matchedConnections_d) by ruleName_s , bin(TimeGenerated, 1h)| where AggregatedValue >0 |render timechart", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and type_s == \"block\" | summarize AggregatedValue = sum(matchedConnections_d) by ruleName_s | where AggregatedValue > 0", + "HideGraph": false, + "enableSparklines": true, + "ColumnsTitle": { + "Name": "Rule", + "Value": "Blocked Flows Last Hour" + }, + "Color": "#0072c6", + "operation": "Last Sample", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc", + "NavigationSelect": { + "NavigationQuery": "search {selected item} | sort by TimeGenerated desc" + } + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "newGroup": false, + "useIcon": false, + "tabGroupId": 1528570627308 + }, + "Header": { + "Title": "MAC Addresses with Blocked Flows" + }, + "LineChart": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and type_s == \"block\" | summarize AggregatedValue = sum(matchedConnections_d) by subnetPrefix_s, bin(TimeGenerated, 1h)| render timechart", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and type_s == \"block\" | summarize AggregatedValue = sum(matchedConnections_d) by subnetPrefix_s", + "HideGraph": false, + "enableSparklines": true, + "operation": "Last Sample", + "ColumnsTitle": { + "Name": "MAC Address", + "Value": "Blocked Flows Last Hour" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search in (AzureDiagnostics) ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and {selected item} | sort by TimeGenerated desc" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Network Security Group Allowed Flows", + "newGroup": true, + "useIcon": false, + "tabGroupId": 1528570627315 + }, + "Header": { + "Title": "Rules with Allowed Flows" + }, + "LineChart": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and type_s == \"allow\" | summarize AggregatedValue = sum(matchedConnections_d) by ruleName_s, bin(TimeGenerated, 1h) | where AggregatedValue > 0| render timechart", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and type_s == \"allow\" | summarize AggregatedValue = sum(matchedConnections_d) by ruleName_s| where AggregatedValue > 0", + "HideGraph": false, + "enableSparklines": true, + "operation": "Last Sample", + "ColumnsTitle": { + "Name": "Rule", + "Value": "Allowed Flows Last Hour" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search in (AzureDiagnostics) ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and {selected item} | sort by TimeGenerated desc" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "newGroup": false, + "useIcon": false, + "tabGroupId": 1528570627318 + }, + "Header": { + "Title": "MAC Addresses with Allowed Flows" + }, + "LineChart": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and type_s == \"allow\" | summarize AggregatedValue = sum(matchedConnections_d) by subnetPrefix_s, bin(TimeGenerated, 1h) | render timechart", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and type_s == \"block\" | summarize AggregatedValue = sum(matchedConnections_d) by subnetPrefix_s", + "HideGraph": false, + "enableSparklines": true, + "operation": "Last Sample", + "ColumnsTitle": { + "Name": "MAC Address", + "Value": "Allowed Flows Last Hour" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "search in (AzureDiagnostics) ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" and {selected item} | sort by TimeGenerated desc" + } + } + }, + { + "Id": "NotableQueriesBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Recommended Searches", + "newGroup": true, + "preselectedFilters": "Type, Computer", + "renderMode": "grid", + "tabGroupId": 1528570627320 + }, + "queries": [ + { + "query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupEvent\" | sort by TimeGenerated desc", + "displayName": "Azure Network Security Group Events" + }, + { + "query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" | sort by TimeGenerated desc", + "displayName": "Azure Network Security Group Counter Events" + }, + { + "query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupEvent\" and ruleName_s !in ((union * | where Category == \"NetworkSecurityGroupRuleCounter\" and matchedConnections_d > 0 | distinct ruleName_s)) | summarize arg_max(TimeGenerated, *) by ruleName_s | sort by TimeGenerated desc | project TimeGenerated, ruleName_s, type_s, direction_s", + "displayName": "Azure Network Security Group Rules Not Matching Any Flows" + }, + { + "query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupEvent\" and ruleName_s in ((union * | where Category == \"NetworkSecurityGroupRuleCounter\" and matchedConnections_d > 0 | distinct ruleName_s)) | summarize arg_max(TimeGenerated, *) by ruleName_s | sort by TimeGenerated desc | project TimeGenerated, ruleName_s, type_s, direction_s", + "displayName": "Azure Network Security Group Rules Matching Flows" + } + ] + } + } + ], + "OverviewTile": { + "Id": "LineChartBuilderTile", + "Type": "OverviewTile", + "Version": 2, + "Configuration": { + "LineChart": { + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" and Category == \"NetworkSecurityGroupRuleCounter\" | summarize AggregatedValue = sum(matchedConnections_d) by type_s | where AggregatedValue > 0", + "yAxis": { + "isLogarithmic": false + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": true, + "Query": "AzureDiagnostics | where ResourceType == \"NETWORKSECURITYGROUPS\" | sort by TimeGenerated desc", + "Message": "Learn how to configure solution: http://go.microsoft.com/fwlink/?linkid=839623" + } + } + } + } + } + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-10/(omsSolutions).customSolution.Name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT763 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT763 new file mode 100644 index 0000000..2c5fcf6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT763 @@ -0,0 +1,6537 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsAlerts.json" + ], + "timestamp": 1642962900842, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsAlerts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT763", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches/schedules", + "microsoft.operationalinsights/workspaces/savedsearches/schedules/actions", + "microsoft.operationalinsights/workspaces/savedsearches" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT763", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Input the name of your OMS Workspace" + } + }, + "actionGroupName": { + "type": "string", + "metadata": { + "description": "The name of the action group for alert actions" + } + } + }, + "variables": { + "alerts": [ + { + "search": { + "name": "cf.auctioneer.AuctioneerLRPAuctionsFailed.critical", + "category": "CF-DiegoAuctioneer-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerLRPAuctionsFailed\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | summarize avg(sum_Delta_d) by Environment_s | where avg_sum_Delta_d >= 1" + }, + "alert": { + "displayName": "CF-Auctioneer App Instance (AI) Placement Failures", + "description": "The number of Long Running Process (LRP) instances that the auctioneer failed to place on Diego cells. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#AuctioneerLRPAuctionsFailed", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 5, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.auctioneer.AuctioneerLRPAuctionsFailed.warning", + "category": "CF-DiegoAuctioneer-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerLRPAuctionsFailed\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | summarize avg(sum_Delta_d) by Environment_s | where avg_sum_Delta_d >= 0.5" + }, + "alert": { + "displayName": "CF-Auctioneer App Instance (AI) Placement Failures", + "description": "The number of Long Running Process (LRP) instances that the auctioneer failed to place on Diego cells. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#AuctioneerLRPAuctionsFailed", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 2.5, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.auctioneer.AuctioneerFetchStatesDuration.critical", + "category": "CF-DiegoAuctioneer-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerFetchStatesDuration\" | where Value_d >= 5000000000" + }, + "alert": { + "displayName": "CF-Auctioneer Time to Fetch Cell State", + "description": "Time in ns that the auctioneer took to fetch state from all the Diego cells when running its auction. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#AuctioneerFetchStatesDuration", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.auctioneer.AuctioneerFetchStatesDuration.warning", + "category": "CF-DiegoAuctioneer-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerFetchStatesDuration\" | where Value_d >= 2000000000" + }, + "alert": { + "displayName": "CF-Auctioneer Time to Fetch Cell State", + "description": "Time in ns that the auctioneer took to fetch state from all the Diego cells when running its auction. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#AuctioneerFetchStatesDuration", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.auctioneer.AuctioneerLRPAuctionsStarted.critical", + "category": "CF-DiegoAuctioneer-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerLRPAuctionsStarted\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | summarize avg(sum_Delta_d) by Environment_s | where avg_sum_Delta_d > 20" + }, + "alert": { + "displayName": "CF-Auctioneer App Instance Starts", + "description": "The number of LRP instances that the auctioneer successfully placed on Diego cells. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#AuctioneerLRPAuctionsStarted", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.auctioneer.AuctioneerLRPAuctionsStarted.warning", + "category": "CF-DiegoAuctioneer-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerLRPAuctionsStarted\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | summarize avg(sum_Delta_d) by Environment_s | where avg_sum_Delta_d > 10" + }, + "alert": { + "displayName": "CF-Auctioneer App Instance Starts", + "description": "The number of LRP instances that the auctioneer successfully placed on Diego cells. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#AuctioneerLRPAuctionsStarted", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.auctioneer.AuctioneerTaskAuctionsFailed.critical", + "category": "CF-DiegoAuctioneer-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerTaskAuctionsFailed\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | summarize avg(sum_Delta_d) by Environment_s | where avg_sum_Delta_d >= 1" + }, + "alert": { + "displayName": "CF-Auctioneer Task Placement Failures", + "description": "The number of Tasks that the auctioneer failed to place on Diego cells. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#AuctioneerTaskAuctionsFailed", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.auctioneer.AuctioneerTaskAuctionsFailed.warning", + "category": "CF-DiegoAuctioneer-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerTaskAuctionsFailed\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | summarize avg(sum_Delta_d) by Environment_s | where avg_sum_Delta_d >= 0.5" + }, + "alert": { + "displayName": "CF-Auctioneer Task Placement Failures", + "description": "The number of Tasks that the auctioneer failed to place on Diego cells. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#AuctioneerTaskAuctionsFailed", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.ConvergenceLRPDuration.critical", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"ConvergenceLRPDuration\" | where Value_d >= 20000000000" + }, + "alert": { + "displayName": "CF-BBS Time to Run LRP Convergence", + "description": "Time in ns that the BBS took to run its LRP convergence pass. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#ConvergenceLRPDuration", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.ConvergenceLRPDuration.warning", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"ConvergenceLRPDuration\" | where Value_d >= 10000000000" + }, + "alert": { + "displayName": "CF-BBS Time to Run LRP Convergence", + "description": "Time in ns that the BBS took to run its LRP convergence pass. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#ConvergenceLRPDuration", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.RequestLatency.critical", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"RequestLatency\" | summarize avg(Value_d) by Environment_s | where avg_Value_d >= 10000000000" + }, + "alert": { + "displayName": "CF-BBS Time to Handle Requests", + "description": "Time in ns that the BBS took to handle requests, aggregated across all its API endpoints. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#RequestLatency", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.RequestLatency.warning", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"RequestLatency\" | summarize avg(Value_d) by Environment_s | where avg_Value_d >= 5000000000" + }, + "alert": { + "displayName": "CF-BBS Time to Handle Requests", + "description": "Time in ns that the BBS took to handle requests, aggregated across all its API endpoints. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#RequestLatency", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.Domain.cf-apps.critical", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"Domain.cf-apps\" | summarize avg(Value_d) by Environment_s | where avg_Value_d < 1" + }, + "alert": { + "displayName": "CF-Cloud Controller and Diego in Sync", + "description": "Indicates if the cf-apps Domain is up-to-date, meaning that CF App requests from Cloud Controller are synchronized to bbs.LRPsDesired (Diego-desired AIs) for execution. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#cc-diego-sync", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.LRPsExtra.critical", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"LRPsExtra\" | summarize avg(Value_d) by Environment_s | where avg_Value_d >= 10" + }, + "alert": { + "displayName": "CF-More App Instances Than Expected", + "description": "Total number of LRP instances that are no longer desired but still have a BBS record. When Diego wants to add more apps, the BBS sends a request to the auctioneer to spin up additional LRPs. LRPsExtra is the total number of LRP instances that are no longer desired but still have a BBS record. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#LRPsExtra", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.LRPsExtra.warning", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"LRPsExtra\" | summarize avg(Value_d) by Environment_s | where avg_Value_d >= 5" + }, + "alert": { + "displayName": "CF-More App Instances Than Expected", + "description": "Total number of LRP instances that are no longer desired but still have a BBS record. When Diego wants to add more apps, the BBS sends a request to the auctioneer to spin up additional LRPs. LRPsExtra is the total number of LRP instances that are no longer desired but still have a BBS record. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#LRPsExtra", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.LRPsMissing.critical", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"LRPsMissing\" | summarize avg(Value_d) by Environment_s | where avg_Value_d >= 10" + }, + "alert": { + "displayName": "CF-Fewer App Instances Than Expected", + "description": "Total number of LRP instances that are desired but have no record in the BBS. When Diego wants to add more apps, the BBS sends a request to the auctioneer to spin up additional LRPs. LRPsMissing is the total number of LRP instances that are desired but have no BBS record. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#LRPsMissing", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.LRPsMissing.warning", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"LRPsMissing\" | summarize avg(Value_d) by Environment_s | where avg_Value_d >= 5" + }, + "alert": { + "displayName": "CF-Fewer App Instances Than Expected", + "description": "Total number of LRP instances that are desired but have no record in the BBS. When Diego wants to add more apps, the BBS sends a request to the auctioneer to spin up additional LRPs. LRPsMissing is the total number of LRP instances that are desired but have no BBS record. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#LRPsMissing", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.CrashedActualLRPs.critical", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"CrashedActualLRPs\" | where Value_d > 2" + }, + "alert": { + "displayName": "CF-Crashed App Instances", + "description": "Total number of LRP instances that have crashed. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#bbs.CrashedActualLRPs", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.CrashedActualLRPs.warning", + "category": "CF-DiegoBBS-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"CrashedActualLRPs\" | where Value_d > 0" + }, + "alert": { + "displayName": "CF-Crashed App Instances", + "description": "Total number of LRP instances that have crashed. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#bbs.CrashedActualLRPs", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.LRPsRunning.critical", + "category": "CF-DiegoBBS-KPI", + "query": "let T1 = CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"LRPsRunning\" and EventTime_t > ago(1h) | summarize CurrentHourAverage = avg(Value_d) by Environment_s;\nlet T2 = CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"LRPsRunning\" and EventTime_t > ago(2h) and EventTime_t < ago(1h) | summarize PreviousHourAverage = avg(Value_d) by Environment_s;\n T1 | join (T2) on Environment_s | where abs(CurrentHourAverage-PreviousHourAverage) > 20" + }, + "alert": { + "displayName": "CF-Running App Instances, Rate of Change", + "description": "Rate of change in app instances being started or stopped on the platform. We use changes on GoRouter to detect this metric. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#1hraverageofbbs.LRPsRunning", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 30, + "timeSpan": 120 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.bbs.LRPsRunning.warning", + "category": "CF-DiegoBBS-KPI", + "query": "let T1 = CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"LRPsRunning\" and EventTime_t > ago(1h) | summarize CurrentHourAverage = avg(Value_d) by Environment_s;\nlet T2 = CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"LRPsRunning\" and EventTime_t > ago(2h) and EventTime_t < ago(1h) | summarize PreviousHourAverage = avg(Value_d) by Environment_s;\n T1 | join (T2) on Environment_s | where abs(CurrentHourAverage-PreviousHourAverage) > 10" + }, + "alert": { + "displayName": "CF-Running App Instances, Rate of Change", + "description": "Rate of change in app instances being started or stopped on the platform. We use changes on GoRouter to detect this metric. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#1hraverageofbbs.LRPsRunning", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 30, + "timeSpan": 120 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.rep.CapacityRemainingMemory.critical", + "category": "CF-DiegoCell-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s == \"CapacityRemainingMemory\" and Value_d <= 32678" + }, + "alert": { + "displayName": "CF-Overall Remaining Memory Available", + "description": "Remaining amount of memory in MiB available for this Diego cell to allocate to containers. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#rep.CapacityRemainingMemory2", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.rep.CapacityRemainingMemory.warning", + "category": "CF-DiegoCell-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s == \"CapacityRemainingMemory\" and Value_d <= 65536" + }, + "alert": { + "displayName": "CF-Overall Remaining Memory Available", + "description": "Remaining amount of memory in MiB available for this Diego cell to allocate to containers. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#rep.CapacityRemainingMemory2", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.rep.CapacityRemainingDisk.critical", + "category": "CF-DiegoCell-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s == \"CapacityRemainingDisk\" and Value_d <= 3584" + }, + "alert": { + "displayName": "CF-Remaining Disk Available", + "description": "Remaining amount of disk in MiB available for this Diego cell to allocate to containers. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#CapacityRemainingDisk", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.rep.CapacityRemainingDisk.warning", + "category": "CF-DiegoCell-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s == \"CapacityRemainingDisk\" and Value_d <= 8192" + }, + "alert": { + "displayName": "CF-Remaining Disk Available", + "description": "Remaining amount of disk in MiB available for this Diego cell to allocate to containers. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#CapacityRemainingDisk", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.rep.RepBulkSyncDuration.critical", + "category": "CF-DiegoCell-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s == \"RepBulkSyncDuration\" and Value_d >= 10000000000" + }, + "alert": { + "displayName": "CF-Cell Rep Time to Sync", + "description": "Time in ns that the Diego Cell Rep took to sync the ActualLRPs that it claimed with its actual garden containers. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#RepBulkSyncDuration", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.rep.RepBulkSyncDuration.warning", + "category": "CF-DiegoCell-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s == \"RepBulkSyncDuration\" and Value_d >= 5000000000" + }, + "alert": { + "displayName": "CF-Cell Rep Time to Sync", + "description": "Time in ns that the Diego Cell Rep took to sync the ActualLRPs that it claimed with its actual garden containers. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#RepBulkSyncDuration", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.rep.UnhealthyCell.critical", + "category": "CF-DiegoCell-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s == \"UnhealthyCell\" and Value_d != 0 | summarize count() by Environment_s" + }, + "alert": { + "displayName": "CF-Unhealthy Cells", + "description": "The Diego cell periodically checks its health against the garden backend. For Diego cells, 0 means healthy, and 1 means unhealthy. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#UnhealthyCell", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 1, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.locket.ActiveLocks.critical", + "category": "CF-DiegoLocket-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"locket\" and Name_s == \"ActiveLocks\" | summarize max(Value_d) by Environment_s | where max_Value_d != 4" + }, + "alert": { + "displayName": "CF-Active Locks", + "description": "Total count of how many locks the system components are holding. As of PCF v1.11, the BBS, Auctioneer, TPS Watcher, and Routing API components have migrated to Locket from Consul lock. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#ActiveLocks", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.locket.ActivePresences.critical", + "category": "CF-DiegoLocket-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"locket\" and Name_s == \"ActivePresences\" | where Value_d > 25" + }, + "alert": { + "displayName": "CF-Active Presences", + "description": "Total count of active presences. Presences are defined as the registration records that the cells maintain to advertise themselves to the platform. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#ActivePresences", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.locket.ActivePresences.warning", + "category": "CF-DiegoLocket-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"locket\" and Name_s == \"ActivePresences\" | where Value_d > 10" + }, + "alert": { + "displayName": "CF-Active Presences", + "description": "Total count of active presences. Presences are defined as the registration records that the cells maintain to advertise themselves to the platform. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#ActivePresences", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.route_emitter.RouteEmitterSyncDuration.critical", + "category": "CF-RouteEmitter-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"route_emitter\" and Name_s == \"RouteEmitterSyncDuration\" | summarize AggregatedValue = max(Value_d) by Job_s | where AggregatedValue > 10000000000" + }, + "alert": { + "displayName": "CF-Route Emitter Time to Sync", + "description": "Time in ns that the active route-emitter took to perform its synchronization pass. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#RouteEmitterSyncDuration", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.route_emitter.RouteEmitterSyncDuration.warning", + "category": "CF-RouteEmitter-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"route_emitter\" and Name_s == \"RouteEmitterSyncDuration\" | summarize AggregatedValue = max(Value_d) by Job_s | where AggregatedValue > 5000000000" + }, + "alert": { + "displayName": "CF-Route Emitter Time to Sync", + "description": "Time in ns that the active route-emitter took to perform its synchronization pass. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#RouteEmitterSyncDuration", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 15 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.availability.critical", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/available\" and Value_d < 1" + }, + "alert": { + "displayName": "CF-MySQL Server Availability", + "description": "The MySQL Server is currently responding to requests, which indicates that the server is running. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-mysql-server-availability", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.galera.wsrep_ready.critical", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/galera/wsrep_ready\" | summarize avg(Value_d) by Environment_s, SourceInstance_s | where avg_Value_d == 0" + }, + "alert": { + "displayName": "CF-Galera Cluster Node Readiness", + "description": "Shows whether each cluster node can accept queries. Returns only 0 or 1. When this metric is 0, almost all queries to that node fail with the error:ERROR 1047 (08501) Unknown Command. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-galera-cluster-node-readiness", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.galera.wsrep_ready.warning", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/galera/wsrep_ready\" | summarize avg(Value_d) by Environment_s, SourceInstance_s | where avg_Value_d < 1" + }, + "alert": { + "displayName": "CF-Galera Cluster Node Readiness", + "description": "Shows whether each cluster node can accept queries. Returns only 0 or 1. When this metric is 0, almost all queries to that node fail with the error:ERROR 1047 (08501) Unknown Command. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-galera-cluster-node-readiness", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "_comment": "Not exactly the same as instruction, as instructed (Average of the values of each node / cluster size) should always be 1", + "search": { + "name": "cf.mysql.galera.wsrep_cluster_size.critical", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/galera/wsrep_cluster_size\" | summarize avg(Value_d) by Environment_s, SourceInstance_s | where avg_Value_d < 1" + }, + "alert": { + "displayName": "CF-Galera Cluster Size", + "description": "The number of cluster nodes with which each node is communicating normally. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-galera-cluster-size", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "_comment": "Not exactly the same as instruction, as instructed (Average of the values of each node / cluster size) should always be 1", + "search": { + "name": "cf.mysql.galera.wsrep_cluster_size.warning", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/galera/wsrep_cluster_size\" | summarize avg(Value_d) by Environment_s, SourceInstance_s | where avg_Value_d < 3" + }, + "alert": { + "displayName": "CF-Galera Cluster Size", + "description": "The number of cluster nodes with which each node is communicating normally. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-galera-cluster-size", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.galera.wsrep_cluster_status.critical", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/galera/wsrep_cluster_status\" | summarize argmax(EventTime_t, Value_d) by Environment_s, SourceInstance_s | summarize sum(max_EventTime_t_Value_d) by Environment_s | where sum_max_EventTime_t_Value_d < 1" + }, + "alert": { + "displayName": "CF-Galera Cluster Status", + "description": "Shows the primary status of the cluster component that the node is in. Values are 1 for Primary, 0 for Non-primary, -1 for Disconnected. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-galera-cluster-status", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.galera.wsrep_cluster_status.warning", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/galera/wsrep_cluster_status\" | summarize argmax(EventTime_t, Value_d) by Environment_s, SourceInstance_s | summarize sum(max_EventTime_t_Value_d) by Environment_s | where sum_max_EventTime_t_Value_d < 3" + }, + "alert": { + "displayName": "CF-Galera Cluster Status", + "description": "Shows the primary status of the cluster component that the node is in. Values are 1 for Primary, 0 for Non-primary, -1 for Disconnected. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-galera-cluster-status", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "_comment": "Use 5-minute timeSpan due to OMS minimum timespan limitation", + "search": { + "name": "cf.mysql.net.connections.critical", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/net/connections\" | summarize avg(Value_d), max(Value_d) by Environment_s | project Environment_s, avg_Value_d, max_Value_d, avg_ratio = avg_Value_d / max_Value_d | where avg_ratio > 0.9" + }, + "alert": { + "displayName": "CF-Connections per Second", + "description": "Connections per second made to the server. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-connections-per-second", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "_comment": "Use 5-minute timeSpan due to OMS minimum timespan limitation", + "search": { + "name": "cf.mysql.net.connections.warning", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/net/connections\" | summarize avg(Value_d), max(Value_d) by Environment_s | project Environment_s, avg_Value_d, max_Value_d, avg_ratio = avg_Value_d / max_Value_d | where avg_ratio > 0.8" + }, + "alert": { + "displayName": "CF-Connections per Second", + "description": "Connections per second made to the server. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-connections-per-second", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.performance.questions.critical", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/performance/questions\" | summarize avg(Value_d) by Environment_s, bin(EventTime_t, 120s) | where avg_Value_d == 0" + }, + "alert": { + "displayName": "CF-Query Rate", + "description": "The rate of statements execute by the server, shown as queries per second. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-query-rate", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 6 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.performance.questions.warning", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/performance/questions\" | summarize avg(Value_d) by Environment_s, bin(EventTime_t, 90s) | where avg_Value_d == 0" + }, + "alert": { + "displayName": "CF-Query Rate", + "description": "The rate of statements execute by the server, shown as queries per second. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-query-rate", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 6 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.performance.busy_time.critical", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/performance/busy_time\" | summarize avg(Value_d) by Environment_s, SourceInstance_s, bin(EventTime_t, 120s) | where avg_Value_d > 90" + }, + "alert": { + "displayName": "CF-MySQL CPU Busy Time", + "description": "Percentage of CPU time spent by MySQL on user activity, executing user code, as opposed to kernel activity processing system calls. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-mysql-cpu-busy-time", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 6 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.mysql.performance.busy_time.warning", + "category": "CF-MySQL-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"mysql\" and Name_s == \"/mysql/performance/busy_time\" | summarize avg(Value_d) by Environment_s, SourceInstance_s, bin(EventTime_t, 120s) | where avg_Value_d > 80" + }, + "alert": { + "displayName": "CF-MySQL CPU Busy Time", + "description": "Percentage of CPU time spent by MySQL on user activity, executing user code, as opposed to kernel activity processing system calls. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#-mysql-cpu-busy-time", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 6 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.file_descriptors.critical", + "category": "CF-GoRouter-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"file_descriptors\" | summarize max(Value_d) by Environment_s, SourceInstance_s | where max_value_d > 60000" + }, + "alert": { + "displayName": "CF-Router File Descriptors", + "description": "The number of file descriptors currently used by the Gorouter job. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#router-file-descriptors", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.file_descriptors.warning", + "category": "CF-GoRouter-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"file_descriptors\" | summarize max(Value_d) by Environment_s, SourceInstance_s | where max_value_d > 50000" + }, + "alert": { + "displayName": "CF-Router File Descriptors", + "description": "The number of file descriptors currently used by the Gorouter job. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#router-file-descriptors", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.backend_exhausted_conns.critical", + "category": "CF-GoRouter-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"backend_exhausted_conns\" | summarize sum(Delta_d) by Environment_s, SourceInstance_s, bin(EventTime_t, 1m) | where sum_Delta_d > 10" + }, + "alert": { + "displayName": "CF-Router Exhausted Connections", + "description": "The lifetime number of requests that have been rejected by the Gorouter VM due to the Max Connections Per Backend limit being reached across all tried backends. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#router-exhausted-connections", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.backend_exhausted_conns.warning", + "category": "CF-GoRouter-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"backend_exhausted_conns\" | summarize sum(Delta_d) by Environment_s, SourceInstance_s, bin(EventTime_t, 1m) | where sum_Delta_d > 0" + }, + "alert": { + "displayName": "CF-Router Exhausted Connections", + "description": "The lifetime number of requests that have been rejected by the Gorouter VM due to the Max Connections Per Backend limit being reached across all tried backends. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#router-exhausted-connections", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.total_requests.critical", + "category": "CF-GoRouter-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"total_requests\" | summarize sum(Delta_d) by SourceInstance_s | where sum_Delta_d > 100000" + }, + "alert": { + "displayName": "CF-Router Throughput", + "description": "The lifetime number of requests completed by the GoRouter VM. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#total_requests", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.total_requests.warning", + "category": "CF-GoRouter-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"total_requests\" | summarize sum(Delta_d) by SourceInstance_s | where sum_Delta_d > 50000" + }, + "alert": { + "displayName": "CF-Router Throughput", + "description": "The lifetime number of requests completed by the GoRouter VM. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#total_requests", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.latency.critical", + "category": "CF-GoRouter-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"latency\" | summarize avg(Value_d) by SourceInstance_s | where avg_Value_d > 5000" + }, + "alert": { + "displayName": "CF-Router Handling Latency", + "description": "The time in milliseconds that the GoRouter takes to handle requests to its app endpoints. This is the average round trip response time to an app, which includes router handling. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#latency", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 30 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.latency.warning", + "category": "CF-GoRouter-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"latency\" | summarize avg(Value_d) by SourceInstance_s | where avg_Value_d > 3000" + }, + "alert": { + "displayName": "CF-Router Handling Latency", + "description": "The time in milliseconds that the GoRouter takes to handle requests to its app endpoints. This is the average round trip response time to an app, which includes router handling. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#latency", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 30 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.ms_since_last_registry_update.critical", + "category": "CF-GoRouter-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"ms_since_last_registry_update\" and Value_d >= 30000" + }, + "alert": { + "displayName": "CF-Time Since Last Route Register Received", + "description": "Time in milliseconds since the last route register was received. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#mssincelastregistryupdate", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.bad_gateways.critical", + "category": "CF-GoRouter-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"bad_gateways\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | where sum_Delta_d > 15" + }, + "alert": { + "displayName": "CF-Router Error: 502 Bad Gateway", + "description": "The lifetime number of bad gateways, or 502 responses, from GoRouter itself. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#bad_gateways", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.bad_gateways.warning", + "category": "CF-GoRouter-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"bad_gateways\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | where sum_Delta_d > 0" + }, + "alert": { + "displayName": "CF-Router Error: 502 Bad Gateway", + "description": "The lifetime number of bad gateways, or 502 responses, from GoRouter itself. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#bad_gateways", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.responses.5xx.critical", + "category": "CF-GoRouter-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"responses.5xx\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | where sum_Delta_d > 15" + }, + "alert": { + "displayName": "CF-Router Error: Server Error", + "description": "The lifetime number of requests completed by the GoRouter VM for HTTP status family 5xx, server errors. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#responses.5xx", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.responses.5xx.warning", + "category": "CF-GoRouter-KPI", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"responses.5xx\" | summarize sum(Delta_d) by Environment_s, bin(EventTime_t, 1m) | where sum_Delta_d > 0" + }, + "alert": { + "displayName": "CF-Router Error: Server Error", + "description": "The lifetime number of requests completed by the GoRouter VM for HTTP status family 5xx, server errors. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#responses.5xx", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.total_routes.critical", + "category": "CF-GoRouter-KPI", + "query": "let T1 = CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"total_routes\" | summarize TotalRoutes = avg(Value_d) by Environment_s, bin(EventTime_t, 5m);\nlet T2 = T1 | project Environment_s, EventTime_t = EventTime_t-5m, TotalRoutesPrevious = TotalRoutes;\nT1 | join T2 on Environment_s, EventTime_t | project Environment_s, EventTime_t, TotalRoutes, TotalRoutesPrevious, TotalRoutesDelta = TotalRoutesPrevious - TotalRoutes | where TotalRoutesDelta > 20" + }, + "alert": { + "displayName": "CF-Number of GoRouter Routes Registered", + "description": "The current total number of routes registered with the GoRouter. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#total_routes", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 10 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.total_routes.warning", + "category": "CF-GoRouter-KPI", + "query": "let T1 = CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"total_routes\" | summarize TotalRoutes = avg(Value_d) by Environment_s, bin(EventTime_t, 5m);\nlet T2 = T1 | project Environment_s, EventTime_t = EventTime_t-5m, TotalRoutesPrevious = TotalRoutes;\nT1 | join T2 on Environment_s, EventTime_t | project Environment_s, EventTime_t, TotalRoutes, TotalRoutesPrevious, TotalRoutesDelta = TotalRoutesPrevious - TotalRoutes | where TotalRoutesDelta > 10" + }, + "alert": { + "displayName": "CF-Number of GoRouter Routes Registered", + "description": "The current total number of routes registered with the GoRouter. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#total_routes", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 10 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.registry_message.route-emitter.critical", + "category": "CF-GoRouter-KPI", + "query": "let T1 = CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"registry_message.route-emitter\" | summarize RegistryMessage = sum(Delta_d) by Environment_s;\nlet T2 = CF_CounterEvent_CL | where Origin_s == \"route_emitter\" and Name_s == \"MessagesEmitted\" | summarize MessagesEmitted = sum(Delta_d) by Environment_s;\nT1 | join T2 on Environment_s | project Environment_s, RegistryMessage, MessagesEmitted, MessageLost = RegistryMessage - MessagesEmitted | where MessageLost > 20" + }, + "alert": { + "displayName": "CF-Number of Route Registration Messages Sent and Received", + "description": "The difference between the aggregate number of route registration messages published by all the Route Emitters and the number of messages received by each Gorouter instance. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#number-of-route-registration-messages-sent-and-received", + "severity": "Critical", + "enabled": "false", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.gorouter.registry_message.route-emitter.warning", + "category": "CF-GoRouter-KPI", + "query": "let T1 = CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s == \"registry_message.route-emitter\" | summarize RegistryMessage = sum(Delta_d) by Environment_s;\nlet T2 = CF_CounterEvent_CL | where Origin_s == \"route_emitter\" and Name_s == \"MessagesEmitted\" | summarize MessagesEmitted = sum(Delta_d) by Environment_s;\nT1 | join T2 on Environment_s | project Environment_s, RegistryMessage, MessagesEmitted, MessageLost = RegistryMessage - MessagesEmitted | where MessageLost > 0" + }, + "alert": { + "displayName": "CF-Number of Route Registration Messages Sent and Received", + "description": "The difference between the aggregate number of route registration messages published by all the Route Emitters and the number of messages received by each Gorouter instance. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#number-of-route-registration-messages-sent-and-received", + "severity": "Warning", + "enabled": "false", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.DopplerServer.listeners.totalReceivedMessageCount.critical", + "category": "CF-Firehose-KPI", + "query": "CF_CounterEvent_CL | where (Origin_s == \"DopplerServer\" and Name_s == \"listeners.totalReceivedMessageCount\") or (Origin_s == \"loggregator.doppler\" and Name_s == \"ingress\") | summarize AveragePerMinute = sum(Delta_d) by Environment_s, bin(EventTime_t, 1min) | summarize MaximumPer5Minute = max(AveragePerMinute) by Environment_s | where MaximumPer5Minute > 20000" + }, + "alert": { + "displayName": "CF-Firehose Throughput", + "description": "The total number of messages received across all Doppler listeners: UDP, TCP, TLS, and GRPC. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#listeners.receivedEnvelopes", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.DopplerServer.listeners.totalReceivedMessageCount.warning", + "category": "CF-Firehose-KPI", + "query": "CF_CounterEvent_CL | where (Origin_s == \"DopplerServer\" and Name_s == \"listeners.totalReceivedMessageCount\") or (Origin_s == \"loggregator.doppler\" and Name_s == \"ingress\") | summarize AveragePerMinute = sum(Delta_d) by Environment_s, bin(EventTime_t, 1min) | summarize MaximumPer5Minute = max(AveragePerMinute) by Environment_s | where MaximumPer5Minute > 15000" + }, + "alert": { + "displayName": "CF-Firehose Throughput", + "description": "The total number of messages received across all Doppler listeners: UDP, TCP, TLS, and GRPC. This alert should have threshold settings based on scale and usage of your own CF deployment, please tuning its threshold in OMS settings if the default value is not suitable. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#listeners.receivedEnvelopes", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.DopplerServer.doppler.shedEnvelopes.critical", + "category": "CF-Firehose-KPI", + "query": "CF_CounterEvent_CL | where (Origin_s == \"DopplerServer\" and Name_s == \"doppler.shedEnvelopes\") or (Origin_s == \"loggregator.doppler\" and Name_s == \"dropped\") | summarize AveragePerMinute = sum(Delta_d) by Environment_s, bin(EventTime_t, 1min) | summarize MaximumPer5Minute = max(AveragePerMinute) by Environment_s | where MaximumPer5Minute > 5" + }, + "alert": { + "displayName": "CF-Firehose Dropped Messages", + "description": "The lifetime total number of messages intentionally dropped by Doppler due to back pressure. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#deriveddopplerserver.doppler", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.DopplerServer.doppler.shedEnvelopes.warning", + "category": "CF-Firehose-KPI", + "query": "CF_CounterEvent_CL | where (Origin_s == \"DopplerServer\" and Name_s == \"doppler.shedEnvelopes\") or (Origin_s == \"loggregator.doppler\" and Name_s == \"dropped\") | summarize AveragePerMinute = sum(Delta_d) by Environment_s, bin(EventTime_t, 1min) | summarize MaximumPer5Minute = max(AveragePerMinute) by Environment_s | where MaximumPer5Minute > 0" + }, + "alert": { + "displayName": "CF-Firehose Dropped Messages", + "description": "The lifetime total number of messages intentionally dropped by Doppler due to back pressure. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#deriveddopplerserver.doppler", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.healthy.critical", + "category": "CF-BOSH-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.healthy\" and Value_d < 1" + }, + "alert": { + "displayName": "CF-VM Health", + "description": "The lifetime total number of messages intentionally dropped by Doppler due to back pressure. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#healthy", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.mem.percent.critical", + "category": "CF-BOSH-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.mem.percent\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 90" + }, + "alert": { + "displayName": "CF-VM Memory Used", + "description": "System Memory \u2014 Percentage of memory used on the VM. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#mem.percent", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 10 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.mem.percent.warning", + "category": "CF-BOSH-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.mem.percent\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 80" + }, + "alert": { + "displayName": "CF-VM Memory Used", + "description": "System Memory \u2014 Percentage of memory used on the VM. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#mem.percent", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 10 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.disk.system.percent.critical", + "category": "CF-System-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.disk.system.percent\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 90" + }, + "alert": { + "displayName": "CF-VM Disk Used", + "description": "System disk \u2014 Percentage of the system disk used on the VM. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#disk.system.percent", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 30 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.disk.system.percent.warning", + "category": "CF-System-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.disk.system.percent\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 80" + }, + "alert": { + "displayName": "CF-VM Disk Used", + "description": "System disk \u2014 Percentage of the system disk used on the VM. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#disk.system.percent", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 30 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.disk.ephemeral.percent.critical", + "category": "CF-System-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.disk.ephemeral.percent\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 90" + }, + "alert": { + "displayName": "CF-VM Ephemeral Disk Used", + "description": "Ephemeral disk \u2014 Percentage of the ephemeral disk used on the VM. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#disk.ephemeral.percent", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 30 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.disk.ephemeral.percent.warning", + "category": "CF-System-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.disk.ephemeral.percent\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 80" + }, + "alert": { + "displayName": "CF-VM Ephemeral Disk Used", + "description": "Ephemeral disk \u2014 Percentage of the ephemeral disk used on the VM. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#disk.ephemeral.percent", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 30 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.disk.persistent.percent.critical", + "category": "CF-System-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.disk.persistent.percent\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 90" + }, + "alert": { + "displayName": "CF-VM Persistent Disk Used", + "description": "Persistent disk \u2014 Percentage of persistent disk used on the VM. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#disk.persistent.percent", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 30 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.disk.persistent.percent.warning", + "category": "CF-System-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.disk.persistent.percent\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 80" + }, + "alert": { + "displayName": "CF-VM Persistent Disk Used", + "description": "Persistent disk \u2014 Percentage of persistent disk used on the VM. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#disk.persistent.percent", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 30 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.cpu.user.critical", + "category": "CF-System-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.cpu.user\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 95" + }, + "alert": { + "displayName": "CF-VM CPU Utilization", + "description": "CPU utilization \u2014 The percentage of CPU spent in user processes. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#cpu.user", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.system.cpu.user.warning", + "category": "CF-System-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"bosh-hm-forwarder\" or Origin_s == \"bosh-system-metrics-forwarder\" | where Name_s == \"system.cpu.user\" | summarize AggregatedValue = avg(Value_d) by SourceInstance_s | where AggregatedValue >= 85" + }, + "alert": { + "displayName": "CF-VM CPU Utilization", + "description": "CPU utilization \u2014 The percentage of CPU spent in user processes. For details, please check https://docs.pivotal.io/pivotalcf/1-12/monitoring/kpi.html#cpu.user", + "severity": "Warning", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 5, + "timeSpan": 5 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.Consul is Down", + "category": "CF-Consul-KPI", + "query": "CF_ValueMetric_CL | where Origin_s == \"route_emitter\" and Name_s == \"ConsulDownMode\" and Value_d > 0" + }, + "alert": { + "displayName": "CF-Consul is Down", + "description": "Consul is Down", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 60 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.Problem in Logging Process", + "category": "CF-Loggregator-KPI", + "query": "CF_LogMessage_CL | where SourceType_s == \"LGR\" and MessageType_s == \"ERR\"" + }, + "alert": { + "displayName": "CF-Problem in Logging Process", + "description": "Loggregator emits LGR to indicate problems with the logging process", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 60 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.Slow Consumer Alert", + "category": "CF-Loggregator-KPI", + "query": "CF_ValueMetric_CL | where Name_s == \"slowConsumerAlert\"" + }, + "alert": { + "displayName": "CF-Slow Consumer Alert", + "description": "When the nozzle receives slow consumer alert from Loggregator, it sends slowConsumerAlert ValueMetric to OMS", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 60 + }, + "throttleMinutes": 60 + } + }, + { + "search": { + "name": "cf.Lost Events from Nozzle", + "category": "CF-OMS Nozzle-KPI", + "query": "CF_CounterEvent_CL | where Job_s == \"nozzle\" and Name_s == \"eventsLost\" and Delta_d > 0" + }, + "alert": { + "displayName": "CF-Lost Events from Nozzle", + "description": "Lost Events from Nozzle", + "severity": "Critical", + "enabled": "true", + "thresholdOperator": "gt", + "thresholdValue": 0, + "schedule": { + "interval": 15, + "timeSpan": 60 + }, + "throttleMinutes": 60 + } + } + ] + }, + "resources": [ + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "properties": { + "etag": "*", + "query": "(alerts)[copyIndex()].search.query", + "displayName": "[concat(variables('alerts')[copyIndex()].search.name)]", + "category": "(alerts)[copyIndex()].search.category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2017-03-15-preview", + "tags": {}, + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]" + ], + "properties": { + "etag": "*", + "interval": "(alerts)[copyIndex()].alert.schedule.interval", + "queryTimeSpan": "(alerts)[copyIndex()].alert.schedule.timeSpan", + "enabled": "(alerts)[copyIndex()].alert.enabled" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/', 'schedule-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name), '/', 'alert-', uniqueString(resourceGroup().id, deployment().name, parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2017-03-15-preview", + "dependsOn": [ + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name))]", + "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'), '/savedSearches/', toLower(variables('alerts')[copyIndex()].search.category), '|', toLower(variables('alerts')[copyIndex()].search.name), '/schedules/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsWorkspaceName'), '/', variables('alerts')[copyIndex()].search.category, '|', variables('alerts')[copyIndex()].search.name))]" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alerts)[copyIndex()].alert.displayName", + "Description": "(alerts)[copyIndex()].alert.description", + "Severity": "[toLower(variables('alerts')[copyIndex()].alert.severity)]", + "Threshold": { + "Operator": "(alerts)[copyIndex()].alert.thresholdOperator", + "Value": "(alerts)[copyIndex()].alert.thresholdValue" + }, + "Throttling": { + "DurationInMinutes": "(alerts)[copyIndex()].alert.throttleMinutes" + }, + "AzNsNotification": { + "GroupIds": [ + "[concat(resourceGroup().id, '/providers/microsoft.insights/actiongroups/', parameters('actionGroupName'))]" + ], + "CustomEmailSubject": "[concat('[', toUpper(variables('alerts')[copyIndex()].alert.severity), '] ', variables('alerts')[copyIndex()].alert.displayName)]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT764 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT764 new file mode 100644 index 0000000..3c27c61 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT764 @@ -0,0 +1,1322 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsCustomViews.json" + ], + "timestamp": 1642962900885, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsCustomViews.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT764", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT764", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Input the name of your Log Analytic Workspace, a new workspace will be created if workspace with given name and location doesn't exist." + } + }, + "omsWorkspaceRegion": { + "type": "string", + "defaultValue": "East US", + "allowedValues": [ + "Australia Southeast", + "East US", + "Japan East", + "Southeast Asia", + "UK South", + "West Central US", + "West Europe", + "North Europe" + ], + "metadata": { + "description": "Specify the region for your Workspace" + } + }, + "systemMetricsProvider": { + "type": "string", + "defaultValue": "BOSH Health Metrics Forwarder Only", + "allowedValues": [ + "None", + "Microsoft Azure OMS Agent Only", + "BOSH Health Metrics Forwarder Only", + "Both Azure OMS Agent and BOSH Health Metrics Forwarder" + ], + "metadata": { + "description": "Select your provider of system metrics" + } + }, + "cloudFoundryVersion": { + "type": "string", + "defaultValue": "2.0+", + "allowedValues": [ + "2.0+", + "1.12 or earlier" + ], + "metadata": { + "description": "Cloud Foundry environment has version 2.0+" + } + }, + "_omsViewsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/oms-log-analytics-firehose-nozzle/master/docs/omsview/", + "metadata": { + "description": "The base URI where OMS views required by this template are located" + } + }, + "_omsViewsLocationParameters": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Parameters required to access _omsViewsLocation." + } + } + }, + "variables": { + "omsviews": { + "defailt": [ + "Cloud%20Foundry.omsview", + "CF%20KPI%20-%20Diego%20Metrics.omsview", + "CF%20KPI%20-%20Doppler%20Server%20Metrics.omsview", + "CF%20KPI%20-%20Gorouter%20Metrics.omsview", + "CF%20-%20Apps.omsview", + "CF%20-%20BBS.omsview", + "CF%20-%20Cell%20Capacity.omsview", + "CF%20-%20Cloud%20Controller.omsview", + "CF%20-%20Component%20Metrics.omsview", + "CF%20-%20Diego%20Auctions.omsview", + "CF%20-%20Diego%20Health.omsview", + "CF%20-%20Doppler%20Server.omsview", + "CF%20-%20Garden%20Linux.omsview", + "CF%20-%20Gorouter.omsview", + "CF%20-%20LRPs%20and%20Tasks.omsview", + "CF%20-%20Metron%20Agent.omsview", + "CF%20-%20Nozzle%20Status.omsview", + "CF%20-%20Route%20Emitter.omsview", + "CF%20-%20UAA.omsview" + ], + "legacy": [ + "CF%20-%20Etcd.omsview", + "CF%20-%20Etcd%20Operations.omsview" + ], + "system_metrics": { + "oms_agent": "https://raw.githubusercontent.com/Azure/oms-agent-for-linux-boshrelease/master/docs/omsview/Syslog%20and%20Perf.omsview", + "hm_forwarder": "https://raw.githubusercontent.com/Azure/oms-log-analytics-firehose-nozzle/master/docs/omsview/CF%20KPI%20-%20System%20Metrics.omsview" + } + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').defailt[copyIndex()], '%20', '_'), '_-_', '-')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').defailt[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "[replace(replace(variables('omsviews').legacy[copyIndex()], '%20', '_'), '_-_', '-')]", + "condition": false, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[concat(parameters('_omsViewsLocation'), '/', variables('omsviews').legacy[copyIndex()], parameters('_omsViewsLocationParameters'))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "CF_KPI-Syslog_and_Perf.omsview", + "condition": "[contains(parameters('systemMetricsProvider'), 'Azure OMS Agent')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(omsviews).system_metrics.oms_agent", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "CF_KPI-System_Metrics.omsview", + "condition": "[contains(parameters('systemMetricsProvider'), 'BOSH Health Metrics Forwarder')]", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(omsviews).system_metrics.hm_forwarder", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "resourcegroup": { + "value": "[resourceGroup().name]" + }, + "location": { + "value": "East US" + }, + "subscriptionId": { + "value": "[subscription().subscriptionId]" + }, + "workspace": { + "value": "omsWorkspaceName" + }, + "workspaceapiversion": { + "value": "2017-03-03-preview" + } + } + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsWorkspaceName'), '[CloudFoundry]')]", + "location": "East US", + "dependsOn": [ + "viewCopy" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Overview", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Diego%20Metrics", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Doppler%20Server%20Metrics", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Gorouter%20Metrics", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Apps", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20BBS", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Cell%20Capacity", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Cloud%20Controller", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Component%20Metrics", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Diego%20Auctions", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Diego%20Health", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Doppler%20Server", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Etcd%20Operations", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Etcd", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Garden%20Linux", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Gorouter", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20LRPs%20and%20Tasks", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Metron%20Agent", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Nozzle%20Status", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20Route%20Emitter", + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20-%20UAA" + ] + }, + "plan": { + "name": "[concat('cloudfoundrysolution', '[' ,parameters('omsWorkspaceName'), ']')]", + "product": "cloudfoundrysolution", + "promotionCode": "", + "publisher": "Microsoft", + "version": "1.0" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsWorkspaceName'), '[OMSAgentBOSHRelease]')]", + "location": "East US", + "condition": "[contains(parameters('systemMetricsProvider'), 'Azure OMS Agent')]", + "dependsOn": [ + "viewCopy" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/Syslog%20and%20Perf" + ] + }, + "plan": { + "name": "[concat('omsagentsolution', '[' ,parameters('omsWorkspaceName'), ']')]", + "product": "OMS Agent BOSH Release Solution", + "promotionCode": "", + "publisher": "Microsoft", + "version": "1.0" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsWorkspaceName'), '[BOSHHealthMetricsForwarder]')]", + "location": "East US", + "condition": "[contains(parameters('systemMetricsProvider'), 'BOSH Health Metrics Forwarder')]", + "dependsOn": [ + "viewCopy" + ], + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/omsWorkspaceName", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//omsWorkspaceName/CF%20KPI%20-%20System%20Metrics" + ] + }, + "plan": { + "name": "[concat('boshhmforwarder', '[' ,parameters('omsWorkspaceName'), ']')]", + "product": "BOSH HM Forwarder Solution", + "promotionCode": "", + "publisher": "Microsoft", + "version": "1.0" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT765 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT765 new file mode 100644 index 0000000..d22b058 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT765 @@ -0,0 +1,883 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsSavedSearches.json" + ], + "timestamp": 1642962900901, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsSavedSearches.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT765", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces/savedsearches" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT765", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Input the name of your OMS Workspace" + } + } + }, + "variables": { + "savedSearches": { + "templates": [ + { + "name": "CF-Average CPU Usage by Application Instance", + "category": "CF-Apps", + "query": "CF_ContainerMetric_CL | summarize avg(CPUPercentage_d) by Environment_s, ApplicationName_s, InstanceIndex_d, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Average Memory Usage by Application Instance", + "category": "CF-Apps", + "query": "CF_ContainerMetric_CL | summarize avg(MemoryBytes_d) by Environment_s, ApplicationName_s, InstanceIndex_d, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Average Memory Quota Application Instance", + "category": "CF-Apps", + "query": "CF_ContainerMetric_CL | summarize avg(MemoryBytesQuota_d) by Environment_s, ApplicationName_s, InstanceIndex_d, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Average Disk Usage by Application Instance", + "category": "CF-Apps", + "query": "CF_ContainerMetric_CL | summarize avg(DiskBytes_d) by Environment_s, ApplicationName_s, InstanceIndex_d, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Average Disk Quota Application Instance", + "category": "CF-Apps", + "query": "CF_ContainerMetric_CL | summarize avg(DiskBytesQuota_d) by Environment_s, ApplicationName_s, InstanceIndex_d, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Total BBS Request Count", + "category": "CF-BBS", + "query": "CF_CounterEvent_CL | where Origin_s == \"bbs\" and Name_s == \"RequestCount\" | summarize max(Total_d) by Environment_s, Job_s, IP_s" + }, + { + "name": "CF-BBS Request Latency", + "category": "CF-BBS", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"RequestLatency\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Total Convergence LRP & Task Runs", + "category": "CF-BBS", + "query": "CF_CounterEvent_CL | where Origin_s == \"bbs\" and (Name_s == \"ConvergenceLRPRuns\" or Name_s == \"ConvergenceTaskRuns\") | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Total Convergence Tasks Kicked & Pruned", + "category": "CF-BBS", + "query": "CF_CounterEvent_CL | where Origin_s == \"bbs\" and (Name_s == \"ConvergenceTasksKicked\" or Name_s == \"ConvergenceTasksPruned\") | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Convergence LRP & Task Duration", + "category": "CF-BBS", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and (Name_s == \"ConvergenceLRPDuration\" or Name_s == \"ConvergenceTaskDuration\") | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Malformed LRPs", + "category": "CF-BBS", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and (Name_s == \"ConvergenceLRPDuration\" or Name_s == \"ConvergenceLRPPreProcessing\") | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Number of HTTP Responses", + "category": "CF-CC", + "query": "CF_ValueMetric_CL | where Origin_s == \"cc\" and Name_s contains_cs \"http_status\" | summarize max(Value_d) by Environment_s, IP_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Job Queue Length", + "category": "CF-CC", + "query": "CF_ValueMetric_CL | where Origin_s == \"cc\" and Name_s contains_cs \"job_queue_length\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Failed Job Count", + "category": "CF-CC", + "query": "CF_ValueMetric_CL | where Origin_s == \"cc\" and Name_s contains_cs \"failed_job_count\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Number of Requests Completed", + "category": "CF-CC", + "query": "CF_ValueMetric_CL | where Origin_s == \"cc\" and Name_s == \"requests.completed\" | summarize max(Value_d) by Environment_s, Job_s, IP_s" + }, + { + "name": "CF-Number of Requests Being Processed", + "category": "CF-CC", + "query": "CF_ValueMetric_CL | where Origin_s == \"cc\" and Name_s == \"requests.outstanding\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Number of Log Messages", + "category": "CF-CC", + "query": "CF_ValueMetric_CL | where Origin_s == \"cc\" and Name_s contains_cs \"log_count\" | summarize avg(Value_d) by Environment_s, IP_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Total & Remaining Containers", + "category": "CF-Cells Capacity", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s contains_cs \"Containers\" | summarize avg(Value_d) by Environment_s, IP_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Total & Remaining Memory", + "category": "CF-Cells Capacity", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s contains_cs \"Memory\" | summarize avg(Value_d) by Environment_s, IP_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Total & Remaining Disk", + "category": "CF-Cells Capacity", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s contains_cs \"Disk\" | summarize avg(Value_d) by Environment_s, IP_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Number of CPUs", + "category": "CF-Component Metrics", + "query": "CF_ValueMetric_CL | where Name_s == \"numCPUS\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Number of Go Routines", + "category": "CF-Component Metrics", + "query": "CF_ValueMetric_CL | where Name_s == \"numGoRoutines\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Memory Usage", + "category": "CF-Component Metrics", + "query": "CF_ValueMetric_CL | where Name_s == \"memoryStats.numBytesAllocated\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Stack Allocator Memory Usage", + "category": "CF-Component Metrics", + "query": "CF_ValueMetric_CL | where Name_s == \"memoryStats.numBytesAllocatedStack\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Main Heap Memory Usage", + "category": "CF-Component Metrics", + "query": "CF_ValueMetric_CL | where Name_s == \"memoryStats.numBytesAllocatedHeap\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Garbage Collector Pause Duration", + "category": "CF-Component Metrics", + "query": "CF_ValueMetric_CL | where Name_s == \"memoryStats.lastGCPauseTimeNS\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Number of Memory Allocations", + "category": "CF-Component Metrics", + "query": "CF_ValueMetric_CL | where Name_s == \"memoryStats.numMallocs\" | summarize max(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Number of Memory Deallocations", + "category": "CF-Component Metrics", + "query": "CF_ValueMetric_CL | where Name_s == \"memoryStats.numFrees\" | summarize max(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Total Auctions", + "category": "CF-Diego Auctions", + "query": "CF_CounterEvent_CL | where Origin_s == \"auctioneer\" and Name_s contains_cs \"Auctions\" | summarize max(Total_d) by Environment_s, Name_s" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Auctions per Minute", + "category": "CF-Diego Auctions", + "query": "CF_CounterEvent_CL | where Origin_s == \"auctioneer\" and Name_s contains_cs \"Auctions\" | summarize sum(Delta_d) by Environment_s, Name_s, bin(TimeGenerated, 1m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Fetch States Duration", + "category": "CF-Diego Auctions", + "query": "CF_ValueMetric_CL | where Origin_s == \"auctioneer\" and Name_s == \"AuctioneerFetchStatesDuration\" | summarize max(Value_d) by Environment_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-CF Apps Synchronized", + "category": "CF-Diego Health", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"Domain.cf-apps\" | summarize min(Value_d) by Environment_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-CF Tasks Synchronized", + "category": "CF-Diego Health", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s == \"Domain.cf-tasks\" | summarize min(Value_d) by Environment_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Unhealthy Cells", + "category": "CF-Diego Health", + "query": "CF_ValueMetric_CL | where Origin_s == \"rep\" and Name_s == \"UnhealthyCell\" | summarize max(Value_d) by Environment_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Number of Sinks", + "category": "CF-Doppler Server", + "query": "CF_ValueMetric_CL | where Origin_s == \"DopplerServer\" and Name_s contains_cs \"messageRouter.numberOf\" | summarize max(Value_d) by Environment_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Number of Messages Unmarshalled", + "category": "CF-Doppler Server", + "query": "CF_CounterEvent_CL | where Origin_s == \"DopplerServer\" and Name_s contains_cs \"dropsondeUnmarshaller\" and Name_s != \"dropsondeUnmarshaller.unmarshalErrors\" | summarize max(Total_d) by Environment_s, Name_s" + }, + { + "name": "CF-Number of Messages Received by Listeners", + "category": "CF-Doppler Server", + "query": "CF_CounterEvent_CL | where Origin_s == \"DopplerServer\" and Name_s == \"listeners.totalReceivedMessageCount\" | summarize max(Total_d) by Environment_s" + }, + { + "name": "CF-Unmarshal Errors", + "category": "CF-Doppler Server", + "query": "CF_CounterEvent_CL | where Origin_s == \"DopplerServer\" and Name_s == \"dropsondeUnmarshaller.unmarshalErrors\" | summarize max(Total_d) by Environment_s" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Dropped Messages", + "category": "CF-Doppler Server", + "query": "CF_CounterEvent_CL | where Origin_s == \"DopplerServer\" and (Name_s == \"TruncatingBuffer.totalDroppedMessages\" or Name_s == \"doppler.shedEnvelopes\") | summarize max(Total_d) by Environment_s, Name_s" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Leader", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s == \"IsLeader\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Followers", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s == \"Followers\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Watchers", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s == \"Watchers\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Raft Term", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s == \"RaftTerm\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Raft Index", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s == \"RaftIndex\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Sending & Receiving Bandwidth Rate", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"BandwidthRate\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Sending & Receiving Request Rate", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"RequestRate\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Latency", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s == \"Latency\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Sent & Received Append Requests Rate", + "category": "CF-Etcd", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"AppendRequests\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Sets Success & Fail", + "category": "CF-Etcd Operations", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"Sets\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Gets Success & Fail", + "category": "CF-Etcd Operations", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"Gets\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Create Success & Fail", + "category": "CF-Etcd Operations", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"Create\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Update Success & Fail", + "category": "CF-Etcd Operations", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"Update\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Delete Success & Fail", + "category": "CF-Etcd Operations", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and (Name_s == \"DeleteSuccess\" or Name_s == \"DeleteFail\") | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-CompareAndDelete Success & Fail", + "category": "CF-Etcd Operations", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"CompareAndDelete\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-CompareAndSwap Success & Fail", + "category": "CF-Etcd Operations", + "query": "CF_ValueMetric_CL | where Origin_s == \"etcd\" and Name_s contains_cs \"CompareAndSwap\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Number of Container Backing Store Files", + "category": "CF-Garden Linux", + "query": "CF_ValueMetric_CL | where Origin_s == \"garden-linux\" and Name_s == \"BackingStores\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "_shownOnPcf2": "false", + "name": "CF-Number of Directories in the Garden Depot", + "category": "CF-Garden Linux", + "query": "CF_ValueMetric_CL | where Origin_s == \"garden-linux\" and Name_s == \"LoopDevices\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Number of Attached Loop Devices", + "category": "CF-Garden Linux", + "query": "CF_ValueMetric_CL | where Origin_s == \"garden-linux\" and Name_s == \"DepotDirs\" | summarize avg(Value_d) by Environment_s, Job_s, IP_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-LRPs", + "category": "CF-LRPs & Tasks", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s contains_cs \"LRPs\" and Name_s !contains_cs \"Crash\" | summarize avg(Value_d) by Environment_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Tasks", + "category": "CF-LRPs & Tasks", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s contains_cs \"Tasks\" and Name_s !contains_cs \"Convergence\" | summarize avg(Value_d) by Environment_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Crashing LRPs", + "category": "CF-LRPs & Tasks", + "query": "CF_ValueMetric_CL | where Origin_s == \"bbs\" and Name_s contains_cs \"Crash\" | summarize avg(Value_d) by Environment_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Desired LRP Sync Duration", + "category": "CF-LRPs & Tasks", + "query": "CF_ValueMetric_CL | where Origin_s == \"nsync_bulker\" and Name_s == \"DesiredLRPSyncDuration\" | summarize avg(Value_d) by Environment_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Sent & Received Dropsonde Envelopes", + "category": "CF-Metron Agent", + "query": "CF_CounterEvent_CL | where Origin_s == \"MetronAgent\" and Name_s contains_cs \"Envelopes\" | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Messages Unmarshalled", + "category": "CF-Metron Agent", + "query": "CF_CounterEvent_CL | where Origin_s == \"MetronAgent\" and ((Name_s contains_cs \"dropsondeUnmarshaller\" and Name_s contains_cs \"Received\") or Name_s == \"dropsondeUnmarshaller.logMessageTotal\") | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Dropsonde Messages Received by Agent Listener", + "category": "CF-Metron Agent", + "query": "CF_CounterEvent_CL | where Origin_s == \"MetronAgent\" and Name_s == \"dropsondeAgentListener.receivedMessageCount\" | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Dropsonde Bytes Received by Agent Listener", + "category": "CF-Metron Agent", + "query": "CF_CounterEvent_CL | where Origin_s == \"MetronAgent\" and Name_s == \"dropsondeAgentListener.receivedByteCount\" | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Messages Sent to Doppler", + "category": "CF-Metron Agent", + "query": "CF_CounterEvent_CL | where Origin_s == \"MetronAgent\" and Name_s contains_cs \"sentMessageCount\" | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Bytes Sent to Doppler", + "category": "CF-Metron Agent", + "query": "CF_CounterEvent_CL | where Origin_s == \"MetronAgent\" and Name_s contains_cs \"sentByteCount\" | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Errors Sent to Doppler", + "category": "CF-Metron Agent", + "query": "CF_CounterEvent_CL | where Origin_s == \"MetronAgent\" and Name_s contains_cs \"sendErrorCount\" | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Number of Routes", + "category": "CF-Route Emitter", + "query": "CF_ValueMetric_CL | where Origin_s == \"route_emitter\" and Name_s == \"RoutesTotal\" | summarize avg(Value_d) by Environment_s, Job_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Total Routes Registered, Synced and Unregistered", + "category": "CF-Route Emitter", + "query": "CF_CounterEvent_CL | where Origin_s == \"route_emitter\" and (Name_s == \"RoutesRegistered\" or Name_s == \"RoutesSynced\" or Name_s == \"RoutesUnregistered\") | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Total Registration Messages Emitted", + "category": "CF-Route Emitter", + "query": "CF_CounterEvent_CL | where Origin_s == \"route_emitter\" and Name_s == \"MessagesEmitted\" | summarize max(Total_d) by Environment_s, Job_s" + }, + { + "name": "CF-Route Emitter Time to Sync", + "category": "CF-Route Emitter", + "query": "CF_ValueMetric_CL | where Origin_s == \"route_emitter\" and Name_s == \"RouteEmitterSyncDuration\" | summarize avg(Value_d) by Environment_s, Job_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Requests per Minute", + "category": "CF-Gorouter", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and (Name_s == \"rejected_requests\" or Name_s == \"total_requests\") | summarize sum(Delta_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 1m)" + }, + { + "name": "CF-Responses per Minute", + "category": "CF-Gorouter", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s contains_cs \"responses\" | summarize sum(Delta_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 1m)" + }, + { + "name": "CF-Total Requests", + "category": "CF-Gorouter", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and (Name_s == \"rejected_requests\" or Name_s == \"total_requests\") | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Total Responses", + "category": "CF-Gorouter", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s contains_cs \"responses\" | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Latency", + "category": "CF-Gorouter", + "query": "CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s contains_cs \"latency\" | summarize avg(Value_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Route Lookup Time", + "category": "CF-Gorouter", + "query": "CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"route_lookup_time\" | summarize avg(Value_d) by Environment_s, Job_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Register Messages Received per Minute", + "category": "CF-Gorouter", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s contains_cs \"registry_message\" | summarize sum(Delta_d) by Environment_s, Job_s, Name_s, bin(TimeGenerated, 1m)" + }, + { + "name": "CF-Total Register Messages Received", + "category": "CF-Gorouter", + "query": "CF_CounterEvent_CL | where Origin_s == \"gorouter\" and Name_s contains_cs \"registry_message\" | summarize max(Total_d) by Environment_s, Job_s, Name_s" + }, + { + "name": "CF-Total Routes Registered", + "category": "CF-Gorouter", + "query": "CF_ValueMetric_CL | where Origin_s == \"gorouter\" and Name_s == \"total_routes\" | summarize avg(Value_d) by Environment_s, Job_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-User & Non-user Not Found", + "category": "CF-UAA", + "query": "CF_ValueMetric_CL | where Origin_s == \"uaa\" and Name_s contains_cs \"not_found_count\" | summarize max(Value_d) by Environment_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Failed Non-user Authentication Attempts", + "category": "CF-UAA", + "query": "CF_ValueMetric_CL | where Origin_s == \"uaa\" and Name_s == \"audit_service.principal_authentication_failure_count\" | summarize max(Value_d) by Environment_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Successful & Failed User Authentications", + "category": "CF-UAA", + "query": "CF_ValueMetric_CL | where Origin_s == \"uaa\" and Name_s contains_cs \"user_authentication\" | summarize max(Value_d) by Environment_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Successful & Failed Client Authentications", + "category": "CF-UAA", + "query": "CF_ValueMetric_CL | where Origin_s == \"uaa\" and Name_s contains_cs \"client_authentication\" | summarize max(Value_d) by Environment_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Successful & Failed Password Changes", + "category": "CF-UAA", + "query": "CF_ValueMetric_CL | where Origin_s == \"uaa\" and Name_s contains_cs \"user_password\" | summarize max(Value_d) by Environment_s, Name_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Receiving Rate by Nozzle Instance Every 5 Minutes", + "category": "CF-Nozzle Status", + "query": "CF_CounterEvent_CL | where Job_s == \"nozzle\" and Name_s == \"eventsReceived\" | summarize sum(Delta_d) by NozzleInstance_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Sending Rate by Nozzle Instance Every 5 Minutes", + "category": "CF-Nozzle Status", + "query": "CF_CounterEvent_CL | where Job_s == \"nozzle\" and Name_s == \"eventsSent\" | summarize sum(Delta_d) by NozzleInstance_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Lost Messages by Nozzle Instance", + "category": "CF-Nozzle Status", + "query": "CF_CounterEvent_CL | where Job_s == \"nozzle\" and Name_s == \"eventsLost\" | summarize max(Total_d) by NozzleInstance_s, bin(TimeGenerated, 5m)" + }, + { + "name": "CF-Total Recieved, Sent & Lost Messages by Nozzle Instance", + "category": "CF-Nozzle Status", + "query": "CF_CounterEvent_CL | where Job_s == \"nozzle\" | summarize max(Total_d) by NozzleInstance_s, Name_s" + }, + { + "name": "CF-Slow Consumer Alert", + "category": "CF-Nozzle Status", + "query": "CF_ValueMetric_CL | where Name_s == \"slowConsumerAlert\" | summarize max(Value_d) by NozzleInstance_s, bin(TimeGenerated, 5m)" + } + ] + } + }, + "resources": [ + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + }, + { + "name": "[concat(parameters('omsWorkspaceName'), '/', 'CF-SavedSearches-', uniquestring('SavedSearch'), '-', copyIndex())]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "apiVersion": "2017-03-15-preview", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "etag": "*", + "query": "(savedSearches).templates[copyIndex()].query", + "displayName": "(savedSearches).templates[copyIndex()].name", + "category": "(savedSearches).templates[copyIndex()].category" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT766 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT766 new file mode 100644 index 0000000..591f267 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT766 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsWorkspace.json" + ], + "timestamp": 1642962900911, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/nested/omsWorkspace.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT766", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT766", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Assign a name for the Log Analytic Workspace Name" + } + }, + "omsWorkspaceRegion": { + "type": "string", + "defaultValue": "West Europe", + "allowedValues": [ + "Australia Southeast", + "East US", + "Japan East", + "Southeast Asia", + "UK South", + "West Central US", + "West Europe", + "North Europe" + ], + "metadata": { + "description": "Specify the region for your Workspace" + } + }, + "azureMonitorPricingModel": { + "type": "string", + "defaultValue": "Pre April 2018", + "allowedValues": [ + "Pre April 2018", + "April 2018" + ], + "metadata": { + "description": "Select Azure Monitor pricing model your subscription has enabled, NOTE that April 2018 pricing model would be enabled automatically if you onboard Azure Monitor later than April 2, 2018" + } + }, + "omsWorkspaceSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "pernode", + "standalone" + ], + "metadata": { + "description": "Select the SKU for your workspace" + } + } + }, + "resources": [ + { + "apiVersion": "2017-03-03-preview", + "location": "West Europe", + "name": "omsWorkspaceName", + "type": "Microsoft.OperationalInsights/workspaces", + "comments": "Log Analytics workspace", + "tags": { + "Source": "QuickstartTemplates" + }, + "properties": { + "sku": { + "name": "[if(equals(parameters('azureMonitorPricingModel'),'Pre April 2018'), parameters('omsWorkspaceSku'), 'pergb2018')]" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT767 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT767 new file mode 100644 index 0000000..2031814 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT767 @@ -0,0 +1,247 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-cloudfoundry-solution/azuredeploy.json", + "/demos/oms-cloudfoundry-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900918, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-cloudfoundry-solution/azuredeploy.json", + "/demos/oms-cloudfoundry-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT767", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT767", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "defaultValue": "[concat('log-analytics-workspace-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Input the name of your Log Analytic Workspace, a new workspace will be created if workspace with given name and location doesn't exist." + } + }, + "omsWorkspaceRegion": { + "type": "string", + "defaultValue": "East US", + "allowedValues": [ + "Australia Southeast", + "East US", + "Japan East", + "Southeast Asia", + "UK South", + "West Central US", + "West Europe", + "North Europe" + ], + "metadata": { + "description": "Specify the region for your Workspace" + }, + "value": "West Europe" + }, + "azureMonitorPricingModel": { + "type": "string", + "defaultValue": "Pre April 2018", + "allowedValues": [ + "Pre April 2018", + "April 2018" + ], + "metadata": { + "description": "Select Azure Monitor pricing model your subscription has enabled, NOTE that April 2018 pricing model would be enabled automatically if you onboard Azure Monitor later than April 2, 2018" + }, + "value": "Pre April 2018" + }, + "omsWorkspaceSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "pernode", + "standalone" + ], + "metadata": { + "description": "Select the SKU for your workspace [This setting will be ignored if you enabled new pricing model April 2018]" + }, + "value": "pernode" + }, + "cloudFoundryVersion": { + "type": "string", + "defaultValue": "2.0+", + "allowedValues": [ + "2.0+", + "1.12 or earlier" + ], + "metadata": { + "description": "Cloud Foundry environment has version 2.0+" + } + }, + "systemMetricsProvider": { + "type": "string", + "defaultValue": "BOSH Health Metrics Forwarder Only", + "allowedValues": [ + "None", + "Microsoft Azure OMS Agent Only", + "BOSH Health Metrics Forwarder Only", + "Both Azure OMS Agent and BOSH Health Metrics Forwarder" + ], + "metadata": { + "description": "Select your provider of system metrics" + }, + "value": "None" + }, + "actionGroupName": { + "type": "string", + "metadata": { + "description": "The name of the action group for alert actions" + }, + "value": "None" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/oms-cloudfoundry-solution", + "metadata": { + "description": "The base URI where artifacts required by this template are located" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "variables": { + "nestedTemplates": { + "omsWorkspace": "[uri(concat(parameters('_artifactsLocation'), '/'), concat('nested/omsWorkspace.json', parameters('_artifactsLocationSasToken')))]", + "omsSavedSearches": "[uri(concat(parameters('_artifactsLocation'), '/'), concat('nested/omsSavedSearches.json', parameters('_artifactsLocationSasToken')))]", + "omsCustomViews": "[uri(concat(parameters('_artifactsLocation'), '/'), concat('nested/omsCustomViews.json', parameters('_artifactsLocationSasToken')))]", + "omsAlerts": "[uri(concat(parameters('_artifactsLocation'), '/'), concat('nested/omsAlerts.json', parameters('_artifactsLocationSasToken')))]" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "omsWorkspace", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsWorkspace", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsWorkspaceName": { + "value": "[concat('log-analytics-workspace-', uniqueString(resourceGroup().id))]" + }, + "omsWorkspaceRegion": { + "value": "West Europe" + }, + "omsWorkspaceSku": { + "value": "pernode" + }, + "azureMonitorPricingModel": { + "value": "Pre April 2018" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "omsSavedSearches", + "dependsOn": [ + "Microsoft.Resources/deployments/omsWorkspace" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsSavedSearches", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsWorkspaceName": { + "value": "[concat('log-analytics-workspace-', uniqueString(resourceGroup().id))]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "omsCustomViews", + "dependsOn": [ + "Microsoft.Resources/deployments/omsWorkspace" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsCustomViews", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsWorkspaceName": { + "value": "[concat('log-analytics-workspace-', uniqueString(resourceGroup().id))]" + }, + "omsWorkspaceRegion": { + "value": "West Europe" + }, + "systemMetricsProvider": { + "value": "None" + }, + "cloudFoundryVersion": { + "value": "2.0+" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2016-02-01", + "name": "omsAlerts", + "dependsOn": [ + "Microsoft.Resources/deployments/omsWorkspace" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(nestedTemplates).omsAlerts", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "omsWorkspaceName": { + "value": "[concat('log-analytics-workspace-', uniqueString(resourceGroup().id))]" + }, + "actionGroupName": { + "value": "None" + } + } + } + } + ], + "outputs": { + "omsPortal": { + "type": "string", + "value": "[concat('https://', parameters('omsWorkspaceName'), '.portal.mms.microsoft.com')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT768 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT768 new file mode 100644 index 0000000..9310ed6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT768 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-existing-storage-account/prereqs/prereq.azuredeploy.json", + "/demos/oms-existing-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962900926, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-existing-storage-account/prereqs/prereq.azuredeploy.json", + "/demos/oms-existing-storage-account/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT768", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT768", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Select OMS region" + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "comments": "Storage account ", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + } + ], + "outputs": { + "storageaccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "storageaccountresourcegroupName": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT769 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT769 new file mode 100644 index 0000000..32aa469 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT769 @@ -0,0 +1,138 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-existing-storage-account/azuredeploy.json", + "/demos/oms-existing-storage-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962900934, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-existing-storage-account/azuredeploy.json", + "/demos/oms-existing-storage-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT769", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT769", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Specify name of your OMS workspace" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Select OMS region" + } + }, + "existingStorageAccountName": { + "type": "string", + "metadata": { + "description": "Specify the name of the existing storage account to add to OMS" + }, + "value": "GET-PREREQ-storageaccountName" + }, + "existingStorageAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "Resource group containing the storage account" + }, + "value": "GET-PREREQ-storageaccountresourcegroupName" + }, + "table": { + "type": "string", + "defaultValue": "WADServiceFabric*EventTable", + "allowedValues": [ + "WADWindowsEventLogsTable", + "WADServiceFabric*EventTable", + "wad-iis-logfiles", + "WADETWEventTable" + ], + "metadata": { + "description": "Select the table to add to OMS" + }, + "value": "WADServiceFabric*EventTable" + }, + "omsworkspaceName": { + "value": "GEN-UNIQUE" + } + }, + "variables": { + "solution": "ServiceFabric(, parameters(omsWorkspaceName), )", + "solutionName": "ServiceFabric" + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "name": "ServiceFabric(, parameters(omsWorkspaceName), )", + "type": "Microsoft.OperationsManagement/solutions", + "id": "Microsoft.OperationsManagement/solutions//ServiceFabric(, parameters(omsWorkspaceName), )", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsWorkspaceName" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//omsWorkspaceName" + }, + "plan": { + "name": "ServiceFabric(, parameters(omsWorkspaceName), )", + "publisher": "Microsoft", + "product": "[Concat('OMSGallery/', variables('solutionName'))]", + "promotionCode": "" + } + }, + { + "apiVersion": "2020-08-01", + "name": "omsWorkspaceName", + "location": "[resourceGroup().location]", + "type": "Microsoft.OperationalInsights/workspaces", + "properties": { + "sku": { + "name": "Free" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "existingstorageaccountNameomsWorkspaceName", + "type": "storageinsightconfigs", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//omsWorkspaceName" + ], + "properties": { + "tables": [ + "WADServiceFabric*EventTable" + ], + "storageAccount": { + "id": "GET-PREREQ-storageaccountresourcegroupName/Microsoft.Storage/storageaccounts//GET-PREREQ-storageaccountName", + "key": "[listKeys(resourceId(parameters('existingStorageAccountResourceGroupName'),'Microsoft.Storage/storageAccounts', parameters('existingStorageAccountName')),'2021-04-01').keys[0].value]" + } + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT77 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT77 new file mode 100644 index 0000000..03e546c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT77 @@ -0,0 +1,640 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeployGermany.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885496, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/azuredeployGermany.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT77", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT77", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin user name for the VMs" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the VMs (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "cmUsername": { + "type": "string", + "defaultValue": "cmadmin", + "metadata": { + "description": "User name for the Cloudera Manager" + } + }, + "cmPassword": { + "type": "securestring", + "metadata": { + "description": "password for the Cloudera Manager (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS name where the VMs will be exposed" + }, + "value": "GEN-UNIQUE-10" + }, + "masterStorageAccountType": { + "type": "string", + "defaultValue": "Premium_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for master nodes (defaults to Premium_LRS)" + }, + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for worker nodes (defaults to Standard_LRS)" + }, + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "clouderavnet", + "metadata": { + "description": "The name of the virtual network provisioned for the deployment" + }, + "value": "GEN-UNIQUE-10" + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Indicator for new or exiting Virtual Network" + } + }, + "virtualNetworkRGName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Resource Group Name for Vnet. For new VNet leave it empty, otherwise type in existing resource group name" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "clouderasubnet", + "metadata": { + "description": "Subnet name for the virtual network where resources will be provisioned" + }, + "value": "GEN-UNIQUE-10" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "Virtual Network address CIDR" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "CIDR for the subnet where VMs will be placed" + } + }, + "masterNodeIPAddress": { + "type": "string", + "defaultValue": "10.3.0.4", + "metadata": { + "description": "IP address for the first master" + } + }, + "dataNodeIPOffSetFromMaster": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "IP address from the master node, for example if the first master is 10.1.1.1, then the first dataNode would be 10.1.1.11" + } + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Eval", + "allowedValues": [ + "Eval", + "Prod" + ], + "metadata": { + "description": "T-shirt size of the Cloudera cluster (Eval, Prod)" + }, + "value": "Eval" + }, + "numberOfDataNodes": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of data nodes for Prod (defaults to 3)" + }, + "value": 3 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D16s_v3", + "metadata": { + "description": "The size of the VMs deployed in the cluster (defaults to Standard_DS14_V2)" + }, + "allowedValues": [ + "Standard_D16s_v3", + "Standard_D8s_v3" + ], + "value": "Standard_D16s_v3" + }, + "vmImage": { + "type": "string", + "defaultValue": "ClouderaCentOS6_7Germany", + "metadata": { + "description": "The OS VM Image (defaults to ClouderaCentOS6_7Germany)" + }, + "allowedValues": [ + "ClouderaCentOS6_7Germany" + ], + "value": "ClouderaCentOS6_7" + }, + "company": { + "type": "string", + "defaultValue": "Company", + "metadata": { + "description": "Your Company" + }, + "value": "company" + }, + "emailAddress": { + "type": "string", + "defaultValue": "email@yourcompany.com", + "metadata": { + "description": "your email" + }, + "value": "email@yourcompany.com" + }, + "businessPhone": { + "type": "string", + "defaultValue": "123456789", + "metadata": { + "description": "your business phone number" + }, + "value": "123456789" + }, + "firstName": { + "type": "string", + "defaultValue": "FirstName", + "metadata": { + "description": "Your FirstName" + }, + "value": "FirstName" + }, + "lastName": { + "type": "string", + "defaultValue": "LastName", + "metadata": { + "description": "Your LastName" + }, + "value": "LastName" + }, + "jobRole": { + "type": "string", + "defaultValue": "Administrator", + "metadata": { + "description": "Job Role" + }, + "allowedValues": [ + "Administrator", + "Analyst (Industry/Finance)", + "Analyst (Technical)", + "Architect", + "C level", + "Consultant", + "Developer", + "Director", + "Engineer", + "Individual contributor", + "Manager", + "Partner", + "Student", + "VP" + ], + "value": "Administrator" + }, + "jobFunction": { + "type": "string", + "defaultValue": "Analytics / Business Intelligence", + "metadata": { + "description": "Job Function" + }, + "allowedValues": [ + "Analytics / Business Intelligence", + "Big Data / Architecture", + "Data Warehouse / Management", + "Data Science", + "Database", + "ETL / ELT", + "Infrastructure", + "IT", + "Marketing / Sales", + "Networking", + "Manager", + "Security / Compliance", + "Storage" + ], + "value": "Storage" + } + }, + "variables": { + "templateAPIVersion": "2015-11-01", + "resourceAPIVersion": "2015-06-15", + "installCDH": "True", + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "scriptsUriDescription": "For Command Line Deployment, scriptsUri must point to an Azure-accessible location like: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos", + "scriptsUri": "[uri(deployment().properties.templateLink.uri, '.')]", + "share-resourcesUri": "[uri(deployment().properties.templateLink.uri, '.')]/shared-resources-new-vnet.json", + "data-nodeUri": "[concat(variables('scriptsUri'), '/data-node-', toLower(subString(parameters('vmSize'), 0, 13)), '.json')]", + "sa": "10.3.0.4", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterStorageAccount": { + "type": "Premium_LRS" + }, + "workerStorageAccount": { + "type": "Standard_LRS" + }, + "clusterTshirtSizeEval": { + "masterNodeCount": 1, + "dataNodeCount": 3, + "highAvailability": "false" + }, + "clusterTshirtSizeProd": { + "masterNodeCount": 3, + "dataNodeCount": 3, + "highAvailability": "true" + }, + "clusterSpec": "concat(clusterTshirtSize, parameters(tshirtSize))", + "vmImageInfo": { + "ClouderaCentOS6_7": { + "plan": { + "name": "cloudera-centos-6", + "publisher": "cloudera", + "product": "cloudera-centos-6" + }, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-6", + "sku": "cloudera-centos-6", + "version": "latest" + } + }, + "ClouderaCentOS6_8": { + "plan": { + "name": "6_8", + "publisher": "cloudera", + "product": "cloudera-centos-os" + }, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-os", + "sku": "6_8", + "version": "latest" + } + }, + "ClouderaCentOS6_7Germany": { + "plan": null, + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-os", + "sku": "6_7", + "version": "latest" + } + } + }, + "vmSpec": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + }, + "networkSpec": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + }, + "newVNetId": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10", + "existingVNetId": "parameters('virtualNetworkRGName')/Microsoft.Network/virtualNetworks/GEN-UNIQUE-10", + "VNetId": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/shared-resources-new-vnet.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "masterNodeASName": { + "value": "(vmSpec).masterNodeASName" + }, + "dataNodeASName": { + "value": "(vmSpec).dataNodeASName" + } + } + } + }, + { + "name": "master-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/master-node.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "storageAccount": { + "value": { + "type": "Premium_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).masterNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + } + } + } + }, + { + "name": "data-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('data-nodeUri')]", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "templateAPIVersion": { + "value": "2015-11-01" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "storageAccount": { + "value": { + "type": "Standard_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).dataNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + } + } + } + }, + { + "name": "setup-cloudera", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/data-node", + "Microsoft.Resources/deployments/master-node" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '.')]/setup-cloudera.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "[uri(deployment().properties.templateLink.uri, '.')]" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "imageInfo": "(vmImageInfo)[parameters(vmImage)]", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "fqdn": { + "value": "[reference('master-node').outputs.fqdn.value]" + }, + "cmUsername": { + "value": "cmadmin" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "company": { + "value": "Company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + }, + "installCDH": { + "value": "True" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT770 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT770 new file mode 100644 index 0000000..7e74cf2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT770 @@ -0,0 +1,71 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-extension-ubuntu-vm/prereqs/prereq.azuredeploy.json", + "/demos/oms-extension-ubuntu-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962900942, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-extension-ubuntu-vm/prereqs/prereq.azuredeploy.json", + "/demos/oms-extension-ubuntu-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT770", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT770", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspacename": { + "type": "string", + "metadata": { + "description": "OMS Workspace name" + }, + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "properties": { + "retentionInDays": 30, + "publicNetworkAccessForIngestion": "Enabled", + "publicNetworkAccessForQuery": "Enabled" + } + } + ], + "outputs": { + "workSpaceName": { + "type": "string", + "value": "[parameters('omsWorkspacename')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT771 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT771 new file mode 100644 index 0000000..6a309db --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT771 @@ -0,0 +1,304 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-extension-ubuntu-vm/azuredeploy.json", + "/demos/oms-extension-ubuntu-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962900954, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-extension-ubuntu-vm/azuredeploy.json", + "/demos/oms-extension-ubuntu-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT771", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT771", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "workspace id." + }, + "value": "GET-PREREQ-workSpaceName" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-13" + }, + "ubuntuOSVersion": { + "type": "string", + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + }, + "value": "18.04-LTS" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the VM." + }, + "value": "Standard_D2s_v3" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "nsgName": { + "type": "string", + "metadata": { + "description": "The name of the NSG." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "nsgName": "GEN-UNIQUE", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyUbuntuVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowInternet", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyUbuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "MyUbuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyUbuntuVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[concat('http://', variables('storageAccountName'), '.blob.', environment().suffixes.storage)]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyUbuntuVM/OMSExtension", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/MyUbuntuVM" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')), '2020-08-01').customerId]" + }, + "protectedSettings": { + "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')), '2020-08-01').primarySharedKey]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT772 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT772 new file mode 100644 index 0000000..2c78444 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT772 @@ -0,0 +1,71 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-extension-windows-vm/prereqs/prereq.azuredeploy.json", + "/demos/oms-extension-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962900965, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-extension-windows-vm/prereqs/prereq.azuredeploy.json", + "/demos/oms-extension-windows-vm/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT772", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT772", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspacename": { + "type": "string", + "metadata": { + "description": "OMS Workspace name" + }, + "value": "GEN-UNIQUE-16" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "name": "GEN-UNIQUE-16", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "properties": { + "retentionInDays": 30, + "publicNetworkAccessForIngestion": "Disabled", + "publicNetworkAccessForQuery": "Disabled" + } + } + ], + "outputs": { + "workSpaceName": { + "type": "string", + "value": "[parameters('omsWorkspacename')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT773 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT773 new file mode 100644 index 0000000..bca4932 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT773 @@ -0,0 +1,252 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-extension-windows-vm/azuredeploy.json", + "/demos/oms-extension-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962900975, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-extension-windows-vm/azuredeploy.json", + "/demos/oms-extension-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT773", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT773", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "The size of the VM." + }, + "value": "Standard_D2s_v3" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "DNS Label for the Public IP. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE-13" + }, + "workspaceName": { + "type": "string", + "metadata": { + "description": "Log Analytics workspace name" + }, + "value": "GET-PREREQ-workSpaceName" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "Windows-Server-Technical-Preview" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter, Windows-Server-Technical-Preview." + }, + "value": "2012-R2-Datacenter" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]", + "apiVersion": "2015-06-15", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_GRS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_GRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "MyVM", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "MyVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[concat('http://', variables('storageAccountName'), '.blob.', environment().suffixes.storage)]" + } + } + }, + "resources": [ + { + "type": "extensions", + "name": "Microsoft.EnterpriseCloud.Monitoring", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/MyVM" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "MicrosoftMonitoringAgent", + "typeHandlerVersion": "1.0", + "autoUpgradeMinorVersion": true, + "settings": { + "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')), '2020-08-01').customerId]" + }, + "protectedSettings": { + "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')), '2020-08-01').primarySharedKey]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT774 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT774 new file mode 100644 index 0000000..588927c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT774 @@ -0,0 +1,642 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-hyperv-replica-solution/azuredeploy.json", + "/demos/oms-hyperv-replica-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962900983, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-hyperv-replica-solution/azuredeploy.json", + "/demos/oms-hyperv-replica-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT774", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT774", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.1.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "The name of your OMS Log Analytics workspace." + }, + "value": "GEN-UNIQUE-20" + }, + "workspaceRegion": { + "type": "string", + "metadata": { + "description": "The region of your OMS Log Analytics workspace." + }, + "value": "eastus" + }, + "automationAccountName": { + "type": "string", + "metadata": { + "description": "The name of the Automation account to use. If this account exists, check the pricing tier and tags to make sure they match the exisitng account." + }, + "value": "GEN-UNIQUE-20" + }, + "automationRegion": { + "type": "string", + "metadata": { + "description": "The region the Automaiton account is located in." + }, + "value": "eastus" + }, + "automationPricingTier": { + "type": "string", + "allowedValues": [ + "Free", + "Basic" + ], + "metadata": { + "description": "The pricing tier for the Automation account." + }, + "defaultValue": "Free" + }, + "onPremisesRunAsUserName": { + "type": "string", + "metadata": { + "description": "The username for the Account That Has Access To The On-Premises servers." + }, + "value": "GEN-UNIQUE-20" + }, + "onPremisesRunAsPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Account That Has Access To The On-Premises servers." + }, + "value": "GEN-UNIQUE-20" + }, + "workSpaceID": { + "type": "string", + "metadata": { + "description": "The Work Space ID for your OMS workspace." + }, + "value": "GEN-UNIQUE-20" + }, + "workSpacePrimaryKey": { + "type": "securestring", + "metadata": { + "description": "The Work Space Primary Key for your OMS workspace." + }, + "value": "GEN-UNIQUE-20" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation." + }, + "defaultValue": "" + } + }, + "variables": { + "automation": { + "Asset": { + "omsHypervReplicaRunNumber": { + "name": "omsHypervReplicaRunNumber", + "type": "int", + "value": "1", + "description": "This variable keeps track of the Hyper-V run number." + }, + "omsHypervReplicaRunAsAccount": { + "name": "omsHypervReplicaRunAsAccount", + "description": "This runbook publishes Hyper-V replica statistics to OMS." + } + }, + "runbook": { + "publishOmsHyperVReplica": { + "name": "Publish-omsHyperVReplica", + "type": "Script", + "description": "This runbook publishes Hyper-V replica statistics to OMS." + } + }, + "module": { + "OMSDataInjection": { + "name": "OMSDataInjection", + "description": "This runbook publishes Hyper-V replica statistics to OMS." + } + }, + "connection": { + "OMSDataInjection": { + "name": "omsHypervReplicaOMSConnection", + "description": "This connection stores the details for the Hybrid Runbook workers to inject the data into OMS.", + "type": "OMSWorkSpace" + } + } + }, + "solution": { + "Name": "[concat('hypervReplica', ' [' ,parameters('workspaceName'), ']')]", + "DisplayName": "Hyper-V Replica Monitoring", + "Version": "1.0.0.0", + "Publisher": "bentaylor.work", + "Product": "bentaylorworkHypervReplica", + "PromotionCode": "", + "Description": "Hyper-V Replication Monitoring Through OMS", + "Author": "ben@bentaylor.work" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-20", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "eastus", + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(solution).Name", + "type": "views", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE-20" + ], + "properties": { + "Name": "(solution).Name", + "Author": "(solution).Author", + "DisplayName": "(solution).DisplayName", + "Description": "(solution).Description", + "Source": "Local", + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Current Hyper-V Replica Results By Status", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Number At Each Status" + }, + "Donut": { + "Query": "Type=hyperVReplica_CL runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 } | measure count() by state_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "Type=hyperVReplica_CL runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 } | measure count() by state_s", + "HideGraph": true, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Replica Status", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "5", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "10", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Current Failed Hyper-V Replicas By Computer", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=hyperVReplica_CL NOT(state_s:\"Replicating\") runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 }", + "Legend": "Number Of VMs With Broken Replication" + }, + "List": { + "Query": "Type=hyperVReplica_CL NOT(state_s:\"Replicating\") runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 } | Measure count() by primaryServer_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count Of Broken Replicas" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "0", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "2", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Hyper-V Replica - Replication Size", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Average Replica Size" + }, + "LineChart": { + "Query": "Type=hyperVReplica_CL | EXTEND div(AverageReplicationSize_d,1048576 ) AS AverageReplicationSize_MB | measure avg(AverageReplicationSize_MB) Interval 1HOUR", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "Type=hyperVReplica_CL state_s:\"Replicating\" | EXTEND div(AverageReplicationSize_d,1048576 ) AS AverageReplicationSize_MB | measure avg(AverageReplicationSize_MB) by name_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "VM Name", + "Value": "AVG Replica Size" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "30", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "50", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Computers Actively Being Monitored", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=hyperVReplica_CL runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 } | Dedup primaryServer_s | Select primaryServer_s" + }, + "List": { + "Query": "Type=hyperVReplica_CL runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 } | Dedup primaryServer_s | Select primaryServer_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "Computer" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "List of queries", + "newGroup": false, + "preselectedFilters": "Type, Computer", + "renderMode": "grid" + }, + "queries": [ + { + "query": "Type=hyperVReplica_CL runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 } | measure count() by state_s", + "displayName": "Number At Each Status" + }, + { + "query": "Type=hyperVReplica_CL runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 }", + "displayName": "Latest Hyper-V Replica Information" + }, + { + "query": "Type=hyperVReplica_CL", + "displayName": "All Hyper-V Replica Data" + }, + { + "query": "Type=hyperVReplica_CL NOT(state_s:\"Replicating\") runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 } | Measure count() by primaryServer_s", + "displayName": "Current Broken Replicas By Server" + }, + { + "query": "Type=hyperVReplica_CL state_s=\"Replicating\" runNumber_d IN { Type=hyperVReplica_CL | measure max(runNumber_d) by runNumber_d | sort runNumber_d DESC | top 1 } | Measure count() by primaryServer_s", + "displayName": "Current Successful Replicas By Server" + }, + { + "query": "Type=hyperVReplica_CL LastReplicationTime_t NOW-8MINUTES | dedup name_s | measure count() by status_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum", + "ArcsToSelect": [] + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ], + "valueColorMapping": [] + } + }, + "List": { + "Query": "Type:KempStatus_CL (servertype_s=vs OR servertype_s=subvs) enabled_s=\"Y\" status_s!=\"Up\" status_s!='Redirect' | select name_s, status_s | dedup name_s", + "HideGraph": false, + "enableSparklines": false, + "ColumnsTitle": { + "Name": "VS not Up", + "Value": "" + }, + "Color": "#0072c6", + "operation": "Summary", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#ba141a", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item} Type:KempStatus_CL (servertype_s=vs OR servertype_s=subvs) enabled_s=\"Y\"" + } + } + } + ], + "OverviewTile": { + "Id": "DoubleNumberBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "TileOne": { + "Legend": "Kemp Devices", + "Query": "Type:KempDevice_CL | measure countdistinct(Computer) by Computer" + }, + "TileTwo": { + "Legend": "Virtual Servers", + "Query": "Type:KempStatus_CL | measure countdistinct(name_s) by name_s" + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": true, + "Query": "Type:KempDevice_CL", + "Message": "The solution needs to be configured for data to be gathered" + } + } + } + } + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "(omsSolutions).customSolution.solutionName", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName", + "savedsearchcopy", + "schedulescopy", + "savedsearchcopyMetric", + "schedulescopyMetric", + "actioncopy", + "actioncopyMetric" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "", + "product": "(omsSolutions).customSolution.product", + "Version": "(omsSolutions).customSolution.version" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "referencedResources": [], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-20/(omsSolutions).customSolution.viewName" + ] + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName" + ], + "properties": { + "etag": "*", + "query": "(alertArray)[copyIndex()].query", + "displayName": "(alertArray)[copyIndex()].searchName", + "category": "(alertArray)[copyIndex()].searchCategory", + "version": "(alertArray)[copyIndex()].version" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory", + "version": "(alertMetricArray)[copyIndex()].version" + } + }, + { + "apiVersion": "2015-11-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches", + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName))]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName" + ], + "properties": { + "etag": "*", + "query": "(alertMetricArray)[copyIndex()].query", + "displayName": "(alertMetricArray)[copyIndex()].searchName", + "category": "(alertMetricArray)[copyIndex()].searchCategory", + "version": "(alertMetricArray)[copyIndex()].version" + } + }, + { + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName", + "savedsearchcopy" + ], + "properties": { + "etag": "*", + "Interval": "(alertArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": "(alertArray)[copyIndex()].enabled", + "NearRealTime": "(alertArray)[copyIndex()].nearRealTime" + } + }, + { + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName", + "savedsearchcopyMetric" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": "(alertMetricArray)[copyIndex()].enabled", + "NearRealTime": "(alertMetricArray)[copyIndex()].nearRealTime" + } + }, + { + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName", + "savedsearchcopyMetric" + ], + "properties": { + "etag": "*", + "Interval": "(alertMetricArray)[copyIndex()].scheduleIntervalInMinutes", + "QueryTimeSpan": "(alertMetricArray)[copyIndex()].scheduleQueryTimeSpan", + "enabled": "(alertMetricArray)[copyIndex()].enabled", + "NearRealTime": "(alertMetricArray)[copyIndex()].nearRealTime" + } + }, + { + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertArray')[copyIndex()].searchCategory), '|', toLower(variables('alertArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertArray')[copyIndex()].searchCategory, '|', variables('alertArray')[copyIndex()].searchName))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName", + "savedsearchcopy", + "schedulescopy" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertArray)[copyIndex()].alertName", + "Description": "(alertArray)[copyIndex()].description", + "Severity": "(alertArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertArray)[copyIndex()].operator", + "Value": "(alertArray)[copyIndex()].alertTresholdValue" + }, + "ScheduleType": "(alertArray)[copyIndex()].scheduleType", + "ScheduleTypeSpecified": "(alertArray)[copyIndex()].scheduleTypeSpecified", + "Version": "(alertArray)[copyIndex()].version" + } + }, + { + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2015-11-01-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName", + "savedsearchcopyMetric", + "schedulescopyMetric" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "(alertMetricArray)[copyIndex()].triggerCondition", + "Operator": "(alertMetricArray)[copyIndex()].triggerOperator", + "Value": "(alertMetricArray)[copyIndex()].triggerValue" + } + }, + "ScheduleType": "(alertMetricArray)[copyIndex()].scheduleType", + "ScheduleTypeSpecified": "(alertMetricArray)[copyIndex()].scheduleTypeSpecified", + "Version": "(alertMetricArray)[copyIndex()].version" + } + }, + { + "name": "[concat(parameters('omsLogAnalyticsWorkspaceName'), '/', tolower(variables('alertMetricArray')[copyIndex()].searchCategory), '|', toLower(variables('alertMetricArray')[copyIndex()].searchName), '/','schedule-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName), '/', 'alert-',uniqueString(resourceGroup().id, deployment().name,parameters('omsLogAnalyticsWorkspaceName'), '/', variables('alertMetricArray')[copyIndex()].searchCategory, '|', variables('alertMetricArray')[copyIndex()].searchName))]", + "type": "Microsoft.OperationalInsights/workspaces/savedSearches/schedules/actions", + "apiVersion": "2015-11-01-preview", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-20", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-20/(omsSolutions).customSolution.viewName", + "savedsearchcopyMetric", + "schedulescopyMetric" + ], + "properties": { + "etag": "*", + "Type": "Alert", + "Name": "(alertMetricArray)[copyIndex()].alertName", + "Description": "(alertMetricArray)[copyIndex()].description", + "Severity": "(alertMetricArray)[copyIndex()].severity", + "Throttling": { + "DurationInMinutes": "(alertMetricArray)[copyIndex()].alertThrottleInMinutes" + }, + "Threshold": { + "Operator": "(alertMetricArray)[copyIndex()].operator", + "Value": "(alertMetricArray)[copyIndex()].alertTresholdValue", + "MetricsTrigger": { + "TriggerCondition": "(alertMetricArray)[copyIndex()].triggerCondition", + "Operator": "(alertMetricArray)[copyIndex()].triggerOperator", + "Value": "(alertMetricArray)[copyIndex()].triggerValue" + } + }, + "ScheduleType": "(alertMetricArray)[copyIndex()].scheduleType", + "ScheduleTypeSpecified": "(alertMetricArray)[copyIndex()].scheduleTypeSpecified", + "Version": "(alertMetricArray)[copyIndex()].version" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT777 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT777 new file mode 100644 index 0000000..45d6c30 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT777 @@ -0,0 +1,1477 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-scomacs-solution/azuredeploy.json", + "/demos/oms-scomacs-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962901011, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-scomacs-solution/azuredeploy.json", + "/demos/oms-scomacs-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT777", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT777", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "A valid log analytics workspace name (solution will be added) or provide a name for the new workspace." + }, + "value": "GEN-UNIQUE-10" + }, + "workspaceRegionId": { + "type": "string", + "metadata": { + "description": "Region of the Log Analytics workspace" + }, + "value": "eastus" + }, + "pricingTier": { + "type": "string", + "defaultValue": "Standalone", + "allowedValues": [ + "Free", + "Standalone", + "PerNode" + ], + "metadata": { + "description": "Service Tier: Free, Standalone, or PerNode" + } + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "SCOM ACS Dashboards", + "solutionName": "[concat('SCOMACSDashboards', '[', parameters('workspaceName'), ']')]", + "publisher": "Adin.Ermie@outlook.com", + "displayName": "SCOM ACS Dashboards", + "description": "This is a pre-built solution for Microsoft OMS (www.microsoft.com/oms).This solution was built from following Wei Ho Lim's 2 articles. This solution requires the OMS Security and Audit solution to be enabled first, as it leverages this collected data.", + "author": "Adin.Ermie@outlook.com" + } + }, + "SecurityAndAuditSolution": { + "Name": "[Concat('Security', '(', parameters('workspaceName'), ')')]", + "GalleryName": "Security" + } + }, + "resources": [ + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "eastus", + "properties": { + "sku": { + "name": "Standalone" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "name": "(SecurityAndAuditSolution).Name", + "type": "Microsoft.OperationsManagement/solutions", + "id": "Microsoft.OperationsManagement/solutions/(SecurityAndAuditSolution).Name", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + }, + "plan": { + "name": "(SecurityAndAuditSolution).Name", + "publisher": "Microsoft", + "product": "[Concat('OMSGallery/', variables('SecurityAndAuditSolution').GalleryName)]", + "promotionCode": "" + } + }, + { + "apiVersion": "2020-08-01", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "DisplayName": "(omsSolutions).customSolution.displayName", + "Description": "(omsSolutions).customSolution.description", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAztJREFUeNrUmktoE1EUhqexKj4zJWoaqIpVaVGxKr6ogsaNbhS0YKkKFeKmriwFEaXYnY+FYjeCbmtRRBeuXIlLMe1CXGlduBOt0rS1FaF2/A+ciWMy0yT3njvN/PBtMuHc8899zJ1zp8ZxHEtAKXAE7AdNYBOwGVKO+QQ+gDfgFfii23CNhoHV4CyzWzHGEBgEA2BUKQIZqJAG0A+mHTn9AvfB2krzqeTPi8AVMOWYE92UPrBY2kAzeOeEp/fcZsncYmWMsjaQBdut8LSN22zTnQMXwYwzf5rhHJSGUJdTPeoKyjNoGT0JnoIFCt1/GXwOuNYIbirE/APawbNyhlATmNS4W4fm6NW0Rlxa/baWmsQLwROwXGMC2orXSmkpeMw55lVooAe0aK4gcUMG3NWpJ8hAA+gVWAJtRXPlqpdzLTJwlbvJpAFbID7leK3QwCpwXughFDdsgNTJOecN0A9LhIKbHkIW59rpNdAhuA2wQ+gB0hnXQBLsiqCBnaCeDKTpxUYwcDwkA5TzYTLQKryTDGMOuDoQ44eDFcEhRNpCBtYJB42HaGC9O4klVRuwl1opPNdIa2KaG7dK7nSdgXZWxCwzskOYwPmtxISBuPEQxj9pnAx8NRC4LiQDo2RgJMI98DHGtUpppbgXvNSbMEAv9af5NTKKaicDtK/+ZmCNNi0qpyRpCH3nKnHUNOROYtIj4eDTXP9JMzfAlHAbg966UEKwXE71m70+NSH67bdgFTvhrQv9AA+E7sw98Nbnd/rtjlAbDznn/ypzKc2KnKuDc1TmWgXiT3KuRZU5Oq+6LrQ6BGlWIH6f5TlbK9zM9YNhzQaOKV4rR8M8RD23q7ibG0FOo4snwA6fuC18TVWU08Zyy+snwHNLrbxu8ZJ5F7zkIXUUdNP+XTEelddPgRfFAzZ4wmXAbBUcblAOF1QP+TJVcMSU0T2lPA7G5iH5HLctcsy6AWRDTD7LbYoedNeCS2DcYOK0SnVzW+In9S5JcEtzSfRL/DbHrigfnY896C2LPvQ4B/b4PBRLiZ7KdJg9wLvhMaUCqdDnNgkqtIJ9oBlspqITWMYvSj/5pWnE+ve5zev8hkxDfwUYAP0NkvYTPlJVAAAAAElFTkSuQmCC", + "Label": "Mapping ACS Reports to OMS Search Queries", + "Link": { + "Label": "More info", + "Url": "https://blogs.msdn.microsoft.com/wei_out_there_with_system_center/2016/07/25/mapping-acs-reports-to-oms-search-queries/" + } + }, + "List": [ + { + "Title": "Summary", + "Content": "This post features a table that shows the mapping between Audit Collection Services (ACS) SSRS reports and search queries used in OMS Log Analytics. \n\nMost of the OMS search queries listed in this post are used to drive the views in this ACS Dashboard in OMS Log Analytics." + } + ] + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Forensic", + "newGroup": false, + "preselectedFilters": "Type, Computer", + "renderMode": "grid" + }, + "queries": [ + { + "query": "Type=SecurityEvent Computer=\"<>\"", + "displayName": "All Events For Specified Computer" + }, + { + "query": "All Events For Specified Computer grouped by Activity", + "displayName": "All Events For Specified Computer grouped by Activity" + }, + { + "query": "Type=SecurityEvent Account=\"<>\"", + "displayName": "All Events For Specified User" + }, + { + "query": "Type=SecurityEvent Account=\"<>\" | measure count() by Activity", + "displayName": "All Events For Specified User grouped by Activity" + }, + { + "query": "Type=SecurityEvent Account=\"<>\" | measure count() by Activity", + "displayName": "All Events With Specified Event ID" + }, + { + "query": "Type=SecurityEvent EventID=\"<>\" | measure count() by Computer", + "displayName": "All Events With Specified Event ID grouped by Computer" + }, + { + "query": "Type=SecurityEvent EventID=\"<>\" | measure count() by Account", + "displayName": "All Events With Specified Event ID grouped by Account" + } + ] + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "PLANNING: Event Counts and Hourly Distribution", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Hourly Event Distribution" + }, + "LineChart": { + "Query": "Type=SecurityEvent EventID!=0 | measure count() AS Count by TimeGenerated Interval 1Hour", + "Callout": { + "Title": "Avg per hour", + "Operation": "Average" + }, + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "Type=SecurityEvent EventID!=0 | measure count() AS Count by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID!=0 | measure count() AS Count by Computer" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Planning: Logon Counts of Privilege Users", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\"", + "Legend": "Logon Counts" + }, + "List": { + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\" | Measure Count() by SubjectAccount", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "User Account", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\" | Select SubjectAccount, PrivilegeList" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "System Integrity Check", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Audit Failure", + "Query": "Type=SecurityEvent EventID=516 OR EventID=4612 | Select TimeGenerated, Activity, Computer" + }, + "SecondTile": { + "Legend": "Audit Log Cleared", + "Query": "Type=SecurityEvent EventID=517 OR EventID=1102 | Select TimeGenerated, Activity, Computer" + }, + "List": { + "Query": "Type=SecurityEvent EventID=517 OR EventID=1102 | measure count() AS EventPerHour interval 1Hour", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Date Audit Log Cleared", + "Value": "Count (Hourly Interval)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=517 OR EventID=516 OR EventID=1102 OR EventID=4612 | Select TimeGenerated, Activity, Computer" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Access Violation Related Activities", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Account Locked", + "Query": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279" + }, + "SecondTile": { + "Legend": "Unsuccessful Logon Attempts", + "Query": "Type=SecurityEvent EventID:[529..537] OR EventID=539 OR (EventID=4625 AND Status=0xc000006d) | Select TargetAccount, IpAddress, Computer, LogonProcessName, AuthenticationPackageName, LogonTypeName" + }, + "List": { + "Query": "Type=SecurityEvent EventID:[529..537] OR EventID=539 OR (EventID=4625 AND Status=0xc000006d) | measure count() by TargetAccount", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Account Failed to Logon", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=624 OR EventID=4720 OR EventID=630 OR EventID=4726 | Select TimeGenerated, TargetAccount, Activity, Computer" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Account Management: User Accounts Created Or Deleted", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "User Accounts Created", + "Query": "Type=SecurityEvent (EventID=624 OR EventID=4720) | EXTEND SubjectAccount AS CreatedBy | Select TimeGenerated, TargetAccount, CreatedBy, Computer" + }, + "SecondTile": { + "Legend": "User Accounts Deleted", + "Query": "Type=SecurityEvent (EventID=630 OR EventID=4726) | EXTEND SubjectAccount AS DeletedBy | Select TimeGenerated, TargetAccount, DeletedBy, Computer" + }, + "List": { + "Query": "Type=SecurityEvent EventID=624 OR EventID=4720 OR EventID=630 OR EventID=4726 | Measure Count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Account Management: Domain and Built-in Administrators Membership Changes", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Member Added", + "Query": "Type=SecurityEvent EventID=4728 OR EventID=4732 OR EventID=4756 OR EventID=632 OR EventID=636 OR EventID=660 AND (\"*512\" OR \"S-1-5-32-544\") | Extend \"Add Member\" AS Action | Select Action, TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer" + }, + "SecondTile": { + "Legend": "Member Removed", + "Query": "Type=SecurityEvent EventID=4729 OR EventID=4733 OR EventID=4757 OR EventID=633 OR EventID=637 OR EventID=661 AND (\"*512\" OR \"S-1-5-32-544\") Extend \"Remove Member\" AS Action | Select Action, TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer" + }, + "List": { + "Query": "Type=SecurityEvent EventID:[4728..4729] OR EventID:[4732..4733] OR EventID:[4756..4757] OR EventID:[632..633] OR EventID:[636..637] OR EventID:[660..661] AND (\"*512\" OR \"S-1-5-32-544\") | measure Count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID:[4728..4729] OR EventID:[4732..4733] OR EventID:[4756..4757] OR EventID:[632..633] OR EventID:[636..637] OR EventID:[660..661] AND (\"*512\" OR \"S-1-5-32-544\") | Select TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Account Management: Password Change Attempts by Non-Owner", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" TargetAccount NOT IN {Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" | measure count() by SubjectAccount}", + "Legend": "Password Change Attempts" + }, + "List": { + "Query": "Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" TargetAccount NOT IN {Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" | measure count() by SubjectAccount} | Measure Count() by SubjectAccount", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Changed By", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" TargetAccount NOT IN {Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" | measure count() by SubjectAccount} | EXTEND SubjectAccount AS ChangedBy | Select TimeGenerated, Computer, TargetAccount, ChangedBy" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Policy: Account and Audit Policy Changed", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Account Policy Changed", + "Query": "Type=SecurityEvent EventID=643 OR EventID=4739 | Select Computer, Activity, TimeGenerated, EventData" + }, + "SecondTile": { + "Legend": "Audit Policy Changed", + "Query": "Type=SecurityEvent EventID=612 OR EventID=4719 | Select Computer, Activity, TimeGenerated, EventData" + }, + "List": { + "Query": "Type=SecurityEvent EventID=612 OR EventID=643 OR EventID=4719 OR EventID=4739 | measure count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=612 OR EventID=643 OR EventID=4719 OR EventID=4739 | Select Computer, Activity, TimeGenerated, EventData" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Policy: Object Permissions Changed", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID=4670 | Select TimeGenerated, Activity, Computer, EventData", + "Legend": "Object Permissions Changed" + }, + "List": { + "Query": "Type=SecurityEvent EventID=4670 | measure count() by Computer", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=4670 | Select TimeGenerated, Activity, Computer, EventData" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Policy: Privilege Added Or Removed", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] | Select TimeGenerated, Activity, Computer, EventData", + "Legend": "Privilege Added Or Removed" + }, + "List": { + "Query": "Type=SecurityEvent EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] | measure count() by Computer", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] | Select TimeGenerated, Activity, Computer, EventData" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Usage: User and Privileged Logons", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "User Logon", + "Query": "Type=SecurityEvent EventID=528 OR EventID=540 OR EventID=4624 | Select TimeGenerated, Activity, Computer, IpAddress, AuthenticationPackageName, LogonProcessName, LogonTypeName, TargetAccount" + }, + "SecondTile": { + "Legend": "Privileged Logon", + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 | Select TimeGenerated, Activity, Computer, SubjectAccount, PrivilegeList" + }, + "List": { + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 OR EventID=528 OR EventID=540 OR EventID=4624 | measure count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=576 OR EventID=4672 OR EventID=528 OR EventID=540 OR EventID=4624" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Usage: Sensitive Security Groups Changes", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] | EXTEND TargetUserName As GroupName | Select Activity, GroupName, SubjectAccount, MemberName, TimeGenerated", + "Legend": "Sensitive Security Groups Changes" + }, + "List": { + "Query": "Type=SecurityEvent EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] | measure count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] | EXTEND TargetUserName As GroupName | Select Activity, GroupName, SubjectAccount, MemberName, TimeGenerated" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Usage: Object Access", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 | Select Computer, Activity, TimeGenerated, EventData", + "Legend": "All Object Access Related Audit Event" + }, + "List": { + "Query": "Type=SecurityEvent EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 | measure count() AS EventPerHour interval 1Hour | sort TimeGenerated desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Date Event Logged", + "Value": "Count (Hourly Interval)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 | Select Computer, Activity, TimeGenerated, EventData" + } + } + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "Trend1": { + "Legend": "ALL SEC EVENTS", + "LegendColor": "#00188f", + "ChartQuery": "Type=SecurityEvent EventID!=0", + "Calculation": { + "Operation": "Sum" + } + }, + "Trend2": { + "Legend": "ACS SEC EVENTS", + "LegendColor": "#0072c6", + "ChartQuery": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279 OR EventID:[529..537] OR EventID=539 OR EventID=4625 OR EventID=4728 OR EventID=4732 OR EventID=4756 OR EventID=632 OR EventID=636 OR EventID=660 OR EventID=4729 OR EventID=4733 OR EventID=4757 OR EventID=633 OR EventID=637 OR EventID=661 OR EventID=4723 OR EventID=4724 OR EventID:[627..628] OR EventID=624 OR EventID=630 OR EventID=4726 OR EventID=4720 OR EventID=576 OR EventID=4672 OR EventID=643 OR EventID=4739 OR EventID=612 OR EventID=4719 OR EventID=4670 OR EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] OR EventID=516 OR EventID=4612 OR EventID=517 OR EventID=1102 OR EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 OR EventID=576 OR EventID=4672 OR EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] OR EventID=528 OR EventID=540 OR EventID=4624", + "Calculation": { + "Operation": "Sum" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*" + } + } + } + } + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch01", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Access Violation: Account Locked (Details)", + "Query": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch02", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Access Violation: Account Locked (Events Count)", + "Query": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279 | measure count() by EventID", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch03", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Access Violation: Unsuccessful Logon Attempts (Details)", + "Query": "Type=SecurityEvent EventID:[529..537] OR EventID=539 OR (EventID=4625 AND Status=0xc000006d) | Select TargetAccount, IpAddress, Computer, LogonProcessName, AuthenticationPackageName, LogonTypeName", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch04", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Access Violation: Unsuccessful Logon Attempts (Target Account Count)", + "Query": "Type=SecurityEvent EventID:[529..537] OR EventID=539 OR (EventID=4625 AND Status=0xc000006d) | measure count() by TargetAccount", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch05", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: Domain and Built-in Administrators Membership Changes (Member Added)", + "Query": "Type=SecurityEvent EventID=4728 OR EventID=4732 OR EventID=4756 OR EventID=632 OR EventID=636 OR EventID=660 AND (\"*512\" OR \"S-1-5-32-544\") | Extend \"Add Member\" AS Action | Select Action, TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch06", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: Domain and Built-in Administrators Membership Changes (Member Removed)", + "Query": "Type=SecurityEvent EventID=4729 OR EventID=4733 OR EventID=4757 OR EventID=633 OR EventID=637 OR EventID=661 AND (\"*512\" OR \"S-1-5-32-544\") | Extend \"Remove Member\" AS Action | Select Action, TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch07", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: Passwords Change Attempts by Non-Owner", + "Query": "Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" TargetAccount NOT IN {Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" | measure count() by SubjectAccount} | EXTEND SubjectAccount AS ChangedBy | Select TimeGenerated, Computer, TargetAccount, ChangedBy", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch08", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: User Accounts Created", + "Query": "Type=SecurityEvent (EventID=624 OR EventID=4720) | EXTEND SubjectAccount AS CreatedBy | Select TimeGenerated, TargetAccount, CreatedBy, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch09", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: User Accounts Deleted", + "Query": "Type=SecurityEvent (EventID=630 OR EventID=4726) | EXTEND SubjectAccount AS DeletedBy | Select TimeGenerated, TargetAccount, DeletedBy, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch10", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events For Specified Computer (Detail)", + "Query": "Type=SecurityEvent Computer=\"<>\"", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch11", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events For Specified Computer (Activity)", + "Query": "Type=SecurityEvent Computer=\"<>\" | measure count() by Activity", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch12", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events For Specified User (Details)", + "Query": "Type=SecurityEvent Account=\"<>\"", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch13", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events For Specified User (Activity)", + "Query": "Type=SecurityEvent Account=\"<>\" | measure count() by Activity", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch14", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events With Specified Event ID (Details)", + "Query": "Type=SecurityEvent EventID=\"<>\"", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch15", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events With Specified Event ID (Computer)", + "Query": "Type=SecurityEvent EventID=\"<>\" | measure count() by Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch16", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events With Specified Event ID (Account)", + "Query": "Type=SecurityEvent EventID=\"<>\" | measure count() by Account", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch17", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Event Counts", + "Query": "Type=SecurityEvent EventID!=0 | measure count() AS Count by Activity", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch18", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Event Counts by Computer (Activity)", + "Query": "Type=SecurityEvent Computer=\"<>\" | measure count() by Activity", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch19", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Event Counts by Computer (Events)", + "Query": "Type=SecurityEvent Computer=\"<>\" | measure count() by EventID", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch20", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Hourly Event Distribution (Time)", + "Query": "Type=SecurityEvent EventID!=0 | measure count() AS Count by TimeGenerated Interval 1Hour", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch21", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Hourly Event Distribution (Activity)", + "Query": "Type=SecurityEvent EventID!=0 AND EventID:[xx..yy] | measure count() AS Count by Activity Interval 1Hour", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch22", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Logon Counts of Privileged Users", + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\" | Select SubjectAccount, PrivilegeList", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch23", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Logon Counts of Privileged Users", + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\" | Measure Count() by SubjectAccount", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch24", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Policy: Account Policy Changed", + "Query": "Type=SecurityEvent EventID=643 OR EventID=4739 | Select Computer, Activity, TimeGenerated, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch25", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Policy: Audit Policy Changed", + "Query": "Type=SecurityEvent EventID=612 OR EventID=4719 | Select Computer, Activity, TimeGenerated, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch26", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Policy: Object Permissions Changed", + "Query": "Type=SecurityEvent EventID=4670 | Select TimeGenerated, Activity, Computer, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch27", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Policy: Privilege Added Or Removed", + "Query": "Type=SecurityEvent EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] | Select TimeGenerated, Activity, Computer, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch28", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "System Integrity: Audit Failure", + "Query": "Type=SecurityEvent EventID=516 OR EventID=4612 | Select TimeGenerated, Activity, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch29", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "System Integrity: Audit Log Cleared", + "Query": "Type=SecurityEvent EventID=517 OR EventID=1102 | Select Activity, Computer, TimeGenerated, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch30", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Usage: Object Access", + "Query": "Type=SecurityEvent EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 | Select Computer, Activity, TimeGenerated, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch31", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Usage: Privileged logon", + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 | Select TimeGenerated, Activity, Computer, SubjectAccount, PrivilegeList", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch32", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Usage: Sensitive Security Groups Changes", + "Query": "Type=SecurityEvent EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] | EXTEND TargetUserName As GroupName | Select Activity, GroupName, SubjectAccount, MemberName, TimeGenerated", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch33", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Usage: User Logon", + "Query": "Type=SecurityEvent EventID=528 OR EventID=540 OR EventID=4624 | Select TimeGenerated, Activity, Computer, IpAddress, AuthenticationPackageName, LogonProcessName, LogonTypeName, TargetAccount", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch34", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "DAC: File Resource Property Changes", + "Query": "Type=SecurityEvent EventID=4911 | Select Computer, Activity, TimeGenerated, SubjectAccount, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch35", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "DAC: Central Access Policy For File Changes", + "Query": "Type=SecurityEvent EventID=4913 | Select Computer, Activity, TimeGenerated, SubjectAccount, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch36", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "DAC: Object Attribute Changes", + "Query": "Type=SecurityEvent EventID=5136 OR EventID=5137 | Select Computer, Activity, TimeGenerated, SubjectAccount, EventData", + "Version": 1 + } + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "eastus", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ] + } + } + ], + "outputs": { + "LogAnalyticsworkspacename": { + "value": "[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT778 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT778 new file mode 100644 index 0000000..ed76542 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT778 @@ -0,0 +1,1477 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-scomacs-solution/azuredeploy.json", + "/demos/oms-scomacs-solution/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962901026, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-scomacs-solution/azuredeploy.json", + "/demos/oms-scomacs-solution/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT778", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT778", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "A valid log analytics workspace name (solution will be added) or provide a name for the new workspace." + }, + "value": "GEN-UNIQUE-10" + }, + "workspaceRegionId": { + "type": "string", + "metadata": { + "description": "Region of the Log Analytics workspace" + }, + "value": "usgovvirginia" + }, + "pricingTier": { + "type": "string", + "defaultValue": "Standalone", + "allowedValues": [ + "Free", + "Standalone", + "PerNode" + ], + "metadata": { + "description": "Service Tier: Free, Standalone, or PerNode" + } + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "SCOM ACS Dashboards", + "solutionName": "[concat('SCOMACSDashboards', '[', parameters('workspaceName'), ']')]", + "publisher": "Adin.Ermie@outlook.com", + "displayName": "SCOM ACS Dashboards", + "description": "This is a pre-built solution for Microsoft OMS (www.microsoft.com/oms).This solution was built from following Wei Ho Lim's 2 articles. This solution requires the OMS Security and Audit solution to be enabled first, as it leverages this collected data.", + "author": "Adin.Ermie@outlook.com" + } + }, + "SecurityAndAuditSolution": { + "Name": "[Concat('Security', '(', parameters('workspaceName'), ')')]", + "GalleryName": "Security" + } + }, + "resources": [ + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "usgovvirginia", + "properties": { + "sku": { + "name": "Standalone" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "location": "usgovvirginia", + "name": "(SecurityAndAuditSolution).Name", + "type": "Microsoft.OperationsManagement/solutions", + "id": "Microsoft.OperationsManagement/solutions/(SecurityAndAuditSolution).Name", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + }, + "plan": { + "name": "(SecurityAndAuditSolution).Name", + "publisher": "Microsoft", + "product": "[Concat('OMSGallery/', variables('SecurityAndAuditSolution').GalleryName)]", + "promotionCode": "" + } + }, + { + "apiVersion": "2020-08-01", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "DisplayName": "(omsSolutions).customSolution.displayName", + "Description": "(omsSolutions).customSolution.description", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "NewGroup": false, + "Color": "#0072c6" + }, + "Header": { + "Image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAztJREFUeNrUmktoE1EUhqexKj4zJWoaqIpVaVGxKr6ogsaNbhS0YKkKFeKmriwFEaXYnY+FYjeCbmtRRBeuXIlLMe1CXGlduBOt0rS1FaF2/A+ciWMy0yT3njvN/PBtMuHc8899zJ1zp8ZxHEtAKXAE7AdNYBOwGVKO+QQ+gDfgFfii23CNhoHV4CyzWzHGEBgEA2BUKQIZqJAG0A+mHTn9AvfB2krzqeTPi8AVMOWYE92UPrBY2kAzeOeEp/fcZsncYmWMsjaQBdut8LSN22zTnQMXwYwzf5rhHJSGUJdTPeoKyjNoGT0JnoIFCt1/GXwOuNYIbirE/APawbNyhlATmNS4W4fm6NW0Rlxa/baWmsQLwROwXGMC2orXSmkpeMw55lVooAe0aK4gcUMG3NWpJ8hAA+gVWAJtRXPlqpdzLTJwlbvJpAFbID7leK3QwCpwXughFDdsgNTJOecN0A9LhIKbHkIW59rpNdAhuA2wQ+gB0hnXQBLsiqCBnaCeDKTpxUYwcDwkA5TzYTLQKryTDGMOuDoQ44eDFcEhRNpCBtYJB42HaGC9O4klVRuwl1opPNdIa2KaG7dK7nSdgXZWxCwzskOYwPmtxISBuPEQxj9pnAx8NRC4LiQDo2RgJMI98DHGtUpppbgXvNSbMEAv9af5NTKKaicDtK/+ZmCNNi0qpyRpCH3nKnHUNOROYtIj4eDTXP9JMzfAlHAbg966UEKwXE71m70+NSH67bdgFTvhrQv9AA+E7sw98Nbnd/rtjlAbDznn/ypzKc2KnKuDc1TmWgXiT3KuRZU5Oq+6LrQ6BGlWIH6f5TlbK9zM9YNhzQaOKV4rR8M8RD23q7ibG0FOo4snwA6fuC18TVWU08Zyy+snwHNLrbxu8ZJ5F7zkIXUUdNP+XTEelddPgRfFAzZ4wmXAbBUcblAOF1QP+TJVcMSU0T2lPA7G5iH5HLctcsy6AWRDTD7LbYoedNeCS2DcYOK0SnVzW+In9S5JcEtzSfRL/DbHrigfnY896C2LPvQ4B/b4PBRLiZ7KdJg9wLvhMaUCqdDnNgkqtIJ9oBlspqITWMYvSj/5pWnE+ve5zev8hkxDfwUYAP0NkvYTPlJVAAAAAElFTkSuQmCC", + "Label": "Mapping ACS Reports to OMS Search Queries", + "Link": { + "Label": "More info", + "Url": "https://blogs.msdn.microsoft.com/wei_out_there_with_system_center/2016/07/25/mapping-acs-reports-to-oms-search-queries/" + } + }, + "List": [ + { + "Title": "Summary", + "Content": "This post features a table that shows the mapping between Audit Collection Services (ACS) SSRS reports and search queries used in OMS Log Analytics. \n\nMost of the OMS search queries listed in this post are used to drive the views in this ACS Dashboard in OMS Log Analytics." + } + ] + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Forensic", + "newGroup": false, + "preselectedFilters": "Type, Computer", + "renderMode": "grid" + }, + "queries": [ + { + "query": "Type=SecurityEvent Computer=\"<>\"", + "displayName": "All Events For Specified Computer" + }, + { + "query": "All Events For Specified Computer grouped by Activity", + "displayName": "All Events For Specified Computer grouped by Activity" + }, + { + "query": "Type=SecurityEvent Account=\"<>\"", + "displayName": "All Events For Specified User" + }, + { + "query": "Type=SecurityEvent Account=\"<>\" | measure count() by Activity", + "displayName": "All Events For Specified User grouped by Activity" + }, + { + "query": "Type=SecurityEvent Account=\"<>\" | measure count() by Activity", + "displayName": "All Events With Specified Event ID" + }, + { + "query": "Type=SecurityEvent EventID=\"<>\" | measure count() by Computer", + "displayName": "All Events With Specified Event ID grouped by Computer" + }, + { + "query": "Type=SecurityEvent EventID=\"<>\" | measure count() by Account", + "displayName": "All Events With Specified Event ID grouped by Account" + } + ] + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "PLANNING: Event Counts and Hourly Distribution", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Hourly Event Distribution" + }, + "LineChart": { + "Query": "Type=SecurityEvent EventID!=0 | measure count() AS Count by TimeGenerated Interval 1Hour", + "Callout": { + "Title": "Avg per hour", + "Operation": "Average" + }, + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "Type=SecurityEvent EventID!=0 | measure count() AS Count by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID!=0 | measure count() AS Count by Computer" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Planning: Logon Counts of Privilege Users", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\"", + "Legend": "Logon Counts" + }, + "List": { + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\" | Measure Count() by SubjectAccount", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "User Account", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\" | Select SubjectAccount, PrivilegeList" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "System Integrity Check", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Audit Failure", + "Query": "Type=SecurityEvent EventID=516 OR EventID=4612 | Select TimeGenerated, Activity, Computer" + }, + "SecondTile": { + "Legend": "Audit Log Cleared", + "Query": "Type=SecurityEvent EventID=517 OR EventID=1102 | Select TimeGenerated, Activity, Computer" + }, + "List": { + "Query": "Type=SecurityEvent EventID=517 OR EventID=1102 | measure count() AS EventPerHour interval 1Hour", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Date Audit Log Cleared", + "Value": "Count (Hourly Interval)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=517 OR EventID=516 OR EventID=1102 OR EventID=4612 | Select TimeGenerated, Activity, Computer" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Access Violation Related Activities", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Account Locked", + "Query": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279" + }, + "SecondTile": { + "Legend": "Unsuccessful Logon Attempts", + "Query": "Type=SecurityEvent EventID:[529..537] OR EventID=539 OR (EventID=4625 AND Status=0xc000006d) | Select TargetAccount, IpAddress, Computer, LogonProcessName, AuthenticationPackageName, LogonTypeName" + }, + "List": { + "Query": "Type=SecurityEvent EventID:[529..537] OR EventID=539 OR (EventID=4625 AND Status=0xc000006d) | measure count() by TargetAccount", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Account Failed to Logon", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=624 OR EventID=4720 OR EventID=630 OR EventID=4726 | Select TimeGenerated, TargetAccount, Activity, Computer" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Account Management: User Accounts Created Or Deleted", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "User Accounts Created", + "Query": "Type=SecurityEvent (EventID=624 OR EventID=4720) | EXTEND SubjectAccount AS CreatedBy | Select TimeGenerated, TargetAccount, CreatedBy, Computer" + }, + "SecondTile": { + "Legend": "User Accounts Deleted", + "Query": "Type=SecurityEvent (EventID=630 OR EventID=4726) | EXTEND SubjectAccount AS DeletedBy | Select TimeGenerated, TargetAccount, DeletedBy, Computer" + }, + "List": { + "Query": "Type=SecurityEvent EventID=624 OR EventID=4720 OR EventID=630 OR EventID=4726 | Measure Count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Account Management: Domain and Built-in Administrators Membership Changes", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Member Added", + "Query": "Type=SecurityEvent EventID=4728 OR EventID=4732 OR EventID=4756 OR EventID=632 OR EventID=636 OR EventID=660 AND (\"*512\" OR \"S-1-5-32-544\") | Extend \"Add Member\" AS Action | Select Action, TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer" + }, + "SecondTile": { + "Legend": "Member Removed", + "Query": "Type=SecurityEvent EventID=4729 OR EventID=4733 OR EventID=4757 OR EventID=633 OR EventID=637 OR EventID=661 AND (\"*512\" OR \"S-1-5-32-544\") Extend \"Remove Member\" AS Action | Select Action, TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer" + }, + "List": { + "Query": "Type=SecurityEvent EventID:[4728..4729] OR EventID:[4732..4733] OR EventID:[4756..4757] OR EventID:[632..633] OR EventID:[636..637] OR EventID:[660..661] AND (\"*512\" OR \"S-1-5-32-544\") | measure Count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID:[4728..4729] OR EventID:[4732..4733] OR EventID:[4756..4757] OR EventID:[632..633] OR EventID:[636..637] OR EventID:[660..661] AND (\"*512\" OR \"S-1-5-32-544\") | Select TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Account Management: Password Change Attempts by Non-Owner", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" TargetAccount NOT IN {Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" | measure count() by SubjectAccount}", + "Legend": "Password Change Attempts" + }, + "List": { + "Query": "Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" TargetAccount NOT IN {Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" | measure count() by SubjectAccount} | Measure Count() by SubjectAccount", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Changed By", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" TargetAccount NOT IN {Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" | measure count() by SubjectAccount} | EXTEND SubjectAccount AS ChangedBy | Select TimeGenerated, Computer, TargetAccount, ChangedBy" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Policy: Account and Audit Policy Changed", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "Account Policy Changed", + "Query": "Type=SecurityEvent EventID=643 OR EventID=4739 | Select Computer, Activity, TimeGenerated, EventData" + }, + "SecondTile": { + "Legend": "Audit Policy Changed", + "Query": "Type=SecurityEvent EventID=612 OR EventID=4719 | Select Computer, Activity, TimeGenerated, EventData" + }, + "List": { + "Query": "Type=SecurityEvent EventID=612 OR EventID=643 OR EventID=4719 OR EventID=4739 | measure count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=612 OR EventID=643 OR EventID=4719 OR EventID=4739 | Select Computer, Activity, TimeGenerated, EventData" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Policy: Object Permissions Changed", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID=4670 | Select TimeGenerated, Activity, Computer, EventData", + "Legend": "Object Permissions Changed" + }, + "List": { + "Query": "Type=SecurityEvent EventID=4670 | measure count() by Computer", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=4670 | Select TimeGenerated, Activity, Computer, EventData" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Policy: Privilege Added Or Removed", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] | Select TimeGenerated, Activity, Computer, EventData", + "Legend": "Privilege Added Or Removed" + }, + "List": { + "Query": "Type=SecurityEvent EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] | measure count() by Computer", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Computer", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] | Select TimeGenerated, Activity, Computer, EventData" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Usage: User and Privileged Logons", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Legend": "User Logon", + "Query": "Type=SecurityEvent EventID=528 OR EventID=540 OR EventID=4624 | Select TimeGenerated, Activity, Computer, IpAddress, AuthenticationPackageName, LogonProcessName, LogonTypeName, TargetAccount" + }, + "SecondTile": { + "Legend": "Privileged Logon", + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 | Select TimeGenerated, Activity, Computer, SubjectAccount, PrivilegeList" + }, + "List": { + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 OR EventID=528 OR EventID=540 OR EventID=4624 | measure count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=576 OR EventID=4672 OR EventID=528 OR EventID=540 OR EventID=4624" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Usage: Sensitive Security Groups Changes", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] | EXTEND TargetUserName As GroupName | Select Activity, GroupName, SubjectAccount, MemberName, TimeGenerated", + "Legend": "Sensitive Security Groups Changes" + }, + "List": { + "Query": "Type=SecurityEvent EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] | measure count() by Activity", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Event Id - Activity", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] | EXTEND TargetUserName As GroupName | Select Activity, GroupName, SubjectAccount, MemberName, TimeGenerated" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Usage: Object Access", + "newGroup": false, + "useIcon": false + }, + "Tile": { + "Query": "Type=SecurityEvent EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 | Select Computer, Activity, TimeGenerated, EventData", + "Legend": "All Object Access Related Audit Event" + }, + "List": { + "Query": "Type=SecurityEvent EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 | measure count() AS EventPerHour interval 1Hour | sort TimeGenerated desc", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Date Event Logged", + "Value": "Count (Hourly Interval)" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=SecurityEvent EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 | Select Computer, Activity, TimeGenerated, EventData" + } + } + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "Trend1": { + "Legend": "ALL SEC EVENTS", + "LegendColor": "#00188f", + "ChartQuery": "Type=SecurityEvent EventID!=0", + "Calculation": { + "Operation": "Sum" + } + }, + "Trend2": { + "Legend": "ACS SEC EVENTS", + "LegendColor": "#0072c6", + "ChartQuery": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279 OR EventID:[529..537] OR EventID=539 OR EventID=4625 OR EventID=4728 OR EventID=4732 OR EventID=4756 OR EventID=632 OR EventID=636 OR EventID=660 OR EventID=4729 OR EventID=4733 OR EventID=4757 OR EventID=633 OR EventID=637 OR EventID=661 OR EventID=4723 OR EventID=4724 OR EventID:[627..628] OR EventID=624 OR EventID=630 OR EventID=4726 OR EventID=4720 OR EventID=576 OR EventID=4672 OR EventID=643 OR EventID=4739 OR EventID=612 OR EventID=4719 OR EventID=4670 OR EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] OR EventID=516 OR EventID=4612 OR EventID=517 OR EventID=1102 OR EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 OR EventID=576 OR EventID=4672 OR EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] OR EventID=528 OR EventID=540 OR EventID=4624", + "Calculation": { + "Operation": "Sum" + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*" + } + } + } + } + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch01", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Access Violation: Account Locked (Details)", + "Query": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch02", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Access Violation: Account Locked (Events Count)", + "Query": "Type=SecurityEvent EventID=539 OR EventID=644 OR EventID=4740 OR EventID=6279 | measure count() by EventID", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch03", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Access Violation: Unsuccessful Logon Attempts (Details)", + "Query": "Type=SecurityEvent EventID:[529..537] OR EventID=539 OR (EventID=4625 AND Status=0xc000006d) | Select TargetAccount, IpAddress, Computer, LogonProcessName, AuthenticationPackageName, LogonTypeName", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch04", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Access Violation: Unsuccessful Logon Attempts (Target Account Count)", + "Query": "Type=SecurityEvent EventID:[529..537] OR EventID=539 OR (EventID=4625 AND Status=0xc000006d) | measure count() by TargetAccount", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch05", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: Domain and Built-in Administrators Membership Changes (Member Added)", + "Query": "Type=SecurityEvent EventID=4728 OR EventID=4732 OR EventID=4756 OR EventID=632 OR EventID=636 OR EventID=660 AND (\"*512\" OR \"S-1-5-32-544\") | Extend \"Add Member\" AS Action | Select Action, TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch06", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: Domain and Built-in Administrators Membership Changes (Member Removed)", + "Query": "Type=SecurityEvent EventID=4729 OR EventID=4733 OR EventID=4757 OR EventID=633 OR EventID=637 OR EventID=661 AND (\"*512\" OR \"S-1-5-32-544\") | Extend \"Remove Member\" AS Action | Select Action, TargetUserName, Activity, SubjectAccount, MemberName, TimeGenerated, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch07", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: Passwords Change Attempts by Non-Owner", + "Query": "Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" TargetAccount NOT IN {Type=SecurityEvent (EventID=4723 OR EventID=4724 OR EventID:[627..628]) AND SubjectAccount!=\"ANONYMOUS LOGON\" | measure count() by SubjectAccount} | EXTEND SubjectAccount AS ChangedBy | Select TimeGenerated, Computer, TargetAccount, ChangedBy", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch08", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: User Accounts Created", + "Query": "Type=SecurityEvent (EventID=624 OR EventID=4720) | EXTEND SubjectAccount AS CreatedBy | Select TimeGenerated, TargetAccount, CreatedBy, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch09", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Account Management: User Accounts Deleted", + "Query": "Type=SecurityEvent (EventID=630 OR EventID=4726) | EXTEND SubjectAccount AS DeletedBy | Select TimeGenerated, TargetAccount, DeletedBy, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch10", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events For Specified Computer (Detail)", + "Query": "Type=SecurityEvent Computer=\"<>\"", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch11", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events For Specified Computer (Activity)", + "Query": "Type=SecurityEvent Computer=\"<>\" | measure count() by Activity", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch12", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events For Specified User (Details)", + "Query": "Type=SecurityEvent Account=\"<>\"", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch13", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events For Specified User (Activity)", + "Query": "Type=SecurityEvent Account=\"<>\" | measure count() by Activity", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch14", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events With Specified Event ID (Details)", + "Query": "Type=SecurityEvent EventID=\"<>\"", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch15", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events With Specified Event ID (Computer)", + "Query": "Type=SecurityEvent EventID=\"<>\" | measure count() by Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch16", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Forensic: All Events With Specified Event ID (Account)", + "Query": "Type=SecurityEvent EventID=\"<>\" | measure count() by Account", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch17", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Event Counts", + "Query": "Type=SecurityEvent EventID!=0 | measure count() AS Count by Activity", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch18", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Event Counts by Computer (Activity)", + "Query": "Type=SecurityEvent Computer=\"<>\" | measure count() by Activity", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch19", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Event Counts by Computer (Events)", + "Query": "Type=SecurityEvent Computer=\"<>\" | measure count() by EventID", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch20", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Hourly Event Distribution (Time)", + "Query": "Type=SecurityEvent EventID!=0 | measure count() AS Count by TimeGenerated Interval 1Hour", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch21", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Hourly Event Distribution (Activity)", + "Query": "Type=SecurityEvent EventID!=0 AND EventID:[xx..yy] | measure count() AS Count by Activity Interval 1Hour", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch22", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Logon Counts of Privileged Users", + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\" | Select SubjectAccount, PrivilegeList", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch23", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Planning: Logon Counts of Privileged Users", + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 AND SubjectDomainName!=\"NT AUTHORITY\" AND AccountType!=\"Machine\" | Measure Count() by SubjectAccount", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch24", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Policy: Account Policy Changed", + "Query": "Type=SecurityEvent EventID=643 OR EventID=4739 | Select Computer, Activity, TimeGenerated, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch25", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Policy: Audit Policy Changed", + "Query": "Type=SecurityEvent EventID=612 OR EventID=4719 | Select Computer, Activity, TimeGenerated, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch26", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Policy: Object Permissions Changed", + "Query": "Type=SecurityEvent EventID=4670 | Select TimeGenerated, Activity, Computer, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch27", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Policy: Privilege Added Or Removed", + "Query": "Type=SecurityEvent EventID:[608..609] OR EventID:[621..622] OR EventID:[4704..4705] | Select TimeGenerated, Activity, Computer, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch28", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "System Integrity: Audit Failure", + "Query": "Type=SecurityEvent EventID=516 OR EventID=4612 | Select TimeGenerated, Activity, Computer", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch29", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "System Integrity: Audit Log Cleared", + "Query": "Type=SecurityEvent EventID=517 OR EventID=1102 | Select Activity, Computer, TimeGenerated, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch30", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Usage: Object Access", + "Query": "Type=SecurityEvent EventID=560 OR EventID=567 OR EventID=4656 OR EventID=4663 | Select Computer, Activity, TimeGenerated, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch31", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Usage: Privileged logon", + "Query": "Type=SecurityEvent EventID=576 OR EventID=4672 | Select TimeGenerated, Activity, Computer, SubjectAccount, PrivilegeList", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch32", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Usage: Sensitive Security Groups Changes", + "Query": "Type=SecurityEvent EventID:[4727..4735] OR EventID=4737 OR EventID:[4754..4758] OR EventID:[631..639] OR EventID=641 OR EventID:[658..662] | EXTEND TargetUserName As GroupName | Select Activity, GroupName, SubjectAccount, MemberName, TimeGenerated", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch33", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "Usage: User Logon", + "Query": "Type=SecurityEvent EventID=528 OR EventID=540 OR EventID=4624 | Select TimeGenerated, Activity, Computer, IpAddress, AuthenticationPackageName, LogonProcessName, LogonTypeName, TargetAccount", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch34", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "DAC: File Resource Property Changes", + "Query": "Type=SecurityEvent EventID=4911 | Select Computer, Activity, TimeGenerated, SubjectAccount, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch35", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "DAC: Central Access Policy For File Changes", + "Query": "Type=SecurityEvent EventID=4913 | Select Computer, Activity, TimeGenerated, SubjectAccount, EventData", + "Version": 1 + } + }, + { + "apiVersion": "2020-08-01", + "name": "ACSSavedSearch36", + "type": "savedSearches", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Category": "ACS Report Queries", + "ETag": "*", + "DisplayName": "DAC: Object Attribute Changes", + "Query": "Type=SecurityEvent EventID=5136 OR EventID=5137 | Select Computer, Activity, TimeGenerated, SubjectAccount, EventData", + "Version": 1 + } + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "usgovvirginia", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ] + } + } + ], + "outputs": { + "LogAnalyticsworkspacename": { + "value": "[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT779 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT779 new file mode 100644 index 0000000..d8c0f09 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT779 @@ -0,0 +1,241 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-servicebus-solution/nestedtemplates/addMultipleSubscriptions.json" + ], + "timestamp": 1642962901085, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-servicebus-solution/nestedtemplates/addMultipleSubscriptions.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT779", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT779", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "OMSWorkspaceId": { + "type": "string", + "metadata": { + "description": "Specify the OMS workspace ID" + } + }, + "OMSWorkspaceKey": { + "type": "string", + "metadata": { + "description": "Specify the OMS workspace key" + } + }, + "omsAutomationAccountName": { + "type": "string", + "metadata": { + "description": "Specify the name of your Automation Account" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Specify region for your automation account" + } + }, + "jobGuid": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "GUID for the schedule creation - create a unique before deploy" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "assets": { + "psModules": { + "ingestionAPI": { + "name": "OMSIngestionAPI", + "uri": "https://raw.githubusercontent.com/tianderturpijn/OMS/master/ServiceBus/modules/OMSIngestionAPI.zip" + } + }, + "aaVariables": { + "OMSWorkspaceId": { + "name": "OMSWorkspaceId", + "description": "Workspace ID for the Log Analytics workspace" + }, + "OMSWorkspaceKey": { + "name": "OMSWorkspaceKey", + "description": "Primary key for the Log Analytics workspace" + }, + "AzureSubscriptionId": { + "name": "AzureSubscriptionId", + "description": "Azure subscription Id" + } + }, + "runbooks": { + "servicebusManagement": { + "description": "", + "Id": "", + "ingestFrequency": "hour", + "ingestInterval": 1, + "ingestScheduleName": "IngestAPISchedule", + "name": "servicebusIngestion", + "type": "PowerShell", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/servicebusIngestion.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + } + }, + "resources": [ + { + "name": "omsAutomationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2015-10-31", + "location": "location", + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "OMSWorkspaceId", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "(assets).aaVariables.OMSWorkspaceId.description", + "value": "\"OMSWorkspaceId\"" + } + }, + { + "name": "OMSWorkspaceKey", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "", + "value": "\"OMSWorkspaceKey\"" + } + }, + { + "name": "(assets).aaVariables.AzureSubscriptionId.name", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "description": "(assets).aaVariables.AzureSubscriptionId.description", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "(assets).psModules.ingestionAPI.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Variables/omsAutomationAccountName/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/Variables/omsAutomationAccountName/(assets).aaVariables.OMSWorkspaceKey.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.ingestionAPI.uri" + } + } + }, + { + "name": "(assets).runbooks.servicebusManagement.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "location", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/Modules/omsAutomationAccountName/(assets).psModules.ingestionAPI.name", + "Microsoft.Automation/automationAccounts/Variables/omsAutomationAccountName/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/Variables/omsAutomationAccountName/(assets).aaVariables.OMSWorkspaceKey.name" + ], + "properties": { + "runbookType": "(assets).runbooks.servicebusManagement.type", + "logProgress": true, + "logVerbose": false, + "description": "(assets).runbooks.servicebusManagement.description", + "publishContentLink": { + "uri": "(assets).runbooks.servicebusManagement.url", + "version": "(assets).runbooks.servicebusManagement.version" + } + } + }, + { + "name": "(assets).runbooks.servicebusManagement.ingestScheduleName", + "type": "schedules", + "apiVersion": "2015-10-31", + "location": "location", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//omsAutomationAccountName", + "Microsoft.Automation/automationAccounts/runbooks/omsAutomationAccountName/(assets).runbooks.servicebusManagement.name" + ], + "properties": { + "description": "OMS Ingestion API Scheduler", + "startTime": "", + "isEnabled": true, + "interval": "(assets).runbooks.servicebusManagement.ingestInterval", + "frequency": "(assets).runbooks.servicebusManagement.ingestFrequency" + } + }, + { + "name": "", + "type": "jobSchedules", + "apiVersion": "2015-10-31", + "location": "location", + "dependsOn": [ + "Microsoft.Automation/automationAccounts/schedules/omsAutomationAccountName/(assets).runbooks.servicebusManagement.ingestScheduleName", + "Microsoft.Automation/automationAccounts/runbooks/omsAutomationAccountName/(assets).runbooks.servicebusManagement.name", + "Microsoft.Automation/automationAccounts//omsAutomationAccountName" + ], + "properties": { + "schedule": { + "name": "(assets).runbooks.servicebusManagement.ingestScheduleName" + }, + "runbook": { + "name": "(assets).runbooks.servicebusManagement.name" + } + } + } + ] + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT78 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT78 new file mode 100644 index 0000000..71402ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT78 @@ -0,0 +1,320 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885537, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT78", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT78", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string", + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "type": "string" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": { + "singleQuote": "'", + "masterIP": "networkSpec", + "workerIP": "networkSpec", + "vmName": "GEN-UNIQUE-10-dn", + "nicName": "GEN-UNIQUE-10-dn-nic", + "publicIPAddressName": "GEN-UNIQUE-10-dn-publicIP", + "securityGroupName": "GEN-UNIQUE-10-dn-sg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-10-dn-sg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-10-dn-publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "publicIPLoop", + "count": "vmCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10-dncopyIndex()" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-10-dn-niccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-dn-publicIPcopyIndex()", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-dn-sg" + ], + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(parameters('networkSpec').ipOctet01, add(parameters('networkSpec').ipOctet2, div(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256)), '.', mod(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256))]", + "subnet": { + "id": "vnetID/subnets/networkSpec" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-dn-publicIPcopyIndex()" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-dn-sg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "name": "GEN-UNIQUE-10-dncopyIndex()", + "plan": { + "name": "cloudera-centos-6", + "publisher": "cloudera", + "product": "cloudera-centos-6" + }, + "location": "[resourceGroup().location]", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-dn-niccopyIndex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/vmSpec" + }, + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "[reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn]", + "adminUsername": "vmSpec", + "adminPassword": "vmSpec", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-6", + "sku": "cloudera-centos-6", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-10-dncopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk1", + "diskSizeGB": 512, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 2, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 3, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk5", + "diskSizeGB": 1023, + "lun": 4, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk6", + "diskSizeGB": 1023, + "lun": 5, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-dn-niccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-10-dncopyIndex()/prepareDisks", + "location": "[resourceGroup().location]", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10-dncopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/prepare-datanode-disks.sh", + "scriptsUri/scripts/initialize-node.sh" + ], + "commandToExecute": "[concat('sh initialize-node.sh ', variables('singleQuote'), variables('masterIP'), variables('singleQuote'), ' ', variables('singleQuote'), variables('workerIP'), variables('singleQuote'), ' ', variables('singleQuote'), parameters('dnsNamePrefix'), variables('singleQuote'), ' ', variables('singleQuote'), reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').masterNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').dataNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('vmSpec').adminUsername, variables('singleQuote'), ' ', 'datanode', ' >> /var/log/cloudera-azure-initialize.log 2>&1')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT780 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT780 new file mode 100644 index 0000000..6366167 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT780 @@ -0,0 +1,1118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-servicebus-solution/azuredeploy.json", + "/demos/oms-servicebus-solution/azuredeploy.parameters.json" + ], + "timestamp": 1642962901095, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-servicebus-solution/azuredeploy.json", + "/demos/oms-servicebus-solution/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT780", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT780", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Specify the name of your existing OMS Automation account to store the configuration" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the region for your OMS workspace" + } + }, + "omsSku": { + "type": "string", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Select the SKU for your workspace" + }, + "value": "free" + }, + "omsAutomationAccountName": { + "type": "string", + "metadata": { + "description": "Specify the name of your Automation Account" + }, + "value": "GEN-UNIQUE-10" + }, + "jobGuid": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "GUID for the schedule creation - create a unique before deploy" + }, + "value": "GEN-GUID" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "assets": { + "psModules": { + "ingestionAPI": { + "name": "OMSIngestionAPI", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/omsingestionapi.1.5.0.nupkg" + }, + "azureStorage": { + "name": "Azure.Storage", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/azure.storage.2.8.0.nupkg" + }, + "azureRmAutomation": { + "name": "AzureRM.Automation", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.automation.2.8.0.nupkg" + }, + "azureRmCompute": { + "name": "AzureRM.Compute", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.compute.2.9.0.nupkg" + }, + "azureRmProfile": { + "name": "AzureRM.Profile", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.profile.2.8.0.nupkg" + }, + "azureRmResources": { + "name": "AzureRM.Resources", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.resources.3.8.0.nupkg" + }, + "azureRmSql": { + "name": "AzureRM.Sql", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.sql.2.8.0.nupkg" + }, + "azure": { + "name": "Azure", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/azure.3.8.0.nupkg" + }, + "azureRmServicebus": { + "name": "AzureRM.Servicebus", + "uri": "https://devopsgallerystorage.blob.core.windows.net/packages/azurerm.servicebus.0.2.0.nupkg" + } + }, + "aaVariables": { + "OMSWorkspaceId": { + "name": "OMSWorkspaceId", + "description": "Workspace ID for the Log Analytics workspace" + }, + "OMSWorkspaceKey": { + "name": "OMSWorkspaceKey", + "description": "Primary key for the Log Analytics workspace" + }, + "AzureSubscriptionId": { + "name": "AzureSubscriptionId", + "description": "Azure subscription Id" + } + }, + "runbooks": { + "scheduleRunbook": { + "name": "scheduleIngestion", + "version": "1.0.0.0", + "description": "schedule runbook", + "type": "PowerShell", + "Id": "", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/scheduleIngestion.ps1', parameters('_artifactsLocationSasToken')))]", + "ingestScheduleName": "ingestAPISchedule" + }, + "ingestionRunbook": { + "name": "servicebusIngestion", + "version": "1.0.0.0", + "description": "runbook to ingest service bus data", + "type": "PowerShell", + "Id": "", + "url": "[uri(parameters('_artifactsLocation'), concat('scripts/servicebusIngestion.ps1', parameters('_artifactsLocationSasToken')))]" + } + } + }, + "omsSolutions": { + "customSolution": { + "name": "Azure Service Bus", + "solutionName": "[concat('Azure Service Bus', '[', parameters('omsWorkspaceName'), ']')]", + "publisher": "tiandert@microsoft.com", + "displayName": "Azure Service Bus", + "description": "Azure Service Bus Monitoring", + "author": "tiandert@microsoft.com" + } + } + }, + "resources": [ + { + "name": "GEN-UNIQUE", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "free" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "id": "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE/(omsSolutions).customSolution.name", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "Id": "Azure Service Bus Analytics", + "Name": "Azure Service Bus Analytics", + "Author": "tiandert@microsoft.com", + "Source": "Local", + "Version": 1, + "Dashboard": [ + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Queue Messages", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Active Messages", + "Subtitle": "Last 24hrs" + }, + "LineChart": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-24HOURS| measure max(ActiveMessageCount_d) by QueueName_s interval 15MINUTES", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-15MINUTES | measure max(ActiveMessageCount_d) by QueueName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Sum", + "ColumnsTitle": { + "Name": "Queue (last 15mins)", + "Value": "Nr of Messages" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Queue Dead Letters", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Dead Letter Count", + "Subtitle": "Last 24hrs" + }, + "LineChart": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-24HOURS| measure max(DeadLetterMessageCount_d) by QueueName_s interval 15MINUTES", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-30MINUTES | Measure avg(DeadLetterMessageCount_d) as DeadLetterMessageCount by QueueName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Sum", + "ColumnsTitle": { + "Name": "Queue (last 30mins)", + "Value": "Nr of Messages" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Queue Scheduled Messages", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Scheduled Messages", + "Subtitle": "Last 24hrs" + }, + "LineChart": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-24HOURS| measure max(ScheduledMessageCount_d) by QueueName_s interval 15MINUTES", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-1HOUR | Measure avg(ScheduledMessageCount_d) as DeadLetterMessageCount by QueueName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Queue (last 1hr)", + "Value": "Nr of Messages" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Queue Free Space %", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Queue Free Space Remaining (last 24hrs)", + "Subtitle": "" + }, + "LineChart": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-24HOURS | measure count() by QueueName_s,QueueFreeSpacePercentage_s interval 15MINUTES", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-30MINUTES | measure countdistinct(QueueFreeSpacePercentage_s) by QueueName_s,QueueFreeSpacePercentage_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Last Sample", + "ColumnsTitle": { + "Name": "Queue (last 30mins)", + "Value": "Samples" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": true, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Topic Messages", + "newGroup": true, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Active Messages", + "Subtitle": "Last 24hrs" + }, + "LineChart": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-24HOURS| measure max(ActiveMessageCount_d) by TopicName_s interval 15MINUTES", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-30MINUTES | measure max(ActiveMessageCount_d) by TopicName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Topic (last 30mins)", + "Value": "Nr of Messages" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Topic Dead Letters", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Dead Letter Count", + "Subtitle": "Last 24hrs" + }, + "LineChart": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-24HOURS| measure max(DeadLetterMessageCount_d) by TopicName_s interval 15MINUTES", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-30MINUTES | Measure avg(DeadLetterMessageCount_d) as DeadLetterMessageCount by TopicName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Topic (last 30mins)", + "Value": "Nr of Messages" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Topic Scheduled Messages", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Scheduled Messages", + "Subtitle": "Last 24hrs" + }, + "LineChart": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-24HOURS| measure max(ScheduledMessageCount_d) by TopicName_s interval 15MINUTES", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-30MINUTES | Measure avg(ScheduledMessageCount_d) as ScheduledMessageCount by TopicName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Topic", + "Value": "Nr of Messages" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "LineChartBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Topic Free Space %", + "newGroup": false, + "icon": "", + "useIcon": false + }, + "Header": { + "Title": "Free Space Remaining", + "Subtitle": "Last 24hrs" + }, + "LineChart": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-24HOURS | measure count() by TopicName_s,TopicFreeSpacePercentage_d interval 15MINUTES", + "yAxis": { + "isLogarithmic": false, + "units": { + "baseUnitType": "", + "baseUnit": "", + "displayUnit": "" + }, + "customLabel": "" + } + }, + "List": { + "Query": "Type=servicebus_CL TimeGenerated>NOW-30MINUTES | measure countdistinct(TopicFreeSpacePercentage_s) by TopicName_s,TopicFreeSpacePercentage_d", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Topic", + "Value": "Samples" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NameDSVSeparator": "", + "NavigationQuery": "{selected item}" + } + } + }, + { + "Id": "NotableQueriesBuilderBlade", + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Azure Service Bus Queries", + "newGroup": true, + "preselectedFilters": "Type, Computer", + "renderMode": "grid" + }, + "queries": [ + { + "query": "Type=servicebus_CL", + "displayName": "All Service Bus data" + }, + { + "query": "Type:servicebus_CL | measure count() by ServiceBusName_s", + "displayName": "All Service Bus namespaces" + }, + { + "query": "Type:servicebus_CL | Measure count() by QueueName_s", + "displayName": "List of Queues" + }, + { + "query": "Type:servicebus_CL | Measure count() by ActiveMessageCount_d", + "displayName": "Active Message Count" + }, + { + "query": "Type:servicebus_CL | Measure count() by DeadLetterMessageCount_d", + "displayName": "Deadletter Count" + }, + { + "query": "Type=servicebus_CL SubscriptionName_s=* | Select TopicName_s,SubscriptionName_s | dedup SubscriptionName_s", + "displayName": "All Topic Subscriptions" + }, + { + "query": "Type=servicebus_CL QueueFreeSpacePercentage_s>0 | Select QueueName_s,QueueFreeSpacePercentage_s | dedup QueueName_s", + "displayName": "Queue Freespace" + } + ] + } + } + ], + "OverviewTile": { + "Id": "DoubleNumberBuilderTile", + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "TileOne": { + "Legend": "Azure Service Bus Queue(s)", + "Query": "Type=servicebus_CL TimeGenerated>NOW-1HOURS | measure count() by QueueName_s" + }, + "TileTwo": { + "Legend": "Azure Service Bus Topic(s)", + "Query": "Type=servicebus_CL TimeGenerated>NOW-1HOURS | measure count() by TopicName_s" + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": true, + "Query": "Type=servicebus_CL", + "Message": "Waiting on the initial Service Bus data ingestion" + } + } + } + } + } + } + ] + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2015-10-31", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "name": "(assets).aaVariables.OMSWorkspaceId.name", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10" + ], + "properties": { + "description": "(assets).aaVariables.OMSWorkspaceId.description", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2020-08-01').customerId,'\"')]" + } + }, + { + "name": "(assets).aaVariables.OMSWorkspaceKey.name", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10" + ], + "properties": { + "description": "Remote file for the passphrase", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName')), '2020-08-01').primarySharedKey,'\"')]" + } + }, + { + "name": "(assets).aaVariables.AzureSubscriptionId.name", + "type": "variables", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10" + ], + "properties": { + "description": "(assets).aaVariables.AzureSubscriptionId.description", + "value": "[concat('\"',subscription().subscriptionId,'\"')]" + } + }, + { + "name": "(assets).psModules.ingestionAPI.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.ingestionAPI.uri" + } + } + }, + { + "name": "(assets).psModules.azureRmProfile.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.azureRmProfile.uri" + } + } + }, + { + "name": "(assets).psModules.azureStorage.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/modules/GEN-UNIQUE-10/(assets).psModules.azureRmProfile.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.azureStorage.uri" + } + } + }, + { + "name": "(assets).psModules.azureRmAutomation.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/modules/GEN-UNIQUE-10/(assets).psModules.azureStorage.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.azureRmAutomation.uri" + } + } + }, + { + "name": "(assets).psModules.azureRmCompute.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/modules/GEN-UNIQUE-10/(assets).psModules.azureRmAutomation.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.azureRmCompute.uri" + } + } + }, + { + "name": "(assets).psModules.azureRmResources.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/modules/GEN-UNIQUE-10/(assets).psModules.azureRmAutomation.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.azureRmResources.uri" + } + } + }, + { + "name": "(assets).psModules.azureRmSql.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/modules/GEN-UNIQUE-10/(assets).psModules.azureRmAutomation.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.azureRmSql.uri" + } + } + }, + { + "name": "(assets).psModules.azure.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/modules/GEN-UNIQUE-10/(assets).psModules.azureRmAutomation.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.azure.uri" + } + } + }, + { + "name": "(assets).psModules.azureRmServicebus.name", + "type": "Modules", + "apiVersion": "2015-10-31", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name", + "Microsoft.Automation/automationAccounts/modules/GEN-UNIQUE-10/(assets).psModules.azureRmAutomation.name" + ], + "properties": { + "contentLink": { + "uri": "(assets).psModules.azureRmServicebus.uri" + } + } + }, + { + "name": "(assets).runbooks.scheduleRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/modules/GEN-UNIQUE-10/(assets).psModules.azureRmServicebus.name" + ], + "properties": { + "runbookType": "(assets).runbooks.scheduleRunbook.type", + "logProgress": "true", + "logVerbose": false, + "description": "(assets).runbooks.scheduleRunbook.description", + "publishContentLink": { + "uri": "(assets).runbooks.scheduleRunbook.url", + "version": "(assets).runbooks.scheduleRunbook.version" + } + } + }, + { + "name": "(assets).runbooks.ingestionRunbook.name", + "type": "runbooks", + "apiVersion": "2015-10-31", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10" + ], + "properties": { + "runbookType": "(assets).runbooks.ingestionRunbook.type", + "logProgress": "true", + "logVerbose": false, + "description": "(assets).runbooks.ingestionRunbook.description", + "publishContentLink": { + "uri": "(assets).runbooks.ingestionRunbook.url", + "version": "(assets).runbooks.ingestionRunbook.version" + } + } + }, + { + "name": "(assets).runbooks.scheduleRunbook.ingestScheduleName", + "type": "schedules", + "apiVersion": "2015-10-31", + "properties": { + "description": "This schedule is intended to run only once to invoke a runbook which will create the actual schedules, after that it will be expired and can be safely deleted", + "startTime": "", + "expiryTime": "", + "isEnabled": true, + "frequency": "OneTime" + }, + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/runbooks/GEN-UNIQUE-10/(assets).runbooks.scheduleRunbook.name" + ] + }, + { + "name": "GEN-GUID", + "type": "jobSchedules", + "apiVersion": "2015-10-31", + "properties": { + "runbook": { + "name": "(assets).runbooks.scheduleRunbook.Name" + }, + "schedule": { + "name": "(assets).runbooks.scheduleRunbook.ingestScheduleName" + } + }, + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10", + "Microsoft.Automation/automationAccounts/runbooks/GEN-UNIQUE-10/(assets).runbooks.scheduleRunbook.name", + "Microsoft.Automation/automationAccounts/schedules/GEN-UNIQUE-10/(assets).runbooks.scheduleRunbook.ingestScheduleName" + ] + }, + { + "name": "AzureAutomationResourceGroup", + "type": "variables", + "apiVersion": "2015-10-31", + "properties": { + "description": "The name of the resource group", + "isEncrypted": false, + "type": "string", + "value": "[concat('\"',resourceGroup().name,'\"')]" + }, + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10" + ] + }, + { + "name": "AzureAutomationAccount", + "type": "variables", + "apiVersion": "2015-10-31", + "properties": { + "description": "The name of the Azure Automation Account", + "isEncrypted": false, + "type": "string", + "value": "\"GEN-UNIQUE-10\"" + }, + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-10" + ] + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE/(omsSolutions).customSolution.name", + "Microsoft.Automation/automationAccounts/schedules/GEN-UNIQUE-10/(assets).runbooks.scheduleRunbook.ingestScheduleName" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "referencedResources": [ + "Microsoft.Automation/automationAccounts/variables//GEN-UNIQUE-10/(assets).aaVariables.AzureSubscriptionId.name", + "Microsoft.Automation/automationAccounts/variables//GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceId.name", + "Microsoft.Automation/automationAccounts/variables//GEN-UNIQUE-10/(assets).aaVariables.OMSWorkspaceKey.name" + ], + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE/(omsSolutions).customSolution.name" + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT781 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT781 new file mode 100644 index 0000000..52907ca --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT781 @@ -0,0 +1,661 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/oms-vmm-analytics/azuredeploy.json", + "/demos/oms-vmm-analytics/azuredeploy.parameters.json" + ], + "timestamp": 1642962901114, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/oms-vmm-analytics/azuredeploy.json", + "/demos/oms-vmm-analytics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT781", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT781", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Specify the name of the OMS workspace" + }, + "value": "GEN-UNIQUE-10" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the region for all resources" + } + }, + "pricingTier": { + "type": "string", + "defaultValue": "Free", + "metadata": { + "description": "Specify the pricing tier" + }, + "value": "perNode" + }, + "automationName": { + "type": "string", + "metadata": { + "description": "Specify the name of the Azure Automation account" + }, + "value": "GEN-UNIQUE-20" + }, + "vmmServers": { + "type": "string", + "metadata": { + "description": "Specify the comma seperated list of the on-prem VMM server(s)" + }, + "value": "GEN-UNIQUE-30" + } + }, + "variables": { + "omsSolutions": { + "customSolution": { + "name": "VMM Analytics", + "solutionName": "[concat('VMMAnalytics', '[', parameters('workspaceName'), ']')]", + "publisher": "veharshv@microsoft.com", + "displayName": "VMM Analytics", + "description": "Monitor and analyze your VMM jobs", + "author": "veharshv@microsoft.com" + } + }, + "omsWorkspaceId": "workspaceId", + "omsWorkspaceKey": "workspaceKey", + "vmmServersVariable": "vmmServers", + "lastRunTimeVariable": "lastRunTime", + "runbooks": { + "vmmAnalytics": { + "name": "vmmanalytics", + "version": "1.0.0.0", + "description": "Runbook to automatically ingest VMM Job data and events into OMS Log Analytics", + "type": "PowerShell", + "uri": "https://raw.githubusercontent.com/krnese/AzureDeploy/master/OMS/MSOMS/Solutions/vmm/scripts/vmmanalytics.ps1" + } + } + }, + "resources": [ + { + "apiVersion": "2021-06-01", + "name": "GEN-UNIQUE-10", + "type": "Microsoft.OperationalInsights/workspaces", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "perNode" + } + }, + "resources": [ + { + "apiVersion": "2015-11-01-preview", + "name": "(omsSolutions).customSolution.name", + "type": "views", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "Name": "(omsSolutions).customSolution.name", + "DisplayName": "(omsSolutions).customSolution.displayName", + "Description": "(omsSolutions).customSolution.description", + "Author": "(omsSolutions).customSolution.author", + "Source": "Local", + "Dashboard": [ + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Error Distribution by VMM Server", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Errors" + }, + "Donut": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!=\"Success (0)\" | measure count() by VMMServer_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!=\"Success (0)\" |measure count() by VMMServer_s", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "VMM Server", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" {selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Errors over time", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Errors over time" + }, + "LineChart": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" | measure count() by ErrorInfo_s| display linechart ", + "Callout": { + "Title": "Avg per 30", + "Operation": "Average" + }, + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" | measure count() by ErrorInfo_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Type", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Data type distribution", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Data types over time" + }, + "LineChart": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" |measure count() by TimeGenerated, ErrorInfo_s, VMMServer_s interval 15minutes | display linechart", + "yAxis": { + "isLogarithmic": false + } + }, + "List": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" |measure count() by TimeGenerated, ErrorInfo_s, VMMServer_s interval 15minutes | display linechart", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Type", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" {selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMM Failed Jobs", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Failed Jobs" + }, + "Donut": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" | measure count() by JobName_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" | measure count() by JobName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Jobs", + "Value": "Failed" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" {selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "Distribution by Errors", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Total Errors" + }, + "Donut": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" | measure count() by ErrorInfo_s", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "Type=VMMjobs_CL ErrorInfo_s!= \"Success (0)\" | measure count() by ErrorInfo_s", + "HideGraph": false, + "enableSparklines": true, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Errors", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "Type=VMMjobs_CL {selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "VMM Insights - Jobs", + "newGroup": false, + "useIcon": false + }, + "Header": { + "Title": "Total Jobs" + }, + "Donut": { + "Query": "Type:VMMjobs_CL | measure Count() by JobName_s", + "CenterLegend": { + "Text": "Jobs", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "List": { + "Query": "Type=VMMjobs_CL | measure Count() by JobName_s", + "HideGraph": false, + "enableSparklines": false, + "operation": "Summary", + "ColumnsTitle": { + "Name": "Jobs", + "Value": "Count" + }, + "Color": "#0072c6", + "thresholds": { + "isEnabled": false, + "values": [ + { + "name": "Normal", + "threshold": "Default", + "color": "#009e49", + "isDefault": true + }, + { + "name": "Warning", + "threshold": "60", + "color": "#fcd116", + "isDefault": false + }, + { + "name": "Error", + "threshold": "90", + "color": "#ba141a", + "isDefault": false + } + ] + }, + "NavigationQuery": "{selected item}" + } + } + }, + { + "Type": "Blade", + "Version": 0, + "Configuration": { + "General": { + "title": "List of queries", + "newGroup": false, + "preselectedFilters": "Type, Computer", + "renderMode": "default" + }, + "queries": [ + { + "query": "Type=VMMjobs_CL | measure count(), percentile25(Duration_d) as Perc25, percentile50(Duration_d) as Perc50, percentile75(Duration_d) as Perc75, percentile90(Duration_d) as Perc90 by JobName_s", + "displayName": "Performance analysis (All runs)" + }, + { + "query": "Type=VMMjobs_CL AND ErrorInfo_s= \"Success (0)\" | measure count(), percentile25(Duration_d) as Perc25, percentile50(Duration_d) as Perc50, percentile75(Duration_d) as Perc75, percentile90(Duration_d) as Perc90 by JobName_s", + "displayName": "Performance analysis (Successful runs)" + }, + { + "query": "Type=VMMjobs_CL | measure count() by VMMServer_s, JobName_s, Status_s | sort VMMServer_s, JobName_s, Status_s", + "displayName": "Job failure analysis for each job type and host" + } + ] + } + } + ], + "OverviewTile": { + "Type": "OverviewTile", + "Version": 0, + "Configuration": { + "Donut": { + "Query": "Type=VMMjobs_CL | measure count() by Type", + "CenterLegend": { + "Text": "Total", + "Operation": "Sum" + }, + "Options": { + "colors": [ + "#00188f", + "#0072c6", + "#00bcf2" + ] + } + }, + "Advanced": { + "DataFlowVerification": { + "Enabled": false, + "Query": "*" + } + } + } + } + } + } + ] + }, + { + "name": "(omsSolutions).customSolution.solutionName", + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "Microsoft.OperationalInsights/workspaces/views/GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ], + "plan": { + "name": "(omsSolutions).customSolution.solutionName", + "product": "(omsSolutions).customSolution.name", + "publisher": "(omsSolutions).customSolution.publisher", + "promotionCode": "" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10", + "containedResources": [ + "Microsoft.OperationalInsights/workspaces/views//GEN-UNIQUE-10/(omsSolutions).customSolution.name" + ] + } + }, + { + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2015-10-31", + "name": "GEN-UNIQUE-20", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE-10" + ], + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "type": "variables", + "apiVersion": "2015-10-31", + "name": "workspaceId", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "OMS Workspace Id", + "value": "[concat('\"',reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')),'2021-06-01').customerId,'\"')]" + } + }, + { + "type": "variables", + "apiVersion": "2021-04-01", + "name": "lastRunTime", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "LastRunTime variable" + } + }, + { + "type": "variables", + "apiVersion": "2021-04-01", + "name": "vmmServers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "VMMServers", + "value": "\"GEN-UNIQUE-30\"" + } + }, + { + "type": "variables", + "apiVersion": "2021-04-01", + "name": "workspaceKey", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20" + ], + "properties": { + "description": "OMS Workspace key", + "value": "[concat('\"',listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName')), '2021-06-01').primarySharedKey,'\"')]" + } + }, + { + "name": "(runbooks).vmmAnalytics.name", + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Automation/automationAccounts//GEN-UNIQUE-20", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-20/workspaceId", + "Microsoft.Automation/automationAccounts/variables/GEN-UNIQUE-20/workspaceKey" + ], + "properties": { + "runbookType": "(runbooks).vmmAnalytics.type", + "logProgress": false, + "logVerbose": false, + "description": "(runbooks).vmmAnalytics.description", + "publishContentLink": { + "uri": "(runbooks).vmmAnalytics.uri", + "version": "(runbooks).vmmAnalytics.version" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT782 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT782 new file mode 100644 index 0000000..9a2fa10 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT782 @@ -0,0 +1,337 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/openvpn-access-server-ubuntu/azuredeploy.json", + "/demos/openvpn-access-server-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962901144, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/openvpn-access-server-ubuntu/azuredeploy.json", + "/demos/openvpn-access-server-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT782", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT782", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "openvpnPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the openvpn user." + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "DNS Name for the publicly accessible node. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_B1s", + "metadata": { + "description": "The size of the virtual machines used when provisioning" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "16.04.0-LTS", + "18.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 16.04.0-LTS, 18.04-LTS." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "OpenVPN-NIC", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "StandardSSD_LRS", + "publicIPAddressName": "OpenVPN-PublicIP", + "publicIPAddressType": "Static", + "vmName": "OpenVPN-VM", + "virtualNetworkName": "OpenVPN-VNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/OpenVPN-VNET/Subnet", + "networkSecurityGroupName": "OpenVPN-NSG", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "OpenVPN-PublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "name": "OpenVPN-NSG", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "OpenVPN_WebServer", + "properties": { + "priority": 1200, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "943", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "OpenVPN443", + "properties": { + "priority": 1100, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "443", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "OpenVPN1194", + "properties": { + "priority": 1300, + "sourceAddressPrefix": "*", + "protocol": "UDP", + "destinationPortRange": "1194", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-ssh", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "22", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "OpenVPN-VNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "OpenVPN-NIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//OpenVPN-PublicIP", + "Microsoft.Network/virtualNetworks//OpenVPN-VNET", + "Microsoft.Network/networkSecurityGroups//OpenVPN-NSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/OpenVPN-PublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/OpenVPN-VNET/Subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/OpenVPN-NSG" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "OpenVPN-VM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//OpenVPN-NIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_B1s" + }, + "osProfile": { + "computerName": "OpenVPN-VM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/OpenVPN-NIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "OpenVPN-VM/newuserscript", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//OpenVPN-VM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_openvpn_access_server.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash install_openvpn_access_server.sh GEN-PASSWORD" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT783 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT783 new file mode 100644 index 0000000..7186403 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT783 @@ -0,0 +1,163 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/parameterized-linked-templates/nested/paramappgateway.json" + ], + "timestamp": 1642962901184, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/parameterized-linked-templates/nested/paramappgateway.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT783", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT783", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Azure region for App Gateway" + } + }, + "appgateway_name": { + "type": "string", + "metadata": { + "description": "Name for the App Gateway" + } + }, + "public_ip": { + "type": "string", + "metadata": { + "description": "Resource ID for Public IP" + } + }, + "vnet_name": { + "type": "string", + "metadata": { + "description": "Virtual Network for App Gateway" + } + }, + "vnet_subnet_name": { + "type": "string", + "metadata": { + "description": "Subnet for App Gateway" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2019-12-01", + "name": "appgateway_name", + "location": "location", + "properties": { + "sku": { + "name": "Standard_v2", + "tier": "Standard_v2" + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet_name/vnet_subnet_name" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGwPublicFrontendIp", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "public_ip" + } + } + } + ], + "frontendPorts": [ + { + "name": "port_80", + "properties": { + "port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "default-backend" + } + ], + "backendHttpSettingsCollection": [ + { + "name": "http-setting", + "properties": { + "port": 80, + "protocol": "Http", + "cookieBasedAffinity": "Disabled", + "pickHostNameFromBackendAddress": false, + "requestTimeout": 20 + } + } + ], + "httpListeners": [ + { + "name": "http-listener", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontendIPConfigurations/appgateway_name/appGwPublicFrontendIp" + }, + "frontendPort": { + "id": "Microsoft.Network/applicationGateways/frontendPorts/appgateway_name/port_80" + }, + "protocol": "Http", + "requireServerNameIndication": false + } + } + ], + "requestRoutingRules": [ + { + "name": "http-rule", + "properties": { + "ruleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/appgateway_name/http-listener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/appgateway_name/default-backend" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/appgateway_name/http-setting" + } + } + } + ], + "enableHttp2": false, + "autoscaleConfiguration": { + "minCapacity": 0, + "maxCapacity": 5 + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT784 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT784 new file mode 100644 index 0000000..5607d27 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT784 @@ -0,0 +1,265 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/parameterized-linked-templates/nested/paramvm.json" + ], + "timestamp": 1642962901233, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/parameterized-linked-templates/nested/paramvm.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT784", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT784", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Azure region for VM" + } + }, + "vm_name": { + "type": "string", + "metadata": { + "description": "Name for VM" + } + }, + "vm_size": { + "type": "string", + "metadata": { + "description": "VM Size" + } + }, + "datadisk_size": { + "type": "int", + "metadata": { + "description": "Size in GB for each Data Disk" + } + }, + "datadisk_count": { + "type": "int", + "metadata": { + "description": "Count of Data Disks" + } + }, + "admin_user": { + "type": "string", + "metadata": { + "description": "Admin User for VM" + } + }, + "ssh_pub_key": { + "type": "string", + "metadata": { + "description": "ssh Public Key used to access VM" + } + }, + "vnet_name": { + "type": "string", + "metadata": { + "description": "Virtual Network for VM" + } + }, + "vnet_subnet_name": { + "type": "string", + "metadata": { + "description": "Subnet for VM" + } + }, + "proximity_group_name": { + "type": "string", + "metadata": { + "description": "Proximity Placement Group for VM" + } + }, + "os_image": { + "type": "object", + "metadata": { + "description": "Object containing VM Image definition" + } + }, + "post_install_actions": { + "type": "object", + "metadata": { + "description": "Object containing post install actions for Custom Script Extension" + } + }, + "publicip_id_or_empty": { + "type": "string", + "metadata": { + "description": "Resource ID for Public IP or an empty string if not used" + } + }, + "appgatewaybackend_id_or_empty": { + "type": "string", + "metadata": { + "description": "Resource ID for App Gateway Backend Address Pool or an empty string if not used" + } + }, + "availabilityset_id_or_empty": { + "type": "string", + "metadata": { + "description": "Resource ID for Availability Set or an empty string if not used" + } + }, + "enable_enhanced_networking": { + "type": "bool", + "metadata": { + "description": "Enable Enhanced Networking (Depends on VM Size)" + } + } + }, + "variables": { + "public_ip_if_not_empty": { + "id": "publicip_id_or_empty" + }, + "appgatewaybackend_if_not_empty": [ + { + "id": "appgatewaybackend_id_or_empty" + } + ], + "availabilityset_if_not_empty": { + "id": "availabilityset_id_or_empty" + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "vm_name", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/vm_name_nic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vm_size" + }, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/proximity_group_name" + }, + "availabilitySet": "[if(empty(parameters('availabilityset_id_or_empty')), json('null'), variables('availabilityset_if_not_empty'))]", + "storageProfile": { + "imageReference": "os_image", + "osDisk": { + "osType": "Linux", + "name": "vm_name_OsDisk", + "createOption": "FromImage", + "caching": "ReadWrite", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "datadisks", + "count": "datadisk_count", + "input": { + "lun": "[copyIndex('datadisks')]", + "name": "[concat(parameters('vm_name'), '_data_', copyIndex('datadisks'))]", + "managedDisk": { + "storageAccountType": "Premium_LRS" + }, + "diskSizeGB": "datadisk_size", + "caching": "None", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vm_name_nic" + } + ] + }, + "osProfile": { + "computerName": "vm_name", + "adminUsername": "admin_user", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/admin_user/.ssh/authorized_keys", + "keyData": "ssh_pub_key" + } + ] + }, + "provisionVMAgent": true + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2019-07-01", + "name": "vm_name/post_install_actions", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/vm_name" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": "post_install_actions" + } + } + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2019-12-01", + "name": "vm_name_nic", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet_name/vnet_subnet_name" + }, + "applicationGatewayBackendAddressPools": "[if(empty(parameters('appgatewaybackend_id_or_empty')),json('[]'),variables('appgatewaybackend_if_not_empty'))]", + "primary": true, + "privateIPAddressVersion": "IPv4", + "publicIPAddress": "[if(empty(parameters('publicip_id_or_empty')),json('null'),variables('public_ip_if_not_empty'))]" + } + } + ], + "enableAcceleratedNetworking": "enable_enhanced_networking", + "enableIPForwarding": false + } + } + ], + "outputs": { + "privateIp": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', concat(parameters('vm_name'), '_nic'))).ipConfigurations[0].properties.privateIPAddress]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT785 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT785 new file mode 100644 index 0000000..a1248c1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT785 @@ -0,0 +1,1161 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/parameterized-linked-templates/azuredeploy.json", + "/demos/parameterized-linked-templates/azuredeploy.parameters.json" + ], + "timestamp": 1642962901245, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/parameterized-linked-templates/azuredeploy.json", + "/demos/parameterized-linked-templates/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT785", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/virtualnetworks", + "microsoft.network/networksecuritygroups", + "microsoft.compute/proximityplacementgroups", + "microsoft.network/bastionhosts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT785", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "VirtualNetworkName": { + "defaultValue": "examplevnet", + "type": "String", + "metadata": { + "description": "Name of the VNET for all Resources." + }, + "value": "GEN-UNIQUE-8" + }, + "OperatingSystemImage": { + "type": "string", + "defaultValue": "Red Hat Enterprise Linux 7 (latest, LVM)", + "allowedValues": [ + "Red Hat Enterprise Linux 7 (latest, LVM)", + "SUSE Enterprise Linux 12 SP5 +Patching" + ], + "metadata": { + "description": "OS Image to use for All VMs." + } + }, + "ProximityPlacementGroupName": { + "defaultValue": "proxgroup", + "type": "String", + "metadata": { + "description": "Name of the Proximity Placement Group to use for All Resources." + }, + "value": "GEN-UNIQUE-8" + }, + "AdminUserForVMAccess": { + "type": "String", + "metadata": { + "description": "Admin User for all VMs." + }, + "value": "GEN-UNIQUE-8" + }, + "sshKeyForVMAccess": { + "type": "String", + "metadata": { + "description": "ssh Public Key used to access all VMs." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "MidtierNetworkSecurityGroupName": { + "defaultValue": "midtierNSG", + "type": "String", + "metadata": { + "description": "Name of the Network Security Group for the Midtier Resources." + }, + "value": "GEN-UNIQUE-8" + }, + "MidtierVMNameBase": { + "defaultValue": "midtier", + "type": "String", + "metadata": { + "description": "Prefix for naming Midtier VMs." + }, + "value": "GEN-UNIQUE-8" + }, + "MidtierVMCount": { + "defaultValue": 1, + "type": "Int", + "allowedValues": [ + 0, + 1, + 3 + ], + "metadata": { + "description": "How many Midtier VMs to provision." + } + }, + "MidtierVMSize": { + "defaultValue": "Standard_D2s_v3", + "type": "String", + "allowedValues": [ + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3" + ], + "metadata": { + "description": "VM Size for Midtier VMs." + } + }, + "BackendNetworkSecurityGroupName": { + "defaultValue": "backendNSG", + "type": "String", + "metadata": { + "description": "Name of the Network Security Group for the Backend Resources." + }, + "value": "GEN-UNIQUE-8" + }, + "BackendVMNameBase": { + "defaultValue": "backend", + "type": "String", + "metadata": { + "description": "Prefix for naming Backend VMs." + }, + "value": "GEN-UNIQUE-8" + }, + "BackendVMCount": { + "defaultValue": 2, + "type": "Int", + "minValue": 0, + "maxValue": 100, + "metadata": { + "description": "How many Backend VMs to provision." + } + }, + "BackendVMTemplate": { + "defaultValue": "Standard_D8s_v3 2xP10 (256MB/node)", + "type": "String", + "allowedValues": [ + "Standard_D8s_v3 2xP10 (256MB/node)", + "Standard_D8s_v3 1xP30 (1024MB/node)", + "Standard_D16s_v3 4xP10 (512MB/node)", + "Standard_D16s_v3 2xP30 (2048MB/node)", + "Standard_D32s_v3 8xP10 (1024MB/node)", + "Standard_D32s_v3 4xP30 (4096MB/node)", + "Standard_D48s_v3 12xP10 (1536MB/node)", + "Standard_D48s_v3 6xP30 (6144MB/node)", + "Standard_D64s_v3 12xP10 (1536MB/node)", + "Standard_D64s_v3 6xP30 (6144MB/node)" + ], + "metadata": { + "description": "VM Size and Storage Profile for Backend VMs." + } + }, + "FrontendNetworkSecurityGroupName": { + "defaultValue": "frontendNSG", + "type": "String", + "metadata": { + "description": "Name of the Network Security Group for the Frontend Resources." + }, + "value": "GEN-UNIQUE-8" + }, + "AllowFrontendConnectionFromIPOrCIDRBlock": { + "defaultValue": "0.0.0.0/0", + "type": "string", + "metadata": { + "description": "Default value of 0.0.0.0/0 allows management and connections from the entire Internet" + } + }, + "DeployAzureBastionFrontend": { + "defaultValue": "Yes", + "type": "String", + "allowedValues": [ + "No", + "Yes" + ], + "metadata": { + "description": "Selection to deploy Azure Bastion Frontend" + } + }, + "DeployAppGatewayFrontend": { + "defaultValue": "Yes", + "type": "String", + "allowedValues": [ + "No", + "Yes" + ], + "metadata": { + "description": "Selection to deploy Azure Application Gateway Frontend" + } + }, + "DeployJumpBoxFrontend": { + "defaultValue": "Yes", + "type": "String", + "allowedValues": [ + "No", + "Yes" + ], + "metadata": { + "description": "Selection to deploy Jump Box (VM) Frontend" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "AvailabilitySetFaultDomain": { + "eastus": 3, + "eastus2": 3, + "westus": 3, + "centralus": 3, + "northcentralus": 3, + "southcentralus": 3, + "northeurope": 3, + "westeurope": 3, + "brazilsouth": 3, + "CentralIndia": 3, + "CanadaCentral": 3, + "westus2": 3, + "FranceCentral": 3 + }, + "maxFaultDomainsforLocation": "[if(contains(variables('AvailabilitySetFaultDomain'),parameters('location')),variables('AvailabilitySetFaultDomain')[parameters('location')],2)]", + "storageProfileSimple": { + "Standard_D2s_v3": 1, + "Standard_D4s_v3": 1, + "Standard_D8s_v3": 2, + "Standard_D16s_v3": 4, + "Standard_D32s_v3": 8 + }, + "storageProfileAdvanced": { + "Standard_D8s_v3 2xP10 (256MB/node)": { + "disksize": 128, + "vmsize": "Standard_D8s_v3", + "diskcount": 2 + }, + "Standard_D8s_v3 1xP30 (1024MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D8s_v3", + "diskcount": 1 + }, + "Standard_D16s_v3 4xP10 (512MB/node)": { + "disksize": 128, + "vmsize": "Standard_D16s_v3", + "diskcount": 4 + }, + "Standard_D16s_v3 2xP30 (2048MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D16s_v3", + "diskcount": 2 + }, + "Standard_D32s_v3 8xP10 (1024MB/node)": { + "disksize": 128, + "vmsize": "Standard_D32s_v3", + "diskcount": 8 + }, + "Standard_D32s_v3 4xP30 (4096MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D32s_v3", + "diskcount": 4 + }, + "Standard_D48s_v3 12xP10 (1536MB/node)": { + "disksize": 128, + "vmsize": "Standard_D48s_v3", + "diskcount": 12 + }, + "Standard_D48s_v3 6xP30 (6144MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D48s_v3", + "diskcount": 6 + }, + "Standard_D64s_v3 12xP10 (1536MB/node)": { + "disksize": 128, + "vmsize": "Standard_D64s_v3", + "diskcount": 12 + }, + "Standard_D64s_v3 6xP30 (6144MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D64s_v3", + "diskcount": 6 + } + }, + "ostag": "[if(equals(parameters('OperatingSystemImage'),'Red Hat Enterprise Linux 7 (latest, LVM)'),'RH7x','SL12')]", + "osProfile": { + "RH7x": { + "image": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-LVM", + "version": "latest" + }, + "diskscript": "scripts/rhel_raid_azure_data.sh" + }, + "SL12": { + "image": { + "publisher": "suse", + "offer": "sles-12-sp5-basic", + "sku": "gen1", + "version": "latest" + }, + "diskscript": "scripts/sles_raid_azure_data.sh" + } + }, + "postInstallActions": { + "backend": { + "commandToExecute": "[concat('sh ',variables('osProfile')[variables('ostag')]['diskscript'],'; sh examplepostinstall1.sh; sh examplepostinstall2.sh')]", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('osProfile')[variables('ostag')]['diskscript'], parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/examplepostinstall1.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/examplepostinstall2.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "midtier": { + "commandToExecute": "[concat('sh ',variables('osProfile')[variables('ostag')]['diskscript'],'; sh examplepostinstall1.sh')]", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('osProfile')[variables('ostag')]['diskscript'], parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/examplepostinstall1.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "jump": { + "commandToExecute": "[concat('sh ',variables('osProfile')[variables('ostag')]['diskscript'],'; sh examplepostinstall3.sh')]", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('osProfile')[variables('ostag')]['diskscript'], parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/examplepostinstall3.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/rhel_raid_azure_data.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/sles_raid_azure_data.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-07-01", + "type": "Microsoft.Compute/proximityPlacementGroups", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "condition": "[greater(parameters('BackendVMCount'),1)]", + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE-8-AS", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "dependsOn": [ + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "platformFaultDomainCount": "[if(contains(variables('AvailabilitySetFaultDomain'),parameters('location')),variables('AvailabilitySetFaultDomain')[parameters('location')],2)]", + "platformUpdateDomainCount": 6, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + } + } + }, + { + "condition": "[greater(parameters('MidtierVMCount'),1)]", + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2019-07-01", + "name": "GEN-UNIQUE-8-AS", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "dependsOn": [ + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "platformFaultDomainCount": "[if(contains(variables('AvailabilitySetFaultDomain'),parameters('location')),variables('AvailabilitySetFaultDomain')[parameters('location')],2)]", + "platformUpdateDomainCount": 6, + "proximityPlacementGroup": { + "id": "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-12-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-12-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-12-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "securityRules": [ + { + "name": "allow_http_from_ip_or_range_forwebhttp", + "type": "Microsoft.Network/networkSecurityGroups/securityRules", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "AllowFrontendConnectionFromIPorCIDRBlock", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 500, + "direction": "Inbound" + } + }, + { + "name": "allow_ssh_from_ip_or_range_for_jumpboxssh", + "type": "Microsoft.Network/networkSecurityGroups/securityRules", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "AllowFrontendConnectionFromIPorCIDRBlock", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 510, + "direction": "Inbound" + } + }, + { + "name": "allow_https_from_ip_or_range_for_bastion", + "type": "Microsoft.Network/networkSecurityGroups/securityRules", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "AllowFrontendConnectionFromIPorCIDRBlock", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 520, + "direction": "Inbound" + } + }, + { + "name": "allow_ssh_to_vnet_for_bastion", + "type": "Microsoft.Network/networkSecurityGroups/securityRules", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 530, + "direction": "Outbound" + } + }, + { + "name": "allow_rdp_to_vnet_for_bastion", + "type": "Microsoft.Network/networkSecurityGroups/securityRules", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 540, + "direction": "Outbound" + } + }, + { + "name": "allow_https_to_azurecloud_for_bastion", + "type": "Microsoft.Network/networkSecurityGroups/securityRules", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 550, + "direction": "Outbound" + } + }, + { + "name": "allow_management_from_gateway_manager_for_appgateway", + "type": "Microsoft.Network/networkSecurityGroups/securityRules", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "65200-65535", + "sourceAddressPrefix": "GatewayManager", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 560, + "direction": "Inbound" + } + }, + { + "name": "allow_https_from_gateway_manager_for_appgateway", + "type": "Microsoft.Network/networkSecurityGroups/securityRules", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "GatewayManager", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 570, + "direction": "Inbound" + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ParameterizedAppGateway", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/frontend-appgateway-ip", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8", + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/paramappgateway.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "appgateway_name": { + "value": "frontend-appgateway" + }, + "public_ip": { + "value": "Microsoft.Network/publicIPAddresses/frontend-appgateway-ip" + }, + "vnet_name": { + "value": "GEN-UNIQUE-8" + }, + "vnet_subnet_name": { + "value": "AppGatewaySubnet" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ParameterizedBackendVM-Loop", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8", + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8", + "Microsoft.Resources/deployments/ParameterizedAppGateway", + "Microsoft.Compute/availabilitySets/GEN-UNIQUE-8-AS" + ], + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "templateUri": { + "value": "[uri(parameters('_artifactsLocation'), concat('nested/paramvm.json', parameters('_artifactsLocationSasToken')))]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "Backend VM Template": { + "value": "Standard_D8s_v3 2xP10 (256MB/node)" + }, + "Backend VM Name Base": { + "value": "GEN-UNIQUE-8" + }, + "Backend VM Count": { + "value": 2 + }, + "Proximity PlacementGroup Name": { + "value": "GEN-UNIQUE-8" + }, + "Admin User for VM Access": { + "value": "GEN-UNIQUE-8" + }, + "ssh Key for VM Access": { + "value": "GEN-SSH-PUB-KEY" + }, + "Virtual Network Name": { + "value": "GEN-UNIQUE-8" + }, + "storageProfileAdvanced": { + "value": { + "Standard_D8s_v3 2xP10 (256MB/node)": { + "disksize": 128, + "vmsize": "Standard_D8s_v3", + "diskcount": 2 + }, + "Standard_D8s_v3 1xP30 (1024MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D8s_v3", + "diskcount": 1 + }, + "Standard_D16s_v3 4xP10 (512MB/node)": { + "disksize": 128, + "vmsize": "Standard_D16s_v3", + "diskcount": 4 + }, + "Standard_D16s_v3 2xP30 (2048MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D16s_v3", + "diskcount": 2 + }, + "Standard_D32s_v3 8xP10 (1024MB/node)": { + "disksize": 128, + "vmsize": "Standard_D32s_v3", + "diskcount": 8 + }, + "Standard_D32s_v3 4xP30 (4096MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D32s_v3", + "diskcount": 4 + }, + "Standard_D48s_v3 12xP10 (1536MB/node)": { + "disksize": 128, + "vmsize": "Standard_D48s_v3", + "diskcount": 12 + }, + "Standard_D48s_v3 6xP30 (6144MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D48s_v3", + "diskcount": 6 + }, + "Standard_D64s_v3 12xP10 (1536MB/node)": { + "disksize": 128, + "vmsize": "Standard_D64s_v3", + "diskcount": 12 + }, + "Standard_D64s_v3 6xP30 (6144MB/node)": { + "disksize": 1024, + "vmsize": "Standard_D64s_v3", + "diskcount": 6 + } + } + }, + "osProfile": { + "value": { + "RH7x": { + "image": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-LVM", + "version": "latest" + }, + "diskscript": "scripts/rhel_raid_azure_data.sh" + }, + "SL12": { + "image": { + "publisher": "suse", + "offer": "sles-12-sp5-basic", + "sku": "gen1", + "version": "latest" + }, + "diskscript": "scripts/sles_raid_azure_data.sh" + } + } + }, + "ostag": { + "value": "[if(equals(parameters('OperatingSystemImage'),'Red Hat Enterprise Linux 7 (latest, LVM)'),'RH7x','SL12')]" + }, + "postInstallActions": { + "value": { + "backend": { + "commandToExecute": "[concat('sh ',variables('osProfile')[variables('ostag')]['diskscript'],'; sh examplepostinstall1.sh; sh examplepostinstall2.sh')]", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('osProfile')[variables('ostag')]['diskscript'], parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/examplepostinstall1.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/examplepostinstall2.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "midtier": { + "commandToExecute": "[concat('sh ',variables('osProfile')[variables('ostag')]['diskscript'],'; sh examplepostinstall1.sh')]", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('osProfile')[variables('ostag')]['diskscript'], parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/examplepostinstall1.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "jump": { + "commandToExecute": "[concat('sh ',variables('osProfile')[variables('ostag')]['diskscript'],'; sh examplepostinstall3.sh')]", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('osProfile')[variables('ostag')]['diskscript'], parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/examplepostinstall3.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/rhel_raid_azure_data.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/sles_raid_azure_data.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + } + }, + "availabilityset_id_or_empty": { + "value": "[if(greater(parameters('BackendVMCount'),1),resourceId('Microsoft.Compute/availabilitySets',concat(parameters('BackendVMNameBase'),'-AS')),'')]" + }, + "appgatewaybackend_id_or_empty": { + "value": "[if(equals(parameters('DeployAppGatewayFrontend'),'Yes'),resourceId('Microsoft.Network/applicationGateways/backendAddressPools', 'frontend-appgateway', 'default-backend'),'')]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "templateUri": { + "type": "string" + }, + "location": { + "type": "string" + }, + "Backend VM Template": { + "type": "string" + }, + "Backend VM Name Base": { + "type": "string" + }, + "Backend VM Count": { + "type": "int" + }, + "Proximity PlacementGroup Name": { + "type": "string" + }, + "Admin User for VM Access": { + "type": "string" + }, + "ssh Key for VM Access": { + "type": "string" + }, + "Virtual Network Name": { + "type": "string" + }, + "storageProfileAdvanced": { + "type": "object" + }, + "osProfile": { + "type": "object" + }, + "ostag": { + "type": "string" + }, + "postInstallActions": { + "type": "object" + }, + "availabilityset_id_or_empty": { + "type": "string" + }, + "appgatewaybackend_id_or_empty": { + "type": "string" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ParameterizedBackendVM-copyIndex()", + "copy": { + "name": "ParameterizedBackendVM-Copy", + "count": "Backend VM Count" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "templateUri" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vm_name": { + "value": "Backend VM Name Base-copyIndex()" + }, + "vm_size": { + "value": "storageProfileAdvanced)[parameters(Backend VM Template" + }, + "datadisk_size": { + "value": "storageProfileAdvanced)[parameters(Backend VM Template" + }, + "datadisk_count": { + "value": "storageProfileAdvanced)[parameters(Backend VM Template" + }, + "proximity_group_name": { + "value": "Proximity PlacementGroup Name" + }, + "admin_user": { + "value": "Admin User for VM Access" + }, + "ssh_pub_key": { + "value": "ssh Key for VM Access" + }, + "vnet_name": { + "value": "Virtual Network Name" + }, + "vnet_subnet_name": { + "value": "backendSubnet" + }, + "os_image": { + "value": "osProfile)[parameters(ostag" + }, + "post_install_actions": { + "value": "postInstallActions" + }, + "enable_enhanced_networking": { + "value": true + }, + "publicip_id_or_empty": { + "value": "" + }, + "appgatewaybackend_id_or_empty": { + "value": "appgatewaybackend_id_or_empty" + }, + "availabilityset_id_or_empty": { + "value": "availabilityset_id_or_empty" + } + } + } + } + ], + "outputs": { + "backendIp": { + "type": "array", + "copy": { + "count": "Backend VM Count", + "input": "[reference(resourceId('Microsoft.Resources/deployments',concat('ParameterizedBackendVM-', copyIndex()))).outputs.privateIp.value]" + } + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ParameterizedMidtierVM-copyIndex()", + "copy": { + "name": "ParameterizedMidtierVM-Copy", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8", + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8", + "Microsoft.Compute/availabilitySets/GEN-UNIQUE-8-AS" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/paramvm.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vm_name": { + "value": "GEN-UNIQUE-8-copyIndex()" + }, + "vm_size": { + "value": "Standard_D2s_v3" + }, + "datadisk_size": { + "value": 128 + }, + "datadisk_count": { + "value": "(storageProfileSimple)[parameters(MidtierVMSize)]" + }, + "proximity_group_name": { + "value": "GEN-UNIQUE-8" + }, + "admin_user": { + "value": "GEN-UNIQUE-8" + }, + "ssh_pub_key": { + "value": "GEN-SSH-PUB-KEY" + }, + "vnet_name": { + "value": "GEN-UNIQUE-8" + }, + "vnet_subnet_name": { + "value": "midtierSubnet" + }, + "os_image": { + "value": "(osProfile)[variables(ostag)][image]" + }, + "post_install_actions": { + "value": "(postInstallActions)[midtier]" + }, + "enable_enhanced_networking": { + "value": "[not(equals(parameters('MidtierVMSize'),'Standard_D2s_v3'))]" + }, + "publicip_id_or_empty": { + "value": "" + }, + "appgatewaybackend_id_or_empty": { + "value": "" + }, + "availabilityset_id_or_empty": { + "value": "[if(greater(parameters('MidtierVMCount'),1),resourceId('Microsoft.Compute/availabilitySets',concat(parameters('MidtierVMNameBase'),'-AS')),'')]" + } + } + } + }, + { + "condition": false, + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "ParameterizedJumpVM", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8", + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8", + "Microsoft.Network/publicIPAddresses/frontend-jumpvm-ip", + "ParameterizedBackendVM-Loop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/paramvm.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vm_name": { + "value": "frontend-jumpvm" + }, + "vm_size": { + "value": "Standard_B2ms" + }, + "datadisk_size": { + "value": 128 + }, + "datadisk_count": { + "value": 1 + }, + "proximity_group_name": { + "value": "GEN-UNIQUE-8" + }, + "admin_user": { + "value": "GEN-UNIQUE-8" + }, + "ssh_pub_key": { + "value": "GEN-SSH-PUB-KEY" + }, + "vnet_name": { + "value": "GEN-UNIQUE-8" + }, + "vnet_subnet_name": { + "value": "frontendSubnet" + }, + "os_image": { + "value": "(osProfile)[variables(ostag)][image]" + }, + "post_install_actions": { + "value": { + "commandToExecute": "[concat(variables('postInstallActions')['jump'].commandToExecute,' ', string(reference('ParameterizedBackendVM-Loop').outputs.backendIp.value))]", + "fileUris": "(postInstallActions)[jump].fileUris" + } + }, + "enable_enhanced_networking": { + "value": false + }, + "publicip_id_or_empty": { + "value": "Microsoft.Network/publicIPAddresses/frontend-jumpvm-ip" + }, + "appgatewaybackend_id_or_empty": { + "value": "" + }, + "availabilityset_id_or_empty": { + "value": "" + } + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2019-12-01", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8", + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.2.0.0/16" + ] + }, + "subnets": [ + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.2.0.224/27" + } + }, + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "10.2.0.192/27", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8" + } + } + }, + { + "name": "frontendSubnet", + "properties": { + "addressPrefix": "10.2.0.160/27", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8" + } + } + }, + { + "name": "AppGatewaySubnet", + "properties": { + "addressPrefix": "10.2.0.128/27", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8" + } + } + }, + { + "name": "backendSubnet", + "properties": { + "addressPrefix": "10.2.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8" + } + } + }, + { + "name": "midtierSubnet", + "properties": { + "addressPrefix": "10.2.0.0/28", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-8" + } + } + } + ] + } + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-12-01", + "name": "frontend-bastion-ip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-12-01", + "name": "frontend-jumpvm-ip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "condition": false, + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2019-12-01", + "name": "frontend-appgateway-ip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "condition": false, + "type": "Microsoft.Network/bastionHosts", + "apiVersion": "2019-12-01", + "name": "bastion", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-8", + "Microsoft.Compute/proximityPlacementGroups/GEN-UNIQUE-8" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/frontend-bastion-ip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-8/AzureBastionSubnet" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT786 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT786 new file mode 100644 index 0000000..749c772 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT786 @@ -0,0 +1,2031 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/private-aks-cluster/azuredeploy.json", + "/demos/private-aks-cluster/azuredeploy.parameters.json" + ], + "timestamp": 1642962901271, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/private-aks-cluster/azuredeploy.json", + "/demos/private-aks-cluster/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT786", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT786", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "8835335675026401816" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "aksClusterName": { + "type": "string", + "defaultValue": "[format('aks-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the AKS cluster." + } + }, + "aksClusterDnsPrefix": { + "type": "string", + "defaultValue": "[parameters('aksClusterName')]", + "metadata": { + "description": "Specifies the DNS prefix specified when creating the managed cluster." + } + }, + "aksClusterTags": { + "type": "object", + "defaultValue": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "metadata": { + "description": "Specifies the tags of the AKS cluster." + } + }, + "aksClusterNetworkPlugin": { + "type": "string", + "defaultValue": "azure", + "allowedValues": [ + "azure", + "kubenet" + ], + "metadata": { + "description": "Specifies the network plugin used for building Kubernetes network. - azure or kubenet." + } + }, + "aksClusterNetworkPolicy": { + "type": "string", + "defaultValue": "azure", + "allowedValues": [ + "azure", + "calico" + ], + "metadata": { + "description": "Specifies the network policy used for building Kubernetes network. - calico or azure" + } + }, + "aksClusterPodCidr": { + "type": "string", + "defaultValue": "10.244.0.0/16", + "metadata": { + "description": "Specifies the CIDR notation IP range from which to assign pod IPs when kubenet is used." + } + }, + "aksClusterServiceCidr": { + "type": "string", + "defaultValue": "10.2.0.0/16", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges." + } + }, + "aksClusterDnsServiceIP": { + "type": "string", + "defaultValue": "10.2.0.10", + "metadata": { + "description": "Specifies the IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr." + } + }, + "aksClusterDockerBridgeCidr": { + "type": "string", + "defaultValue": "172.17.0.1/16", + "metadata": { + "description": "Specifies the CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any Subnet IP ranges or the Kubernetes service address range." + } + }, + "aksClusterLoadBalancerSku": { + "type": "string", + "defaultValue": "standard", + "allowedValues": [ + "basic", + "standard" + ], + "metadata": { + "description": "Specifies the sku of the load balancer used by the virtual machine scale sets used by nodepools." + } + }, + "aksClusterSkuTier": { + "type": "string", + "defaultValue": "Paid", + "allowedValues": [ + "Paid", + "Free" + ], + "metadata": { + "description": "Specifies the tier of a managed cluster SKU: Paid or Free" + } + }, + "aksClusterKubernetesVersion": { + "type": "string", + "defaultValue": "1.21.1", + "metadata": { + "description": "Specifies the version of Kubernetes specified when creating the managed cluster." + } + }, + "aksClusterAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the administrator username of Linux virtual machines." + }, + "value": "GEN-UNIQUE" + }, + "aksClusterSshPublicKey": { + "type": "string", + "metadata": { + "description": "Specifies the SSH RSA public key string for the Linux nodes." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "aadEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether enabling AAD integration." + } + }, + "aadProfileTenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant id of the Azure Active Directory used by the AKS cluster for authentication." + } + }, + "aadProfileAdminGroupObjectIDs": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Specifies the AAD group object IDs that will have admin role of the cluster." + } + }, + "aksClusterEnablePrivateCluster": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to create the cluster as a private cluster or not." + } + }, + "aadProfileManaged": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to enable managed AAD integration." + } + }, + "aadProfileEnableAzureRBAC": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to to enable Azure RBAC for Kubernetes authorization." + } + }, + "nodePoolName": { + "type": "string", + "defaultValue": "nodepool1", + "metadata": { + "description": "Specifies the unique name of the node pool profile in the context of the subscription and resource group." + } + }, + "nodePoolVmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the vm size of nodes in the node pool." + } + }, + "nodePoolOsDiskSizeGB": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "Specifies the OS Disk Size in GB to be used to specify the disk size for every machine in this master/agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.." + } + }, + "nodePoolCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Specifies the number of agents (VMs) to host docker containers. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1." + } + }, + "nodePoolOsType": { + "type": "string", + "defaultValue": "Linux", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Specifies the OS type for the vms in the node pool. Choose from Linux and Windows. Default to Linux." + } + }, + "nodePoolMaxPods": { + "type": "int", + "defaultValue": 30, + "metadata": { + "description": "Specifies the maximum number of pods that can run on a node. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment." + } + }, + "nodePoolMaxCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Specifies the maximum number of nodes for auto-scaling for the node pool." + } + }, + "nodePoolMinCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Specifies the minimum number of nodes for auto-scaling for the node pool." + } + }, + "nodePoolEnableAutoScaling": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to enable auto-scaling for the node pool." + } + }, + "nodePoolScaleSetPriority": { + "type": "string", + "defaultValue": "Regular", + "allowedValues": [ + "Spot", + "Regular" + ], + "metadata": { + "description": "Specifies the virtual machine scale set priority: Spot or Regular." + } + }, + "nodePoolNodeLabels": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Specifies the Agent pool node labels to be persisted across all nodes in agent pool." + } + }, + "nodePoolNodeTaints": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. - string" + } + }, + "nodePoolMode": { + "type": "string", + "defaultValue": "System", + "allowedValues": [ + "System", + "User" + ], + "metadata": { + "description": "Specifies the mode of an agent pool: System or User" + } + }, + "nodePoolType": { + "type": "string", + "defaultValue": "VirtualMachineScaleSets", + "allowedValues": [ + "VirtualMachineScaleSets", + "AvailabilitySet" + ], + "metadata": { + "description": "Specifies the type of a node pool: VirtualMachineScaleSets or AvailabilitySet" + } + }, + "nodePoolAvailabilityZones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Specifies the availability zones for nodes. Requirese the use of VirtualMachineScaleSets as node pool type." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "[format('{0}Vnet', parameters('aksClusterName'))]", + "metadata": { + "description": "Specifies the name of the virtual network." + } + }, + "virtualNetworkAddressPrefixes": { + "type": "string", + "defaultValue": "10.0.0.0/8", + "metadata": { + "description": "Specifies the address prefixes of the virtual network." + } + }, + "aksSubnetName": { + "type": "string", + "defaultValue": "AksSubnet", + "metadata": { + "description": "Specifies the name of the default subnet hosting the AKS cluster." + } + }, + "aksSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the AKS cluster." + } + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Log Analytics Workspace." + }, + "value": "GEN-UNIQUE" + }, + "logAnalyticsSku": { + "type": "string", + "defaultValue": "PerGB2018", + "allowedValues": [ + "Free", + "Standalone", + "PerNode", + "PerGB2018" + ], + "metadata": { + "description": "Specifies the service tier of the workspace: Free, Standalone, PerNode, Per-GB." + } + }, + "logAnalyticsRetentionInDays": { + "type": "int", + "defaultValue": 60, + "metadata": { + "description": "Specifies the workspace data retention in days. -1 means Unlimited retention for the Unlimited Sku. 730 days is the maximum allowed for all other Skus." + } + }, + "vmSubnetName": { + "type": "string", + "defaultValue": "VmSubnet", + "metadata": { + "description": "Specifies the name of the subnet which contains the virtual machine." + } + }, + "vmSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "Specifies the address prefix of the subnet which contains the virtual machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrKey": { + "type": "secureString", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS", + "UltraSSD_LRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "maxValue": 64, + "minValue": 0, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[format('blob{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + }, + "bastionSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.1.0/26", + "metadata": { + "description": "Specifies the Bastion subnet IP prefix. This prefix must be within vnet IP prefix address space." + } + }, + "bastionName": { + "type": "string", + "defaultValue": "[format('{0}Bastion', parameters('aksClusterName'))]", + "metadata": { + "description": "Specifies the name of the Azure Bastion resource." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "vnet", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "[format('{0}Vnet', parameters('aksClusterName'))]" + }, + "virtualNetworkAddressPrefixes": { + "value": "10.0.0.0/8" + }, + "aksSubnetName": { + "value": "AksSubnet" + }, + "aksSubnetAddressPrefix": { + "value": "10.0.0.0/16" + }, + "bastionSubnetAddressPrefix": { + "value": "10.1.1.0/26" + }, + "vmSubnetName": { + "value": "VmSubnet" + }, + "vmSubnetAddressPrefix": { + "value": "10.1.0.0/24" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "13404250149512381608" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "bastionSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.1.0/26", + "metadata": { + "description": "Specifies the Bastion subnet IP prefix. This prefix must be within vnet IP prefix address space." + } + }, + "vmSubnetName": { + "type": "string", + "defaultValue": "VmSubnet", + "metadata": { + "description": "Specifies the name of the subnet which contains the virtual machine." + } + }, + "vmSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "Specifies the address prefix of the subnet which contains the virtual machine." + } + }, + "aksSubnetName": { + "type": "string", + "defaultValue": "AksSubnet", + "metadata": { + "description": "Specifies the name of the default subnet hosting the AKS cluster." + } + }, + "aksSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the AKS cluster." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network." + } + }, + "virtualNetworkAddressPrefixes": { + "type": "string", + "defaultValue": "10.0.0.0/8", + "metadata": { + "description": "Specifies the address prefixes of the virtual network." + } + } + }, + "functions": [], + "variables": { + "bastionSubnetName": "AzureBastionSubnet", + "bastionSubnetNsgName": "[format('{0}Nsg', variables('bastionSubnetName'))]", + "vmSubnetNsgName": "[format('{0}Nsg', parameters('vmSubnetName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "vmSubnetNsgName", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "bastionSubnetNsgName", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "bastionInAllow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "Internet", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "bastionControlInAllow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "GatewayManager", + "destinationPortRanges": [ + "443", + "4443" + ], + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "AllowLoadBalancerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "AllowBastionHostCommunicationInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 140, + "direction": "Inbound" + } + }, + { + "name": "bastionInDeny", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 900, + "direction": "Inbound" + } + }, + { + "name": "bastionVnetOutAllow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRanges": [ + "22", + "3389" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "bastionAzureOutAllow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "443", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 120, + "direction": "Outbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "[format('{0}Vnet', parameters('aksClusterName'))]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/8" + ] + }, + "subnets": [ + { + "name": "AksSubnet", + "properties": { + "addressPrefix": "10.0.0.0/16", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "VmSubnet", + "properties": { + "addressPrefix": "10.1.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/vmSubnetNsgName" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "bastionSubnetName", + "properties": { + "addressPrefix": "10.1.1.0/26", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/bastionSubnetNsgName" + } + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/bastionSubnetNsgName", + "Microsoft.Network/networkSecurityGroups/vmSubnetNsgName" + ] + } + ], + "outputs": { + "virtualNetworkResourceId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/[format('{0}Vnet', parameters('aksClusterName'))]" + }, + "bastionSubnetId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/[format('{0}Vnet', parameters('aksClusterName'))]/bastionSubnetName" + }, + "aksSubnetId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/[format('{0}Vnet', parameters('aksClusterName'))]/AksSubnet" + }, + "vmSubnetId": { + "type": "string", + "value": "Microsoft.Network/virtualNetworks/subnets/[format('{0}Vnet', parameters('aksClusterName'))]/VmSubnet" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "bastion", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "bastionHostName": { + "value": "[format('{0}Bastion', parameters('aksClusterName'))]" + }, + "bastionSubnetId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'vnet'), '2019-10-01').outputs.bastionSubnetId.value]" + }, + "location": { + "value": "[resourceGroup().location]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "7872254577357874088" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "bastionHostName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Azure Bastion resource." + } + }, + "bastionSubnetId": { + "type": "string", + "metadata": { + "description": "Specifies the id of the Azure Bastion subnet resource id." + } + } + }, + "functions": [], + "variables": { + "bastionPublicIpAddressName": "[format('{0}PublicIp', parameters('bastionHostName'))]" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "bastionPublicIpAddressName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "type": "Microsoft.Network/bastionHosts", + "apiVersion": "2020-08-01", + "name": "bastionHostName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "subnet": { + "id": "bastionSubnetId" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/bastionPublicIpAddressName" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/bastionPublicIpAddressName" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/vnet" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "log-analytics.bicep", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "logAnalyticsWorkspaceName": { + "value": "GEN-UNIQUE" + }, + "logAnalyticsSku": { + "value": "PerGB2018" + }, + "logAnalyticsRetentionInDays": { + "value": 60 + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "1889975189936911116" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Log Analytics Workspace." + } + }, + "logAnalyticsSku": { + "type": "string", + "defaultValue": "PerGB2018", + "metadata": { + "description": "Specifies the service tier of the workspace: Free, Standalone, PerNode, Per-GB." + }, + "allowedValues": [ + "Free", + "Standalone", + "PerNode", + "PerGB2018" + ] + }, + "logAnalyticsRetentionInDays": { + "type": "int", + "defaultValue": 60, + "metadata": { + "description": "Specifies the workspace data retention in days. -1 means Unlimited retention for the Unlimited Sku. 730 days is the maximum allowed for all other Skus." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-10-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + }, + "retentionInDays": 60 + } + } + ], + "outputs": { + "logAnalyticsWorkspaceId": { + "type": "string", + "value": "Microsoft.OperationalInsights/workspaces/GEN-UNIQUE" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "jumpbox", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "TestVm" + }, + "vmAdminUsername": { + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrKey": { + "value": "GEN-PASSWORD" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "authenticationType": { + "value": "password" + }, + "diskStorageAccounType": { + "value": "Premium_LRS" + }, + "osDiskSize": { + "value": 50 + }, + "dataDiskCaching": { + "value": "ReadWrite" + }, + "dataDiskSize": { + "value": 50 + }, + "numDataDisks": { + "value": 1 + }, + "imageOffer": { + "value": "UbuntuServer" + }, + "imagePublisher": { + "value": "Canonical" + }, + "imageSku": { + "value": "18.04-LTS" + }, + "blobStorageAccountName": { + "value": "[format('blob{0}', uniqueString(resourceGroup().id))]" + }, + "blobStorageAccountPrivateEndpointName": { + "value": "BlobStorageAccountPrivateEndpoint" + }, + "logAnalyticsWorkspaceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'log-analytics.bicep'), '2019-10-01').outputs.logAnalyticsWorkspaceId.value]" + }, + "virtualNetworkId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'vnet'), '2019-10-01').outputs.virtualNetworkResourceId.value]" + }, + "vmSubnetId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'vnet'), '2019-10-01').outputs.vmSubnetId.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "14077010491250246894" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "virtualNetworkId": { + "type": "string", + "metadata": { + "description": "Specifies the id of the virtual network." + } + }, + "vmSubnetId": { + "type": "string", + "metadata": { + "description": "Specifies the idof the subnet which contains the virtual machine." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_DS3_v2", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + }, + "allowedValues": [ + "sshPublicKey", + "password" + ] + }, + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + } + }, + "vmAdminPasswordOrKey": { + "type": "secureString", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + } + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + }, + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS", + "UltraSSD_LRS" + ] + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + }, + "maxValue": 64, + "minValue": 0 + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[format('blob{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "metadata": { + "description": "Specifies the id of the Log Analytics Workspace." + } + } + }, + "functions": [], + "variables": { + "vmNicName": "[format('{0}Nic', parameters('vmName'))]", + "blobPublicDNSZoneForwarder": "[format('.blob.{0}', environment().suffixes.storage)]", + "blobPrivateDnsZoneName": "[format('privatelink{0}', variables('blobPublicDNSZoneForwarder'))]", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "omsAgentForLinuxName": "LogAnalytics", + "omsDependencyAgentForLinuxName": "DependencyAgent", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "[format('/home/{0}/.ssh/authorized_keys', parameters('vmAdminUsername'))]", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "virtualNetworkName": "[last(split(parameters('virtualNetworkId'), '/'))]", + "logAnalyticsWorkspaceName": "[last(split(parameters('logAnalyticsWorkspaceId'), '/'))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[format('blob{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-08-01", + "name": "vmNicName", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "vmSubnetId" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "TestVm", + "location": "[resourceGroup().location]", + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), null(), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "copy": [ + { + "name": "dataDisks", + "count": 36, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 50, + "lun": "[range(0, parameters('numDataDisks'))[copyIndex('dataDisks')]]", + "name": "[format('{0}-DataDisk{1}', parameters('vmName'), range(0, parameters('numDataDisks'))[copyIndex('dataDisks')])]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ], + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "[format('{0}_OSDisk', parameters('vmName'))]", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 50, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmNicName" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('blobStorageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('blob{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/networkInterfaces/vmNicName" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', parameters('vmName'), variables('omsAgentForLinuxName'))]", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.13", + "settings": { + "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces', variables('logAnalyticsWorkspaceName')), '2020-10-01').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces', variables('logAnalyticsWorkspaceName')), '2020-10-01').primarySharedKey]" + } + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[format('{0}/{1}', parameters('vmName'), variables('omsDependencyAgentForLinuxName'))]", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "blobPrivateDnsZoneName", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('blobPrivateDnsZoneName'), format('link_to_{0}', toLower(variables('virtualNetworkName'))))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "virtualNetworkId" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/blobPrivateDnsZoneName" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-08-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[format('blob{0}', uniqueString(resourceGroup().id))]", + "groupIds": [ + "blobStorageAccountPrivateEndpointGroupName" + ] + } + } + ], + "subnet": { + "id": "vmSubnetId" + }, + "customDnsConfigs": [ + { + "fqdn": "[format('{0}{1}', parameters('blobStorageAccountName'), variables('blobPublicDNSZoneForwarder'))]" + } + ] + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('blob{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-08-01", + "name": "[format('{0}/{1}', parameters('blobStorageAccountPrivateEndpointName'), format('{0}PrivateDnsZoneGroup', variables('blobStorageAccountPrivateEndpointGroupName')))]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/blobPrivateDnsZoneName" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/blobPrivateDnsZoneName", + "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/log-analytics.bicep", + "Microsoft.Resources/deployments/vnet" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "aks", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "aadEnabled": { + "value": false + }, + "aadProfileAdminGroupObjectIDs": { + "value": [] + }, + "aadProfileEnableAzureRBAC": { + "value": false + }, + "aadProfileManaged": { + "value": false + }, + "aadProfileTenantId": { + "value": "[subscription().tenantId]" + }, + "aksClusterAdminUsername": { + "value": "GEN-UNIQUE" + }, + "aksClusterDnsPrefix": { + "value": "[parameters('aksClusterName')]" + }, + "aksClusterDnsServiceIP": { + "value": "10.2.0.10" + }, + "aksClusterDockerBridgeCidr": { + "value": "172.17.0.1/16" + }, + "aksClusterEnablePrivateCluster": { + "value": true + }, + "aksClusterKubernetesVersion": { + "value": "1.21.1" + }, + "aksClusterLoadBalancerSku": { + "value": "standard" + }, + "aksClusterName": { + "value": "[format('aks-{0}', uniqueString(resourceGroup().id))]" + }, + "aksClusterNetworkPlugin": { + "value": "azure" + }, + "aksClusterNetworkPolicy": { + "value": "azure" + }, + "aksClusterPodCidr": { + "value": "10.244.0.0/16" + }, + "aksClusterServiceCidr": { + "value": "10.2.0.0/16" + }, + "aksClusterSkuTier": { + "value": "Paid" + }, + "aksClusterSshPublicKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "aksClusterTags": { + "value": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + } + }, + "aksSubnetName": { + "value": "AksSubnet" + }, + "nodePoolAvailabilityZones": { + "value": [] + }, + "nodePoolCount": { + "value": 5 + }, + "nodePoolEnableAutoScaling": { + "value": true + }, + "nodePoolMaxCount": { + "value": 5 + }, + "nodePoolMaxPods": { + "value": 30 + }, + "nodePoolMinCount": { + "value": 3 + }, + "nodePoolMode": { + "value": "System" + }, + "nodePoolName": { + "value": "nodepool1" + }, + "nodePoolNodeLabels": { + "value": {} + }, + "nodePoolNodeTaints": { + "value": [] + }, + "nodePoolOsDiskSizeGB": { + "value": 100 + }, + "nodePoolOsType": { + "value": "Linux" + }, + "nodePoolScaleSetPriority": { + "value": "Regular" + }, + "nodePoolType": { + "value": "VirtualMachineScaleSets" + }, + "nodePoolVmSize": { + "value": "Standard_D4s_v3" + }, + "virtualNetworkId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'vnet'), '2019-10-01').outputs.virtualNetworkResourceId.value]" + }, + "logAnalyticsWorkspaceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'log-analytics.bicep'), '2019-10-01').outputs.logAnalyticsWorkspaceId.value]" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.613.9944", + "templateHash": "5939773716927315139" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "aksClusterName": { + "type": "string", + "defaultValue": "[format('aks-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the AKS cluster." + } + }, + "aksClusterDnsPrefix": { + "type": "string", + "defaultValue": "[format('aks-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the DNS prefix specified when creating the managed cluster." + } + }, + "aksClusterTags": { + "type": "object", + "defaultValue": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "metadata": { + "description": "Specifies the tags of the AKS cluster." + } + }, + "aksClusterNetworkPlugin": { + "type": "string", + "defaultValue": "azure", + "metadata": { + "description": "Specifies the network plugin used for building Kubernetes network. - azure or kubenet." + }, + "allowedValues": [ + "azure", + "kubenet" + ] + }, + "aksClusterNetworkPolicy": { + "type": "string", + "defaultValue": "azure", + "metadata": { + "description": "Specifies the network policy used for building Kubernetes network. - calico or azure" + }, + "allowedValues": [ + "azure", + "calico" + ] + }, + "aksClusterPodCidr": { + "type": "string", + "defaultValue": "10.244.0.0/16", + "metadata": { + "description": "Specifies the CIDR notation IP range from which to assign pod IPs when kubenet is used." + } + }, + "aksClusterServiceCidr": { + "type": "string", + "defaultValue": "10.2.0.0/16", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges." + } + }, + "aksClusterDnsServiceIP": { + "type": "string", + "defaultValue": "10.2.0.10", + "metadata": { + "description": "Specifies the IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr." + } + }, + "aksClusterDockerBridgeCidr": { + "type": "string", + "defaultValue": "172.17.0.1/16", + "metadata": { + "description": "Specifies the CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any Subnet IP ranges or the Kubernetes service address range." + } + }, + "aksClusterLoadBalancerSku": { + "type": "string", + "defaultValue": "standard", + "metadata": { + "description": "Specifies the sku of the load balancer used by the virtual machine scale sets used by nodepools." + }, + "allowedValues": [ + "basic", + "standard" + ] + }, + "aksClusterSkuTier": { + "type": "string", + "defaultValue": "Paid", + "metadata": { + "description": "Specifies the tier of a managed cluster SKU: Paid or Free" + }, + "allowedValues": [ + "Paid", + "Free" + ] + }, + "aksClusterKubernetesVersion": { + "type": "string", + "defaultValue": "1.19.7", + "metadata": { + "description": "Specifies the version of Kubernetes specified when creating the managed cluster." + } + }, + "aksClusterAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the administrator username of Linux virtual machines." + } + }, + "aksClusterSshPublicKey": { + "type": "string", + "metadata": { + "description": "Specifies the SSH RSA public key string for the Linux nodes." + } + }, + "aadEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether enabling AAD integration." + } + }, + "aadProfileTenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the tenant id of the Azure Active Directory used by the AKS cluster for authentication." + } + }, + "aadProfileAdminGroupObjectIDs": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Specifies the AAD group object IDs that will have admin role of the cluster." + } + }, + "aksClusterEnablePrivateCluster": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to create the cluster as a private cluster or not." + } + }, + "aadProfileManaged": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to enable managed AAD integration." + } + }, + "aadProfileEnableAzureRBAC": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether to to enable Azure RBAC for Kubernetes authorization." + } + }, + "nodePoolName": { + "type": "string", + "defaultValue": "nodepool1", + "metadata": { + "description": "Specifies the unique name of the node pool profile in the context of the subscription and resource group." + } + }, + "nodePoolVmSize": { + "type": "string", + "defaultValue": "Standard_DS3_v2", + "metadata": { + "description": "Specifies the vm size of nodes in the node pool." + } + }, + "nodePoolOsDiskSizeGB": { + "type": "int", + "defaultValue": 100, + "metadata": { + "description": "Specifies the OS Disk Size in GB to be used to specify the disk size for every machine in this master/agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.." + } + }, + "nodePoolCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Specifies the number of agents (VMs) to host docker containers. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1." + } + }, + "nodePoolOsType": { + "type": "string", + "defaultValue": "Linux", + "metadata": { + "description": "Specifies the OS type for the vms in the node pool. Choose from Linux and Windows. Default to Linux." + }, + "allowedValues": [ + "Linux", + "Windows" + ] + }, + "nodePoolMaxPods": { + "type": "int", + "defaultValue": 30, + "metadata": { + "description": "Specifies the maximum number of pods that can run on a node. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment." + } + }, + "nodePoolMaxCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Specifies the maximum number of nodes for auto-scaling for the node pool." + } + }, + "nodePoolMinCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Specifies the minimum number of nodes for auto-scaling for the node pool." + } + }, + "nodePoolEnableAutoScaling": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether to enable auto-scaling for the node pool." + } + }, + "nodePoolScaleSetPriority": { + "type": "string", + "defaultValue": "Regular", + "metadata": { + "description": "Specifies the virtual machine scale set priority: Spot or Regular." + }, + "allowedValues": [ + "Spot", + "Regular" + ] + }, + "nodePoolNodeLabels": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Specifies the Agent pool node labels to be persisted across all nodes in agent pool." + } + }, + "nodePoolNodeTaints": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. - string" + } + }, + "nodePoolMode": { + "type": "string", + "defaultValue": "System", + "metadata": { + "description": "Specifies the mode of an agent pool: System or User" + }, + "allowedValues": [ + "System", + "User" + ] + }, + "nodePoolType": { + "type": "string", + "defaultValue": "VirtualMachineScaleSets", + "metadata": { + "description": "Specifies the type of a node pool: VirtualMachineScaleSets or AvailabilitySet" + }, + "allowedValues": [ + "VirtualMachineScaleSets", + "AvailabilitySet" + ] + }, + "nodePoolAvailabilityZones": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Specifies the availability zones for nodes. Requirese the use of VirtualMachineScaleSets as node pool type." + } + }, + "virtualNetworkId": { + "type": "string", + "metadata": { + "description": "Specifies the id of the virtual network." + } + }, + "aksSubnetName": { + "type": "string", + "defaultValue": "AksSubnet", + "metadata": { + "description": "Specifies the name of the default subnet hosting the AKS cluster." + } + }, + "logAnalyticsWorkspaceId": { + "type": "string", + "metadata": { + "description": "Specifies the name of the Log Analytics Workspace." + } + } + }, + "functions": [], + "variables": { + "aadProfileConfiguration": { + "managed": false, + "enableAzureRBAC": false, + "adminGroupObjectIDs": [], + "tenantID": "[subscription().tenantId]" + }, + "virtualNetworkName": "[last(split(parameters('virtualNetworkId'), '/'))]" + }, + "resources": [ + { + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2021-02-01", + "name": "[format('aks-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "SystemAssigned" + }, + "tags": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "sku": { + "name": "Basic", + "tier": "Paid" + }, + "properties": { + "kubernetesVersion": "1.21.1", + "dnsPrefix": "[parameters('aksClusterName')]", + "agentPoolProfiles": [ + { + "name": "[toLower(parameters('nodePoolName'))]", + "count": 5, + "vmSize": "Standard_D4s_v3", + "osDiskSizeGB": 100, + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/virtualNetworkName/AksSubnet", + "maxPods": 30, + "osType": "Linux", + "maxCount": 5, + "minCount": 3, + "scaleSetPriority": "Regular", + "enableAutoScaling": true, + "mode": "System", + "type": "VirtualMachineScaleSets", + "availabilityZones": "[if(empty(parameters('nodePoolAvailabilityZones')), null(), parameters('nodePoolAvailabilityZones'))]", + "nodeLabels": {}, + "nodeTaints": [] + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "addonProfiles": { + "omsagent": { + "enabled": true, + "config": { + "logAnalyticsWorkspaceResourceID": "logAnalyticsWorkspaceId" + } + } + }, + "enableRBAC": true, + "networkProfile": { + "networkPlugin": "azure", + "networkPolicy": "azure", + "podCidr": "10.244.0.0/16", + "serviceCidr": "10.2.0.0/16", + "dnsServiceIP": "10.2.0.10", + "dockerBridgeCidr": "172.17.0.1/16", + "loadBalancerSku": "standard" + }, + "aadProfile": "[if(parameters('aadEnabled'), variables('aadProfileConfiguration'), null())]", + "apiServerAccessProfile": { + "enablePrivateCluster": true + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + }, + "dependsOn": [ + "Microsoft.Resources/deployments/log-analytics.bicep", + "Microsoft.Resources/deployments/vnet" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT787 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT787 new file mode 100644 index 0000000..9a7691e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT787 @@ -0,0 +1,1993 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/private-aks-cluster-with-public-dns-zone/azuredeploy.json", + "/demos/private-aks-cluster-with-public-dns-zone/azuredeploy.parameters.json" + ], + "timestamp": 1642962901299, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/private-aks-cluster-with-public-dns-zone/azuredeploy.json", + "/demos/private-aks-cluster-with-public-dns-zone/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT787", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.compute/virtualmachines/extensions", + "microsoft.network/bastionhosts", + "microsoft.network/privateendpoints", + "microsoft.network/virtualnetworks", + "microsoft.authorization/roleassignments", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.operationalinsights/workspaces", + "microsoft.containerservice/managedclusters", + "microsoft.managedidentity/userassignedidentities", + "microsoft.keyvault/vaults", + "microsoft.network/privatednszones", + "microsoft.network/networkinterfaces", + "microsoft.insights/activitylogalerts", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.containerregistry/registries", + "microsoft.network/networksecuritygroups", + "microsoft.operationsmanagement/solutions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT787", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "location": { + "defaultValue": "[resourceGroup().location]", + "type": "string", + "metadata": { + "description": "Specifies the location of AKS cluster." + } + }, + "aksClusterName": { + "defaultValue": "[concat('aks-', uniqueString(resourceGroup().id))]", + "type": "string", + "metadata": { + "description": "Specifies the name of the AKS cluster." + } + }, + "aksClusterDnsPrefix": { + "defaultValue": "[parameters('aksClusterName')]", + "type": "string", + "metadata": { + "description": "Specifies the DNS prefix specified when creating the managed cluster." + } + }, + "aksClusterTags": { + "defaultValue": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "type": "object", + "metadata": { + "description": "Specifies the tags of the AKS cluster." + } + }, + "aksClusterNetworkPlugin": { + "defaultValue": "azure", + "type": "string", + "allowedValues": [ + "azure", + "kubenet" + ], + "metadata": { + "description": "Specifies the network plugin used for building Kubernetes network. - azure or kubenet." + } + }, + "aksClusterNetworkPolicy": { + "defaultValue": "azure", + "type": "string", + "allowedValues": [ + "azure", + "calico" + ], + "metadata": { + "description": "Specifies the network policy used for building Kubernetes network. - calico or azure" + } + }, + "aksClusterPodCidr": { + "defaultValue": "10.244.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the CIDR notation IP range from which to assign pod IPs when kubenet is used." + } + }, + "aksClusterServiceCidr": { + "defaultValue": "10.3.0.0/16", + "type": "string", + "metadata": { + "description": "A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges." + } + }, + "aksClusterDnsServiceIP": { + "defaultValue": "10.3.0.10", + "type": "string", + "metadata": { + "description": "Specifies the IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr." + } + }, + "aksClusterDockerBridgeCidr": { + "defaultValue": "172.17.0.1/16", + "type": "string", + "metadata": { + "description": "Specifies the CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any Subnet IP ranges or the Kubernetes service address range." + } + }, + "aksClusterLoadBalancerSku": { + "defaultValue": "standard", + "type": "string", + "allowedValues": [ + "basic", + "standard" + ], + "metadata": { + "description": "Specifies the sku of the load balancer used by the virtual machine scale sets used by nodepools." + } + }, + "aksClusterOutboundType": { + "defaultValue": "loadBalancer", + "type": "string", + "allowedValues": [ + "loadBalancer", + "userDefinedRouting" + ], + "metadata": { + "description": "Specifies outbound (egress) routing method. - loadBalancer or userDefinedRouting." + } + }, + "aksClusterSkuTier": { + "type": "string", + "defaultValue": "Paid", + "allowedValues": [ + "Paid", + "Free" + ], + "metadata": { + "description": "Specifies the tier of a managed cluster SKU: Paid or Free" + } + }, + "aksClusterKubernetesVersion": { + "type": "string", + "defaultValue": "1.21.2", + "metadata": { + "description": "Specifies the version of Kubernetes specified when creating the managed cluster." + } + }, + "aksClusterAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the administrator username of Linux virtual machines." + }, + "value": "GEN-UNIQUE" + }, + "aksClusterSshPublicKey": { + "defaultValue": null, + "type": "string", + "metadata": { + "description": "Specifies the SSH RSA public key string for the Linux nodes." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "aadProfileTenantId": { + "defaultValue": "[subscription().tenantId]", + "type": "string", + "metadata": { + "description": "Specifies the tenant id of the Azure Active Directory used by the AKS cluster for authentication." + } + }, + "aadProfileAdminGroupObjectIDs": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the AAD group object IDs that will have admin role of the cluster." + } + }, + "aksUpgradeChannel": { + "defaultValue": "stable", + "type": "string", + "allowedValues": [ + "rapid", + "stable", + "patch", + "node-image", + "none" + ], + "metadata": { + "description": "Specifies the upgrade channel for auto upgrade. Allowed values include rapid, stable, patch, node-image, none." + } + }, + "aksClusterEnablePrivateCluster": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to create the cluster as a private cluster or not." + } + }, + "aksPrivateDNSZone": { + "defaultValue": "none", + "type": "string", + "metadata": { + "description": "Specifies the Private DNS Zone mode for private cluster. When the value is equal to None, a Public DNS Zone is used in place of a Private DNS Zone" + } + }, + "aksEnablePrivateClusterPublicFQDN": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to create additional public FQDN for private cluster or not." + } + }, + "aadProfileManaged": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable managed AAD integration." + } + }, + "aadProfileEnableAzureRBAC": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to to enable Azure RBAC for Kubernetes authorization." + } + }, + "systemNodePoolName": { + "defaultValue": "system", + "type": "string", + "metadata": { + "description": "Specifies the unique name of of the system node pool profile in the context of the subscription and resource group." + } + }, + "systemNodePoolVmSize": { + "defaultValue": "Standard_D16s_v3", + "type": "string", + "metadata": { + "description": "Specifies the vm size of nodes in the system node pool." + } + }, + "systemNodePoolOsDiskSizeGB": { + "defaultValue": 100, + "type": "int", + "metadata": { + "description": "Specifies the OS Disk Size in GB to be used to specify the disk size for every machine in the system agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified." + } + }, + "systemNodePoolOsDiskType": { + "defaultValue": "Ephemeral", + "type": "string", + "allowedValues": [ + "Ephemeral", + "Managed" + ], + "metadata": { + "description": "Specifies the OS disk type to be used for machines in a given agent pool. Allowed values are 'Ephemeral' and 'Managed'. If unspecified, defaults to 'Ephemeral' when the VM supports ephemeral OS and has a cache disk larger than the requested OSDiskSizeGB. Otherwise, defaults to 'Managed'. May not be changed after creation. - Managed or Ephemeral" + } + }, + "systemNodePoolAgentCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the number of agents (VMs) to host docker containers in the system node pool. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1." + } + }, + "systemNodePoolOsType": { + "defaultValue": "Linux", + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Specifies the OS type for the vms in the system node pool. Choose from Linux and Windows. Default to Linux." + } + }, + "systemNodePoolMaxPods": { + "defaultValue": 30, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of pods that can run on a node in the system node pool. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment." + } + }, + "systemNodePoolMaxCount": { + "defaultValue": 5, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of nodes for auto-scaling for the system node pool." + } + }, + "systemNodePoolMinCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the minimum number of nodes for auto-scaling for the system node pool." + } + }, + "systemNodePoolEnableAutoScaling": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable auto-scaling for the system node pool." + } + }, + "systemNodePoolScaleSetPriority": { + "defaultValue": "Regular", + "allowedValues": [ + "Spot", + "Regular" + ], + "type": "string", + "metadata": { + "description": "Specifies the virtual machine scale set priority in the system node pool: Spot or Regular." + } + }, + "systemNodePoolScaleSetEvictionPolicy": { + "defaultValue": "Delete", + "allowedValues": [ + "Delete", + "Deallocate" + ], + "type": "string", + "metadata": { + "description": "Specifies the ScaleSetEvictionPolicy to be used to specify eviction policy for spot virtual machine scale set. Default to Delete. Allowed values are Delete or Deallocate." + } + }, + "systemNodePoolNodeLabels": { + "defaultValue": {}, + "type": "object", + "metadata": { + "description": "Specifies the Agent pool node labels to be persisted across all nodes in the system node pool." + } + }, + "systemNodePoolNodeTaints": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. - string" + } + }, + "systemNodePoolType": { + "defaultValue": "VirtualMachineScaleSets", + "type": "string", + "allowedValues": [ + "VirtualMachineScaleSets", + "AvailabilitySet" + ], + "metadata": { + "description": "Specifies the type for the system node pool: VirtualMachineScaleSets or AvailabilitySet" + } + }, + "systemNodePoolAvailabilityZones": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the availability zones for the agent nodes in the system node pool. Requirese the use of VirtualMachineScaleSets as node pool type." + } + }, + "userNodePoolName": { + "defaultValue": "user", + "type": "string", + "metadata": { + "description": "Specifies the unique name of of the user node pool profile in the context of the subscription and resource group." + } + }, + "userNodePoolVmSize": { + "defaultValue": "Standard_D16s_v3", + "type": "string", + "metadata": { + "description": "Specifies the vm size of nodes in the user node pool." + } + }, + "userNodePoolOsDiskSizeGB": { + "defaultValue": 100, + "type": "int", + "metadata": { + "description": "Specifies the OS Disk Size in GB to be used to specify the disk size for every machine in the system agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.." + } + }, + "userNodePoolOsDiskType": { + "defaultValue": "Ephemeral", + "type": "string", + "allowedValues": [ + "Ephemeral", + "Managed" + ], + "metadata": { + "description": "Specifies the OS disk type to be used for machines in a given agent pool. Allowed values are 'Ephemeral' and 'Managed'. If unspecified, defaults to 'Ephemeral' when the VM supports ephemeral OS and has a cache disk larger than the requested OSDiskSizeGB. Otherwise, defaults to 'Managed'. May not be changed after creation. - Managed or Ephemeral" + } + }, + "userNodePoolAgentCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the number of agents (VMs) to host docker containers in the user node pool. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1." + } + }, + "userNodePoolOsType": { + "defaultValue": "Linux", + "type": "string", + "allowedValues": [ + "Linux", + "Windows" + ], + "metadata": { + "description": "Specifies the OS type for the vms in the user node pool. Choose from Linux and Windows. Default to Linux." + } + }, + "userNodePoolMaxPods": { + "defaultValue": 30, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of pods that can run on a node in the user node pool. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment." + } + }, + "userNodePoolMaxCount": { + "defaultValue": 5, + "type": "int", + "metadata": { + "description": "Specifies the maximum number of nodes for auto-scaling for the user node pool." + } + }, + "userNodePoolMinCount": { + "defaultValue": 3, + "type": "int", + "metadata": { + "description": "Specifies the minimum number of nodes for auto-scaling for the user node pool." + } + }, + "userNodePoolEnableAutoScaling": { + "defaultValue": true, + "type": "bool", + "metadata": { + "description": "Specifies whether to enable auto-scaling for the user node pool." + } + }, + "userNodePoolScaleSetPriority": { + "defaultValue": "Regular", + "allowedValues": [ + "Spot", + "Regular" + ], + "type": "string", + "metadata": { + "description": "Specifies the virtual machine scale set priority in the user node pool: Spot or Regular." + } + }, + "userNodePoolScaleSetEvictionPolicy": { + "defaultValue": "Delete", + "allowedValues": [ + "Delete", + "Deallocate" + ], + "type": "string", + "metadata": { + "description": "Specifies the ScaleSetEvictionPolicy to be used to specify eviction policy for spot virtual machine scale set. Default to Delete. Allowed values are Delete or Deallocate." + } + }, + "userNodePoolNodeLabels": { + "defaultValue": {}, + "type": "object", + "metadata": { + "description": "Specifies the Agent pool node labels to be persisted across all nodes in the user node pool." + } + }, + "userNodePoolNodeTaints": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. - string" + } + }, + "userNodePoolType": { + "defaultValue": "VirtualMachineScaleSets", + "type": "string", + "allowedValues": [ + "VirtualMachineScaleSets", + "AvailabilitySet" + ], + "metadata": { + "description": "Specifies the type for the user node pool: VirtualMachineScaleSets or AvailabilitySet" + } + }, + "userNodePoolAvailabilityZones": { + "defaultValue": [], + "type": "array", + "metadata": { + "description": "Specifies the availability zones for the agent nodes in the user node pool. Requirese the use of VirtualMachineScaleSets as node pool type." + } + }, + "httpApplicationRoutingEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the httpApplicationRouting add-on is enabled or not." + } + }, + "aciConnectorLinuxEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the aciConnectorLinux add-on is enabled or not." + } + }, + "azurePolicyEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether the azurepolicy add-on is enabled or not." + } + }, + "kubeDashboardEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether the kubeDashboard add-on is enabled or not." + } + }, + "podIdentityProfileEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specifies whether the pod identity addon is enabled.." + } + }, + "autoScalerProfileScanInterval": { + "type": "string", + "defaultValue": "10s", + "metadata": { + "description": "Specifies the scan interval of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterAdd": { + "type": "string", + "defaultValue": "10m", + "metadata": { + "description": "Specifies the scale down delay after add of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterDelete": { + "type": "string", + "defaultValue": "20s", + "metadata": { + "description": "Specifies the scale down delay after delete of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownDelayAfterFailure": { + "type": "string", + "defaultValue": "3m", + "metadata": { + "description": "Specifies scale down delay after failure of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownUnneededTime": { + "type": "string", + "defaultValue": "10m", + "metadata": { + "description": "Specifies the scale down unneeded time of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileScaleDownUnreadyTime": { + "type": "string", + "defaultValue": "20m", + "metadata": { + "description": "Specifies the scale down unready time of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileUtilizationThreshold": { + "type": "string", + "defaultValue": "0.5", + "metadata": { + "description": "Specifies the utilization threshold of the auto-scaler of the AKS cluster." + } + }, + "autoScalerProfileMaxGracefulTerminationSec": { + "type": "string", + "defaultValue": "600", + "metadata": { + "description": "Specifies the max graceful termination time interval in seconds for the auto-scaler of the AKS cluster." + } + }, + "virtualNetworkName": { + "defaultValue": "[concat(parameters('aksClusterName'), 'Vnet')]", + "type": "string", + "metadata": { + "description": "Specifies the name of the virtual network." + } + }, + "virtualNetworkAddressPrefixes": { + "defaultValue": "10.0.0.0/8", + "type": "string", + "metadata": { + "description": "Specifies the address prefixes of the virtual network." + } + }, + "aksSubnetName": { + "defaultValue": "AksSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the worker nodes of the AKS cluster." + } + }, + "aksSubnetAddressPrefix": { + "defaultValue": "10.0.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the worker nodes of the AKS cluster." + } + }, + "podSubnetName": { + "defaultValue": "PodSubnet", + "type": "string", + "metadata": { + "description": "Specifies the name of the subnet hosting the pods of the AKS cluster." + } + }, + "podSubnetAddressPrefix": { + "defaultValue": "10.1.0.0/16", + "type": "string", + "metadata": { + "description": "Specifies the address prefix of the subnet hosting the pods of the AKS cluster." + } + }, + "vmSubnetName": { + "type": "string", + "defaultValue": "VmSubnet", + "metadata": { + "description": "Specifies the name of the subnet which contains the virtual machine." + } + }, + "vmSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.2.0.0/24", + "metadata": { + "description": "Specifies the address prefix of the subnet which contains the virtual machine." + } + }, + "bastionSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.2.1.0/24", + "metadata": { + "description": "Specifies the Bastion subnet IP prefix. This prefix must be within vnet IP prefix address space." + } + }, + "logAnalyticsWorkspaceName": { + "type": "string", + "defaultValue": "[concat(parameters('aksClusterName'), 'Workspace')]", + "metadata": { + "description": "Specifies the name of the Log Analytics Workspace." + }, + "value": "GEN-UNIQUE" + }, + "logAnalyticsSku": { + "type": "string", + "allowedValues": [ + "Free", + "Standalone", + "PerNode", + "PerGB2018" + ], + "defaultValue": "PerNode", + "metadata": { + "description": "Specifies the service tier of the workspace: Free, Standalone, PerNode, Per-GB." + } + }, + "logAnalyticsRetentionInDays": { + "type": "int", + "defaultValue": 60, + "metadata": { + "description": "Specifies the workspace data retention in days. -1 means Unlimited retention for the Unlimited Sku. 730 days is the maximum allowed for all other Skus." + } + }, + "vmName": { + "type": "string", + "defaultValue": "TestVm", + "metadata": { + "description": "Specifies the name of the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Specifies the size of the virtual machine." + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "Specifies the image publisher of the disk image used to create the virtual machine." + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "Specifies the offer of the platform image or marketplace image used to create the virtual machine." + } + }, + "imageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "Specifies the Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Specifies the type of authentication when accessing the Virtual Machine. SSH key is recommended." + } + }, + "vmAdminUsername": { + "type": "string", + "metadata": { + "description": "Specifies the name of the administrator account of the virtual machine." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "Specifies the SSH Key or password for the virtual machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + }, + "diskStorageAccounType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS", + "UltraSSD_LRS" + ], + "metadata": { + "description": "Specifies the storage account type for OS and data disk." + } + }, + "numDataDisks": { + "type": "int", + "defaultValue": 1, + "minValue": 0, + "maxValue": 64, + "metadata": { + "description": "Specifies the number of data disks of the virtual machine." + } + }, + "osDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the VM." + } + }, + "dataDiskSize": { + "type": "int", + "defaultValue": 50, + "metadata": { + "description": "Specifies the size in GB of the OS disk of the virtual machine." + } + }, + "dataDiskCaching": { + "type": "string", + "defaultValue": "ReadWrite", + "metadata": { + "description": "Specifies the caching requirements for the data disks." + } + }, + "blobStorageAccountName": { + "type": "string", + "defaultValue": "[concat('boot', uniquestring(resourceGroup().id))]", + "metadata": { + "description": "Specifies the globally unique name for the storage account used to store the boot diagnostics logs of the virtual machine." + } + }, + "blobStorageAccountPrivateEndpointName": { + "type": "string", + "defaultValue": "BlobStorageAccountPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the boot diagnostics storage account." + } + }, + "acrPrivateEndpointName": { + "type": "string", + "defaultValue": "AcrPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the Azure Container Registry." + } + }, + "acrName": { + "type": "string", + "defaultValue": "[concat('acr', uniqueString(resourceGroup().id))]", + "minLength": 5, + "maxLength": 50, + "metadata": { + "description": "Name of your Azure Container Registry" + } + }, + "acrAdminUserEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Enable admin user that have push / pull permission to the registry." + } + }, + "acrSku": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Tier of your Azure Container Registry." + } + }, + "bastionHostName": { + "type": "string", + "defaultValue": "[concat(parameters('aksClusterName'), 'Bastion')]", + "metadata": { + "description": "Specifies the name of the Azure Bastion resource." + } + }, + "keyVaultPrivateEndpointName": { + "type": "string", + "defaultValue": "KeyVaultPrivateEndpoint", + "metadata": { + "description": "Specifies the name of the private link to the Key Vault." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Key Vault resource." + } + }, + "keyVaultNetworkRuleSetDefaultAction": { + "type": "string", + "defaultValue": "Deny", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "The default action of allow or deny when no other rules match. Allowed values: Allow or Deny" + } + } + }, + "variables": { + "contributorRoleDefinitionName": "b24988ac-6180-42a0-ab88-20f7382dd24c", + "acrPullRoleDefinitionName": "7f951dda-4ed3-4680-a7ca-43fe172d538d", + "aksClusterUserDefinedManagedIdentityName": "[concat('aks-', uniqueString(resourceGroup().id))]Identity", + "aksClusterUserDefinedManagedIdentityId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]Identity", + "vmSubnetNsgName": "VmSubnetNsg", + "vmSubnetNsgId": "Microsoft.Network/networkSecurityGroups/VmSubnetNsg", + "bastionSubnetNsgName": "[concat('aks-', uniqueString(resourceGroup().id))]Bastion", + "bastionSubnetNsgId": "Microsoft.Network/networkSecurityGroups/[concat(parameters('aksClusterName'), 'Bastion')]Nsg", + "virtualNetworkId": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "aksSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSubnet", + "podSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/PodSubnet", + "vmSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet", + "vmNicName": "TestVmNic", + "vmNicId": "Microsoft.Network/networkInterfaces/TestVmNic", + "blobStorageAccountId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "blobPublicDNSZoneForwarder": "[concat('blob.', environment().suffixes.storage)]", + "blobPrivateDnsZoneName": "[concat('privatelink.', variables('blobPublicDNSZoneForwarder'))]", + "blobPrivateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('blobPrivateDnsZoneName'))]", + "blobStorageAccountPrivateEndpointGroupName": "blob", + "blobPrivateDnsZoneGroupName": "blobPrivateDnsZoneGroup", + "blobStorageAccountPrivateEndpointId": "Microsoft.Network/privateEndpoints/BlobStorageAccountPrivateEndpoint", + "vmId": "Microsoft.Compute/virtualMachines/TestVm", + "omsAgentForLinuxName": "LogAnalytics", + "omsAgentForLinuxId": "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics", + "omsDependencyAgentForLinuxName": "DependencyAgent", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + }, + "provisionVMAgent": true + }, + "bastionPublicIpAddressName": "[concat('aks-', uniqueString(resourceGroup().id))]Bastion", + "bastionPublicIpAddressId": "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp", + "bastionSubnetName": "AzureBastionSubnet", + "bastionSubnetId": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AzureBastionSubnet", + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "contributorRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinitionName'))]", + "contributorRoleAssignmentName": "[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('aksClusterName')))]", + "contributorRoleAssignmentId": "Microsoft.Authorization/roleAssignments/[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('aksClusterName')))]", + "acrPullRoleId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('acrPullRoleDefinitionName'))]", + "acrPullRoleAssignmentName": "[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('acrName')))]", + "containerInsightsSolutionName": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "acrPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateDnsZoneName": "privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "acrPrivateEndpointGroupName": "registry", + "acrPrivateDnsZoneGroupName": "registryPrivateDnsZoneGroup", + "acrPrivateEndpointId": "Microsoft.Network/privateEndpoints/AcrPrivateEndpoint", + "acrId": "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "aksClusterId": "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "keyVaultPublicDNSZoneForwarder": "[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateDnsZoneName": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "keyVaultPrivateEndpointId": "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint", + "keyVaultPrivateEndpointGroupName": "vault", + "keyVaultPrivateDnsZoneGroupName": "vaultPrivateDnsZoneGroup", + "keyVaultPrivateDnsZoneGroupId": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup", + "keyVaultId": "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "aadPodIdentityUserDefinedManagedIdentityName": "[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity", + "aadPodIdentityUserDefinedManagedIdentityId": "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity" + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('bastionPublicIpAddressName')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('bastionSubnetNsgName')]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowHttpsInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "Internet", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "AllowGatewayManagerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "GatewayManager", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "AllowLoadBalancerInBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationPortRange": "443", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "AllowBastionHostCommunicationInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "DenyAllInBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 1000, + "direction": "Inbound" + } + }, + { + "name": "AllowSshRdpOutBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRanges": [ + "22", + "3389" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "AllowAzureCloudCommunicationOutBound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationPortRange": "443", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 110, + "direction": "Outbound" + } + }, + { + "name": "AllowBastionHostCommunicationOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationPortRanges": [ + "8080", + "5701" + ], + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Outbound" + } + }, + { + "name": "AllowGetSessionInformationOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "Internet", + "destinationPortRanges": [ + "80", + "443" + ], + "access": "Allow", + "priority": 130, + "direction": "Outbound" + } + }, + { + "name": "DenyAllOutBound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Deny", + "priority": 1000, + "direction": "Outbound" + } + } + ] + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[concat(parameters('aksClusterName'), 'Bastion')]Nsg", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/bastionHosts", + "name": "[concat(parameters('aksClusterName'), 'Bastion')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "IpConf", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AzureBastionSubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[concat(parameters('aksClusterName'), 'Bastion')]PublicIp" + } + } + } + ] + } + }, + { + "apiVersion": "2021-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat('boot', uniquestring(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "TestVmNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "TestVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/TestVmNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D4s_v3" + }, + "osProfile": { + "computerName": "TestVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "TestVm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "diskSizeGB": 50, + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 1, + "input": { + "caching": "ReadWrite", + "diskSizeGB": 50, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(parameters('vmName'),'-DataDisk',copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/TestVmNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('blobStorageAccountId')).primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/LogAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.EnterpriseCloud.Monitoring", + "type": "OmsAgentForLinux", + "typeHandlerVersion": "1.12", + "settings": { + "workspaceId": "[reference(variables('workspaceId'), '2020-03-01-preview').customerId]", + "stopOnMultipleConnections": false + }, + "protectedSettings": { + "workspaceKey": "[listKeys(variables('workspaceId'),'2020-03-01-preview').primarySharedKey]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "TestVm/DependencyAgent", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/TestVm", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "Microsoft.Compute/virtualMachines/extensions/TestVm/LogAnalytics" + ], + "properties": { + "publisher": "Microsoft.Azure.Monitoring.DependencyAgent", + "type": "DependencyAgentLinux", + "typeHandlerVersion": "9.10", + "autoUpgradeMinorVersion": true + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "VmSubnetNsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "AllowSshInbound", + "properties": { + "priority": 100, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "Microsoft.Insights/default", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/VmSubnetNsg", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[concat(parameters('aksClusterName'), 'Vnet')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[concat(parameters('aksClusterName'), 'Bastion')]Nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/8" + ] + }, + "subnets": [ + { + "name": "AksSubnet", + "properties": { + "addressPrefix": "10.0.0.0/16", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "PodSubnet", + "properties": { + "addressPrefix": "10.1.0.0/16", + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "VmSubnet", + "properties": { + "addressPrefix": "10.2.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/VmSubnetNsg" + }, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "name": "AzureBastionSubnet", + "properties": { + "addressPrefix": "10.2.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[concat(parameters('aksClusterName'), 'Bastion')]Nsg" + } + } + } + ], + "enableDdosProtection": false, + "enableVmProtection": false + } + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "name": "[variables('aksClusterUserDefinedManagedIdentityName')]", + "apiVersion": "2018-11-30", + "location": "[resourceGroup().location]" + }, + { + "comments": "User-Defined Managed Identity used by an AAD Pod Identity. Used to access Azure Key Vault.", + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[variables('aadPodIdentityUserDefinedManagedIdentityName')]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2021-04-01-preview", + "name": "[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('aksClusterName')))]", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]Identity" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('contributorRoleDefinitionName'))]", + "principalId": "[reference(variables('aksClusterUserDefinedManagedIdentityName'), '2018-11-30', 'Full').properties.principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "condition": false, + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2021-04-01-preview", + "name": "[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('acrName')))]", + "dependsOn": [ + "Microsoft.ContainerService/managedClusters/[concat('aks-', uniqueString(resourceGroup().id))]", + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('acrPullRoleDefinitionName'))]", + "principalId": "[reference(variables('aksClusterId'), '2020-09-01', 'Full').properties.identityProfile.kubeletidentity.objectId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "name": "[concat('acr', uniqueString(resourceGroup().id))]", + "type": "Microsoft.ContainerRegistry/registries", + "apiVersion": "2019-12-01-preview", + "location": "[resourceGroup().location]", + "comments": "Container registry for storing docker images", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]" + ], + "tags": { + "displayName": "Container Registry", + "container.registry": "[concat('acr', uniqueString(resourceGroup().id))]" + }, + "sku": { + "name": "Premium", + "tier": "Premium" + }, + "properties": { + "adminUserEnabled": false + } + }, + { + "type": "Microsoft.ContainerService/managedClusters", + "apiVersion": "2021-05-01", + "name": "[concat('aks-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[variables('aksClusterUserDefinedManagedIdentityId')]": {} + } + }, + "tags": { + "resourceType": "AKS Cluster", + "createdBy": "ARM Template" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "Microsoft.Authorization/roleAssignments/[guid(concat(resourceGroup().id, variables('aksClusterUserDefinedManagedIdentityName'), parameters('aksClusterName')))]", + "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/KeyVaultPrivateEndpoint/vaultPrivateDnsZoneGroup" + ], + "properties": { + "kubernetesVersion": "1.21.2", + "dnsPrefix": "[parameters('aksClusterName')]", + "sku": { + "name": "Basic", + "tier": "Paid" + }, + "agentPoolProfiles": [ + { + "name": "[tolower(parameters('systemNodePoolName'))]", + "count": 3, + "vmSize": "Standard_D16s_v3", + "osDiskSizeGB": 100, + "osDiskType": "Ephemeral", + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSubnet", + "podSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/PodSubnet", + "maxPods": 30, + "osType": "Linux", + "maxCount": 5, + "minCount": 3, + "scaleSetPriority": "Regular", + "scaleSetEvictionPolicy": "Delete", + "enableAutoScaling": true, + "mode": "System", + "type": "VirtualMachineScaleSets", + "availabilityZones": [], + "nodeLabels": {}, + "nodeTaints": [] + }, + { + "name": "[tolower(parameters('userNodePoolName'))]", + "count": 3, + "vmSize": "Standard_D16s_v3", + "osDiskSizeGB": 100, + "osDiskType": "Ephemeral", + "vnetSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/AksSubnet", + "podSubnetID": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/PodSubnet", + "maxPods": 30, + "osType": "Linux", + "maxCount": 5, + "minCount": 3, + "scaleSetPriority": "Regular", + "scaleSetEvictionPolicy": "Delete", + "enableAutoScaling": true, + "mode": "User", + "type": "VirtualMachineScaleSets", + "availabilityZones": [], + "nodeLabels": {}, + "nodeTaints": [] + } + ], + "linuxProfile": { + "adminUsername": "GEN-UNIQUE", + "ssh": { + "publicKeys": [ + { + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "addonProfiles": { + "httpApplicationRouting": { + "enabled": false + }, + "omsagent": { + "enabled": true, + "config": { + "logAnalyticsWorkspaceResourceID": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + } + }, + "aciConnectorLinux": { + "enabled": false + }, + "azurepolicy": { + "enabled": true, + "config": { + "version": "v2" + } + }, + "kubeDashboard": { + "enabled": false + } + }, + "podIdentityProfile": { + "enabled": true + }, + "enableRBAC": true, + "networkProfile": { + "networkPlugin": "azure", + "networkPolicy": "azure", + "podCidr": "10.244.0.0/16", + "serviceCidr": "10.3.0.0/16", + "dnsServiceIP": "10.3.0.10", + "dockerBridgeCidr": "172.17.0.1/16", + "outboundType": "loadBalancer", + "loadBalancerSku": "standard", + "loadBalancerProfile": "[json('null')]" + }, + "aadProfile": { + "managed": true, + "enableAzureRBAC": true, + "adminGroupObjectIDs": [], + "tenantID": "[subscription().tenantId]" + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "autoScalerProfile": { + "scan-interval": "10s", + "scale-down-delay-after-add": "10m", + "scale-down-delay-after-delete": "20s", + "scale-down-delay-after-failure": "3m", + "scale-down-unneeded-time": "10m", + "scale-down-unready-time": "20m", + "scale-down-utilization-threshold": "0.5", + "max-graceful-termination-sec": "600" + }, + "apiServerAccessProfile": { + "enablePrivateCluster": true, + "privateDNSZone": "none", + "enablePrivateClusterPublicFQDN": true + } + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerNode" + }, + "retentionInDays": 60 + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "apiVersion": "2015-11-01-preview", + "name": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "location": "[resourceGroup().location]", + "dependsOn": [ + "microsoft.operationalinsights/workspaces/GEN-UNIQUE" + ], + "plan": { + "name": "ContainerInsights(, parameters(logAnalyticsWorkspaceName), )", + "promotionCode": "", + "product": "OMSGallery/ContainerInsights", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "microsoft.operationalinsights/workspaces/GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "[variables('blobPrivateDnsZoneName')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "location": "global", + "properties": { + "maxNumberOfRecordSets": 25000, + "maxNumberOfVirtualNetworkLinks": 1000, + "maxNumberOfVirtualNetworkLinksWithRegistration": 100 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('blobPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "[variables('blobPrivateDnsZoneId')]", + "[variables('virtualNetworkId')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "condition": false, + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('acrPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[concat(variables('keyVaultPrivateDnsZoneName'), '/link_to_', toLower(parameters('virtualNetworkName')))]", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "BlobStorageAccountPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "BlobStorageAccountPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.Storage/storageAccounts/[concat('boot', uniquestring(resourceGroup().id))]", + "groupIds": [ + "blob" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "blobPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('blobStorageAccountPrivateEndpointId')]", + "[variables('blobPrivateDnsZoneId')]", + "[variables('blobStorageAccountPrivateEndpointId')]" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "[variables('blobPrivateDnsZoneId')]" + } + } + ] + } + } + ] + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "KeyVaultPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "KeyVaultPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "groupIds": [ + "vault" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "vaultPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]", + "Microsoft.Network/privateEndpoints/KeyVaultPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink[if(equals(toLower(environment().name), 'azureusgovernment'), '.vaultcore.usgovcloudapi.net', '.vaultcore.azure.net')]" + } + } + ] + } + } + ] + }, + { + "condition": false, + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "AcrPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[concat(parameters('aksClusterName'), 'Vnet')]", + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]" + ], + "properties": { + "privateLinkServiceConnections": [ + { + "name": "AcrPrivateEndpoint", + "properties": { + "privateLinkServiceId": "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "groupIds": [ + "registry" + ] + } + } + ], + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[concat(parameters('aksClusterName'), 'Vnet')]/VmSubnet" + } + }, + "resources": [ + { + "condition": false, + "type": "privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "registryPrivateDnsZoneGroup", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ContainerRegistry/registries/[concat('acr', uniqueString(resourceGroup().id))]", + "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]", + "Microsoft.Network/privateEndpoints/AcrPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "dnsConfig", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.[if(equals(toLower(environment().name), 'azureusgovernment'), 'azurecr.us', 'azurecr.io')]" + } + } + ] + } + } + ] + }, + { + "type": "microsoft.insights/activityLogAlerts", + "apiVersion": "2020-10-01", + "name": "AllAzureAdvisorAlert", + "location": "Global", + "properties": { + "scopes": [ + "[resourceGroup().id]" + ], + "condition": { + "allOf": [ + { + "field": "category", + "equals": "Recommendation" + }, + { + "field": "operationName", + "equals": "Microsoft.Advisor/recommendations/available/action" + } + ] + }, + "enabled": true, + "description": "All azure advisor alerts" + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[concat('aks-', uniqueString(resourceGroup().id))]AadPodManagedIdentity" + ], + "properties": { + "accessPolicies": [ + { + "tenantId": "[reference(variables('aadPodIdentityUserDefinedManagedIdentityId')).tenantId]", + "objectId": "[reference(variables('aadPodIdentityUserDefinedManagedIdentityId')).principalId]", + "permissions": { + "secrets": [ + "get", + "list" + ], + "certificates": [ + "get" + ] + } + } + ], + "sku": { + "family": "A", + "name": "standard" + }, + "tenantId": "[subscription().tenantId]", + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Deny" + }, + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "enableSoftDelete": false + }, + "resources": [ + { + "name": "Microsoft.Insights/default", + "type": "providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "dependsOn": [ + "Microsoft.KeyVault/vaults/[concat('keyvault-', uniqueString(resourceGroup().id))]", + "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE" + ], + "properties": { + "workspaceId": "Microsoft.OperationalInsights/workspaces//GEN-UNIQUE", + "logs": [ + { + "category": "AuditEvent", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + } + ] + } + ], + "outputs": { + "privateFQDN": { + "type": "string", + "value": "[reference(parameters('aksClusterName')).privateFQDN]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT788 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT788 new file mode 100644 index 0000000..47c1ce2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT788 @@ -0,0 +1,342 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/private-endpoint-sql-from-appservice/azuredeploy.json", + "/demos/private-endpoint-sql-from-appservice/azuredeploy.parameters.json" + ], + "timestamp": 1642962901329, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/private-endpoint-sql-from-appservice/azuredeploy.json", + "/demos/private-endpoint-sql-from-appservice/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT788", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.web/sites", + "microsoft.sql/servers/databases", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.sql/servers", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups", + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT788", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "The administrator username of the SQL logical server" + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The administrator password of the SQL logical server." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "privateDnsZoneName": { + "type": "string", + "metadata": { + "description": "Private Dns Zone Name " + }, + "value": "privatelink.database.windows.net" + } + }, + "variables": { + "vnetName": "myVirtualNetwork", + "vnetAddressPrefix": "10.0.0.0/16", + "subnet1Prefix": "10.0.0.0/24", + "subnet1Name": "mySubnet", + "subnetAppServicePrefix": "10.0.1.0/24", + "subnetAppServiceName": "subnetAppService", + "sqlServerName": "[concat('sqlserver', uniqueString(resourceGroup().id))]", + "databaseName": "[concat(variables('sqlServerName'),'/sample-db')]", + "privateEndpointName": "myPrivateEndpoint", + "pvtendpointdnsgroupname": "myPrivateEndpoint/mydnsgroupname", + "websitename": "[take(concat('webapppvl', uniqueString(resourceGroup().id)),15)]", + "appServicePlanName": "[take(concat('appSrvPln', uniqueString(resourceGroup().id)),15)]" + }, + "resources": [ + { + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-11-01-preview", + "name": "[variables('sqlServerName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[variables('sqlServerName')]" + }, + "kind": "v12.0", + "properties": { + "administratorLogin": "GEN-UNIQUE", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0", + "publicNetworkAccess": "Disabled" + } + }, + { + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2020-11-01-preview", + "name": "[variables('databaseName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[variables('databaseName')]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]" + ], + "sku": { + "name": "Basic", + "tier": "Basic", + "capacity": 5 + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": 104857600, + "requestedServiceObjectiveName": "Basic", + "sampleName": "AdventureWorksLT" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "name": "myVirtualNetwork", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "mySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "privateEndpointNetworkPolicies": "Disabled" + } + }, + { + "name": "subnetAppService", + "properties": { + "addressPrefix": "10.0.1.0/24", + "delegations": [ + { + "name": "delegation", + "properties": { + "serviceName": "Microsoft.Web/serverfarms" + } + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "myPrivateEndpoint", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('vnetName')]", + "[variables('sqlServerName')]" + ], + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVirtualNetwork/mySubnet" + }, + "privateLinkServiceConnections": [ + { + "name": "myPrivateEndpoint", + "properties": { + "privateLinkServiceId": "[resourceId('Microsoft.Sql/servers',variables('sqlServerName'))]", + "groupIds": [ + "sqlServer" + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink.database.windows.net", + "location": "global", + "dependsOn": [ + "myVirtualNetwork" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "privatelink.database.windows.net/privatelink.database.windows.net-link", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.database.windows.net", + "Microsoft.Network/virtualNetworks/myVirtualNetwork" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/myVirtualNetwork" + } + } + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-07-01", + "name": "myPrivateEndpoint/mydnsgroupname", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.database.windows.net", + "myPrivateEndpoint" + ], + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config1", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.database.windows.net" + } + } + ] + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "[take(concat('appSrvPln', uniqueString(resourceGroup().id)),15)]", + "location": "[resourceGroup().location]", + "sku": { + "name": "P1v2", + "capacity": 1 + }, + "tags": { + "displayName": "[take(concat('appSrvPln', uniqueString(resourceGroup().id)),15)]" + }, + "properties": { + "name": "[take(concat('appSrvPln', uniqueString(resourceGroup().id)),15)]" + } + }, + { + "name": "[take(concat('webapppvl', uniqueString(resourceGroup().id)),15)]", + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[take(concat('webapppvl', uniqueString(resourceGroup().id)),15)]" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/[take(concat('appSrvPln', uniqueString(resourceGroup().id)),15)]" + ], + "properties": { + "name": "[take(concat('webapppvl', uniqueString(resourceGroup().id)),15)]", + "serverFarmId": "Microsoft.Web/serverfarms/[take(concat('appSrvPln', uniqueString(resourceGroup().id)),15)]", + "siteConfig": { + "connectionStrings": [ + { + "name": "sampledbContext", + "connectionString": "[concat('Server=tcp:', reference(variables('sqlServerName')).fullyQualifiedDomainName, ',1433;Initial Catalog=sample-db;Persist Security Info=False;User ID=', parameters('sqlAdministratorLogin'), ';Password=', parameters('sqlAdministratorLoginPassword'), ';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]", + "type": "SQLAzure" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "type": "config", + "name": "appsettings", + "dependsOn": [ + "Microsoft.Web/Sites//[take(concat('webapppvl', uniqueString(resourceGroup().id)),15)]", + "MSDeploy" + ], + "tags": { + "displayName": "WebAppSettings" + }, + "properties": { + "WEBSITE_VNET_ROUTE_ALL": "1", + "WEBSITE_DNS_SERVER": "168.63.129.16" + } + }, + { + "name": "MSDeploy", + "type": "extensions", + "apiVersion": "2019-08-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/[take(concat('webapppvl', uniqueString(resourceGroup().id)),15)]" + ], + "tags": { + "displayName": "Web Deploy for webapppvtlink" + }, + "properties": { + "packageUri": "[uri(parameters('_artifactsLocation'), concat('artifacts/AdventureWorks.Web.zip', parameters('_artifactsLocationSasToken')))]", + "dbType": "None", + "setParameters": { + "IIS Web Application Name": "[take(concat('webapppvl', uniqueString(resourceGroup().id)),15)]" + } + } + }, + { + "apiVersion": "2019-08-01", + "type": "networkConfig", + "name": "virtualNetwork", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Web/sites/[take(concat('webapppvl', uniqueString(resourceGroup().id)),15)]", + "MSDeploy" + ], + "properties": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/myVirtualNetwork/subnetAppService", + "swiftSupported": true + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT789 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT789 new file mode 100644 index 0000000..5a16b77 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT789 @@ -0,0 +1,3024 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/rds-deployment-full-ha/azuredeploy.json", + "/demos/rds-deployment-full-ha/azuredeploy.parameters.json" + ], + "timestamp": 1642962901400, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/rds-deployment-full-ha/azuredeploy.json", + "/demos/rds-deployment-full-ha/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT789", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.sql/servers/databases", + "microsoft.resources/deployments", + "microsoft.sql/servers", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT789", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "projectName": { + "type": "string", + "minLength": 1, + "maxLength": 5, + "metadata": { + "description": "Define the project name or prefix for all objects." + }, + "value": "GEN-UNIQUE-5" + }, + "adminUser": { + "type": "string", + "metadata": { + "description": "What is the username for the admin on VMs and SQL Server?" + }, + "value": "GEN-UNIQUE-5" + }, + "adminPasswd": { + "type": "securestring", + "metadata": { + "description": "What is the password for the admin on VMs and SQL Server?" + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location for resources on template. By default, the same as resource group location" + } + }, + "timeZoneID": { + "type": "string", + "defaultValue": "UTC", + "metadata": { + "description": "TimeZone ID to be used on VMs. Get available timezones with powershell Get-TimeZone command." + } + }, + "externalDnsZone": { + "type": "string", + "defaultValue": "contosocorp.com", + "metadata": { + "description": "External public DNS domain zone. NOT AD domain. This the external domain your certs will point to." + } + }, + "deployHA": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "This will trigger certificate request and HA deployment. If set to false, will not create HA deployment nor request certificates." + } + }, + "dcCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "How many Domain Controllers would you like to deploy?" + } + }, + "rdcbCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "How many RD Connection Brokers would you like to deploy?" + } + }, + "rdwgCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "How many RD Web Access/Gateways would you like to deploy?" + } + }, + "rdshCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "How many RD Session Hosts would you like to deploy?" + } + }, + "lsfsCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "How many License/File Servers would you like to deploy?" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "allowedValues": [ + "Standard_A2_v2", + "Standard_A4_v2", + "Standard_A8_v2", + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D2s_v3", + "Standard_D2s_v3" + ], + "metadata": { + "description": "What is the VM size for all VMs?" + } + }, + "vmSpot": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Create Azure Spot VMs?" + } + }, + "vmStorageSkuType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "StandardSSD_LRS", + "Standard_LRS" + ], + "metadata": { + "description": "What is the SKU for the storage to VM managed disks?" + } + }, + "adDomainName": { + "type": "string", + "defaultValue": "contoso.com", + "metadata": { + "description": "What is the new forest/root Active Directory domain name?" + } + }, + "vNetPrefix": { + "type": "string", + "defaultValue": "10.100", + "metadata": { + "description": "What is the prefix for the vnet and first subnet?" + } + }, + "vNetAddressSpace": { + "type": "string", + "defaultValue": "[concat(parameters('vNetPrefix'),'.0.0/16')]", + "metadata": { + "description": "What is the vnet address space?" + } + }, + "vNetSubnetAddress": { + "type": "string", + "defaultValue": "[concat(parameters('vNetPrefix'),'.0.0/24')]", + "metadata": { + "description": "What is the subnet address prefix?" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "Location of all scripts and DSC resources for RDS deployment." + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "SAS storage token to access _artifactsLocation. No need to change unless you copy or fork this template." + } + } + }, + "variables": { + "uniqueName": "[substring(uniqueString(resourceGroup().id,deployment().name),0,5)]", + "dnsEntry": "remoteapps", + "brokerName": "broker", + "externalFqdn": "[concat(variables('dnsEntry'),'.',toLower(parameters('externalDnsZone')))]", + "brokerFqdn": "[concat(variables('brokerName'),'.',toLower(parameters('externalDnsZone')))]", + "vmNames": [ + "[concat(toLower(parameters('projectName')),variables('uniqueName'),'dc')]", + "[concat(toLower(parameters('projectName')),variables('uniqueName'),'wg')]", + "[concat(toLower(parameters('projectName')),variables('uniqueName'),'cb')]", + "[concat(toLower(parameters('projectName')),variables('uniqueName'),'sh')]", + "[concat(toLower(parameters('projectName')),variables('uniqueName'),'lf')]" + ], + "vmProperties": [ + { + "name": "(vmNames)[0]", + "count": 1, + "intLbBackEndPool": "", + "pubLbBackEndPool": "", + "dscFunction": "DeployRDSLab.ps1\\CreateRootDomain" + }, + { + "name": "(vmNames)[1]", + "count": 1, + "intLbBackEndPool": "rds-webgateways-int-pool", + "pubLbBackEndPool": "rds-webgateways-pub-pool", + "dscFunction": "DeployRDSLab.ps1\\RDWebGateway" + }, + { + "name": "(vmNames)[2]", + "count": 1, + "intLbBackEndPool": "rds-brokers-int-pool", + "pubLbBackEndPool": "", + "dscFunction": "DeployRDSLab.ps1\\RDSDeployment" + }, + { + "name": "(vmNames)[3]", + "count": 1, + "intLbBackEndPool": "", + "pubLbBackEndPool": "", + "dscFunction": "DeployRDSLab.ps1\\RDSessionHost" + }, + { + "name": "(vmNames)[4]", + "count": 1, + "intLbBackEndPool": "", + "pubLbBackEndPool": "", + "dscFunction": "DeployRDSLab.ps1\\RDLicenseServer" + } + ], + "diagStorageName": "[concat(toLower(parameters('projectName')),variables('uniqueName'),'diag')]", + "publicLbIpName": "[concat(toLower(parameters('projectName')),'lbpip')]", + "diagStorageSkuType": "Standard_LRS", + "vNetName": "GEN-UNIQUE-5vnet", + "firstDcIP": "10.100.0.99", + "nsgRef": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-5nsg", + "subNetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5vnet/GEN-UNIQUE-5main", + "sqlServerName": "[concat(toLower(parameters('projectName')),variables('uniqueName'),'sql')]", + "rdsDBName": "rdsdb", + "dscScriptName": "deployrdslab.zip", + "scriptName": "deploycertha.ps1" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "kind": "StorageV2", + "name": "[variables('diagStorageName')]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-5nsg", + "properties": { + "securityRules": [ + { + "name": "Allow_RDP", + "properties": { + "access": "Allow", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3389", + "protocol": "*", + "direction": "Inbound", + "priority": 1000 + } + }, + { + "name": "Allow_HTTP", + "properties": { + "access": "Allow", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "80", + "protocol": "Tcp", + "direction": "Inbound", + "priority": 1001 + } + }, + { + "name": "Allow_HTTPS", + "properties": { + "access": "Allow", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "443", + "protocol": "Tcp", + "direction": "Inbound", + "priority": 1002 + } + }, + { + "name": "Allow_UDP_3391", + "properties": { + "access": "Allow", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "3391", + "protocol": "Udp", + "direction": "Inbound", + "priority": 1003 + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-5vnet", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-5nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[concat(parameters('vNetPrefix'),'.0.0/16')]" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-5main", + "properties": { + "addressPrefix": "[concat(parameters('vNetPrefix'),'.0.0/24')]", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-5nsg" + } + } + } + ] + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE-5intlb", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-5vnet" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "rds-brokers-frontend", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.100.0.4", + "privateIPAddressVersion": "IPv4", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5vnet/GEN-UNIQUE-5main" + } + } + }, + { + "name": "rds-webgateways-frontend", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "privateIPAddressVersion": "IPv4", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5vnet/GEN-UNIQUE-5main" + } + } + } + ], + "backendAddressPools": [ + { + "name": "rds-brokers-int-pool", + "properties": {} + }, + { + "name": "rds-webgateways-int-pool", + "properties": {} + } + ], + "probes": [ + { + "name": "rds-broker-probe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "protocol": "Tcp", + "port": 3389 + } + }, + { + "name": "rds-webgateway-probe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "protocol": "Tcp", + "port": 443 + } + } + ], + "loadBalancingRules": [ + { + "name": "rds-brokers-tcp-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/GEN-UNIQUE-5intlb/rds-brokers-frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5intlb/rds-brokers-int-pool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5intlb/rds-broker-probe" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "idleTimeoutInMinutes": 4 + } + }, + { + "name": "rds-brokers-udp-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/GEN-UNIQUE-5intlb/rds-brokers-frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5intlb/rds-brokers-int-pool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5intlb/rds-broker-probe" + }, + "protocol": "Udp", + "frontendPort": 3389, + "backendPort": 3389, + "idleTimeoutInMinutes": 4 + } + }, + { + "name": "rds-webgateway-http-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/GEN-UNIQUE-5intlb/rds-webgateways-frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5intlb/rds-webgateways-int-pool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5intlb/rds-webgateway-probe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 4 + } + }, + { + "name": "rds-webgateway-https-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/GEN-UNIQUE-5intlb/rds-webgateways-frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5intlb/rds-webgateways-int-pool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5intlb/rds-webgateway-probe" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "idleTimeoutInMinutes": 4 + } + }, + { + "name": "rds-webgateway-udp-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/GEN-UNIQUE-5intlb/rds-webgateways-frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5intlb/rds-webgateways-int-pool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5intlb/rds-webgateway-probe" + }, + "protocol": "Udp", + "frontendPort": 3391, + "backendPort": 3391, + "idleTimeoutInMinutes": 4 + } + } + ] + } + }, + { + "name": "[variables('publicLbIpName')]", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[variables('publicLbIpName')]" + } + } + }, + { + "name": "GEN-UNIQUE-5publb", + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicLbIpName'))]", + "[resourceId('Microsoft.Network/virtualNetworks',concat(parameters('projectName'),'vnet'))]" + ], + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "rds-webgateways-frontend", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicLbIpName'))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "rds-webgateways-pub-pool" + } + ], + "probes": [ + { + "name": "rds-webgateways-probe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ], + "loadBalancingRules": [ + { + "name": "rds-webgateways-http-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-5publb/rds-webgateways-frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5publb/rds-webgateways-pub-pool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5publb/rds-webgateways-probe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5 + } + }, + { + "name": "rds-webgateways-https-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-5publb/rds-webgateways-frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5publb/rds-webgateways-pub-pool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5publb/rds-webgateways-probe" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5 + } + }, + { + "name": "rds-webgateways-udp-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/GEN-UNIQUE-5publb/rds-webgateways-frontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/GEN-UNIQUE-5publb/rds-webgateways-pub-pool" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/GEN-UNIQUE-5publb/rds-webgateways-probe" + }, + "protocol": "Udp", + "frontendPort": 3391, + "backendPort": 3391, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5 + } + } + ] + } + }, + { + "name": "[variables('sqlServerName')]", + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-11-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "administratorLogin": "GEN-UNIQUE-5", + "administratorLoginPassword": "GEN-PASSWORD" + }, + "resources": [ + { + "type": "firewallRules", + "apiVersion": "2020-11-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers',variables('sqlServerName'))]" + ], + "location": "[resourceGroup().location]", + "name": "AllowAllWindowsAzureIps", + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + }, + { + "name": "[concat(variables('sqlServerName'),'/',variables('rdsDBName'))]", + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2020-11-01-preview", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers',variables('sqlServerName'))]" + ], + "sku": { + "name": "S2", + "tier": "Standard" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "maxSizeBytes": "1073741824" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "name": "[concat(variables('vmProperties')[copyIndex()].name,'Deployment')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks',concat(parameters('projectName'),'vnet'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'publb'))]", + "[resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))]", + "[resourceId('Microsoft.Sql/servers/databases',variables('sqlServerName'),variables('rdsDBName'))]" + ], + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "timeZoneID": { + "value": "UTC" + }, + "loopCount": { + "value": "(vmProperties)[copyIndex()].count" + }, + "storageDiagUrl": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))).primaryEndpoints.blob]" + }, + "vmName": { + "value": "(vmProperties)[copyIndex()].name" + }, + "subNetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5vnet/GEN-UNIQUE-5main" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "vmSpot": { + "value": true + }, + "vmStorageSkuType": { + "value": "Standard_LRS" + }, + "adminUser": { + "value": "GEN-UNIQUE-5" + }, + "adminPasswd": { + "value": "GEN-PASSWORD" + }, + "intLbName": { + "value": "GEN-UNIQUE-5intlb" + }, + "intLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].intLbBackEndPool" + }, + "intLbBrokerIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[0].properties.privateIPAddress]" + }, + "intLbWebGWIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[1].properties.privateIPAddress]" + }, + "pubLbName": { + "value": "GEN-UNIQUE-5publb" + }, + "pubLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].pubLbBackEndPool" + }, + "adDomainName": { + "value": "contoso.com" + }, + "firstDcIP": { + "value": "10.100.0.99" + }, + "dcName": { + "value": "(vmProperties)[0].name" + }, + "MainConnectionBroker": { + "value": "[concat(variables('vmProperties')[2].name,'1')]" + }, + "WebAccessServerName": { + "value": "(vmProperties)[1].name" + }, + "WebAccessServerCount": { + "value": "(vmProperties)[1].count" + }, + "SessionHostName": { + "value": "(vmProperties)[3].name" + }, + "SessionHostCount": { + "value": "(vmProperties)[3].count" + }, + "LicenseServerName": { + "value": "(vmProperties)[4].name" + }, + "LicenseServerCount": { + "value": "(vmProperties)[4].count" + }, + "externalFqdn": { + "value": "[variables('externalFqdn')]" + }, + "brokerFqdn": { + "value": "[variables('brokerFqdn')]" + }, + "externalDnsZone": { + "value": "contosocorp.com" + }, + "dscFunction": { + "value": "(vmProperties)[copyIndex()].dscFunction" + }, + "dscLocation": { + "value": "[deployment().properties.templatelink.uri]" + }, + "dscScriptName": { + "value": "deployrdslab.zip" + }, + "scriptName": { + "value": "deploycertha.ps1" + }, + "deployHA": { + "value": false + }, + "rdsDBName": { + "value": "rdsdb" + }, + "azureSqlFqdn": { + "value": "[reference(resourceId('Microsoft.Sql/servers',variables('sqlServerName'))).fullyQualifiedDomainName]" + }, + "webGwName": { + "value": "remoteapps" + }, + "_artifactsLocationSasToken": { + "value": "" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "timeZoneID": { + "type": "string" + }, + "loopCount": { + "type": "int" + }, + "storageDiagUrl": { + "type": "string" + }, + "vmName": { + "type": "string" + }, + "subNetRef": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "vmSpot": { + "type": "bool" + }, + "vmStorageSkuType": { + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "type": "string" + }, + "adminUser": { + "type": "string" + }, + "adminPasswd": { + "type": "securestring" + }, + "intLbName": { + "type": "string" + }, + "intLbBackEndPool": { + "type": "string" + }, + "intLbBrokerIP": { + "type": "string" + }, + "intLbWebGWIP": { + "type": "string" + }, + "pubLbName": { + "type": "string" + }, + "pubLbBackEndPool": { + "type": "string" + }, + "adDomainName": { + "type": "string" + }, + "firstDcIP": { + "type": "string" + }, + "dcName": { + "type": "string" + }, + "MainConnectionBroker": { + "type": "string" + }, + "WebAccessServerName": { + "type": "string" + }, + "WebAccessServerCount": { + "type": "int" + }, + "SessionHostName": { + "type": "string" + }, + "SessionHostCount": { + "type": "int" + }, + "LicenseServerName": { + "type": "string" + }, + "LicenseServerCount": { + "type": "int" + }, + "externalFqdn": { + "type": "string" + }, + "brokerFqdn": { + "type": "string" + }, + "externalDnsZone": { + "type": "string" + }, + "dscFunction": { + "type": "string" + }, + "dscLocation": { + "type": "string" + }, + "dscScriptName": { + "type": "string" + }, + "scriptName": { + "type": "string" + }, + "deployHA": { + "type": "bool" + }, + "rdsDBName": { + "type": "string" + }, + "azureSQLFqdn": { + "type": "string" + }, + "webGwName": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "scriptPath": "[uri(parameters('dscLocation'),concat('scripts/',parameters('scriptName'),parameters('_artifactsLocationSasToken')))]", + "intlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + } + ], + "pubIntlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/pubLbName/pubLbBackEndPool" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-07-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'pip')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "vmNamepipcopy", + "count": "loopCount" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('vmName'),'pip',copyIndex(1))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "[concat(parameters('vmName'),copyIndex(1),'nic1')]", + "copy": { + "name": "vmNameniccopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "subNetRef" + }, + "privateIPAllocationMethod": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),'static','dynamic'),'dynamic')]", + "privateIPAddress": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),parameters('firstDcIP'),json('null')),json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + }, + "loadBalancerBackendAddressPools": "[if(not(empty(parameters('intLbBackEndPool'))),if(not(empty(parameters('pubLbBackEndPool'))),variables('pubIntlbPool'),variables('intlbPool')),json('null'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmNamevmcopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + ], + "properties": { + "licenseType": "Windows_Server", + "billingProfile": { + "maxPrice": "[if(equals(parameters('vmSpot'),bool('true')),'-1',json('null'))]" + }, + "priority": "[if(equals(parameters('vmSpot'),bool('true')),'Spot',json('null'))]", + "evictionPolicy": "[if(equals(parameters('vmSpot'),bool('true')),'Deallocate',json('null'))]", + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "storageDiagUrl" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + } + ] + }, + "osProfile": { + "adminUsername": "GEN-UNIQUE-5", + "adminPassword": "GEN-PASSWORD", + "computerName": "[concat(parameters('vmName'),copyIndex(1))]" + }, + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/dscext')]", + "location": "[resourceGroup().location]", + "condition": "[not(empty(parameters('dscFunction')))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('dscLocation'),concat('dsc/',parameters('dscScriptName'),parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "dscFunction", + "Properties": { + "AdminCreds": { + "UserName": "GEN-UNIQUE-5", + "Password": "PrivateSettingsRef:AdminPassword" + }, + "RDSParameters": [ + { + "timeZoneID": "UTC", + "DomainName": "contoso.com", + "DNSServer": "firstDcIP", + "MainConnectionBroker": "MainConnectionBroker", + "WebAccessServer": "WebAccessServerName1", + "SessionHost": "SessionHostName1", + "LicenseServer": "LicenseServerName1", + "externalFqdn": "externalFqdn", + "externalDnsDomain": "contosocorp.com", + "IntBrokerLBIP": "intLbBrokerIP", + "IntWebGWLBIP": "intLbWebGWIP", + "WebGWDNS": "webGwName" + } + ] + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/pwshext')]", + "location": "[resourceGroup().location]", + "condition": "[and(contains(parameters('vmName'),'cb'),parameters('deployHA'))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]", + "[resourceId('Microsoft.Compute/virtualMachines/extensions',concat(parameters('vmName'),copyIndex(1)),'dscext')]" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptPath" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Bypass -File ./scriptName -AdminUser GEN-UNIQUE-5 -Passwd GEN-PASSWORD -MainConnectionBroker MainConnectionBroker -BrokerFqdn brokerFqdn -WebGatewayFqdn externalFqdn -AzureSQLFQDN azureSqlFqdn -AzureSQLDBName rdsDBName -WebAccessServerName WebAccessServerName -WebAccessServerCount WebAccessServerCount -SessionHostName SessionHostName -SessionHostCount SessionHostCount -LicenseServerName LicenseServerName -LicenseServerCount LicenseServerCount" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "name": "[concat(variables('vmProperties')[copyIndex()].name,'Deployment')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks',concat(parameters('projectName'),'vnet'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'publb'))]", + "[resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))]", + "[resourceId('Microsoft.Sql/servers/databases',variables('sqlServerName'),variables('rdsDBName'))]" + ], + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "timeZoneID": { + "value": "UTC" + }, + "loopCount": { + "value": "(vmProperties)[copyIndex()].count" + }, + "storageDiagUrl": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))).primaryEndpoints.blob]" + }, + "vmName": { + "value": "(vmProperties)[copyIndex()].name" + }, + "subNetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5vnet/GEN-UNIQUE-5main" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "vmSpot": { + "value": true + }, + "vmStorageSkuType": { + "value": "Standard_LRS" + }, + "adminUser": { + "value": "GEN-UNIQUE-5" + }, + "adminPasswd": { + "value": "GEN-PASSWORD" + }, + "intLbName": { + "value": "GEN-UNIQUE-5intlb" + }, + "intLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].intLbBackEndPool" + }, + "intLbBrokerIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[0].properties.privateIPAddress]" + }, + "intLbWebGWIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[1].properties.privateIPAddress]" + }, + "pubLbName": { + "value": "GEN-UNIQUE-5publb" + }, + "pubLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].pubLbBackEndPool" + }, + "adDomainName": { + "value": "contoso.com" + }, + "firstDcIP": { + "value": "10.100.0.99" + }, + "dcName": { + "value": "(vmProperties)[0].name" + }, + "MainConnectionBroker": { + "value": "[concat(variables('vmProperties')[2].name,'1')]" + }, + "WebAccessServerName": { + "value": "(vmProperties)[1].name" + }, + "WebAccessServerCount": { + "value": "(vmProperties)[1].count" + }, + "SessionHostName": { + "value": "(vmProperties)[3].name" + }, + "SessionHostCount": { + "value": "(vmProperties)[3].count" + }, + "LicenseServerName": { + "value": "(vmProperties)[4].name" + }, + "LicenseServerCount": { + "value": "(vmProperties)[4].count" + }, + "externalFqdn": { + "value": "[variables('externalFqdn')]" + }, + "brokerFqdn": { + "value": "[variables('brokerFqdn')]" + }, + "externalDnsZone": { + "value": "contosocorp.com" + }, + "dscFunction": { + "value": "(vmProperties)[copyIndex()].dscFunction" + }, + "dscLocation": { + "value": "[deployment().properties.templatelink.uri]" + }, + "dscScriptName": { + "value": "deployrdslab.zip" + }, + "scriptName": { + "value": "deploycertha.ps1" + }, + "deployHA": { + "value": false + }, + "rdsDBName": { + "value": "rdsdb" + }, + "azureSqlFqdn": { + "value": "[reference(resourceId('Microsoft.Sql/servers',variables('sqlServerName'))).fullyQualifiedDomainName]" + }, + "webGwName": { + "value": "remoteapps" + }, + "_artifactsLocationSasToken": { + "value": "" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "timeZoneID": { + "type": "string" + }, + "loopCount": { + "type": "int" + }, + "storageDiagUrl": { + "type": "string" + }, + "vmName": { + "type": "string" + }, + "subNetRef": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "vmSpot": { + "type": "bool" + }, + "vmStorageSkuType": { + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "type": "string" + }, + "adminUser": { + "type": "string" + }, + "adminPasswd": { + "type": "securestring" + }, + "intLbName": { + "type": "string" + }, + "intLbBackEndPool": { + "type": "string" + }, + "intLbBrokerIP": { + "type": "string" + }, + "intLbWebGWIP": { + "type": "string" + }, + "pubLbName": { + "type": "string" + }, + "pubLbBackEndPool": { + "type": "string" + }, + "adDomainName": { + "type": "string" + }, + "firstDcIP": { + "type": "string" + }, + "dcName": { + "type": "string" + }, + "MainConnectionBroker": { + "type": "string" + }, + "WebAccessServerName": { + "type": "string" + }, + "WebAccessServerCount": { + "type": "int" + }, + "SessionHostName": { + "type": "string" + }, + "SessionHostCount": { + "type": "int" + }, + "LicenseServerName": { + "type": "string" + }, + "LicenseServerCount": { + "type": "int" + }, + "externalFqdn": { + "type": "string" + }, + "brokerFqdn": { + "type": "string" + }, + "externalDnsZone": { + "type": "string" + }, + "dscFunction": { + "type": "string" + }, + "dscLocation": { + "type": "string" + }, + "dscScriptName": { + "type": "string" + }, + "scriptName": { + "type": "string" + }, + "deployHA": { + "type": "bool" + }, + "rdsDBName": { + "type": "string" + }, + "azureSQLFqdn": { + "type": "string" + }, + "webGwName": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "scriptPath": "[uri(parameters('dscLocation'),concat('scripts/',parameters('scriptName'),parameters('_artifactsLocationSasToken')))]", + "intlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + } + ], + "pubIntlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/pubLbName/pubLbBackEndPool" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-07-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'pip')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "vmNamepipcopy", + "count": "loopCount" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('vmName'),'pip',copyIndex(1))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "[concat(parameters('vmName'),copyIndex(1),'nic1')]", + "copy": { + "name": "vmNameniccopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "subNetRef" + }, + "privateIPAllocationMethod": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),'static','dynamic'),'dynamic')]", + "privateIPAddress": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),parameters('firstDcIP'),json('null')),json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + }, + "loadBalancerBackendAddressPools": "[if(not(empty(parameters('intLbBackEndPool'))),if(not(empty(parameters('pubLbBackEndPool'))),variables('pubIntlbPool'),variables('intlbPool')),json('null'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmNamevmcopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + ], + "properties": { + "licenseType": "Windows_Server", + "billingProfile": { + "maxPrice": "[if(equals(parameters('vmSpot'),bool('true')),'-1',json('null'))]" + }, + "priority": "[if(equals(parameters('vmSpot'),bool('true')),'Spot',json('null'))]", + "evictionPolicy": "[if(equals(parameters('vmSpot'),bool('true')),'Deallocate',json('null'))]", + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "storageDiagUrl" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + } + ] + }, + "osProfile": { + "adminUsername": "GEN-UNIQUE-5", + "adminPassword": "GEN-PASSWORD", + "computerName": "[concat(parameters('vmName'),copyIndex(1))]" + }, + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/dscext')]", + "location": "[resourceGroup().location]", + "condition": "[not(empty(parameters('dscFunction')))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('dscLocation'),concat('dsc/',parameters('dscScriptName'),parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "dscFunction", + "Properties": { + "AdminCreds": { + "UserName": "GEN-UNIQUE-5", + "Password": "PrivateSettingsRef:AdminPassword" + }, + "RDSParameters": [ + { + "timeZoneID": "UTC", + "DomainName": "contoso.com", + "DNSServer": "firstDcIP", + "MainConnectionBroker": "MainConnectionBroker", + "WebAccessServer": "WebAccessServerName1", + "SessionHost": "SessionHostName1", + "LicenseServer": "LicenseServerName1", + "externalFqdn": "externalFqdn", + "externalDnsDomain": "contosocorp.com", + "IntBrokerLBIP": "intLbBrokerIP", + "IntWebGWLBIP": "intLbWebGWIP", + "WebGWDNS": "webGwName" + } + ] + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/pwshext')]", + "location": "[resourceGroup().location]", + "condition": "[and(contains(parameters('vmName'),'cb'),parameters('deployHA'))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]", + "[resourceId('Microsoft.Compute/virtualMachines/extensions',concat(parameters('vmName'),copyIndex(1)),'dscext')]" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptPath" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Bypass -File ./scriptName -AdminUser GEN-UNIQUE-5 -Passwd GEN-PASSWORD -MainConnectionBroker MainConnectionBroker -BrokerFqdn brokerFqdn -WebGatewayFqdn externalFqdn -AzureSQLFQDN azureSqlFqdn -AzureSQLDBName rdsDBName -WebAccessServerName WebAccessServerName -WebAccessServerCount WebAccessServerCount -SessionHostName SessionHostName -SessionHostCount SessionHostCount -LicenseServerName LicenseServerName -LicenseServerCount LicenseServerCount" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "name": "[concat(variables('vmProperties')[copyIndex()].name,'Deployment')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks',concat(parameters('projectName'),'vnet'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'publb'))]", + "[resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))]", + "[resourceId('Microsoft.Sql/servers/databases',variables('sqlServerName'),variables('rdsDBName'))]" + ], + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "timeZoneID": { + "value": "UTC" + }, + "loopCount": { + "value": "(vmProperties)[copyIndex()].count" + }, + "storageDiagUrl": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))).primaryEndpoints.blob]" + }, + "vmName": { + "value": "(vmProperties)[copyIndex()].name" + }, + "subNetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5vnet/GEN-UNIQUE-5main" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "vmSpot": { + "value": true + }, + "vmStorageSkuType": { + "value": "Standard_LRS" + }, + "adminUser": { + "value": "GEN-UNIQUE-5" + }, + "adminPasswd": { + "value": "GEN-PASSWORD" + }, + "intLbName": { + "value": "GEN-UNIQUE-5intlb" + }, + "intLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].intLbBackEndPool" + }, + "intLbBrokerIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[0].properties.privateIPAddress]" + }, + "intLbWebGWIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[1].properties.privateIPAddress]" + }, + "pubLbName": { + "value": "GEN-UNIQUE-5publb" + }, + "pubLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].pubLbBackEndPool" + }, + "adDomainName": { + "value": "contoso.com" + }, + "firstDcIP": { + "value": "10.100.0.99" + }, + "dcName": { + "value": "(vmProperties)[0].name" + }, + "MainConnectionBroker": { + "value": "[concat(variables('vmProperties')[2].name,'1')]" + }, + "WebAccessServerName": { + "value": "(vmProperties)[1].name" + }, + "WebAccessServerCount": { + "value": "(vmProperties)[1].count" + }, + "SessionHostName": { + "value": "(vmProperties)[3].name" + }, + "SessionHostCount": { + "value": "(vmProperties)[3].count" + }, + "LicenseServerName": { + "value": "(vmProperties)[4].name" + }, + "LicenseServerCount": { + "value": "(vmProperties)[4].count" + }, + "externalFqdn": { + "value": "[variables('externalFqdn')]" + }, + "brokerFqdn": { + "value": "[variables('brokerFqdn')]" + }, + "externalDnsZone": { + "value": "contosocorp.com" + }, + "dscFunction": { + "value": "(vmProperties)[copyIndex()].dscFunction" + }, + "dscLocation": { + "value": "[deployment().properties.templatelink.uri]" + }, + "dscScriptName": { + "value": "deployrdslab.zip" + }, + "scriptName": { + "value": "deploycertha.ps1" + }, + "deployHA": { + "value": false + }, + "rdsDBName": { + "value": "rdsdb" + }, + "azureSqlFqdn": { + "value": "[reference(resourceId('Microsoft.Sql/servers',variables('sqlServerName'))).fullyQualifiedDomainName]" + }, + "webGwName": { + "value": "remoteapps" + }, + "_artifactsLocationSasToken": { + "value": "" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "timeZoneID": { + "type": "string" + }, + "loopCount": { + "type": "int" + }, + "storageDiagUrl": { + "type": "string" + }, + "vmName": { + "type": "string" + }, + "subNetRef": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "vmSpot": { + "type": "bool" + }, + "vmStorageSkuType": { + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "type": "string" + }, + "adminUser": { + "type": "string" + }, + "adminPasswd": { + "type": "securestring" + }, + "intLbName": { + "type": "string" + }, + "intLbBackEndPool": { + "type": "string" + }, + "intLbBrokerIP": { + "type": "string" + }, + "intLbWebGWIP": { + "type": "string" + }, + "pubLbName": { + "type": "string" + }, + "pubLbBackEndPool": { + "type": "string" + }, + "adDomainName": { + "type": "string" + }, + "firstDcIP": { + "type": "string" + }, + "dcName": { + "type": "string" + }, + "MainConnectionBroker": { + "type": "string" + }, + "WebAccessServerName": { + "type": "string" + }, + "WebAccessServerCount": { + "type": "int" + }, + "SessionHostName": { + "type": "string" + }, + "SessionHostCount": { + "type": "int" + }, + "LicenseServerName": { + "type": "string" + }, + "LicenseServerCount": { + "type": "int" + }, + "externalFqdn": { + "type": "string" + }, + "brokerFqdn": { + "type": "string" + }, + "externalDnsZone": { + "type": "string" + }, + "dscFunction": { + "type": "string" + }, + "dscLocation": { + "type": "string" + }, + "dscScriptName": { + "type": "string" + }, + "scriptName": { + "type": "string" + }, + "deployHA": { + "type": "bool" + }, + "rdsDBName": { + "type": "string" + }, + "azureSQLFqdn": { + "type": "string" + }, + "webGwName": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "scriptPath": "[uri(parameters('dscLocation'),concat('scripts/',parameters('scriptName'),parameters('_artifactsLocationSasToken')))]", + "intlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + } + ], + "pubIntlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/pubLbName/pubLbBackEndPool" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-07-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'pip')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "vmNamepipcopy", + "count": "loopCount" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('vmName'),'pip',copyIndex(1))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "[concat(parameters('vmName'),copyIndex(1),'nic1')]", + "copy": { + "name": "vmNameniccopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "subNetRef" + }, + "privateIPAllocationMethod": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),'static','dynamic'),'dynamic')]", + "privateIPAddress": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),parameters('firstDcIP'),json('null')),json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + }, + "loadBalancerBackendAddressPools": "[if(not(empty(parameters('intLbBackEndPool'))),if(not(empty(parameters('pubLbBackEndPool'))),variables('pubIntlbPool'),variables('intlbPool')),json('null'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmNamevmcopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + ], + "properties": { + "licenseType": "Windows_Server", + "billingProfile": { + "maxPrice": "[if(equals(parameters('vmSpot'),bool('true')),'-1',json('null'))]" + }, + "priority": "[if(equals(parameters('vmSpot'),bool('true')),'Spot',json('null'))]", + "evictionPolicy": "[if(equals(parameters('vmSpot'),bool('true')),'Deallocate',json('null'))]", + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "storageDiagUrl" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + } + ] + }, + "osProfile": { + "adminUsername": "GEN-UNIQUE-5", + "adminPassword": "GEN-PASSWORD", + "computerName": "[concat(parameters('vmName'),copyIndex(1))]" + }, + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/dscext')]", + "location": "[resourceGroup().location]", + "condition": "[not(empty(parameters('dscFunction')))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('dscLocation'),concat('dsc/',parameters('dscScriptName'),parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "dscFunction", + "Properties": { + "AdminCreds": { + "UserName": "GEN-UNIQUE-5", + "Password": "PrivateSettingsRef:AdminPassword" + }, + "RDSParameters": [ + { + "timeZoneID": "UTC", + "DomainName": "contoso.com", + "DNSServer": "firstDcIP", + "MainConnectionBroker": "MainConnectionBroker", + "WebAccessServer": "WebAccessServerName1", + "SessionHost": "SessionHostName1", + "LicenseServer": "LicenseServerName1", + "externalFqdn": "externalFqdn", + "externalDnsDomain": "contosocorp.com", + "IntBrokerLBIP": "intLbBrokerIP", + "IntWebGWLBIP": "intLbWebGWIP", + "WebGWDNS": "webGwName" + } + ] + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/pwshext')]", + "location": "[resourceGroup().location]", + "condition": "[and(contains(parameters('vmName'),'cb'),parameters('deployHA'))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]", + "[resourceId('Microsoft.Compute/virtualMachines/extensions',concat(parameters('vmName'),copyIndex(1)),'dscext')]" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptPath" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Bypass -File ./scriptName -AdminUser GEN-UNIQUE-5 -Passwd GEN-PASSWORD -MainConnectionBroker MainConnectionBroker -BrokerFqdn brokerFqdn -WebGatewayFqdn externalFqdn -AzureSQLFQDN azureSqlFqdn -AzureSQLDBName rdsDBName -WebAccessServerName WebAccessServerName -WebAccessServerCount WebAccessServerCount -SessionHostName SessionHostName -SessionHostCount SessionHostCount -LicenseServerName LicenseServerName -LicenseServerCount LicenseServerCount" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "name": "[concat(variables('vmProperties')[copyIndex()].name,'Deployment')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks',concat(parameters('projectName'),'vnet'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'publb'))]", + "[resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))]", + "[resourceId('Microsoft.Sql/servers/databases',variables('sqlServerName'),variables('rdsDBName'))]" + ], + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "timeZoneID": { + "value": "UTC" + }, + "loopCount": { + "value": "(vmProperties)[copyIndex()].count" + }, + "storageDiagUrl": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))).primaryEndpoints.blob]" + }, + "vmName": { + "value": "(vmProperties)[copyIndex()].name" + }, + "subNetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5vnet/GEN-UNIQUE-5main" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "vmSpot": { + "value": true + }, + "vmStorageSkuType": { + "value": "Standard_LRS" + }, + "adminUser": { + "value": "GEN-UNIQUE-5" + }, + "adminPasswd": { + "value": "GEN-PASSWORD" + }, + "intLbName": { + "value": "GEN-UNIQUE-5intlb" + }, + "intLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].intLbBackEndPool" + }, + "intLbBrokerIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[0].properties.privateIPAddress]" + }, + "intLbWebGWIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[1].properties.privateIPAddress]" + }, + "pubLbName": { + "value": "GEN-UNIQUE-5publb" + }, + "pubLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].pubLbBackEndPool" + }, + "adDomainName": { + "value": "contoso.com" + }, + "firstDcIP": { + "value": "10.100.0.99" + }, + "dcName": { + "value": "(vmProperties)[0].name" + }, + "MainConnectionBroker": { + "value": "[concat(variables('vmProperties')[2].name,'1')]" + }, + "WebAccessServerName": { + "value": "(vmProperties)[1].name" + }, + "WebAccessServerCount": { + "value": "(vmProperties)[1].count" + }, + "SessionHostName": { + "value": "(vmProperties)[3].name" + }, + "SessionHostCount": { + "value": "(vmProperties)[3].count" + }, + "LicenseServerName": { + "value": "(vmProperties)[4].name" + }, + "LicenseServerCount": { + "value": "(vmProperties)[4].count" + }, + "externalFqdn": { + "value": "[variables('externalFqdn')]" + }, + "brokerFqdn": { + "value": "[variables('brokerFqdn')]" + }, + "externalDnsZone": { + "value": "contosocorp.com" + }, + "dscFunction": { + "value": "(vmProperties)[copyIndex()].dscFunction" + }, + "dscLocation": { + "value": "[deployment().properties.templatelink.uri]" + }, + "dscScriptName": { + "value": "deployrdslab.zip" + }, + "scriptName": { + "value": "deploycertha.ps1" + }, + "deployHA": { + "value": false + }, + "rdsDBName": { + "value": "rdsdb" + }, + "azureSqlFqdn": { + "value": "[reference(resourceId('Microsoft.Sql/servers',variables('sqlServerName'))).fullyQualifiedDomainName]" + }, + "webGwName": { + "value": "remoteapps" + }, + "_artifactsLocationSasToken": { + "value": "" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "timeZoneID": { + "type": "string" + }, + "loopCount": { + "type": "int" + }, + "storageDiagUrl": { + "type": "string" + }, + "vmName": { + "type": "string" + }, + "subNetRef": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "vmSpot": { + "type": "bool" + }, + "vmStorageSkuType": { + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "type": "string" + }, + "adminUser": { + "type": "string" + }, + "adminPasswd": { + "type": "securestring" + }, + "intLbName": { + "type": "string" + }, + "intLbBackEndPool": { + "type": "string" + }, + "intLbBrokerIP": { + "type": "string" + }, + "intLbWebGWIP": { + "type": "string" + }, + "pubLbName": { + "type": "string" + }, + "pubLbBackEndPool": { + "type": "string" + }, + "adDomainName": { + "type": "string" + }, + "firstDcIP": { + "type": "string" + }, + "dcName": { + "type": "string" + }, + "MainConnectionBroker": { + "type": "string" + }, + "WebAccessServerName": { + "type": "string" + }, + "WebAccessServerCount": { + "type": "int" + }, + "SessionHostName": { + "type": "string" + }, + "SessionHostCount": { + "type": "int" + }, + "LicenseServerName": { + "type": "string" + }, + "LicenseServerCount": { + "type": "int" + }, + "externalFqdn": { + "type": "string" + }, + "brokerFqdn": { + "type": "string" + }, + "externalDnsZone": { + "type": "string" + }, + "dscFunction": { + "type": "string" + }, + "dscLocation": { + "type": "string" + }, + "dscScriptName": { + "type": "string" + }, + "scriptName": { + "type": "string" + }, + "deployHA": { + "type": "bool" + }, + "rdsDBName": { + "type": "string" + }, + "azureSQLFqdn": { + "type": "string" + }, + "webGwName": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "scriptPath": "[uri(parameters('dscLocation'),concat('scripts/',parameters('scriptName'),parameters('_artifactsLocationSasToken')))]", + "intlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + } + ], + "pubIntlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/pubLbName/pubLbBackEndPool" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-07-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'pip')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "vmNamepipcopy", + "count": "loopCount" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('vmName'),'pip',copyIndex(1))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "[concat(parameters('vmName'),copyIndex(1),'nic1')]", + "copy": { + "name": "vmNameniccopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "subNetRef" + }, + "privateIPAllocationMethod": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),'static','dynamic'),'dynamic')]", + "privateIPAddress": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),parameters('firstDcIP'),json('null')),json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + }, + "loadBalancerBackendAddressPools": "[if(not(empty(parameters('intLbBackEndPool'))),if(not(empty(parameters('pubLbBackEndPool'))),variables('pubIntlbPool'),variables('intlbPool')),json('null'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmNamevmcopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + ], + "properties": { + "licenseType": "Windows_Server", + "billingProfile": { + "maxPrice": "[if(equals(parameters('vmSpot'),bool('true')),'-1',json('null'))]" + }, + "priority": "[if(equals(parameters('vmSpot'),bool('true')),'Spot',json('null'))]", + "evictionPolicy": "[if(equals(parameters('vmSpot'),bool('true')),'Deallocate',json('null'))]", + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "storageDiagUrl" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + } + ] + }, + "osProfile": { + "adminUsername": "GEN-UNIQUE-5", + "adminPassword": "GEN-PASSWORD", + "computerName": "[concat(parameters('vmName'),copyIndex(1))]" + }, + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/dscext')]", + "location": "[resourceGroup().location]", + "condition": "[not(empty(parameters('dscFunction')))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('dscLocation'),concat('dsc/',parameters('dscScriptName'),parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "dscFunction", + "Properties": { + "AdminCreds": { + "UserName": "GEN-UNIQUE-5", + "Password": "PrivateSettingsRef:AdminPassword" + }, + "RDSParameters": [ + { + "timeZoneID": "UTC", + "DomainName": "contoso.com", + "DNSServer": "firstDcIP", + "MainConnectionBroker": "MainConnectionBroker", + "WebAccessServer": "WebAccessServerName1", + "SessionHost": "SessionHostName1", + "LicenseServer": "LicenseServerName1", + "externalFqdn": "externalFqdn", + "externalDnsDomain": "contosocorp.com", + "IntBrokerLBIP": "intLbBrokerIP", + "IntWebGWLBIP": "intLbWebGWIP", + "WebGWDNS": "webGwName" + } + ] + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/pwshext')]", + "location": "[resourceGroup().location]", + "condition": "[and(contains(parameters('vmName'),'cb'),parameters('deployHA'))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]", + "[resourceId('Microsoft.Compute/virtualMachines/extensions',concat(parameters('vmName'),copyIndex(1)),'dscext')]" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptPath" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Bypass -File ./scriptName -AdminUser GEN-UNIQUE-5 -Passwd GEN-PASSWORD -MainConnectionBroker MainConnectionBroker -BrokerFqdn brokerFqdn -WebGatewayFqdn externalFqdn -AzureSQLFQDN azureSqlFqdn -AzureSQLDBName rdsDBName -WebAccessServerName WebAccessServerName -WebAccessServerCount WebAccessServerCount -SessionHostName SessionHostName -SessionHostCount SessionHostCount -LicenseServerName LicenseServerName -LicenseServerCount LicenseServerCount" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2021-04-01", + "name": "[concat(variables('vmProperties')[copyIndex()].name,'Deployment')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks',concat(parameters('projectName'),'vnet'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))]", + "[resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'publb'))]", + "[resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))]", + "[resourceId('Microsoft.Sql/servers/databases',variables('sqlServerName'),variables('rdsDBName'))]" + ], + "properties": { + "mode": "Incremental", + "expressionEvaluationOptions": { + "scope": "inner" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "timeZoneID": { + "value": "UTC" + }, + "loopCount": { + "value": "(vmProperties)[copyIndex()].count" + }, + "storageDiagUrl": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts',variables('diagStorageName'))).primaryEndpoints.blob]" + }, + "vmName": { + "value": "(vmProperties)[copyIndex()].name" + }, + "subNetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-5vnet/GEN-UNIQUE-5main" + }, + "vmSize": { + "value": "Standard_A2_v2" + }, + "vmSpot": { + "value": true + }, + "vmStorageSkuType": { + "value": "Standard_LRS" + }, + "adminUser": { + "value": "GEN-UNIQUE-5" + }, + "adminPasswd": { + "value": "GEN-PASSWORD" + }, + "intLbName": { + "value": "GEN-UNIQUE-5intlb" + }, + "intLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].intLbBackEndPool" + }, + "intLbBrokerIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[0].properties.privateIPAddress]" + }, + "intLbWebGWIP": { + "value": "[reference(resourceId('Microsoft.Network/loadBalancers',concat(parameters('projectName'),'intlb'))).frontendIPConfigurations[1].properties.privateIPAddress]" + }, + "pubLbName": { + "value": "GEN-UNIQUE-5publb" + }, + "pubLbBackEndPool": { + "value": "(vmProperties)[copyIndex()].pubLbBackEndPool" + }, + "adDomainName": { + "value": "contoso.com" + }, + "firstDcIP": { + "value": "10.100.0.99" + }, + "dcName": { + "value": "(vmProperties)[0].name" + }, + "MainConnectionBroker": { + "value": "[concat(variables('vmProperties')[2].name,'1')]" + }, + "WebAccessServerName": { + "value": "(vmProperties)[1].name" + }, + "WebAccessServerCount": { + "value": "(vmProperties)[1].count" + }, + "SessionHostName": { + "value": "(vmProperties)[3].name" + }, + "SessionHostCount": { + "value": "(vmProperties)[3].count" + }, + "LicenseServerName": { + "value": "(vmProperties)[4].name" + }, + "LicenseServerCount": { + "value": "(vmProperties)[4].count" + }, + "externalFqdn": { + "value": "[variables('externalFqdn')]" + }, + "brokerFqdn": { + "value": "[variables('brokerFqdn')]" + }, + "externalDnsZone": { + "value": "contosocorp.com" + }, + "dscFunction": { + "value": "(vmProperties)[copyIndex()].dscFunction" + }, + "dscLocation": { + "value": "[deployment().properties.templatelink.uri]" + }, + "dscScriptName": { + "value": "deployrdslab.zip" + }, + "scriptName": { + "value": "deploycertha.ps1" + }, + "deployHA": { + "value": false + }, + "rdsDBName": { + "value": "rdsdb" + }, + "azureSqlFqdn": { + "value": "[reference(resourceId('Microsoft.Sql/servers',variables('sqlServerName'))).fullyQualifiedDomainName]" + }, + "webGwName": { + "value": "remoteapps" + }, + "_artifactsLocationSasToken": { + "value": "" + } + }, + "template": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "timeZoneID": { + "type": "string" + }, + "loopCount": { + "type": "int" + }, + "storageDiagUrl": { + "type": "string" + }, + "vmName": { + "type": "string" + }, + "subNetRef": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "vmSpot": { + "type": "bool" + }, + "vmStorageSkuType": { + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Premium_LRS", + "StandardSSD_LRS", + "Standard_LRS" + ], + "type": "string" + }, + "adminUser": { + "type": "string" + }, + "adminPasswd": { + "type": "securestring" + }, + "intLbName": { + "type": "string" + }, + "intLbBackEndPool": { + "type": "string" + }, + "intLbBrokerIP": { + "type": "string" + }, + "intLbWebGWIP": { + "type": "string" + }, + "pubLbName": { + "type": "string" + }, + "pubLbBackEndPool": { + "type": "string" + }, + "adDomainName": { + "type": "string" + }, + "firstDcIP": { + "type": "string" + }, + "dcName": { + "type": "string" + }, + "MainConnectionBroker": { + "type": "string" + }, + "WebAccessServerName": { + "type": "string" + }, + "WebAccessServerCount": { + "type": "int" + }, + "SessionHostName": { + "type": "string" + }, + "SessionHostCount": { + "type": "int" + }, + "LicenseServerName": { + "type": "string" + }, + "LicenseServerCount": { + "type": "int" + }, + "externalFqdn": { + "type": "string" + }, + "brokerFqdn": { + "type": "string" + }, + "externalDnsZone": { + "type": "string" + }, + "dscFunction": { + "type": "string" + }, + "dscLocation": { + "type": "string" + }, + "dscScriptName": { + "type": "string" + }, + "scriptName": { + "type": "string" + }, + "deployHA": { + "type": "bool" + }, + "rdsDBName": { + "type": "string" + }, + "azureSQLFqdn": { + "type": "string" + }, + "webGwName": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "scriptPath": "[uri(parameters('dscLocation'),concat('scripts/',parameters('scriptName'),parameters('_artifactsLocationSasToken')))]", + "intlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + } + ], + "pubIntlbPool": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/intLbName/intLbBackEndPool" + }, + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/pubLbName/pubLbBackEndPool" + } + ] + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-07-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'pip')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "copy": { + "name": "vmNamepipcopy", + "count": "loopCount" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat(parameters('vmName'),'pip',copyIndex(1))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "name": "[concat(parameters('vmName'),copyIndex(1),'nic1')]", + "copy": { + "name": "vmNameniccopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "subnet": { + "id": "subNetRef" + }, + "privateIPAllocationMethod": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),'static','dynamic'),'dynamic')]", + "privateIPAddress": "[if(equals(parameters('vmName'),parameters('dcName')),if(equals(copyIndex(1),1),parameters('firstDcIP'),json('null')),json('null'))]", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('vmName'),copyIndex(1),'pip'))]" + }, + "loadBalancerBackendAddressPools": "[if(not(empty(parameters('intLbBackEndPool'))),if(not(empty(parameters('pubLbBackEndPool'))),variables('pubIntlbPool'),variables('intlbPool')),json('null'))]" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1))]", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmNamevmcopy", + "count": "loopCount" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + ], + "properties": { + "licenseType": "Windows_Server", + "billingProfile": { + "maxPrice": "[if(equals(parameters('vmSpot'),bool('true')),'-1',json('null'))]" + }, + "priority": "[if(equals(parameters('vmSpot'),bool('true')),'Spot',json('null'))]", + "evictionPolicy": "[if(equals(parameters('vmSpot'),bool('true')),'Deallocate',json('null'))]", + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "storageDiagUrl" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName'),copyIndex(1),'nic1'))]" + } + ] + }, + "osProfile": { + "adminUsername": "GEN-UNIQUE-5", + "adminPassword": "GEN-PASSWORD", + "computerName": "[concat(parameters('vmName'),copyIndex(1))]" + }, + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/dscext')]", + "location": "[resourceGroup().location]", + "condition": "[not(empty(parameters('dscFunction')))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.11", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('dscLocation'),concat('dsc/',parameters('dscScriptName'),parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "dscFunction", + "Properties": { + "AdminCreds": { + "UserName": "GEN-UNIQUE-5", + "Password": "PrivateSettingsRef:AdminPassword" + }, + "RDSParameters": [ + { + "timeZoneID": "UTC", + "DomainName": "contoso.com", + "DNSServer": "firstDcIP", + "MainConnectionBroker": "MainConnectionBroker", + "WebAccessServer": "WebAccessServerName1", + "SessionHost": "SessionHostName1", + "LicenseServer": "LicenseServerName1", + "externalFqdn": "externalFqdn", + "externalDnsDomain": "contosocorp.com", + "IntBrokerLBIP": "intLbBrokerIP", + "IntWebGWLBIP": "intLbWebGWIP", + "WebGWDNS": "webGwName" + } + ] + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2020-12-01", + "name": "[concat(parameters('vmName'),copyIndex(1),'/pwshext')]", + "location": "[resourceGroup().location]", + "condition": "[and(contains(parameters('vmName'),'cb'),parameters('deployHA'))]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines',concat(parameters('vmName'),copyIndex(1)))]", + "[resourceId('Microsoft.Compute/virtualMachines/extensions',concat(parameters('vmName'),copyIndex(1)),'dscext')]" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptPath" + ] + }, + "protectedSettings": { + "commandToExecute": "powershell -ExecutionPolicy Bypass -File ./scriptName -AdminUser GEN-UNIQUE-5 -Passwd GEN-PASSWORD -MainConnectionBroker MainConnectionBroker -BrokerFqdn brokerFqdn -WebGatewayFqdn externalFqdn -AzureSQLFQDN azureSqlFqdn -AzureSQLDBName rdsDBName -WebAccessServerName WebAccessServerName -WebAccessServerCount WebAccessServerCount -SessionHostName SessionHostName -SessionHostCount SessionHostCount -LicenseServerName LicenseServerName -LicenseServerCount LicenseServerCount" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "outputs": { + "adminUser": { + "type": "string", + "value": "[parameters('adminUser')]" + }, + "WebAccessFQDN": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicLbIpName'))).dnsSettings.fqdn]" + }, + "ExternalFQDN": { + "type": "string", + "value": "[variables('externalFqdn')]", + "condition": "[parameters('deployHA')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT79 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT79 new file mode 100644 index 0000000..e152ad4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT79 @@ -0,0 +1,350 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-ds14.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885575, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-ds14.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT79", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT79", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string", + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "type": "string" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": { + "singleQuote": "'", + "masterIP": "networkSpec", + "workerIP": "networkSpec", + "vmName": "GEN-UNIQUE-10-dn", + "nicName": "GEN-UNIQUE-10-dn-nic", + "publicIPAddressName": "GEN-UNIQUE-10-dn-publicIP", + "securityGroupName": "GEN-UNIQUE-10-dn-sg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-10-dn-sg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-10-dn-publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "publicIPLoop", + "count": "vmCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10-dncopyIndex()" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-10-dn-niccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-dn-publicIPcopyIndex()", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-dn-sg" + ], + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(parameters('networkSpec').ipOctet01, add(parameters('networkSpec').ipOctet2, div(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256)), '.', mod(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256))]", + "subnet": { + "id": "vnetID/subnets/networkSpec" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-dn-publicIPcopyIndex()" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-dn-sg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "name": "GEN-UNIQUE-10-dncopyIndex()", + "plan": { + "name": "cloudera-centos-6", + "publisher": "cloudera", + "product": "cloudera-centos-6" + }, + "location": "[resourceGroup().location]", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-dn-niccopyIndex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/vmSpec" + }, + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "[reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn]", + "adminUsername": "vmSpec", + "adminPassword": "vmSpec", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-6", + "sku": "cloudera-centos-6", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-10-dncopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk1", + "diskSizeGB": 512, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 2, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 3, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk5", + "diskSizeGB": 1023, + "lun": 4, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk6", + "diskSizeGB": 1023, + "lun": 5, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk7", + "diskSizeGB": 1023, + "lun": 6, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk8", + "diskSizeGB": 1023, + "lun": 7, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk9", + "diskSizeGB": 1023, + "lun": 8, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk10", + "diskSizeGB": 1023, + "lun": 9, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk11", + "diskSizeGB": 1023, + "lun": 10, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-dn-niccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-10-dncopyIndex()/prepareDisks", + "location": "[resourceGroup().location]", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10-dncopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/prepare-datanode-disks.sh", + "scriptsUri/scripts/initialize-node.sh" + ], + "commandToExecute": "[concat('sh initialize-node.sh ', variables('singleQuote'), variables('masterIP'), variables('singleQuote'), ' ', variables('singleQuote'), variables('workerIP'), variables('singleQuote'), ' ', variables('singleQuote'), parameters('dnsNamePrefix'), variables('singleQuote'), ' ', variables('singleQuote'), reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').masterNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').dataNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('vmSpec').adminUsername, variables('singleQuote'), ' ', 'datanode', ' >> /var/log/cloudera-azure-initialize.log 2>&1')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT790 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT790 new file mode 100644 index 0000000..af80a74 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT790 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/resourcegraph-sharedquery-countos/azuredeploy.json", + "/demos/resourcegraph-sharedquery-countos/azuredeploy.parameters.json" + ], + "timestamp": 1642962901496, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/resourcegraph-sharedquery-countos/azuredeploy.json", + "/demos/resourcegraph-sharedquery-countos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT790", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resourcegraph/queries" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT790", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "queryName": { + "defaultValue": "Count VMs by OS", + "type": "String", + "metadata": { + "description": "The name of the shared query." + } + }, + "queryCode": { + "defaultValue": "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)", + "type": "String", + "metadata": { + "description": "The Azure Resource Graph query to be saved to the shared query." + } + }, + "queryDescription": { + "defaultValue": "This shared query counts all virtual machine resources and summarizes by the OS type.", + "type": "String", + "metadata": { + "description": "The description of the saved Azure Resource Graph query." + } + } + }, + "resources": [ + { + "type": "Microsoft.ResourceGraph/queries", + "apiVersion": "2018-09-01-preview", + "name": "Count VMs by OS", + "location": "global", + "properties": { + "query": "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)", + "description": "This shared query counts all virtual machine resources and summarizes by the OS type." + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT791 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT791 new file mode 100644 index 0000000..a75ce82 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT791 @@ -0,0 +1,67 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/s2d-oms-mgmt-solution/prereqs/prereq.azuredeploy.json", + "/demos/s2d-oms-mgmt-solution/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962901515, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/s2d-oms-mgmt-solution/prereqs/prereq.azuredeploy.json", + "/demos/s2d-oms-mgmt-solution/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT791", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT791", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "workspacename": "[concat('omswrkspc',uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "name": "[variables('workspacename')]", + "apiVersion": "2020-10-01", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "Name": "pergb2018" + } + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[variables('workspacename')]" + }, + "workspaceLocation": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT792 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT792 new file mode 100644 index 0000000..34384df --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT792 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/albBEPool.json" + ], + "timestamp": 1642962901560, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/albBEPool.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT792", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT792", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "vmNamePrefix": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "vmCount": { + "type": "int" + }, + "lbBEAddressPoolID": { + "type": "string" + }, + "albBEAddressPoolID": { + "type": "string" + } + }, + "variables": {}, + "resources": [ + { + "name": "vmNamePrefixcopyindex()-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-08-01", + "copy": { + "name": "lbBEPoolLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "lbBEAddressPoolID" + }, + { + "id": "albBEAddressPoolID" + } + ], + "primary": true + } + }, + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + } + } + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT793 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT793 new file mode 100644 index 0000000..6cc527f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT793 @@ -0,0 +1,654 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/deploy-sql-cluster.json" + ], + "timestamp": 1642962901571, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/deploy-sql-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT793", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT793", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the VM, only certain regions support zones during preview." + } + }, + "namePrefix": { + "type": "string", + "minLength": 3, + "maxLength": 8, + "metadata": { + "description": "Naming prefix for each new resource created. 3-char min, 8-char max, lowercase alphanumeric" + } + }, + "domainName": { + "type": "string", + "metadata": { + "description": "DNS domain name for existing Active Directory domain" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Name of the Administrator of the existing Active Directory Domain" + } + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Administrator account of the existing Active Directory Domain" + } + }, + "sqlServiceAccount": { + "type": "string", + "metadata": { + "description": "Name of the user account to be used for the SQL Server service account" + } + }, + "sqlServicePassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password to be used for the SQL Server service account" + } + }, + "subnetId": { + "type": "string", + "metadata": { + "description": "Resource ID for existing vnet/subnet to which VM NICs should be attached" + } + }, + "enableOutboundInternet": { + "type": "string", + "allowedValues": [ + "Yes", + "No" + ], + "metadata": { + "description": "Enable outbound Internet access via source NAT to support ongoing VM Agent extension communication needs" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the SQL Server VMs to be created" + } + }, + "vmCount": { + "type": "int", + "minValue": 2, + "maxValue": 9, + "metadata": { + "description": "Number of SQL Server VMs to be created in AlwaysOn Availability Group cluster (Min=2, Max=9)" + }, + "defaultValue": 2 + }, + "vmDiskSize": { + "type": "int", + "minValue": 128, + "maxValue": 1023, + "metadata": { + "description": "Size of each data disk in GB on each SQL Server VM (Min=128, Max=1023)" + } + }, + "vmDiskCount": { + "type": "int", + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of data disks on each SQL Server VM (Min=2, Max=32). Ensure that the VM size you've selected will support this number of data disks." + } + }, + "workloadType": { + "type": "string", + "defaultValue": "GENERAL" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftSQLServer" + }, + "imageOffer": { + "type": "string", + "defaultValue": "SQL2016SP1-WS2016" + }, + "imageSKU": { + "type": "string", + "defaultValue": "Enterprise" + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "securestring" + } + }, + "variables": { + "witnessStorageName": "[concat(parameters('namePrefix'),uniqueString(resourceGroup().id),'cw')]", + "witnessStorageType": "Standard_LRS", + "vmNamePrefix": "namePrefix-sql-", + "clusterName": "namePrefix-sql-c", + "vmLoopTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/newVM.json',parameters('_artifactsLocationSasToken')))]", + "ipLoopTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/getIpAddress.json',parameters('_artifactsLocationSasToken')))]", + "sqlPrepModulesURL": "[uri(parameters('_artifactsLocation'), concat('dsc/prep-sqlao.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "sqlPrepFunction": "PrepSQLAO.ps1\\PrepSQLAO", + "sqlConfigModulesURL": "[uri(parameters('_artifactsLocation'), concat('dsc/config-sqlao.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "sqlConfigFunction": "ConfigSQLAO.ps1\\ConfigSQLAO", + "agName": "namePrefix-sql-ag", + "agListenerName": "namePrefix-sql-agl", + "agEpName": "namePrefix-sql-ha", + "albName": "namePrefix-sql-alb", + "albPip": "namePrefix-sql-albpip", + "albPipID": "Microsoft.Network/publicIPAddresses/namePrefix-sql-albpip", + "albFE1": "namePrefix-sql-albfe1", + "albBE": "namePrefix-sql-albbe", + "albBEAddressPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/namePrefix-sql-alb/namePrefix-sql-albbe", + "albBEPoolTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/albBEPool.json',parameters('_artifactsLocationSasToken')))]", + "albFEConfigID1": "Microsoft.Network/loadBalancers/frontendIPConfigurations/namePrefix-sql-alb/namePrefix-sql-albfe1", + "albProbe1": "namePrefix-sql-albp1", + "albProbeID1": "Microsoft.Network/loadBalancers/probes/namePrefix-sql-alb/namePrefix-sql-albp1", + "lbName": "namePrefix-sql-ilb", + "lbFE1": "namePrefix-sql-ilbfe1", + "lbBE": "namePrefix-sql-ilbbe", + "lbFEConfigID1": "Microsoft.Network/loadBalancers/frontendIPConfigurations/namePrefix-sql-ilb/namePrefix-sql-ilbfe1", + "lbBEAddressPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/namePrefix-sql-ilb/namePrefix-sql-ilbbe", + "lbProbe1": "namePrefix-sql-ilbp1", + "lbProbeID1": "Microsoft.Network/loadBalancers/probes/namePrefix-sql-ilb/namePrefix-sql-ilbp1", + "lbBEPoolTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/lbBEPool.json',parameters('_artifactsLocationSasToken')))]", + "agListenerPort": 1433, + "agProbePort": 59999, + "snatTcpPort": 59998, + "snatProbePort": 3389, + "zones": [ + "1", + "2", + "3" + ] + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('witnessStorageName')]", + "apiVersion": "2019-06-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "apiVersion": "2020-08-01", + "name": "namePrefix-sql-ilb", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "namePrefix-sql-ilbfe1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + } + } + } + ], + "backendAddressPools": [ + { + "name": "namePrefix-sql-ilbbe" + } + ], + "loadBalancingRules": [ + { + "name": "namePrefix-sql-agl", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/namePrefix-sql-ilb/namePrefix-sql-ilbfe1" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/namePrefix-sql-ilb/namePrefix-sql-ilbbe" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/namePrefix-sql-ilb/namePrefix-sql-ilbp1" + }, + "protocol": "Tcp", + "frontendPort": 1433, + "backendPort": 1433, + "enableFloatingIP": true + } + } + ], + "probes": [ + { + "name": "namePrefix-sql-ilbp1", + "properties": { + "protocol": "Tcp", + "port": 59999, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namePrefix-sql-albpip", + "location": "location", + "condition": false, + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "apiVersion": "2020-08-01", + "name": "namePrefix-sql-alb", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "condition": false, + "dependsOn": [ + "namePrefix-sql-albpip" + ], + "sku": { + "name": "Standard" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "namePrefix-sql-albfe1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namePrefix-sql-albpip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "namePrefix-sql-albbe" + } + ], + "loadBalancingRules": [ + { + "name": "outbound-snat-rule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/namePrefix-sql-alb/namePrefix-sql-albfe1" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/namePrefix-sql-alb/namePrefix-sql-albbe" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/namePrefix-sql-alb/namePrefix-sql-albp1" + }, + "protocol": "Tcp", + "frontendPort": 59998, + "backendPort": 59998, + "enableFloatingIP": false + } + } + ], + "probes": [ + { + "name": "namePrefix-sql-albp1", + "properties": { + "protocol": "Tcp", + "port": 3389, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "name": "namePrefix-sql-copyindex()-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-08-01", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + }, + "primary": true + } + }, + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + } + } + } + ] + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "namePrefix-sql-0-clusterIp", + "dependsOn": [ + "nicLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/getIpAddress.json',parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "ipConfig": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces', concat(variables('vmNamePrefix'), '0-nic'))).ipConfigurations[1].properties.privateIPAddress]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "copy": { + "name": "clusterIpLoop", + "count": "[sub(parameters('vmCount'),1)]" + }, + "name": "[concat(variables('vmNamePrefix'),copyIndex(1),'-clusterIp')]", + "dependsOn": [ + "nicLoop", + "Microsoft.Resources/deployments/namePrefix-sql-0-clusterIp" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/getIpAddress.json',parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "ipConfig": { + "value": "[reference(resourceId('Microsoft.Network/networkInterfaces',concat(variables('vmNamePrefix'), copyIndex(1), '-nic'))).ipConfigurations[1].properties.privateIPAddress]" + }, + "ipAddresses": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', concat(variables('vmNamePrefix'),copyIndex(),'-clusterIp'))).outputs.result.value]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "name": "namePrefix-sql-copyindex()-newVM", + "dependsOn": [ + "nicLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/newVM.json',parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmName": { + "value": "namePrefix-sql-copyindex()" + }, + "vmSize": { + "value": "vmSize" + }, + "vmDiskCount": { + "value": "vmDiskCount" + }, + "vmDiskSize": { + "value": "vmDiskSize" + }, + "adminUsername": { + "value": "adminUsername" + }, + "adminPassword": { + "value": "adminPassword" + }, + "imagePublisher": { + "value": "MicrosoftSQLServer" + }, + "imageOffer": { + "value": "SQL2016SP1-WS2016" + }, + "imageSKU": { + "value": "Enterprise" + }, + "imageVersion": { + "value": "latest" + }, + "zones": { + "value": "[take(skip(variables('zones'),mod(copyIndex(),length(variables('zones')))),1)]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmNamePrefix'),copyindex(1),'/sqlPrep')]", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "virtualMachineLoop" + ], + "copy": { + "name": "virtualMachineExtensionLoop", + "count": "[sub(parameters('vmCount'),1)]" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.71", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('dsc/prep-sqlao.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "PrepSQLAO.ps1\\PrepSQLAO", + "properties": { + "domainName": "domainName", + "adminCreds": { + "userName": "adminUserName", + "password": "PrivateSettingsRef:adminPassword" + }, + "sqlServiceCreds": { + "userName": "sqlServiceAccount", + "password": "PrivateSettingsRef:sqlServicePassword" + }, + "numberOfDisks": "vmDiskCount", + "workloadType": "GENERAL", + "databaseEnginePort": 1433, + "probePortNumber": 59999 + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword", + "sqlServicePassword": "sqlServicePassword" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namePrefix-sql-0/sqlConfig", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "virtualMachineLoop", + "virtualMachineExtensionLoop", + "clusterIpLoop", + "[resourceId('Microsoft.Storage/storageAccounts', variables('witnessStorageName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.71", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('dsc/config-sqlao.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "ConfigSQLAO.ps1\\ConfigSQLAO", + "properties": { + "domainName": "domainName", + "clusterName": "namePrefix-sql-c", + "vmNamePrefix": "namePrefix-sql-", + "sqlAlwaysOnAvailabilityGroupName": "namePrefix-sql-ag", + "sqlAlwaysOnAvailabilityGroupListenerName": "namePrefix-sql-agl", + "sqlAlwaysOnEndpointName": "namePrefix-sql-ha", + "vmCount": 2, + "clusterIpAddresses": "[reference(resourceId('Microsoft.Resources/deployments', concat(variables('vmNamePrefix'),sub(parameters('vmCount'),1),'-clusterIp'))).outputs.result.value]", + "agListenerIpAddress": "[reference(resourceId('Microsoft.Network/loadbalancers', variables('lbName'))).frontendIPConfigurations[0].properties.privateIPAddress]", + "numberOfDisks": "vmDiskCount", + "workloadType": "GENERAL", + "databaseEnginePort": 1433, + "probePortNumber": 59999, + "witnessStorageName": "[variables('witnessStorageName')]", + "witnessStorageKey": { + "userName": "PLACEHOLDER-DO-NOT-USE", + "password": "PrivateSettingsRef:witnessStorageKey" + }, + "adminCreds": { + "userName": "adminUserName", + "password": "PrivateSettingsRef:adminPassword" + }, + "sqlServiceCreds": { + "userName": "sqlServiceAccount", + "password": "PrivateSettingsRef:sqlServicePassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword", + "sqlServicePassword": "sqlServicePassword", + "witnessStorageKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts',variables('witnessStorageName')), '2019-06-01').keys[0].value]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "namePrefix-sql-lbbepool", + "condition": false, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/namePrefix-sql-0/sqlConfig" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/lbBEPool.json',parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmNamePrefix": { + "value": "namePrefix-sql-" + }, + "vmCount": { + "value": 2 + }, + "subnetId": { + "value": "subnetId" + }, + "lbBEAddressPoolID": { + "value": "Microsoft.Network/loadBalancers/backendAddressPools/namePrefix-sql-ilb/namePrefix-sql-ilbbe" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "namePrefix-sql-albbepool", + "condition": false, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/namePrefix-sql-0/sqlConfig" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/albBEPool.json',parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "location" + }, + "vmNamePrefix": { + "value": "namePrefix-sql-" + }, + "vmCount": { + "value": 2 + }, + "subnetId": { + "value": "subnetId" + }, + "lbBEAddressPoolID": { + "value": "Microsoft.Network/loadBalancers/backendAddressPools/namePrefix-sql-ilb/namePrefix-sql-ilbbe" + }, + "albBEAddressPoolID": { + "value": "Microsoft.Network/loadBalancers/backendAddressPools/namePrefix-sql-alb/namePrefix-sql-albbe" + } + } + } + } + ], + "outputs": { + "agListenerName": { + "type": "string", + "value": "[variables('agListenerName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT794 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT794 new file mode 100644 index 0000000..7345aa9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT794 @@ -0,0 +1,48 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/getIpAddress.json" + ], + "timestamp": 1642962901587, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/getIpAddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT794", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT794", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "ipConfig": { + "type": "string" + }, + "ipAddresses": { + "type": "array", + "defaultValue": [] + } + }, + "variables": {}, + "resources": [], + "outputs": { + "result": { + "type": "array", + "value": "[concat(parameters('ipAddresses'),split(parameters('ipConfig'),','))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT795 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT795 new file mode 100644 index 0000000..6703986 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT795 @@ -0,0 +1,92 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/lbBEPool.json" + ], + "timestamp": 1642962901597, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/lbBEPool.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT795", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT795", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "vmNamePrefix": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "vmCount": { + "type": "int" + }, + "lbBEAddressPoolID": { + "type": "string" + } + }, + "variables": {}, + "resources": [ + { + "name": "vmNamePrefixcopyindex()-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-08-01", + "copy": { + "name": "lbBEPoolLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "lbBEAddressPoolID" + } + ], + "primary": true + } + }, + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnetId" + } + } + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT796 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT796 new file mode 100644 index 0000000..b9f3dfa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT796 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/newVM.json" + ], + "timestamp": 1642962901609, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/nestedtemplates/newVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT796", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT796", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "vmName": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "vmDiskCount": { + "type": "int" + }, + "vmDiskSize": { + "type": "int" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "imagePublisher": { + "type": "string" + }, + "imageOffer": { + "type": "string" + }, + "imageSKU": { + "type": "string" + }, + "imageVersion": { + "type": "string" + }, + "zones": { + "type": "array" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-12-01", + "location": "location", + "name": "vmName", + "zones": "zones", + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "imageVersion" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "copy": [ + { + "name": "dataDisks", + "count": "vmDiskCount", + "input": { + "diskSizeGB": "vmDiskSize", + "lun": "[copyIndex('dataDisks')]", + "createOption": "Empty" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmName-nic" + } + ] + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[parameters('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT797 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT797 new file mode 100644 index 0000000..9c7d862 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT797 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962901629, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT797", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT797", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "quickstarts" + }, + "adminPassword": { + "type": "secureString" + }, + "domainName": { + "type": "string", + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "value": "eastus2" + } + }, + "resources": [ + { + "name": "createADController", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/active-directory-new-domain/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "quickstarts" + }, + "adminPassword": { + "value": "adminPassword" + }, + "domainName": { + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + }, + "location": { + "value": "eastus2" + } + } + } + } + ], + "outputs": { + "dnsIpAddress": { + "type": "string", + "value": "[reference('createADController').outputs.dnsIpAddress.value]" + }, + "domainName": { + "type": "string", + "value": "[reference('createADController').outputs.domainName.value]" + }, + "virtualNetworkSubscriptionId": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubscriptionId.value]" + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkResourceGroupName.value]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkName.value]" + }, + "virtualNetworkSubnetName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubnetName.value]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT798 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT798 new file mode 100644 index 0000000..e061c88 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT798 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "timestamp": 1642962901663, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT798", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT798", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "value": "quickstarts" + }, + "adminPassword": { + "type": "secureString" + }, + "domainName": { + "type": "string", + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "value": "usgovvirginia" + } + }, + "resources": [ + { + "name": "createADController", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/active-directory-new-domain/0.9/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "quickstarts" + }, + "adminPassword": { + "value": "adminPassword" + }, + "domainName": { + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "value": "GEN-UNIQUE" + }, + "location": { + "value": "usgovvirginia" + } + } + } + } + ], + "outputs": { + "dnsIpAddress": { + "type": "string", + "value": "[reference('createADController').outputs.dnsIpAddress.value]" + }, + "domainName": { + "type": "string", + "value": "[reference('createADController').outputs.domainName.value]" + }, + "virtualNetworkSubscriptionId": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubscriptionId.value]" + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkResourceGroupName.value]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkName.value]" + }, + "virtualNetworkSubnetName": { + "type": "string", + "value": "[reference('createADController').outputs.virtualNetworkSubnetName.value]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT799 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT799 new file mode 100644 index 0000000..9710fc7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT799 @@ -0,0 +1,283 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962901673, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-alwayson-md-ilb-zones/azuredeploy.json", + "/demos/sql-alwayson-md-ilb-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT799", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT799", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Azure region that supports Availability Zones" + }, + "value": "GET-PREREQ-location" + }, + "namePrefix": { + "type": "string", + "minLength": 3, + "maxLength": 8, + "metadata": { + "description": "Naming prefix for each new resource created. 3-char min, 8-char max, lowercase alphanumeric" + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the SQL Server VMs to be created" + }, + "defaultValue": "Standard_D4s_v3" + }, + "sqlVMImage": { + "type": "string", + "allowedValues": [ + "SQL2016SP1-WS2016", + "SQL2016SP1-WS2016-BYOL", + "SQL2017-WS2016", + "SQL2017-WS2016-BYOL" + ], + "metadata": { + "description": "VM Image Offer to use for provisioning SQL VMs" + }, + "defaultValue": "SQL2016SP1-WS2016" + }, + "sqlVMImageSku": { + "type": "string", + "metadata": { + "description": "SQL Image Sku" + }, + "defaultValue": "SQLDEV" + }, + "vmCount": { + "type": "int", + "minValue": 2, + "maxValue": 9, + "metadata": { + "description": "Number of SQL Server VMs to be created in AlwaysOn Availability Group cluster (Min=2, Max=9)" + }, + "defaultValue": 2 + }, + "vmDiskSize": { + "type": "int", + "minValue": 128, + "maxValue": 1023, + "metadata": { + "description": "Size of each data disk in GB on each SQL Server VM (Min=128, Max=1023)" + }, + "defaultValue": 1023 + }, + "vmDiskCount": { + "type": "int", + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of data disks on each SQL Server VM (Min=2, Max=32). Ensure that the VM size you've selected will support this number of data disks." + }, + "defaultValue": 2 + }, + "existingDomainName": { + "type": "string", + "metadata": { + "description": "DNS domain name for existing Active Directory domain" + }, + "value": "GET-PREREQ-domainName" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Name of the Administrator of the existing Active Directory Domain" + }, + "value": "quickstarts" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Administrator account of the existing Active Directory Domain" + } + }, + "sqlServiceAccount": { + "type": "string", + "metadata": { + "description": "Name of the user account to be used for the SQL Server service account. Do not use the same account speficied in adminUsername parameter" + }, + "value": "GEN-UNIQUE" + }, + "sqlServicePassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password to be used for the SQL Server service account" + }, + "value": "GEN-PASSWORD" + }, + "existingVirtualNetworkRGName": { + "type": "string", + "metadata": { + "description": "Resource Group Name for the existing VNET." + }, + "value": "GET-PREREQ-virtualNetworkResourceGroupName" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET." + }, + "value": "GET-PREREQ-virtualNetworkName" + }, + "existingSubnetName": { + "type": "string", + "defaultValue": "sqlSubnet", + "metadata": { + "description": "Name of the existing subnet in the existing VNET to which the SQL Server VMs should be deployed" + }, + "value": "GET-PREREQ-virtualNetworkSubnetName" + }, + "enableOutboundInternet": { + "type": "string", + "allowedValues": [ + "Yes", + "No" + ], + "defaultValue": "No", + "metadata": { + "description": "Enable outbound Internet access via source NAT to support ongoing VM Agent extension communication needs" + } + }, + "workloadType": { + "type": "string", + "allowedValues": [ + "GENERAL", + "OLTP", + "DW" + ], + "metadata": { + "description": "SQL DB workload type: GENERAL - General workload; DW - Data Warehouse workload; OLTP - Transactional Processing workload" + }, + "defaultValue": "GENERAL" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "Location of resources that the script is dependent on such as linked templates and DSC modules" + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/sql-alwayson-md-ilb-zones/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "subnetId": "GET-PREREQ-virtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-virtualNetworkSubnetName", + "deploySqlClusterTemplateURL": "[uri(parameters('_artifactsLocation'),concat('nestedtemplates/deploy-sql-cluster.json', parameters('_artifactsLocationSasToken')))]", + "deploySqlCluster": "deploySqlCluster" + }, + "resources": [ + { + "name": "deploySqlCluster", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'),concat('nestedtemplates/deploy-sql-cluster.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "GET-PREREQ-location" + }, + "namePrefix": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "GET-PREREQ-domainName" + }, + "adminUsername": { + "value": "quickstarts" + }, + "adminPassword": { + "value": "adminPassword" + }, + "sqlServiceAccount": { + "value": "GEN-UNIQUE" + }, + "sqlServicePassword": { + "value": "GEN-PASSWORD" + }, + "subnetId": { + "value": "GET-PREREQ-virtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-virtualNetworkName/GET-PREREQ-virtualNetworkSubnetName" + }, + "enableOutboundInternet": { + "value": "No" + }, + "vmSize": { + "value": "Standard_D4s_v3" + }, + "imageOffer": { + "value": "SQL2016SP1-WS2016" + }, + "imageSKU": { + "value": "SQLDEV" + }, + "vmCount": { + "value": 2 + }, + "vmDiskSize": { + "value": 1023 + }, + "vmDiskCount": { + "value": 2 + }, + "workloadType": { + "value": "GENERAL" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/sql-alwayson-md-ilb-zones/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "agListenerName": { + "type": "string", + "value": "[reference(variables('deploySqlCluster')).outputs.agListenerName.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT8 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT8 new file mode 100644 index 0000000..2379324 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT8 @@ -0,0 +1,90 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/vnet.json" + ], + "timestamp": 1642962883352, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT8", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT8", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "Description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "Description": "The address range of the new VNET in CIDR format" + }, + "defaultValue": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "metadata": { + "Description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "Description": "The address range of the subnet created in the new VNET" + }, + "defaultValue": "10.0.0.0/24" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-03-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT80 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT80 new file mode 100644 index 0000000..87dc858 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT80 @@ -0,0 +1,164 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-standard_ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885586, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-standard_ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT80", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT80", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "templateAPIVersion": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string", + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": { + "vmUri": "scriptsUri/vm-5-datadisks.json" + }, + "resources": [ + { + "name": "vm-with-datadisks", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "scriptsUri/vm-5-datadisks.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "vnetID" + }, + "resourceAPIVersion": { + "value": "resourceAPIVersion" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "scriptsUri" + }, + "storageAccount": { + "value": "storageAccount" + }, + "vmCount": { + "value": "vmCount" + }, + "vmSpec": { + "value": "vmSpec" + }, + "networkSpec": { + "value": "networkSpec" + }, + "clusterSpec": { + "value": "clusterSpec" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT800 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT800 new file mode 100644 index 0000000..a3d1ec2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT800 @@ -0,0 +1,401 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "timestamp": 1642962901684, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT800", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT800", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "defaultValue": "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + }, + "omsSolutionsName": { + "type": "array" + }, + "tags": { + "type": "object" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Free", + "Standalone", + "PerNode" + ], + "defaultValue": "Free", + "metadata": { + "description": "Service Tier: Free, Standalone, or PerNode" + } + }, + "dataRetention": { + "type": "int", + "defaultValue": 90, + "minValue": 7, + "maxValue": 730, + "metadata": { + "description": "Number of days of retention. Free plans can only have 7 days, Standalone and OMS plans include 30 days for free" + } + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "name": "[concat('oms-workspace',uniqueString(resourceGroup().id))]", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "location", + "tags": "tags", + "properties": { + "sku": { + "name": "Free" + }, + "retention": 90 + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "kind": "AzureActivityLog", + "name": "[concat(parameters('omsWorkspaceName'), '/', subscription().subscriptionId)]", + "apiVersion": "2020-08-01", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "properties": { + "linkedResourceId": "[subscriptionResourceId('microsoft.insights/eventTypes', 'management')]" + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('omsWorkspaceName')]" + }, + "workspaceId": { + "type": "string", + "value": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('omsWorkspaceName'))]" + }, + "workspaceCustomerId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.OperationalInsights/workspaces', parameters('omsWorkspaceName')), '2020-08-01').customerId]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT801 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT801 new file mode 100644 index 0000000..2af3245 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT801 @@ -0,0 +1,220 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/applicationgateways.json" + ], + "timestamp": 1642962901693, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/applicationgateways.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT801", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT801", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "applicationGatewaySize": { + "type": "string", + "allowedValues": [ + "WAF_Medium", + "WAF_Large" + ], + "defaultValue": "WAF_Medium", + "metadata": { + "description": "application gateway size" + } + }, + "capacity": { + "type": "int", + "minValue": 2, + "maxValue": 10, + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + } + }, + "wafEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "WAF Enabled" + } + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Detection", + "metadata": { + "description": "WAF Mode" + } + }, + "wafRuleSetType": { + "type": "string", + "allowedValues": [ + "OWASP" + ], + "defaultValue": "OWASP", + "metadata": { + "description": "WAF Rule Set Type" + } + }, + "wafRuleSetVersion": { + "type": "string", + "allowedValues": [ + "2.2.9", + "3.0" + ], + "defaultValue": "3.0", + "metadata": { + "description": "WAF Rule Set Version" + } + }, + "applicationGatewayName": { + "type": "string" + }, + "publicIPRef": { + "type": "string" + }, + "frontendPorts": { + "type": "array" + }, + "gatewayIPConfigurations": { + "type": "array" + }, + "backendAddressPools": { + "type": "array" + }, + "backendHttpSettingsCollection": { + "type": "array" + }, + "httpListeners": { + "type": "array" + }, + "requestRoutingRules": { + "type": "array" + }, + "probes": { + "type": "array" + }, + "omsWorkspaceResourceId": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "name": "applicationGatewayName", + "type": "Microsoft.Network/applicationGateways", + "location": "location", + "properties": { + "sku": { + "name": "WAF_Medium", + "tier": "WAF", + "capacity": 2 + }, + "gatewayIPConfigurations": "gatewayIPConfigurations", + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "publicIPRef" + } + } + } + ], + "frontendPorts": "frontendPorts", + "backendAddressPools": "backendAddressPools", + "backendHttpSettingsCollection": "backendHttpSettingsCollection", + "httpListeners": "httpListeners", + "requestRoutingRules": "requestRoutingRules", + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Detection", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.0" + }, + "probes": "probes", + "sslPolicy": { + "disabledSslProtocols": [ + "TLSv1_0", + "TLSv1_1" + ] + } + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "name": "Microsoft.Insights/service", + "apiVersion": "2017-05-01-preview", + "dependsOn": [ + "applicationGatewayName" + ], + "properties": { + "workspaceId": "omsWorkspaceResourceId", + "logs": [ + { + "category": "ApplicationGatewayAccessLog", + "enabled": true, + "retentionPolicy": { + "days": 90, + "enabled": true + } + }, + { + "category": "ApplicationGatewayPerformanceLog", + "enabled": true, + "retentionPolicy": { + "days": 90, + "enabled": false + } + }, + { + "category": "ApplicationGatewayFirewallLog", + "enabled": true, + "retentionPolicy": { + "days": 90, + "enabled": false + } + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT802 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT802 new file mode 100644 index 0000000..e277c19 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT802 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "timestamp": 1642962901701, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT802", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT802", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPAddressName": { + "type": "string" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic" + }, + "dnsNameForPublicIP": { + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddressName", + "location": "location", + "tags": "tags", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNameForPublicIP" + } + } + } + ], + "outputs": { + "publicIPAddressName": { + "type": "string", + "value": "[parameters('publicIPAddressName')]" + }, + "publicIPRef": { + "type": "string", + "value": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT803 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT803 new file mode 100644 index 0000000..01ba50e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT803 @@ -0,0 +1,73 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "timestamp": 1642962901709, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT803", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT803", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "addressPrefix": { + "type": "string" + }, + "subnets": { + "type": "array" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2020-05-01", + "name": "vnetName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "tags": "tags", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": "subnets" + } + } + ], + "outputs": { + "vnetId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks',parameters('vnetName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT804 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT804 new file mode 100644 index 0000000..1731af6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT804 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.auditingsettings.json" + ], + "timestamp": 1642962901717, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.auditingsettings.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT804", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/auditingsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT804", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string" + }, + "storageAccountName": { + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2020-02-02-preview", + "type": "Microsoft.Sql/servers/auditingSettings", + "name": "sqlServerName/default", + "properties": { + "state": "Enabled", + "storageEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-01-01').PrimaryEndpoints.Blob]", + "storageAccountAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-01-01').keys[0].value]", + "retentionDays": 0, + "storageAccountSubscriptionId": "[subscription().subscriptionId]", + "isStorageSecondaryKeyInUse": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT805 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT805 new file mode 100644 index 0000000..2f32ed9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT805 @@ -0,0 +1,198 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.databases.json" + ], + "timestamp": 1642962901725, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.databases.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT805", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/databases" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT805", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string" + }, + "databaseName": { + "type": "string", + "defaultValue": "contosodb" + }, + "location": { + "type": "string" + }, + "edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Web", + "Business", + "Basic", + "Standard", + "Premium", + "Free", + "Stretch", + "DataWarehouse", + "System", + "System2" + ] + }, + "tags": { + "type": "object" + }, + "omsWorkspaceResourceId": { + "type": "string" + }, + "administratorLogin": { + "type": "string" + }, + "administratorLoginPassword": { + "type": "securestring" + }, + "bacpacUri": { + "type": "string" + }, + "bacpacUriSasToken": { + "type": "securestring" + }, + "logsRetentionInDays": { + "type": "int", + "defaultValue": 0, + "minValue": 0, + "maxValue": 365, + "metadata": { + "description": "Specifies the number of days that logs are gonna be kept. If you do not want to apply any retention policy and retain data forever, set value to 0." + } + } + }, + "resources": [ + { + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2020-02-02-preview", + "name": "sqlServerName/contosodb", + "tags": "tags", + "location": "location", + "properties": { + "createMode": "Default", + "edition": "Basic" + }, + "resources": [ + { + "name": "Import", + "type": "extensions", + "apiVersion": "2014-04-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers/databases/sqlServerName/contosodb" + ], + "properties": { + "storageKey": "bacpacUriSasToken", + "storageKeyType": "SharedAccessKey", + "storageUri": "bacpacUri", + "administratorLogin": "administratorLogin", + "administratorLoginPassword": "administratorLoginPassword", + "operationMode": "Import" + } + }, + { + "type": "providers/diagnosticSettings", + "name": "Microsoft.Insights/service", + "dependsOn": [ + "Microsoft.Sql/servers/databases/sqlServerName/contosodb" + ], + "apiVersion": "2017-05-01-preview", + "properties": { + "workspaceId": "omsWorkspaceResourceId", + "logs": [ + { + "category": "QueryStoreRuntimeStatistics", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "QueryStoreWaitStatistics", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "Errors", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "DatabaseWaitStatistics", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "Timeouts", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "Blocks", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "SQLInsights", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + } + ], + "metrics": [ + { + "timeGrain": "AllMetrics", + "enabled": true, + "retentionPolicy": { + "enabled": true, + "days": 0 + } + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT806 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT806 new file mode 100644 index 0000000..8753dd7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT806 @@ -0,0 +1,62 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.securityalertpolicies.json" + ], + "timestamp": 1642962901737, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.securityalertpolicies.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT806", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/securityalertpolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT806", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string" + }, + "storageAccountName": { + "type": "string" + }, + "sendAlertsTo": { + "type": "string", + "defaultValue": "dummy@contoso.com", + "metadata": { + "description": "Specifies the semicolon-separated list of e-mail addresses to which the alert is sent." + } + } + }, + "resources": [ + { + "apiVersion": "2020-02-02-preview", + "type": "Microsoft.Sql/servers/securityAlertPolicies", + "name": "sqlServerName/default", + "properties": { + "state": "Enabled", + "emailAddresses": "[split(parameters('sendAlertsTo'),';')]", + "storageEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-01-01').PrimaryEndpoints.Blob]", + "storageAccountAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-01-01').keys[0].value]", + "retentionDays": 0 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT807 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT807 new file mode 100644 index 0000000..e17bc25 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT807 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.v12.0.json" + ], + "timestamp": 1642962901747, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.sql/servers.v12.0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT807", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT807", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "administratorLogin": { + "type": "string" + }, + "administratorLoginPassword": { + "type": "securestring" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "name": "sqlServerName", + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "location": "location", + "tags": "tags", + "properties": { + "administratorLogin": "administratorLogin", + "administratorLoginPassword": "administratorLoginPassword", + "version": "12.0" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallRules", + "location": "location", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Sql/servers/sqlServerName" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('sqlServerName')]" + }, + "fqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Sql/servers', parameters('sqlServerName')),'2020-02-02-preview').fullyQualifiedDomainName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT808 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT808 new file mode 100644 index 0000000..17205e7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT808 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.storage/storageaccounts.storage.json" + ], + "timestamp": 1642962901756, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.storage/storageaccounts.storage.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT808", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT808", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "defaultValue": "qwerty", + "type": "string" + }, + "sku": { + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS" + ], + "defaultValue": "Standard_LRS", + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "qwerty", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "location": "location", + "tags": "tags", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT809 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT809 new file mode 100644 index 0000000..26edb8e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT809 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/serverfarms.json" + ], + "timestamp": 1642962901764, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/serverfarms.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT809", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT809", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string" + }, + "location": { + "type": "string" + }, + "sku": { + "type": "string", + "defaultValue": "Free" + }, + "skuCode": { + "type": "string", + "defaultValue": "F1" + }, + "workerSize": { + "type": "int", + "defaultValue": 0 + }, + "workerSizeId": { + "type": "int", + "defaultValue": 0 + }, + "numberOfWorkers": { + "type": "int", + "defaultValue": 1 + }, + "hostingEnvironment": { + "type": "string", + "defaultValue": "" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/serverfarms", + "name": "name", + "location": "location", + "tags": "tags", + "properties": { + "name": "name", + "workerSize": 0, + "workerSizeId": 0, + "numberOfWorkers": 1, + "reserved": false, + "hostingEnvironment": "" + }, + "sku": { + "Tier": "Free", + "Name": "F1" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT81 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT81 new file mode 100644 index 0000000..b154fe8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT81 @@ -0,0 +1,164 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-standard_ds14.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885682, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/data-node-standard_ds14.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT81", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT81", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "templateAPIVersion": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string", + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": { + "vmUri": "scriptsUri/vm-10-datadisks.json" + }, + "resources": [ + { + "name": "vm-with-datadisks", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "scriptsUri/vm-10-datadisks.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "vnetID" + }, + "resourceAPIVersion": { + "value": "resourceAPIVersion" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "scriptsUri" + }, + "storageAccount": { + "value": "storageAccount" + }, + "vmCount": { + "value": "vmCount" + }, + "vmSpec": { + "value": "vmSpec" + }, + "networkSpec": { + "value": "networkSpec" + }, + "clusterSpec": { + "value": "clusterSpec" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT810 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT810 new file mode 100644 index 0000000..84b64f7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT810 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.config.connectionstrings.json" + ], + "timestamp": 1642962901775, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.config.connectionstrings.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT810", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/config" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT810", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "connectionType": { + "type": "string", + "defaultValue": "Custom", + "allowedValues": [ + "MySql", + "SQLServer", + "SQLAzure", + "Custom", + "NotificationHub", + "ServiceBus", + "EventHub", + "ApiHub", + "DocDb", + "RedisCache", + "PostgreSQL" + ] + }, + "connectionString": { + "type": "string" + } + }, + "resources": [ + { + "name": "webAppName/connectionstrings", + "apiVersion": "2018-02-01", + "type": "Microsoft.Web/sites/config", + "location": "location", + "properties": { + "DefaultConnection": { + "value": "connectionString", + "type": "Custom" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT811 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT811 new file mode 100644 index 0000000..9223baf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT811 @@ -0,0 +1,59 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.extensions.msdeploy.json" + ], + "timestamp": 1642962901782, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.extensions.msdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT811", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT811", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "packageUri": { + "type": "string" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "name": "webAppName/MSDeploy", + "type": "Microsoft.Web/sites/extensions", + "location": "location", + "apiVersion": "2018-02-01", + "tags": "tags", + "properties": { + "packageUri": "packageUri" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT812 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT812 new file mode 100644 index 0000000..523794b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT812 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.json" + ], + "timestamp": 1642962901787, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/sql-injection-attack-prevention/nested/microsoft.web/sites.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT812", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT812", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string" + }, + "hostingPlanName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "hostingEnvironment": { + "type": "string", + "defaultValue": "" + }, + "tags": { + "type": "object" + } + }, + "variables": { + "tags": { + "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms',parameters('hostingPlanName')))]": "empty" + }, + "combinedTags": "[union(parameters('tags'),variables('tags'))]" + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "type": "Microsoft.Web/sites", + "name": "name", + "location": "location", + "tags": "[union(parameters('tags'),variables('tags'))]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "name": "name", + "serverFarmId": "Microsoft.Web/serverfarms/hostingPlanName", + "hostingEnvironment": "" + } + } + ], + "outputs": { + "principalId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', parameters('name')), '2019-08-01', 'Full').identity.principalId]" + }, + "endpoint": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', parameters('name'))).defaultHostName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT814 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT814 new file mode 100644 index 0000000..8fd2038 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT814 @@ -0,0 +1,303 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-import-zipped-vhds/prereqs/prereq.azuredeploy.json", + "/demos/storage-import-zipped-vhds/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962901817, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-import-zipped-vhds/prereqs/prereq.azuredeploy.json", + "/demos/storage-import-zipped-vhds/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT814", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.keyvault/vaults/secrets", + "microsoft.resources/deploymentscripts", + "microsoft.keyvault/vaults", + "microsoft.storage/storageaccounts", + "microsoft.managedidentity/userassignedidentities" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT814", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.210606", + "parameters": { + "locationSource": { + "type": "string", + "metadata": { + "description": "The Azure Region location in which the source resources should be deployed. E.g. westus (Azure Public)" + }, + "defaultValue": "[parameters('location')]" + }, + "storageAccountNameSource": { + "type": "string", + "defaultValue": "[concat('source', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of Storage Account." + }, + "value": "GEN-UNIQUE" + }, + "blobContainerNameSource": { + "type": "string", + "defaultValue": "vhd", + "metadata": { + "description": "Name of the Blob Container" + } + }, + "locationDestination": { + "type": "string", + "metadata": { + "description": "The Azure Region location in which the source resources should be deployed. E.g. francecentral (Azure Public)" + }, + "defaultValue": "[parameters('location')]" + }, + "storageAccountNameDestination": { + "type": "string", + "defaultValue": "[concat('destination', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of Storage Account." + }, + "value": "GEN-UNIQUE" + }, + "blobContainerNameDestination": { + "type": "string", + "defaultValue": "vhd", + "metadata": { + "description": "Name of the Blob Container" + } + }, + "storageAccountKind": { + "type": "string", + "defaultValue": "StorageV2" + }, + "storageAccountSkuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS", + "Standard_ZRS", + "Standard_GRS" + ], + "metadata": { + "description": "Storage Account SKU" + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "forceUpdateTag property, used to force the execution of the script resource when no other properties have changed." + } + }, + "keyVaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key vault." + }, + "value": "GEN-UNIQUE" + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "The Azure Region location in which the source resources should be deployed. E.g. westus (Azure Public)" + }, + "defaultValue": "[resourceGroup().location]" + } + }, + "variables": { + "userAssignedIdentityName": "[concat('ImportVHD-FromZipArchive-Prereq-worker-',uniqueString(resourceGroup().id))]", + "roleAssignmentName": "[guid(concat(variables('userAssignedIdentityName'),resourceGroup().id, 'contributor'))]", + "deploymentScriptNameCreateSource": "CreateVHDZipArchiveUrl", + "forceUpdateTag": "[newGuid()]", + "listAccountSasRequestContent": { + "signedServices": "bfqt", + "signedPermission": "rwdlacup", + "signedStart": "2021-06-02T00:00:00Z", + "signedExpiry": "2030-10-30T00:00:00Z", + "signedResourceTypes": "sco" + } + }, + "resources": [ + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[parameters('location')]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "resources": [ + { + "name": "default/vhd", + "type": "blobServices/containers", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ], + "properties": { + "publicAccess": "Blob" + } + } + ] + }, + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[variables('userAssignedIdentityName')]", + "location": "[parameters('location')]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[guid(concat(variables('userAssignedIdentityName'),resourceGroup().id, 'contributor'))]", + "dependsOn": [ + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName'))]" + ], + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName')), '2015-08-31-preview').principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "CreateVHDZipArchiveUrl", + "location": "[parameters('location')]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ], + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('userAssignedIdentityName'))]": {} + } + }, + "kind": "AzurePowerShell", + "properties": { + "azPowerShellVersion": "5.5", + "cleanupPreference": "OnSuccess", + "environmentVariables": [ + { + "name": "ResourceGroupName", + "value": "[resourceGroup().name]" + }, + { + "name": "StorageAccountName", + "value": "GEN-UNIQUE" + }, + { + "name": "BlobContainerName", + "value": "vhd" + } + ], + "forceUpdateTag": "[newGuid()]", + "retentionInterval": "PT2H", + "scriptContent": "# 210602 \n \n ##### Parameters \n \n $StorageAccountName = ${Env:StorageAccountName} \n $BlobContainerName = ${Env:BlobContainerName} \n $ResourceGroupName = ${Env:ResourceGroupName} \n \n ##### Variables \n \n $StartTime = Get-Date \n $EndTime = $startTime.AddHours(2.0) \n \n ##### Create a VHD archive zip \n \n $timestamp = (Get-Date -Format 'yyMMddhhmmss') \n $vhdZipArchive = 'fake-vhd-disk-archive-{0}.zip' -f $timestamp \n \n New-Item -Force -Type File -Name ('fake-vhd-disk1-{0}.vhd' -f $timestamp) \n New-Item -Force -Type File -Name ('fake-vhd-disk2-{0}.vhd' -f $timestamp) \n New-Item -Force -Type File -Name ('fake-vhd-disk3-{0}.vhd' -f $timestamp) \n New-Item -Force -Type File -Name ('fake-readme-{0}.md' -f $timestamp) \n \n Compress-Archive -Force -Path 'fake*' -DestinationPath $vhdZipArchive \n \n ##### Storage account \n \n $StorageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName \n $Blob = Set-AzStorageBlobContent -File $vhdZipArchive -Container $BlobContainerName -blob $vhdZipArchive -context $StorageAccount.Context \n $urlVHDZipArchive = New-AzStorageBlobSASToken -FullUri -Context $StorageAccount.Context -Container $BlobContainerName -Blob $vhdZipArchive -Permission r -StartTime $StartTime -ExpiryTime $EndTime \n \n ##### Output \n $DeploymentScriptOutputs = @{} \n $DeploymentScriptOutputs['urlVHDZipArchive'] = $urlVHDZipArchive \n " + } + }, + { + "apiVersion": "2021-02-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[parameters('location')]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "resources": [ + { + "name": "default/vhd", + "type": "blobServices/containers", + "apiVersion": "2021-02-01", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ], + "properties": { + "publicAccess": "Blob" + } + } + ] + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "GEN-UNIQUE", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "properties": { + "enabledForDeployment": true, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": true, + "tenantId": "[subscription().tenantId]", + "accessPolicies": [], + "sku": { + "name": "Standard", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "GEN-UNIQUE/Source", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ], + "properties": { + "value": "[reference(variables('deploymentScriptNameCreateSource')).outputs.urlVHDZipArchive]" + } + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "GEN-UNIQUE/Destination", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.KeyVault/vaults/GEN-UNIQUE" + ], + "properties": { + "value": "[concat(reference(parameters('storageAccountNameDestination')).primaryEndpoints.blob, parameters('blobContainerNameDestination'), '?', listAccountSas(parameters('storageAccountNameDestination'), '2021-04-01', variables('listAccountSasRequestContent')).accountSasToken)]" + } + } + ], + "outputs": { + "KeyVaultId": { + "type": "string", + "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT815 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT815 new file mode 100644 index 0000000..e8ff6fc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT815 @@ -0,0 +1,138 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-import-zipped-vhds/azuredeploy.json", + "/demos/storage-import-zipped-vhds/azuredeploy.parameters.json" + ], + "timestamp": 1642962901826, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-import-zipped-vhds/azuredeploy.json", + "/demos/storage-import-zipped-vhds/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT815", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.managedidentity/userassignedidentities", + "microsoft.resources/deploymentscripts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT815", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.210607", + "parameters": { + "Source": { + "type": "securestring", + "metadata": { + "description": "URL of a ZIP archive containing VHD images files. For example: https://provider.com/bin/support/azure-vhd.zip" + } + }, + "Destination": { + "type": "securestring", + "metadata": { + "description": "URI of a Storage Account container with a writable SAS Token." + } + }, + "forceUpdateTag": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "Used to force the execution when redeploying the template with the same parameters. Default: [newGuid()]" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location in which the resources should be deployed. Default: [resourceGroup().location]" + } + } + }, + "variables": { + "urlVHDZipArchive": "Source", + "uriWritableStorageAccountBlobContainerSasToken": "Destination", + "deploymentScriptName": "[concat('ImportVHD-FromZipArchive-',uniqueString(parameters('Source'),uniqueString(parameters('Destination'))))]", + "userAssignedIdentityName": "[concat('ImportVHD-FromZipArchiveURL-worker-',uniqueString(resourceGroup().id))]", + "roleAssignmentName": "[guid(concat(variables('userAssignedIdentityName'),resourceGroup().id, 'contributor'))]", + "forceUpdateTag": "[newGuid()]" + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[variables('userAssignedIdentityName')]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[guid(concat(variables('userAssignedIdentityName'),resourceGroup().id, 'contributor'))]", + "dependsOn": [ + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName'))]" + ], + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName')), '2015-08-31-preview').principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + } + }, + { + "type": "Microsoft.Resources/deploymentScripts", + "apiVersion": "2020-10-01", + "name": "[variables('deploymentScriptName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Authorization/roleAssignments/[guid(concat(variables('userAssignedIdentityName'),resourceGroup().id, 'contributor'))]" + ], + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('userAssignedIdentityName'))]": {} + } + }, + "kind": "AzurePowerShell", + "properties": { + "azPowerShellVersion": "5.5", + "cleanupPreference": "OnSuccess", + "environmentVariables": [ + { + "name": "ResourceGroupName", + "value": "[resourceGroup().name]" + }, + { + "name": "Source", + "secureValue": "Source" + }, + { + "name": "Destination", + "secureValue": "Destination" + } + ], + "forceUpdateTag": "[newGuid()]", + "retentionInterval": "PT4H", + "scriptContent": "# 210602 \n \n ##### Parameters \n \n $urlVHDZipArchive = ${Env:Source} \n $uriWritableStorageAccountBlobContainerSasToken = ${Env:Destination} \n $ResourceGroupName = ${Env:ResourceGroupName} \n \n ##### Validate Parameters \n \n if (! ([System.Uri]::IsWellFormedUriString($urlVHDZipArchive,[System.UriKind]::Absolute))) { \n Throw 'The Source URL parameter is probably not well formatted. Please check and retry.' \n } \n \n if (! ([System.Uri]::IsWellFormedUriString($uriWritableStorageAccountBlobContainerSasToken,[System.UriKind]::Absolute))) { \n Throw 'The Destination URI parameter is probably not well formatted. The URI of a Storage Account Container with a SAS Token is expected. Please check and retry.' \n } \n \n ##### Variables \n \n $base_path='/mnt/azscripts' \n $temp_path='{0}/temp' -f $base_path \n New-Item -Type Directory -ErrorAction SilentlyContinue $temp_path \n \n $timestamp = Get-Date -Format 'yyMMddHHmmss' \n \n ##### Prereqs \n \n Write-Output 'Increase file share quota to 4TB instead of 2GB before downloading and expanding' \n $QuotaGiB = '4096' \n Get-AzStorageAccount -ResourceGroupName $ResourceGroupName | Where-Object { $_.StorageAccountName -like '*azscripts' } | ForEach-Object { \n $StorageAccount = $_ \n Get-AzStorageShare -Context $StorageAccount.Context | ForEach-Object { \n $Share = $_ \n Set-AzStorageShareQuota -ShareName $Share.Name -Context $StorageAccount.Context -Quota $QuotaGiB \n } \n } \n \n ##### Fetch and process \n \n Write-Output 'Download the ZIP archive' \n $archive_path='{0}/archive-{1}.zip' -f $temp_path,$timestamp \n # Accelerate file download (initially using Invoke-WebRequest) \n (New-Object System.Net.WebClient).DownloadFile($urlVHDZipArchive, $archive_path) \n \n Write-Output 'Expand locally' \n $expanded_archive_path ='{0}/expanded-{1}' -f $temp_path,$timestamp \n New-Item -Type Directory -ErrorAction SilentlyContinue $expanded_archive_path \n Expand-Archive -Path $archive_path -DestinationPath $expanded_archive_path -Force \n \n ##### Upload to Azure Storage account \n \n Write-Output 'Upload extracted VHD file(s)' \n \n $DeploymentScriptOutputs = @{} \n $DeploymentScriptOutputs['vhdBlobUriList'] = @{} \n $DeploymentScriptOutputs['vhdBlobSHA256List'] = @{} \n \n $StorageAccountContainerUri = ($uriWritableStorageAccountBlobContainerSasToken -split [Regex]::Escape('?'))[0] \n $StorageAccountName = (([System.Uri]$uriWritableStorageAccountBlobContainerSasToken).Host -split [Regex]::Escape('.'))[0] \n $ContainerName = ($StorageAccountContainerUri -split '/')[-1] # Last element \n $StorageAccountContainerSASToken = ($uriWritableStorageAccountBlobContainerSasToken -split [Regex]::Escape('?'))[1] \n $StorageAccountContext = New-AzStorageContext -StorageAccountName $StorageAccountName -SasToken $StorageAccountContainerSASToken \n \n $vhd_filepath='{0}/*.vhd' -f $expanded_archive_path \n \n Get-Item $vhd_filepath | ForEach-Object { \n $localFilePath = $_ \n $vhdBlobName = $localFilePath.Name \n $vhdBlobUri = '{0}/{1}' -f $StorageAccountContainerUri,$vhdBlobName \n \n $hash = (Get-FileHash -Algorithm SHA256 -Path $localFilePath).Hash \n $metadata = @{'SHA256' = $hash; } \n \n Write-Output 'Uploading ' + $vhdBlobName \n Set-AzStorageBlobContent -File $localFilePath -Context $StorageAccountContext -Container $ContainerName -Blob $vhdBlobName -BlobType Page -Metadata $metadata -Force \n $DeploymentScriptOutputs['vhdBlobUriList'][$vhdBlobName] = $vhdBlobUri \n $DeploymentScriptOutputs['vhdBlobSHA256List'][$vhdBlobName] = $hash \n } \n " + } + } + ], + "outputs": { + "vhdBlobUriList": { + "type": "object", + "value": "[reference(variables('deploymentScriptName')).outputs.vhdBlobUriList]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT816 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT816 new file mode 100644 index 0000000..2295f58 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT816 @@ -0,0 +1,365 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-iops-latency-throughput-demo/azuredeploy.json", + "/demos/storage-iops-latency-throughput-demo/azuredeploy.parameters.json" + ], + "timestamp": 1642962901845, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-iops-latency-throughput-demo/azuredeploy.json", + "/demos/storage-iops-latency-throughput-demo/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT816", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT816", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmAdminUserName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The administrative user on the Windows VM." + }, + "value": "GEN-UNIQUE" + }, + "vmAdminPassword": { + "type": "securestring", + "metadata": { + "description": "The administrative user password." + }, + "value": "GEN-PASSWORD" + }, + "vNetName": { + "type": "string", + "defaultValue": "demo-vnet", + "minLength": 1, + "metadata": { + "description": "The name of the virtual network resource" + }, + "value": "GEN-VNET-NAME" + }, + "vmPIPDnsName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The DNS prefix assigned to the public IP address resource." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "allowedValues": [ + "Standard_D2s_v3" + ], + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM Size" + } + } + }, + "variables": { + "vNetPrefix": "10.0.0.0/16", + "vNetSubnet1Name": "subnet-01", + "vNetSubnet1Prefix": "10.0.0.0/24", + "storageAccountType": [ + "Premium_LRS", + "Standard_LRS" + ], + "storageAccountNamePrefix": [ + "premium", + "standard" + ], + "vmImagePublisher": "MicrosoftWindowsServer", + "vm1ImageOffer": "WindowsServer", + "vmName": "demo-01", + "vmWindowsOSVersion": "2019-Datacenter", + "vmNicName": "demo-01-nic-0", + "vmPIPName": "demo-01-PIP", + "networkSecurityGroupName": "default-NSG", + "dscConfigureVM": { + "scriptFileUri": "[uri(parameters('_artifactsLocation'), concat('dsc/vmDemo.zip', parameters('_artifactsLocationSasToken')))]", + "script": "vmDemo.ps1", + "function": "vmDemo" + } + }, + "resources": [ + { + "name": "[concat(variables('storageAccountNamePrefix')[copyIndex()],uniqueString(resourceGroup().id))]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-01-01", + "tags": { + "displayName": "[concat(variables('storageAccountNamePrefix')[copyIndex()],uniqueString(resourceGroup().id))]" + }, + "sku": { + "name": "(storageAccountType)[copyIndex()]" + } + }, + { + "name": "[concat(variables('storageAccountNamePrefix')[copyIndex()],uniqueString(resourceGroup().id))]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-01-01", + "tags": { + "displayName": "[concat(variables('storageAccountNamePrefix')[copyIndex()],uniqueString(resourceGroup().id))]" + }, + "sku": { + "name": "(storageAccountType)[copyIndex()]" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "name": "GEN-VNET-NAME", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "tags": { + "displayName": "GEN-VNET-NAME" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-01", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "name": "demo-01-nic-0", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME", + "Microsoft.Network/publicIPAddresses/demo-01-PIP" + ], + "tags": { + "displayName": "demo-01-nic-0" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//GEN-VNET-NAME/subnet-01" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/demo-01-PIP" + } + } + } + ] + } + }, + { + "name": "demo-01", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "storageAccountCopy", + "Microsoft.Network/networkInterfaces/demo-01-nic-0" + ], + "tags": { + "displayName": "demo-01" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "demo-01", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "demo-01_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "demo-01_DataDisk1", + "lun": 0, + "diskSizeGB": 100, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "demo-01_DataDisk2", + "lun": 1, + "diskSizeGB": 100, + "caching": "ReadOnly", + "createOption": "Empty" + }, + { + "name": "demo-01_DataDisk3", + "lun": 2, + "diskSizeGB": 100, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "demo-01_DataDisk4", + "lun": 3, + "diskSizeGB": 1023, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/demo-01-nic-0" + } + ] + } + }, + "resources": [ + { + "name": "DSC", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//demo-01" + ], + "tags": { + "displayName": "demo-01/DSC" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "settings": { + "configuration": { + "configuration": { + "url": "(dscConfigureVM).scriptFileUri", + "script": "(dscConfigureVM).script", + "function": "(dscConfigureVM).function" + }, + "configurationArguments": { + "nodeName": "demo-01" + } + } + } + } + } + ] + }, + { + "name": "demo-01-PIP", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "tags": { + "displayName": "demo-01-PIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + } + ], + "outputs": { + "vmURI": { + "type": "string", + "value": "[reference(variables('vmPIPName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT817 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT817 new file mode 100644 index 0000000..6d3e3e3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT817 @@ -0,0 +1,386 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/deploy-s2d-cluster.json" + ], + "timestamp": 1642962901856, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/deploy-s2d-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT817", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT817", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namePrefix": { + "type": "string", + "minLength": 3, + "maxLength": 8, + "metadata": { + "description": "Naming prefix for each new resource created. 3-char min, 8-char max, lowercase alphanumeric" + } + }, + "domainName": { + "type": "string", + "metadata": { + "description": "DNS domain name for existing Active Directory domain" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Name of the Administrator of the existing Active Directory Domain" + } + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Administrator account of the existing Active Directory Domain" + } + }, + "storageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "Type of new Storage Accounts (Standard_LRS, Standard_GRS, Standard_RAGRS or Premium_LRS) to be created to store VM disks" + } + }, + "nicSubnetUri": { + "type": "string", + "metadata": { + "description": "Resource ID for existing vnet/subnet to which VM NICs should be attached" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the S2D VMs to be created" + } + }, + "vmCount": { + "type": "int", + "minValue": 2, + "maxValue": 3, + "metadata": { + "description": "Number of S2D VMs to be created in cluster (Min=2, Max=3)" + } + }, + "vmDiskSize": { + "type": "int", + "minValue": 128, + "maxValue": 1023, + "metadata": { + "description": "Size of each data disk in GB on each S2D VM (Min=128, Max=1023)" + } + }, + "vmDiskCount": { + "type": "int", + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of data disks on each S2D VM (Min=2, Max=32). Ensure that the VM size you've selected will support this number of data disks." + } + }, + "sofsName": { + "type": "string", + "metadata": { + "description": "Name of clustered Scale-Out File Server role" + } + }, + "shareName": { + "type": "string", + "metadata": { + "description": "Name of shared data folder on clustered Scale-Out File Server role" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer" + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer" + }, + "imageSKU": { + "type": "string", + "defaultValue": "2019-Datacenter" + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "apiVersionStorage": "2016-01-01", + "storageNamePrefix": "[concat(parameters('namePrefix'),uniqueString(resourceGroup().id),'vm')]", + "witnessStorageName": "[concat(parameters('namePrefix'),uniqueString(resourceGroup().id),'cw')]", + "witnessStorageType": "Standard_LRS", + "vmNamePrefix": "namePrefix-s2d-", + "vmAvailabilitySetName": "namePrefix-s2d-as", + "clusterName": "namePrefix-s2d-c", + "vmLoopTemplateURL": "_artifactsLocation/nestedtemplates/newVM.json_artifactsLocationSasToken", + "s2dPrepModulesURL": "_artifactsLocation/dsc/prep-s2d.ps1.zip_artifactsLocationSasToken", + "s2dPrepFunction": "PrepS2D.ps1\\PrepS2D", + "s2dConfigModulesURL": "_artifactsLocation/dsc/config-s2d.ps1.zip_artifactsLocationSasToken", + "s2dConfigFunction": "ConfigS2D.ps1\\ConfigS2D" + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "namePrefix-s2d-as", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "properties": { + "PlatformUpdateDomainCount": 3, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('witnessStorageName')]", + "apiVersion": "2016-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[concat(variables('storageNamePrefix'),copyindex())]", + "apiVersion": "2016-01-01", + "copy": { + "name": "storageAccountLoop", + "count": "vmCount" + }, + "location": "[resourceGroup().location]", + "sku": { + "name": "storageAccountType" + }, + "kind": "Storage" + }, + { + "name": "namePrefix-s2d-copyindex()-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "copy": { + "name": "nicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "nicSubnetUri" + } + } + } + ] + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "copy": { + "name": "virtualMachineLoop", + "count": "vmCount" + }, + "name": "namePrefix-s2d-copyindex()-newVM", + "dependsOn": [ + "storageAccountLoop", + "nicLoop", + "Microsoft.Compute/availabilitySets/namePrefix-s2d-as" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "_artifactsLocation/nestedtemplates/newVM.json_artifactsLocationSasToken" + }, + "parameters": { + "vmName": { + "value": "namePrefix-s2d-copyindex()" + }, + "storageAccountUri": { + "value": "[reference(concat('Microsoft.Storage/storageAccounts/',variables('StorageNamePrefix'),copyIndex()),variables('apiVersionStorage')).primaryEndpoints.blob]" + }, + "vmAvailabilitySetName": { + "value": "namePrefix-s2d-as" + }, + "vmSize": { + "value": "vmSize" + }, + "vmDiskCount": { + "value": "vmDiskCount" + }, + "vmDiskSize": { + "value": "vmDiskSize" + }, + "adminUsername": { + "value": "adminUsername" + }, + "adminPassword": { + "value": "adminPassword" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + }, + "imagePublisher": { + "value": "MicrosoftWindowsServer" + }, + "imageOffer": { + "value": "WindowsServer" + }, + "imageSKU": { + "value": "2019-Datacenter" + }, + "imageVersion": { + "value": "latest" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmNamePrefix'),copyindex(1),'/s2dPrep')]", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "virtualMachineLoop" + ], + "copy": { + "name": "virtualMachineExtensionLoop", + "count": "[sub(parameters('vmCount'),1)]" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.20", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "_artifactsLocation/dsc/prep-s2d.ps1.zip_artifactsLocationSasToken", + "configurationFunction": "PrepS2D.ps1\\PrepS2D", + "properties": { + "domainName": "domainName", + "adminCreds": { + "userName": "adminUsername", + "password": "PrivateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namePrefix-s2d-0/s2dConfig", + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "dependsOn": [ + "virtualMachineLoop", + "virtualMachineExtensionLoop", + "[resourceId('Microsoft.Storage/storageAccounts', variables('witnessStorageName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.20", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "_artifactsLocation/dsc/config-s2d.ps1.zip_artifactsLocationSasToken", + "configurationFunction": "ConfigS2D.ps1\\ConfigS2D", + "properties": { + "domainName": "domainName", + "clusterName": "namePrefix-s2d-c", + "sofsName": "sofsName", + "shareName": "shareName", + "vmNamePrefix": "namePrefix-s2d-", + "vmCount": "vmCount", + "vmDiskSize": "vmDiskSize", + "witnessStorageName": "[variables('witnessStorageName')]", + "witnessStorageEndpoint": "[replace(split(reference(concat('Microsoft.Storage/storageAccounts/', variables('witnessStorageName'))).primaryEndpoints.blob, 'blob.')[1], '/', '')]", + "witnessStorageKey": { + "userName": "PLACEHOLDER-DO-NOT-USE", + "password": "PrivateSettingsRef:witnessStorageKey" + }, + "adminCreds": { + "userName": "adminUsername", + "password": "PrivateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword", + "witnessStorageKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts',variables('witnessStorageName')),variables('apiVersionStorage')).keys[0].value]" + } + } + } + } + ], + "outputs": { + "sofsName": { + "type": "string", + "value": "[parameters('sofsName')]" + }, + "shareName": { + "type": "string", + "value": "[parameters('shareName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT818 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT818 new file mode 100644 index 0000000..516a8ba --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT818 @@ -0,0 +1,293 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/diskSelection.json" + ], + "timestamp": 1642962901884, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/diskSelection.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT818", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT818", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDiskCount": { + "type": "int", + "minValue": 2, + "maxValue": 32 + }, + "vmDiskSize": { + "type": "int", + "minValue": 128, + "maxValue": 1023 + }, + "diskCaching": { + "type": "string", + "allowedValues": [ + "None", + "ReadOnly", + "ReadWrite" + ], + "defaultValue": "None" + }, + "storageAccountUri": { + "type": "string" + }, + "diskNamingPrefix": { + "type": "string" + } + }, + "variables": { + "diskArray": [ + { + "name": "diskNamingPrefixdisk0", + "diskSizeGB": "vmDiskSize", + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk1", + "diskSizeGB": "vmDiskSize", + "lun": 1, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk2", + "diskSizeGB": "vmDiskSize", + "lun": 2, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk3", + "diskSizeGB": "vmDiskSize", + "lun": 3, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk4", + "diskSizeGB": "vmDiskSize", + "lun": 4, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk5", + "diskSizeGB": "vmDiskSize", + "lun": 5, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk6", + "diskSizeGB": "vmDiskSize", + "lun": 6, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk7", + "diskSizeGB": "vmDiskSize", + "lun": 7, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk8", + "diskSizeGB": "vmDiskSize", + "lun": 8, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk9", + "diskSizeGB": "vmDiskSize", + "lun": 9, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk10", + "diskSizeGB": "vmDiskSize", + "lun": 10, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk11", + "diskSizeGB": "vmDiskSize", + "lun": 11, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk12", + "diskSizeGB": "vmDiskSize", + "lun": 12, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk13", + "diskSizeGB": "vmDiskSize", + "lun": 13, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk14", + "diskSizeGB": "vmDiskSize", + "lun": 14, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk15", + "diskSizeGB": "vmDiskSize", + "lun": 15, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk16", + "diskSizeGB": "vmDiskSize", + "lun": 16, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk17", + "diskSizeGB": "vmDiskSize", + "lun": 17, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk18", + "diskSizeGB": "vmDiskSize", + "lun": 18, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk19", + "diskSizeGB": "vmDiskSize", + "lun": 19, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk20", + "diskSizeGB": "vmDiskSize", + "lun": 20, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk21", + "diskSizeGB": "vmDiskSize", + "lun": 21, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk22", + "diskSizeGB": "vmDiskSize", + "lun": 22, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk23", + "diskSizeGB": "vmDiskSize", + "lun": 23, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk24", + "diskSizeGB": "vmDiskSize", + "lun": 24, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk25", + "diskSizeGB": "vmDiskSize", + "lun": 25, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk26", + "diskSizeGB": "vmDiskSize", + "lun": 26, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk27", + "diskSizeGB": "vmDiskSize", + "lun": 27, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk28", + "diskSizeGB": "vmDiskSize", + "lun": 28, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk29", + "diskSizeGB": "vmDiskSize", + "lun": 29, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk30", + "diskSizeGB": "vmDiskSize", + "lun": 30, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk31", + "diskSizeGB": "vmDiskSize", + "lun": 31, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "resources": [], + "outputs": { + "dataDiskArray": { + "type": "array", + "value": "[take(variables('diskArray'),parameters('vmDiskCount'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT819 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT819 new file mode 100644 index 0000000..b84a524 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT819 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/newVM.json" + ], + "timestamp": 1642962901894, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct/nestedtemplates/newVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT819", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT819", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string" + }, + "storageAccountUri": { + "type": "string" + }, + "vmAvailabilitySetName": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "vmDiskCount": { + "type": "int" + }, + "vmDiskSize": { + "type": "int" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "imagePublisher": { + "type": "string" + }, + "imageOffer": { + "type": "string" + }, + "imageSKU": { + "type": "string" + }, + "imageVersion": { + "type": "string" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "diskSelectionTemplateUri": "_artifactsLocation/nestedtemplates/diskSelection.json_artifactsLocationSasToken" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "name": "vmName-diskSelection", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "_artifactsLocation/nestedtemplates/diskSelection.json_artifactsLocationSasToken" + }, + "parameters": { + "vmDiskCount": { + "value": "vmDiskCount" + }, + "vmDiskSize": { + "value": "vmDiskSize" + }, + "diskCaching": { + "value": "None" + }, + "storageAccountUri": { + "value": "storageAccountUri" + }, + "diskNamingPrefix": { + "value": "vmName-data" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "name": "vmName", + "dependsOn": [ + "Microsoft.Resources/deployments/vmName-diskSelection" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets//vmAvailabilitySetName" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "imageVersion" + }, + "osDisk": { + "name": "vmName_OsDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": "[reference(concat(parameters('vmName'),'-diskSelection')).outputs.dataDiskArray.value]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmName-nic" + } + ] + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[parameters('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT82 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT82 new file mode 100644 index 0000000..50a4262 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT82 @@ -0,0 +1,578 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885694, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/ds13.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT82", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT82", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin user name for the VMs" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the VMs (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "cmUsername": { + "type": "string", + "defaultValue": "cmadmin", + "metadata": { + "description": "User name for the Cloudera Manager" + } + }, + "cmPassword": { + "type": "securestring", + "metadata": { + "description": "password for the Cloudera Manager (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS name where the VMs will be exposed" + }, + "value": "GEN-UNIQUE-10" + }, + "masterStorageAccountType": { + "type": "string", + "defaultValue": "Premium_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for master nodes (defaults to Premium_LRS)" + }, + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for worker nodes (defaults to Standard_LRS)" + }, + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "clouderavnet", + "metadata": { + "description": "The name of the virtual network provisioned for the deployment" + }, + "value": "GEN-UNIQUE-10" + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Indicator for new or exiting Virtual Network" + } + }, + "virtualNetworkRGName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Resource Group Name for Vnet. For new VNet leave it empty, otherwise type in existing resource group name" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "clouderasubnet", + "metadata": { + "description": "Subnet name for the virtual network where resources will be provisioned" + }, + "value": "GEN-UNIQUE-10" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "Virtual Network address CIDR" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "CIDR for the subnet where VMs will be placed" + } + }, + "masterNodeIPAddress": { + "type": "string", + "defaultValue": "10.3.0.4", + "metadata": { + "description": "IP address for the first master" + } + }, + "dataNodeIPOffSetFromMaster": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "IP address from the master node, for example if the first master is 10.1.1.1, then the first dataNode would be 10.1.1.11" + } + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Eval", + "allowedValues": [ + "Eval", + "Prod" + ], + "metadata": { + "description": "T-shirt size of the Cloudera cluster (Eval, Prod)" + }, + "value": "Eval" + }, + "numberOfDataNodes": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of data nodes for Prod (defaults to 3)" + }, + "value": 3 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "The size of the VMs deployed in the cluster (defaults to Standard_DS13)" + }, + "value": "Standard_D16s_v3" + }, + "company": { + "type": "string", + "defaultValue": "Company", + "metadata": { + "description": "Your Company" + }, + "value": "company" + }, + "emailAddress": { + "type": "string", + "defaultValue": "email@yourcompany.com", + "metadata": { + "description": "your email" + }, + "value": "email@yourcompany.com" + }, + "businessPhone": { + "type": "string", + "defaultValue": "123456789", + "metadata": { + "description": "your business phone number" + }, + "value": "123456789" + }, + "firstName": { + "type": "string", + "defaultValue": "FirstName", + "metadata": { + "description": "Your FirstName" + }, + "value": "FirstName" + }, + "lastName": { + "type": "string", + "defaultValue": "LastName", + "metadata": { + "description": "Your LastName" + }, + "value": "LastName" + }, + "jobRole": { + "type": "string", + "defaultValue": "Administrator", + "metadata": { + "description": "Job Role" + }, + "allowedValues": [ + "Administrator", + "Analyst (Industry/Finance)", + "Analyst (Technical)", + "Architect", + "C level", + "Consultant", + "Developer", + "Director", + "Engineer", + "Individual contributor", + "Manager", + "Partner", + "Student", + "VP" + ], + "value": "Administrator" + }, + "jobFunction": { + "type": "string", + "defaultValue": "Analytics / Business Intelligence", + "metadata": { + "description": "Job Function" + }, + "allowedValues": [ + "Analytics / Business Intelligence", + "Big Data / Architecture", + "Data Warehouse / Management", + "Data Science", + "Database", + "ETL / ELT", + "Infrastructure", + "IT", + "Marketing / Sales", + "Networking", + "Manager", + "Security / Compliance", + "Storage" + ], + "value": "Storage" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + } + }, + "variables": { + "templateAPIVersion": "2015-11-01", + "resourceAPIVersion": "2015-06-15", + "installCDH": "True", + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "scriptsUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos", + "share-resourcesUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos/shared-resources-new-vnet.json", + "data-nodeUri": "[concat(variables('scriptsUri'), '/data-node-', toLower(subString(parameters('vmSize'), 9, 4)), '.json')]", + "sa": "10.3.0.4", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterStorageAccount": { + "type": "Premium_LRS" + }, + "workerStorageAccount": { + "type": "Standard_LRS" + }, + "clusterTshirtSizeEval": { + "masterNodeCount": 1, + "dataNodeCount": 3, + "highAvailability": "false" + }, + "clusterTshirtSizeProd": { + "masterNodeCount": 3, + "dataNodeCount": 3, + "highAvailability": "true" + }, + "clusterSpec": "concat(clusterTshirtSize, parameters(tshirtSize))", + "vmSpec": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + }, + "networkSpec": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + }, + "newVNetId": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-10", + "existingVNetId": "parameters('virtualNetworkRGName')/Microsoft.Network/virtualNetworks/GEN-UNIQUE-10", + "VNetId": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos/shared-resources-new-vnet.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "masterNodeASName": { + "value": "(vmSpec).masterNodeASName" + }, + "dataNodeASName": { + "value": "(vmSpec).dataNodeASName" + } + } + } + }, + { + "name": "master-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos/master-node.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos" + }, + "vmCount": { + "value": "(clusterSpec).masterNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + } + } + } + }, + { + "name": "data-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('data-nodeUri')]", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos" + }, + "storageAccount": { + "value": { + "type": "Standard_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).dataNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + } + } + } + }, + { + "name": "setup-cloudera", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "dependsOn": [ + "Microsoft.Resources/deployments/data-node", + "Microsoft.Resources/deployments/master-node" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos/setup-cloudera.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "azureuser", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "GEN-UNIQUE-10", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "GEN-UNIQUE-10" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "fqdn": { + "value": "[reference('master-node').outputs.fqdn.value]" + }, + "cmUsername": { + "value": "cmadmin" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "company": { + "value": "Company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + }, + "installCDH": { + "value": "True" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT820 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT820 new file mode 100644 index 0000000..f446c7a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT820 @@ -0,0 +1,234 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-spaces-direct/azuredeploy.json", + "/demos/storage-spaces-direct/azuredeploy.parameters.json" + ], + "timestamp": 1642962901908, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct/azuredeploy.json", + "/demos/storage-spaces-direct/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT820", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT820", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "namePrefix": { + "type": "string", + "minLength": 3, + "maxLength": 8, + "metadata": { + "description": "Naming prefix for each new resource created. 3-char min, 8-char max, lowercase alphanumeric" + }, + "value": "GEN-UNIQUE-8" + }, + "storageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "Type of new Storage Accounts (Standard_LRS, Standard_GRS, Standard_RAGRS or Premium_LRS) to be created to store VM disks" + }, + "defaultValue": "Premium_LRS" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the S2D VMs to be created" + }, + "defaultValue": "Standard_D2s_v3" + }, + "vmCount": { + "type": "int", + "minValue": 2, + "maxValue": 3, + "metadata": { + "description": "Number of S2D VMs to be created in cluster (Min=2, Max=3)" + }, + "defaultValue": 2 + }, + "vmDiskSize": { + "type": "int", + "minValue": 128, + "maxValue": 1023, + "metadata": { + "description": "Size of each data disk in GB on each S2D VM (Min=128, Max=1023)" + }, + "defaultValue": 1023 + }, + "vmDiskCount": { + "type": "int", + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of data disks on each S2D VM (Min=2, Max=32). Ensure that the VM size you've selected will support this number of data disks." + }, + "defaultValue": 2 + }, + "existingDomainName": { + "type": "string", + "metadata": { + "description": "DNS domain name for existing Active Directory domain" + }, + "value": "contoso.com" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Name of the Administrator of the existing Active Directory Domain" + }, + "value": "AzureAdmin" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Administrator account of the existing Active Directory Domain" + }, + "value": "GEN-PASSWORD" + }, + "existingVirtualNetworkRGName": { + "type": "string", + "metadata": { + "description": "Resource Group Name for the existing VNET." + }, + "value": "rg01" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET." + }, + "value": "vnet01" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the existing subnet in the existing VNET to which the S2D VMs should be deployed" + }, + "value": "default" + }, + "sofsName": { + "type": "string", + "metadata": { + "description": "Name of clustered Scale-Out File Server role" + }, + "defaultValue": "fs01" + }, + "shareName": { + "type": "string", + "metadata": { + "description": "Name of shared data folder on clustered Scale-Out File Server role" + }, + "defaultValue": "data" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "Location of resources that the script is dependent on such as linked templates and DSC modules" + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/301-storage-spaces-direct" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "subnetRef": "rg01/Microsoft.Network/virtualNetworks/subnets/vnet01/default", + "deployS2DClusterTemplateURL": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/301-storage-spaces-direct/nestedtemplates/deploy-s2d-cluster.jsonparameters('_artifactsLocationSasToken')", + "deployS2DCluster": "deployS2DCluster" + }, + "resources": [ + { + "name": "deployS2DCluster", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/301-storage-spaces-direct/nestedtemplates/deploy-s2d-cluster.jsonparameters('_artifactsLocationSasToken')", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "namePrefix": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "contoso.com" + }, + "adminUsername": { + "value": "AzureAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageAccountType": { + "value": "Premium_LRS" + }, + "nicSubnetUri": { + "value": "rg01/Microsoft.Network/virtualNetworks/subnets/vnet01/default" + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "vmCount": { + "value": 2 + }, + "vmDiskSize": { + "value": 1023 + }, + "vmDiskCount": { + "value": 2 + }, + "sofsName": { + "value": "fs01" + }, + "shareName": { + "value": "data" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/301-storage-spaces-direct" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "sofsPath": { + "type": "string", + "value": "[concat('\\\\',reference(variables('deployS2DCluster')).outputs.sofsName.value,'\\',reference(variables('deployS2DCluster')).outputs.shareName.value)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT821 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT821 new file mode 100644 index 0000000..8b84c42 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT821 @@ -0,0 +1,346 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/deploy-s2d-cluster.json" + ], + "timestamp": 1642962901917, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/deploy-s2d-cluster.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT821", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.storage/storageaccounts", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT821", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "Location for the VM, only certain regions support zones during preview." + }, + "defaultValue": "[resourceGroup().location]" + }, + "namePrefix": { + "type": "string", + "minLength": 3, + "maxLength": 8, + "metadata": { + "description": "Naming prefix for each new resource created. 3-char min, 8-char max, lowercase alphanumeric" + } + }, + "domainName": { + "type": "string", + "metadata": { + "description": "DNS domain name for existing Active Directory domain" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Name of the Administrator of the existing Active Directory Domain" + } + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Administrator account of the existing Active Directory Domain" + } + }, + "nicSubnetUri": { + "type": "string", + "metadata": { + "description": "Resource ID for existing vnet/subnet to which VM NICs should be attached" + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the S2D VMs to be created" + } + }, + "vmCount": { + "type": "int", + "minValue": 2, + "maxValue": 3, + "metadata": { + "description": "Number of S2D VMs to be created in cluster (Min=2, Max=3)" + } + }, + "vmDiskSize": { + "type": "int", + "minValue": 128, + "maxValue": 1023, + "metadata": { + "description": "Size of each data disk in GB on each S2D VM (Min=128, Max=1023)" + } + }, + "vmDiskCount": { + "type": "int", + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of data disks on each S2D VM (Min=2, Max=32). Ensure that the VM size you've selected will support this number of data disks." + } + }, + "sofsName": { + "type": "string", + "metadata": { + "description": "Name of clustered Scale-Out File Server role" + } + }, + "shareName": { + "type": "string", + "metadata": { + "description": "Name of shared data folder on clustered Scale-Out File Server role" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer" + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer" + }, + "imageSKU": { + "type": "string", + "defaultValue": "2016-Datacenter" + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "string" + } + }, + "variables": { + "apiVersionStorage": "2016-01-01", + "witnessStorageName": "[concat(parameters('namePrefix'),uniqueString(resourceGroup().id),'cw')]", + "witnessStorageType": "Standard_LRS", + "vmNamePrefix": "namePrefix-s2d-", + "clusterName": "namePrefix-s2d-c", + "vmLoopTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/newVM.json',parameters('_artifactsLocationSasToken')))]", + "s2dPrepModulesURL": "[uri(parameters('_artifactsLocation'), concat('dsc/prep-s2d.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "s2dPrepFunction": "PrepS2D.ps1\\PrepS2D", + "s2dConfigModulesURL": "[uri(parameters('_artifactsLocation'), concat('dsc/config-s2d.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "s2dConfigFunction": "ConfigS2D.ps1\\ConfigS2D", + "zones": [ + "1", + "2", + "3" + ] + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('witnessStorageName')]", + "apiVersion": "2016-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "name": "namePrefix-s2d-copyindex()-nic", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2016-10-01", + "copy": { + "name": "nicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "nicSubnetUri" + } + } + } + ] + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "copy": { + "name": "virtualMachineLoop", + "count": "vmCount" + }, + "name": "namePrefix-s2d-copyindex()-newVM", + "dependsOn": [ + "nicLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/newVM.json',parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "vmName": { + "value": "namePrefix-s2d-copyindex()" + }, + "vmSize": { + "value": "vmSize" + }, + "vmDiskCount": { + "value": "vmDiskCount" + }, + "vmDiskSize": { + "value": "vmDiskSize" + }, + "adminUsername": { + "value": "adminUsername" + }, + "adminPassword": { + "value": "adminPassword" + }, + "_artifactsLocation": { + "value": "_artifactsLocation" + }, + "_artifactsLocationSasToken": { + "value": "_artifactsLocationSasToken" + }, + "imagePublisher": { + "value": "MicrosoftWindowsServer" + }, + "imageOffer": { + "value": "WindowsServer" + }, + "imageSKU": { + "value": "2016-Datacenter" + }, + "imageVersion": { + "value": "latest" + }, + "zones": { + "value": "[take(skip(variables('zones'),mod(copyIndex(),length(variables('zones')))),1)]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmNamePrefix'),copyindex(1),'/s2dPrep')]", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "virtualMachineLoop" + ], + "copy": { + "name": "virtualMachineExtensionLoop", + "count": "[sub(parameters('vmCount'),1)]" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.20", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('dsc/prep-s2d.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "PrepS2D.ps1\\PrepS2D", + "properties": { + "domainName": "domainName", + "adminCreds": { + "userName": "adminUserName", + "password": "PrivateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namePrefix-s2d-0/s2dConfig", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "virtualMachineLoop", + "virtualMachineExtensionLoop", + "[resourceId('Microsoft.Storage/storageAccounts', variables('witnessStorageName'))]" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.20", + "autoUpgradeMinorVersion": true, + "settings": { + "modulesUrl": "[uri(parameters('_artifactsLocation'), concat('dsc/config-s2d.ps1.zip',parameters('_artifactsLocationSasToken')))]", + "configurationFunction": "ConfigS2D.ps1\\ConfigS2D", + "properties": { + "domainName": "domainName", + "clusterName": "namePrefix-s2d-c", + "sofsName": "sofsName", + "shareName": "shareName", + "vmNamePrefix": "namePrefix-s2d-", + "vmCount": "vmCount", + "vmDiskSize": "vmDiskSize", + "witnessStorageName": "[variables('witnessStorageName')]", + "witnessStorageKey": { + "userName": "PLACEHOLDER-DO-NOT-USE", + "password": "PrivateSettingsRef:witnessStorageKey" + }, + "adminCreds": { + "userName": "adminUserName", + "password": "PrivateSettingsRef:adminPassword" + } + } + }, + "protectedSettings": { + "items": { + "adminPassword": "adminPassword", + "witnessStorageKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts',variables('witnessStorageName')),variables('apiVersionStorage')).keys[0].value]" + } + } + } + } + ], + "outputs": { + "sofsName": { + "type": "string", + "value": "[parameters('sofsName')]" + }, + "shareName": { + "type": "string", + "value": "[parameters('shareName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT822 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT822 new file mode 100644 index 0000000..e1f3a76 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT822 @@ -0,0 +1,290 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/diskSelection.json" + ], + "timestamp": 1642962901939, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/diskSelection.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT822", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT822", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmDiskCount": { + "type": "int", + "minValue": 2, + "maxValue": 32 + }, + "vmDiskSize": { + "type": "int", + "minValue": 128, + "maxValue": 1023 + }, + "diskCaching": { + "type": "string", + "allowedValues": [ + "None", + "ReadOnly", + "ReadWrite" + ], + "defaultValue": "None" + }, + "diskNamingPrefix": { + "type": "string" + } + }, + "variables": { + "diskArray": [ + { + "name": "diskNamingPrefixdisk0", + "diskSizeGB": "vmDiskSize", + "lun": 0, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk1", + "diskSizeGB": "vmDiskSize", + "lun": 1, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk2", + "diskSizeGB": "vmDiskSize", + "lun": 2, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk3", + "diskSizeGB": "vmDiskSize", + "lun": 3, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk4", + "diskSizeGB": "vmDiskSize", + "lun": 4, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk5", + "diskSizeGB": "vmDiskSize", + "lun": 5, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk6", + "diskSizeGB": "vmDiskSize", + "lun": 6, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk7", + "diskSizeGB": "vmDiskSize", + "lun": 7, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk8", + "diskSizeGB": "vmDiskSize", + "lun": 8, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk9", + "diskSizeGB": "vmDiskSize", + "lun": 9, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk10", + "diskSizeGB": "vmDiskSize", + "lun": 10, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk11", + "diskSizeGB": "vmDiskSize", + "lun": 11, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk12", + "diskSizeGB": "vmDiskSize", + "lun": 12, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk13", + "diskSizeGB": "vmDiskSize", + "lun": 13, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk14", + "diskSizeGB": "vmDiskSize", + "lun": 14, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk15", + "diskSizeGB": "vmDiskSize", + "lun": 15, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk16", + "diskSizeGB": "vmDiskSize", + "lun": 16, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk17", + "diskSizeGB": "vmDiskSize", + "lun": 17, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk18", + "diskSizeGB": "vmDiskSize", + "lun": 18, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk19", + "diskSizeGB": "vmDiskSize", + "lun": 19, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk20", + "diskSizeGB": "vmDiskSize", + "lun": 20, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk21", + "diskSizeGB": "vmDiskSize", + "lun": 21, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk22", + "diskSizeGB": "vmDiskSize", + "lun": 22, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk23", + "diskSizeGB": "vmDiskSize", + "lun": 23, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk24", + "diskSizeGB": "vmDiskSize", + "lun": 24, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk25", + "diskSizeGB": "vmDiskSize", + "lun": 25, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk26", + "diskSizeGB": "vmDiskSize", + "lun": 26, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk27", + "diskSizeGB": "vmDiskSize", + "lun": 27, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk28", + "diskSizeGB": "vmDiskSize", + "lun": 28, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk29", + "diskSizeGB": "vmDiskSize", + "lun": 29, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk30", + "diskSizeGB": "vmDiskSize", + "lun": 30, + "caching": "None", + "createOption": "Empty" + }, + { + "name": "diskNamingPrefixdisk31", + "diskSizeGB": "vmDiskSize", + "lun": 31, + "caching": "None", + "createOption": "Empty" + } + ] + }, + "resources": [], + "outputs": { + "dataDiskArray": { + "type": "array", + "value": "[take(variables('diskArray'),parameters('vmDiskCount'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT823 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT823 new file mode 100644 index 0000000..9b17b53 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT823 @@ -0,0 +1,156 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/newVM.json" + ], + "timestamp": 1642962901952, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct-md-zones/nestedtemplates/newVM.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT823", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT823", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "vmName": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "vmDiskCount": { + "type": "int" + }, + "vmDiskSize": { + "type": "int" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "imagePublisher": { + "type": "string" + }, + "imageOffer": { + "type": "string" + }, + "imageSKU": { + "type": "string" + }, + "imageVersion": { + "type": "string" + }, + "zones": { + "type": "array" + }, + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "string" + } + }, + "variables": { + "diskSelectionTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/diskSelection.json',parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "name": "vmName-diskSelection", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/diskSelection.json',parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "vmDiskCount": { + "value": "vmDiskCount" + }, + "vmDiskSize": { + "value": "vmDiskSize" + }, + "diskCaching": { + "value": "None" + }, + "diskNamingPrefix": { + "value": "vmName-data" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "name": "vmName", + "zones": "zones", + "dependsOn": [ + "Microsoft.Resources/deployments/vmName-diskSelection" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "imagePublisher", + "offer": "imageOffer", + "sku": "imageSku", + "version": "imageVersion" + }, + "osDisk": { + "name": "vmName-osdisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": "[reference(concat(parameters('vmName'),'-diskSelection')).outputs.dataDiskArray.value]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/vmName-nic" + } + ] + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[parameters('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT824 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT824 new file mode 100644 index 0000000..ad6f796 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT824 @@ -0,0 +1,228 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/storage-spaces-direct-md-zones/azuredeploy.json", + "/demos/storage-spaces-direct-md-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962901968, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/storage-spaces-direct-md-zones/azuredeploy.json", + "/demos/storage-spaces-direct-md-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT824", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT824", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "allowedValues": [], + "metadata": { + "description": "Location for the VM, only certain regions support zones during, Azure Government will not use zones." + } + }, + "namePrefix": { + "type": "string", + "minLength": 3, + "maxLength": 8, + "metadata": { + "description": "Naming prefix for each new resource created. 3-char min, 8-char max, lowercase alphanumeric" + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the S2D VMs to be created" + }, + "defaultValue": "Standard_D2_v3" + }, + "vmCount": { + "type": "int", + "minValue": 2, + "maxValue": 3, + "metadata": { + "description": "Number of S2D VMs to be created in cluster (Min=2, Max=3)" + }, + "defaultValue": 2 + }, + "vmDiskSize": { + "type": "int", + "minValue": 128, + "maxValue": 1023, + "metadata": { + "description": "Size of each data disk in GB on each S2D VM (Min=128, Max=1023)" + }, + "defaultValue": 128 + }, + "vmDiskCount": { + "type": "int", + "minValue": 2, + "maxValue": 32, + "metadata": { + "description": "Number of data disks on each S2D VM (Min=2, Max=32). Ensure that the VM size you've selected will support this number of data disks." + }, + "defaultValue": 2 + }, + "existingDomainName": { + "type": "string", + "metadata": { + "description": "DNS domain name for existing Active Directory domain" + }, + "value": "contoso.com" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Name of the Administrator of the existing Active Directory Domain" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "minLength": 12, + "metadata": { + "description": "Password for the Administrator account of the existing Active Directory Domain" + }, + "value": "GEN-PASSWORD" + }, + "existingVirtualNetworkRGName": { + "type": "string", + "metadata": { + "description": "Resource Group Name for the existing VNET." + }, + "value": "rg01" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "Name of the existing VNET." + }, + "value": "vnet01" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the existing subnet in the existing VNET to which the S2D VMs should be deployed" + }, + "value": "default" + }, + "sofsName": { + "type": "string", + "metadata": { + "description": "Name of clustered Scale-Out File Server role" + }, + "defaultValue": "fs01" + }, + "shareName": { + "type": "string", + "metadata": { + "description": "Name of shared data folder on clustered Scale-Out File Server role" + }, + "defaultValue": "data" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "Location of resources that the script is dependent on such as linked templates and DSC modules" + }, + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/storage-spaces-direct-md-zones/" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Not required for default location. The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "subnetRef": "rg01/Microsoft.Network/virtualNetworks/subnets/vnet01/default", + "deployS2DClusterTemplateURL": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/deploy-s2d-cluster.json', parameters('_artifactsLocationSasToken')))]", + "deployS2DCluster": "deployS2DCluster" + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "name": "deployS2DCluster", + "dependsOn": [], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/deploy-s2d-cluster.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "location" + }, + "namePrefix": { + "value": "GEN-UNIQUE-8" + }, + "domainName": { + "value": "contoso.com" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "nicSubnetUri": { + "value": "rg01/Microsoft.Network/virtualNetworks/subnets/vnet01/default" + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "vmCount": { + "value": 2 + }, + "vmDiskSize": { + "value": 128 + }, + "vmDiskCount": { + "value": 2 + }, + "sofsName": { + "value": "fs01" + }, + "shareName": { + "value": "data" + }, + "_artifactsLocation": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/demos/storage-spaces-direct-md-zones/" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + } + ], + "outputs": { + "sofsPath": { + "type": "string", + "value": "[concat('\\\\',reference(variables('deployS2DCluster')).outputs.sofsName.value,'\\',reference(variables('deployS2DCluster')).outputs.shareName.value)]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT825 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT825 new file mode 100644 index 0000000..11b07de --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT825 @@ -0,0 +1,83 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/subnet-driven-deployment/AVSet.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962901982, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/AVSet.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT825", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT825", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "availabilitySetName": { + "type": "string", + "defaultValue": "AvSet1", + "metadata": { + "description": "AVSet name the VM will belong to" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "dnsLabelPrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageCategory": { + "value": "Premium" + }, + "numberOfSubnets": { + "value": 4 + }, + "memberServersPerSubnet": { + "value": 1 + } + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "AvSet1", + "apiVersion": "2020-12-01", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT826 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT826 new file mode 100644 index 0000000..c7cc517 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT826 @@ -0,0 +1,665 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/subnet-driven-deployment/azuredeploy.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962901991, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/azuredeploy.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT826", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT826", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "numberOfSubnets": { + "type": "int", + "defaultValue": 3, + "minValue": 2, + "maxValue": 20, + "metadata": { + "description": "Number of subnets in the VNet. Must be between 2 and 20" + }, + "value": 4 + }, + "memberServersPerSubnet": { + "type": "int", + "defaultValue": 1, + "minValue": 1, + "maxValue": 20, + "metadata": { + "description": "Member servers for each subnet. Must be between 1 and 20" + }, + "value": 1 + }, + "storageCategory": { + "type": "string", + "defaultValue": "Standard", + "metadata": { + "description": "Storage type. Can be either Standard (HDD) or Premium (SSD)" + }, + "allowedValues": [ + "Standard", + "Premium" + ], + "value": "Premium" + }, + "domainName": { + "type": "string", + "defaultValue": "fabrikam.com", + "metadata": { + "description": "Domain to create for the Lab" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "zeAdmin" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS label for the deployment. The fqdn will look something like 'dnsname.region.cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'." + }, + "value": "GEN-UNIQUE-8" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "vnetName": "[uniqueString(resourceGroup().id, 'labVNet')]", + "labVNetPrefix": "172.16.0.0/12", + "storageAccountSuffix": "st", + "adDataDiskSize": "30", + "mbrDataDiskSize": "127" + }, + "resources": [ + { + "apiVersion": "2020-10-01", + "name": "sbn0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('LabSubnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.1.0.0" + }, + "parameters": { + "labVNetPrefix": { + "value": "172.16.0.0/12" + }, + "subnets": { + "value": [] + }, + "addedSubnetName": { + "value": "sbn-Central" + }, + "addedSubnetPrefix": { + "value": "172.16.0.0/24" + }, + "vnetName": { + "value": "[uniqueString(resourceGroup().id, 'labVNet')]" + }, + "dnsLabel": { + "value": "GEN-UNIQUE-8" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "[concat('sbn', copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "copy": { + "name": "iter", + "count": "[add(parameters('numberOfSubnets'),-1)]" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('LabSubnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.1.0.0" + }, + "parameters": { + "labVNetPrefix": { + "value": "172.16.0.0/12" + }, + "subnets": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', concat('sbn', copyIndex()))).outputs.vnetSubnets.value]" + }, + "vnetName": { + "value": "[uniqueString(resourceGroup().id, 'labVNet')]" + }, + "dnsLabel": { + "value": "GEN-UNIQUE-8" + }, + "addedSubnetName": { + "value": "[concat('sbn-',copyIndex(1))]" + }, + "addedSubnetPrefix": { + "value": "[concat('172.16.',copyIndex(1),'.0/24')]" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "LabStorage", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('Storage.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.1.0.0" + }, + "parameters": { + "storageAccountSuffix": { + "value": "st" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "Step0", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('AVSet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "availabilitySetName": { + "value": "AVSetDC" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "confDC0", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments//sbn0", + "Microsoft.Resources/deployments/LabStorage", + "Microsoft.Resources/deployments/dc0" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('ConfigDC.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.1.0.0" + }, + "parameters": { + "indx": { + "value": 0 + }, + "vmNamePrefix": { + "value": "" + }, + "computerName": { + "value": "dc" + }, + "domainName": { + "value": "fabrikam.com" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "Step1", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/dc0" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('SetVNetDNS.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "dnsServerAddresses": { + "value": [ + "[reference('dc0').outputs.vmIPAddress.value]" + ] + }, + "virtualNetworkName": { + "value": "[uniqueString(resourceGroup().id, 'labVNet')]" + }, + "virtualNetworkSubnets": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', concat('sbn', add(parameters('numberOfSubnets'),-1)))).outputs.vnetSubnets.value]" + }, + "virtualNetworkAddressRanges": { + "value": [ + "172.16.0.0/12" + ] + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "dc0", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/Step0" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('WinServ.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.2.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "indx": { + "value": 0 + }, + "bootDiagnostics": { + "value": false + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "lbName": { + "value": "[reference('sbn0').outputs.lbName.value]" + }, + "computerName": { + "value": "dc" + }, + "publicStartRdpPort": { + "value": 5000 + }, + "subnets": { + "value": "[reference('sbn0').outputs.vnetSubnets.value]" + }, + "storageAccountName": { + "value": "[reference('LabStorage').outputs.storageAccountName.value]" + }, + "availabilitySetName": { + "value": "AvSetDC" + }, + "vmNamePrefix": { + "value": "" + }, + "nicNamePrefix": { + "value": "nic" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "dDisks": { + "value": [ + { + "name": "dc0dataDisk0", + "caching": "None", + "createOption": "Empty", + "diskSizeGB": "30", + "lun": 0 + } + ] + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "[concat('dc', copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/Step1", + "Microsoft.Resources/deployments/dc0" + ], + "copy": { + "name": "otherDCs", + "count": "[add(parameters('numberOfSubnets'),-1)]" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('WinServ.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.2.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "indx": { + "value": "[copyIndex(1)]" + }, + "bootDiagnostics": { + "value": false + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "lbName": { + "value": "[reference('sbn0').outputs.lbName.value]" + }, + "computerName": { + "value": "dc" + }, + "publicStartRdpPort": { + "value": 5000 + }, + "subnets": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', concat('sbn', add(parameters('numberOfSubnets'),-1)))).outputs.vnetSubnets.value]" + }, + "storageAccountName": { + "value": "[reference('LabStorage').outputs.storageAccountName.value]" + }, + "availabilitySetName": { + "value": "AvSetDC" + }, + "vmNamePrefix": { + "value": "" + }, + "nicNamePrefix": { + "value": "nic" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "dDisks": { + "value": [ + { + "name": "[concat('adDataDisk', copyIndex(1))]", + "caching": "None", + "createOption": "Empty", + "diskSizeGB": "30", + "lun": 0 + } + ] + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "MemberscopyIndex()", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/Step1", + "Microsoft.Resources/deployments/dc0" + ], + "copy": { + "name": "members", + "count": "[mul(parameters('numberOfSubnets'),parameters('memberServersPerSubnet'))]" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('WinServ.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.2.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "indx": { + "value": "[copyIndex()]" + }, + "bootDiagnostics": { + "value": false + }, + "vmSize": { + "value": "Standard_D2s_v3" + }, + "lbName": { + "value": "[reference('sbn0').outputs.lbName.value]" + }, + "computerName": { + "value": "srvMbmr" + }, + "publicStartRdpPort": { + "value": 6000 + }, + "subnets": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', concat('sbn', add(parameters('numberOfSubnets'),-1)))).outputs.vnetSubnets.value]" + }, + "storageAccountName": { + "value": "[reference('LabStorage').outputs.storageAccountName.value]" + }, + "availabilitySetName": { + "value": "AVSetDC" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "dDisks": { + "value": [ + { + "name": "dataDiskcopyIndex()", + "caching": "None", + "createOption": "Empty", + "diskSizeGB": "127", + "lun": 0 + } + ] + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "[concat('confDc', copyIndex(1))]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/confDC0", + "[resourceId('Microsoft.Resources/deployments', concat('dc', copyIndex(1)))]" + ], + "copy": { + "name": "otherDCConfs", + "count": "[add(parameters('numberOfSubnets'),-1)]" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('ConfigDC.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.1.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "indx": { + "value": "[copyIndex(1)]" + }, + "computerName": { + "value": "dc" + }, + "vmNamePrefix": { + "value": "" + }, + "domainName": { + "value": "fabrikam.com" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + } + } + } + }, + { + "apiVersion": "2020-10-01", + "name": "confMemberscopyIndex()", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "Microsoft.Resources/deployments/confDC0", + "Microsoft.Resources/deployments/MemberscopyIndex()" + ], + "copy": { + "name": "confMembers", + "count": "[mul(parameters('numberOfSubnets'),parameters('memberServersPerSubnet'))]" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('confDomainMember.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.1.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "indx": { + "value": "[copyIndex()]" + }, + "computerName": { + "value": "srvMbmr" + }, + "domainName": { + "value": "fabrikam.com" + }, + "domainJoinUsername": { + "value": "zeAdmin" + }, + "domainJoinPassword": { + "value": "GEN-PASSWORD" + } + } + } + } + ], + "outputs": { + "vmIPAddress": { + "type": "string", + "value": "[reference('dc0').outputs.vmIPAddress.value]" + }, + "subnets": { + "type": "array", + "value": "[reference(resourceId('Microsoft.Resources/deployments', concat('sbn',add(parameters('numberOfSubnets'),-1)))).outputs.vnetSubnets.value]" + }, + "lenVnetSubnets": { + "type": "int", + "value": "[reference(resourceId('Microsoft.Resources/deployments', concat('sbn',add(parameters('numberOfSubnets'),-1)))).outputs.vnetLength.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT827 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT827 new file mode 100644 index 0000000..fd2e93e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT827 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/subnet-driven-deployment/confDomainMember.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962902006, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/confDomainMember.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT827", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT827", + "collection": "armtemplate", + "json": { + "contentVersion": "1.1.0.0", + "parameters": { + "indx": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Index to create multiple DCs. Index == 0 means it will be a new domain and a PDCE will be created" + } + }, + "computerName": { + "type": "string", + "defaultValue": "mbmr", + "metadata": { + "description": "Computer Name, will be suffixed by the indx" + } + }, + "domainJoinPassword": { + "type": "securestring", + "metadata": { + "description": "The password to join the domain" + } + }, + "domainName": { + "type": "string", + "defaultValue": "fabrikam.com", + "metadata": { + "description": "The FQDN of the AD Domain created " + } + }, + "OUPath": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Organizational unit for the domain" + } + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "srv-", + "metadata": { + "description": "Name of the vm, will be suffixed by the indx" + } + }, + "domainJoinUsername": { + "type": "string", + "defaultValue": "zeAdmin", + "metadata": { + "description": "The user to join the domain" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "dnsLabelPrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageCategory": { + "value": "Premium" + }, + "numberOfSubnets": { + "value": 4 + }, + "memberServersPerSubnet": { + "value": 1 + } + }, + "variables": { + "vmName": "srv-mbmr parameters('indx')" + }, + "resources": [ + { + "name": "srv-mbmr parameters('indx')/extensions", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "location", + "apiVersion": "2020-12-01", + "properties": { + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "typeHandlerVersion": "1.3", + "settings": { + "Name": "fabrikam.com", + "OUPath": "", + "User": "zeAdmin@fabrikam.com", + "Restart": true, + "Options": 3 + }, + "protectedSettings": { + "Password": "domainJoinPassword" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT828 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT828 new file mode 100644 index 0000000..bcb7167 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT828 @@ -0,0 +1,144 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/subnet-driven-deployment/ConfigDC.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962902015, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/ConfigDC.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT828", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT828", + "collection": "armtemplate", + "json": { + "contentVersion": "1.1.0.0", + "parameters": { + "indx": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "Index to create multiple DCs. Index == 0 means it will be a new domain and a PDCE will be created" + } + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "DC-" + }, + "adminUsername": { + "type": "string", + "defaultValue": "zeAdmin", + "metadata": { + "description": "Admin username" + }, + "value": "zeAdmin" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "domainName": { + "type": "string", + "defaultValue": "contoso.com", + "metadata": { + "description": "The FQDN of the AD Domain created " + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "computerName": { + "type": "string", + "defaultValue": "dc", + "metadata": { + "description": "Computer Name" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "dnsLabelPrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageCategory": { + "value": "Premium" + }, + "numberOfSubnets": { + "value": 4 + }, + "memberServersPerSubnet": { + "value": 1 + } + }, + "variables": { + "adConfigurationFunction": "CreateADC.ps1\\CreateADC_[mod(add(parameters('indx'),2),add(parameters('indx'),1))]", + "adModulesURL": "[uri(parameters('_artifactsLocation'), concat('CreateADC.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "dscFiletocall": "[mod(add(parameters('indx'),2),add(parameters('indx'),1))]", + "vmName": "DC-dc parameters('indx')" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "DC-dc parameters('indx')/CreateDCparameters('indx')", + "apiVersion": "2020-12-01", + "location": "location", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "wmfVersion": "4.0", + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('CreateADC.ps1.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "CreateADC.ps1\\CreateADC_[mod(add(parameters('indx'),2),add(parameters('indx'),1))]", + "Properties": { + "DomainName": "contoso.com", + "AdminCreds": { + "UserName": "zeAdmin", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT829 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT829 new file mode 100644 index 0000000..439e6f0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT829 @@ -0,0 +1,197 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/subnet-driven-deployment/LabSubnet.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962902028, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/LabSubnet.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT829", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT829", + "collection": "armtemplate", + "json": { + "contentVersion": "1.1.0.0", + "parameters": { + "labVNetPrefix": { + "type": "string", + "metadata": { + "description": "VNet prefix (CIDR)" + } + }, + "subnets": { + "type": "array", + "metadata": { + "description": "Array of subnets to be created" + } + }, + "dnsLabel": { + "type": "string", + "metadata": { + "description": "Unique public DNS label for the deployment. The fqdn will look something like '..cloudapp.azure.com'. Up to 62 chars, digits or dashes, lowercase, should start with a letter: must conform to '^[a-z][a-z0-9-]{1,61}[a-z0-9]$'." + } + }, + "vnetName": { + "type": "string", + "defaultValue": "labVNet", + "metadata": { + "description": "Virtual Network name" + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "PublicIP", + "metadata": { + "description": "Public address name, for lb configuration." + } + }, + "addedSubnetName": { + "type": "string", + "metadata": { + "description": "Name of the subnet to add" + } + }, + "addedSubnetPrefix": { + "type": "string", + "metadata": { + "description": "CIDR prefix of the subnet to add" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "dnsLabelPrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageCategory": { + "value": "Premium" + }, + "numberOfSubnets": { + "value": 4 + }, + "memberServersPerSubnet": { + "value": 1 + } + }, + "variables": { + "publicIPAddressName": "[uniqueString(resourceGroup().id, 'PublicIP')]", + "lbName": "[uniqueString(resourceGroup().id, 'labLB')]", + "sbn": [ + { + "name": "addedSubnetName", + "properties": { + "addressPrefix": "addedSubnetPrefix" + } + } + ] + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "name": "[uniqueString(resourceGroup().id, 'labLB')]", + "type": "Microsoft.Network/loadBalancers", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//PublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/PublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "PublicIP", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsLabel" + } + } + }, + { + "name": "labVNet", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//PublicIP" + ], + "tags": { + "displayName": "labVNet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "labVNetPrefix" + ] + }, + "subnets": "subnets[{'name': 'addedSubnetName', 'properties': {'addressPrefix': 'addedSubnetPrefix'}}]" + } + } + ], + "outputs": { + "vnetSubnets": { + "type": "array", + "value": "[reference(parameters('vnetName')).subnets]" + }, + "vnetLength": { + "type": "int", + "value": "[length(reference(parameters('vnetName')).subnets)]" + }, + "publicIPAddressName": { + "type": "string", + "value": "[variables('publicIPAddressName')]" + }, + "lbName": { + "type": "string", + "value": "[variables('lbName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT83 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT83 new file mode 100644 index 0000000..a40fa25 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT83 @@ -0,0 +1,312 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/master-node.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885722, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/master-node.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT83", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT83", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string", + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": { + "singleQuote": "'", + "masterIP": "networkSpec", + "workerIP": "networkSpec", + "vmName": "GEN-UNIQUE-10-mn", + "nicName": "GEN-UNIQUE-10-mn-nic", + "publicIPAddressName": "GEN-UNIQUE-10-mn-publicIP", + "storageAccountName": "storageAccount", + "securityGroupName": "GEN-UNIQUE-10-mn-sg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-10-mn-sg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-10-mn-publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "publicIPLoop", + "count": "vmCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10-mncopyIndex()" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-10-mn-niccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-mn-publicIPcopyIndex()", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-mn-sg" + ], + "copy": { + "name": "masterNodeNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(parameters('networkSpec').ipOctet01, add(parameters('networkSpec').ipOctet2, div(copyIndex(parameters('networkSpec').ipOctet3), 256)), '.', mod(copyIndex(parameters('networkSpec').ipOctet3), 256))]", + "subnet": { + "id": "vnetID/subnets/networkSpec" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-mn-publicIPcopyIndex()" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-mn-sg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "name": "GEN-UNIQUE-10-mncopyIndex()", + "plan": "vmSpec", + "location": "[resourceGroup().location]", + "copy": { + "name": "masterNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-mn-niccopyIndex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/vmSpec" + }, + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "[reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn]", + "adminUsername": "vmSpec", + "adminPassword": "vmSpec", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": "vmSpec", + "osDisk": { + "name": "GEN-UNIQUE-10-mncopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-10-mncopyIndex()_DataDisk1", + "diskSizeGB": 512, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-mncopyIndex()_DataDisk2", + "diskSizeGB": 512, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-mncopyIndex()_DataDisk3", + "diskSizeGB": 512, + "lun": 2, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-mncopyIndex()_DataDisk4", + "diskSizeGB": 512, + "lun": 3, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-mn-niccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-10-mncopyIndex()/prepareDisks", + "location": "[resourceGroup().location]", + "copy": { + "name": "nameNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10-mncopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/prepare-masternode-disks.sh", + "scriptsUri/scripts/initialize-node.sh" + ], + "commandToExecute": "[concat('sh initialize-node.sh ', variables('singleQuote'), variables('masterIP'), variables('singleQuote'), ' ', variables('singleQuote'), variables('workerIP'), variables('singleQuote'), ' ', variables('singleQuote'), parameters('dnsNamePrefix'), variables('singleQuote'), ' ', variables('singleQuote'), reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').masterNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').dataNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('vmSpec').adminUsername, variables('singleQuote'), ' ', 'masternode', ' >> /var/log/cloudera-azure-initialize.log 2>&1')]" + } + } + } + ], + "outputs": { + "fqdn": { + "type": "string", + "value": "[reference(concat(variables('publicIPAddressName'), '0')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT830 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT830 new file mode 100644 index 0000000..b96383c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT830 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/subnet-driven-deployment/SetVNetDNS.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962902040, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/SetVNetDNS.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT830", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT830", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "Description": "The name of the Virtual to change the DNS on" + } + }, + "virtualNetworkSubnets": { + "type": "array", + "metadata": { + "Description": "Subnets already created" + } + }, + "virtualNetworkAddressRanges": { + "type": "array", + "metadata": { + "Description": "The address ranges of the new VNET in CIDR format" + }, + "defaultValue": [ + "10.0.0.0/16" + ] + }, + "dnsServerAddresses": { + "type": "array", + "metadata": { + "Description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "dnsLabelPrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageCategory": { + "value": "Premium" + }, + "numberOfSubnets": { + "value": 4 + }, + "memberServersPerSubnet": { + "value": 1 + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-11-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": "virtualNetworkSubnets", + "dhcpOptions": { + "dnsServers": "dnsServerAddresses" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT831 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT831 new file mode 100644 index 0000000..6e100f9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT831 @@ -0,0 +1,88 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/subnet-driven-deployment/Storage.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962902052, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/Storage.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT831", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT831", + "collection": "armtemplate", + "json": { + "contentVersion": "1.1.0.0", + "parameters": { + "storageAccountSuffix": { + "type": "string", + "metadata": { + "description": "Suffix for the storage account" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "dnsLabelPrefix": { + "value": "GEN-UNIQUE-8" + }, + "adminUsername": { + "value": "zeAdmin" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "storageCategory": { + "value": "Premium" + }, + "numberOfSubnets": { + "value": 4 + }, + "memberServersPerSubnet": { + "value": 1 + } + }, + "variables": { + "storageName": "[concat(uniqueString(resourceGroup().id),parameters('storageAccountSuffix'))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageName')]", + "apiVersion": "2021-02-01", + "location": "location", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT832 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT832 new file mode 100644 index 0000000..b013c66 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT832 @@ -0,0 +1,352 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/subnet-driven-deployment/WinServ.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "timestamp": 1642962902062, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/subnet-driven-deployment/WinServ.json", + "/demos/subnet-driven-deployment/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT832", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/loadbalancers/inboundnatrules" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT832", + "collection": "armtemplate", + "json": { + "contentVersion": "1.2.0.0", + "parameters": { + "dDisks": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "Array of disks objects that can be added (see azuredeploy.json for the disk object content)" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "zeAdmin" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + }, + "availabilitySetName": { + "type": "string", + "defaultValue": "AVSet1", + "metadata": { + "description": "Availibility Set the VM will belong to" + } + }, + "computerName": { + "type": "string", + "defaultValue": "mbmr", + "metadata": { + "description": "Computer Name" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "Image Offer" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Image Publisher" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "Image SKU" + } + }, + "imageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "Image version, 'latest' by default (recommended)" + } + }, + "indx": { + "type": "int", + "defaultValue": 0, + "metadata": { + "description": "objects suffix to avoid name collisions" + } + }, + "lbName": { + "type": "string", + "defaultValue": "lbn", + "metadata": { + "description": "Front End load Balancer Name'." + } + }, + "natRulePrefix": { + "type": "string", + "defaultValue": "nr-", + "metadata": { + "description": "Prefix for Nat Rules." + } + }, + "nicNamePrefix": { + "type": "string", + "defaultValue": "nic-", + "metadata": { + "description": "Prefix for NICs." + } + }, + "publicStartRdpPort": { + "type": "int", + "defaultValue": 5500, + "metadata": { + "description": "Public port, for RDP remote connection. The value of indx parameter will be added" + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Storage to put the disk image on" + } + }, + "subnets": { + "type": "array", + "metadata": { + "description": "list of subnets where the VM will belong to" + } + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "srv-" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "VM Size, from // Get-AzureRoleSize | select instanceSize" + } + }, + "bootDiagnostics": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Activate boot diagnostics. MUST be set to false is premium storage option is used" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "dnsLabelPrefix": { + "value": "GEN-UNIQUE-8" + }, + "storageCategory": { + "value": "Premium" + }, + "numberOfSubnets": { + "value": 4 + }, + "memberServersPerSubnet": { + "value": 1 + } + }, + "variables": { + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/lbn/loadBalancerFrontend", + "natRuleName": "nr-mbmr parameters('indx')", + "inboundNatName": "lbn/nr-mbmr parameters('indx')", + "subnetIndex": "[mod(parameters('indx'),length(parameters('subnets')))]", + "subnetRef": "subnets)[variables(subnetIndex", + "vmName": "srv-mbmr parameters('indx')", + "nicName": "nic-mbmr parameters('indx')", + "rdpPort": "[add(parameters('publicStartRdpPort'), parameters('indx'))]" + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "lbn/nr-mbmr parameters('indx')", + "location": "location", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/lbn/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": "[add(parameters('publicStartRdpPort'), parameters('indx'))]", + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic-mbmr parameters('indx')", + "location": "location", + "dependsOn": [ + "Microsoft.Network/loadBalancers/inboundNatRules/lbn/nr-mbmr parameters('indx')" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "subnets)[variables(subnetIndex" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/lbn/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/lbn/nr-mbmr parameters('indx')" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "srv-mbmr parameters('indx')", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nic-mbmr parameters('indx')" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/AVSet1" + }, + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "mbmrparameters('indx')", + "adminUsername": "zeAdmin", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "osdisksrv-mbmr parameters('indx')", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nic-mbmr parameters('indx')" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": false, + "storageUri": "[concat('https://',parameters('storageAccountName'),'.blob.', environment().suffixes.storage)]" + } + } + }, + "resources": [ + { + "name": "srv-mbmr parameters('indx')/BgInfo", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "location", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//srv-mbmr parameters('indx')" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "BGInfo", + "typeHandlerVersion": "2.1", + "settings": { + "properties": [] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "srv-mbmr parameters('indx')/MyCustomScriptExtension", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//srv-mbmr parameters('indx')", + "Microsoft.Compute/virtualMachines/extensions/srv-mbmr parameters('indx')/BgInfo" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('start.ps1', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File start.ps1" + } + } + } + ] + } + ], + "outputs": { + "vmIPAddress": { + "type": "string", + "value": "[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT833 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT833 new file mode 100644 index 0000000..33b2cc7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT833 @@ -0,0 +1,322 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/symantec-extension-windows-vm/azuredeploy.json", + "/demos/symantec-extension-windows-vm/azuredeploy.parameters.json" + ], + "timestamp": 1642962902070, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/symantec-extension-windows-vm/azuredeploy.json", + "/demos/symantec-extension-windows-vm/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT833", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT833", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Type of the Storage Account" + } + }, + "publicIPAddressName": { + "type": "string", + "metadata": { + "description": "Public IP Address Name" + }, + "value": "GEN-UNIQUE" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic", + "allowedValues": [ + "Dynamic" + ], + "metadata": { + "description": "Public IP Address Type" + }, + "value": "Dynamic" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the VM" + }, + "value": "azureVM" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A0", + "metadata": { + "description": "Size of the VM" + }, + "value": "Standard_A2" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "Image SKU" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "VNET Name" + }, + "value": "azureVnet" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "VNET address space" + } + }, + "subnet1Name": { + "type": "string", + "defaultValue": "Subnet-1", + "metadata": { + "description": "Subnet 1 name" + } + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet 1 address space" + } + }, + "nicName": { + "type": "string", + "metadata": { + "description": "Name of the NIC" + }, + "value": "azureNic" + }, + "vmExtensionName": { + "type": "string", + "metadata": { + "description": "Extension name" + }, + "value": "malware" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniquestring(resourceGroup().id),'storage')]", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "azureVnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "azureNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE", + "Microsoft.Network/virtualNetworks//azureVnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//azureVnet/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "azureVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', parameters('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "azureVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "azureVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/azureNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "azureVM/malware", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//azureVM" + ], + "properties": { + "publisher": "Symantec", + "type": "SymantecEndpointProtection", + "typeHandlerVersion": "12.1" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT835 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT835 new file mode 100644 index 0000000..c9180c4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT835 @@ -0,0 +1,354 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/traffic-manager-application-gateway-demo-setup/nested/azuredeploywebserver.json" + ], + "timestamp": 1642962902095, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-application-gateway-demo-setup/nested/azuredeploywebserver.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT835", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT835", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "User name for the Web Server VM." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Web Server VM." + } + }, + "dnsNameForPublicIP": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Globally unique DNS Name for the Public IP used to access the Web Server VM." + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "allowedValues": [ + "14.04.5-LTS", + "16.04.0-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the Web Server VM. Allowed values: 14.04.5-LTS, 16.04.0-LTS" + } + }, + "testPage": { + "type": "string", + "defaultValue": "index.html", + "metadata": { + "description": "Test page you want to create on the Web Server." + } + }, + "testPageTitle": { + "type": "string", + "defaultValue": "Test Page", + "metadata": { + "description": "Test page title." + } + }, + "testPageBody": { + "type": "string", + "defaultValue": "

This is a test page.

", + "metadata": { + "description": "Test page content body markup." + } + }, + "installPHP": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Set to True to install PHP." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location of resources" + } + }, + "vmSize": { + "type": "string", + "allowedValues": [ + "Standard_D2s_v3" + ], + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "VM Size" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + } + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "[concat('webtestnic-', parameters('dnsNameForPublicIP'), '-', uniqueString(resourceGroup().id))]", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "vhdStorageType": "Standard_LRS", + "publicIPAddressType": "Dynamic", + "vmName": "[concat('webtestvm-', parameters('dnsNameForPublicIP'), '-', uniqueString(resourceGroup().id))]", + "virtualNetworkName": "[concat('webtestvnet-', uniqueString(resourceGroup().id, parameters('dnsNameForPublicIP')))]", + "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]", + "vhdStorageName": "[concat('webtestvhd', uniqueString(resourceGroup().id, parameters('dnsNameForPublicIP')))]", + "singleQuote": "'", + "frontEndNSGName": "[concat('webtestnsg-', uniqueString(resourceGroup().id, parameters('dnsNameForPublicIP')))]", + "testPageMarkup": "Test Page

This is a test page.

" + }, + "outputs": { + "fqdn": { + "type": "string", + "value": "[reference(parameters('dnsNameForPublicIP')).dnsSettings.fqdn]" + }, + "ipId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('dnsNameForPublicIP'))]" + }, + "pageContent": { + "type": "string", + "value": "[variables('testPageMarkup')]" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('vhdStorageName')]", + "apiVersion": "2021-01-01", + "location": "location", + "tags": { + "displayName": "StorageAccount" + }, + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "dnsNameForPublicIP", + "location": "location", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNameForPublicIP" + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "location", + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('frontEndNSGName')]", + "location": "location", + "tags": { + "displayName": "NSG - Web Server" + }, + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow Web", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "location": "location", + "tags": { + "displayName": "NetworkInterface" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', parameters('dnsNameForPublicIP'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('frontEndNSGName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dnsNameForPublicIP" + }, + "subnet": { + "id": "[variables('subnetRef')]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('frontEndNSGName'))]" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "[variables('vmName')]", + "location": "location", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('vhdStorageName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "[concat(variables('vmName'),'_OSDisk')]", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" + } + ] + } + }, + "resources": [ + { + "name": "PrepareServer", + "type": "extensions", + "location": "location", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines/', variables('vmName'))]" + ], + "tags": { + "displayName": "PrepareServer" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/prepwebserver.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('sh prepwebserver.sh', ' ', string(parameters('installPHP')), ' ', variables('singleQuote'), variables('testPageMarkup'), variables('singleQuote'), ' ', parameters('testPage'), ' ', variables('singleQuote'), parameters('ubuntuOSVersion'), variables('singleQuote'))]" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT838 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT838 new file mode 100644 index 0000000..9214cde --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT838 @@ -0,0 +1,333 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/traffic-manager-demo-setup/nested/azuredeploywebserver.json" + ], + "timestamp": 1642962902124, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/traffic-manager-demo-setup/nested/azuredeploywebserver.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT838", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT838", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "User name for the Web Server VM." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Web Server VM." + } + }, + "dnsNameForPublicIP": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Globally unique DNS Name for the Public IP used to access the Web Server VM." + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "allowedValues": [ + "14.04.5-LTS", + "16.04.0-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the Web Server VM. Allowed values: 14.04.5-LTS, 16.04.0-LTS" + } + }, + "testPage": { + "type": "string", + "defaultValue": "index.html", + "metadata": { + "description": "Test page you want to create on the Web Server." + } + }, + "testPageTitle": { + "type": "string", + "defaultValue": "Test Page", + "metadata": { + "description": "Test page title." + } + }, + "testPageBody": { + "type": "string", + "defaultValue": "

This is a test page.

", + "metadata": { + "description": "Test page content body markup." + } + }, + "installPHP": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Set to True to install PHP." + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location of resources" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located." + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "vmSize": { + "type": "string" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "webtestnic-dnsNameForPublicIP", + "addressPrefix": "10.0.0.0/16", + "subnetName": "default", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "vmName": "webtestvm-dnsNameForPublicIP", + "virtualNetworkName": "webtestvnet-dnsNameForPublicIP", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/webtestvnet-dnsNameForPublicIP/default", + "singleQuote": "'", + "frontEndNSGName": "webtestnsg-dnsNameForPublicIP", + "testPageMarkup": "Test Page

This is a test page.

", + "scriptFolder": "scripts", + "serverPrepareScriptFileName": "prepwebserver.sh" + }, + "resources": [ + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "dnsNameForPublicIP", + "location": "location", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNameForPublicIP" + } + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "webtestvnet-dnsNameForPublicIP", + "location": "location", + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "webtestnsg-dnsNameForPublicIP", + "location": "location", + "tags": { + "displayName": "NSG - Web Server" + }, + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "web-rule", + "properties": { + "description": "Allow Web", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "webtestnic-dnsNameForPublicIP", + "location": "location", + "tags": { + "displayName": "NetworkInterface" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/dnsNameForPublicIP", + "Microsoft.Network/virtualNetworks/webtestvnet-dnsNameForPublicIP", + "Microsoft.Network/networkSecurityGroups/webtestnsg-dnsNameForPublicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dnsNameForPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/webtestvnet-dnsNameForPublicIP/default" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/webtestnsg-dnsNameForPublicIP" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "webtestvm-dnsNameForPublicIP", + "location": "location", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/webtestnic-dnsNameForPublicIP" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "webtestvm-dnsNameForPublicIP", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/webtestnic-dnsNameForPublicIP" + } + ] + } + }, + "resources": [ + { + "name": "PrepareServer", + "type": "extensions", + "location": "location", + "apiVersion": "2019-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/webtestvm-dnsNameForPublicIP" + ], + "tags": { + "displayName": "PrepareServer" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptFolder'), '/', variables('serverPrepareScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "[concat('sh prepwebserver.sh', ' ', string(parameters('installPHP')), ' ', variables('singleQuote'), variables('testPageMarkup'), variables('singleQuote'), ' ', parameters('testPage'), ' ', variables('singleQuote'), parameters('ubuntuOSVersion'), variables('singleQuote'))]" + } + } + } + ] + } + ], + "outputs": { + "fqdn": { + "type": "string", + "value": "[reference(parameters('dnsNameForPublicIP')).dnsSettings.fqdn]" + }, + "ipId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('dnsNameForPublicIP'))]" + }, + "pageContent": { + "type": "string", + "value": "[variables('testPageMarkup')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT84 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT84 new file mode 100644 index 0000000..5512117 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT84 @@ -0,0 +1,160 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/setup-cloudera.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885767, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/setup-cloudera.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT84", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT84", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string", + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "type": "string" + }, + "vmSpec": { + "type": "object" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "fqdn": { + "type": "string" + }, + "cmUsername": { + "type": "string" + }, + "cmPassword": { + "type": "securestring", + "value": "GEN-PASSWORD" + }, + "company": { + "type": "string", + "value": "company" + }, + "emailAddress": { + "type": "string", + "value": "email@yourcompany.com" + }, + "businessPhone": { + "type": "string", + "value": "123456789" + }, + "firstName": { + "type": "string", + "value": "FirstName" + }, + "lastName": { + "type": "string", + "value": "LastName" + }, + "jobRole": { + "type": "string", + "value": "Administrator" + }, + "jobFunction": { + "type": "string", + "value": "Storage" + }, + "installCDH": { + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + } + }, + "variables": { + "singleQuote": "'", + "masterIP": "networkSpec", + "workerIP": "networkSpec" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-10-mn0/prepareDisks", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/bootstrap-cloudera.sh", + "scriptsUri/scripts/initialize-cloudera-server.sh", + "scriptsUri/scripts/cmxDeployOnIbiza.py", + "scriptsUri/scripts/install-postgresql.sh" + ] + }, + "protectedSettings": { + "commandToExecute": "sh bootstrap-cloudera.sh 'networkSpec' 'networkSpec' 'GEN-UNIQUE-10' 'fqdn' 'clusterSpec' 'clusterSpec' 'vmSpec' 'clusterSpec' 'vmSpec' 'cmUsername' 'GEN-PASSWORD' 'email@yourcompany.com' '123456789' 'FirstName' 'LastName' 'Administrator' 'Storage' 'company' 'installCDH' 'vmSpec' >> /var/log/cloudera-azure-initialize.log 2>&1" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT841 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT841 new file mode 100644 index 0000000..a681adb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT841 @@ -0,0 +1,357 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/two-tier-nodejsapp-migration-to-containers-on-azure/azuredeploy.json", + "/demos/two-tier-nodejsapp-migration-to-containers-on-azure/azuredeploy.parameters.json" + ], + "timestamp": 1642962902151, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/two-tier-nodejsapp-migration-to-containers-on-azure/azuredeploy.json", + "/demos/two-tier-nodejsapp-migration-to-containers-on-azure/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT841", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT841", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualMachineName": { + "type": "string", + "metadata": { + "description": "Name for the Virtual Machine." + }, + "value": "GEN-UNIQUE-10" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "appGitLocation": { + "type": "string", + "metadata": { + "description": "The Git Url of the app" + }, + "defaultValue": "https://github.com/evillgenius75/gbb-todo" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_F1", + "metadata": { + "description": "Default VM Size" + } + } + }, + "variables": { + "nicName": "nicCard", + "publicIPAddressName": "publicIP", + "publicIPAddressType": "Dynamic", + "nsgName": "nsg", + "virtualNetworkName": "vnet", + "newStorageAccountName": "[concat('storage',uniqueString(resourceGroup().id))]", + "dnsNameForPublicIP": "[concat('pip',uniqueString(resourceGroup().id))]", + "customExtensionScriptFileName": "mongo_nodejs.sh", + "todoAppTags": { + "provider": "NA" + }, + "quickstartTags": { + "name": "todoApp" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('newStorageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Storage Account", + "quickstartName": "(quickstartTags).name", + "provider": "(todoAppTags).provider" + }, + "kind": "Storage", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Public IP", + "quickstartName": "(quickstartTags).name", + "provider": "(todoAppTags).provider" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('dnsNameForPublicIP')]" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "nsg", + "apiVersion": "2020-07-01", + "location": "[resourceGroup().location]", + "comments": "NSG for Subnet", + "tags": { + "displayName": "Network Security Group", + "quickstartName": "(quickstartTags).name", + "provider": "(todoAppTags).provider" + }, + "properties": { + "securityRules": [ + { + "name": "SSH-allow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "10.0.0.0/16", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Nodejs-allow", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8080", + "destinationAddressPrefix": "10.0.0.0/16", + "sourceAddressPrefix": "Internet", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups//nsg" + ], + "tags": { + "displayName": "Virtual Network", + "quickstartName": "(quickstartTags).name", + "provider": "(todoAppTags).provider" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicCard", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//publicIP", + "Microsoft.Network/virtualNetworks//vnet" + ], + "tags": { + "displayName": "Network Interface Card", + "quickstartName": "(quickstartTags).name", + "provider": "(todoAppTags).provider" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//vnet/subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE-10", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('newStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "tags": { + "displayName": "Virtual Machine", + "quickstartName": "(quickstartTags).name", + "provider": "(todoAppTags).provider" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_F1" + }, + "osProfile": { + "computerName": "GEN-UNIQUE-10", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "name": "GEN-UNIQUE-10_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicCard" + } + ] + } + }, + "resources": [ + { + "name": "customExtension", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10" + ], + "tags": { + "displayName": "customExtension" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'),concat('scripts/',variables('customExtensionScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sh mongo_nodejs.sh https://github.com/evillgenius75/gbb-todo" + } + } + } + ] + } + ], + "outputs": { + "adminUsername": { + "type": "string", + "value": "[parameters('adminUsername')]" + }, + "publicIP": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))).dnsSettings.fqdn]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT842 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT842 new file mode 100644 index 0000000..10b30ea --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT842 @@ -0,0 +1,357 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ubuntu-desktop-gnome/azuredeploy.json", + "/demos/ubuntu-desktop-gnome/azuredeploy.parameters.json" + ], + "timestamp": 1642962902157, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ubuntu-desktop-gnome/azuredeploy.json", + "/demos/ubuntu-desktop-gnome/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT842", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT842", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name Prefix for the Storage Account where the Virtual Machine's disks will be placed. StorageAccounts may contain at most variables('vmsPerStorageAccount')" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE-8" + }, + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The VM role size of the jump box" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "vmName": "jumpbox", + "availabilitySetNodes": "avail-set", + "osImagePublisher": "Canonical", + "osImageOffer": "UbuntuServer", + "osImageSKU": "18.04-LTS", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "customScriptLocation": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/ubuntu-desktop-gnome/", + "wgetCommandPrefix": "wget --tries 20 --retry-connrefused --waitretry=15 -qO- https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/ubuntu-desktop-gnome/configure-ubuntu.sh | nohup /bin/bash -s ", + "wgetCommandPostfix": " > /var/log/azure/firstinstall.log 2>&1 &'", + "commandPrefix": "/bin/bash -c '", + "virtualNetworkName": "VNET", + "subnetName": "Subnet", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "nsgName": "node-nsg", + "nsgID": "Microsoft.Network/networkSecurityGroups/node-nsg", + "storageAccountType": "Standard_LRS", + "nodesLbName": "nodeslb", + "nodesLbBackendPoolName": "node-pool", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE-8/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "avail-set", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "VNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/node-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/node-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "node-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "ssh", + "properties": { + "description": "SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpbox-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/loadBalancers//nodeslb", + "Microsoft.Network/virtualNetworks//VNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(split(variables('subnetPrefix'),'0/24')[0], '100')]", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/VNET/Subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/nodeslb/node-pool" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/nodeslb/SSH-jumpbox" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "nodeslb", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "NodesLBFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "node-pool" + } + ], + "inboundNatRules": [ + { + "name": "SSH-jumpbox", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/nodeslb/NodesLBFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 22, + "backendPort": 22, + "enableFloatingIP": false + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpbox", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//jumpbox-nic", + "Microsoft.Compute/availabilitySets//avail-set" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/avail-set" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "jumpbox", + "adminUsername": "GEN-UNIQUE-8", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "jumpbox_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpbox-nic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "jumpbox/configuremaster", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//jumpbox" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "commandToExecute": "/bin/bash -c 'wget --tries 20 --retry-connrefused --waitretry=15 -qO- https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/ubuntu-desktop-gnome/configure-ubuntu.sh | nohup /bin/bash -s GEN-UNIQUE-8 > /var/log/azure/firstinstall.log 2>&1 &'" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT843 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT843 new file mode 100644 index 0000000..a0ca914 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT843 @@ -0,0 +1,287 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ubuntu-desktop-gnome-rdp/azuredeploy.json", + "/demos/ubuntu-desktop-gnome-rdp/azuredeploy.parameters.json" + ], + "timestamp": 1642962902163, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ubuntu-desktop-gnome-rdp/azuredeploy.json", + "/demos/ubuntu-desktop-gnome-rdp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT843", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT843", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Machine" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "The size of the virtual machines used when provisioning" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "18.04-LTS", + "allowedValues": [ + "18.04-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.5-LTS, 15.10." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "nsgName": "myNSG", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "virtualNetworkName": "MyVNET", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET", + "Microsoft.Network/networkSecurityGroups/myNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/myNSG" + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-08-01", + "name": "myNSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "RDP", + "properties": { + "protocol": "TCP", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 320, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "osType": "Linux", + "name": "GEN-UNIQUE_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/installscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('install_xrdp.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash install_xrdp.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT844 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT844 new file mode 100644 index 0000000..32634f6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT844 @@ -0,0 +1,312 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ubuntu-desktop-xfce-rdp/azuredeploy.json", + "/demos/ubuntu-desktop-xfce-rdp/azuredeploy.parameters.json" + ], + "timestamp": 1642962902169, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ubuntu-desktop-xfce-rdp/azuredeploy.json", + "/demos/ubuntu-desktop-xfce-rdp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT844", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT844", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "DNS Name for the publicly accessible node. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "allowedValues": [ + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3" + ], + "metadata": { + "description": "The size of the virtual machines used when provisioning" + } + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "14.04.5-LTS", + "allowedValues": [ + "12.04.5-LTS", + "14.04.5-LTS", + "15.10" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values: 12.04.5-LTS, 14.04.5-LTS, 15.10." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyubuntuVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + }, + { + "name": "default-allow-3389", + "properties": { + "priority": 1001, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP", + "Microsoft.Network/virtualNetworks/MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyubuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "MyubuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "MyubuntuVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyubuntuVM/newuserscript", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/MyubuntuVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_xrdp.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "bash install_xrdp.sh" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT845 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT845 new file mode 100644 index 0000000..a3995b2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT845 @@ -0,0 +1,323 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/ubuntu-netdisk-setup/azuredeploy.json", + "/demos/ubuntu-netdisk-setup/azuredeploy.parameters.json" + ], + "timestamp": 1642962902178, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/ubuntu-netdisk-setup/azuredeploy.json", + "/demos/ubuntu-netdisk-setup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT845", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT845", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "sshKeyData": { + "type": "string", + "metadata": { + "description": "Please copy the content of your SSH RSA public key and paste it here. You can use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "ubuntuOSVersion": { + "type": "string", + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version." + }, + "value": "16.04-LTS" + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "VM size." + }, + "value": "Standard_D2s_v3" + }, + "adminEmail": { + "type": "string", + "metadata": { + "description": "admin_email is used to login seafile server, i.e. admin@seafile.local" + }, + "value": "test@email.com" + }, + "adminPass": { + "type": "securestring", + "metadata": { + "description": "admin_pass is optional, if you do not specify it, a random string is generated" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation. Leave it blank unless you need to provide your own value." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "myVMNic1", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyUbuntuVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "sshKeyPath": "/home/GEN-UNIQUE/.ssh/authorized_keys" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/mysg" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "mysg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "port80", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ], + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic1" + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyUbuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic1" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "MyUbuntuVM", + "adminUsername": "GEN-UNIQUE", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty", + "caching": "ReadWrite" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic1" + } + ] + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyUbuntuVM/CustomScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/MyUbuntuVM" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('script/install.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "[concat('export TERM=xterm && bash ', 'install.sh -u ', parameters('adminEmail'), ' -d ', reference(variables('publicIPAddressName')).dnsSettings.fqdn, ' -p \"', parameters('adminPass'), '\"')]" + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + }, + "sshCommand": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('publicIPAddressName')).dnsSettings.fqdn)]" + }, + "extensionOutput": { + "type": "string", + "value": "[reference('Microsoft.Compute/virtualMachines/MyUbuntuVM/extensions/CustomScript').instanceView.statuses[0].message]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT846 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT846 new file mode 100644 index 0000000..356dca1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT846 @@ -0,0 +1,331 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vm-32-data-disks-high-iops/azuredeploy.json", + "/demos/vm-32-data-disks-high-iops/azuredeploy.parameters.json" + ], + "timestamp": 1642962902186, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-32-data-disks-high-iops/azuredeploy.json", + "/demos/vm-32-data-disks-high-iops/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT846", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT846", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The username of the initial account to be created" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password of the initial account to be created" + }, + "value": "GEN-PASSWORD" + }, + "sizeOfEachDataDiskInGB": { + "type": "int", + "defaultValue": 1024, + "allowedValues": [ + 32, + 64, + 128, + 256, + 512, + 1024, + 2048, + 4095 + ], + "metadata": { + "description": "The size of the datadisks to be striped. The total capacity will be this size multiplied by the number of data disks you specify." + } + }, + "numberOfDisks": { + "type": "int", + "defaultValue": 32, + "allowedValues": [ + 8, + 16, + 32 + ], + "metadata": { + "description": "The number of data disks to include in the storage pool." + } + }, + "dnsName": { + "type": "string", + "defaultValue": "[concat('vm-data-disks-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "DNS name for the Public IP" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D16s_v3", + "allowedValues": [ + "Standard_D16s_v3", + "Standard_D32s_v3", + "Standard_D64s_v3" + ], + "metadata": { + "description": "VM Size, the list of sizes here all support premium and standard storage up to 32 data disks." + } + }, + "storageType": { + "type": "string", + "defaultValue": "Premium_LRS", + "allowedValues": [ + "Premium_LRS", + "StahdardSSD_LRS", + "Standard_LRS" + ], + "metadata": { + "description": "Storage SKU type" + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + } + }, + "variables": { + "vmName": "vm-high-iops", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "imageSKU": "2016-Datacenter", + "virtualNetworkName": "highIopsVNET", + "nicName": "highIopsNIC", + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressName": "highIopsPubIP", + "publicIPAddressType": "Dynamic", + "configurationFunction": "StoragePool.ps1\\StoragePool", + "modulesUrl": "[uri(parameters('_artifactsLocation'), 'DSC/StoragePool.zip')]", + "DscExtensionName": "DscExtension", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/highIopsVNET/Subnet-1", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "highIopsPubIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[concat('vm-data-disks-', uniqueString(resourceGroup().id))]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2018-04-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "highIopsVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2018-04-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "highIopsNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "highIopsPubIP", + "highIopsVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/highIopsPubIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/highIopsVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "vm-high-iops", + "location": "[resourceGroup().location]", + "dependsOn": [ + "highIopsNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D16s_v3" + }, + "osProfile": { + "computerName": "vm-high-iops", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "copy": [ + { + "name": "dataDisks", + "count": 32, + "input": { + "diskSizeGB": 1024, + "lun": "[copyIndex('dataDisks')]", + "name": "[concat(variables('vmName'), '_DataDisk', copyIndex('dataDisks'))]", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/highIopsNIC" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vm-high-iops/DscExtension", + "apiVersion": "2017-03-30", + "location": "[resourceGroup().location]", + "dependsOn": [ + "vm-high-iops" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), 'DSC/StoragePool.zip')]", + "SasToken": "", + "ConfigurationFunction": "StoragePool.ps1\\StoragePool", + "Properties": { + "MachineName": "vm-high-iops" + } + } + } + } + ], + "outputs": { + "fqdn": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT847 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT847 new file mode 100644 index 0000000..7c578c0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT847 @@ -0,0 +1,321 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vm-cpu-sysbench-meter/azuredeploy.json", + "/demos/vm-cpu-sysbench-meter/azuredeploy.parameters.json" + ], + "timestamp": 1642962902193, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-cpu-sysbench-meter/azuredeploy.json", + "/demos/vm-cpu-sysbench-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT847", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT847", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM that runs the test." + } + }, + "maxPrimeNumberForTest": { + "type": "int", + "defaultValue": 20000, + "metadata": { + "description": "Limit for for prime number test." + } + }, + "threadsToRunTest": { + "type": "int", + "defaultValue": 4, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of threads for the test to run." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the test VMs." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "osVersion": "14.04.5-LTS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "testVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "publicIP", + "virtualNetworkName": "testVNET", + "vhdStorageAccountName": "[concat(uniqueString(resourceGroup().id), 'storage')]", + "frontEndNSGName": "[concat('webtestnsg-', uniqueString(resourceGroup().id))]", + "vmName": "testVM", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('vhdStorageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "testVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "testVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "publicIP", + "testVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/testVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('frontEndNSGName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG" + }, + "dependsOn": [ + "publicIP" + ], + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "testVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[variables('vhdStorageAccountName')]", + "[variables('nicName')]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "testVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.5-LTS", + "version": "latest" + }, + "osDisk": { + "name": "testVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/testVMNic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "CustomScriptExtension", + "apiVersion": "2020-12-01", + "dependsOn": [ + "testVM" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.5", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/cputest.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sudo bash cputest.sh 4 20000" + } + } + } + ] + } + ], + "outputs": { + "totaltime": { + "type": "string", + "value": "[split(split(reference('CustomScriptExtension').instanceView.statuses[0].message, '\n')[2], ' ')[0]]" + }, + "perrequestmin": { + "type": "string", + "value": "[split(split(reference('CustomScriptExtension').instanceView.statuses[0].message, '\n')[2], ' ')[1]]" + }, + "perrequestavg": { + "type": "string", + "value": "[split(split(reference('CustomScriptExtension').instanceView.statuses[0].message, '\n')[2], ' ')[2]]" + }, + "perrequestmax": { + "type": "string", + "value": "[split(split(reference('CustomScriptExtension').instanceView.statuses[0].message, '\n')[2], ' ')[3]]" + }, + "perrequest95percentile": { + "type": "string", + "value": "[split(split(reference('CustomScriptExtension').instanceView.statuses[0].message, '\n')[2], ' ')[4]]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT848 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT848 new file mode 100644 index 0000000..fbed064 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT848 @@ -0,0 +1,257 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vm-cse-msi/azuredeploy.json", + "/demos/vm-cse-msi/azuredeploy.parameters.json" + ], + "timestamp": 1642962902201, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-cse-msi/azuredeploy.json", + "/demos/vm-cse-msi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT848", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT848", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.451.19169", + "templateHash": "4363912042809833013" + } + }, + "parameters": { + "adminUsername": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A4_v2", + "metadata": { + "description": "Size of the virtual machine" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "fileUris": { + "type": "array", + "metadata": { + "description": "An array of fileUris to download via the custom script extension" + }, + "value": "GEN-PRIVATE-STORAGE-ARTIFACTS" + }, + "identityName": { + "type": "string", + "metadata": { + "description": "name for the managedIdenity to use for custom script download, the principal must have at least storage blob reader permission on the storage account, roleDef: 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1" + }, + "value": "GEN-USER-ASSIGNED-IDENTITY-NAME" + }, + "identityResourceGroup": { + "type": "string", + "metadata": { + "description": "resourceGroup for the managedIdenity to use for custom script download" + }, + "value": "GEN-USER-ASSIGNED-IDENTITY-RESOURCEGROUP-NAME" + }, + "alwaysRun": { + "type": "string", + "defaultValue": "[newGuid()]", + "metadata": { + "description": "For the sample, use this to ensure the extension will always execute." + } + } + }, + "functions": [], + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "windowsOSVersion": "2019-Datacenter", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyWindowsVM", + "virtualNetworkName": "MyVNET" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-02-01", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-02-01", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-04-01", + "name": "MyWindowsVM", + "location": "[resourceGroup().location]", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('identityResourceGroup')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identityName'))]": {} + } + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A4_v2" + }, + "osProfile": { + "computerName": "MyWindowsVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/myVMNic" + ] + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-04-01", + "name": "[format('{0}/{1}', variables('vmName'), 'cse')]", + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.10", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "[newGuid()]", + "settings": { + "fileUris": "GEN-PRIVATE-STORAGE-ARTIFACTS", + "commandToExecute": "powershell -Command \"ls\"" + }, + "protectedSettings": { + "managedIdentity": { + "object": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('identityResourceGroup')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identityName')), '2018-11-30').principalId]" + } + } + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/MyWindowsVM" + ] + } + ], + "outputs": { + "msiObjectId": { + "type": "string", + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('identityResourceGroup')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('identityName')), '2018-11-30').principalId]" + }, + "instanceView": { + "type": "object", + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines/extensions', variables('vmName'), 'cse')).instanceView]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT849 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT849 new file mode 100644 index 0000000..8a69f30 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT849 @@ -0,0 +1,379 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vm-disk-performance-meter/azuredeploy.json", + "/demos/vm-disk-performance-meter/azuredeploy.parameters.json" + ], + "timestamp": 1642962902209, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-disk-performance-meter/azuredeploy.json", + "/demos/vm-disk-performance-meter/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT849", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT849", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM that runs the test." + } + }, + "dataDiskStorageAccountType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS", + "StandardSSD_LRS", + "UltraSSD_LRS" + ], + "metadata": { + "description": "Storage Account type for the test disk" + } + }, + "dataDiskHostCaching": { + "type": "string", + "defaultValue": "ReadOnly", + "allowedValues": [ + "None", + "ReadOnly", + "ReadWrite" + ], + "metadata": { + "description": "Data disk caching type for the test disk" + } + }, + "testType": { + "type": "string", + "allowedValues": [ + "read", + "write", + "randread", + "randwrite", + "randtrim", + "rw", + "readwrite", + "randrw" + ], + "defaultValue": "randread", + "metadata": { + "description": "Disk test type to run. (rand: random, sequential otherwise; rw - read/write)" + } + }, + "testSize": { + "type": "string", + "allowedValues": [ + "32m", + "64m", + "128m", + "256m", + "512m", + "1g", + "2g", + "10g", + "30g" + ], + "defaultValue": "1g", + "metadata": { + "description": "Size of the file to test." + } + }, + "testBlockSize": { + "type": "string", + "allowedValues": [ + "4k", + "8k", + "16k", + "32k", + "64k" + ], + "defaultValue": "8k", + "metadata": { + "description": "Size of the block to test." + } + }, + "secondsToRunTest": { + "type": "int", + "defaultValue": 30, + "metadata": { + "description": "Number of seconds for the test to run." + } + }, + "threadsToRunTest": { + "type": "int", + "defaultValue": 4, + "minValue": 1, + "maxValue": 10, + "metadata": { + "description": "Number of worker threads for the test to run." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the test VMs." + }, + "value": "GEN-UNIQUE" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "password", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-PASSWORD" + } + }, + "variables": { + "osVersion": "18.04-LTS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "nicName": "testVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "publicIP", + "virtualNetworkName": "testVNET", + "scriptFolder": "scripts", + "frontEndNSGName": "[concat('webtestnsg-', uniqueString(resourceGroup().id))]", + "vmName": "testVM", + "testScriptFileName": "disktest.sh", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-PASSWORD" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "testVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "testVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "publicIP", + "testVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/testVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('frontEndNSGName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NSG" + }, + "dependsOn": [ + "publicIP" + ], + "properties": { + "securityRules": [ + { + "name": "ssh-rule", + "properties": { + "description": "Allow SSH", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "testVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "testVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "testVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "testVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "testVM_DataDisk", + "diskSizeGB": 1023, + "lun": 0, + "caching": "ReadOnly", + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/testVMNic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "name": "CustomScriptExtension", + "apiVersion": "2019-12-01", + "dependsOn": [ + "testVM" + ], + "location": "[resourceGroup().location]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.5", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat(variables('scriptFolder'), '/', variables('testScriptFileName'), parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "sudo bash disktest.sh 1g randread 30 4 8k" + } + } + } + ] + } + ], + "outputs": { + "testresult": { + "type": "string", + "value": "[trim(split(reference('CustomScriptExtension').instanceView.statuses[0].message, '\n')[2])]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT85 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT85 new file mode 100644 index 0000000..dcd0d26 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT85 @@ -0,0 +1,163 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/shared-resources-existing-vnet.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885784, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/shared-resources-existing-vnet.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT85", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT85", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "resourceAPIVersion": { + "type": "string" + }, + "networkSpec": { + "type": "object" + }, + "masterNodeASName": { + "type": "string" + }, + "dataNodeASName": { + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2017-12-01", + "name": "masterNodeASName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2017-12-01", + "name": "dataNodeASName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "networkSpec-sg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT853 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT853 new file mode 100644 index 0000000..aeb4591 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT853 @@ -0,0 +1,419 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vm-win-iis-app-ssl/azuredeploy.json", + "/demos/vm-win-iis-app-ssl/azuredeploy.parameters.json" + ], + "timestamp": 1642962902254, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-win-iis-app-ssl/azuredeploy.json", + "/demos/vm-win-iis-app-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT853", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT853", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appVMName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Set this value for the VM name" + }, + "value": " e.g. myTestVM1" + }, + "appVMAdminUserName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Set this value for the VM admin user name" + }, + "value": " e.g. adminuser " + }, + "appVMAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Set this value for the VM admin user password" + } + }, + "appVMWindowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "Windows-Server-Technical-Preview" + ], + "metadata": { + "description": "Set this value for the VM Windows OS Version" + } + }, + "appPublicIPDnsName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Set this value for the dns name of the public ip" + }, + "value": " e.g. mytestvmdns" + }, + "appDSCUpdateTagVersion": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "This value must be changed from a previous deployment to ensure the extension will run" + } + }, + "appWebPackage": { + "type": "string", + "defaultValue": "https://computeteststore.blob.core.windows.net/deploypackage/deployPackage.zip?sv=2015-04-05&ss=bfqt&srt=sco&sp=r&se=2099-10-16T02:03:39Z&st=2016-10-15T18:03:39Z&spr=https&sig=aSH6yNPEGPWXk6PxTPzS6fyEXMD1ZYIkI0j5E9Hu5%2Fk%3D", + "metadata": { + "description": "Set this value for the signed uri to download the deployment package" + } + }, + "appVMVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D5" + ], + "metadata": { + "description": "Set this value for the VM size" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "Auto-generated container in staging storage account to receive post-build staging folder upload" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + } + }, + "vaultName": { + "type": "string", + "metadata": { + "description": "The Azure Key vault where SSL certificates are stored" + }, + "value": " e.g. myKeyVault" + }, + "vaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group of the key vault" + }, + "value": " e.g. myKeyVault-rg" + }, + "httpssecretUrlWithVersion": { + "type": "string", + "metadata": { + "description": "full Key Vault Id to the secret that stores the SSL cert" + }, + "value": " e.g. https://mykeyvault.vault.azure.net/secrets/myPfxCert2/11f95456772549a2b6b0ba38bd1b319a" + }, + "httpssecretCaUrlWithVersion": { + "type": "string", + "metadata": { + "description": "full Key Vault Id to the secret that stores the CA cert" + }, + "value": " e.g. https://mykeyvault.vault.azure.net/secrets/myPfxCert2/11f95456772549a2b6b0ba38bd1b319a" + }, + "certificateStore": { + "type": "string", + "metadata": { + "description": "name of the certificate key secret" + }, + "value": " e.g. myPfxCert2" + }, + "certificateDomain": { + "type": "string", + "metadata": { + "description": "name of the domain the certificate is created for" + }, + "value": " e.g. www.mycompany.com for wildcard use *.mycompany.com" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "appVnetPrefix": "10.0.0.0/16", + "appVnetSubnet1Name": "FrontEndSubNet", + "appVnetSubnet1Prefix": "10.0.0.0/24", + "appVnetSubnet2Name": "DatabaseSubNet", + "appVnetSubnet2Prefix": "10.0.1.0/24", + "appVMImagePublisher": "MicrosoftWindowsServer", + "appVMImageOffer": "WindowsServer", + "appVMVmSize": "Standard_D2_v3", + "appVMVnetID": "Microsoft.Network/virtualNetworks/appVnet", + "appVMSubnetRef": "appVMresourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), variables('appVMVnetID'), '/subnets/', variables('appVnetSubnet1Name'))]", + "appVMNicName": " e.g. myTestVM1NetworkInterface", + "appPublicIPName": "appPublicIP", + "appDSCArchiveFolder": "dsc", + "appDSCArchiveFileName": "appDSC.zip", + "appDSCSqlArchiveFolder": "dsc", + "appDSCSqlArchiveFileName": "appDSCSql.zip" + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "appNetworkSecurityGroup", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "webrule", + "properties": { + "description": "This rule allows traffic in on port 80", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "INTERNET", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "httpsrule", + "properties": { + "description": "This rule allows traffic in on port 443", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "INTERNET", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "rdprule", + "properties": { + "description": "This rule allows traffic on port 3389 from the web", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "INTERNET", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "appVnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/appNetworkSecurityGroup" + ], + "tags": { + "displayName": "appVnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "FrontEndSubNet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/appNetworkSecurityGroup" + } + } + }, + { + "name": "DatabaseSubNet", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + }, + { + "name": " e.g. myTestVM1NetworkInterface", + "type": "Microsoft.Network/networkInterfaces", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/appVnet", + "Microsoft.Network/publicIPAddresses/appPublicIP" + ], + "tags": { + "displayName": "appVMNic" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "appVMresourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), variables('appVMVnetID'), '/subnets/', variables('appVnetSubnet1Name'))]" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/appPublicIP" + } + } + } + ] + } + }, + { + "name": " e.g. myTestVM1", + "type": "Microsoft.Compute/virtualMachines", + "location": "[resourceGroup().location]", + "apiVersion": "2017-03-30", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/ e.g. myTestVM1NetworkInterface" + ], + "tags": { + "displayName": "appVM" + }, + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": " e.g. myTestVM1", + "adminUsername": "appVMAdminUsername", + "adminPassword": "appVMAdminPassword", + "secrets": [ + { + "sourceVault": { + "id": " e.g. myKeyVault-rg/Microsoft.KeyVault/vaults/ e.g. myKeyVault" + }, + "vaultCertificates": [ + { + "certificateUrl": " e.g. https://mykeyvault.vault.azure.net/secrets/myPfxCert2/11f95456772549a2b6b0ba38bd1b319a", + "certificateStore": " e.g. myPfxCert2" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": " e.g. myTestVM1_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ e.g. myTestVM1NetworkInterface" + } + ] + } + }, + "resources": [ + { + "name": "Microsoft.Powershell.DSC", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/ e.g. myTestVM1" + ], + "tags": { + "displayName": "appDSC" + }, + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "configuration": { + "url": "_artifactsLocation/dsc/appDSC.zip", + "script": "appDSC.ps1", + "function": "Main" + }, + "configurationArguments": { + "nodeName": " e.g. myTestVM1", + "webDeployPackage": "https://computeteststore.blob.core.windows.net/deploypackage/deployPackage.zip?sv=2015-04-05&ss=bfqt&srt=sco&sp=r&se=2099-10-16T02:03:39Z&st=2016-10-15T18:03:39Z&spr=https&sig=aSH6yNPEGPWXk6PxTPzS6fyEXMD1ZYIkI0j5E9Hu5%2Fk%3D", + "certStoreName": " e.g. myPfxCert2", + "certDomain": " e.g. www.mycompany.com for wildcard use *.mycompany.com" + } + }, + "protectedSettings": { + "configurationUrlSasToken": "_artifactsLocationSasToken" + } + } + } + ] + }, + { + "name": "appPublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [], + "tags": { + "displayName": "appPublicIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": " e.g. mytestvmdns" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT854 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT854 new file mode 100644 index 0000000..83f4bc4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT854 @@ -0,0 +1,283 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vm-winrm-keyvault-windows/azuredeploy.json", + "/demos/vm-winrm-keyvault-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962902262, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-winrm-keyvault-windows/azuredeploy.json", + "/demos/vm-winrm-keyvault-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT854", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT854", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "DNS Name for the Public IP. Must be lowercase." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "Image Offer" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "Image SKU" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2_v2", + "metadata": { + "description": "Size of the VM" + } + }, + "vmName": { + "type": "string", + "defaultValue": "WinRmVm", + "metadata": { + "description": "Name of the VM" + } + }, + "vaultResourceId": { + "type": "string", + "metadata": { + "description": "ResourceId of the KeyVault" + }, + "value": "GEN-KEYVAULT-RESOURCE-ID" + }, + "certificateUrl": { + "type": "string", + "value": "GEN-SF-CERT-URL" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "myVNET", + "nicName": "myNIC", + "subnet1Ref": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1", + "networkSecurityGroupName": "Subnet-1-nsg" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-08-01", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnet1Name')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "Subnet-1-nsg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2017-09-01", + "name": "myVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2017-09-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myNIC", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myPublicIP", + "myVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-07-01", + "name": "WinRmVm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "myNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2_v2" + }, + "osProfile": { + "computerName": "WinRmVm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "secrets": [ + { + "sourceVault": { + "id": "GEN-KEYVAULT-RESOURCE-ID" + }, + "vaultCertificates": [ + { + "certificateUrl": "GEN-SF-CERT-URL", + "certificateStore": "My" + } + ] + } + ], + "windowsConfiguration": { + "provisionVMAgent": true, + "winRM": { + "listeners": [ + { + "protocol": "Http" + }, + { + "protocol": "Https", + "certificateUrl": "GEN-SF-CERT-URL" + } + ] + }, + "enableAutomaticUpdates": true + } + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myNIC" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT855 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT855 new file mode 100644 index 0000000..7db92c7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT855 @@ -0,0 +1,568 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vm-winrm-lb-windows/azuredeploy.json", + "/demos/vm-winrm-lb-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962902271, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-winrm-lb-windows/azuredeploy.json", + "/demos/vm-winrm-lb-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT855", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT855", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-13" + }, + "PrimaryVmNamePrefix": { + "type": "string", + "defaultValue": "myVM", + "metadata": { + "description": "Virtual machine name prefix for primary vm instances" + } + }, + "SecondaryVmNamePrefix": { + "type": "string", + "defaultValue": "mytestVM", + "metadata": { + "description": "Virtual machine name prefix for secondary vm instances" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2012-Datacenter", + "2012-R2-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2012-Datacenter, 2012-R2-Datacenter." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4" + ], + "metadata": { + "description": "Virtual machine size" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "location" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "availabilitySetName": "myAvSet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "vnetName": "myVNET", + "publicIPAddressName": "myPublicIP", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/myPublicIP", + "lbName": "myLB", + "numberOfInstances": 1, + "hostDNSNameScriptArgument": "*.[resourceGroup().location].cloudapp.azure.com", + "primaryNicNamePrefix": "nic", + "secondaryNicNamePrefix": "nicN", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer" + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myAvSet", + "apiVersion": "2020-12-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNET", + "Microsoft.Network/loadBalancers//myLB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/variables (subnetName)" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//myLB/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/myLB/PRDP-VMcopyindex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/myLB/PWINRM-VMcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nicNcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 1 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNET", + "Microsoft.Network/loadBalancers//myLB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig2", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/variables (subnetName)" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//myLB/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/myLB/SRDP-VMcopyindex()" + }, + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/myLB/SWINRM-VMcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-08-01", + "name": "myLB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ], + "inboundNatRules": [ + { + "name": "PRDP-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "PRDP-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 50002, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "PWINRM-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 40001, + "backendPort": 5986, + "enableFloatingIP": false + } + }, + { + "name": "PWINRM-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 40002, + "backendPort": 5986, + "enableFloatingIP": false + } + }, + { + "name": "SRDP-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 50003, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "SRDP-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 50004, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "SWINRM-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 40003, + "backendPort": 5986, + "enableFloatingIP": false + } + }, + { + "name": "SWINRM-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": 40004, + "backendPort": 5986, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools//myLB/LoadBalancerBackend" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes//myLB/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "primaryVmNamePrefixcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 1 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//niccopyindex()", + "Microsoft.Compute/availabilitySets//myAvSet" + ], + "tags": { + "Role": "Web" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "primaryVmNamePrefixcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niccopyindex()" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "primaryVmNamePrefixcopyIndex()/WinRMCustomScriptExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/primaryVmNamePrefixcopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('ConfigureWinRM.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('makecert.exe', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('winrmconf.cmd', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -file ConfigureWinRM.ps1 *.[resourceGroup().location].cloudapp.azure.com" + } + } + } + ] + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "secondaryVmNamePrefixcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 1 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicNcopyindex()", + "Microsoft.Compute/availabilitySets//myAvSet" + ], + "tags": { + "Role": "Test" + }, + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "secondaryVmNamePrefixcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicNcopyindex()" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "secondaryVmNamePrefixcopyindex()/WinRMCustomScriptExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/secondaryVmNamePrefixcopyindex()" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('ConfigureWinRM.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('makecert.exe', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('winrmconf.cmd', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -file ConfigureWinRM.ps1 *.[resourceGroup().location].cloudapp.azure.com" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT856 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT856 new file mode 100644 index 0000000..ff98758 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT856 @@ -0,0 +1,309 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vm-winrm-windows/azuredeploy.json", + "/demos/vm-winrm-windows/azuredeploy.parameters.json" + ], + "timestamp": 1642962902280, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vm-winrm-windows/azuredeploy.json", + "/demos/vm-winrm-windows/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT856", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT856", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "yourusername" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + }, + "value": "GEN-PASSWORD" + }, + "dnsLabelPrefix": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE-13" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + } + }, + "vmName": { + "type": "string", + "defaultValue": "MyVM", + "metadata": { + "description": "The name for the VM." + }, + "value": "MyVM" + }, + "nicName": { + "type": "string", + "defaultValue": "myVMNic", + "metadata": { + "description": "The name for the VM's NIC." + }, + "value": "myVMNic" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "MyVNET", + "metadata": { + "description": "The name for the VM's VNET." + }, + "value": "MyVNET" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A2", + "metadata": { + "description": "The size of the VM" + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "The name for the VM's public IP." + }, + "value": "myPublicIP" + }, + "subnetName": { + "type": "string", + "defaultValue": "Subnet", + "metadata": { + "description": "The name for the VM's Subnet." + }, + "value": "Subnet" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "vmName": "MyVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "hostDNSNameScriptArgument": "*.[resourceGroup().location].cloudapp.azure.com", + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-13" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-03-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2021-03-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2021-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A2" + }, + "osProfile": { + "computerName": "MyVM", + "adminUsername": "yourusername", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + }, + "resources": [ + { + "apiVersion": "2021-07-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "MyVM/WinRMCustomScriptExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MyVM" + ], + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('ConfigureWinRM.ps1', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('makecert.exe', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -file ConfigureWinRM.ps1 *.[resourceGroup().location].cloudapp.azure.com" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT857 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT857 new file mode 100644 index 0000000..b3ec768 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT857 @@ -0,0 +1,307 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962902288, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT857", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT857", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "GEN-UNIQUE" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + }, + "value": "Standard_D2_v3" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "metadata": { + "description": "The Ubuntu version" + }, + "value": "16.04-LTS" + }, + "userName": { + "type": "string", + "metadata": { + "description": "The user name whose password you want to change" + }, + "value": "GEN-UNIQUE" + }, + "password": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The new password" + }, + "value": "GEN-PASSWORD" + }, + "sshKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The new public key" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "resetSSH": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Whether to reset ssh" + }, + "value": false + }, + "userNameToRemove": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The user name you want to remove" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "virtualNetworkName": "vnet-vmaccess", + "nicName": "GEN-UNIQUE", + "publicIPAddressName": "GEN-UNIQUE", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "VMAccess", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-vmaccess/VMAccess", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-vmaccess", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "VMAccess", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//GEN-UNIQUE", + "Microsoft.Network/virtualNetworks//vnet-vmaccess" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-vmaccess/VMAccess" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//GEN-UNIQUE" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "GEN-UNIQUE", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(parameters('newStorageAccountName'),'2015-06-15').primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE/enablevmaccess", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//GEN-UNIQUE" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "VMAccessForLinux", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "username": "GEN-UNIQUE", + "password": "GEN-PASSWORD", + "reset_ssh": false, + "ssh_key": "GEN-SSH-PUB-KEY", + "remove_user": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT858 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT858 new file mode 100644 index 0000000..b360cfd --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT858 @@ -0,0 +1,310 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/remove-user.parameters.json" + ], + "timestamp": 1642962902296, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/remove-user.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT858", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT858", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "azureuser" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "storagevmaccess" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "binxi-vmaccess" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + }, + "value": "Standard_D2_v3" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "metadata": { + "description": "The Ubuntu version" + }, + "value": "14.04.2-LTS" + }, + "userName": { + "type": "string", + "metadata": { + "description": "The user name whose password you want to change" + }, + "value": "" + }, + "password": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The new password" + }, + "value": "" + }, + "sshKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The new public key" + }, + "value": "" + }, + "resetSSH": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Whether to reset ssh" + }, + "value": false + }, + "userNameToRemove": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The user name you want to remove" + }, + "value": "azureuser123" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + } + }, + "adminPassword": { + "value": "User@123" + } + }, + "variables": { + "virtualNetworkName": "vnet-vmaccess", + "nicName": "binxi-vmaccess", + "publicIPAddressName": "binxi-vmaccess", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "VMAccess", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-vmaccess/VMAccess", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/azureuser/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "storagevmaccess", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "binxi-vmaccess", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "binxi-vmaccess" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-vmaccess", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "VMAccess", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "binxi-vmaccess", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//binxi-vmaccess", + "Microsoft.Network/virtualNetworks//vnet-vmaccess" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/binxi-vmaccess" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-vmaccess/VMAccess" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "binxi-vmaccess", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//storagevmaccess", + "Microsoft.Network/networkInterfaces//binxi-vmaccess" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "binxi-vmaccess", + "adminUsername": "azureuser", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.2-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/binxi-vmaccess" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(parameters('newStorageAccountName'),'2015-06-15').primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "binxi-vmaccess/enablevmaccess", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//binxi-vmaccess" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "VMAccessForLinux", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "username": "", + "password": "", + "reset_ssh": false, + "ssh_key": "", + "remove_user": "azureuser123" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT859 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT859 new file mode 100644 index 0000000..cc2fa7a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT859 @@ -0,0 +1,310 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/single-user.parameters.json" + ], + "timestamp": 1642962902304, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmaccess-on-ubuntu/azuredeploy.json", + "/demos/vmaccess-on-ubuntu/single-user.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT859", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT859", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + }, + "value": "azureuser" + }, + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed." + }, + "value": "storagevmaccess" + }, + "vmName": { + "type": "string", + "metadata": { + "description": "Name of the vm, will be used as DNS Name for the Public IP used to access the Virtual Machine." + }, + "value": "binxi-vmaccess" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "VM size" + }, + "value": "Standard_D2_v3" + }, + "ubuntuOSVersion": { + "type": "string", + "defaultValue": "16.04-LTS", + "metadata": { + "description": "The Ubuntu version" + }, + "value": "14.04.2-LTS" + }, + "userName": { + "type": "string", + "metadata": { + "description": "The user name whose password you want to change" + }, + "value": "azureuser123" + }, + "password": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The new password" + }, + "value": "User@123" + }, + "sshKey": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The new public key" + }, + "value": "" + }, + "resetSSH": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "Whether to reset ssh" + }, + "value": false + }, + "userNameToRemove": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The user name you want to remove" + }, + "value": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + } + }, + "adminPassword": { + "value": "User@123" + } + }, + "variables": { + "virtualNetworkName": "vnet-vmaccess", + "nicName": "binxi-vmaccess", + "publicIPAddressName": "binxi-vmaccess", + "vnetAddressPrefix": "10.0.0.0/16", + "subnetName": "VMAccess", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vnet-vmaccess/VMAccess", + "storageAccountType": "Standard_LRS", + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/azureuser/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2021-01-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "storagevmaccess", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "binxi-vmaccess", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "binxi-vmaccess" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "vnet-vmaccess", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "VMAccess", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "binxi-vmaccess", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//binxi-vmaccess", + "Microsoft.Network/virtualNetworks//vnet-vmaccess" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/binxi-vmaccess" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vnet-vmaccess/VMAccess" + } + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "binxi-vmaccess", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//storagevmaccess", + "Microsoft.Network/networkInterfaces//binxi-vmaccess" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "binxi-vmaccess", + "adminUsername": "azureuser", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "14.04.2-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/binxi-vmaccess" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(parameters('newStorageAccountName'),'2015-06-15').primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "binxi-vmaccess/enablevmaccess", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//binxi-vmaccess" + ], + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "type": "VMAccessForLinux", + "typeHandlerVersion": "1.4", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "username": "azureuser123", + "password": "User@123", + "reset_ssh": false, + "ssh_key": "", + "remove_user": "" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT86 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT86 new file mode 100644 index 0000000..a75e5a6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT86 @@ -0,0 +1,191 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/shared-resources-new-vnet.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885811, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/shared-resources-new-vnet.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT86", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT86", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "resourceAPIVersion": { + "type": "string" + }, + "networkSpec": { + "type": "object" + }, + "masterNodeASName": { + "type": "string" + }, + "dataNodeASName": { + "type": "string" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2017-12-01", + "name": "masterNodeASName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2017-12-01", + "name": "dataNodeASName", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "networkSpec-sg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSpec", + "apiVersion": "2018-08-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/networkSpec-sg" + ], + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSpec" + ] + }, + "subnets": [ + { + "name": "networkSpec", + "properties": { + "addressPrefix": "networkSpec", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSpec-sg" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT860 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT860 new file mode 100644 index 0000000..8c6a0eb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT860 @@ -0,0 +1,296 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vmss-datascience/azuredeploy.json", + "/demos/vmss-datascience/azuredeploy.parameters.json" + ], + "timestamp": 1642962902312, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-datascience/azuredeploy.json", + "/demos/vmss-datascience/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT860", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT860", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_D2_v3" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources (9 characters or less). A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 9, + "value": "GEN-UNIQUE-8" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 1, + "maxValue": 100, + "value": 3 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "osType": { + "type": "string", + "allowedValues": [ + "windows", + "linux" + ], + "defaultValue": "windows", + "metadata": { + "description": "OS Type for the VMSS." + } + }, + "licenseType": { + "type": "string", + "defaultValue": "BYOL", + "allowedValues": [ + "BYOL", + "PAYG" + ], + "metadata": { + "description": "License type, only BYOL is supported in Azure US Government." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + } + }, + "variables": { + "vmSkuName": "[if(and(equals(environment().name, 'AzureCloud'), equals(parameters('licenseType'), 'PAYG')), '', 'byol')]", + "osType": { + "windows": { + "marketplacePlan": { + "name": "windows2016[if(and(equals(environment().name, 'AzureCloud'), equals(parameters('licenseType'), 'PAYG')), '', 'byol')]", + "publisher": "microsoft-ads", + "product": "windows-data-science-vm" + }, + "imageReference": { + "publisher": "microsoft-ads", + "offer": "windows-data-science-vm", + "sku": "windows2016[if(and(equals(environment().name, 'AzureCloud'), equals(parameters('licenseType'), 'PAYG')), '', 'byol')]", + "version": "latest" + }, + "natBackendPort": 3389 + }, + "linux": { + "marketplacePlan": { + "name": "linuxdsvmubuntu[if(and(equals(environment().name, 'AzureCloud'), equals(parameters('licenseType'), 'PAYG')), '', 'byol')]", + "publisher": "microsoft-ads", + "product": "linux-data-science-vm-ubuntu" + }, + "imageReference": { + "publisher": "microsoft-ads", + "offer": "linux-data-science-vm-ubuntu", + "sku": "linuxdsvmubuntu[if(and(equals(environment().name, 'AzureCloud'), equals(parameters('licenseType'), 'PAYG')), '', 'byol')]", + "version": "latest" + }, + "natBackendPort": 3389 + } + }, + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "GEN-UNIQUE-8vnet", + "publicIPAddressName": "GEN-UNIQUE-8pip", + "subnetName": "GEN-UNIQUE-8subnet", + "loadBalancerName": "GEN-UNIQUE-8lb", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip", + "natPoolName": "GEN-UNIQUE-8natpool", + "bePoolName": "GEN-UNIQUE-8bepool", + "natStartPort": 50000, + "natEndPort": 50120, + "nicName": "GEN-UNIQUE-8nic", + "ipConfigName": "GEN-UNIQUE-8ipconfig", + "frontEndIPConfigID": "[resourceID('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('loadBalancerName'), 'loadBalancerFrontEnd')]" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-UNIQUE-8vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE-8subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-8pip", + "location": "[resourceGroup().location]", + "apiVersion": "2019-04-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-8" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "GEN-UNIQUE-8lb", + "location": "[resourceGroup().location]", + "apiVersion": "2019-04-01", + "dependsOn": [ + "[resourceID('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-8pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "GEN-UNIQUE-8bepool" + } + ], + "inboundNatPools": [ + { + "name": "GEN-UNIQUE-8natpool", + "properties": { + "frontendIPConfiguration": { + "id": "[resourceID('Microsoft.Network/loadBalancers/frontendIPConfigurations', variables('loadBalancerName'), 'loadBalancerFrontEnd')]" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50120, + "backendPort": "(osType)[parameters(osType)].natBackendPort" + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "GEN-UNIQUE-8", + "location": "[resourceGroup().location]", + "apiVersion": "2019-07-01", + "dependsOn": [ + "[resourceID('Microsoft.Network/loadBalancers', variables('loadBalancerName'))]", + "[resourceID('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]" + ], + "sku": { + "name": "Standard_D2_v3", + "tier": "Standard", + "capacity": 3 + }, + "plan": "(osType)[parameters(osType)].marketplacePlan", + "properties": { + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": "(osType)[parameters(osType)].imageReference" + }, + "osProfile": { + "computerNamePrefix": "GEN-UNIQUE-8", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "GEN-UNIQUE-8nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "GEN-UNIQUE-8ipconfig", + "properties": { + "subnet": { + "id": "[resourceID('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceID('Microsoft.Network/loadBalancers/backendAddressPools', variables('loadBalancerName'), variables('bePoolName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceID('Microsoft.Network/loadBalancers/inboundNatPools', variables('loadBalancerName'), variables('natPoolName'))]" + } + ] + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT861 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT861 new file mode 100644 index 0000000..59b07d0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT861 @@ -0,0 +1,377 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vmss-linux-jumpbox/azuredeploy.json", + "/demos/vmss-linux-jumpbox/azuredeploy.parameters.json" + ], + "timestamp": 1642962902320, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-linux-jumpbox/azuredeploy.json", + "/demos/vmss-linux-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT861", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT861", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1_V2", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1_V2" + }, + "ubuntuOSVersion": { + "type": "string", + "allowedValues": [ + "18.04-LTS", + "16.04-LTS", + "14.04.4-LTS" + ], + "metadata": { + "description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version. Allowed values are: 16.04-LTS, 14.04.4-LTS." + }, + "value": "18.04-LTS" + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 1, + "maxValue": 100, + "value": 5 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "storageAccountKind": { + "type": "string", + "defaultValue": "StorageV2" + }, + "storageAccountSkuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS", + "Standard_ZRS", + "Standard_GRS" + ], + "metadata": { + "description": "Storage Account SKU" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the resources." + } + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "jumpBoxName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "jumpBoxSAName": "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), 'jumpboxsa')), 'jb')]", + "jumpBoxOSDiskName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxosdisk", + "jumpBoxIPConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "jumpBoxNicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "newStorageAccountSuffix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]sa", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-11-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('jumpBoxSAName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('jumpBoxSAName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('jumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_V2" + }, + "osProfile": { + "computerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxosdisk_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('jumpBoxSAName')), '2021-02-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_A1_V2", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT862 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT862 new file mode 100644 index 0000000..94c5ebf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT862 @@ -0,0 +1,981 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vmss-win-iis-app-ssl/azuredeploy.json", + "/demos/vmss-win-iis-app-ssl/azuredeploy.parameters.json" + ], + "timestamp": 1642962902326, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-win-iis-app-ssl/azuredeploy.json", + "/demos/vmss-win-iis-app-ssl/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT862", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT862", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appStorageType": { + "type": "string", + "defaultValue": "StandardSSD_LRS", + "allowedValues": [ + "Standard_LRS", + "StandardSSD_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Set this value for the storage account type" + } + }, + "frontEndVMSSName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Set this value for the frontend vmss name" + }, + "value": " e.g. appfevmss" + }, + "serviceVMSSName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Set this value for the backend or service vmss name" + }, + "value": " e.g. appwcfvmss" + }, + "appVMAdminUserName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Set this value for the admin user name to the vmss" + }, + "value": " e.g adminuser" + }, + "appVMAdminPassword": { + "type": "securestring", + "metadata": { + "description": "Set this value for the password for the admin user to the vmss" + } + }, + "appVMWindowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "Windows-Server-Technical-Preview" + ], + "metadata": { + "description": "Set this value for the windows os version" + } + }, + "frontEndVMSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3" + ], + "metadata": { + "description": "Set this value for the frontend vmss size" + } + }, + "serviceVMSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "allowedValues": [ + "Standard_D2_v3", + "Standard_D2_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D4_v3", + "Standard_D4_v3", + "Standard_D8_v3", + "Standard_D16_v3", + "Standard_D2s_v3", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D4s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3" + ], + "metadata": { + "description": "Set this value for the service or backend vmss size" + } + }, + "appPublicIPDnsName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Set this value for the dns name of the frontend public ip" + }, + "value": " e.g. mytestvmdns" + }, + "servicePublicIPDnsName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Set this value for the dns name of the backend public ip" + }, + "value": " e.g. appwcfdns" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "Auto-generated container in staging storage account to receive post-build staging folder upload" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + } + }, + "appDSCUpdateTagVersion": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "This value must be changed from a previous deployment to ensure the extension will run" + } + }, + "appWebPackage": { + "type": "string", + "defaultValue": "https://computeteststore.blob.core.windows.net/deploypackage/deployPackage.zip?sv=2015-04-05&ss=bfqt&srt=sco&sp=r&se=2099-10-16T02:03:39Z&st=2016-10-15T18:03:39Z&spr=https&sig=aSH6yNPEGPWXk6PxTPzS6fyEXMD1ZYIkI0j5E9Hu5%2Fk%3D", + "metadata": { + "description": "Set this value for the signed uri to download the frontend deployment package" + } + }, + "appServicePackage": { + "type": "string", + "defaultValue": "https://computeteststore.blob.core.windows.net/deploypackage/SampleWcfServices.zip?sv=2015-04-05&ss=bfqt&srt=sco&sp=r&se=2099-10-16T02:03:39Z&st=2016-10-15T18:03:39Z&spr=https&sig=aSH6yNPEGPWXk6PxTPzS6fyEXMD1ZYIkI0j5E9Hu5%2Fk%3D", + "metadata": { + "description": "Set this value for the signed uri to download the service deployment package" + } + }, + "instanceCount": { + "type": "string", + "metadata": { + "description": "Number of VM instances in the vmss" + }, + "value": "2" + }, + "frontEndDSCVMSSUpdateTagVersion": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "This value must be changed from a previous deployment to ensure the extension will run" + } + }, + "serviceDSCVMSSUpdateTagVersion": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "This value must be changed from a previous deployment to ensure the extension will run" + } + }, + "vaultName": { + "type": "string", + "metadata": { + "description": "The Azure Key vault where SSL certificates are stored" + }, + "value": " e.g. myKeyVault" + }, + "vaultResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource Group of the key vault" + }, + "value": " e.g. myKeyVault-rg" + }, + "httpssecretUrlWithVersion": { + "type": "string", + "metadata": { + "description": "full Key Vault Id to the secret that stores the SSL cert" + }, + "value": " e.g https://mykeyvault.vault.azure.net/secrets/myPfxCert2/11f95456772549a2b6b0ba38bd1b319a" + }, + "httpssecretCaUrlWithVersion": { + "type": "string", + "metadata": { + "description": "full Key Vault Id to the secret that stores the CA cert" + }, + "value": " e.g https://mykeyvault.vault.azure.net/secrets/myPfxCert2/11f95456772549a2b6b0ba38bd1b319a" + }, + "certificateStore": { + "type": "string", + "metadata": { + "description": "name of the certificate key secret" + }, + "value": " e.g. myPfxCert2" + }, + "certificateDomain": { + "type": "string", + "metadata": { + "description": "name of the domain the certificate is created for" + }, + "value": " e.g. www.mycompany.com or *.mycompany.com for wildcard domains" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "appVnetPrefix": "10.0.0.0/16", + "appVnetSubnet1Name": "FrontEndSubNet", + "appVnetSubnet1Prefix": "10.0.0.0/24", + "appVnetSubnet2Name": "ServiceSubNet", + "appVnetSubnet2Prefix": "10.0.1.0/24", + "appVMImagePublisher": "MicrosoftWindowsServer", + "appVMImageOffer": "WindowsServer", + "frontEndVMSize": "Standard_D8s_v3", + "serviceVMSize": "Standard_D8s_v3", + "appVMSubnetRef": "Microsoft.Network/virtualNetworks/subnets/FrontEndSubNet", + "serviceVMSubnetRef": "Microsoft.Network/virtualNetworks/subnets/FrontEndSubNet", + "appPublicIPName": "appPublicIP", + "servicePublicIPName": "servicePublicIP", + "frontEndVMSSName": " e.g. appfevmss", + "serviceVMSSName": " e.g. appwcfvmss", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/appPublicIP", + "publicIPAddressID2": "Microsoft.Network/publicIPAddresses/servicePublicIP", + "lbName": "loadBalancer1", + "lbServiceName": "loadBalancer2", + "lbID": "Microsoft.Network/loadBalancers/loadBalancer1", + "lbServiceID": "Microsoft.Network/loadBalancers/loadBalancer2", + "lbFEName": "loadBalancerFrontEndWeb", + "lbFEServiceName": "loadBalancerFrontEndService", + "lbWebProbeName": "loadBalancerWebProbe", + "lbWebServiceProbeName": "loadBalancerWebServiceProbe", + "lbBEAddressPool": "loadBalancerBEAddressPool", + "lbBEServiceAddressPool": "loadBalancerBEServiceAddressPool", + "lbFEIPConfigID": "Microsoft.Network/loadBalancers/loadBalancer1/frontendIPConfigurations/loadBalancerFrontEndWeb", + "lbFEServiceIPConfigID": "Microsoft.Network/loadBalancers/loadBalancer2/frontendIPConfigurations/loadBalancerFrontEndService", + "lbBEAddressPoolID": "Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/loadBalancerBEAddressPool", + "lbBEServiceAddressPoolID": "Microsoft.Network/loadBalancers/loadBalancer2/backendAddressPools/loadBalancerBEServiceAddressPool", + "lbWebServiceProbeID": "Microsoft.Network/loadBalancers/loadBalancer2/probes/loadBalancerWebServiceProbe", + "frontEndDSCVMSSArchiveFolder": "dsc", + "frontEndDSCVMSSArchiveFileName": "frontEndDSCVMSS.zip", + "serviceDSCVMSSArchiveFolder": "dsc", + "serviceDSCVMSSArchiveFileName": "serviceDSCVMSS.zip", + "natPoolNameFrontEnd": "natpoolfe", + "natStartPortFrontEnd": 50000, + "natEndPortFrontEnd": 50119, + "natBackendPortFrontEnd": 3389, + "natPoolNameService": "natpoolsvc", + "natStartPortService": 51000, + "natEndPortService": 51119, + "natBackendPortService": 3389, + "frontEndIPConfigIDWeb": "Microsoft.Network/loadBalancers/loadBalancer1/frontendIPConfigurations/loadBalancerFrontEndWeb", + "frontEndIPConfigIDService": "Microsoft.Network/loadBalancers/loadBalancer2/frontendIPConfigurations/loadBalancerFrontEndService", + "lbWebInboundNatPoolId": "Microsoft.Network/loadBalancers/loadBalancer1/inboundNatPools/natpoolfe", + "lbServiceInboundNatPoolId": "Microsoft.Network/loadBalancers/loadBalancer2/inboundNatPools/natpoolsvc", + "wadProcessorMetricName2": "Percentage CPU", + "wadProcessorMetricName3": "Percentage CPU", + "lbWebHttpsProbeName": "loadBalancerWebHttpsProbe", + "lbWebHttpsProbeID": "Microsoft.Network/loadBalancers/loadBalancer1/probes/loadBalancerWebHttpsProbe" + }, + "resources": [ + { + "apiVersion": "2015-06-15", + "name": "loadBalancer1", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/appPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEndWeb", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/appPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBEAddressPool" + } + ], + "loadBalancingRules": [ + { + "name": "weblb", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/loadBalancerBEAddressPool" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/frontendIPConfigurations/loadBalancerFrontEndWeb" + }, + "frontendPort": 80, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/probes/loadBalancerWebHttpsProbe" + }, + "protocol": "Tcp", + "loadDistribution": "SourceIP" + } + }, + { + "name": "webhttpslb", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/loadBalancerBEAddressPool" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/frontendIPConfigurations/loadBalancerFrontEndWeb" + }, + "frontendPort": 443, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/probes/loadBalancerWebHttpsProbe" + }, + "protocol": "Tcp", + "loadDistribution": "SourceIP" + } + } + ], + "probes": [ + { + "name": "loadBalancerWebProbe", + "properties": { + "protocol": "Http", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 5, + "requestPath": "hostingstart.html" + } + }, + { + "name": "loadBalancerWebHttpsProbe", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 15, + "numberOfProbes": 5 + } + } + ], + "inboundNatPools": [ + { + "name": "natpoolfe", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/frontendIPConfigurations/loadBalancerFrontEndWeb" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ] + } + }, + { + "apiVersion": "2015-06-15", + "name": "loadBalancer2", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/servicePublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "loadBalancerFrontEndService", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/servicePublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "loadBalancerBEServiceAddressPool" + } + ], + "loadBalancingRules": [ + { + "name": "wcflb", + "properties": { + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/loadBalancer2/backendAddressPools/loadBalancerBEServiceAddressPool" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer2/frontendIPConfigurations/loadBalancerFrontEndService" + }, + "frontendPort": 80, + "probe": { + "id": "Microsoft.Network/loadBalancers/loadBalancer2/probes/loadBalancerWebServiceProbe" + }, + "protocol": "Tcp", + "loadDistribution": "Default" + } + } + ], + "probes": [ + { + "name": "loadBalancerWebServiceProbe", + "properties": { + "protocol": "Http", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 5, + "requestPath": "hostingstart.html" + } + } + ], + "inboundNatPools": [ + { + "name": "natpoolsvc", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/loadBalancer2/frontendIPConfigurations/loadBalancerFrontEndService" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 51000, + "frontendPortRangeEnd": 51119, + "backendPort": 3389 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2016-04-30-preview", + "name": " e.g. appfevmss", + "location": "[resourceGroup().location]", + "tags": { + "vmsstag1": "Rev VMSS FE" + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/loadBalancer1", + "Microsoft.Network/virtualNetworks/appVnet" + ], + "sku": { + "name": "Standard_D8s_v3", + "tier": "Standard", + "capacity": "2" + }, + "properties": { + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": " e.g. appfevmss", + "adminUsername": " e.g adminuser", + "adminPassword": "appVMAdminPassword", + "secrets": [ + { + "sourceVault": { + "id": " e.g. myKeyVault-rg/Microsoft.KeyVault/vaults/ e.g. myKeyVault" + }, + "vaultCertificates": [ + { + "certificateUrl": " e.g https://mykeyvault.vault.azure.net/secrets/myPfxCert2/11f95456772549a2b6b0ba38bd1b319a", + "certificateStore": " e.g. myPfxCert2" + } + ] + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic1", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ip1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/FrontEndSubNet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/loadBalancerBEAddressPool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancer1/inboundNatPools/natpoolfe" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "Microsoft.Powershell.DSC", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "configuration": { + "url": "[deployment().properties.templateLink.uri]/dsc/frontEndDSCVMSS.zip", + "script": "frontEndDSCVMSS.ps1", + "function": "Main" + }, + "configurationArguments": { + "nodeName": "localhost", + "webDeployPackage": "https://computeteststore.blob.core.windows.net/deploypackage/deployPackage.zip?sv=2015-04-05&ss=bfqt&srt=sco&sp=r&se=2099-10-16T02:03:39Z&st=2016-10-15T18:03:39Z&spr=https&sig=aSH6yNPEGPWXk6PxTPzS6fyEXMD1ZYIkI0j5E9Hu5%2Fk%3D", + "certStoreName": " e.g. myPfxCert2", + "certDomain": " e.g. www.mycompany.com or *.mycompany.com for wildcard domains" + } + }, + "protectedSettings": { + "configurationUrlSasToken": "" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2016-04-30-preview", + "name": " e.g. appwcfvmss", + "location": "[resourceGroup().location]", + "tags": { + "vmsstag1": "rev Service" + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/loadBalancer2", + "Microsoft.Network/virtualNetworks/appVnet" + ], + "sku": { + "name": "Standard_D8s_v3", + "tier": "Standard", + "capacity": "2" + }, + "properties": { + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": " e.g. appwcfvmss", + "adminUsername": " e.g adminuser", + "adminPassword": "appVMAdminPassword" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nics1", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "ips1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/FrontEndSubNet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancer2/backendAddressPools/loadBalancerBEServiceAddressPool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/loadBalancer2/inboundNatPools/natpoolsvc" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "Microsoft.Powershell.DSC", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "configuration": { + "url": "[deployment().properties.templateLink.uri]/dsc/serviceDSCVMSS.zip", + "script": "serviceDSCVMSS.ps1", + "function": "Main" + }, + "configurationArguments": { + "nodeName": "localhost", + "webDeployPackage": "https://computeteststore.blob.core.windows.net/deploypackage/SampleWcfServices.zip?sv=2015-04-05&ss=bfqt&srt=sco&sp=r&se=2099-10-16T02:03:39Z&st=2016-10-15T18:03:39Z&spr=https&sig=aSH6yNPEGPWXk6PxTPzS6fyEXMD1ZYIkI0j5E9Hu5%2Fk%3D" + } + }, + "protectedSettings": { + "configurationUrlSasToken": "" + } + } + } + ] + } + } + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "appNetworkSecurityGroup", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "webrule", + "properties": { + "description": "This rule allows traffic in on port 80", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "INTERNET", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "webHttpsRule", + "properties": { + "description": "This rule allows traffic in on port 443", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "INTERNET", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "rdprule", + "properties": { + "description": "This rule allows traffic on port 3389 from the web", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "INTERNET", + "destinationAddressPrefix": "10.0.0.0/24", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + } + ] + } + }, + { + "name": "appVnet", + "type": "Microsoft.Network/virtualNetworks", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/appNetworkSecurityGroup" + ], + "tags": { + "displayName": "appVnet" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "FrontEndSubNet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/appNetworkSecurityGroup" + } + } + }, + { + "name": "ServiceSubNet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/appNetworkSecurityGroup" + } + } + } + ] + } + }, + { + "name": "appPublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [], + "tags": { + "displayName": "appPublicIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": " e.g. mytestvmdns" + } + } + }, + { + "name": "servicePublicIP", + "type": "Microsoft.Network/publicIPAddresses", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [], + "tags": { + "displayName": "servicePublicIP" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": " e.g. appwcfdns" + } + } + }, + { + "apiVersion": "2015-04-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/ e.g. appfevmss" + ], + "location": "[resourceGroup().location]", + "name": " e.g. appfevmssautoscale", + "properties": { + "name": " e.g. appfevmssautoscale", + "targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('frontEndVMSSName'))]", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "default": "2", + "maximum": "10", + "minimum": "2" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricNamespace": "", + "metricResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('frontEndVMSSName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 50 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricNamespace": "", + "metricResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('frontEndVMSSName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + } + ] + } + ] + }, + "tags": { + "displayName": " e.g. appfevmssautoscale" + }, + "type": "Microsoft.Insights/autoscaleSettings" + }, + { + "name": " e.g. appwcfvmssautoscale", + "type": "Microsoft.Insights/autoscaleSettings", + "location": "[resourceGroup().location]", + "apiVersion": "2015-04-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets/ e.g. appwcfvmss" + ], + "tags": { + "displayName": " e.g. appwcfvmssautoscale" + }, + "properties": { + "name": " e.g. appwcfvmssautoscale", + "targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('serviceVMSSName'))]", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": "2", + "maximum": "10", + "default": "2" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricNamespace": "", + "metricResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('serviceVMSSName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 50 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricNamespace": "", + "metricResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', variables('serviceVMSSName'))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT1M" + } + } + ] + } + ] + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT863 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT863 new file mode 100644 index 0000000..4b26e92 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT863 @@ -0,0 +1,339 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vmss-windows-jumpbox/azuredeploy.json", + "/demos/vmss-windows-jumpbox/azuredeploy.parameters.json" + ], + "timestamp": 1642962902333, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-windows-jumpbox/azuredeploy.json", + "/demos/vmss-windows-jumpbox/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT863", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachinescalesets", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT863", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1_V2", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + }, + "value": "Standard_A1_V2" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + } + }, + "vmssName": { + "type": "string", + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "maxLength": 61, + "value": "GEN-UNIQUE-32" + }, + "instanceCount": { + "type": "int", + "metadata": { + "description": "Number of VM instances (100 or less)." + }, + "minValue": 2, + "maxValue": 100, + "value": 5 + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Default location" + } + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "jumpBoxName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "jumpBoxSAName": "[concat(uniqueString(concat(resourceGroup().id, variables('newStorageAccountSuffix'), 'jumpboxsa')), 'jb')]", + "jumpBoxOSDiskName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox_OSDisk", + "jumpBoxIPConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "jumpBoxNicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "newStorageAccountSuffix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]sa", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "osType": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-3389", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "3389", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('jumpBoxSAName')]", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic", + "location": "[resourceGroup().location]", + "apiVersion": "2020-07-01", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "Microsoft.Network/virtualNetworks/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "properties": { + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('jumpBoxSAName'))]", + "[resourceId('Microsoft.Network/networkInterfaces', variables('jumpBoxNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_V2" + }, + "osProfile": { + "computerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jbox_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]jboxnic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('jumpBoxSAName')), '2019-06-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "sku": { + "name": "Standard_A1_V2", + "tier": "Standard", + "capacity": 5 + }, + "properties": { + "overprovision": "true", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "createOption": "FromImage", + "caching": "ReadWrite" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + } + } + } + ] + } + } + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT864 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT864 new file mode 100644 index 0000000..8870456 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT864 @@ -0,0 +1,458 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/vmss-windows-webapp-dsc-autoscale/azuredeploy.json", + "/demos/vmss-windows-webapp-dsc-autoscale/azuredeploy.parameters.json" + ], + "timestamp": 1642962902339, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/vmss-windows-webapp-dsc-autoscale/azuredeploy.json", + "/demos/vmss-windows-webapp-dsc-autoscale/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT864", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.compute/virtualmachinescalesets", + "microsoft.insights/autoscalesettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT864", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2019-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter", + "2016-Datacenter", + "2019-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter & 2016-Datacenter, 2019-Datacenter." + } + }, + "vmssName": { + "type": "string", + "minLength": 3, + "maxLength": 61, + "metadata": { + "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." + }, + "value": "GEN-UNIQUE-5" + }, + "instanceCount": { + "type": "int", + "defaultValue": 3, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of VM instances (100 or less)." + } + }, + "singlePlacementGroup": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "When true this limits the scale set to a single placement group, of max size 100 virtual machines. NOTE: If singlePlacementGroup is true, it may be modified to false. However, if singlePlacementGroup is false, it may not be modified to true." + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "vmssadmin", + "metadata": { + "description": "Admin username on all VMs." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs." + }, + "value": "GEN-PASSWORD" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templatelink.uri]", + "metadata": { + "description": "The base URI where artifacts required by this template are located. For example, if stored on a public GitHub repo, you'd use the following URI: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-vmss-windows-webapp-dsc-autoscale/." + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. If your artifacts are stored on a public repo or public storage account you can leave this blank." + } + }, + "powershelldscZip": { + "type": "string", + "defaultValue": "DSC/InstallIIS.zip", + "metadata": { + "description": "Location of the PowerShell DSC zip file relative to the URI specified in the _artifactsLocation, i.e. DSC/IISInstall.ps1.zip" + } + }, + "webDeployPackage": { + "type": "string", + "defaultValue": "WebDeploy/DefaultASPWebApp.v1.0.zip", + "metadata": { + "description": "Location of the of the WebDeploy package zip file relative to the URI specified in _artifactsLocation, i.e. WebDeploy/DefaultASPWebApp.v1.0.zip" + } + }, + "powershelldscUpdateTagVersion": { + "type": "string", + "defaultValue": "1.0", + "metadata": { + "description": "Version number of the DSC deployment. Changing this value on subsequent deployments will trigger the extension to run." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "platformFaultDomainCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Fault Domain count for each placement group." + } + } + }, + "variables": { + "namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "longNamingInfix": "[toLower(parameters('vmssName'))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.0.0/24", + "virtualNetworkName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "publicIPAddressName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "subnetName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "loadBalancerName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "lbProbeID": "Microsoft.Network/loadBalancers/probes/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/tcpProbe", + "natPoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "bePoolName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "lbPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool", + "natStartPort": 50000, + "natEndPort": 50119, + "natBackendPort": 3389, + "nicName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "ipConfigName": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "frontEndIPConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd", + "osType": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "webDeployPackageFullPath": "[uri(parameters('_artifactsLocation'), concat(parameters('webDeployPackage'), parameters('_artifactsLocationSasToken')))]", + "powershelldscZipFullPath": "[uri(parameters('_artifactsLocation'), concat(parameters('powershelldscZip'), parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-06-01", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "inboundNatPools": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPortRangeStart": 50000, + "frontendPortRangeEnd": 50119, + "backendPort": 3389 + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/loadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "apiVersion": "2020-06-01", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_A1_v2", + "tier": "Standard", + "capacity": 3 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb", + "Microsoft.Network/virtualNetworks/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet" + ], + "properties": { + "overprovision": true, + "upgradePolicy": { + "mode": "Automatic" + }, + "singlePlacementGroup": true, + "platformFaultDomainCount": 1, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + }, + "osProfile": { + "computerNamePrefix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]nic", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]ipconfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]bepool" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatPools/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]lb/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]natpool" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "Microsoft.Powershell.DSC", + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.9", + "autoUpgradeMinorVersion": true, + "forceUpdateTag": "1.0", + "settings": { + "configuration": { + "url": "[uri(parameters('_artifactsLocation'), concat(parameters('powershelldscZip'), parameters('_artifactsLocationSasToken')))]", + "script": "InstallIIS.ps1", + "function": "InstallIIS" + }, + "configurationArguments": { + "nodeName": "localhost", + "WebDeployPackagePath": "[uri(parameters('_artifactsLocation'), concat(parameters('webDeployPackage'), parameters('_artifactsLocationSasToken')))]" + } + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]pip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[toLower(parameters('vmssName'))]" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Insights/autoscaleSettings", + "apiVersion": "2015-04-01", + "name": "autoscalehost", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachineScaleSets//[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]" + ], + "properties": { + "name": "autoscalehost", + "targetResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "enabled": true, + "profiles": [ + { + "name": "Profile1", + "capacity": { + "minimum": "1", + "maximum": "10", + "default": "1" + }, + "rules": [ + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "GreaterThan", + "threshold": 50 + }, + "scaleAction": { + "direction": "Increase", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + }, + { + "metricTrigger": { + "metricName": "Percentage CPU", + "metricResourceUri": "Microsoft.Compute/virtualMachineScaleSets/[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", + "timeGrain": "PT1M", + "statistic": "Average", + "timeWindow": "PT5M", + "timeAggregation": "Average", + "operator": "LessThan", + "threshold": 30 + }, + "scaleAction": { + "direction": "Decrease", + "type": "ChangeCount", + "value": "1", + "cooldown": "PT5M" + } + } + ] + } + ] + } + } + ], + "outputs": { + "applicationUrl": { + "type": "string", + "value": "[concat('http://', reference(variables('publicIPAddressName')).dnsSettings.fqdn, '/MyApp')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT865 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT865 new file mode 100644 index 0000000..022e61d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT865 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/app.json" + ], + "timestamp": 1642962902347, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/app.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT865", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT865", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appName": { + "type": "string", + "metadata": { + "description": "name of app service web app (must be globally unique)" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location to deploy app service web app" + } + }, + "hostingPlanName": { + "type": "string", + "metadata": { + "description": "name of app service hosting plan" + } + }, + "ipAddressRestriction": { + "type": "array", + "defaultValue": [ + { + "ipAddress": "0.0.0.0/32" + } + ], + "metadata": { + "description": "ip address restrictions for web app" + } + }, + "subnet": { + "type": "string", + "metadata": { + "description": "resource id of subnet to use for app service reginal vnet integration" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Web/sites", + "name": "[tolower(parameters('appName'))]", + "apiVersion": "2019-08-01", + "location": "location", + "resources": [ + { + "apiVersion": "2019-08-01", + "type": "config", + "name": "web", + "dependsOn": [ + "[tolower(parameters('appName'))]" + ], + "properties": { + "ipSecurityRestrictions": [ + { + "ipAddress": "0.0.0.0/32" + } + ] + } + }, + { + "name": "virtualNetwork", + "type": "networkConfig", + "apiVersion": "2019-08-01", + "location": "location", + "properties": { + "subnetResourceId": "subnet", + "swiftSupported": true + }, + "dependsOn": [ + "Microsoft.Web/sites/appName" + ] + } + ], + "properties": { + "name": "[tolower(parameters('appName'))]", + "serverFarmId": "Microsoft.Web/serverfarms/hostingPlanName", + "siteConfig": { + "appSettings": [ + { + "name": "WEBSITE_VNET_ROUTE_ALL", + "value": 1 + }, + { + "name": "WEBSITE_DNS_SERVER", + "value": "168.63.129.16" + } + ] + } + } + } + ], + "outputs": { + "appName": { + "type": "string", + "value": "[parameters('appName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT866 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT866 new file mode 100644 index 0000000..c22589c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT866 @@ -0,0 +1,79 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/app_svc_plan.json" + ], + "timestamp": 1642962902352, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/app_svc_plan.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT866", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT866", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "suffix": { + "type": "string", + "metadata": { + "description": "naming suffix based on resource group name hash" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location to deploy app service plan" + } + }, + "serverFarmSku": { + "defaultValue": { + "Tier": "Standard", + "Name": "S1" + }, + "type": "object", + "metadata": { + "description": "app service plan SKU" + } + } + }, + "variables": { + "serverFarmName": "app-svc-plan-suffix" + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "sku": { + "Tier": "Standard", + "Name": "S1" + }, + "kind": "app", + "name": "[tolower(variables('serverFarmName'))]", + "apiVersion": "2019-08-01", + "location": "location" + } + ], + "outputs": { + "serverFarmName": { + "type": "string", + "value": "[variables('serverFarmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT867 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT867 new file mode 100644 index 0000000..798d59b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT867 @@ -0,0 +1,269 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/dns_record.json" + ], + "timestamp": 1642962902357, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/dns_record.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT867", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones/a" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT867", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "privateDnsZoneName": { + "type": "string", + "metadata": { + "description": "private DNS zone name" + } + }, + "privateLinkNicIpConfig": { + "type": "object", + "metadata": { + "description": "private endpoint Nic ipConfiguration array resource id" + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + }, + { + "type": "Microsoft.Network/privateDnsZones/A", + "name": "[concat(parameters('privateDnsZoneName'),'/', split(parameters('privateLinkNicIpConfig').properties.privateLinkConnectionProperties.fqdns[copyIndex()], '.')[0])]", + "location": "global", + "apiVersion": "2020-01-01", + "properties": { + "aRecords": "[concat(json(concat('[{\"ipv4Address\":\"', parameters('privateLinkNicIpConfig').properties.privateIPAddress,'\"}]')))]", + "ttl": 3600 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT868 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT868 new file mode 100644 index 0000000..5fc7046 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT868 @@ -0,0 +1,80 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_dns.json" + ], + "timestamp": 1642962902369, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_dns.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT868", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/privatednszones/virtualnetworklinks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT868", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "privateDnsZoneName": { + "type": "string", + "metadata": { + "description": "private dns zone name" + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "virtual network name" + } + }, + "enableVmRegistration": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "controls whether the dns zone will automatically register DNS records for resources in the virtual network" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-01-01", + "name": "privateDnsZoneName", + "location": "global" + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-01-01", + "name": "privateDnsZoneName/privateDnsZoneName-virtualNetworkName-link", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privateDnsZoneName" + ], + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/virtualNetworkName" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT869 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT869 new file mode 100644 index 0000000..da1c050 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT869 @@ -0,0 +1,110 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link.json" + ], + "timestamp": 1642962902375, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT869", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privateendpoints" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT869", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "suffix": { + "type": "string", + "metadata": { + "description": "naming suffix based on resource group name hash" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location to deploy private link endpoint web app" + } + }, + "resourceType": { + "type": "string", + "metadata": { + "description": " private link resource type" + } + }, + "resourceName": { + "type": "string", + "metadata": { + "description": "private link resource name" + } + }, + "groupType": { + "type": "string", + "metadata": { + "description": "private link resource group id" + } + }, + "subnet": { + "type": "string", + "metadata": { + "description": "resource id of private link subnet" + } + } + }, + "variables": { + "prefix": "[guid(parameters('resourceType'))]", + "privateEndpointName": "[guid(parameters('resourceType'))]-pep-suffix", + "privateEndpointConnectionName": "[guid(parameters('resourceType'))]-pep-cxn-suffix" + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "[guid(parameters('resourceType'))]-pep-suffix", + "type": "Microsoft.Network/privateEndpoints", + "location": "location", + "properties": { + "privateLinkServiceConnections": [ + { + "name": "[guid(parameters('resourceType'))]-pep-cxn-suffix", + "properties": { + "privateLinkServiceId": "resourceType/resourceName", + "groupIds": [ + "groupType" + ] + } + } + ], + "subnet": { + "id": "subnet" + } + } + } + ], + "outputs": { + "privateLinkNicResource": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Network/privateEndpoints', variables('privateEndpointName')), '2019-11-01').networkInterfaces[0].id]" + }, + "privateEndpointName": { + "type": "string", + "value": "[variables('privateEndpointName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT87 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT87 new file mode 100644 index 0000000..3cf0bb9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT87 @@ -0,0 +1,347 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/vm-10-datadisks.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885834, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/vm-10-datadisks.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT87", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT87", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string", + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": { + "singleQuote": "'", + "masterIP": "networkSpec", + "workerIP": "networkSpec", + "vmName": "GEN-UNIQUE-10-dn", + "nicName": "GEN-UNIQUE-10-dn-nic", + "publicIPAddressName": "GEN-UNIQUE-10-dn-publicIP", + "securityGroupName": "GEN-UNIQUE-10-dn-sg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-10-dn-sg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-10-dn-publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "publicIPLoop", + "count": "vmCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10-dncopyIndex()" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-10-dn-niccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-dn-publicIPcopyIndex()", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-dn-sg" + ], + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(parameters('networkSpec').ipOctet01, add(parameters('networkSpec').ipOctet2, div(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256)), '.', mod(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256))]", + "subnet": { + "id": "vnetID/subnets/networkSpec" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-dn-publicIPcopyIndex()" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-dn-sg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "name": "GEN-UNIQUE-10-dncopyIndex()", + "plan": "vmSpec", + "location": "[resourceGroup().location]", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-dn-niccopyIndex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/vmSpec" + }, + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "[reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn]", + "adminUsername": "vmSpec", + "adminPassword": "vmSpec", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": "vmSpec", + "osDisk": { + "name": "GEN-UNIQUE-10-dncopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk1", + "diskSizeGB": 512, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 2, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 3, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk5", + "diskSizeGB": 1023, + "lun": 4, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk6", + "diskSizeGB": 1023, + "lun": 5, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk76", + "diskSizeGB": 1023, + "lun": 6, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk8", + "diskSizeGB": 1023, + "lun": 7, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk9", + "diskSizeGB": 1023, + "lun": 8, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk10", + "diskSizeGB": 1023, + "lun": 9, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk11", + "diskSizeGB": 1023, + "lun": 10, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-dn-niccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-10-dncopyIndex()/prepareDisks", + "location": "[resourceGroup().location]", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10-dncopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/prepare-datanode-disks.sh", + "scriptsUri/scripts/initialize-node.sh" + ], + "commandToExecute": "[concat('sh initialize-node.sh ', variables('singleQuote'), variables('masterIP'), variables('singleQuote'), ' ', variables('singleQuote'), variables('workerIP'), variables('singleQuote'), ' ', variables('singleQuote'), parameters('dnsNamePrefix'), variables('singleQuote'), ' ', variables('singleQuote'), reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').masterNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').dataNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('vmSpec').adminUsername, variables('singleQuote'), ' ', 'datanode', ' >> /var/log/cloudera-azure-initialize.log 2>&1')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT870 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT870 new file mode 100644 index 0000000..1a47ca0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT870 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link_ipconfigs.json" + ], + "timestamp": 1642962902382, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link_ipconfigs.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT870", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT870", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "privateDnsZoneName": { + "type": "string", + "metadata": { + "description": "private dns zone name" + } + }, + "privateLinkNicResource": { + "type": "string", + "metadata": { + "description": "private endpoint Nic ipConfigurations array resource id" + } + }, + "privateLinkNicIpConfigTemplateUri": { + "type": "string", + "metadata": { + "description": "ip configurations template resource URI" + } + }, + "privateDnsRecordTemplateUri": { + "type": "string", + "metadata": { + "description": "private dns record template resource URI" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "private-link-ipconfigs", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfigs": { + "value": "[reference(parameters('privateLinkNicResource'), '2019-11-01').ipConfigurations]" + }, + "privateDnsRecordTemplateUri": { + "value": "privateDnsRecordTemplateUri" + } + }, + "templateLink": { + "uri": "privateLinkNicIpConfigTemplateUri" + } + } + } + ], + "outputs": {}, + "functions": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT871 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT871 new file mode 100644 index 0000000..e461963 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT871 @@ -0,0 +1,495 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link_ipconfigs_helper.json" + ], + "timestamp": 1642962902389, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/private_link_ipconfigs_helper.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT871", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT871", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "privateDnsZoneName": { + "type": "string", + "metadata": { + "description": "private DNS zone name" + } + }, + "privateLinkNicIpConfigs": { + "type": "array", + "metadata": { + "description": "private endpoint nic ip configuration array" + } + }, + "privateDnsRecordTemplateUri": { + "type": "string", + "metadata": { + "description": "private dns zone record template resource URI" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-10-01", + "name": "nestedTemplate-private-link-ipconfigs-helpercopyIndex()", + "properties": { + "mode": "Incremental", + "parameters": { + "privateDnsZoneName": { + "value": "privateDnsZoneName" + }, + "privateLinkNicIpConfig": { + "value": "privateLinkNicIpConfigs)[copyIndex(" + } + }, + "templateLink": { + "uri": "privateDnsRecordTemplateUri" + } + } + } + ], + "outputs": {}, + "functions": [], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT872 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT872 new file mode 100644 index 0000000..e53509e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT872 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/sqldb.json" + ], + "timestamp": 1642962902400, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/sqldb.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT872", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT872", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "suffix": { + "type": "string", + "metadata": { + "description": "naming suffix based on resource group name hash" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location to deploy the Azure SQL Db server" + } + }, + "sqlAdministratorLogin": { + "type": "string", + "metadata": { + "description": "Azure SQL Db server administrator login name" + } + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Azure SQL Db server administrator login password" + } + }, + "databaseName": { + "type": "string", + "metadata": { + "description": "Azure SQL database name" + } + }, + "databaseEdition": { + "type": "string", + "defaultValue": "Basic", + "metadata": { + "description": "Azure SQL database edition" + } + }, + "databaseCollation": { + "type": "string", + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "Azure SQL database collation type" + } + }, + "databaseServiceObjectiveName": { + "type": "string", + "defaultValue": "Basic", + "metadata": { + "description": "Azure SQL database service objective type name" + } + } + }, + "variables": { + "sqlServerName": "sql-server-suffix" + }, + "resources": [ + { + "name": "sql-server-suffix", + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "location": "location", + "properties": { + "administratorLogin": "sqlAdministratorLogin", + "administratorLoginPassword": "sqlAdministratorLoginPassword", + "version": "12.0", + "publicNetworkAccess": "Disabled" + }, + "resources": [ + { + "name": "databaseName", + "type": "databases", + "apiVersion": "2020-02-02-preview", + "location": "location", + "dependsOn": [ + "sql-server-suffix" + ], + "properties": { + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "requestedServiceObjectiveName": "Basic" + } + } + ] + } + ], + "outputs": { + "sqlServerFqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Sql/servers', variables('sqlServerName'))).fullyQualifiedDomainName]" + }, + "sqlServerName": { + "type": "string", + "value": "[variables('sqlServerName')]" + }, + "databaseName": { + "type": "string", + "value": "[parameters('databaseName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT873 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT873 new file mode 100644 index 0000000..badc9af --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT873 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/storage.json" + ], + "timestamp": 1642962902407, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/storage.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT873", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT873", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "suffix": { + "type": "string", + "metadata": { + "description": "naming suffix based on resource group name hash" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location to deploy the storage account" + } + }, + "storageSku": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "storage account SKU" + } + }, + "storageKind": { + "type": "string", + "defaultValue": "StorageV2", + "metadata": { + "description": "storage account kind" + } + }, + "containerName": { + "type": "string", + "metadata": { + "description": "storage account container name" + } + }, + "defaultNetworkAccessAction": { + "type": "string", + "defaultValue": "Allow", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "allor or deny internet access to storage account" + } + } + }, + "variables": { + "storageAccountName": "storsuffix" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "storsuffix", + "apiVersion": "2021-02-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "location": "location", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "file": { + "enabled": true + }, + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Hot" + }, + "resources": [ + { + "name": "default/containerName", + "type": "blobServices/containers", + "apiVersion": "2019-06-01", + "dependsOn": [ + "storsuffix" + ] + } + ] + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "storageContainerUri": { + "type": "string", + "value": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob, parameters('containerName'))]" + }, + "containerName": { + "type": "string", + "value": "[parameters('containerName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT874 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT874 new file mode 100644 index 0000000..1bd3335 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT874 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/vnets.json" + ], + "timestamp": 1642962902414, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/vnets.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT874", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT874", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "suffix": { + "type": "string", + "metadata": { + "description": "virtual network name sufix based on resource group hash" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location to dpeloy the vnet" + } + }, + "vNets": { + "type": "object", + "metadata": { + "description": "JSON input object defining Vnets and subnets. The first network in the array is assumed to be the hub netwkr and will be peered to all subsequent networks" + } + } + }, + "variables": { + "copy": [ + { + "name": "subnets", + "count": 27, + "input": { + "name": "vNets).subnets[copyIndex(subnets", + "properties": { + "addressPrefix": "vNets).subnets[copyIndex(subnets", + "delegations": "[if(equals(parameters('vNets').subnets[copyIndex('subnets')].delegations, json('null')), json('null'), parameters('vNets').subnets[copyIndex('subnets')].delegations)]", + "privateEndpointNetworkPolicies": "[if(equals(parameters('vNets').subnets[copyIndex('subnets')].privateEndpointNetworkPolicies, json('null')), json('null'), parameters('vNets').subnets[copyIndex('subnets')].privateEndpointNetworkPolicies)]", + "privateLinkServiceNetworkPolicies": "[if(equals(parameters('vNets').subnets[copyIndex('subnets')].privateLinkServiceNetworkPolicies, json('null')), json('null'), parameters('vNets').subnets[copyIndex('subnets')].privateLinkServiceNetworkPolicies)]", + "routeTable": "[if(equals(parameters('vNets').subnets[copyIndex('subnets')].udrName, json('null')), json('null'), json(concat('{\"id\": \"', resourceId('Microsoft.Network/routeTables', concat(parameters('vNets').subnets[copyIndex('subnets')].udrName, '-rt-', parameters('suffix'))), '\"}', '\"}')))]", + "networkSecurityGroup": "[if(equals(parameters('vNets').subnets[copyIndex('subnets')].nsgName, json('null')), json('null'), json(concat('{\"id\": \"', resourceId('Microsoft.Network/networkSecurityGroups', concat(parameters('vNets').subnets[copyIndex('subnets')].nsgName, '-nsg-', parameters('suffix'))), '\"}', '\"}')))]" + }, + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets/', concat(parameters('vNets').name, '-', parameters('suffix')), parameters('vNets').subnets[copyIndex('subnets')].name)]" + } + } + ] + }, + "resources": [ + { + "name": "vNets-suffix", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-08-01", + "properties": { + "addressSpace": { + "addressPrefixes": "vNets" + }, + "subnets": "subnets" + } + } + ], + "outputs": { + "subnetResourceIds": { + "type": "array", + "value": "[variables('subnets')]" + }, + "vnetRef": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks/', concat(parameters('vNets').name, '-', parameters('suffix')))]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[concat(parameters('vNets').name, '-', parameters('suffix'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT875 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT875 new file mode 100644 index 0000000..56cb193 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT875 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/vnet_peering.json" + ], + "timestamp": 1642962902421, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/nestedtemplates/vnet_peering.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT875", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks/virtualnetworkpeerings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT875", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "suffix": { + "type": "string", + "metadata": { + "description": "naming suffix based on resource group name hash" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "location to deploy the storage account" + } + }, + "vNets": { + "type": "array", + "metadata": { + "description": "array of JSON virtual network objects" + } + } + }, + "variables": {}, + "resources": [ + { + "apiVersion": "2018-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "[concat(parameters('vNets')[0].name, '-', parameters('suffix'), '/peering-to-', parameters('vnets')[copyIndex(1)].name, '-', parameters('suffix'))]", + "location": "location", + "copy": { + "name": "hubPeeringCopy", + "count": "[sub(length(parameters('vNets')), 1)]" + }, + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "[resourceId('Microsoft.Network/virtualNetworks', concat(parameters('vNets')[copyIndex(1)].name, '-', parameters('suffix')))]" + } + } + }, + { + "apiVersion": "2018-11-01", + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "name": "[concat(parameters('vNets')[copyIndex(1)].name, '-', parameters('suffix'), '/peering-to-', parameters('vNets')[0].name, '-', parameters('suffix'))]", + "location": "location", + "copy": { + "name": "spokePeeringCopy", + "count": "[sub(length(parameters('vNets')), 1)]" + }, + "properties": { + "allowVirtualNetworkAccess": true, + "allowForwardedTraffic": true, + "allowGatewayTransit": false, + "useRemoteGateways": false, + "remoteVirtualNetwork": { + "id": "[resourceId('Microsoft.Network/virtualNetworks', concat(parameters('vNets')[0].name, '-', parameters('suffix')))]" + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT876 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT876 new file mode 100644 index 0000000..93b4939 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT876 @@ -0,0 +1,625 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/azuredeploy.json", + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962902428, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/azuredeploy.json", + "/demos/web-app-regional-vnet-private-endpoint-sql-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT876", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT876", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "deployment location" + } + }, + "webAppName": { + "type": "string", + "defaultValue": "[concat('web-app-', uniqueString(subscription().id, resourceGroup().id))]", + "metadata": { + "description": "unique web app name" + } + }, + "sqlAdministratorLoginName": { + "type": "string", + "metadata": { + "description": "Azure SQL DB administrator login name" + }, + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "type": "securestring", + "metadata": { + "description": "Azure SQL DB administrator password" + }, + "value": "GEN-PASSWORD" + }, + "vNets": { + "type": "array", + "metadata": { + "description": "JSON object describing virtual networks & subnets" + }, + "value": [ + { + "name": "hub-vnet", + "addressPrefixes": [ + "10.1.0.0/16" + ], + "subnets": [ + { + "name": "PrivateLinkSubnet", + "addressPrefix": "10.1.1.0/24", + "udrName": null, + "nsgName": null, + "delegations": null, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + ] + }, + { + "name": "spoke-vnet", + "addressPrefixes": [ + "10.2.0.0/16" + ], + "subnets": [ + { + "name": "AppSvcSubnet", + "addressPrefix": "10.2.1.0/24", + "udrName": null, + "nsgName": null, + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "delegations": [ + { + "name": "appservice", + "properties": { + "serviceName": "Microsoft.Web/serverFarms" + } + } + ] + } + ] + } + ] + } + }, + "variables": { + "suffix": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]", + "appName": "[concat('web-app-', uniqueString(subscription().id, resourceGroup().id))]-[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]", + "storagePrivateDnsZoneName": "[concat('privatelink.blob.', environment().suffixes.storage)]", + "sqlPrivateDnsZoneName": "[concat('privatelink', environment().suffixes.sqlServerHostname)]", + "sqlDatabaseName": "mydb01", + "storageContainerName": "mycontainer", + "storageGroupType": "blob", + "sqlGroupType": "sqlServer", + "vnetNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnets.json', parameters('_artifactsLocationSasToken')))]", + "vnetPeeringNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet_peering.json', parameters('_artifactsLocationSasToken')))]", + "appServicePlanNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/app_svc_plan.json', parameters('_artifactsLocationSasToken')))]", + "appNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/app.json', parameters('_artifactsLocationSasToken')))]", + "sqlNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/sqldb.json', parameters('_artifactsLocationSasToken')))]", + "privateLinkNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link.json', parameters('_artifactsLocationSasToken')))]", + "storageNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/storage.json', parameters('_artifactsLocationSasToken')))]", + "privateDnsNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_dns.json', parameters('_artifactsLocationSasToken')))]", + "privateDnsRecordNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/dns_record.json', parameters('_artifactsLocationSasToken')))]", + "privateLinkIpConfigsNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link_ipconfigs.json', parameters('_artifactsLocationSasToken')))]", + "privateLinkIpConfigsHelperNestedTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link_ipconfigs_helper.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "comments": "This deployment links to the vnets.json nested ARM template", + "name": "linkedTemplate-vnet-copyIndex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnets.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "suffix": { + "value": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "vNets": { + "value": "vNets)[copyIndex(" + } + } + } + }, + { + "comments": "This deployment links to the vnets.json nested ARM template", + "name": "linkedTemplate-vnet-copyIndex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnets.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "suffix": { + "value": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "vNets": { + "value": "vNets)[copyIndex(" + } + } + } + }, + { + "comments": "This deployment links to the vnet_peering.json nested ARM template", + "name": "linkedTemplate-peerings", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "vnetCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet_peering.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "suffix": { + "value": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "vNets": { + "value": [ + { + "name": "hub-vnet", + "addressPrefixes": [ + "10.1.0.0/16" + ], + "subnets": [ + { + "name": "PrivateLinkSubnet", + "addressPrefix": "10.1.1.0/24", + "udrName": null, + "nsgName": null, + "delegations": null, + "privateEndpointNetworkPolicies": "Disabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + ] + }, + { + "name": "spoke-vnet", + "addressPrefixes": [ + "10.2.0.0/16" + ], + "subnets": [ + { + "name": "AppSvcSubnet", + "addressPrefix": "10.2.1.0/24", + "udrName": null, + "nsgName": null, + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled", + "delegations": [ + { + "name": "appservice", + "properties": { + "serviceName": "Microsoft.Web/serverFarms" + } + } + ] + } + ] + } + ] + } + } + } + }, + { + "comments": "This deployment links to the app_svc_plan.json nested ARM template", + "name": "linkedTemplate-app-svc-plan", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "vnetCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/app_svc_plan.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "suffix": { + "value": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "serverFarmSku": { + "value": { + "Tier": "Standard", + "Name": "S1" + } + } + } + } + }, + { + "comments": "This deployment links to the app.json nested ARM template", + "name": "linkedTemplate-app", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-app-svc-plan" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/app.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "hostingPlanName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-app-svc-plan')).outputs.serverFarmName.value]" + }, + "subnet": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-vnet-1')).outputs.subnetResourceIds.value[0].id]" + }, + "appName": { + "value": "[concat('web-app-', uniqueString(subscription().id, resourceGroup().id))]-[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "ipAddressRestriction": { + "value": [ + "0.0.0.0/32" + ] + } + } + } + }, + { + "comments": "This deployment links to the sqldb.json nested ARM template", + "name": "linkedTemplate-sqldb", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "vnetCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/sqldb.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "suffix": { + "value": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "sqlAdministratorLogin": { + "value": "GEN-UNIQUE" + }, + "sqlAdministratorLoginPassword": { + "value": "GEN-PASSWORD" + }, + "databaseName": { + "value": "mydb01" + } + } + } + }, + { + "comments": "This deployment links to the private_link.json nested ARM template", + "name": "linkedTemplate-sqldb-private-link", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-sqldb" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "suffix": { + "value": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "resourceType": { + "value": "Microsoft.Sql/servers" + }, + "resourceName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-sqldb')).outputs.sqlServerName.value]" + }, + "groupType": { + "value": "sqlServer" + }, + "subnet": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-vnet-0')).outputs.subnetResourceIds.value[0].id]" + } + } + } + }, + { + "comments": "This deployment links to the storage.json nested ARM template", + "name": "linkedTemplate-storage", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "vnetCopy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/storage.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "suffix": { + "value": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "containerName": { + "value": "mycontainer" + }, + "defaultNetworkAccessAction": { + "value": "Deny" + } + } + } + }, + { + "comments": "This deployment links to the private_link.json nested ARM template", + "name": "linkedTemplate-storage-private-link", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-storage" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "suffix": { + "value": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 6)]" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "resourceType": { + "value": "Microsoft.Storage/storageAccounts" + }, + "resourceName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-storage')).outputs.storageAccountName.value]" + }, + "groupType": { + "value": "blob" + }, + "subnet": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-vnet-0')).outputs.subnetResourceIds.value[0].id]" + } + } + } + }, + { + "comments": "This deployment links to the private_dns.json nested ARM template", + "name": "linkedTemplate-storage-private-dns-spoke-link", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-storage-private-link" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_dns.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "privateDnsZoneName": { + "value": "[variables('storagePrivateDnsZoneName')]" + }, + "virtualNetworkName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-vnet-1')).outputs.virtualNetworkName.value]" + } + } + } + }, + { + "comments": "This deployment links to the private_dns.json nested ARM template", + "name": "linkedTemplate-storage-private-dns-hub-link", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-storage-private-link", + "linkedTemplate-storage-private-dns-spoke-link" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_dns.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "privateDnsZoneName": { + "value": "[variables('storagePrivateDnsZoneName')]" + }, + "virtualNetworkName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-vnet-0')).outputs.virtualNetworkName.value]" + } + } + } + }, + { + "comments": "This deployment links to the private_link_ipconfigs.json nested ARM template", + "name": "linkedTemplate-storage-private-link-ipconfigs", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-storage-private-dns-hub-link" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link_ipconfigs.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "privateDnsZoneName": { + "value": "[variables('storagePrivateDnsZoneName')]" + }, + "privateLinkNicResource": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-storage-private-link')).outputs.privateLinkNicResource.value]" + }, + "privateDnsRecordTemplateUri": { + "value": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/dns_record.json', parameters('_artifactsLocationSasToken')))]" + }, + "privateLinkNicIpConfigTemplateUri": { + "value": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link_ipconfigs_helper.json', parameters('_artifactsLocationSasToken')))]" + } + } + } + }, + { + "comments": "This deployment links to the private_dns.json nested ARM template", + "name": "linkedTemplate-sqldb-private-dns-spoke-link", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-sqldb-private-link" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_dns.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "privateDnsZoneName": { + "value": "[variables('sqlPrivateDnsZoneName')]" + }, + "virtualNetworkName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-vnet-1')).outputs.virtualNetworkName.value]" + } + } + } + }, + { + "comments": "This deployment links to the private_dns.json nested ARM template", + "name": "linkedTemplate-sqldb-private-dns-hub-link", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-sqldb-private-link", + "linkedTemplate-sqldb-private-dns-spoke-link" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_dns.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "privateDnsZoneName": { + "value": "[variables('sqlPrivateDnsZoneName')]" + }, + "virtualNetworkName": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-vnet-0')).outputs.virtualNetworkName.value]" + } + } + } + }, + { + "comments": "This deployment links to the private_link_ipconfig.json nested ARM template", + "name": "linkedTemplate-sqldb-private-link-ipconfigs", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "linkedTemplate-sqldb-private-dns-hub-link" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link_ipconfigs.json', parameters('_artifactsLocationSasToken')))]" + }, + "parameters": { + "privateDnsZoneName": { + "value": "[variables('sqlPrivateDnsZoneName')]" + }, + "privateLinkNicResource": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'linkedTemplate-sqldb-private-link')).outputs.privateLinkNicResource.value]" + }, + "privateDnsRecordTemplateUri": { + "value": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/dns_record.json', parameters('_artifactsLocationSasToken')))]" + }, + "privateLinkNicIpConfigTemplateUri": { + "value": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/private_link_ipconfigs_helper.json', parameters('_artifactsLocationSasToken')))]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT877 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT877 new file mode 100644 index 0000000..278b29e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT877 @@ -0,0 +1,416 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-sql-docdb-search/azuredeploy.json", + "/demos/web-app-sql-docdb-search/azuredeploy.parameters.json" + ], + "timestamp": 1642962902435, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-sql-docdb-search/azuredeploy.json", + "/demos/web-app-sql-docdb-search/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT877", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.documentdb/databaseaccounts", + "microsoft.search/searchservices", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT877", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "databaseAccountName": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "The Azure Cosmos DB database account name." + }, + "value": "GEN-UNIQUE-11" + }, + "consistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "Strong", + "Session", + "BoundedStaleness" + ], + "metadata": { + "description": "The Azure Cosmos DB default consistency level for this account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "minValue": 10, + "maxValue": 1000, + "defaultValue": 10, + "metadata": { + "description": "When consistencyLevel is set to BoundedStaleness, then this value is required, otherwise it can be ignored." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "minValue": 5, + "maxValue": 600, + "defaultValue": 5, + "metadata": { + "description": "When consistencyLevel is set to BoundedStaleness, then this value is required, otherwise it can be ignored." + } + }, + "sqlServerAdminLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The SQL server admin username." + }, + "value": "GEN-UNIQUE-8" + }, + "sqlServerAdminLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The SQL server admin password" + }, + "value": "GEN-PASSWORD" + }, + "sqlDatabaseName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The SQL database name" + }, + "value": "GEN-UNIQUE-8" + }, + "sqlDatabaseCollation": { + "type": "string", + "minLength": 1, + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "The SQL database collation" + } + }, + "sqlDatabaseEdition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "The SQL server edition" + } + }, + "sqldatabaseRequestedServiceObjectiveName": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "S0", + "S1", + "S2", + "P1", + "P2", + "P3" + ], + "metadata": { + "description": "Describes the performance level for Edition" + } + }, + "webAppName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the Web App" + }, + "value": "GEN-UNIQUE-10" + }, + "webAppSKU": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "S1" + ], + "metadata": { + "description": "The Web App pricing tier" + } + }, + "workerSize": { + "type": "string", + "defaultValue": "0", + "allowedValues": [ + "0", + "1", + "2" + ], + "metadata": { + "description": "The Web App worker size" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage account type" + } + }, + "azureSearchname": { + "type": "string", + "metadata": { + "description": "The azure search instance name" + }, + "value": "GEN-UNIQUE-9" + }, + "azureSearchSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standard", + "standard2" + ], + "metadata": { + "description": "The azure search instance tier." + } + }, + "azureSearchReplicaCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "metadata": { + "description": "The number of search replicas" + } + }, + "azureSearchPartitionCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 3, + 4, + 6, + 12 + ], + "metadata": { + "description": "The number of search partitions" + } + }, + "documentDBOfferType": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard" + ], + "metadata": { + "description": "The Azure Cosmos DB offer type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "insightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Insights." + }, + "value": "centralus" + } + }, + "variables": { + "sqlServerName": "[concat(uniquestring(resourceGroup().id), 'sqlserver')]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'storage')]" + }, + "resources": [ + { + "apiVersion": "2020-09-01", + "type": "Microsoft.DocumentDB/databaseAccounts", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "DocumentDB" + }, + "properties": { + "name": "GEN-UNIQUE-11", + "databaseAccountOfferType": "Standard", + "consistencyPolicy": { + "defaultConsistencyLevel": "Session", + "maxStalenessPrefix": 10, + "maxIntervalInSeconds": 5 + }, + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0 + } + ] + } + }, + { + "name": "[variables('sqlServerName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01-preview", + "tags": { + "displayName": "SQL Server" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "GEN-UNIQUE-8", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01-preview", + "dependsOn": [ + "[variables('sqlServerName')]" + ], + "tags": { + "displayName": "SQL Database" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + } + ] + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "tags": { + "displayName": "App Service Plan" + }, + "sku": { + "name": "F1" + }, + "properties": { + "name": "GEN-UNIQUE-10", + "workerSize": "0", + "numberOfWorkers": 1 + } + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE-10" + ], + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('webAppName'))]": "Resource", + "displayName": "Web App" + }, + "properties": { + "name": "GEN-UNIQUE-10", + "serverFarmId": "Microsoft.Web/serverfarms//GEN-UNIQUE-10" + }, + "resources": [] + }, + { + "name": "[variables('storageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-9", + "type": "Microsoft.Search/searchServices", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Azure Search" + }, + "sku": { + "name": "azureSearchsku" + }, + "properties": { + "replicaCount": "azureSearchreplicaCount", + "partitionCount": "azureSearchpartitionCount" + } + }, + { + "name": "appinsights", + "type": "Microsoft.Insights/components", + "location": "centralus", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE-10" + ], + "tags": { + "displayName": "Application Insights" + }, + "properties": { + "applicationId": "GEN-UNIQUE-10" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT878 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT878 new file mode 100644 index 0000000..ea987e2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT878 @@ -0,0 +1,416 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/web-app-sql-docdb-search/azuredeploy.json", + "/demos/web-app-sql-docdb-search/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962902441, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/web-app-sql-docdb-search/azuredeploy.json", + "/demos/web-app-sql-docdb-search/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT878", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.sql/servers", + "microsoft.documentdb/databaseaccounts", + "microsoft.search/searchservices", + "microsoft.storage/storageaccounts", + "microsoft.web/serverfarms", + "microsoft.insights/components" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT878", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "databaseAccountName": { + "type": "string", + "minLength": 3, + "metadata": { + "description": "The Azure Cosmos DB database account name." + }, + "value": "GEN-UNIQUE-11" + }, + "consistencyLevel": { + "type": "string", + "defaultValue": "Session", + "allowedValues": [ + "Eventual", + "Strong", + "Session", + "BoundedStaleness" + ], + "metadata": { + "description": "The Azure Cosmos DB default consistency level for this account." + } + }, + "maxStalenessPrefix": { + "type": "int", + "minValue": 10, + "maxValue": 1000, + "defaultValue": 10, + "metadata": { + "description": "When consistencyLevel is set to BoundedStaleness, then this value is required, otherwise it can be ignored." + } + }, + "maxIntervalInSeconds": { + "type": "int", + "minValue": 5, + "maxValue": 600, + "defaultValue": 5, + "metadata": { + "description": "When consistencyLevel is set to BoundedStaleness, then this value is required, otherwise it can be ignored." + } + }, + "sqlServerAdminLogin": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The SQL server admin username." + }, + "value": "GEN-UNIQUE-8" + }, + "sqlServerAdminLoginPassword": { + "type": "securestring", + "metadata": { + "description": "The SQL server admin password" + }, + "value": "GEN-PASSWORD" + }, + "sqlDatabaseName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The SQL database name" + }, + "value": "GEN-UNIQUE-8" + }, + "sqlDatabaseCollation": { + "type": "string", + "minLength": 1, + "defaultValue": "SQL_Latin1_General_CP1_CI_AS", + "metadata": { + "description": "The SQL database collation" + } + }, + "sqlDatabaseEdition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "The SQL server edition" + } + }, + "sqldatabaseRequestedServiceObjectiveName": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "S0", + "S1", + "S2", + "P1", + "P2", + "P3" + ], + "metadata": { + "description": "Describes the performance level for Edition" + } + }, + "webAppName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the Web App" + }, + "value": "GEN-UNIQUE-10" + }, + "webAppSKU": { + "type": "string", + "defaultValue": "F1", + "allowedValues": [ + "F1", + "D1", + "B1", + "S1" + ], + "metadata": { + "description": "The Web App pricing tier" + } + }, + "workerSize": { + "type": "string", + "defaultValue": "0", + "allowedValues": [ + "0", + "1", + "2" + ], + "metadata": { + "description": "The Web App worker size" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_ZRS", + "Standard_GRS", + "Standard_RAGRS", + "Premium_LRS" + ], + "metadata": { + "description": "The storage account type" + } + }, + "azureSearchname": { + "type": "string", + "metadata": { + "description": "The azure search instance name" + }, + "value": "GEN-UNIQUE-9" + }, + "azureSearchSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standard", + "standard2" + ], + "metadata": { + "description": "The azure search instance tier." + } + }, + "azureSearchReplicaCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "metadata": { + "description": "The number of search replicas" + } + }, + "azureSearchPartitionCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 3, + 4, + 6, + 12 + ], + "metadata": { + "description": "The number of search partitions" + } + }, + "documentDBOfferType": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard" + ], + "metadata": { + "description": "The Azure Cosmos DB offer type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "insightsLocation": { + "type": "string", + "metadata": { + "description": "Location for Insights." + }, + "value": "usgovvirginia" + } + }, + "variables": { + "sqlServerName": "[concat(uniquestring(resourceGroup().id), 'sqlserver')]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'storage')]" + }, + "resources": [ + { + "apiVersion": "2020-09-01", + "type": "Microsoft.DocumentDB/databaseAccounts", + "name": "GEN-UNIQUE-11", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "DocumentDB" + }, + "properties": { + "name": "GEN-UNIQUE-11", + "databaseAccountOfferType": "Standard", + "consistencyPolicy": { + "defaultConsistencyLevel": "Session", + "maxStalenessPrefix": 10, + "maxIntervalInSeconds": 5 + }, + "locations": [ + { + "locationName": "[resourceGroup().location]", + "failoverPriority": 0 + } + ] + } + }, + { + "name": "[variables('sqlServerName')]", + "type": "Microsoft.Sql/servers", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01-preview", + "tags": { + "displayName": "SQL Server" + }, + "properties": { + "administratorLogin": "GEN-UNIQUE-8", + "administratorLoginPassword": "GEN-PASSWORD", + "version": "12.0" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallrules", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "GEN-UNIQUE-8", + "type": "databases", + "location": "[resourceGroup().location]", + "apiVersion": "2020-11-01-preview", + "dependsOn": [ + "[variables('sqlServerName')]" + ], + "tags": { + "displayName": "SQL Database" + }, + "properties": { + "collation": "SQL_Latin1_General_CP1_CI_AS", + "edition": "Basic", + "maxSizeBytes": "1073741824", + "requestedServiceObjectiveName": "Basic" + } + } + ] + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Web/serverfarms", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "tags": { + "displayName": "App Service Plan" + }, + "sku": { + "name": "F1" + }, + "properties": { + "name": "GEN-UNIQUE-10", + "workerSize": "0", + "numberOfWorkers": 1 + } + }, + { + "name": "GEN-UNIQUE-10", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Web/serverfarms/GEN-UNIQUE-10" + ], + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('webAppName'))]": "Resource", + "displayName": "Web App" + }, + "properties": { + "name": "GEN-UNIQUE-10", + "serverFarmId": "Microsoft.Web/serverfarms//GEN-UNIQUE-10" + }, + "resources": [] + }, + { + "name": "[variables('storageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "location": "[resourceGroup().location]", + "apiVersion": "2021-02-01", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + } + }, + { + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE-9", + "type": "Microsoft.Search/searchServices", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Azure Search" + }, + "sku": { + "name": "azureSearchsku" + }, + "properties": { + "replicaCount": "azureSearchreplicaCount", + "partitionCount": "azureSearchpartitionCount" + } + }, + { + "name": "appinsights", + "type": "Microsoft.Insights/components", + "location": "usgovvirginia", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "Microsoft.Web/sites/GEN-UNIQUE-10" + ], + "tags": { + "displayName": "Application Insights" + }, + "properties": { + "applicationId": "GEN-UNIQUE-10" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT879 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT879 new file mode 100644 index 0000000..b546ccc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT879 @@ -0,0 +1,763 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/nested/disksSelector.json" + ], + "timestamp": 1642962902467, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/disksSelector.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT879", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT879", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "numDataDisks": { + "type": "string", + "allowedValues": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "32", + "64" + ], + "metadata": { + "description": "This parameter allows the user to select the number of disks they want" + } + }, + "diskCaching": { + "type": "string", + "allowedValues": [ + "None", + "ReadOnly", + "ReadWrite" + ], + "metadata": { + "description": "Caching type for the data disks" + } + }, + "diskSizeGB": { + "type": "int", + "minValue": 1, + "maxValue": 1023, + "metadata": { + "description": "Size of the data disks" + } + } + }, + "variables": { + "disksArray": { + "1": "(dataDisks)[1]", + "2": "[concat(variables('dataDisks')['1'], variables('dataDisks')['2'])]", + "3": "[concat(variables('dataDisks')['1'], variables('dataDisks')['2'], variables('dataDisks')['3'])]", + "4": "(diskDeltas)[4delta]", + "5": "[concat(variables('diskDeltas')['4delta'], variables('dataDisks')['5'])]", + "6": "[concat(variables('diskDeltas')['4delta'], variables('dataDisks')['5'], variables('dataDisks')['6'])]", + "7": "[concat(variables('diskDeltas')['4delta'], variables('dataDisks')['5'], variables('dataDisks')['6'], variables('dataDisks')['7'])]", + "8": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'])]", + "9": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('dataDisks')['9'])]", + "10": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('dataDisks')['9'], variables('dataDisks')['10'])]", + "11": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('dataDisks')['9'], variables('dataDisks')['10'], variables('dataDisks')['11'])]", + "12": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'])]", + "13": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('dataDisks')['13'])]", + "14": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('dataDisks')['13'], variables('dataDisks')['14'])]", + "15": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('dataDisks')['13'], variables('dataDisks')['14'], variables('dataDisks')['15'])]", + "16": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('diskDeltas')['16delta'])]", + "32": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('diskDeltas')['16delta'], variables('diskDeltas')['32delta'])]", + "64": "[concat(variables('diskDeltas')['4delta'], variables('diskDeltas')['8delta'], variables('diskDeltas')['12delta'], variables('diskDeltas')['16delta'], variables('diskDeltas')['32delta'], variables('diskDeltas')['64delta'])]" + }, + "dataDisks": { + "1": [ + { + "name": "datadisk1", + "lun": 0, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "2": [ + { + "name": "datadisk2", + "lun": 1, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "3": [ + { + "name": "datadisk3", + "lun": 2, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "4": [ + { + "name": "datadisk4", + "lun": 3, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "5": [ + { + "name": "datadisk5", + "lun": 4, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "6": [ + { + "name": "datadisk6", + "lun": 5, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "7": [ + { + "name": "datadisk7", + "lun": 6, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "8": [ + { + "name": "datadisk8", + "lun": 7, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "9": [ + { + "name": "datadisk9", + "lun": 8, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "10": [ + { + "name": "datadisk10", + "lun": 9, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "11": [ + { + "name": "datadisk11", + "lun": 10, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "12": [ + { + "name": "datadisk12", + "lun": 11, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "13": [ + { + "name": "datadisk13", + "lun": 12, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "14": [ + { + "name": "datadisk14", + "lun": 13, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "15": [ + { + "name": "datadisk15", + "lun": 14, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "16": [ + { + "name": "datadisk16", + "lun": 15, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "17": [ + { + "name": "datadisk17", + "lun": 16, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "18": [ + { + "name": "datadisk18", + "lun": 17, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "19": [ + { + "name": "datadisk19", + "lun": 18, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "20": [ + { + "name": "datadisk20", + "lun": 19, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "21": [ + { + "name": "datadisk21", + "lun": 20, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "22": [ + { + "name": "datadisk22", + "lun": 21, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "23": [ + { + "name": "datadisk23", + "lun": 22, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "24": [ + { + "name": "datadisk24", + "lun": 23, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "25": [ + { + "name": "datadisk25", + "lun": 24, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "26": [ + { + "name": "datadisk26", + "lun": 25, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "27": [ + { + "name": "datadisk27", + "lun": 26, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "28": [ + { + "name": "datadisk28", + "lun": 27, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "29": [ + { + "name": "datadisk29", + "lun": 28, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "30": [ + { + "name": "datadisk30", + "lun": 29, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "31": [ + { + "name": "datadisk31", + "lun": 30, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "32": [ + { + "name": "datadisk32", + "lun": 31, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "33": [ + { + "name": "datadisk33", + "lun": 32, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "34": [ + { + "name": "datadisk34", + "lun": 33, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "35": [ + { + "name": "datadisk35", + "lun": 34, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "36": [ + { + "name": "datadisk36", + "lun": 35, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "37": [ + { + "name": "datadisk37", + "lun": 36, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "38": [ + { + "name": "datadisk38", + "lun": 37, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "39": [ + { + "name": "datadisk39", + "lun": 38, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "40": [ + { + "name": "datadisk40", + "lun": 39, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "41": [ + { + "name": "datadisk41", + "lun": 40, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "42": [ + { + "name": "datadisk42", + "lun": 41, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "43": [ + { + "name": "datadisk43", + "lun": 42, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "44": [ + { + "name": "datadisk44", + "lun": 43, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "45": [ + { + "name": "datadisk45", + "lun": 44, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "46": [ + { + "name": "datadisk46", + "lun": 45, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "47": [ + { + "name": "datadisk47", + "lun": 46, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "48": [ + { + "name": "datadisk48", + "lun": 47, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "49": [ + { + "name": "datadisk49", + "lun": 48, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "50": [ + { + "name": "datadisk50", + "lun": 49, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "51": [ + { + "name": "datadisk51", + "lun": 50, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "52": [ + { + "name": "datadisk52", + "lun": 51, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "53": [ + { + "name": "datadisk53", + "lun": 52, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "54": [ + { + "name": "datadisk54", + "lun": 53, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "55": [ + { + "name": "datadisk55", + "lun": 54, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "56": [ + { + "name": "datadisk56", + "lun": 55, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "57": [ + { + "name": "datadisk57", + "lun": 56, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "58": [ + { + "name": "datadisk58", + "lun": 57, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "59": [ + { + "name": "datadisk59", + "lun": 58, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "60": [ + { + "name": "datadisk60", + "lun": 59, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "61": [ + { + "name": "datadisk61", + "lun": 60, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "62": [ + { + "name": "datadisk62", + "lun": 61, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "63": [ + { + "name": "datadisk63", + "lun": 62, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ], + "64": [ + { + "name": "datadisk64", + "lun": 63, + "createOption": "Empty", + "caching": "diskCaching", + "diskSizeGB": "diskSizeGB" + } + ] + }, + "diskDeltas": { + "4delta": [ + "(dataDisks)[1][0]", + "(dataDisks)[2][0]", + "(dataDisks)[3][0]", + "(dataDisks)[4][0]" + ], + "8delta": [ + "(dataDisks)[5][0]", + "(dataDisks)[6][0]", + "(dataDisks)[7][0]", + "(dataDisks)[8][0]" + ], + "12delta": [ + "(dataDisks)[9][0]", + "(dataDisks)[10][0]", + "(dataDisks)[11][0]", + "(dataDisks)[12][0]" + ], + "16delta": [ + "(dataDisks)[13][0]", + "(dataDisks)[14][0]", + "(dataDisks)[15][0]", + "(dataDisks)[16][0]" + ], + "32delta": [ + "(dataDisks)[17][0]", + "(dataDisks)[18][0]", + "(dataDisks)[19][0]", + "(dataDisks)[20][0]", + "(dataDisks)[21][0]", + "(dataDisks)[22][0]", + "(dataDisks)[23][0]", + "(dataDisks)[24][0]", + "(dataDisks)[25][0]", + "(dataDisks)[26][0]", + "(dataDisks)[27][0]", + "(dataDisks)[28][0]", + "(dataDisks)[29][0]", + "(dataDisks)[30][0]", + "(dataDisks)[31][0]", + "(dataDisks)[32][0]" + ], + "64delta": [ + "(dataDisks)[33][0]", + "(dataDisks)[34][0]", + "(dataDisks)[35][0]", + "(dataDisks)[36][0]", + "(dataDisks)[37][0]", + "(dataDisks)[38][0]", + "(dataDisks)[39][0]", + "(dataDisks)[40][0]", + "(dataDisks)[41][0]", + "(dataDisks)[42][0]", + "(dataDisks)[43][0]", + "(dataDisks)[44][0]", + "(dataDisks)[45][0]", + "(dataDisks)[46][0]", + "(dataDisks)[47][0]", + "(dataDisks)[48][0]", + "(dataDisks)[49][0]", + "(dataDisks)[50][0]", + "(dataDisks)[51][0]", + "(dataDisks)[52][0]", + "(dataDisks)[53][0]", + "(dataDisks)[54][0]", + "(dataDisks)[55][0]", + "(dataDisks)[56][0]", + "(dataDisks)[57][0]", + "(dataDisks)[58][0]", + "(dataDisks)[59][0]", + "(dataDisks)[60][0]", + "(dataDisks)[61][0]", + "(dataDisks)[62][0]", + "(dataDisks)[63][0]", + "(dataDisks)[64][0]" + ] + } + }, + "resources": [], + "outputs": { + "dataDiskArray": { + "type": "array", + "value": "[variables('disksArray')[parameters('numDataDisks')]]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT88 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT88 new file mode 100644 index 0000000..249f918 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT88 @@ -0,0 +1,317 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/vm-5-datadisks.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962885845, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-on-centos/vm-5-datadisks.json", + "/application-workloads/cloudera/cloudera-on-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT88", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT88", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string", + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "numberOfDataNodes": { + "value": 3 + }, + "masterStorageAccountType": { + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "value": "GEN-UNIQUE-10" + }, + "subnetName": { + "value": "GEN-UNIQUE-10" + }, + "tshirtSize": { + "value": "Eval" + }, + "vmSize": { + "value": "Standard_D16s_v3" + }, + "vmImage": { + "value": "ClouderaCentOS6_7" + }, + "company": { + "value": "company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Storage" + } + }, + "variables": { + "singleQuote": "'", + "masterIP": "networkSpec", + "workerIP": "networkSpec", + "vmName": "GEN-UNIQUE-10-dn", + "nicName": "GEN-UNIQUE-10-dn-nic", + "publicIPAddressName": "GEN-UNIQUE-10-dn-publicIP", + "securityGroupName": "GEN-UNIQUE-10-dn-sg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "GEN-UNIQUE-10-dn-sg", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "GEN-UNIQUE-10-dn-publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "publicIPLoop", + "count": "vmCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE-10-dncopyIndex()" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "GEN-UNIQUE-10-dn-niccopyIndex()", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-dn-publicIPcopyIndex()", + "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-dn-sg" + ], + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(parameters('networkSpec').ipOctet01, add(parameters('networkSpec').ipOctet2, div(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256)), '.', mod(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256))]", + "subnet": { + "id": "vnetID/subnets/networkSpec" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-10-dn-publicIPcopyIndex()" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/GEN-UNIQUE-10-dn-sg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", + "name": "GEN-UNIQUE-10-dncopyIndex()", + "plan": "vmSpec", + "location": "[resourceGroup().location]", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-dn-niccopyIndex()" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/vmSpec" + }, + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "[reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn]", + "adminUsername": "vmSpec", + "adminPassword": "vmSpec", + "linuxConfiguration": { + "disablePasswordAuthentication": false + } + }, + "storageProfile": { + "imageReference": "vmSpec", + "osDisk": { + "name": "GEN-UNIQUE-10-dncopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk1", + "diskSizeGB": 512, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 2, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 3, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk5", + "diskSizeGB": 1023, + "lun": 4, + "createOption": "Empty" + }, + { + "name": "GEN-UNIQUE-10-dncopyIndex()_DataDisk6", + "diskSizeGB": 1023, + "lun": 5, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/GEN-UNIQUE-10-dn-niccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "GEN-UNIQUE-10-dncopyIndex()/prepareDisks", + "location": "[resourceGroup().location]", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/GEN-UNIQUE-10-dncopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/prepare-datanode-disks.sh", + "scriptsUri/scripts/initialize-node.sh" + ], + "commandToExecute": "[concat('sh initialize-node.sh ', variables('singleQuote'), variables('masterIP'), variables('singleQuote'), ' ', variables('singleQuote'), variables('workerIP'), variables('singleQuote'), ' ', variables('singleQuote'), parameters('dnsNamePrefix'), variables('singleQuote'), ' ', variables('singleQuote'), reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').masterNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('clusterSpec').dataNodeCount, variables('singleQuote'), ' ', variables('singleQuote'), parameters('vmSpec').adminUsername, variables('singleQuote'), ' ', 'datanode', ' >> /var/log/cloudera-azure-initialize.log 2>&1')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT880 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT880 new file mode 100644 index 0000000..048ba7a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT880 @@ -0,0 +1,292 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/nested/lb-resources.json" + ], + "timestamp": 1642962902477, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/lb-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT880", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT880", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "webNodeCount": { + "type": "int" + }, + "vmbasename": { + "type": "string" + }, + "dnsname": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "vmSize": { + "type": "string" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "subnet": { + "type": "object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "http", + "properties": { + "description": "Allows Http traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "namespacevmbasenamePublicIp", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsname" + } + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//namespacevmbasenamePublicIp", + "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/namespacevmbasenamePublicIp" + }, + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "dataDisks": [ + { + "name": "namespacevmbasenamevm_DataDisk1", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 0, + "createOption": "Empty", + "caching": "ReadWrite" + }, + { + "name": "namespacevmbasenamevm_DataDisk2", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk3", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk4", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/lbInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm", + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash lb.sh webNodeCount zabbixServerIPAddress" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT881 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT881 new file mode 100644 index 0000000..62d0760 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT881 @@ -0,0 +1,271 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/nested/mysqlMaster-resources.json" + ], + "timestamp": 1642962902485, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/mysqlMaster-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT881", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT881", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mysqlPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "mysql", + "properties": { + "description": "Allows MySQL traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3306", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "dataDisks": [ + { + "name": "namespacevmbasenamevm_DataDisk1", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 0, + "createOption": "Empty", + "caching": "ReadWrite" + }, + { + "name": "namespacevmbasenamevm_DataDisk2", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk3", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk4", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/mysqlMasterInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash mysqlMaster.sh mysqlPassword zabbixServerIPAddress" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT882 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT882 new file mode 100644 index 0000000..23b8db5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT882 @@ -0,0 +1,271 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/nested/mysqlSlave-resources.json" + ], + "timestamp": 1642962902491, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/mysqlSlave-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT882", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT882", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mysqlPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "mysql", + "properties": { + "description": "Allows MySQL traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3306", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "dataDisks": [ + { + "name": "namespacevmbasenamevm_DataDisk1", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 0, + "createOption": "Empty", + "caching": "ReadWrite" + }, + { + "name": "namespacevmbasenamevm_DataDisk2", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk3", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk4", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/mysqlSlaveInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash mysqlSlave.sh mysqlPassword zabbixServerIPAddress" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT883 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT883 new file mode 100644 index 0000000..2486627 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT883 @@ -0,0 +1,268 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/nested/redisMaster-resources.json" + ], + "timestamp": 1642962902498, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/redisMaster-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT883", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT883", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "redis", + "properties": { + "description": "Allows Redis traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6379", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "dataDisks": [ + { + "name": "namespacevmbasenamevm_DataDisk1", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 0, + "createOption": "Empty", + "caching": "ReadWrite" + }, + { + "name": "namespacevmbasenamevm_DataDisk2", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk3", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk4", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/redisMasterInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash redisMaster.sh zabbixServerIPAddress" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT884 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT884 new file mode 100644 index 0000000..400832b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT884 @@ -0,0 +1,268 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/nested/redisSlave-resources.json" + ], + "timestamp": 1642962902504, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/redisSlave-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT884", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT884", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "redis", + "properties": { + "description": "Allows Redis traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6379", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "dataDisks": [ + { + "name": "namespacevmbasenamevm_DataDisk1", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 0, + "createOption": "Empty", + "caching": "ReadWrite" + }, + { + "name": "namespacevmbasenamevm_DataDisk2", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk3", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk4", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/redisSlaveInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash redisSlave.sh zabbixServerIPAddress" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT885 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT885 new file mode 100644 index 0000000..7f064c8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT885 @@ -0,0 +1,108 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/nested/shared-resources.json" + ], + "timestamp": 1642962902511, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/shared-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT885", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT885", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "namespace": { + "type": "string", + "metadata": { + "Description": "namespace" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "namespaceset", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + }, + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT886 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT886 new file mode 100644 index 0000000..6d72f58 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT886 @@ -0,0 +1,271 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/nested/web-resources.json" + ], + "timestamp": 1642962902516, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/nested/web-resources.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT886", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT886", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string" + }, + "mysqlPassword": { + "type": "securestring" + }, + "namespace": { + "type": "string" + }, + "vmbasename": { + "type": "string" + }, + "osSettings": { + "type": "object" + }, + "vmSize": { + "type": "string" + }, + "sizeOfDataDiskInGB": { + "type": "int" + }, + "subnet": { + "type": "object" + }, + "zabbixServerIPAddress": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string" + }, + "adminPasswordOrKey": { + "type": "securestring" + } + }, + "variables": { + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet", + "securityGroupName": "namespacevmbasenamensg", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/adminUsername/.ssh/authorized_keys", + "keyData": "adminPasswordOrKey" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "namespacevmbasenamensg", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "http", + "properties": { + "description": "Allows Web traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "zabbixAgent1", + "properties": { + "description": "Allows zabbix monitoring", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10051", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "namespacevmbasenamenic", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/subnet/subnet" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/namespacevmbasenamensg" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "namespacevmbasenamevm", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//namespacevmbasenamenic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "vmbasenamevm", + "adminUsername": "adminUsername", + "adminPassword": "adminPasswordOrKey", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "osSettings", + "dataDisks": [ + { + "name": "namespacevmbasenamevm_DataDisk1", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 0, + "createOption": "Empty", + "caching": "ReadWrite" + }, + { + "name": "namespacevmbasenamevm_DataDisk2", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 1, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk3", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 2, + "caching": "ReadWrite", + "createOption": "Empty" + }, + { + "name": "namespacevmbasenamevm_DataDisk4", + "diskSizeGB": "sizeOfDataDiskInGB", + "lun": 3, + "caching": "ReadWrite", + "createOption": "Empty" + } + ], + "osDisk": { + "name": "namespacevmbasenamevm_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/namespacevmbasenamenic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "namespacevmbasenamevm/webInstall", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//namespacevmbasenamevm" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "osSettings" + }, + "protectedSettings": { + "commandToExecute": "bash web.sh mysqlPassword adminUsername zabbixServerIPAddress" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT887 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT887 new file mode 100644 index 0000000..c774b7f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT887 @@ -0,0 +1,708 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/website-cluster-centos/azuredeploy.json", + "/demos/website-cluster-centos/azuredeploy.parameters.json" + ], + "timestamp": 1642962902524, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/website-cluster-centos/azuredeploy.json", + "/demos/website-cluster-centos/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT887", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT887", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "type": "securestring", + "metadata": { + "description": "MySQL password used when provisioning MySQL Clusters" + }, + "value": "GEN-PASSWORD" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "DNS Name for the publicly accessible primary node. Must be lowercase. It should match with the following regular expression: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$ or it will raise an error." + }, + "value": "GEN-UNIQUE" + }, + "centOsVersion": { + "type": "string", + "defaultValue": "7.0", + "allowedValues": [ + "6.5", + "6.6", + "6.7", + "7.0", + "7.1", + "7.2" + ], + "metadata": { + "description": "The CentOS version for the VM. This will pick a fully patched image of this given CentOS version." + }, + "value": "7.2" + }, + "webNodeCount": { + "type": "int", + "minValue": 1, + "maxValue": 11, + "defaultValue": 3, + "metadata": { + "description": "Number of web server nodes" + }, + "value": 3 + }, + "zabbixServerIPAddress": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The zabbix server IP which will monitor the nodes' status. Null means no zabbix server." + }, + "value": "Null" + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "lbNodeVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the load balancer node." + } + }, + "webNodeVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the web node." + } + }, + "dbNodeVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the database node." + } + } + }, + "variables": { + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "lbTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/lb-resources.json', parameters('_artifactsLocationSasToken')))]", + "webTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/web-resources.json', parameters('_artifactsLocationSasToken')))]", + "redisMasterTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/redisMaster-resources.json', parameters('_artifactsLocationSasToken')))]", + "redisSlaveTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/redisSlave-resources.json', parameters('_artifactsLocationSasToken')))]", + "mysqlMasterTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/mysqlMaster-resources.json', parameters('_artifactsLocationSasToken')))]", + "mysqlSlaveTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('nested/mysqlSlave-resources.json', parameters('_artifactsLocationSasToken')))]", + "lbNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/lb.sh', parameters('_artifactsLocationSasToken')))]", + "webNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/web.sh', parameters('_artifactsLocationSasToken')))]", + "redisMasterNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/redisMaster.sh', parameters('_artifactsLocationSasToken')))]", + "redisSlaveNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/redisSlave.sh', parameters('_artifactsLocationSasToken')))]", + "mysqlMasterNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/mysqlMaster.sh', parameters('_artifactsLocationSasToken')))]", + "mysqlSlaveNodeScript": "[uri(parameters('_artifactsLocation'), concat('scripts/mysqlSlave.sh', parameters('_artifactsLocationSasToken')))]", + "namespace": "websiteCluster-", + "virtualNetworkName": "[concat('vnet-', uniqueString(resourceGroup().id))]", + "sizeOfDataDiskInGB": 100, + "networkSettings": { + "virtualNetworkName": "[variables('virtualNetworkName')]", + "addressPrefix": "10.0.0.0/24", + "subnet": { + "web": { + "name": "web", + "prefix": "10.0.0.0/28", + "vnet": "[variables('virtualNetworkName')]" + }, + "mysql": { + "name": "mysql", + "prefix": "10.0.0.16/28", + "vnet": "[variables('virtualNetworkName')]" + }, + "redis": { + "name": "redis", + "prefix": "10.0.0.32/28", + "vnet": "[variables('virtualNetworkName')]" + }, + "haproxy": { + "name": "haproxy", + "prefix": "10.0.0.48/28", + "vnet": "[variables('virtualNetworkName')]" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "primaryIp": "10.0.0.240" + } + }, + "lbOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/lb.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "webOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/web.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "redisMasterOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/redisMaster.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "redisSlaveOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/redisSlave.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "mysqlMasterOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/mysqlMaster.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "mysqlSlaveOsSettings": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/mysqlSlave.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "resources": [ + { + "name": "shared", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "[variables('virtualNetworkName')]", + "addressPrefix": "10.0.0.0/24", + "subnet": { + "web": { + "name": "web", + "prefix": "10.0.0.0/28", + "vnet": "[variables('virtualNetworkName')]" + }, + "mysql": { + "name": "mysql", + "prefix": "10.0.0.16/28", + "vnet": "[variables('virtualNetworkName')]" + }, + "redis": { + "name": "redis", + "prefix": "10.0.0.32/28", + "vnet": "[variables('virtualNetworkName')]" + }, + "haproxy": { + "name": "haproxy", + "prefix": "10.0.0.48/28", + "vnet": "[variables('virtualNetworkName')]" + } + }, + "statics": { + "clusterRange": { + "base": "10.0.0.", + "start": 5 + }, + "primaryIp": "10.0.0.240" + } + } + }, + "namespace": { + "value": "websiteCluster-" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "webNodecopyindex()", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "copy": { + "name": "vmLoop", + "count": 3 + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/web-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "websiteCluster-" + }, + "vmbasename": { + "value": "webcopyindex()" + }, + "subnet": { + "value": "(networkSettings).subnet.web" + }, + "sizeOfDataDiskInGB": { + "value": 100 + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/web.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "redisMasterNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/redisMaster-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "websiteCluster-" + }, + "vmbasename": { + "value": "redisMaster" + }, + "subnet": { + "value": "(networkSettings).subnet.redis" + }, + "sizeOfDataDiskInGB": { + "value": 100 + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/redisMaster.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "redisSlaveNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//redisMasterNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/redisSlave-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "websiteCluster-" + }, + "vmbasename": { + "value": "redisSlave" + }, + "subnet": { + "value": "(networkSettings).subnet.redis" + }, + "sizeOfDataDiskInGB": { + "value": 100 + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/redisSlave.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "mysqlMasterNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/mysqlMaster-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "websiteCluster-" + }, + "vmbasename": { + "value": "mysqlMaster" + }, + "subnet": { + "value": "(networkSettings).subnet.mysql" + }, + "sizeOfDataDiskInGB": { + "value": 100 + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/mysqlMaster.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "mysqlSlaveNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//mysqlMasterNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/mysqlSlave-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "mysqlPassword": { + "value": "GEN-PASSWORD" + }, + "namespace": { + "value": "websiteCluster-" + }, + "vmbasename": { + "value": "mysqlSlave" + }, + "subnet": { + "value": "(networkSettings).subnet.mysql" + }, + "sizeOfDataDiskInGB": { + "value": 100 + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/mysqlSlave.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "lbNode", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared", + "Microsoft.Resources/deployments//mysqlSlaveNode" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/lb-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "namespace": { + "value": "websiteCluster-" + }, + "vmbasename": { + "value": "lb" + }, + "dnsname": { + "value": "GEN-UNIQUE" + }, + "subnet": { + "value": "(networkSettings).subnet.haproxy" + }, + "sizeOfDataDiskInGB": { + "value": 100 + }, + "webNodeCount": { + "value": 3 + }, + "vmSize": { + "value": "Standard_D2_v3" + }, + "zabbixServerIPAddress": { + "value": "Null" + }, + "osSettings": { + "value": { + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.2", + "version": "latest" + }, + "scripts": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/lb.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT888 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT888 new file mode 100644 index 0000000..0fd004d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT888 @@ -0,0 +1,400 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "timestamp": 1642962902531, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.loganalytics/workspaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT888", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationsmanagement/solutions", + "microsoft.operationalinsights/workspaces/datasources" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT888", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "omsWorkspaceName": { + "type": "string", + "defaultValue": "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + }, + "omsSolutionsName": { + "type": "array" + }, + "tags": { + "type": "object" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Free", + "Standalone", + "PerNode" + ], + "defaultValue": "Free", + "metadata": { + "description": "Service Tier: Free, Standalone, or PerNode" + } + }, + "dataRetention": { + "type": "int", + "defaultValue": 90, + "minValue": 7, + "maxValue": 730, + "metadata": { + "description": "Number of days of retention. Free plans can only have 7 days, Standalone and OMS plans include 30 days for free" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Default location" + } + } + }, + "resources": [ + { + "name": "[concat('oms-workspace',uniqueString(resourceGroup().id))]", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "location": "location", + "tags": "tags", + "properties": { + "sku": { + "name": "Free" + }, + "retention": 90 + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationsManagement/solutions", + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "apiVersion": "2015-11-01-preview", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "plan": { + "name": "[concat(parameters('omsSolutionsName')[copyIndex()], '(', parameters('omsWorkspaceName'), ')')]", + "product": "[concat('OMSGallery/', parameters('omsSolutionsName')[copyIndex()])]", + "promotionCode": "", + "publisher": "Microsoft" + }, + "properties": { + "workspaceResourceId": "Microsoft.OperationalInsights/workspaces/[concat('oms-workspace',uniqueString(resourceGroup().id))]" + } + }, + { + "type": "Microsoft.OperationalInsights/workspaces/datasources", + "kind": "AzureActivityLog", + "name": "[concat(parameters('omsWorkspaceName'), '/', subscription().subscriptionId)]", + "apiVersion": "2020-08-01", + "location": "location", + "dependsOn": [ + "[concat('oms-workspace',uniqueString(resourceGroup().id))]" + ], + "properties": { + "linkedResourceId": "[subscriptionResourceId('microsoft.insights/eventTypes','management')]" + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('omsWorkspaceName')]" + }, + "workspaceId": { + "type": "string", + "value": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspaceName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT889 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT889 new file mode 100644 index 0000000..76b7c50 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT889 @@ -0,0 +1,220 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/applicationgateway.json" + ], + "timestamp": 1642962902539, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/applicationgateway.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT889", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/applicationgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT889", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "applicationGatewaySize": { + "type": "string", + "allowedValues": [ + "WAF_Medium", + "WAF_Large" + ], + "defaultValue": "WAF_Medium", + "metadata": { + "description": "application gateway size" + } + }, + "capacity": { + "type": "int", + "minValue": 2, + "maxValue": 10, + "defaultValue": 2, + "metadata": { + "description": "Number of instances" + } + }, + "wafEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "WAF Enabled" + } + }, + "wafMode": { + "type": "string", + "allowedValues": [ + "Detection", + "Prevention" + ], + "defaultValue": "Detection", + "metadata": { + "description": "WAF Mode" + } + }, + "wafRuleSetType": { + "type": "string", + "allowedValues": [ + "OWASP" + ], + "defaultValue": "OWASP", + "metadata": { + "description": "WAF Rule Set Type" + } + }, + "wafRuleSetVersion": { + "type": "string", + "allowedValues": [ + "2.2.9", + "3.0" + ], + "defaultValue": "3.0", + "metadata": { + "description": "WAF Rule Set Version" + } + }, + "applicationGatewayName": { + "type": "string" + }, + "publicIPRef": { + "type": "string" + }, + "frontendPorts": { + "type": "array" + }, + "gatewayIPConfigurations": { + "type": "array" + }, + "backendAddressPools": { + "type": "array" + }, + "backendHttpSettingsCollection": { + "type": "array" + }, + "httpListeners": { + "type": "array" + }, + "requestRoutingRules": { + "type": "array" + }, + "probes": { + "type": "array" + }, + "omsWorkspaceResourceId": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "name": "applicationGatewayName", + "type": "Microsoft.Network/applicationGateways", + "location": "location", + "properties": { + "sku": { + "name": "WAF_Medium", + "tier": "WAF", + "capacity": 2 + }, + "gatewayIPConfigurations": "gatewayIPConfigurations", + "frontendIPConfigurations": [ + { + "name": "appGatewayFrontendIP", + "properties": { + "PublicIPAddress": { + "id": "publicIPRef" + } + } + } + ], + "frontendPorts": "frontendPorts", + "backendAddressPools": "backendAddressPools", + "backendHttpSettingsCollection": "backendHttpSettingsCollection", + "httpListeners": "httpListeners", + "requestRoutingRules": "requestRoutingRules", + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Detection", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.0" + }, + "probes": "probes", + "sslPolicy": { + "disabledSslProtocols": [ + "TLSv1_0", + "TLSv1_1" + ] + } + }, + "resources": [ + { + "type": "providers/diagnosticSettings", + "name": "Microsoft.Insights/service", + "apiVersion": "2017-05-01-preview", + "dependsOn": [ + "applicationGatewayName" + ], + "properties": { + "workspaceId": "omsWorkspaceResourceId", + "logs": [ + { + "category": "ApplicationGatewayAccessLog", + "enabled": true, + "retentionPolicy": { + "days": 90, + "enabled": true + } + }, + { + "category": "ApplicationGatewayPerformanceLog", + "enabled": true, + "retentionPolicy": { + "days": 90, + "enabled": false + } + }, + { + "category": "ApplicationGatewayFirewallLog", + "enabled": true, + "retentionPolicy": { + "days": 90, + "enabled": false + } + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true, + "retentionPolicy": { + "enabled": false, + "days": 0 + } + } + ] + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT89 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT89 new file mode 100644 index 0000000..ed2b0b1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT89 @@ -0,0 +1,536 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/data-node-ds13.json" + ], + "timestamp": 1642962885892, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/data-node-ds13.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT89", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT89", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "clouderaTags": { + "type": "object" + }, + "tableauTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "masterIP": "networkSpec", + "workerIP": "networkSpec", + "vmName": "dnsNamePrefix-dn", + "nicName": "dnsNamePrefix-dn-nic", + "storageAccountName": "dnstorageAccount", + "publicIPAddressName": "dnsNamePrefix-dn-publicIP", + "securityGroupName": "dnsNamePrefix-dn-sg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "dnsNamePrefix-dn-sg", + "location": "[resourceGroup().location]", + "comments": "Shared Resources Network Security Group Rules", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HDFS.Web.UI", + "properties": { + "description": "Allows HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50070", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "Hiveserver2", + "properties": { + "description": "Allows Hiveserver traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "Hive.Metastore", + "properties": { + "description": "Allows Hive Metastore traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9083", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "Hue", + "properties": { + "description": "Allows Hue traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 104, + "direction": "Inbound" + } + }, + { + "name": "YARN.ResourceManager", + "properties": { + "description": "Allows YARN Resource Manager traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8088", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + }, + { + "name": "YARN.JobHistory.Server", + "properties": { + "description": "Allows YARN JobHistory Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "19888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 106, + "direction": "Inbound" + } + }, + { + "name": "Oozie.Server", + "properties": { + "description": "Allows Oozie Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 107, + "direction": "Inbound" + } + }, + { + "name": "Management.Web.UI", + "properties": { + "description": "Allows Management.Web.UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7180", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 108, + "direction": "Inbound" + } + }, + { + "name": "Navigator", + "properties": { + "description": "Allows Navigator traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7187", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 109, + "direction": "Inbound" + } + }, + { + "name": "HDFS.dn.Web.UI", + "properties": { + "description": "Allow HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50075", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "YARN.nm.Web.UI", + "properties": { + "description": "Allow YARN Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8042", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 111, + "direction": "Inbound" + } + }, + { + "name": "Impala.JDBC", + "properties": { + "description": "Allow Impala JDBC traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 112, + "direction": "Inbound" + } + }, + { + "name": "Impala.Shell", + "properties": { + "description": "Allow Impala Shell traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 113, + "direction": "Inbound" + } + }, + { + "name": "RDP", + "properties": { + "description": "Allow RDP Traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 114, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "copyIndex()dnstorageAccount", + "location": "[resourceGroup().location]", + "comments": "Data Node storage account configurations", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "storageAccountLoop", + "count": "vmCount" + }, + "properties": { + "accountType": "storageAccount" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "dnsNamePrefix-dn-publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "comments": "Data Node Public IP Address configuration", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "publicIPLoop", + "count": "vmCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNamePrefix-dncopyIndex()" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "dnsNamePrefix-dn-niccopyIndex()", + "location": "[resourceGroup().location]", + "comments": "Data Node network interface configuration", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/dnsNamePrefix-dn-publicIPcopyIndex()", + "Microsoft.Network/networkSecurityGroups/dnsNamePrefix-dn-sg" + ], + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(parameters('networkSpec').ipOctet01, add(parameters('networkSpec').ipOctet2, div(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256)), '.', mod(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256))]", + "subnet": { + "id": "vnetID/subnets/networkSpec" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dnsNamePrefix-dn-publicIPcopyIndex()" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dnsNamePrefix-dn-sg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "dnsNamePrefix-dncopyIndex()", + "plan": { + "name": "cloudera-centos-6", + "publisher": "cloudera", + "product": "cloudera-centos-6" + }, + "location": "[resourceGroup().location]", + "comments": "Data Node virtual machines configurations", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/dnsNamePrefix-dn-niccopyIndex()", + "Microsoft.Storage/storageAccounts/copyIndex()dnstorageAccount" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/vmSpec" + }, + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "[reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn]", + "adminUsername": "vmSpec", + "adminPassword": "vmSpec", + "linuxConfiguration": { + "disablePasswordAuthentication": "false" + } + }, + "storageProfile": { + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-6", + "sku": "CLOUDERA-CENTOS-6", + "version": "latest" + }, + "osDisk": { + "name": "dnsNamePrefix-dncopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk0", + "diskSizeGB": 512, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk1", + "diskSizeGB": 1023, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 2, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 3, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 4, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk5", + "diskSizeGB": 1023, + "lun": 5, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dnsNamePrefix-dn-niccopyIndex()" + } + ], + "inputEndpoints": [ + { + "enableDirectServerReturn": "False", + "endpointName": "HDFS.dn.Web.UI", + "privatePort": 50075, + "publicPort": 50075, + "protocol": "Tcp" + }, + { + "enableDirectServerReturn": "False", + "endpointName": "YARN.nm.Web.UI", + "privatePort": 8042, + "publicPort": 8042, + "protocol": "Tcp" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "dnsNamePrefix-dncopyIndex()/prepareDisks", + "location": "[resourceGroup().location]", + "comments": "Data Node VM Extensions and scripts to configure the Cloudera cluster", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/dnsNamePrefix-dncopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/prepare-datanode-disks.sh", + "scriptsUri/scripts/initialize-node.sh" + ], + "commandToExecute": "[concat('sh initialize-node.sh \"', variables('masterIP'), '\" \"', variables('workerIP'), '\" \"', parameters('dnsNamePrefix'), '\" \"', reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn, '\" ', parameters('clusterSpec').masterNodeCount, ' ', parameters('clusterSpec').dataNodeCount, ' \"', parameters('vmSpec').adminUsername, '\" ', 'datanode', ' >> /home/$ADMINUSER/initialize-datanode.log 2>&1')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT890 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT890 new file mode 100644 index 0000000..a93e09c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT890 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "timestamp": 1642962902549, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/publicipaddress.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT890", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT890", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publicIPAddressName": { + "type": "string" + }, + "publicIPAddressType": { + "type": "string", + "defaultValue": "Dynamic" + }, + "dnsNameForPublicIP": { + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddressName", + "location": "location", + "tags": "tags", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNameForPublicIP" + } + } + } + ], + "outputs": { + "publicIPAddressName": { + "type": "string", + "value": "[parameters('publicIPAddressName')]" + }, + "publicIPRef": { + "type": "string", + "value": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT891 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT891 new file mode 100644 index 0000000..884da5e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT891 @@ -0,0 +1,73 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "timestamp": 1642962902557, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.network/virtualnetworks.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT891", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT891", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vnetName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "addressPrefix": { + "type": "string" + }, + "subnets": { + "type": "array" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "name": "vnetName", + "apiVersion": "2020-08-01", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "tags": "tags", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "addressPrefix" + ] + }, + "subnets": "subnets" + } + } + ], + "outputs": { + "vnetId": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks',parameters('vnetName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT892 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT892 new file mode 100644 index 0000000..d92f549 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT892 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.auditingsettings.json" + ], + "timestamp": 1642962902566, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.auditingsettings.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT892", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/auditingsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT892", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string" + }, + "storageAccountName": { + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2020-02-02-preview", + "type": "Microsoft.Sql/servers/auditingSettings", + "name": "sqlServerName/default", + "properties": { + "state": "Enabled", + "storageEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-01-01').PrimaryEndpoints.Blob]", + "storageAccountAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-01-01').keys[0].value]", + "retentionDays": 0, + "storageAccountSubscriptionId": "[subscription().subscriptionId]", + "isStorageSecondaryKeyInUse": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT893 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT893 new file mode 100644 index 0000000..6b1ec58 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT893 @@ -0,0 +1,205 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.databases.json" + ], + "timestamp": 1642962902572, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.databases.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT893", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/databases" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT893", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string" + }, + "databaseName": { + "type": "string", + "defaultValue": "contosodb" + }, + "location": { + "type": "string" + }, + "edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Web", + "Business", + "Basic", + "Standard", + "Premium", + "Free", + "Stretch", + "DataWarehouse", + "System", + "System2" + ] + }, + "tags": { + "type": "object" + }, + "omsWorkspaceResourceId": { + "type": "string" + }, + "administratorLogin": { + "type": "string" + }, + "administratorLoginPassword": { + "type": "securestring" + }, + "bacpacuri": { + "type": "string" + }, + "logsRetentionInDays": { + "type": "int", + "defaultValue": 0, + "minValue": 0, + "maxValue": 365, + "metadata": { + "description": "Specifies the number of days that logs are gonna be kept. If you do not want to apply any retention policy and retain data forever, set value to 0." + } + } + }, + "resources": [ + { + "name": "sqlServerName/contosodb", + "type": "Microsoft.Sql/servers/databases", + "apiVersion": "2020-02-02-preview", + "tags": "tags", + "location": "location", + "properties": { + "createMode": "Default", + "edition": "Basic" + }, + "resources": [ + { + "name": "Import", + "type": "extensions", + "apiVersion": "2014-04-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers/databases/sqlServerName/contosodb" + ], + "properties": { + "storageKey": "?", + "storageKeyType": "SharedAccessKey", + "storageUri": "bacpacuri", + "administratorLogin": "administratorLogin", + "administratorLoginPassword": "administratorLoginPassword", + "operationMode": "Import" + } + }, + { + "type": "providers/diagnosticSettings", + "name": "Microsoft.Insights/service", + "dependsOn": [ + "Microsoft.Sql/servers/databases/sqlServerName/contosodb" + ], + "apiVersion": "2017-05-01-preview", + "properties": { + "workspaceId": "omsWorkspaceResourceId", + "logs": [ + { + "category": "QueryStoreRuntimeStatistics", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "QueryStoreWaitStatistics", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "Errors", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "DatabaseWaitStatistics", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "Timeouts", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "Blocks", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + }, + { + "category": "SQLInsights", + "enabled": true, + "retentionPolicy": { + "days": 0, + "enabled": true + } + } + ], + "metrics": [ + { + "timeGrain": "AllMetrics", + "enabled": true, + "retentionPolicy": { + "enabled": true, + "days": 0 + } + } + ] + } + } + ] + } + ], + "outputs": { + "databaseName": { + "type": "string", + "value": "[parameters('databaseName')]" + }, + "dbConnetcionString": { + "type": "string", + "value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', parameters('sqlServerName')),'2020-02-02-preview').fullyQualifiedDomainName,',1433;Initial Catalog=', parameters('databaseName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT894 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT894 new file mode 100644 index 0000000..5cb32ea --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT894 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.securityalertpolicies.json" + ], + "timestamp": 1642962902579, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.securityalertpolicies.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT894", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers/securityalertpolicies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT894", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string" + }, + "storageAccountName": { + "type": "string" + }, + "sendAlertsTo": { + "type": "string", + "defaultValue": "dummy@contoso.com", + "metadata": { + "description": "Specifies the semicolon-separated list of e-mail addresses to which the alert is sent." + } + } + }, + "resources": [ + { + "apiVersion": "2020-02-02-preview", + "type": "Microsoft.Sql/servers/securityAlertPolicies", + "name": "sqlServerName/default", + "properties": { + "state": "Enabled", + "emailAddresses": [ + "dummy@contoso.com" + ], + "storageEndpoint": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-01-01').PrimaryEndpoints.Blob]", + "storageAccountAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-01-01').keys[0].value]", + "retentionDays": 0 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT895 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT895 new file mode 100644 index 0000000..95334a3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT895 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.v12.0.json" + ], + "timestamp": 1642962902584, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.sql/servers.v12.0.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT895", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.sql/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT895", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "sqlServerName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "administratorLogin": { + "type": "string" + }, + "administratorLoginPassword": { + "type": "securestring" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "name": "sqlServerName", + "type": "Microsoft.Sql/servers", + "apiVersion": "2020-02-02-preview", + "location": "location", + "tags": "tags", + "properties": { + "administratorLogin": "administratorLogin", + "administratorLoginPassword": "administratorLoginPassword", + "version": "12.0" + }, + "resources": [ + { + "name": "AllowAllWindowsAzureIps", + "type": "firewallRules", + "location": "location", + "apiVersion": "2015-05-01-preview", + "dependsOn": [ + "Microsoft.Sql/servers/sqlServerName" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + } + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('sqlServerName')]" + }, + "fqdn": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Sql/servers/', parameters('sqlServerName')),'2020-02-02-preview').fullyQualifiedDomainName]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT896 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT896 new file mode 100644 index 0000000..cf32da1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT896 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.storage/storageaccounts.json" + ], + "timestamp": 1642962902590, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.storage/storageaccounts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT896", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT896", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string" + }, + "sku": { + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_RAGRS", + "Standard_ZRS", + "Premium_LRS" + ], + "defaultValue": "Standard_LRS", + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "name": "storageAccountName", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "location": "location", + "tags": "tags", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT897 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT897 new file mode 100644 index 0000000..d14795d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT897 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/serverfarms.json" + ], + "timestamp": 1642962902596, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/serverfarms.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT897", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT897", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string" + }, + "location": { + "type": "string" + }, + "sku": { + "type": "string", + "defaultValue": "Free" + }, + "skucode": { + "type": "string", + "defaultValue": "F1" + }, + "workerSize": { + "type": "int", + "defaultValue": 0 + }, + "workerSizeId": { + "type": "int", + "defaultValue": 0 + }, + "numberOfWorkers": { + "type": "int", + "defaultValue": 1 + }, + "hostingEnvironment": { + "type": "string", + "defaultValue": "" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "name", + "type": "Microsoft.Web/serverfarms", + "location": "location", + "tags": "tags", + "properties": { + "name": "name", + "workerSize": 0, + "workerSizeId": 0, + "numberOfWorkers": 1, + "reserved": false, + "hostingEnvironment": "" + }, + "sku": { + "Tier": "Free", + "Name": "skuCode" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT898 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT898 new file mode 100644 index 0000000..2c2b2e4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT898 @@ -0,0 +1,75 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.config.connectionstrings.json" + ], + "timestamp": 1642962902602, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.config.connectionstrings.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT898", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/config" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT898", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "connectionType": { + "type": "string", + "defaultValue": "Custom", + "allowedValues": [ + "MySql", + "SQLServer", + "SQLAzure", + "Custom", + "NotificationHub", + "ServiceBus", + "EventHub", + "ApiHub", + "DocDb", + "RedisCache", + "PostgreSQL" + ] + }, + "connectionString": { + "type": "string" + } + }, + "resources": [ + { + "name": "webAppName/connectionstrings", + "apiVersion": "2018-02-01", + "type": "Microsoft.Web/sites/config", + "location": "location", + "properties": { + "DefaultConnection": { + "value": "connectionString", + "type": "Custom" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT899 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT899 new file mode 100644 index 0000000..046c4ad --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT899 @@ -0,0 +1,59 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.extensions.msdeploy.json" + ], + "timestamp": 1642962902607, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.extensions.msdeploy.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT899", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT899", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "webAppName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "packageUri": { + "type": "string" + }, + "tags": { + "type": "object" + } + }, + "resources": [ + { + "name": "webAppName/MSDeploy", + "type": "Microsoft.Web/sites/extensions", + "location": "location", + "apiVersion": "2018-02-01", + "tags": "tags", + "properties": { + "packageUri": "packageUri" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT9 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT9 new file mode 100644 index 0000000..64c478f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT9 @@ -0,0 +1,668 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/azuredeploy.parameters.json" + ], + "timestamp": 1642962883362, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/azuredeploy.json", + "/application-workloads/active-directory/active-directory-new-domain-ha-2-dc/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT9", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT9", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the Administrator of the new VM and Domain" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account of the new VM and Domain" + }, + "value": "GEN-PASSWORD" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "The FQDN of the AD Domain created " + }, + "value": "mydomain.local" + }, + "dnsPrefix": { + "type": "string", + "metadata": { + "description": "The DNS prefix for the public IP address used by the Load Balancer" + }, + "value": "GEN-UNIQUE" + }, + "pdcRDPPort": { + "type": "int", + "metadata": { + "description": "The public RDP port for the PDC VM" + }, + "defaultValue": 3389 + }, + "bdcRDPPort": { + "type": "int", + "metadata": { + "description": "The public RDP port for the BDC VM" + }, + "defaultValue": 13389 + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation" + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "adVMSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size for the VM. This sample uses premium disk and requires an 'S' sku." + } + } + }, + "variables": { + "storageAccountType": "Premium_LRS", + "adPDCVMName": "adPDC", + "adBDCVMName": "adBDC", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "imageSKU": "2016-Datacenter", + "adAvailabilitySetName": "adAvailabiltySet", + "publicIPAddressName": "ad-lb-pip", + "adLBFE": "LBFE", + "adLBBE": "LBBE", + "adPDCRDPNAT": "adPDCRDP", + "adBDCRDPNAT": "adBDCRDP", + "virtualNetworkName": "adVNET", + "virtualNetworkAddressRange": "10.0.0.0/16", + "adSubnetName": "adSubnet", + "adSubnet": "10.0.0.0/24", + "adPDCNicName": "adPDCNic", + "adPDCNicIPAddress": "10.0.0.4", + "adBDCNicName": "adBDCNic", + "adBDCNicIPAddress": "10.0.0.5", + "adSubnetRef": "Microsoft.Network/virtualNetworks/subnets/adVNET/adSubnet", + "adLBName": "adLoadBalancer", + "adlbFEConfigID": "Microsoft.Network/loadBalancers/frontendIPConfigurations/adLoadBalancer/LBFE", + "adPDCRDPNATRuleID": "Microsoft.Network/loadBalancers/inboundNatRules/adLoadBalancer/adPDCRDP", + "adBDCRDPNATRuleID": "Microsoft.Network/loadBalancers/inboundNatRules/adLoadBalancer/adBDCRDP", + "adBEAddressPoolID": "Microsoft.Network/loadBalancers/backendAddressPools/adLoadBalancer/LBBE", + "adDataDiskSize": 1000, + "vnetTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken')))]", + "nicTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/nic.json', parameters('_artifactsLocationSasToken')))]", + "vnetwithDNSTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet-with-dns-server.json', parameters('_artifactsLocationSasToken')))]", + "configureADBDCTemplateUri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/configureADBDC.json', parameters('_artifactsLocationSasToken')))]", + "adPDCModulesURL": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateADPDC.zip', parameters('_artifactsLocationSasToken')))]", + "adPDCConfigurationFunction": "CreateADPDC.ps1\\CreateADPDC", + "adBDCPreparationModulesURL": "[uri(parameters('_artifactsLocation'), concat('DSC/PrepareADBDC.zip', parameters('_artifactsLocationSasToken')))]", + "adBDCPreparationFunction": "PrepareADBDC.ps1\\PrepareADBDC", + "adBDCConfigurationModulesURL": "[uri(parameters('_artifactsLocation'), concat('DSC/ConfigureADBDC.zip', parameters('_artifactsLocationSasToken')))]", + "adBDCConfigurationFunction": "ConfigureADBDC.ps1\\ConfigureADBDC" + }, + "resources": [ + { + "name": "ad-lb-pip", + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-03-01", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/availabilitySets", + "location": "[resourceGroup().location]", + "name": "adAvailabiltySet", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "name": "VNet", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "adVNET" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "adSubnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + } + } + } + }, + { + "name": "adLoadBalancer", + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-03-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/ad-lb-pip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ad-lb-pip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LBBE" + } + ], + "inboundNatRules": [ + { + "name": "adPDCRDP", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/adLoadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "adBDCRDP", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/adLoadBalancer/LBFE" + }, + "protocol": "Tcp", + "frontendPort": 13389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "name": "adPDCNic", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-03-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/VNet", + "Microsoft.Network/loadbalancers/adLoadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.4", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/adVNET/adSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/adLoadBalancer/LBBE" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/adLoadBalancer/adPDCRDP" + } + ] + } + } + ] + } + }, + { + "name": "adBDCNic", + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-03-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Resources/deployments/VNet", + "Microsoft.Network/loadBalancers/adLoadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.5", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/adVNET/adSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/adLoadBalancer/LBBE" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/adLoadBalancer/adBDCRDP" + } + ] + } + } + ] + } + }, + { + "name": "adPDC", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/adPDCNic", + "Microsoft.Compute/availabilitySets/adAvailabiltySet", + "Microsoft.Network/loadBalancers/adLoadBalancer" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/adAvailabiltySet" + }, + "osProfile": { + "computerName": "adPDC", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "adPDC_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [ + { + "name": "adPDC_data-disk1", + "caching": "None", + "diskSizeGB": 1000, + "lun": 0, + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/adPDCNic" + } + ] + } + }, + "resources": [ + { + "name": "CreateADForest", + "type": "extensions", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/adPDC" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateADPDC.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "CreateADPDC.ps1\\CreateADPDC", + "Properties": { + "DomainName": "mydomain.local", + "AdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "GEN-PASSWORD" + } + } + } + } + ] + }, + { + "name": "UpdateVNetDNS1", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "CreateADForest" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet-with-dns-server.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "adVNET" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "adSubnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + }, + "DNSServerAddress": { + "value": [ + "10.0.0.4" + ] + } + } + } + }, + { + "name": "UpdateBDCNIC", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "adBDCNic", + "UpdateVNetDNS1" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/nic.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "nicName": { + "value": "adBDCNic" + }, + "ipConfigurations": { + "value": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.5", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/adVNET/adSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/adLoadBalancer/LBBE" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/adLoadBalancer/adBDCRDP" + } + ] + } + } + ] + }, + "dnsServers": { + "value": [ + "10.0.0.4" + ] + } + } + } + }, + { + "name": "adBDC", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces/adBDCNic", + "Microsoft.Compute/availabilitySets/adAvailabiltySet", + "Microsoft.Network/loadBalancers/adLoadBalancer" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/adAvailabiltySet" + }, + "osProfile": { + "computerName": "adBDC", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "adBDC_osdisk", + "caching": "ReadWrite", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + }, + "dataDisks": [ + { + "name": "adBDC_data-disk1", + "caching": "None", + "diskSizeGB": 1000, + "lun": 0, + "createOption": "Empty", + "managedDisk": { + "storageAccountType": "Premium_LRS" + } + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/adBDCNic" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "adBDC/PrepareBDC", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/adBDC" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('DSC/PrepareADBDC.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "PrepareADBDC.ps1\\PrepareADBDC", + "Properties": { + "DNSServer": "10.0.0.4" + } + } + } + }, + { + "name": "ConfiguringBackupADDomainController", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines/extensions/adBDC/PrepareBDC", + "Microsoft.Resources/deployments/UpdateBDCNIC" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/configureADBDC.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "adBDCVMName": { + "value": "adBDC" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "domainName": { + "value": "mydomain.local" + }, + "adBDCConfigurationFunction": { + "value": "ConfigureADBDC.ps1\\ConfigureADBDC" + }, + "adBDCConfigurationModulesURL": { + "value": "[uri(parameters('_artifactsLocation'), concat('DSC/ConfigureADBDC.zip', parameters('_artifactsLocationSasToken')))]" + } + } + } + }, + { + "name": "UpdateVNetDNS2", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "dependsOn": [ + "Microsoft.Resources/deployments/ConfiguringBackupADDomainController" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet-with-dns-server.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "adVNET" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "adSubnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + }, + "DNSServerAddress": { + "value": [ + "10.0.0.4", + "10.0.0.5" + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT90 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT90 new file mode 100644 index 0000000..6256ee0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT90 @@ -0,0 +1,566 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/data-node-ds14.json" + ], + "timestamp": 1642962885938, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/data-node-ds14.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT90", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT90", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "clouderaTags": { + "type": "object" + }, + "tableauTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "masterIP": "networkSpec", + "workerIP": "networkSpec", + "vmName": "dnsNamePrefix-dn", + "nicName": "dnsNamePrefix-dn-nic", + "storageAccountName": "dnstorageAccount", + "publicIPAddressName": "dnsNamePrefix-dn-publicIP", + "securityGroupName": "dnsNamePrefix-dn-sg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "dnsNamePrefix-dn-sg", + "location": "[resourceGroup().location]", + "comments": "Shared Resources Network Security Group Rules", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HDFS.Web.UI", + "properties": { + "description": "Allows HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50070", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "Hiveserver2", + "properties": { + "description": "Allows Hiveserver traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "Hive.Metastore", + "properties": { + "description": "Allows Hive Metastore traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9083", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "Hue", + "properties": { + "description": "Allows Hue traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 104, + "direction": "Inbound" + } + }, + { + "name": "YARN.ResourceManager", + "properties": { + "description": "Allows YARN Resource Manager traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8088", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + }, + { + "name": "YARN.JobHistory.Server", + "properties": { + "description": "Allows YARN JobHistory Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "19888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 106, + "direction": "Inbound" + } + }, + { + "name": "Oozie.Server", + "properties": { + "description": "Allows Oozie Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 107, + "direction": "Inbound" + } + }, + { + "name": "Management.Web.UI", + "properties": { + "description": "Allows Management.Web.UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7180", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 108, + "direction": "Inbound" + } + }, + { + "name": "Navigator", + "properties": { + "description": "Allows Navigator traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7187", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 109, + "direction": "Inbound" + } + }, + { + "name": "HDFS.dn.Web.UI", + "properties": { + "description": "Allow HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50075", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "YARN.nm.Web.UI", + "properties": { + "description": "Allow YARN Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8042", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 111, + "direction": "Inbound" + } + }, + { + "name": "Impala.JDBC", + "properties": { + "description": "Allow Impala JDBC traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 112, + "direction": "Inbound" + } + }, + { + "name": "Impala.Shell", + "properties": { + "description": "Allow Impala Shell traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 113, + "direction": "Inbound" + } + }, + { + "name": "RDP", + "properties": { + "description": "Allow RDP Traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 114, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "copyIndex()dnstorageAccount", + "location": "[resourceGroup().location]", + "comments": "Master Node storage account configurations", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "storageAccountLoop", + "count": "vmCount" + }, + "properties": { + "accountType": "storageAccount" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "dnsNamePrefix-dn-publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "comments": "Master Node Public IP Address configuration", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "publicIPLoop", + "count": "vmCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNamePrefix-dncopyIndex()" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "dnsNamePrefix-dn-niccopyIndex()", + "location": "[resourceGroup().location]", + "comments": "Master Node network interface configuration", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/dnsNamePrefix-dn-publicIPcopyIndex()", + "Microsoft.Network/networkSecurityGroups/dnsNamePrefix-dn-sg" + ], + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(parameters('networkSpec').ipOctet01, add(parameters('networkSpec').ipOctet2, div(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256)), '.', mod(copyIndex(parameters('networkSpec').datanodeIpOctet3), 256))]", + "subnet": { + "id": "vnetID/subnets/networkSpec" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dnsNamePrefix-dn-publicIPcopyIndex()" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dnsNamePrefix-dn-sg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "dnsNamePrefix-dncopyIndex()", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "plan": { + "name": "cloudera-centos-6", + "publisher": "cloudera", + "product": "cloudera-centos-6" + }, + "location": "[resourceGroup().location]", + "comments": "Master Node virtual machines configurations", + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/dnsNamePrefix-dn-niccopyIndex()", + "Microsoft.Storage/storageAccounts/copyIndex()dnstorageAccount" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/vmSpec" + }, + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "[reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn]", + "adminUsername": "vmSpec", + "adminPassword": "vmSpec", + "linuxConfiguration": { + "disablePasswordAuthentication": "false" + } + }, + "storageProfile": { + "imageReference": { + "publisher": "cloudera", + "offer": "cloudera-centos-6", + "sku": "CLOUDERA-CENTOS-6", + "version": "latest" + }, + "osDisk": { + "name": "dnsNamePrefix-dncopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk0", + "diskSizeGB": 512, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk1", + "diskSizeGB": 1023, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk2", + "diskSizeGB": 1023, + "lun": 2, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk3", + "diskSizeGB": 1023, + "lun": 3, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk4", + "diskSizeGB": 1023, + "lun": 4, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk5", + "diskSizeGB": 1023, + "lun": 5, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk6", + "diskSizeGB": 1023, + "lun": 6, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk7", + "diskSizeGB": 1023, + "lun": 7, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk8", + "diskSizeGB": 1023, + "lun": 8, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk9", + "diskSizeGB": 1023, + "lun": 9, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-dncopyIndex()_DataDisk10", + "diskSizeGB": 1023, + "lun": 10, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dnsNamePrefix-dn-niccopyIndex()" + } + ], + "inputEndpoints": [ + { + "enableDirectServerReturn": "False", + "endpointName": "HDFS.dn.Web.UI", + "privatePort": 50075, + "publicPort": 50075, + "protocol": "Tcp" + }, + { + "enableDirectServerReturn": "False", + "endpointName": "YARN.nm.Web.UI", + "privatePort": 8042, + "publicPort": 8042, + "protocol": "Tcp" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "dnsNamePrefix-dncopyIndex()/prepareDisks", + "location": "[resourceGroup().location]", + "comments": "Master Node VM Extensions and scripts to configure the Cloudera cluster", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "dataNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/dnsNamePrefix-dncopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/prepare-datanode-disks.sh", + "scriptsUri/scripts/initialize-node.sh" + ], + "commandToExecute": "[concat('sh initialize-node.sh \"', variables('masterIP'), '\" \"', variables('workerIP'), '\" \"', parameters('dnsNamePrefix'), '\" \"', reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn, '\" ', parameters('clusterSpec').masterNodeCount, ' ', parameters('clusterSpec').dataNodeCount, ' \"', parameters('vmSpec').adminUsername, '\" ', 'datanode', ' >> /home/$ADMINUSER/initialize-datanode.log 2>&1')]" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT900 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT900 new file mode 100644 index 0000000..85b88f1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT900 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.json" + ], + "timestamp": 1642962902613, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/demos/xss-attack-prevention/nested/microsoft.web/sites.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT900", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT900", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "string" + }, + "hostingPlanName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "hostingEnvironment": { + "type": "string", + "defaultValue": "" + }, + "tags": { + "type": "object" + } + }, + "variables": { + "tags": { + "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms',parameters('hostingPlanName')))]": "empty" + }, + "combinedTags": "[union(parameters('tags'),variables('tags'))]" + }, + "resources": [ + { + "apiVersion": "2019-08-01", + "name": "name", + "type": "Microsoft.Web/sites", + "tags": "[union(parameters('tags'),variables('tags'))]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "name": "name", + "serverFarmId": "Microsoft.Web/serverfarms/hostingPlanName", + "hostingEnvironment": "" + }, + "location": "location" + } + ], + "outputs": { + "principalId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Web/sites', parameters('name')), '2019-08-01', 'Full').identity.principalId]" + }, + "endpoint": { + "type": "string", + "value": "[concat(parameters('name'),'.azurewebsites.net')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT902 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT902 new file mode 100644 index 0000000..40829df --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT902 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/active-directory-new-domain/0.9/nestedtemplates/vnet.json" + ], + "timestamp": 1642962902639, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/active-directory-new-domain/0.9/nestedtemplates/vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT902", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT902", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the Virtual Network to Create" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new VNET in CIDR format" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "The name of the subnet created in the new VNET" + } + }, + "subnetRange": { + "type": "string", + "metadata": { + "description": "The address range of the subnet created in the new VNET" + } + }, + "DNSServerAddress": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "The DNS address(es) of the DNS Server(s) used by the VNET" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "dhcpOptions": { + "dnsServers": [] + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "virtualNetworkName", + "apiVersion": "2020-06-01", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressRange" + ] + }, + "dhcpOptions": "[if(not(empty(parameters('DNSServerAddress'))), variables('dhcpOptions'), json('null'))]", + "subnets": [ + { + "name": "subnetName", + "properties": { + "addressPrefix": "subnetRange" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT903 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT903 new file mode 100644 index 0000000..2255904 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT903 @@ -0,0 +1,438 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/active-directory-new-domain/0.9/azuredeploy.json", + "/modules/active-directory-new-domain/0.9/azuredeploy.parameters.json" + ], + "timestamp": 1642962902646, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/active-directory-new-domain/0.9/azuredeploy.json", + "/modules/active-directory-new-domain/0.9/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT903", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.resources/deployments", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT903", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the administrator account of the new VM and domain" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the administrator account of the new VM and domain" + } + }, + "domainName": { + "type": "string", + "metadata": { + "description": "The FQDN of the Active Directory Domain to be created" + }, + "value": "corp.mydomain.com" + }, + "dnsPrefix": { + "type": "string", + "defaultValue": "[concat('ad-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The DNS prefix for the public IP address used by the Load Balancer" + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM for the controller" + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The location of resources, such as templates and DSC modules, that the template depends on" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "Auto-generated token to access _artifactsLocation. Leave it blank unless you need to provide your own value." + }, + "defaultValue": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "virtualMachineName": { + "type": "string", + "defaultValue": "ad-vm", + "metadata": { + "description": "Virtual machine name." + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual network address range." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "ad-vnet", + "metadata": { + "description": "The name of the virtualNetwork." + } + }, + "subnetName": { + "type": "string", + "defaultValue": "ad-vnet-subnet", + "metadata": { + "description": "The name of the subnet." + } + }, + "privateIPAddress": { + "type": "string", + "defaultValue": "10.0.0.4", + "metadata": { + "description": "Private IP address." + } + }, + "subnetRange": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet IP range." + } + } + }, + "variables": { + "loadBalancerFrontEndIPName": "ad-LBFE", + "backendAddressPoolName": "ad-LBBE", + "inboundNatRulesName": "ad-RDP", + "networkInterfaceName": "ad-nic", + "publicIPAddressName": "ad-ip", + "availabilitySetName": "ad-AvailabiltySet", + "loadBalancerName": "ad-LoadBalancer" + }, + "resources": [ + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "ad-ip", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "name": "ad-AvailabiltySet", + "properties": { + "PlatformUpdateDomainCount": 20, + "PlatformFaultDomainCount": 2 + }, + "sku": { + "name": "Aligned" + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-11-01", + "name": "VNet", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "ad-vnet" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "ad-vnet-subnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-06-01", + "name": "ad-LoadBalancer", + "location": "[resourceGroup().location]", + "dependsOn": [ + "ad-ip" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "ad-LBFE", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/ad-ip" + } + } + } + ], + "backendAddressPools": [ + { + "name": "ad-LBBE" + } + ], + "inboundNatRules": [ + { + "name": "ad-RDP", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/ad-LoadBalancer/ad-LBFE" + }, + "protocol": "Tcp", + "frontendPort": 3389, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "ad-nic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "VNet", + "ad-LoadBalancer" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "10.0.0.4", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/ad-vnet/ad-vnet-subnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/ad-LoadBalancer/ad-LBBE" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/ad-LoadBalancer/ad-RDP" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "ad-vm", + "location": "[resourceGroup().location]", + "dependsOn": [ + "ad-nic", + "ad-AvailabiltySet", + "ad-LoadBalancer" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/ad-AvailabiltySet" + }, + "osProfile": { + "computerName": "ad-vm", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + }, + "osDisk": { + "name": "ad-vm_OSDisk", + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + } + }, + "dataDisks": [ + { + "name": "ad-vm_DataDisk", + "caching": "ReadWrite", + "createOption": "Empty", + "diskSizeGB": 20, + "managedDisk": { + "storageAccountType": "StandardSSD_LRS" + }, + "lun": 0 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/ad-nic" + } + ] + } + }, + "resources": [ + { + "type": "extensions", + "apiVersion": "2020-06-01", + "name": "CreateADForest", + "location": "[resourceGroup().location]", + "dependsOn": [ + "ad-vm" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.19", + "autoUpgradeMinorVersion": true, + "settings": { + "ModulesUrl": "[uri(parameters('_artifactsLocation'), concat('DSC/CreateADPDC.zip', parameters('_artifactsLocationSasToken')))]", + "ConfigurationFunction": "CreateADPDC.ps1\\CreateADPDC", + "Properties": { + "DomainName": "corp.mydomain.com", + "AdminCreds": { + "UserName": "GEN-UNIQUE", + "Password": "PrivateSettingsRef:AdminPassword" + } + } + }, + "protectedSettings": { + "Items": { + "AdminPassword": "adminPassword" + } + } + } + } + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-11-01", + "name": "UpdateVNetDNS", + "dependsOn": [ + "CreateADForest" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nestedtemplates/vnet.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "virtualNetworkName": { + "value": "ad-vnet" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "subnetName": { + "value": "ad-vnet-subnet" + }, + "subnetRange": { + "value": "10.0.0.0/24" + }, + "DNSServerAddress": { + "value": [ + "10.0.0.4" + ] + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": { + "dnsIpAddress": { + "type": "string", + "value": "[parameters('privateIPAddress')]" + }, + "domainName": { + "type": "string", + "value": "[parameters('domainName')]" + }, + "virtualNetworkSubscriptionId": { + "type": "string", + "value": "[subscription().subscriptionId]" + }, + "virtualNetworkResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "virtualNetworkName": { + "type": "string", + "value": "[parameters('virtualNetworkName')]" + }, + "virtualNetworkSubnetName": { + "type": "string", + "value": "[parameters('subnetName')]" + }, + "virtualNetworkAddressPrefixes": { + "type": "string", + "value": "[parameters('virtualNetworkAddressRange')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT904 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT904 new file mode 100644 index 0000000..611c1a9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT904 @@ -0,0 +1,168 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/machine-learning-workspace/0.9/azuredeploy.json", + "/modules/machine-learning-workspace/0.9/azuredeploy.parameters.json" + ], + "timestamp": 1642962902654, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/machine-learning-workspace/0.9/azuredeploy.json", + "/modules/machine-learning-workspace/0.9/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT904", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.keyvault/vaults", + "microsoft.insights/components", + "microsoft.machinelearningservices/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT904", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "defaultValue": "[concat('ml-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the Azure Machine Learning workspace." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location for all resources." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('sa', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the storage account to created and associated with the workspace." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[concat('kv-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the key vault to created and associated with the workspace." + } + }, + "applicationInsightsName": { + "type": "string", + "defaultValue": "[concat('ai-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name for the application insights to created and associated with the workspace." + } + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat('sa', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": true + }, + "file": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "supportsHttpsTrafficOnly": true + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "name": "[concat('kv-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "name": "standard", + "family": "A" + }, + "enableSoftDelete": false, + "accessPolicies": [] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02-preview", + "name": "[concat('ai-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web" + } + }, + { + "type": "Microsoft.MachineLearningServices/workspaces", + "apiVersion": "2020-08-01", + "name": "[concat('ml-', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/[concat('ai-', uniqueString(resourceGroup().id))]", + "Microsoft.KeyVault/vaults/[concat('kv-', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[concat('sa', uniqueString(resourceGroup().id))]" + ], + "identity": { + "type": "systemAssigned" + }, + "properties": { + "friendlyName": "[concat('ml-', uniqueString(resourceGroup().id))]", + "storageAccount": "Microsoft.Storage/storageAccounts/[concat('sa', uniqueString(resourceGroup().id))]", + "keyVault": "Microsoft.KeyVault/vaults/[concat('kv-', uniqueString(resourceGroup().id))]", + "applicationInsights": "Microsoft.Insights/components/[concat('ai-', uniqueString(resourceGroup().id))]" + } + } + ], + "outputs": { + "workspaceName": { + "type": "string", + "value": "[parameters('workspaceName')]" + }, + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "keyVaultName": { + "type": "string", + "value": "[parameters('keyVaultName')]" + }, + "applicationInsightsName": { + "type": "string", + "value": "[parameters('applicationInsightsName')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT905 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT905 new file mode 100644 index 0000000..5b5a9b7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT905 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/Microsoft.Compute/galleries/create/1.0/azuredeploy.json", + "/modules/Microsoft.Compute/galleries/create/1.0/azuredeploy.parameters.json" + ], + "timestamp": 1642962902662, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.Compute/galleries/create/1.0/azuredeploy.json", + "/modules/Microsoft.Compute/galleries/create/1.0/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT905", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/galleries" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT905", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "galleryName": { + "type": "string", + "minLength": 1, + "maxLength": 80, + "defaultValue": "[concat('shared.gallery.', replace(parameters('location'), ' ', ''))]", + "metadata": { + "description": "The name of the Shared Image Gallery. The allowed characters are alphabetic, numeric and periods. The maximum length is 80 characters." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Shared Image Gallery." + } + }, + "description": { + "type": "string", + "defaultValue": "Sample Description", + "metadata": { + "description": "The description of this Shared Image Gallery resource. This property is updatable." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/galleries", + "name": "[concat('shared.gallery.', replace(parameters('location'), ' ', ''))]", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "description": "Sample Description" + } + } + ], + "outputs": { + "galleryName": { + "type": "string", + "value": "[parameters('galleryName')]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT906 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT906 new file mode 100644 index 0000000..d4d3c5f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT906 @@ -0,0 +1,246 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.parameters.json" + ], + "timestamp": 1642962902668, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT906", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT906", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "defaultValue": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the KeyVault, this value must be globally unique." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + }, + "enabledForDeployment": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault." + } + }, + "enabledForDiskEncryption": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys." + } + }, + "enabledForTemplateDeployment": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault." + } + }, + "enablePurgeProtection": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Property specifying whether protection against purge is enabled for this vault. This property does not accept false but enabled here to allow for this to be optional, if false, the property will not be set." + } + }, + "enableRbacAuthorization": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Property that controls how data actions are authorized. When true, the key vault will use Role Based Access Control (RBAC) for authorization of data actions, and the access policies specified in vault properties will be ignored." + } + }, + "enableSoftDelete": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Property to specify whether the 'soft delete' functionality is enabled for this key vault. If it's not set to any value(true or false) when creating new key vault, it will be set to true by default. Once set to true, it cannot be reverted to false." + } + }, + "softDeleteRetentionInDays": { + "type": "int", + "defaultValue": 7, + "minValue": 7, + "maxValue": 90, + "metadata": { + "description": "softDelete data retention days, only used if enableSoftDelete is true. It accepts >=7 and <=90." + } + }, + "tenantId": { + "type": "string", + "defaultValue": "[subscription().tenantId]", + "metadata": { + "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet." + } + }, + "networkRuleBypassOptions": { + "type": "string", + "defaultValue": "AzureServices", + "allowedValues": [ + "None", + "AzureServices" + ], + "metadata": { + "description": "Tells what traffic can bypass network rules. This can be 'AzureServices' or 'None'. If not specified the default is 'AzureServices'." + } + }, + "NetworkRuleAction": { + "type": "string", + "defaultValue": "Allow", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated." + } + }, + "ipRules": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "An array of IPv4 addresses or rangea in CIDR notation, e.g. '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that start with 124.56.78)." + } + }, + "accessPolicies": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "An complex object array that contains the complete definition of the access policy." + }, + "value": [ + { + "objectId": "GEN-AZUREAD-AKS-OBJID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": {} + } + ] + }, + "virtualNetworkRules": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "An array for resourceIds for the virtualNetworks allowed to access the vault." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard", + "Premium" + ], + "metadata": { + "description": "Specifies whether the key vault is a standard vault or a premium vault." + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Tags to be assigned to the KeyVault." + } + } + }, + "variables": {}, + "resources": [ + { + "name": "[concat('keyvault-', uniqueString(resourceGroup().id))]", + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2019-09-01", + "location": "[resourceGroup().location]", + "tags": {}, + "properties": { + "tenantId": "[subscription().tenantId]", + "sku": { + "family": "A", + "name": "Standard" + }, + "copy": [ + { + "name": "accessPolicies", + "count": 28, + "input": { + "tenantId": "accessPolicies)[copyIndex(accessPolicies", + "objectId": "accessPolicies)[copyIndex(accessPolicies", + "permissions": "accessPolicies)[copyIndex(accessPolicies" + } + } + ], + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "enableSoftDelete": true, + "softDeleteRetentionInDays": "[if(parameters('enableSoftDelete'), parameters('softDeleteRetentionInDays'), json('null'))]", + "enableRbacAuthorization": false, + "enablePurgeProtection": "[if(parameters('enablePurgeProtection'), parameters('enablePurgeProtection'), json('null'))]", + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "networkRuleAction", + "copy": [ + { + "name": "ipRules", + "count": 21, + "input": { + "value": "ipRules)[copyIndex(ipRules" + } + }, + { + "name": "virtualNetworkRules", + "count": 33, + "input": { + "id": "virtualNetworkRules)[copyIndex(virtualNetworkRules" + } + } + ] + } + } + } + ], + "outputs": { + "vaultName": { + "type": "string", + "value": "[parameters('vaultName')]" + }, + "vaultResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT907 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT907 new file mode 100644 index 0000000..45a7abf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT907 @@ -0,0 +1,90 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/keys/0.9/prereqs/prereq.azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/keys/0.9/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962902676, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/keys/0.9/prereqs/prereq.azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/keys/0.9/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT907", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT907", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accessPolicies": { + "type": "array", + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "keys": [ + "create" + ] + } + } + ] + } + }, + "resources": [ + { + "name": "prereqs", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/modules/Microsoft.KeyVault/vaults/1.0/azuredeploy.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "accessPolicies": { + "value": [ + { + "objectId": "GEN-AZUREAD-OBJECTID", + "tenantId": "GEN-AZUREAD-AKS-TENANTID", + "permissions": { + "keys": [ + "create" + ] + } + } + ] + } + } + } + } + ], + "outputs": { + "vaultName": { + "type": "string", + "value": "[reference('prereqs').outputs.vaultName.value]" + }, + "vaultResourceGroup": { + "type": "string", + "value": "[reference('prereqs').outputs.vaultResourceGroup.value]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT908 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT908 new file mode 100644 index 0000000..09e6969 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT908 @@ -0,0 +1,127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/keys/0.9/azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/keys/0.9/azuredeploy.parameters.json" + ], + "timestamp": 1642962902682, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.KeyVault/vaults/keys/0.9/azuredeploy.json", + "/modules/Microsoft.KeyVault/vaults/keys/0.9/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT908", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.keyvault/vaults/keys" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT908", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vaultName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the KeyVault, this vault must already exist." + }, + "value": "GET-PREREQ-vaultName" + }, + "keyName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the key to be created." + }, + "value": "GEN-UNIQUE" + }, + "attributes": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "The attributes of a key managed by the key vault service." + } + }, + "crv": { + "type": "string", + "defaultValue": "", + "allowedValues": [ + "", + "P-256", + "P-256K", + "P-384", + "P-521" + ], + "metadata": { + "description": "Elliptic curve name." + } + }, + "key_ops": { + "type": "array", + "defaultValue": [], + "metadata": { + "description": "JSON web key operations. Operations include: 'encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'" + } + }, + "key_size": { + "type": "int", + "defaultValue": 4096, + "metadata": { + "description": "The key size in bits. For example: 2048, 3072, or 4096 for RSA." + } + }, + "kty": { + "type": "string", + "defaultValue": "RSA", + "allowedValues": [ + "EC", + "EC-HSM", + "RSA", + "RSA-HSM" + ], + "metadata": { + "description": "The type of key to create" + } + }, + "tags": { + "type": "object", + "defaultValue": {}, + "metadata": { + "description": "Tags to be assigned to the Key." + } + } + }, + "resources": [ + { + "type": "Microsoft.KeyVault/vaults/keys", + "apiVersion": "2019-09-01", + "name": "GET-PREREQ-vaultName/GEN-UNIQUE", + "tags": {}, + "properties": { + "attributes": {}, + "crv": "", + "kty": "RSA", + "key_ops": [], + "key_size": 4096 + } + } + ], + "outputs": { + "key": { + "type": "object", + "value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')), '2019-09-01', 'Full')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT909 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT909 new file mode 100644 index 0000000..c75f4d3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT909 @@ -0,0 +1,441 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/Microsoft.ManagedIdentity/user-assigned-identity-role-assignment/1.0/azuredeploy.json", + "/modules/Microsoft.ManagedIdentity/user-assigned-identity-role-assignment/1.0/azuredeploy.parameters.json" + ], + "timestamp": 1642962902688, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.ManagedIdentity/user-assigned-identity-role-assignment/1.0/azuredeploy.json", + "/modules/Microsoft.ManagedIdentity/user-assigned-identity-role-assignment/1.0/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT909", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.managedidentity/userassignedidentities" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT909", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "15576385974467650524" + } + }, + "parameters": { + "managedIdentityName": { + "type": "string", + "metadata": { + "description": "The name of the managed identity resource." + }, + "value": "MyManagedIdentity" + }, + "roleDefinitionIds": { + "type": "array", + "metadata": { + "description": "The IDs of the role definitions to assign to the managed identity. Each role assignment is created at the resource group scope. Role definition IDs are GUIDs. To find the GUID for built-in Azure role definitions, see https://docs.microsoft.com/azure/role-based-access-control/built-in-roles. You can also use IDs of custom role definitions." + }, + "value": [ + "acdd72a7-3385-48ef-bd42-f606fba81ae7" + ] + }, + "roleAssignmentDescription": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "An optional description to apply to each role assignment, such as the reason this managed identity needs to be granted the role." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The Azure location where the managed identity should be created." + } + } + }, + "functions": [], + "variables": { + "copy": [ + { + "name": "roleAssignmentsToCreate", + "count": 31, + "input": { + "name": "[guid(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName')), resourceGroup().id, parameters('roleDefinitionIds')[copyIndex('roleAssignmentsToCreate')])]", + "roleDefinitionId": "roleDefinitionIds)[copyIndex(roleAssignmentsToCreate" + } + } + ] + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "MyManagedIdentity", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "(roleAssignmentsToCreate)[copyIndex()].name", + "properties": { + "description": "", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('roleAssignmentsToCreate')[copyIndex()].roleDefinitionId)]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity" + ] + } + ], + "outputs": { + "managedIdentityResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))]", + "metadata": { + "description": "The resource ID of the user-assigned managed identity." + } + }, + "managedIdentityClientId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).clientId]", + "metadata": { + "description": "The ID of the Azure AD application associated with the managed identity." + } + }, + "managedIdentityPrincipalId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('managedIdentityName'))).principalId]", + "metadata": { + "description": "The ID of the Azure AD service principal associated with the managed identity." + } + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT91 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT91 new file mode 100644 index 0000000..aa3df91 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT91 @@ -0,0 +1,620 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/ds13.json" + ], + "timestamp": 1642962885954, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/ds13.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT91", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT91", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin user name for the VMs" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the VMs (A mix of upper and lower-case characters, digits and symbols)" + } + }, + "cmUsername": { + "type": "string", + "defaultValue": "cmadmin", + "metadata": { + "description": "User name for the Cloudera Manager" + } + }, + "cmPassword": { + "type": "securestring", + "metadata": { + "description": "password for the Cloudera Manager (A mix of upper and lower-case characters, digits and symbols)" + } + }, + "storageAccountPrefix": { + "type": "string", + "metadata": { + "description": "Unique namespace for the Storage Account where the VM disks will be placed (alphahumeric characters only)" + } + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS name where the VMs will be exposed" + } + }, + "masterStorageAccountType": { + "type": "string", + "defaultValue": "Premium_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for master nodes (defaults to Premium_LRS)" + } + }, + "workerStorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for worker nodes (defaults to Standard_LRS)" + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "clouderavnet", + "metadata": { + "description": "The name of the virtual network provisioned for the deployment" + } + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Indicator for new or exiting Virtual Network" + } + }, + "virtualNetworkRGName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Resource Group Name for Vnet. For new VNet leave it empty, otherwise type in existing resource group name" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "clouderasubnet", + "metadata": { + "description": "Subnet name for the virtual network where resources will be provisioned" + } + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "Virtual Network address CIDR" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "CIDR for the subnet where VMs will be placed" + } + }, + "masterNodeIPAddress": { + "type": "string", + "defaultValue": "10.3.0.4", + "metadata": { + "description": "IP address for the first master" + } + }, + "dataNodeIPOffSetFromMaster": { + "type": "int", + "defaultValue": 10, + "metadata": { + "description": "IP address from the master node, for example if the first master is 10.1.1.1, then the first dataNode would be 10.1.1.11" + } + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Eval", + "allowedValues": [ + "Eval", + "Prod" + ], + "metadata": { + "description": "T-shirt size of the Cloudera cluster (Eval, Prod)" + } + }, + "numberOfDataNodes": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of data nodes for Prod (defaults to 3)" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D8s_v3", + "metadata": { + "description": "The size of the VMs deployed in the cluster (defaults to Standard_DS13)" + } + }, + "company": { + "type": "string", + "defaultValue": "Company", + "metadata": { + "description": "Your Company" + } + }, + "emailAddress": { + "type": "string", + "defaultValue": "email@yourcompany.com", + "metadata": { + "description": "your email" + } + }, + "businessPhone": { + "type": "string", + "defaultValue": "123456789", + "metadata": { + "description": "your business phone number" + } + }, + "firstName": { + "type": "string", + "defaultValue": "FirstName", + "metadata": { + "description": "Your FirstName" + } + }, + "lastName": { + "type": "string", + "defaultValue": "LastName", + "metadata": { + "description": "Your LastName" + } + }, + "jobRole": { + "type": "string", + "defaultValue": "Administrator", + "metadata": { + "description": "Job Role" + }, + "allowedValues": [ + "Administrator", + "Analyst (Industry/Finance)", + "Analyst (Technical)", + "Architect", + "C level", + "Consultant", + "Developer", + "Director", + "Engineer", + "Individual contributor", + "Manager", + "Partner", + "Student", + "VP" + ] + }, + "jobFunction": { + "type": "string", + "defaultValue": "Analytics / Business Intelligence", + "metadata": { + "description": "Job Function" + }, + "allowedValues": [ + "Analytics / Business Intelligence", + "Big Data / Architecture", + "Data Warehouse / Management", + "Data Science", + "Database", + "ETL / ELT", + "Infrastructure", + "IT", + "Marketing / Sales", + "Networking", + "Manager", + "Security / Compliance", + "Storage" + ] + }, + "clouderaTags": { + "type": "object" + }, + "tableauTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + } + }, + "variables": { + "templateAPIVersion": "2015-11-01", + "resourceAPIVersion": "2015-06-15", + "installCDH": "True", + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "scriptsUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos", + "share-resourcesUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos/nested/shared-resources-new-vnet.json", + "data-nodeUri": "[concat(variables('scriptsUri'), '/nested/data-node-', toLower(subString(parameters('vmSize'), 9, 4)), '.json')]", + "sa": "10.3.0.4", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterStorageAccount": { + "prefix": "storageAccountPrefix", + "type": "Premium_LRS" + }, + "workerStorageAccount": { + "prefix": "storageAccountPrefix", + "type": "Standard_LRS" + }, + "clusterTshirtSizeEval": { + "masterNodeCount": 1, + "dataNodeCount": 3, + "highAvailability": "false" + }, + "clusterTshirtSizeProd": { + "masterNodeCount": 3, + "dataNodeCount": 3, + "highAvailability": "true" + }, + "clusterSpec": "concat(clusterTshirtSize, parameters(tshirtSize))", + "vmSpec": { + "vmSize": "Standard_D8s_v3", + "adminUsername": "azureuser", + "adminPassword": "adminPassword", + "masterNodeASName": "dnsNamePrefix-mnAS", + "dataNodeASName": "dnsNamePrefix-dnAS" + }, + "networkSpec": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "clouderavnet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet" + }, + "newVNetId": "Microsoft.Network/virtualNetworks/clouderavnet", + "existingVNetId": "parameters('virtualNetworkRGName')/Microsoft.Network/virtualNetworks/clouderavnet", + "VNetId": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Utilizes the shared resources configurations. Uses the DS13 servers sizes for the deployment", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos/nested/shared-resources-new-vnet.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "clouderavnet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet" + } + }, + "masterNodeASName": { + "value": "(vmSpec).masterNodeASName" + }, + "dataNodeASName": { + "value": "(vmSpec).dataNodeASName" + }, + "clouderaTags": { + "value": "clouderaTags" + }, + "tableauTags": { + "value": "tableauTags" + }, + "quickstartTags": { + "value": "quickstartTags" + } + } + } + }, + { + "name": "master-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Cloudera Master Node resource", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos/nested/master-node.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "dnsNamePrefix" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos" + }, + "storageAccount": { + "value": { + "prefix": "storageAccountPrefix", + "type": "Premium_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).masterNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D8s_v3", + "adminUsername": "azureuser", + "adminPassword": "adminPassword", + "masterNodeASName": "dnsNamePrefix-mnAS", + "dataNodeASName": "dnsNamePrefix-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "clouderavnet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "clouderaTags": { + "value": "clouderaTags" + }, + "tableauTags": { + "value": "tableauTags" + }, + "quickstartTags": { + "value": "quickstartTags" + } + } + } + }, + { + "name": "data-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Cloudera Data Node resource", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('data-nodeUri')]", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "dnsNamePrefix" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos" + }, + "storageAccount": { + "value": { + "prefix": "storageAccountPrefix", + "type": "Standard_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).dataNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D8s_v3", + "adminUsername": "azureuser", + "adminPassword": "adminPassword", + "masterNodeASName": "dnsNamePrefix-mnAS", + "dataNodeASName": "dnsNamePrefix-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "clouderavnet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "clouderaTags": { + "value": "clouderaTags" + }, + "tableauTags": { + "value": "tableauTags" + }, + "quickstartTags": { + "value": "quickstartTags" + } + } + } + }, + { + "name": "setup-cloudera", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Resources that setup the Cloudera cluster", + "dependsOn": [ + "Microsoft.Resources/deployments/data-node", + "Microsoft.Resources/deployments/master-node" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos/nested/setup-cloudera.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "dnsNamePrefix" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D8s_v3", + "adminUsername": "azureuser", + "adminPassword": "adminPassword", + "masterNodeASName": "dnsNamePrefix-mnAS", + "dataNodeASName": "dnsNamePrefix-dnAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.3.0.0/16", + "subnetPrefix": "10.3.0.0/16", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.3.0.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "clouderavnet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "fqdn": { + "value": "[reference('master-node').outputs.fqdn.value]" + }, + "cmUsername": { + "value": "cmadmin" + }, + "cmPassword": { + "value": "cmPassword" + }, + "company": { + "value": "Company" + }, + "emailAddress": { + "value": "email@yourcompany.com" + }, + "businessPhone": { + "value": "123456789" + }, + "firstName": { + "value": "FirstName" + }, + "lastName": { + "value": "LastName" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Analytics / Business Intelligence" + }, + "installCDH": { + "value": "True" + }, + "clouderaTags": { + "value": "clouderaTags" + }, + "tableauTags": { + "value": "tableauTags" + }, + "quickstartTags": { + "value": "quickstartTags" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT910 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT910 new file mode 100644 index 0000000..4b056a8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT910 @@ -0,0 +1,188 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/modules/Microsoft.Storage/storageAccounts/0.9/azuredeploy.json", + "/modules/Microsoft.Storage/storageAccounts/0.9/azuredeploy.parameters.json" + ], + "timestamp": 1642962902695, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/modules/Microsoft.Storage/storageAccounts/0.9/azuredeploy.json", + "/modules/Microsoft.Storage/storageAccounts/0.9/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT910", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT910", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the key vault should be created." + } + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the storageAccount." + } + }, + "skuName": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Premium_LRS", + "Premium_ZRS", + "Standard_GRS", + "Standard_GZRS", + "Standard_LRS", + "Standard_RAGRS", + "Standard_RAGZRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Specifies the sku name for the storage account." + } + }, + "kind": { + "type": "string", + "defaultValue": "StorageV2", + "allowedValues": [ + "BlobStorage", + "BlockBlobStorage", + "FileStorage", + "Storage", + "StorageV2" + ], + "metadata": { + "description": "Specifies the type of storage account." + } + }, + "accessTier": { + "type": "string", + "defaultValue": "Hot", + "allowedValues": [ + "Hot", + "Cool" + ], + "metadata": { + "description": "Required for storage accounts where kind = BlobStorage. The access tier used for billing." + } + }, + "minimumTlsVersion": { + "type": "string", + "defaultValue": "TLS1_2", + "allowedValues": [ + "TLS1_0", + "TLS1_1", + "TLS1_2" + ], + "metadata": { + "description": "Set the minimum TLS version to be permitted on requests to storage." + } + }, + "supportsHttpsTrafficOnly": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Allows https traffic only to storage service if set to true." + } + }, + "allowBlobPublicAccess": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Allow or disallow public access to all blobs or containers in the storage account." + } + }, + "allowSharedKeyAccess": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Indicates whether the storage account permits requests to be authorized with the account access key via Shared Key. If false, then all requests, including shared access signatures, must be authorized with Azure Active Directory (Azure AD)." + } + }, + "networkAclsBypass": { + "type": "string", + "defaultValue": "AzureServices", + "allowedValues": [ + "AzureServices", + "Logging", + "Metrics", + "None" + ], + "metadata": { + "description": "Specifies whether traffic is bypassed by the indicated service." + } + }, + "networkAclsDefaultAction": { + "type": "string", + "defaultValue": "Allow", + "allowedValues": [ + "Allow", + "Deny" + ], + "metadata": { + "description": "Specifies the default action of allow or deny when no other rules match." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[concat('storage', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "properties": { + "accessTier": "Hot", + "minimumTlsVersion": "TLS1_2", + "supportsHttpsTrafficOnly": true, + "allowBlobPublicAccess": true, + "allowSharedKeyAccess": true, + "networkAcls": { + "bypass": "AzureServices", + "defaultAction": "Allow" + } + } + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + }, + "storageAccountResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "location": { + "type": "string", + "value": "[parameters('location')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT911 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT911 new file mode 100644 index 0000000..8c03227 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT911 @@ -0,0 +1,121 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.json", + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962902701, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.json", + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT911", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.analysisservices/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT911", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "1941147710552294869" + } + }, + "parameters": { + "serverName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Analysis Services server to create. Server name must begin with a letter, be lowercase alphanumeric, and between 3 and 63 characters in length. Server name must be unique per region." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Azure Analysis Services server. For supported regions, see https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-overview#availability-by-region" + } + }, + "skuName": { + "type": "string", + "defaultValue": "S0", + "metadata": { + "description": "The sku name of the Azure Analysis Services server to create. Choose from: B1, B2, D1, S0, S1, S2, S3, S4, S8, S9. Some skus are region specific. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-overview#availability-by-region" + } + }, + "capacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The total number of query replica scale-out instances. Scale-out of more than one instance is supported on selected regions only. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-overview#availability-by-region" + } + }, + "firewallSettings": { + "type": "object", + "defaultValue": { + "firewallRules": [ + { + "firewallRuleName": "AllowFromAll", + "rangeStart": "0.0.0.0", + "rangeEnd": "255.255.255.255" + } + ], + "enablePowerBIService": true + }, + "metadata": { + "description": "The inbound firewall rules to define on the server. If not specified, firewall is disabled." + } + }, + "backupBlobContainerUri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The SAS URI to a private Azure Blob Storage container with read, write and list permissions. Required only if you intend to use the backup/restore functionality. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-backup" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.AnalysisServices/servers", + "apiVersion": "2017-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "S0", + "capacity": 1 + }, + "properties": { + "ipV4FirewallSettings": { + "firewallRules": [ + { + "firewallRuleName": "AllowFromAll", + "rangeStart": "0.0.0.0", + "rangeEnd": "255.255.255.255" + } + ], + "enablePowerBIService": true + }, + "backupBlobContainerUri": "" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT912 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT912 new file mode 100644 index 0000000..28ef397 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT912 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.json", + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962902708, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.json", + "/quickstarts/microsoft.analysisservices/analysis-services-create/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT912", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.analysisservices/servers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT912", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "1941147710552294869" + } + }, + "parameters": { + "serverName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Analysis Services server to create. Server name must begin with a letter, be lowercase alphanumeric, and between 3 and 63 characters in length. Server name must be unique per region." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the Azure Analysis Services server. For supported regions, see https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-overview#availability-by-region" + }, + "value": "usgovarizona" + }, + "skuName": { + "type": "string", + "defaultValue": "S0", + "metadata": { + "description": "The sku name of the Azure Analysis Services server to create. Choose from: B1, B2, D1, S0, S1, S2, S3, S4, S8, S9. Some skus are region specific. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-overview#availability-by-region" + } + }, + "capacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The total number of query replica scale-out instances. Scale-out of more than one instance is supported on selected regions only. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-overview#availability-by-region" + } + }, + "firewallSettings": { + "type": "object", + "defaultValue": { + "firewallRules": [ + { + "firewallRuleName": "AllowFromAll", + "rangeStart": "0.0.0.0", + "rangeEnd": "255.255.255.255" + } + ], + "enablePowerBIService": true + }, + "metadata": { + "description": "The inbound firewall rules to define on the server. If not specified, firewall is disabled." + } + }, + "backupBlobContainerUri": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "The SAS URI to a private Azure Blob Storage container with read, write and list permissions. Required only if you intend to use the backup/restore functionality. See https://docs.microsoft.com/en-us/azure/analysis-services/analysis-services-backup" + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.AnalysisServices/servers", + "apiVersion": "2017-08-01", + "name": "GEN-UNIQUE", + "location": "usgovarizona", + "sku": { + "name": "S0", + "capacity": 1 + }, + "properties": { + "ipV4FirewallSettings": { + "firewallRules": [ + { + "firewallRuleName": "AllowFromAll", + "rangeStart": "0.0.0.0", + "rangeEnd": "255.255.255.255" + } + ], + "enablePowerBIService": true + }, + "backupBlobContainerUri": "" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT913 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT913 new file mode 100644 index 0000000..cd94bf1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT913 @@ -0,0 +1,489 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-all-resources/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-all-resources/azuredeploy.parameters.json" + ], + "timestamp": 1642962902715, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-all-resources/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-all-resources/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT913", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT913", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Developer", + "Standard", + "Premium" + ], + "defaultValue": "Standard", + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "mutualAuthenticationCertificate": { + "type": "securestring", + "metadata": { + "description": "Base-64 encoded Mutual authentication PFX certificate." + }, + "value": "" + }, + "certificatePassword": { + "type": "securestring", + "metadata": { + "description": "Mutual authentication certificate password." + }, + "value": "" + }, + "eventHubNamespaceConnectionString": { + "type": "securestring", + "metadata": { + "description": "EventHub connection string for logger." + }, + "value": "" + }, + "googleClientSecret": { + "type": "securestring", + "metadata": { + "description": "Google client secret to configure google identity." + }, + "value": "" + }, + "openIdConnectClientSecret": { + "type": "securestring", + "metadata": { + "description": "OpenId connect client secret." + }, + "value": "" + }, + "tenantPolicy": { + "type": "string", + "metadata": { + "description": "Tenant policy XML." + }, + "value": "" + }, + "apiPolicy": { + "type": "string", + "metadata": { + "description": "API policy XML." + }, + "value": "" + }, + "operationPolicy": { + "type": "string", + "metadata": { + "description": "Operation policy XML." + }, + "value": "" + }, + "productPolicy": { + "type": "string", + "metadata": { + "description": "Product policy XML." + }, + "value": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "apiManagementServiceName": "[concat('apiservice', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "apiVersion": "2017-03-01", + "name": "[variables('apiManagementServiceName')]", + "type": "Microsoft.ApiManagement/service", + "location": "[resourceGroup().location]", + "tags": {}, + "sku": { + "name": "Standard", + "capacity": 1 + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "templateTest" + }, + "resources": [ + { + "apiVersion": "2017-03-01", + "type": "policies", + "name": "policy", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "policyContent": "" + } + }, + { + "apiVersion": "2017-03-01", + "type": "apis", + "name": "PetStoreSwaggerImportExample", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "contentFormat": "SwaggerLinkJson", + "contentValue": "http://petstore.swagger.io/v2/swagger.json", + "path": "examplepetstore" + } + }, + { + "apiVersion": "2017-03-01", + "type": "apis", + "name": "exampleApi", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "displayName": "Example API Name", + "description": "Description for example API", + "serviceUrl": "https://example.net", + "path": "exampleapipath", + "protocols": [ + "HTTPS" + ] + }, + "resources": [ + { + "apiVersion": "2017-03-01", + "type": "operations", + "name": "exampleOperationsDELETE", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/apis/exampleApi')]" + ], + "properties": { + "displayName": "DELETE resource", + "method": "DELETE", + "urlTemplate": "/resource", + "description": "A demonstration of a DELETE call" + } + }, + { + "apiVersion": "2017-03-01", + "type": "operations", + "name": "exampleOperationsGET", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/apis/exampleApi')]" + ], + "properties": { + "displayName": "GET resource", + "method": "GET", + "urlTemplate": "/resource", + "description": "A demonstration of a GET call" + }, + "resources": [ + { + "apiVersion": "2017-03-01", + "type": "policies", + "name": "policy", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/apis/exampleApi')]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/apis/exampleApi/operations/exampleOperationsGET')]" + ], + "properties": { + "policyContent": "" + } + } + ] + } + ] + }, + { + "apiVersion": "2017-03-01", + "type": "apis", + "name": "exampleApiWithPolicy", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "displayName": "Example API Name with Policy", + "description": "Description for example API with policy", + "serviceUrl": "https://exampleapiwithpolicy.net", + "path": "exampleapiwithpolicypath", + "protocols": [ + "HTTPS" + ] + }, + "resources": [ + { + "apiVersion": "2017-03-01", + "type": "policies", + "name": "policy", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/apis/exampleApiWithPolicy')]" + ], + "properties": { + "policyContent": "" + } + } + ] + }, + { + "apiVersion": "2017-03-01", + "type": "products", + "name": "exampleProduct", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "displayName": "Example Product Name", + "description": "Description for example product", + "terms": "Terms for example product", + "subscriptionRequired": true, + "approvalRequired": false, + "subscriptionsLimit": 1, + "state": "published" + }, + "resources": [ + { + "apiVersion": "2017-03-01", + "type": "apis", + "name": "exampleApi", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/apis/exampleApi')]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/products/exampleProduct')]" + ] + }, + { + "apiVersion": "2017-03-01", + "type": "policies", + "name": "policy", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/products/exampleProduct')]" + ], + "properties": { + "policyContent": "" + } + } + ] + }, + { + "apiVersion": "2017-03-01", + "type": "users", + "name": "exampleUser1", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "firstName": "ExampleFirstName1", + "lastName": "ExampleLastName1", + "email": "ExampleFirst1@example.com", + "state": "active", + "note": "note for example user 1" + } + }, + { + "apiVersion": "2017-03-01", + "type": "users", + "name": "exampleUser2", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "firstName": "ExampleFirstName2", + "lastName": "ExampleLastName2", + "email": "ExampleFirst2@example.com", + "state": "active", + "note": "note for example user 2" + } + }, + { + "apiVersion": "2017-03-01", + "type": "users", + "name": "exampleUser3", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "firstName": "ExampleFirstName3", + "lastName": "ExampleLastName3", + "email": "ExampleFirst3@example.com", + "state": "active", + "note": "note for example user 3" + } + }, + { + "apiVersion": "2017-03-01", + "type": "properties", + "name": "exampleproperties", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "displayName": "propertyExampleName", + "value": "propertyExampleValue", + "tags": [ + "exampleTag" + ] + } + }, + { + "apiVersion": "2017-03-01", + "type": "subscriptions", + "name": "examplesubscription1", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/products/exampleProduct')]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/users/exampleUser1')]" + ], + "properties": { + "productId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/exampleServiceName/products/exampleProduct", + "userId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/exampleServiceName/users/exampleUser1" + } + }, + { + "apiVersion": "2017-03-01", + "type": "subscriptions", + "name": "examplesubscription2", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/products/exampleProduct')]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/users/exampleUser3')]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/subscriptions/examplesubscription1')]" + ], + "properties": { + "productId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/exampleServiceName/products/exampleProduct", + "userId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/exampleServiceName/users/exampleUser3" + } + }, + { + "apiVersion": "2017-03-01", + "type": "certificates", + "name": "exampleCertificate", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "data": "", + "password": "" + } + }, + { + "apiVersion": "2017-03-01", + "type": "groups", + "name": "exampleGroup", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "displayName": "Example Group Name", + "description": "Example group description" + }, + "resources": [ + { + "apiVersion": "2017-03-01", + "type": "users", + "name": "exampleUser3", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]", + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'), '/groups/exampleGroup')]" + ] + } + ] + }, + { + "apiVersion": "2017-03-01", + "type": "openidConnectProviders", + "name": "exampleOpenIdConnectProvider", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "displayName": "exampleOpenIdConnectProviderName", + "description": "Description for example OpenId Connect provider", + "metadataEndpoint": "https://example-openIdConnect-url.net", + "clientId": "exampleClientId", + "clientSecret": "" + } + }, + { + "apiVersion": "2017-03-01", + "type": "loggers", + "name": "exampleLogger", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "loggerType": "azureEventHub", + "description": "Description for example logger", + "credentials": { + "name": "exampleEventHubName", + "connectionString": "" + } + } + }, + { + "apiVersion": "2017-03-01", + "type": "identityProviders", + "name": "google", + "dependsOn": [ + "[concat('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]" + ], + "properties": { + "clientId": "googleClientId", + "clientSecret": "" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT914 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT914 new file mode 100644 index 0000000..9e08cee --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT914 @@ -0,0 +1,485 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962902725, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT914", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT914", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publisherEmail": { + "type": "string", + "defaultValue": "constoso@contoso.com", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "defaultValue": "apimPublisher", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Developer", + "Premium" + ], + "defaultValue": "Developer", + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "apimvnet", + "metadata": { + "description": "Virtual Network name" + }, + "value": "GEN-VNET-NAME" + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet Prefix" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "apim", + "metadata": { + "description": "Subnet Name" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "apimSubnetServiceEndpoints": { + "type": "array", + "defaultValue": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ], + "metadata": { + "description": "Service Endpoints enabled on the APIM subnet" + }, + "value": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region where the resources will be deployed" + } + } + }, + "variables": { + "apiManagementServiceName": "[concat('apiservice', uniqueString(resourceGroup().id))]", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "apimNsgName": "[concat('apimnsg', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('apimNsgName')]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Client_communication_to_API_Management", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Secure_Client_communication_to_API_Management", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Management_endpoint_for_Azure_portal_and_Powershell", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3443", + "sourceAddressPrefix": "ApiManagement", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Redis_Cache", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "Dependency_to_sync_Rate_Limit_Inbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 135, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Azure_SQL", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Sql", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "Dependency_for_Log_to_event_Hub_policy", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "5671", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "EventHub", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Redis_Cache_outbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "Depenedency_To_sync_RateLimit_Outbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 165, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Azure_File_Share_for_GIT", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "445", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "Azure_Infrastructure_Load_Balancer", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 180, + "direction": "Inbound" + } + }, + { + "name": "Publish_DiagnosticLogs_And_Metrics", + "properties": { + "description": "APIM Logs and Metrics for consumption by admins and your IT team are all part of the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureMonitor", + "access": "Allow", + "priority": 185, + "direction": "Outbound", + "destinationPortRanges": [ + "443", + "12000", + "1886" + ] + } + }, + { + "name": "Connect_To_SMTP_Relay_For_SendingEmails", + "properties": { + "description": "APIM features the ability to generate email traffic as part of the data plane and the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 190, + "direction": "Outbound", + "destinationPortRanges": [ + "25", + "587", + "25028" + ] + } + }, + { + "name": "Authenticate_To_Azure_Active_Directory", + "properties": { + "description": "Connect to Azure Active Directory for Developer Portal Authentication or for Oauth2 flow during any Proxy Authentication", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureActiveDirectory", + "access": "Allow", + "priority": 200, + "direction": "Outbound", + "destinationPortRanges": [ + "80", + "443" + ] + } + }, + { + "name": "Dependency_on_Azure_Storage", + "properties": { + "description": "APIM service dependency on Azure Blob and Azure Table Storage", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "Publish_Monitoring_Logs", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 300, + "direction": "Outbound" + } + }, + { + "name": "Access_KeyVault", + "properties": { + "description": "Allow APIM service control plane access to KeyVault to refresh secrets", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureKeyVault", + "access": "Allow", + "priority": 350, + "direction": "Outbound", + "destinationPortRanges": [ + "443" + ] + } + }, + { + "name": "Deny_All_Internet_Outbound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 999, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]" + }, + "serviceEndpoints": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "name": "[variables('apiManagementServiceName')]", + "type": "Microsoft.ApiManagement/service", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ], + "sku": { + "name": "Developer", + "capacity": 1 + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "templateTest", + "virtualNetworkType": "External", + "virtualNetworkConfiguration": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + }, + "customProperties": { + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": false + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT915 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT915 new file mode 100644 index 0000000..966a9df --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT915 @@ -0,0 +1,550 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet-publicip/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet-publicip/azuredeploy.parameters.json" + ], + "timestamp": 1642962902733, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet-publicip/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-external-vnet-publicip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT915", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT915", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publisherEmail": { + "type": "string", + "defaultValue": "constoso@contoso.com", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "defaultValue": "apimPublisher", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Developer", + "Premium" + ], + "defaultValue": "Premium", + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance size of this API Management service.This should be in multiple of zones getting deployed." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "apimvnet", + "metadata": { + "description": "Virtual Network name" + }, + "value": "GEN-VNET-NAME" + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet Prefix" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "apim", + "metadata": { + "description": "Subnet Name" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "apimSubnetServiceEndpoints": { + "type": "array", + "defaultValue": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ], + "metadata": { + "description": "Service Endpoints enabled on the APIM subnet" + }, + "value": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region where the resources will be deployed" + }, + "value": "FranceCentral" + }, + "availabilityZones": { + "type": "array", + "defaultValue": [ + "1", + "2" + ], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name for the Public IP used to access the api management service." + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard" + ], + "metadata": { + "description": "SKU for the Public IP used to access the api management service." + } + }, + "publicIPAllocationMethod": { + "type": "string", + "defaultValue": "Static", + "allowedValues": [ + "Static" + ], + "metadata": { + "description": "Allocation method for the Public IP used to access Api Management service. Standard SKU public IP requires `Static` allocation." + } + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat(parameters('publicIpName'), '-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the api management service." + } + } + }, + "variables": { + "apiManagementServiceName": "[concat('apiservice', uniqueString(resourceGroup().id))]", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "apimNsgName": "[concat('apimnsg', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('apimNsgName')]", + "apiVersion": "2020-06-01", + "location": "FranceCentral", + "properties": { + "securityRules": [ + { + "name": "Client_communication_to_API_Management", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Secure_Client_communication_to_API_Management", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Management_endpoint_for_Azure_portal_and_Powershell", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3443", + "sourceAddressPrefix": "ApiManagement", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Redis_Cache", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "Dependency_to_sync_Rate_Limit_Inbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 135, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Azure_SQL", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Sql", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "Dependency_for_Log_to_event_Hub_policy", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "5671", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "EventHub", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Redis_Cache_outbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "Depenedency_To_sync_RateLimit_Outbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 165, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Azure_File_Share_for_GIT", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "445", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "Azure_Infrastructure_Load_Balancer", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6390", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 180, + "direction": "Inbound" + } + }, + { + "name": "Publish_DiagnosticLogs_And_Metrics", + "properties": { + "description": "APIM Logs and Metrics for consumption by admins and your IT team are all part of the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureMonitor", + "access": "Allow", + "priority": 185, + "direction": "Outbound", + "destinationPortRanges": [ + "443", + "12000", + "1886" + ] + } + }, + { + "name": "Connect_To_SMTP_Relay_For_SendingEmails", + "properties": { + "description": "APIM features the ability to generate email traffic as part of the data plane and the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 190, + "direction": "Outbound", + "destinationPortRanges": [ + "25", + "587", + "25028" + ] + } + }, + { + "name": "Authenticate_To_Azure_Active_Directory", + "properties": { + "description": "Connect to Azure Active Directory for Developer Portal Authentication or for Oauth2 flow during any Proxy Authentication", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureActiveDirectory", + "access": "Allow", + "priority": 200, + "direction": "Outbound", + "destinationPortRanges": [ + "80", + "443" + ] + } + }, + { + "name": "Dependency_on_Azure_Storage", + "properties": { + "description": "APIM service dependency on Azure Blob and Azure Table Storage", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "Publish_Monitoring_Logs", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 300, + "direction": "Outbound" + } + }, + { + "name": "Access_KeyVault", + "properties": { + "description": "Allow APIM service control plane access to KeyVault to refresh secrets", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureKeyVault", + "access": "Allow", + "priority": 350, + "direction": "Outbound", + "destinationPortRanges": [ + "443" + ] + } + }, + { + "name": "Deny_All_Internet_Outbound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 999, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "FranceCentral", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('publicIpName'), '-', uniqueString(resourceGroup().id)))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "FranceCentral", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]" + }, + "serviceEndpoints": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2021-01-01-preview", + "name": "[variables('apiManagementServiceName')]", + "type": "Microsoft.ApiManagement/service", + "location": "FranceCentral", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME", + "Microsoft.Network/publicIPAddresses/publicIPName" + ], + "sku": { + "name": "Premium", + "capacity": 2 + }, + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "templateTest", + "virtualNetworkType": "External", + "publicIpAddressId": "Microsoft.Network/publicIPAddresses/publicIPName", + "virtualNetworkConfiguration": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + }, + "customProperties": { + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": false + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT916 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT916 new file mode 100644 index 0000000..5a8511d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT916 @@ -0,0 +1,185 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-hostname/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-hostname/azuredeploy.parameters.json" + ], + "timestamp": 1642962902741, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-hostname/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-hostname/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT916", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT916", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Developer", + "Standard", + "Premium" + ], + "defaultValue": "Premium", + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "proxyCustomHostname1": { + "type": "string", + "metadata": { + "description": "Proxy Custom hostname 1." + }, + "value": "proxyHostname.fabrikam.com" + }, + "proxyCustomHostnameBase64EncodedPfxCertificate1": { + "type": "securestring", + "metadata": { + "description": "Base-64 encoded SSL .pfx Certificate for proxy custom hostname." + }, + "value": "" + }, + "proxySSLCertificatePassword1": { + "type": "securestring", + "metadata": { + "description": "Proxy SSL certificate password." + }, + "value": "" + }, + "proxyCustomHostname2": { + "type": "string", + "metadata": { + "description": "Proxy Custom hostname." + }, + "value": "proxyHostname.contoso.com" + }, + "proxyCustomHostnameBase64EncodedPfxCertificate2": { + "type": "securestring", + "metadata": { + "description": "Base-64 encoded SSL .pfx Certificate for proxy custom hostname." + }, + "value": "" + }, + "proxySSLCertificatePassword2": { + "type": "securestring", + "metadata": { + "description": "Proxy SSL certificate password." + }, + "value": "" + }, + "portalCustomHostname": { + "type": "string", + "metadata": { + "description": "Portal Custom hostname." + }, + "value": "portalHostname.contoso.com" + }, + "portalCustomHostnameBase64EncodedPfxCertificate": { + "type": "securestring", + "metadata": { + "description": "Base-64 encoded SSL .pfx Certificate for portal custom hostname." + }, + "value": "" + }, + "portalSSLCertificatePassword": { + "type": "securestring", + "metadata": { + "description": "Portal SSL certificate password." + }, + "value": "" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "apiManagementServiceName": "[concat('apiservice', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "apiVersion": "2017-03-01", + "name": "[variables('apiManagementServiceName')]", + "type": "Microsoft.ApiManagement/service", + "location": "[resourceGroup().location]", + "tags": {}, + "sku": { + "name": "Premium", + "capacity": 1 + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "templateTest", + "hostnameConfigurations": [ + { + "type": "Proxy", + "hostName": "proxyHostname.fabrikam.com", + "encodedCertificate": "", + "certificatePassword": "", + "negotiateClientCertificate": false + }, + { + "type": "Proxy", + "hostName": "proxyHostname.contoso.com", + "encodedCertificate": "", + "certificatePassword": "", + "negotiateClientCertificate": false + }, + { + "type": "Portal", + "hostName": "portalHostname.contoso.com", + "encodedCertificate": "", + "certificatePassword": "", + "negotiateClientCertificate": false + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT917 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT917 new file mode 100644 index 0000000..bf42402 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT917 @@ -0,0 +1,466 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962902747, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT917", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT917", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Developer", + "Premium" + ], + "defaultValue": "Developer", + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "internalvnet", + "metadata": { + "description": "Virtual Network name" + }, + "value": "GEN-VNET-NAME" + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet Prefix" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "apim", + "metadata": { + "description": "Subnet Name" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "apimSubnetServiceEndpoints": { + "type": "array", + "defaultValue": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ], + "metadata": { + "description": "Service Endpoints enabled on the APIM subnet" + }, + "value": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure Region where the resources will be deployed" + } + } + }, + "variables": { + "apiManagementServiceName": "[concat('apiservice', uniqueString(resourceGroup().id))]", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "apimNsgName": "[concat('apimnsg', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('apimNsgName')]", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "Client_communication_to_API_Management", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "Secure_Client_communication_to_API_Management", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "Management_endpoint_for_Azure_portal_and_Powershell", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3443", + "sourceAddressPrefix": "ApiManagement", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Redis_Cache", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "Dependency_to_sync_Rate_Limit_Inbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 135, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Azure_SQL", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Sql", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "Dependency_for_Log_to_event_Hub_policy", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "5671", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "EventHub", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Redis_Cache_outbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "Depenedency_To_sync_RateLimit_Outbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 165, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Azure_File_Share_for_GIT", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "445", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "Azure_Infrastructure_Load_Balancer", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 180, + "direction": "Inbound" + } + }, + { + "name": "Publish_DiagnosticLogs_And_Metrics", + "properties": { + "description": "APIM Logs and Metrics for consumption by admins and your IT team are all part of the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureMonitor", + "access": "Allow", + "priority": 185, + "direction": "Outbound", + "destinationPortRanges": [ + "443", + "12000", + "1886" + ] + } + }, + { + "name": "Connect_To_SMTP_Relay_For_SendingEmails", + "properties": { + "description": "APIM features the ability to generate email traffic as part of the data plane and the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 190, + "direction": "Outbound", + "destinationPortRanges": [ + "25", + "587", + "25028" + ] + } + }, + { + "name": "Authenticate_To_Azure_Active_Directory", + "properties": { + "description": "Connect to Azure Active Directory for Developer Portal Authentication or for Oauth2 flow during any Proxy Authentication", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureActiveDirectory", + "access": "Allow", + "priority": 200, + "direction": "Outbound", + "destinationPortRanges": [ + "80", + "443" + ] + } + }, + { + "name": "Dependency_on_Azure_Storage", + "properties": { + "description": "APIM service dependency on Azure Blob and Azure Table Storage", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "Publish_Monitoring_Logs", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 300, + "direction": "Outbound" + } + }, + { + "name": "Access_KeyVault", + "properties": { + "description": "Allow APIM service control plane access to KeyVault to refresh secrets", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureKeyVault", + "access": "Allow", + "priority": 350, + "direction": "Outbound", + "destinationPortRanges": [ + "443" + ] + } + }, + { + "name": "Deny_All_Internet_Outbound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 999, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2019-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]" + }, + "serviceEndpoints": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "name": "[variables('apiManagementServiceName')]", + "type": "Microsoft.ApiManagement/service", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME" + ], + "sku": { + "name": "Developer", + "capacity": 1 + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "templateTest", + "virtualNetworkType": "Internal", + "virtualNetworkConfiguration": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT918 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT918 new file mode 100644 index 0000000..c7c16f8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT918 @@ -0,0 +1,70 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962902755, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT918", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT918", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location in which resources will be created" + } + }, + "log-analytics-workspace-name": { + "type": "string", + "value": "GEN-UNIQUE" + } + }, + "variables": { + "log-analtytics-resource-group": "[resourceGroup().name]" + }, + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2021-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "PerGB2018" + } + } + } + ], + "outputs": { + "logAnalyticsWorkspaceId": { + "type": "string", + "value": "[resourceId(variables('log-analtytics-resource-group'), 'Microsoft.OperationalInsights/workspaces', parameters('log-analytics-workspace-name'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT919 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT919 new file mode 100644 index 0000000..e00a3e2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT919 @@ -0,0 +1,552 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/azuredeploy.parameters.json" + ], + "timestamp": 1642962902761, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-application-gateway/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT919", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/privatednszones", + "microsoft.apimanagement/service", + "microsoft.network/applicationgateways", + "microsoft.insights/components", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT919", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "base-name": { + "type": "string", + "metadata": { + "description": "This will be used to derive names for all of your resources" + }, + "value": "GEN-UNIQUE" + }, + "log-analytics-workspace-id": { + "type": "string", + "metadata": { + "description": "The resource ID for an existing Log Analytics workspace" + }, + "value": "GET-PREREQ-logAnalyticsWorkspaceId" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location in which resources will be created" + } + }, + "apim-sku": { + "type": "string", + "defaultValue": "Developer", + "allowedValues": [ + "Developer", + "Premium" + ], + "metadata": { + "description": "The edition of Azure API Management to use. This must be an edition that supports VNET Integration. This selection can have a significant impact on consumption cost and 'Developer' is recommended for non-production use." + } + }, + "apim-capacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of Azure API Management capacity units to provision. For Developer edition, this must equal 1." + } + }, + "app-gateway-capacity": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The number of Azure Application Gateway capacity units to provision. This setting has a direct impact on consumption cost and is recommended to be left at the default value of 1" + } + }, + "vnet-address-prefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The address space (in CIDR notation) to use for the VNET to be deployed in this solution. If integrating with other networked components, there should be no overlap in address space." + } + }, + "app-gateway-subnet-prefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The address space (in CIDR notation) to use for the subnet to be used by Azure Application Gateway. Must be contained in the VNET address space." + } + }, + "apim-subnet-prefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "The address space (in CIDR notation) to use for the subnet to be used by Azure API Management. Must be contained in the VNET address space." + } + }, + "apim-publisher-name": { + "type": "string", + "defaultValue": "Contoso", + "metadata": { + "description": "Descriptive name for publisher to be used in the portal" + } + }, + "apim-publisher-email": { + "type": "string", + "defaultValue": "api@contoso.com", + "metadata": { + "description": "Email adddress associated with publisher" + } + } + }, + "variables": { + "app-insights-name": "GEN-UNIQUE-ai", + "vnet-name": "GEN-UNIQUE-vnet", + "apim-name": "GEN-UNIQUE-apim", + "public-ip-name": "GEN-UNIQUE-pip", + "app-gateway-name": "GEN-UNIQUE-agw", + "vnet-dns-link-name": "GEN-UNIQUE-vnet-dns-link" + }, + "resources": [ + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE-apim", + "location": "[resourceGroup().location]", + "sku": { + "name": "Developer", + "capacity": 1 + }, + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "resources": [ + { + "type": "gateways", + "apiVersion": "2020-12-01", + "name": "my-gateway", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-apim" + ], + "properties": { + "locationData": { + "name": "My internal location" + }, + "description": "Self hosted gateway bringing API Management to the edge" + } + }, + { + "type": "loggers", + "apiVersion": "2020-12-01", + "name": "AppInsightsLogger", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-apim" + ], + "properties": { + "loggerType": "applicationInsights", + "resourceId": "Microsoft.Insights/components/GEN-UNIQUE-ai", + "credentials": { + "instrumentationKey": "[reference(variables('app-insights-name')).InstrumentationKey]" + } + } + }, + { + "type": "diagnostics", + "apiVersion": "2020-12-01", + "name": "applicationinsights", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-apim", + "Microsoft.ApiManagement/service/loggers/GEN-UNIQUE-apim/AppInsightsLogger" + ], + "properties": { + "alwaysLog": "allErrors", + "httpCorrelationProtocol": "Legacy", + "verbosity": "information", + "logClientIp": true, + "loggerId": "Microsoft.ApiManagement/service/loggers//GEN-UNIQUE-apim/AppInsightsLogger", + "sampling": { + "samplingType": "fixed", + "percentage": 100 + }, + "frontend": { + "request": { + "body": { + "bytes": 0 + } + }, + "response": { + "body": { + "bytes": 0 + } + } + }, + "backend": { + "request": { + "body": { + "bytes": 0 + } + }, + "response": { + "body": { + "bytes": 0 + } + } + } + } + } + ], + "properties": { + "publisherName": "Contoso", + "publisherEmail": "api@contoso.com", + "virtualNetworkType": "Internal", + "virtualNetworkConfiguration": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/apimSubnet" + } + } + }, + { + "scope": "[format('Microsoft.ApiManagement/service/{0}', variables('apim-name'))]", + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "logToAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-apim" + ], + "properties": { + "workspaceId": "GET-PREREQ-logAnalyticsWorkspaceId", + "logs": [ + { + "category": "GatewayLogs", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + }, + { + "type": "Microsoft.Network/applicationGateways", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-agw", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Insights/components/GEN-UNIQUE-ai", + "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-pip", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "properties": { + "sku": { + "name": "WAF_v2", + "tier": "WAF_v2", + "capacity": 1 + }, + "gatewayIPConfigurations": [ + { + "name": "appGatewayIpConfig", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE-vnet/appGatewaySubnet" + } + } + } + ], + "frontendIPConfigurations": [ + { + "name": "appGwPublicFrontendIp", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE-pip" + } + } + } + ], + "frontendPorts": [ + { + "name": "port_80", + "properties": { + "port": 80 + } + } + ], + "backendAddressPools": [ + { + "name": "gatewayBackEnd", + "properties": { + "backendAddresses": [ + { + "fqdn": "GEN-UNIQUE-apim.azure-api.net" + } + ] + } + } + ], + "backendHttpSettingsCollection": [ + { + "name": "apim-gateway-https-setting", + "properties": { + "port": 443, + "protocol": "Https", + "cookieBasedAffinity": "Disabled", + "hostName": "GEN-UNIQUE-apim.azure-api.net", + "pickHostNameFromBackendAddress": false, + "requestTimeout": 20, + "probe": { + "id": "Microsoft.Network/applicationGateways/probes/GEN-UNIQUE-agw/apim-gateway-probe" + } + } + } + ], + "httpListeners": [ + { + "name": "apim-listener", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/applicationGateways/frontEndIPConfigurations/GEN-UNIQUE-agw/appGwPublicFrontendIp" + }, + "frontendPort": { + "id": "Microsoft.Network/applicationGateways/frontEndPorts/GEN-UNIQUE-agw/port_80" + }, + "protocol": "Http", + "requireServerNameIndication": false + } + } + ], + "requestRoutingRules": [ + { + "name": "apim-routing-rule", + "properties": { + "ruleType": "Basic", + "httpListener": { + "id": "Microsoft.Network/applicationGateways/httpListeners/GEN-UNIQUE-agw/apim-listener" + }, + "backendAddressPool": { + "id": "Microsoft.Network/applicationGateways/backendAddressPools/GEN-UNIQUE-agw/gatewayBackEnd" + }, + "backendHttpSettings": { + "id": "Microsoft.Network/applicationGateways/backendHttpSettingsCollection/GEN-UNIQUE-agw/apim-gateway-https-setting" + } + } + } + ], + "probes": [ + { + "name": "apim-gateway-probe", + "properties": { + "protocol": "Https", + "host": "GEN-UNIQUE-apim.azure-api.net", + "port": 443, + "path": "/status-0123456789abcdef", + "interval": 30, + "timeout": 120, + "unhealthyThreshold": 8, + "pickHostNameFromBackendHttpSettings": false, + "minServers": 0 + } + } + ], + "webApplicationFirewallConfiguration": { + "enabled": true, + "firewallMode": "Detection", + "ruleSetType": "OWASP", + "ruleSetVersion": "3.2", + "requestBodyCheck": true, + "maxRequestBodySizeInKb": 128, + "fileUploadLimitInMb": 100 + } + } + }, + { + "scope": "[format('Microsoft.Network/applicationGateways/{0}', variables('app-gateway-name'))]", + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "logToAnalytics", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/applicationGateways/GEN-UNIQUE-agw" + ], + "properties": { + "workspaceId": "GET-PREREQ-logAnalyticsWorkspaceId", + "logs": [ + { + "category": "ApplicationGatewayAccessLog", + "enabled": true + }, + { + "category": "ApplicationGatewayPerformanceLog", + "enabled": true + }, + { + "category": "ApplicationGatewayFirewallLog", + "enabled": true + } + ], + "metrics": [ + { + "category": "AllMetrics", + "enabled": true + } + ] + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2020-02-02-preview", + "name": "GEN-UNIQUE-ai", + "location": "[resourceGroup().location]", + "kind": "web", + "properties": { + "Application_Type": "web", + "WorkspaceResourceId": "GET-PREREQ-logAnalyticsWorkspaceId" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-pip", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard", + "tier": "Regional" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-11-01", + "name": "GEN-UNIQUE-vnet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "type": "subnets", + "name": "appGatewaySubnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "serviceEndpoints": [ + { + "service": "Microsoft.KeyVault", + "locations": [ + "*" + ] + } + ], + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + }, + { + "type": "subnets", + "name": "apimSubnet", + "properties": { + "addressPrefix": "10.0.1.0/24", + "serviceEndpoints": [ + { + "service": "Microsoft.KeyVault", + "locations": [ + "*" + ] + } + ], + "privateEndpointNetworkPolicies": "Enabled", + "privateLinkServiceNetworkPolicies": "Enabled" + } + } + ] + } + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2018-09-01", + "name": "azure-api.net", + "location": "global", + "dependsOn": [ + "Microsoft.ApiManagement/service/GEN-UNIQUE-apim", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + ], + "resources": [ + { + "condition": true, + "type": "A", + "apiVersion": "2018-09-01", + "name": "GEN-UNIQUE-apim", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/azure-api.net", + "Microsoft.ApiManagement/service/GEN-UNIQUE-apim" + ], + "properties": { + "ttl": 36000, + "aRecords": [ + { + "ipv4Address": "[reference(resourceId('Microsoft.ApiManagement/service', variables('apim-name'))).privateIPAddresses[0]]" + } + ] + } + }, + { + "type": "virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE-vnet-dns-link", + "location": "global", + "dependsOn": [ + "Microsoft.Network/privateDnsZones/azure-api.net" + ], + "properties": { + "registrationEnabled": true, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE-vnet" + } + } + } + ], + "properties": {} + } + ], + "outputs": { + "publicEndpointFqdn": { + "type": "string", + "value": "[reference(variables('public-ip-name')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT92 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT92 new file mode 100644 index 0000000..1bc3b96 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT92 @@ -0,0 +1,509 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/master-node.json" + ], + "timestamp": 1642962885965, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/master-node.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT92", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT92", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "vnetID": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmCount": { + "type": "int" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "clouderaTags": { + "type": "object" + }, + "tableauTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "masterIP": "networkSpec", + "workerIP": "networkSpec", + "vmName": "dnsNamePrefix-mn", + "nicName": "dnsNamePrefix-mn-nic", + "publicIPAddressName": "dnsNamePrefix-mn-publicIP", + "storageAccountName": "nnstorageAccount", + "securityGroupName": "dnsNamePrefix-mn-sg" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "dnsNamePrefix-mn-sg", + "location": "[resourceGroup().location]", + "comments": "Shared Resources Network Security Group Rules", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HDFS.Web.UI", + "properties": { + "description": "Allows HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50070", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "Hiveserver2", + "properties": { + "description": "Allows Hiveserver traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "Hive.Metastore", + "properties": { + "description": "Allows Hive Metastore traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9083", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "Hue", + "properties": { + "description": "Allows Hue traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 104, + "direction": "Inbound" + } + }, + { + "name": "YARN.ResourceManager", + "properties": { + "description": "Allows YARN Resource Manager traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8088", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + }, + { + "name": "YARN.JobHistory.Server", + "properties": { + "description": "Allows YARN JobHistory Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "19888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 106, + "direction": "Inbound" + } + }, + { + "name": "Oozie.Server", + "properties": { + "description": "Allows Oozie Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 107, + "direction": "Inbound" + } + }, + { + "name": "Management.Web.UI", + "properties": { + "description": "Allows Management.Web.UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7180", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 108, + "direction": "Inbound" + } + }, + { + "name": "Navigator", + "properties": { + "description": "Allows Navigator traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7187", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 109, + "direction": "Inbound" + } + }, + { + "name": "HDFS.dn.Web.UI", + "properties": { + "description": "Allow HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50075", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "YARN.nm.Web.UI", + "properties": { + "description": "Allow YARN Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8042", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 111, + "direction": "Inbound" + } + }, + { + "name": "Impala.JDBC", + "properties": { + "description": "Allow Impala JDBC traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 112, + "direction": "Inbound" + } + }, + { + "name": "Impala.Shell", + "properties": { + "description": "Allow Impala Shell traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 113, + "direction": "Inbound" + } + }, + { + "name": "RDP", + "properties": { + "description": "Allow RDP Traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 114, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "copyIndex()nnstorageAccount", + "location": "[resourceGroup().location]", + "comments": "Master Node storage account configurations", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "storageAccountLoop", + "count": "vmCount" + }, + "properties": { + "accountType": "storageAccount" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "dnsNamePrefix-mn-publicIPcopyIndex()", + "location": "[resourceGroup().location]", + "comments": "Master Node Public IP Address configuration", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "publicIPLoop", + "count": "vmCount" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "dnsNamePrefix-mncopyIndex()" + } + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "dnsNamePrefix-mn-niccopyIndex()", + "location": "[resourceGroup().location]", + "comments": "Master Node network interface configuration", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/dnsNamePrefix-mn-publicIPcopyIndex()", + "Microsoft.Network/networkSecurityGroups/dnsNamePrefix-mn-sg" + ], + "copy": { + "name": "masterNodeNicLoop", + "count": "vmCount" + }, + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "[concat(parameters('networkSpec').ipOctet01, add(parameters('networkSpec').ipOctet2, div(copyIndex(parameters('networkSpec').ipOctet3), 256)), '.', mod(copyIndex(parameters('networkSpec').ipOctet3), 256))]", + "subnet": { + "id": "vnetID/subnets/networkSpec" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dnsNamePrefix-mn-publicIPcopyIndex()" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/dnsNamePrefix-mn-sg" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "dnsNamePrefix-mncopyIndex()", + "location": "[resourceGroup().location]", + "comments": "Master Node virtual machines configurations", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "masterNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Network/networkInterfaces/dnsNamePrefix-mn-niccopyIndex()", + "Microsoft.Storage/storageAccounts/copyIndex()nnstorageAccount" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/vmSpec" + }, + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "[reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn]", + "adminUsername": "vmSpec", + "adminPassword": "vmSpec", + "linuxConfiguration": { + "disablePasswordAuthentication": "false" + } + }, + "storageProfile": { + "imageReference": { + "publisher": "Redhat", + "offer": "RHEL", + "sku": "6.8", + "version": "6.8.20161028" + }, + "osDisk": { + "name": "dnsNamePrefix-mncopyIndex()_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "dnsNamePrefix-mncopyIndex()_DataDisk0", + "diskSizeGB": 512, + "lun": 0, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-mncopyIndex()_DataDisk1", + "diskSizeGB": 512, + "lun": 1, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-mncopyIndex()_DataDisk2", + "diskSizeGB": 512, + "lun": 2, + "createOption": "Empty" + }, + { + "name": "dnsNamePrefix-mncopyIndex()_DataDisk3", + "diskSizeGB": 512, + "lun": 3, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dnsNamePrefix-mn-niccopyIndex()" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "dnsNamePrefix-mncopyIndex()/prepareDisks", + "location": "[resourceGroup().location]", + "comments": "Master Node VM Extensions and scripts to configure the Cloudera cluster", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "copy": { + "name": "nameNodeNicLoop", + "count": "vmCount" + }, + "dependsOn": [ + "Microsoft.Compute/virtualMachines/dnsNamePrefix-mncopyIndex()" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/prepare-masternode-disks.sh", + "scriptsUri/scripts/initialize-node.sh" + ], + "commandToExecute": "[concat('sh initialize-node.sh \"', variables('masterIP'), '\" \"', variables('workerIP'), '\" \"', parameters('dnsNamePrefix'), '\" \"', reference(concat(variables('publicIPAddressName'), copyIndex())).dnsSettings.fqdn, '\" ', parameters('clusterSpec').masterNodeCount, ' ', parameters('clusterSpec').dataNodeCount, ' \"', parameters('vmSpec').adminUsername, '\" ', 'masternode', ' >> /home/$ADMINUSER/initialize-datanode.log 2>&1')]" + } + } + } + ], + "outputs": { + "fqdn": { + "type": "string", + "value": "[reference(concat(variables('publicIPAddressName'), '0')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT920 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT920 new file mode 100644 index 0000000..57fd0d0 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT920 @@ -0,0 +1,533 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-publicip/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-publicip/azuredeploy.parameters.json" + ], + "timestamp": 1642962902769, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-publicip/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-internal-vnet-publicip/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT920", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT920", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publisherEmail": { + "type": "string", + "defaultValue": "constoso@contoso.com", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "defaultValue": "apimPublisher", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Developer", + "Premium" + ], + "defaultValue": "Premium", + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 2, + "metadata": { + "description": "The instance size of this API Management service.This should be in multiple of zones getting deployed." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "apimvnet", + "metadata": { + "description": "Virtual Network name" + }, + "value": "GEN-VNET-NAME" + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address prefix" + } + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet Prefix" + } + }, + "subnetName": { + "type": "string", + "defaultValue": "apim", + "metadata": { + "description": "Subnet Name" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "apimSubnetServiceEndpoints": { + "type": "array", + "defaultValue": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + }, + { + "service": "Microsoft.KeyVault" + } + ], + "metadata": { + "description": "Service Endpoints enabled on the APIM subnet" + }, + "value": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + }, + { + "service": "Microsoft.KeyVault" + } + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Azure region where the resources will be deployed" + }, + "value": "FranceCentral" + }, + "availabilityZones": { + "type": "array", + "defaultValue": [ + "1", + "2" + ], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + }, + "publicIpName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Name for the Public IP used to access the api management service." + } + }, + "publicIpSku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Standard" + ], + "metadata": { + "description": "SKU for the Public IP used to access the api management service." + } + }, + "publicIPAllocationMethod": { + "type": "string", + "defaultValue": "Static", + "allowedValues": [ + "Static" + ], + "metadata": { + "description": "Allocation method for the Public IP used to access Api Management service. Standard SKU public IP requires `Static` allocation." + } + }, + "dnsLabelPrefix": { + "type": "string", + "defaultValue": "[toLower(concat(parameters('publicIpName'), '-', uniqueString(resourceGroup().id)))]", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the api management service." + } + } + }, + "variables": { + "apiManagementServiceName": "[concat('apiservice', uniqueString(resourceGroup().id))]", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "apimNsgName": "[concat('apimnsg', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('apimNsgName')]", + "apiVersion": "2020-06-01", + "location": "FranceCentral", + "properties": { + "securityRules": [ + { + "name": "Management_endpoint_for_Azure_portal_and_Powershell", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3443", + "sourceAddressPrefix": "ApiManagement", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 120, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Redis_Cache", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 130, + "direction": "Inbound" + } + }, + { + "name": "Dependency_to_sync_Rate_Limit_Inbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 135, + "direction": "Inbound" + } + }, + { + "name": "Dependency_on_Azure_SQL", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "1433", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Sql", + "access": "Allow", + "priority": 140, + "direction": "Outbound" + } + }, + { + "name": "Dependency_for_Log_to_event_Hub_policy", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "5671", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "EventHub", + "access": "Allow", + "priority": 150, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Redis_Cache_outbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6381-6383", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 160, + "direction": "Outbound" + } + }, + { + "name": "Depenedency_To_sync_RateLimit_Outbound", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "4290", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 165, + "direction": "Outbound" + } + }, + { + "name": "Dependency_on_Azure_File_Share_for_GIT", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "445", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 170, + "direction": "Outbound" + } + }, + { + "name": "Azure_Infrastructure_Load_Balancer", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "6390", + "sourceAddressPrefix": "AzureLoadBalancer", + "destinationAddressPrefix": "VirtualNetwork", + "access": "Allow", + "priority": 180, + "direction": "Inbound" + } + }, + { + "name": "Publish_DiagnosticLogs_And_Metrics", + "properties": { + "description": "APIM Logs and Metrics for consumption by admins and your IT team are all part of the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureMonitor", + "access": "Allow", + "priority": 185, + "direction": "Outbound", + "destinationPortRanges": [ + "443", + "12000", + "1886" + ] + } + }, + { + "name": "Connect_To_SMTP_Relay_For_SendingEmails", + "properties": { + "description": "APIM features the ability to generate email traffic as part of the data plane and the management plane", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Allow", + "priority": 190, + "direction": "Outbound", + "destinationPortRanges": [ + "25", + "587", + "25028" + ] + } + }, + { + "name": "Authenticate_To_Azure_Active_Directory", + "properties": { + "description": "Connect to Azure Active Directory for Developer Portal Authentication or for Oauth2 flow during any Proxy Authentication", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureActiveDirectory", + "access": "Allow", + "priority": 200, + "direction": "Outbound", + "destinationPortRanges": [ + "80", + "443" + ] + } + }, + { + "name": "Dependency_on_Azure_Storage", + "properties": { + "description": "APIM service dependency on Azure Blob and Azure Table Storage", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Storage", + "access": "Allow", + "priority": 100, + "direction": "Outbound" + } + }, + { + "name": "Publish_Monitoring_Logs", + "properties": { + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureCloud", + "access": "Allow", + "priority": 300, + "direction": "Outbound" + } + }, + { + "name": "Access_KeyVault", + "properties": { + "description": "Allow APIM service control plane access to KeyVault to refresh secrets", + "protocol": "Tcp", + "sourcePortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "AzureKeyVault", + "access": "Allow", + "priority": 350, + "direction": "Outbound", + "destinationPortRanges": [ + "443" + ] + } + }, + { + "name": "Deny_All_Internet_Outbound", + "properties": { + "protocol": "*", + "sourcePortRange": "*", + "destinationPortRange": "*", + "sourceAddressPrefix": "VirtualNetwork", + "destinationAddressPrefix": "Internet", + "access": "Deny", + "priority": 999, + "direction": "Outbound" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "FranceCentral", + "sku": { + "name": "Standard" + }, + "properties": { + "publicIPAllocationMethod": "Static", + "publicIPAddressVersion": "IPv4", + "dnsSettings": { + "domainNameLabel": "[toLower(concat(parameters('publicIpName'), '-', uniqueString(resourceGroup().id)))]" + } + } + }, + { + "apiVersion": "2020-06-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "GEN-VNET-NAME", + "location": "FranceCentral", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-VNET-SUBNET1-NAME", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('apimNsgName'))]" + }, + "serviceEndpoints": [ + { + "service": "Microsoft.Storage" + }, + { + "service": "Microsoft.Sql" + }, + { + "service": "Microsoft.EventHub" + }, + { + "service": "Microsoft.KeyVault" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2021-01-01-preview", + "name": "[variables('apiManagementServiceName')]", + "type": "Microsoft.ApiManagement/service", + "location": "FranceCentral", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-VNET-NAME", + "Microsoft.Network/publicIPAddresses/publicIPName" + ], + "sku": { + "name": "Premium", + "capacity": 2 + }, + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "templateTest", + "virtualNetworkType": "Internal", + "publicIpAddressId": "Microsoft.Network/publicIPAddresses/publicIPName", + "virtualNetworkConfiguration": { + "subnetResourceId": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME" + }, + "customProperties": { + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": false, + "Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": false + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT921 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT921 new file mode 100644 index 0000000..4e3f3bf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT921 @@ -0,0 +1,108 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-msi/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-msi/azuredeploy.parameters.json" + ], + "timestamp": 1642962902775, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-msi/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-msi/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT921", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT921", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "3660068246661203948" + } + }, + "parameters": { + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "sku": { + "type": "string", + "defaultValue": "Developer", + "allowedValues": [ + "Basic", + "Consumption", + "Developer", + "Standard", + "Premium" + ], + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2020-12-01", + "name": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Developer", + "capacity": 1 + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "templateTest" + }, + "identity": { + "type": "SystemAssigned" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT922 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT922 new file mode 100644 index 0000000..293a58b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT922 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.parameters.json" + ], + "timestamp": 1642962902781, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT922", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT922", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "10945314915065740179" + } + }, + "parameters": { + "apiManagementServiceName": { + "type": "string", + "defaultValue": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the API Management service." + } + }, + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the primary region of API Management service." + } + }, + "additionalLocations": { + "type": "array", + "defaultValue": [ + "eastus", + "westeurope" + ], + "metadata": { + "description": "Additional Locations to setup the ApiManagement gateway." + }, + "value": [ + "East US", + "West Central US" + ] + }, + "disableGatewayInAdditionalLocation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Ability to enable/disable Gateway proxy in any region including primary region." + } + }, + "minApiVersionToAllowOnControlPlane": { + "type": "string", + "defaultValue": "2019-12-01", + "allowedValues": [ + "2019-01-01", + "2019-12-01", + "2020-06-01-preview" + ], + "metadata": { + "description": "Minimum Api-Version to allow on all clients to Control Plane to prevent users with read-only permissions from accessing service secrets." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2020-12-01", + "name": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium", + "capacity": 1 + }, + "properties": { + "copy": [ + { + "name": "additionalLocations", + "count": 33, + "input": { + "location": "additionalLocations)[copyIndex(additionalLocations", + "sku": { + "name": "Premium", + "capacity": 1 + }, + "disableGateway": false + } + } + ], + "publisherEmail": "email@example.com", + "publisherName": "templateTest", + "apiVersionConstraint": { + "minApiVersion": "2019-12-01" + }, + "customProperties": { + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": "true" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT923 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT923 new file mode 100644 index 0000000..b92cdcc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT923 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962902790, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-multiregion/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT923", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT923", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "10945314915065740179" + } + }, + "parameters": { + "apiManagementServiceName": { + "type": "string", + "defaultValue": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the API Management service." + } + }, + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "templateTest" + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of the primary region of API Management service." + } + }, + "additionalLocations": { + "type": "array", + "defaultValue": [ + "eastus", + "westeurope" + ], + "metadata": { + "description": "Additional Locations to setup the ApiManagement gateway." + }, + "value": [ + "USGov Texas", + "USGov Arizona" + ] + }, + "disableGatewayInAdditionalLocation": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Ability to enable/disable Gateway proxy in any region including primary region." + } + }, + "minApiVersionToAllowOnControlPlane": { + "type": "string", + "defaultValue": "2019-12-01", + "allowedValues": [ + "2019-01-01", + "2019-12-01", + "2020-06-01-preview" + ], + "metadata": { + "description": "Minimum Api-Version to allow on all clients to Control Plane to prevent users with read-only permissions from accessing service secrets." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2020-12-01", + "name": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Premium", + "capacity": 1 + }, + "properties": { + "copy": [ + { + "name": "additionalLocations", + "count": 33, + "input": { + "location": "additionalLocations)[copyIndex(additionalLocations", + "sku": { + "name": "Premium", + "capacity": 1 + }, + "disableGateway": false + } + } + ], + "publisherEmail": "email@example.com", + "publisherName": "templateTest", + "apiVersionConstraint": { + "minApiVersion": "2019-12-01" + }, + "customProperties": { + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": "true" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT924 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT924 new file mode 100644 index 0000000..ffccfa4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT924 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-reference-keyvault/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-reference-keyvault/azuredeploy.parameters.json" + ], + "timestamp": 1642962902799, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-create-with-reference-keyvault/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-create-with-reference-keyvault/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT924", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT924", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service." + }, + "value": "admin@fabrikam.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service." + }, + "value": "Fabrikam" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Developer", + "Basic", + "Standard", + "Premium" + ], + "defaultValue": "Developer", + "metadata": { + "description": "The pricing tier of this API Management service." + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "proxyCustomHostname": { + "type": "string", + "metadata": { + "description": "Proxy Custom hostname." + }, + "value": "GEN-SELFSIGNED-CERT-DNSNAME" + }, + "proxyCustomHostnameBase64EncodedPfxCertificate": { + "type": "string", + "metadata": { + "description": "The base 64 encoded certificate issued to domain of the proxy custom hostname." + } + }, + "proxySSLCertificatePassword": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "Certificate Password." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "apiManagementServiceName": "[concat('apiservice1', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "name": "[variables('apiManagementServiceName')]", + "type": "Microsoft.ApiManagement/service", + "location": "[resourceGroup().location]", + "sku": { + "name": "Developer", + "capacity": 1 + }, + "properties": { + "publisherEmail": "admin@fabrikam.com", + "publisherName": "Fabrikam", + "hostnameConfigurations": [ + { + "type": "Proxy", + "hostName": "GEN-SELFSIGNED-CERT-DNSNAME", + "encodedCertificate": "proxyCustomHostnameBase64EncodedPfxCertificate", + "certificatePassword": "", + "negotiateClientCertificate": false + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT925 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT925 new file mode 100644 index 0000000..bef9721 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT925 @@ -0,0 +1,233 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-key-vault-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962902807, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-key-vault-create/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-key-vault-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT925", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments", + "microsoft.apimanagement/service", + "microsoft.keyvault/vaults/secrets", + "microsoft.keyvault/vaults", + "microsoft.managedidentity/userassignedidentities" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT925", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "17903284954599746970" + } + }, + "parameters": { + "apiManagementServiceName": { + "type": "string", + "defaultValue": "[format('apim-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the API Management Service to provision" + } + }, + "publisherEmail": { + "type": "string", + "defaultValue": "contoso@contoso.com", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + } + }, + "publisherName": { + "type": "string", + "defaultValue": "Contoso", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + } + }, + "sku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Basic", + "Consumption", + "Developer", + "Standard", + "Premium" + ], + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "keyVaultName": { + "type": "string", + "defaultValue": "[format('kv-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the KeyVault to provision" + } + }, + "sslCertValue": { + "type": "secureString", + "metadata": { + "description": "The base64 encoded SSL certificate in PFX format to be stored in Key Vault. CN and SAN must match the custom hostname of API Management Service." + }, + "value": "MIIKowIBAzCCCl8GCSqGSIb3DQEHAaCCClAEggpMMIIKSDCCBiEGCSqGSIb3DQEHAaCCBhIEggYOMIIGCjCCBgYGCyqGSIb3DQEMCgECoIIE9jCCBPIwHAYKKoZIhvcNAQwBAzAOBAijJwDgqprlyQICB9AEggTQsGwdrUIvVy9LkdjT4bTssBJck84za2ctyxo1a0WLLvzlm3Gs2q0hUBgcEvqmz0vYFrIBEAvpHNmTgOuLl0+0iHvy0nwCRwoLmqJszJBayDfDtFsWwSO/Q88rzMR4iaycwCg0VaET3Fc60ZLtByJrR05DEq1NZegKxttTUluslKTCWZZnnaskYxMLMAhq9xLHW0dxqNDs9NS6hMBVUzGOxr1JtLR/lvyHYHOPC9oPMVJW2J0xn3tKWj1xqRp6M9via1W6/4Nh4zQOaJ0c2Kvi/MRTLbN31qXjGCRYM+uUHc7/KBtKTDuUjOL71NSiGWNTfNZBRxxtGWXA8f/gIcWsPSQC8lO0g5nrTXaUqb5bQ+vRHrI3a37rTrLxw5tp5d3zZq9tSJx0w7FG8Wnl978ZgwN43KPSYfO807mT9a+Ghew1JBEz+ezQgI2c/HmaYOQvnzl02dRL25Wx7EnuDHAsbL68pH5dQjBQioxDWOFMwpukZjlrvwUYItOKGLq6oM8wm+lBYchHaCIplplwE6OKG/wH5BtMYL206qcl0/rzieub+USG8uibqhY1URW5dTtLdWa3t+ia5frk84aVIn4dterS6jyCNUQ8X/PZb2wChOKoubqZUwIvBK9f1r5MSZCk/x2wC9ctZDpqkEM1ljGEUNKqb6oq+ESiJD+vRnS2sHpsgUYYQOijznoxbvGEKPDzpZ+dheiPVnCm9T39y+km2c4GK9z/i731g1tM+6Ba1Fzv+Qfd5oNHcN76aq7r3P8tsTZH2685AIe7/+sYj0HON/xW2s33sgr3e5aBT3vk86LlTGiga7LfgITresfhSPh82iqDS/Pv1bkWbdSioG5RbC0JZEuj6Tza8cYZbx5gL5KEmM+K3qxowa/jvltPKqXx9HAOXECfMXtW9tql/xS87D1c5R6mKuxv33sp30Nm4TZg7Dx1UwzThTlO1jrnSYTwFwoTEvc6e/hkjnjwvKOl2MJWyQ3WK6ZUKCGAw2M/+Hbf4ugysebaDsrQZdq8c5nRHvdQYgMSwsRO6Dc0/MUNGuuqa9g1GC4+SWRpAfmIfFjrcemjkEjvhYJ6Y0/+nj4qRX7ndzUny1OkrTsVL20S0NZ/iEC8pccgpW3N4SzEz3SPYQhumrTHcIZ6FHDYMgrUzsGqxbxigExh+Ezy4a2dkmZRvQjZX7LDSuKHtiOi2lEY62X++VBrgs841LDnZs5PIrX3CA4u8Jr1KJ/yJNFJe/K0W6RN4sFovroseb/G5PsmNo2pzJub3ZVEafMIw3RL3GD8aexm4+ryItltIzonTqGp9byV+wx/Z66EpEXmh+mM1PQ31Go4M4QNKnk/RQ6QK3OwL992g3hLg4zYXLytGn1beB1A/eg13hzZFWRmcRiZY1LgHvwaClPvrKH+iWxp7uINKhQEBJVRwew3nXnS1FBbHMqAtBdaZW85bTjy6gxvvgjs4BzRamYf4TyOBX8sa9gtYip0Dw2+XlzeeNwHkPp4zG7Fli4bxUhv82o8aI/9A2WyVENB6xx2TW746gU94D2+HTpV9iDMCEL/UC28FKTHM4smoow+j7/6WMSEnL0ENsbivW13y0sNgqnWbl8Utgc/mS/5x83mOrAtkbsGaRrU46VLyHSLcj7228nP6RUxgfwwDQYJKwYBBAGCNxECMQAwEwYJKoZIhvcNAQkVMQYEBAEAAAAwWwYJKoZIhvcNAQkUMU4eTAB7AEUAMQBDAEYARAA5ADEAQQAtADAAMwBFAEMALQA0ADYARQBBAC0AQgBCAEQAOQAtADIANwBCADUAQQBFADEANAAyADAANwA2AH0weQYJKwYBBAGCNxEBMWweagBNAGkAYwByAG8AcwBvAGYAdAAgAEUAbgBoAGEAbgBjAGUAZAAgAFIAUwBBACAAYQBuAGQAIABBAEUAUwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggQfBgkqhkiG9w0BBwagggQQMIIEDAIBADCCBAUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEDMA4ECLx1ZL9/77aXAgIH0ICCA9ixwELgqEX2eMK+lmMG6Wn43k26bDFIcGwetXe4iRxZXSx1FMqXw3OZ6G1koxNuFmH1q0T9cu0q+ULxulD7qpzCdxIeaMXpygMvnGI3dV//lyPh3GVS2thxDS02+rs3mNQrnLSCDFhblNshpKitUeV6HU1CmjxsOv3mR5IwB/J+4fT+P+zPhjnE7HA6FzLwdNqYNxO4lXFTznImDfLzHOsUPcU49pMdpngz5FNCNkyCTnCSJIDqr0jT2gF/vJC3sDAzowUmcy6v+d0rfGN6HoC6PAtrJLQapJ9LtAivlpqaKuGcbtCGQrAXFHTgKWg1MB2oBWfAbj8IMFJ2lapPE2To8FDvJFnHhKtNfxA2BAYGtyXHpLAi/l6JiCNAcwqXToEECqugxE6ecbP2bIm6dpPy+gQ6OJR5rHmPJG6A6WCLFFpg4kULByOMM/8vTsuXL6V4/9cRXRrkZChkec4XqbhKFQaYDDXFsEe7EVDxZZlc1keDBZyS2K8zf6n0DOSOv3cy244r7g+b3oeTAJvRy2sfnn8MeDI5JqvWd6f8fZYYDLlNetFwcoieh7zie0E8mPrprPY/sDuGbgyv+qll2QscNtpo+ekfHlsjgt9XdppyzqPdNsI/fTGjp51pzbeky8HegF401G5N6Vl0bV7DvWIKfEz66qg7LAhnY2Oql+IX/hbcAtQt3ZX3RAW9u1EeSm5rVtqgkju6F9O0zBpFKCFAvz/plxnA1DsJlUoQYQ4ybFY7YjvhufjtleH1aYOd8ADNJqDu2hvNkWLok/AIFd2KLgYu9070NadhpSUlX/ZIfoO9snXd++5lHUKAjKjM3NWFCid8V236RLq+aW6SsRb8BwwrjPOHNyx2rpjAO/RYhHv0EHHQoWb+swyFw0gLZXHzbrroN53pnUbdooC77k7OM542SblJ7axHNuAEWrJoHmMRGqtDkxrt8FWwX4IUhhMb+L8N2ykhEBbs39KoZjD/AIkqWNjOT8f/9is9ohoXlTsGmJUVJ2OdCrDML1uuXj7Pawy1HPfEw0NIW58Jabi61LQhTmOG709/SymmvCoM8CuIZQuw2c3/1XU4+jzEZii0q1ua++KZOQowGaCK14xkdJjNsxncTHdZ6i1KfUpQN+BBvemVTCyqYN9AU1KDdBEuvsmiYujbxfiP9ya7VYwkQ0fgug9dGYiQzToR1i/TYvaFSaoxGAN+Pr3yLe3TiGn1MuZ1wAu3BVt80sCnvuD9Ej4LF4gYOl8VtVpQyIltv0iUguJCR1HACl8+RyHdMDeOTMbf2jINRl54YQOS6yL3JICopRvJfDQwOzAfMAcGBSsOAwIaBBQihebATtl9JRN/fE5S0viAdK9bJgQUtQGA+yLV771Yqoe3AvUTSfyOODkCAgfQ" + }, + "gatewayCustomHostname": { + "type": "string", + "metadata": { + "description": "Name of the gateway custom hostname" + }, + "value": "gateway.apimtesting.net" + } + }, + "functions": [], + "variables": { + "identityName": "[format('id-{0}', uniqueString(resourceGroup().id))]", + "keyVaultSecretsUserRoleDefinitionId": "4633458b-17de-408a-b874-0445c86b69e6" + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "apiVersion": "2018-11-30", + "name": "[format('id-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.KeyVault/vaults", + "apiVersion": "2021-06-01-preview", + "name": "[format('kv-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "standard", + "family": "A" + }, + "tenantId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))).tenantId]", + "enableRbacAuthorization": true, + "enableSoftDelete": true + }, + "dependsOn": [ + "Microsoft.ManagedIdentity/userAssignedIdentities/[format('id-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.KeyVault/vaults/secrets", + "apiVersion": "2019-09-01", + "name": "[format('{0}/sslCert', parameters('keyVaultName'))]", + "properties": { + "value": "MIIKowIBAzCCCl8GCSqGSIb3DQEHAaCCClAEggpMMIIKSDCCBiEGCSqGSIb3DQEHAaCCBhIEggYOMIIGCjCCBgYGCyqGSIb3DQEMCgECoIIE9jCCBPIwHAYKKoZIhvcNAQwBAzAOBAijJwDgqprlyQICB9AEggTQsGwdrUIvVy9LkdjT4bTssBJck84za2ctyxo1a0WLLvzlm3Gs2q0hUBgcEvqmz0vYFrIBEAvpHNmTgOuLl0+0iHvy0nwCRwoLmqJszJBayDfDtFsWwSO/Q88rzMR4iaycwCg0VaET3Fc60ZLtByJrR05DEq1NZegKxttTUluslKTCWZZnnaskYxMLMAhq9xLHW0dxqNDs9NS6hMBVUzGOxr1JtLR/lvyHYHOPC9oPMVJW2J0xn3tKWj1xqRp6M9via1W6/4Nh4zQOaJ0c2Kvi/MRTLbN31qXjGCRYM+uUHc7/KBtKTDuUjOL71NSiGWNTfNZBRxxtGWXA8f/gIcWsPSQC8lO0g5nrTXaUqb5bQ+vRHrI3a37rTrLxw5tp5d3zZq9tSJx0w7FG8Wnl978ZgwN43KPSYfO807mT9a+Ghew1JBEz+ezQgI2c/HmaYOQvnzl02dRL25Wx7EnuDHAsbL68pH5dQjBQioxDWOFMwpukZjlrvwUYItOKGLq6oM8wm+lBYchHaCIplplwE6OKG/wH5BtMYL206qcl0/rzieub+USG8uibqhY1URW5dTtLdWa3t+ia5frk84aVIn4dterS6jyCNUQ8X/PZb2wChOKoubqZUwIvBK9f1r5MSZCk/x2wC9ctZDpqkEM1ljGEUNKqb6oq+ESiJD+vRnS2sHpsgUYYQOijznoxbvGEKPDzpZ+dheiPVnCm9T39y+km2c4GK9z/i731g1tM+6Ba1Fzv+Qfd5oNHcN76aq7r3P8tsTZH2685AIe7/+sYj0HON/xW2s33sgr3e5aBT3vk86LlTGiga7LfgITresfhSPh82iqDS/Pv1bkWbdSioG5RbC0JZEuj6Tza8cYZbx5gL5KEmM+K3qxowa/jvltPKqXx9HAOXECfMXtW9tql/xS87D1c5R6mKuxv33sp30Nm4TZg7Dx1UwzThTlO1jrnSYTwFwoTEvc6e/hkjnjwvKOl2MJWyQ3WK6ZUKCGAw2M/+Hbf4ugysebaDsrQZdq8c5nRHvdQYgMSwsRO6Dc0/MUNGuuqa9g1GC4+SWRpAfmIfFjrcemjkEjvhYJ6Y0/+nj4qRX7ndzUny1OkrTsVL20S0NZ/iEC8pccgpW3N4SzEz3SPYQhumrTHcIZ6FHDYMgrUzsGqxbxigExh+Ezy4a2dkmZRvQjZX7LDSuKHtiOi2lEY62X++VBrgs841LDnZs5PIrX3CA4u8Jr1KJ/yJNFJe/K0W6RN4sFovroseb/G5PsmNo2pzJub3ZVEafMIw3RL3GD8aexm4+ryItltIzonTqGp9byV+wx/Z66EpEXmh+mM1PQ31Go4M4QNKnk/RQ6QK3OwL992g3hLg4zYXLytGn1beB1A/eg13hzZFWRmcRiZY1LgHvwaClPvrKH+iWxp7uINKhQEBJVRwew3nXnS1FBbHMqAtBdaZW85bTjy6gxvvgjs4BzRamYf4TyOBX8sa9gtYip0Dw2+XlzeeNwHkPp4zG7Fli4bxUhv82o8aI/9A2WyVENB6xx2TW746gU94D2+HTpV9iDMCEL/UC28FKTHM4smoow+j7/6WMSEnL0ENsbivW13y0sNgqnWbl8Utgc/mS/5x83mOrAtkbsGaRrU46VLyHSLcj7228nP6RUxgfwwDQYJKwYBBAGCNxECMQAwEwYJKoZIhvcNAQkVMQYEBAEAAAAwWwYJKoZIhvcNAQkUMU4eTAB7AEUAMQBDAEYARAA5ADEAQQAtADAAMwBFAEMALQA0ADYARQBBAC0AQgBCAEQAOQAtADIANwBCADUAQQBFADEANAAyADAANwA2AH0weQYJKwYBBAGCNxEBMWweagBNAGkAYwByAG8AcwBvAGYAdAAgAEUAbgBoAGEAbgBjAGUAZAAgAFIAUwBBACAAYQBuAGQAIABBAEUAUwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggQfBgkqhkiG9w0BBwagggQQMIIEDAIBADCCBAUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEDMA4ECLx1ZL9/77aXAgIH0ICCA9ixwELgqEX2eMK+lmMG6Wn43k26bDFIcGwetXe4iRxZXSx1FMqXw3OZ6G1koxNuFmH1q0T9cu0q+ULxulD7qpzCdxIeaMXpygMvnGI3dV//lyPh3GVS2thxDS02+rs3mNQrnLSCDFhblNshpKitUeV6HU1CmjxsOv3mR5IwB/J+4fT+P+zPhjnE7HA6FzLwdNqYNxO4lXFTznImDfLzHOsUPcU49pMdpngz5FNCNkyCTnCSJIDqr0jT2gF/vJC3sDAzowUmcy6v+d0rfGN6HoC6PAtrJLQapJ9LtAivlpqaKuGcbtCGQrAXFHTgKWg1MB2oBWfAbj8IMFJ2lapPE2To8FDvJFnHhKtNfxA2BAYGtyXHpLAi/l6JiCNAcwqXToEECqugxE6ecbP2bIm6dpPy+gQ6OJR5rHmPJG6A6WCLFFpg4kULByOMM/8vTsuXL6V4/9cRXRrkZChkec4XqbhKFQaYDDXFsEe7EVDxZZlc1keDBZyS2K8zf6n0DOSOv3cy244r7g+b3oeTAJvRy2sfnn8MeDI5JqvWd6f8fZYYDLlNetFwcoieh7zie0E8mPrprPY/sDuGbgyv+qll2QscNtpo+ekfHlsjgt9XdppyzqPdNsI/fTGjp51pzbeky8HegF401G5N6Vl0bV7DvWIKfEz66qg7LAhnY2Oql+IX/hbcAtQt3ZX3RAW9u1EeSm5rVtqgkju6F9O0zBpFKCFAvz/plxnA1DsJlUoQYQ4ybFY7YjvhufjtleH1aYOd8ADNJqDu2hvNkWLok/AIFd2KLgYu9070NadhpSUlX/ZIfoO9snXd++5lHUKAjKjM3NWFCid8V236RLq+aW6SsRb8BwwrjPOHNyx2rpjAO/RYhHv0EHHQoWb+swyFw0gLZXHzbrroN53pnUbdooC77k7OM542SblJ7axHNuAEWrJoHmMRGqtDkxrt8FWwX4IUhhMb+L8N2ykhEBbs39KoZjD/AIkqWNjOT8f/9is9ohoXlTsGmJUVJ2OdCrDML1uuXj7Pawy1HPfEw0NIW58Jabi61LQhTmOG709/SymmvCoM8CuIZQuw2c3/1XU4+jzEZii0q1ua++KZOQowGaCK14xkdJjNsxncTHdZ6i1KfUpQN+BBvemVTCyqYN9AU1KDdBEuvsmiYujbxfiP9ya7VYwkQ0fgug9dGYiQzToR1i/TYvaFSaoxGAN+Pr3yLe3TiGn1MuZ1wAu3BVt80sCnvuD9Ej4LF4gYOl8VtVpQyIltv0iUguJCR1HACl8+RyHdMDeOTMbf2jINRl54YQOS6yL3JICopRvJfDQwOzAfMAcGBSsOAwIaBBQihebATtl9JRN/fE5S0viAdK9bJgQUtQGA+yLV771Yqoe3AvUTSfyOODkCAgfQ", + "contentType": "application/x-pkcs12", + "attributes": { + "enabled": true + } + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/[format('kv-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "scope": "[format('Microsoft.KeyVault/vaults/{0}', parameters('keyVaultName'))]", + "name": "[guid(variables('keyVaultSecretsUserRoleDefinitionId'), resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName')), resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName')))]", + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', variables('keyVaultSecretsUserRoleDefinitionId'))]", + "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))).principalId]", + "principalType": "ServicePrincipal" + }, + "dependsOn": [ + "Microsoft.KeyVault/vaults/[format('kv-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.ManagedIdentity/userAssignedIdentities/[format('id-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2021-04-01-preview", + "name": "[format('apim-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "[format('{0}', resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName')))]": {} + } + }, + "sku": { + "name": "Standard", + "capacity": 1 + }, + "properties": { + "hostnameConfigurations": [ + { + "type": "Proxy", + "hostName": "gateway.apimtesting.net", + "keyVaultId": "[reference(resourceId('Microsoft.KeyVault/vaults/secrets', split(format('{0}/sslCert', parameters('keyVaultName')), '/')[0], split(format('{0}/sslCert', parameters('keyVaultName')), '/')[1])).secretUri]", + "identityClientId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))).clientId]", + "defaultSslBinding": true + } + ], + "publisherEmail": "contoso@contoso.com", + "publisherName": "Contoso", + "customProperties": { + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": "false", + "Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": "true" + } + }, + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults/secrets', split(format('{0}/sslCert', parameters('keyVaultName')), '/')[0], split(format('{0}/sslCert', parameters('keyVaultName')), '/')[1])]", + "Microsoft.ManagedIdentity/userAssignedIdentities/[format('id-{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT926 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT926 new file mode 100644 index 0000000..35cdf73 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT926 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-oms-integration/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-logs-oms-integration/azuredeploy.parameters.json" + ], + "timestamp": 1642962902816, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-oms-integration/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-logs-oms-integration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT926", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.apimanagement/service/providers/diagnosticsettings", + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT926", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "apiManagementPublisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "apiManagementPublisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "examplePublisher" + }, + "apiManagementSku": { + "type": "string", + "allowedValues": [ + "Developer", + "Standard", + "Premium" + ], + "defaultValue": "Developer", + "metadata": { + "description": "The pricing tiers of this API Management service" + } + }, + "apiManagementSkuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "omsSku": { + "type": "string", + "defaultValue": "free", + "allowedValues": [ + "free", + "standalone", + "pernode" + ], + "metadata": { + "description": "Select the SKU for your workspace" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "apiManagementServiceName": "[concat('apiservice', uniqueString(resourceGroup().id))]", + "omsWorkspaceName": "[concat('omsworkspace', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "name": "[variables('apiManagementServiceName')]", + "type": "Microsoft.ApiManagement/service", + "location": "[resourceGroup().location]", + "sku": { + "name": "Developer", + "capacity": 1 + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "examplePublisher" + } + }, + { + "name": "[variables('omsWorkspaceName')]", + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2015-11-01-preview", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "free" + } + } + }, + { + "name": "[concat(variables('apiManagementServiceName'), '/', 'Microsoft.Insights/service')]", + "type": "Microsoft.ApiManagement/service/providers/diagnosticSettings", + "apiVersion": "2015-07-01", + "dependsOn": [ + "[resourceId('Microsoft.ApiManagement/service/', variables('apiManagementServiceName'))]", + "[resourceId('Microsoft.OperationalInsights/workspaces/', variables('omsWorkspaceName'))]" + ], + "properties": { + "workspaceId": "[resourceId('Microsoft.OperationalInsights/workspaces', variables('omsWorkspaceName'))]", + "logs": [ + { + "category": "GatewayLogs", + "enabled": true + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT927 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT927 new file mode 100644 index 0000000..d4d3793 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT927 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.apimanagement/service/apis/policies.json" + ], + "timestamp": 1642962902825, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.apimanagement/service/apis/policies.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT927", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service/apis/policies" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT927", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingApiManagementResourceName": { + "type": "string", + "metadata": { + "description": "Name of existing Api Management service" + } + }, + "apiName": { + "type": "string", + "metadata": { + "description": "The Api Name within the Api Management to apply policy to. eg: 'my-billing-apis'. This template does not apply policy globally" + } + }, + "logToEventhubLoggerName": { + "type": "string", + "metadata": { + "description": "The name of 'log-to-eventhub' logger" + } + }, + "log2EHPolicyXml": { + "type": "string", + "defaultValue": "[concat('\r\n \r\n \r\n @{\r\n var body = context.Request.Body?.As<string>(true);\r\n var MAX_BODY_SIZE_FOR_EH = 145000;\r\n var origBodyLen = (null != body) ? body.Length : 0;\r\n if (MAX_BODY_SIZE_FOR_EH < origBodyLen){\r\n body = body.Remove(MAX_BODY_SIZE_FOR_EH);\r\n }\r\n var headers = context.Request.Headers\r\n .Where(h => h.Key != \"Ocp-Apim-Subscription-Key\")\r\n .Select(h => string.Format(\"{0}: {1}\", h.Key, String.Join(\", \", h.Value).Replace(\"\\\"\", \"\\\\\\\"\")))\r\n .ToArray<string>();\r\n var headerString = (headers.Any()) ? string.Join(\";;\", headers) : string.Empty;\r\n var messageId = context.Variables[\"message-id\"];\r\n var jwtToken = context.Request.Headers.GetValueOrDefault(\"Authorization\",\"\").AsJwt();\r\n var userId = (context.User != null && context.User.Id != null) ? context.User.Id : (jwtToken != null && jwtToken.Subject != null ? jwtToken.Subject : null);\r\n var companyId = \"\";\r\n var cru = new JObject();\r\n if (context.User != null) {\r\n cru.Add(\"Email\", context.User.Email);\r\n cru.Add(\"Id\", context.User.Id);\r\n cru.Add(\"FirstName\", context.User.FirstName);\r\n cru.Add(\"LastName\", context.User.LastName);\r\n }\r\n var crus = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(cru.ToString()));\r\n var requestBody = (body != null ? System.Convert.ToBase64String(Encoding.UTF8.GetBytes(body)) : null);\r\n string metadata = $@\"\";\r\n var request = $@\"\r\n \"\"event_type\"\": \"\"request\"\",\r\n \"\"message-id\"\": \"\"{messageId}\"\",\r\n \"\"method\"\": \"\"{context.Request.Method}\"\",\r\n \"\"ip_address\"\": \"\"{context.Request.IpAddress}\"\",\r\n \"\"uri\"\": \"\"{context.Request.OriginalUrl}\"\",\r\n \"\"user_id\"\": \"\"{userId}\"\",\r\n \"\"contextRequestUser\"\": \"\"{crus}\"\",\r\n \"\"company_id\"\": \"\"{companyId}\"\",\r\n \"\"request_headers\"\": \"\"{headerString}\"\",\r\n \"\"request_body\"\": \"\"{requestBody}\"\",\r\n \"\"metadata\"\": \"\"{metadata}\"\"\r\n \";\r\n return \"{\" + request + \"}\";\r\n }\r\n \r\n \r\n \r\n \r\n \r\n @{\r\n var body = context.Response.Body?.As<string>(true);\r\n var MAX_BODY_SIZE_FOR_EH = 145000;\r\n var origBodyLen = (null != body) ? body.Length : 0;\r\n if (MAX_BODY_SIZE_FOR_EH < origBodyLen){\r\n body = body.Remove(MAX_BODY_SIZE_FOR_EH);\r\n }\r\n var headers = context.Response.Headers\r\n .Select(h => string.Format(\"{0}: {1}\", h.Key, String.Join(\", \", h.Value).Replace(\"\\\"\", \"\\\\\\\"\")))\r\n .ToArray<string>();\r\n var headerString = (headers.Any()) ? string.Join(\";;\", headers): string.Empty;\r\n var messageId = context.Variables[\"message-id\"];\r\n var responseBody = (body != null ? System.Convert.ToBase64String(Encoding.UTF8.GetBytes(body)) : null);\r\n var response = $@\"\r\n \"\"event_type\"\": \"\"response\"\",\r\n \"\"orig_body_len\"\": \"\"{origBodyLen}\"\",\r\n \"\"message-id\"\": \"\"{messageId}\"\",\r\n \"\"status_code\"\": \"\"{context.Response.StatusCode}\"\",\r\n \"\"response_headers\"\": \"\"{headerString}\"\",\r\n \"\"response_body\"\": \"\"{responseBody}\"\"\r\n \";\r\n return \"{\" + response + \"}\";\r\n }\r\n \r\n \r\n \r\n \r\n')]", + "metadata": { + "description": "The xml blob that will completely overwrite existing value" + } + }, + "tags": { + "type": "Object" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.ApiManagement/service/apis/policies", + "apiVersion": "2020-12-01", + "name": "existingApiManagementResourceName/apiName/policy", + "tags": "tags", + "properties": { + "value": "[concat('\r\n \r\n \r\n @{\r\n var body = context.Request.Body?.As<string>(true);\r\n var MAX_BODY_SIZE_FOR_EH = 145000;\r\n var origBodyLen = (null != body) ? body.Length : 0;\r\n if (MAX_BODY_SIZE_FOR_EH < origBodyLen){\r\n body = body.Remove(MAX_BODY_SIZE_FOR_EH);\r\n }\r\n var headers = context.Request.Headers\r\n .Where(h => h.Key != \"Ocp-Apim-Subscription-Key\")\r\n .Select(h => string.Format(\"{0}: {1}\", h.Key, String.Join(\", \", h.Value).Replace(\"\\\"\", \"\\\\\\\"\")))\r\n .ToArray<string>();\r\n var headerString = (headers.Any()) ? string.Join(\";;\", headers) : string.Empty;\r\n var messageId = context.Variables[\"message-id\"];\r\n var jwtToken = context.Request.Headers.GetValueOrDefault(\"Authorization\",\"\").AsJwt();\r\n var userId = (context.User != null && context.User.Id != null) ? context.User.Id : (jwtToken != null && jwtToken.Subject != null ? jwtToken.Subject : null);\r\n var companyId = \"\";\r\n var cru = new JObject();\r\n if (context.User != null) {\r\n cru.Add(\"Email\", context.User.Email);\r\n cru.Add(\"Id\", context.User.Id);\r\n cru.Add(\"FirstName\", context.User.FirstName);\r\n cru.Add(\"LastName\", context.User.LastName);\r\n }\r\n var crus = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(cru.ToString()));\r\n var requestBody = (body != null ? System.Convert.ToBase64String(Encoding.UTF8.GetBytes(body)) : null);\r\n string metadata = $@\"\";\r\n var request = $@\"\r\n \"\"event_type\"\": \"\"request\"\",\r\n \"\"message-id\"\": \"\"{messageId}\"\",\r\n \"\"method\"\": \"\"{context.Request.Method}\"\",\r\n \"\"ip_address\"\": \"\"{context.Request.IpAddress}\"\",\r\n \"\"uri\"\": \"\"{context.Request.OriginalUrl}\"\",\r\n \"\"user_id\"\": \"\"{userId}\"\",\r\n \"\"contextRequestUser\"\": \"\"{crus}\"\",\r\n \"\"company_id\"\": \"\"{companyId}\"\",\r\n \"\"request_headers\"\": \"\"{headerString}\"\",\r\n \"\"request_body\"\": \"\"{requestBody}\"\",\r\n \"\"metadata\"\": \"\"{metadata}\"\"\r\n \";\r\n return \"{\" + request + \"}\";\r\n }\r\n \r\n \r\n \r\n \r\n \r\n @{\r\n var body = context.Response.Body?.As<string>(true);\r\n var MAX_BODY_SIZE_FOR_EH = 145000;\r\n var origBodyLen = (null != body) ? body.Length : 0;\r\n if (MAX_BODY_SIZE_FOR_EH < origBodyLen){\r\n body = body.Remove(MAX_BODY_SIZE_FOR_EH);\r\n }\r\n var headers = context.Response.Headers\r\n .Select(h => string.Format(\"{0}: {1}\", h.Key, String.Join(\", \", h.Value).Replace(\"\\\"\", \"\\\\\\\"\")))\r\n .ToArray<string>();\r\n var headerString = (headers.Any()) ? string.Join(\";;\", headers): string.Empty;\r\n var messageId = context.Variables[\"message-id\"];\r\n var responseBody = (body != null ? System.Convert.ToBase64String(Encoding.UTF8.GetBytes(body)) : null);\r\n var response = $@\"\r\n \"\"event_type\"\": \"\"response\"\",\r\n \"\"orig_body_len\"\": \"\"{origBodyLen}\"\",\r\n \"\"message-id\"\": \"\"{messageId}\"\",\r\n \"\"status_code\"\": \"\"{context.Response.StatusCode}\"\",\r\n \"\"response_headers\"\": \"\"{headerString}\"\",\r\n \"\"response_body\"\": \"\"{responseBody}\"\"\r\n \";\r\n return \"{\" + response + \"}\";\r\n }\r\n \r\n \r\n \r\n \r\n')]", + "format": "xml" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT928 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT928 new file mode 100644 index 0000000..5c95bfb --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT928 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.apimanagement/service/loggers.json" + ], + "timestamp": 1642962902832, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.apimanagement/service/loggers.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT928", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service/loggers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT928", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "existingApiMgmtName": { + "type": "string", + "metadata": { + "description": "Name of existing Api Management service. eg: 'blue-api-mgmt-v2'" + } + }, + "logToEventhubLoggerName": { + "type": "string", + "metadata": { + "description": "The name of log-to-eventhub 'logger-id' referred to in policy xml" + } + }, + "eventHubNS": { + "type": "string", + "metadata": { + "description": "Name of Eventhub Namespace" + } + }, + "eventHubName": { + "type": "string", + "metadata": { + "description": "Name of the Eventhub" + } + }, + "eventHubSendPolicyName": { + "type": "string", + "metadata": { + "description": "Name of Eventhub Send Policy" + } + }, + "tags": { + "type": "Object" + } + }, + "functions": [], + "variables": { + "credentialsName": "credentials-logToEventhubLoggerName" + }, + "resources": [ + { + "type": "Microsoft.ApiManagement/service/loggers", + "apiVersion": "2020-12-01", + "name": "existingApiMgmtName/logToEventhubLoggerName", + "tags": "tags", + "properties": { + "loggerType": "azureEventHub", + "description": "This logger logs to event hub", + "credentials": { + "name": "credentials-logToEventhubLoggerName", + "connectionString": "[listKeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', parameters('eventHubNS'), parameters('eventHubName'), parameters('eventHubSendPolicyName')), '2021-01-01-preview').primaryConnectionString]" + } + } + } + ], + "outputs": { + "logToEventhubLoggerName": { + "type": "string", + "value": "[parameters('logToEventhubLoggerName')]" + }, + "resourceId": { + "type": "string", + "value": "[resourceId('Microsoft.ApiManagement/service/loggers', parameters('existingApiMgmtName'), parameters('logToEventhubLoggerName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT929 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT929 new file mode 100644 index 0000000..1d80cc5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT929 @@ -0,0 +1,187 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.eventhub/namespaces.json" + ], + "timestamp": 1642962902839, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.eventhub/namespaces.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT929", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.eventhub/namespaces/eventhubs", + "microsoft.eventhub/namespaces/eventhubs/authorizationrules", + "microsoft.eventhub/namespaces/authorizationrules", + "microsoft.eventhub/namespaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT929", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "eventHubNsName": { + "type": "String" + }, + "eventHubName": { + "type": "String" + }, + "eventHubSendPolicyName": { + "type": "String", + "defaultValue": "evt-hub-apim-send-policy" + }, + "eventHubListenPolicy": { + "type": "String", + "defaultValue": "evt-hub-app-consume-policy" + }, + "ehNsSkuName": { + "type": "String", + "defaultValue": "Standard" + }, + "ehNsSkuTier": { + "type": "String", + "defaultValue": "Standard" + }, + "ehNsSkuCapacity": { + "type": "String", + "defaultValue": "1" + }, + "ehNsIsAutoInflateEnabled": { + "type": "String", + "defaultValue": "false" + }, + "ehNsMaximumThroughputUnits": { + "type": "String", + "defaultValue": "0" + }, + "ehNsZoneRedundant": { + "type": "Bool", + "defaultValue": false + }, + "messageRetentionInDays": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Number of days to retain messages in eventhub" + } + }, + "tags": { + "type": "Object", + "defaultValue": {} + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "ehUniqSvcName": "eventHubNsName/eventHubName", + "ehUniqApimSendPolicyName": "eventHubNsName/eventHubName/evt-hub-apim-send-policy", + "ehUniqAppListenPolicyName": "eventHubNsName/evt-hub-app-consume-policy" + }, + "resources": [ + { + "type": "Microsoft.EventHub/namespaces", + "apiVersion": "2021-01-01-preview", + "name": "eventHubNsName", + "location": "location", + "tags": {}, + "sku": { + "name": "Standard", + "tier": "Standard", + "capacity": "1" + }, + "properties": { + "isAutoInflateEnabled": "false", + "maximumThroughputUnits": "0", + "zoneRedundant": false + } + }, + { + "type": "Microsoft.EventHub/namespaces/eventhubs", + "apiVersion": "2021-01-01-preview", + "name": "eventHubNsName/eventHubName", + "tags": {}, + "dependsOn": [ + "Microsoft.EventHub/namespaces/eventHubNsName" + ], + "properties": { + "messageRetentionInDays": 1, + "partitionCount": 2, + "status": "Active" + } + }, + { + "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules", + "apiVersion": "2021-01-01-preview", + "name": "eventHubNsName/eventHubName/evt-hub-apim-send-policy", + "tags": {}, + "dependsOn": [ + "Microsoft.EventHub/namespaces/eventhubs/eventHubNsName/eventHubName" + ], + "properties": { + "rights": [ + "Send" + ] + } + }, + { + "type": "Microsoft.EventHub/namespaces/authorizationRules", + "apiVersion": "2021-01-01-preview", + "name": "eventHubNsName/evt-hub-app-consume-policy", + "tags": {}, + "dependsOn": [ + "Microsoft.EventHub/namespaces/eventHubNsName" + ], + "properties": { + "rights": [ + "Manage", + "Listen", + "Send" + ] + } + } + ], + "outputs": { + "eventHubNsName": { + "type": "string", + "value": "[parameters('eventHubNsName')]" + }, + "eventHubName": { + "type": "string", + "value": "[parameters('eventHubName')]" + }, + "eventHubSendPolicyName": { + "type": "string", + "value": "[parameters('eventHubSendPolicyName')]" + }, + "eventHubListenPolicy": { + "type": "string", + "value": "[parameters('eventHubListenPolicy')]" + }, + "eventHubSendResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', parameters('eventHubNsName'), parameters('eventHubName'), parameters('eventHubSendPolicyName'))]" + }, + "eventHubListenResourceId": { + "type": "string", + "value": "[resourceId('Microsoft.EventHub/namespaces/authorizationRules', parameters('eventHubNsName'), parameters('eventHubListenPolicy'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT93 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT93 new file mode 100644 index 0000000..b24052e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT93 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/setup-cloudera.json" + ], + "timestamp": 1642962885991, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/setup-cloudera.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT93", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT93", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string" + }, + "scriptsUri": { + "type": "string" + }, + "vmSpec": { + "type": "object" + }, + "networkSpec": { + "type": "object" + }, + "clusterSpec": { + "type": "object" + }, + "fqdn": { + "type": "string" + }, + "cmUsername": { + "type": "string" + }, + "cmPassword": { + "type": "securestring" + }, + "company": { + "type": "string" + }, + "emailAddress": { + "type": "string" + }, + "businessPhone": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "jobRole": { + "type": "string" + }, + "jobFunction": { + "type": "string" + }, + "installCDH": { + "type": "string" + }, + "clouderaTags": { + "type": "object" + }, + "tableauTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "masterIP": "networkSpec", + "workerIP": "networkSpec" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "dnsNamePrefix-mn0/prepareDisks", + "location": "[resourceGroup().location]", + "comments": "Cloudera Setup extensions that run to configure the Cloudera cluster environment", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "scriptsUri/scripts/bootstrap-cloudera.sh", + "scriptsUri/scripts/initialize-cloudera-server.sh", + "scriptsUri/scripts/cmxDeployOnIbiza.py", + "scriptsUri/scripts/install-postgresql.sh" + ] + }, + "protectedSettings": { + "commandToExecute": "sh bootstrap-cloudera.sh \"networkSpec\" \"networkSpec\" \"dnsNamePrefix\" \"fqdn\" clusterSpec clusterSpec \"vmSpec\" \"clusterSpec\" \"vmSpec\" \"cmUsername\" \"cmPassword\" \"emailAddress\" \"businessPhone\" \"firstName\" \"lastName\" \"jobRole\" \"jobFunction\" \"company\" \"installCDH\" \"vmSpec\" >> /home/$ADMINUSER/bootstrap-cloudera.log 2>&1" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT930 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT930 new file mode 100644 index 0000000..7e1e3da --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT930 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.storage/storageaccounts.json" + ], + "timestamp": 1642962902846, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.storage/storageaccounts.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT930", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT930", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "The name for storage account. Max 24 chars. a-z A-Z 0-9 no special characters or spaces. Used in DNS url" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS" + }, + "storageKind": { + "type": "string", + "defaultValue": "StorageV2" + }, + "tags": { + "type": "Object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources. eg 'westus2'" + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-02-01", + "name": "storageAccountName", + "location": "location", + "tags": "tags", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[parameters('storageAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT931 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT931 new file mode 100644 index 0000000..5bc26af --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT931 @@ -0,0 +1,62 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/sites/extensions.json" + ], + "timestamp": 1642962902851, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/sites/extensions.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT931", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT931", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appServiceName": { + "type": "string", + "metadata": { + "description": "Name of the Azure App service resource" + } + }, + "webJobZipDeployUrl": { + "type": "string", + "metadata": { + "description": "URL to Zip file that contains webjob using format suitable to be published using msdeploy" + } + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "name": "appServiceName/MSDeploy", + "type": "Microsoft.Web/sites/extensions", + "properties": { + "addOnPackages": [ + { + "packageUri": "webJobZipDeployUrl", + "AppOffline": true + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT932 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT932 new file mode 100644 index 0000000..5eb7f98 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT932 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/serverfarms.json" + ], + "timestamp": 1642962902859, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/serverfarms.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT932", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/serverfarms" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT932", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appServicePlanName": { + "type": "string", + "metadata": { + "description": "The name to be given to this new App Service Plan" + } + }, + "appServiceSkuName": { + "type": "string", + "defaultValue": "B1", + "allowedValues": [ + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1v2", + "P2v2", + "P3v2", + "P1v3", + "P2v3", + "P3v3" + ], + "metadata": { + "description": "The instance / SKU name for Azure App Service eg: B1, B2, S1, P1V2. Note F1 and D1 shared plan are not supported as they do not support 'alwaysOn'" + } + }, + "tags": { + "type": "Object" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources. eg 'westus2'" + } + } + }, + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2020-12-01", + "name": "appServicePlanName", + "location": "location", + "tags": "tags", + "sku": { + "name": "B1" + }, + "kind": "app" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT933 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT933 new file mode 100644 index 0000000..6372f45 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT933 @@ -0,0 +1,233 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/sites.json" + ], + "timestamp": 1642962902865, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/nested/microsoft.web/sites.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT933", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites/config", + "microsoft.web/sites", + "microsoft.web/sites/hostnamebindings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT933", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "appServiceName": { + "type": "string", + "metadata": { + "description": "The name to be given to this new App Service. This value is used in DNS and must be unique." + } + }, + "appServicePlanName": { + "type": "string", + "metadata": { + "description": "The name of an existing App Service plan for which the App Service will be created" + } + }, + "eventHubNamespace": { + "type": "string", + "metadata": { + "description": "sets environment variable APIMEVENTS-EVENTHUB-NAME" + } + }, + "eventHubName": { + "type": "string", + "metadata": { + "description": "Sets environment variable APIMEVENTS-EVENTHUB-NAME" + } + }, + "eventHubListenPolicy": { + "type": "string", + "metadata": { + "description": "Name of Event Hubs Namespace listen policy. Found in EventHubNamespace/Settings/Shared access policies: eg 'moesiflogaaaaaa-listen-policy'" + } + }, + "apimEvtStorName": { + "type": "string", + "metadata": { + "description": "Sets environment variable APIMEVENTS-STORAGEACCOUNT-NAME" + } + }, + "apimEvtMoesifApplicationId": { + "type": "string", + "metadata": { + "description": "Sets environment variable APIMEVENTS-MOESIF-APPLICATION-ID" + } + }, + "apimEvtMoesifSessionToken": { + "type": "string", + "defaultValue": "optional", + "metadata": { + "description": "Sets environment variable APIMEVENTS-MOESIF-SESSION-TOKEN" + } + }, + "apimEvtMoesifApiVersion": { + "type": "string", + "defaultValue": "v1", + "metadata": { + "description": "Sets environment variable APIMEVENTS-MOESIF-API-VERSION" + } + }, + "azureWebsitesDomain": { + "type": "string", + "metadata": { + "description": "DNS name to use for azure webapp such as .azurewebsites.net" + } + }, + "tags": { + "type": "Object", + "defaultValue": {} + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources. eg 'westus2'" + } + } + }, + "variables": { + "appServiceHostName": "appServiceNameazureWebsitesDomain" + }, + "resources": [ + { + "type": "Microsoft.Web/sites", + "apiVersion": "2020-12-01", + "name": "appServiceName", + "location": "location", + "tags": {}, + "kind": "app", + "properties": { + "enabled": true, + "hostNameSslStates": [ + { + "name": "appServiceNameazureWebsitesDomain", + "sslState": "Disabled", + "hostType": "Standard" + }, + { + "name": "appServiceName.scmazureWebsitesDomain", + "sslState": "Disabled", + "hostType": "Repository" + } + ], + "serverFarmId": "Microsoft.Web/serverfarms/appServicePlanName", + "reserved": false, + "isXenon": false, + "hyperV": false, + "siteConfig": { + "appSettings": [ + { + "name": "APIMEVENTS-EVENTHUB-CONNECTIONSTRING", + "value": "[listKeys(resourceId('Microsoft.EventHub/namespaces/authorizationRules', parameters('eventHubNamespace'), parameters('eventHubListenPolicy')), '2021-01-01-preview').primaryConnectionString]" + }, + { + "name": "APIMEVENTS-EVENTHUB-NAME", + "value": "eventHubName" + }, + { + "name": "APIMEVENTS-STORAGEACCOUNT-NAME", + "value": "apimEvtStorName" + }, + { + "name": "APIMEVENTS-STORAGEACCOUNT-KEY", + "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('apimEvtStorName')), '2021-02-01').keys[0].value]" + }, + { + "name": "APIMEVENTS-MOESIF-APPLICATION-ID", + "value": "apimEvtMoesifApplicationId" + }, + { + "name": "APIMEVENTS-MOESIF-SESSION-TOKEN", + "value": "optional" + }, + { + "name": "APIMEVENTS-MOESIF-API-VERSION", + "value": "v1" + } + ] + }, + "scmSiteAlsoStopped": false, + "clientAffinityEnabled": true, + "clientCertEnabled": false, + "hostNamesDisabled": false, + "containerSize": 0, + "dailyMemoryTimeQuota": 0, + "httpsOnly": false, + "redundancyMode": "None" + } + }, + { + "type": "Microsoft.Web/sites/config", + "apiVersion": "2020-12-01", + "name": "appServiceName/web", + "location": "location", + "tags": {}, + "dependsOn": [ + "Microsoft.Web/sites/appServiceName", + "Microsoft.Web/sites/hostNameBindings/appServiceName/appServiceNameazureWebsitesDomain" + ], + "properties": { + "netFrameworkVersion": "v5.0", + "logsDirectorySizeLimit": 60, + "numberOfWorkers": 1, + "alwaysOn": "true", + "defaultDocuments": [ + "Default.htm", + "Default.html", + "Default.asp", + "index.htm", + "index.html", + "iisstart.htm", + "default.aspx", + "index.php", + "hostingstart.html" + ] + } + }, + { + "type": "Microsoft.Web/sites/hostNameBindings", + "apiVersion": "2020-12-01", + "name": "appServiceName/appServiceNameazureWebsitesDomain", + "location": "location", + "tags": {}, + "dependsOn": [ + "Microsoft.Web/sites/appServiceName" + ], + "properties": { + "siteName": "appServiceName", + "hostNameType": "Verified" + } + } + ], + "outputs": { + "appServiceName": { + "type": "string", + "value": "[parameters('appServiceName')]" + }, + "appServiceHostName": { + "type": "string", + "value": "[variables('appServiceHostName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT934 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT934 new file mode 100644 index 0000000..2673a40 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT934 @@ -0,0 +1,344 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/azuredeploy.parameters.json" + ], + "timestamp": 1642962902873, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-logs-to-moesif-using-eventhub-webapp/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT934", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT934", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "moesifApplicationId": { + "type": "string", + "minLength": 50, + "metadata": { + "description": "Your Moesif Application Id which can be found within your Moesif Portal. After signing up for a Moesif account, your Moesif Application Id will be displayed during the onboarding steps. Sets environment variable APIMEVENTS-MOESIF-APPLICATION-ID in App Service" + }, + "value": "" + }, + "existingApiMgmtName": { + "type": "string", + "defaultValue": "", + "minLength": 0, + "metadata": { + "description": "Name of your existing Azure API Management service. If blank, the log-to-eventhub logger is not created. The API Management service must be in same Resource Group as the deployment" + } + }, + "azureAppServiceSku": { + "type": "string", + "defaultValue": "B1", + "allowedValues": [ + "B1", + "B2", + "B3", + "S1", + "S2", + "S3", + "P1v2", + "P2v2", + "P3v2", + "P1v3", + "P2v3", + "P3v3" + ], + "metadata": { + "description": "The instance / SKU name for Azure App Service eg: B1, B2, S1, P1V2. Note F1 and D1 shared plan are not supported as they do not support 'alwaysOn'" + } + }, + "dnsNamePrefix": { + "type": "string", + "defaultValue": "[concat('moesiflog', uniqueString(resourceGroup().id))]", + "minLength": 6, + "metadata": { + "description": "A prefix that will be added to created resource names and DNS URLs. Allowed characters: alphabets and numbers only. Resulting name must be maximum 24 characters (storage account maximum)" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources. eg 'westus2'" + } + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "The base URL where templates are located. Should end with trailing '/'" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + } + } + }, + "functions": [], + "variables": { + "moesifSessionToken": "optional", + "moesifApiVersion": "v1", + "apiManagementLoggerName": "moesif-log-to-event-hub", + "azureWebsitesDomainLookup": { + "AzureCloud": ".azurewebsites.net", + "AzureUSGovernment": ".azurewebsites.us" + }, + "azureWebsitesDomain": "(azureWebsitesDomainLookup)[environment().name]", + "eventHubNS": "[concat('moesiflog', uniqueString(resourceGroup().id))]", + "eventHubName": "[concat('moesiflog', uniqueString(resourceGroup().id))]", + "eventHubSendPolicyName": "[concat('moesiflog', uniqueString(resourceGroup().id))]-send-policy", + "eventHubListenPolicy": "[concat('moesiflog', uniqueString(resourceGroup().id))]-listen-policy", + "azStorageTemplUri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.storage/storageaccounts.json', parameters('_artifactsLocationSasToken')))]", + "azEventHubTemplUri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.eventhub/namespaces.json', parameters('_artifactsLocationSasToken')))]", + "azApiMgmtLoggerInstallTemplUri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.apimanagement/service/loggers.json', parameters('_artifactsLocationSasToken')))]", + "azAppServicePlanTemplUri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.web/serverfarms.json', parameters('_artifactsLocationSasToken')))]", + "azAppServiceTemplUri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.web/sites.json', parameters('_artifactsLocationSasToken')))]", + "azAppServiceWebJobTemplUri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.web/sites/extensions.json', parameters('_artifactsLocationSasToken')))]", + "azAppServiceWebJobZipUri": "[uri(parameters('_artifactsLocation'), concat('scripts/apim-2-moesif-webjob-webdeploy.zip', parameters('_artifactsLocationSasToken')))]", + "storageAccountName": "[replace(parameters('dnsNamePrefix'), '-', '')]", + "apiMgrSpecified": "[greater(length(parameters('existingApiMgmtName')), 0)]", + "tags": { + "purpose": "moesif" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "storage-deploy", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.storage/storageaccounts.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "storageAccountName": { + "value": "[replace(parameters('dnsNamePrefix'), '-', '')]" + }, + "tags": { + "value": { + "purpose": "moesif" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "eventhub-deploy", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.eventhub/namespaces.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "eventHubNsName": { + "value": "[concat('moesiflog', uniqueString(resourceGroup().id))]" + }, + "eventHubName": { + "value": "[concat('moesiflog', uniqueString(resourceGroup().id))]" + }, + "eventHubSendPolicyName": { + "value": "[variables('eventHubSendPolicyName')]" + }, + "eventHubListenPolicy": { + "value": "[variables('eventHubListenPolicy')]" + }, + "tags": { + "value": { + "purpose": "moesif" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "api-management-logger-deploy", + "condition": "[greater(length(parameters('existingApiMgmtName')), 0)]", + "dependsOn": [ + "Microsoft.Resources/deployments/eventhub-deploy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.apimanagement/service/loggers.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "existingApiMgmtName": { + "value": "" + }, + "logToEventhubLoggerName": { + "value": "moesif-log-to-event-hub" + }, + "eventHubNS": { + "value": "[variables('eventHubNS')]" + }, + "eventHubName": { + "value": "[variables('eventHubName')]" + }, + "eventHubSendPolicyName": { + "value": "[variables('eventHubSendPolicyName')]" + }, + "tags": { + "value": { + "purpose": "moesif" + } + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "app-service-plan-deploy", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.web/serverfarms.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "appServicePlanName": { + "value": "[concat('moesiflog', uniqueString(resourceGroup().id))]" + }, + "appServiceSkuName": { + "value": "B1" + }, + "tags": { + "value": { + "purpose": "moesif" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "app-service-deploy", + "dependsOn": [ + "Microsoft.Resources/deployments/app-service-plan-deploy", + "Microsoft.Resources/deployments/storage-deploy", + "Microsoft.Resources/deployments/eventhub-deploy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.web/sites.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "appServiceName": { + "value": "[concat('moesiflog', uniqueString(resourceGroup().id))]" + }, + "appServicePlanName": { + "value": "[concat('moesiflog', uniqueString(resourceGroup().id))]" + }, + "eventHubNamespace": { + "value": "[concat('moesiflog', uniqueString(resourceGroup().id))]" + }, + "eventHubName": { + "value": "[concat('moesiflog', uniqueString(resourceGroup().id))]" + }, + "eventHubListenPolicy": { + "value": "[variables('eventHubListenPolicy')]" + }, + "apimEvtStorName": { + "value": "[replace(parameters('dnsNamePrefix'), '-', '')]" + }, + "apimEvtMoesifApplicationId": { + "value": "" + }, + "apimEvtMoesifSessionToken": { + "value": "optional" + }, + "apimEvtMoesifApiVersion": { + "value": "v1" + }, + "azureWebsitesDomain": { + "value": "(azureWebsitesDomainLookup)[environment().name]" + }, + "tags": { + "value": { + "purpose": "moesif" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "name": "app-service-webjob-msdeploy", + "dependsOn": [ + "Microsoft.Resources/deployments/app-service-deploy" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/microsoft.web/sites/extensions.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "appServiceName": { + "value": "[concat('moesiflog', uniqueString(resourceGroup().id))]" + }, + "webJobZipDeployUrl": { + "value": "[uri(parameters('_artifactsLocation'), concat('scripts/apim-2-moesif-webjob-webdeploy.zip', parameters('_artifactsLocationSasToken')))]" + } + } + } + } + ], + "outputs": { + "logToEventhubLoggerName": { + "type": "string", + "condition": "[variables('apiMgrSpecified')]", + "value": "[variables('apiManagementLoggerName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT935 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT935 new file mode 100644 index 0000000..7ce315a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT935 @@ -0,0 +1,228 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-private-endpoint/azuredeploy.parameters.json" + ], + "timestamp": 1642962902889, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-private-endpoint/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-private-endpoint/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT935", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/privatednszones", + "microsoft.network/virtualnetworks", + "microsoft.apimanagement/service", + "microsoft.network/privatednszones/virtualnetworklinks", + "microsoft.network/privateendpoints", + "microsoft.network/privateendpoints/privatednszonegroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT935", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1124.51302", + "templateHash": "12160737428716643043" + } + }, + "parameters": { + "apiManagementServiceName": { + "type": "string", + "defaultValue": "[format('apim-privateendpoint-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the API Management service instance" + } + }, + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Developer", + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "Virtual network name" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "westcentralus" + }, + "privateEndpointName": { + "type": "string", + "metadata": { + "description": "Private endpoint name" + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "subnetName": "default", + "privateDNSZoneName": "privatelink.azure-api.net" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "westcentralus", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "172.20.0.0/16" + ] + }, + "subnets": [ + { + "name": "default", + "properties": { + "addressPrefix": "172.20.0.0/24", + "privateEndpointNetworkPolicies": "Disabled" + } + } + ] + } + }, + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2021-08-01", + "name": "[format('apim-privateendpoint-{0}', uniqueString(resourceGroup().id))]", + "location": "westcentralus", + "sku": { + "name": "Standard", + "capacity": 1 + }, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Network/privateEndpoints", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE", + "location": "westcentralus", + "properties": { + "subnet": { + "id": "Microsoft.Network/VirtualNetworks/subnets/GEN-UNIQUE/default" + }, + "privateLinkServiceConnections": [ + { + "name": "MyConnection", + "properties": { + "privateLinkServiceId": "Microsoft.ApiManagement/service/[format('apim-privateendpoint-{0}', uniqueString(resourceGroup().id))]", + "groupIds": [ + "Gateway" + ] + } + } + ] + }, + "dependsOn": [ + "Microsoft.ApiManagement/service/[format('apim-privateendpoint-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones", + "apiVersion": "2020-06-01", + "name": "privatelink.azure-api.net", + "location": "global", + "dependsOn": [ + "Microsoft.Network/virtualNetworks/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", + "apiVersion": "2020-06-01", + "name": "[format('{0}/{1}', variables('privateDNSZoneName'), format('{0}-link', variables('privateDNSZoneName')))]", + "location": "global", + "properties": { + "registrationEnabled": false, + "virtualNetwork": { + "id": "Microsoft.Network/virtualNetworks/GEN-UNIQUE" + } + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.azure-api.net", + "Microsoft.Network/virtualNetworks/GEN-UNIQUE" + ] + }, + { + "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", + "apiVersion": "2020-08-01", + "name": "[format('{0}/{1}', parameters('privateEndpointName'), 'dnsgroupname')]", + "properties": { + "privateDnsZoneConfigs": [ + { + "name": "config1", + "properties": { + "privateDnsZoneId": "Microsoft.Network/privateDnsZones/privatelink.azure-api.net" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/privateDnsZones/privatelink.azure-api.net", + "Microsoft.Network/privateEndpoints/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT936 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT936 new file mode 100644 index 0000000..06709d7 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT936 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-simple-zones/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-simple-zones/azuredeploy.parameters.json" + ], + "timestamp": 1642962902898, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/api-management-simple-zones/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/api-management-simple-zones/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT936", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT936", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "10578356438771699579" + } + }, + "parameters": { + "apiManagementServiceName": { + "type": "string", + "defaultValue": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the API Management service instance" + } + }, + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Premium" + ], + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "FranceCentral" + }, + "availabilityZones": { + "type": "array", + "defaultValue": [ + "1", + "2", + "3" + ], + "metadata": { + "description": "Zone numbers e.g. 1,2,3." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2021-01-01-preview", + "name": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "location": "FranceCentral", + "zones": "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]", + "sku": { + "name": "Premium", + "capacity": 3 + }, + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "GEN-UNIQUE" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT937 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT937 new file mode 100644 index 0000000..448090c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT937 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.apimanagement/azure-api-management-create/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/azure-api-management-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962902915, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.apimanagement/azure-api-management-create/azuredeploy.json", + "/quickstarts/microsoft.apimanagement/azure-api-management-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT937", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.apimanagement/service" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT937", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "10451446506799526629" + } + }, + "parameters": { + "apiManagementServiceName": { + "type": "string", + "defaultValue": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "The name of the API Management service instance" + } + }, + "publisherEmail": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The email address of the owner of the service" + }, + "value": "email@example.com" + }, + "publisherName": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "The name of the owner of the service" + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "defaultValue": "Developer", + "allowedValues": [ + "Developer", + "Standard", + "Premium" + ], + "metadata": { + "description": "The pricing tier of this API Management service" + } + }, + "skuCount": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2 + ], + "metadata": { + "description": "The instance size of this API Management service." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.ApiManagement/service", + "apiVersion": "2020-12-01", + "name": "[format('apiservice{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Developer", + "capacity": 1 + }, + "properties": { + "publisherEmail": "email@example.com", + "publisherName": "GEN-UNIQUE" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT938 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT938 new file mode 100644 index 0000000..402faaa --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT938 @@ -0,0 +1,259 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration/azuredeploy.parameters.json" + ], + "timestamp": 1642962902924, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT938", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT938", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specify the locations for all resources." + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Specify the virtual machine admin user name." + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Specify the virtual machine admin password." + }, + "value": "GEN-PASSWORD" + }, + "domainNameLabel": { + "type": "string", + "metadata": { + "description": "Specify the DNS label for the virtual machine public IP address. It must be lowercase. It should match the following regular expression, or it will raise an error: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Specify the size of the VM." + } + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Specify the storage account name." + }, + "value": "GEN-UNIQUE" + }, + "appConfigStoreResourceGroup": { + "type": "string", + "metadata": { + "description": "Name of the resource group for the app config store." + }, + "value": "GEN-APPCONFIGSTORE-RESOURCEGROUP-NAME" + }, + "appConfigStoreName": { + "type": "string", + "metadata": { + "description": "App configuration store name." + }, + "value": "GEN-APPCONFIGSTORE-NAME" + }, + "vmSkuKey": { + "type": "string", + "metadata": { + "description": "Specify the name of the key in the app config store for the VM windows sku." + }, + "value": "GEN-APPCONFIGSTORE-WINDOWSOSVERSION" + }, + "diskSizeKey": { + "type": "string", + "metadata": { + "description": "Specify the name of the key in the app config store for the VM disk size" + }, + "value": "GEN-APPCONFIGSTORE-DISKSIZEGB" + } + }, + "variables": { + "nicName": "myVMNic", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressName": "myPublicIP", + "vmName": "SimpleWinVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet", + "appConfigRef": "GEN-APPCONFIGSTORE-RESOURCEGROUP-NAME/Microsoft.AppConfiguration/configurationStores/GEN-APPCONFIGSTORE-NAME", + "windowsOSVersionParameters": { + "key": "GEN-APPCONFIGSTORE-WINDOWSOSVERSION", + "label": "template" + }, + "diskSizeGBParameters": { + "key": "GEN-APPCONFIGSTORE-DISKSIZEGB", + "label": "template" + } + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-05-01", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-05-01", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP", + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/MyVNET/Subnet" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2019-12-01", + "name": "SimpleWinVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "SimpleWinVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "[listKeyValue(variables('appConfigRef'), '2019-10-01', variables('windowsOSVersionParameters')).value]", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "[listKeyValue(variables('appConfigRef'), '2019-10-01', variables('diskSizeGBParameters')).value]", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))).primaryEndpoints.blob]" + } + } + } + } + ], + "outputs": { + "hostname": { + "type": "string", + "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT939 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT939 new file mode 100644 index 0000000..e507e90 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT939 @@ -0,0 +1,69 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store/azuredeploy.parameters.json" + ], + "timestamp": 1642962902933, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT939", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT939", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "configStoreName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the app configuration store." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the app configuration store should be created." + } + }, + "skuName": { + "type": "string", + "defaultValue": "standard", + "metadata": { + "description": "Specifies the SKU of the app configuration store." + } + } + }, + "resources": [ + { + "type": "Microsoft.AppConfiguration/configurationStores", + "apiVersion": "2019-10-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "standard" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT94 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT94 new file mode 100644 index 0000000..6531b23 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT94 @@ -0,0 +1,327 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/shared-resources-existing-vnet.json" + ], + "timestamp": 1642962886016, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/shared-resources-existing-vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT94", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT94", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "resourceAPIVersion": { + "type": "string" + }, + "networkSpec": { + "type": "object" + }, + "masterNodeASName": { + "type": "string" + }, + "dataNodeASName": { + "type": "string" + }, + "tableauASName": { + "type": "string" + }, + "clouderaTags": { + "type": "object" + }, + "tableauTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "masterNodeASName", + "location": "[resourceGroup().location]", + "comments": "Master Node Name", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": {} + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "dataNodeASName", + "location": "[resourceGroup().location]", + "comments": "Data Node Name", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": {} + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "tableauASName", + "location": "[resourceGroup().location]", + "comments": "Tableau Server Name", + "tags": { + "quickstartName": "quickstartTags", + "provider": "tableauTags" + }, + "properties": {} + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "networkSpec-sg", + "location": "[resourceGroup().location]", + "comments": "Shared Resources Network Security Group Rules", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HDFS.Web.UI", + "properties": { + "description": "Allows HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50070", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "Hiveserver2", + "properties": { + "description": "Allows Hiveserver traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "Hive.Metastore", + "properties": { + "description": "Allows Hive Metastore traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9083", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "Hue", + "properties": { + "description": "Allows Hue traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 104, + "direction": "Inbound" + } + }, + { + "name": "YARN.ResourceManager", + "properties": { + "description": "Allows YARN Resource Manager traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8088", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + }, + { + "name": "YARN.JobHistory.Server", + "properties": { + "description": "Allows YARN JobHistory Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "19888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 106, + "direction": "Inbound" + } + }, + { + "name": "Oozie.Server", + "properties": { + "description": "Allows Oozie Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 107, + "direction": "Inbound" + } + }, + { + "name": "Management.Web.UI", + "properties": { + "description": "Allows Management.Web.UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7180", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 108, + "direction": "Inbound" + } + }, + { + "name": "Navigator", + "properties": { + "description": "Allows Navigator traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7187", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 109, + "direction": "Inbound" + } + }, + { + "name": "HDFS.dn.Web.UI", + "properties": { + "description": "Allow HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50075", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "YARN.nm.Web.UI", + "properties": { + "description": "Allow YARN Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8042", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 111, + "direction": "Inbound" + } + }, + { + "name": "Impala.JDBC", + "properties": { + "description": "Allow Impala JDBC traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 112, + "direction": "Inbound" + } + }, + { + "name": "Impala.Shell", + "properties": { + "description": "Allow Impala Shell traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 113, + "direction": "Inbound" + } + }, + { + "name": "http", + "properties": { + "description": "Allows http traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 115, + "direction": "Inbound" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT940 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT940 new file mode 100644 index 0000000..bf5c08c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT940 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-ff/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-ff/azuredeploy.parameters.json" + ], + "timestamp": 1642962902942, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-ff/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-ff/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT940", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT940", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "configStoreName": { + "type": "string", + "defaultValue": "[concat('appconfig',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the App Configuration store." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the app configuration store should be created." + } + }, + "featureFlagKey": { + "type": "string", + "defaultValue": "FeatureFlagSample", + "metadata": { + "description": "Specifies the key of the feature flag." + } + }, + "featureFlagLabel": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Specifies the label of the feature flag. The label is optional and can be left as empty." + } + } + }, + "variables": { + "featureFlagValue": { + "id": "FeatureFlagSample", + "description": "Your description.", + "enabled": true + } + }, + "resources": [ + { + "type": "Microsoft.AppConfiguration/configurationStores", + "apiVersion": "2020-07-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "standard" + }, + "resources": [ + { + "type": "keyValues", + "apiVersion": "2020-07-01-preview", + "name": ".appconfig.featureflag~2FFeatureFlagSample$ parameters('featureFlagLabel')", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "value": "[string(variables('featureFlagValue'))]", + "contentType": "application/vnd.microsoft.appconfig.ff+json;charset=utf-8" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT941 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT941 new file mode 100644 index 0000000..95b8096 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT941 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-keyvaultref/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-keyvaultref/azuredeploy.parameters.json" + ], + "timestamp": 1642962902950, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-keyvaultref/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-keyvaultref/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT941", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT941", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "configStoreName": { + "type": "string", + "defaultValue": "[concat('appconfig',uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specifies the name of the App Configuration store." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the app configuration store should be created." + } + }, + "keyValueName": { + "type": "string", + "defaultValue": "KeyVaultReferenceSample", + "metadata": { + "description": "Specifies the name of the key-value resource. The name is a combination of key and label with $ as delimiter." + } + }, + "keyVaultSecretURL": { + "type": "string", + "metadata": { + "description": "Format should be https://{vault-name}.{vault-DNS-suffix}/secrets/{secret-name}/{secret-version}. Secret version is optional." + }, + "value": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + } + }, + "variables": { + "keyVaultRef": { + "uri": "GEN-KEYVAULT-ENCRYPTION-KEY-URI" + } + }, + "resources": [ + { + "type": "Microsoft.AppConfiguration/configurationStores", + "apiVersion": "2020-07-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "standard" + }, + "resources": [ + { + "type": "keyValues", + "apiVersion": "2020-07-01-preview", + "name": "KeyVaultReferenceSample", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "value": "[string(variables('keyVaultRef'))]", + "contentType": "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8" + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT942 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT942 new file mode 100644 index 0000000..64f7c8c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT942 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv/azuredeploy.parameters.json" + ], + "timestamp": 1642962902959, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT942", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores/keyvalues", + "microsoft.appconfiguration/configurationstores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT942", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "configStoreName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the App Configuration store." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the app configuration store should be created." + } + }, + "keyValueNames": { + "type": "array", + "defaultValue": [ + "myKey", + "myKey$myLabel" + ], + "metadata": { + "description": "Specifies the names of the key-value resources. The name is a combination of key and label with $ as delimiter. The label is optional." + } + }, + "keyValueValues": { + "type": "array", + "defaultValue": [ + "Key-value without label", + "Key-value with label" + ], + "metadata": { + "description": "Specifies the values of the key-value resources. It's optional" + } + }, + "contentType": { + "type": "string", + "defaultValue": "the-content-type", + "metadata": { + "description": "Specifies the content type of the key-value resources. For feature flag, the value should be application/vnd.microsoft.appconfig.ff+json;charset=utf-8. For Key Value reference, the value should be application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8. Otherwise, it's optional." + } + }, + "tags": { + "type": "object", + "defaultValue": { + "tag1": "tag-value-1", + "tag2": "tag-value-2" + }, + "metadata": { + "description": "Adds tags for the key-value resources. It's optional" + } + } + }, + "resources": [ + { + "type": "Microsoft.AppConfiguration/configurationStores", + "apiVersion": "2020-07-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "standard" + } + }, + { + "type": "Microsoft.AppConfiguration/configurationStores/keyValues", + "apiVersion": "2020-07-01-preview", + "name": "[concat(parameters('configStoreName'), '/', parameters('keyValueNames')[copyIndex()])]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "value": "keyValueValues)[copyIndex(", + "contentType": "the-content-type", + "tags": { + "tag1": "tag-value-1", + "tag2": "tag-value-2" + } + } + }, + { + "type": "Microsoft.AppConfiguration/configurationStores/keyValues", + "apiVersion": "2020-07-01-preview", + "name": "[concat(parameters('configStoreName'), '/', parameters('keyValueNames')[copyIndex()])]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "value": "keyValueValues)[copyIndex(", + "contentType": "the-content-type", + "tags": { + "tag1": "tag-value-1", + "tag2": "tag-value-2" + } + } + } + ], + "outputs": { + "reference-key-value-value": { + "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[0]), '2020-07-01-preview').value]", + "type": "string" + }, + "reference-key-value-object": { + "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[1]), '2020-07-01-preview')]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT943 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT943 new file mode 100644 index 0000000..ef4464f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT943 @@ -0,0 +1,149 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv-copy/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv-copy/azuredeploy.parameters.json" + ], + "timestamp": 1642962902967, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv-copy/azuredeploy.json", + "/quickstarts/microsoft.appconfiguration/app-configuration-store-kv-copy/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT943", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.appconfiguration/configurationstores/keyvalues", + "microsoft.appconfiguration/configurationstores" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT943", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "configStoreName": { + "type": "string", + "metadata": { + "description": "Specifies the name of the App Configuration store." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the app configuration store should be created." + } + }, + "keyData": { + "type": "array", + "defaultValue": [ + { + "key": "key01_name", + "value": "key01_value", + "tag": { + "tag01_name": "tag01_value", + "tag02_name": "tag02_value" + }, + "contentType": "key01_contentType" + }, + { + "key": "key02_name", + "value": "key02_value", + "label": "key02_label01", + "tag": { + "tag01_name": "tag01_value", + "tag02_name": "tag02_value" + }, + "contentType": "key02_contentType" + }, + { + "key": "key02_name", + "value": "key02_value", + "label": "key02_label02", + "tag": { + "tag01_name": "tag01_value", + "tag02_name": "tag02_value" + }, + "contentType": "key02_contentType" + } + ], + "metadata": { + "description": "Array of Objects that contain the key name, value, tag and contentType" + } + } + }, + "resources": [ + { + "type": "Microsoft.AppConfiguration/configurationStores", + "apiVersion": "2020-07-01-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "standard" + } + }, + { + "type": "Microsoft.AppConfiguration/configurationStores/keyValues", + "apiVersion": "2020-07-01-preview", + "name": "(parameters(configStoreName), /, if(contains(parameters(keyData)[copyIndex()], label), format({0}${1}, parameters(keyData)[copyIndex()].key, parameters(keyData)[copyIndex()].label), parameters(keyData)[copyIndex()].key))", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "value": "keyData)[copyIndex(", + "contentType": "[if(contains(parameters('keyData')[copyIndex()], 'contentType'), parameters('keyData')[copyIndex()].contentType, json('null'))]", + "tags": "[if(contains(parameters('keyData')[copyIndex()], 'tag'), parameters('keyData')[copyIndex()].tag, json('null'))]" + } + }, + { + "type": "Microsoft.AppConfiguration/configurationStores/keyValues", + "apiVersion": "2020-07-01-preview", + "name": "(parameters(configStoreName), /, if(contains(parameters(keyData)[copyIndex()], label), format({0}${1}, parameters(keyData)[copyIndex()].key, parameters(keyData)[copyIndex()].label), parameters(keyData)[copyIndex()].key))", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "value": "keyData)[copyIndex(", + "contentType": "[if(contains(parameters('keyData')[copyIndex()], 'contentType'), parameters('keyData')[copyIndex()].contentType, json('null'))]", + "tags": "[if(contains(parameters('keyData')[copyIndex()], 'tag'), parameters('keyData')[copyIndex()].tag, json('null'))]" + } + }, + { + "type": "Microsoft.AppConfiguration/configurationStores/keyValues", + "apiVersion": "2020-07-01-preview", + "name": "(parameters(configStoreName), /, if(contains(parameters(keyData)[copyIndex()], label), format({0}${1}, parameters(keyData)[copyIndex()].key, parameters(keyData)[copyIndex()].label), parameters(keyData)[copyIndex()].key))", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "value": "keyData)[copyIndex(", + "contentType": "[if(contains(parameters('keyData')[copyIndex()], 'contentType'), parameters('keyData')[copyIndex()].contentType, json('null'))]", + "tags": "[if(contains(parameters('keyData')[copyIndex()], 'tag'), parameters('keyData')[copyIndex()].tag, json('null'))]" + } + } + ], + "outputs": { + "reference-key-value-value": { + "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyData')[0].key), '2020-07-01-preview').value]", + "type": "string" + }, + "reference-key-value-object": { + "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyData')[0].key), '2020-07-01-preview')]", + "type": "object" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT944 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT944 new file mode 100644 index 0000000..e7f0284 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT944 @@ -0,0 +1,223 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.appplatform/azure-spring-cloud/azuredeploy.json", + "/quickstarts/microsoft.appplatform/azure-spring-cloud/azuredeploy.parameters.json" + ], + "timestamp": 1642962902982, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.appplatform/azure-spring-cloud/azuredeploy.json", + "/quickstarts/microsoft.appplatform/azure-spring-cloud/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT944", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments", + "microsoft.appplatform/spring" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT944", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "serviceName": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "app1": { + "type": "string", + "defaultValue": "gateway" + }, + "app2": { + "type": "string", + "defaultValue": "account-service" + }, + "app3": { + "type": "string", + "defaultValue": "auth-service" + }, + "location": { + "type": "string", + "allowedValues": [ + "westeurope", + "eastus", + "westus2", + "southeastasia", + "centralus", + "australiaeast", + "uksouth", + "northeurope", + "southcentralus", + "eastus2" + ], + "value": "westus2" + } + }, + "resources": [ + { + "type": "Microsoft.AppPlatform/Spring", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE", + "location": "westus2", + "sku": { + "name": "S0", + "tier": "Standard" + }, + "properties": { + "configServerProperties": { + "configServer": { + "gitProperty": { + "uri": "https://github.com/Azure-Samples/piggymetrics-config" + } + } + } + }, + "resources": [ + { + "type": "apps", + "apiVersion": "2020-07-01", + "name": "gateway", + "properties": { + "public": true + }, + "dependsOn": [ + "GEN-UNIQUE" + ], + "resources": [ + { + "type": "deployments", + "apiVersion": "2020-07-01", + "name": "default", + "dependsOn": [ + "gateway" + ], + "properties": { + "source": { + "relativePath": "", + "type": "Jar" + } + } + } + ] + }, + { + "type": "apps", + "apiVersion": "2020-07-01", + "name": "account-service", + "properties": { + "public": true + }, + "dependsOn": [ + "GEN-UNIQUE" + ], + "resources": [ + { + "type": "deployments", + "apiVersion": "2020-07-01", + "name": "default", + "dependsOn": [ + "account-service" + ], + "properties": { + "source": { + "relativePath": "", + "type": "Jar" + } + } + } + ] + }, + { + "type": "apps", + "apiVersion": "2020-07-01", + "name": "auth-service", + "properties": { + "public": false + }, + "dependsOn": [ + "GEN-UNIQUE" + ], + "resources": [ + { + "type": "deployments", + "apiVersion": "2020-07-01", + "name": "default", + "dependsOn": [ + "auth-service" + ], + "properties": { + "source": { + "relativePath": "", + "type": "Jar" + } + } + } + ] + } + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-07-01", + "name": "setActiveDeployment", + "dependsOn": [ + "Microsoft.AppPlatform/Spring/apps/deployments/GEN-UNIQUE/gateway/default", + "Microsoft.AppPlatform/Spring/apps/deployments/GEN-UNIQUE/account-service/default", + "Microsoft.AppPlatform/Spring/apps/deployments/GEN-UNIQUE/auth-service/default" + ], + "properties": { + "mode": "Incremental", + "parameters": {}, + "template": { + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [ + { + "type": "Microsoft.AppPlatform/Spring/apps", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE/gateway", + "properties": { + "public": true, + "activeDeploymentName": "default" + } + }, + { + "type": "Microsoft.AppPlatform/Spring/apps", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE/account-service", + "properties": { + "public": false, + "activeDeploymentName": "default" + } + }, + { + "type": "Microsoft.AppPlatform/Spring/apps", + "apiVersion": "2020-07-01", + "name": "GEN-UNIQUE/auth-service", + "properties": { + "public": false, + "activeDeploymentName": "default" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT945 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT945 new file mode 100644 index 0000000..610aebf --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT945 @@ -0,0 +1,86 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.attestation/attestation-provider-create/azuredeploy.json", + "/quickstarts/microsoft.attestation/attestation-provider-create/azuredeploy.parameters.json" + ], + "timestamp": 1642962902994, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.attestation/attestation-provider-create/azuredeploy.json", + "/quickstarts/microsoft.attestation/attestation-provider-create/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT945", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.attestation/attestationproviders" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT945", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "attestationProviderName": { + "type": "string", + "metadata": { + "description": "Name of the Attestation provider. Must be between 3 and 24 characters in length and use numbers and lower-case letters only." + }, + "defaultValue": "[uniqueString(resourceGroup().name, deployment().name)]", + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "Central US" + }, + "tags": { + "type": "object", + "defaultValue": {} + }, + "policySigningCertificates": { + "type": "string", + "defaultValue": "" + } + }, + "variables": { + "PolicySigningCertificates": { + "PolicySigningCertificates": { + "keys": [ + { + "kty": "RSA", + "use": "sig", + "x5c": [ + "" + ] + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Attestation/attestationProviders", + "apiVersion": "2020-10-01", + "name": "GEN-UNIQUE", + "location": "Central US", + "tags": {}, + "properties": "[if(empty(parameters('policySigningCertificates')), json('{}'), variables('PolicySigningCertificates'))]" + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT946 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT946 new file mode 100644 index 0000000..9f60508 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT946 @@ -0,0 +1,62 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.authorization/azurepolicy-assign-builtinpolicy-resourcegroup/azuredeploy.json", + "/quickstarts/microsoft.authorization/azurepolicy-assign-builtinpolicy-resourcegroup/azuredeploy.parameters.json" + ], + "timestamp": 1642962903003, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/azurepolicy-assign-builtinpolicy-resourcegroup/azuredeploy.json", + "/quickstarts/microsoft.authorization/azurepolicy-assign-builtinpolicy-resourcegroup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT946", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/policyassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT946", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "policyAssignmentName": { + "type": "string", + "defaultValue": "[guid(parameters('policyDefinitionID'), resourceGroup().name)]", + "metadata": { + "description": "Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides." + } + }, + "policyDefinitionID": { + "type": "string", + "metadata": { + "description": "Specifies the ID of the policy definition or policy set definition being assigned." + }, + "value": "/providers/Microsoft.Authorization/policyDefinitions/0a914e76-4921-4c19-b460-a2d36003525a" + } + }, + "resources": [ + { + "type": "Microsoft.Authorization/policyAssignments", + "name": "[guid(parameters('policyDefinitionID'), resourceGroup().name)]", + "apiVersion": "2019-09-01", + "properties": { + "scope": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)]", + "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0a914e76-4921-4c19-b460-a2d36003525a" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT947 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT947 new file mode 100644 index 0000000..2c61f50 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT947 @@ -0,0 +1,235 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-multiplevms/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-multiplevms/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903019, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-multiplevms/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-multiplevms/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT947", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT947", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "vmCount": { + "type": "int", + "defaultValue": 2 + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmName": { + "type": "array", + "metadata": { + "description": "VM names." + }, + "value": [ + "vmName", + "vmName1" + ] + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "description" + } + } + }, + "variables": { + "subnetName": "Subnet", + "vmName": [ + "vmName", + "vmName1" + ], + "virtualNetworkName": "MyVNET", + "networkSecurityGroupName": "NSG", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "NSG", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[concat(parameters('vmName')[copyIndex()], '-nic')]", + "location": "[resourceGroup().location]", + "copy": { + "name": "netLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "vmName)[copyIndex(", + "location": "[resourceGroup().location]", + "copy": { + "name": "vmLoop", + "count": 2 + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces/',concat(parameters('vmName')[copyIndex()], '-nic'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "vmName)[copyIndex(", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "1023", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('vmName')[copyIndex()], '-nic'))]" + } + ] + } + } + } + ], + "outputs": { + "virtualMachineName1": { + "type": "string", + "value": "[variables('vmName')[0]]" + }, + "virtualMachineName2": { + "type": "string", + "value": "[variables('vmName')[1]]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT948 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT948 new file mode 100644 index 0000000..6abf07e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT948 @@ -0,0 +1,66 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.parameters.json" + ], + "timestamp": 1642962903031, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT948", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.authorization/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT948", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "roleDefinitionID": { + "type": "string", + "metadata": { + "description": "Specifies the role definition ID used in the role assignment." + }, + "value": "acdd72a7-3385-48ef-bd42-f606fba81ae7" + }, + "principalId": { + "type": "string", + "metadata": { + "description": "Specifies the principal ID assigned to the role." + }, + "value": "GEN-AZUREAD-OBJECTID" + } + }, + "variables": { + "roleAssignmentName": "[guid(parameters('principalId'), parameters('roleDefinitionID'), resourceGroup().id)]" + }, + "resources": [ + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2020-04-01-preview", + "name": "[guid(parameters('principalId'), parameters('roleDefinitionID'), resourceGroup().id)]", + "properties": { + "roleDefinitionId": "Microsoft.Authorization/roleDefinitions/roleDefinitionId", + "principalId": "GEN-AZUREAD-OBJECTID", + "scope": "[resourceGroup().id]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT949 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT949 new file mode 100644 index 0000000..e835f67 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT949 @@ -0,0 +1,208 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-virtualmachine/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-virtualmachine/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903049, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-builtinrole-virtualmachine/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-builtinrole-virtualmachine/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT949", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT949", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_v2", + "metadata": { + "description": "description" + } + } + }, + "variables": { + "nicName": "myVMNic", + "subnetName": "Subnet", + "vmName": "MyUbuntuVM", + "virtualNetworkName": "MyVNET", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "Subnet-nsg" + }, + "resources": [ + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "Subnet-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "MyVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "myVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//MyVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets//MyVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MyUbuntuVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//myVMNic" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_A1_v2" + }, + "osProfile": { + "computerName": "MyUbuntuVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": "1023", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/myVMNic" + } + ] + } + } + } + ], + "outputs": { + "virtualMachineName": { + "type": "string", + "value": "[variables('vmName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT95 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT95 new file mode 100644 index 0000000..3d7306b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT95 @@ -0,0 +1,400 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/shared-resources-new-vnet.json" + ], + "timestamp": 1642962886025, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/shared-resources-new-vnet.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT95", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT95", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "resourceAPIVersion": { + "type": "string" + }, + "networkSpec": { + "type": "object" + }, + "masterNodeASName": { + "type": "string" + }, + "dataNodeASName": { + "type": "string" + }, + "tableauASName": { + "type": "string" + }, + "clouderaTags": { + "type": "object" + }, + "tableauTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "masterNodeASName", + "location": "[resourceGroup().location]", + "comments": "Master Node Name", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "dataNodeASName", + "location": "[resourceGroup().location]", + "comments": "Data Node Name", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "tableauASName", + "location": "[resourceGroup().location]", + "comments": "Tableau Server Name", + "tags": { + "quickstartName": "quickstartTags", + "provider": "tableauTags" + }, + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "networkSpec-sg", + "location": "[resourceGroup().location]", + "comments": "Provides Network Security Group rules", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + { + "name": "HDFS.Web.UI", + "properties": { + "description": "Allows HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50070", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "Hiveserver2", + "properties": { + "description": "Allows Hiveserver traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "Hive.Metastore", + "properties": { + "description": "Allows Hive Metastore traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "9083", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "Hue", + "properties": { + "description": "Allows Hue traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 104, + "direction": "Inbound" + } + }, + { + "name": "YARN.ResourceManager", + "properties": { + "description": "Allows YARN Resource Manager traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8088", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + }, + { + "name": "YARN.JobHistory.Server", + "properties": { + "description": "Allows YARN JobHistory Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "19888", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 106, + "direction": "Inbound" + } + }, + { + "name": "Oozie.Server", + "properties": { + "description": "Allows Oozie Server traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "11000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 107, + "direction": "Inbound" + } + }, + { + "name": "Management.Web.UI", + "properties": { + "description": "Allows Management.Web.UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7180", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 108, + "direction": "Inbound" + } + }, + { + "name": "Navigator", + "properties": { + "description": "Allows Navigator traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "7187", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 109, + "direction": "Inbound" + } + }, + { + "name": "HDFS.dn.Web.UI", + "properties": { + "description": "Allow HDFS Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "50075", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 110, + "direction": "Inbound" + } + }, + { + "name": "YARN.nm.Web.UI", + "properties": { + "description": "Allow YARN Web UI traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8042", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 111, + "direction": "Inbound" + } + }, + { + "name": "Impala.JDBC", + "properties": { + "description": "Allow Impala JDBC traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21050", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 112, + "direction": "Inbound" + } + }, + { + "name": "Impala.Shell", + "properties": { + "description": "Allow Impala Shell traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "21000", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 113, + "direction": "Inbound" + } + }, + { + "name": "RDP", + "properties": { + "description": "Allow RDP Traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 114, + "direction": "Inbound" + } + }, + { + "name": "http", + "properties": { + "description": "Allows http traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 115, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSpec", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/networkSpec-sg" + ], + "location": "[resourceGroup().location]", + "comments": "Shared Resources Virtual Network configuration", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSpec" + ] + }, + "subnets": [ + { + "name": "networkSpec", + "properties": { + "addressPrefix": "networkSpec", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSpec-sg" + } + } + }, + { + "name": "networkSpec", + "properties": { + "addressPrefix": "networkSpec", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/networkSpec-sg" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT950 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT950 new file mode 100644 index 0000000..1e6d0a9 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT950 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-managedidentity-maps/azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-managedidentity-maps/azuredeploy.parameters.json" + ], + "timestamp": 1642962903055, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.authorization/rbac-managedidentity-maps/azuredeploy.json", + "/quickstarts/microsoft.authorization/rbac-managedidentity-maps/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT950", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.maps/accounts", + "microsoft.managedidentity/userassignedidentities", + "microsoft.maps/accounts/providers/roleassignments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT950", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "location for the the resources to deploy." + } + }, + "userAssignedIdentityName": { + "type": "string", + "metadata": { + "description": "the name of the Managed Identity resource." + }, + "value": "GEN-UNIQUE" + }, + "mapsAccountName": { + "type": "string", + "metadata": { + "description": "the name of the Azure Map Account" + }, + "value": "GEN-UNIQUE-10" + }, + "guid": { + "type": "string", + "defaultValue": "[guid(resourceGroup().id)]", + "metadata": { + "description": "Input string for new GUID associated with assigning built in role types" + } + } + }, + "variables": { + "Azure Maps Data Reader": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '423170ca-a8f6-4b0f-8487-9e4eb8f49bfa')]" + }, + "resources": [ + { + "type": "Microsoft.ManagedIdentity/userAssignedIdentities", + "name": "GEN-UNIQUE", + "apiVersion": "2018-11-30", + "location": "[resourceGroup().location]" + }, + { + "apiVersion": "2018-05-01", + "name": "GEN-UNIQUE-10", + "location": "global", + "type": "Microsoft.Maps/accounts", + "sku": { + "name": "S0" + } + }, + { + "apiVersion": "2018-09-01-preview", + "name": "GEN-UNIQUE-10/Microsoft.Authorization/[guid(resourceGroup().id)]", + "type": "Microsoft.Maps/accounts/providers/roleAssignments", + "dependsOn": [ + "GEN-UNIQUE-10", + "GEN-UNIQUE" + ], + "properties": { + "roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '423170ca-a8f6-4b0f-8487-9e4eb8f49bfa')]", + "principalId": "[reference(parameters('userAssignedIdentityName')).principalId]", + "principalType": "ServicePrincipal" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT951 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT951 new file mode 100644 index 0000000..3415418 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT951 @@ -0,0 +1,229 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.automation/101-automation/azuredeploy.json", + "/quickstarts/microsoft.automation/101-automation/azuredeploy.parameters.json" + ], + "timestamp": 1642962903065, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/101-automation/azuredeploy.json", + "/quickstarts/microsoft.automation/101-automation/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT951", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT951", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Workspace name" + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "defaultValue": "pergb2018", + "allowedValues": [ + "pergb2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "metadata": { + "description": "Pricing tier: perGB2018 or legacy tiers (Free, Standalone, PerNode, Standard or Premium), which are not available to all customers." + } + }, + "dataRetention": { + "type": "int", + "defaultValue": 30, + "minValue": 7, + "maxValue": 730, + "metadata": { + "description": "Number of days to retain data." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location in which to create the workspace." + } + }, + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Automation account name" + }, + "value": "GEN-UNIQUE" + }, + "sampleGraphicalRunbookName": { + "type": "String", + "defaultValue": "AzureAutomationTutorial" + }, + "sampleGraphicalRunbookDescription": { + "type": "String", + "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)." + }, + "samplePowerShellRunbookName": { + "type": "String", + "defaultValue": "AzureAutomationTutorialScript" + }, + "samplePowerShellRunbookDescription": { + "type": "String", + "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)." + }, + "samplePython2RunbookName": { + "type": "String", + "defaultValue": "AzureAutomationTutorialPython2" + }, + "samplePython2RunbookDescription": { + "type": "String", + "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)." + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "URI to artifacts location" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "pergb2018" + }, + "retentionInDays": 30, + "features": { + "searchVersion": 1, + "legacy": 0 + } + } + }, + { + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2020-01-13-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "name": "AzureAutomationTutorial", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "runbookType": "GraphPowerShell", + "logProgress": "false", + "logVerbose": "false", + "description": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal).", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorial.graphrunbook', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + }, + { + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "name": "AzureAutomationTutorialScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "runbookType": "PowerShell", + "logProgress": "false", + "logVerbose": "false", + "description": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal).", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorial.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + }, + { + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "name": "AzureAutomationTutorialPython2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "runbookType": "Python2", + "logProgress": "false", + "logVerbose": "false", + "description": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal).", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorialPython2.py', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + } + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces/linkedServices", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE/Automation", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "properties": { + "resourceId": "Microsoft.Automation/automationAccounts/GEN-UNIQUE" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT952 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT952 new file mode 100644 index 0000000..ec79c2f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT952 @@ -0,0 +1,229 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.automation/101-automation/azuredeploy.json", + "/quickstarts/microsoft.automation/101-automation/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962903071, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/101-automation/azuredeploy.json", + "/quickstarts/microsoft.automation/101-automation/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT952", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.operationalinsights/workspaces", + "microsoft.operationalinsights/workspaces/linkedservices", + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT952", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "workspaceName": { + "type": "string", + "metadata": { + "description": "Workspace name" + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "defaultValue": "pergb2018", + "allowedValues": [ + "pergb2018", + "Free", + "Standalone", + "PerNode", + "Standard", + "Premium" + ], + "metadata": { + "description": "Pricing tier: perGB2018 or legacy tiers (Free, Standalone, PerNode, Standard or Premium), which are not available to all customers." + } + }, + "dataRetention": { + "type": "int", + "defaultValue": 30, + "minValue": 7, + "maxValue": 730, + "metadata": { + "description": "Number of days to retain data." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the location in which to create the workspace." + } + }, + "automationAccountName": { + "type": "string", + "metadata": { + "description": "Automation account name" + }, + "value": "GEN-UNIQUE" + }, + "sampleGraphicalRunbookName": { + "type": "String", + "defaultValue": "AzureAutomationTutorial" + }, + "sampleGraphicalRunbookDescription": { + "type": "String", + "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)." + }, + "samplePowerShellRunbookName": { + "type": "String", + "defaultValue": "AzureAutomationTutorialScript" + }, + "samplePowerShellRunbookDescription": { + "type": "String", + "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)." + }, + "samplePython2RunbookName": { + "type": "String", + "defaultValue": "AzureAutomationTutorialPython2" + }, + "samplePython2RunbookDescription": { + "type": "String", + "defaultValue": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal)." + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "[deployment().properties.templateLink.uri]", + "metadata": { + "description": "URI to artifacts location" + } + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "defaultValue": "", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated" + } + } + }, + "resources": [ + { + "type": "Microsoft.OperationalInsights/workspaces", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "sku": { + "name": "pergb2018" + }, + "retentionInDays": 30, + "features": { + "searchVersion": 1, + "legacy": 0 + } + } + }, + { + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2020-01-13-preview", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "sku": { + "name": "Basic" + } + }, + "resources": [ + { + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "name": "AzureAutomationTutorial", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "runbookType": "GraphPowerShell", + "logProgress": "false", + "logVerbose": "false", + "description": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal).", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorial.graphrunbook', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + }, + { + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "name": "AzureAutomationTutorialScript", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "runbookType": "PowerShell", + "logProgress": "false", + "logVerbose": "false", + "description": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal).", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorial.ps1', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + }, + { + "type": "runbooks", + "apiVersion": "2020-01-13-preview", + "name": "AzureAutomationTutorialPython2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE" + ], + "properties": { + "runbookType": "Python2", + "logProgress": "false", + "logVerbose": "false", + "description": "An example runbook that gets all the Resource Manager resources by using the Run As account (service principal).", + "publishContentLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('scripts/AzureAutomationTutorialPython2.py', parameters('_artifactsLocationSasToken')))]", + "version": "1.0.0.0" + } + } + } + ] + }, + { + "type": "Microsoft.OperationalInsights/workspaces/linkedServices", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE/Automation", + "location": "[resourceGroup().location]", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "properties": { + "resourceId": "Microsoft.Automation/automationAccounts/GEN-UNIQUE" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT953 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT953 new file mode 100644 index 0000000..3fee577 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT953 @@ -0,0 +1,198 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionConfiguration.json" + ], + "timestamp": 1642962903078, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionConfiguration.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT953", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT953", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "_artifactsLocation": { + "type": "string" + }, + "_artifactsLocationSasToken": { + "type": "secureString" + }, + "automationAccountName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "secureString" + }, + "domainName": { + "type": "string" + }, + "compileName": { + "type": "string", + "defaultValue": "[guid(resourceGroup().id, deployment().name)]" + }, + "devopsStoragePackagesBase": { + "type": "string", + "metadata": { + "description": "DC Resource URL" + } + } + }, + "variables": { + "dscConfigurations": { + "DomainControllerConfig": { + "name": "DomainControllerConfig", + "description": "minimum viable configuration for a domain controller role", + "script": "nested/DomainControllerConfig.ps1" + } + }, + "dscResources": { + "xActiveDirectory": { + "name": "xActiveDirectory", + "url": "[uri(parameters('devopsStoragePackagesBase'), 'xactivedirectory.2.17.0.nupkg')]" + }, + "xStorage": { + "name": "xStorage", + "url": "[uri(parameters('devopsStoragePackagesBase'), 'xstorage.3.4.0.nupkg')]" + }, + "xPendingReboot": { + "name": "xPendingReboot", + "url": "[uri(parameters('devopsStoragePackagesBase'), 'xpendingreboot.0.3.0.nupkg')]" + } + } + }, + "resources": [ + { + "name": "automationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiversion": "2020-01-13-preview", + "location": "location", + "comments": "Automation account for OMS", + "properties": { + "sku": { + "name": "OMS" + } + }, + "resources": [ + { + "name": "(dscResources).xActiveDirectory.name", + "type": "modules", + "apiVersion": "2020-01-13-preview", + "location": "location", + "dependsOn": [ + "AutomationAccountName" + ], + "properties": { + "contentLink": { + "uri": "(dscResources).xActiveDirectory.url" + } + } + }, + { + "name": "(dscResources).xStorage.name", + "type": "modules", + "apiVersion": "2020-01-13-preview", + "location": "location", + "dependsOn": [ + "AutomationAccountName" + ], + "properties": { + "contentLink": { + "uri": "(dscResources).xStorage.url" + } + } + }, + { + "name": "(dscResources).xPendingReboot.name", + "type": "modules", + "apiVersion": "2020-01-13-preview", + "location": "location", + "dependsOn": [ + "AutomationAccountName" + ], + "properties": { + "contentLink": { + "uri": "(dscResources).xPendingReboot.url" + } + } + }, + { + "name": "Credential", + "type": "credentials", + "apiVersion": "2020-01-13-preview", + "location": "location", + "dependsOn": [ + "AutomationAccountName" + ], + "properties": { + "userName": "adminUsername", + "password": "adminPassword" + } + }, + { + "name": "(dscConfigurations).DomainControllerConfig.name", + "type": "configurations", + "apiVersion": "2018-06-30", + "location": "location", + "dependsOn": [ + "AutomationAccountName", + "(dscResources).xActiveDirectory.name", + "(dscResources).xStorage.name", + "(dscResources).xPendingReboot.name", + "Credential" + ], + "properties": { + "overwrite": true, + "source": { + "type": "uri", + "value": "[uri(parameters('_artifactsLocation'), concat(variables('dscConfigurations').DomainControllerConfig.script, parameters('_artifactsLocationSasToken')))]" + } + } + }, + { + "name": "[guid(resourceGroup().id, deployment().name)]", + "type": "compilationjobs", + "apiVersion": "2020-01-13-preview", + "location": "location", + "dependsOn": [ + "AutomationAccountName", + "(dscConfigurations).DomainControllerConfig.name" + ], + "properties": { + "configuration": { + "name": "(dscConfigurations).DomainControllerConfig.name" + }, + "parameters": { + "configurationData": "{\"AllNodes\":{\"nodename\":\"localhost\"\"domainname\":\"domainName\"}}" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT954 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT954 new file mode 100644 index 0000000..f02e7d5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT954 @@ -0,0 +1,85 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionDNS.json" + ], + "timestamp": 1642962903085, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionDNS.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT954", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT954", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "Description": "The region to deploy the resources into" + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "Description": "The name of the Virtual Network" + } + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "Description": "The address range of the virtual network in CIDR format" + }, + "defaultValue": "10.0.0.0/16" + }, + "virtualNetworkSubnets": { + "type": "array", + "metadata": { + "Description": "The subnet definition for the virtual network" + } + }, + "dnsAddress": { + "type": "array", + "metadata": { + "Description": "The DNS address(es) of the DNS Server(s) used by the virtual network" + } + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-05-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "dhcpOptions": { + "dnsServers": "dnsAddress" + }, + "subnets": "virtualNetworkSubnets" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT955 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT955 new file mode 100644 index 0000000..24a1d7f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT955 @@ -0,0 +1,119 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionNetwork.json" + ], + "timestamp": 1642962903092, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionNetwork.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT955", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT955", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "virtualNetworkAddressRange": { + "type": "string" + }, + "virtualNetworkSubnets": { + "type": "array" + }, + "nicName": { + "type": "string" + }, + "nicIPAddress": { + "type": "string" + }, + "nicSubnetRef": { + "type": "string" + }, + "publicIPAddressName": { + "type": "string" + }, + "publicIPAddressType": { + "type": "string" + } + }, + "resources": [ + { + "name": "virtualNetworkName", + "type": "Microsoft.Network/virtualNetworks", + "location": "location", + "apiVersion": "2020-05-01", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "virtualNetworkAddressRange" + ] + }, + "subnets": "virtualNetworkSubnets" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "publicIPAddressName", + "location": "location", + "dependsOn": [ + "virtualNetworkName" + ], + "properties": { + "publicIPAllocationMethod": "publicIPAddressType" + } + }, + { + "name": "nicName", + "type": "Microsoft.Network/networkInterfaces", + "location": "location", + "apiVersion": "2020-05-01", + "dependsOn": [ + "virtualNetworkName", + "publicIPAddressName" + ], + "properties": { + "ipConfigurations": [ + { + "name": "privateipconfig", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "nicIPAddress", + "subnet": { + "id": "nicSubnetRef" + }, + "publicIPAddress": { + "id": "[resourceId ('Microsoft.Network/publicIPAddresses/', parameters('publicIPAddressName'))]" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT956 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT956 new file mode 100644 index 0000000..1285b82 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT956 @@ -0,0 +1,177 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionServer.json" + ], + "timestamp": 1642962903099, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/nested/provisionServer.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT956", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.automation/automationaccounts", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT956", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string" + }, + "vmName": { + "type": "string" + }, + "vmSize": { + "type": "string" + }, + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "securestring" + }, + "nicName": { + "type": "string" + }, + "automationAccountName": { + "type": "string" + }, + "nodeConfigurationName": { + "type": "string", + "defaultValue": "DomainControllerConfig.localhost" + } + }, + "resources": [ + { + "name": "automationAccountName", + "type": "Microsoft.Automation/automationAccounts", + "apiVersion": "2020-01-13-preview", + "location": "location", + "comments": "Automation account for OMS", + "properties": { + "sku": { + "name": "OMS" + } + } + }, + { + "name": "VMName", + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "location": "location", + "dependsOn": [ + "automationAccountName" + ], + "properties": { + "hardwareProfile": { + "vmSize": "VMSize" + }, + "osProfile": { + "computerName": "VMName", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter-Server-Core", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "createOption": "Empty", + "diskSizeGB": 100, + "lun": 0 + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/NicName" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "VMName/OnboardToDSC", + "apiVersion": "2020-06-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//VMName" + ], + "properties": { + "publisher": "Microsoft.Powershell", + "type": "DSC", + "typeHandlerVersion": "2.75", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "Items": { + "registrationKeyPrivate": "[listKeys(resourceId('Microsoft.Automation/automationAccounts/', parameters('automationAccountName')), '2020-01-13-preview').Keys[0].value]" + } + }, + "settings": { + "Properties": [ + { + "Name": "RegistrationKey", + "Value": { + "UserName": "PLACEHOLDER_DONOTUSE", + "Password": "PrivateSettingsRef:registrationKeyPrivate" + }, + "TypeName": "System.Management.Automation.PSCredential" + }, + { + "Name": "RegistrationUrl", + "Value": "[reference(resourceId('Microsoft.Automation/automationAccounts/', parameters('automationAccountName'))).registrationUrl]", + "TypeName": "System.String" + }, + { + "Name": "NodeConfigurationName", + "Value": "DomainControllerConfig.localhost", + "TypeName": "System.String" + }, + { + "Name": "ConfigurationMode", + "Value": "ApplyandAutoCorrect", + "TypeName": "System.String" + }, + { + "Name": "RebootNodeIfNeeded", + "Value": true, + "TypeName": "System.Boolean" + }, + { + "Name": "ActionAfterReboot", + "Value": "ContinueConfiguration", + "TypeName": "System.String" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT957 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT957 new file mode 100644 index 0000000..d385663 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT957 @@ -0,0 +1,314 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/azuredeploy.json", + "/quickstarts/microsoft.automation/automation-configuration/azuredeploy.parameters.json" + ], + "timestamp": 1642962903107, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.automation/automation-configuration/azuredeploy.json", + "/quickstarts/microsoft.automation/automation-configuration/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT957", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT957", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "metadata": { + "description": "The Azure location to deploy all resources" + }, + "defaultValue": "[resourceGroup().location]" + }, + "virtualNetworkAddressRange": { + "type": "string", + "metadata": { + "description": "The address range of the new virtual network " + }, + "defaultValue": "10.0.0.0/16" + }, + "virtualNetworkSubnet": { + "type": "string", + "metadata": { + "description": "The address range of the subnet created in the new virtual network" + }, + "defaultValue": "10.0.0.0/24" + }, + "nicIPAddress": { + "type": "string", + "metadata": { + "description": "The IP address of the new AD VM" + }, + "defaultValue": "10.0.0.4" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "The name of the Administrator of the new VM and Domain" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The password for the Administrator account of the new VM and Domain" + }, + "value": "GEN-PASSWORD" + }, + "VMSize": { + "type": "string", + "metadata": { + "description": "The size of the VM Created" + }, + "defaultValue": "Standard_D2s_v3" + }, + "domainName": { + "type": "string", + "metadata": { + "description": "The full qualified domain name to be created" + }, + "defaultValue": "contoso.local" + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "Path to the nested templates used in this deployment" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "secureString", + "metadata": { + "description": "SAS token to access artifacts location, if required" + }, + "defaultValue": "" + }, + "compileName": { + "type": "string", + "metadata": { + "description": "Unique value to identify compilation job" + }, + "defaultValue": "[guid(resourceGroup().id, deployment().name)]" + }, + "devopsStoragePackagesBase": { + "type": "string", + "metadata": { + "description": "DevOps Gallery Storage Package Base" + }, + "value": "https://devopsgallerystorage.blob.core.windows.net/packages/" + } + }, + "variables": { + "automationAccountName": "[concat('DSC-',take(guid(resourceGroup().id),5))]", + "publicIPAddressName": "PIP", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "Network", + "virtualNetworkSubnetName": "Subnet", + "virtualNetworkSubnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ], + "VMName": "Server", + "nicName": "NIC", + "nicSubnetRef": "Microsoft.Network/virtualNetworks/subnets/Network/Subnet", + "provisionConfigurationURL": "[uri(parameters('_artifactsLocation'), concat('nested/provisionConfiguration.json', parameters('_artifactsLocationSasToken')))]", + "provisionNetworkURL": "[uri(parameters('_artifactsLocation'), concat('nested/provisionNetwork.json', parameters('_artifactsLocationSasToken')))]", + "provisionServerUrl": "[uri(parameters('_artifactsLocation'), concat('nested/provisionServer.json', parameters('_artifactsLocationSasToken')))]", + "provisionDNSUrl": "[uri(parameters('_artifactsLocation'), concat('nested/provisionDNS.json', parameters('_artifactsLocationSasToken')))]" + }, + "resources": [ + { + "name": "provisionConfiguration", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/provisionConfiguration.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "_artifactsLocation": { + "value": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "value": "" + }, + "automationAccountName": { + "value": "[variables('automationAccountName')]" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "domainName": { + "value": "contoso.local" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "compileName": { + "value": "[guid(resourceGroup().id, deployment().name)]" + }, + "devopsStoragePackagesBase": { + "value": "https://devopsgallerystorage.blob.core.windows.net/packages/" + } + } + } + }, + { + "name": "provisionNetwork", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/provisionNetwork.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "Network" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "virtualNetworkSubnets": { + "value": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + }, + "nicName": { + "value": "NIC" + }, + "nicIPAddress": { + "value": "10.0.0.4" + }, + "nicSubnetRef": { + "value": "Microsoft.Network/virtualNetworks/subnets/Network/Subnet" + }, + "publicIPAddressName": { + "value": "PIP" + }, + "publicIPAddressType": { + "value": "Dynamic" + } + } + } + }, + { + "name": "provisionServer", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "provisionNetwork", + "provisionConfiguration" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/provisionServer.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "VMName": { + "value": "Server" + }, + "VMSize": { + "value": "Standard_D2s_v3" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "NicName": { + "value": "NicName" + }, + "automationAccountName": { + "value": "[variables('automationAccountName')]" + } + } + } + }, + { + "name": "provisionDNS", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "dependsOn": [ + "provisionServer" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('nested/provisionDNS.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "location": { + "value": "[resourceGroup().location]" + }, + "virtualNetworkName": { + "value": "Network" + }, + "virtualNetworkAddressRange": { + "value": "10.0.0.0/16" + }, + "virtualNetworkSubnets": { + "value": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + }, + "dnsAddress": { + "value": [ + "10.0.0.4" + ] + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT958 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT958 new file mode 100644 index 0000000..28e8ee1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT958 @@ -0,0 +1,115 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903116, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT958", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/certificates", + "microsoft.storage/storageaccounts", + "microsoft.batch/batchaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT958", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "certificatePrefixName": { + "type": "string", + "value": "GEN-SELFSIGNED-CERT-DNSNAME" + }, + "certificatePfxBase64": { + "type": "securestring", + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certificatePfxPassword": { + "type": "securestring", + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "storagename": { + "type": "string", + "value": "GEN-UNIQUE" + }, + "batchname": { + "type": "string", + "value": "GEN-UNIQUE" + } + }, + "variables": { + "certificateName": "GEN-SELFSIGNED-CERT-DNSNAME" + }, + "resources": [ + { + "type": "Microsoft.Web/certificates", + "apiVersion": "2020-06-01", + "name": "GEN-SELFSIGNED-CERT-DNSNAME", + "location": "[resourceGroup().location]", + "properties": { + "pfxBlob": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + }, + "tags": { + "displayName": "Certificate" + } + }, + { + "apiVersion": "2019-04-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage" + }, + { + "type": "Microsoft.Batch/batchAccounts", + "apiVersion": "2019-04-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "autoStorage": { + "storageAccountId": "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + } + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/GEN-UNIQUE" + ] + } + ], + "outputs": { + "batchservice": { + "type": "string", + "value": "[parameters('batchname')]" + }, + "certthumbprint": { + "type": "string", + "value": "[reference(variables('certificateName')).thumbprint]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT959 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT959 new file mode 100644 index 0000000..7f4a786 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT959 @@ -0,0 +1,83 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/azuredeploy.json", + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/azuredeploy.parameters.json" + ], + "timestamp": 1642962903124, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/azuredeploy.json", + "/quickstarts/microsoft.batch/batch-with-keyvault-pfx-password/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT959", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.batch/batchaccounts/certificates" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT959", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "batchservice": { + "type": "string", + "metadata": { + "description": "batch acount name" + }, + "value": "GET-PREREQ-batchservice" + }, + "certdata": { + "type": "securestring", + "metadata": { + "description": "certificate securestring reference to keyvault" + }, + "value": "GEN-SELFSIGNED-CERT-PFXDATA" + }, + "certthumbprint": { + "type": "securestring", + "metadata": { + "description": "keyvault certificate thumbprint" + }, + "value": "GET-PREREQ-certthumbprint" + }, + "certpassword": { + "type": "securestring", + "metadata": { + "description": "keyvault certificate pfx password" + }, + "value": "GEN-SELFSIGNED-CERT-PASSWORD" + } + }, + "variables": { + "certname": "GET-PREREQ-batchservice/SHA1-GET-PREREQ-certthumbprint" + }, + "resources": [ + { + "name": "GET-PREREQ-batchservice/SHA1-GET-PREREQ-certthumbprint", + "type": "Microsoft.Batch/batchAccounts/certificates", + "apiVersion": "2021-01-01", + "properties": { + "format": "Pfx", + "thumbprint": "GET-PREREQ-certthumbprint", + "thumbprintAlgorithm": "SHA1", + "data": "GEN-SELFSIGNED-CERT-PFXDATA", + "password": "GEN-SELFSIGNED-CERT-PASSWORD" + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT96 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT96 new file mode 100644 index 0000000..0d9d5d8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT96 @@ -0,0 +1,231 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/tableau-server.json" + ], + "timestamp": 1642962886071, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/nested/tableau-server.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT96", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.storage/storageaccounts", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT96", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin user name for the VMs" + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the VMs (A mix of upper and lower-case characters, digits and symbols)" + } + }, + "vnetID": { + "type": "string" + }, + "resourceAPIVersion": { + "type": "string" + }, + "dnsNamePrefix": { + "type": "string" + }, + "scriptsUri": { + "type": "string" + }, + "storageAccount": { + "type": "object" + }, + "vmSpec": { + "type": "secureObject" + }, + "networkSpec": { + "type": "object" + }, + "windowsOSVersion": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "allowedValues": [ + "2008-R2-SP1", + "2012-Datacenter", + "2012-R2-Datacenter" + ], + "metadata": { + "description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2008-R2-SP1, 2012-Datacenter, 2012-R2-Datacenter." + } + }, + "clouderaTags": { + "type": "object" + }, + "tableauTags": { + "type": "object" + }, + "quickstartTags": { + "type": "object" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "tsstorageAccount", + "sizeOfDiskInGB": "100", + "dataDisk1VhdName": "datadisk1", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "OSDiskName": "osdiskforwindowssimple", + "vmName": "dnsNamePrefix-ts", + "nicName": "dnsNamePrefix-ts-nic", + "publicIPAddressName": "dnsNamePrefix-ts-publicIP", + "publicIPAddressType": "Dynamic", + "vmStorageAccountContainerName": "vhds", + "vmSize": "Standard_A3", + "apiVersion": "2015-06-15" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "tsstorageAccount", + "location": "[resourceGroup().location]", + "comments": "Utilizes the Cloudera master storage account", + "tags": { + "quickstartName": "quickstartTags", + "provider": "clouderaTags" + }, + "properties": { + "accountType": "storageAccount" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "dnsNamePrefix-ts-publicIP", + "location": "[resourceGroup().location]", + "comments": "Tableau Server Public IP Address", + "tags": { + "quickstartName": "quickstartTags", + "provider": "tableauTags" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/networkInterfaces", + "name": "dnsNamePrefix-ts-nic", + "location": "[resourceGroup().location]", + "comments": "Tableau Server nic name", + "tags": { + "quickstartName": "quickstartTags", + "provider": "tableauTags" + }, + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/dnsNamePrefix-ts-publicIP" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/dnsNamePrefix-ts-publicIP" + }, + "subnet": { + "id": "vnetID/subnets/networkSpec" + } + } + } + ] + } + }, + { + "apiVersion": "2017-03-30", + "type": "Microsoft.Compute/virtualMachines", + "name": "dnsNamePrefix-ts", + "location": "[resourceGroup().location]", + "comments": "Tableau Server VM", + "tags": { + "quickstartName": "quickstartTags", + "provider": "tableauTags" + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/tsstorageAccount", + "Microsoft.Network/networkInterfaces/dnsNamePrefix-ts-nic" + ], + "plan": { + "name": "bring-your-own-license", + "product": "tableau-server", + "publisher": "tableau" + }, + "properties": { + "hardwareProfile": { + "vmSize": "vmSpec" + }, + "osProfile": { + "computerName": "dnsNamePrefix-ts", + "adminUsername": "adminUsername", + "adminPassword": "adminPassword" + }, + "storageProfile": { + "imageReference": { + "publisher": "tableau", + "offer": "tableau-server", + "sku": "bring-your-own-license", + "version": "latest" + }, + "osDisk": { + "name": "dnsNamePrefix-ts_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + }, + "dataDisks": [ + { + "name": "dnsNamePrefix-ts_DataDisk1", + "diskSizeGB": "100", + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/dnsNamePrefix-ts-nic" + } + ] + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT960 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT960 new file mode 100644 index 0000000..72d8ba8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT960 @@ -0,0 +1,112 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.batch/batchaccount-with-storage/azuredeploy.json", + "/quickstarts/microsoft.batch/batchaccount-with-storage/azuredeploy.parameters.json" + ], + "timestamp": 1642962903131, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.batch/batchaccount-with-storage/azuredeploy.json", + "/quickstarts/microsoft.batch/batchaccount-with-storage/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT960", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.batch/batchaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT960", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "batchAccountName": { + "type": "string", + "defaultValue": "[concat(toLower(uniqueString(resourceGroup().id)), 'batch')]", + "metadata": { + "description": "Batch Account Name" + } + }, + "storageAccountsku": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage Account type" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]" + }, + "resources": [ + { + "comments": "This storage account is used to associate to a batch account", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "storageAccountname", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2", + "tags": { + "ObjectName": "[variables('storageAccountName')]" + }, + "properties": {} + }, + { + "type": "Microsoft.Batch/batchAccounts", + "apiVersion": "2020-05-01", + "name": "[concat(toLower(uniqueString(resourceGroup().id)), 'batch')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + ], + "tags": { + "ObjectName": "[concat(toLower(uniqueString(resourceGroup().id)), 'batch')]" + }, + "properties": { + "autoStorage": { + "storageAccountId": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + } + } + } + ], + "outputs": { + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "batchAccountName": { + "type": "string", + "value": "[parameters('batchAccountName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT961 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT961 new file mode 100644 index 0000000..b201c3e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT961 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.blockchain/blockchain-asaservice/azuredeploy.json", + "/quickstarts/microsoft.blockchain/blockchain-asaservice/azuredeploy.parameters.json" + ], + "timestamp": 1642962903137, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.blockchain/blockchain-asaservice/azuredeploy.json", + "/quickstarts/microsoft.blockchain/blockchain-asaservice/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT961", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.blockchain/blockchainmembers" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT961", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "bcMemberName": { + "type": "String", + "metadata": { + "description": "Azure Blockchain Service member name. The blockchain member name must be unique and can only contain lowercase letters and numbers. The first character must be a letter. The value must be between 2 and 20 characters long." + }, + "value": "GEN-UNIQUE" + }, + "consortiumName": { + "type": "String", + "metadata": { + "description": "Consortium name. The new consortium name must be unique." + }, + "value": "GEN-UNIQUE" + }, + "memberPassword": { + "type": "secureString", + "metadata": { + "description": "The password for the member's default transaction node. Use the password for basic authentication when connecting to blockchain member's default transaction node public endpoint. The password must have 3 of the following: 1 lower case character, 1 upper case character, 1 number, and 1 special character that is not '#', '`', '*', '\"', ''', '-', '%',' ' or ';'." + }, + "value": "GEN-PASSWORD-AMP" + }, + "consortiumManagementAccountPassword": { + "type": "secureString", + "metadata": { + "description": "The consortium management account password is used to encrypt the private key for the Ethereum account that is created for your member. You use the member account and member account password for consortium management. The password must have 3 of the following: 1 lower case character, 1 upper case character, 1 number, and 1 special character that is not '#', '`', '*', '\"', ''', '-', '%',' ' or ';'." + }, + "value": "GEN-PASSWORD-AMP" + }, + "skuTier": { + "type": "string", + "defaultValue": "Basic", + "metadata": { + "description": "Use Basic or Standard. Use the Basic tier for development, testing, and proof of concepts. Use the Standard tier for production grade deployments. You should also use the Standard tier if you are using Blockchain Data Manager or sending a high volume of private transactions. Changing the pricing tier between basic and standard after member creation is not supported." + } + }, + "skuName": { + "type": "string", + "defaultValue": "B0", + "metadata": { + "description": "Use S0 for Standard and B0 for Basic." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + }, + "value": "westus2" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Blockchain/blockchainMembers", + "apiVersion": "2018-06-01-preview", + "name": "GEN-UNIQUE", + "location": "westus2", + "sku": { + "name": "B0", + "tier": "Basic" + }, + "tags": { + "consortium": "Consortium" + }, + "properties": { + "protocol": "Quorum", + "consensus": "Default", + "password": "GEN-PASSWORD-AMP", + "validatorNodesSku": { + "capacity": 1 + }, + "consortium": "GEN-UNIQUE", + "consortiumManagementAccountPassword": "GEN-PASSWORD-AMP", + "firewallRules": [ + { + "ruleName": "AllowAll", + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT962 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT962 new file mode 100644 index 0000000..f08b56a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT962 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-cache/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-cache/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903144, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-cache/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-cache/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT962", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT962", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]" + }, + "resources": [ + { + "comments": "Storage account used to store diagnostics data", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + } + ], + "outputs": { + "existingDiagnosticsStorageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "existingDiagnosticsStorageAccountResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT963 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT963 new file mode 100644 index 0000000..2358a3f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT963 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-cache/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-cache/azuredeploy.parameters.json" + ], + "timestamp": 1642962903149, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-cache/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-cache/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT963", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT963", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.63.48766", + "templateHash": "15185429886065480175" + } + }, + "parameters": { + "redisCacheName": { + "type": "string", + "defaultValue": "[format('redisCache-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Specify the name of the Azure Redis Cache to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of all resources" + } + }, + "redisCacheSKU": { + "type": "string", + "defaultValue": "Standard", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Specify the pricing tier of the new Azure Redis Cache." + } + }, + "redisCacheFamily": { + "type": "string", + "defaultValue": "C", + "allowedValues": [ + "C", + "P" + ], + "metadata": { + "description": "Specify the family for the sku. C = Basic/Standard, P = Premium." + } + }, + "redisCacheCapacity": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "metadata": { + "description": "Specify the size of the new Azure Redis Cache instance. Valid values: for C (Basic/Standard) family (0, 1, 2, 3, 4, 5, 6), for P (Premium) family (1, 2, 3, 4)" + } + }, + "enableNonSslPort": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specify a boolean value that indicates whether to allow access via non-SSL ports." + } + }, + "diagnosticsEnabled": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specify a boolean value that indicates whether diagnostics should be saved to the specified storage account." + } + }, + "existingDiagnosticsStorageAccountName": { + "type": "string", + "metadata": { + "description": "Specify the name of an existing storage account for diagnostics." + }, + "value": "GET-PREREQ-existingDiagnosticsStorageAccountName" + }, + "existingDiagnosticsStorageAccountResourceGroup": { + "type": "string", + "metadata": { + "description": "Specify the resource group name of an existing storage account for diagnostics." + }, + "value": "GET-PREREQ-existingDiagnosticsStorageAccountResourceGroup" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cache/redis", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "enableNonSslPort": false, + "minimumTlsVersion": "1.2", + "sku": { + "capacity": 1, + "family": "C", + "name": "Standard" + } + } + }, + { + "type": "microsoft.insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "scope": "[format('Microsoft.Cache/redis/{0}', parameters('redisCacheName'))]", + "name": "GEN-UNIQUE", + "properties": { + "storageAccountId": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('existingDiagnosticsStorageAccountResourceGroup')), 'Microsoft.Storage/storageAccounts', parameters('existingDiagnosticsStorageAccountName'))]", + "metrics": [ + { + "timeGrain": "AllMetrics", + "enabled": false, + "retentionPolicy": { + "days": 90, + "enabled": false + } + } + ] + }, + "dependsOn": [ + "Microsoft.Cache/redis/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT964 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT964 new file mode 100644 index 0000000..8e0d424 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT964 @@ -0,0 +1,443 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962903154, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT964", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT964", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Administrator user name used when provisioning virtual machines" + }, + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "redisVirtNet", + "metadata": { + "description": "The arbitrary name of the virtual network provisioned for the Redis cluster" + }, + "value": "GEN-VNET-NAME" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The network address space for the virtual network" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "redisSubnet1", + "metadata": { + "description": "Subnet name for the virtual network that resources will be provisioned in to" + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Address space for the virtual network subnet" + }, + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.1", + "metadata": { + "description": "The IP address prefix that will be used for constructing a static private IP address for each node in the cluster" + }, + "value": "10.0.0.1" + }, + "jumpbox": { + "type": "string", + "defaultValue": "Disabled", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "metadata": { + "description": "The flag allowing to enable or disable provisioning of the jumpbox VM that can be used to access the Redis nodes" + }, + "value": "Enabled" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1_V2", + "metadata": { + "description": "Size of the VM." + } + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Small", + "allowedValues": [ + "Small", + "Medium", + "Large" + ], + "metadata": { + "description": "T-shirt size of the Redis deployment" + }, + "value": "Small" + }, + "redisVersion": { + "type": "string", + "defaultValue": "stable", + "metadata": { + "description": "The version of the Redis package to be deployed on the cluster (or use 'stable' to pull in the latest and greatest)" + }, + "value": "3.0.0" + }, + "redisClusterName": { + "type": "string", + "defaultValue": "redis-cluster", + "metadata": { + "description": "The arbitrary name of the Redis cluster" + }, + "value": "redis-arm-cluster" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "metadata": { + "description": "The base URI where artifacts required by this template are located including a trailing '/'" + }, + "defaultValue": "[deployment().properties.templateLink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." + }, + "defaultValue": "" + } + }, + "variables": { + "deploymentSize": { + "Small": { + "vmSizeMember": "Standard_A1", + "numberOfMasters": 3, + "numberOfSlaves": 0, + "totalMemberCount": 3, + "totalMemberCountExcludingLast": 2, + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('node-resources.json', parameters('_artifactsLocationSasToken')))]" + }, + "Medium": { + "vmSizeMember": "Standard_A2", + "numberOfMasters": 3, + "numberOfSlaves": 3, + "totalMemberCount": 6, + "totalMemberCountExcludingLast": 5, + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('node-resources.json', parameters('_artifactsLocationSasToken')))]" + }, + "Large": { + "vmSizeMember": "Standard_A5", + "numberOfMasters": 3, + "numberOfSlaves": 6, + "totalMemberCount": 9, + "totalMemberCountExcludingLast": 8, + "arbiter": "Enabled", + "vmTemplate": "[uri(parameters('_artifactsLocation'), concat('node-resources.json', parameters('_artifactsLocationSasToken')))]" + } + }, + "osFamilyUbuntu": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "imageSKU": "14.04.5-LTS" + }, + "commonSettings": { + "availabilitySetName": "redisAvailSet" + }, + "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "jumpboxTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('jumpbox-resources.json', parameters('_artifactsLocationSasToken')))]", + "networkSettings": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + }, + "machineSettings": { + "adminUsername": "GEN-UNIQUE", + "machineNamePrefix": "redisnode-", + "osImageReference": { + "publisher": "(osFamilyUbuntu).imagePublisher", + "offer": "(osFamilyUbuntu).imageOffer", + "sku": "(osFamilyUbuntu).imageSKU", + "version": "latest" + } + }, + "clusterSpec": "(deploymentSize)[parameters(tshirtSize)]", + "installCommand": "redis-cluster-install.sh -n redis-arm-cluster -v 3.0.0 -c (clusterSpec).totalMemberCount -m (clusterSpec).numberOfMasters -s (clusterSpec).numberOfSlaves -p (networkSettings).machineIpPrefix", + "vmScripts": { + "scriptsToDownload": [ + "[uri(parameters('_artifactsLocation'), concat('redis-cluster-install.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('redis-cluster-setup.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('redis-sentinel-startup.sh', parameters('_artifactsLocationSasToken')))]" + ], + "installCommand": "bash redis-cluster-install.sh -n redis-arm-cluster -v 3.0.0 -c (clusterSpec).totalMemberCount -m (clusterSpec).numberOfMasters -s (clusterSpec).numberOfSlaves -p (networkSettings).machineIpPrefix", + "setupCommand": "bash redis-cluster-install.sh -n redis-arm-cluster -v 3.0.0 -c (clusterSpec).totalMemberCount -m (clusterSpec).numberOfMasters -s (clusterSpec).numberOfSlaves -p (networkSettings).machineIpPrefix -l" + } + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('shared-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "redisAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "condition": false, + "name": "jumpbox-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(parameters('_artifactsLocation'), concat('jumpbox-resources.json', parameters('_artifactsLocationSasToken')))]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "machineSettings": { + "value": { + "adminUsername": "GEN-UNIQUE", + "machineNamePrefix": "redisnode-", + "osImageReference": { + "publisher": "(osFamilyUbuntu).imagePublisher", + "offer": "(osFamilyUbuntu).imageOffer", + "sku": "(osFamilyUbuntu).imageSKU", + "version": "latest" + } + } + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "location": { + "value": "[resourceGroup().location]" + }, + "vmSize": { + "value": "Standard_A1_V2" + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "name": "node-resourcescopyindex()", + "apiVersion": "2020-10-01", + "dependsOn": [ + "Microsoft.Resources/deployments//shared-resources" + ], + "copy": { + "name": "memberNodesLoop", + "count": "(clusterSpec).totalMemberCountExcludingLast" + }, + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(clusterSpec).vmTemplate", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "redisAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "machineSettings": { + "value": { + "adminUsername": "(machineSettings).adminUsername", + "machineNamePrefix": "(machineSettings).machineNamePrefix", + "osImageReference": "(machineSettings).osImageReference", + "vmSize": "(clusterSpec).vmSizeMember", + "machineIndex": "[copyindex()]", + "vmScripts": "(vmScripts).scriptsToDownload", + "commandToExecute": "(vmScripts).installCommand -i copyindex()" + } + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + }, + { + "name": "lastnode-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-10-01", + "dependsOn": [ + "memberNodesLoop" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "(clusterSpec).vmTemplate", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "commonSettings": { + "value": { + "availabilitySetName": "redisAvailSet" + } + }, + "networkSettings": { + "value": { + "virtualNetworkName": "GEN-VNET-NAME", + "addressPrefix": "10.0.0.0/16", + "subnetName": "GEN-VNET-SUBNET1-NAME", + "subnetPrefix": "10.0.0.0/24", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/GEN-VNET-NAME/GEN-VNET-SUBNET1-NAME", + "machineIpPrefix": "10.0.0.1" + } + }, + "machineSettings": { + "value": { + "adminUsername": "(machineSettings).adminUsername", + "machineNamePrefix": "(machineSettings).machineNamePrefix", + "osImageReference": "(machineSettings).osImageReference", + "vmSize": "(clusterSpec).vmSizeMember", + "machineIndex": "(clusterSpec).totalMemberCountExcludingLast", + "vmScripts": "(vmScripts).scriptsToDownload", + "commandToExecute": "(vmScripts).setupCommand -i (clusterSpec).totalMemberCountExcludingLast" + } + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "value": "sshPublicKey" + }, + "location": { + "value": "[resourceGroup().location]" + } + } + } + } + ], + "outputs": { + "installCommand": { + "value": "[variables('vmScripts').installCommand]", + "type": "string" + }, + "setupCommand": { + "value": "[variables('vmScripts').setupCommand]", + "type": "string" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT965 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT965 new file mode 100644 index 0000000..29061ff --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT965 @@ -0,0 +1,71 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/empty-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962903163, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/empty-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT965", + "status": "active", + "validate": true, + "resourceTypes": [] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT965", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "redisVersion": { + "value": "3.0.0" + }, + "redisClusterName": { + "value": "redis-arm-cluster" + }, + "jumpbox": { + "value": "Enabled" + }, + "tshirtSize": { + "value": "Small" + } + }, + "variables": {}, + "resources": [], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT966 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT966 new file mode 100644 index 0000000..db0b02e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT966 @@ -0,0 +1,218 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/jumpbox-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962903168, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/jumpbox-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT966", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT966", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "Description": "Administrator password used when provisioning virtual machines" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "metadata": { + "description": "Size of the VM." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "redisVersion": { + "value": "3.0.0" + }, + "redisClusterName": { + "value": "redis-arm-cluster" + }, + "jumpbox": { + "value": "Enabled" + }, + "tshirtSize": { + "value": "Small" + } + }, + "variables": { + "securityGroupName": "jumpboxNSG", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/machineSettings/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "jumpboxNSG", + "location": "location", + "properties": { + "securityRules": [ + { + "name": "SSH", + "properties": { + "description": "Allows SSH traffic", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "22", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "jumpboxPublicIP", + "location": "location", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "jumpboxNIC", + "location": "location", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//jumpboxPublicIP", + "Microsoft.Network/networkSecurityGroups//jumpboxNSG" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigJumpbox", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/jumpboxPublicIP" + }, + "subnet": { + "id": "networkSettings" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/jumpboxNSG" + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "jumpboxVM", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//jumpboxNIC" + ], + "properties": { + "hardwareProfile": { + "vmSize": "vmSize" + }, + "osProfile": { + "computerName": "machineSettingsjumpbox", + "adminUsername": "machineSettings", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "jumpboxVM_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/jumpboxNIC" + } + ] + } + } + } + ], + "outputs": {}, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT967 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT967 new file mode 100644 index 0000000..8a3366b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT967 @@ -0,0 +1,195 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/node-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962903175, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/node-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT967", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.compute/virtualmachines/extensions" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT967", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "machineSettings": { + "type": "object", + "metadata": { + "Description": "Machine settings object" + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "Description": "Administrator password used when provisioning virtual machines" + }, + "value": "GEN-SSH-PUB-KEY" + }, + "authenticationType": { + "type": "string" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "redisVersion": { + "value": "3.0.0" + }, + "redisClusterName": { + "value": "redis-arm-cluster" + }, + "jumpbox": { + "value": "Enabled" + }, + "tshirtSize": { + "value": "Small" + } + }, + "variables": { + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/machineSettings/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/networkInterfaces", + "name": "nicMembermachineSettings", + "apiVersion": "2020-11-01", + "location": "location", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Static", + "privateIPAddress": "networkSettingsmachineSettings", + "subnet": { + "id": "networkSettings" + } + } + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "name": "vmMembermachineSettings", + "apiVersion": "2017-03-30", + "location": "location", + "dependsOn": [ + "Microsoft.Network/networkInterfaces//nicMembermachineSettings" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/commonSettings" + }, + "hardwareProfile": { + "vmSize": "machineSettings" + }, + "osProfile": { + "computerName": "machineSettingsmembermachineSettings", + "adminUsername": "machineSettings", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": "machineSettings", + "osDisk": { + "name": "vmMembermachineSettings_OSDisk", + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/nicMembermachineSettings" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "vmMembermachineSettings/installscript", + "apiVersion": "2020-12-01", + "location": "location", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//vmMembermachineSettings" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": "machineSettings", + "commandToExecute": "machineSettings" + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT968 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT968 new file mode 100644 index 0000000..a729146 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT968 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/shared-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "timestamp": 1642962903184, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-high-availability/shared-resources.json", + "/quickstarts/microsoft.cache/redis-high-availability/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT968", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT968", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "commonSettings": { + "type": "object", + "metadata": { + "Description": "Common settings object" + } + }, + "networkSettings": { + "type": "object", + "metadata": { + "Description": "Network settings object" + } + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPasswordOrKey": { + "value": "GEN-SSH-PUB-KEY" + }, + "virtualNetworkName": { + "value": "GEN-VNET-NAME" + }, + "subnetName": { + "value": "GEN-VNET-SUBNET1-NAME" + }, + "addressPrefix": { + "value": "10.0.0.0/16" + }, + "subnetPrefix": { + "value": "10.0.0.0/24" + }, + "nodeAddressPrefix": { + "value": "10.0.0.1" + }, + "redisVersion": { + "value": "3.0.0" + }, + "redisClusterName": { + "value": "redis-arm-cluster" + }, + "jumpbox": { + "value": "Enabled" + }, + "tshirtSize": { + "value": "Small" + } + }, + "resources": [ + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/availabilitySets", + "name": "commonSettings", + "location": "location", + "sku": { + "name": "Aligned" + }, + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "networkSettings", + "location": "location", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "networkSettings" + ] + }, + "subnets": [ + { + "name": "networkSettings", + "properties": { + "addressPrefix": "networkSettings" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT969 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT969 new file mode 100644 index 0000000..60d1af1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT969 @@ -0,0 +1,103 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903192, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT969", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT969", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat('cached',uniqueString(resourceGroup().id))]", + "storageAccountName2": "[concat('diags',uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "comments": "Premium Storage account used as Redis Backup storage", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Premium_LRS" + }, + "kind": "Storage", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": false + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "comments": "Storage account used for storing diagnostic logs", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName2')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + } + ], + "outputs": { + "diagnosticsStorageAccountId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "storageAccountResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT97 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT97 new file mode 100644 index 0000000..cd51d97 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT97 @@ -0,0 +1,832 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/azuredeploy.json", + "/application-workloads/cloudera/cloudera-tableau/azuredeploy.parameters.json" + ], + "timestamp": 1642962886078, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudera/cloudera-tableau/azuredeploy.json", + "/application-workloads/cloudera/cloudera-tableau/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT97", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT97", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.1", + "parameters": { + "adminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "Admin user name for the VMs" + }, + "value": "GEN-UNIQUE" + }, + "scriptsUri": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau", + "metadata": { + "descritption": "The location of the templates and resources" + }, + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the VMs (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "cmUsername": { + "type": "string", + "defaultValue": "cmadmin", + "metadata": { + "description": "User name for the Cloudera Manager" + }, + "value": "cmadmin" + }, + "cmPassword": { + "type": "securestring", + "metadata": { + "description": "password for the Cloudera Manager (A mix of upper and lower-case characters, digits and symbols)" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountPrefix": { + "type": "string", + "metadata": { + "description": "Unique namespace for the Storage Account where the VM disks will be placed (alphahumeric characters only)" + }, + "value": "GEN-UNIQUE" + }, + "dnsNamePrefix": { + "type": "string", + "metadata": { + "description": "Unique public DNS name where the VMs will be exposed" + }, + "value": "GEN-UNIQUE-10" + }, + "masterStorageAccountType": { + "type": "string", + "defaultValue": "Premium_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for master nodes (defaults to Premium_LRS)" + }, + "value": "Premium_LRS" + }, + "workerStorageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "metadata": { + "description": "The type of the Storage Account to be created for worker nodes (defaults to Standard_LRS)" + }, + "value": "Standard_LRS" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "clouderavnet", + "metadata": { + "description": "The name of the virtual network provisioned for the deployment" + }, + "value": "cltabVNet" + }, + "vnetNewOrExisting": { + "type": "string", + "defaultValue": "new", + "allowedValues": [ + "new", + "existing" + ], + "metadata": { + "description": "Indicator for new or exiting Virtual Network" + }, + "value": "new" + }, + "virtualNetworkRGName": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Resource Group Name for Vnet. For new VNet leave it empty, otherwise type in existing resource group name" + }, + "value": "" + }, + "addressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Virtual Network address CIDR" + }, + "value": "10.0.0.0/16" + }, + "subnetName": { + "type": "string", + "defaultValue": "clouderasubnet", + "metadata": { + "description": "Subnet name for the virtual network where resources will be provisioned" + }, + "value": "clouderasubnet" + }, + "subnetPrefix": { + "type": "string", + "defaultValue": "10.0.2.0/24", + "metadata": { + "description": "CIDR for the subnet where VMs will be placed" + }, + "value": "10.0.2.0/24" + }, + "subnet1Name": { + "type": "string", + "defaultValue": "tableausubnet", + "metadata": { + "description": "Subnet name for the virtual network where resources will be provisioned" + }, + "value": "tableausubnet" + }, + "subnet1Prefix": { + "type": "string", + "defaultValue": "10.0.1.0/24", + "metadata": { + "description": "CIDR for the subnet where VMs will be placed" + }, + "value": "10.0.1.0/24" + }, + "masterNodeIPAddress": { + "type": "string", + "defaultValue": "10.0.2.4", + "metadata": { + "description": "IP address for the first master" + }, + "value": "10.0.2.4" + }, + "tableauIPAddress": { + "type": "string", + "defaultValue": "10.0.1.4", + "metadata": { + "description": "IP address for the Tableau server" + }, + "value": "10.0.1.4" + }, + "dataNodeIPOffSetFromMaster": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "IP address from the master node, for example if the first master is 10.1.1.1, then the first dataNode would be 10.1.1.11" + }, + "value": 5 + }, + "tshirtSize": { + "type": "string", + "defaultValue": "Eval", + "allowedValues": [ + "Eval", + "Prod" + ], + "metadata": { + "description": "T-shirt size of the Cloudera cluster (Eval, Prod)" + }, + "value": "Eval" + }, + "numberOfDataNodes": { + "type": "int", + "defaultValue": 3, + "metadata": { + "description": "Number of data nodes for Prod (defaults to 3)" + }, + "value": 3 + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D16s_v3", + "metadata": { + "description": "The size of the VMs deployed in the cluster (defaults to Standard_DS14)" + }, + "value": "Standard_D16s_v3" + }, + "company": { + "type": "string", + "defaultValue": "Company", + "metadata": { + "description": "Your Company" + }, + "value": "Company" + }, + "emailAddress": { + "type": "string", + "defaultValue": "email@yourcompany.com", + "metadata": { + "description": "your email" + }, + "value": "someon@somewhere.com" + }, + "businessPhone": { + "type": "string", + "defaultValue": "123456789", + "metadata": { + "description": "your business phone number" + }, + "value": "55555555" + }, + "firstName": { + "type": "string", + "defaultValue": "FirstName", + "metadata": { + "description": "Your FirstName" + }, + "value": "someone" + }, + "lastName": { + "type": "string", + "defaultValue": "LastName", + "metadata": { + "description": "Your LastName" + }, + "value": "Somewhere" + }, + "jobRole": { + "type": "string", + "defaultValue": "Administrator", + "metadata": { + "description": "Job Role" + }, + "allowedValues": [ + "Administrator", + "Analyst (Industry/Finance)", + "Analyst (Technical)", + "Architect", + "C level", + "Consultant", + "Developer", + "Director", + "Engineer", + "Individual contributor", + "Manager", + "Partner", + "Student", + "VP" + ], + "value": "Administrator" + }, + "jobFunction": { + "type": "string", + "defaultValue": "Analytics / Business Intelligence", + "metadata": { + "description": "Job Function" + }, + "allowedValues": [ + "Analytics / Business Intelligence", + "Big Data / Architecture", + "Data Warehouse / Management", + "Data Science", + "Database", + "ETL / ELT", + "Infrastructure", + "IT", + "Marketing / Sales", + "Networking", + "Manager", + "Security / Compliance", + "Storage" + ], + "value": "Infrastructure" + } + }, + "variables": { + "templateAPIVersion": "2015-11-01", + "resourceAPIVersion": "2015-06-15", + "installCDH": "True", + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.2.0/24", + "subnet1Prefix": "10.0.1.0/24", + "scriptsUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau", + "share-resourcesUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau/nested/shared-resources-new-vnet.json", + "data-nodeUri": "[concat(variables('scriptsUri'), '/nested/data-node-', toLower(subString(parameters('vmSize'), 9, 4)), '.json')]", + "sa": "10.0.2.4", + "tableau": "10.0.1.4", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterStorageAccount": { + "prefix": "GEN-UNIQUE", + "type": "Premium_LRS" + }, + "workerStorageAccount": { + "prefix": "GEN-UNIQUE", + "type": "Standard_LRS" + }, + "clusterTshirtSizeEval": { + "masterNodeCount": 1, + "dataNodeCount": 3, + "highAvailability": "false" + }, + "clusterTshirtSizeProd": { + "masterNodeCount": 3, + "dataNodeCount": 3, + "highAvailability": "true" + }, + "clusterSpec": "concat(clusterTshirtSize, parameters(tshirtSize))", + "vmSpec": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS", + "tableauASName": "GEN-UNIQUE-10-tsAS" + }, + "networkSpec": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.2.0/24", + "subnet1Prefix": "10.0.1.0/24", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.0.2.4", + "tableauIPAddress": "10.0.1.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "cltabVNet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet", + "virtualNetworkSubnet1Name": "tableausubnet" + }, + "newVNetId": "Microsoft.Network/virtualNetworks/cltabVNet", + "existingVNetId": "parameters('virtualNetworkRGName')/Microsoft.Network/virtualNetworks/cltabVNet", + "VNetId": "concat(parameters(vnetNewOrExisting),VNetId)", + "clouderaTags": { + "type": "object", + "provider": "B33D5D26-DD73-41FC-994A-BD709E8C8488" + }, + "tableauTags": { + "type": "object", + "provider": "C417510C-A4EC-4E09-8BA4-86DA72BC2F5E" + }, + "quickstartTags": { + "type": "object", + "name": "cloudera-tableau" + } + }, + "resources": [ + { + "name": "shared-resources", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Resources that are shared within the infrastructure environment", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau/nested/shared-resources-new-vnet.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "networkSpec": { + "value": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.2.0/24", + "subnet1Prefix": "10.0.1.0/24", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.0.2.4", + "tableauIPAddress": "10.0.1.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "cltabVNet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet", + "virtualNetworkSubnet1Name": "tableausubnet" + } + }, + "tableauASName": { + "value": "(vmSpec).tableauASName" + }, + "masterNodeASName": { + "value": "(vmSpec).masterNodeASName" + }, + "dataNodeASName": { + "value": "(vmSpec).dataNodeASName" + }, + "clouderaTags": { + "value": { + "type": "object", + "provider": "B33D5D26-DD73-41FC-994A-BD709E8C8488" + } + }, + "tableauTags": { + "value": { + "type": "object", + "provider": "C417510C-A4EC-4E09-8BA4-86DA72BC2F5E" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "cloudera-tableau" + } + } + } + } + }, + { + "name": "master-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Cloudera master node that manages the cluster nodes", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau/nested/master-node.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau" + }, + "storageAccount": { + "value": { + "prefix": "GEN-UNIQUE", + "type": "Premium_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).masterNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS", + "tableauASName": "GEN-UNIQUE-10-tsAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.2.0/24", + "subnet1Prefix": "10.0.1.0/24", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.0.2.4", + "tableauIPAddress": "10.0.1.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "cltabVNet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet", + "virtualNetworkSubnet1Name": "tableausubnet" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "clouderaTags": { + "value": { + "type": "object", + "provider": "B33D5D26-DD73-41FC-994A-BD709E8C8488" + } + }, + "tableauTags": { + "value": { + "type": "object", + "provider": "C417510C-A4EC-4E09-8BA4-86DA72BC2F5E" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "cloudera-tableau" + } + } + } + } + }, + { + "name": "data-node", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Cloudera data nodes or cluster members", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('data-nodeUri')]", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau" + }, + "storageAccount": { + "value": { + "prefix": "GEN-UNIQUE", + "type": "Standard_LRS" + } + }, + "vmCount": { + "value": "(clusterSpec).dataNodeCount" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS", + "tableauASName": "GEN-UNIQUE-10-tsAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.2.0/24", + "subnet1Prefix": "10.0.1.0/24", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.0.2.4", + "tableauIPAddress": "10.0.1.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "cltabVNet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet", + "virtualNetworkSubnet1Name": "tableausubnet" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "clouderaTags": { + "value": { + "type": "object", + "provider": "B33D5D26-DD73-41FC-994A-BD709E8C8488" + } + }, + "tableauTags": { + "value": { + "type": "object", + "provider": "C417510C-A4EC-4E09-8BA4-86DA72BC2F5E" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "cloudera-tableau" + } + } + } + } + }, + { + "name": "tableau-server", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Tableau Server offering from the Azure market place", + "dependsOn": [ + "Microsoft.Resources/deployments/shared-resources" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau/nested/tableau-server.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "vnetID": { + "value": "concat(parameters(vnetNewOrExisting),VNetId)" + }, + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau" + }, + "storageAccount": { + "value": { + "prefix": "GEN-UNIQUE", + "type": "Premium_LRS" + } + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS", + "tableauASName": "GEN-UNIQUE-10-tsAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.2.0/24", + "subnet1Prefix": "10.0.1.0/24", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.0.2.4", + "tableauIPAddress": "10.0.1.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "cltabVNet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet", + "virtualNetworkSubnet1Name": "tableausubnet" + } + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "clouderaTags": { + "value": { + "type": "object", + "provider": "B33D5D26-DD73-41FC-994A-BD709E8C8488" + } + }, + "tableauTags": { + "value": { + "type": "object", + "provider": "C417510C-A4EC-4E09-8BA4-86DA72BC2F5E" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "cloudera-tableau" + } + } + } + } + }, + { + "name": "setup-cloudera", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-11-01", + "comments": "Scripts and configuration settings that intialize the Cloudera cluster environment", + "dependsOn": [ + "Microsoft.Resources/deployments/data-node", + "Microsoft.Resources/deployments/master-node" + ], + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau/nested/setup-cloudera.json", + "contentVersion": "1.0.0.1" + }, + "parameters": { + "resourceAPIVersion": { + "value": "2015-06-15" + }, + "dnsNamePrefix": { + "value": "GEN-UNIQUE-10" + }, + "scriptsUri": { + "value": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-tableau" + }, + "vmSpec": { + "value": { + "vmSize": "Standard_D16s_v3", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "masterNodeASName": "GEN-UNIQUE-10-mnAS", + "dataNodeASName": "GEN-UNIQUE-10-dnAS", + "tableauASName": "GEN-UNIQUE-10-tsAS" + } + }, + "networkSpec": { + "value": { + "addressPrefix": "10.0.0.0/16", + "subnetPrefix": "10.0.2.0/24", + "subnet1Prefix": "10.0.1.0/24", + "ipOctet01": "[concat(split(variables('sa'), '.')[0], '.', split(variables('sa'), '.')[1], '.')]", + "ipOctet2": "[int(split(variables('sa'), '.')[2])]", + "ipOctet3": "[int(split(variables('sa'), '.')[3])]", + "datanodeIpOctet3": "[add(int(split(variables('sa'), '.')[3]), parameters('dataNodeIPOffSetFromMaster'))]", + "masterIP": "10.0.2.4", + "tableauIPAddress": "10.0.1.4", + "workerIP": "[concat(variables('ipOctet01'), add(variables('ipOctet2'), div(variables('datanodeIpOctet3'), 255)), '.', mod(variables('datanodeIpOctet3'), 255))]", + "virtualNetworkName": "cltabVNet", + "virtualNetworkRGName": "", + "vnetNewOrExisting": "new", + "virtualNetworkSubnetName": "clouderasubnet", + "virtualNetworkSubnet1Name": "tableausubnet" + } + }, + "clusterSpec": { + "value": "concat(clusterTshirtSize, parameters(tshirtSize))" + }, + "fqdn": { + "value": "[reference('master-node').outputs.fqdn.value]" + }, + "cmUsername": { + "value": "cmadmin" + }, + "cmPassword": { + "value": "GEN-PASSWORD" + }, + "company": { + "value": "Company" + }, + "emailAddress": { + "value": "someon@somewhere.com" + }, + "businessPhone": { + "value": "55555555" + }, + "firstName": { + "value": "someone" + }, + "lastName": { + "value": "Somewhere" + }, + "jobRole": { + "value": "Administrator" + }, + "jobFunction": { + "value": "Infrastructure" + }, + "installCDH": { + "value": "True" + }, + "clouderaTags": { + "value": { + "type": "object", + "provider": "B33D5D26-DD73-41FC-994A-BD709E8C8488" + } + }, + "tableauTags": { + "value": { + "type": "object", + "provider": "C417510C-A4EC-4E09-8BA4-86DA72BC2F5E" + } + }, + "quickstartTags": { + "value": { + "type": "object", + "name": "cloudera-tableau" + } + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT970 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT970 new file mode 100644 index 0000000..d36982c --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT970 @@ -0,0 +1,159 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/azuredeploy.parameters.json" + ], + "timestamp": 1642962903199, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-cluster-diagnostics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT970", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT970", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "13872689946402645874" + } + }, + "parameters": { + "redisCacheName": { + "type": "string", + "metadata": { + "description": "Specify the name of the Azure Redis Cache to create." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location of all resources" + } + }, + "redisCacheSKU": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Specify the pricing tier of the new Azure Redis Cache." + } + }, + "redisCacheFamily": { + "type": "string", + "defaultValue": "P", + "allowedValues": [ + "C", + "P" + ], + "metadata": { + "description": "Specify the family for the sku. C = Basic/Standard, P = Premium." + } + }, + "redisCacheCapacity": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "metadata": { + "description": "Specify the size of the new Azure Redis Cache instance. Valid values: for C (Basic/Standard) family (0, 1, 2, 3, 4, 5, 6), for P (Premium) family (1, 2, 3, 4)" + } + }, + "enableNonSslPort": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Set to true to allow access to redis on port 6379, without SSL tunneling (less secure)." + } + }, + "diagnosticsEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specify a boolean value that indicates whether diagnostics should be saved to the specified storage account." + } + }, + "existingDiagnosticsStorageAccountId": { + "type": "string", + "metadata": { + "description": "Specify an existing storage account for diagnostics. Must be in the same subscription." + }, + "value": "GET-PREREQ-diagnosticsStorageAccountId" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cache/redis", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "enableNonSslPort": false, + "minimumTlsVersion": "1.2", + "sku": { + "capacity": 1, + "family": "P", + "name": "Premium" + } + } + }, + { + "type": "microsoft.insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "scope": "[format('Microsoft.Cache/redis/{0}', parameters('redisCacheName'))]", + "name": "GEN-UNIQUE", + "properties": { + "storageAccountId": "GET-PREREQ-diagnosticsStorageAccountId", + "metrics": [ + { + "timeGrain": "AllMetrics", + "enabled": true, + "retentionPolicy": { + "days": 90, + "enabled": true + } + } + ] + }, + "dependsOn": [ + "Microsoft.Cache/redis/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT971 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT971 new file mode 100644 index 0000000..e8ef946 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT971 @@ -0,0 +1,103 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-persistence/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-persistence/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903208, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-persistence/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-persistence/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT971", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT971", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "variables": { + "storageAccountName": "[concat('cached',uniqueString(resourceGroup().id))]", + "storageAccountName2": "[concat('diags',uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "comments": "Premium Storage account used as Redis Backup storage", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Premium_LRS" + }, + "kind": "Storage", + "properties": { + "encryption": { + "services": { + "blob": { + "enabled": false + } + }, + "keySource": "Microsoft.Storage" + } + } + }, + { + "comments": "Storage account used for storing diagnostic logs", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName2')]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "Storage Account" + }, + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + } + ], + "outputs": { + "diagnosticsStorageAccountId": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" + }, + "storageAccountName": { + "type": "string", + "value": "[variables('storageAccountName')]" + }, + "storageAccountResourceGroup": { + "type": "string", + "value": "[resourceGroup().name]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT972 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT972 new file mode 100644 index 0000000..e1b0d4a --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT972 @@ -0,0 +1,172 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-persistence/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-persistence/azuredeploy.parameters.json" + ], + "timestamp": 1642962903216, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-persistence/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-persistence/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT972", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis", + "microsoft.insights/diagnosticsettings" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT972", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.412.5873", + "templateHash": "13947652606587246763" + } + }, + "parameters": { + "redisCacheName": { + "type": "string", + "metadata": { + "description": "Specify the name of the Azure Redis Cache to create." + }, + "value": "GEN-UNIQUE" + }, + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of the storage account." + }, + "value": "GET-PREREQ-storageAccountName" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the Redis Cache. For best performance, use the same location as the app to be used with the cache." + } + }, + "redisCacheSKU": { + "type": "string", + "defaultValue": "Premium", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Specify the pricing tier of the new Azure Redis Cache." + } + }, + "redisCacheFamily": { + "type": "string", + "defaultValue": "P", + "allowedValues": [ + "C", + "P" + ], + "metadata": { + "description": "Specify the family for the sku. C = Basic/Standard, P = Premium" + } + }, + "redisCacheCapacity": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "metadata": { + "description": "Specify the size of the new Azure Redis Cache instance. Valid values: for C (Basic/Standard) family (0, 1, 2, 3, 4, 5, 6), for P (Premium) family (1, 2, 3, 4)" + } + }, + "enableNonSslPort": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Specify a boolean value that indicates whether to allow access via non-SSL ports." + } + }, + "diagnosticsEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Specify a boolean value that indicates whether diagnostics should be saved to the specified storage account." + } + }, + "existingDiagnosticsStorageAccountId": { + "type": "string", + "metadata": { + "description": "Specify an existing storage account for diagnostics." + }, + "value": "GET-PREREQ-diagnosticsStorageAccountId" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cache/redis", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "enableNonSslPort": false, + "minimumTlsVersion": "1.2", + "sku": { + "capacity": 1, + "family": "P", + "name": "Premium" + }, + "redisConfiguration": { + "rdb-backup-enabled": "true", + "rdb-backup-frequency": "60", + "rdb-backup-max-snapshot-count": "1", + "rdb-storage-connection-string": "[format('DefaultEndpointsProtocol=https;BlobEndpoint=https://{0}.blob.{1};AccountName={2};AccountKey={3}', parameters('storageAccountName'), environment().suffixes.storage, parameters('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-04-01').keys[0].value)]" + } + } + }, + { + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2021-05-01-preview", + "scope": "[format('Microsoft.Cache/redis/{0}', parameters('redisCacheName'))]", + "name": "GEN-UNIQUE", + "properties": { + "storageAccountId": "GET-PREREQ-diagnosticsStorageAccountId", + "metrics": [ + { + "timeGrain": "AllMetrics", + "enabled": true, + "retentionPolicy": { + "days": 90, + "enabled": true + } + } + ] + }, + "dependsOn": [ + "Microsoft.Cache/redis/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT973 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT973 new file mode 100644 index 0000000..289d470 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT973 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-vnet/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962903223, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-premium-vnet/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-premium-vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT973", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT973", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "7605655404309623089" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the existing Virtual Network and for the new Redis Cache." + } + }, + "redisCacheName": { + "type": "string", + "metadata": { + "description": "The name of the Azure Redis Cache to create." + }, + "value": "GEN-UNIQUE" + }, + "redisCacheCapacity": { + "type": "int", + "defaultValue": 1, + "allowedValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "metadata": { + "description": "The size of the new Azure Redis Cache instance. Valid capacity combinations are (P1..P5)." + } + }, + "existingVirtualNetworkResourceGroupName": { + "type": "string", + "defaultValue": "[resourceGroup().name]", + "metadata": { + "description": "The resource group of the existing Virtual Network." + }, + "value": "GEN-VNET-RESOURCEGROUP-NAME" + }, + "existingVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the existing Virtual Network." + }, + "value": "GEN-VNET-NAME" + }, + "existingSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the existing subnet." + }, + "value": "GEN-VNET-SUBNET1-NAME" + }, + "enableNonSslPort": { + "type": "bool", + "defaultValue": false, + "metadata": { + "description": "Set to true to allow access to redis on port 6379, without SSL tunneling (less secure)." + } + }, + "minimumTlsVersion": { + "type": "string", + "defaultValue": "1.2", + "allowedValues": [ + "1.0", + "1.1", + "1.2" + ], + "metadata": { + "description": "The minimum allowed TLS version." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cache/redis", + "apiVersion": "2020-12-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "properties": { + "enableNonSslPort": false, + "minimumTlsVersion": "1.2", + "sku": { + "capacity": 1, + "family": "P", + "name": "Premium" + }, + "subnetId": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('existingVirtualNetworkResourceGroupName')), 'Microsoft.Network/virtualNetworks/subnets', split(format('{0}/{1}', parameters('existingVirtualNetworkName'), parameters('existingSubnetName')), '/')[0], split(format('{0}/{1}', parameters('existingVirtualNetworkName'), parameters('existingSubnetName')), '/')[1])]" + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT974 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT974 new file mode 100644 index 0000000..631400d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT974 @@ -0,0 +1,407 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.parameters.json" + ], + "timestamp": 1642962903228, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT974", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT974", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the primary virtual network." + }, + "value": "westus" + }, + "primaryVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the new primary virtual network." + }, + "value": "GEN-UNIQUE" + }, + "primaryCacheSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the new primary cache subnet." + }, + "value": "GEN-UNIQUE" + }, + "primaryVirtualNetworkAddressSpace": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The address space of the new primary virtual network." + } + }, + "primaryCacheSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The address prefix of the new primary cache subnet." + } + }, + "primaryGatewaySubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.255.224/27", + "metadata": { + "description": "The address prefix of the new primary gateway subnet. Must be at least /29" + } + }, + "primaryGatewayPublicIPAddressName": { + "type": "string", + "metadata": { + "description": "The name of the new primary gateway public IP address." + }, + "value": "GEN-UNIQUE" + }, + "primaryGatewayName": { + "type": "string", + "metadata": { + "description": "The name of the new primary gateway." + }, + "value": "GEN-UNIQUE" + }, + "primaryGatewayConnectionName": { + "type": "string", + "metadata": { + "description": "The name of the new primary gateway connection." + }, + "value": "GEN-UNIQUE" + }, + "secondaryLocation": { + "type": "string", + "metadata": { + "description": "The location of the secondary virtual network." + }, + "value": "eastus" + }, + "secondaryVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary virtual network." + }, + "value": "GEN-UNIQUE" + }, + "secondaryCacheSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary cache subnet." + }, + "value": "GEN-UNIQUE" + }, + "secondaryVirtualNetworkAddressSpace": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "The address space of the new secondary virtual network." + } + }, + "secondaryCacheSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "The address prefix of the new secondary cache subnet." + } + }, + "secondaryGatewaySubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.255.224/27", + "metadata": { + "description": "The address prefix of the new secondary gateway subnet. Must be at least /29" + } + }, + "secondaryGatewayPublicIPAddressName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary gateway public IP address." + }, + "value": "GEN-UNIQUE" + }, + "secondaryGatewayName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary gateway." + }, + "value": "GEN-UNIQUE" + }, + "secondaryGatewayConnectionName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary gateway connection." + }, + "value": "GEN-UNIQUE" + }, + "gatewaySharedKey": { + "type": "securestring", + "metadata": { + "description": "A mixture of letters and numbers. The shared key (PSK) is used to establish encryption for the virtual network gateway connection." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "gatewaySubnetName": "GatewaySubnet" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "westus", + "comments": "Create a virtual network in the primary location.", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.0.255.224/27" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "eastus", + "comments": "Create a virtual network in the secondary location.", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE", + "properties": { + "addressPrefix": "10.1.0.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.1.255.224/27" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "westus", + "comments": "Create a public IP address for the primary virtual network gateway.", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "eastus", + "comments": "Create a public IP address for the secondary virtual network gateway.", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "westus", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "comments": "Create a virtual network gateway for the primary virtual network.", + "properties": { + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + } + } + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "eastus", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "comments": "Create a virtual network gateway for the secondary virtual network.", + "properties": { + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + } + } + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1" + } + } + }, + { + "type": "Microsoft.Network/connections", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "westus", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "comments": "Create a virtual network gateway connection from the primary gateway to the secondary gateway.", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE" + }, + "connectionType": "Vnet2Vnet", + "connectionProtocol": "IKEv2", + "sharedKey": "GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Network/connections", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "eastus", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "comments": "Create a virtual network gateway connection from the secondary gateway to the primary gateway.", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE" + }, + "connectionType": "Vnet2Vnet", + "connectionProtocol": "IKEv2", + "sharedKey": "GEN-UNIQUE" + } + } + ], + "outputs": { + "existingPrimaryVirtualNetworkLocation": { + "type": "string", + "value": "[parameters('location')]" + }, + "existingPrimaryVirtualNetworkResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingPrimaryVirtualNetworkName": { + "type": "string", + "value": "[parameters('primaryVirtualNetworkName')]" + }, + "existingPrimaryCacheSubnetName": { + "type": "string", + "value": "[parameters('primaryCacheSubnetName')]" + }, + "existingSecondaryVirtualNetworkLocation": { + "type": "string", + "value": "[parameters('secondaryLocation')]" + }, + "existingSecondaryVirtualNetworkResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingSecondaryVirtualNetworkName": { + "type": "string", + "value": "[parameters('secondaryVirtualNetworkName')]" + }, + "existingSecondaryCacheSubnetName": { + "type": "string", + "value": "[parameters('secondaryCacheSubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT975 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT975 new file mode 100644 index 0000000..43f17e4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT975 @@ -0,0 +1,407 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "timestamp": 1642962903236, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/prereqs/prereq.azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT975", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/connections", + "microsoft.network/virtualnetworkgateways" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT975", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the primary virtual network." + }, + "value": "usgovvirginia" + }, + "primaryVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the new primary virtual network." + }, + "value": "GEN-UNIQUE" + }, + "primaryCacheSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the new primary cache subnet." + }, + "value": "GEN-UNIQUE" + }, + "primaryVirtualNetworkAddressSpace": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "The address space of the new primary virtual network." + } + }, + "primaryCacheSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "The address prefix of the new primary cache subnet." + } + }, + "primaryGatewaySubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.255.224/27", + "metadata": { + "description": "The address prefix of the new primary gateway subnet. Must be at least /29" + } + }, + "primaryGatewayPublicIPAddressName": { + "type": "string", + "metadata": { + "description": "The name of the new primary gateway public IP address." + }, + "value": "GEN-UNIQUE" + }, + "primaryGatewayName": { + "type": "string", + "metadata": { + "description": "The name of the new primary gateway." + }, + "value": "GEN-UNIQUE" + }, + "primaryGatewayConnectionName": { + "type": "string", + "metadata": { + "description": "The name of the new primary gateway connection." + }, + "value": "GEN-UNIQUE" + }, + "secondaryLocation": { + "type": "string", + "metadata": { + "description": "The location of the secondary virtual network." + }, + "value": "usgovtexas" + }, + "secondaryVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary virtual network." + }, + "value": "GEN-UNIQUE" + }, + "secondaryCacheSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary cache subnet." + }, + "value": "GEN-UNIQUE" + }, + "secondaryVirtualNetworkAddressSpace": { + "type": "string", + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "The address space of the new secondary virtual network." + } + }, + "secondaryCacheSubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.0.0/24", + "metadata": { + "description": "The address prefix of the new secondary cache subnet." + } + }, + "secondaryGatewaySubnetAddressPrefix": { + "type": "string", + "defaultValue": "10.1.255.224/27", + "metadata": { + "description": "The address prefix of the new secondary gateway subnet. Must be at least /29" + } + }, + "secondaryGatewayPublicIPAddressName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary gateway public IP address." + }, + "value": "GEN-UNIQUE" + }, + "secondaryGatewayName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary gateway." + }, + "value": "GEN-UNIQUE" + }, + "secondaryGatewayConnectionName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary gateway connection." + }, + "value": "GEN-UNIQUE" + }, + "gatewaySharedKey": { + "type": "securestring", + "metadata": { + "description": "A mixture of letters and numbers. The shared key (PSK) is used to establish encryption for the virtual network gateway connection." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "gatewaySubnetName": "GatewaySubnet" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-08-01", + "name": "GEN-UNIQUE", + "location": "usgovvirginia", + "comments": "Create a virtual network in the primary location.", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.0.255.224/27" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "usgovtexas", + "comments": "Create a virtual network in the secondary location.", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.1.0.0/16" + ] + }, + "subnets": [ + { + "name": "GEN-UNIQUE", + "properties": { + "addressPrefix": "10.1.0.0/24" + } + }, + { + "name": "GatewaySubnet", + "properties": { + "addressPrefix": "10.1.255.224/27" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "usgovvirginia", + "comments": "Create a public IP address for the primary virtual network gateway.", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "usgovtexas", + "comments": "Create a public IP address for the secondary virtual network gateway.", + "sku": { + "name": "Basic" + }, + "properties": { + "publicIPAllocationMethod": "Dynamic", + "publicIPAddressVersion": "IPv4" + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "usgovvirginia", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "comments": "Create a virtual network gateway for the primary virtual network.", + "properties": { + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + } + } + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1" + } + } + }, + { + "type": "Microsoft.Network/virtualNetworkGateways", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "usgovtexas", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "comments": "Create a virtual network gateway for the secondary virtual network.", + "properties": { + "ipConfigurations": [ + { + "name": "default", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/GEN-UNIQUE/GatewaySubnet" + }, + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/GEN-UNIQUE" + } + } + } + ], + "gatewayType": "Vpn", + "vpnType": "RouteBased", + "sku": { + "name": "VpnGw1", + "tier": "VpnGw1" + } + } + }, + { + "type": "Microsoft.Network/connections", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "usgovvirginia", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "comments": "Create a virtual network gateway connection from the primary gateway to the secondary gateway.", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE" + }, + "connectionType": "Vnet2Vnet", + "connectionProtocol": "IKEv2", + "sharedKey": "GEN-UNIQUE" + } + }, + { + "type": "Microsoft.Network/connections", + "apiVersion": "2018-08-01", + "name": "GEN-UNIQUE", + "location": "usgovtexas", + "dependsOn": [ + "GEN-UNIQUE", + "GEN-UNIQUE" + ], + "comments": "Create a virtual network gateway connection from the secondary gateway to the primary gateway.", + "properties": { + "virtualNetworkGateway1": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE" + }, + "virtualNetworkGateway2": { + "id": "Microsoft.Network/virtualNetworkGateways/GEN-UNIQUE" + }, + "connectionType": "Vnet2Vnet", + "connectionProtocol": "IKEv2", + "sharedKey": "GEN-UNIQUE" + } + } + ], + "outputs": { + "existingPrimaryVirtualNetworkLocation": { + "type": "string", + "value": "[parameters('location')]" + }, + "existingPrimaryVirtualNetworkResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingPrimaryVirtualNetworkName": { + "type": "string", + "value": "[parameters('primaryVirtualNetworkName')]" + }, + "existingPrimaryCacheSubnetName": { + "type": "string", + "value": "[parameters('primaryCacheSubnetName')]" + }, + "existingSecondaryVirtualNetworkLocation": { + "type": "string", + "value": "[parameters('secondaryLocation')]" + }, + "existingSecondaryVirtualNetworkResourceGroupName": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "existingSecondaryVirtualNetworkName": { + "type": "string", + "value": "[parameters('secondaryVirtualNetworkName')]" + }, + "existingSecondaryCacheSubnetName": { + "type": "string", + "value": "[parameters('secondaryCacheSubnetName')]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT976 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT976 new file mode 100644 index 0000000..5dabb95 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT976 @@ -0,0 +1,186 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/azuredeploy.parameters.json" + ], + "timestamp": 1642962903244, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/azuredeploy.json", + "/quickstarts/microsoft.cache/redis-vnet-geo-replication/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT976", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cache/redis/linkedservers", + "microsoft.cache/redis" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT976", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "The location of the existing primary virtual network and new primary cache." + }, + "value": "GET-PREREQ-existingPrimaryVirtualNetworkLocation" + }, + "existingPrimaryVirtualNetworkResourceGroupName": { + "type": "string", + "metadata": { + "description": "The name of the resource group of the existing primary virtual network." + }, + "value": "GET-PREREQ-existingPrimaryVirtualNetworkResourceGroupName" + }, + "existingPrimaryVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the existing primary virtual network." + }, + "value": "GET-PREREQ-existingPrimaryVirtualNetworkName" + }, + "existingPrimaryCacheSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the existing primary cache subnet." + }, + "value": "GET-PREREQ-existingPrimaryCacheSubnetName" + }, + "newPrimaryCacheName": { + "type": "string", + "metadata": { + "description": "The name of the new primary cache." + }, + "value": "GEN-UNIQUE" + }, + "secondaryLocation": { + "type": "string", + "metadata": { + "description": "The location of the existing secondary virtual network and new secondary cache." + }, + "value": "GET-PREREQ-existingSecondaryVirtualNetworkLocation" + }, + "existingSecondaryVirtualNetworkResourceGroupName": { + "type": "string", + "metadata": { + "description": "The name of the resource group of the existing secondary virtual network." + }, + "value": "GET-PREREQ-existingSecondaryVirtualNetworkResourceGroupName" + }, + "existingSecondaryVirtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name of the existing secondary virtual network." + }, + "value": "GET-PREREQ-existingSecondaryVirtualNetworkName" + }, + "existingSecondaryCacheSubnetName": { + "type": "string", + "metadata": { + "description": "The name of the existing secondary cache subnet." + }, + "value": "GET-PREREQ-existingSecondaryCacheSubnetName" + }, + "newSecondaryCacheName": { + "type": "string", + "metadata": { + "description": "The name of the new secondary cache." + }, + "value": "GEN-UNIQUE" + } + }, + "variables": { + "primarySubnetId": "GET-PREREQ-existingPrimaryVirtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingPrimaryVirtualNetworkName/GET-PREREQ-existingPrimaryCacheSubnetName", + "secondarySubnetId": "GET-PREREQ-existingSecondaryVirtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingSecondaryVirtualNetworkName/GET-PREREQ-existingSecondaryCacheSubnetName" + }, + "resources": [ + { + "type": "Microsoft.Cache/Redis", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "GET-PREREQ-existingPrimaryVirtualNetworkLocation", + "properties": { + "sku": { + "name": "Premium", + "family": "P", + "capacity": 1 + }, + "subnetId": "GET-PREREQ-existingPrimaryVirtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingPrimaryVirtualNetworkName/GET-PREREQ-existingPrimaryCacheSubnetName" + }, + "comments": "Create a Premium cache in the primary location in the primary virtual network." + }, + { + "type": "Microsoft.Cache/Redis", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE", + "location": "GET-PREREQ-existingSecondaryVirtualNetworkLocation", + "comments": "Create a Premium cache in the secondary location in the secondary virtual network.", + "properties": { + "sku": { + "name": "Premium", + "family": "P", + "capacity": 1 + }, + "subnetId": "GET-PREREQ-existingSecondaryVirtualNetworkResourceGroupName/Microsoft.Network/virtualNetworks/subnets/GET-PREREQ-existingSecondaryVirtualNetworkName/GET-PREREQ-existingSecondaryCacheSubnetName" + } + }, + { + "type": "Microsoft.Cache/Redis/linkedServers", + "apiVersion": "2020-06-01", + "name": "GEN-UNIQUE/GEN-UNIQUE", + "dependsOn": [ + "Microsoft.Cache/redis/GEN-UNIQUE", + "Microsoft.Cache/redis/GEN-UNIQUE" + ], + "comments": "Create a geo-replication link. This resource is created as a nested resource of the primary cache. Its name is fixed and cannot be changed. Its properties identifies the secondary cache and labels it as the secondary.", + "properties": { + "linkedRedisCacheId": "Microsoft.Cache/Redis/GEN-UNIQUE", + "linkedRedisCacheLocation": "GET-PREREQ-existingSecondaryVirtualNetworkLocation", + "serverRole": "Secondary" + } + } + ], + "outputs": { + "primaryLocation": { + "type": "string", + "value": "[parameters('location')]" + }, + "existingPrimaryCacheSubnetId": { + "type": "string", + "value": "[variables('primarySubnetId')]" + }, + "newPrimaryCacheId": { + "type": "string", + "value": "[resourceId('Microsoft.Cache/Redis', parameters('newPrimaryCacheName'))]" + }, + "secondaryLocation": { + "type": "string", + "value": "[parameters('secondaryLocation')]" + }, + "existingSecondaryCacheSubnetId": { + "type": "string", + "value": "[variables('secondarySubnetId')]" + }, + "newSecondaryCacheId": { + "type": "string", + "value": "[resourceId('Microsoft.Cache/Redis', parameters('newSecondaryCacheName'))]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT977 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT977 new file mode 100644 index 0000000..ee5ed57 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT977 @@ -0,0 +1,186 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-customize/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-customize/azuredeploy.parameters.json" + ], + "timestamp": 1642962903251, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-customize/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-customize/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT977", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT977", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "791031051301333646" + } + }, + "parameters": { + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile." + }, + "value": "GEN-UNIQUE" + }, + "sku": { + "type": "string", + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Verizon", + "Premium_Verizon", + "Custom_Verizon", + "Standard_Akamai", + "Standard_ChinaCdn", + "Standard_Microsoft", + "Premium_ChinaCdn", + "Standard_AzureFrontDoor", + "Premium_AzureFrontDoor", + "Standard_955BandWidth_ChinaCdn", + "Standard_AvgBandWidth_ChinaCdn", + "StandardPlus_ChinaCdn", + "StandardPlus_955BandWidth_ChinaCdn", + "StandardPlus_AvgBandWidth_ChinaCdn" + ], + "metadata": { + "description": "Pricing tier of the CDN Profile." + }, + "value": "Standard_Microsoft" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint." + }, + "value": "GEN-UNIQUE" + }, + "isHttpAllowed": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Whether the HTTP traffic is allowed." + }, + "value": true + }, + "isHttpsAllowed": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Whether the HTTPS traffic is allowed." + }, + "value": true + }, + "queryStringCachingBehavior": { + "type": "string", + "defaultValue": "IgnoreQueryString", + "allowedValues": [ + "IgnoreQueryString", + "BypassCaching", + "UseQueryString" + ], + "metadata": { + "description": "Query string caching behavior." + }, + "value": "IgnoreQueryString" + }, + "contentTypesToCompress": { + "type": "array", + "defaultValue": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "metadata": { + "description": "Content type that is compressed." + }, + "value": [] + }, + "isCompressionEnabled": { + "type": "bool", + "defaultValue": true, + "metadata": { + "description": "Whether the compression is enabled" + }, + "value": false + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "location": { + "type": "string", + "defaultValue": "global", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "global", + "properties": {}, + "sku": { + "name": "Standard_Microsoft" + } + }, + { + "type": "Microsoft.Cdn/profiles/endpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', parameters('profileName'), parameters('endpointName'))]", + "location": "global", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [], + "isCompressionEnabled": false, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT978 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT978 new file mode 100644 index 0000000..facf9be --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT978 @@ -0,0 +1,165 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-custom-origin/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-custom-origin/azuredeploy.parameters.json" + ], + "timestamp": 1642962903256, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-custom-origin/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-custom-origin/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT978", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT978", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "5054081787892083176" + } + }, + "parameters": { + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile" + }, + "value": "GEN-UNIQUE" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint, must be unique" + }, + "value": "GEN-UNIQUE" + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "CDNSku": { + "type": "string", + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Akamai", + "Standard_Microsoft", + "Standard_Verizon", + "Premium_Verizon" + ], + "metadata": { + "description": "CDN SKU names" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-04-15", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_Microsoft" + } + }, + { + "type": "Microsoft.Cdn/profiles/endpoints", + "apiVersion": "2020-04-15", + "name": "[format('{0}/{1}', parameters('profileName'), parameters('endpointName'))]", + "location": "[resourceGroup().location]", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "application/eot", + "application/font", + "application/font-sfnt", + "application/javascript", + "application/json", + "application/opentype", + "application/otf", + "application/pkcs7-mime", + "application/truetype", + "application/ttf", + "application/vnd.ms-fontobject", + "application/xhtml+xml", + "application/xml", + "application/xml+rss", + "application/x-font-opentype", + "application/x-font-truetype", + "application/x-font-ttf", + "application/x-httpd-cgi", + "application/x-javascript", + "application/x-mpegurl", + "application/x-opentype", + "application/x-otf", + "application/x-perl", + "application/x-ttf", + "font/eot", + "font/ttf", + "font/otf", + "font/opentype", + "image/svg+xml", + "text/css", + "text/csv", + "text/html", + "text/javascript", + "text/js", + "text/plain", + "text/richtext", + "text/tab-separated-values", + "text/xml", + "text/x-script", + "text/x-component", + "text/x-java-source" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT979 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT979 new file mode 100644 index 0000000..136b5a4 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT979 @@ -0,0 +1,161 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-cacheoverride/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-cacheoverride/azuredeploy.parameters.json" + ], + "timestamp": 1642962903265, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-cacheoverride/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-cacheoverride/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT979", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT979", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "9572823252393997430" + } + }, + "parameters": { + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile" + }, + "value": "GEN-UNIQUE" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint" + }, + "value": "GEN-UNIQUE" + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "CDNSku": { + "type": "string", + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Akamai", + "Standard_Verizon", + "Premium_Verizon", + "Standard_Microsoft" + ], + "metadata": { + "description": "CDN SKU names" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_Microsoft" + } + }, + { + "type": "Microsoft.Cdn/profiles/endpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', parameters('profileName'), parameters('endpointName'))]", + "location": "[resourceGroup().location]", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ], + "deliveryPolicy": { + "description": "Path based Cache Override", + "rules": [ + { + "name": "Pathmatchcondition", + "order": 1, + "conditions": [ + { + "name": "UrlPath", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlPathMatchConditionParameters", + "operator": "BeginsWith", + "matchValues": [ + "/images/" + ] + } + } + ], + "actions": [ + { + "name": "CacheExpiration", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleCacheExpirationActionParameters", + "cacheBehavior": "Override", + "cacheType": "All", + "cacheDuration": "00:00:30" + } + } + ] + } + ] + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT98 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT98 new file mode 100644 index 0000000..c716e8d --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT98 @@ -0,0 +1,479 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudlens/cloudlens-moloch-ubuntu/azuredeploy.json", + "/application-workloads/cloudlens/cloudlens-moloch-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962886316, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudlens/cloudlens-moloch-ubuntu/azuredeploy.json", + "/application-workloads/cloudlens/cloudlens-moloch-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT98", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT98", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "cloudlensProjectKey": { + "type": "securestring", + "metadata": { + "description": "The CloudLens Project Key. Used by the agents to connect back to the backend." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "toolVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The vm size where Moloch will be deployed" + } + }, + "toolVmName": { + "type": "string", + "defaultValue": "MolochTool", + "metadata": { + "description": "The name of the vm where Moloch will be deployed" + } + }, + "tapVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The vm size where the tap will be deployed" + } + }, + "tapVmName": { + "type": "string", + "defaultValue": "CloudLensTap", + "metadata": { + "description": "The name of the vm where the tap will be deployed" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "CloudLensVNET", + "ubuntuOSVersion": "16.04.0-LTS", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/CloudLensVNET/Subnet", + "toolPublicIPAddressName": "molochPublicIP", + "toolStorageAccountName": "[concat('tooldisk', uniquestring(resourceGroup().id))]", + "toolDnsLabelPrefix": "[concat('moloch-',uniquestring(resourceGroup().id))]", + "toolNicName": "MolochVMNic", + "tapPublicIPAddressName": "cloudlensPublicIP", + "tapStorageAccountName": "[concat('tapdisk', uniquestring(resourceGroup().id))]", + "tapDnsLabelPrefix": "[concat('cloudlens-',uniquestring(resourceGroup().id))]", + "tapNicName": "CloudLensVMNic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('toolStorageAccountName')]", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('tapStorageAccountName')]", + "apiVersion": "2021-04-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "molochPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('toolDnsLabelPrefix')]" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "cloudlensPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('tapDnsLabelPrefix')]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "CloudLensVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "MolochVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//molochPublicIP", + "Microsoft.Network/virtualNetworks//CloudLensVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/molochPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/CloudLensVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "CloudLensVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//cloudlensPublicIP", + "Microsoft.Network/virtualNetworks//CloudLensVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/cloudlensPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/CloudLensVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "MolochTool", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('toolStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('toolNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "MolochTool", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/MolochVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('toolStorageAccountName'), '2021-04-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "CloudLensTap", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('tapStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('tapNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "CloudLensTap", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/CloudLensVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('tapStorageAccountName'), '2021-04-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "name": "MolochTool/config", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//MolochTool" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789 + }, + "protectedSettings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup-moloch.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "./setup-moloch.sh GEN-UNIQUE" + } + } + }, + { + "name": "CloudLensTap/config", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//CloudLensTap" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789 + }, + "protectedSettings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup-tap.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "./setup-tap.sh GEN-UNIQUE" + } + } + } + ], + "outputs": { + "Moloch SSH Command": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('toolPublicIPAddressName')).dnsSettings.fqdn)]" + }, + "Moloch Host Name": { + "type": "string", + "value": "[reference(variables('toolPublicIPAddressName')).dnsSettings.fqdn]" + }, + "Tapping Host SSH Command": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('tapPublicIPAddressName')).dnsSettings.fqdn)]" + }, + "Tapping Host Name": { + "type": "string", + "value": "[reference(variables('tapPublicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT980 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT980 new file mode 100644 index 0000000..0621d2e --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT980 @@ -0,0 +1,215 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-responseheader/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-responseheader/azuredeploy.parameters.json" + ], + "timestamp": 1642962903273, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-responseheader/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-responseheader/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT980", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT980", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "5456846818766199611" + } + }, + "parameters": { + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile" + }, + "value": "GEN-UNIQUE" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint" + }, + "value": "GEN-UNIQUE" + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "CDNSku": { + "type": "string", + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Akamai", + "Standard_Verizon", + "Premium_Verizon", + "Standard_Microsoft" + ], + "metadata": { + "description": "CDN SKU names" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_Microsoft" + } + }, + { + "type": "Microsoft.Cdn/profiles/endpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', parameters('profileName'), parameters('endpointName'))]", + "location": "[resourceGroup().location]", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ], + "deliveryPolicy": { + "description": "Add Response Headers", + "rules": [ + { + "name": "GeoMatchCondition", + "order": 1, + "conditions": [ + { + "name": "RemoteAddress", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRemoteAddressConditionParameters", + "operator": "GeoMatch", + "matchValues": [ + "US" + ] + } + } + ], + "actions": [ + { + "name": "ModifyResponseHeader", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleHeaderActionParameters", + "headerAction": "Overwrite", + "headerName": "X-CLIENT-COUNTRY", + "value": "US" + } + } + ] + }, + { + "name": "IPv4Match", + "order": 2, + "conditions": [ + { + "name": "RemoteAddress", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRemoteAddressConditionParameters", + "operator": "IPMatch", + "matchValues": [ + "0.0.0.0/0" + ] + } + } + ], + "actions": [ + { + "name": "ModifyResponseHeader", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleHeaderActionParameters", + "headerAction": "Overwrite", + "headerName": "X-CLIENT-IP-VERSION", + "value": "IPv4" + } + } + ] + }, + { + "name": "IPv6Match", + "order": 3, + "conditions": [ + { + "name": "RemoteAddress", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRemoteAddressConditionParameters", + "operator": "IPMatch", + "matchValues": [ + "::0/0" + ] + } + } + ], + "actions": [ + { + "name": "ModifyResponseHeader", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleHeaderActionParameters", + "headerAction": "Overwrite", + "headerName": "X-CLIENT-IP-VERSION", + "value": "IPv6" + } + } + ] + } + ] + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT981 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT981 new file mode 100644 index 0000000..ec2749f --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT981 @@ -0,0 +1,186 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-rewriteandredirect/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-rewriteandredirect/azuredeploy.parameters.json" + ], + "timestamp": 1642962903281, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-rewriteandredirect/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-rewriteandredirect/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT981", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT981", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "11918759781994806247" + } + }, + "parameters": { + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile" + }, + "value": "GEN-UNIQUE" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint" + }, + "value": "GEN-UNIQUE" + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "CDNSku": { + "type": "string", + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Akamai", + "Standard_Verizon", + "Premium_Verizon", + "Standard_Microsoft" + ], + "metadata": { + "description": "CDN SKU names" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_Microsoft" + } + }, + { + "type": "Microsoft.Cdn/profiles/endpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', parameters('profileName'), parameters('endpointName'))]", + "location": "[resourceGroup().location]", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ], + "deliveryPolicy": { + "description": "Rewrite and Redirect", + "rules": [ + { + "name": "PathRewriteBasedOnDeviceMatchCondition", + "order": 1, + "conditions": [ + { + "name": "IsDevice", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleIsDeviceConditionParameters", + "operator": "Equal", + "matchValues": [ + "Mobile" + ] + } + } + ], + "actions": [ + { + "name": "UrlRewrite", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlRewriteActionParameters", + "sourcePattern": "/standard", + "destination": "/mobile" + } + } + ] + }, + { + "name": "HttpVersionBasedRedirect", + "order": 2, + "conditions": [ + { + "name": "RequestScheme", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestSchemeConditionParameters", + "operator": "Equal", + "matchValues": [ + "HTTP" + ] + } + } + ], + "actions": [ + { + "name": "UrlRedirect", + "parameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlRedirectActionParameters", + "redirectType": "Found", + "destinationProtocol": "Https" + } + } + ] + } + ] + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT982 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT982 new file mode 100644 index 0000000..74ec427 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT982 @@ -0,0 +1,289 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-urlsigning/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-urlsigning/azuredeploy.parameters.json" + ], + "timestamp": 1642962903289, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-urlsigning/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-ruleseengine-urlsigning/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT982", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT982", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "5800695290300643626" + } + }, + "parameters": { + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile" + }, + "value": "GEN-UNIQUE" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint" + }, + "value": "GEN-UNIQUE" + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "urlSigningKeysSubId": { + "type": "string", + "metadata": { + "description": "Subscription Id of UrlSigning Keys" + }, + "value": "GEN-KEYVAULT-SUBSCRIPTION-ID" + }, + "urlSigningKeysResourceGroup": { + "type": "string", + "metadata": { + "description": "Resourcegroup of UrlSigning Keys" + }, + "value": "KEYVAULT-RESOURCEGROUP-NAME" + }, + "urlSigningKeysVaultName": { + "type": "string", + "metadata": { + "description": "Keyvault of UrlSigning Keys" + }, + "value": "GEN-KEYVAULT-NAME" + }, + "urlSigningKeysSecret1Name": { + "type": "string", + "metadata": { + "description": "UrlSigning keys secret1 Name" + }, + "value": "GEN-KEYVAULT-URLSIGN-SECRET1-NAME" + }, + "urlSigningKeysSecret1Version": { + "type": "string", + "metadata": { + "description": "UrlSigning keys secret1 version" + }, + "value": "GEN-KEYVAULT-URLSIGN-SECRET1-VERSION" + }, + "urlSigningKeysSecret2Name": { + "type": "string", + "metadata": { + "description": "UrlSigning keys secret2 Name" + }, + "value": "GEN-KEYVAULT-URLSIGN-SECRET2-NAME" + }, + "urlSigningKeysSecret2Version": { + "type": "string", + "metadata": { + "description": "UrlSigning keys secret2 version" + }, + "value": "GEN-KEYVAULT-URLSIGN-SECRET2-VERSION" + }, + "CDNSku": { + "type": "string", + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Akamai", + "Standard_Verizon", + "Premium_Verizon", + "Standard_Microsoft" + ], + "metadata": { + "description": "CDN SKU names" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_Microsoft" + } + }, + { + "type": "Microsoft.Cdn/profiles/endpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', parameters('profileName'), parameters('endpointName'))]", + "location": "[resourceGroup().location]", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "UseQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ], + "urlSigningKeys": [ + { + "keyId": "key1", + "keySourceParameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.KeyVaultSigningKeyParameters", + "subscriptionId": "GEN-KEYVAULT-SUBSCRIPTION-ID", + "resourceGroupName": "KEYVAULT-RESOURCEGROUP-NAME", + "vaultName": "GEN-KEYVAULT-NAME", + "secretName": "GEN-KEYVAULT-URLSIGN-SECRET1-NAME", + "secretVersion": "GEN-KEYVAULT-URLSIGN-SECRET1-VERSION" + } + }, + { + "keyId": "key2", + "keySourceParameters": { + "@odata.type": "#Microsoft.Azure.Cdn.Models.KeyVaultSigningKeyParameters", + "subscriptionId": "GEN-KEYVAULT-SUBSCRIPTION-ID", + "resourceGroupName": "KEYVAULT-RESOURCEGROUP-NAME", + "vaultName": "GEN-KEYVAULT-NAME", + "secretName": "GEN-KEYVAULT-URLSIGN-SECRET2-NAME", + "secretVersion": "GEN-KEYVAULT-URLSIGN-SECRET2-VERSION" + } + } + ], + "deliveryPolicy": { + "description": "UrlSigning", + "rules": [ + { + "name": "rule1", + "order": 1, + "conditions": [ + { + "name": "UrlPath", + "parameters": { + "operator": "Equal", + "matchValues": [ + "/urlsigning/test" + ], + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlPathMatchConditionParameters" + } + } + ], + "actions": [ + { + "name": "UrlSigning", + "parameters": { + "keyId": "key1", + "algorithm": "SHA256", + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlSigningActionParameters" + } + }, + { + "name": "CacheKeyQueryString", + "parameters": { + "queryStringBehavior": "Exclude", + "queryParameters": "expires,keyid,signature", + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleCacheKeyQueryStringBehaviorActionParameters" + } + } + ] + }, + { + "name": "rule2", + "order": 2, + "conditions": [ + { + "name": "UrlPath", + "parameters": { + "operator": "Equal", + "matchValues": [ + "/urlsigning/test2" + ], + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlPathMatchConditionParameters" + } + } + ], + "actions": [ + { + "name": "UrlSigning", + "parameters": { + "keyId": "key2", + "algorithm": "SHA256", + "parameterNameOverride": [ + { + "paramIndicator": "Expires", + "paramName": "oexpires" + }, + { + "paramIndicator": "KeyId", + "paramName": "okeyid" + }, + { + "paramIndicator": "Signature", + "paramName": "osignature" + } + ], + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlSigningActionParameters" + } + }, + { + "name": "CacheKeyQueryString", + "parameters": { + "queryStringBehavior": "Exclude", + "queryParameters": "oexpires,okeyid,osignature", + "@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleCacheKeyQueryStringBehaviorActionParameters" + } + } + ] + } + ] + } + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE" + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT983 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT983 new file mode 100644 index 0000000..82c1212 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT983 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-storage-account/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-storage-account/azuredeploy.parameters.json" + ], + "timestamp": 1642962903297, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-storage-account/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-storage-account/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT983", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.storage/storageaccounts", + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT983", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "17059297737130475169" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "storageAccountName": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "endpointName": "[format('endpoint-{0}', uniqueString(resourceGroup().id))]", + "profileName": "[format('cdn-{0}', uniqueString(resourceGroup().id))]" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-01-01", + "name": "[format('storage{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[format('storage{0}', uniqueString(resourceGroup().id))]" + }, + "kind": "StorageV2", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "[format('cdn-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[format('cdn-{0}', uniqueString(resourceGroup().id))]" + }, + "sku": { + "name": "Standard_Verizon" + } + }, + { + "type": "Microsoft.Cdn/profiles/endpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', variables('profileName'), variables('endpointName'))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[format('endpoint-{0}', uniqueString(resourceGroup().id))]" + }, + "properties": { + "originHostHeader": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob, 'https://', ''), '/', '')]", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))).primaryEndpoints.blob, 'https://', ''), '/', '')]" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/[format('cdn-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Storage/storageAccounts/[format('storage{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "outputs": { + "hostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/endpoints', variables('profileName'), variables('endpointName'))).hostName]" + }, + "originHostHeader": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/endpoints', variables('profileName'), variables('endpointName'))).originHostHeader]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT984 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT984 new file mode 100644 index 0000000..5ead2e1 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT984 @@ -0,0 +1,252 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-custom-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-custom-rules/azuredeploy.parameters.json" + ], + "timestamp": 1642962903304, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-custom-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-custom-rules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT984", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/cdnwebapplicationfirewallpolicies", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT984", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "policyName": { + "type": "string", + "metadata": { + "description": "Name of the CDN WAF Policy" + }, + "value": "GEN-UNIQUE" + }, + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile" + }, + "value": "GEN-UNIQUE" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint" + }, + "value": "GEN-UNIQUE" + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "policyMode": { + "type": "string", + "metadata": { + "description": "The enforcement mode of the CDN WAF Policy" + }, + "defaultValue": "Detection", + "allowedValues": [ + "Detection", + "Prevention" + ] + }, + "enabledState": { + "type": "string", + "metadata": { + "description": "Whether the CDN WAF Policy is enabled" + }, + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ] + }, + "redirectUrl": { + "type": "string", + "metadata": { + "description": "The redirect URL of the CDN WAF Policy" + }, + "defaultValue": "https://contoso.com/login" + }, + "CDNSku": { + "type": "string", + "metadata": { + "description": "CDN SKU names" + }, + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Microsoft" + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location the CDN profile and endpoint." + } + } + }, + "resources": [ + { + "type": "Microsoft.Cdn/CdnWebApplicationFirewallPolicies", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "Global", + "sku": { + "name": "Standard_Microsoft" + }, + "properties": { + "policySettings": { + "enabledState": "Enabled", + "mode": "Detection", + "defaultRedirectUrl": "https://contoso.com/login" + }, + "customRules": { + "rules": [ + { + "name": "BlockOutsideNorthAmerica", + "priority": 10, + "enabledState": "Enabled", + "matchConditions": [ + { + "matchVariable": "RemoteAddr", + "operator": "GeoMatch", + "negateCondition": true, + "matchValue": [ + "US", + "MX", + "CA" + ] + } + ], + "action": "Block" + }, + { + "name": "RedirectIPMatch", + "priority": 20, + "enabledState": "Enabled", + "matchConditions": [ + { + "matchVariable": "RemoteAddr", + "operator": "IPMatch", + "negateCondition": false, + "matchValue": [ + "1.0.0.0/8", + "2.1.1.1", + "ffff::/16" + ] + } + ], + "action": "Redirect" + }, + { + "name": "AllowUnauthenticatedLogin", + "priority": 30, + "enabledState": "Enabled", + "matchConditions": [ + { + "matchVariable": "RequestUri", + "operator": "Contains", + "negateCondition": false, + "matchValue": [ + "/login" + ] + } + ], + "action": "Allow" + }, + { + "name": "RedirectUnauthenticated", + "priority": 40, + "enabledState": "Enabled", + "matchConditions": [ + { + "matchVariable": "Cookies", + "selector": "SESSIONID", + "transforms": [ + "Trim" + ], + "operator": "LessThanOrEqual", + "negateCondition": false, + "matchValue": [ + "0" + ] + } + ], + "action": "Redirect" + } + ] + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Cdn/profiles", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-15-preview", + "sku": { + "name": "Standard_Microsoft" + }, + "resources": [ + { + "apiVersion": "2019-06-15-preview", + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE", + "Microsoft.Cdn/CdnWebApplicationFirewallPolicies/GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "type": "endpoints", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ], + "webApplicationFirewallPolicyLink": { + "id": "Microsoft.Cdn/CdnWebApplicationFirewallPolicies/GEN-UNIQUE" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT985 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT985 new file mode 100644 index 0000000..dce63d5 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT985 @@ -0,0 +1,165 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-managed-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-managed-rules/azuredeploy.parameters.json" + ], + "timestamp": 1642962903312, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-managed-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-managed-rules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT985", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/cdnwebapplicationfirewallpolicies", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT985", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "policyName": { + "type": "string", + "metadata": { + "description": "Name of the CDN WAF Policy" + }, + "value": "GEN-UNIQUE" + }, + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile" + }, + "value": "GEN-UNIQUE" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint" + }, + "value": "GEN-UNIQUE" + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "policyMode": { + "type": "string", + "metadata": { + "description": "The enforcement mode of the CDN WAF Policy" + }, + "defaultValue": "Detection", + "allowedValues": [ + "Detection", + "Prevention" + ] + }, + "CDNSku": { + "type": "string", + "metadata": { + "description": "CDN SKU names" + }, + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Microsoft" + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location the CDN profile and endpoint." + } + } + }, + "resources": [ + { + "type": "Microsoft.Cdn/CdnWebApplicationFirewallPolicies", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "Global", + "sku": { + "name": "Standard_Microsoft" + }, + "properties": { + "policySettings": { + "enabledState": "Enabled", + "mode": "Detection" + }, + "managedRules": { + "managedRuleSets": [ + { + "ruleSetType": "DefaultRuleSet", + "ruleSetVersion": "1.0" + } + ] + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Cdn/profiles", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-15-preview", + "sku": { + "name": "Standard_Microsoft" + }, + "resources": [ + { + "apiVersion": "2019-06-15-preview", + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE", + "Microsoft.Cdn/CdnWebApplicationFirewallPolicies/GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "type": "endpoints", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ], + "webApplicationFirewallPolicyLink": { + "id": "Microsoft.Cdn/CdnWebApplicationFirewallPolicies/GEN-UNIQUE" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT986 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT986 new file mode 100644 index 0000000..1591cc3 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT986 @@ -0,0 +1,215 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-rate-limit-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-rate-limit-rules/azuredeploy.parameters.json" + ], + "timestamp": 1642962903319, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-waf-rate-limit-rules/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-waf-rate-limit-rules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT986", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cdn/cdnwebapplicationfirewallpolicies", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT986", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "policyName": { + "type": "string", + "metadata": { + "description": "Name of the CDN WAF Policy" + }, + "value": "GEN-UNIQUE" + }, + "profileName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Profile" + }, + "value": "GEN-UNIQUE" + }, + "endpointName": { + "type": "string", + "metadata": { + "description": "Name of the CDN Endpoint" + }, + "value": "GEN-UNIQUE" + }, + "originUrl": { + "type": "string", + "metadata": { + "description": "Url of the origin" + }, + "value": "www.microsoft.com" + }, + "policyMode": { + "type": "string", + "metadata": { + "description": "The enforcement mode of the CDN WAF Policy" + }, + "defaultValue": "Detection", + "allowedValues": [ + "Detection", + "Prevention" + ] + }, + "enabledState": { + "type": "string", + "metadata": { + "description": "Whether the CDN WAF Policy is enabled" + }, + "defaultValue": "Enabled", + "allowedValues": [ + "Enabled", + "Disabled" + ] + }, + "redirectUrl": { + "type": "string", + "metadata": { + "description": "The redirect URL of the CDN WAF Policy" + }, + "defaultValue": "https://contoso.com/login" + }, + "CDNSku": { + "type": "string", + "metadata": { + "description": "CDN SKU names" + }, + "defaultValue": "Standard_Microsoft", + "allowedValues": [ + "Standard_Microsoft" + ] + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location the CDN profile and endpoint." + } + } + }, + "resources": [ + { + "type": "Microsoft.Cdn/CdnWebApplicationFirewallPolicies", + "apiVersion": "2020-09-01", + "name": "GEN-UNIQUE", + "location": "Global", + "sku": { + "name": "Standard_Microsoft" + }, + "properties": { + "policySettings": { + "enabledState": "Enabled", + "mode": "Detection", + "defaultRedirectUrl": "https://contoso.com/login" + }, + "rateLimitRules": { + "rules": [ + { + "name": "BaseLimit", + "priority": 100, + "enabledState": "Enabled", + "rateLimitThreshold": 1000, + "rateLimitDurationInMinutes": 1, + "matchConditions": [ + { + "matchVariable": "RequestMethod", + "operator": "Any", + "negateCondition": false + } + ], + "action": "Block" + }, + { + "name": "WriteLimit", + "priority": 50, + "enabledState": "Enabled", + "rateLimitThreshold": 100, + "rateLimitDurationInMinutes": 1, + "matchConditions": [ + { + "matchVariable": "RequestMethod", + "operator": "Equal", + "negateCondition": false, + "matchValue": [ + "POST", + "PUT", + "PATCH" + ] + } + ], + "action": "Redirect" + } + ] + } + } + }, + { + "name": "GEN-UNIQUE", + "type": "Microsoft.Cdn/profiles", + "location": "[resourceGroup().location]", + "apiVersion": "2019-06-15-preview", + "sku": { + "name": "Standard_Microsoft" + }, + "resources": [ + { + "apiVersion": "2019-06-15-preview", + "dependsOn": [ + "Microsoft.Cdn/profiles/GEN-UNIQUE", + "Microsoft.Cdn/CdnWebApplicationFirewallPolicies/GEN-UNIQUE" + ], + "location": "[resourceGroup().location]", + "name": "GEN-UNIQUE", + "type": "endpoints", + "properties": { + "originHostHeader": "www.microsoft.com", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "www.microsoft.com" + } + } + ], + "webApplicationFirewallPolicyLink": { + "id": "Microsoft.Cdn/CdnWebApplicationFirewallPolicies/GEN-UNIQUE" + } + } + } + ] + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT987 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT987 new file mode 100644 index 0000000..aeb2689 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT987 @@ -0,0 +1,180 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-web-app/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-web-app/azuredeploy.parameters.json" + ], + "timestamp": 1642962903326, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cdn/cdn-with-web-app/azuredeploy.json", + "/quickstarts/microsoft.cdn/cdn-with-web-app/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT987", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.web/sites", + "microsoft.web/serverfarms", + "microsoft.cdn/profiles/endpoints", + "microsoft.cdn/profiles" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT987", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "16325559001506718153" + } + }, + "parameters": { + "profileName": { + "type": "string", + "defaultValue": "[format('cdn-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the CDN Profile" + } + }, + "endpointName": { + "type": "string", + "defaultValue": "[format('endpoint-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the CDN Endpoint, must be unique" + } + }, + "serverFarmName": { + "type": "string", + "defaultValue": "[format('asp-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the App Service Plan" + } + }, + "webAppName": { + "type": "string", + "defaultValue": "[format('web-{0}', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of the App Service Web App" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2021-02-01", + "name": "[format('asp-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[format('asp-{0}', uniqueString(resourceGroup().id))]" + }, + "sku": { + "name": "F1", + "capacity": 1 + } + }, + { + "type": "Microsoft.Web/sites", + "apiVersion": "2021-02-01", + "name": "[format('web-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[format('web-{0}', uniqueString(resourceGroup().id))]" + }, + "properties": { + "serverFarmId": "Microsoft.Web/serverfarms/[format('asp-{0}', uniqueString(resourceGroup().id))]", + "siteConfig": { + "ftpsState": "FtpsOnly", + "minTlsVersion": "1.2", + "scmMinTlsVersion": "1.2" + }, + "httpsOnly": true + }, + "identity": { + "type": "SystemAssigned" + }, + "dependsOn": [ + "Microsoft.Web/serverfarms/[format('asp-{0}', uniqueString(resourceGroup().id))]" + ] + }, + { + "type": "Microsoft.Cdn/profiles", + "apiVersion": "2020-09-01", + "name": "[format('cdn-{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[format('cdn-{0}', uniqueString(resourceGroup().id))]" + }, + "sku": { + "name": "Standard_Microsoft" + }, + "properties": {} + }, + { + "type": "Microsoft.Cdn/profiles/endpoints", + "apiVersion": "2020-09-01", + "name": "[format('{0}/{1}', parameters('profileName'), parameters('endpointName'))]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "[format('endpoint-{0}', uniqueString(resourceGroup().id))]" + }, + "properties": { + "originHostHeader": "[reference(resourceId('Microsoft.Web/sites', parameters('webAppName'))).hostNames[0]]", + "isHttpAllowed": true, + "isHttpsAllowed": true, + "queryStringCachingBehavior": "IgnoreQueryString", + "contentTypesToCompress": [ + "text/plain", + "text/html", + "text/css", + "application/x-javascript", + "text/javascript" + ], + "isCompressionEnabled": true, + "origins": [ + { + "name": "origin1", + "properties": { + "hostName": "[reference(resourceId('Microsoft.Web/sites', parameters('webAppName'))).hostNames[0]]" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Cdn/profiles/[format('cdn-{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Web/sites/[format('web-{0}', uniqueString(resourceGroup().id))]" + ] + } + ], + "outputs": { + "hostName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/endpoints', parameters('profileName'), parameters('endpointName'))).hostName]" + }, + "originHostHeader": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Cdn/profiles/endpoints', parameters('profileName'), parameters('endpointName'))).originHostHeader]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT988 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT988 new file mode 100644 index 0000000..ca76930 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT988 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-Computer-vision-API/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-Computer-vision-API/azuredeploy.parameters.json" + ], + "timestamp": 1642962903334, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-Computer-vision-API/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-Computer-vision-API/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT988", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cognitiveservices/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT988", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accountName": { + "defaultValue": "computervision", + "metadata": { + "description": "Display name of Computer Vision API account" + }, + "type": "string", + "value": "GEN-UNIQUE" + }, + "SKU": { + "type": "string", + "metadata": { + "description": "SKU for Computer Vision API" + }, + "defaultValue": "F0", + "allowedValues": [ + "F0", + "S1" + ], + "value": "S1" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.CognitiveServices/accounts", + "apiVersion": "2017-04-18", + "name": "GEN-UNIQUE", + "location": "Location", + "kind": "ComputerVision", + "sku": { + "name": "S1" + }, + "properties": {} + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT989 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT989 new file mode 100644 index 0000000..93a29a8 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT989 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.parameters.json" + ], + "timestamp": 1642962903339, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT989", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cognitiveservices/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT989", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accountName": { + "defaultValue": "TextTranslation", + "metadata": { + "description": "Display name of Text Translation API account" + }, + "type": "string" + }, + "SKU": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "SKU for Text Translation API" + }, + "allowedValues": [ + "F0", + "S1", + "S2", + "S3", + "S4" + ] + }, + "translateLocation": { + "type": "string", + "metadata": { + "description": "Location for the account" + }, + "value": "global" + } + }, + "resources": [ + { + "type": "Microsoft.CognitiveServices/accounts", + "apiVersion": "2017-04-18", + "name": "TextTranslation", + "location": "translatelocation", + "kind": "TextTranslation", + "sku": { + "name": "S1" + }, + "properties": {} + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT99 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT99 new file mode 100644 index 0000000..1dad1d6 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT99 @@ -0,0 +1,479 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/application-workloads/cloudlens/cloudlens-suricata-ubuntu/azuredeploy.json", + "/application-workloads/cloudlens/cloudlens-suricata-ubuntu/azuredeploy.parameters.json" + ], + "timestamp": 1642962886416, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/application-workloads/cloudlens/cloudlens-suricata-ubuntu/azuredeploy.json", + "/application-workloads/cloudlens/cloudlens-suricata-ubuntu/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT99", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines/extensions", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT99", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "cloudlensProjectKey": { + "type": "securestring", + "metadata": { + "description": "The CloudLens Project Key. Used by the agents to connect back to the backend." + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "User name for the Virtual Machine." + }, + "value": "GEN-UNIQUE" + }, + "toolVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The vm size where Suricata will be deployed" + } + }, + "toolVmName": { + "type": "string", + "defaultValue": "SuricataIDS", + "metadata": { + "description": "The name of the vm where Suricata will be deployed" + } + }, + "tapVmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "The vm size where the tap will be deployed" + } + }, + "tapVmName": { + "type": "string", + "defaultValue": "CloudLensTap", + "metadata": { + "description": "The name of the vm where the tap will be deployed" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "_artifactsLocation": { + "type": "string", + "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." + }, + "defaultValue": "[deployment().properties.templatelink.uri]" + }, + "_artifactsLocationSasToken": { + "type": "securestring", + "metadata": { + "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." + }, + "defaultValue": "" + }, + "authenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "Type of authentication to use on the Virtual Machine. SSH key is recommended." + } + }, + "adminPasswordOrKey": { + "type": "securestring", + "metadata": { + "description": "SSH Key or password for the Virtual Machine. SSH key is recommended." + }, + "value": "GEN-SSH-PUB-KEY" + } + }, + "variables": { + "imagePublisher": "Canonical", + "imageOffer": "UbuntuServer", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet", + "subnetPrefix": "10.0.0.0/24", + "storageAccountType": "Standard_LRS", + "publicIPAddressType": "Dynamic", + "virtualNetworkName": "CloudLensVNET", + "ubuntuOSVersion": "16.04.0-LTS", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/CloudLensVNET/Subnet", + "toolPublicIPAddressName": "suricataPublicIP", + "toolStorageAccountName": "[concat('tooldisk', uniquestring(resourceGroup().id))]", + "toolDnsLabelPrefix": "[concat('suricata-',uniquestring(resourceGroup().id))]", + "toolNicName": "SuricataVMNic", + "tapPublicIPAddressName": "cloudlensPublicIP", + "tapStorageAccountName": "[concat('tapdisk', uniquestring(resourceGroup().id))]", + "tapDnsLabelPrefix": "[concat('cloudlens-',uniquestring(resourceGroup().id))]", + "tapNicName": "CloudLensVMNic", + "linuxConfiguration": { + "disablePasswordAuthentication": true, + "ssh": { + "publicKeys": [ + { + "path": "/home/GEN-UNIQUE/.ssh/authorized_keys", + "keyData": "GEN-SSH-PUB-KEY" + } + ] + } + }, + "networkSecurityGroupName": "default-NSG" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('toolStorageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('tapStorageAccountName')]", + "apiVersion": "2021-02-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "suricataPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('toolDnsLabelPrefix')]" + } + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "cloudlensPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "[variables('tapDnsLabelPrefix')]" + } + } + }, + { + "comments": "Default Network Security Group for template", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-07-01", + "name": "default-NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-22", + "properties": { + "priority": 1000, + "access": "Allow", + "direction": "Inbound", + "destinationPortRange": "22", + "protocol": "Tcp", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "CloudLensVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/default-NSG" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/default-NSG" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "SuricataVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//suricataPublicIP", + "Microsoft.Network/virtualNetworks//CloudLensVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/suricataPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/CloudLensVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "CloudLensVMNic", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//cloudlensPublicIP", + "Microsoft.Network/virtualNetworks//CloudLensVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/cloudlensPublicIP" + }, + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/CloudLensVNET/Subnet" + } + } + } + ] + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "SuricataIDS", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('toolStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('toolNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "SuricataIDS", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/SuricataVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('toolStorageAccountName'), '2021-04-01').primaryEndpoints['blob']]" + } + } + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "CloudLensTap", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('tapStorageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('tapNicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "CloudLensTap", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-SSH-PUB-KEY", + "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]" + }, + "storageProfile": { + "imageReference": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/CloudLensVMNic" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('tapStorageAccountName')), '2021-04-01').primaryEndpoints.blob]" + } + } + } + }, + { + "name": "SuricataIDS/config", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//SuricataIDS" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789 + }, + "protectedSettings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup-suricata.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "./setup-suricata.sh GEN-UNIQUE" + } + } + }, + { + "name": "CloudLensTap/config", + "type": "Microsoft.Compute/virtualMachines/extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2020-12-01", + "dependsOn": [ + "Microsoft.Compute/virtualMachines//CloudLensTap" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "settings": { + "skipDos2Unix": false, + "timestamp": 123456789 + }, + "protectedSettings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/setup-tap.sh', parameters('_artifactsLocationSasToken')))]" + ], + "commandToExecute": "./setup-tap.sh GEN-UNIQUE" + } + } + } + ], + "outputs": { + "Suricata SSH Command": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('toolPublicIPAddressName')).dnsSettings.fqdn)]" + }, + "Suricata Host Name": { + "type": "string", + "value": "[reference(variables('toolPublicIPAddressName')).dnsSettings.fqdn]" + }, + "Tapping Host SSH Command": { + "type": "string", + "value": "[concat('ssh ', parameters('adminUsername'), '@', reference(variables('tapPublicIPAddressName')).dnsSettings.fqdn)]" + }, + "Tapping Host Name": { + "type": "string", + "value": "[reference(variables('tapPublicIPAddressName')).dnsSettings.fqdn]" + } + }, + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT990 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT990 new file mode 100644 index 0000000..510f549 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT990 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.parameters.us.json" + ], + "timestamp": 1642962903345, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-translate/azuredeploy.parameters.us.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT990", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cognitiveservices/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT990", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "accountName": { + "defaultValue": "TextTranslation", + "metadata": { + "description": "Display name of Text Translation API account" + }, + "type": "string" + }, + "SKU": { + "type": "string", + "defaultValue": "S1", + "metadata": { + "description": "SKU for Text Translation API" + }, + "allowedValues": [ + "F0", + "S1", + "S2", + "S3", + "S4" + ] + }, + "translateLocation": { + "type": "string", + "metadata": { + "description": "Location for the account" + }, + "value": "usgovvirginia" + } + }, + "resources": [ + { + "type": "Microsoft.CognitiveServices/accounts", + "apiVersion": "2017-04-18", + "name": "TextTranslation", + "location": "translatelocation", + "kind": "TextTranslation", + "sku": { + "name": "S1" + }, + "properties": {} + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT991 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT991 new file mode 100644 index 0000000..236f962 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT991 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-universalkey/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-universalkey/azuredeploy.parameters.json" + ], + "timestamp": 1642962903351, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.cognitiveservices/cognitive-services-universalkey/azuredeploy.json", + "/quickstarts/microsoft.cognitiveservices/cognitive-services-universalkey/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT991", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.cognitiveservices/accounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT991", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "cognitiveServiceName": { + "type": "string", + "defaultValue": "[concat('CognitiveService-', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "That name is the name of our application. It has to be unique.Type a name followed by your resource group name. (-)" + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "sku": { + "type": "string", + "defaultValue": "S0", + "allowedValues": [ + "S0" + ] + } + }, + "resources": [ + { + "type": "Microsoft.CognitiveServices/accounts", + "apiVersion": "2017-04-18", + "name": "GEN-UNIQUE", + "location": "[resourceGroup().location]", + "sku": { + "name": "S0" + }, + "kind": "CognitiveServices", + "properties": { + "statisticsEnabled": false + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT992 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT992 new file mode 100644 index 0000000..de2e437 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT992 @@ -0,0 +1,312 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/1-vm-loadbalancer-2-nics/azuredeploy.json", + "/quickstarts/microsoft.compute/1-vm-loadbalancer-2-nics/azuredeploy.parameters.json" + ], + "timestamp": 1642962903358, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/1-vm-loadbalancer-2-nics/azuredeploy.json", + "/quickstarts/microsoft.compute/1-vm-loadbalancer-2-nics/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT992", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT992", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password." + }, + "value": "GEN-PASSWORD" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username." + }, + "value": "GEN-UNIQUE" + }, + "dnsNameforLBIP": { + "type": "string", + "metadata": { + "description": "DNS for Load Balancer IP." + }, + "value": "GEN-UNIQUE" + }, + "location": { + "type": "string", + "metadata": { + "description": "Location for all resources." + }, + "defaultValue": "[resourceGroup().location]" + }, + "storageAccountName": { + "type": "string", + "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", + "metadata": { + "description": "Name of storage account." + }, + "value": "GEN-UNIQUE" + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2_v3", + "metadata": { + "description": "Size of the virtual machine." + }, + "value": "Standard_D2_v3" + } + }, + "variables": { + "addressPrefix": "10.0.0.0/16", + "imageOffer": "WindowsServer", + "imagePublisher": "MicrosoftWindowsServer", + "imageSKU": "2019-Datacenter", + "lbName": "myLB", + "networkSecurityGroupName": "Subnet-1-nsg", + "nic1NamePrefix": "nic1", + "nic2NamePrefix": "nic2", + "publicIPAddressName": "myPublicIP", + "publicIPAddressType": "Dynamic", + "storageAccountType": "Standard_LRS", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "vmNamePrefix": "myVM", + "vnetName": "myVNET" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "apiVersion": "2020-05-01", + "name": "myLB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool1" + } + ], + "inboundNatRules": [ + { + "name": "RDP-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ] + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-05-01", + "name": "Subnet-1-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic1", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNET", + "Microsoft.Network/loadBalancers//myLB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/BackendPool1" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/myLB/RDP-VM0" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "nic2", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNET" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/Subnet-1" + } + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVM", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//nic1", + "Microsoft.Network/networkInterfaces//nic2" + ], + "properties": { + "hardwareProfile": { + "vmSize": "Standard_D2_v3" + }, + "osProfile": { + "computerName": "myVM", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "properties": { + "primary": true + }, + "id": "Microsoft.Network/networkInterfaces/nic1" + }, + { + "properties": { + "primary": false + }, + "id": "Microsoft.Network/networkInterfaces/nic2" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(parameters('storageAccountName'), '2019-06-01').primaryEndpoints.blob]" + } + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + } + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT993 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT993 new file mode 100644 index 0000000..3d34785 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT993 @@ -0,0 +1,293 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/1vm-2nics-2subnets-1vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/1vm-2nics-2subnets-1vnet/azuredeploy.parameters.json" + ], + "timestamp": 1642962903366, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/1vm-2nics-2subnets-1vnet/azuredeploy.json", + "/quickstarts/microsoft.compute/1vm-2nics-2subnets-1vnet/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT993", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.storage/storageaccounts" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT993", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1.14562", + "templateHash": "4848305918507774483" + } + }, + "parameters": { + "virtualMachineSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Virtual machine size (has to be at least the size of Standard_A3 to support 2 NICs)" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Default Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "secureString", + "metadata": { + "description": "Default Admin password" + }, + "value": "GEN-PASSWORD" + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Premium_LRS" + ], + "metadata": { + "description": "Storage Account type for the VM and VM diagnostic storage" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "functions": [], + "variables": { + "virtualMachineName": "VM-MultiNic", + "nic1Name": "nic-1", + "nic2Name": "nic-2", + "virtualNetworkName": "virtualNetwork", + "subnet1Name": "subnet-1", + "subnet2Name": "subnet-2", + "publicIPAddressName": "publicIp", + "diagStorageAccountName": "[format('diags{0}', uniqueString(resourceGroup().id))]", + "networkSecurityGroupName": "NSG", + "networkSecurityGroupName2": "[format('{0}-nsg', variables('subnet2Name'))]" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "VM-MultiNic", + "location": "[resourceGroup().location]", + "properties": { + "osProfile": { + "computerName": "VM-MultiNic", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD", + "windowsConfiguration": { + "provisionVMAgent": true + } + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "properties": { + "primary": true + }, + "id": "Microsoft.Network/networkInterfaces/nic-1" + }, + { + "properties": { + "primary": false + }, + "id": "Microsoft.Network/networkInterfaces/nic-2" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('diagStorageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[format('diags{0}', uniqueString(resourceGroup().id))]", + "Microsoft.Network/networkInterfaces/nic-1", + "Microsoft.Network/networkInterfaces/nic-2" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[format('diags{0}', uniqueString(resourceGroup().id))]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "[format('{0}-nsg', variables('subnet2Name'))]", + "location": "[resourceGroup().location]" + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "virtualNetwork", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + }, + { + "name": "subnet-2", + "properties": { + "addressPrefix": "10.0.1.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/[format('{0}-nsg', variables('subnet2Name'))]" + } + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/[format('{0}-nsg', variables('subnet2Name'))]" + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "nic-1", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork/subnet-1" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/publicIp" + } + } + } + ], + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/NSG" + } + }, + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/NSG", + "Microsoft.Network/publicIPAddresses/publicIp", + "Microsoft.Network/virtualNetworks/virtualNetwork" + ] + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "nic-2", + "location": "[resourceGroup().location]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/virtualNetwork/subnet-2" + }, + "privateIPAllocationMethod": "Dynamic" + } + } + ] + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/virtualNetwork" + ] + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2020-06-01", + "name": "publicIp", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2020-06-01", + "name": "NSG", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-rdp", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "3389", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT994 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT994 new file mode 100644 index 0000000..83dfcbc --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT994 @@ -0,0 +1,280 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-internal-load-balancer/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-internal-load-balancer/azuredeploy.parameters.json" + ], + "timestamp": 1642962903377, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-internal-load-balancer/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-internal-load-balancer/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT994", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT994", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "BackendVM", + "metadata": { + "description": "Prefix to use for VM names" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the virtual machines" + } + } + }, + "variables": { + "availabilitySetName": "AvSet", + "storageAccountType": "Standard_LRS", + "storageAccountName": "[uniqueString(resourceGroup().id)]", + "virtualNetworkName": "vNet", + "subnetName": "backendSubnet", + "loadBalancerName": "ilb", + "networkInterfaceName": "nic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/vNet/backendSubnet", + "numberOfInstances": 2 + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[uniqueString(resourceGroup().id)]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Compute/availabilitySets", + "apiVersion": "2020-06-01", + "name": "AvSet", + "location": "[resourceGroup().location]", + "sku": { + "name": "Aligned" + }, + "properties": { + "PlatformUpdateDomainCount": 2, + "PlatformFaultDomainCount": 2 + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-06-01", + "name": "vNet", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "backendSubnet", + "properties": { + "addressPrefix": "10.0.2.0/24" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2020-06-01", + "name": "niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "vNet", + "ilb" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/backendSubnet" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/ilb/BackendPool1" + } + ] + } + } + ] + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "apiVersion": "2020-06-01", + "name": "ilb", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "vNet" + ], + "properties": { + "frontendIPConfigurations": [ + { + "properties": { + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/vNet/backendSubnet" + }, + "privateIPAddress": "10.0.2.6", + "privateIPAllocationMethod": "Static" + }, + "name": "LoadBalancerFrontend" + } + ], + "backendAddressPools": [ + { + "name": "BackendPool1" + } + ], + "loadBalancingRules": [ + { + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIpConfigurations/ilb/LoadBalancerFrontend" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/ilb/BackendPool1" + }, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/ilb/lbprobe" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "idleTimeoutInMinutes": 15 + }, + "Name": "lbrule" + } + ], + "probes": [ + { + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 15, + "numberOfProbes": 2 + }, + "name": "lbprobe" + } + ] + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2020-06-01", + "name": "BackendVMcopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "dependsOn": [ + "[uniqueString(resourceGroup().id)]", + "nicLoop", + "AvSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/AvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "BackendVMcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niccopyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName')).primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT995 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT995 new file mode 100644 index 0000000..92cbe0b --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT995 @@ -0,0 +1,383 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-loadbalancer-lbrules/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-loadbalancer-lbrules/azuredeploy.parameters.json" + ], + "timestamp": 1642962903387, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-loadbalancer-lbrules/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-loadbalancer-lbrules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT995", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT995", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountName": { + "type": "string", + "metadata": { + "description": "Name of storage account" + }, + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "dnsNameforLBIP": { + "type": "string", + "metadata": { + "description": "DNS for Load Balancer IP" + }, + "value": "GEN-UNIQUE" + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "myVM", + "metadata": { + "description": "Prefix to use for VM names" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2019-Datacenter", + "metadata": { + "description": "Image SKU" + } + }, + "lbName": { + "type": "string", + "defaultValue": "myLB", + "metadata": { + "description": "Load Balancer name" + } + }, + "nicNamePrefix": { + "type": "string", + "defaultValue": "nic", + "metadata": { + "description": "Network Interface name prefix" + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Public IP Name" + } + }, + "vnetName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "description": "VNET name" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of the VM" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources" + } + } + }, + "variables": { + "storageAccountType": "Standard_LRS", + "availabilitySetName": "myAvSet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "subnetRef": "Microsoft.Network/virtualNetworks/subnets/myVNET/variables (subnetName)", + "publicIPAddressID": "Microsoft.Network/publicIPAddresses/myPublicIP", + "numberOfInstances": 2 + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "GEN-UNIQUE", + "apiVersion": "2019-06-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myAvSet", + "apiVersion": "2019-12-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 5 + }, + "sku": { + "name": "Aligned" + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24" + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks//myVNET", + "Microsoft.Network/loadBalancers//myLB" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/variables (subnetName)" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/BackendPool1" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/myLB/RDP-VMcopyindex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-05-01", + "name": "myLB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses//myPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontEnd", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "BackendPool1" + } + ], + "inboundNatRules": [ + { + "name": "RDP-VM0", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50001, + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "name": "RDP-VM1", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "protocol": "Tcp", + "frontendPort": 50002, + "backendPort": 3389, + "enableFloatingIP": false + } + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/LoadBalancerFrontEnd" + }, + "backendAddressPool": { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/BackendPool1" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "Microsoft.Network/loadBalancers/probes/myLB/tcpProbe" + } + } + } + ], + "probes": [ + { + "name": "tcpProbe", + "properties": { + "protocol": "Tcp", + "port": 80, + "intervalInSeconds": 5, + "numberOfProbes": 2 + } + } + ] + } + }, + { + "apiVersion": "2019-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVMcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts//GEN-UNIQUE", + "Microsoft.Network/networkInterfaces//niccopyindex()", + "Microsoft.Compute/availabilitySets//myAvSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_D2s_v3" + }, + "osProfile": { + "computerName": "myVMcopyIndex()", + "adminUsername": "GEN-UNIQUE", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niccopyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(parameters('storageAccountName'), '2019-06-01').primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT996 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT996 new file mode 100644 index 0000000..742a830 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT996 @@ -0,0 +1,362 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-loadbalancer-natrules/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-loadbalancer-natrules/azuredeploy.parameters.json" + ], + "timestamp": 1642962903399, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/2-vms-loadbalancer-natrules/azuredeploy.json", + "/quickstarts/microsoft.compute/2-vms-loadbalancer-natrules/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT996", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.network/publicipaddresses", + "microsoft.network/virtualnetworks", + "microsoft.network/loadbalancers", + "microsoft.network/networkinterfaces", + "microsoft.compute/virtualmachines", + "microsoft.network/networksecuritygroups", + "microsoft.network/loadbalancers/inboundnatrules", + "microsoft.storage/storageaccounts", + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT996", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username" + }, + "value": "kay" + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password" + }, + "value": "GEN-PASSWORD" + }, + "dnsNameforLBIP": { + "type": "string", + "defaultValue": "uniqueDnsNameforLBIP", + "metadata": { + "description": "Unique DNS name" + }, + "value": "GEN-UNIQUE" + }, + "vmNamePrefix": { + "type": "string", + "defaultValue": "myVM", + "metadata": { + "description": "VM name prefix" + } + }, + "lbName": { + "type": "string", + "defaultValue": "myLB", + "metadata": { + "description": "Load Balancer name" + } + }, + "nicNamePrefix": { + "type": "string", + "defaultValue": "nic", + "metadata": { + "description": "Network Interface Name Prefix" + } + }, + "publicIPAddressName": { + "type": "string", + "defaultValue": "myPublicIP", + "metadata": { + "description": "Public IP Address Name" + } + }, + "vnetName": { + "type": "string", + "defaultValue": "myVNET", + "metadata": { + "description": "VNET name" + } + }, + "imagePublisher": { + "type": "string", + "defaultValue": "MicrosoftWindowsServer", + "metadata": { + "description": "Image Publisher" + } + }, + "imageOffer": { + "type": "string", + "defaultValue": "WindowsServer", + "metadata": { + "description": "Image Offer" + } + }, + "imageSKU": { + "type": "string", + "defaultValue": "2012-R2-Datacenter", + "metadata": { + "description": "Image SKU" + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_A1", + "allowedValues": [ + "Standard_A0", + "Standard_A1", + "Standard_A2", + "Standard_A3", + "Standard_A4" + ], + "metadata": { + "description": "VM Size" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Resource location" + } + } + }, + "variables": { + "storageAccountType": "Standard_LRS", + "availabilitySetName": "myAvSet", + "addressPrefix": "10.0.0.0/16", + "subnetName": "Subnet-1", + "subnetPrefix": "10.0.0.0/24", + "publicIPAddressType": "Dynamic", + "numberOfInstances": 2, + "storageAccountName": "[uniqueString(resourceGroup().id)]", + "networkSecurityGroupName": "Subnet-1-nsg" + }, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[uniqueString(resourceGroup().id)]", + "apiVersion": "2021-01-01", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Compute/availabilitySets", + "name": "myAvSet", + "apiVersion": "2016-04-30-preview", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 2, + "platformUpdateDomainCount": 2, + "managed": true + } + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/publicIPAddresses", + "name": "myPublicIP", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Dynamic", + "dnsSettings": { + "domainNameLabel": "GEN-UNIQUE" + } + } + }, + { + "comments": "Simple Network Security Group for subnet [variables('subnetName')]", + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2019-08-01", + "name": "Subnet-1-nsg", + "location": "[resourceGroup().location]", + "properties": {} + }, + { + "apiVersion": "2015-06-15", + "type": "Microsoft.Network/virtualNetworks", + "name": "myVNET", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "Subnet-1", + "properties": { + "addressPrefix": "10.0.0.0/24", + "networkSecurityGroup": { + "id": "Microsoft.Network/networkSecurityGroups/Subnet-1-nsg" + } + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "niccopyindex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "nicLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/virtualNetworks/myVNET", + "Microsoft.Network/loadBalancers/myLB", + "Microsoft.Network/loadBalancers/inboundNatRules/myLB/RDP-VMcopyIndex()" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "Microsoft.Network/virtualNetworks/subnets/myVNET/variables (subnetName)" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "Microsoft.Network/loadBalancers/backendAddressPools/myLB/LoadBalancerBackend" + } + ], + "loadBalancerInboundNatRules": [ + { + "id": "Microsoft.Network/loadBalancers/inboundNatRules/myLB/RDP-VMcopyIndex()" + } + ] + } + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "name": "myLB", + "type": "Microsoft.Network/loadBalancers", + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Network/publicIPAddresses/myPublicIP" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerFrontend", + "properties": { + "publicIPAddress": { + "id": "Microsoft.Network/publicIPAddresses/myPublicIP" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBackend" + } + ] + } + }, + { + "apiVersion": "2020-11-01", + "type": "Microsoft.Network/loadBalancers/inboundNatRules", + "name": "myLB/RDP-VMcopyIndex()", + "location": "[resourceGroup().location]", + "copy": { + "name": "lbNatLoop", + "count": 2 + }, + "dependsOn": [ + "Microsoft.Network/loadBalancers/myLB" + ], + "properties": { + "frontendIPConfiguration": { + "id": "Microsoft.Network/loadBalancers/frontendIPConfigurations/myLB/loadBalancerFrontend" + }, + "protocol": "Tcp", + "frontendPort": "[copyIndex(5000)]", + "backendPort": 3389, + "enableFloatingIP": false + } + }, + { + "apiVersion": "2020-12-01", + "type": "Microsoft.Compute/virtualMachines", + "name": "myVMcopyindex()", + "copy": { + "name": "virtualMachineLoop", + "count": 2 + }, + "location": "[resourceGroup().location]", + "dependsOn": [ + "Microsoft.Storage/storageAccounts/[uniqueString(resourceGroup().id)]", + "Microsoft.Network/networkInterfaces/niccopyindex()", + "Microsoft.Compute/availabilitySets/myAvSet" + ], + "properties": { + "availabilitySet": { + "id": "Microsoft.Compute/availabilitySets/myAvSet" + }, + "hardwareProfile": { + "vmSize": "Standard_A1" + }, + "osProfile": { + "computerName": "myVMcopyIndex()", + "adminUsername": "kay", + "adminPassword": "GEN-PASSWORD" + }, + "storageProfile": { + "imageReference": { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + }, + "osDisk": { + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "Microsoft.Network/networkInterfaces/niccopyindex()" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(variables('storageAccountName'), '2021-01-01').primaryEndpoints.blob]" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT997 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT997 new file mode 100644 index 0000000..d728ff2 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT997 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/availability-set-create-3FDs-20UDs/azuredeploy.json", + "/quickstarts/microsoft.compute/availability-set-create-3FDs-20UDs/azuredeploy.parameters.json" + ], + "timestamp": 1642962903409, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/availability-set-create-3FDs-20UDs/azuredeploy.json", + "/quickstarts/microsoft.compute/availability-set-create-3FDs-20UDs/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT997", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/availabilitysets" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT997", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Compute/availabilitySets", + "name": "availabilitySet1", + "apiVersion": "2020-06-01", + "location": "[resourceGroup().location]", + "properties": { + "platformFaultDomainCount": 3, + "platformUpdateDomainCount": 20 + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT998 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT998 new file mode 100644 index 0000000..ab56d68 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT998 @@ -0,0 +1,130 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "timestamp": 1642962903415, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT998", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.resources/deployments" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT998", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vhdUri": { + "type": "string", + "metadata": { + "description": "Storage VHD Uri" + }, + "value": "vhdUri" + }, + "managedDiskName": { + "type": "string", + "metadata": { + "description": "Name of the managed disk to be copied" + }, + "value": "MyManagedDisk" + }, + "keyVaultResourceID": { + "type": "string", + "metadata": { + "description": "KeyVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault" + }, + "value": "keyVaultResourceID" + }, + "keyVaultSecretUrl": { + "type": "string", + "metadata": { + "description": "KeyVault secret Url. Ex: https://contosovault.vault.azure.net/secrets/contososecret/e088818e865e48488cf363af16dea596" + }, + "value": "KeyVaultSecretUrl" + }, + "useExistingKek": { + "type": "string", + "defaultValue": "nokek", + "allowedValues": [ + "nokek", + "kek" + ], + "metadata": { + "description": "Select kek if the secret is encrypted with a key encryption key and pass explicit keyVaultKekUrl. For nokek, you can keep keyVaultKekUrl empty." + }, + "value": "kek" + }, + "kekUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "key encryption key Url. Ex: https://contosovault.vault.azure.net/keys/contosokek/562a4bb76b524a1493a6afe8e536ee78" + }, + "value": "FullVersionedKekUrl" + }, + "kekVaultResourceID": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "key encryption key vault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault" + }, + "value": "KekVaultResourceId" + } + }, + "variables": { + "createDiskUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-create-encrypted-managed-disk/CreateEncryptedManagedDisk-kek.json" + }, + "resources": [ + { + "name": "CreateEncryptedManagedDisk", + "type": "Microsoft.Resources/deployments", + "apiVersion": "2015-01-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-create-encrypted-managed-disk/CreateEncryptedManagedDisk-kek.json", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "vhdUri": { + "value": "vhdUri" + }, + "managedDiskName": { + "value": "MyManagedDisk" + }, + "keyVaultResourceID": { + "value": "keyVaultResourceID" + }, + "keyVaultSecretUrl": { + "value": "KeyVaultSecretUrl" + }, + "kekUrl": { + "value": "FullVersionedKekUrl" + }, + "kekVaultResourceID": { + "value": "KekVaultResourceId" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT999 b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT999 new file mode 100644 index 0000000..735e753 --- /dev/null +++ b/validation/scenario-azure-quickStart/snapshots/ARM_TEMPLATE_SNAPSHOT999 @@ -0,0 +1,127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorAzureQuickStart", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/CreateEncryptedManagedDisk-kek.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "timestamp": 1642962903424, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "ARM_TEMPLATE_SNAPSHOT", + "type": "arm", + "collection": "armtemplate", + "paths": [ + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/CreateEncryptedManagedDisk-kek.json", + "/quickstarts/microsoft.compute/create-encrypted-managed-disk/azuredeploy.parameters.json" + ], + "snapshotId": "ARM_TEMPLATE_SNAPSHOT999", + "status": "active", + "validate": true, + "resourceTypes": [ + "microsoft.compute/disks" + ] + }, + "snapshotId": "ARM_TEMPLATE_SNAPSHOT999", + "collection": "armtemplate", + "json": { + "contentVersion": "1.0.0.0", + "parameters": { + "vhdUri": { + "type": "string", + "metadata": { + "description": "Storage VHD Uri" + }, + "value": "vhdUri" + }, + "managedDiskName": { + "type": "string", + "metadata": { + "description": "Name of the managed disk to be copied" + }, + "value": "MyManagedDisk" + }, + "keyVaultResourceID": { + "type": "string", + "metadata": { + "description": "KeyVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault" + }, + "value": "keyVaultResourceID" + }, + "keyVaultSecretUrl": { + "type": "string", + "metadata": { + "description": "KeyVault secret Url. Ex: https://contosovault.vault.azure.net/secrets/contososecret/e088818e865e48488cf363af16dea596" + }, + "value": "KeyVaultSecretUrl" + }, + "kekUrl": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "KeyVault key encryption key Url. Ex: https://contosovault.vault.azure.net/keys/contosokek/562a4bb76b524a1493a6afe8e536ee78" + }, + "value": "FullVersionedKekUrl" + }, + "kekVaultResourceID": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "KekVault resource id. Ex: /subscriptions/subscriptionid/resourceGroups/contosorg/providers/Microsoft.KeyVault/vaults/contosovault" + }, + "value": "KekVaultResourceId" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for all resources." + } + }, + "useExistingKek": { + "value": "kek" + } + }, + "variables": { + "location": "[resourceGroup().location]", + "storageAccountType": "Standard_LRS", + "diskSzie": "128" + }, + "resources": [ + { + "apiVersion": "2016-04-30-preview", + "type": "Microsoft.Compute/disks", + "name": "MyManagedDisk", + "location": "[resourceGroup().location]", + "properties": { + "creationData": { + "createOption": "Import", + "sourceUri": "vhdUri" + }, + "accountType": "Standard_LRS", + "diskSizeGB": "128", + "encryptionSettings": { + "enabled": true, + "diskEncryptionKey": { + "sourceVault": { + "id": "keyVaultResourceID" + }, + "secretUrl": "KeyVaultSecretUrl" + }, + "keyEncryptionKey": { + "sourceVault": { + "id": "KekVaultResourceId" + }, + "keyUrl": "FullVersionedKekUrl" + } + } + } + } + ], + "\uff04schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/master-snapshot.json b/validation/scenario-azure-terraform-hashicorp/master-snapshot.json new file mode 100644 index 0000000..cb8c955 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/master-snapshot.json @@ -0,0 +1,14 @@ +{ + "$schema": "", + "contentVersion": "1.0.0.0", + "fileType": "masterSnapshot", + "connector": "gitConnectorRemote", + "remoteFile": "azure/terraform/master-snapshot.json", + "connectorUsers": [ + { + "id": "USER_1", + "testUser": "Shahin", + "source": "gitConnectorAzureTerraHashicorp" + } + ] + } \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/master-snapshot_gen.json b/validation/scenario-azure-terraform-hashicorp/master-snapshot_gen.json new file mode 100644 index 0000000..d36b15f --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/master-snapshot_gen.json @@ -0,0 +1,4289 @@ +{ + "$schema": "", + "contentVersion": "1.0.0.0", + "fileType": "snapshot", + "snapshots": [ + { + "type": "filesystem", + "connectorUser": "USER_1", + "nodes": [ + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-management/outputs.tf", + "/examples/api-management/variables.tf", + "/examples/api-management/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT1", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_api_management_product", + "azurerm_api_management_api", + "azurerm_resource_group", + "azurerm_api_management", + "azurerm_api_management_group", + "azurerm_api_management_product_api", + "azurerm_api_management_product_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/backup/output.tf", + "/examples/app-service/backup/variables.tf", + "/examples/app-service/backup/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT2", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_app_service_plan", + "azurerm_storage_container", + "azurerm_storage_account", + "azurerm_app_service" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/docker-authentication/outputs.tf", + "/examples/app-service/docker-authentication/variables.tf", + "/examples/app-service/docker-authentication/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT3", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/docker-basic/outputs.tf", + "/examples/app-service/docker-basic/variables.tf", + "/examples/app-service/docker-basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT4", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/docker-compose/outputs.tf", + "/examples/app-service/docker-compose/variables.tf", + "/examples/app-service/docker-compose/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT5", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/docker-kubernetes/outputs.tf", + "/examples/app-service/docker-kubernetes/variables.tf", + "/examples/app-service/docker-kubernetes/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT6", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/function-azure-RBAC-role-assignment/outputs.tf", + "/examples/app-service/function-azure-RBAC-role-assignment/variables.tf", + "/examples/app-service/function-azure-RBAC-role-assignment/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT7", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_app_service_plan", + "azurerm_role_assignment", + "azurerm_storage_account", + "azurerm_function_app", + "azurerm_application_insights" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/function-basic/outputs.tf", + "/examples/app-service/function-basic/variables.tf", + "/examples/app-service/function-basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT8", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_application_insights", + "azurerm_resource_group", + "azurerm_app_service_plan", + "azurerm_storage_account", + "azurerm_function_app" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/function-python/vars.tf", + "/examples/app-service/function-python/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT9", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_resource_group", + "azurerm_storage_account", + "azurerm_function_app" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/linux-authentication/outputs.tf", + "/examples/app-service/linux-authentication/variables.tf", + "/examples/app-service/linux-authentication/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT10", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/linux-basic/outputs.tf", + "/examples/app-service/linux-basic/variables.tf", + "/examples/app-service/linux-basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT11", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/linux-nodejs/outputs.tf", + "/examples/app-service/linux-nodejs/variables.tf", + "/examples/app-service/linux-nodejs/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT12", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/linux-php/outputs.tf", + "/examples/app-service/linux-php/variables.tf", + "/examples/app-service/linux-php/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT13", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/windows-authentication/outputs.tf", + "/examples/app-service/windows-authentication/variables.tf", + "/examples/app-service/windows-authentication/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT14", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/windows-basic/outputs.tf", + "/examples/app-service/windows-basic/variables.tf", + "/examples/app-service/windows-basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT15", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/windows-container/outputs.tf", + "/examples/app-service/windows-container/variables.tf", + "/examples/app-service/windows-container/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT16", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/windows-java/outputs.tf", + "/examples/app-service/windows-java/variables.tf", + "/examples/app-service/windows-java/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT17", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service-certificate/stored-in-keyvault/variables.tf", + "/examples/app-service-certificate/stored-in-keyvault/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT18", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_certificate", + "azurerm_key_vault", + "azurerm_resource_group", + "azurerm_key_vault_certificate", + "azurerm_key_vault_access_policy" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/examples/app-service-certificate/stored-in-keyvault/certificate.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT19", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service-certificate-order/standard/outputs.tf", + "/examples/app-service-certificate-order/standard/variables.tf", + "/examples/app-service-certificate-order/standard/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT20", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_certificate_order", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service-certificate-order/wildcard/outputs.tf", + "/examples/app-service-certificate-order/wildcard/variables.tf", + "/examples/app-service-certificate-order/wildcard/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT21", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_certificate_order", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service-environment-v3/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT22", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_environment_v3", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/automation-account/outputs.tf", + "/examples/automation-account/variables.tf", + "/examples/automation-account/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT23", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_automation_job_schedule", + "azurerm_automation_runbook", + "azurerm_resource_group", + "azurerm_automation_account", + "azurerm_automation_schedule" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/azure-monitoring/eventhub_integration/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT24", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventhub_namespace", + "azurerm_resource_group", + "azurerm_eventhub_namespace_authorization_rule", + "azurerm_eventhub", + "azurerm_monitor_diagnostic_setting" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/azure-monitoring/redis-cache-monitor/variables.tf", + "/examples/azure-monitoring/redis-cache-monitor/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT25", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_monitor_action_group", + "azurerm_monitor_metric_alert", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/batch/basic/variables.tf", + "/examples/batch/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT26", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_batch_account", + "azurerm_resource_group", + "azurerm_batch_pool" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/batch/custom-image/variables.tf", + "/examples/batch/custom-image/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT27", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_batch_account", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_batch_pool", + "azurerm_storage_container", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_storage_account", + "azurerm_image" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/bot-channel/variables.tf", + "/examples/bot-channel/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT28", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_bot_channels_registration", + "azurerm_resource_group", + "azurerm_bot_channel_directline" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cdn/outputs.tf", + "/examples/cdn/variables.tf", + "/examples/cdn/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT29", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_resource_group", + "azurerm_cdn_endpoint", + "azurerm_cdn_profile" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-instance/image-registry-credentials/variables.tf", + "/examples/container-instance/image-registry-credentials/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT30", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_container_group", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-instance/multiple-containers/outputs.tf", + "/examples/container-instance/multiple-containers/variables.tf", + "/examples/container-instance/multiple-containers/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT31", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_container_group", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-instance/network-profile/variables.tf", + "/examples/container-instance/network-profile/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT32", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_container_group", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_profile" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-instance/volume-mount/outputs.tf", + "/examples/container-instance/volume-mount/variables.tf", + "/examples/container-instance/volume-mount/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT33", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_container_group", + "azurerm_storage_account", + "azurerm_resource_group", + "azurerm_storage_share" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-registry/outputs.tf", + "/examples/container-registry/variables.tf", + "/examples/container-registry/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT34", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_container_registry" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cosmos-db/basic/outputs.tf", + "/examples/cosmos-db/basic/variables.tf", + "/examples/cosmos-db/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT35", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_cosmosdb_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cosmos-db/customer-managed-key/outputs.tf", + "/examples/cosmos-db/customer-managed-key/variables.tf", + "/examples/cosmos-db/customer-managed-key/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT36", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_key", + "azurerm_cosmosdb_account", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cosmos-db/failover/outputs.tf", + "/examples/cosmos-db/failover/variables.tf", + "/examples/cosmos-db/failover/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT37", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_cosmosdb_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/data-factory/shared-self-hosted/variables.tf", + "/examples/data-factory/shared-self-hosted/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT38", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_data_factory_integration_runtime_self_hosted", + "azurerm_mssql_virtual_machine", + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_subnet_network_security_group_association", + "azurerm_network_interface", + "azurerm_role_assignment", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_network_security_group", + "azurerm_network_interface_security_group_association", + "azurerm_data_factory", + "azurerm_virtual_machine_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/databricks/customer-managed-key/dbfs/variables.tf", + "/examples/databricks/customer-managed-key/dbfs/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT39", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_key", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_key_vault_access_policy", + "azurerm_databricks_workspace_customer_managed_key" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/databricks/customer-managed-key/managed-services/variables.tf", + "/examples/databricks/customer-managed-key/managed-services/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT40", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_key", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_key_vault_access_policy" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/databricks/secure-connectivity-cluster/with-load-balancer/variables.tf", + "/examples/databricks/secure-connectivity-cluster/with-load-balancer/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT41", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_subnet", + "azurerm_lb_outbound_rule", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_public_ip", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association", + "azurerm_lb" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/databricks/secure-connectivity-cluster/without-load-balancer/variables.tf", + "/examples/databricks/secure-connectivity-cluster/without-load-balancer/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT42", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/datalake/variables.tf", + "/examples/datalake/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT43", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_data_lake_store", + "azurerm_data_lake_store_firewall_rule", + "azurerm_resource_group", + "azurerm_data_lake_analytics_firewall_rule", + "azurerm_data_lake_analytics_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/desktopvirtualization/variables.tf", + "/examples/desktopvirtualization/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT44", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_desktop_application_group", + "azurerm_virtual_desktop_host_pool", + "azurerm_virtual_desktop_workspace_application_group_association", + "azurerm_resource_group", + "azurerm_virtual_desktop_workspace" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eventgrid/event-subscription/variables.tf", + "/examples/eventgrid/event-subscription/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT45", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventgrid_event_subscription", + "azurerm_resource_group", + "azurerm_storage_container", + "azurerm_storage_blob", + "azurerm_storage_account", + "azurerm_storage_queue" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eventhub/dedicated-eventhubs-cluster/variables.tf", + "/examples/eventhub/dedicated-eventhubs-cluster/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT46", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventhub_namespace", + "azurerm_eventhub", + "azurerm_resource_group", + "azurerm_eventhub_cluster" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eventhub/shared-parent-eventhub-namespace/variables.tf", + "/examples/eventhub/shared-parent-eventhub-namespace/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT47", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventhub_namespace", + "azurerm_eventhub_authorization_rule", + "azurerm_resource_group", + "azurerm_eventhub_consumer_group", + "azurerm_eventhub_namespace_authorization_rule", + "azurerm_eventhub" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/hdinsight/enterprise-security-package/providers.tf", + "/examples/hdinsight/enterprise-security-package/variables.tf", + "/examples/hdinsight/enterprise-security-package/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT48", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azuread_group", + "azurerm_storage_account", + "azurerm_role_assignment", + "azurerm_storage_container", + "azuread_group_member", + "azurerm_virtual_network_dns_servers", + "azuread_user", + "azurerm_hdinsight_hadoop_cluster", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association", + "azurerm_active_directory_domain_service", + "azurerm_user_assigned_identity" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/hdinsight/private-link/hadoop-interactive-spark-hbase-cluster/variables.tf", + "/examples/hdinsight/private-link/hadoop-interactive-spark-hbase-cluster/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT49", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_subnet_nat_gateway_association", + "azurerm_storage_account", + "azurerm_role_assignment", + "azurerm_nat_gateway", + "azurerm_nat_gateway_public_ip_association", + "azurerm_public_ip", + "azurerm_hdinsight_hadoop_cluster", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association", + "azurerm_storage_data_lake_gen2_filesystem", + "azurerm_user_assigned_identity" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/aci_connector_linux/outputs.tf", + "/examples/kubernetes/aci_connector_linux/vars.tf", + "/examples/kubernetes/aci_connector_linux/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT50", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_virtual_network", + "azurerm_role_assignment" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/basic-cluster/outputs.tf", + "/examples/kubernetes/basic-cluster/variables.tf", + "/examples/kubernetes/basic-cluster/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT51", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/egress-with-udr-azure-cni/outputs.tf", + "/examples/kubernetes/egress-with-udr-azure-cni/variables.tf", + "/examples/kubernetes/egress-with-udr-azure-cni/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT52", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_route_table", + "azurerm_subnet_route_table_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/egress-with-udr-kubenet/outputs.tf", + "/examples/kubernetes/egress-with-udr-kubenet/variables.tf", + "/examples/kubernetes/egress-with-udr-kubenet/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT53", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_role_assignment", + "azurerm_route_table", + "azurerm_subnet_route_table_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/monitoring-log-analytics/outputs.tf", + "/examples/kubernetes/monitoring-log-analytics/variables.tf", + "/examples/kubernetes/monitoring-log-analytics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT54", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_log_analytics_workspace", + "azurerm_log_analytics_solution" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/network-policy-calico/outputs.tf", + "/examples/kubernetes/network-policy-calico/variables.tf", + "/examples/kubernetes/network-policy-calico/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT55", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_virtual_network", + "azurerm_kubernetes_cluster_node_pool" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/nodes-on-internal-network/outputs.tf", + "/examples/kubernetes/nodes-on-internal-network/variables.tf", + "/examples/kubernetes/nodes-on-internal-network/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT56", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_virtual_network", + "azurerm_kubernetes_cluster_node_pool" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/old/advanced-networking/outputs.tf", + "/examples/kubernetes/old/advanced-networking/variables.tf", + "/examples/kubernetes/old/advanced-networking/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT57", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_route_table", + "azurerm_subnet_route_table_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/old/advanced-networking-calico-policy/outputs.tf", + "/examples/kubernetes/old/advanced-networking-calico-policy/variables.tf", + "/examples/kubernetes/old/advanced-networking-calico-policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT58", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_route_table", + "azurerm_subnet_route_table_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/old/role-based-access-control/outputs.tf", + "/examples/kubernetes/old/role-based-access-control/variables.tf", + "/examples/kubernetes/old/role-based-access-control/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT59", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/old/role-based-access-control-azuread/outputs.tf", + "/examples/kubernetes/old/role-based-access-control-azuread/variables.tf", + "/examples/kubernetes/old/role-based-access-control-azuread/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT60", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/private-api-server/outputs.tf", + "/examples/kubernetes/private-api-server/variables.tf", + "/examples/kubernetes/private-api-server/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT61", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/public-ip/outputs.tf", + "/examples/kubernetes/public-ip/variables.tf", + "/examples/kubernetes/public-ip/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT62", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_virtual_network" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/spot-node-pool/outputs.tf", + "/examples/kubernetes/spot-node-pool/variables.tf", + "/examples/kubernetes/spot-node-pool/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT63", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_kubernetes_cluster_node_pool" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/log-analytics/basic/variables.tf", + "/examples/log-analytics/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT64", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_log_analytics_workspace" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/log-analytics/solution/variables.tf", + "/examples/log-analytics/solution/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT65", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_log_analytics_workspace", + "azurerm_log_analytics_solution" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/logic-app/variables.tf", + "/examples/logic-app/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT66", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_logic_app_trigger_recurrence", + "azurerm_logic_app_workflow", + "azurerm_resource_group", + "azurerm_logic_app_action_http" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/managed-application/application-definition/variables.tf", + "/examples/managed-application/application-definition/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT67", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_managed_application_definition" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT68", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/2-soft-delete.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT69", + "status": "active", + "validate": true, + "resourceTypes": [ + "null_resource" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT70", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_disk_encryption_set", + "azurerm_key_vault_key", + "azurerm_role_assignment", + "azurerm_key_vault_access_policy", + "azurerm_managed_disk" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/media-services/basic/variables.tf", + "/examples/media-services/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT71", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_media_services_account", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/media-services/basic-with-assets/variables.tf", + "/examples/media-services/basic-with-assets/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT72", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_media_services_account", + "azurerm_resource_group", + "azurerm_media_asset" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/media-services/multiple-storage-accounts/variables.tf", + "/examples/media-services/multiple-storage-accounts/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT73", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_media_services_account", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/mssql/mssqlvm/variables.tf", + "/examples/mssql/mssqlvm/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT74", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_subnet_network_security_group_association", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_network_security_group", + "azurerm_network_interface_security_group_association", + "azurerm_mssql_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/account/variables.tf", + "/examples/netapp/account/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT75", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_netapp_account", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/nfsv3_volume_with_snapshot_policy/variables.tf", + "/examples/netapp/nfsv3_volume_with_snapshot_policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT76", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_netapp_snapshot_policy", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/pool/variables.tf", + "/examples/netapp/pool/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT77", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_netapp_account", + "azurerm_resource_group", + "azurerm_netapp_pool" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/snapshot/variables.tf", + "/examples/netapp/snapshot/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT78", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_snapshot", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/volume/variables.tf", + "/examples/netapp/volume/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT79", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/volume_crr/variables.tf", + "/examples/netapp/volume_crr/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT80", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/volume_dual_protocol/variables.tf", + "/examples/netapp/volume_dual_protocol/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT81", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_netapp_account", + "azurerm_resource_group", + "azurerm_netapp_pool", + "azurerm_netapp_volume" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/volume_from_snapshot/variables.tf", + "/examples/netapp/volume_from_snapshot/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT82", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_snapshot", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/policy-definition/variables.tf", + "/examples/policy-definition/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT83", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_policy_definition" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/application-gateway/variables.tf", + "/examples/private-endpoint/application-gateway/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT84", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_application_gateway", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/cosmos-db/variables.tf", + "/examples/private-endpoint/cosmos-db/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT85", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_cosmosdb_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/databricks/managed-services/variables.tf", + "/examples/private-endpoint/databricks/managed-services/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT86", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_private_dns_zone", + "azurerm_key_vault", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_key_vault_key", + "azurerm_databricks_workspace", + "azurerm_key_vault_access_policy", + "azurerm_private_dns_cname_record", + "azurerm_databricks_workspace_customer_managed_key", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/databricks/private-endpoint/variables.tf", + "/examples/private-endpoint/databricks/private-endpoint/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT87", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_private_dns_zone", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_private_dns_cname_record", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/postgresql/variables.tf", + "/examples/private-endpoint/postgresql/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT88", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_postgresql_server", + "azurerm_private_endpoint", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/private-dns-group/variables.tf", + "/examples/private-endpoint/private-dns-group/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT89", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_postgresql_server", + "azurerm_private_endpoint", + "azurerm_private_dns_zone", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/private-link-service/variables.tf", + "/examples/private-endpoint/private-link-service/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT90", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_private_link_service", + "azurerm_public_ip", + "azurerm_lb" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/recovery-services/advanced-policy/variables.tf", + "/examples/recovery-services/advanced-policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT91", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_recovery_services_vault", + "azurerm_resource_group", + "azurerm_backup_policy_vm" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/recovery-services/basic/variables.tf", + "/examples/recovery-services/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT92", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_recovery_services_vault", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/recovery-services/virtual-machine/variables.tf", + "/examples/recovery-services/virtual-machine/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT93", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_recovery_services_vault", + "azurerm_virtual_machine", + "azurerm_backup_policy_vm", + "azurerm_backup_protected_vm" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/redis-cache/basic/variables.tf", + "/examples/redis-cache/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT94", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_redis_cache", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/redis-cache/premium-with-backup/variables.tf", + "/examples/redis-cache/premium-with-backup/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT95", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_redis_cache", + "azurerm_storage_account", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/redis-cache/premium-with-clustering/variables.tf", + "/examples/redis-cache/premium-with-clustering/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT96", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_redis_cache", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/redis-cache/standard/variables.tf", + "/examples/redis-cache/standard/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT97", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_redis_cache", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/search/outputs.tf", + "/examples/search/variables.tf", + "/examples/search/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT98", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_search_service" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/security/securitycenter-pricing/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT99", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_security_center_subscription_pricing" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/security/securitycenter-setting/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT100", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_security_center_setting" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/0-base.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT101", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/1-keyvault.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT102", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_certificate" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/2-loadbalancer.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT103", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_lb_nat_pool", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_lb_probe" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/3-servicefabric.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT104", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_service_fabric_cluster", + "azurerm_windows_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/servicebus/basic/outputs.tf", + "/examples/servicebus/basic/variables.tf", + "/examples/servicebus/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT105", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_servicebus_topic", + "azurerm_servicebus_queue", + "azurerm_resource_group", + "azurerm_servicebus_namespace_authorization_rule", + "azurerm_servicebus_subscription", + "azurerm_servicebus_namespace" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/servicebus/forwarding/outputs.tf", + "/examples/servicebus/forwarding/variables.tf", + "/examples/servicebus/forwarding/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT106", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_servicebus_topic_authorization_rule", + "azurerm_servicebus_topic", + "azurerm_resource_group", + "azurerm_servicebus_namespace_authorization_rule", + "azurerm_servicebus_subscription", + "azurerm_servicebus_namespace" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/database/outputs.tf", + "/examples/sql-azure/database/variables.tf", + "/examples/sql-azure/database/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT107", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_sql_server", + "azurerm_resource_group", + "azurerm_sql_database", + "azurerm_sql_firewall_rule" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/failover_group/variables.tf", + "/examples/sql-azure/failover_group/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT108", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_mssql_server", + "azurerm_resource_group", + "azurerm_sql_failover_group", + "azurerm_mssql_database" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/managed_instance_failover_group/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT109", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_sql_managed_instance_failover_group", + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_subnet_network_security_group_association", + "azurerm_virtual_network_gateway", + "azurerm_sql_managed_instance", + "azurerm_route_table", + "azurerm_public_ip", + "azurerm_virtual_network_gateway_connection", + "azurerm_network_security_group", + "azurerm_subnet_route_table_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/sql_auditing_eventhub/variables.tf", + "/examples/sql-azure/sql_auditing_eventhub/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT110", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventhub_namespace", + "azurerm_mssql_server", + "azurerm_resource_group", + "azurerm_eventhub_namespace_authorization_rule", + "azurerm_eventhub", + "azurerm_mssql_server_extended_auditing_policy", + "azurerm_mssql_database", + "azurerm_monitor_diagnostic_setting", + "azurerm_mssql_database_extended_auditing_policy" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/sql_auditing_log_analytics/variables.tf", + "/examples/sql-azure/sql_auditing_log_analytics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT111", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_mssql_server", + "azurerm_log_analytics_workspace", + "azurerm_resource_group", + "azurerm_mssql_server_extended_auditing_policy", + "azurerm_mssql_database", + "azurerm_monitor_diagnostic_setting", + "azurerm_mssql_database_extended_auditing_policy" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/storage/storage-account/variables.tf", + "/examples/storage/storage-account/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT112", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/storage/storage-container/variables.tf", + "/examples/storage/storage-container/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT113", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_storage_container", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/storage/storage-share/variables.tf", + "/examples/storage/storage-share/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT114", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_resource_group", + "azurerm_storage_share" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/storage/storage_adls_acls/variables.tf", + "/examples/storage/storage_adls_acls/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT115", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_role_assignment", + "azurerm_storage_data_lake_gen2_path", + "azurerm_storage_account", + "azurerm_storage_data_lake_gen2_filesystem", + "azurerm_user_assigned_identity" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/stream-analytics/variables.tf", + "/examples/stream-analytics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT116", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_storage_container", + "azurerm_stream_analytics_job", + "azurerm_storage_account", + "azurerm_stream_analytics_reference_input_blob" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/traffic-manager/basic/variables.tf", + "/examples/traffic-manager/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT117", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_traffic_manager_profile", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/traffic-manager/virtual-machine/outputs.tf", + "/examples/traffic-manager/virtual-machine/variables.tf", + "/examples/traffic-manager/virtual-machine/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT118", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_traffic_manager_endpoint", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_traffic_manager_profile", + "azurerm_virtual_machine_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/traffic-manager/vm-scale-set/variables.tf", + "/examples/traffic-manager/vm-scale-set/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT119", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_traffic_manager_endpoint", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_traffic_manager_profile", + "azurerm_virtual_machine_scale_set", + "azurerm_lb_probe" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/basic-password/variables.tf", + "/examples/virtual-machines/linux/basic-password/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT120", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/basic-ssh/variables.tf", + "/examples/virtual-machines/linux/basic-ssh/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT121", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/custom-data/variables.tf", + "/examples/virtual-machines/linux/custom-data/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT122", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/ephemeral-os-disk/variables.tf", + "/examples/virtual-machines/linux/ephemeral-os-disk/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT123", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/load-balanced/variables.tf", + "/examples/virtual-machines/linux/load-balanced/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT124", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_availability_set", + "azurerm_network_interface", + "azurerm_network_security_group", + "azurerm_linux_virtual_machine", + "azurerm_public_ip", + "azurerm_network_interface_backend_address_pool_association", + "azurerm_lb", + "azurerm_lb_nat_rule" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/managed-disk-attachments/variables.tf", + "/examples/virtual-machines/linux/managed-disk-attachments/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT125", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine", + "azurerm_virtual_machine_data_disk_attachment", + "azurerm_managed_disk" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/provisioner/variables.tf", + "/examples/virtual-machines/linux/provisioner/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT126", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/public-ip/variables.tf", + "/examples/virtual-machines/linux/public-ip/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT127", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine", + "azurerm_public_ip", + "azurerm_network_security_group", + "azurerm_network_interface_security_group_association" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/outputs.tf", + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/variables.tf", + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT128", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_availability_set", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_storage_account", + "azurerm_network_interface_nat_rule_association", + "azurerm_lb_probe", + "azurerm_lb_nat_rule" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT129", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_group", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/2-generate-ssh.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT130", + "status": "active", + "validate": true, + "resourceTypes": [ + "tls_private_key" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT131", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/outputs.tf", + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/variables.tf", + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT132", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_template_deployment", + "azurerm_storage_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT133", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT134", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine", + "azurerm_virtual_machine_data_disk_attachment", + "azurerm_managed_disk" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/basic/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT135", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT136", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT137", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT138", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT139", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT140", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/outputs.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT141", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/outputs.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT142", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/multiple-network-interfaces/variables.tf", + "/examples/virtual-machines/virtual_machine/multiple-network-interfaces/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT143", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_network_security_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/openshift-origin/outputs.tf", + "/examples/virtual-machines/virtual_machine/openshift-origin/variables.tf", + "/examples/virtual-machines/virtual_machine/openshift-origin/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT144", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_availability_set", + "azurerm_network_interface", + "azurerm_network_security_group", + "azurerm_virtual_machine", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_storage_account", + "azurerm_lb_probe", + "azurerm_lb_nat_rule" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/linux/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/linux/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT145", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/linux/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/linux/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT146", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT147", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/2-certificates.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT148", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_certificate" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT149", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/outputs.tf", + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/variables.tf", + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT150", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_availability_set", + "azurerm_network_interface", + "azurerm_network_security_group", + "azurerm_storage_container", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_storage_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT151", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_storage_container", + "azurerm_storage_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT152", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/outputs.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT153", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_storage_account", + "azurerm_virtual_machine_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/vm-joined-to-active-directory/variables.tf", + "/examples/virtual-machines/virtual_machine/vm-joined-to-active-directory/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT154", + "status": "active", + "validate": true, + "resourceTypes": [ + "null_resource", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_virtual_machine_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/basic-password/variables.tf", + "/examples/virtual-machines/windows/basic-password/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT155", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/custom-data/variables.tf", + "/examples/virtual-machines/windows/custom-data/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT156", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/ephemeral-os-disk/variables.tf", + "/examples/virtual-machines/windows/ephemeral-os-disk/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT157", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/vm-custom-extension/vars.tf", + "/examples/virtual-machines/windows/vm-custom-extension/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT158", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/vm-joined-to-active-directory/variables.tf", + "/examples/virtual-machines/windows/vm-joined-to-active-directory/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT159", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_public_ip", + "azurerm_virtual_machine_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/vm-role-assignment/vars.tf", + "/examples/virtual-machines/windows/vm-role-assignment/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT160", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_role_assignment", + "azurerm_storage_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/azure-firewall/variables.tf", + "/examples/virtual-networks/azure-firewall/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT161", + "status": "active", + "validate": true, + "resourceTypes": [ + "random_string", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_storage_account", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_route_table", + "azurerm_public_ip", + "azurerm_subnet_route_table_association", + "azurerm_network_security_group", + "azurerm_network_interface_security_group_association", + "azurerm_firewall_network_rule_collection", + "azurerm_firewall", + "azurerm_firewall_application_rule_collection" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/basic/variables.tf", + "/examples/virtual-networks/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT162", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/multiple-subnets/variables.tf", + "/examples/virtual-networks/multiple-subnets/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT163", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/network-interface-app-security-group-association/variables.tf", + "/examples/virtual-networks/network-interface-app-security-group-association/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT164", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_application_security_group", + "azurerm_linux_virtual_machine", + "azurerm_public_ip", + "azurerm_network_interface_application_security_group_association", + "azurerm_network_security_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/network-security-group/variables.tf", + "/examples/virtual-networks/network-security-group/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT165", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_security_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/network-security-group-rule/variables.tf", + "/examples/virtual-networks/network-security-group-rule/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT166", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_rule", + "azurerm_network_security_group", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/private-link-service/variables.tf", + "/examples/virtual-networks/private-link-service/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT167", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_private_link_service", + "azurerm_public_ip", + "azurerm_lb" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/virtual-hub/variables.tf", + "/examples/virtual-networks/virtual-hub/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT168", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_hub", + "azurerm_virtual_wan", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/virtual-network-gateway/basic/variables.tf", + "/examples/virtual-networks/virtual-network-gateway/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT169", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_virtual_network_gateway", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/virtual-network-gateway/vpngw1/variables.tf", + "/examples/virtual-networks/virtual-network-gateway/vpngw1/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT170", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_virtual_network_gateway", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/virtual-network-peering/variables.tf", + "/examples/virtual-networks/virtual-network-peering/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT171", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_virtual_network_peering" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/extensions/custom-script/variables.tf", + "/examples/vm-scale-set/extensions/custom-script/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT172", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine_scale_set_extension", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/auto-scaling/variables.tf", + "/examples/vm-scale-set/linux/auto-scaling/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT173", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_monitor_autoscale_setting" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/basic/variables.tf", + "/examples/vm-scale-set/linux/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT174", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/boot-diagnostics/variables.tf", + "/examples/vm-scale-set/linux/boot-diagnostics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT175", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_storage_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/custom-data/variables.tf", + "/examples/vm-scale-set/linux/custom-data/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT176", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/data-disks/variables.tf", + "/examples/vm-scale-set/linux/data-disks/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT177", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/ephemeral-os-disk/variables.tf", + "/examples/vm-scale-set/linux/ephemeral-os-disk/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT178", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/extensions/variables.tf", + "/examples/vm-scale-set/linux/extensions/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT179", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/ipv6/variables.tf", + "/examples/vm-scale-set/linux/ipv6/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT180", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_linux_virtual_machine_scale_set", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/multiple-nics/variables.tf", + "/examples/vm-scale-set/linux/multiple-nics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT181", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/public-ip-per-instance/variables.tf", + "/examples/vm-scale-set/linux/public-ip-per-instance/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT182", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_public_ip_prefix", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/rolling-upgrade-policy/variables.tf", + "/examples/vm-scale-set/linux/rolling-upgrade-policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT183", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_lb_nat_pool", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_lb_probe" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/secrets/variables.tf", + "/examples/vm-scale-set/linux/secrets/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT184", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_key_vault_certificate" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/spot/variables.tf", + "/examples/vm-scale-set/linux/spot/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT185", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/ssh-keys/variables.tf", + "/examples/vm-scale-set/linux/ssh-keys/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT186", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/system-assigned-identity/variables.tf", + "/examples/vm-scale-set/linux/system-assigned-identity/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT187", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/user-assigned-identity/variables.tf", + "/examples/vm-scale-set/linux/user-assigned-identity/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT188", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_user_assigned_identity" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/zones/variables.tf", + "/examples/vm-scale-set/linux/zones/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT189", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/automatic-rolling-updates/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/automatic-rolling-updates/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT190", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_virtual_machine_scale_set", + "azurerm_lb_probe" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/autoscale/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/autoscale/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT191", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_monitor_autoscale_setting", + "azurerm_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/basic/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT192", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/loadbalancer-probe/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/loadbalancer-probe/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT193", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_lb_nat_pool", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_lb_probe" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/auto-scaling/variables.tf", + "/examples/vm-scale-set/windows/auto-scaling/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT194", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_monitor_autoscale_setting" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/basic/variables.tf", + "/examples/vm-scale-set/windows/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT195", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/boot-diagnostics/variables.tf", + "/examples/vm-scale-set/windows/boot-diagnostics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT196", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_storage_account" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/custom-data/variables.tf", + "/examples/vm-scale-set/windows/custom-data/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT197", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/custom-timezone/variables.tf", + "/examples/vm-scale-set/windows/custom-timezone/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT198", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/data-disks/variables.tf", + "/examples/vm-scale-set/windows/data-disks/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT199", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/ephemeral-os-disk/variables.tf", + "/examples/vm-scale-set/windows/ephemeral-os-disk/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT200", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/extensions/variables.tf", + "/examples/vm-scale-set/windows/extensions/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT201", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/hybrid-use-benefit/variables.tf", + "/examples/vm-scale-set/windows/hybrid-use-benefit/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT202", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/ipv6/variables.tf", + "/examples/vm-scale-set/windows/ipv6/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT203", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/multiple-nics/variables.tf", + "/examples/vm-scale-set/windows/multiple-nics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT204", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/public-ip-per-instance/variables.tf", + "/examples/vm-scale-set/windows/public-ip-per-instance/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT205", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_public_ip_prefix", + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/rolling-upgrade-policy/variables.tf", + "/examples/vm-scale-set/windows/rolling-upgrade-policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT206", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_lb_nat_pool", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_lb_probe" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/secrets/variables.tf", + "/examples/vm-scale-set/windows/secrets/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT207", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_key_vault_certificate" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT208", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_public_ip" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/2-key-vault.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT209", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_certificate" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/3-service-fabric.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT210", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_service_fabric_cluster" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT211", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/spot/variables.tf", + "/examples/vm-scale-set/windows/spot/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT212", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/system-assigned-identity/variables.tf", + "/examples/vm-scale-set/windows/system-assigned-identity/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT213", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/user-assigned-identity/variables.tf", + "/examples/vm-scale-set/windows/user-assigned-identity/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT214", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_user_assigned_identity" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/zones/variables.tf", + "/examples/vm-scale-set/windows/zones/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT215", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/web/static-site/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT216", + "status": "active", + "validate": true, + "resourceTypes": [ + "github_repository_file", + "azurerm_static_site", + "github_actions_secret", + "azurerm_resource_group" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/apimanagement/testdata/keyvaultcert.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT217", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/attestation/testdata/cert.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT218", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/automation/testdata/automation_certificate_test.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT219", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/batch/testdata/batch_certificate_password.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT220", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/datalake/testdata/application_gateway_test.cer" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT221", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/datashare/testdata/application_gateway_test.cer" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT222", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/firewall/testdata/key.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT223", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/iothub/testdata/batch_certificate.cer" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT224", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/keyvault/testdata/rsa_single.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT225", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/machinelearning/testdata/key.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT226", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/network/testdata/app_service_certificate.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT227", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/web/testdata/app_service_public_certificate.cer" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT228", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + } + ], + "testUser": "Shahin", + "source": "gitConnectorAzureTerraHashicorp" + } + ] +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/master-test.json b/validation/scenario-azure-terraform-hashicorp/master-test.json new file mode 100644 index 0000000..c4a159f --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/master-test.json @@ -0,0 +1,8 @@ +{ + "contentVersion": "1.0.0.0", + "notification": [], + "masterSnapshot": "master-snapshot", + "fileType": "mastertest", + "connector": "gitConnectorRemote", + "remoteFile": "azure/terraform/master-compliance-test.json" +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT1 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT1 new file mode 100644 index 0000000..26b2d04 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT1 @@ -0,0 +1,155 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/api-management/outputs.tf", + "/examples/api-management/variables.tf", + "/examples/api-management/main.tf" + ], + "timestamp": 1642943279555, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/api-management/outputs.tf", + "/examples/api-management/variables.tf", + "/examples/api-management/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT1", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_api_management_product", + "azurerm_api_management_api", + "azurerm_resource_group", + "azurerm_api_management", + "azurerm_api_management_group", + "azurerm_api_management_product_api", + "azurerm_api_management_product_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT1", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "rg", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.rg" + } + }, + { + "type": "azurerm_api_management", + "name": "apim_service", + "properties": { + "name": "${var.prefix}-apim-service", + "location": "${var.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "publisher_name": "Example Publisher", + "publisher_email": "publisher@example.com", + "sku_name": "Developer_1", + "tags": { + "Environment": "Example" + }, + "policy": [ + { + "xml_content": "\n \n \n \n \n " + } + ], + "compiletime_identity": "azurerm_api_management.apim_service" + } + }, + { + "type": "azurerm_api_management_api", + "name": "api", + "properties": { + "name": "${var.prefix}-api", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "api_management_name": "${azurerm_api_management.apim_service.name}", + "revision": 1, + "display_name": "${var.prefix}-api", + "path": "example", + "protocols": [ + "https", + "http" + ], + "description": "An example API", + "import": [ + { + "content_format": "${var.open_api_spec_content_format}", + "content_value": "${var.open_api_spec_content_value}" + } + ], + "compiletime_identity": "azurerm_api_management_api.api" + } + }, + { + "type": "azurerm_api_management_product", + "name": "product", + "properties": { + "product_id": "${var.prefix}-product", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "api_management_name": "${azurerm_api_management.apim_service.name}", + "display_name": "${var.prefix}-product", + "subscription_required": true, + "approval_required": false, + "published": true, + "description": "An example Product", + "compiletime_identity": "azurerm_api_management_product.product" + } + }, + { + "type": "azurerm_api_management_group", + "name": "group", + "properties": { + "name": "${var.prefix}-group", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "api_management_name": "${azurerm_api_management.apim_service.name}", + "display_name": "${var.prefix}-group", + "description": "An example group", + "compiletime_identity": "azurerm_api_management_group.group" + } + }, + { + "type": "azurerm_api_management_product_api", + "name": "product_api", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "api_management_name": "${azurerm_api_management.apim_service.name}", + "product_id": "${azurerm_api_management_product.product.product_id}", + "api_name": "${azurerm_api_management_api.api.name}", + "compiletime_identity": "azurerm_api_management_product_api.product_api" + } + }, + { + "type": "azurerm_api_management_product_group", + "name": "product_group", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "api_management_name": "${azurerm_api_management.apim_service.name}", + "product_id": "${azurerm_api_management_product.product.product_id}", + "group_name": "${azurerm_api_management_group.group.name}", + "compiletime_identity": "azurerm_api_management_product_group.product_group" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT10 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT10 new file mode 100644 index 0000000..b97f3cb --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT10 @@ -0,0 +1,119 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/linux-authentication/outputs.tf", + "/examples/app-service/linux-authentication/variables.tf", + "/examples/app-service/linux-authentication/main.tf" + ], + "timestamp": 1642943279597, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/linux-authentication/outputs.tf", + "/examples/app-service/linux-authentication/variables.tf", + "/examples/app-service/linux-authentication/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT10", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT10", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "kind": "Linux", + "reserved": true, + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "dotnet_framework_version": "v4.0", + "remote_debugging_enabled": true, + "remote_debugging_version": "VS2019" + } + ], + "auth_settings": [ + { + "enabled": true, + "issuer": "https://sts.windows.net/d13958f6-b541-4dad-97b9-5a39c6b01297", + "default_provider": "AzureActiveDirectory", + "unauthenticated_client_action": "RedirectToLoginPage", + "active_directory": [ + { + "client_id": "aadclientid", + "client_secret": "aadsecret", + "allowed_audiences": [ + "someallowedaudience" + ] + } + ], + "microsoft": [ + { + "client_id": "microsoftclientid", + "client_secret": "microsoftclientsecret", + "oauth_scopes": [ + "somescope" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT100 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT100 new file mode 100644 index 0000000..815cc57 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT100 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/security/securitycenter-setting/main.tf" + ], + "timestamp": 1642943279921, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/security/securitycenter-setting/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT100", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_security_center_setting" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT100", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_security_center_setting", + "name": "example", + "properties": { + "setting_name": "MCAS", + "enabled": true, + "compiletime_identity": "azurerm_security_center_setting.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT101 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT101 new file mode 100644 index 0000000..5b8e529 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT101 @@ -0,0 +1,104 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/0-base.tf" + ], + "timestamp": 1642943279924, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/0-base.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT101", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT101", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "westeurope", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-sf-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}sfexamplesa", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "GRS", + "tags": { + "environment": "example" + }, + "compiletime_identity": "azurerm_storage_account.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT102 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT102 new file mode 100644 index 0000000..5b4158c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT102 @@ -0,0 +1,134 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/1-keyvault.tf" + ], + "timestamp": 1642943279928, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/1-keyvault.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT102", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_certificate" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT102", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_key_vault", + "name": "example", + "properties": { + "name": "${var.prefix}examplekv", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "standard", + "enabled_for_deployment": true, + "access_policy": [ + { + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "certificate_permissions": [ + "create", + "delete", + "get", + "update", + "list" + ], + "key_permissions": [ + "create" + ], + "secret_permissions": [ + "set" + ], + "storage_permissions": [ + "set" + ] + } + ], + "compiletime_identity": "azurerm_key_vault.example" + } + }, + { + "type": "azurerm_key_vault_certificate", + "name": "example", + "properties": { + "name": "${var.prefix}acctestcert", + "key_vault_id": "${azurerm_key_vault.example.id}", + "certificate_policy": [ + { + "issuer_parameters": [ + { + "name": "Self" + } + ], + "key_properties": [ + { + "exportable": true, + "key_size": 2048, + "key_type": "RSA", + "reuse_key": true + } + ], + "lifetime_action": [ + { + "action": [ + { + "action_type": "AutoRenew" + } + ], + "trigger": [ + { + "days_before_expiry": 30 + } + ] + } + ], + "secret_properties": [ + { + "content_type": "application/x-pkcs12" + } + ], + "x509_certificate_properties": [ + { + "extended_key_usage": [ + "1.3.6.1.5.5.7.3.1", + "1.3.6.1.5.5.7.3.2" + ], + "key_usage": [ + "cRLSign", + "dataEncipherment", + "digitalSignature", + "keyAgreement", + "keyCertSign", + "keyEncipherment" + ], + "subject": "CN=${var.prefix}servicefabric.westeurope.cloudapp.azure.com", + "validity_in_months": 12 + } + ] + } + ], + "compiletime_identity": "azurerm_key_vault_certificate.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT103 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT103 new file mode 100644 index 0000000..f98b605 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT103 @@ -0,0 +1,145 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/2-loadbalancer.tf" + ], + "timestamp": 1642943279932, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/2-loadbalancer.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT103", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_lb_nat_pool", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_lb_probe" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT103", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}PIPForLB", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "domain_name_label": "exampleservicefabric", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_lb", + "name": "example", + "properties": { + "name": "${var.prefix}LoadBalancer", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "frontend_ip_configuration": [ + { + "name": "PublicIPAddress", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_lb.example" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "${var.prefix}BEAPool", + "compiletime_identity": "azurerm_lb_backend_address_pool.example" + } + }, + { + "type": "azurerm_lb_nat_pool", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "${var.prefix}SFApplicationPool", + "protocol": "Tcp", + "frontend_port_start": 3389, + "frontend_port_end": 4500, + "backend_port": 3389, + "frontend_ip_configuration_name": "${azurerm_lb.example.frontend_ip_configuration[0].name}", + "compiletime_identity": "azurerm_lb_nat_pool.example" + } + }, + { + "type": "azurerm_lb_rule", + "name": "example_tcp", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "${var.prefix}LBRuleTcp", + "protocol": "Tcp", + "frontend_port": 19000, + "backend_port": 19000, + "frontend_ip_configuration_name": "${azurerm_lb.example.frontend_ip_configuration[0].name}", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.example.id}", + "compiletime_identity": "azurerm_lb_rule.example_tcp" + } + }, + { + "type": "azurerm_lb_rule", + "name": "example_http", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "${var.prefix}LBRuleHttp", + "protocol": "Tcp", + "frontend_port": 19080, + "backend_port": 19080, + "frontend_ip_configuration_name": "${azurerm_lb.example.frontend_ip_configuration[0].name}", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.example.id}", + "compiletime_identity": "azurerm_lb_rule.example_http" + } + }, + { + "type": "azurerm_lb_probe", + "name": "example_tcp", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "${var.prefix}SFTcpGatewayProbe", + "port": 19000, + "compiletime_identity": "azurerm_lb_probe.example_tcp" + } + }, + { + "type": "azurerm_lb_probe", + "name": "example_http", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "${var.prefix}SFHttpGatewayProbe", + "port": 19080, + "compiletime_identity": "azurerm_lb_probe.example_http" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT104 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT104 new file mode 100644 index 0000000..8f0e57d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT104 @@ -0,0 +1,149 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/3-servicefabric.tf" + ], + "timestamp": 1642943279936, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/service-fabric/windows-vmss-self-signed-certs/variables.tf", + "/examples/service-fabric/windows-vmss-self-signed-certs/3-servicefabric.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT104", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_service_fabric_cluster", + "azurerm_windows_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT104", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_service_fabric_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}servicefabric", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "reliability_level": "Bronze", + "upgrade_mode": "Automatic", + "vm_image": "Windows", + "management_endpoint": "https://${var.prefix}servicefabric.westeurope.cloudapp.azure.com:19080", + "node_type": [ + { + "name": "Windows", + "instance_count": 3, + "is_primary": true, + "client_endpoint_port": 19000, + "http_endpoint_port": 19080 + } + ], + "reverse_proxy_certificate": [ + { + "thumbprint": "${azurerm_key_vault_certificate.example.thumbprint}", + "x509_store_name": "My" + } + ], + "certificate": [ + { + "thumbprint": "${azurerm_key_vault_certificate.example.thumbprint}", + "x509_store_name": "My" + } + ], + "client_certificate_thumbprint": [ + { + "thumbprint": "${azurerm_key_vault_certificate.example.thumbprint}", + "is_admin": true + } + ], + "compiletime_identity": "azurerm_service_fabric_cluster.example" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "example", + "properties": { + "name": "${var.prefix}examplesf", + "computer_name_prefix": "${var.prefix}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "Standard_D1_v2", + "instances": "${azurerm_service_fabric_cluster.example.node_type[0].instance_count}", + "admin_password": "P@55w0rd1234!", + "admin_username": "adminuser", + "overprovision": false, + "upgrade_mode": "Automatic", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter-with-Containers", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.example.id}", + "load_balancer_backend_address_pool_ids": [ + "${azurerm_lb_backend_address_pool.example.id}" + ], + "load_balancer_inbound_nat_rules_ids": [ + "${azurerm_lb_nat_pool.example.id}" + ] + } + ] + } + ], + "secret": [ + { + "certificate": [ + { + "store": "My", + "url": "${azurerm_key_vault_certificate.example.secret_id}" + } + ], + "key_vault_id": "${azurerm_key_vault.example.id}" + } + ], + "extension": [ + { + "name": "${var.prefix}ServiceFabricNode", + "publisher": "Microsoft.Azure.ServiceFabric", + "type": "ServiceFabricNode", + "type_handler_version": 1.1, + "auto_upgrade_minor_version": false, + "settings": "${jsonencode({'clusterEndpoint': '${azurerm_service_fabric_cluster.example.cluster_endpoint}', 'nodeTypeRef': '${azurerm_service_fabric_cluster.example.node_type[0].name}', 'durabilityLevel': 'bronze', 'nicPrefixOverride': '${azurerm_subnet.example.address_prefixes[0]}', 'enableParallelJobs': True, 'certificate': {'commonNames': ['${var.prefix}servicefabric.westeurope.cloudapp.azure.com'], 'x509StoreName': 'My'}})}", + "protected_settings": "${jsonencode({'StorageAccountKey1': '${azurerm_storage_account.example.primary_access_key}', 'StorageAccountKey2': '${azurerm_storage_account.example.secondary_access_key}'})}" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT105 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT105 new file mode 100644 index 0000000..2357b4c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT105 @@ -0,0 +1,118 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/servicebus/basic/outputs.tf", + "/examples/servicebus/basic/variables.tf", + "/examples/servicebus/basic/main.tf" + ], + "timestamp": 1642943279939, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/servicebus/basic/outputs.tf", + "/examples/servicebus/basic/variables.tf", + "/examples/servicebus/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT105", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_servicebus_topic", + "azurerm_servicebus_queue", + "azurerm_resource_group", + "azurerm_servicebus_namespace_authorization_rule", + "azurerm_servicebus_subscription", + "azurerm_servicebus_namespace" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT105", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_servicebus_namespace", + "name": "example", + "properties": { + "name": "${var.prefix}-sbnamespace", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "compiletime_identity": "azurerm_servicebus_namespace.example" + } + }, + { + "type": "azurerm_servicebus_namespace_authorization_rule", + "name": "example", + "properties": { + "name": "${var.prefix}-sbnauth", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "send": true, + "listen": true, + "manage": true, + "compiletime_identity": "azurerm_servicebus_namespace_authorization_rule.example" + } + }, + { + "type": "azurerm_servicebus_topic", + "name": "example", + "properties": { + "name": "${var.prefix}-sbtopic", + "resource_group_name": "${azurerm_resource_group.example.name}", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "enable_partitioning": true, + "compiletime_identity": "azurerm_servicebus_topic.example" + } + }, + { + "type": "azurerm_servicebus_subscription", + "name": "example", + "properties": { + "name": "${var.prefix}-sbsubscription", + "resource_group_name": "${azurerm_resource_group.example.name}", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "topic_name": "${azurerm_servicebus_topic.example.name}", + "max_delivery_count": 1, + "compiletime_identity": "azurerm_servicebus_subscription.example" + } + }, + { + "type": "azurerm_servicebus_queue", + "name": "example", + "properties": { + "name": "${var.prefix}-sbqueue", + "resource_group_name": "${azurerm_resource_group.example.name}", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "enable_partitioning": true, + "compiletime_identity": "azurerm_servicebus_queue.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT106 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT106 new file mode 100644 index 0000000..086cb4e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT106 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/servicebus/forwarding/outputs.tf", + "/examples/servicebus/forwarding/variables.tf", + "/examples/servicebus/forwarding/main.tf" + ], + "timestamp": 1642943279943, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/servicebus/forwarding/outputs.tf", + "/examples/servicebus/forwarding/variables.tf", + "/examples/servicebus/forwarding/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT106", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_servicebus_topic_authorization_rule", + "azurerm_servicebus_topic", + "azurerm_resource_group", + "azurerm_servicebus_namespace_authorization_rule", + "azurerm_servicebus_subscription", + "azurerm_servicebus_namespace" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT106", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_servicebus_namespace", + "name": "example", + "properties": { + "name": "${var.prefix}-sbnamespace", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "compiletime_identity": "azurerm_servicebus_namespace.example" + } + }, + { + "type": "azurerm_servicebus_namespace_authorization_rule", + "name": "example", + "properties": { + "name": "${var.prefix}-sbnauth", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "send": true, + "listen": true, + "manage": true, + "compiletime_identity": "azurerm_servicebus_namespace_authorization_rule.example" + } + }, + { + "type": "azurerm_servicebus_topic", + "name": "source", + "properties": { + "name": "${var.prefix}-sbt-source", + "resource_group_name": "${azurerm_resource_group.example.name}", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "enable_partitioning": true, + "compiletime_identity": "azurerm_servicebus_topic.source" + } + }, + { + "type": "azurerm_servicebus_topic", + "name": "destination", + "properties": { + "name": "${var.prefix}-sbt-destination", + "resource_group_name": "${azurerm_resource_group.example.name}", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "enable_partitioning": true, + "compiletime_identity": "azurerm_servicebus_topic.destination" + } + }, + { + "type": "azurerm_servicebus_topic_authorization_rule", + "name": "example", + "properties": { + "name": "${var.prefix}-sbtauth-source", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "topic_name": "${azurerm_servicebus_topic.source.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "send": true, + "listen": true, + "manage": true, + "compiletime_identity": "azurerm_servicebus_topic_authorization_rule.example" + } + }, + { + "type": "azurerm_servicebus_subscription", + "name": "example", + "properties": { + "name": "${var.prefix}-sbsubscription", + "resource_group_name": "${azurerm_resource_group.example.name}", + "namespace_name": "${azurerm_servicebus_namespace.example.name}", + "topic_name": "${azurerm_servicebus_topic.source.name}", + "forward_to": "${azurerm_servicebus_topic.destination.name}", + "max_delivery_count": 1, + "compiletime_identity": "azurerm_servicebus_subscription.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT107 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT107 new file mode 100644 index 0000000..8b908f8 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT107 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/sql-azure/database/outputs.tf", + "/examples/sql-azure/database/variables.tf", + "/examples/sql-azure/database/main.tf" + ], + "timestamp": 1642943279947, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/database/outputs.tf", + "/examples/sql-azure/database/variables.tf", + "/examples/sql-azure/database/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT107", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_sql_server", + "azurerm_resource_group", + "azurerm_sql_database", + "azurerm_sql_firewall_rule" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT107", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_sql_server", + "name": "example", + "properties": { + "name": "${var.prefix}-sqlsvr", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "version": 12.0, + "administrator_login": "4dm1n157r470r", + "administrator_login_password": "4-v3ry-53cr37-p455w0rd", + "compiletime_identity": "azurerm_sql_server.example" + } + }, + { + "type": "azurerm_sql_database", + "name": "example", + "properties": { + "name": "${var.prefix}-db", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "server_name": "${azurerm_sql_server.example.name}", + "edition": "Basic", + "collation": "SQL_Latin1_General_CP1_CI_AS", + "create_mode": "Default", + "requested_service_objective_name": "Basic", + "compiletime_identity": "azurerm_sql_database.example" + } + }, + { + "type": "azurerm_sql_firewall_rule", + "name": "example", + "properties": { + "name": "allow-azure-services", + "resource_group_name": "${azurerm_resource_group.example.name}", + "server_name": "${azurerm_sql_server.example.name}", + "start_ip_address": "0.0.0.0", + "end_ip_address": "0.0.0.0", + "compiletime_identity": "azurerm_sql_firewall_rule.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT108 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT108 new file mode 100644 index 0000000..f9e1036 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT108 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/sql-azure/failover_group/variables.tf", + "/examples/sql-azure/failover_group/main.tf" + ], + "timestamp": 1642943279950, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/failover_group/variables.tf", + "/examples/sql-azure/failover_group/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT108", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_mssql_server", + "azurerm_resource_group", + "azurerm_sql_failover_group", + "azurerm_mssql_database" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT108", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_mssql_server", + "name": "example", + "properties": { + "name": "${var.prefix}-server-primary", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${var.location}", + "version": 12.0, + "administrator_login": "mradministrator", + "administrator_login_password": "thisIsDog11", + "compiletime_identity": "azurerm_mssql_server.example" + } + }, + { + "type": "azurerm_mssql_server", + "name": "secondary", + "properties": { + "name": "${var.prefix}-server-secondary", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${var.location_alt}", + "version": 12.0, + "administrator_login": "mradministrator", + "administrator_login_password": "thisIsDog11", + "compiletime_identity": "azurerm_mssql_server.secondary" + } + }, + { + "type": "azurerm_mssql_database", + "name": "example", + "properties": { + "name": "${var.prefix}-db-primary", + "server_id": "${azurerm_mssql_server.example.id}", + "collation": "SQL_AltDiction_CP850_CI_AI", + "license_type": "BasePrice", + "sku_name": "GP_Gen5_2", + "compiletime_identity": "azurerm_mssql_database.example" + } + }, + { + "type": "azurerm_mssql_database", + "name": "secondary", + "properties": { + "name": "${var.prefix}-db-secondary", + "server_id": "${azurerm_mssql_server.secondary.id}", + "create_mode": "Secondary", + "creation_source_database_id": "${azurerm_mssql_database.example.id}", + "compiletime_identity": "azurerm_mssql_database.secondary" + } + }, + { + "type": "azurerm_sql_failover_group", + "name": "example", + "properties": { + "name": "${var.prefix}-failover-group", + "resource_group_name": "${azurerm_resource_group.example.name}", + "server_name": "${azurerm_mssql_server.example.name}", + "databases": [ + "${azurerm_mssql_database.example.id}" + ], + "partner_servers": [ + { + "id": "${azurerm_mssql_server.secondary.id}" + } + ], + "read_write_endpoint_failover_policy": [ + { + "mode": "Automatic", + "grace_minutes": 60 + } + ], + "depends_on": [ + "${azurerm_mssql_database.secondary}" + ], + "compiletime_identity": "azurerm_sql_failover_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT109 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT109 new file mode 100644 index 0000000..b06af87 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT109 @@ -0,0 +1,3066 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/sql-azure/managed_instance_failover_group/main.tf" + ], + "timestamp": 1642943279954, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/managed_instance_failover_group/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT109", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_sql_managed_instance_failover_group", + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_subnet_network_security_group_association", + "azurerm_virtual_network_gateway", + "azurerm_sql_managed_instance", + "azurerm_route_table", + "azurerm_public_ip", + "azurerm_virtual_network_gateway_connection", + "azurerm_network_security_group", + "azurerm_subnet_route_table_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT109", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "variable": [ + { + "prefix": { + "description": "The prefix which should be used for all resources in this example" + } + }, + { + "location": { + "description": "The Azure Region in which all primary resources in this example should be created." + } + }, + { + "location_secondary": { + "description": "The Azure Region in which all secondary resources in this example should be created." + } + } + ], + "resources": [ + { + "type": "azurerm_network_security_group", + "name": "nsg", + "properties": { + "name": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "prefix": "${var.prefix}primary", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_group", + "name": "nsg", + "properties": { + "name": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "prefix": "${var.prefix}secondary", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_management_inbound", + "properties": { + "name": "allow_management_inbound", + "priority": 106, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_ranges": [ + 9000, + 9003, + 1438, + 1440, + 1452 + ], + "source_address_prefix": "*", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_misubnet_inbound", + "properties": { + "name": "allow_misubnet_inbound", + "priority": 200, + "direction": "Inbound", + "access": "Allow", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "10.0.0.0/24", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_health_probe_inbound", + "properties": { + "name": "allow_health_probe_inbound", + "priority": 300, + "direction": "Inbound", + "access": "Allow", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "AzureLoadBalancer", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_tds_inbound", + "properties": { + "name": "allow_tds_inbound", + "priority": 1000, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 1433, + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_redirect_inbound", + "properties": { + "name": "allow_redirect_inbound", + "priority": 1100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": "11000-11999", + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_geodr_inbound", + "properties": { + "name": "allow_geodr_inbound", + "priority": 1200, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 5022, + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "deny_all_inbound", + "properties": { + "name": "deny_all_inbound", + "priority": 4096, + "direction": "Inbound", + "access": "Deny", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "*", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_management_outbound", + "properties": { + "name": "allow_management_outbound", + "priority": 102, + "direction": "Outbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_ranges": [ + 80, + 443, + 12000 + ], + "source_address_prefix": "*", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_misubnet_outbound", + "properties": { + "name": "allow_misubnet_outbound", + "priority": 200, + "direction": "Outbound", + "access": "Allow", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "*", + "destination_address_prefix": "10.0.0.0/24", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_redirect_outbound", + "properties": { + "name": "allow_redirect_outbound", + "priority": 1100, + "direction": "Outbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": "11000-11999", + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_geodr_outbound", + "properties": { + "name": "allow_geodr_outbound", + "priority": 1200, + "direction": "Outbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 5022, + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "deny_all_outbound", + "properties": { + "name": "deny_all_outbound", + "priority": 4096, + "direction": "Outbound", + "access": "Deny", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "*", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "network_security_group_name": "${var.prefix}primary", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_management_inbound", + "properties": { + "name": "allow_management_inbound", + "priority": 106, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_ranges": [ + 9000, + 9003, + 1438, + 1440, + 1452 + ], + "source_address_prefix": "*", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_misubnet_inbound", + "properties": { + "name": "allow_misubnet_inbound", + "priority": 200, + "direction": "Inbound", + "access": "Allow", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "10.1.0.0/24", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_health_probe_inbound", + "properties": { + "name": "allow_health_probe_inbound", + "priority": 300, + "direction": "Inbound", + "access": "Allow", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "AzureLoadBalancer", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_tds_inbound", + "properties": { + "name": "allow_tds_inbound", + "priority": 1000, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 1433, + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_redirect_inbound", + "properties": { + "name": "allow_redirect_inbound", + "priority": 1100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": "11000-11999", + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_geodr_inbound", + "properties": { + "name": "allow_geodr_inbound", + "priority": 1200, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 5022, + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "deny_all_inbound", + "properties": { + "name": "deny_all_inbound", + "priority": 4096, + "direction": "Inbound", + "access": "Deny", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "*", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_management_outbound", + "properties": { + "name": "allow_management_outbound", + "priority": 102, + "direction": "Outbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_ranges": [ + 80, + 443, + 12000 + ], + "source_address_prefix": "*", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_misubnet_outbound", + "properties": { + "name": "allow_misubnet_outbound", + "priority": 200, + "direction": "Outbound", + "access": "Allow", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "*", + "destination_address_prefix": "10.1.0.0/24", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_redirect_outbound", + "properties": { + "name": "allow_redirect_outbound", + "priority": 1100, + "direction": "Outbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": "11000-11999", + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "allow_geodr_outbound", + "properties": { + "name": "allow_geodr_outbound", + "priority": 1200, + "direction": "Outbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 5022, + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "deny_all_outbound", + "properties": { + "name": "deny_all_outbound", + "priority": 4096, + "direction": "Outbound", + "access": "Deny", + "protocol": "*", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "*", + "destination_address_prefix": "*", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "network_security_group_name": "${var.prefix}secondary", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_virtual_network", + "name": "vnet", + "properties": { + "name": "${var.prefix}primary", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.primary.location}", + "prefix": "${var.prefix}primary", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_virtual_network", + "name": "vnet", + "properties": { + "name": "${var.prefix}secondary", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "address_space": [ + "10.1.0.0/16" + ], + "location": "${azurerm_resource_group.secondary.location}", + "prefix": "${var.prefix}secondary", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_subnet", + "name": "subnet", + "properties": { + "name": "${var.prefix}primary", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "virtual_network_name": "${var.prefix}primary", + "address_prefixes": [ + "10.0.0.0/24" + ], + "delegation": [ + { + "name": "managedinstancedelegation", + "service_delegation": [ + { + "name": "Microsoft.Sql/managedInstances", + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ] + } + ] + } + ], + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_subnet", + "name": "subnet", + "properties": { + "name": "${var.prefix}secondary", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "virtual_network_name": "${var.prefix}secondary", + "address_prefixes": [ + "10.1.0.0/24" + ], + "delegation": [ + { + "name": "managedinstancedelegation", + "service_delegation": [ + { + "name": "Microsoft.Sql/managedInstances", + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ] + } + ] + } + ], + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_subnet", + "name": "gateway_snet_1", + "properties": { + "name": "GatewaySubnet", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "virtual_network_name": "${module.primary.vnet_name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24", + "compiletime_identity": "module.vnet_gateway" + } + }, + { + "type": "azurerm_subnet", + "name": "gateway_snet_2", + "properties": { + "name": "GatewaySubnet", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "virtual_network_name": "${module.secondary.vnet_name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24", + "compiletime_identity": "module.vnet_gateway" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "subnet_nsg", + "properties": { + "subnet_id": "${azurerm_subnet.subnet.id}", + "network_security_group_id": "${azurerm_network_security_group.nsg.id}", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "subnet_nsg", + "properties": { + "subnet_id": "${azurerm_subnet.subnet.id}", + "network_security_group_id": "${azurerm_network_security_group.nsg.id}", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_route_table", + "name": "rt", + "properties": { + "name": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "disable_bgp_route_propagation": false, + "route": [ + { + "name": "subnet-to-vnetlocal", + "address_prefix": "10.0.0.0/24", + "next_hop_type": "VnetLocal" + }, + { + "name": "mi-13-64-11-nexthop-internet", + "address_prefix": "13.64.0.0/11", + "next_hop_type": "Internet" + }, + { + "name": "mi-13-104-14-nexthop-internet", + "address_prefix": "13.104.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-34-15-nexthop-internet", + "address_prefix": "20.34.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-36-14-nexthop-internet", + "address_prefix": "20.36.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-40-13-nexthop-internet", + "address_prefix": "20.40.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-128-16-nexthop-internet", + "address_prefix": "20.128.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-140-15-nexthop-internet", + "address_prefix": "20.140.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-144-14-nexthop-internet", + "address_prefix": "20.144.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-150-15-nexthop-internet", + "address_prefix": "20.150.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-160-12-nexthop-internet", + "address_prefix": "20.160.0.0/12", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-176-14-nexthop-internet", + "address_prefix": "20.176.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-180-14-nexthop-internet", + "address_prefix": "20.180.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-184-13-nexthop-internet", + "address_prefix": "20.184.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-40-64-10-nexthop-internet", + "address_prefix": "40.64.0.0/10", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-4-15-nexthop-internet", + "address_prefix": "51.4.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-8-16-nexthop-internet", + "address_prefix": "51.8.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-10-15-nexthop-internet", + "address_prefix": "51.10.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-12-15-nexthop-internet", + "address_prefix": "51.12.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-18-16-nexthop-internet", + "address_prefix": "51.18.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-51-16-nexthop-internet", + "address_prefix": "51.51.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-53-16-nexthop-internet", + "address_prefix": "51.53.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-103-16-nexthop-internet", + "address_prefix": "51.103.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-104-15-nexthop-internet", + "address_prefix": "51.104.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-107-16-nexthop-internet", + "address_prefix": "51.107.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-116-16-nexthop-internet", + "address_prefix": "51.116.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-120-16-nexthop-internet", + "address_prefix": "51.120.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-124-16-nexthop-internet", + "address_prefix": "51.124.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-132-16-nexthop-internet", + "address_prefix": "51.132.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-136-15-nexthop-internet", + "address_prefix": "51.136.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-138-16-nexthop-internet", + "address_prefix": "51.138.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-140-14-nexthop-internet", + "address_prefix": "51.140.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-144-15-nexthop-internet", + "address_prefix": "51.144.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-96-12-nexthop-internet", + "address_prefix": "52.96.0.0/12", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-112-14-nexthop-internet", + "address_prefix": "52.112.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-125-16-nexthop-internet", + "address_prefix": "52.125.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-126-15-nexthop-internet", + "address_prefix": "52.126.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-130-15-nexthop-internet", + "address_prefix": "52.130.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-132-14-nexthop-internet", + "address_prefix": "52.132.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-136-13-nexthop-internet", + "address_prefix": "52.136.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-145-16-nexthop-internet", + "address_prefix": "52.145.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-146-15-nexthop-internet", + "address_prefix": "52.146.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-148-14-nexthop-internet", + "address_prefix": "52.148.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-152-13-nexthop-internet", + "address_prefix": "52.152.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-160-11-nexthop-internet", + "address_prefix": "52.160.0.0/11", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-224-11-nexthop-internet", + "address_prefix": "52.224.0.0/11", + "next_hop_type": "Internet" + }, + { + "name": "mi-64-4-18-nexthop-internet", + "address_prefix": "64.4.0.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-65-52-14-nexthop-internet", + "address_prefix": "65.52.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-66-119-144-20-nexthop-internet", + "address_prefix": "66.119.144.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-70-37-17-nexthop-internet", + "address_prefix": "70.37.0.0/17", + "next_hop_type": "Internet" + }, + { + "name": "mi-70-37-128-18-nexthop-internet", + "address_prefix": "70.37.128.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-91-190-216-21-nexthop-internet", + "address_prefix": "91.190.216.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-94-245-64-18-nexthop-internet", + "address_prefix": "94.245.64.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-9-8-22-nexthop-internet", + "address_prefix": "103.9.8.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-25-156-24-nexthop-internet", + "address_prefix": "103.25.156.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-25-157-24-nexthop-internet", + "address_prefix": "103.25.157.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-25-158-23-nexthop-internet", + "address_prefix": "103.25.158.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-36-96-22-nexthop-internet", + "address_prefix": "103.36.96.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-255-140-22-nexthop-internet", + "address_prefix": "103.255.140.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-104-40-13-nexthop-internet", + "address_prefix": "104.40.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-104-146-15-nexthop-internet", + "address_prefix": "104.146.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-104-208-13-nexthop-internet", + "address_prefix": "104.208.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-111-221-16-20-nexthop-internet", + "address_prefix": "111.221.16.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-111-221-64-18-nexthop-internet", + "address_prefix": "111.221.64.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-129-75-16-nexthop-internet", + "address_prefix": "129.75.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-1-24-nexthop-internet", + "address_prefix": "131.253.1.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-3-24-nexthop-internet", + "address_prefix": "131.253.3.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-5-24-nexthop-internet", + "address_prefix": "131.253.5.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-6-24-nexthop-internet", + "address_prefix": "131.253.6.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-8-24-nexthop-internet", + "address_prefix": "131.253.8.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-12-22-nexthop-internet", + "address_prefix": "131.253.12.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-16-23-nexthop-internet", + "address_prefix": "131.253.16.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-18-24-nexthop-internet", + "address_prefix": "131.253.18.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-21-24-nexthop-internet", + "address_prefix": "131.253.21.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-22-23-nexthop-internet", + "address_prefix": "131.253.22.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-24-21-nexthop-internet", + "address_prefix": "131.253.24.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-32-20-nexthop-internet", + "address_prefix": "131.253.32.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-61-24-nexthop-internet", + "address_prefix": "131.253.61.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-62-23-nexthop-internet", + "address_prefix": "131.253.62.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-64-18-nexthop-internet", + "address_prefix": "131.253.64.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-128-17-nexthop-internet", + "address_prefix": "131.253.128.0/17", + "next_hop_type": "Internet" + }, + { + "name": "mi-132-245-16-nexthop-internet", + "address_prefix": "132.245.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-134-170-16-nexthop-internet", + "address_prefix": "134.170.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-134-177-16-nexthop-internet", + "address_prefix": "134.177.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-137-116-15-nexthop-internet", + "address_prefix": "137.116.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-137-135-16-nexthop-internet", + "address_prefix": "137.135.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-138-91-16-nexthop-internet", + "address_prefix": "138.91.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-138-196-16-nexthop-internet", + "address_prefix": "138.196.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-139-217-16-nexthop-internet", + "address_prefix": "139.217.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-139-219-16-nexthop-internet", + "address_prefix": "139.219.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-141-251-16-nexthop-internet", + "address_prefix": "141.251.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-146-147-16-nexthop-internet", + "address_prefix": "146.147.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-147-243-16-nexthop-internet", + "address_prefix": "147.243.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-150-171-16-nexthop-internet", + "address_prefix": "150.171.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-150-242-48-22-nexthop-internet", + "address_prefix": "150.242.48.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-157-54-15-nexthop-internet", + "address_prefix": "157.54.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-157-56-14-nexthop-internet", + "address_prefix": "157.56.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-157-60-16-nexthop-internet", + "address_prefix": "157.60.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-167-220-16-nexthop-internet", + "address_prefix": "167.220.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-168-61-16-nexthop-internet", + "address_prefix": "168.61.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-168-62-15-nexthop-internet", + "address_prefix": "168.62.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-191-232-13-nexthop-internet", + "address_prefix": "191.232.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-32-16-nexthop-internet", + "address_prefix": "192.32.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-48-225-24-nexthop-internet", + "address_prefix": "192.48.225.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-84-159-24-nexthop-internet", + "address_prefix": "192.84.159.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-84-160-23-nexthop-internet", + "address_prefix": "192.84.160.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-100-102-24-nexthop-internet", + "address_prefix": "192.100.102.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-100-103-24-nexthop-internet", + "address_prefix": "192.100.103.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-197-157-24-nexthop-internet", + "address_prefix": "192.197.157.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-193-149-64-19-nexthop-internet", + "address_prefix": "193.149.64.0/19", + "next_hop_type": "Internet" + }, + { + "name": "mi-193-221-113-24-nexthop-internet", + "address_prefix": "193.221.113.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-194-69-96-19-nexthop-internet", + "address_prefix": "194.69.96.0/19", + "next_hop_type": "Internet" + }, + { + "name": "mi-194-110-197-24-nexthop-internet", + "address_prefix": "194.110.197.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-198-105-232-22-nexthop-internet", + "address_prefix": "198.105.232.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-198-200-130-24-nexthop-internet", + "address_prefix": "198.200.130.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-198-206-164-24-nexthop-internet", + "address_prefix": "198.206.164.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-60-28-24-nexthop-internet", + "address_prefix": "199.60.28.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-74-210-24-nexthop-internet", + "address_prefix": "199.74.210.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-103-90-23-nexthop-internet", + "address_prefix": "199.103.90.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-103-122-24-nexthop-internet", + "address_prefix": "199.103.122.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-242-32-20-nexthop-internet", + "address_prefix": "199.242.32.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-242-48-21-nexthop-internet", + "address_prefix": "199.242.48.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-202-89-224-20-nexthop-internet", + "address_prefix": "202.89.224.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-13-120-21-nexthop-internet", + "address_prefix": "204.13.120.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-14-180-22-nexthop-internet", + "address_prefix": "204.14.180.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-135-24-nexthop-internet", + "address_prefix": "204.79.135.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-179-24-nexthop-internet", + "address_prefix": "204.79.179.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-181-24-nexthop-internet", + "address_prefix": "204.79.181.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-188-24-nexthop-internet", + "address_prefix": "204.79.188.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-195-24-nexthop-internet", + "address_prefix": "204.79.195.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-196-23-nexthop-internet", + "address_prefix": "204.79.196.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-252-24-nexthop-internet", + "address_prefix": "204.79.252.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-152-18-23-nexthop-internet", + "address_prefix": "204.152.18.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-152-140-23-nexthop-internet", + "address_prefix": "204.152.140.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-192-24-nexthop-internet", + "address_prefix": "204.231.192.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-194-23-nexthop-internet", + "address_prefix": "204.231.194.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-197-24-nexthop-internet", + "address_prefix": "204.231.197.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-198-23-nexthop-internet", + "address_prefix": "204.231.198.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-200-21-nexthop-internet", + "address_prefix": "204.231.200.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-208-20-nexthop-internet", + "address_prefix": "204.231.208.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-236-24-nexthop-internet", + "address_prefix": "204.231.236.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-205-174-224-20-nexthop-internet", + "address_prefix": "205.174.224.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-206-138-168-21-nexthop-internet", + "address_prefix": "206.138.168.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-206-191-224-19-nexthop-internet", + "address_prefix": "206.191.224.0/19", + "next_hop_type": "Internet" + }, + { + "name": "mi-207-46-16-nexthop-internet", + "address_prefix": "207.46.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-207-68-128-18-nexthop-internet", + "address_prefix": "207.68.128.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-208-68-136-21-nexthop-internet", + "address_prefix": "208.68.136.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-208-76-44-22-nexthop-internet", + "address_prefix": "208.76.44.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-208-84-21-nexthop-internet", + "address_prefix": "208.84.0.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-209-240-192-19-nexthop-internet", + "address_prefix": "209.240.192.0/19", + "next_hop_type": "Internet" + }, + { + "name": "mi-213-199-128-18-nexthop-internet", + "address_prefix": "213.199.128.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-216-32-180-22-nexthop-internet", + "address_prefix": "216.32.180.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-216-220-208-20-nexthop-internet", + "address_prefix": "216.220.208.0/20", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-33-16-nexthop-internet", + "address_prefix": "20.33.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-48-12-nexthop-internet", + "address_prefix": "20.48.0.0/12", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-64-10-nexthop-internet", + "address_prefix": "20.64.0.0/10", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-135-16-nexthop-internet", + "address_prefix": "20.135.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-136-16-nexthop-internet", + "address_prefix": "20.136.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-143-16-nexthop-internet", + "address_prefix": "20.143.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-192-10-nexthop-internet", + "address_prefix": "20.192.0.0/10", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-167-105-16-nexthop-internet", + "address_prefix": "131.107.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-131-107-16-nexthop-internet", + "address_prefix": "167.105.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-23-96-13-nexthop-internet", + "address_prefix": "23.96.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-42-159-16-nexthop-internet", + "address_prefix": "42.159.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-51-13-17-nexthop-internet", + "address_prefix": "51.13.0.0/17", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-51-120-128-17-nexthop-internet", + "address_prefix": "51.120.128.0/17", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-102-37-18-nexthop-internet", + "address_prefix": "102.37.0.0/18", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-102-133-16-nexthop-internet", + "address_prefix": "102.133.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-199-30-16-20-nexthop-internet", + "address_prefix": "199.30.16.0/20", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-204-79-180-24-nexthop-internet", + "address_prefix": "204.79.180.0/24", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage", + "address_prefix": "Storage", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-SqlManagement", + "address_prefix": "SqlManagement", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureMonitor", + "address_prefix": "AzureMonitor", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-CorpNetSaw", + "address_prefix": "CorpNetSaw", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-CorpNetPublic", + "address_prefix": "CorpNetPublic", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureActiveDirectory", + "address_prefix": "AzureActiveDirectory", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureCloud.westeurope", + "address_prefix": "AzureCloud.westeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureCloud.northeurope", + "address_prefix": "AzureCloud.northeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage.westeurope", + "address_prefix": "Storage.westeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage.northeurope", + "address_prefix": "Storage.northeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-EventHub.westeurope", + "address_prefix": "EventHub.westeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-EventHub.northeurope", + "address_prefix": "EventHub.northeurope", + "next_hop_type": "Internet" + }, + { + "address_prefix": "AzureCloud.westcentralus", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureCloud.westcentralus", + "next_hop_type": "Internet" + }, + { + "address_prefix": "AzureCloud.westus2", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureCloud.westus2", + "next_hop_type": "Internet" + }, + { + "address_prefix": "Storage.westcentralus", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage.westcentralus", + "next_hop_type": "Internet" + }, + { + "address_prefix": "Storage.westus2", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage.westus2", + "next_hop_type": "Internet" + }, + { + "address_prefix": "EventHub.westcentralus", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-EventHub.westcentralus", + "next_hop_type": "Internet" + }, + { + "address_prefix": "EventHub.westus2", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-EventHub.westus2", + "next_hop_type": "Internet" + }, + { + "address_prefix": "Sql.westcentralus", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Sql.westcentralus", + "next_hop_type": "Internet" + }, + { + "address_prefix": "Sql.westus2", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Sql.westus2", + "next_hop_type": "Internet" + } + ], + "depends_on": [ + { + "name": "${var.prefix}primary", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "virtual_network_name": "${var.prefix}primary", + "address_prefixes": [ + "10.0.0.0/24" + ], + "delegation": [ + { + "name": "managedinstancedelegation", + "service_delegation": [ + { + "name": "Microsoft.Sql/managedInstances", + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ] + } + ] + } + ] + } + ], + "prefix": "${var.prefix}primary", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_route_table", + "name": "rt", + "properties": { + "name": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "disable_bgp_route_propagation": false, + "route": [ + { + "name": "subnet-to-vnetlocal", + "address_prefix": "10.1.0.0/24", + "next_hop_type": "VnetLocal" + }, + { + "name": "mi-13-64-11-nexthop-internet", + "address_prefix": "13.64.0.0/11", + "next_hop_type": "Internet" + }, + { + "name": "mi-13-104-14-nexthop-internet", + "address_prefix": "13.104.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-34-15-nexthop-internet", + "address_prefix": "20.34.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-36-14-nexthop-internet", + "address_prefix": "20.36.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-40-13-nexthop-internet", + "address_prefix": "20.40.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-128-16-nexthop-internet", + "address_prefix": "20.128.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-140-15-nexthop-internet", + "address_prefix": "20.140.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-144-14-nexthop-internet", + "address_prefix": "20.144.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-150-15-nexthop-internet", + "address_prefix": "20.150.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-160-12-nexthop-internet", + "address_prefix": "20.160.0.0/12", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-176-14-nexthop-internet", + "address_prefix": "20.176.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-180-14-nexthop-internet", + "address_prefix": "20.180.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-20-184-13-nexthop-internet", + "address_prefix": "20.184.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-40-64-10-nexthop-internet", + "address_prefix": "40.64.0.0/10", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-4-15-nexthop-internet", + "address_prefix": "51.4.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-8-16-nexthop-internet", + "address_prefix": "51.8.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-10-15-nexthop-internet", + "address_prefix": "51.10.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-12-15-nexthop-internet", + "address_prefix": "51.12.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-18-16-nexthop-internet", + "address_prefix": "51.18.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-51-16-nexthop-internet", + "address_prefix": "51.51.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-53-16-nexthop-internet", + "address_prefix": "51.53.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-103-16-nexthop-internet", + "address_prefix": "51.103.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-104-15-nexthop-internet", + "address_prefix": "51.104.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-107-16-nexthop-internet", + "address_prefix": "51.107.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-116-16-nexthop-internet", + "address_prefix": "51.116.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-120-16-nexthop-internet", + "address_prefix": "51.120.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-124-16-nexthop-internet", + "address_prefix": "51.124.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-132-16-nexthop-internet", + "address_prefix": "51.132.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-136-15-nexthop-internet", + "address_prefix": "51.136.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-138-16-nexthop-internet", + "address_prefix": "51.138.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-140-14-nexthop-internet", + "address_prefix": "51.140.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-51-144-15-nexthop-internet", + "address_prefix": "51.144.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-96-12-nexthop-internet", + "address_prefix": "52.96.0.0/12", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-112-14-nexthop-internet", + "address_prefix": "52.112.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-125-16-nexthop-internet", + "address_prefix": "52.125.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-126-15-nexthop-internet", + "address_prefix": "52.126.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-130-15-nexthop-internet", + "address_prefix": "52.130.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-132-14-nexthop-internet", + "address_prefix": "52.132.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-136-13-nexthop-internet", + "address_prefix": "52.136.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-145-16-nexthop-internet", + "address_prefix": "52.145.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-146-15-nexthop-internet", + "address_prefix": "52.146.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-148-14-nexthop-internet", + "address_prefix": "52.148.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-152-13-nexthop-internet", + "address_prefix": "52.152.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-160-11-nexthop-internet", + "address_prefix": "52.160.0.0/11", + "next_hop_type": "Internet" + }, + { + "name": "mi-52-224-11-nexthop-internet", + "address_prefix": "52.224.0.0/11", + "next_hop_type": "Internet" + }, + { + "name": "mi-64-4-18-nexthop-internet", + "address_prefix": "64.4.0.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-65-52-14-nexthop-internet", + "address_prefix": "65.52.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-66-119-144-20-nexthop-internet", + "address_prefix": "66.119.144.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-70-37-17-nexthop-internet", + "address_prefix": "70.37.0.0/17", + "next_hop_type": "Internet" + }, + { + "name": "mi-70-37-128-18-nexthop-internet", + "address_prefix": "70.37.128.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-91-190-216-21-nexthop-internet", + "address_prefix": "91.190.216.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-94-245-64-18-nexthop-internet", + "address_prefix": "94.245.64.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-9-8-22-nexthop-internet", + "address_prefix": "103.9.8.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-25-156-24-nexthop-internet", + "address_prefix": "103.25.156.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-25-157-24-nexthop-internet", + "address_prefix": "103.25.157.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-25-158-23-nexthop-internet", + "address_prefix": "103.25.158.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-36-96-22-nexthop-internet", + "address_prefix": "103.36.96.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-103-255-140-22-nexthop-internet", + "address_prefix": "103.255.140.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-104-40-13-nexthop-internet", + "address_prefix": "104.40.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-104-146-15-nexthop-internet", + "address_prefix": "104.146.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-104-208-13-nexthop-internet", + "address_prefix": "104.208.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-111-221-16-20-nexthop-internet", + "address_prefix": "111.221.16.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-111-221-64-18-nexthop-internet", + "address_prefix": "111.221.64.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-129-75-16-nexthop-internet", + "address_prefix": "129.75.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-1-24-nexthop-internet", + "address_prefix": "131.253.1.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-3-24-nexthop-internet", + "address_prefix": "131.253.3.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-5-24-nexthop-internet", + "address_prefix": "131.253.5.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-6-24-nexthop-internet", + "address_prefix": "131.253.6.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-8-24-nexthop-internet", + "address_prefix": "131.253.8.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-12-22-nexthop-internet", + "address_prefix": "131.253.12.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-16-23-nexthop-internet", + "address_prefix": "131.253.16.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-18-24-nexthop-internet", + "address_prefix": "131.253.18.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-21-24-nexthop-internet", + "address_prefix": "131.253.21.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-22-23-nexthop-internet", + "address_prefix": "131.253.22.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-24-21-nexthop-internet", + "address_prefix": "131.253.24.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-32-20-nexthop-internet", + "address_prefix": "131.253.32.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-61-24-nexthop-internet", + "address_prefix": "131.253.61.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-62-23-nexthop-internet", + "address_prefix": "131.253.62.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-64-18-nexthop-internet", + "address_prefix": "131.253.64.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-131-253-128-17-nexthop-internet", + "address_prefix": "131.253.128.0/17", + "next_hop_type": "Internet" + }, + { + "name": "mi-132-245-16-nexthop-internet", + "address_prefix": "132.245.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-134-170-16-nexthop-internet", + "address_prefix": "134.170.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-134-177-16-nexthop-internet", + "address_prefix": "134.177.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-137-116-15-nexthop-internet", + "address_prefix": "137.116.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-137-135-16-nexthop-internet", + "address_prefix": "137.135.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-138-91-16-nexthop-internet", + "address_prefix": "138.91.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-138-196-16-nexthop-internet", + "address_prefix": "138.196.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-139-217-16-nexthop-internet", + "address_prefix": "139.217.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-139-219-16-nexthop-internet", + "address_prefix": "139.219.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-141-251-16-nexthop-internet", + "address_prefix": "141.251.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-146-147-16-nexthop-internet", + "address_prefix": "146.147.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-147-243-16-nexthop-internet", + "address_prefix": "147.243.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-150-171-16-nexthop-internet", + "address_prefix": "150.171.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-150-242-48-22-nexthop-internet", + "address_prefix": "150.242.48.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-157-54-15-nexthop-internet", + "address_prefix": "157.54.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-157-56-14-nexthop-internet", + "address_prefix": "157.56.0.0/14", + "next_hop_type": "Internet" + }, + { + "name": "mi-157-60-16-nexthop-internet", + "address_prefix": "157.60.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-167-220-16-nexthop-internet", + "address_prefix": "167.220.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-168-61-16-nexthop-internet", + "address_prefix": "168.61.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-168-62-15-nexthop-internet", + "address_prefix": "168.62.0.0/15", + "next_hop_type": "Internet" + }, + { + "name": "mi-191-232-13-nexthop-internet", + "address_prefix": "191.232.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-32-16-nexthop-internet", + "address_prefix": "192.32.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-48-225-24-nexthop-internet", + "address_prefix": "192.48.225.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-84-159-24-nexthop-internet", + "address_prefix": "192.84.159.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-84-160-23-nexthop-internet", + "address_prefix": "192.84.160.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-100-102-24-nexthop-internet", + "address_prefix": "192.100.102.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-100-103-24-nexthop-internet", + "address_prefix": "192.100.103.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-192-197-157-24-nexthop-internet", + "address_prefix": "192.197.157.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-193-149-64-19-nexthop-internet", + "address_prefix": "193.149.64.0/19", + "next_hop_type": "Internet" + }, + { + "name": "mi-193-221-113-24-nexthop-internet", + "address_prefix": "193.221.113.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-194-69-96-19-nexthop-internet", + "address_prefix": "194.69.96.0/19", + "next_hop_type": "Internet" + }, + { + "name": "mi-194-110-197-24-nexthop-internet", + "address_prefix": "194.110.197.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-198-105-232-22-nexthop-internet", + "address_prefix": "198.105.232.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-198-200-130-24-nexthop-internet", + "address_prefix": "198.200.130.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-198-206-164-24-nexthop-internet", + "address_prefix": "198.206.164.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-60-28-24-nexthop-internet", + "address_prefix": "199.60.28.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-74-210-24-nexthop-internet", + "address_prefix": "199.74.210.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-103-90-23-nexthop-internet", + "address_prefix": "199.103.90.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-103-122-24-nexthop-internet", + "address_prefix": "199.103.122.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-242-32-20-nexthop-internet", + "address_prefix": "199.242.32.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-199-242-48-21-nexthop-internet", + "address_prefix": "199.242.48.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-202-89-224-20-nexthop-internet", + "address_prefix": "202.89.224.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-13-120-21-nexthop-internet", + "address_prefix": "204.13.120.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-14-180-22-nexthop-internet", + "address_prefix": "204.14.180.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-135-24-nexthop-internet", + "address_prefix": "204.79.135.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-179-24-nexthop-internet", + "address_prefix": "204.79.179.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-181-24-nexthop-internet", + "address_prefix": "204.79.181.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-188-24-nexthop-internet", + "address_prefix": "204.79.188.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-195-24-nexthop-internet", + "address_prefix": "204.79.195.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-196-23-nexthop-internet", + "address_prefix": "204.79.196.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-79-252-24-nexthop-internet", + "address_prefix": "204.79.252.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-152-18-23-nexthop-internet", + "address_prefix": "204.152.18.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-152-140-23-nexthop-internet", + "address_prefix": "204.152.140.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-192-24-nexthop-internet", + "address_prefix": "204.231.192.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-194-23-nexthop-internet", + "address_prefix": "204.231.194.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-197-24-nexthop-internet", + "address_prefix": "204.231.197.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-198-23-nexthop-internet", + "address_prefix": "204.231.198.0/23", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-200-21-nexthop-internet", + "address_prefix": "204.231.200.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-208-20-nexthop-internet", + "address_prefix": "204.231.208.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-204-231-236-24-nexthop-internet", + "address_prefix": "204.231.236.0/24", + "next_hop_type": "Internet" + }, + { + "name": "mi-205-174-224-20-nexthop-internet", + "address_prefix": "205.174.224.0/20", + "next_hop_type": "Internet" + }, + { + "name": "mi-206-138-168-21-nexthop-internet", + "address_prefix": "206.138.168.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-206-191-224-19-nexthop-internet", + "address_prefix": "206.191.224.0/19", + "next_hop_type": "Internet" + }, + { + "name": "mi-207-46-16-nexthop-internet", + "address_prefix": "207.46.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "mi-207-68-128-18-nexthop-internet", + "address_prefix": "207.68.128.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-208-68-136-21-nexthop-internet", + "address_prefix": "208.68.136.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-208-76-44-22-nexthop-internet", + "address_prefix": "208.76.44.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-208-84-21-nexthop-internet", + "address_prefix": "208.84.0.0/21", + "next_hop_type": "Internet" + }, + { + "name": "mi-209-240-192-19-nexthop-internet", + "address_prefix": "209.240.192.0/19", + "next_hop_type": "Internet" + }, + { + "name": "mi-213-199-128-18-nexthop-internet", + "address_prefix": "213.199.128.0/18", + "next_hop_type": "Internet" + }, + { + "name": "mi-216-32-180-22-nexthop-internet", + "address_prefix": "216.32.180.0/22", + "next_hop_type": "Internet" + }, + { + "name": "mi-216-220-208-20-nexthop-internet", + "address_prefix": "216.220.208.0/20", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-33-16-nexthop-internet", + "address_prefix": "20.33.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-48-12-nexthop-internet", + "address_prefix": "20.48.0.0/12", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-64-10-nexthop-internet", + "address_prefix": "20.64.0.0/10", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-135-16-nexthop-internet", + "address_prefix": "20.135.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-136-16-nexthop-internet", + "address_prefix": "20.136.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-143-16-nexthop-internet", + "address_prefix": "20.143.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-20-192-10-nexthop-internet", + "address_prefix": "20.192.0.0/10", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-167-105-16-nexthop-internet", + "address_prefix": "131.107.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-131-107-16-nexthop-internet", + "address_prefix": "167.105.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-23-96-13-nexthop-internet", + "address_prefix": "23.96.0.0/13", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-42-159-16-nexthop-internet", + "address_prefix": "42.159.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-51-13-17-nexthop-internet", + "address_prefix": "51.13.0.0/17", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-51-120-128-17-nexthop-internet", + "address_prefix": "51.120.128.0/17", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-102-37-18-nexthop-internet", + "address_prefix": "102.37.0.0/18", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-102-133-16-nexthop-internet", + "address_prefix": "102.133.0.0/16", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-199-30-16-20-nexthop-internet", + "address_prefix": "199.30.16.0/20", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-204-79-180-24-nexthop-internet", + "address_prefix": "204.79.180.0/24", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage", + "address_prefix": "Storage", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-SqlManagement", + "address_prefix": "SqlManagement", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureMonitor", + "address_prefix": "AzureMonitor", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-CorpNetSaw", + "address_prefix": "CorpNetSaw", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-CorpNetPublic", + "address_prefix": "CorpNetPublic", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureActiveDirectory", + "address_prefix": "AzureActiveDirectory", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureCloud.westeurope", + "address_prefix": "AzureCloud.westeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureCloud.northeurope", + "address_prefix": "AzureCloud.northeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage.westeurope", + "address_prefix": "Storage.westeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage.northeurope", + "address_prefix": "Storage.northeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-EventHub.westeurope", + "address_prefix": "EventHub.westeurope", + "next_hop_type": "Internet" + }, + { + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-EventHub.northeurope", + "address_prefix": "EventHub.northeurope", + "next_hop_type": "Internet" + }, + { + "address_prefix": "AzureCloud.westcentralus", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureCloud.westcentralus", + "next_hop_type": "Internet" + }, + { + "address_prefix": "AzureCloud.westus2", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-AzureCloud.westus2", + "next_hop_type": "Internet" + }, + { + "address_prefix": "Storage.westcentralus", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage.westcentralus", + "next_hop_type": "Internet" + }, + { + "address_prefix": "Storage.westus2", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Storage.westus2", + "next_hop_type": "Internet" + }, + { + "address_prefix": "EventHub.westcentralus", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-EventHub.westcentralus", + "next_hop_type": "Internet" + }, + { + "address_prefix": "EventHub.westus2", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-EventHub.westus2", + "next_hop_type": "Internet" + }, + { + "address_prefix": "Sql.westcentralus", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Sql.westcentralus", + "next_hop_type": "Internet" + }, + { + "address_prefix": "Sql.westus2", + "name": "Microsoft.Sql-managedInstances_UseOnly_mi-Sql.westus2", + "next_hop_type": "Internet" + } + ], + "depends_on": [ + { + "name": "${var.prefix}secondary", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "virtual_network_name": "${var.prefix}secondary", + "address_prefixes": [ + "10.1.0.0/24" + ], + "delegation": [ + { + "name": "managedinstancedelegation", + "service_delegation": [ + { + "name": "Microsoft.Sql/managedInstances", + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ] + } + ] + } + ] + } + ], + "prefix": "${var.prefix}secondary", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_subnet_route_table_association", + "name": "subnet_rt", + "properties": { + "subnet_id": "${azurerm_subnet.subnet.id}", + "route_table_id": "${azurerm_route_table.rt.id}", + "prefix": "${var.prefix}primary", + "location": "${azurerm_resource_group.primary.location}", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_subnet_route_table_association", + "name": "subnet_rt", + "properties": { + "subnet_id": "${azurerm_subnet.subnet.id}", + "route_table_id": "${azurerm_route_table.rt.id}", + "prefix": "${var.prefix}secondary", + "location": "${azurerm_resource_group.secondary.location}", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "dns_zone_partner_id": "${module.primary.managed_instance_id}", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_sql_managed_instance", + "name": "mi", + "properties": { + "name": "${var.prefix}primary", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "location": "${azurerm_resource_group.primary.location}", + "administrator_login": "mradministrator", + "administrator_login_password": "thisIsDog11", + "license_type": "BasePrice", + "subnet_id": "${azurerm_subnet.subnet.id}", + "sku_name": "GP_Gen5", + "vcores": 4, + "storage_size_in_gb": 32, + "dns_zone_partner_id": null, + "depends_on": [ + { + "subnet_id": "${azurerm_subnet.subnet.id}", + "network_security_group_id": "${azurerm_network_security_group.nsg.id}" + }, + { + "subnet_id": "${azurerm_subnet.subnet.id}", + "route_table_id": "${azurerm_route_table.rt.id}" + } + ], + "prefix": "${var.prefix}primary", + "compiletime_identity": "module.primary" + } + }, + { + "type": "azurerm_sql_managed_instance", + "name": "mi", + "properties": { + "name": "${var.prefix}secondary", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "location": "${azurerm_resource_group.secondary.location}", + "administrator_login": "mradministrator", + "administrator_login_password": "thisIsDog11", + "license_type": "BasePrice", + "subnet_id": "${azurerm_subnet.subnet.id}", + "sku_name": "GP_Gen5", + "vcores": 4, + "storage_size_in_gb": 32, + "dns_zone_partner_id": "var.dns_zone_partner_id != \"\" ? var.dns_zone_partner_id : None", + "depends_on": [ + { + "subnet_id": "${azurerm_subnet.subnet.id}", + "network_security_group_id": "${azurerm_network_security_group.nsg.id}" + }, + { + "subnet_id": "${azurerm_subnet.subnet.id}", + "route_table_id": "${azurerm_route_table.rt.id}" + } + ], + "prefix": "${var.prefix}secondary", + "vnet_range": "10.1.0.0/16", + "subnet_range": "10.1.0.0/24", + "compiletime_identity": "module.secondary" + } + }, + { + "type": "azurerm_public_ip", + "name": "pip_1", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.primary.location}", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "allocation_method": "Dynamic", + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24", + "compiletime_identity": "module.vnet_gateway" + } + }, + { + "type": "azurerm_public_ip", + "name": "pip_2", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.secondary.location}", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "allocation_method": "Dynamic", + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24", + "compiletime_identity": "module.vnet_gateway" + } + }, + { + "type": "azurerm_virtual_network_gateway", + "name": "vnet_gw_1", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.primary.location}", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "type": "Vpn", + "vpn_type": "RouteBased", + "sku": "Basic", + "ip_configuration": [ + { + "name": "vnetGatewayConfig", + "public_ip_address_id": "${azurerm_public_ip.pip_1.id}", + "private_ip_address_allocation": "Dynamic", + "subnet_id": "${azurerm_subnet.gateway_snet_1.id}" + } + ], + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24", + "compiletime_identity": "module.vnet_gateway" + } + }, + { + "type": "azurerm_virtual_network_gateway", + "name": "vnet_gw_2", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.secondary.location}", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "type": "Vpn", + "vpn_type": "RouteBased", + "sku": "Basic", + "ip_configuration": [ + { + "name": "vnetGatewayConfig", + "public_ip_address_id": "${azurerm_public_ip.pip_2.id}", + "private_ip_address_allocation": "Dynamic", + "subnet_id": "${azurerm_subnet.gateway_snet_2.id}" + } + ], + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24", + "compiletime_identity": "module.vnet_gateway" + } + }, + { + "type": "azurerm_virtual_network_gateway_connection", + "name": "gw_connection_1", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.primary.location}", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "type": "Vnet2Vnet", + "virtual_network_gateway_id": "${azurerm_virtual_network_gateway.vnet_gw_1.id}", + "peer_virtual_network_gateway_id": "${azurerm_virtual_network_gateway.vnet_gw_2.id}", + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24", + "compiletime_identity": "module.vnet_gateway" + } + }, + { + "type": "azurerm_virtual_network_gateway_connection", + "name": "gw_connection_2", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.secondary.location}", + "resource_group_name": "${azurerm_resource_group.secondary.name}", + "type": "Vnet2Vnet", + "virtual_network_gateway_id": "${azurerm_virtual_network_gateway.vnet_gw_2.id}", + "peer_virtual_network_gateway_id": "${azurerm_virtual_network_gateway.vnet_gw_1.id}", + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24", + "compiletime_identity": "module.vnet_gateway" + } + }, + { + "type": "azurerm_resource_group", + "name": "primary", + "properties": { + "name": "${var.prefix}-primary-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.primary" + } + }, + { + "type": "azurerm_resource_group", + "name": "secondary", + "properties": { + "name": "${var.prefix}-secondary-resources", + "location": "${var.location_secondary}", + "compiletime_identity": "azurerm_resource_group.secondary" + } + }, + { + "type": "azurerm_sql_managed_instance_failover_group", + "name": "example", + "properties": { + "name": "${var.prefix}-fog", + "resource_group_name": "${azurerm_resource_group.primary.name}", + "location": "${azurerm_resource_group.primary.location}", + "managed_instance_name": "${module.primary.managed_instance_name}", + "partner_managed_instance_id": "${module.secondary.managed_instance_id}", + "read_write_endpoint_failover_policy": [ + { + "mode": "Manual" + } + ], + "depends_on": [ + { + "shared_key": "s3cre7_key!", + "prefix": "${var.prefix}", + "location_1": "${azurerm_resource_group.primary.location}", + "resource_group_name_1": "${azurerm_resource_group.primary.name}", + "vnet_name_1": "${module.primary.vnet_name}", + "gateway_subnet_range_1": "10.0.1.0/24", + "location_2": "${azurerm_resource_group.secondary.location}", + "resource_group_name_2": "${azurerm_resource_group.secondary.name}", + "vnet_name_2": "${module.secondary.vnet_name}", + "gateway_subnet_range_2": "10.0.2.0/24" + } + ], + "compiletime_identity": "azurerm_sql_managed_instance_failover_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT11 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT11 new file mode 100644 index 0000000..4cc8c12 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT11 @@ -0,0 +1,93 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/linux-basic/outputs.tf", + "/examples/app-service/linux-basic/variables.tf", + "/examples/app-service/linux-basic/main.tf" + ], + "timestamp": 1642943279600, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/linux-basic/outputs.tf", + "/examples/app-service/linux-basic/variables.tf", + "/examples/app-service/linux-basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT11", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT11", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "kind": "Linux", + "reserved": true, + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "dotnet_framework_version": "v4.0", + "remote_debugging_enabled": true, + "remote_debugging_version": "VS2019" + } + ], + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT110 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT110 new file mode 100644 index 0000000..7754d0a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT110 @@ -0,0 +1,177 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/sql-azure/sql_auditing_eventhub/variables.tf", + "/examples/sql-azure/sql_auditing_eventhub/main.tf" + ], + "timestamp": 1642943279962, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/sql_auditing_eventhub/variables.tf", + "/examples/sql-azure/sql_auditing_eventhub/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT110", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventhub_namespace", + "azurerm_mssql_server", + "azurerm_resource_group", + "azurerm_eventhub_namespace_authorization_rule", + "azurerm_eventhub", + "azurerm_mssql_server_extended_auditing_policy", + "azurerm_mssql_database", + "azurerm_monitor_diagnostic_setting", + "azurerm_mssql_database_extended_auditing_policy" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT110", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_mssql_server", + "name": "example", + "properties": { + "name": "${var.prefix}-server-primary", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${var.location}", + "version": 12.0, + "administrator_login": "mradministrator", + "administrator_login_password": "thisIsDog11", + "compiletime_identity": "azurerm_mssql_server.example" + } + }, + { + "type": "azurerm_mssql_database", + "name": "example", + "properties": { + "name": "${var.prefix}-db-primary", + "server_id": "${azurerm_mssql_server.example.id}", + "compiletime_identity": "azurerm_mssql_database.example" + } + }, + { + "type": "azurerm_eventhub_namespace", + "name": "example", + "properties": { + "name": "${var.prefix}-EHN", + "location": "${var.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "compiletime_identity": "azurerm_eventhub_namespace.example" + } + }, + { + "type": "azurerm_eventhub", + "name": "example", + "properties": { + "name": "${var.prefix}-EH", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "partition_count": 2, + "message_retention": 1, + "compiletime_identity": "azurerm_eventhub.example" + } + }, + { + "type": "azurerm_eventhub_namespace_authorization_rule", + "name": "example", + "properties": { + "name": "${var.prefix}EHRule", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "listen": true, + "send": true, + "manage": true, + "compiletime_identity": "azurerm_eventhub_namespace_authorization_rule.example" + } + }, + { + "type": "azurerm_monitor_diagnostic_setting", + "name": "example", + "properties": { + "name": "${var.prefix}-DS", + "target_resource_id": "${azurerm_mssql_database.example.id}", + "eventhub_authorization_rule_id": "${azurerm_eventhub_namespace_authorization_rule.example.id}", + "eventhub_name": "${azurerm_eventhub.example.name}", + "log": [ + { + "category": "SQLSecurityAuditEvents", + "enabled": true, + "retention_policy": [ + { + "enabled": false + } + ] + } + ], + "metric": [ + { + "category": "AllMetrics", + "retention_policy": [ + { + "enabled": false + } + ] + } + ], + "lifecycle": [ + { + "ignore_changes": [ + "log", + "metric" + ] + } + ], + "compiletime_identity": "azurerm_monitor_diagnostic_setting.example" + } + }, + { + "type": "azurerm_mssql_database_extended_auditing_policy", + "name": "example", + "properties": { + "database_id": "${azurerm_mssql_database.example.id}", + "log_monitoring_enabled": true, + "compiletime_identity": "azurerm_mssql_database_extended_auditing_policy.example" + } + }, + { + "type": "azurerm_mssql_server_extended_auditing_policy", + "name": "example", + "properties": { + "server_id": "${azurerm_mssql_server.example.id}", + "log_monitoring_enabled": true, + "compiletime_identity": "azurerm_mssql_server_extended_auditing_policy.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT111 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT111 new file mode 100644 index 0000000..cc506fe --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT111 @@ -0,0 +1,150 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/sql-azure/sql_auditing_log_analytics/variables.tf", + "/examples/sql-azure/sql_auditing_log_analytics/main.tf" + ], + "timestamp": 1642943279966, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/sql-azure/sql_auditing_log_analytics/variables.tf", + "/examples/sql-azure/sql_auditing_log_analytics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT111", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_mssql_server", + "azurerm_log_analytics_workspace", + "azurerm_resource_group", + "azurerm_mssql_server_extended_auditing_policy", + "azurerm_mssql_database", + "azurerm_monitor_diagnostic_setting", + "azurerm_mssql_database_extended_auditing_policy" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT111", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_mssql_server", + "name": "example", + "properties": { + "name": "${var.prefix}-server-primary", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${var.location}", + "version": 12.0, + "administrator_login": "mradministrator", + "administrator_login_password": "thisIsDog11", + "compiletime_identity": "azurerm_mssql_server.example" + } + }, + { + "type": "azurerm_mssql_database", + "name": "example", + "properties": { + "name": "${var.prefix}-db-primary", + "server_id": "${azurerm_mssql_server.example.id}", + "compiletime_identity": "azurerm_mssql_database.example" + } + }, + { + "type": "azurerm_log_analytics_workspace", + "name": "example", + "properties": { + "name": "${var.prefix}-LAW", + "location": "${var.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "PerGB2018", + "retention_in_days": 30, + "compiletime_identity": "azurerm_log_analytics_workspace.example" + } + }, + { + "type": "azurerm_monitor_diagnostic_setting", + "name": "example", + "properties": { + "name": "${var.prefix}-DS", + "target_resource_id": "${azurerm_mssql_server.example.id}/databases/master", + "log_analytics_workspace_id": "${azurerm_log_analytics_workspace.example.id}", + "log": [ + { + "category": "SQLSecurityAuditEvents", + "enabled": true, + "retention_policy": [ + { + "enabled": false + } + ] + } + ], + "metric": [ + { + "category": "AllMetrics", + "retention_policy": [ + { + "enabled": false + } + ] + } + ], + "lifecycle": [ + { + "ignore_changes": [ + "log", + "metric" + ] + } + ], + "compiletime_identity": "azurerm_monitor_diagnostic_setting.example" + } + }, + { + "type": "azurerm_mssql_database_extended_auditing_policy", + "name": "example", + "properties": { + "database_id": "${azurerm_mssql_server.example.id}/databases/master", + "log_monitoring_enabled": true, + "compiletime_identity": "azurerm_mssql_database_extended_auditing_policy.example" + } + }, + { + "type": "azurerm_mssql_server_extended_auditing_policy", + "name": "example", + "properties": { + "server_id": "${azurerm_mssql_server.example.id}", + "log_monitoring_enabled": true, + "compiletime_identity": "azurerm_mssql_server_extended_auditing_policy.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT112 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT112 new file mode 100644 index 0000000..f2017c3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT112 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/storage/storage-account/variables.tf", + "/examples/storage/storage-account/main.tf" + ], + "timestamp": 1642943279970, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/storage/storage-account/variables.tf", + "/examples/storage/storage-account/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT112", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT112", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}storageacct", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "network_rules": [ + { + "default_action": "Deny", + "ip_rules": [ + "23.45.1.0/30" + ] + } + ], + "compiletime_identity": "azurerm_storage_account.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT113 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT113 new file mode 100644 index 0000000..e81b1dc --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT113 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/storage/storage-container/variables.tf", + "/examples/storage/storage-container/main.tf" + ], + "timestamp": 1642943279973, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/storage/storage-container/variables.tf", + "/examples/storage/storage-container/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT113", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_storage_container", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT113", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}storageacct", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_kind": "StorageV2", + "account_replication_type": "LRS", + "enable_https_traffic_only": true, + "access_tier": "Hot", + "allow_blob_public_access": true, + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example2", + "properties": { + "name": "${var.prefix}storageacct2", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_kind": "StorageV2", + "account_replication_type": "LRS", + "enable_https_traffic_only": true, + "access_tier": "Hot", + "allow_blob_public_access": true, + "compiletime_identity": "azurerm_storage_account.example2" + } + }, + { + "type": "azurerm_storage_container", + "name": "example", + "properties": { + "name": "${var.prefix}storagecontainer", + "storage_account_name": "${azurerm_storage_account.example.name}", + "container_access_type": "blob", + "compiletime_identity": "azurerm_storage_container.example" + } + }, + { + "type": "azurerm_storage_container", + "name": "example2", + "properties": { + "name": "${var.prefix}storagecontainer2", + "storage_account_name": "${azurerm_storage_account.example2.name}", + "container_access_type": "blob", + "compiletime_identity": "azurerm_storage_container.example2" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT114 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT114 new file mode 100644 index 0000000..bd55ecf --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT114 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/storage/storage-share/variables.tf", + "/examples/storage/storage-share/main.tf" + ], + "timestamp": 1642943279977, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/storage/storage-share/variables.tf", + "/examples/storage/storage-share/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT114", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_resource_group", + "azurerm_storage_share" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT114", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}storageacct", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Premium", + "account_replication_type": "LRS", + "account_kind": "FileStorage", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_share", + "name": "example", + "properties": { + "name": "${var.prefix}storageshare", + "storage_account_name": "${azurerm_storage_account.example.name}", + "compiletime_identity": "azurerm_storage_share.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT115 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT115 new file mode 100644 index 0000000..6d81002 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT115 @@ -0,0 +1,194 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/storage/storage_adls_acls/variables.tf", + "/examples/storage/storage_adls_acls/main.tf" + ], + "timestamp": 1642943279981, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/storage/storage_adls_acls/variables.tf", + "/examples/storage/storage_adls_acls/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT115", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_role_assignment", + "azurerm_storage_data_lake_gen2_path", + "azurerm_storage_account", + "azurerm_storage_data_lake_gen2_filesystem", + "azurerm_user_assigned_identity" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT115", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_user_assigned_identity", + "name": "example", + "properties": { + "name": "search-api", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "compiletime_identity": "azurerm_user_assigned_identity.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}storageacct", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_kind": "StorageV2", + "account_replication_type": "LRS", + "is_hns_enabled": true, + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_role_assignment", + "name": "storageAccountRoleAssignment", + "properties": { + "scope": "${azurerm_storage_account.example.id}", + "role_definition_name": "Storage Blob Data Contributor", + "principal_id": "${data.azurerm_client_config.current.object_id}", + "compiletime_identity": "azurerm_role_assignment.storageAccountRoleAssignment" + } + }, + { + "type": "azurerm_storage_data_lake_gen2_filesystem", + "name": "example", + "properties": { + "name": "example", + "storage_account_id": "${azurerm_storage_account.example.id}", + "ace": [ + { + "type": "user", + "permissions": "rwx" + }, + { + "type": "user", + "id": "${azurerm_user_assigned_identity.example.principal_id}", + "permissions": "--x" + }, + { + "type": "group", + "permissions": "r-x" + }, + { + "type": "mask", + "permissions": "r-x" + }, + { + "type": "other", + "permissions": "---" + } + ], + "depends_on": [ + "${azurerm_role_assignment.storageAccountRoleAssignment}" + ], + "compiletime_identity": "azurerm_storage_data_lake_gen2_filesystem.example" + } + }, + { + "type": "azurerm_storage_data_lake_gen2_path", + "name": "example", + "properties": { + "storage_account_id": "${azurerm_storage_account.example.id}", + "filesystem_name": "${azurerm_storage_data_lake_gen2_filesystem.example.name}", + "path": "testpath", + "resource": "directory", + "ace": [ + { + "type": "user", + "permissions": "r-x" + }, + { + "type": "user", + "id": "${azurerm_user_assigned_identity.example.principal_id}", + "permissions": "r-x" + }, + { + "type": "group", + "permissions": "-wx" + }, + { + "type": "mask", + "permissions": "--x" + }, + { + "type": "other", + "permissions": "--x" + }, + { + "scope": "default", + "type": "user", + "permissions": "r-x" + }, + { + "scope": "default", + "type": "user", + "id": "${azurerm_user_assigned_identity.example.principal_id}", + "permissions": "r-x" + }, + { + "scope": "default", + "type": "group", + "permissions": "-wx" + }, + { + "scope": "default", + "type": "mask", + "permissions": "--x" + }, + { + "scope": "default", + "type": "other", + "permissions": "--x" + } + ], + "compiletime_identity": "azurerm_storage_data_lake_gen2_path.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT116 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT116 new file mode 100644 index 0000000..e486864 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT116 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/stream-analytics/variables.tf", + "/examples/stream-analytics/main.tf" + ], + "timestamp": 1642943279985, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/stream-analytics/variables.tf", + "/examples/stream-analytics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT116", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_storage_container", + "azurerm_stream_analytics_job", + "azurerm_storage_account", + "azurerm_stream_analytics_reference_input_blob" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT116", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-example-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}-examplestoracc", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_container", + "name": "example", + "properties": { + "name": "${var.prefix}example", + "storage_account_name": "${azurerm_storage_account.example.name}", + "container_access_type": "private", + "compiletime_identity": "azurerm_storage_container.example" + } + }, + { + "type": "azurerm_stream_analytics_job", + "name": "example", + "properties": { + "name": "${var.prefix}-example-job", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "compatibility_level": 1.1, + "data_locale": "en-US", + "events_late_arrival_max_delay_in_seconds": 60, + "events_out_of_order_max_delay_in_seconds": 50, + "events_out_of_order_policy": "Adjust", + "output_error_policy": "Drop", + "streaming_units": 3, + "tags": { + "environment": "Example" + }, + "transformation_query": "SELECT *\n INTO [YourOutputAlias]\n FROM [YourInputAlias]", + "compiletime_identity": "azurerm_stream_analytics_job.example" + } + }, + { + "type": "azurerm_stream_analytics_reference_input_blob", + "name": "test", + "properties": { + "name": "${var.prefix}-blob-reference-input", + "stream_analytics_job_name": "${azurerm_stream_analytics_job.example.name}", + "resource_group_name": "${azurerm_stream_analytics_job.example.resource_group_name}", + "storage_account_name": "${azurerm_storage_account.example.name}", + "storage_account_key": "${azurerm_storage_account.example.primary_access_key}", + "storage_container_name": "${azurerm_storage_container.example.name}", + "path_pattern": "some-random-pattern", + "date_format": "yyyy/MM/dd", + "time_format": "HH", + "serialization": [ + { + "type": "Json", + "encoding": "UTF8" + } + ], + "compiletime_identity": "azurerm_stream_analytics_reference_input_blob.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT117 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT117 new file mode 100644 index 0000000..839af17 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT117 @@ -0,0 +1,80 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/traffic-manager/basic/variables.tf", + "/examples/traffic-manager/basic/main.tf" + ], + "timestamp": 1642943279988, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/traffic-manager/basic/variables.tf", + "/examples/traffic-manager/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT117", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_traffic_manager_profile", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT117", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_traffic_manager_profile", + "name": "example", + "properties": { + "name": "${var.prefix}-trafficmanager", + "resource_group_name": "${azurerm_resource_group.example.name}", + "traffic_routing_method": "Weighted", + "dns_config": [ + { + "relative_name": "${azurerm_resource_group.example.name}", + "ttl": 30 + } + ], + "monitor_config": [ + { + "protocol": "http", + "port": 80, + "path": "/", + "interval_in_seconds": 30, + "timeout_in_seconds": 9, + "tolerated_number_of_failures": 3 + } + ], + "compiletime_identity": "azurerm_traffic_manager_profile.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT118 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT118 new file mode 100644 index 0000000..31ef3df --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT118 @@ -0,0 +1,305 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/traffic-manager/virtual-machine/outputs.tf", + "/examples/traffic-manager/virtual-machine/variables.tf", + "/examples/traffic-manager/virtual-machine/main.tf" + ], + "timestamp": 1642943279992, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/traffic-manager/virtual-machine/outputs.tf", + "/examples/traffic-manager/virtual-machine/variables.tf", + "/examples/traffic-manager/virtual-machine/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT118", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_traffic_manager_endpoint", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_traffic_manager_profile", + "azurerm_virtual_machine_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT118", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${data.azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/16" + ], + "prefix": "${var.prefix}", + "compiletime_identity": "module.virtual-network" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${var.prefix}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "prefix": "${var.prefix}", + "compiletime_identity": "module.virtual-network" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}1", + "location": "${data.azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "example", + "subnet_id": "${module.virtual-network.subnet_id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "prefix": "${var.prefix}1", + "subnet_id": "${module.virtual-network.subnet_id}", + "compiletime_identity": "module.first-virtual-machine" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}2", + "location": "${data.azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "example", + "subnet_id": "${module.virtual-network.subnet_id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "prefix": "${var.prefix}2", + "subnet_id": "${module.virtual-network.subnet_id}", + "compiletime_identity": "module.second-virtual-machine" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}1", + "location": "${data.azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_DS1_v2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "myosdisk1", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "prefix": "${var.prefix}1", + "subnet_id": "${module.virtual-network.subnet_id}", + "compiletime_identity": "module.first-virtual-machine" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}2", + "location": "${data.azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_DS1_v2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "myosdisk1", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "prefix": "${var.prefix}2", + "subnet_id": "${module.virtual-network.subnet_id}", + "compiletime_identity": "module.second-virtual-machine" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "example", + "properties": { + "name": "CustomScript", + "virtual_machine_id": "${azurerm_virtual_machine.example.id}", + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "type_handler_version": 2.0, + "auto_upgrade_minor_version": true, + "settings": { + "commandToExecute": "sudo bash -c 'apt-get update && apt-get -y install apache2'" + }, + "resource_group_name": "${azurerm_resource_group.example.name}", + "prefix": "${var.prefix}1", + "subnet_id": "${module.virtual-network.subnet_id}", + "compiletime_identity": "module.first-virtual-machine" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "example", + "properties": { + "name": "CustomScript", + "virtual_machine_id": "${azurerm_virtual_machine.example.id}", + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "type_handler_version": 2.0, + "auto_upgrade_minor_version": true, + "settings": { + "commandToExecute": "sudo bash -c 'apt-get update && apt-get -y install apache2'" + }, + "resource_group_name": "${azurerm_resource_group.example.name}", + "prefix": "${var.prefix}2", + "subnet_id": "${module.virtual-network.subnet_id}", + "compiletime_identity": "module.second-virtual-machine" + } + }, + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_traffic_manager_profile", + "name": "example", + "properties": { + "name": "${var.prefix}-tmprofile", + "resource_group_name": "${azurerm_resource_group.example.name}", + "traffic_routing_method": "Weighted", + "dns_config": [ + { + "relative_name": "${azurerm_resource_group.example.name}", + "ttl": 30 + } + ], + "monitor_config": [ + { + "protocol": "http", + "port": 80, + "path": "/" + } + ], + "compiletime_identity": "azurerm_traffic_manager_profile.example" + } + }, + { + "type": "azurerm_traffic_manager_endpoint", + "name": "first-vm", + "properties": { + "name": "${var.prefix}-first-vm", + "resource_group_name": "${azurerm_resource_group.example.name}", + "profile_name": "${azurerm_traffic_manager_profile.example.name}", + "target_resource_id": "${module.first-virtual-machine.network_interface_id}", + "type": "azureEndpoints", + "weight": 1, + "compiletime_identity": "azurerm_traffic_manager_endpoint.first-vm" + } + }, + { + "type": "azurerm_traffic_manager_endpoint", + "name": "second-vm", + "properties": { + "name": "${var.prefix}-second-vm", + "resource_group_name": "${azurerm_resource_group.example.name}", + "profile_name": "${azurerm_traffic_manager_profile.example.name}", + "target_resource_id": "${module.second-virtual-machine.network_interface_id}", + "type": "azureEndpoints", + "weight": 1, + "compiletime_identity": "azurerm_traffic_manager_endpoint.second-vm" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT119 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT119 new file mode 100644 index 0000000..98449cd --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT119 @@ -0,0 +1,484 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/traffic-manager/vm-scale-set/variables.tf", + "/examples/traffic-manager/vm-scale-set/main.tf" + ], + "timestamp": 1642943279997, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/traffic-manager/vm-scale-set/variables.tf", + "/examples/traffic-manager/vm-scale-set/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT119", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_traffic_manager_endpoint", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_traffic_manager_profile", + "azurerm_virtual_machine_scale_set", + "azurerm_lb_probe" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT119", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "location": "${var.location}", + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "location": "${var.alt_location}", + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-tmresources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "resource_group_name": "${var.prefix}-region1", + "location": "${var.location}", + "address_space": [ + "10.0.0.0/16" + ], + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "resource_group_name": "${var.prefix}-region1", + "location": "${var.alt_location}", + "address_space": [ + "10.0.0.0/16" + ], + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${var.prefix}-region1", + "resource_group_name": "${var.prefix}-region1", + "address_prefixes": [ + "10.0.1.0/24" + ], + "prefix": "${var.prefix}-region1", + "location": "${var.location}", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${var.prefix}-region1", + "resource_group_name": "${var.prefix}-region1", + "address_prefixes": [ + "10.0.1.0/24" + ], + "prefix": "${var.prefix}-region1", + "location": "${var.alt_location}", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_lb", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "frontend_ip_configuration": [ + { + "name": "${local.frontend_ip_configuration_name}", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_lb", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "frontend_ip_configuration": [ + { + "name": "${local.frontend_ip_configuration_name}", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "example", + "properties": { + "name": "backend", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "prefix": "${var.prefix}-region1", + "location": "${var.location}", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "example", + "properties": { + "name": "backend", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "prefix": "${var.prefix}-region1", + "location": "${var.alt_location}", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_lb_probe", + "name": "example", + "properties": { + "name": "probe", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "protocol": "tcp", + "port": 80, + "prefix": "${var.prefix}-region1", + "location": "${var.location}", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_lb_probe", + "name": "example", + "properties": { + "name": "probe", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "protocol": "tcp", + "port": 80, + "prefix": "${var.prefix}-region1", + "location": "${var.alt_location}", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_lb_rule", + "name": "example", + "properties": { + "name": "http-lb-rule", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "probe_id": "${azurerm_lb_probe.example.id}", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.example.id}", + "frontend_ip_configuration_name": "${local.frontend_ip_configuration_name}", + "protocol": "Tcp", + "frontend_port": 80, + "backend_port": 80, + "prefix": "${var.prefix}-region1", + "location": "${var.location}", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_lb_rule", + "name": "example", + "properties": { + "name": "http-lb-rule", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "probe_id": "${azurerm_lb_probe.example.id}", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.example.id}", + "frontend_ip_configuration_name": "${local.frontend_ip_configuration_name}", + "protocol": "Tcp", + "frontend_port": 80, + "backend_port": 80, + "prefix": "${var.prefix}-region1", + "location": "${var.alt_location}", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_virtual_machine_scale_set", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "upgrade_policy_mode": "Manual", + "sku": [ + { + "name": "Standard_D1_v2", + "tier": "Standard", + "capacity": 2 + } + ], + "os_profile": [ + { + "computer_name_prefix": "${var.prefix}-region1", + "admin_username": "myadmin", + "admin_password": "Passwword1234" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "network_profile": [ + { + "name": "web_ss_net_profile", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.example.id}", + "load_balancer_backend_address_pool_ids": [ + "${azurerm_lb_backend_address_pool.example.id}" + ], + "primary": true + } + ] + } + ], + "storage_profile_os_disk": [ + { + "name": "", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "storage_profile_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "extension": [ + { + "name": "CustomScriptForLinux", + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "type_handler_version": 1.4, + "settings": { + "commandToExecute": "sudo apt-get -y install apache2" + } + } + ], + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region1" + } + }, + { + "type": "azurerm_virtual_machine_scale_set", + "name": "example", + "properties": { + "name": "${var.prefix}-region1", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "upgrade_policy_mode": "Manual", + "sku": [ + { + "name": "Standard_D1_v2", + "tier": "Standard", + "capacity": 2 + } + ], + "os_profile": [ + { + "computer_name_prefix": "${var.prefix}-region1", + "admin_username": "myadmin", + "admin_password": "Passwword1234" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "network_profile": [ + { + "name": "web_ss_net_profile", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.example.id}", + "load_balancer_backend_address_pool_ids": [ + "${azurerm_lb_backend_address_pool.example.id}" + ], + "primary": true + } + ] + } + ], + "storage_profile_os_disk": [ + { + "name": "", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "storage_profile_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "extension": [ + { + "name": "CustomScriptForLinux", + "publisher": "Microsoft.OSTCExtensions", + "type": "CustomScriptForLinux", + "type_handler_version": 1.4, + "settings": { + "commandToExecute": "sudo apt-get -y install apache2" + } + } + ], + "prefix": "${var.prefix}-region1", + "compiletime_identity": "module.region2" + } + }, + { + "type": "azurerm_traffic_manager_profile", + "name": "example", + "properties": { + "name": "${var.prefix}-trafficmgr", + "resource_group_name": "${azurerm_resource_group.example.name}", + "traffic_routing_method": "Weighted", + "dns_config": [ + { + "relative_name": "${var.prefix}-trafficmgr", + "ttl": 100 + } + ], + "monitor_config": [ + { + "protocol": "http", + "port": 80, + "path": "/" + } + ], + "compiletime_identity": "azurerm_traffic_manager_profile.example" + } + }, + { + "type": "azurerm_traffic_manager_endpoint", + "name": "region1", + "properties": { + "name": "${var.prefix}-region1", + "resource_group_name": "${azurerm_resource_group.example.name}", + "profile_name": "${azurerm_traffic_manager_profile.example.name}", + "target_resource_id": "${module.region1.public_ip_address_id}", + "type": "azureEndpoints", + "weight": 100, + "compiletime_identity": "azurerm_traffic_manager_endpoint.region1" + } + }, + { + "type": "azurerm_traffic_manager_endpoint", + "name": "region2", + "properties": { + "name": "${var.prefix}-region2", + "resource_group_name": "${azurerm_resource_group.example.name}", + "profile_name": "${azurerm_traffic_manager_profile.example.name}", + "target_resource_id": "${module.region2.public_ip_address_id}", + "type": "azureEndpoints", + "weight": 100, + "compiletime_identity": "azurerm_traffic_manager_endpoint.region2" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT12 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT12 new file mode 100644 index 0000000..0dbaa4c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT12 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/linux-nodejs/outputs.tf", + "/examples/app-service/linux-nodejs/variables.tf", + "/examples/app-service/linux-nodejs/main.tf" + ], + "timestamp": 1642943279603, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/linux-nodejs/outputs.tf", + "/examples/app-service/linux-nodejs/variables.tf", + "/examples/app-service/linux-nodejs/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT12", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT12", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "kind": "Linux", + "reserved": true, + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "linux_fx_version": "NODE|10.14" + } + ], + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT120 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT120 new file mode 100644 index 0000000..3e04e68 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT120 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/linux/basic-password/variables.tf", + "/examples/virtual-machines/linux/basic-password/main.tf" + ], + "timestamp": 1642943280001, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/basic-password/variables.tf", + "/examples/virtual-machines/linux/basic-password/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT120", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT120", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/22" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_D2s_v3", + "admin_username": "${var.username}", + "admin_password": "${var.password}", + "disable_password_authentication": false, + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT121 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT121 new file mode 100644 index 0000000..2fd9029 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT121 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/linux/basic-ssh/variables.tf", + "/examples/virtual-machines/linux/basic-ssh/main.tf" + ], + "timestamp": 1642943280004, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/basic-ssh/variables.tf", + "/examples/virtual-machines/linux/basic-ssh/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT121", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT121", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "admin_ssh_key": [ + { + "username": "adminuser", + "public_key": "${file(\"~/.ssh/id_rsa.pub\")}" + } + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT122 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT122 new file mode 100644 index 0000000..ec72272 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT122 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/linux/custom-data/variables.tf", + "/examples/virtual-machines/linux/custom-data/main.tf" + ], + "timestamp": 1642943280008, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/custom-data/variables.tf", + "/examples/virtual-machines/linux/custom-data/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT122", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT122", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "custom_data": "base64encode(\"Hello World!\")", + "disable_password_authentication": false, + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT123 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT123 new file mode 100644 index 0000000..7dce187 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT123 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/linux/ephemeral-os-disk/variables.tf", + "/examples/virtual-machines/linux/ephemeral-os-disk/main.tf" + ], + "timestamp": 1642943280015, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/ephemeral-os-disk/variables.tf", + "/examples/virtual-machines/linux/ephemeral-os-disk/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT123", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT123", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2s_v2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite", + "diff_disk_settings": [ + { + "option": "Local" + } + ] + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT124 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT124 new file mode 100644 index 0000000..4c0f795 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT124 @@ -0,0 +1,244 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/linux/load-balanced/variables.tf", + "/examples/virtual-machines/linux/load-balanced/main.tf" + ], + "timestamp": 1642943280019, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/load-balanced/variables.tf", + "/examples/virtual-machines/linux/load-balanced/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT124", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_availability_set", + "azurerm_network_interface", + "azurerm_network_security_group", + "azurerm_linux_virtual_machine", + "azurerm_public_ip", + "azurerm_network_interface_backend_address_pool_association", + "azurerm_lb", + "azurerm_lb_nat_rule" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT124", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "instance_count": 2 + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip", + "name": "pip", + "properties": { + "name": "${var.prefix}-pip", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.pip" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "count": "${local.instance_count}", + "name": "${var.prefix}-nic${count.index}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "primary", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_availability_set", + "name": "avset", + "properties": { + "name": "${var.prefix}avset", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "platform_fault_domain_count": 2, + "platform_update_domain_count": 2, + "managed": true, + "compiletime_identity": "azurerm_availability_set.avset" + } + }, + { + "type": "azurerm_network_security_group", + "name": "webserver", + "properties": { + "name": "tls_webserver", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "security_rule": [ + { + "access": "Allow", + "direction": "Inbound", + "name": "tls", + "priority": 100, + "protocol": "Tcp", + "source_port_range": "*", + "source_address_prefix": "*", + "destination_port_range": 443, + "destination_address_prefix": "${azurerm_subnet.internal.address_prefix}" + } + ], + "compiletime_identity": "azurerm_network_security_group.webserver" + } + }, + { + "type": "azurerm_lb", + "name": "example", + "properties": { + "name": "${var.prefix}-lb", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "frontend_ip_configuration": [ + { + "name": "PublicIPAddress", + "public_ip_address_id": "${azurerm_public_ip.pip.id}" + } + ], + "compiletime_identity": "azurerm_lb.example" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "BackEndAddressPool", + "compiletime_identity": "azurerm_lb_backend_address_pool.example" + } + }, + { + "type": "azurerm_lb_nat_rule", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "HTTPSAccess", + "protocol": "Tcp", + "frontend_port": 443, + "backend_port": 443, + "frontend_ip_configuration_name": "${azurerm_lb.example.frontend_ip_configuration[0].name}", + "compiletime_identity": "azurerm_lb_nat_rule.example" + } + }, + { + "type": "azurerm_network_interface_backend_address_pool_association", + "name": "example", + "properties": { + "count": "${local.instance_count}", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.example.id}", + "ip_configuration_name": "primary", + "network_interface_id": "element(azurerm_network_interface.main.*.id,count.index)", + "compiletime_identity": "azurerm_network_interface_backend_address_pool_association.example" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "main", + "properties": { + "count": "${local.instance_count}", + "name": "${var.prefix}-vm${count.index}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "availability_set_id": "${azurerm_availability_set.avset.id}", + "disable_password_authentication": false, + "network_interface_ids": [ + "${azurerm_network_interface.main[count.index].id}" + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT125 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT125 new file mode 100644 index 0000000..1b83692 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT125 @@ -0,0 +1,157 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/linux/managed-disk-attachments/variables.tf", + "/examples/virtual-machines/linux/managed-disk-attachments/main.tf" + ], + "timestamp": 1642943280023, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/managed-disk-attachments/variables.tf", + "/examples/virtual-machines/linux/managed-disk-attachments/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT125", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine", + "azurerm_virtual_machine_data_disk_attachment", + "azurerm_managed_disk" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT125", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.main" + } + }, + { + "type": "azurerm_managed_disk", + "name": "data", + "properties": { + "name": "data", + "location": "${azurerm_resource_group.main.location}", + "create_option": "Empty", + "disk_size_gb": 10, + "resource_group_name": "${azurerm_resource_group.main.name}", + "storage_account_type": "Standard_LRS", + "compiletime_identity": "azurerm_managed_disk.data" + } + }, + { + "type": "azurerm_virtual_machine_data_disk_attachment", + "name": "data", + "properties": { + "virtual_machine_id": "${azurerm_linux_virtual_machine.main.id}", + "managed_disk_id": "${azurerm_managed_disk.data.id}", + "lun": 0, + "caching": null, + "compiletime_identity": "azurerm_virtual_machine_data_disk_attachment.data" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT126 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT126 new file mode 100644 index 0000000..0507705 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT126 @@ -0,0 +1,160 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/linux/provisioner/variables.tf", + "/examples/virtual-machines/linux/provisioner/main.tf" + ], + "timestamp": 1642943280027, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/provisioner/variables.tf", + "/examples/virtual-machines/linux/provisioner/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT126", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT126", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip", + "name": "main", + "properties": { + "name": "${var.prefix}-pip", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.main" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.main.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "provisioner": [ + { + "remote-exec": { + "inline": [ + "ls -la /tmp" + ], + "connection": [ + { + "host": "${self.public_ip_address}", + "user": "${self.admin_username}", + "password": "${self.admin_password}" + } + ] + } + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT127 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT127 new file mode 100644 index 0000000..1892d6e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT127 @@ -0,0 +1,196 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/linux/public-ip/variables.tf", + "/examples/virtual-machines/linux/public-ip/main.tf" + ], + "timestamp": 1642943280031, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/linux/public-ip/variables.tf", + "/examples/virtual-machines/linux/public-ip/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT127", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_linux_virtual_machine", + "azurerm_public_ip", + "azurerm_network_security_group", + "azurerm_network_interface_security_group_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT127", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip", + "name": "pip", + "properties": { + "name": "${var.prefix}-pip", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.pip" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic1", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "primary", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.pip.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_network_interface", + "name": "internal", + "properties": { + "name": "${var.prefix}-nic2", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.internal" + } + }, + { + "type": "azurerm_network_security_group", + "name": "webserver", + "properties": { + "name": "tls_webserver", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "security_rule": [ + { + "access": "Allow", + "direction": "Inbound", + "name": "tls", + "priority": 100, + "protocol": "Tcp", + "source_port_range": "*", + "source_address_prefix": "*", + "destination_port_range": 443, + "destination_address_prefix": "${azurerm_network_interface.main.private_ip_address}" + } + ], + "compiletime_identity": "azurerm_network_security_group.webserver" + } + }, + { + "type": "azurerm_network_interface_security_group_association", + "name": "main", + "properties": { + "network_interface_id": "${azurerm_network_interface.internal.id}", + "network_security_group_id": "${azurerm_network_security_group.webserver.id}", + "compiletime_identity": "azurerm_network_interface_security_group_association.main" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "network_interface_ids": [ + "${azurerm_network_interface.main.id}", + "${azurerm_network_interface.internal.id}" + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT128 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT128 new file mode 100644 index 0000000..51754df --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT128 @@ -0,0 +1,352 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/outputs.tf", + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/variables.tf", + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/main.tf" + ], + "timestamp": 1642943280035, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/outputs.tf", + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/variables.tf", + "/examples/virtual-machines/virtual_machine/2-vms-loadbalancer-lbrules/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT128", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_availability_set", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_storage_account", + "azurerm_network_interface_nat_rule_association", + "azurerm_lb_probe", + "azurerm_lb_nat_rule" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT128", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "rg", + "properties": { + "name": "${var.resource_group}", + "location": "southcentralus", + "compiletime_identity": "azurerm_resource_group.rg" + } + }, + { + "type": "azurerm_storage_account", + "name": "stor", + "properties": { + "name": "${var.dns_name}stor", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.stor" + } + }, + { + "type": "azurerm_availability_set", + "name": "avset", + "properties": { + "name": "${var.dns_name}avset", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "platform_fault_domain_count": 2, + "platform_update_domain_count": 2, + "managed": true, + "compiletime_identity": "azurerm_availability_set.avset" + } + }, + { + "type": "azurerm_public_ip", + "name": "lbpip", + "properties": { + "name": "rg-ip", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "allocation_method": "Dynamic", + "domain_name_label": "${var.lb_ip_dns_name}", + "compiletime_identity": "azurerm_public_ip.lbpip" + } + }, + { + "type": "azurerm_virtual_network", + "name": "vnet", + "properties": { + "name": "vnet", + "location": "southcentralus", + "address_space": [ + "10.0.0.0/16" + ], + "resource_group_name": "${azurerm_resource_group.rg.name}", + "compiletime_identity": "azurerm_virtual_network.vnet" + } + }, + { + "type": "azurerm_subnet", + "name": "subnet", + "properties": { + "name": "rgsubnet", + "virtual_network_name": "${azurerm_virtual_network.vnet.name}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_prefixes": [ + "10.0.10.0/24" + ], + "compiletime_identity": "azurerm_subnet.subnet" + } + }, + { + "type": "azurerm_lb", + "name": "lb", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "name": "rglb", + "location": "southcentralus", + "frontend_ip_configuration": [ + { + "name": "LoadBalancerFrontEnd", + "public_ip_address_id": "${azurerm_public_ip.lbpip.id}" + } + ], + "compiletime_identity": "azurerm_lb.lb" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "backend_pool", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.lb.id}", + "name": "BackendPool1", + "compiletime_identity": "azurerm_lb_backend_address_pool.backend_pool" + } + }, + { + "type": "azurerm_lb_nat_rule", + "name": "tcp", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.lb.id}", + "name": "RDP-VM-0", + "protocol": "tcp", + "frontend_port": "5000${count.index + 1}", + "backend_port": 3389, + "frontend_ip_configuration_name": "LoadBalancerFrontEnd", + "compiletime_identity": "azurerm_lb_nat_rule.tcp" + } + }, + { + "type": "azurerm_lb_nat_rule", + "name": "tcp", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.lb.id}", + "name": "RDP-VM-1", + "protocol": "tcp", + "frontend_port": "5000${count.index + 1}", + "backend_port": 3389, + "frontend_ip_configuration_name": "LoadBalancerFrontEnd", + "compiletime_identity": "azurerm_lb_nat_rule.tcp" + } + }, + { + "type": "azurerm_lb_rule", + "name": "lb_rule", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.lb.id}", + "name": "LBRule", + "protocol": "tcp", + "frontend_port": 80, + "backend_port": 80, + "frontend_ip_configuration_name": "LoadBalancerFrontEnd", + "enable_floating_ip": false, + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.backend_pool.id}", + "idle_timeout_in_minutes": 5, + "probe_id": "${azurerm_lb_probe.lb_probe.id}", + "depends_on": [ + "azurerm_lb_probe.lb_probe" + ], + "compiletime_identity": "azurerm_lb_rule.lb_rule" + } + }, + { + "type": "azurerm_lb_probe", + "name": "lb_probe", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.lb.id}", + "name": "tcpProbe", + "protocol": "tcp", + "port": 80, + "interval_in_seconds": 5, + "number_of_probes": 2, + "compiletime_identity": "azurerm_lb_probe.lb_probe" + } + }, + { + "type": "azurerm_network_interface", + "name": "nic", + "properties": { + "name": "nic0", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "ip_configuration": [ + { + "name": "ipconfig0", + "subnet_id": "${azurerm_subnet.subnet.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.nic" + } + }, + { + "type": "azurerm_network_interface", + "name": "nic", + "properties": { + "name": "nic1", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "ip_configuration": [ + { + "name": "ipconfig1", + "subnet_id": "${azurerm_subnet.subnet.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.nic" + } + }, + { + "type": "azurerm_network_interface_nat_rule_association", + "name": "natrule", + "properties": { + "network_interface_id": "element(azurerm_network_interface.nic.*.id,0)", + "ip_configuration_name": "ipconfig0", + "nat_rule_id": "element(azurerm_lb_nat_rule.tcp.*.id,0)", + "compiletime_identity": "azurerm_network_interface_nat_rule_association.natrule" + } + }, + { + "type": "azurerm_network_interface_nat_rule_association", + "name": "natrule", + "properties": { + "network_interface_id": "element(azurerm_network_interface.nic.*.id,1)", + "ip_configuration_name": "ipconfig1", + "nat_rule_id": "element(azurerm_lb_nat_rule.tcp.*.id,1)", + "compiletime_identity": "azurerm_network_interface_nat_rule_association.natrule" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "vm", + "properties": { + "name": "vm0", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "availability_set_id": "${azurerm_availability_set.avset.id}", + "vm_size": "Standard_D1_v2", + "network_interface_ids": [ + "element(azurerm_network_interface.nic.*.id,0)" + ], + "storage_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "osdisk0", + "create_option": "FromImage" + } + ], + "os_profile": [ + { + "computer_name": "${var.hostname}", + "admin_username": "vmadmin", + "admin_password": "${var.admin_password}" + } + ], + "os_profile_windows_config": [ + {} + ], + "compiletime_identity": "azurerm_virtual_machine.vm" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "vm", + "properties": { + "name": "vm1", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "availability_set_id": "${azurerm_availability_set.avset.id}", + "vm_size": "Standard_D1_v2", + "network_interface_ids": [ + "element(azurerm_network_interface.nic.*.id,1)" + ], + "storage_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "osdisk1", + "create_option": "FromImage" + } + ], + "os_profile": [ + { + "computer_name": "${var.hostname}", + "admin_username": "vmadmin", + "admin_password": "${var.admin_password}" + } + ], + "os_profile_windows_config": [ + {} + ], + "compiletime_identity": "azurerm_virtual_machine.vm" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT129 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT129 new file mode 100644 index 0000000..12d78bb --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT129 @@ -0,0 +1,150 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/1-dependencies.tf" + ], + "timestamp": 1642943280040, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT129", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_group", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT129", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_network_security_group", + "name": "bastion", + "properties": { + "name": "${azurerm_resource_group.example.name}-mgmt-nsg", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "security_rule": [ + { + "name": "allow-ssh", + "description": "Allow SSH", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "Internet", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.bastion" + } + }, + { + "type": "azurerm_network_security_group", + "name": "web", + "properties": { + "name": "${azurerm_resource_group.example.name}-web", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "security_rule": [ + { + "name": "allow-www", + "description": "Allow HTTP Traffic", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 80, + "source_address_prefix": "Internet", + "destination_address_prefix": "*" + }, + { + "name": "allow-internal-ssh", + "description": "Allow Internal SSH", + "priority": 101, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "VirtualNetwork", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.web" + } + }, + { + "type": "azurerm_subnet", + "name": "bastion", + "properties": { + "name": "${azurerm_resource_group.example.name}-bastion", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.0.128/25" + ], + "network_security_group_id": "${azurerm_network_security_group.bastion.id}", + "compiletime_identity": "azurerm_subnet.bastion" + } + }, + { + "type": "azurerm_subnet", + "name": "web", + "properties": { + "name": "${azurerm_resource_group.example.name}-web", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "network_security_group_id": "${azurerm_network_security_group.web.id}", + "compiletime_identity": "azurerm_subnet.web" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT13 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT13 new file mode 100644 index 0000000..dffdab9 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT13 @@ -0,0 +1,92 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/linux-php/outputs.tf", + "/examples/app-service/linux-php/variables.tf", + "/examples/app-service/linux-php/main.tf" + ], + "timestamp": 1642943279606, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/linux-php/outputs.tf", + "/examples/app-service/linux-php/variables.tf", + "/examples/app-service/linux-php/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT13", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT13", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "example", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "kind": "Linux", + "reserved": true, + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.example" + } + }, + { + "type": "azurerm_app_service", + "name": "example", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "app_service_plan_id": "${azurerm_app_service_plan.example.id}", + "site_config": [ + { + "linux_fx_version": "PHP|7.0", + "scm_type": "LocalGit" + } + ], + "compiletime_identity": "azurerm_app_service.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT130 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT130 new file mode 100644 index 0000000..2b74b2e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT130 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/2-generate-ssh.tf" + ], + "timestamp": 1642943280044, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/2-generate-ssh.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT130", + "status": "active", + "validate": true, + "resourceTypes": [ + "tls_private_key" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT130", + "collection": "terraformtemplate", + "json": { + "locals": [ + { + "public_ssh_key": "${tls_private_key.example.public_key_openssh}" + } + ], + "resources": [ + { + "type": "tls_private_key", + "name": "example", + "properties": { + "algorithm": "RSA", + "rsa_bits": 2048, + "compiletime_identity": "tls_private_key.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT131 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT131 new file mode 100644 index 0000000..1403e76 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT131 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/main.tf" + ], + "timestamp": 1642943280047, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/bastion-box/outputs.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/variables.tf", + "/examples/virtual-machines/virtual_machine/bastion-box/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT131", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT131", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "virtual_machine_name": "${var.prefix}-vm", + "admin_username": "testadmin" + } + ], + "resources": [ + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${azurerm_resource_group.example.name}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_security_group_id": "${azurerm_network_security_group.bastion.id}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.bastion.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-bastionpip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${local.virtual_machine_name}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "storage_image_reference": [ + { + "publisher": "MicrosoftOSTC", + "offer": "FreeBSD", + "sku": 11.1, + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${local.virtual_machine_name}-osdisk", + "managed_disk_type": "Standard_LRS", + "caching": "ReadWrite", + "create_option": "FromImage" + } + ], + "os_profile": [ + { + "computer_name": "${local.virtual_machine_name}", + "admin_username": "${local.admin_username}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": true, + "ssh_keys": [ + { + "path": "/home/${local.admin_username}/.ssh/authorized_keys", + "key_data": "${local.public_ssh_key}" + } + ] + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT132 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT132 new file mode 100644 index 0000000..19182ae --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT132 @@ -0,0 +1,396 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/outputs.tf", + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/variables.tf", + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/main.tf" + ], + "timestamp": 1642943280051, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/outputs.tf", + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/variables.tf", + "/examples/virtual-machines/virtual_machine/encrypt-running-linux-vm/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT132", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_template_deployment", + "azurerm_storage_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT132", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "rg", + "properties": { + "name": "${var.resource_group}", + "location": "southcentralus", + "compiletime_identity": "azurerm_resource_group.rg" + } + }, + { + "type": "azurerm_virtual_network", + "name": "vnet", + "properties": { + "name": "${var.hostname}vnet", + "location": "southcentralus", + "address_space": [ + "10.0.0.0/24" + ], + "resource_group_name": "${azurerm_resource_group.rg.name}", + "compiletime_identity": "azurerm_virtual_network.vnet" + } + }, + { + "type": "azurerm_subnet", + "name": "subnet", + "properties": { + "name": "${var.hostname}subnet", + "virtual_network_name": "${azurerm_virtual_network.vnet.name}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_prefixes": [ + "10.0.0.0/24" + ], + "compiletime_identity": "azurerm_subnet.subnet" + } + }, + { + "type": "azurerm_network_interface", + "name": "nic", + "properties": { + "name": "nic", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "ip_configuration": [ + { + "name": "ipconfig", + "subnet_id": "${azurerm_subnet.subnet.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.nic" + } + }, + { + "type": "azurerm_storage_account", + "name": "stor", + "properties": { + "name": "${var.hostname}stor", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.stor" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "vm", + "properties": { + "name": "${var.hostname}", + "location": "southcentralus", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "vm_size": "Standard_F2", + "network_interface_ids": [ + "${azurerm_network_interface.nic.id}" + ], + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${var.hostname}osdisk", + "create_option": "FromImage", + "disk_size_gb": 30 + } + ], + "os_profile": [ + { + "computer_name": "${var.hostname}", + "admin_username": "vmadmin", + "admin_password": "${var.admin_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "compiletime_identity": "azurerm_virtual_machine.vm" + } + }, + { + "type": "azurerm_template_deployment", + "name": "linux_vm", + "properties": { + "name": "encrypt", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "deployment_mode": "Incremental", + "depends_on": [ + "azurerm_virtual_machine.vm" + ], + "template_body": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "aadClientID": { + "defaultValue": "${var.aad_client_id}", + "type": "string" + }, + "aadClientSecret": { + "defaultValue": "${var.aad_client_secret}", + "type": "string" + }, + "diskFormatQuery": { + "defaultValue": "", + "type": "string" + }, + "encryptionOperation": { + "allowedValues": [ + "EnableEncryption", + "EnableEncryptionFormat" + ], + "defaultValue": "EnableEncryption", + "type": "string" + }, + "volumeType": { + "allowedValues": [ + "OS", + "Data", + "All" + ], + "defaultValue": "All", + "type": "string" + }, + "keyEncryptionKeyURL": { + "defaultValue": "${var.key_encryption_key_url}", + "type": "string" + }, + "keyVaultName": { + "defaultValue": "${var.key_vault_name}", + "type": "string" + }, + "keyVaultResourceGroup": { + "defaultValue": "${azurerm_resource_group.rg.name}", + "type": "string" + }, + "passphrase": { + "defaultValue": "${var.passphrase}", + "type": "string" + }, + "sequenceVersion": { + "defaultValue": 1, + "type": "string" + }, + "useKek": { + "allowedValues": [ + "nokek", + "kek" + ], + "defaultValue": "kek", + "type": "string" + }, + "vmName": { + "defaultValue": "${azurerm_virtual_machine.vm.name}", + "type": "string" + }, + "_artifactsLocation": { + "type": "string", + "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master" + }, + "_artifactsLocationSasToken": { + "type": "string", + "defaultValue": "" + } + }, + "variables": { + "extensionName": "AzureDiskEncryptionForLinux", + "extensionVersion": 0.1, + "keyEncryptionAlgorithm": "RSA-OAEP", + "keyVaultURL": "https://${var.key_vault_name}.vault.azure.net/", + "keyVaultResourceID": "${var.key_vault_resource_id}", + "updateVmUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-encrypt-running-linux-vm/updatevm-kek.json" + }, + "resources": [ + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": [ + [ + "p", + "a", + "r", + "a", + "m", + "e", + "t", + "e", + "r", + "s", + "(", + "", + "v", + "m", + "N", + "a", + "m", + "e", + "", + ")", + "/", + "v", + "a", + "r", + "i", + "a", + "b", + "l", + "e", + "s", + "(", + "", + "e", + "x", + "t", + "e", + "n", + "s", + "i", + "o", + "n", + "N", + "a", + "m", + "e", + "", + ")" + ] + ], + "apiVersion": "2015-06-15", + "location": "[resourceGroup().location]", + "properties": { + "protectedSettings": { + "AADClientSecret": "[parameters('aadClientSecret')]", + "Passphrase": "[parameters('passphrase')]" + }, + "publisher": "Microsoft.Azure.Security", + "settings": { + "AADClientID": "[parameters('aadClientID')]", + "DiskFormatQuery": "[parameters('diskFormatQuery')]", + "EncryptionOperation": "[parameters('encryptionOperation')]", + "KeyEncryptionAlgorithm": "[variables('keyEncryptionAlgorithm')]", + "KeyEncryptionKeyURL": "[parameters('keyEncryptionKeyURL')]", + "KeyVaultURL": "[variables('keyVaultURL')]", + "SequenceVersion": "[parameters('sequenceVersion')]", + "VolumeType": "[parameters('volumeType')]" + }, + "type": "AzureDiskEncryptionForLinux", + "typeHandlerVersion": "[variables('extensionVersion')]" + } + }, + { + "apiVersion": "2015-01-01", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))]" + ], + "name": [ + [ + "p", + "a", + "r", + "a", + "m", + "e", + "t", + "e", + "r", + "s", + "(", + "", + "v", + "m", + "N", + "a", + "m", + "e", + "", + ")", + "u", + "p", + "d", + "a", + "t", + "e", + "V", + "m" + ] + ], + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "parameters": { + "keyEncryptionKeyURL": { + "value": "[parameters('keyEncryptionKeyURL')]" + }, + "keyVaultResourceID": { + "value": "[variables('keyVaultResourceID')]" + }, + "keyVaultSecretUrl": { + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))).instanceView.statuses[0].message]" + }, + "vmName": { + "value": "[parameters('vmName')]" + } + }, + "templateLink": { + "contentVersion": "1.0.0.0", + "uri": "[variables('updateVmUrl')]" + } + } + } + ], + "outputs": { + "BitLockerKey": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Compute/virtualMachines/extensions', parameters('vmName'), variables('extensionName'))).instanceView.statuses[0].message]" + } + } + }, + "compiletime_identity": "azurerm_template_deployment.linux_vm" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT133 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT133 new file mode 100644 index 0000000..19e4132 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT133 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/1-dependencies.tf" + ], + "timestamp": 1642943280055, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT133", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT133", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "testconfiguration1", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT134 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT134 new file mode 100644 index 0000000..25b242d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT134 @@ -0,0 +1,111 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/main.tf" + ], + "timestamp": 1642943280058, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/attaching-external-disks/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT134", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine", + "azurerm_virtual_machine_data_disk_attachment", + "azurerm_managed_disk" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT134", + "collection": "terraformtemplate", + "json": { + "locals": [ + { + "number_of_disks": 2 + } + ], + "resources": [ + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}-vm", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "myosdisk1", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + }, + { + "type": "azurerm_managed_disk", + "name": "external", + "properties": { + "count": "${local.number_of_disks}", + "name": "${var.prefix}-disk${count.index+1}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "storage_account_type": "Standard_LRS", + "create_option": "Empty", + "disk_size_gb": 10, + "compiletime_identity": "azurerm_managed_disk.external" + } + }, + { + "type": "azurerm_virtual_machine_data_disk_attachment", + "name": "external", + "properties": { + "count": "${local.number_of_disks}", + "managed_disk_id": "${azurerm_managed_disk.external.*.id[count.index]}", + "virtual_machine_id": "${azurerm_virtual_machine.example.id}", + "lun": "${10+count.index}", + "caching": "ReadWrite", + "compiletime_identity": "azurerm_virtual_machine_data_disk_attachment.external" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT135 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT135 new file mode 100644 index 0000000..e807ee5 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT135 @@ -0,0 +1,90 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/basic/1-dependencies.tf" + ], + "timestamp": 1642943280060, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/basic/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT135", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT135", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "testconfiguration1", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT136 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT136 new file mode 100644 index 0000000..8769b52 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT136 @@ -0,0 +1,88 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/basic/main.tf" + ], + "timestamp": 1642943280063, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT136", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT136", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}-vm", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "delete_os_disk_on_termination": true, + "delete_data_disks_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "myosdisk1", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT137 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT137 new file mode 100644 index 0000000..ef5566a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT137 @@ -0,0 +1,90 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/1-dependencies.tf" + ], + "timestamp": 1642943280067, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT137", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT137", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "testconfiguration1", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT138 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT138 new file mode 100644 index 0000000..ce11023 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT138 @@ -0,0 +1,92 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/main.tf" + ], + "timestamp": 1642943280070, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-custom-image/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT138", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT138", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_image": { + "custom": { + "name": "${var.custom_image_name}", + "resource_group_name": "${var.custom_image_resource_group_name}" + } + } + }, + "resources": [ + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}-vm", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "id": "${data.azurerm_image.custom.id}" + } + ], + "storage_os_disk": [ + { + "name": "osdisk", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT139 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT139 new file mode 100644 index 0000000..91aebe1 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT139 @@ -0,0 +1,103 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/1-dependencies.tf" + ], + "timestamp": 1642943280076, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT139", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT139", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "public_ip_address_allocation": "Dynamic", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT14 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT14 new file mode 100644 index 0000000..a891f1d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT14 @@ -0,0 +1,117 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/windows-authentication/outputs.tf", + "/examples/app-service/windows-authentication/variables.tf", + "/examples/app-service/windows-authentication/main.tf" + ], + "timestamp": 1642943279610, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/windows-authentication/outputs.tf", + "/examples/app-service/windows-authentication/variables.tf", + "/examples/app-service/windows-authentication/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT14", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT14", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "sku": [ + { + "tier": "Basic", + "size": "B1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "dotnet_framework_version": "v4.0", + "remote_debugging_enabled": true, + "remote_debugging_version": "VS2019" + } + ], + "auth_settings": [ + { + "enabled": true, + "issuer": "https://sts.windows.net/d13958f6-b541-4dad-97b9-5a39c6b01297", + "default_provider": "AzureActiveDirectory", + "unauthenticated_client_action": "RedirectToLoginPage", + "active_directory": [ + { + "client_id": "aadclientid", + "client_secret": "aadsecret", + "allowed_audiences": [ + "someallowedaudience" + ] + } + ], + "microsoft": [ + { + "client_id": "microsoftclientid", + "client_secret": "microsoftclientsecret", + "oauth_scopes": [ + "somescope" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT140 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT140 new file mode 100644 index 0000000..e5003a3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT140 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/main.tf" + ], + "timestamp": 1642943280085, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/from-marketplace-image/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT140", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT140", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "virtual_machine_name": "${var.prefix}-vm" + } + ], + "resources": [ + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${local.virtual_machine_name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "storage_image_reference": [ + { + "publisher": "radware", + "offer": "radware-alteon-va", + "sku": "radware-alteon-ng-va-adc", + "version": "latest" + } + ], + "plan": [ + { + "name": "radware-alteon-ng-va-adc", + "publisher": "radware", + "product": "radware-alteon-va" + } + ], + "storage_os_disk": [ + { + "name": "${local.virtual_machine_name}-osdisk", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT141 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT141 new file mode 100644 index 0000000..b743368 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT141 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/outputs.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/1-dependencies.tf" + ], + "timestamp": 1642943280090, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/outputs.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT141", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT141", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT142 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT142 new file mode 100644 index 0000000..3349163 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT142 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/outputs.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/main.tf" + ], + "timestamp": 1642943280094, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/outputs.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/variables.tf", + "/examples/virtual-machines/virtual_machine/managed-disks/public-ip/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT142", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT142", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "testconfiguration1", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}-vm", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "myosdisk1", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT143 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT143 new file mode 100644 index 0000000..07b6cac --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT143 @@ -0,0 +1,231 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/multiple-network-interfaces/variables.tf", + "/examples/virtual-machines/virtual_machine/multiple-network-interfaces/main.tf" + ], + "timestamp": 1642943280101, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/multiple-network-interfaces/variables.tf", + "/examples/virtual-machines/virtual_machine/multiple-network-interfaces/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT143", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_network_security_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT143", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "virtual_machine_name": "${var.prefix}vm" + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "172.16.0.0/16" + ], + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "external", + "properties": { + "name": "external", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "172.16.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.external" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "172.16.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-nsg", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "security_rule": [ + { + "name": "allow_SSH", + "description": "Allow SSH access", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "*", + "destination_address_prefix": "*" + }, + { + "name": "allow_RDP", + "description": "Allow RDP access", + "priority": 110, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 3389, + "source_address_prefix": "*", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "external", + "properties": { + "name": "${var.prefix}-ext-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "ip_configuration": [ + { + "name": "primary", + "subnet_id": "${azurerm_subnet.external.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.external" + } + }, + { + "type": "azurerm_network_interface", + "name": "internal", + "properties": { + "name": "${var.prefix}-int-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "primary", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.internal" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "primary_network_interface_id": "${azurerm_network_interface.external.id}", + "network_interface_ids": [ + "${azurerm_network_interface.external.id}", + "${azurerm_network_interface.internal.id}" + ], + "vm_size": "Standard_DS1_v2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${local.virtual_machine_name}-osdisk", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "${local.virtual_machine_name}", + "admin_username": "myadmin", + "admin_password": "Passwword1234" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "compiletime_identity": "azurerm_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT144 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT144 new file mode 100644 index 0000000..1554705 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT144 @@ -0,0 +1,1021 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/openshift-origin/outputs.tf", + "/examples/virtual-machines/virtual_machine/openshift-origin/variables.tf", + "/examples/virtual-machines/virtual_machine/openshift-origin/main.tf" + ], + "timestamp": 1642943280105, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/openshift-origin/outputs.tf", + "/examples/virtual-machines/virtual_machine/openshift-origin/variables.tf", + "/examples/virtual-machines/virtual_machine/openshift-origin/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT144", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_availability_set", + "azurerm_network_interface", + "azurerm_network_security_group", + "azurerm_virtual_machine", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_storage_account", + "azurerm_lb_probe", + "azurerm_lb_nat_rule" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT144", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ], + "subscription_id": "${var.subscription_id}", + "client_id": "${var.aad_client_id}", + "client_secret": "${var.aad_client_secret}", + "tenant_id": "${var.tenant_id}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "rg", + "properties": { + "name": "${var.resource_group_name}", + "location": "southcentralus", + "compiletime_identity": "azurerm_resource_group.rg" + } + }, + { + "type": "azurerm_network_security_group", + "name": "primary_nsg", + "properties": { + "name": "${var.openshift_cluster_prefix}-primary-nsg", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "security_rule": [ + { + "name": "allow_SSH_in_all", + "description": "Allow SSH in from all locations", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "*", + "destination_address_prefix": "*" + }, + { + "name": "allow_HTTPS_all", + "description": "Allow HTTPS connections from all locations", + "priority": 200, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 443, + "source_address_prefix": "*", + "destination_address_prefix": "*" + }, + { + "name": "allow_OpenShift_console_in_all", + "description": "Allow OpenShift Console connections from all locations", + "priority": 300, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 8443, + "source_address_prefix": "*", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.primary_nsg" + } + }, + { + "type": "azurerm_network_security_group", + "name": "infra_nsg", + "properties": { + "name": "${var.openshift_cluster_prefix}-infra-nsg", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "security_rule": [ + { + "name": "allow_SSH_in_all", + "description": "Allow SSH in from all locations", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "*", + "destination_address_prefix": "*" + }, + { + "name": "allow_HTTPS_all", + "description": "Allow HTTPS connections from all locations", + "priority": 200, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 443, + "source_address_prefix": "*", + "destination_address_prefix": "*" + }, + { + "name": "allow_HTTP_in_all", + "description": "Allow HTTP connections from all locations", + "priority": 300, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 80, + "source_address_prefix": "*", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.infra_nsg" + } + }, + { + "type": "azurerm_network_security_group", + "name": "node_nsg", + "properties": { + "name": "${var.openshift_cluster_prefix}-node-nsg", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "security_rule": [ + { + "name": "allow_SSH_in_all", + "description": "Allow SSH in from all locations", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "*", + "destination_address_prefix": "*" + }, + { + "name": "allow_HTTPS_all", + "description": "Allow HTTPS connections from all locations", + "priority": 200, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 443, + "source_address_prefix": "*", + "destination_address_prefix": "*" + }, + { + "name": "allow_HTTP_in_all", + "description": "Allow HTTP connections from all locations", + "priority": 300, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 80, + "source_address_prefix": "*", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.node_nsg" + } + }, + { + "type": "azurerm_storage_account", + "name": "bastion_storage_account", + "properties": { + "name": "${var.openshift_cluster_prefix}bsa", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.bastion_storage_account" + } + }, + { + "type": "azurerm_storage_account", + "name": "primary_storage_account", + "properties": { + "name": "${var.openshift_cluster_prefix}msa", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.primary_storage_account" + } + }, + { + "type": "azurerm_storage_account", + "name": "infra_storage_account", + "properties": { + "name": "${var.openshift_cluster_prefix}infrasa", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.infra_storage_account" + } + }, + { + "type": "azurerm_storage_account", + "name": "nodeos_storage_account", + "properties": { + "name": "${var.openshift_cluster_prefix}nodeossa", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.nodeos_storage_account" + } + }, + { + "type": "azurerm_storage_account", + "name": "nodedata_storage_account", + "properties": { + "name": "${var.openshift_cluster_prefix}nodedatasa", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.nodedata_storage_account" + } + }, + { + "type": "azurerm_storage_account", + "name": "registry_storage_account", + "properties": { + "name": "${var.openshift_cluster_prefix}regsa", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.registry_storage_account" + } + }, + { + "type": "azurerm_storage_account", + "name": "persistent_volume_storage_account", + "properties": { + "name": "${var.openshift_cluster_prefix}pvsa", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.persistent_volume_storage_account" + } + }, + { + "type": "azurerm_availability_set", + "name": "primary", + "properties": { + "name": "primaryavailabilityset", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "compiletime_identity": "azurerm_availability_set.primary" + } + }, + { + "type": "azurerm_availability_set", + "name": "infra", + "properties": { + "name": "infraavailabilityset", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "compiletime_identity": "azurerm_availability_set.infra" + } + }, + { + "type": "azurerm_availability_set", + "name": "node", + "properties": { + "name": "nodeavailabilityset", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "compiletime_identity": "azurerm_availability_set.node" + } + }, + { + "type": "azurerm_public_ip", + "name": "bastion_pip", + "properties": { + "name": "bastionpip", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "allocation_method": "Static", + "domain_name_label": "${var.openshift_cluster_prefix}-bastion", + "compiletime_identity": "azurerm_public_ip.bastion_pip" + } + }, + { + "type": "azurerm_public_ip", + "name": "openshift_primary_pip", + "properties": { + "name": "primarypip", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "allocation_method": "Static", + "domain_name_label": "${var.openshift_cluster_prefix}", + "compiletime_identity": "azurerm_public_ip.openshift_primary_pip" + } + }, + { + "type": "azurerm_public_ip", + "name": "infra_lb_pip", + "properties": { + "name": "infraip", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "allocation_method": "Static", + "domain_name_label": "${var.openshift_cluster_prefix}infrapip", + "compiletime_identity": "azurerm_public_ip.infra_lb_pip" + } + }, + { + "type": "azurerm_virtual_network", + "name": "vnet", + "properties": { + "name": "openshiftvnet", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_space": [ + "10.0.0.0/8" + ], + "depends_on": [ + "azurerm_virtual_network.vnet" + ], + "compiletime_identity": "azurerm_virtual_network.vnet" + } + }, + { + "type": "azurerm_subnet", + "name": "primary_subnet", + "properties": { + "name": "primarysubnet", + "virtual_network_name": "${azurerm_virtual_network.vnet.name}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_prefixes": [ + "10.1.0.0/16" + ], + "depends_on": [ + "azurerm_virtual_network.vnet" + ], + "compiletime_identity": "azurerm_subnet.primary_subnet" + } + }, + { + "type": "azurerm_subnet", + "name": "node_subnet", + "properties": { + "name": "nodesubnet", + "virtual_network_name": "${azurerm_virtual_network.vnet.name}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_prefixes": [ + "10.2.0.0/16" + ], + "compiletime_identity": "azurerm_subnet.node_subnet" + } + }, + { + "type": "azurerm_lb", + "name": "primary_lb", + "properties": { + "name": "primaryloadbalancer", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "depends_on": [ + "azurerm_public_ip.openshift_primary_pip" + ], + "frontend_ip_configuration": [ + { + "name": "LoadBalancerFrontEnd", + "public_ip_address_id": "${azurerm_public_ip.openshift_primary_pip.id}" + } + ], + "compiletime_identity": "azurerm_lb.primary_lb" + } + }, + { + "type": "azurerm_lb", + "name": "infra_lb", + "properties": { + "name": "infraloadbalancer", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "depends_on": [ + "azurerm_public_ip.infra_lb_pip" + ], + "frontend_ip_configuration": [ + { + "name": "LoadBalancerFrontEnd", + "public_ip_address_id": "${azurerm_public_ip.infra_lb_pip.id}" + } + ], + "compiletime_identity": "azurerm_lb.infra_lb" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "primary_lb", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "name": "loadBalancerBackEnd", + "loadbalancer_id": "${azurerm_lb.primary_lb.id}", + "depends_on": [ + "azurerm_lb.primary_lb" + ], + "compiletime_identity": "azurerm_lb_backend_address_pool.primary_lb" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "infra_lb", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "name": "loadBalancerBackEnd", + "loadbalancer_id": "${azurerm_lb.infra_lb.id}", + "depends_on": [ + "azurerm_lb.infra_lb" + ], + "compiletime_identity": "azurerm_lb_backend_address_pool.infra_lb" + } + }, + { + "type": "azurerm_lb_probe", + "name": "primary_lb", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.primary_lb.id}", + "name": "8443Probe", + "port": 8443, + "interval_in_seconds": 5, + "number_of_probes": 2, + "protocol": "Tcp", + "depends_on": [ + "azurerm_lb.primary_lb" + ], + "compiletime_identity": "azurerm_lb_probe.primary_lb" + } + }, + { + "type": "azurerm_lb_probe", + "name": "infra_lb_http_probe", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.infra_lb.id}", + "name": "httpProbe", + "port": 80, + "interval_in_seconds": 5, + "number_of_probes": 2, + "protocol": "Tcp", + "depends_on": [ + "azurerm_lb.infra_lb" + ], + "compiletime_identity": "azurerm_lb_probe.infra_lb_http_probe" + } + }, + { + "type": "azurerm_lb_probe", + "name": "infra_lb_https_probe", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.infra_lb.id}", + "name": "httpsProbe", + "port": 443, + "interval_in_seconds": 5, + "number_of_probes": 2, + "protocol": "Tcp", + "compiletime_identity": "azurerm_lb_probe.infra_lb_https_probe" + } + }, + { + "type": "azurerm_lb_rule", + "name": "primary_lb", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.primary_lb.id}", + "name": "OpenShiftAdminConsole", + "protocol": "Tcp", + "frontend_port": 8443, + "backend_port": 8443, + "frontend_ip_configuration_name": "LoadBalancerFrontEnd", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.primary_lb.id}", + "load_distribution": "SourceIP", + "idle_timeout_in_minutes": 30, + "probe_id": "${azurerm_lb_probe.primary_lb.id}", + "enable_floating_ip": false, + "depends_on": [ + "azurerm_lb_probe.primary_lb", + "azurerm_lb.primary_lb", + "azurerm_lb_backend_address_pool.primary_lb" + ], + "compiletime_identity": "azurerm_lb_rule.primary_lb" + } + }, + { + "type": "azurerm_lb_rule", + "name": "infra_lb_http", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.infra_lb.id}", + "name": "OpenShiftRouterHTTP", + "protocol": "Tcp", + "frontend_port": 80, + "backend_port": 80, + "frontend_ip_configuration_name": "LoadBalancerFrontEnd", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.infra_lb.id}", + "probe_id": "${azurerm_lb_probe.infra_lb_http_probe.id}", + "depends_on": [ + "azurerm_lb_probe.infra_lb_http_probe", + "azurerm_lb.infra_lb", + "azurerm_lb_backend_address_pool.infra_lb" + ], + "compiletime_identity": "azurerm_lb_rule.infra_lb_http" + } + }, + { + "type": "azurerm_lb_rule", + "name": "infra_lb_https", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.infra_lb.id}", + "name": "OpenShiftRouterHTTPS", + "protocol": "Tcp", + "frontend_port": 443, + "backend_port": 443, + "frontend_ip_configuration_name": "LoadBalancerFrontEnd", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.infra_lb.id}", + "probe_id": "${azurerm_lb_probe.infra_lb_https_probe.id}", + "depends_on": [ + "azurerm_lb_probe.infra_lb_https_probe", + "azurerm_lb_backend_address_pool.infra_lb" + ], + "compiletime_identity": "azurerm_lb_rule.infra_lb_https" + } + }, + { + "type": "azurerm_lb_nat_rule", + "name": "primary_lb", + "properties": { + "resource_group_name": "${azurerm_resource_group.rg.name}", + "loadbalancer_id": "${azurerm_lb.primary_lb.id}", + "name": "${azurerm_lb.primary_lb.name}-SSH-0", + "protocol": "Tcp", + "frontend_port": "${count.index + 2200}", + "backend_port": 22, + "frontend_ip_configuration_name": "LoadBalancerFrontEnd", + "depends_on": [ + "azurerm_lb.primary_lb" + ], + "compiletime_identity": "azurerm_lb_nat_rule.primary_lb" + } + }, + { + "type": "azurerm_network_interface", + "name": "bastion_nic", + "properties": { + "name": "bastionnic${count.index}", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_security_group_id": "${azurerm_network_security_group.primary_nsg.id}", + "ip_configuration": [ + { + "name": "bastionip${count.index}", + "subnet_id": "${azurerm_subnet.primary_subnet.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.bastion_pip.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.bastion_nic" + } + }, + { + "type": "azurerm_network_interface", + "name": "primary_nic", + "properties": { + "name": "primarynic0", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_security_group_id": "${azurerm_network_security_group.primary_nsg.id}", + "ip_configuration": [ + { + "name": "primaryip0", + "subnet_id": "${azurerm_subnet.primary_subnet.id}", + "private_ip_address_allocation": "Dynamic", + "load_balancer_backend_address_pools_ids": [ + "${azurerm_lb_backend_address_pool.primary_lb.id}" + ], + "load_balancer_inbound_nat_rules_ids": [ + "element(azurerm_lb_nat_rule.primary_lb.*.id,0)" + ] + } + ], + "compiletime_identity": "azurerm_network_interface.primary_nic" + } + }, + { + "type": "azurerm_network_interface", + "name": "infra_nic", + "properties": { + "name": "infra_nic0", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_security_group_id": "${azurerm_network_security_group.infra_nsg.id}", + "ip_configuration": [ + { + "name": "infraip0", + "subnet_id": "${azurerm_subnet.primary_subnet.id}", + "private_ip_address_allocation": "Dynamic", + "load_balancer_backend_address_pools_ids": [ + "${azurerm_lb_backend_address_pool.infra_lb.id}" + ] + } + ], + "compiletime_identity": "azurerm_network_interface.infra_nic" + } + }, + { + "type": "azurerm_network_interface", + "name": "node_nic", + "properties": { + "name": "node_nic0", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_security_group_id": "${azurerm_network_security_group.node_nsg.id}", + "ip_configuration": [ + { + "name": "nodeip0", + "subnet_id": "${azurerm_subnet.node_subnet.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.node_nic" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "bastion", + "properties": { + "name": "${var.openshift_cluster_prefix}-bastion-1", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_interface_ids": [ + "${azurerm_network_interface.bastion_nic.id}" + ], + "vm_size": "Standard_D2_v2", + "delete_os_disk_on_termination": true, + "delete_data_disks_on_termination": true, + "tags": { + "displayName": "${var.openshift_cluster_prefix}-bastion VM Creation" + }, + "os_profile": [ + { + "computer_name": "${var.openshift_cluster_prefix}-bastion-${count.index}", + "admin_username": "ocpadmin", + "admin_password": "${var.openshift_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": true, + "ssh_keys": [ + { + "path": "/home/ocpadmin/.ssh/authorized_keys", + "key_data": "${var.ssh_public_key}" + } + ] + } + ], + "storage_image_reference": [ + { + "publisher": "Openlogic", + "offer": "CentOS", + "sku": "7.3", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${var.openshift_cluster_prefix}-primary-osdisk${count.index}", + "vhd_uri": "${azurerm_storage_account.bastion_storage_account.primary_blob_endpoint}vhds/${var.openshift_cluster_prefix}-bastion-osdisk.vhd", + "caching": "ReadWrite", + "create_option": "FromImage", + "disk_size_gb": 60 + } + ], + "compiletime_identity": "azurerm_virtual_machine.bastion" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "primary", + "properties": { + "name": "${var.openshift_cluster_prefix}-primary-0", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "availability_set_id": "${azurerm_availability_set.primary.id}", + "network_interface_ids": [ + "element(azurerm_network_interface.primary_nic.*.id,0)" + ], + "vm_size": "Standard_DS4_v2", + "delete_os_disk_on_termination": true, + "delete_data_disks_on_termination": true, + "depends_on": [ + "azurerm_virtual_machine.infra", + "azurerm_virtual_machine.node" + ], + "tags": { + "displayName": "${var.openshift_cluster_prefix}-primary VM Creation" + }, + "connection": [ + { + "host": "${azurerm_public_ip.openshift_primary_pip.fqdn}", + "user": "ocpadmin", + "port": 2200, + "private_key": "${file(var.connection_private_ssh_key_path)}" + } + ], + "provisioner": [ + { + "file": { + "source": "${var.openshift_script_path}/primaryPrep.sh", + "destination": "primaryPrep.sh" + } + }, + { + "file": { + "source": "${var.openshift_script_path}/deployOpenShift.sh", + "destination": "deployOpenShift.sh" + } + }, + { + "remote-exec": { + "inline": [ + "set -x", + "chmod +x primaryPrep.sh", + "chmod +x deployOpenShift.sh", + "sudo bash primaryPrep.sh \\\"${azurerm_storage_account.persistent_volume_storage_account.name}\\\" \\\"southcentralus\\\" \\\"ocpadmin\\\" && sudo bash deployOpenShift.sh \\\"ocpadmin\\\" \\\"${var.openshift_password}\\\" \\\"${var.key_vault_secret}\\\" \\\"${var.openshift_cluster_prefix}-primary\\\" \\\"${azurerm_public_ip.openshift_primary_pip.fqdn}\\\" \\\"${azurerm_public_ip.openshift_primary_pip.ip_address}\\\" \\\"${var.openshift_cluster_prefix}-infra\\\" \\\"${var.openshift_cluster_prefix}-node\\\" \\\"1\\\" \\\"1\\\" \\\"1\\\" \\\"xipio\\\" \\\"${azurerm_storage_account.registry_storage_account.name}\\\" \\\"${azurerm_storage_account.registry_storage_account.primary_access_key}\\\" \\\"${var.tenant_id}\\\" \\\"${var.subscription_id}\\\" \\\"${var.aad_client_id}\\\" \\\"${var.aad_client_secret}\\\" \\\"${azurerm_resource_group.rg.name}\\\" \\\"${azurerm_resource_group.rg.location}\\\" \\\"${var.key_vault_name}\\\"" + ] + } + } + ], + "os_profile": [ + { + "computer_name": "${var.openshift_cluster_prefix}-primary-0", + "admin_username": "ocpadmin", + "admin_password": "${var.openshift_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": true, + "ssh_keys": [ + { + "path": "/home/ocpadmin/.ssh/authorized_keys", + "key_data": "${var.ssh_public_key}" + } + ] + } + ], + "storage_image_reference": [ + { + "publisher": "Openlogic", + "offer": "CentOS", + "sku": "7.3", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${var.openshift_cluster_prefix}-primary-osdisk0", + "vhd_uri": "${azurerm_storage_account.primary_storage_account.primary_blob_endpoint}vhds/${var.openshift_cluster_prefix}-primary-osdisk0.vhd", + "caching": "ReadWrite", + "create_option": "FromImage", + "disk_size_gb": 60 + } + ], + "storage_data_disk": [ + { + "name": "${var.openshift_cluster_prefix}-primary-docker-pool0", + "vhd_uri": "${azurerm_storage_account.primary_storage_account.primary_blob_endpoint}vhds/${var.openshift_cluster_prefix}-primary-docker-pool0.vhd", + "disk_size_gb": 128, + "create_option": "Empty", + "lun": 0 + } + ], + "compiletime_identity": "azurerm_virtual_machine.primary" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "infra", + "properties": { + "name": "${var.openshift_cluster_prefix}-infra-0", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "availability_set_id": "${azurerm_availability_set.infra.id}", + "network_interface_ids": [ + "element(azurerm_network_interface.infra_nic.*.id,0)" + ], + "vm_size": "Standard_DS3_v2", + "delete_os_disk_on_termination": true, + "delete_data_disks_on_termination": true, + "tags": { + "displayName": "${var.openshift_cluster_prefix}-infra VM Creation" + }, + "connection": [ + { + "type": "ssh", + "bastion_host": "${azurerm_public_ip.bastion_pip.fqdn}", + "bastion_user": "ocpadmin", + "bastion_private_key": "${file(var.connection_private_ssh_key_path)}", + "host": "element(azurerm_network_interface.infra_nic.*.private_ip_address,0)", + "user": "ocpadmin", + "private_key": "${file(var.connection_private_ssh_key_path)}" + } + ], + "provisioner": [ + { + "file": { + "source": "${var.openshift_script_path}/nodePrep.sh", + "destination": "nodePrep.sh" + } + }, + { + "remote-exec": { + "inline": [ + "chmod +x nodePrep.sh", + "sudo bash nodePrep.sh" + ] + } + } + ], + "os_profile": [ + { + "computer_name": "${var.openshift_cluster_prefix}-infra-0", + "admin_username": "ocpadmin", + "admin_password": "${var.openshift_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": true, + "ssh_keys": [ + { + "path": "/home/ocpadmin/.ssh/authorized_keys", + "key_data": "${var.ssh_public_key}" + } + ] + } + ], + "storage_image_reference": [ + { + "publisher": "Openlogic", + "offer": "CentOS", + "sku": "7.3", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${var.openshift_cluster_prefix}-infra-osdisk0", + "vhd_uri": "${azurerm_storage_account.infra_storage_account.primary_blob_endpoint}vhds/${var.openshift_cluster_prefix}-infra-osdisk0.vhd", + "caching": "ReadWrite", + "create_option": "FromImage" + } + ], + "storage_data_disk": [ + { + "name": "${var.openshift_cluster_prefix}-infra-docker-pool", + "vhd_uri": "${azurerm_storage_account.infra_storage_account.primary_blob_endpoint}vhds/${var.openshift_cluster_prefix}-infra-docker-pool0.vhd", + "disk_size_gb": 128, + "create_option": "Empty", + "lun": 0 + } + ], + "compiletime_identity": "azurerm_virtual_machine.infra" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "node", + "properties": { + "name": "${var.openshift_cluster_prefix}-node-0", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "availability_set_id": "${azurerm_availability_set.node.id}", + "network_interface_ids": [ + "element(azurerm_network_interface.node_nic.*.id,0)" + ], + "vm_size": "Standard_DS3_v2", + "delete_os_disk_on_termination": true, + "delete_data_disks_on_termination": true, + "tags": { + "displayName": "${var.openshift_cluster_prefix}-node VM Creation" + }, + "connection": [ + { + "type": "ssh", + "bastion_host": "${azurerm_public_ip.bastion_pip.fqdn}", + "bastion_user": "ocpadmin", + "bastion_private_key": "${file(var.connection_private_ssh_key_path)}", + "host": "element(azurerm_network_interface.node_nic.*.private_ip_address,0)", + "user": "ocpadmin", + "private_key": "${file(var.connection_private_ssh_key_path)}" + } + ], + "provisioner": [ + { + "file": { + "source": "${var.openshift_script_path}/nodePrep.sh", + "destination": "nodePrep.sh" + } + }, + { + "remote-exec": { + "inline": [ + "chmod +x nodePrep.sh", + "sudo bash nodePrep.sh" + ] + } + } + ], + "os_profile": [ + { + "computer_name": "${var.openshift_cluster_prefix}-node-0", + "admin_username": "ocpadmin", + "admin_password": "${var.openshift_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": true, + "ssh_keys": [ + { + "path": "/home/ocpadmin/.ssh/authorized_keys", + "key_data": "${var.ssh_public_key}" + } + ] + } + ], + "storage_image_reference": [ + { + "publisher": "Openlogic", + "offer": "CentOS", + "sku": "7.3", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${var.openshift_cluster_prefix}-node-osdisk", + "vhd_uri": "${azurerm_storage_account.nodeos_storage_account.primary_blob_endpoint}vhds/${var.openshift_cluster_prefix}-node-osdisk0.vhd", + "caching": "ReadWrite", + "create_option": "FromImage" + } + ], + "storage_data_disk": [ + { + "name": "${var.openshift_cluster_prefix}-node-docker-pool0", + "vhd_uri": "${azurerm_storage_account.nodeos_storage_account.primary_blob_endpoint}vhds/${var.openshift_cluster_prefix}-node-docker-pool0.vhd", + "disk_size_gb": 128, + "create_option": "Empty", + "lun": 0 + } + ], + "compiletime_identity": "azurerm_virtual_machine.node" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT145 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT145 new file mode 100644 index 0000000..1b8930a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT145 @@ -0,0 +1,110 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/linux/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/linux/1-dependencies.tf" + ], + "timestamp": 1642943280111, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/linux/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/linux/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT145", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT145", + "collection": "terraformtemplate", + "json": { + "locals": [ + { + "virtual_machine_name": "${var.prefix}-vm", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-publicip", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "configuration", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT146 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT146 new file mode 100644 index 0000000..7e62966 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT146 @@ -0,0 +1,102 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/linux/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/linux/main.tf" + ], + "timestamp": 1642943280115, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/linux/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/linux/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT146", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT146", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${local.virtual_machine_name}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${var.prefix}-osdisk", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "${local.virtual_machine_name}", + "admin_username": "${local.admin_username}", + "admin_password": "${local.admin_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "provisioner": [ + { + "remote-exec": { + "connection": [ + { + "user": "${local.admin_username}", + "password": "${local.admin_password}" + } + ], + "inline": [ + "ls -la" + ] + } + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT147 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT147 new file mode 100644 index 0000000..783032e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT147 @@ -0,0 +1,110 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/1-dependencies.tf" + ], + "timestamp": 1642943280119, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT147", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT147", + "collection": "terraformtemplate", + "json": { + "locals": [ + { + "virtual_machine_name": "${var.prefix}-vm", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-publicip", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "configuration", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT148 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT148 new file mode 100644 index 0000000..ebb4093 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT148 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/2-certificates.tf" + ], + "timestamp": 1642943280123, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/2-certificates.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT148", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_certificate" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT148", + "collection": "terraformtemplate", + "json": { + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_key_vault", + "name": "example", + "properties": { + "name": "${var.prefix}keyvault", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "enabled_for_deployment": true, + "enabled_for_template_deployment": true, + "sku_name": "standard", + "access_policy": [ + { + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "certificate_permissions": [ + "create", + "delete", + "get", + "update" + ], + "key_permissions": [], + "secret_permissions": [] + } + ], + "compiletime_identity": "azurerm_key_vault.example" + } + }, + { + "type": "azurerm_key_vault_certificate", + "name": "example", + "properties": { + "name": "${local.virtual_machine_name}-cert", + "key_vault_id": "${azurerm_key_vault.example.id}", + "certificate_policy": [ + { + "issuer_parameters": [ + { + "name": "Self" + } + ], + "key_properties": [ + { + "exportable": true, + "key_size": 2048, + "key_type": "RSA", + "reuse_key": true + } + ], + "lifetime_action": [ + { + "action": [ + { + "action_type": "AutoRenew" + } + ], + "trigger": [ + { + "days_before_expiry": 30 + } + ] + } + ], + "secret_properties": [ + { + "content_type": "application/x-pkcs12" + } + ], + "x509_certificate_properties": [ + { + "extended_key_usage": [ + "1.3.6.1.5.5.7.3.1" + ], + "key_usage": [ + "cRLSign", + "dataEncipherment", + "digitalSignature", + "keyAgreement", + "keyCertSign", + "keyEncipherment" + ], + "subject": "CN=${local.virtual_machine_name}", + "validity_in_months": 12 + } + ] + } + ], + "compiletime_identity": "azurerm_key_vault_certificate.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT149 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT149 new file mode 100644 index 0000000..72f73c0 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT149 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/main.tf" + ], + "timestamp": 1642943280127, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/provisioners/windows/variables.tf", + "/examples/virtual-machines/virtual_machine/provisioners/windows/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT149", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT149", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "custom_data_params": "Param($ComputerName = \\\"${local.virtual_machine_name}\\\")", + "custom_data_content": "${local.custom_data_params} ${file(\"./files/winrm.ps1\")}" + } + ], + "resources": [ + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${local.virtual_machine_name}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${var.prefix}-osdisk", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "${local.virtual_machine_name}", + "admin_username": "${local.admin_username}", + "admin_password": "${local.admin_password}", + "custom_data": "${local.custom_data_content}" + } + ], + "os_profile_secrets": [ + { + "source_vault_id": "${azurerm_key_vault.example.id}", + "vault_certificates": [ + { + "certificate_url": "${azurerm_key_vault_certificate.example.secret_id}", + "certificate_store": "My" + } + ] + } + ], + "os_profile_windows_config": [ + { + "provision_vm_agent": true, + "enable_automatic_upgrades": true, + "additional_unattend_config": [ + { + "pass": "oobeSystem", + "component": "Microsoft-Windows-Shell-Setup", + "setting_name": "AutoLogon", + "content": "${local.admin_password}true1${local.admin_username}" + }, + { + "pass": "oobeSystem", + "component": "Microsoft-Windows-Shell-Setup", + "setting_name": "FirstLogonCommands", + "content": "${file(\"./files/FirstLogonCommands.xml\")}" + } + ] + } + ], + "provisioner": [ + { + "remote-exec": { + "connection": [ + { + "user": "${local.admin_username}", + "password": "${local.admin_password}", + "port": 5986, + "https": true, + "timeout": "10m", + "insecure": true + } + ], + "inline": [ + "cd C:\\\\Windows", + "dir" + ] + } + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT15 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT15 new file mode 100644 index 0000000..0f5c58c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT15 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/windows-basic/outputs.tf", + "/examples/app-service/windows-basic/variables.tf", + "/examples/app-service/windows-basic/main.tf" + ], + "timestamp": 1642943279612, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/windows-basic/outputs.tf", + "/examples/app-service/windows-basic/variables.tf", + "/examples/app-service/windows-basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT15", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT15", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "sku": [ + { + "tier": "Basic", + "size": "B1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "dotnet_framework_version": "v4.0", + "remote_debugging_enabled": true, + "remote_debugging_version": "VS2019" + } + ], + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT150 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT150 new file mode 100644 index 0000000..ec487c1 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT150 @@ -0,0 +1,722 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/outputs.tf", + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/variables.tf", + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/main.tf" + ], + "timestamp": 1642943280129, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/outputs.tf", + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/variables.tf", + "/examples/virtual-machines/virtual_machine/spark-and-cassandra-on-centos/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT150", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_availability_set", + "azurerm_network_interface", + "azurerm_network_security_group", + "azurerm_storage_container", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_storage_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT150", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "rg", + "properties": { + "name": "${var.resource_group}", + "location": "southcentralus", + "compiletime_identity": "azurerm_resource_group.rg" + } + }, + { + "type": "azurerm_network_security_group", + "name": "primary", + "properties": { + "name": "nsg-spark-primary", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "security_rule": [ + { + "name": "ssh", + "description": "Allow SSH", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "Internet", + "destination_address_prefix": "*" + }, + { + "name": "http_webui_spark", + "description": "Allow Web UI Access to Spark", + "priority": 101, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 8080, + "source_address_prefix": "Internet", + "destination_address_prefix": "*" + }, + { + "name": "http_rest_spark", + "description": "Allow REST API Access to Spark", + "priority": 102, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 6066, + "source_address_prefix": "Internet", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.primary" + } + }, + { + "type": "azurerm_network_security_group", + "name": "secondary", + "properties": { + "name": "nsg-spark-secondary", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "security_rule": [ + { + "name": "ssh", + "description": "Allow SSH", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "Internet", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.secondary" + } + }, + { + "type": "azurerm_network_security_group", + "name": "cassandra", + "properties": { + "name": "nsg-cassandra", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "security_rule": [ + { + "name": "ssh", + "description": "Allow SSH", + "priority": 100, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "Internet", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.cassandra" + } + }, + { + "type": "azurerm_virtual_network", + "name": "spark", + "properties": { + "name": "vnet-spark", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.spark" + } + }, + { + "type": "azurerm_subnet", + "name": "subnet1", + "properties": { + "name": "Subnet-Primary", + "virtual_network_name": "${azurerm_virtual_network.spark.name}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_prefixes": [ + "10.0.0.0/24" + ], + "network_security_group_id": "${azurerm_network_security_group.primary.id}", + "depends_on": [ + "azurerm_virtual_network.spark" + ], + "compiletime_identity": "azurerm_subnet.subnet1" + } + }, + { + "type": "azurerm_subnet", + "name": "subnet2", + "properties": { + "name": "Subnet-Secondary", + "virtual_network_name": "${azurerm_virtual_network.spark.name}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.subnet2" + } + }, + { + "type": "azurerm_subnet", + "name": "subnet3", + "properties": { + "name": "Subnet-Cassandra", + "virtual_network_name": "${azurerm_virtual_network.spark.name}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.subnet3" + } + }, + { + "type": "azurerm_public_ip", + "name": "primary", + "properties": { + "name": "public-ip-primary", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.primary" + } + }, + { + "type": "azurerm_public_ip", + "name": "secondary", + "properties": { + "name": "public-ip-secondary-0", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.secondary" + } + }, + { + "type": "azurerm_public_ip", + "name": "secondary", + "properties": { + "name": "public-ip-secondary-1", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.secondary" + } + }, + { + "type": "azurerm_public_ip", + "name": "cassandra", + "properties": { + "name": "public-ip-cassandra", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.cassandra" + } + }, + { + "type": "azurerm_network_interface", + "name": "primary", + "properties": { + "name": "nic-primary", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_security_group_id": "${azurerm_network_security_group.primary.id}", + "depends_on": [ + "azurerm_virtual_network.spark", + "azurerm_public_ip.primary", + "azurerm_network_security_group.primary" + ], + "ip_configuration": [ + { + "name": "ipconfig1", + "subnet_id": "${azurerm_subnet.subnet1.id}", + "private_ip_address_allocation": "Static", + "private_ip_address": "10.0.0.5", + "public_ip_address_id": "${azurerm_public_ip.primary.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.primary" + } + }, + { + "type": "azurerm_network_interface", + "name": "secondary", + "properties": { + "name": "nic-secondary-0", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_security_group_id": "${azurerm_network_security_group.secondary.id}", + "depends_on": [ + "azurerm_virtual_network.spark", + "azurerm_public_ip.secondary", + "azurerm_network_security_group.secondary" + ], + "ip_configuration": [ + { + "name": "ipconfig1", + "subnet_id": "${azurerm_subnet.subnet2.id}", + "private_ip_address_allocation": "Static", + "private_ip_address": "10.0.1.${5 + count.index}", + "public_ip_address_id": "element(azurerm_public_ip.secondary.*.id,0)" + } + ], + "compiletime_identity": "azurerm_network_interface.secondary" + } + }, + { + "type": "azurerm_network_interface", + "name": "secondary", + "properties": { + "name": "nic-secondary-1", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_security_group_id": "${azurerm_network_security_group.secondary.id}", + "depends_on": [ + "azurerm_virtual_network.spark", + "azurerm_public_ip.secondary", + "azurerm_network_security_group.secondary" + ], + "ip_configuration": [ + { + "name": "ipconfig1", + "subnet_id": "${azurerm_subnet.subnet2.id}", + "private_ip_address_allocation": "Static", + "private_ip_address": "10.0.1.${5 + count.index}", + "public_ip_address_id": "element(azurerm_public_ip.secondary.*.id,1)" + } + ], + "compiletime_identity": "azurerm_network_interface.secondary" + } + }, + { + "type": "azurerm_network_interface", + "name": "cassandra", + "properties": { + "name": "nic-cassandra", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "network_security_group_id": "${azurerm_network_security_group.cassandra.id}", + "depends_on": [ + "azurerm_virtual_network.spark", + "azurerm_public_ip.cassandra", + "azurerm_network_security_group.cassandra" + ], + "ip_configuration": [ + { + "name": "ipconfig1", + "subnet_id": "${azurerm_subnet.subnet3.id}", + "private_ip_address_allocation": "Static", + "private_ip_address": "10.0.2.5", + "public_ip_address_id": "${azurerm_public_ip.cassandra.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.cassandra" + } + }, + { + "type": "azurerm_availability_set", + "name": "secondary", + "properties": { + "name": "availability-secondary", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "platform_update_domain_count": 5, + "platform_fault_domain_count": 2, + "compiletime_identity": "azurerm_availability_set.secondary" + } + }, + { + "type": "azurerm_storage_account", + "name": "primary", + "properties": { + "name": "primary${var.unique_prefix}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.primary" + } + }, + { + "type": "azurerm_storage_account", + "name": "secondary", + "properties": { + "name": "secondary${var.unique_prefix}0", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.secondary" + } + }, + { + "type": "azurerm_storage_account", + "name": "secondary", + "properties": { + "name": "secondary${var.unique_prefix}1", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.secondary" + } + }, + { + "type": "azurerm_storage_account", + "name": "cassandra", + "properties": { + "name": "cassandra${var.unique_prefix}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.cassandra" + } + }, + { + "type": "azurerm_storage_container", + "name": "primary", + "properties": { + "name": "vhds", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "storage_account_name": "${azurerm_storage_account.primary.name}", + "container_access_type": "private", + "depends_on": [ + "azurerm_storage_account.primary" + ], + "compiletime_identity": "azurerm_storage_container.primary" + } + }, + { + "type": "azurerm_storage_container", + "name": "secondary", + "properties": { + "name": "vhds${count.index}", + "storage_account_name": "element(azurerm_storage_account.secondary.*.name,count.index)", + "container_access_type": "private", + "depends_on": [ + "azurerm_storage_account.secondary" + ], + "compiletime_identity": "azurerm_storage_container.secondary" + } + }, + { + "type": "azurerm_storage_container", + "name": "cassandra", + "properties": { + "name": "vhds", + "storage_account_name": "${azurerm_storage_account.cassandra.name}", + "container_access_type": "private", + "depends_on": [ + "azurerm_storage_account.cassandra" + ], + "compiletime_identity": "azurerm_storage_container.cassandra" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "primary", + "properties": { + "name": "spark-primary", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "vm_size": "Standard_D1_v2", + "network_interface_ids": [ + "${azurerm_network_interface.primary.id}" + ], + "depends_on": [ + "azurerm_storage_account.primary", + "azurerm_network_interface.primary", + "azurerm_storage_container.primary" + ], + "storage_image_reference": [ + { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.3", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "vmPrimaryOSDisk", + "vhd_uri": "http://${azurerm_storage_account.primary.name}.blob.core.windows.net/${azurerm_storage_container.primary.name}/vmPrimaryOSDisk.vhd", + "create_option": "FromImage", + "caching": "ReadWrite" + } + ], + "os_profile": [ + { + "computer_name": "spark-primary", + "admin_username": "${var.vm_admin_username}", + "admin_password": "${var.vm_admin_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "connection": [ + { + "type": "ssh", + "host": "${azurerm_public_ip.primary.ip_address}", + "user": "${var.vm_admin_username}", + "password": "${var.vm_admin_password}" + } + ], + "provisioner": [ + { + "remote-exec": { + "inline": [ + "wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/primary/spark-and-cassandra-on-centos/CustomScripts/scriptSparkProvisioner.sh", + "echo ${var.vm_admin_password} | sudo -S sh ./scriptSparkProvisioner.sh -runas=primary -primary=10.0.0.5" + ] + } + } + ], + "compiletime_identity": "azurerm_virtual_machine.primary" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "secondary", + "properties": { + "name": "spark-secondary-0", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "vm_size": "Standard_D3_v2", + "network_interface_ids": [ + "element(azurerm_network_interface.secondary.*.id,0)" + ], + "availability_set_id": "${azurerm_availability_set.secondary.id}", + "depends_on": [ + "azurerm_storage_account.secondary", + "azurerm_network_interface.secondary", + "azurerm_storage_container.secondary" + ], + "storage_image_reference": [ + { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.3", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "vmSecondaryOSDisk-0", + "vhd_uri": "http://element(azurerm_storage_account.secondary.*.name,0).blob.core.windows.net/element(azurerm_storage_container.secondary.*.name,0)/vmSecondaryOSDisk-.vhd", + "create_option": "FromImage", + "caching": "ReadWrite" + } + ], + "os_profile": [ + { + "computer_name": "spark-secondary-0", + "admin_username": "${var.vm_admin_username}", + "admin_password": "${var.vm_admin_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "connection": [ + { + "type": "ssh", + "host": "element(azurerm_public_ip.secondary.*.ip_address,0)", + "user": "${var.vm_admin_username}", + "password": "${var.vm_admin_password}" + } + ], + "provisioner": [ + { + "remote-exec": { + "inline": [ + "wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/primary/spark-and-cassandra-on-centos/CustomScripts/scriptSparkProvisioner.sh", + "echo ${var.vm_admin_password} | sudo -S sh ./scriptSparkProvisioner.sh -runas=secondary -primary=10.0.0.5" + ] + } + } + ], + "compiletime_identity": "azurerm_virtual_machine.secondary" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "secondary", + "properties": { + "name": "spark-secondary-1", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "vm_size": "Standard_D3_v2", + "network_interface_ids": [ + "element(azurerm_network_interface.secondary.*.id,1)" + ], + "availability_set_id": "${azurerm_availability_set.secondary.id}", + "depends_on": [ + "azurerm_storage_account.secondary", + "azurerm_network_interface.secondary", + "azurerm_storage_container.secondary" + ], + "storage_image_reference": [ + { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.3", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "vmSecondaryOSDisk-1", + "vhd_uri": "http://element(azurerm_storage_account.secondary.*.name,1).blob.core.windows.net/element(azurerm_storage_container.secondary.*.name,1)/vmSecondaryOSDisk-.vhd", + "create_option": "FromImage", + "caching": "ReadWrite" + } + ], + "os_profile": [ + { + "computer_name": "spark-secondary-1", + "admin_username": "${var.vm_admin_username}", + "admin_password": "${var.vm_admin_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "connection": [ + { + "type": "ssh", + "host": "element(azurerm_public_ip.secondary.*.ip_address,1)", + "user": "${var.vm_admin_username}", + "password": "${var.vm_admin_password}" + } + ], + "provisioner": [ + { + "remote-exec": { + "inline": [ + "wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/primary/spark-and-cassandra-on-centos/CustomScripts/scriptSparkProvisioner.sh", + "echo ${var.vm_admin_password} | sudo -S sh ./scriptSparkProvisioner.sh -runas=secondary -primary=10.0.0.5" + ] + } + } + ], + "compiletime_identity": "azurerm_virtual_machine.secondary" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "cassandra", + "properties": { + "name": "cassandra", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "vm_size": "Standard_D3_v2", + "network_interface_ids": [ + "${azurerm_network_interface.cassandra.id}" + ], + "depends_on": [ + "azurerm_storage_account.cassandra", + "azurerm_network_interface.cassandra", + "azurerm_storage_container.cassandra" + ], + "storage_image_reference": [ + { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.3", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "vmCassandraOSDisk", + "vhd_uri": "http://${azurerm_storage_account.cassandra.name}.blob.core.windows.net/${azurerm_storage_container.cassandra.name}/vmCassandraOSDisk.vhd", + "create_option": "FromImage", + "caching": "ReadWrite" + } + ], + "os_profile": [ + { + "computer_name": "cassandra", + "admin_username": "${var.vm_admin_username}", + "admin_password": "${var.vm_admin_password}" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "connection": [ + { + "type": "ssh", + "host": "${azurerm_public_ip.cassandra.ip_address}", + "user": "${var.vm_admin_username}", + "password": "${var.vm_admin_password}" + } + ], + "provisioner": [ + { + "remote-exec": { + "inline": [ + "wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/primary/spark-and-cassandra-on-centos/CustomScripts/scriptCassandraProvisioner.sh", + "echo ${var.vm_admin_password} | sudo -S sh ./scriptCassandraProvisioner.sh" + ] + } + } + ], + "compiletime_identity": "azurerm_virtual_machine.cassandra" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT151 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT151 new file mode 100644 index 0000000..114e442 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT151 @@ -0,0 +1,123 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/1-dependencies.tf" + ], + "timestamp": 1642943280135, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT151", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_storage_container", + "azurerm_storage_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT151", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "testconfiguration1", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}stor", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_container", + "name": "example", + "properties": { + "name": "vhds", + "storage_account_name": "${azurerm_storage_account.example.name}", + "container_access_type": "private", + "compiletime_identity": "azurerm_storage_container.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT152 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT152 new file mode 100644 index 0000000..0787783 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT152 @@ -0,0 +1,93 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/main.tf" + ], + "timestamp": 1642943280139, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT152", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT152", + "collection": "terraformtemplate", + "json": { + "locals": [ + { + "storage_account_base_uri": "${azurerm_storage_account.example.primary_blob_endpoint}${azurerm_storage_container.example.name}" + } + ], + "resources": [ + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}-vm", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_F2", + "delete_os_disk_on_termination": true, + "delete_data_disks_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "osdisk", + "vhd_uri": "${local.storage_account_base_uri}/osdisk.vhd", + "caching": "ReadWrite", + "create_option": "FromImage" + } + ], + "storage_data_disk": [ + { + "name": "datadisk1", + "vhd_uri": "${local.storage_account_base_uri}/datadisk1.vhd", + "disk_size_gb": 1023, + "create_option": "Empty", + "lun": 0 + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT153 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT153 new file mode 100644 index 0000000..51f8f39 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT153 @@ -0,0 +1,277 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/outputs.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/main.tf" + ], + "timestamp": 1642943280142, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/outputs.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/variables.tf", + "/examples/virtual-machines/virtual_machine/unmanaged-disks/from-existing-storage-account/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT153", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_storage_account", + "azurerm_virtual_machine_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT153", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "rg", + "properties": { + "name": "${var.resource_group}", + "location": "southcentralus", + "compiletime_identity": "azurerm_resource_group.rg" + } + }, + { + "type": "azurerm_virtual_network", + "name": "vnet", + "properties": { + "name": "${var.hostname}vnet", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.vnet" + } + }, + { + "type": "azurerm_subnet", + "name": "subnet", + "properties": { + "name": "${var.hostname}subnet", + "virtual_network_name": "${azurerm_virtual_network.vnet.name}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "address_prefixes": [ + "10.0.0.0/24" + ], + "compiletime_identity": "azurerm_subnet.subnet" + } + }, + { + "type": "azurerm_public_ip", + "name": "transferpip", + "properties": { + "name": "transferpip", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.transferpip" + } + }, + { + "type": "azurerm_public_ip", + "name": "mypip", + "properties": { + "name": "mypip", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.mypip" + } + }, + { + "type": "azurerm_network_interface", + "name": "transfernic", + "properties": { + "name": "transfernic", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "ip_configuration": [ + { + "name": "${azurerm_public_ip.transferpip.name}", + "subnet_id": "${azurerm_subnet.subnet.id}", + "private_ip_address_allocation": "Static", + "public_ip_address_id": "${azurerm_public_ip.transferpip.id}", + "private_ip_address": "10.0.0.5" + } + ], + "compiletime_identity": "azurerm_network_interface.transfernic" + } + }, + { + "type": "azurerm_network_interface", + "name": "mynic", + "properties": { + "name": "mynic", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "ip_configuration": [ + { + "name": "${azurerm_public_ip.mypip.name}", + "subnet_id": "${azurerm_subnet.subnet.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.mypip.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.mynic" + } + }, + { + "type": "azurerm_storage_account", + "name": "existing", + "properties": { + "name": "${var.existing_storage_acct}", + "resource_group_name": "${var.existing_resource_group}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "lifecycle": { + "prevent_destroy": true + }, + "compiletime_identity": "azurerm_storage_account.existing" + } + }, + { + "type": "azurerm_storage_account", + "name": "stor", + "properties": { + "name": "${var.hostname}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "location": "${azurerm_resource_group.rg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.stor" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "transfer", + "properties": { + "name": "transfervm", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "vm_size": "Standard_DS1_v2", + "network_interface_ids": [ + "${azurerm_network_interface.transfernic.id}" + ], + "storage_os_disk": [ + { + "name": "${var.hostname}-osdisk", + "image_uri": "${var.source_img_uri}", + "vhd_uri": "https://${var.existing_storage_acct}.blob.core.windows.net/${var.existing_resource_group}-vhds/${var.hostname}osdisk.vhd", + "os_type": "windows", + "caching": "ReadWrite", + "create_option": "FromImage" + } + ], + "os_profile": [ + { + "computer_name": "${var.hostname}", + "admin_username": "vmadmin", + "admin_password": "${var.admin_password}" + } + ], + "compiletime_identity": "azurerm_virtual_machine.transfer" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "myvm", + "properties": { + "name": "myvm", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "vm_size": "Standard_DS1_v2", + "network_interface_ids": [ + "${azurerm_network_interface.mynic.id}" + ], + "depends_on": [ + "azurerm_virtual_machine_extension.execute" + ], + "storage_os_disk": [ + { + "name": "${var.hostname}osdisk", + "image_uri": "https://${azurerm_storage_account.stor.name}.blob.core.windows.net/vhds/${var.custom_image_name}.vhd", + "vhd_uri": "https://${var.hostname}.blob.core.windows.net/${var.hostname}-vhds/${var.hostname}osdisk.vhd", + "os_type": "windows", + "caching": "ReadWrite", + "create_option": "FromImage" + } + ], + "os_profile": [ + { + "computer_name": "${var.hostname}", + "admin_username": "vmadmin", + "admin_password": "${var.admin_password}" + } + ], + "compiletime_identity": "azurerm_virtual_machine.myvm" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "script", + "properties": { + "name": "CustomScriptExtension", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "virtual_machine_name": "${azurerm_virtual_machine.transfer.name}", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.4, + "depends_on": [ + "azurerm_virtual_machine.transfer" + ], + "settings": { + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -Command \"Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-vm-custom-image-new-storage-account/ImageTransfer.ps1 -OutFile C:/ImageTransfer.ps1\" " + }, + "compiletime_identity": "azurerm_virtual_machine_extension.script" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "execute", + "properties": { + "name": "CustomScriptExtension", + "location": "${azurerm_resource_group.rg.location}", + "resource_group_name": "${azurerm_resource_group.rg.name}", + "virtual_machine_name": "${azurerm_virtual_machine.transfer.name}", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.4, + "depends_on": [ + "azurerm_virtual_machine_extension.script" + ], + "settings": " {\n \"commandToExecute\": \"powershell -ExecutionPolicy Unrestricted -File C:\\\\ImageTransfer.ps1 -SourceImage ${var.source_img_uri} -SourceSAKey ${azurerm_storage_account.existing.primary_access_key} -DestinationURI https://${azurerm_storage_account.stor.name}.blob.core.windows.net/vhds -DestinationSAKey ${azurerm_storage_account.stor.primary_access_key}\\\" \"\n }", + "compiletime_identity": "azurerm_virtual_machine_extension.execute" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT154 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT154 new file mode 100644 index 0000000..b847d07 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT154 @@ -0,0 +1,319 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/virtual_machine/vm-joined-to-active-directory/variables.tf", + "/examples/virtual-machines/virtual_machine/vm-joined-to-active-directory/main.tf" + ], + "timestamp": 1642943280146, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/virtual_machine/vm-joined-to-active-directory/variables.tf", + "/examples/virtual-machines/virtual_machine/vm-joined-to-active-directory/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT154", + "status": "active", + "validate": true, + "resourceTypes": [ + "null_resource", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_virtual_machine_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT154", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "version": "=1.1.2" + } + } + ], + "locals": [ + { + "resource_group_name": "${var.prefix}-resources" + } + ], + "output": [ + { + "windows_client_public_ip": { + "value": "${module.windows-client.public_ip_address}" + } + } + ], + "resources": [ + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "dns_servers": [ + "10.0.1.4", + "8.8.8.8" + ], + "prefix": "${var.prefix}", + "compiletime_identity": "module.network" + } + }, + { + "type": "azurerm_subnet", + "name": "domain-controllers", + "properties": { + "name": "domain-controllers", + "resource_group_name": "${azurerm_resource_group.test.name}", + "virtual_network_name": "${var.prefix}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "prefix": "${var.prefix}", + "location": "${azurerm_resource_group.test.location}", + "compiletime_identity": "module.network" + } + }, + { + "type": "azurerm_subnet", + "name": "domain-clients", + "properties": { + "name": "domain-clients", + "resource_group_name": "${azurerm_resource_group.test.name}", + "virtual_network_name": "${var.prefix}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "prefix": "${var.prefix}", + "location": "${azurerm_resource_group.test.location}", + "compiletime_identity": "module.network" + } + }, + { + "type": "azurerm_network_interface", + "name": "primary", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "internal_dns_name_label": "${local.virtual_machine_name}", + "ip_configuration": [ + { + "name": "primary", + "subnet_id": "${module.network.domain_controllers_subnet_id}", + "private_ip_address_allocation": "Static", + "private_ip_address": "10.0.1.4" + } + ], + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_controllers_subnet_id}", + "active_directory_domain": "${var.prefix}.local", + "active_directory_netbios_name": "${var.prefix}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "compiletime_identity": "module.active-directory-domain" + } + }, + { + "type": "azurerm_network_interface", + "name": "primary", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "internal_dns_name_label": "${local.virtual_machine_name}", + "ip_configuration": [ + { + "name": "primary", + "subnet_id": "${module.network.domain_clients_subnet_id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.static.id}" + } + ], + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_clients_subnet_id}", + "active_directory_domain": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "compiletime_identity": "module.windows-client" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "create-active-directory-forest", + "properties": { + "name": "create-active-directory-forest", + "location": "${azurerm_virtual_machine.domain-controller.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "virtual_machine_name": "${azurerm_virtual_machine.domain-controller.name}", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.9, + "settings": " {\n \"commandToExecute\": \"powershell.exe -Command \\\"${local.powershell_command}\\\"\"\n }", + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_controllers_subnet_id}", + "active_directory_domain": "${var.prefix}.local", + "active_directory_netbios_name": "${var.prefix}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "compiletime_identity": "module.active-directory-domain" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "join-domain", + "properties": { + "name": "${azurerm_virtual_machine.client.name}", + "location": "${azurerm_virtual_machine.client.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "virtual_machine_name": "${azurerm_virtual_machine.client.name}", + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "type_handler_version": 1.3, + "settings": { + "Name": "${var.prefix}.local", + "OUPath": "", + "User": "${var.prefix}.local${var.admin_username}", + "Restart": true, + "Options": 3 + }, + "protected_settings": { + "Password": "${var.admin_password}" + }, + "depends_on": [ + "null_resource.wait-for-domain-to-provision" + ], + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_clients_subnet_id}", + "active_directory_domain": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "compiletime_identity": "module.windows-client" + } + }, + { + "type": "azurerm_public_ip", + "name": "static", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "allocation_method": "Static", + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_clients_subnet_id}", + "active_directory_domain": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "compiletime_identity": "module.windows-client" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "client", + "properties": { + "name": "${local.virtual_machine_name}", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "network_interface_ids": [ + "${azurerm_network_interface.primary.id}" + ], + "vm_size": "Standard_F2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "${local.virtual_machine_name}-disk1", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "${local.virtual_machine_name}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}" + } + ], + "os_profile_windows_config": [ + { + "provision_vm_agent": true, + "enable_automatic_upgrades": true + } + ], + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_clients_subnet_id}", + "active_directory_domain": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "compiletime_identity": "module.windows-client" + } + }, + { + "type": "null_resource", + "name": "wait-for-domain-to-provision", + "properties": { + "provisioner": [ + { + "local-exec": { + "command": "sleep 720" + } + } + ], + "depends_on": [ + "azurerm_virtual_machine.client" + ], + "resource_group_name": "${azurerm_resource_group.test.name}", + "location": "${azurerm_resource_group.test.location}", + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_clients_subnet_id}", + "active_directory_domain": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "compiletime_identity": "module.windows-client" + } + }, + { + "type": "azurerm_resource_group", + "name": "test", + "properties": { + "name": "${local.resource_group_name}", + "location": "West Europe", + "compiletime_identity": "azurerm_resource_group.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT155 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT155 new file mode 100644 index 0000000..f4e8e0e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT155 @@ -0,0 +1,130 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/windows/basic-password/variables.tf", + "/examples/virtual-machines/windows/basic-password/main.tf" + ], + "timestamp": 1642943280150, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/basic-password/variables.tf", + "/examples/virtual-machines/windows/basic-password/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT155", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT155", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_windows_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT156 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT156 new file mode 100644 index 0000000..5128417 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT156 @@ -0,0 +1,131 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/windows/custom-data/variables.tf", + "/examples/virtual-machines/windows/custom-data/main.tf" + ], + "timestamp": 1642943280154, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/custom-data/variables.tf", + "/examples/virtual-machines/windows/custom-data/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT156", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT156", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_windows_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "custom_data": "base64encode(\"Hello World!\")", + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT157 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT157 new file mode 100644 index 0000000..c49bed4 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT157 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/windows/ephemeral-os-disk/variables.tf", + "/examples/virtual-machines/windows/ephemeral-os-disk/main.tf" + ], + "timestamp": 1642943280158, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/ephemeral-os-disk/variables.tf", + "/examples/virtual-machines/windows/ephemeral-os-disk/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT157", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT157", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_network_interface", + "name": "main", + "properties": { + "name": "${var.prefix}-nic", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.internal.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.main" + } + }, + { + "type": "azurerm_windows_virtual_machine", + "name": "main", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "size": "Standard_DS3_v2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "custom_data": "base64encode(\"Hello World!\")", + "network_interface_ids": [ + "${azurerm_network_interface.main.id}" + ], + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite", + "diff_disk_settings": [ + { + "option": "Local" + } + ] + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT158 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT158 new file mode 100644 index 0000000..d7f349c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT158 @@ -0,0 +1,149 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/windows/vm-custom-extension/vars.tf", + "/examples/virtual-machines/windows/vm-custom-extension/main.tf" + ], + "timestamp": 1642943280161, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/vm-custom-extension/vars.tf", + "/examples/virtual-machines/windows/vm-custom-extension/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT158", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_virtual_machine_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT158", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "example-resources", + "location": "West US", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "example-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "example-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "example-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "example-ip", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_windows_virtual_machine", + "name": "example", + "properties": { + "name": "example-vm", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "os_disk": [ + { + "caching": "ReadWrite", + "storage_account_type": "Standard_LRS" + } + ], + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine.example" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "example", + "properties": { + "name": "ansible_windows_winrm", + "virtual_machine_id": "${azurerm_windows_virtual_machine.example.id}", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.9, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1" + ], + "commandToExecute": "powershell -ExecutionPolicy Unrestricted -file ConfigureRemotingForAnsible.ps1 -EnableCredSSP -DisableBasicAuth" + }, + "compiletime_identity": "azurerm_virtual_machine_extension.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT159 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT159 new file mode 100644 index 0000000..37c2be3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT159 @@ -0,0 +1,340 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/windows/vm-joined-to-active-directory/variables.tf", + "/examples/virtual-machines/windows/vm-joined-to-active-directory/main.tf" + ], + "timestamp": 1642943280165, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/vm-joined-to-active-directory/variables.tf", + "/examples/virtual-machines/windows/vm-joined-to-active-directory/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT159", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_public_ip", + "azurerm_virtual_machine_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT159", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "location": "${var.location}", + "address_space": [ + "10.0.0.0/16" + ], + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_servers": [ + "10.0.1.4", + "8.8.8.8" + ], + "prefix": "${var.prefix}", + "compiletime_identity": "module.network" + } + }, + { + "type": "azurerm_subnet", + "name": "domain-controllers", + "properties": { + "name": "domain-controllers", + "address_prefixes": [ + "10.0.1.0/24" + ], + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${var.prefix}-network", + "location": "${var.location}", + "prefix": "${var.prefix}", + "compiletime_identity": "module.network" + } + }, + { + "type": "azurerm_subnet", + "name": "domain-members", + "properties": { + "name": "domain-members", + "address_prefixes": [ + "10.0.2.0/24" + ], + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${var.prefix}-network", + "location": "${var.location}", + "prefix": "${var.prefix}", + "compiletime_identity": "module.network" + } + }, + { + "type": "azurerm_network_interface", + "name": "dc_nic", + "properties": { + "name": "${var.prefix}-dc-primary", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "primary", + "private_ip_address_allocation": "Static", + "private_ip_address": "10.0.1.4", + "subnet_id": "${module.network.domain_controllers_subnet_id}" + } + ], + "active_directory_domain_name": "${var.prefix}.local", + "active_directory_netbios_name": "${var.prefix}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_controllers_subnet_id}", + "compiletime_identity": "module.active-directory-domain" + } + }, + { + "type": "azurerm_network_interface", + "name": "primary", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "primary", + "subnet_id": "${module.network.domain_members_subnet_id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.static.id}" + } + ], + "prefix": "${var.prefix}", + "active_directory_domain_name": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "subnet_id": "${module.network.domain_members_subnet_id}", + "compiletime_identity": "module.active-directory-member" + } + }, + { + "type": "azurerm_windows_virtual_machine", + "name": "domain-controller", + "properties": { + "name": "${local.virtual_machine_name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "size": "Standard_F2", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "custom_data": "${local.custom_data}", + "network_interface_ids": [ + "${azurerm_network_interface.dc_nic.id}" + ], + "os_disk": [ + { + "caching": "ReadWrite", + "storage_account_type": "Standard_LRS" + } + ], + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "additional_unattend_content": [ + { + "content": "${local.auto_logon_data}", + "setting": "AutoLogon" + }, + { + "content": "${local.first_logon_data}", + "setting": "FirstLogonCommands" + } + ], + "active_directory_domain_name": "${var.prefix}.local", + "active_directory_netbios_name": "${var.prefix}", + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_controllers_subnet_id}", + "compiletime_identity": "module.active-directory-domain" + } + }, + { + "type": "azurerm_windows_virtual_machine", + "name": "domain-member", + "properties": { + "name": "${local.virtual_machine_name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "size": "Standard_F2", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "provision_vm_agent": true, + "enable_automatic_updates": true, + "network_interface_ids": [ + "${azurerm_network_interface.primary.id}" + ], + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "os_disk": [ + { + "caching": "ReadWrite", + "storage_account_type": "Standard_LRS" + } + ], + "prefix": "${var.prefix}", + "active_directory_domain_name": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "subnet_id": "${module.network.domain_members_subnet_id}", + "compiletime_identity": "module.active-directory-member" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "create-ad-forest", + "properties": { + "name": "create-active-directory-forest", + "virtual_machine_id": "${azurerm_windows_virtual_machine.domain-controller.id}", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.9, + "settings": " {\n \"commandToExecute\": \"powershell.exe -Command \\\"${local.powershell_command}\\\"\"\n }", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "active_directory_domain_name": "${var.prefix}.local", + "active_directory_netbios_name": "${var.prefix}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "prefix": "${var.prefix}", + "subnet_id": "${module.network.domain_controllers_subnet_id}", + "compiletime_identity": "module.active-directory-domain" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "wait-for-domain-to-provision", + "properties": { + "name": "TestConnectionDomain", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.9, + "virtual_machine_id": "${azurerm_windows_virtual_machine.domain-member.id}", + "settings": " {\n \"commandToExecute\": \"powershell.exe -Command \\\"while (!(Test-Connection -ComputerName ${var.prefix}.local -Count 1 -Quiet) -and ($retryCount++ -le 360)) { Start-Sleep 10 } \\\"\"\n }", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "prefix": "${var.prefix}", + "active_directory_domain_name": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "subnet_id": "${module.network.domain_members_subnet_id}", + "compiletime_identity": "module.active-directory-member" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "join-domain", + "properties": { + "name": "${local.virtual_machine_name}", + "publisher": "Microsoft.Compute", + "type": "JsonADDomainExtension", + "type_handler_version": 1.3, + "virtual_machine_id": "${azurerm_windows_virtual_machine.domain-member.id}", + "settings": { + "Name": "${var.prefix}.local", + "OUPath": "", + "User": "${var.admin_username}@${var.prefix}.local", + "Restart": true, + "Options": 3 + }, + "protected_settings": { + "Password": "${var.admin_password}" + }, + "depends_on": [ + { + "name": "TestConnectionDomain", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.9, + "virtual_machine_id": "${azurerm_windows_virtual_machine.domain-member.id}", + "settings": " {\n \"commandToExecute\": \"powershell.exe -Command \\\"while (!(Test-Connection -ComputerName ${var.prefix}.local -Count 1 -Quiet) -and ($retryCount++ -le 360)) { Start-Sleep 10 } \\\"\"\n }" + } + ], + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "prefix": "${var.prefix}", + "active_directory_domain_name": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "subnet_id": "${module.network.domain_members_subnet_id}", + "compiletime_identity": "module.active-directory-member" + } + }, + { + "type": "azurerm_public_ip", + "name": "static", + "properties": { + "name": "${var.prefix}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "prefix": "${var.prefix}", + "active_directory_domain_name": "${var.prefix}.local", + "active_directory_username": "${var.admin_username}", + "active_directory_password": "${var.admin_password}", + "admin_username": "${var.admin_username}", + "admin_password": "${var.admin_password}", + "subnet_id": "${module.network.domain_members_subnet_id}", + "compiletime_identity": "module.active-directory-member" + } + }, + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "location": "${var.location}", + "name": "${var.prefix}-rg", + "compiletime_identity": "azurerm_resource_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT16 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT16 new file mode 100644 index 0000000..87aaab7 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT16 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/windows-container/outputs.tf", + "/examples/app-service/windows-container/variables.tf", + "/examples/app-service/windows-container/main.tf" + ], + "timestamp": 1642943279615, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/windows-container/outputs.tf", + "/examples/app-service/windows-container/variables.tf", + "/examples/app-service/windows-container/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT16", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT16", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "example", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "kind": "xenon", + "is_xenon": true, + "sku": [ + { + "tier": "PremiumV3", + "size": "P1V3" + } + ], + "compiletime_identity": "azurerm_app_service_plan.example" + } + }, + { + "type": "azurerm_app_service", + "name": "example", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "app_service_plan_id": "${azurerm_app_service_plan.example.id}", + "site_config": [ + { + "windows_fx_version": "DOCKER|mcr.microsoft.com/azure-app-service/samples/aspnethelloworld:latest" + } + ], + "app_settings": { + "DOCKER_REGISTRY_SERVER_URL": "https://mcr.microsoft.com", + "DOCKER_REGISTRY_SERVER_USERNAME": "", + "DOCKER_REGISTRY_SERVER_PASSWORD": "" + }, + "compiletime_identity": "azurerm_app_service.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT160 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT160 new file mode 100644 index 0000000..283a69e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT160 @@ -0,0 +1,159 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-machines/windows/vm-role-assignment/vars.tf", + "/examples/virtual-machines/windows/vm-role-assignment/main.tf" + ], + "timestamp": 1642943280170, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-machines/windows/vm-role-assignment/vars.tf", + "/examples/virtual-machines/windows/vm-role-assignment/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT160", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_role_assignment", + "azurerm_storage_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT160", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "example-resources", + "location": "West US", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "example-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "example-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "example-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "example-ip", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_windows_virtual_machine", + "name": "example", + "properties": { + "name": "example-vm", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "size": "Standard_F2", + "admin_username": "adminuser", + "admin_password": "P@$$w0rd1234!", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "os_disk": [ + { + "caching": "ReadWrite", + "storage_account_type": "Standard_LRS" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "exampleblobname", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "GRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_role_assignment", + "name": "example", + "properties": { + "scope": "${azurerm_storage_account.example.id}", + "role_definition_name": "Reader", + "principal_id": "${azurerm_windows_virtual_machine.example.identity[0].principal_id}", + "compiletime_identity": "azurerm_role_assignment.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT161 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT161 new file mode 100644 index 0000000..62a9bc0 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT161 @@ -0,0 +1,485 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/azure-firewall/variables.tf", + "/examples/virtual-networks/azure-firewall/main.tf" + ], + "timestamp": 1642943280173, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/azure-firewall/variables.tf", + "/examples/virtual-networks/azure-firewall/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT161", + "status": "active", + "validate": true, + "resourceTypes": [ + "random_string", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_storage_account", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_route_table", + "azurerm_public_ip", + "azurerm_subnet_route_table_association", + "azurerm_network_security_group", + "azurerm_network_interface_security_group_association", + "azurerm_firewall_network_rule_collection", + "azurerm_firewall", + "azurerm_firewall_application_rule_collection" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT161", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "azurg", + "properties": { + "name": "rgAzureFirewall", + "location": "East US", + "compiletime_identity": "azurerm_resource_group.azurg" + } + }, + { + "type": "random_string", + "name": "azustring", + "properties": { + "length": 16, + "special": false, + "upper": false, + "number": false, + "compiletime_identity": "random_string.azustring" + } + }, + { + "type": "azurerm_storage_account", + "name": "azusa", + "properties": { + "name": "${random_string.azustring.result}", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_storage_account.azusa" + } + }, + { + "type": "azurerm_route_table", + "name": "azurt", + "properties": { + "name": "AzfwRouteTable", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "disable_bgp_route_propagation": false, + "route": [ + { + "name": "AzfwDefaultRoute", + "address_prefix": "0.0.0.0/0", + "next_hop_type": "VirtualAppliance", + "next_hop_in_ip_address": "10.0.1.4" + } + ], + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_route_table.azurt" + } + }, + { + "type": "azurerm_virtual_network", + "name": "azuvnet", + "properties": { + "name": "virtualNetwork1", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "address_space": [ + "10.0.0.0/16" + ], + "dns_servers": [ + "168.63.129.16", + "8.8.8.8" + ], + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_virtual_network.azuvnet" + } + }, + { + "type": "azurerm_subnet", + "name": "azusubnetjb", + "properties": { + "name": "JumpboxSubnet", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "virtual_network_name": "${azurerm_virtual_network.azuvnet.name}", + "address_prefixes": [ + "10.0.0.0/24" + ], + "compiletime_identity": "azurerm_subnet.azusubnetjb" + } + }, + { + "type": "azurerm_subnet", + "name": "azusubnetfw", + "properties": { + "name": "AzureFirewallSubnet", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "virtual_network_name": "${azurerm_virtual_network.azuvnet.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.azusubnetfw" + } + }, + { + "type": "azurerm_subnet", + "name": "azusubnet", + "properties": { + "name": "ServersSubnet", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "virtual_network_name": "${azurerm_virtual_network.azuvnet.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.azusubnet" + } + }, + { + "type": "azurerm_subnet_route_table_association", + "name": "azurtassoc", + "properties": { + "subnet_id": "${azurerm_subnet.azusubnet.id}", + "route_table_id": "${azurerm_route_table.azurt.id}", + "compiletime_identity": "azurerm_subnet_route_table_association.azurtassoc" + } + }, + { + "type": "azurerm_public_ip", + "name": "azufwpip", + "properties": { + "name": "azureFirewalls-ip", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "allocation_method": "Static", + "sku": "Standard", + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_public_ip.azufwpip" + } + }, + { + "type": "azurerm_public_ip", + "name": "azujumppip", + "properties": { + "name": "jumpBox-ip", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "allocation_method": "Dynamic", + "sku": "Basic", + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_public_ip.azujumppip" + } + }, + { + "type": "azurerm_network_security_group", + "name": "azunsgjb", + "properties": { + "name": "JumpHostNSG", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "security_rule": [ + { + "name": "RDP", + "priority": 1000, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "*", + "destination_address_prefix": "*" + } + ], + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_network_security_group.azunsgjb" + } + }, + { + "type": "azurerm_network_interface", + "name": "azunicjb", + "properties": { + "name": "JumpHostNIC", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "ip_configuration": [ + { + "name": "ipconfig1", + "subnet_id": "${azurerm_subnet.azusubnetjb.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.azujumppip.id}" + } + ], + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_network_interface.azunicjb" + } + }, + { + "type": "azurerm_network_interface", + "name": "azunicvm", + "properties": { + "name": "ServerNIC", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "ip_configuration": [ + { + "name": "ipconfig1", + "subnet_id": "${azurerm_subnet.azusubnet.id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_network_interface.azunicvm" + } + }, + { + "type": "azurerm_network_interface_security_group_association", + "name": "azunicjb", + "properties": { + "network_interface_id": "${azurerm_network_interface.azunicjb.id}", + "network_security_group_id": "${azurerm_network_security_group.azunsgjb.id}", + "compiletime_identity": "azurerm_network_interface_security_group_association.azunicjb" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "vmjb", + "properties": { + "name": "JumpBox", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "network_interface_ids": [ + "${azurerm_network_interface.azunicjb.id}" + ], + "vm_size": "Standard_DS1_v2", + "storage_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "JumpBox-OSDisk", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "JumpBox", + "admin_username": "${var.adminUsername}", + "admin_password": "${var.adminPassword}" + } + ], + "os_profile_windows_config": [ + {} + ], + "boot_diagnostics": [ + { + "enabled": true, + "storage_uri": "${azurerm_storage_account.azusa.primary_blob_endpoint}" + } + ], + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "depends_on": [ + "${azurerm_network_interface_security_group_association.azunicjb}" + ], + "compiletime_identity": "azurerm_virtual_machine.vmjb" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "vmserver", + "properties": { + "name": "Server", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "network_interface_ids": [ + "${azurerm_network_interface.azunicvm.id}" + ], + "vm_size": "Standard_DS1_v2", + "storage_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2012-R2-Datacenter", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "Server-OSDisk", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "Server", + "admin_username": "${var.adminUsername}", + "admin_password": "${var.adminPassword}" + } + ], + "os_profile_windows_config": [ + {} + ], + "boot_diagnostics": [ + { + "enabled": true, + "storage_uri": "${azurerm_storage_account.azusa.primary_blob_endpoint}" + } + ], + "tags": { + "environment": "Staging", + "owner": "Someone@contoso.com", + "costcenter": "IT" + }, + "compiletime_identity": "azurerm_virtual_machine.vmserver" + } + }, + { + "type": "azurerm_firewall", + "name": "azufw", + "properties": { + "name": "firewall1", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "location": "${azurerm_resource_group.azurg.location}", + "ip_configuration": [ + { + "name": "configuration", + "subnet_id": "${azurerm_subnet.azusubnetfw.id}", + "public_ip_address_id": "${azurerm_public_ip.azufwpip.id}" + } + ], + "compiletime_identity": "azurerm_firewall.azufw" + } + }, + { + "type": "azurerm_firewall_application_rule_collection", + "name": "azufwappr1", + "properties": { + "name": "appRc1", + "azure_firewall_name": "${azurerm_firewall.azufw.name}", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "priority": 101, + "action": "Allow", + "rule": [ + { + "name": "appRule1", + "source_addresses": [ + "10.0.0.0/24" + ], + "target_fqdns": [ + "www.microsoft.com" + ], + "protocol": [ + { + "port": 80, + "type": "Http" + } + ] + } + ], + "compiletime_identity": "azurerm_firewall_application_rule_collection.azufwappr1" + } + }, + { + "type": "azurerm_firewall_network_rule_collection", + "name": "azufwnetr1", + "properties": { + "name": "testcollection", + "azure_firewall_name": "${azurerm_firewall.azufw.name}", + "resource_group_name": "${azurerm_resource_group.azurg.name}", + "priority": 200, + "action": "Allow", + "rule": [ + { + "name": "netRc1", + "source_addresses": [ + "10.0.0.0/24" + ], + "destination_ports": [ + "8000-8999" + ], + "destination_addresses": [ + "*" + ], + "protocols": [ + "TCP" + ] + } + ], + "compiletime_identity": "azurerm_firewall_network_rule_collection.azufwnetr1" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT162 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT162 new file mode 100644 index 0000000..7e44c66 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT162 @@ -0,0 +1,81 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/basic/variables.tf", + "/examples/virtual-networks/basic/main.tf" + ], + "timestamp": 1642943280177, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/basic/variables.tf", + "/examples/virtual-networks/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT162", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT162", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT163 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT163 new file mode 100644 index 0000000..500f930 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT163 @@ -0,0 +1,107 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/multiple-subnets/variables.tf", + "/examples/virtual-networks/multiple-subnets/main.tf" + ], + "timestamp": 1642943280181, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/multiple-subnets/variables.tf", + "/examples/virtual-networks/multiple-subnets/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT163", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT163", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "frontend", + "properties": { + "name": "frontend", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.frontend" + } + }, + { + "type": "azurerm_subnet", + "name": "backend", + "properties": { + "name": "backend", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.backend" + } + }, + { + "type": "azurerm_subnet", + "name": "database", + "properties": { + "name": "database", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.3.0/24" + ], + "compiletime_identity": "azurerm_subnet.database" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT164 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT164 new file mode 100644 index 0000000..6cf048d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT164 @@ -0,0 +1,200 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/network-interface-app-security-group-association/variables.tf", + "/examples/virtual-networks/network-interface-app-security-group-association/main.tf" + ], + "timestamp": 1642943280184, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/network-interface-app-security-group-association/variables.tf", + "/examples/virtual-networks/network-interface-app-security-group-association/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT164", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_application_security_group", + "azurerm_linux_virtual_machine", + "azurerm_public_ip", + "azurerm_network_interface_application_security_group_association", + "azurerm_network_security_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT164", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_application_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-appsg", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_application_security_group.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "testconfig-ip", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_linux_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}-vm", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "size": "Standard_B1s", + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine.example" + } + }, + { + "type": "azurerm_network_interface_application_security_group_association", + "name": "example", + "properties": { + "network_interface_id": "${azurerm_network_interface.example.id}", + "application_security_group_id": "${azurerm_application_security_group.example.id}", + "depends_on": [ + "${azurerm_linux_virtual_machine.example}" + ], + "compiletime_identity": "azurerm_network_interface_application_security_group_association.example" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-nsg", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/8" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "example", + "properties": { + "name": "${var.prefix}-nsgrule", + "priority": 230, + "direction": "Inbound", + "access": "Deny", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "Internet", + "destination_application_security_group_ids": [ + "${azurerm_application_security_group.example.id}" + ], + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_security_group_name": "${azurerm_network_security_group.example.name}", + "compiletime_identity": "azurerm_network_security_rule.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT165 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT165 new file mode 100644 index 0000000..22d8be6 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT165 @@ -0,0 +1,111 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/network-security-group/variables.tf", + "/examples/virtual-networks/network-security-group/main.tf" + ], + "timestamp": 1642943280187, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/network-security-group/variables.tf", + "/examples/virtual-networks/network-security-group/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT165", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_security_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT165", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-nsg", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "ssh", + "properties": { + "name": "ssh", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_security_group_name": "${azurerm_network_security_group.example.name}", + "priority": 102, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 22, + "source_address_prefix": "*", + "destination_address_prefix": "*", + "compiletime_identity": "azurerm_network_security_rule.ssh" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT166 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT166 new file mode 100644 index 0000000..8965024 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT166 @@ -0,0 +1,83 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/network-security-group-rule/variables.tf", + "/examples/virtual-networks/network-security-group-rule/main.tf" + ], + "timestamp": 1642943280192, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/network-security-group-rule/variables.tf", + "/examples/virtual-networks/network-security-group-rule/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT166", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_rule", + "azurerm_network_security_group", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT166", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-nsg", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "example", + "properties": { + "name": "${var.prefix}-nsgrule", + "network_security_group_name": "${azurerm_network_security_group.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "priority": 100, + "direction": "Outbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": "*", + "source_address_prefix": "*", + "destination_address_prefix": "Sql.WestEurope", + "compiletime_identity": "azurerm_network_security_rule.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT167 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT167 new file mode 100644 index 0000000..de6206c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT167 @@ -0,0 +1,138 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/private-link-service/variables.tf", + "/examples/virtual-networks/private-link-service/main.tf" + ], + "timestamp": 1642943280195, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/private-link-service/variables.tf", + "/examples/virtual-networks/private-link-service/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT167", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_private_link_service", + "azurerm_public_ip", + "azurerm_lb" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT167", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "test", + "properties": { + "name": "example-private-link-service", + "location": "WestUS", + "compiletime_identity": "azurerm_resource_group.test" + } + }, + { + "type": "azurerm_virtual_network", + "name": "test", + "properties": { + "name": "acctestvnet", + "resource_group_name": "${azurerm_resource_group.test.name}", + "location": "${azurerm_resource_group.test.location}", + "address_space": [ + "10.5.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.test" + } + }, + { + "type": "azurerm_subnet", + "name": "test", + "properties": { + "name": "acctestsnet", + "resource_group_name": "${azurerm_resource_group.test.name}", + "virtual_network_name": "${azurerm_virtual_network.test.name}", + "address_prefixes": [ + "10.5.1.0/24" + ], + "enforce_private_link_service_network_policies": true, + "compiletime_identity": "azurerm_subnet.test" + } + }, + { + "type": "azurerm_public_ip", + "name": "test", + "properties": { + "name": "acctestpip", + "sku": "Standard", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.test" + } + }, + { + "type": "azurerm_lb", + "name": "test", + "properties": { + "name": "acctestlb", + "sku": "Standard", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "frontend_ip_configuration": [ + { + "name": "${azurerm_public_ip.test.name}", + "public_ip_address_id": "${azurerm_public_ip.test.id}" + } + ], + "compiletime_identity": "azurerm_lb.test" + } + }, + { + "type": "azurerm_private_link_service", + "name": "test", + "properties": { + "name": "acctestpls", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "nat_ip_configuration": [ + { + "name": "${azurerm_public_ip.test.name}", + "subnet_id": "${azurerm_subnet.test.id}", + "private_ip_address": "10.5.1.17", + "primary": true + } + ], + "load_balancer_frontend_ip_configuration_ids": [ + "${azurerm_lb.test.frontend_ip_configuration[0].id}" + ], + "tags": { + "env": "test" + }, + "compiletime_identity": "azurerm_private_link_service.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT168 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT168 new file mode 100644 index 0000000..e96ad62 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT168 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/virtual-hub/variables.tf", + "/examples/virtual-networks/virtual-hub/main.tf" + ], + "timestamp": 1642943280198, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/virtual-hub/variables.tf", + "/examples/virtual-networks/virtual-hub/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT168", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_hub", + "azurerm_virtual_wan", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT168", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_wan", + "name": "example", + "properties": { + "name": "${var.prefix}-virtualwan", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "compiletime_identity": "azurerm_virtual_wan.example" + } + }, + { + "type": "azurerm_virtual_hub", + "name": "example", + "properties": { + "name": "${var.prefix}-virtualhub", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_prefix": "10.0.1.0/24", + "virtual_wan_id": "${azurerm_virtual_wan.example.id}", + "compiletime_identity": "azurerm_virtual_hub.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT169 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT169 new file mode 100644 index 0000000..e07753d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT169 @@ -0,0 +1,113 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/virtual-network-gateway/basic/variables.tf", + "/examples/virtual-networks/virtual-network-gateway/basic/main.tf" + ], + "timestamp": 1642943280202, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/virtual-network-gateway/basic/variables.tf", + "/examples/virtual-networks/virtual-network-gateway/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT169", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_virtual_network_gateway", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT169", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "GatewaySubnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefix": "10.0.1.0/24", + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_virtual_network_gateway", + "name": "example", + "properties": { + "name": "${var.prefix}-vnetgw", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "type": "Vpn", + "vpn_type": "PolicyBased", + "sku": "Basic", + "ip_configuration": [ + { + "name": "vnetGatewayConfig", + "public_ip_address_id": "${azurerm_public_ip.example.id}", + "private_ip_address_allocation": "Dynamic", + "subnet_id": "${azurerm_subnet.example.id}" + } + ], + "compiletime_identity": "azurerm_virtual_network_gateway.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT17 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT17 new file mode 100644 index 0000000..9c792c5 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT17 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/windows-java/outputs.tf", + "/examples/app-service/windows-java/variables.tf", + "/examples/app-service/windows-java/main.tf" + ], + "timestamp": 1642943279618, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/windows-java/outputs.tf", + "/examples/app-service/windows-java/variables.tf", + "/examples/app-service/windows-java/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT17", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT17", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "sku": [ + { + "tier": "Basic", + "size": "B1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "java_version": 1.8, + "java_container": "JETTY", + "java_container_version": 9.3 + } + ], + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT170 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT170 new file mode 100644 index 0000000..adc336b --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT170 @@ -0,0 +1,114 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/virtual-network-gateway/vpngw1/variables.tf", + "/examples/virtual-networks/virtual-network-gateway/vpngw1/main.tf" + ], + "timestamp": 1642943280205, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/virtual-network-gateway/vpngw1/variables.tf", + "/examples/virtual-networks/virtual-network-gateway/vpngw1/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT170", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_virtual_network_gateway", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT170", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "GatewaySubnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefix": "10.0.1.0/24", + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "sku": "Standard", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_virtual_network_gateway", + "name": "example", + "properties": { + "name": "${var.prefix}-vnetgw", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "type": "Vpn", + "vpn_type": "RouteBased", + "sku": "VpnGw1", + "ip_configuration": [ + { + "name": "vnetGatewayConfig", + "public_ip_address_id": "${azurerm_public_ip.example.id}", + "private_ip_address_allocation": "Dynamic", + "subnet_id": "${azurerm_subnet.example.id}" + } + ], + "compiletime_identity": "azurerm_virtual_network_gateway.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT171 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT171 new file mode 100644 index 0000000..8980cb1 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT171 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/virtual-networks/virtual-network-peering/variables.tf", + "/examples/virtual-networks/virtual-network-peering/main.tf" + ], + "timestamp": 1642943280208, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/virtual-networks/virtual-network-peering/variables.tf", + "/examples/virtual-networks/virtual-network-peering/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT171", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_virtual_network_peering" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT171", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "first", + "properties": { + "name": "${var.prefix}-network1", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/24" + ], + "subnet": [ + { + "name": "subnet1", + "address_prefix": "10.0.0.0/24" + } + ], + "compiletime_identity": "azurerm_virtual_network.first" + } + }, + { + "type": "azurerm_virtual_network", + "name": "second", + "properties": { + "name": "${var.prefix}-network2", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_space": [ + "192.168.0.0/24" + ], + "subnet": [ + { + "name": "subnet1", + "address_prefix": "192.168.0.0/24" + } + ], + "compiletime_identity": "azurerm_virtual_network.second" + } + }, + { + "type": "azurerm_virtual_network_peering", + "name": "first-to-second", + "properties": { + "name": "first-to-second", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.first.name}", + "remote_virtual_network_id": "${azurerm_virtual_network.second.id}", + "allow_virtual_network_access": true, + "allow_forwarded_traffic": false, + "allow_gateway_transit": false, + "compiletime_identity": "azurerm_virtual_network_peering.first-to-second" + } + }, + { + "type": "azurerm_virtual_network_peering", + "name": "second-to-first", + "properties": { + "name": "second-to-first", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.second.name}", + "remote_virtual_network_id": "${azurerm_virtual_network.first.id}", + "allow_virtual_network_access": true, + "allow_forwarded_traffic": false, + "allow_gateway_transit": false, + "use_remote_gateways": false, + "compiletime_identity": "azurerm_virtual_network_peering.second-to-first" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT172 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT172 new file mode 100644 index 0000000..9fe61de --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT172 @@ -0,0 +1,138 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/extensions/custom-script/variables.tf", + "/examples/vm-scale-set/extensions/custom-script/main.tf" + ], + "timestamp": 1642943280212, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/extensions/custom-script/variables.tf", + "/examples/vm-scale-set/extensions/custom-script/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT172", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine_scale_set_extension", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT172", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + }, + { + "type": "azurerm_virtual_machine_scale_set_extension", + "name": "custom-script", + "properties": { + "name": "custom-script", + "virtual_machine_scale_set_id": "${azurerm_linux_virtual_machine_scale_set.main.id}", + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "type_handler_version": 2.0, + "settings": "jsonencode({'commandToExecute': 'ls -la')}", + "compiletime_identity": "azurerm_virtual_machine_scale_set_extension.custom-script" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT173 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT173 new file mode 100644 index 0000000..15b1cf3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT173 @@ -0,0 +1,201 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/auto-scaling/variables.tf", + "/examples/vm-scale-set/linux/auto-scaling/main.tf" + ], + "timestamp": 1642943280216, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/auto-scaling/variables.tf", + "/examples/vm-scale-set/linux/auto-scaling/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT173", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_monitor_autoscale_setting" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT173", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "lifecycle": [ + { + "ignore_changes": [ + "instances" + ] + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + }, + { + "type": "azurerm_monitor_autoscale_setting", + "name": "main", + "properties": { + "name": "autoscale-config", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "target_resource_id": "${azurerm_linux_virtual_machine_scale_set.main.id}", + "profile": [ + { + "name": "AutoScale", + "capacity": [ + { + "default": 3, + "minimum": 1, + "maximum": 5 + } + ], + "rule": [ + { + "metric_trigger": [ + { + "metric_name": "Percentage CPU", + "metric_resource_id": "${azurerm_linux_virtual_machine_scale_set.main.id}", + "time_grain": "PT1M", + "statistic": "Average", + "time_window": "PT5M", + "time_aggregation": "Average", + "operator": "GreaterThan", + "threshold": 75 + } + ], + "scale_action": [ + { + "direction": "Increase", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT1M" + } + ] + }, + { + "metric_trigger": [ + { + "metric_name": "Percentage CPU", + "metric_resource_id": "${azurerm_linux_virtual_machine_scale_set.main.id}", + "time_grain": "PT1M", + "statistic": "Average", + "time_window": "PT5M", + "time_aggregation": "Average", + "operator": "LessThan", + "threshold": 25 + } + ], + "scale_action": [ + { + "direction": "Decrease", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT1M" + } + ] + } + ] + } + ], + "compiletime_identity": "azurerm_monitor_autoscale_setting.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT174 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT174 new file mode 100644 index 0000000..0b289ee --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT174 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/basic/variables.tf", + "/examples/vm-scale-set/linux/basic/main.tf" + ], + "timestamp": 1642943280219, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/basic/variables.tf", + "/examples/vm-scale-set/linux/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT174", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT174", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT175 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT175 new file mode 100644 index 0000000..b110b06 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT175 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/boot-diagnostics/variables.tf", + "/examples/vm-scale-set/linux/boot-diagnostics/main.tf" + ], + "timestamp": 1642943280224, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/boot-diagnostics/variables.tf", + "/examples/vm-scale-set/linux/boot-diagnostics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT175", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_storage_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT175", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_storage_account", + "name": "main", + "properties": { + "name": "${var.prefix}stor", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.main" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "boot_diagnostics": [ + { + "storage_account_uri": "${azurerm_storage_account.main.primary_blob_endpoint}" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT176 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT176 new file mode 100644 index 0000000..4a4984c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT176 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/custom-data/variables.tf", + "/examples/vm-scale-set/linux/custom-data/main.tf" + ], + "timestamp": 1642943280230, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/custom-data/variables.tf", + "/examples/vm-scale-set/linux/custom-data/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT176", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT176", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "custom_data": "base64encode(\"example custom data\")", + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT177 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT177 new file mode 100644 index 0000000..6579433 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT177 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/data-disks/variables.tf", + "/examples/vm-scale-set/linux/data-disks/main.tf" + ], + "timestamp": 1642943280234, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/data-disks/variables.tf", + "/examples/vm-scale-set/linux/data-disks/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT177", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT177", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "data_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite", + "disk_size_gb": 10, + "lun": 10 + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT178 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT178 new file mode 100644 index 0000000..0035ceb --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT178 @@ -0,0 +1,129 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/ephemeral-os-disk/variables.tf", + "/examples/vm-scale-set/linux/ephemeral-os-disk/main.tf" + ], + "timestamp": 1642943280239, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/ephemeral-os-disk/variables.tf", + "/examples/vm-scale-set/linux/ephemeral-os-disk/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT178", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT178", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2s_v2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite", + "diff_disk_settings": [ + { + "option": "Local" + } + ] + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT179 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT179 new file mode 100644 index 0000000..16593a8 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT179 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/extensions/variables.tf", + "/examples/vm-scale-set/linux/extensions/main.tf" + ], + "timestamp": 1642943280244, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/extensions/variables.tf", + "/examples/vm-scale-set/linux/extensions/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT179", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT179", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "extension": [ + { + "name": "CustomScript", + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "type_handler_version": 2.0, + "auto_upgrade_minor_version": true, + "settings": "jsonencode({'commandToExecute': 'echo $HOSTNAME'})", + "protected_settings": "jsonencode({'managedIdentity': {})}" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT18 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT18 new file mode 100644 index 0000000..7ab5468 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT18 @@ -0,0 +1,163 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service-certificate/stored-in-keyvault/variables.tf", + "/examples/app-service-certificate/stored-in-keyvault/main.tf" + ], + "timestamp": 1642943279622, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service-certificate/stored-in-keyvault/variables.tf", + "/examples/app-service-certificate/stored-in-keyvault/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT18", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_certificate", + "azurerm_key_vault", + "azurerm_resource_group", + "azurerm_key_vault_certificate", + "azurerm_key_vault_access_policy" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT18", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + }, + "azuread_service_principal": { + "web_app_resource_provider": { + "application_id": "abfa0a7c-a6b6-4736-8310-5855508787cd", + "compiletime_identity": "data.azuread_service_principal.web_app_resource_provider" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_key_vault", + "name": "example", + "properties": { + "name": "${var.prefix}-key-vault", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "standard", + "compiletime_identity": "azurerm_key_vault.example" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "current_user", + "properties": { + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_key_vault.example.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "certificate_permissions": [ + "get", + "import" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.current_user" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "web_app_resource_provider", + "properties": { + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_key_vault.example.tenant_id}", + "object_id": "${data.azuread_service_principal.web_app_resource_provider.id}", + "secret_permissions": [ + "get" + ], + "certificate_permissions": [ + "get" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.web_app_resource_provider" + } + }, + { + "type": "azurerm_key_vault_certificate", + "name": "example", + "properties": { + "name": "${var.prefix}-cert", + "key_vault_id": "${azurerm_key_vault.example.id}", + "certificate": [ + { + "contents": "${filebase64(\"certificate.pfx\")}", + "password": "terraform" + } + ], + "certificate_policy": [ + { + "issuer_parameters": [ + { + "name": "Unknown" + } + ], + "key_properties": [ + { + "exportable": true, + "key_size": 2048, + "key_type": "RSA", + "reuse_key": false + } + ], + "secret_properties": [ + { + "content_type": "application/x-pkcs12" + } + ] + } + ], + "depends_on": [ + "${azurerm_key_vault_access_policy.current_user}" + ], + "compiletime_identity": "azurerm_key_vault_certificate.example" + } + }, + { + "type": "azurerm_app_service_certificate", + "name": "example", + "properties": { + "name": "${var.prefix}-cert", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "key_vault_secret_id": "${azurerm_key_vault_certificate.example.secret_id}", + "compiletime_identity": "azurerm_app_service_certificate.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT180 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT180 new file mode 100644 index 0000000..44a71d4 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT180 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/ipv6/variables.tf", + "/examples/vm-scale-set/linux/ipv6/main.tf" + ], + "timestamp": 1642943280249, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/ipv6/variables.tf", + "/examples/vm-scale-set/linux/ipv6/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT180", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_linux_virtual_machine_scale_set", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT180", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "version": "IPv6" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT181 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT181 new file mode 100644 index 0000000..a8b6861 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT181 @@ -0,0 +1,134 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/multiple-nics/variables.tf", + "/examples/vm-scale-set/linux/multiple-nics/main.tf" + ], + "timestamp": 1642943280252, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/multiple-nics/variables.tf", + "/examples/vm-scale-set/linux/multiple-nics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT181", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT181", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "primary", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + }, + { + "name": "secondary", + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT182 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT182 new file mode 100644 index 0000000..e441177 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT182 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/public-ip-per-instance/variables.tf", + "/examples/vm-scale-set/linux/public-ip-per-instance/main.tf" + ], + "timestamp": 1642943280255, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/public-ip-per-instance/variables.tf", + "/examples/vm-scale-set/linux/public-ip-per-instance/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT182", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_public_ip_prefix", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT182", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip_prefix", + "name": "main", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_public_ip_prefix.main" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}", + "public_ip_address": [ + { + "name": "first", + "public_ip_prefix_id": "${azurerm_public_ip_prefix.main.id}" + } + ] + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT183 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT183 new file mode 100644 index 0000000..bbcbac7 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT183 @@ -0,0 +1,229 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/rolling-upgrade-policy/variables.tf", + "/examples/vm-scale-set/linux/rolling-upgrade-policy/main.tf" + ], + "timestamp": 1642943280258, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/rolling-upgrade-policy/variables.tf", + "/examples/vm-scale-set/linux/rolling-upgrade-policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT183", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_lb_nat_pool", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_lb_probe" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT183", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip", + "name": "main", + "properties": { + "name": "${var.prefix}-publicip", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.main" + } + }, + { + "type": "azurerm_lb", + "name": "main", + "properties": { + "name": "${var.prefix}-lb", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "frontend_ip_configuration": [ + { + "name": "internal", + "public_ip_address_id": "${azurerm_public_ip.main.id}" + } + ], + "compiletime_identity": "azurerm_lb.main" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "main", + "properties": { + "name": "backend-pool", + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.main.id}", + "compiletime_identity": "azurerm_lb_backend_address_pool.main" + } + }, + { + "type": "azurerm_lb_nat_pool", + "name": "main", + "properties": { + "name": "nat-pool", + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.main.id}", + "frontend_ip_configuration_name": "internal", + "protocol": "Tcp", + "frontend_port_start": 80, + "frontend_port_end": 90, + "backend_port": 8080, + "compiletime_identity": "azurerm_lb_nat_pool.main" + } + }, + { + "type": "azurerm_lb_probe", + "name": "main", + "properties": { + "name": "lb-probe", + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.main.id}", + "port": 22, + "protocol": "Tcp", + "compiletime_identity": "azurerm_lb_probe.main" + } + }, + { + "type": "azurerm_lb_rule", + "name": "main", + "properties": { + "name": "lb-rule", + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.main.id}", + "probe_id": "${azurerm_lb_probe.main.id}", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.main.id}", + "frontend_ip_configuration_name": "internal", + "protocol": "Tcp", + "frontend_port": 22, + "backend_port": 22, + "compiletime_identity": "azurerm_lb_rule.main" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "health_probe_id": "${azurerm_lb_probe.main.id}", + "upgrade_mode": "Rolling", + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}", + "load_balancer_backend_address_pool_ids": [ + "${azurerm_lb_backend_address_pool.main.id}" + ], + "load_balancer_inbound_nat_rules_ids": [ + "${azurerm_lb_nat_pool.main.id}" + ] + } + ] + } + ], + "rolling_upgrade_policy": [ + { + "max_batch_instance_percent": 21, + "max_unhealthy_instance_percent": 22, + "max_unhealthy_upgraded_instance_percent": 23, + "pause_time_between_batches": "PT30S" + } + ], + "depends_on": [ + "${azurerm_lb_rule.main}" + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT184 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT184 new file mode 100644 index 0000000..7c0cb9b --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT184 @@ -0,0 +1,237 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/secrets/variables.tf", + "/examples/vm-scale-set/linux/secrets/main.tf" + ], + "timestamp": 1642943280262, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/secrets/variables.tf", + "/examples/vm-scale-set/linux/secrets/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT184", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_key_vault_certificate" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT184", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_key_vault", + "name": "main", + "properties": { + "name": "${var.prefix}kv", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "standard", + "enabled_for_template_deployment": true, + "enabled_for_deployment": true, + "access_policy": [ + { + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "certificate_permissions": [ + "create", + "delete", + "get", + "update" + ], + "key_permissions": [ + "create" + ], + "secret_permissions": [ + "set" + ], + "storage_permissions": [ + "set" + ] + } + ], + "compiletime_identity": "azurerm_key_vault.main" + } + }, + { + "type": "azurerm_key_vault_certificate", + "name": "main", + "properties": { + "name": "first", + "key_vault_id": "${azurerm_key_vault.main.id}", + "certificate_policy": [ + { + "issuer_parameters": [ + { + "name": "Self" + } + ], + "key_properties": [ + { + "exportable": true, + "key_size": 2048, + "key_type": "RSA", + "reuse_key": true + } + ], + "lifetime_action": [ + { + "action": [ + { + "action_type": "AutoRenew" + } + ], + "trigger": [ + { + "days_before_expiry": 30 + } + ] + } + ], + "secret_properties": [ + { + "content_type": "application/x-pkcs12" + } + ], + "x509_certificate_properties": [ + { + "key_usage": [ + "cRLSign", + "dataEncipherment", + "digitalSignature", + "keyAgreement", + "keyCertSign", + "keyEncipherment" + ], + "subject": "CN=hello-world-first", + "validity_in_months": 12 + } + ] + } + ], + "compiletime_identity": "azurerm_key_vault_certificate.main" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "secret": [ + { + "key_vault_id": "${azurerm_key_vault.main.id}", + "certificate": [ + { + "url": "${azurerm_key_vault_certificate.main.secret_id}" + } + ] + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT185 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT185 new file mode 100644 index 0000000..41ce9ff --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT185 @@ -0,0 +1,127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/spot/variables.tf", + "/examples/vm-scale-set/linux/spot/main.tf" + ], + "timestamp": 1642943280266, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/spot/variables.tf", + "/examples/vm-scale-set/linux/spot/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT185", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT185", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "eviction_policy": "Delete", + "priority": "Spot", + "max_bid_price": 0.5, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT186 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT186 new file mode 100644 index 0000000..34e2841 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT186 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/ssh-keys/variables.tf", + "/examples/vm-scale-set/linux/ssh-keys/main.tf" + ], + "timestamp": 1642943280270, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/ssh-keys/variables.tf", + "/examples/vm-scale-set/linux/ssh-keys/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT186", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT186", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_ssh_key": [ + { + "username": "adminuser", + "public_key": "${file(\"~/.ssh/id_rsa.pub\")}" + } + ], + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT187 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT187 new file mode 100644 index 0000000..cf21095 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT187 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/system-assigned-identity/variables.tf", + "/examples/vm-scale-set/linux/system-assigned-identity/main.tf" + ], + "timestamp": 1642943280274, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/system-assigned-identity/variables.tf", + "/examples/vm-scale-set/linux/system-assigned-identity/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT187", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT187", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "output": [ + { + "vmss_principal_id": { + "value": "${azurerm_linux_virtual_machine_scale_set.main.identity[0].principal_id}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT188 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT188 new file mode 100644 index 0000000..fa4aed3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT188 @@ -0,0 +1,143 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/user-assigned-identity/variables.tf", + "/examples/vm-scale-set/linux/user-assigned-identity/main.tf" + ], + "timestamp": 1642943280277, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/user-assigned-identity/variables.tf", + "/examples/vm-scale-set/linux/user-assigned-identity/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT188", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_user_assigned_identity" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT188", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_user_assigned_identity", + "name": "main", + "properties": { + "name": "${var.prefix}-vmssidentity", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "compiletime_identity": "azurerm_user_assigned_identity.main" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "identity": [ + { + "type": "UserAssigned", + "identity_ids": [ + "${azurerm_user_assigned_identity.main.id}" + ] + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT189 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT189 new file mode 100644 index 0000000..2d8ee98 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT189 @@ -0,0 +1,130 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/linux/zones/variables.tf", + "/examples/vm-scale-set/linux/zones/main.tf" + ], + "timestamp": 1642943280281, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/linux/zones/variables.tf", + "/examples/vm-scale-set/linux/zones/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT189", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_linux_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT189", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "disable_password_authentication": false, + "zones": [ + 1, + 2, + 3 + ], + "zone_balance": true, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT19 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT19 new file mode 100644 index 0000000..d1eecaf --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT19 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/examples/app-service-certificate/stored-in-keyvault/certificate.pfx" + ], + "timestamp": 1642943279625, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/examples/app-service-certificate/stored-in-keyvault/certificate.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT19", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT19", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT190 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT190 new file mode 100644 index 0000000..b032ac7 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT190 @@ -0,0 +1,230 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/automatic-rolling-updates/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/automatic-rolling-updates/main.tf" + ], + "timestamp": 1642943280285, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/automatic-rolling-updates/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/automatic-rolling-updates/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT190", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_virtual_machine_scale_set", + "azurerm_lb_probe" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT190", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "frontend_ip_configuration_name": "internal" + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-publicip", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_lb", + "name": "example", + "properties": { + "name": "${var.prefix}lb", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "frontend_ip_configuration": [ + { + "name": "${local.frontend_ip_configuration_name}", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_lb.example" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "example", + "properties": { + "name": "backend", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "compiletime_identity": "azurerm_lb_backend_address_pool.example" + } + }, + { + "type": "azurerm_lb_probe", + "name": "example", + "properties": { + "name": "ssh-running-probe", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "port": 22, + "protocol": "Tcp", + "compiletime_identity": "azurerm_lb_probe.example" + } + }, + { + "type": "azurerm_lb_rule", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "probe_id": "${azurerm_lb_probe.example.id}", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.example.id}", + "frontend_ip_configuration_name": "${local.frontend_ip_configuration_name}", + "name": "LBRule", + "protocol": "Tcp", + "frontend_port": 22, + "backend_port": 22, + "compiletime_identity": "azurerm_lb_rule.example" + } + }, + { + "type": "azurerm_virtual_machine_scale_set", + "name": "example", + "properties": { + "name": "${var.prefix}-vmss", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "overprovision": true, + "upgrade_policy_mode": "Rolling", + "automatic_os_upgrade": true, + "health_probe_id": "${azurerm_lb_probe.example.id}", + "rolling_upgrade_policy": [ + { + "max_batch_instance_percent": 20, + "max_unhealthy_instance_percent": 20, + "max_unhealthy_upgraded_instance_percent": 20, + "pause_time_between_batches": "PT0S" + } + ], + "sku": [ + { + "name": "Standard_D1_v2", + "tier": "Standard", + "capacity": 2 + } + ], + "os_profile": [ + { + "computer_name_prefix": "${var.prefix}-vm", + "admin_username": "myadmin", + "admin_password": "Passwword1234" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "network_profile": [ + { + "name": "internal", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.example.id}", + "load_balancer_backend_address_pool_ids": [ + "${azurerm_lb_backend_address_pool.example.id}" + ], + "primary": true + } + ] + } + ], + "storage_profile_os_disk": [ + { + "name": "", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "storage_profile_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "compiletime_identity": "azurerm_virtual_machine_scale_set.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT191 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT191 new file mode 100644 index 0000000..434135f --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT191 @@ -0,0 +1,216 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/autoscale/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/autoscale/main.tf" + ], + "timestamp": 1642943280288, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/autoscale/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/autoscale/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT191", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_monitor_autoscale_setting", + "azurerm_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT191", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "instance_count": 2 + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_virtual_machine_scale_set", + "name": "example", + "properties": { + "name": "${var.prefix}-vmss", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "upgrade_policy_mode": "Manual", + "sku": [ + { + "name": "Standard_D1_v2", + "tier": "Standard", + "capacity": "${local.instance_count}" + } + ], + "os_profile": [ + { + "computer_name_prefix": "${var.prefix}-vm", + "admin_username": "myadmin", + "admin_password": "Passwword1234" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "network_profile": [ + { + "name": "web_ss_net_profile", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.example.id}", + "primary": true + } + ] + } + ], + "storage_profile_os_disk": [ + { + "name": "", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "storage_profile_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "compiletime_identity": "azurerm_virtual_machine_scale_set.example" + } + }, + { + "type": "azurerm_monitor_autoscale_setting", + "name": "example", + "properties": { + "name": "autoscale-cpu", + "target_resource_id": "${azurerm_virtual_machine_scale_set.example.id}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "profile": [ + { + "name": "autoscale-cpu", + "capacity": [ + { + "default": "${local.instance_count}", + "minimum": 0, + "maximum": 1000 + } + ], + "rule": [ + { + "metric_trigger": [ + { + "metric_name": "Percentage CPU", + "metric_resource_id": "${azurerm_virtual_machine_scale_set.example.id}", + "time_grain": "PT1M", + "statistic": "Average", + "time_window": "PT5M", + "time_aggregation": "Average", + "operator": "GreaterThan", + "threshold": 75 + } + ], + "scale_action": [ + { + "direction": "Increase", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT1M" + } + ] + }, + { + "metric_trigger": [ + { + "metric_name": "Percentage CPU", + "metric_resource_id": "${azurerm_virtual_machine_scale_set.example.id}", + "time_grain": "PT1M", + "statistic": "Average", + "time_window": "PT5M", + "time_aggregation": "Average", + "operator": "LessThan", + "threshold": 15 + } + ], + "scale_action": [ + { + "direction": "Decrease", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT1M" + } + ] + } + ] + } + ], + "compiletime_identity": "azurerm_monitor_autoscale_setting.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT192 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT192 new file mode 100644 index 0000000..126fdc9 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT192 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/basic/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/basic/main.tf" + ], + "timestamp": 1642943280292, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/basic/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT192", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT192", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_virtual_machine_scale_set", + "name": "example", + "properties": { + "name": "${var.prefix}-vmss", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "upgrade_policy_mode": "Manual", + "sku": [ + { + "name": "Standard_D1_v2", + "tier": "Standard", + "capacity": 2 + } + ], + "os_profile": [ + { + "computer_name_prefix": "${var.prefix}-vm", + "admin_username": "myadmin", + "admin_password": "Passwword1234" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "network_profile": [ + { + "name": "web_ss_net_profile", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.example.id}", + "primary": true + } + ] + } + ], + "storage_profile_os_disk": [ + { + "name": "", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "storage_profile_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "compiletime_identity": "azurerm_virtual_machine_scale_set.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT193 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT193 new file mode 100644 index 0000000..3852c1a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT193 @@ -0,0 +1,203 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/loadbalancer-probe/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/loadbalancer-probe/main.tf" + ], + "timestamp": 1642943280296, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/virtual_machine_scale_set/loadbalancer-probe/variables.tf", + "/examples/vm-scale-set/virtual_machine_scale_set/loadbalancer-probe/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT193", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_lb_nat_pool", + "azurerm_linux_virtual_machine_scale_set", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_lb_probe" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT193", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "domain_name_label": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_lb", + "name": "example", + "properties": { + "name": "${var.prefix}-lb", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "frontend_ip_configuration": [ + { + "name": "PublicIPAddress", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_lb.example" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "BackEndAddressPool", + "compiletime_identity": "azurerm_lb_backend_address_pool.example" + } + }, + { + "type": "azurerm_lb_probe", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "ssh-probe", + "protocol": "Tcp", + "port": 22, + "compiletime_identity": "azurerm_lb_probe.example" + } + }, + { + "type": "azurerm_lb_nat_pool", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "name": "ssh", + "loadbalancer_id": "${azurerm_lb.example.id}", + "protocol": "Tcp", + "frontend_port_start": 220, + "frontend_port_end": 229, + "backend_port": 22, + "frontend_ip_configuration_name": "PublicIPAddress", + "compiletime_identity": "azurerm_lb_nat_pool.example" + } + }, + { + "type": "azurerm_linux_virtual_machine_scale_set", + "name": "example", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "Standard_F2", + "instances": 1, + "admin_username": "testuser", + "admin_password": "P@sstoken4567!", + "disable_password_authentication": false, + "source_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.example.id}", + "load_balancer_backend_address_pool_ids": [ + "${azurerm_lb_backend_address_pool.example.id}" + ], + "load_balancer_inbound_nat_rules_ids": [ + "${azurerm_lb_nat_pool.example.id}" + ] + } + ] + } + ], + "depends_on": [ + "${azurerm_lb_probe.example}" + ], + "compiletime_identity": "azurerm_linux_virtual_machine_scale_set.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT194 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT194 new file mode 100644 index 0000000..e4199a9 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT194 @@ -0,0 +1,201 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/auto-scaling/variables.tf", + "/examples/vm-scale-set/windows/auto-scaling/main.tf" + ], + "timestamp": 1642943280300, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/auto-scaling/variables.tf", + "/examples/vm-scale-set/windows/auto-scaling/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT194", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_monitor_autoscale_setting" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT194", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "lifecycle": [ + { + "ignore_changes": [ + "instances" + ] + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + }, + { + "type": "azurerm_monitor_autoscale_setting", + "name": "main", + "properties": { + "name": "autoscale-config", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "target_resource_id": "${azurerm_windows_virtual_machine_scale_set.main.id}", + "profile": [ + { + "name": "AutoScale", + "capacity": [ + { + "default": 3, + "minimum": 1, + "maximum": 5 + } + ], + "rule": [ + { + "metric_trigger": [ + { + "metric_name": "Percentage CPU", + "metric_resource_id": "${azurerm_windows_virtual_machine_scale_set.main.id}", + "time_grain": "PT1M", + "statistic": "Average", + "time_window": "PT5M", + "time_aggregation": "Average", + "operator": "GreaterThan", + "threshold": 75 + } + ], + "scale_action": [ + { + "direction": "Increase", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT1M" + } + ] + }, + { + "metric_trigger": [ + { + "metric_name": "Percentage CPU", + "metric_resource_id": "${azurerm_windows_virtual_machine_scale_set.main.id}", + "time_grain": "PT1M", + "statistic": "Average", + "time_window": "PT5M", + "time_aggregation": "Average", + "operator": "LessThan", + "threshold": 25 + } + ], + "scale_action": [ + { + "direction": "Decrease", + "type": "ChangeCount", + "value": 1, + "cooldown": "PT1M" + } + ] + } + ] + } + ], + "compiletime_identity": "azurerm_monitor_autoscale_setting.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT195 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT195 new file mode 100644 index 0000000..dd0cdf6 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT195 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/basic/variables.tf", + "/examples/vm-scale-set/windows/basic/main.tf" + ], + "timestamp": 1642943280306, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/basic/variables.tf", + "/examples/vm-scale-set/windows/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT195", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT195", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT196 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT196 new file mode 100644 index 0000000..f3c027d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT196 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/boot-diagnostics/variables.tf", + "/examples/vm-scale-set/windows/boot-diagnostics/main.tf" + ], + "timestamp": 1642943280310, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/boot-diagnostics/variables.tf", + "/examples/vm-scale-set/windows/boot-diagnostics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT196", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_storage_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT196", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_storage_account", + "name": "main", + "properties": { + "name": "${var.prefix}stor", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.main" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "boot_diagnostics": [ + { + "storage_account_uri": "${azurerm_storage_account.main.primary_blob_endpoint}" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT197 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT197 new file mode 100644 index 0000000..27d4467 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT197 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/custom-data/variables.tf", + "/examples/vm-scale-set/windows/custom-data/main.tf" + ], + "timestamp": 1642943280314, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/custom-data/variables.tf", + "/examples/vm-scale-set/windows/custom-data/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT197", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT197", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "custom_data": "base64_encode(\"example custom data\")", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT198 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT198 new file mode 100644 index 0000000..b231e04 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT198 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/custom-timezone/variables.tf", + "/examples/vm-scale-set/windows/custom-timezone/main.tf" + ], + "timestamp": 1642943280318, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/custom-timezone/variables.tf", + "/examples/vm-scale-set/windows/custom-timezone/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT198", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT198", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "timezone": "Hawaiian Standard Time", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT199 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT199 new file mode 100644 index 0000000..6d3256c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT199 @@ -0,0 +1,132 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/data-disks/variables.tf", + "/examples/vm-scale-set/windows/data-disks/main.tf" + ], + "timestamp": 1642943280322, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/data-disks/variables.tf", + "/examples/vm-scale-set/windows/data-disks/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT199", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT199", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "data_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite", + "disk_size_gb": 10, + "lun": 10 + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT2 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT2 new file mode 100644 index 0000000..c4e5726 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT2 @@ -0,0 +1,167 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/backup/output.tf", + "/examples/app-service/backup/variables.tf", + "/examples/app-service/backup/main.tf" + ], + "timestamp": 1642943279558, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/backup/output.tf", + "/examples/app-service/backup/variables.tf", + "/examples/app-service/backup/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT2", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_app_service_plan", + "azurerm_storage_container", + "azurerm_storage_account", + "azurerm_app_service" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT2", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_storage_account_sas": { + "test": { + "connection_string": "${azurerm_storage_account.test.primary_connection_string}", + "https_only": true, + "resource_types": [ + { + "service": false, + "container": false, + "object": true + } + ], + "services": [ + { + "blob": true, + "queue": false, + "table": false, + "file": false + } + ], + "start": "2019-03-21", + "expiry": "2020-03-21", + "permissions": [ + { + "read": false, + "write": true, + "delete": false, + "list": false, + "add": false, + "create": false, + "update": false, + "process": false + } + ], + "compiletime_identity": "data.azurerm_storage_account_sas.test" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "test", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.test" + } + }, + { + "type": "azurerm_storage_account", + "name": "test", + "properties": { + "name": "${var.prefix}sa", + "resource_group_name": "${azurerm_resource_group.test.name}", + "location": "${azurerm_resource_group.test.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.test" + } + }, + { + "type": "azurerm_storage_container", + "name": "test", + "properties": { + "name": "${var.prefix}-sc", + "storage_account_name": "${azurerm_storage_account.test.name}", + "container_access_type": "private", + "compiletime_identity": "azurerm_storage_container.test" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "test", + "properties": { + "name": "${var.prefix}-splan", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.test" + } + }, + { + "type": "azurerm_app_service", + "name": "test", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "app_service_plan_id": "${azurerm_app_service_plan.test.id}", + "backup": [ + { + "name": "Example", + "storage_account_url": "https://${azurerm_storage_account.test.name}.blob.core.windows.net/${azurerm_storage_container.test.name}${data.azurerm_storage_account_sas.test.sas}&sr=b", + "schedule": [ + { + "frequency_interval": 30, + "frequency_unit": "Day" + } + ] + } + ], + "site_config": [ + { + "dotnet_framework_version": "v4.0", + "scm_type": "LocalGit" + } + ], + "app_settings": { + "SOME_KEY": "some-value" + }, + "compiletime_identity": "azurerm_app_service.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT20 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT20 new file mode 100644 index 0000000..0ab9a94 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT20 @@ -0,0 +1,68 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service-certificate-order/standard/outputs.tf", + "/examples/app-service-certificate-order/standard/variables.tf", + "/examples/app-service-certificate-order/standard/main.tf" + ], + "timestamp": 1642943279627, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service-certificate-order/standard/outputs.tf", + "/examples/app-service-certificate-order/standard/variables.tf", + "/examples/app-service-certificate-order/standard/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT20", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_certificate_order", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT20", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_app_service_certificate_order", + "name": "test", + "properties": { + "name": "${var.prefix}-autoacc", + "location": "global", + "resource_group_name": "${azurerm_resource_group.example.name}", + "distinguished_name": "CN=example.com", + "product_type": "standard", + "compiletime_identity": "azurerm_app_service_certificate_order.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT200 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT200 new file mode 100644 index 0000000..01b2431 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT200 @@ -0,0 +1,129 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/ephemeral-os-disk/variables.tf", + "/examples/vm-scale-set/windows/ephemeral-os-disk/main.tf" + ], + "timestamp": 1642943280326, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/ephemeral-os-disk/variables.tf", + "/examples/vm-scale-set/windows/ephemeral-os-disk/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT200", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT200", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2s_v2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite", + "diff_disk_settings": [ + { + "option": "Local" + } + ] + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT201 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT201 new file mode 100644 index 0000000..07e39c6 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT201 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/extensions/variables.tf", + "/examples/vm-scale-set/windows/extensions/main.tf" + ], + "timestamp": 1642943280330, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/extensions/variables.tf", + "/examples/vm-scale-set/windows/extensions/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT201", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT201", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "extension": [ + { + "name": "CustomScript", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.1, + "auto_upgrade_minor_version": true, + "settings": "${jsonencode({'commandToExecute': 'powershell.exe -c \\\\\"Get-Content env:computername\\\\\"'})}", + "protected_settings": "jsonencode({'managedIdentity': {})}" + }, + { + "name": "AADLoginForWindows", + "publisher": "Microsoft.Azure.ActiveDirectory", + "type": "AADLoginForWindows", + "type_handler_version": 1.0, + "auto_upgrade_minor_version": true + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT202 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT202 new file mode 100644 index 0000000..52dabd8 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT202 @@ -0,0 +1,125 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/hybrid-use-benefit/variables.tf", + "/examples/vm-scale-set/windows/hybrid-use-benefit/main.tf" + ], + "timestamp": 1642943280334, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/hybrid-use-benefit/variables.tf", + "/examples/vm-scale-set/windows/hybrid-use-benefit/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT202", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT202", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "license_type": "Windows_Server", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT203 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT203 new file mode 100644 index 0000000..608d062 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT203 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/ipv6/variables.tf", + "/examples/vm-scale-set/windows/ipv6/main.tf" + ], + "timestamp": 1642943280338, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/ipv6/variables.tf", + "/examples/vm-scale-set/windows/ipv6/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT203", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT203", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "version": "IPv6" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT204 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT204 new file mode 100644 index 0000000..1fc1a71 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT204 @@ -0,0 +1,134 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/multiple-nics/variables.tf", + "/examples/vm-scale-set/windows/multiple-nics/main.tf" + ], + "timestamp": 1642943280343, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/multiple-nics/variables.tf", + "/examples/vm-scale-set/windows/multiple-nics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT204", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT204", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "primary", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + }, + { + "name": "secondary", + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT205 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT205 new file mode 100644 index 0000000..79a3955 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT205 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/public-ip-per-instance/variables.tf", + "/examples/vm-scale-set/windows/public-ip-per-instance/main.tf" + ], + "timestamp": 1642943280347, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/public-ip-per-instance/variables.tf", + "/examples/vm-scale-set/windows/public-ip-per-instance/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT205", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_public_ip_prefix", + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT205", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip_prefix", + "name": "main", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_public_ip_prefix.main" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}", + "public_ip_address": [ + { + "name": "first", + "public_ip_prefix_id": "${azurerm_public_ip_prefix.main.id}" + } + ] + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT206 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT206 new file mode 100644 index 0000000..15e4203 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT206 @@ -0,0 +1,229 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/rolling-upgrade-policy/variables.tf", + "/examples/vm-scale-set/windows/rolling-upgrade-policy/main.tf" + ], + "timestamp": 1642943280351, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/rolling-upgrade-policy/variables.tf", + "/examples/vm-scale-set/windows/rolling-upgrade-policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT206", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_lb_rule", + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_lb_nat_pool", + "azurerm_lb", + "azurerm_public_ip", + "azurerm_lb_probe" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT206", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip", + "name": "main", + "properties": { + "name": "${var.prefix}-publicip", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.main" + } + }, + { + "type": "azurerm_lb", + "name": "main", + "properties": { + "name": "${var.prefix}-lb", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "frontend_ip_configuration": [ + { + "name": "internal", + "public_ip_address_id": "${azurerm_public_ip.main.id}" + } + ], + "compiletime_identity": "azurerm_lb.main" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "main", + "properties": { + "name": "backend-pool", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.main.id}", + "compiletime_identity": "azurerm_lb_backend_address_pool.main" + } + }, + { + "type": "azurerm_lb_nat_pool", + "name": "main", + "properties": { + "name": "nat-pool", + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.main.id}", + "frontend_ip_configuration_name": "internal", + "protocol": "Tcp", + "frontend_port_start": 80, + "frontend_port_end": 90, + "backend_port": 8080, + "compiletime_identity": "azurerm_lb_nat_pool.main" + } + }, + { + "type": "azurerm_lb_probe", + "name": "main", + "properties": { + "name": "lb-probe", + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.main.id}", + "port": 22, + "protocol": "Tcp", + "compiletime_identity": "azurerm_lb_probe.main" + } + }, + { + "type": "azurerm_lb_rule", + "name": "main", + "properties": { + "name": "lb-rule", + "resource_group_name": "${azurerm_resource_group.main.name}", + "loadbalancer_id": "${azurerm_lb.main.id}", + "probe_id": "${azurerm_lb_probe.main.id}", + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.main.id}", + "frontend_ip_configuration_name": "internal", + "protocol": "Tcp", + "frontend_port": 22, + "backend_port": 22, + "compiletime_identity": "azurerm_lb_rule.main" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "health_probe_id": "${azurerm_lb_probe.main.id}", + "upgrade_mode": "Rolling", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}", + "load_balancer_backend_address_pool_ids": [ + "${azurerm_lb_backend_address_pool.main.id}" + ], + "load_balancer_inbound_nat_rules_ids": [ + "${azurerm_lb_nat_pool.main.id}" + ] + } + ] + } + ], + "rolling_upgrade_policy": [ + { + "max_batch_instance_percent": 21, + "max_unhealthy_instance_percent": 22, + "max_unhealthy_upgraded_instance_percent": 23, + "pause_time_between_batches": "PT30S" + } + ], + "depends_on": [ + "azurerm_lb_rule.main" + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT207 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT207 new file mode 100644 index 0000000..6e08091 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT207 @@ -0,0 +1,331 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/secrets/variables.tf", + "/examples/vm-scale-set/windows/secrets/main.tf" + ], + "timestamp": 1642943280356, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/secrets/variables.tf", + "/examples/vm-scale-set/windows/secrets/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT207", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_key_vault_certificate" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT207", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_key_vault", + "name": "main", + "properties": { + "name": "${var.prefix}kv", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "standard", + "enabled_for_template_deployment": true, + "enabled_for_deployment": true, + "access_policy": [ + { + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "certificate_permissions": [ + "create", + "delete", + "get", + "update" + ], + "key_permissions": [ + "create" + ], + "secret_permissions": [ + "set" + ], + "storage_permissions": [ + "set" + ] + } + ], + "compiletime_identity": "azurerm_key_vault.main" + } + }, + { + "type": "azurerm_key_vault", + "name": "main", + "properties": { + "name": "${var.prefix}kv", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "standard", + "enabled_for_template_deployment": true, + "enabled_for_deployment": true, + "access_policy": [ + { + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "certificate_permissions": [ + "create", + "delete", + "get", + "update" + ], + "key_permissions": [ + "create" + ], + "secret_permissions": [ + "set" + ], + "storage_permissions": [ + "set" + ] + } + ], + "compiletime_identity": "azurerm_key_vault.main" + } + }, + { + "type": "azurerm_key_vault_certificate", + "name": "main", + "properties": { + "name": "first", + "key_vault_id": "${azurerm_key_vault.main.id}", + "certificate_policy": [ + { + "issuer_parameters": [ + { + "name": "Self" + } + ], + "key_properties": [ + { + "exportable": true, + "key_size": 2048, + "key_type": "RSA", + "reuse_key": true + } + ], + "lifetime_action": [ + { + "action": [ + { + "action_type": "AutoRenew" + } + ], + "trigger": [ + { + "days_before_expiry": 30 + } + ] + } + ], + "secret_properties": [ + { + "content_type": "application/x-pkcs12" + } + ], + "x509_certificate_properties": [ + { + "key_usage": [ + "cRLSign", + "dataEncipherment", + "digitalSignature", + "keyAgreement", + "keyCertSign", + "keyEncipherment" + ], + "subject": "CN=hello-world-first", + "validity_in_months": 12 + } + ] + } + ], + "compiletime_identity": "azurerm_key_vault_certificate.main" + } + }, + { + "type": "azurerm_key_vault_certificate", + "name": "main", + "properties": { + "name": "first", + "key_vault_id": "${azurerm_key_vault.main.id}", + "certificate_policy": [ + { + "issuer_parameters": [ + { + "name": "Self" + } + ], + "key_properties": [ + { + "exportable": true, + "key_size": 2048, + "key_type": "RSA", + "reuse_key": true + } + ], + "lifetime_action": [ + { + "action": [ + { + "action_type": "AutoRenew" + } + ], + "trigger": [ + { + "days_before_expiry": 30 + } + ] + } + ], + "secret_properties": [ + { + "content_type": "application/x-pkcs12" + } + ], + "x509_certificate_properties": [ + { + "key_usage": [ + "cRLSign", + "dataEncipherment", + "digitalSignature", + "keyAgreement", + "keyCertSign", + "keyEncipherment" + ], + "subject": "CN=hello-world-first", + "validity_in_months": 12 + } + ] + } + ], + "compiletime_identity": "azurerm_key_vault_certificate.main" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "secret": [ + { + "key_vault_id": "${azurerm_key_vault.main.id}", + "certificate": [ + { + "url": "${azurerm_key_vault_certificate.main.secret_id}" + } + ] + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT208 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT208 new file mode 100644 index 0000000..bf4554c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT208 @@ -0,0 +1,100 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/1-dependencies.tf" + ], + "timestamp": 1642943280360, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT208", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT208", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "vmss_name": "${var.prefix}-vmss", + "vmss_count": 3 + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_public_ip", + "name": "main", + "properties": { + "name": "${var.prefix}-publicip", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "allocation_method": "Static", + "domain_name_label": "${local.vmss_name}-pip", + "compiletime_identity": "azurerm_public_ip.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT209 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT209 new file mode 100644 index 0000000..a46f5e2 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT209 @@ -0,0 +1,243 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/2-key-vault.tf" + ], + "timestamp": 1642943280364, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/2-key-vault.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT209", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_certificate" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT209", + "collection": "terraformtemplate", + "json": { + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_key_vault", + "name": "main", + "properties": { + "name": "${var.prefix}keyvault", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "standard", + "access_policy": [ + { + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "certificate_permissions": [ + "create", + "delete", + "deleteissuers", + "get", + "getissuers", + "import", + "list", + "listissuers", + "managecontacts", + "manageissuers", + "setissuers", + "update" + ], + "key_permissions": [ + "backup", + "create", + "decrypt", + "delete", + "encrypt", + "get", + "import", + "list", + "purge", + "recover", + "restore", + "sign", + "unwrapKey", + "update", + "verify", + "wrapKey" + ], + "secret_permissions": [ + "backup", + "delete", + "get", + "list", + "purge", + "recover", + "restore", + "set" + ] + } + ], + "compiletime_identity": "azurerm_key_vault.main" + } + }, + { + "type": "azurerm_key_vault_certificate", + "name": "primary", + "properties": { + "name": "${local.vmss_name}-primarycert", + "key_vault_id": "${azurerm_key_vault.main.id}", + "certificate_policy": [ + { + "issuer_parameters": [ + { + "name": "Self" + } + ], + "key_properties": [ + { + "exportable": true, + "key_size": 2048, + "key_type": "RSA", + "reuse_key": true + } + ], + "lifetime_action": [ + { + "action": [ + { + "action_type": "AutoRenew" + } + ], + "trigger": [ + { + "days_before_expiry": 30 + } + ] + } + ], + "secret_properties": [ + { + "content_type": "application/x-pkcs12" + } + ], + "x509_certificate_properties": [ + { + "extended_key_usage": [ + "1.3.6.1.5.5.7.3.1", + "1.3.6.1.5.5.7.3.2" + ], + "key_usage": [ + "cRLSign", + "dataEncipherment", + "digitalSignature", + "keyAgreement", + "keyCertSign", + "keyEncipherment" + ], + "subject_alternative_names": [ + { + "dns_names": [ + "${azurerm_public_ip.main.fqdn}" + ] + } + ], + "subject": "CN=${local.vmss_name}", + "validity_in_months": 12 + } + ] + } + ], + "compiletime_identity": "azurerm_key_vault_certificate.primary" + } + }, + { + "type": "azurerm_key_vault_certificate", + "name": "secondary", + "properties": { + "name": "${local.vmss_name}-secondarycert", + "key_vault_id": "${azurerm_key_vault.main.id}", + "certificate_policy": [ + { + "issuer_parameters": [ + { + "name": "Self" + } + ], + "key_properties": [ + { + "exportable": true, + "key_size": 2048, + "key_type": "RSA", + "reuse_key": true + } + ], + "lifetime_action": [ + { + "action": [ + { + "action_type": "AutoRenew" + } + ], + "trigger": [ + { + "days_before_expiry": 30 + } + ] + } + ], + "secret_properties": [ + { + "content_type": "application/x-pkcs12" + } + ], + "x509_certificate_properties": [ + { + "extended_key_usage": [ + "1.3.6.1.5.5.7.3.1", + "1.3.6.1.5.5.7.3.2" + ], + "key_usage": [ + "cRLSign", + "dataEncipherment", + "digitalSignature", + "keyAgreement", + "keyCertSign", + "keyEncipherment" + ], + "subject_alternative_names": [ + { + "dns_names": [ + "${azurerm_public_ip.main.fqdn}" + ] + } + ], + "subject": "CN=${local.vmss_name}", + "validity_in_months": 12 + } + ] + } + ], + "compiletime_identity": "azurerm_key_vault_certificate.secondary" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT21 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT21 new file mode 100644 index 0000000..8269f5a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT21 @@ -0,0 +1,68 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service-certificate-order/wildcard/outputs.tf", + "/examples/app-service-certificate-order/wildcard/variables.tf", + "/examples/app-service-certificate-order/wildcard/main.tf" + ], + "timestamp": 1642943279631, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service-certificate-order/wildcard/outputs.tf", + "/examples/app-service-certificate-order/wildcard/variables.tf", + "/examples/app-service-certificate-order/wildcard/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT21", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_certificate_order", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT21", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_app_service_certificate_order", + "name": "test", + "properties": { + "name": "${var.prefix}-autoacc", + "location": "global", + "resource_group_name": "${azurerm_resource_group.example.name}", + "distinguished_name": "CN=*.example.com", + "product_type": "wildcard", + "compiletime_identity": "azurerm_app_service_certificate_order.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT210 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT210 new file mode 100644 index 0000000..d31c3be --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT210 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/3-service-fabric.tf" + ], + "timestamp": 1642943280368, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/3-service-fabric.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT210", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_service_fabric_cluster" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT210", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_service_fabric_cluster", + "name": "main", + "properties": { + "name": "${var.prefix}-servicefabric", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "reliability_level": "Bronze", + "upgrade_mode": "Automatic", + "vm_image": "Windows", + "management_endpoint": "https://${azurerm_public_ip.main.fqdn}:19080", + "add_on_features": [ + "DnsService" + ], + "node_type": [ + { + "name": "primary", + "instance_count": 3, + "is_primary": true, + "client_endpoint_port": 2020, + "http_endpoint_port": 80 + }, + { + "name": "${local.vmss_name}", + "instance_count": "${local.vmss_count}", + "is_primary": true, + "client_endpoint_port": 19000, + "http_endpoint_port": 19080, + "application_ports": [ + { + "start_port": 20000, + "end_port": 30000 + } + ], + "ephemeral_ports": [ + { + "start_port": 49152, + "end_port": 65534 + } + ] + } + ], + "fabric_settings": [ + { + "name": "Security", + "parameters": { + "ClusterProtectionLevel": "EncryptAndSign" + } + } + ], + "certificate": [ + { + "thumbprint": "${azurerm_key_vault_certificate.primary.thumbprint}", + "thumbprint_secondary": "${azurerm_key_vault_certificate.secondary.thumbprint}", + "x509_store_name": "My" + } + ], + "compiletime_identity": "azurerm_service_fabric_cluster.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT211 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT211 new file mode 100644 index 0000000..ff65250 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT211 @@ -0,0 +1,77 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/main.tf" + ], + "timestamp": 1642943280373, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/service-fabric/variables.tf", + "/examples/vm-scale-set/windows/service-fabric/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT211", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT211", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT212 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT212 new file mode 100644 index 0000000..a324116 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT212 @@ -0,0 +1,127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/spot/variables.tf", + "/examples/vm-scale-set/windows/spot/main.tf" + ], + "timestamp": 1642943280376, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/spot/variables.tf", + "/examples/vm-scale-set/windows/spot/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT212", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT212", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "eviction_policy": "Delete", + "priority": "Spot", + "max_bid_price": 0.5, + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT213 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT213 new file mode 100644 index 0000000..6271929 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT213 @@ -0,0 +1,135 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/system-assigned-identity/variables.tf", + "/examples/vm-scale-set/windows/system-assigned-identity/main.tf" + ], + "timestamp": 1642943280380, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/system-assigned-identity/variables.tf", + "/examples/vm-scale-set/windows/system-assigned-identity/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT213", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT213", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "output": [ + { + "vmss_principal_id": { + "value": "${azurerm_windows_virtual_machine_scale_set.main.identity[0].principal_id}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT214 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT214 new file mode 100644 index 0000000..94a4764 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT214 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/user-assigned-identity/variables.tf", + "/examples/vm-scale-set/windows/user-assigned-identity/main.tf" + ], + "timestamp": 1642943280384, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/user-assigned-identity/variables.tf", + "/examples/vm-scale-set/windows/user-assigned-identity/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT214", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_user_assigned_identity" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT214", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_user_assigned_identity", + "name": "main", + "properties": { + "name": "${var.prefix}-vmssidentity", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "compiletime_identity": "azurerm_user_assigned_identity.main" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}-vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "identity": [ + { + "type": "UserAssigned", + "identity_ids": [ + "${azurerm_user_assigned_identity.main.id}" + ] + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT215 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT215 new file mode 100644 index 0000000..cf5491f --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT215 @@ -0,0 +1,130 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/vm-scale-set/windows/zones/variables.tf", + "/examples/vm-scale-set/windows/zones/main.tf" + ], + "timestamp": 1642943280388, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/vm-scale-set/windows/zones/variables.tf", + "/examples/vm-scale-set/windows/zones/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT215", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_windows_virtual_machine_scale_set", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT215", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_virtual_network", + "name": "main", + "properties": { + "name": "${var.prefix}-network", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "compiletime_identity": "azurerm_virtual_network.main" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.main.name}", + "virtual_network_name": "${azurerm_virtual_network.main.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_windows_virtual_machine_scale_set", + "name": "main", + "properties": { + "name": "${var.prefix}vmss", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "sku": "Standard_F2", + "instances": 3, + "admin_username": "adminuser", + "admin_password": "P@ssw0rd1234!", + "computer_name_prefix": "${var.prefix}", + "zones": [ + 1, + 2, + 3 + ], + "zone_balance": true, + "source_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2019-Datacenter", + "version": "latest" + } + ], + "network_interface": [ + { + "name": "example", + "primary": true, + "ip_configuration": [ + { + "name": "internal", + "primary": true, + "subnet_id": "${azurerm_subnet.internal.id}" + } + ] + } + ], + "os_disk": [ + { + "storage_account_type": "Standard_LRS", + "caching": "ReadWrite" + } + ], + "compiletime_identity": "azurerm_windows_virtual_machine_scale_set.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT216 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT216 new file mode 100644 index 0000000..49cb565 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT216 @@ -0,0 +1,111 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/web/static-site/main.tf" + ], + "timestamp": 1642943280392, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/web/static-site/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT216", + "status": "active", + "validate": true, + "resourceTypes": [ + "github_repository_file", + "azurerm_static_site", + "github_actions_secret", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT216", + "collection": "terraformtemplate", + "json": { + "locals": [ + { + "api_token_var": "AZURE_STATIC_WEB_APPS_API_TOKEN" + } + ], + "variable": [ + { + "github_token": {} + }, + { + "github_owner": {} + } + ], + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + }, + { + "github": { + "token": "${var.github_token}", + "owner": "${var.github_owner}" + } + } + ], + "output": [ + { + "hostname": { + "value": "${azurerm_static_site.test.default_host_name}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "test", + "properties": { + "name": "example", + "location": "west europe", + "compiletime_identity": "azurerm_resource_group.test" + } + }, + { + "type": "azurerm_static_site", + "name": "test", + "properties": { + "name": "example", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "compiletime_identity": "azurerm_static_site.test" + } + }, + { + "type": "github_actions_secret", + "name": "test", + "properties": { + "repository": "my-first-static-web-app", + "secret_name": "${local.api_token_var}", + "plaintext_value": "${azurerm_static_site.test.api_key}", + "compiletime_identity": "github_actions_secret.test" + } + }, + { + "type": "github_repository_file", + "name": "foo", + "properties": { + "repository": "my-first-static-web-app", + "branch": "main", + "file": ".github/workflows/azure-static-web-app.yml", + "content": "${templatefile(\"./azure-static-web-app.tpl\",,{'app_location': '/', 'api_location': 'api', 'output_location': '', 'api_token_var': '${local.api_token_var}'},)}", + "compiletime_identity": "github_repository_file.foo" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT217 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT217 new file mode 100644 index 0000000..330bd5e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT217 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/apimanagement/testdata/keyvaultcert.pfx" + ], + "timestamp": 1642943280396, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/apimanagement/testdata/keyvaultcert.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT217", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT217", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT218 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT218 new file mode 100644 index 0000000..4f0fb6c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT218 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/attestation/testdata/cert.pem" + ], + "timestamp": 1642943280399, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/attestation/testdata/cert.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT218", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT218", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT219 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT219 new file mode 100644 index 0000000..493c1eb --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT219 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/automation/testdata/automation_certificate_test.pfx" + ], + "timestamp": 1642943280402, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/automation/testdata/automation_certificate_test.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT219", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT219", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT22 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT22 new file mode 100644 index 0000000..dc6ad3e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT22 @@ -0,0 +1,136 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service-environment-v3/main.tf" + ], + "timestamp": 1642943279634, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service-environment-v3/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT22", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_environment_v3", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT22", + "collection": "terraformtemplate", + "json": { + "terraform": [ + { + "required_providers": [ + { + "azurerm": { + "version": ">=2.76.0" + }, + "random": { + "version": "3.1.0" + } + } + ] + } + ], + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "exampleRG1", + "location": "West Europe", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "example-vnet", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "example-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "Microsoft.Web.hostingEnvironments", + "service_delegation": [ + { + "name": "Microsoft.Web/hostingEnvironments", + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_app_service_environment_v3", + "name": "example", + "properties": { + "name": "example-asev3", + "resource_group_name": "${azurerm_resource_group.example.name}", + "subnet_id": "${azurerm_subnet.example.id}", + "internal_load_balancing_mode": "Web, Publishing", + "cluster_setting": [ + { + "name": "DisableTls1.0", + "value": 1 + }, + { + "name": "InternalEncryption", + "value": true + }, + { + "name": "FrontEndSSLCipherSuiteOrder", + "value": "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" + } + ], + "tags": { + "env": "production", + "terraformed": true + }, + "compiletime_identity": "azurerm_app_service_environment_v3.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT220 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT220 new file mode 100644 index 0000000..ec69578 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT220 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/batch/testdata/batch_certificate_password.pfx" + ], + "timestamp": 1642943280405, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/batch/testdata/batch_certificate_password.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT220", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT220", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT221 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT221 new file mode 100644 index 0000000..da0c89e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT221 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/datalake/testdata/application_gateway_test.cer" + ], + "timestamp": 1642943280408, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/datalake/testdata/application_gateway_test.cer" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT221", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT221", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT222 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT222 new file mode 100644 index 0000000..770364a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT222 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/datashare/testdata/application_gateway_test.cer" + ], + "timestamp": 1642943280411, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/datashare/testdata/application_gateway_test.cer" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT222", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT222", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT223 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT223 new file mode 100644 index 0000000..e70e661 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT223 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/firewall/testdata/key.pem" + ], + "timestamp": 1642943280414, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/firewall/testdata/key.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT223", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT223", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT224 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT224 new file mode 100644 index 0000000..9286bd4 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT224 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/iothub/testdata/batch_certificate.cer" + ], + "timestamp": 1642943280417, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/iothub/testdata/batch_certificate.cer" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT224", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT224", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT225 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT225 new file mode 100644 index 0000000..0f3ef42 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT225 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/keyvault/testdata/rsa_single.pem" + ], + "timestamp": 1642943280421, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/keyvault/testdata/rsa_single.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT225", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT225", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT226 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT226 new file mode 100644 index 0000000..cde60da --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT226 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/machinelearning/testdata/key.pem" + ], + "timestamp": 1642943280424, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/machinelearning/testdata/key.pem" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT226", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT226", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT227 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT227 new file mode 100644 index 0000000..eb59671 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT227 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/network/testdata/app_service_certificate.pfx" + ], + "timestamp": 1642943280427, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/network/testdata/app_service_certificate.pfx" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT227", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT227", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT228 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT228 new file mode 100644 index 0000000..39a5f2b --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT228 @@ -0,0 +1,30 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/tmp/tmp10529ea4/internal/services/web/testdata/app_service_public_certificate.cer" + ], + "timestamp": 1642943280430, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "common", + "collection": "terraformtemplate", + "paths": [ + "/tmp/tmp10529ea4/internal/services/web/testdata/app_service_public_certificate.cer" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT228", + "status": "active", + "validate": true, + "resourceTypes": [ + "sensitive_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT228", + "collection": "terraformtemplate", + "json": {} +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT23 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT23 new file mode 100644 index 0000000..5185c4d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT23 @@ -0,0 +1,128 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/automation-account/outputs.tf", + "/examples/automation-account/variables.tf", + "/examples/automation-account/main.tf" + ], + "timestamp": 1642943279636, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/automation-account/outputs.tf", + "/examples/automation-account/variables.tf", + "/examples/automation-account/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT23", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_automation_job_schedule", + "azurerm_automation_runbook", + "azurerm_resource_group", + "azurerm_automation_account", + "azurerm_automation_schedule" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT23", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_automation_account", + "name": "example", + "properties": { + "name": "${var.prefix}-autoacc", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": [ + { + "name": "Basic" + } + ], + "compiletime_identity": "azurerm_automation_account.example" + } + }, + { + "type": "azurerm_automation_runbook", + "name": "example", + "properties": { + "name": "Get-AzureVMTutorial", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_automation_account.example.name}", + "log_verbose": true, + "log_progress": true, + "description": "This is an example runbook", + "runbook_type": "PowerShellWorkflow", + "publish_content_link": [ + { + "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/c4935ffb69246a6058eb24f54640f53f69d3ac9f/101-automation-runbook-getvms/Runbooks/Get-AzureVMTutorial.ps1" + } + ], + "compiletime_identity": "azurerm_automation_runbook.example" + } + }, + { + "type": "azurerm_automation_schedule", + "name": "one-time", + "properties": { + "name": "${var.prefix}-one-time", + "resource_group_name": "${azurerm_resource_group.example.name}", + "automation_account_name": "${azurerm_automation_account.example.name}", + "frequency": "OneTime", + "compiletime_identity": "azurerm_automation_schedule.one-time" + } + }, + { + "type": "azurerm_automation_schedule", + "name": "hour", + "properties": { + "name": "${var.prefix}-hour", + "resource_group_name": "${azurerm_resource_group.example.name}", + "automation_account_name": "${azurerm_automation_account.example.name}", + "frequency": "Hour", + "interval": 2, + "compiletime_identity": "azurerm_automation_schedule.hour" + } + }, + { + "type": "azurerm_automation_job_schedule", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "automation_account_name": "${azurerm_automation_account.example.name}", + "runbook_name": "${azurerm_automation_runbook.example.name}", + "schedule_name": "${azurerm_automation_schedule.hour.name}", + "compiletime_identity": "azurerm_automation_job_schedule.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT24 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT24 new file mode 100644 index 0000000..11216be --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT24 @@ -0,0 +1,109 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/azure-monitoring/eventhub_integration/main.tf" + ], + "timestamp": 1642943279639, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/azure-monitoring/eventhub_integration/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT24", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventhub_namespace", + "azurerm_resource_group", + "azurerm_eventhub_namespace_authorization_rule", + "azurerm_eventhub", + "azurerm_monitor_diagnostic_setting" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT24", + "collection": "terraformtemplate", + "json": { + "data": { + "azurerm_kusto_cluster": { + "example": { + "name": "examplekustocluster", + "resource_group_name": "example_rg_kusto_cluster", + "compiletime_identity": "data.azurerm_kusto_cluster.example" + } + }, + "azurerm_monitor_diagnostic_categories": { + "example": { + "resource_id": "${data.azurerm_kusto_cluster.example.id}" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "example_rg_eventhub", + "location": "West Europe", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_eventhub_namespace", + "name": "example", + "properties": { + "name": "exampleEventhubns", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "compiletime_identity": "azurerm_eventhub_namespace.example" + } + }, + { + "type": "azurerm_eventhub", + "name": "example", + "properties": { + "name": "example_eventhub", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "partition_count": 2, + "message_retention": 1, + "compiletime_identity": "azurerm_eventhub.example" + } + }, + { + "type": "azurerm_eventhub_namespace_authorization_rule", + "name": "example", + "properties": { + "name": "example_eventhubns_auth_rule", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "listen": true, + "send": true, + "manage": true, + "compiletime_identity": "azurerm_eventhub_namespace_authorization_rule.example" + } + }, + { + "type": "azurerm_monitor_diagnostic_setting", + "name": "example", + "properties": { + "name": "example_monitor_diag_setting", + "target_resource_id": "${data.azurerm_kusto_cluster.example.id}", + "eventhub_name": "${azurerm_eventhub.example.name}", + "eventhub_authorization_rule_id": "${azurerm_eventhub_namespace_authorization_rule.example.id}", + "log": [], + "metric": [], + "compiletime_identity": "azurerm_monitor_diagnostic_setting.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT25 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT25 new file mode 100644 index 0000000..edae3e6 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT25 @@ -0,0 +1,187 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/azure-monitoring/redis-cache-monitor/variables.tf", + "/examples/azure-monitoring/redis-cache-monitor/main.tf" + ], + "timestamp": 1642943279642, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/azure-monitoring/redis-cache-monitor/variables.tf", + "/examples/azure-monitoring/redis-cache-monitor/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT25", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_monitor_action_group", + "azurerm_monitor_metric_alert", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT25", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "version": "=2.0.0", + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "example_rg_rediscache", + "location": "east us", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_monitor_action_group", + "name": "main", + "properties": { + "name": "example-actiongroup", + "resource_group_name": "${azurerm_resource_group.main.name}", + "short_name": "exampleact", + "email_receiver": [ + { + "name": "ishantdevops", + "email_address": "devops@example.com", + "use_common_alert_schema": true + } + ], + "webhook_receiver": [ + { + "name": "callmyapi", + "service_uri": "http://example.com/alert" + } + ], + "compiletime_identity": "azurerm_monitor_action_group.main" + } + }, + { + "type": "azurerm_monitor_metric_alert", + "name": "cache_hit_alert", + "properties": { + "name": " - Cache Hits Alert", + "resource_group_name": "", + "scopes": [ + "/subscriptions//resourceGroups//providers/Microsoft.Cache/Redis/" + ], + "description": " Cache Hits Alert", + "criteria": [ + { + "metric_namespace": "Microsoft.Cache/redis", + "metric_name": "cachehits", + "aggregation": "Total", + "operator": "GreaterThan", + "threshold": 5000 + } + ], + "action": [ + { + "action_group_id": "${azurerm_monitor_action_group.main.id}" + } + ], + "compiletime_identity": "azurerm_monitor_metric_alert.cache_hit_alert" + } + }, + { + "type": "azurerm_monitor_metric_alert", + "name": "cache_miss_alert", + "properties": { + "name": " - Cache Miss Alert", + "resource_group_name": "", + "scopes": [ + "/subscriptions//resourceGroups//providers/Microsoft.Cache/Redis/" + ], + "description": " - Cache Miss Alert", + "criteria": [ + { + "metric_namespace": "Microsoft.Cache/redis", + "metric_name": "cachemisses", + "aggregation": "Total", + "operator": "GreaterThan", + "threshold": 5000 + } + ], + "action": [ + { + "action_group_id": "${azurerm_monitor_action_group.main.id}" + } + ], + "compiletime_identity": "azurerm_monitor_metric_alert.cache_miss_alert" + } + }, + { + "type": "azurerm_monitor_metric_alert", + "name": "cache_connected_clients", + "properties": { + "name": " - Cache Connected Clients", + "resource_group_name": "", + "scopes": [ + "/subscriptions//resourceGroups//providers/Microsoft.Cache/Redis/" + ], + "description": " - Cache Connected Clients", + "criteria": [ + { + "metric_namespace": "Microsoft.Cache/redis", + "metric_name": "connectedclients", + "aggregation": "Total", + "operator": "GreaterThan", + "threshold": 5000 + } + ], + "action": [ + { + "action_group_id": "${azurerm_monitor_action_group.main.id}" + } + ], + "compiletime_identity": "azurerm_monitor_metric_alert.cache_connected_clients" + } + }, + { + "type": "azurerm_monitor_metric_alert", + "name": "cache_cpu", + "properties": { + "name": " - Cache CPU", + "resource_group_name": "", + "scopes": [ + "/subscriptions//resourceGroups//providers/Microsoft.Cache/Redis/" + ], + "description": " - Cache CPU", + "criteria": [ + { + "metric_namespace": "Microsoft.Cache/redis", + "metric_name": "percentProcessorTime", + "aggregation": "Total", + "operator": "GreaterThan", + "threshold": 50 + } + ], + "action": [ + { + "action_group_id": "${azurerm_monitor_action_group.main.id}" + } + ], + "compiletime_identity": "azurerm_monitor_metric_alert.cache_cpu" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT26 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT26 new file mode 100644 index 0000000..d904938 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT26 @@ -0,0 +1,156 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/batch/basic/variables.tf", + "/examples/batch/basic/main.tf" + ], + "timestamp": 1642943279645, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/batch/basic/variables.tf", + "/examples/batch/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT26", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_batch_account", + "azurerm_resource_group", + "azurerm_batch_pool" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT26", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}stor", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_batch_account", + "name": "example", + "properties": { + "name": "${var.prefix}batch", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "storage_account_id": "${azurerm_storage_account.example.id}", + "compiletime_identity": "azurerm_batch_account.example" + } + }, + { + "type": "azurerm_batch_pool", + "name": "fixed", + "properties": { + "name": "${var.prefix}-fixed-pool", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_batch_account.example.name}", + "display_name": "Fixed Scale Pool", + "vm_size": "Standard_A1", + "node_agent_sku_id": "batch.node.ubuntu 16.04", + "fixed_scale": [ + { + "target_dedicated_nodes": 2, + "resize_timeout": "PT15M" + } + ], + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + } + ], + "start_task": [ + { + "command_line": "echo 'Hello World from $env'", + "max_task_retry_count": 1, + "wait_for_success": true, + "environment": { + "env": "TEST" + }, + "user_identity": [ + { + "auto_user": [ + { + "elevation_level": "NonAdmin", + "scope": "Task" + } + ] + } + ] + } + ], + "metadata": { + "tagName": "Example tag" + }, + "compiletime_identity": "azurerm_batch_pool.fixed" + } + }, + { + "type": "azurerm_batch_pool", + "name": "autopool", + "properties": { + "name": "${var.prefix}-autoscale-pool", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_batch_account.example.name}", + "display_name": "Auto Scale Pool", + "vm_size": "Standard_A1", + "node_agent_sku_id": "batch.node.ubuntu 16.04", + "auto_scale": [ + { + "evaluation_interval": "PT15M", + "formula": " startingNumberOfVMs = 1;\n maxNumberofVMs = 25;\n pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second);\n pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second));\n $TargetDedicatedNodes=min(maxNumberofVMs, pendingTaskSamples);" + } + ], + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + } + ], + "compiletime_identity": "azurerm_batch_pool.autopool" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT27 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT27 new file mode 100644 index 0000000..e0a4443 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT27 @@ -0,0 +1,248 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/batch/custom-image/variables.tf", + "/examples/batch/custom-image/main.tf" + ], + "timestamp": 1642943279649, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/batch/custom-image/variables.tf", + "/examples/batch/custom-image/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT27", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_batch_account", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_batch_pool", + "azurerm_storage_container", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_storage_account", + "azurerm_image" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT27", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "batch-custom-img-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "batch-custom-img-ip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "domain_name_label": "batch-custom-img", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "batch-custom-img-nic", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "exampleconfigurationsource", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "batchcustomimgstore", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "tags": { + "environment": "Dev" + }, + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_container", + "name": "example", + "properties": { + "name": "vhds", + "storage_account_name": "${azurerm_storage_account.example.name}", + "container_access_type": "blob", + "compiletime_identity": "azurerm_storage_container.example" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "batch-custom-img-vm", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_D1_v2", + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "myosdisk1", + "vhd_uri": "${azurerm_storage_account.example.primary_blob_endpoint}${azurerm_storage_container.example.name}/myosdisk1.vhd", + "caching": "ReadWrite", + "create_option": "FromImage", + "disk_size_gb": 30 + } + ], + "os_profile": [ + { + "computer_name": "batch-custom-img-vm", + "admin_username": "tfuser", + "admin_password": "P@ssW0RD7890" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "tags": { + "environment": "Dev", + "cost-center": "Ops" + }, + "compiletime_identity": "azurerm_virtual_machine.example" + } + }, + { + "type": "azurerm_image", + "name": "example", + "properties": { + "name": "batch-custom-img", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "os_disk": [ + { + "os_type": "Linux", + "os_state": "Generalized", + "blob_uri": "${azurerm_virtual_machine.example.storage_os_disk[0].vhd_uri}", + "size_gb": 30, + "caching": null + } + ], + "tags": { + "environment": "Dev", + "cost-center": "Ops" + }, + "compiletime_identity": "azurerm_image.example" + } + }, + { + "type": "azurerm_batch_account", + "name": "example", + "properties": { + "name": "${var.prefix}batch", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "compiletime_identity": "azurerm_batch_account.example" + } + }, + { + "type": "azurerm_batch_pool", + "name": "example", + "properties": { + "name": "${var.prefix}-custom-img-pool", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_batch_account.example.name}", + "display_name": "Custom Img Pool", + "vm_size": "Standard_A1", + "node_agent_sku_id": "batch.node.ubuntu 16.04", + "fixed_scale": [ + { + "target_dedicated_nodes": 2, + "resize_timeout": "PT15M" + } + ], + "storage_image_reference": [ + { + "id": "${azurerm_image.example.id}" + } + ], + "compiletime_identity": "azurerm_batch_pool.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT28 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT28 new file mode 100644 index 0000000..11165df --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT28 @@ -0,0 +1,97 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/bot-channel/variables.tf", + "/examples/bot-channel/main.tf" + ], + "timestamp": 1642943279652, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/bot-channel/variables.tf", + "/examples/bot-channel/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT28", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_bot_channels_registration", + "azurerm_resource_group", + "azurerm_bot_channel_directline" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT28", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_bot_channels_registration", + "name": "example", + "properties": { + "name": "${var.prefix}-registration", + "location": "global", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "F0", + "microsoft_app_id": "${data.azurerm_client_config.current.client_id}", + "compiletime_identity": "azurerm_bot_channels_registration.example" + } + }, + { + "type": "azurerm_bot_channel_directline", + "name": "example", + "properties": { + "bot_name": "${azurerm_bot_channels_registration.example.name}", + "location": "${azurerm_bot_channels_registration.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "site": [ + { + "name": "Default Site", + "enabled": true + } + ], + "lifecycle": [ + { + "ignore_changes": [ + "site" + ] + } + ], + "compiletime_identity": "azurerm_bot_channel_directline.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT29 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT29 new file mode 100644 index 0000000..faee47a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT29 @@ -0,0 +1,100 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/cdn/outputs.tf", + "/examples/cdn/variables.tf", + "/examples/cdn/main.tf" + ], + "timestamp": 1642943279655, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cdn/outputs.tf", + "/examples/cdn/variables.tf", + "/examples/cdn/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT29", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_resource_group", + "azurerm_cdn_endpoint", + "azurerm_cdn_profile" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT29", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "stor", + "properties": { + "name": "${var.prefix}stor", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.stor" + } + }, + { + "type": "azurerm_cdn_profile", + "name": "example", + "properties": { + "name": "${var.prefix}-cdn", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard_Akamai", + "compiletime_identity": "azurerm_cdn_profile.example" + } + }, + { + "type": "azurerm_cdn_endpoint", + "name": "example", + "properties": { + "name": "${var.prefix}-cdn", + "profile_name": "${azurerm_cdn_profile.example.name}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "origin": [ + { + "name": "${var.prefix}origin1", + "host_name": "www.contoso.com", + "http_port": 80, + "https_port": 443 + } + ], + "compiletime_identity": "azurerm_cdn_endpoint.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT3 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT3 new file mode 100644 index 0000000..a28d64d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT3 @@ -0,0 +1,122 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/docker-authentication/outputs.tf", + "/examples/app-service/docker-authentication/variables.tf", + "/examples/app-service/docker-authentication/main.tf" + ], + "timestamp": 1642943279566, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/docker-authentication/outputs.tf", + "/examples/app-service/docker-authentication/variables.tf", + "/examples/app-service/docker-authentication/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT3", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT3", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "kind": "Linux", + "reserved": true, + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "app_command_line": "", + "linux_fx_version": "DOCKER|appsvcsample/python-helloworld:latest" + } + ], + "app_settings": { + "WEBSITES_ENABLE_APP_SERVICE_STORAGE": false, + "DOCKER_REGISTRY_SERVER_URL": "https://index.docker.io" + }, + "auth_settings": [ + { + "enabled": true, + "issuer": "https://sts.windows.net/d13958f6-b541-4dad-97b9-5a39c6b01297", + "default_provider": "AzureActiveDirectory", + "unauthenticated_client_action": "RedirectToLoginPage", + "active_directory": [ + { + "client_id": "aadclientid", + "client_secret": "aadsecret", + "allowed_audiences": [ + "someallowedaudience" + ] + } + ], + "microsoft": [ + { + "client_id": "microsoftclientid", + "client_secret": "microsoftclientsecret", + "oauth_scopes": [ + "somescope" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT30 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT30 new file mode 100644 index 0000000..8410ed3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT30 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/container-instance/image-registry-credentials/variables.tf", + "/examples/container-instance/image-registry-credentials/main.tf" + ], + "timestamp": 1642943279659, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-instance/image-registry-credentials/variables.tf", + "/examples/container-instance/image-registry-credentials/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT30", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_container_group", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT30", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_container_group", + "name": "example", + "properties": { + "name": "${var.prefix}-continst", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_address_type": "public", + "os_type": "linux", + "image_registry_credential": [ + { + "server": "hub.docker.com", + "username": "yourusername1", + "password": "yourpassword" + }, + { + "server": "2hub.docker.com", + "username": "2yourusername1", + "password": "2yourpassword" + } + ], + "container": [ + { + "name": "hw", + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "cpu": 0.5, + "memory": 1.5, + "ports": [ + { + "port": 80, + "protocol": "TCP" + } + ] + }, + { + "name": "sidecar", + "image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar", + "cpu": 0.5, + "memory": 1.5 + } + ], + "tags": { + "environment": "testing" + }, + "compiletime_identity": "azurerm_container_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT31 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT31 new file mode 100644 index 0000000..e342e08 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT31 @@ -0,0 +1,92 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/container-instance/multiple-containers/outputs.tf", + "/examples/container-instance/multiple-containers/variables.tf", + "/examples/container-instance/multiple-containers/main.tf" + ], + "timestamp": 1642943279662, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-instance/multiple-containers/outputs.tf", + "/examples/container-instance/multiple-containers/variables.tf", + "/examples/container-instance/multiple-containers/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT31", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_container_group", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT31", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_container_group", + "name": "example", + "properties": { + "name": "${var.prefix}-examplecont", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_address_type": "public", + "dns_name_label": "${var.prefix}-examplecont", + "os_type": "linux", + "container": [ + { + "name": "hw", + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "cpu": 0.5, + "memory": 1.5, + "ports": [ + { + "port": 80, + "protocol": "TCP" + } + ] + }, + { + "name": "sidecar", + "image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar", + "cpu": 0.5, + "memory": 1.5 + } + ], + "tags": { + "environment": "testing" + }, + "compiletime_identity": "azurerm_container_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT32 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT32 new file mode 100644 index 0000000..b772be3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT32 @@ -0,0 +1,154 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/container-instance/network-profile/variables.tf", + "/examples/container-instance/network-profile/main.tf" + ], + "timestamp": 1642943279666, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-instance/network-profile/variables.tf", + "/examples/container-instance/network-profile/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT32", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_container_group", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_profile" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT32", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}vnet", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.1.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.1.0.0/24" + ], + "delegation": [ + { + "name": "delegation", + "service_delegation": [ + { + "name": "Microsoft.ContainerInstance/containerGroups", + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_profile", + "name": "example", + "properties": { + "name": "${var.prefix}networkprofile", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "container_network_interface": [ + { + "name": "hellocnic", + "ip_configuration": [ + { + "name": "helloipconfig", + "subnet_id": "${azurerm_subnet.example.id}" + } + ] + } + ], + "compiletime_identity": "azurerm_network_profile.example" + } + }, + { + "type": "azurerm_container_group", + "name": "example", + "properties": { + "name": "${var.prefix}continst", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_address_type": "Private", + "network_profile_id": "${azurerm_network_profile.example.id}", + "os_type": "Linux", + "restart_policy": "Never", + "container": [ + { + "name": "hello-world", + "image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest", + "cpu": 0.5, + "memory": 1.5, + "ports": [ + { + "port": 443, + "protocol": "TCP" + } + ] + }, + { + "name": "sidecar", + "image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar", + "cpu": 0.5, + "memory": 1.5 + } + ], + "tags": { + "environment": "testing" + }, + "compiletime_identity": "azurerm_container_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT33 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT33 new file mode 100644 index 0000000..049892f --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT33 @@ -0,0 +1,120 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/container-instance/volume-mount/outputs.tf", + "/examples/container-instance/volume-mount/variables.tf", + "/examples/container-instance/volume-mount/main.tf" + ], + "timestamp": 1642943279670, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-instance/volume-mount/outputs.tf", + "/examples/container-instance/volume-mount/variables.tf", + "/examples/container-instance/volume-mount/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT33", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_container_group", + "azurerm_storage_account", + "azurerm_resource_group", + "azurerm_storage_share" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT33", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}stor", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_share", + "name": "example", + "properties": { + "name": "aci-test-share", + "storage_account_name": "${azurerm_storage_account.example.name}", + "quota": 50, + "compiletime_identity": "azurerm_storage_share.example" + } + }, + { + "type": "azurerm_container_group", + "name": "example", + "properties": { + "name": "${var.prefix}-continst", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_address_type": "public", + "dns_name_label": "${var.prefix}-continst", + "os_type": "linux", + "container": [ + { + "name": "webserver", + "image": "seanmckenna/aci-hellofiles", + "cpu": 1, + "memory": 1.5, + "ports": [ + { + "port": 80, + "protocol": "TCP" + } + ], + "volume": [ + { + "name": "logs", + "mount_path": "/aci/logs", + "read_only": false, + "share_name": "${azurerm_storage_share.example.name}", + "storage_account_name": "${azurerm_storage_account.example.name}", + "storage_account_key": "${azurerm_storage_account.example.primary_access_key}" + } + ] + } + ], + "tags": { + "environment": "testing" + }, + "compiletime_identity": "azurerm_container_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT34 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT34 new file mode 100644 index 0000000..1151229 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT34 @@ -0,0 +1,67 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/container-registry/outputs.tf", + "/examples/container-registry/variables.tf", + "/examples/container-registry/main.tf" + ], + "timestamp": 1642943279673, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/container-registry/outputs.tf", + "/examples/container-registry/variables.tf", + "/examples/container-registry/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT34", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_container_registry" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT34", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_container_registry", + "name": "example", + "properties": { + "name": "${var.prefix}registry", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "Standard", + "compiletime_identity": "azurerm_container_registry.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT35 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT35 new file mode 100644 index 0000000..3a6feec --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT35 @@ -0,0 +1,82 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/cosmos-db/basic/outputs.tf", + "/examples/cosmos-db/basic/variables.tf", + "/examples/cosmos-db/basic/main.tf" + ], + "timestamp": 1642943279676, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cosmos-db/basic/outputs.tf", + "/examples/cosmos-db/basic/variables.tf", + "/examples/cosmos-db/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT35", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_cosmosdb_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT35", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_cosmosdb_account", + "name": "example", + "properties": { + "name": "${var.prefix}-cosmosdb", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "offer_type": "Standard", + "kind": "GlobalDocumentDB", + "consistency_policy": [ + { + "consistency_level": "BoundedStaleness", + "max_interval_in_seconds": 10, + "max_staleness_prefix": 200 + } + ], + "geo_location": [ + { + "prefix": "${var.prefix}-customid", + "location": "${azurerm_resource_group.example.location}", + "failover_priority": 0 + } + ], + "compiletime_identity": "azurerm_cosmosdb_account.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT36 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT36 new file mode 100644 index 0000000..32162ac --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT36 @@ -0,0 +1,148 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/cosmos-db/customer-managed-key/outputs.tf", + "/examples/cosmos-db/customer-managed-key/variables.tf", + "/examples/cosmos-db/customer-managed-key/main.tf" + ], + "timestamp": 1642943279681, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cosmos-db/customer-managed-key/outputs.tf", + "/examples/cosmos-db/customer-managed-key/variables.tf", + "/examples/cosmos-db/customer-managed-key/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT36", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_key", + "azurerm_cosmosdb_account", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT36", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azuread_service_principal": { + "cosmosdb": { + "display_name": "Azure Cosmos DB", + "compiletime_identity": "data.azuread_service_principal.cosmosdb" + } + }, + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_key_vault", + "name": "example", + "properties": { + "name": "${var.prefix}kv", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "premium", + "purge_protection_enabled": true, + "access_policy": [ + { + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "key_permissions": [ + "list", + "create", + "delete", + "get", + "update" + ] + }, + { + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azuread_service_principal.cosmosdb.id}", + "key_permissions": [ + "get", + "unwrapKey", + "wrapKey" + ] + } + ], + "compiletime_identity": "azurerm_key_vault.example" + } + }, + { + "type": "azurerm_key_vault_key", + "name": "example", + "properties": { + "name": "${var.prefix}key", + "key_vault_id": "${azurerm_key_vault.example.id}", + "key_type": "RSA", + "key_size": 3072, + "key_opts": [ + "decrypt", + "encrypt", + "wrapKey", + "unwrapKey" + ], + "compiletime_identity": "azurerm_key_vault_key.example" + } + }, + { + "type": "azurerm_cosmosdb_account", + "name": "example", + "properties": { + "name": "${var.prefix}-cosmosdb", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "offer_type": "Standard", + "kind": "MongoDB", + "key_vault_key_id": "${azurerm_key_vault_key.example.id}", + "consistency_policy": [ + { + "consistency_level": "Strong" + } + ], + "geo_location": [ + { + "prefix": "${var.prefix}-customid", + "location": "${azurerm_resource_group.example.location}", + "failover_priority": 0 + } + ], + "compiletime_identity": "azurerm_cosmosdb_account.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT37 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT37 new file mode 100644 index 0000000..6854fcc --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT37 @@ -0,0 +1,88 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/cosmos-db/failover/outputs.tf", + "/examples/cosmos-db/failover/variables.tf", + "/examples/cosmos-db/failover/main.tf" + ], + "timestamp": 1642943279684, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/cosmos-db/failover/outputs.tf", + "/examples/cosmos-db/failover/variables.tf", + "/examples/cosmos-db/failover/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT37", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_cosmosdb_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT37", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_cosmosdb_account", + "name": "example", + "properties": { + "name": "${var.prefix}-cosmosdb", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "offer_type": "Standard", + "kind": "GlobalDocumentDB", + "enable_automatic_failover": true, + "ip_range_filter": "0.0.0.0,104.42.195.92,40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26", + "consistency_policy": [ + { + "consistency_level": "BoundedStaleness", + "max_interval_in_seconds": 10, + "max_staleness_prefix": 200 + } + ], + "geo_location": [ + { + "prefix": "${var.prefix}-customid", + "location": "${azurerm_resource_group.example.location}", + "failover_priority": 2 + }, + { + "location": "${var.alt_location}", + "failover_priority": 0 + } + ], + "compiletime_identity": "azurerm_cosmosdb_account.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT38 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT38 new file mode 100644 index 0000000..df0cb9c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT38 @@ -0,0 +1,432 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/data-factory/shared-self-hosted/variables.tf", + "/examples/data-factory/shared-self-hosted/main.tf" + ], + "timestamp": 1642943279687, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/data-factory/shared-self-hosted/variables.tf", + "/examples/data-factory/shared-self-hosted/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT38", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_data_factory_integration_runtime_self_hosted", + "azurerm_mssql_virtual_machine", + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_subnet_network_security_group_association", + "azurerm_network_interface", + "azurerm_role_assignment", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_network_security_group", + "azurerm_network_interface_security_group_association", + "azurerm_data_factory", + "azurerm_virtual_machine_extension" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT38", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_resource_group", + "name": "host", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.host" + } + }, + { + "type": "azurerm_resource_group", + "name": "target", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.target" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-VN", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "test", + "properties": { + "name": "${var.prefix}-VN", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.test" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-SN", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.0.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_subnet", + "name": "test", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.test.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "compiletime_identity": "azurerm_subnet.test" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "example", + "properties": { + "subnet_id": "${azurerm_subnet.example.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "vm", + "properties": { + "name": "${var.prefix}-PIP", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.vm" + } + }, + { + "type": "azurerm_public_ip", + "name": "test", + "properties": { + "name": "${var.prefix}-PIP", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.test" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-NSG", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "RDPRule", + "properties": { + "name": "RDPRule", + "resource_group_name": "${azurerm_resource_group.example.name}", + "priority": 1000, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 3389, + "source_address_prefix": "167.220.255.0/25", + "destination_address_prefix": "*", + "network_security_group_name": "${azurerm_network_security_group.example.name}", + "compiletime_identity": "azurerm_network_security_rule.RDPRule" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "MSSQLRule", + "properties": { + "name": "MSSQLRule", + "resource_group_name": "${azurerm_resource_group.example.name}", + "priority": 1001, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 1433, + "source_address_prefix": "167.220.255.0/25", + "destination_address_prefix": "*", + "network_security_group_name": "${azurerm_network_security_group.example.name}", + "compiletime_identity": "azurerm_network_security_rule.MSSQLRule" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-NIC", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "exampleconfiguration1", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.vm.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_network_interface", + "name": "test", + "properties": { + "name": "${var.prefix}-INT", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "internal", + "subnet_id": "${azurerm_subnet.test.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.test.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.test" + } + }, + { + "type": "azurerm_network_interface_security_group_association", + "name": "example", + "properties": { + "network_interface_id": "${azurerm_network_interface.example.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_network_interface_security_group_association.example" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}-VM", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_DS14_v2", + "storage_image_reference": [ + { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2017-WS2016", + "sku": "SQLDEV", + "version": "laexample" + } + ], + "storage_os_disk": [ + { + "name": "${var.prefix}-OSDisk", + "caching": "ReadOnly", + "create_option": "FromImage", + "managed_disk_type": "Premium_LRS" + } + ], + "os_profile": [ + { + "computer_name": "winhost01", + "admin_username": "exampleadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_windows_config": [ + { + "timezone": "Pacific Standard Time", + "provision_vm_agent": true, + "enable_automatic_upgrades": true + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "test", + "properties": { + "name": "${var.prefix}-VM", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.test.id}" + ], + "vm_size": "Standard_F4", + "storage_image_reference": [ + { + "publisher": "MicrosoftWindowsServer", + "offer": "WindowsServer", + "sku": "2016-Datacenter", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "myosdisk1", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "${var.prefix}-VM", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_windows_config": [ + { + "timezone": "Pacific Standard Time", + "provision_vm_agent": true + } + ], + "compiletime_identity": "azurerm_virtual_machine.test" + } + }, + { + "type": "azurerm_mssql_virtual_machine", + "name": "example", + "properties": { + "virtual_machine_id": "${azurerm_virtual_machine.example.id}", + "sql_license_type": "PAYG", + "compiletime_identity": "azurerm_mssql_virtual_machine.example" + } + }, + { + "type": "azurerm_virtual_machine_extension", + "name": "test", + "properties": { + "name": "${var.prefix}-EXT", + "virtual_machine_id": "${azurerm_virtual_machine.test.id}", + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "type_handler_version": 1.1, + "settings": "${jsonencode({'fileUris': ['https://raw.githubusercontent.com/Azure/azure-quickstart-templates/00b79d2102c88b56502a63041936ef4dd62cf725/101-vms-with-selfhost-integration-runtime/gatewayInstall.ps1'], 'commandToExecute': 'powershell -ExecutionPolicy Unrestricted -File gatewayInstall.ps1 ${azurerm_data_factory_integration_runtime_self_hosted.host.auth_key_1} && timeout /t 120'})}", + "compiletime_identity": "azurerm_virtual_machine_extension.test" + } + }, + { + "type": "azurerm_data_factory", + "name": "host", + "properties": { + "name": "${var.prefix}DFHOST", + "location": "${azurerm_resource_group.host.location}", + "resource_group_name": "${azurerm_resource_group.host.name}", + "compiletime_identity": "azurerm_data_factory.host" + } + }, + { + "type": "azurerm_data_factory", + "name": "target", + "properties": { + "name": "${var.prefix}DFTGT", + "location": "${azurerm_resource_group.target.location}", + "resource_group_name": "${azurerm_resource_group.target.name}", + "identity": [ + { + "type": "SystemAssigned" + } + ], + "compiletime_identity": "azurerm_data_factory.target" + } + }, + { + "type": "azurerm_data_factory_integration_runtime_self_hosted", + "name": "host", + "properties": { + "name": "${var.prefix}IRHOST", + "data_factory_name": "${azurerm_data_factory.host.name}", + "resource_group_name": "${azurerm_resource_group.host.name}", + "compiletime_identity": "azurerm_data_factory_integration_runtime_self_hosted.host" + } + }, + { + "type": "azurerm_data_factory_integration_runtime_self_hosted", + "name": "target", + "properties": { + "name": "${var.prefix}IRTGT", + "data_factory_name": "${azurerm_data_factory.target.name}", + "resource_group_name": "${azurerm_resource_group.target.name}", + "rbac_authorization": [ + { + "resource_id": "${azurerm_data_factory_integration_runtime_self_hosted.host.id}" + } + ], + "depends_on": [ + "${azurerm_role_assignment.target}", + "${azurerm_virtual_machine_extension.test}" + ], + "compiletime_identity": "azurerm_data_factory_integration_runtime_self_hosted.target" + } + }, + { + "type": "azurerm_role_assignment", + "name": "target", + "properties": { + "scope": "${azurerm_data_factory.host.id}", + "role_definition_name": "Contributor", + "principal_id": "${azurerm_data_factory.target.identity[0].principal_id}", + "compiletime_identity": "azurerm_role_assignment.target" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT39 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT39 new file mode 100644 index 0000000..d5daab1 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT39 @@ -0,0 +1,173 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/databricks/customer-managed-key/dbfs/variables.tf", + "/examples/databricks/customer-managed-key/dbfs/main.tf" + ], + "timestamp": 1642943279692, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/databricks/customer-managed-key/dbfs/variables.tf", + "/examples/databricks/customer-managed-key/dbfs/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT39", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_key", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_key_vault_access_policy", + "azurerm_databricks_workspace_customer_managed_key" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT39", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-databricks-cmk", + "location": "West Europe", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_databricks_workspace", + "name": "example", + "properties": { + "name": "${var.prefix}-DBW", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "premium", + "managed_resource_group_name": "${var.prefix}-DBW-managed-dbfs", + "customer_managed_key_enabled": true, + "tags": { + "Environment": "Production" + }, + "compiletime_identity": "azurerm_databricks_workspace.example" + } + }, + { + "type": "azurerm_databricks_workspace_customer_managed_key", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_key_vault_access_policy.databricks}" + ], + "workspace_id": "${azurerm_databricks_workspace.example.id}", + "key_vault_key_id": "${azurerm_key_vault_key.example.id}", + "compiletime_identity": "azurerm_databricks_workspace_customer_managed_key.example" + } + }, + { + "type": "azurerm_key_vault", + "name": "example", + "properties": { + "name": "${var.prefix}-keyvault", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "premium", + "purge_protection_enabled": true, + "soft_delete_retention_days": 7, + "compiletime_identity": "azurerm_key_vault.example" + } + }, + { + "type": "azurerm_key_vault_key", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_key_vault_access_policy.terraform}" + ], + "name": "${var.prefix}-certificate", + "key_vault_id": "${azurerm_key_vault.example.id}", + "key_type": "RSA", + "key_size": 2048, + "key_opts": [ + "decrypt", + "encrypt", + "sign", + "unwrapKey", + "verify", + "wrapKey" + ], + "compiletime_identity": "azurerm_key_vault_key.example" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "terraform", + "properties": { + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_key_vault.example.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "key_permissions": [ + "get", + "list", + "create", + "decrypt", + "encrypt", + "sign", + "unwrapKey", + "verify", + "wrapKey", + "delete", + "restore", + "recover", + "update", + "purge" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.terraform" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "databricks", + "properties": { + "depends_on": [ + "${azurerm_databricks_workspace.example}" + ], + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_databricks_workspace.example.storage_account_identity[0].tenant_id}", + "object_id": "${azurerm_databricks_workspace.example.storage_account_identity[0].principal_id}", + "key_permissions": [ + "get", + "unwrapKey", + "wrapKey" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.databricks" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT4 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT4 new file mode 100644 index 0000000..ca328b7 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT4 @@ -0,0 +1,96 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/docker-basic/outputs.tf", + "/examples/app-service/docker-basic/variables.tf", + "/examples/app-service/docker-basic/main.tf" + ], + "timestamp": 1642943279577, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/docker-basic/outputs.tf", + "/examples/app-service/docker-basic/variables.tf", + "/examples/app-service/docker-basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT4", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT4", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "kind": "Linux", + "reserved": true, + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "app_command_line": "", + "linux_fx_version": "DOCKER|appsvcsample/python-helloworld:latest" + } + ], + "app_settings": { + "WEBSITES_ENABLE_APP_SERVICE_STORAGE": false, + "DOCKER_REGISTRY_SERVER_URL": "https://index.docker.io" + }, + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT40 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT40 new file mode 100644 index 0000000..297b932 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT40 @@ -0,0 +1,159 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/databricks/customer-managed-key/managed-services/variables.tf", + "/examples/databricks/customer-managed-key/managed-services/main.tf" + ], + "timestamp": 1642943279696, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/databricks/customer-managed-key/managed-services/variables.tf", + "/examples/databricks/customer-managed-key/managed-services/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT40", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_key_vault_key", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_key_vault_access_policy" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT40", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-databricks-managed-services", + "location": "West Europe", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_databricks_workspace", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_key_vault_access_policy.managed}" + ], + "name": "${var.prefix}-DBW", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "premium", + "managed_resource_group_name": "${var.prefix}-DBW-managed-services", + "managed_services_cmk_key_vault_key_id": "${azurerm_key_vault_key.example.id}", + "tags": { + "Environment": "Production" + }, + "compiletime_identity": "azurerm_databricks_workspace.example" + } + }, + { + "type": "azurerm_key_vault", + "name": "example", + "properties": { + "name": "${var.prefix}-keyvault", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "premium", + "soft_delete_retention_days": 7, + "compiletime_identity": "azurerm_key_vault.example" + } + }, + { + "type": "azurerm_key_vault_key", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_key_vault_access_policy.terraform}" + ], + "name": "${var.prefix}-certificate", + "key_vault_id": "${azurerm_key_vault.example.id}", + "key_type": "RSA", + "key_size": 2048, + "key_opts": [ + "decrypt", + "encrypt", + "sign", + "unwrapKey", + "verify", + "wrapKey" + ], + "compiletime_identity": "azurerm_key_vault_key.example" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "terraform", + "properties": { + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_key_vault.example.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "key_permissions": [ + "get", + "list", + "create", + "decrypt", + "encrypt", + "sign", + "unwrapKey", + "verify", + "wrapKey", + "delete", + "restore", + "recover", + "update", + "purge" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.terraform" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "managed", + "properties": { + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_key_vault.example.tenant_id}", + "object_id": "See the README.md file for instructions on how to lookup the correct value to enter here", + "key_permissions": [ + "get", + "unwrapKey", + "wrapKey" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.managed" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT41 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT41 new file mode 100644 index 0000000..59395d8 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT41 @@ -0,0 +1,246 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/databricks/secure-connectivity-cluster/with-load-balancer/variables.tf", + "/examples/databricks/secure-connectivity-cluster/with-load-balancer/main.tf" + ], + "timestamp": 1642943279699, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/databricks/secure-connectivity-cluster/with-load-balancer/variables.tf", + "/examples/databricks/secure-connectivity-cluster/with-load-balancer/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT41", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_lb_backend_address_pool", + "azurerm_subnet", + "azurerm_lb_outbound_rule", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_public_ip", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association", + "azurerm_lb" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT41", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-databrick-connectivity-with-lb", + "location": "eastus2", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-databricks-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "public", + "properties": { + "name": "${var.prefix}-public-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "delegation": [ + { + "name": "${var.prefix}-databricks-del", + "service_delegation": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ], + "name": "Microsoft.Databricks/workspaces" + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.public" + } + }, + { + "type": "azurerm_subnet", + "name": "private", + "properties": { + "name": "${var.prefix}-private-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "${var.prefix}-databricks-del", + "service_delegation": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ], + "name": "Microsoft.Databricks/workspaces" + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.private" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "private", + "properties": { + "subnet_id": "${azurerm_subnet.private.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.private" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "public", + "properties": { + "subnet_id": "${azurerm_subnet.public.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.public" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-databricks-nsg", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_databricks_workspace", + "name": "example", + "properties": { + "name": "DBW-${var.prefix}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "premium", + "managed_resource_group_name": "${var.prefix}-DBW-managed-with-lb", + "public_network_access_enabled": true, + "load_balancer_backend_address_pool_id": "${azurerm_lb_backend_address_pool.example.id}", + "custom_parameters": [ + { + "no_public_ip": true, + "public_subnet_name": "${azurerm_subnet.public.name}", + "private_subnet_name": "${azurerm_subnet.private.name}", + "virtual_network_id": "${azurerm_virtual_network.example.id}", + "public_subnet_network_security_group_association_id": "${azurerm_subnet_network_security_group_association.public.id}", + "private_subnet_network_security_group_association_id": "${azurerm_subnet_network_security_group_association.private.id}" + } + ], + "tags": { + "Environment": "Production", + "Pricing": "Standard" + }, + "compiletime_identity": "azurerm_databricks_workspace.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "Databricks-LB-PublicIP", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "idle_timeout_in_minutes": 4, + "allocation_method": "Static", + "sku": "Standard", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_lb", + "name": "example", + "properties": { + "name": "Databricks-LB", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "frontend_ip_configuration": [ + { + "name": "Databricks-PIP", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_lb.example" + } + }, + { + "type": "azurerm_lb_outbound_rule", + "name": "example", + "properties": { + "name": "Databricks-LB-Outbound-Rules", + "resource_group_name": "${azurerm_resource_group.example.name}", + "loadbalancer_id": "${azurerm_lb.example.id}", + "protocol": "All", + "enable_tcp_reset": true, + "allocated_outbound_ports": 1024, + "idle_timeout_in_minutes": 4, + "backend_address_pool_id": "${azurerm_lb_backend_address_pool.example.id}", + "frontend_ip_configuration": [ + { + "name": "${azurerm_lb.example.frontend_ip_configuration[0].name}" + } + ], + "compiletime_identity": "azurerm_lb_outbound_rule.example" + } + }, + { + "type": "azurerm_lb_backend_address_pool", + "name": "example", + "properties": { + "loadbalancer_id": "${azurerm_lb.example.id}", + "name": "Databricks-BE", + "compiletime_identity": "azurerm_lb_backend_address_pool.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT42 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT42 new file mode 100644 index 0000000..7fde638 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT42 @@ -0,0 +1,182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/databricks/secure-connectivity-cluster/without-load-balancer/variables.tf", + "/examples/databricks/secure-connectivity-cluster/without-load-balancer/main.tf" + ], + "timestamp": 1642943279704, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/databricks/secure-connectivity-cluster/without-load-balancer/variables.tf", + "/examples/databricks/secure-connectivity-cluster/without-load-balancer/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT42", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT42", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-databrick-connectivity-without-lb", + "location": "eastus2", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-databricks-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "public", + "properties": { + "name": "${var.prefix}-public-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "delegation": [ + { + "name": "${var.prefix}-databricks-del", + "service_delegation": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ], + "name": "Microsoft.Databricks/workspaces" + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.public" + } + }, + { + "type": "azurerm_subnet", + "name": "private", + "properties": { + "name": "${var.prefix}-private-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "${var.prefix}-databricks-del", + "service_delegation": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ], + "name": "Microsoft.Databricks/workspaces" + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.private" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "private", + "properties": { + "subnet_id": "${azurerm_subnet.private.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.private" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "public", + "properties": { + "subnet_id": "${azurerm_subnet.public.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.public" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-databricks-nsg", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_databricks_workspace", + "name": "example", + "properties": { + "name": "DBW-${var.prefix}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "premium", + "managed_resource_group_name": "${var.prefix}-DBW-managed-without-lb", + "public_network_access_enabled": true, + "custom_parameters": [ + { + "no_public_ip": true, + "public_subnet_name": "${azurerm_subnet.public.name}", + "private_subnet_name": "${azurerm_subnet.private.name}", + "virtual_network_id": "${azurerm_virtual_network.example.id}", + "public_subnet_network_security_group_association_id": "${azurerm_subnet_network_security_group_association.public.id}", + "private_subnet_network_security_group_association_id": "${azurerm_subnet_network_security_group_association.private.id}" + } + ], + "tags": { + "Environment": "Production", + "Pricing": "Standard" + }, + "compiletime_identity": "azurerm_databricks_workspace.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT43 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT43 new file mode 100644 index 0000000..d2e0bae --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT43 @@ -0,0 +1,104 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/datalake/variables.tf", + "/examples/datalake/main.tf" + ], + "timestamp": 1642943279708, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/datalake/variables.tf", + "/examples/datalake/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT43", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_data_lake_store", + "azurerm_data_lake_store_firewall_rule", + "azurerm_resource_group", + "azurerm_data_lake_analytics_firewall_rule", + "azurerm_data_lake_analytics_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT43", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_data_lake_store", + "name": "example", + "properties": { + "name": "${var.prefix}-dls", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "tier": "Consumption", + "compiletime_identity": "azurerm_data_lake_store.example" + } + }, + { + "type": "azurerm_data_lake_store_firewall_rule", + "name": "test", + "properties": { + "name": "${var.prefix}-dls-fwrule", + "account_name": "${azurerm_data_lake_store.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "start_ip_address": "0.0.0.0", + "end_ip_address": "0.0.0.0", + "compiletime_identity": "azurerm_data_lake_store_firewall_rule.test" + } + }, + { + "type": "azurerm_data_lake_analytics_account", + "name": "example", + "properties": { + "name": "${var.prefix}-dla", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "tier": "Consumption", + "default_store_account_name": "${azurerm_data_lake_store.example.name}", + "compiletime_identity": "azurerm_data_lake_analytics_account.example" + } + }, + { + "type": "azurerm_data_lake_analytics_firewall_rule", + "name": "test", + "properties": { + "name": "${var.prefix}-dlafwrule", + "account_name": "${azurerm_data_lake_analytics_account.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "start_ip_address": "0.0.0.0", + "end_ip_address": "0.0.0.0", + "compiletime_identity": "azurerm_data_lake_analytics_firewall_rule.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT44 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT44 new file mode 100644 index 0000000..0d335ae --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT44 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/desktopvirtualization/variables.tf", + "/examples/desktopvirtualization/main.tf" + ], + "timestamp": 1642943279711, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/desktopvirtualization/variables.tf", + "/examples/desktopvirtualization/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT44", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_virtual_desktop_application_group", + "azurerm_virtual_desktop_host_pool", + "azurerm_virtual_desktop_workspace_application_group_association", + "azurerm_resource_group", + "azurerm_virtual_desktop_workspace" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT44", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_desktop_workspace", + "name": "example", + "properties": { + "name": "${var.prefix}workspace", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "compiletime_identity": "azurerm_virtual_desktop_workspace.example" + } + }, + { + "type": "azurerm_virtual_desktop_host_pool", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "name": "${var.prefix}hostpool", + "location": "${azurerm_resource_group.example.location}", + "validate_environment": false, + "type": "Pooled", + "maximum_sessions_allowed": 16, + "load_balancer_type": "BreadthFirst", + "compiletime_identity": "azurerm_virtual_desktop_host_pool.example" + } + }, + { + "type": "azurerm_virtual_desktop_application_group", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "host_pool_id": "${azurerm_virtual_desktop_host_pool.example.id}", + "location": "${azurerm_resource_group.example.location}", + "type": "Desktop", + "name": "${var.prefix}dag", + "depends_on": [ + "${azurerm_virtual_desktop_host_pool.example}" + ], + "compiletime_identity": "azurerm_virtual_desktop_application_group.example" + } + }, + { + "type": "azurerm_virtual_desktop_workspace_application_group_association", + "name": "example", + "properties": { + "application_group_id": "${azurerm_virtual_desktop_application_group.example.id}", + "workspace_id": "${azurerm_virtual_desktop_workspace.example.id}", + "compiletime_identity": "azurerm_virtual_desktop_workspace_application_group_association.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT45 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT45 new file mode 100644 index 0000000..a1eba4a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT45 @@ -0,0 +1,133 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/eventgrid/event-subscription/variables.tf", + "/examples/eventgrid/event-subscription/main.tf" + ], + "timestamp": 1642943279715, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eventgrid/event-subscription/variables.tf", + "/examples/eventgrid/event-subscription/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT45", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventgrid_event_subscription", + "azurerm_resource_group", + "azurerm_storage_container", + "azurerm_storage_blob", + "azurerm_storage_account", + "azurerm_storage_queue" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT45", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}sa", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_queue", + "name": "example", + "properties": { + "name": "${var.prefix}-sq", + "storage_account_name": "${azurerm_storage_account.example.name}", + "compiletime_identity": "azurerm_storage_queue.example" + } + }, + { + "type": "azurerm_storage_container", + "name": "example", + "properties": { + "name": "vhds", + "storage_account_name": "${azurerm_storage_account.example.name}", + "container_access_type": "private", + "compiletime_identity": "azurerm_storage_container.example" + } + }, + { + "type": "azurerm_storage_blob", + "name": "example", + "properties": { + "name": "herpderp1.vhd", + "storage_account_name": "${azurerm_storage_account.example.name}", + "storage_container_name": "${azurerm_storage_container.example.name}", + "type": "Page", + "size": 5120, + "compiletime_identity": "azurerm_storage_blob.example" + } + }, + { + "type": "azurerm_eventgrid_event_subscription", + "name": "example", + "properties": { + "name": "${var.prefix}-eventsubs", + "scope": "${azurerm_resource_group.example.id}", + "storage_queue_endpoint": [ + { + "storage_account_id": "${azurerm_storage_account.example.id}", + "queue_name": "${azurerm_storage_queue.example.name}" + } + ], + "storage_blob_dead_letter_destination": [ + { + "storage_account_id": "${azurerm_storage_account.example.id}", + "storage_blob_container_name": "${azurerm_storage_container.example.name}" + } + ], + "retry_policy": [ + { + "event_time_to_live": 11, + "max_delivery_attempts": 11 + } + ], + "labels": [ + "test", + "test1", + "test2" + ], + "compiletime_identity": "azurerm_eventgrid_event_subscription.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT46 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT46 new file mode 100644 index 0000000..e0c19f8 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT46 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/eventhub/dedicated-eventhubs-cluster/variables.tf", + "/examples/eventhub/dedicated-eventhubs-cluster/main.tf" + ], + "timestamp": 1642943279717, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eventhub/dedicated-eventhubs-cluster/variables.tf", + "/examples/eventhub/dedicated-eventhubs-cluster/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT46", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventhub_namespace", + "azurerm_eventhub", + "azurerm_resource_group", + "azurerm_eventhub_cluster" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT46", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_eventhub_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-ehcluster", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku_name": "Dedicated_1", + "compiletime_identity": "azurerm_eventhub_cluster.example" + } + }, + { + "type": "azurerm_eventhub_namespace", + "name": "example", + "properties": { + "name": "${var.prefix}-ehnamespace", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "dedicated_cluster_id": "${azurerm_eventhub_cluster.example.id}", + "compiletime_identity": "azurerm_eventhub_namespace.example" + } + }, + { + "type": "azurerm_eventhub", + "name": "example", + "properties": { + "name": "${var.prefix}-eventhub", + "resource_group_name": "${azurerm_resource_group.example.name}", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "partition_count": 40, + "message_retention": 1, + "compiletime_identity": "azurerm_eventhub.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT47 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT47 new file mode 100644 index 0000000..aacc7e5 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT47 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/eventhub/shared-parent-eventhub-namespace/variables.tf", + "/examples/eventhub/shared-parent-eventhub-namespace/main.tf" + ], + "timestamp": 1642943279720, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/eventhub/shared-parent-eventhub-namespace/variables.tf", + "/examples/eventhub/shared-parent-eventhub-namespace/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT47", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_eventhub_namespace", + "azurerm_eventhub_authorization_rule", + "azurerm_resource_group", + "azurerm_eventhub_consumer_group", + "azurerm_eventhub_namespace_authorization_rule", + "azurerm_eventhub" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT47", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_eventhub_namespace", + "name": "example", + "properties": { + "name": "${var.prefix}-ehnamespace", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "capacity": 2, + "tags": { + "environment": "Examples" + }, + "compiletime_identity": "azurerm_eventhub_namespace.example" + } + }, + { + "type": "azurerm_eventhub_namespace_authorization_rule", + "name": "example", + "properties": { + "name": "${var.prefix}-nsauth-rule", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "listen": true, + "send": true, + "manage": false, + "compiletime_identity": "azurerm_eventhub_namespace_authorization_rule.example" + } + }, + { + "type": "azurerm_eventhub", + "name": "example", + "properties": { + "name": "${var.prefix}-eh1", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "partition_count": 2, + "message_retention": 1, + "compiletime_identity": "azurerm_eventhub.example" + } + }, + { + "type": "azurerm_eventhub_authorization_rule", + "name": "test", + "properties": { + "name": "${var.prefix}-enauth-rule", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "eventhub_name": "${azurerm_eventhub.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "listen": true, + "send": true, + "manage": true, + "compiletime_identity": "azurerm_eventhub_authorization_rule.test" + } + }, + { + "type": "azurerm_eventhub_consumer_group", + "name": "example", + "properties": { + "name": "${var.prefix}-ehcg", + "namespace_name": "${azurerm_eventhub_namespace.example.name}", + "eventhub_name": "${azurerm_eventhub.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "user_metadata": "some-meta-data", + "compiletime_identity": "azurerm_eventhub_consumer_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT48 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT48 new file mode 100644 index 0000000..1aaa8da --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT48 @@ -0,0 +1,393 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/hdinsight/enterprise-security-package/providers.tf", + "/examples/hdinsight/enterprise-security-package/variables.tf", + "/examples/hdinsight/enterprise-security-package/main.tf" + ], + "timestamp": 1642943279722, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/hdinsight/enterprise-security-package/providers.tf", + "/examples/hdinsight/enterprise-security-package/variables.tf", + "/examples/hdinsight/enterprise-security-package/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT48", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azuread_group", + "azurerm_storage_account", + "azurerm_role_assignment", + "azurerm_storage_container", + "azuread_group_member", + "azurerm_virtual_network_dns_servers", + "azuread_user", + "azurerm_hdinsight_hadoop_cluster", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association", + "azurerm_active_directory_domain_service", + "azurerm_user_assigned_identity" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT48", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + }, + { + "azuread": {} + } + ], + "data": { + "azuread_domains": { + "example": { + "only_initial": true, + "compiletime_identity": "data.azuread_domains.example" + } + }, + "azurerm_subscription": { + "primary": { + "compiletime_identity": "data.azurerm_subscription.primary" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-HDInsight-ESP", + "location": "${var.location}", + "tags": { + "StorageType": "Standard_LRS", + "type": "test" + }, + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}sa", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_container", + "name": "example", + "properties": { + "name": "${var.prefix}-sc", + "storage_account_name": "${azurerm_storage_account.example.name}", + "container_access_type": "private", + "compiletime_identity": "azurerm_storage_container.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.10.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "${cidrsubnet(azurerm_virtual_network.example.address_space[0],8,0)}" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-nsg", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "security_rule": [ + { + "name": "AllowSyncWithAzureAD", + "priority": 101, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 443, + "source_address_prefix": "*", + "destination_address_prefix": "*" + }, + { + "name": "AllowRD", + "priority": 201, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 3389, + "source_address_prefix": "CorpNetSaw", + "destination_address_prefix": "*" + }, + { + "name": "AllowPSRemoting", + "priority": 301, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 5986, + "source_address_prefix": "AzureActiveDirectoryDomainServices", + "destination_address_prefix": "*" + }, + { + "name": "AllowLDAPS", + "priority": 401, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 636, + "source_address_prefix": "*", + "destination_address_prefix": "*" + } + ], + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "example", + "properties": { + "subnet_id": "${azurerm_subnet.example.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.example" + } + }, + { + "type": "azuread_group", + "name": "example", + "properties": { + "display_name": "${var.prefix} AAD DC Administrators", + "description": "Test for delegating group to administer Azure AD Domain Services", + "mail_enabled": true, + "compiletime_identity": "azuread_group.example" + } + }, + { + "type": "azuread_user", + "name": "example", + "properties": { + "user_principal_name": "${var.prefix}AADDSAdminUser@${data.azuread_domains.example.domains.0.domain_name}", + "display_name": "${var.prefix}AADDSAdminUser", + "password": "TerrAform321!", + "compiletime_identity": "azuread_user.example" + } + }, + { + "type": "azuread_group_member", + "name": "example", + "properties": { + "group_object_id": "${azuread_group.example.object_id}", + "member_object_id": "${azuread_user.example.object_id}", + "compiletime_identity": "azuread_group_member.example" + } + }, + { + "type": "azurerm_user_assigned_identity", + "name": "example", + "properties": { + "name": "${var.prefix}-uai", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "compiletime_identity": "azurerm_user_assigned_identity.example" + } + }, + { + "type": "azurerm_role_assignment", + "name": "example", + "properties": { + "scope": "${data.azurerm_subscription.primary.id}", + "role_definition_name": "HDInsight Domain Services Contributor", + "principal_id": "${azurerm_user_assigned_identity.example.principal_id}", + "compiletime_identity": "azurerm_role_assignment.example" + } + }, + { + "type": "azurerm_active_directory_domain_service", + "name": "example", + "properties": { + "name": "${var.prefix}-aadds", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "domain_name": "never.gonna.shut.you.down", + "sku": "Standard", + "filtered_sync_enabled": false, + "initial_replica_set": [ + { + "subnet_id": "${azurerm_subnet.example.id}" + } + ], + "notifications": [ + { + "additional_recipients": [ + "notifyA@example.net", + "notifyB@example.org" + ], + "notify_dc_admins": true, + "notify_global_admins": true + } + ], + "secure_ldap": [ + { + "enabled": true, + "external_access_enabled": true, + "pfx_certificate": "MIIKQQIBAzCCCgcGCSqGSIb3DQEHAaCCCfgEggn0MIIJ8DCCBKcGCSqGSIb3DQEHBqCCBJgwggSUAgEAMIIEjQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQIiyYq8fFjdcECAggAgIIEYO5ElAQbptx+P3lRgFDYkyBNdA0MSMJdijukGp6Jvms43SICKly63yJwTAuekO5kvnz5kYOxZugsal8763m7qdQONGipROOKjiZBkyv6o5ZO5Kw5uHOiY9WZacq5OsKxgTKnSiPgrxYllrovrAukLtyF/md+qNz4BSsHN84i10FneVPED1lqNG8CE1I/7ZCixXozxAuh8HgX/JJ5C3wFBlyCYgxpVprVRiPVD+Hc/VJgkABOjdrkUNm2EbGFH5cgx8f3ZexkH/afaU8pGZdwW4sEzwXlunRLAbdNjrjUw5PWmTka/o5mAwR+IOLfAgTDU0zJRnOyEelPoDOHuE6+AHdNoQr22F0UJWSOkR2lGEx+byHNVB2KByG4tVpLrxo4Rjs5WQakIQOO7/gf5ppYnBubDqnzPhKPDX1BVhRf7BRJW6ZVLL2nr3gzSlvd1C05XugDHa7j7HAzPQakIa16+vfMQbp3AO8voe6drVFfBwc33+jhPSuOTdRQrqmcmPUvlZmx/l4zOuaOPgR6YkbyGWWRu6+Uhz7+Fb7tftsbpiu8j7yDZN55EfVBJyXvJ8LEHinYQBdJyqt3BGwqUSKqF3QmT32bCXHfwwrNxieB2fizRGBLq+qXJ7a8Chb4dLM7cQH3qxeBgnxVbuEgNzhNszKeGTM9Xs9TTCvyH1803ww+wcQyh+OqsLWFN7gyZjJWHcdwYElNgZ4E+zeQJ9vNjPD8f4mpMeve+DXhRDi3H/K8AA2avZWNVM1/oo+Kfs7p0FOZ/qEsZcdxTBofZhxphm3IYgLlSVMNOWUNTvhPJXN4G0OgoPESIN9WQ5F7GmcW4JHRe9Do2uuLyYgksoDb66NsxNbnl0i4nrHdFHjJi5f8h1r6aJr9V54jlCChwRPkIuAJ6wX0ep6kF8DMr55vFcgb8wXsfL7I1cl0SFZdOxSVr6w67x4GFL/Xe8PV3fOk84QXhaq+1XnXWMkhRQpPJRidj9i7v20ho+LFdOiYEv0oW886SxCeRHRlF8hFcS8bTGCTlGRZfwx0aeUnwWsDSvehWA9l7itcAfZ2D4HeiRADW75+0iEpafW0SHvQ/AZf0jJLfVOEonz9l/zWd4JbvaoHq6ukyFwxk4LssxtlBr1o8IwnmFRWzwdeXVn//73iPrGw5bE9E64SUGc/gr/UeRSYI2/QpoFC2S/kPOJ0e7ysxjtOBWt82cHT+B8olOSULQxYpmpPqVNoMJuW5z3w/cMo54FE5OeCeFEAUabFXUefIMEXLkph0EfX6jUEJFjZ7jSScfQLVcbQxt0wjxPIgDMSpfM7Xn5Dxs01YgprDZRJqpcSfM8aZoTtyQo6O9lelo1LqhpmHWVYc9w4JjW6/mjYbksKo7Yq7eMr5Ltn3b8Ev19JlNuJNQf0WBqzOQe8QX11CYABwyAuREC6yN+uSSaEj5KAT4wIfEjCSKdkjNjcTWfFb94nloCsN7PiK3llwxAoJ1L2MurtVumGuU9QTwcwggVBBgkqhkiG9w0BBwGgggUyBIIFLjCCBSowggUmBgsqhkiG9w0BDAoBAqCCBO4wggTqMBwGCiqGSIb3DQEMAQMwDgQINL4d8DLD0mgCAggABIIEyCPtTgku3sdXL6ko/hLLfnhOvM3Jn91Usyoy30xqqefGqFZDxz5J3PEPGALfY/nOPemF898ZpzQ3DHEJM2p+ibXr3WKZjIM+cxBcv7nkLFI84KYp0bJOPg5mgTGQ0tkYEEB/CzOX8aCuXGB59+Ltzp0RidtHD6Pbyd7H5tjwQbmeWweT4Sy9NQc6hBnGKwsZgWTvcODdApENewQ2jPFWi9qT01QMSfII+pHNY5Jxrx9RC/LvbeVNmW0huQXFueLk+Gjnj/vU4/NNzDNWLoEQqo9CUi2KxdA9x6czLW/tVJUfZqb0phmTLemzARnz6a7iftoLlLlczRyzwEkLPLaycvwBVyImESz02XMbQyTmK/RRx7FHjreFF55XLQCOF8BfCi5WdBb3+1bjMZSZYs3gl7jjS5yUOURUCido5b1gbJFoREO1n0NnCp/Fcv2ndurdpC3QxP8wKJCGN9f1ZnILs5xF3q/BAtggEz715x+C+echyk01NLcLuPO6e3BUnYaTkeIEIquggTpkeBkArFHrMA0MeGdhVBww/ldXiZi38FdUSu/kCtHhbITr4StC8+JF2111Riy9Q344u8xoChAJ1JzOYRkVCRYg+305OSNJj90cGnhGD752D1+3caYejev7hNRVw87WZy5BvgIfJGZl02UOEtFc4MoFlrfg1Wb4EvG1D5e5eJj/mBXd19QNnJpKMOF5m1eJ3zyHJpYlfHFFcwvLdBJwD9zOzNWQGkiqAGjmM64oO2SUBWrlhHowb1ZRl3ARPcjDdUfD+2r7RGAjr71JaPtthWROgNsYT08XiavagC6K0Sl4sowEb1qkSA2ORIjNVQFoSIUTVJIxailU//8CEJx4ji3Ml8WYmQ9U/iIdl4tbymB8Yc/a1SPmr+yc8gLO0r9T0hYMLoxDzU3KUrUJ20E7JxRti1EQHkAfH2/WDv1U9miGjv3Nl/o6mW+13wU5RhqGMawpsHdEe3MrDkRy463s93379wdY67LJWSaBabGoBRh7iH/Kio3uKAAqEyRrYUZ6qlRy1w/rBs7LVgkgapPgyyLjBYTFqGYelI6ESKi8KA8jx9p/qCtNYxiI3QIzin5xb2BzohH+UdML5Xg1uWoHMjIviDv/hOnwwiNGthwUn3zuUDzabNU1XflYFAovp0uC3DSGMVoqot5rzM1Qd3mqxzZfT03lJdrW1zH6IDHSc4GJ87dLgyoJVeZrhF2HNzZ8VWpK6yVtzkjL0Tzdu/sXqJTZo/g7AVjXPnfd09VuG/2JE5Lq/2ThQMYgcmvHhfsgYb+wBdktEUuDIempWH/kswY44mbgl3BsabS9omPI82enKBwEHXCe2ElDQ95BIXeOmoMi+ij2o/eq39pxOH1cz5rE722f5MaX4Z+aKv5yCTD2ax77770Hqwbr7E8gakqnsdmIB5uCoXJbUzSzqJe8OIfjxBmoxjjx78SinypRfP9NFHuJ9bTZBgWx0sF61RrKTducG+ahyI8Qf+a5lCeTW3xu8yEQ9ug/eciByX/zgtdoXs92fMHtvNEdtFSJRkmCMfhR1Vt6CClv/42YWuhMzNYq7j9xlUaBsywyaLnRbGuReH5mfOf5jhwdyX9XYHCX7WwGUK7TkvtvoYojRLx7NSbgIzElMCMGCSqGSIb3DQEJFTEWBBTcG5ZdUu6v509N1qKVystp457ZfjAxMCEwCQYFKw4DAhoFAAQU74UvHtpO/2l1sJxEjxVOcT8kB78ECMBULazLBaKgAgIIAA==", + "pfx_certificate_password": "qwer5678" + } + ], + "security": [ + { + "ntlm_v1_enabled": true, + "sync_kerberos_passwords": true, + "sync_ntlm_passwords": true, + "sync_on_prem_passwords": true, + "tls_v1_enabled": true + } + ], + "tags": { + "Environment": "test" + }, + "depends_on": [ + "${azuread_group_member.example}", + "${azurerm_role_assignment.example}", + "${azurerm_subnet_network_security_group_association.example}" + ], + "compiletime_identity": "azurerm_active_directory_domain_service.example" + } + }, + { + "type": "azurerm_virtual_network_dns_servers", + "name": "example", + "properties": { + "virtual_network_id": "${azurerm_virtual_network.example.id}", + "dns_servers": "${azurerm_active_directory_domain_service.example.initial_replica_set[0].domain_controller_ip_addresses}", + "compiletime_identity": "azurerm_virtual_network_dns_servers.example" + } + }, + { + "type": "azurerm_hdinsight_hadoop_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-hdicluster", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "cluster_version": 4.0, + "tier": "Premium", + "component_version": [ + { + "hadoop": 3.1 + } + ], + "gateway": [ + { + "username": "sshuser", + "password": "TerrAform123!" + } + ], + "storage_account": [ + { + "storage_container_id": "${azurerm_storage_container.example.id}", + "storage_account_key": "${azurerm_storage_account.example.primary_access_key}", + "is_default": true + } + ], + "roles": [ + { + "head_node": [ + { + "vm_size": "Standard_E4_V3", + "username": "sshuser", + "password": "TerrAform123!", + "subnet_id": "${azurerm_subnet.example.id}", + "virtual_network_id": "${azurerm_virtual_network.example.id}" + } + ], + "worker_node": [ + { + "vm_size": "Standard_E8_V3", + "username": "sshuser", + "password": "TerrAform123!", + "target_instance_count": 3, + "subnet_id": "${azurerm_subnet.example.id}", + "virtual_network_id": "${azurerm_virtual_network.example.id}" + } + ], + "zookeeper_node": [ + { + "vm_size": "Standard_A2_V2", + "username": "sshuser", + "password": "TerrAform123!", + "subnet_id": "${azurerm_subnet.example.id}", + "virtual_network_id": "${azurerm_virtual_network.example.id}" + } + ] + } + ], + "security_profile": [ + { + "aadds_resource_id": "${azurerm_active_directory_domain_service.example.resource_id}", + "domain_name": "${azurerm_active_directory_domain_service.example.domain_name}", + "domain_username": "${azuread_user.example.user_principal_name}", + "domain_user_password": "${azuread_user.example.password}", + "ldaps_urls": [ + "ldaps://${azurerm_active_directory_domain_service.example.domain_name}:636" + ], + "msi_resource_id": "${azurerm_user_assigned_identity.example.id}", + "cluster_users_group_dns": [ + "${azuread_group.example.display_name}" + ] + } + ], + "depends_on": [ + "${azurerm_virtual_network_dns_servers.example}" + ], + "compiletime_identity": "azurerm_hdinsight_hadoop_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT49 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT49 new file mode 100644 index 0000000..d097365 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT49 @@ -0,0 +1,486 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/hdinsight/private-link/hadoop-interactive-spark-hbase-cluster/variables.tf", + "/examples/hdinsight/private-link/hadoop-interactive-spark-hbase-cluster/main.tf" + ], + "timestamp": 1642943279726, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/hdinsight/private-link/hadoop-interactive-spark-hbase-cluster/variables.tf", + "/examples/hdinsight/private-link/hadoop-interactive-spark-hbase-cluster/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT49", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_subnet_nat_gateway_association", + "azurerm_storage_account", + "azurerm_role_assignment", + "azurerm_nat_gateway", + "azurerm_nat_gateway_public_ip_association", + "azurerm_public_ip", + "azurerm_hdinsight_hadoop_cluster", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association", + "azurerm_storage_data_lake_gen2_filesystem", + "azurerm_user_assigned_identity" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT49", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_subscription": { + "primary": { + "compiletime_identity": "data.azurerm_subscription.primary" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-HDInsight-Hadoop", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_user_assigned_identity", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "name": "${var.prefix}-identity", + "compiletime_identity": "azurerm_user_assigned_identity.example" + } + }, + { + "type": "azurerm_role_assignment", + "name": "example", + "properties": { + "scope": "${data.azurerm_subscription.primary.id}", + "role_definition_name": "Storage Blob Data Owner", + "principal_id": "${azurerm_user_assigned_identity.example.principal_id}", + "skip_service_principal_aad_check": true, + "compiletime_identity": "azurerm_role_assignment.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "address_space": [ + "172.16.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "172.16.11.0/26" + ], + "enforce_private_link_service_network_policies": true, + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "sku": "Standard", + "zones": [ + 1 + ], + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_nat_gateway", + "name": "example", + "properties": { + "name": "${var.prefix}-natGateway", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku_name": "Standard", + "idle_timeout_in_minutes": 10, + "zones": [ + 1 + ], + "compiletime_identity": "azurerm_nat_gateway.example" + } + }, + { + "type": "azurerm_nat_gateway_public_ip_association", + "name": "example", + "properties": { + "nat_gateway_id": "${azurerm_nat_gateway.example.id}", + "public_ip_address_id": "${azurerm_public_ip.example.id}", + "compiletime_identity": "azurerm_nat_gateway_public_ip_association.example" + } + }, + { + "type": "azurerm_subnet_nat_gateway_association", + "name": "example", + "properties": { + "subnet_id": "${azurerm_subnet.example.id}", + "nat_gateway_id": "${azurerm_nat_gateway.example.id}", + "compiletime_identity": "azurerm_subnet_nat_gateway_association.example" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "example", + "properties": { + "subnet_id": "${azurerm_subnet.example.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}sa", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "account_kind": "StorageV2", + "is_hns_enabled": true, + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_data_lake_gen2_filesystem", + "name": "example", + "properties": { + "name": "${var.prefix}-fs", + "storage_account_id": "${azurerm_storage_account.example.id}", + "compiletime_identity": "azurerm_storage_data_lake_gen2_filesystem.example" + } + }, + { + "type": "azurerm_hdinsight_hadoop_cluster", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_role_assignment.example}", + "${azurerm_nat_gateway.example}", + "${azurerm_subnet_network_security_group_association.example}" + ], + "name": "${var.prefix}-hadoop", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "cluster_version": 4.0, + "tier": "Standard", + "component_version": [ + { + "hadoop": 3.1 + } + ], + "network": [ + { + "connection_direction": "Outbound", + "private_link_enabled": true + } + ], + "gateway": [ + { + "username": "accexampleusrgw", + "password": "TerrAform123!" + } + ], + "storage_account_gen2": [ + { + "storage_resource_id": "${azurerm_storage_account.example.id}", + "filesystem_id": "${azurerm_storage_data_lake_gen2_filesystem.example.id}", + "managed_identity_resource_id": "${azurerm_user_assigned_identity.example.id}", + "is_default": true + } + ], + "roles": [ + { + "head_node": [ + { + "vm_size": "Standard_D3_V2", + "username": "accexampleusrvm", + "password": "AccTestvdSC4daf986!", + "subnet_id": "${azurerm_subnet.example.id}", + "virtual_network_id": "${azurerm_virtual_network.example.id}" + } + ], + "worker_node": [ + { + "vm_size": "Standard_D4_V2", + "username": "accexampleusrvm", + "password": "AccTestvdSC4daf986!", + "target_instance_count": 3, + "subnet_id": "${azurerm_subnet.example.id}", + "virtual_network_id": "${azurerm_virtual_network.example.id}" + } + ], + "zookeeper_node": [ + { + "vm_size": "Standard_D3_V2", + "username": "accexampleusrvm", + "password": "AccTestvdSC4daf986!", + "subnet_id": "${azurerm_subnet.example.id}", + "virtual_network_id": "${azurerm_virtual_network.example.id}" + } + ] + } + ], + "compiletime_identity": "azurerm_hdinsight_hadoop_cluster.example" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-NSG", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "security_rule": [ + { + "access": "Allow", + "description": "Rule can be deleted but do not change source ips.", + "destination_address_prefix": "*", + "destination_address_prefixes": [], + "destination_application_security_group_ids": [], + "destination_port_range": 443, + "destination_port_ranges": [], + "direction": "Inbound", + "name": "Rule-101", + "priority": 101, + "protocol": "Tcp", + "source_address_prefix": "VirtualNetwork", + "source_address_prefixes": [], + "source_application_security_group_ids": [], + "source_port_range": "*", + "source_port_ranges": [] + }, + { + "access": "Allow", + "description": "Rule can be deleted but do not change source ips.", + "destination_address_prefix": "*", + "destination_address_prefixes": [], + "destination_application_security_group_ids": [], + "destination_port_range": "*", + "destination_port_ranges": [], + "direction": "Inbound", + "name": "Rule-103", + "priority": 103, + "protocol": "*", + "source_address_prefix": "CorpNetPublic", + "source_address_prefixes": [], + "source_application_security_group_ids": [], + "source_port_range": "*", + "source_port_ranges": [] + }, + { + "access": "Allow", + "description": "Rule can be deleted but do not change source ips.", + "destination_address_prefix": "*", + "destination_address_prefixes": [], + "destination_application_security_group_ids": [], + "destination_port_range": "*", + "destination_port_ranges": [], + "direction": "Inbound", + "name": "Rule-104", + "priority": 104, + "protocol": "*", + "source_address_prefix": "CorpNetSaw", + "source_address_prefixes": [], + "source_application_security_group_ids": [], + "source_port_range": "*", + "source_port_ranges": [] + }, + { + "access": "Deny", + "description": "DO NOT DELETE", + "destination_address_prefix": "*", + "destination_address_prefixes": [], + "destination_application_security_group_ids": [], + "destination_port_range": "", + "destination_port_ranges": [ + 111, + 11211, + 123, + 13, + 17, + 19, + 1900, + 512, + 514, + 53, + 5353, + 593, + 69, + 873 + ], + "direction": "Inbound", + "name": "Rule-108", + "priority": 108, + "protocol": "*", + "source_address_prefix": "Internet", + "source_address_prefixes": [], + "source_application_security_group_ids": [], + "source_port_range": "*", + "source_port_ranges": [] + }, + { + "access": "Deny", + "description": "DO NOT DELETE", + "destination_address_prefix": "*", + "destination_address_prefixes": [], + "destination_application_security_group_ids": [], + "destination_port_range": "", + "destination_port_ranges": [ + 119, + 137, + 138, + 139, + 161, + 162, + 2049, + 2301, + 2381, + 3268, + 389, + 5800, + 5900, + 636 + ], + "direction": "Inbound", + "name": "Rule-109", + "priority": 109, + "protocol": "*", + "source_address_prefix": "Internet", + "source_address_prefixes": [], + "source_application_security_group_ids": [], + "source_port_range": "*", + "source_port_ranges": [] + }, + { + "access": "Deny", + "description": "DO NOT DELETE", + "destination_address_prefix": "*", + "destination_address_prefixes": [], + "destination_application_security_group_ids": [], + "destination_port_range": "", + "destination_port_ranges": [ + 135, + 23, + 445, + 5985, + 5986 + ], + "direction": "Inbound", + "name": "Rule-107", + "priority": 107, + "protocol": "Tcp", + "source_address_prefix": "Internet", + "source_address_prefixes": [], + "source_application_security_group_ids": [], + "source_port_range": "*", + "source_port_ranges": [] + }, + { + "access": "Deny", + "description": "DO NOT DELETE", + "destination_address_prefix": "*", + "destination_address_prefixes": [], + "destination_application_security_group_ids": [], + "destination_port_range": "", + "destination_port_ranges": [ + 1433, + 1434, + 16379, + 26379, + 27017, + 3306, + 4333, + 5432, + 6379, + 7000, + 7001, + 7199, + 9042, + 9160, + 9300 + ], + "direction": "Inbound", + "name": "Rule-105", + "priority": 105, + "protocol": "*", + "source_address_prefix": "Internet", + "source_address_prefixes": [], + "source_application_security_group_ids": [], + "source_port_range": "*", + "source_port_ranges": [] + }, + { + "access": "Deny", + "description": "DO NOT DELETE", + "destination_address_prefix": "*", + "destination_address_prefixes": [], + "destination_application_security_group_ids": [], + "destination_port_range": "", + "destination_port_ranges": [ + 22, + 3389 + ], + "direction": "Inbound", + "name": "Rule-106", + "priority": 106, + "protocol": "Tcp", + "source_address_prefix": "Internet", + "source_address_prefixes": [], + "source_application_security_group_ids": [], + "source_port_range": "*", + "source_port_ranges": [] + } + ], + "compiletime_identity": "azurerm_network_security_group.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT5 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT5 new file mode 100644 index 0000000..1d3756c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT5 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/docker-compose/outputs.tf", + "/examples/app-service/docker-compose/variables.tf", + "/examples/app-service/docker-compose/main.tf" + ], + "timestamp": 1642943279580, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/docker-compose/outputs.tf", + "/examples/app-service/docker-compose/variables.tf", + "/examples/app-service/docker-compose/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT5", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT5", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "kind": "Linux", + "reserved": true, + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "app_command_line": "", + "linux_fx_version": "COMPOSE|${filebase64(\"docker-compose.yml\")}" + } + ], + "app_settings": { + "WEBSITES_ENABLE_APP_SERVICE_STORAGE": false + }, + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT50 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT50 new file mode 100644 index 0000000..1ca25f8 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT50 @@ -0,0 +1,182 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/aci_connector_linux/outputs.tf", + "/examples/kubernetes/aci_connector_linux/vars.tf", + "/examples/kubernetes/aci_connector_linux/main.tf" + ], + "timestamp": 1642943279731, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/aci_connector_linux/outputs.tf", + "/examples/kubernetes/aci_connector_linux/vars.tf", + "/examples/kubernetes/aci_connector_linux/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT50", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_virtual_network", + "azurerm_role_assignment" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT50", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "acisampleaks-k8s-rg", + "location": "West US", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "acisampleaks-vnet", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.10.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example-nodepool", + "properties": { + "name": "default", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.10.1.0/24" + ], + "compiletime_identity": "azurerm_subnet.example-nodepool" + } + }, + { + "type": "azurerm_subnet", + "name": "example-aci", + "properties": { + "name": "aci", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.10.3.0/24" + ], + "delegation": [ + { + "name": "aciDelegation", + "service_delegation": [ + { + "name": "Microsoft.ContainerInstance/containerGroups", + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example-aci" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "acisampleaks-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "acisampleaks-k8s", + "default_node_pool": [ + { + "name": "default", + "node_count": 1, + "vm_size": "Standard_DS2_v2", + "vnet_subnet_id": "${azurerm_subnet.example-nodepool.id}" + } + ], + "network_profile": [ + { + "network_plugin": "azure", + "network_policy": "azure", + "load_balancer_sku": "standard" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": true, + "subnet_name": "${azurerm_subnet.example-aci.name}" + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "kube_dashboard": [ + { + "enabled": true + } + ], + "oms_agent": [ + { + "enabled": false + } + ] + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + }, + { + "type": "azurerm_role_assignment", + "name": "example", + "properties": { + "scope": "${azurerm_subnet.example-aci.id}", + "role_definition_name": "Network Contributor", + "principal_id": "${azurerm_kubernetes_cluster.example.identity[0].principal_id}", + "compiletime_identity": "azurerm_role_assignment.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT51 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT51 new file mode 100644 index 0000000..17095a0 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT51 @@ -0,0 +1,108 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/basic-cluster/outputs.tf", + "/examples/kubernetes/basic-cluster/variables.tf", + "/examples/kubernetes/basic-cluster/main.tf" + ], + "timestamp": 1642943279735, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/basic-cluster/outputs.tf", + "/examples/kubernetes/basic-cluster/variables.tf", + "/examples/kubernetes/basic-cluster/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT51", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT51", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-k8s", + "default_node_pool": [ + { + "name": "default", + "node_count": 1, + "vm_size": "Standard_DS2_v2" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": false + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "kube_dashboard": [ + { + "enabled": true + } + ], + "oms_agent": [ + { + "enabled": false + } + ] + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT52 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT52 new file mode 100644 index 0000000..e6e108a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT52 @@ -0,0 +1,175 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/egress-with-udr-azure-cni/outputs.tf", + "/examples/kubernetes/egress-with-udr-azure-cni/variables.tf", + "/examples/kubernetes/egress-with-udr-azure-cni/main.tf" + ], + "timestamp": 1642943279737, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/egress-with-udr-azure-cni/outputs.tf", + "/examples/kubernetes/egress-with-udr-azure-cni/variables.tf", + "/examples/kubernetes/egress-with-udr-azure-cni/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT52", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_route_table", + "azurerm_subnet_route_table_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT52", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.1.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.1.0.0/22" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_route_table", + "name": "example", + "properties": { + "name": "${var.prefix}fwrt", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "disable_bgp_route_propagation": false, + "route": [ + { + "name": "${var.prefix}fwrn", + "address_prefix": "0.0.0.0/0", + "next_hop_type": "VirtualAppliance", + "next_hop_in_ip_address": "${var.fwprivate_ip}" + } + ], + "compiletime_identity": "azurerm_route_table.example" + } + }, + { + "type": "azurerm_subnet_route_table_association", + "name": "example", + "properties": { + "subnet_id": "${azurerm_subnet.internal.id}", + "route_table_id": "${azurerm_route_table.example.id}", + "compiletime_identity": "azurerm_subnet_route_table_association.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-k8s", + "default_node_pool": [ + { + "name": "system", + "node_count": 1, + "vm_size": "Standard_DS2_v2", + "vnet_subnet_id": "${azurerm_subnet.internal.id}", + "type": "VirtualMachineScaleSets" + } + ], + "network_profile": [ + { + "network_plugin": "azure", + "load_balancer_sku": "standard", + "outbound_type": "userDefinedRouting" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": false + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "kube_dashboard": [ + { + "enabled": true + } + ], + "oms_agent": [ + { + "enabled": false + } + ] + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT53 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT53 new file mode 100644 index 0000000..7b30024 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT53 @@ -0,0 +1,186 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/egress-with-udr-kubenet/outputs.tf", + "/examples/kubernetes/egress-with-udr-kubenet/variables.tf", + "/examples/kubernetes/egress-with-udr-kubenet/main.tf" + ], + "timestamp": 1642943279740, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/egress-with-udr-kubenet/outputs.tf", + "/examples/kubernetes/egress-with-udr-kubenet/variables.tf", + "/examples/kubernetes/egress-with-udr-kubenet/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT53", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_role_assignment", + "azurerm_route_table", + "azurerm_subnet_route_table_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT53", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.1.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.1.0.0/22" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_route_table", + "name": "example", + "properties": { + "name": "${var.prefix}fwrt", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "disable_bgp_route_propagation": false, + "route": [ + { + "name": "${var.prefix}fwrn", + "address_prefix": "0.0.0.0/0", + "next_hop_type": "VirtualAppliance", + "next_hop_in_ip_address": "${var.fwprivate_ip}" + } + ], + "compiletime_identity": "azurerm_route_table.example" + } + }, + { + "type": "azurerm_subnet_route_table_association", + "name": "example", + "properties": { + "subnet_id": "${azurerm_subnet.internal.id}", + "route_table_id": "${azurerm_route_table.example.id}", + "compiletime_identity": "azurerm_subnet_route_table_association.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-k8s", + "default_node_pool": [ + { + "name": "system", + "node_count": 1, + "vm_size": "Standard_DS2_v2", + "vnet_subnet_id": "${azurerm_subnet.internal.id}", + "type": "VirtualMachineScaleSets" + } + ], + "network_profile": [ + { + "network_plugin": "kubenet", + "load_balancer_sku": "standard", + "outbound_type": "userDefinedRouting" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": false + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "kube_dashboard": [ + { + "enabled": true + } + ], + "oms_agent": [ + { + "enabled": false + } + ] + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + }, + { + "type": "azurerm_role_assignment", + "name": "example", + "properties": { + "scope": "${azurerm_resource_group.example.id}", + "role_definition_name": "Contributor", + "principal_id": "${azurerm_kubernetes_cluster.example.identity[0].principal_id}", + "compiletime_identity": "azurerm_role_assignment.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT54 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT54 new file mode 100644 index 0000000..3c77e71 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT54 @@ -0,0 +1,140 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/monitoring-log-analytics/outputs.tf", + "/examples/kubernetes/monitoring-log-analytics/variables.tf", + "/examples/kubernetes/monitoring-log-analytics/main.tf" + ], + "timestamp": 1642943279744, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/monitoring-log-analytics/outputs.tf", + "/examples/kubernetes/monitoring-log-analytics/variables.tf", + "/examples/kubernetes/monitoring-log-analytics/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT54", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_log_analytics_workspace", + "azurerm_log_analytics_solution" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT54", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_log_analytics_workspace", + "name": "example", + "properties": { + "name": "${var.prefix}-law", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "PerGB2018", + "compiletime_identity": "azurerm_log_analytics_workspace.example" + } + }, + { + "type": "azurerm_log_analytics_solution", + "name": "example", + "properties": { + "solution_name": "Containers", + "workspace_resource_id": "${azurerm_log_analytics_workspace.example.id}", + "workspace_name": "${azurerm_log_analytics_workspace.example.name}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "plan": [ + { + "publisher": "Microsoft", + "product": "OMSGallery/Containers" + } + ], + "compiletime_identity": "azurerm_log_analytics_solution.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-k8s", + "default_node_pool": [ + { + "name": "default", + "node_count": 1, + "vm_size": "Standard_DS2_v2" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": false + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "kube_dashboard": [ + { + "enabled": true + } + ], + "oms_agent": [ + { + "enabled": true, + "log_analytics_workspace_id": "${azurerm_log_analytics_workspace.example.id}" + } + ] + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT55 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT55 new file mode 100644 index 0000000..fcebf51 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT55 @@ -0,0 +1,157 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/network-policy-calico/outputs.tf", + "/examples/kubernetes/network-policy-calico/variables.tf", + "/examples/kubernetes/network-policy-calico/main.tf" + ], + "timestamp": 1642943279748, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/network-policy-calico/outputs.tf", + "/examples/kubernetes/network-policy-calico/variables.tf", + "/examples/kubernetes/network-policy-calico/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT55", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_virtual_network", + "azurerm_kubernetes_cluster_node_pool" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT55", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "akscalico-k8s-resources", + "location": "West US", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "akscalico-network", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.1.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.1.0.0/22" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "akscalico-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "akscalico-k8s", + "default_node_pool": [ + { + "name": "system", + "node_count": 1, + "vm_size": "Standard_DS2_v2", + "vnet_subnet_id": "${azurerm_subnet.internal.id}" + } + ], + "network_profile": [ + { + "network_plugin": "azure", + "network_policy": "calico", + "load_balancer_sku": "standard" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": false + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "kube_dashboard": [ + { + "enabled": true + } + ], + "oms_agent": [ + { + "enabled": false + } + ] + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + }, + { + "type": "azurerm_kubernetes_cluster_node_pool", + "name": "user", + "properties": { + "name": "user", + "kubernetes_cluster_id": "${azurerm_kubernetes_cluster.example.id}", + "vm_size": "Standard_DS2_v2", + "node_count": 1, + "vnet_subnet_id": "${azurerm_subnet.internal.id}", + "compiletime_identity": "azurerm_kubernetes_cluster_node_pool.user" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT56 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT56 new file mode 100644 index 0000000..2b629d1 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT56 @@ -0,0 +1,150 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/nodes-on-internal-network/outputs.tf", + "/examples/kubernetes/nodes-on-internal-network/variables.tf", + "/examples/kubernetes/nodes-on-internal-network/main.tf" + ], + "timestamp": 1642943279752, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/nodes-on-internal-network/outputs.tf", + "/examples/kubernetes/nodes-on-internal-network/variables.tf", + "/examples/kubernetes/nodes-on-internal-network/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT56", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_virtual_network", + "azurerm_kubernetes_cluster_node_pool" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT56", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.1.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "internal", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.1.0.0/22" + ], + "compiletime_identity": "azurerm_subnet.internal" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-k8s", + "default_node_pool": [ + { + "name": "system", + "node_count": 1, + "vm_size": "Standard_DS2_v2", + "vnet_subnet_id": "${azurerm_subnet.internal.id}" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": false + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "kube_dashboard": [ + { + "enabled": true + } + ], + "oms_agent": [ + { + "enabled": false + } + ] + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + }, + { + "type": "azurerm_kubernetes_cluster_node_pool", + "name": "user", + "properties": { + "name": "user", + "kubernetes_cluster_id": "${azurerm_kubernetes_cluster.example.id}", + "vm_size": "Standard_DS2_v2", + "node_count": 1, + "vnet_subnet_id": "${azurerm_subnet.internal.id}", + "compiletime_identity": "azurerm_kubernetes_cluster_node_pool.user" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT57 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT57 new file mode 100644 index 0000000..048e2f6 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT57 @@ -0,0 +1,164 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/old/advanced-networking/outputs.tf", + "/examples/kubernetes/old/advanced-networking/variables.tf", + "/examples/kubernetes/old/advanced-networking/main.tf" + ], + "timestamp": 1642943279756, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/old/advanced-networking/outputs.tf", + "/examples/kubernetes/old/advanced-networking/variables.tf", + "/examples/kubernetes/old/advanced-networking/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT57", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_route_table", + "azurerm_subnet_route_table_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT57", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-anw-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_route_table", + "name": "example", + "properties": { + "name": "${var.prefix}-routetable", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "route": [ + { + "name": "default", + "address_prefix": "10.100.0.0/14", + "next_hop_type": "VirtualAppliance", + "next_hop_in_ip_address": "10.10.1.1" + } + ], + "compiletime_identity": "azurerm_route_table.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-network", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.1.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefix": "10.1.0.0/22", + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_subnet_route_table_association", + "name": "example", + "properties": { + "subnet_id": "${azurerm_subnet.example.id}", + "route_table_id": "${azurerm_route_table.example.id}", + "compiletime_identity": "azurerm_subnet_route_table_association.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-anw", + "location": "${azurerm_resource_group.example.location}", + "dns_prefix": "${var.prefix}-anw", + "resource_group_name": "${azurerm_resource_group.example.name}", + "linux_profile": [ + { + "admin_username": "acctestuser1", + "ssh_key": [ + { + "key_data": "${file(var.public_ssh_key_path)}" + } + ] + } + ], + "agent_pool_profile": [ + [ + { + "name": "agentpool", + "vm_size": "Standard_DS2_v2", + "os_type": "Linux", + "os_disk_size_gb": 30, + "vnet_subnet_id": "${azurerm_subnet.example.id}" + }, + { + "name": "agentpool", + "vm_size": "Standard_DS2_v2", + "os_type": "Linux", + "os_disk_size_gb": 30, + "vnet_subnet_id": "${azurerm_subnet.example.id}" + } + ] + ], + "service_principal": [ + { + "client_id": "${var.kubernetes_client_id}", + "client_secret": "${var.kubernetes_client_secret}" + } + ], + "network_profile": [ + { + "network_plugin": "azure" + } + ], + "depends_on": [ + "${azurerm_subnet_route_table_association.example}" + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT58 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT58 new file mode 100644 index 0000000..aac7dc1 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT58 @@ -0,0 +1,164 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/old/advanced-networking-calico-policy/outputs.tf", + "/examples/kubernetes/old/advanced-networking-calico-policy/variables.tf", + "/examples/kubernetes/old/advanced-networking-calico-policy/main.tf" + ], + "timestamp": 1642943279760, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/old/advanced-networking-calico-policy/outputs.tf", + "/examples/kubernetes/old/advanced-networking-calico-policy/variables.tf", + "/examples/kubernetes/old/advanced-networking-calico-policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT58", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_route_table", + "azurerm_subnet_route_table_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT58", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "test", + "properties": { + "name": "${var.prefix}-anw-resources", + "location": "West Europe", + "compiletime_identity": "azurerm_resource_group.test" + } + }, + { + "type": "azurerm_route_table", + "name": "test", + "properties": { + "name": "${var.prefix}-routetable", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "route": [ + { + "name": "default", + "address_prefix": "10.100.0.0/14", + "next_hop_type": "VirtualAppliance", + "next_hop_in_ip_address": "10.10.1.1" + } + ], + "compiletime_identity": "azurerm_route_table.test" + } + }, + { + "type": "azurerm_virtual_network", + "name": "test", + "properties": { + "name": "${var.prefix}-network", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "address_space": [ + "10.1.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.test" + } + }, + { + "type": "azurerm_subnet", + "name": "test", + "properties": { + "name": "internal", + "resource_group_name": "${azurerm_resource_group.test.name}", + "address_prefixes": [ + "10.1.0.0/24" + ], + "virtual_network_name": "${azurerm_virtual_network.test.name}", + "compiletime_identity": "azurerm_subnet.test" + } + }, + { + "type": "azurerm_subnet_route_table_association", + "name": "test", + "properties": { + "subnet_id": "${azurerm_subnet.test.id}", + "route_table_id": "${azurerm_route_table.test.id}", + "compiletime_identity": "azurerm_subnet_route_table_association.test" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "test", + "properties": { + "name": "${var.prefix}-anw", + "location": "${azurerm_resource_group.test.location}", + "dns_prefix": "${var.prefix}-anw", + "resource_group_name": "${azurerm_resource_group.test.name}", + "linux_profile": [ + { + "admin_username": "acctestuser1", + "ssh_key": [ + { + "key_data": "${file(var.public_ssh_key_path)}" + } + ] + } + ], + "agent_pool_profile": [ + [ + { + "name": "agentpool", + "vm_size": "Standard_DS2_v2", + "os_type": "Linux", + "os_disk_size_gb": 30, + "vnet_subnet_id": "${azurerm_subnet.test.id}" + }, + { + "name": "agentpool", + "vm_size": "Standard_DS2_v2", + "os_type": "Linux", + "os_disk_size_gb": 30, + "vnet_subnet_id": "${azurerm_subnet.test.id}" + } + ] + ], + "service_principal": [ + { + "client_id": "${var.kubernetes_client_id}", + "client_secret": "${var.kubernetes_client_secret}" + } + ], + "network_profile": [ + { + "network_plugin": "azure", + "network_policy": "calico" + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT59 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT59 new file mode 100644 index 0000000..ae362f8 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT59 @@ -0,0 +1,91 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/old/role-based-access-control/outputs.tf", + "/examples/kubernetes/old/role-based-access-control/variables.tf", + "/examples/kubernetes/old/role-based-access-control/main.tf" + ], + "timestamp": 1642943279763, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/old/role-based-access-control/outputs.tf", + "/examples/kubernetes/old/role-based-access-control/variables.tf", + "/examples/kubernetes/old/role-based-access-control/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT59", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT59", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-rbac-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-rbac", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-rbac", + "agent_pool_profile": [ + [ + { + "name": "default", + "vm_size": "Standard_D1_v2", + "os_type": "Linux", + "os_disk_size_gb": 30 + } + ] + ], + "service_principal": [ + { + "client_id": "${var.kubernetes_client_id}", + "client_secret": "${var.kubernetes_client_secret}" + } + ], + "role_based_access_control": [ + { + "enabled": true + } + ], + "tags": { + "Environment": "Production" + }, + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT6 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT6 new file mode 100644 index 0000000..62e213e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT6 @@ -0,0 +1,95 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/docker-kubernetes/outputs.tf", + "/examples/app-service/docker-kubernetes/variables.tf", + "/examples/app-service/docker-kubernetes/main.tf" + ], + "timestamp": 1642943279584, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/docker-kubernetes/outputs.tf", + "/examples/app-service/docker-kubernetes/variables.tf", + "/examples/app-service/docker-kubernetes/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT6", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_app_service", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT6", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "kind": "Linux", + "reserved": true, + "sku": [ + { + "tier": "Standard", + "size": "S1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_app_service", + "name": "main", + "properties": { + "name": "${var.prefix}-appservice", + "location": "${azurerm_resource_group.main.location}", + "resource_group_name": "${azurerm_resource_group.main.name}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "site_config": [ + { + "app_command_line": "", + "linux_fx_version": "KUBE|${filebase64(\"kubernetes.yml\")}" + } + ], + "app_settings": { + "WEBSITES_ENABLE_APP_SERVICE_STORAGE": false + }, + "compiletime_identity": "azurerm_app_service.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT60 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT60 new file mode 100644 index 0000000..800cb3e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT60 @@ -0,0 +1,98 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/old/role-based-access-control-azuread/outputs.tf", + "/examples/kubernetes/old/role-based-access-control-azuread/variables.tf", + "/examples/kubernetes/old/role-based-access-control-azuread/main.tf" + ], + "timestamp": 1642943279766, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/old/role-based-access-control-azuread/outputs.tf", + "/examples/kubernetes/old/role-based-access-control-azuread/variables.tf", + "/examples/kubernetes/old/role-based-access-control-azuread/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT60", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT60", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-rbac-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-rbac", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-rbac", + "agent_pool_profile": [ + [ + { + "name": "default", + "vm_size": "Standard_D1_v2", + "os_type": "Linux", + "os_disk_size_gb": 30 + } + ] + ], + "service_principal": [ + { + "client_id": "${var.kubernetes_client_id}", + "client_secret": "${var.kubernetes_client_secret}" + } + ], + "role_based_access_control": [ + { + "enabled": true, + "azure_active_directory": [ + { + "client_app_id": "${var.kubernetes_client_id}", + "server_app_id": "${var.kubernetes_client_id}", + "server_app_secret": "${var.kubernetes_client_secret}" + } + ] + } + ], + "tags": { + "Environment": "Production" + }, + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT61 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT61 new file mode 100644 index 0000000..bcbac3d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT61 @@ -0,0 +1,110 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/private-api-server/outputs.tf", + "/examples/kubernetes/private-api-server/variables.tf", + "/examples/kubernetes/private-api-server/main.tf" + ], + "timestamp": 1642943279770, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/private-api-server/outputs.tf", + "/examples/kubernetes/private-api-server/variables.tf", + "/examples/kubernetes/private-api-server/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT61", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT61", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-k8s", + "default_node_pool": [ + { + "name": "default", + "node_count": 1, + "vm_size": "Standard_DS2_v2" + } + ], + "network_profile": [ + { + "network_plugin": "azure", + "load_balancer_sku": "standard" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "private_cluster_enabled": true, + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": false + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "oms_agent": [ + { + "enabled": false + } + ] + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT62 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT62 new file mode 100644 index 0000000..947cd64 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT62 @@ -0,0 +1,126 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/public-ip/outputs.tf", + "/examples/kubernetes/public-ip/variables.tf", + "/examples/kubernetes/public-ip/main.tf" + ], + "timestamp": 1642943279773, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/public-ip/outputs.tf", + "/examples/kubernetes/public-ip/variables.tf", + "/examples/kubernetes/public-ip/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT62", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_virtual_network" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT62", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_public_ip": { + "example": { + "name": "${reverse(split(\"/\",tolist(azurerm_kubernetes_cluster.example.network_profile[0].load_balancer_profile[0].effective_outbound_ips)[0]))[0]}", + "resource_group_name": "${azurerm_kubernetes_cluster.example.node_resource_group}", + "compiletime_identity": "data.azurerm_public_ip.example" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-aks-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "192.168.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "192.168.1.0/24" + ], + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "service_endpoints": [ + "Microsoft.Sql" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-aks", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "example-dns-prefix", + "default_node_pool": [ + { + "name": "examplepool", + "node_count": 2, + "vm_size": "Standard_B2s", + "vnet_subnet_id": "${azurerm_subnet.example.id}" + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "network_profile": [ + { + "network_plugin": "kubenet", + "load_balancer_sku": "Standard" + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT63 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT63 new file mode 100644 index 0000000..9dce93c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT63 @@ -0,0 +1,129 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/kubernetes/spot-node-pool/outputs.tf", + "/examples/kubernetes/spot-node-pool/variables.tf", + "/examples/kubernetes/spot-node-pool/main.tf" + ], + "timestamp": 1642943279777, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/kubernetes/spot-node-pool/outputs.tf", + "/examples/kubernetes/spot-node-pool/variables.tf", + "/examples/kubernetes/spot-node-pool/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT63", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_kubernetes_cluster", + "azurerm_resource_group", + "azurerm_kubernetes_cluster_node_pool" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT63", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_kubernetes_cluster", + "name": "example", + "properties": { + "name": "${var.prefix}-k8s", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "dns_prefix": "${var.prefix}-k8s", + "default_node_pool": [ + { + "name": "default", + "node_count": 1, + "vm_size": "Standard_DS2_v2" + } + ], + "addon_profile": [ + { + "aci_connector_linux": [ + { + "enabled": false + } + ], + "azure_policy": [ + { + "enabled": false + } + ], + "http_application_routing": [ + { + "enabled": false + } + ], + "kube_dashboard": [ + { + "enabled": true + } + ], + "oms_agent": [ + { + "enabled": false + } + ] + } + ], + "identity": [ + { + "type": "SystemAssigned" + } + ], + "compiletime_identity": "azurerm_kubernetes_cluster.example" + } + }, + { + "type": "azurerm_kubernetes_cluster_node_pool", + "name": "example", + "properties": { + "name": "spot", + "kubernetes_cluster_id": "${azurerm_kubernetes_cluster.example.id}", + "vm_size": "Standard_DS2_v2", + "node_count": 1, + "priority": "Spot", + "eviction_policy": "Delete", + "spot_max_price": 0.5, + "node_labels": { + "kubernetes.azure.com/scalesetpriority": "spot" + }, + "node_taints": [ + "kubernetes.azure.com/scalesetpriority=spot:NoSchedule" + ], + "compiletime_identity": "azurerm_kubernetes_cluster_node_pool.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT64 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT64 new file mode 100644 index 0000000..551a520 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT64 @@ -0,0 +1,65 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/log-analytics/basic/variables.tf", + "/examples/log-analytics/basic/main.tf" + ], + "timestamp": 1642943279780, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/log-analytics/basic/variables.tf", + "/examples/log-analytics/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT64", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_log_analytics_workspace" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT64", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_log_analytics_workspace", + "name": "example", + "properties": { + "name": "${var.prefix}-laworkspace", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "PerGB2018", + "compiletime_identity": "azurerm_log_analytics_workspace.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT65 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT65 new file mode 100644 index 0000000..3f176f5 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT65 @@ -0,0 +1,102 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/log-analytics/solution/variables.tf", + "/examples/log-analytics/solution/main.tf" + ], + "timestamp": 1642943279784, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/log-analytics/solution/variables.tf", + "/examples/log-analytics/solution/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT65", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_log_analytics_workspace", + "azurerm_log_analytics_solution" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT65", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_log_analytics_workspace", + "name": "example", + "properties": { + "name": "${var.prefix}-laworkspace", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "PerGB2018", + "compiletime_identity": "azurerm_log_analytics_workspace.example" + } + }, + { + "type": "azurerm_log_analytics_solution", + "name": "test", + "properties": { + "solution_name": "ContainerInsights", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "workspace_resource_id": "${azurerm_log_analytics_workspace.example.id}", + "workspace_name": "${azurerm_log_analytics_workspace.example.name}", + "plan": [ + { + "publisher": "Microsoft", + "product": "OMSGallery/Containers" + } + ], + "compiletime_identity": "azurerm_log_analytics_solution.test" + } + }, + { + "type": "azurerm_log_analytics_solution", + "name": "test2", + "properties": { + "solution_name": "Security", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "workspace_resource_id": "${azurerm_log_analytics_workspace.example.id}", + "workspace_name": "${azurerm_log_analytics_workspace.example.name}", + "plan": [ + { + "publisher": "Microsoft", + "product": "OMSGallery/Security" + } + ], + "compiletime_identity": "azurerm_log_analytics_solution.test2" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT66 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT66 new file mode 100644 index 0000000..1119e13 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT66 @@ -0,0 +1,88 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/logic-app/variables.tf", + "/examples/logic-app/main.tf" + ], + "timestamp": 1642943279787, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/logic-app/variables.tf", + "/examples/logic-app/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT66", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_logic_app_trigger_recurrence", + "azurerm_logic_app_workflow", + "azurerm_resource_group", + "azurerm_logic_app_action_http" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT66", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_logic_app_workflow", + "name": "example", + "properties": { + "name": "${var.prefix}-logicapp", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_logic_app_workflow.example" + } + }, + { + "type": "azurerm_logic_app_trigger_recurrence", + "name": "hourly", + "properties": { + "name": "run-every-hour", + "logic_app_id": "${azurerm_logic_app_workflow.example.id}", + "frequency": "Hour", + "interval": 1, + "compiletime_identity": "azurerm_logic_app_trigger_recurrence.hourly" + } + }, + { + "type": "azurerm_logic_app_action_http", + "name": "main", + "properties": { + "name": "clear-stale-objects", + "logic_app_id": "${azurerm_logic_app_workflow.example.id}", + "method": "DELETE", + "uri": "http://example.com/clear-stable-objects", + "compiletime_identity": "azurerm_logic_app_action_http.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT67 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT67 new file mode 100644 index 0000000..ba1ed60 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT67 @@ -0,0 +1,87 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/managed-application/application-definition/variables.tf", + "/examples/managed-application/application-definition/main.tf" + ], + "timestamp": 1642943279791, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/managed-application/application-definition/variables.tf", + "/examples/managed-application/application-definition/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT67", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_managed_application_definition" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT67", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + }, + "azurerm_role_definition": { + "builtin": { + "name": "Contributor", + "compiletime_identity": "data.azurerm_role_definition.builtin" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_managed_application_definition", + "name": "example", + "properties": { + "name": "${var.prefix}managedappdef", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "lock_level": "ReadOnly", + "package_file_uri": "https://github.com/Azure/azure-managedapp-samples/raw/master/Managed Application Sample Packages/201-managed-storage-account/managedstorage.zip", + "display_name": "TestManagedApplicationDefinition", + "description": "Test Managed Application Definition", + "authorization": [ + { + "service_principal_id": "${data.azurerm_client_config.current.object_id}", + "role_definition_id": "${split(\"/\",data.azurerm_role_definition.builtin.id)[length(split(\"/\",data.azurerm_role_definition.builtin.id)) - 1]}" + } + ], + "compiletime_identity": "azurerm_managed_application_definition.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT68 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT68 new file mode 100644 index 0000000..480430d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT68 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/1-dependencies.tf" + ], + "timestamp": 1642943279794, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/1-dependencies.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT68", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_key_vault", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT68", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "test", + "properties": { + "name": "${var.prefix}-resources", + "location": "North Europe", + "compiletime_identity": "azurerm_resource_group.test" + } + }, + { + "type": "azurerm_key_vault", + "name": "test", + "properties": { + "name": "${var.prefix}kv", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "premium", + "enabled_for_disk_encryption": true, + "compiletime_identity": "azurerm_key_vault.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT69 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT69 new file mode 100644 index 0000000..f39d533 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT69 @@ -0,0 +1,49 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/2-soft-delete.tf" + ], + "timestamp": 1642943279798, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/2-soft-delete.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT69", + "status": "active", + "validate": true, + "resourceTypes": [ + "null_resource" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT69", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "null_resource", + "name": "enable-soft-delete-and-purge-protection", + "properties": { + "provisioner": [ + { + "local-exec": { + "command": "az keyvault update --name ${azurerm_key_vault.test.name} --resource-group ${azurerm_key_vault.test.resource_group_name} --enable-soft-delete true --enable-purge-protection true" + } + } + ], + "compiletime_identity": "null_resource.enable-soft-delete-and-purge-protection" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT7 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT7 new file mode 100644 index 0000000..84cd080 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT7 @@ -0,0 +1,137 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/function-azure-RBAC-role-assignment/outputs.tf", + "/examples/app-service/function-azure-RBAC-role-assignment/variables.tf", + "/examples/app-service/function-azure-RBAC-role-assignment/main.tf" + ], + "timestamp": 1642943279587, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/function-azure-RBAC-role-assignment/outputs.tf", + "/examples/app-service/function-azure-RBAC-role-assignment/variables.tf", + "/examples/app-service/function-azure-RBAC-role-assignment/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT7", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_app_service_plan", + "azurerm_role_assignment", + "azurerm_storage_account", + "azurerm_function_app", + "azurerm_application_insights" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT7", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_subscription": { + "primary": { + "compiletime_identity": "data.azurerm_subscription.primary" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_storage_account", + "name": "main", + "properties": { + "name": "${var.prefix}storageacct", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.main" + } + }, + { + "type": "azurerm_application_insights", + "name": "main", + "properties": { + "name": "${var.prefix}-appinsights", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "application_type": "web", + "compiletime_identity": "azurerm_application_insights.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "kind": "FunctionApp", + "sku": [ + { + "tier": "Dynamic", + "size": "Y1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_function_app", + "name": "main", + "properties": { + "name": "${var.prefix}-function", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "storage_connection_string": "${azurerm_storage_account.main.primary_connection_string}", + "app_settings": { + "AppInsights_InstrumentationKey": "${azurerm_application_insights.main.instrumentation_key}" + }, + "identity": [ + { + "type": "SystemAssigned" + } + ], + "compiletime_identity": "azurerm_function_app.main" + } + }, + { + "type": "azurerm_role_assignment", + "name": "main", + "properties": { + "scope": "${data.azurerm_subscription.primary.id}", + "role_definition_name": "${var.role_definition_name}", + "principal_id": "${azurerm_function_app.main.identity[0].principal_id}", + "compiletime_identity": "azurerm_role_assignment.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT70 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT70 new file mode 100644 index 0000000..1732bfc --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT70 @@ -0,0 +1,144 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/main.tf" + ], + "timestamp": 1642943279801, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/managed-disks/encrypted/variables.tf", + "/examples/managed-disks/encrypted/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT70", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_disk_encryption_set", + "azurerm_key_vault_key", + "azurerm_role_assignment", + "azurerm_key_vault_access_policy", + "azurerm_managed_disk" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT70", + "collection": "terraformtemplate", + "json": { + "resources": [ + { + "type": "azurerm_key_vault_access_policy", + "name": "service-principal", + "properties": { + "key_vault_id": "${azurerm_key_vault.test.id}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "key_permissions": [ + "create", + "delete", + "get", + "update" + ], + "secret_permissions": [ + "get", + "delete", + "set" + ], + "depends_on": [ + "null_resource.enable-soft-delete-and-purge-protection" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.service-principal" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "disk-encryption", + "properties": { + "key_vault_id": "${azurerm_key_vault.test.id}", + "key_permissions": [ + "get", + "wrapkey", + "unwrapkey" + ], + "tenant_id": "${azurerm_disk_encryption_set.test.identity[0].tenant_id}", + "object_id": "${azurerm_disk_encryption_set.test.identity[0].principal_id}", + "compiletime_identity": "azurerm_key_vault_access_policy.disk-encryption" + } + }, + { + "type": "azurerm_key_vault_key", + "name": "test", + "properties": { + "name": "examplekey", + "key_vault_id": "${azurerm_key_vault.test.id}", + "key_type": "RSA", + "key_size": 2048, + "key_opts": [ + "decrypt", + "encrypt", + "sign", + "unwrapKey", + "verify", + "wrapKey" + ], + "depends_on": [ + "azurerm_key_vault_access_policy.service-principal" + ], + "compiletime_identity": "azurerm_key_vault_key.test" + } + }, + { + "type": "azurerm_disk_encryption_set", + "name": "test", + "properties": { + "name": "${var.prefix}-des", + "resource_group_name": "${azurerm_resource_group.test.name}", + "location": "${azurerm_resource_group.test.location}", + "key_vault_key_id": "${azurerm_key_vault_key.test.id}", + "identity": [ + { + "type": "SystemAssigned" + } + ], + "compiletime_identity": "azurerm_disk_encryption_set.test" + } + }, + { + "type": "azurerm_role_assignment", + "name": "disk-encryption-read-keyvault", + "properties": { + "scope": "${azurerm_key_vault.test.id}", + "role_definition_name": "Reader", + "principal_id": "${azurerm_disk_encryption_set.test.identity[0].principal_id}", + "compiletime_identity": "azurerm_role_assignment.disk-encryption-read-keyvault" + } + }, + { + "type": "azurerm_managed_disk", + "name": "test", + "properties": { + "name": "${var.prefix}-disk", + "location": "${azurerm_resource_group.test.location}", + "resource_group_name": "${azurerm_resource_group.test.name}", + "storage_account_type": "Standard_LRS", + "create_option": "Empty", + "disk_size_gb": 10, + "disk_encryption_set_id": "${azurerm_disk_encryption_set.test.id}", + "depends_on": [ + "azurerm_role_assignment.disk-encryption-read-keyvault", + "azurerm_key_vault_access_policy.disk-encryption" + ], + "compiletime_identity": "azurerm_managed_disk.test" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT71 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT71 new file mode 100644 index 0000000..b6a087f --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT71 @@ -0,0 +1,93 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/media-services/basic/variables.tf", + "/examples/media-services/basic/main.tf" + ], + "timestamp": 1642943279805, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/media-services/basic/variables.tf", + "/examples/media-services/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT71", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_media_services_account", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT71", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "output": [ + { + "rendered": { + "value": "${azurerm_media_services_account.example.id}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}storacc", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "GRS", + "tags": { + "environment": "staging" + }, + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_media_services_account", + "name": "example", + "properties": { + "name": "${var.prefix}mediasvc", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "storage_account": [ + { + "id": "${azurerm_storage_account.example.id}", + "is_primary": true + } + ], + "compiletime_identity": "azurerm_media_services_account.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT72 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT72 new file mode 100644 index 0000000..8163adc --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT72 @@ -0,0 +1,105 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/media-services/basic-with-assets/variables.tf", + "/examples/media-services/basic-with-assets/main.tf" + ], + "timestamp": 1642943279809, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/media-services/basic-with-assets/variables.tf", + "/examples/media-services/basic-with-assets/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT72", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_media_services_account", + "azurerm_resource_group", + "azurerm_media_asset" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT72", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "output": [ + { + "rendered": { + "value": "${azurerm_media_asset.example.id}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}storacc", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "GRS", + "tags": { + "environment": "staging" + }, + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_media_services_account", + "name": "example", + "properties": { + "name": "${var.prefix}mediasvc", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "storage_account": [ + { + "id": "${azurerm_storage_account.example.id}", + "is_primary": true + } + ], + "compiletime_identity": "azurerm_media_services_account.example" + } + }, + { + "type": "azurerm_media_asset", + "name": "example", + "properties": { + "name": "Asset1", + "description": "Asset description", + "resource_group_name": "${azurerm_resource_group.example.name}", + "media_services_account_name": "${azurerm_media_services_account.example.name}", + "compiletime_identity": "azurerm_media_asset.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT73 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT73 new file mode 100644 index 0000000..1ea7aa5 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT73 @@ -0,0 +1,109 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/media-services/multiple-storage-accounts/variables.tf", + "/examples/media-services/multiple-storage-accounts/main.tf" + ], + "timestamp": 1642943279813, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/media-services/multiple-storage-accounts/variables.tf", + "/examples/media-services/multiple-storage-accounts/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT73", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_storage_account", + "azurerm_media_services_account", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT73", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "output": [ + { + "rendered": { + "value": "${azurerm_media_services_account.example.id}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}stor1", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "GRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example2", + "properties": { + "name": "${var.prefix}stor2", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "GRS", + "tags": { + "environment": "staging" + }, + "compiletime_identity": "azurerm_storage_account.example2" + } + }, + { + "type": "azurerm_media_services_account", + "name": "example", + "properties": { + "name": "${var.prefix}-mediasvc", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "storage_account": [ + { + "id": "${azurerm_storage_account.example.id}", + "is_primary": true + }, + { + "id": "${azurerm_storage_account.example2.id}", + "is_primary": false + } + ], + "compiletime_identity": "azurerm_media_services_account.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT74 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT74 new file mode 100644 index 0000000..062104a --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT74 @@ -0,0 +1,235 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/mssql/mssqlvm/variables.tf", + "/examples/mssql/mssqlvm/main.tf" + ], + "timestamp": 1642943279816, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/mssql/mssqlvm/variables.tf", + "/examples/mssql/mssqlvm/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT74", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_network_security_rule", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_subnet_network_security_group_association", + "azurerm_network_interface", + "azurerm_virtual_machine", + "azurerm_public_ip", + "azurerm_network_security_group", + "azurerm_network_interface_security_group_association", + "azurerm_mssql_virtual_machine" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT74", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-VN", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-SN", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.0.0/24" + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "example", + "properties": { + "subnet_id": "${azurerm_subnet.example.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.example" + } + }, + { + "type": "azurerm_public_ip", + "name": "vm", + "properties": { + "name": "${var.prefix}-PIP", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Dynamic", + "compiletime_identity": "azurerm_public_ip.vm" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-NSG", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "RDPRule", + "properties": { + "name": "RDPRule", + "resource_group_name": "${azurerm_resource_group.example.name}", + "priority": 1000, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 3389, + "source_address_prefix": "167.220.255.0/25", + "destination_address_prefix": "*", + "network_security_group_name": "${azurerm_network_security_group.example.name}", + "compiletime_identity": "azurerm_network_security_rule.RDPRule" + } + }, + { + "type": "azurerm_network_security_rule", + "name": "MSSQLRule", + "properties": { + "name": "MSSQLRule", + "resource_group_name": "${azurerm_resource_group.example.name}", + "priority": 1001, + "direction": "Inbound", + "access": "Allow", + "protocol": "Tcp", + "source_port_range": "*", + "destination_port_range": 1433, + "source_address_prefix": "167.220.255.0/25", + "destination_address_prefix": "*", + "network_security_group_name": "${azurerm_network_security_group.example.name}", + "compiletime_identity": "azurerm_network_security_rule.MSSQLRule" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}-NIC", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "exampleconfiguration1", + "subnet_id": "${azurerm_subnet.example.id}", + "private_ip_address_allocation": "Dynamic", + "public_ip_address_id": "${azurerm_public_ip.vm.id}" + } + ], + "compiletime_identity": "azurerm_network_interface.example" + } + }, + { + "type": "azurerm_network_interface_security_group_association", + "name": "example", + "properties": { + "network_interface_id": "${azurerm_network_interface.example.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_network_interface_security_group_association.example" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}-VM", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_DS14_v2", + "storage_image_reference": [ + { + "publisher": "MicrosoftSQLServer", + "offer": "SQL2017-WS2016", + "sku": "SQLDEV", + "version": "laexample" + } + ], + "storage_os_disk": [ + { + "name": "${var.prefix}-OSDisk", + "caching": "ReadOnly", + "create_option": "FromImage", + "managed_disk_type": "Premium_LRS" + } + ], + "os_profile": [ + { + "computer_name": "winhost01", + "admin_username": "exampleadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_windows_config": [ + { + "timezone": "Pacific Standard Time", + "provision_vm_agent": true, + "enable_automatic_upgrades": true + } + ], + "compiletime_identity": "azurerm_virtual_machine.example" + } + }, + { + "type": "azurerm_mssql_virtual_machine", + "name": "example", + "properties": { + "virtual_machine_id": "${azurerm_virtual_machine.example.id}", + "sql_license_type": "PAYG", + "compiletime_identity": "azurerm_mssql_virtual_machine.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT75 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT75 new file mode 100644 index 0000000..89e9132 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT75 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/netapp/account/variables.tf", + "/examples/netapp/account/main.tf" + ], + "timestamp": 1642943279821, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/account/variables.tf", + "/examples/netapp/account/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT75", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_netapp_account", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT75", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example", + "properties": { + "name": "${var.prefix}-netappaccount", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "active_directory": [ + { + "username": "aduser", + "password": "aduserpwd", + "smb_server_name": "SMBSERVER", + "dns_servers": [ + "1.2.3.4" + ], + "domain": "westcentralus.com", + "organizational_unit": "OU=FirstLevel" + } + ], + "compiletime_identity": "azurerm_netapp_account.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT76 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT76 new file mode 100644 index 0000000..9a87ec5 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT76 @@ -0,0 +1,201 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/netapp/nfsv3_volume_with_snapshot_policy/variables.tf", + "/examples/netapp/nfsv3_volume_with_snapshot_policy/main.tf" + ], + "timestamp": 1642943279824, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/nfsv3_volume_with_snapshot_policy/variables.tf", + "/examples/netapp/nfsv3_volume_with_snapshot_policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT76", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_netapp_snapshot_policy", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT76", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-virtualnetwork", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "testdelegation", + "service_delegation": [ + { + "name": "Microsoft.Netapp/volumes", + "actions": [ + "Microsoft.Network/networkinterfaces/*", + "Microsoft.Network/virtualNetworks/subnets/join/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example", + "properties": { + "name": "${var.prefix}-netappaccount", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_netapp_account.example" + } + }, + { + "type": "azurerm_netapp_snapshot_policy", + "name": "example", + "properties": { + "name": "${var.prefix}-snapshotpolicy", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "enabled": true, + "hourly_schedule": [ + { + "snapshots_to_keep": 4, + "minute": 15 + } + ], + "daily_schedule": [ + { + "snapshots_to_keep": 2, + "hour": 20, + "minute": 15 + } + ], + "weekly_schedule": [ + { + "snapshots_to_keep": 1, + "days_of_week": [ + "Monday", + "Friday" + ], + "hour": 23, + "minute": 0 + } + ], + "monthly_schedule": [ + { + "snapshots_to_keep": 1, + "days_of_month": [ + 1, + 15, + 20, + 30 + ], + "hour": 5, + "minute": 45 + } + ], + "compiletime_identity": "azurerm_netapp_snapshot_policy.example" + } + }, + { + "type": "azurerm_netapp_pool", + "name": "example", + "properties": { + "name": "${var.prefix}-netapppool", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "service_level": "Standard", + "size_in_tb": 4, + "compiletime_identity": "azurerm_netapp_pool.example" + } + }, + { + "type": "azurerm_netapp_volume", + "name": "example", + "properties": { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "name": "${var.prefix}-netappvolume", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "pool_name": "${azurerm_netapp_pool.example.name}", + "volume_path": "${var.prefix}-netappvolume", + "service_level": "Standard", + "protocols": [ + "NFSv3" + ], + "subnet_id": "${azurerm_subnet.example.id}", + "storage_quota_in_gb": 100, + "security_style": "Unix", + "data_protection_snapshot_policy": [ + { + "snapshot_policy_id": "${azurerm_netapp_snapshot_policy.example.id}" + } + ], + "compiletime_identity": "azurerm_netapp_volume.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT77 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT77 new file mode 100644 index 0000000..303bbce --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT77 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/netapp/pool/variables.tf", + "/examples/netapp/pool/main.tf" + ], + "timestamp": 1642943279828, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/pool/variables.tf", + "/examples/netapp/pool/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT77", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_netapp_account", + "azurerm_resource_group", + "azurerm_netapp_pool" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT77", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example", + "properties": { + "name": "${var.prefix}-netappaccount", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_netapp_account.example" + } + }, + { + "type": "azurerm_netapp_pool", + "name": "example", + "properties": { + "name": "${var.prefix}-netapppool", + "account_name": "${azurerm_netapp_account.example.name}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "service_level": "Premium", + "size_in_tb": 4, + "compiletime_identity": "azurerm_netapp_pool.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT78 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT78 new file mode 100644 index 0000000..45301a0 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT78 @@ -0,0 +1,151 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/netapp/snapshot/variables.tf", + "/examples/netapp/snapshot/main.tf" + ], + "timestamp": 1642943279832, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/snapshot/variables.tf", + "/examples/netapp/snapshot/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT78", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_snapshot", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT78", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-virtualnetwork", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "netapp", + "service_delegation": [ + { + "name": "Microsoft.Netapp/volumes", + "actions": [ + "Microsoft.Network/networkinterfaces/*", + "Microsoft.Network/virtualNetworks/subnets/join/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example", + "properties": { + "name": "${var.prefix}-netappaccount", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_netapp_account.example" + } + }, + { + "type": "azurerm_netapp_pool", + "name": "example", + "properties": { + "name": "${var.prefix}-netapppool", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "service_level": "Premium", + "size_in_tb": 4, + "compiletime_identity": "azurerm_netapp_pool.example" + } + }, + { + "type": "azurerm_netapp_volume", + "name": "example", + "properties": { + "name": "${var.prefix}-netappvolume", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "pool_name": "${azurerm_netapp_pool.example.name}", + "volume_path": "my-unique-file-path", + "service_level": "Premium", + "subnet_id": "${azurerm_subnet.example.id}", + "storage_quota_in_gb": 100, + "compiletime_identity": "azurerm_netapp_volume.example" + } + }, + { + "type": "azurerm_netapp_snapshot", + "name": "example", + "properties": { + "name": "${var.prefix}-netappsnapshot", + "account_name": "${azurerm_netapp_account.example.name}", + "pool_name": "${azurerm_netapp_pool.example.name}", + "volume_name": "${azurerm_netapp_volume.example.name}", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_netapp_snapshot.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT79 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT79 new file mode 100644 index 0000000..3ec53cc --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT79 @@ -0,0 +1,158 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/netapp/volume/variables.tf", + "/examples/netapp/volume/main.tf" + ], + "timestamp": 1642943279835, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/volume/variables.tf", + "/examples/netapp/volume/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT79", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT79", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-virtualnetwork", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "testdelegation", + "service_delegation": [ + { + "name": "Microsoft.Netapp/volumes", + "actions": [ + "Microsoft.Network/networkinterfaces/*", + "Microsoft.Network/virtualNetworks/subnets/join/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example", + "properties": { + "name": "${var.prefix}-netappaccount", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_netapp_account.example" + } + }, + { + "type": "azurerm_netapp_pool", + "name": "example", + "properties": { + "name": "${var.prefix}-netapppool", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "service_level": "Premium", + "size_in_tb": 4, + "compiletime_identity": "azurerm_netapp_pool.example" + } + }, + { + "type": "azurerm_netapp_volume", + "name": "example", + "properties": { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "name": "${var.prefix}-netappvolume", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "pool_name": "${azurerm_netapp_pool.example.name}", + "volume_path": "my-unique-file-path", + "service_level": "Premium", + "subnet_id": "${azurerm_subnet.example.id}", + "protocols": [ + "NFSv4.1" + ], + "storage_quota_in_gb": 100, + "export_policy_rule": [ + { + "rule_index": 1, + "allowed_clients": [ + "0.0.0.0/0" + ], + "protocols_enabled": [ + "NFSv4.1" + ], + "unix_read_only": false, + "unix_read_write": true + } + ], + "compiletime_identity": "azurerm_netapp_volume.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT8 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT8 new file mode 100644 index 0000000..7a0e016 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT8 @@ -0,0 +1,115 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/function-basic/outputs.tf", + "/examples/app-service/function-basic/variables.tf", + "/examples/app-service/function-basic/main.tf" + ], + "timestamp": 1642943279590, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/function-basic/outputs.tf", + "/examples/app-service/function-basic/variables.tf", + "/examples/app-service/function-basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT8", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_application_insights", + "azurerm_resource_group", + "azurerm_app_service_plan", + "azurerm_storage_account", + "azurerm_function_app" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT8", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "main", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.main" + } + }, + { + "type": "azurerm_storage_account", + "name": "main", + "properties": { + "name": "${var.prefix}storageacct", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.main" + } + }, + { + "type": "azurerm_application_insights", + "name": "main", + "properties": { + "name": "${var.prefix}-appinsights", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "application_type": "web", + "compiletime_identity": "azurerm_application_insights.main" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "main", + "properties": { + "name": "${var.prefix}-asp", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "kind": "FunctionApp", + "sku": [ + { + "tier": "Dynamic", + "size": "Y1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.main" + } + }, + { + "type": "azurerm_function_app", + "name": "main", + "properties": { + "name": "${var.prefix}-function", + "resource_group_name": "${azurerm_resource_group.main.name}", + "location": "${azurerm_resource_group.main.location}", + "app_service_plan_id": "${azurerm_app_service_plan.main.id}", + "storage_account_name": "${azurerm_storage_account.main.name}", + "storage_account_access_key": "${azurerm_storage_account.main.primary_access_key}", + "app_settings": { + "AppInsights_InstrumentationKey": "${azurerm_application_insights.main.instrumentation_key}" + }, + "compiletime_identity": "azurerm_function_app.main" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT80 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT80 new file mode 100644 index 0000000..96cad8f --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT80 @@ -0,0 +1,269 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/netapp/volume_crr/variables.tf", + "/examples/netapp/volume_crr/main.tf" + ], + "timestamp": 1642943279839, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/volume_crr/variables.tf", + "/examples/netapp/volume_crr/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT80", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT80", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example_primary", + "properties": { + "name": "${var.prefix}-virtualnetwork-primary", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example_primary" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example_secondary", + "properties": { + "name": "${var.prefix}-virtualnetwork-secondary", + "location": "${var.alt_location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.1.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example_secondary" + } + }, + { + "type": "azurerm_subnet", + "name": "example_primary", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example_primary.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "testdelegation", + "service_delegation": [ + { + "name": "Microsoft.Netapp/volumes", + "actions": [ + "Microsoft.Network/networkinterfaces/*", + "Microsoft.Network/virtualNetworks/subnets/join/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example_primary" + } + }, + { + "type": "azurerm_subnet", + "name": "example_secondary", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example_secondary.name}", + "address_prefixes": [ + "10.1.2.0/24" + ], + "delegation": [ + { + "name": "testdelegation", + "service_delegation": [ + { + "name": "Microsoft.Netapp/volumes", + "actions": [ + "Microsoft.Network/networkinterfaces/*", + "Microsoft.Network/virtualNetworks/subnets/join/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example_secondary" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example_primary", + "properties": { + "name": "${var.prefix}-netappaccount-primary", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_netapp_account.example_primary" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example_secondary", + "properties": { + "name": "${var.prefix}-netappaccount-secondary", + "location": "${var.alt_location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_netapp_account.example_secondary" + } + }, + { + "type": "azurerm_netapp_pool", + "name": "example_primary", + "properties": { + "name": "${var.prefix}-netapppool-primary", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example_primary.name}", + "service_level": "Premium", + "size_in_tb": 4, + "compiletime_identity": "azurerm_netapp_pool.example_primary" + } + }, + { + "type": "azurerm_netapp_pool", + "name": "example_secondary", + "properties": { + "name": "${var.prefix}-netapppool-secondary", + "location": "${var.alt_location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example_secondary.name}", + "service_level": "Standard", + "size_in_tb": 4, + "compiletime_identity": "azurerm_netapp_pool.example_secondary" + } + }, + { + "type": "azurerm_netapp_volume", + "name": "example_primary", + "properties": { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "name": "${var.prefix}-netappvolume-primary", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example_primary.name}", + "pool_name": "${azurerm_netapp_pool.example_primary.name}", + "volume_path": "${var.prefix}-netappvolume", + "service_level": "Standard", + "protocols": [ + "NFSv3" + ], + "subnet_id": "${azurerm_subnet.example_primary.id}", + "storage_quota_in_gb": 100, + "export_policy_rule": [ + { + "rule_index": 1, + "allowed_clients": [ + "0.0.0.0/0" + ], + "protocols_enabled": [ + "NFSv3" + ], + "unix_read_only": false, + "unix_read_write": true + } + ], + "compiletime_identity": "azurerm_netapp_volume.example_primary" + } + }, + { + "type": "azurerm_netapp_volume", + "name": "example_secondary", + "properties": { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "depends_on": [ + "${azurerm_netapp_volume.example_primary}" + ], + "name": "${var.prefix}-netappvolume-secondary", + "location": "${var.alt_location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example_secondary.name}", + "pool_name": "${azurerm_netapp_pool.example_secondary.name}", + "volume_path": "${var.prefix}-netappvolume-secondary", + "service_level": "Standard", + "protocols": [ + "NFSv3" + ], + "subnet_id": "${azurerm_subnet.example_secondary.id}", + "storage_quota_in_gb": 100, + "export_policy_rule": [ + { + "rule_index": 1, + "allowed_clients": [ + "0.0.0.0/0" + ], + "protocols_enabled": [ + "NFSv3" + ], + "unix_read_only": false, + "unix_read_write": true + } + ], + "data_protection_replication": [ + { + "endpoint_type": "dst", + "remote_volume_location": "${azurerm_resource_group.example.location}", + "remote_volume_resource_id": "${azurerm_netapp_volume.example_primary.id}", + "replication_frequency": "10minutes" + } + ], + "compiletime_identity": "azurerm_netapp_volume.example_secondary" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT81 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT81 new file mode 100644 index 0000000..dcacd88 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT81 @@ -0,0 +1,127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/netapp/volume_dual_protocol/variables.tf", + "/examples/netapp/volume_dual_protocol/main.tf" + ], + "timestamp": 1642943279844, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/volume_dual_protocol/variables.tf", + "/examples/netapp/volume_dual_protocol/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT81", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_netapp_account", + "azurerm_resource_group", + "azurerm_netapp_pool", + "azurerm_netapp_volume" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT81", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example", + "properties": { + "name": "${var.prefix}-netappaccount", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "active_directory": [ + { + "username": "pmcadmin", + "password": "${var.password}", + "smb_server_name": "SMBSERVER", + "dns_servers": [ + "10.2.0.4" + ], + "domain": "anf.local" + } + ], + "compiletime_identity": "azurerm_netapp_account.example" + } + }, + { + "type": "azurerm_netapp_pool", + "name": "example", + "properties": { + "name": "${var.prefix}-netapppool", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "service_level": "Standard", + "size_in_tb": 4, + "compiletime_identity": "azurerm_netapp_pool.example" + } + }, + { + "type": "azurerm_netapp_volume", + "name": "example", + "properties": { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "name": "${var.prefix}-netappvolume", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "pool_name": "${azurerm_netapp_pool.example.name}", + "volume_path": "${var.prefix}-netappvolume", + "service_level": "Standard", + "protocols": [ + "CIFS", + "NFSv3" + ], + "subnet_id": "${var.subnet_id}", + "storage_quota_in_gb": 100, + "export_policy_rule": [ + { + "rule_index": 1, + "allowed_clients": [ + "0.0.0.0/0" + ], + "cifs_enabled": true, + "nfsv3_enabled": true, + "nfsv4_enabled": false, + "unix_read_write": true + } + ], + "compiletime_identity": "azurerm_netapp_volume.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT82 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT82 new file mode 100644 index 0000000..0a63060 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT82 @@ -0,0 +1,198 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/netapp/volume_from_snapshot/variables.tf", + "/examples/netapp/volume_from_snapshot/main.tf" + ], + "timestamp": 1642943279847, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/netapp/volume_from_snapshot/variables.tf", + "/examples/netapp/volume_from_snapshot/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT82", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_netapp_snapshot", + "azurerm_netapp_pool", + "azurerm_netapp_account", + "azurerm_netapp_volume" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT82", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-virtualnetwork", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_space": [ + "10.0.0.0/16" + ], + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "${var.prefix}-subnet", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "testdelegation", + "service_delegation": [ + { + "name": "Microsoft.Netapp/volumes", + "actions": [ + "Microsoft.Network/networkinterfaces/*", + "Microsoft.Network/virtualNetworks/subnets/join/action" + ] + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.example" + } + }, + { + "type": "azurerm_netapp_account", + "name": "example", + "properties": { + "name": "${var.prefix}-netappaccount", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_netapp_account.example" + } + }, + { + "type": "azurerm_netapp_pool", + "name": "example", + "properties": { + "name": "${var.prefix}-netapppool", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "service_level": "Standard", + "size_in_tb": 4, + "compiletime_identity": "azurerm_netapp_pool.example" + } + }, + { + "type": "azurerm_netapp_volume", + "name": "example", + "properties": { + "name": "${var.prefix}-netappvolume", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "pool_name": "${azurerm_netapp_pool.example.name}", + "volume_path": "${var.prefix}-netappvolume", + "service_level": "Standard", + "protocols": [ + "NFSv3" + ], + "subnet_id": "${azurerm_subnet.example.id}", + "storage_quota_in_gb": 100, + "export_policy_rule": [ + { + "rule_index": 1, + "allowed_clients": [ + "0.0.0.0/0" + ], + "protocols_enabled": [ + "NFSv3" + ], + "unix_read_write": true + } + ], + "compiletime_identity": "azurerm_netapp_volume.example" + } + }, + { + "type": "azurerm_netapp_volume", + "name": "example-snapshot", + "properties": { + "name": "${var.prefix}-netappvolume-snapshot", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "pool_name": "${azurerm_netapp_pool.example.name}", + "volume_path": "${var.prefix}-netappvolume-snapshot", + "service_level": "Standard", + "protocols": [ + "NFSv3" + ], + "subnet_id": "${azurerm_subnet.example.id}", + "storage_quota_in_gb": 100, + "create_from_snapshot_resource_id": "${azurerm_netapp_snapshot.example.id}", + "export_policy_rule": [ + { + "rule_index": 1, + "allowed_clients": [ + "0.0.0.0/0" + ], + "protocols_enabled": [ + "NFSv3" + ], + "unix_read_write": true + } + ], + "compiletime_identity": "azurerm_netapp_volume.example-snapshot" + } + }, + { + "type": "azurerm_netapp_snapshot", + "name": "example", + "properties": { + "name": "${var.prefix}-netappsnapshot", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "account_name": "${azurerm_netapp_account.example.name}", + "pool_name": "${azurerm_netapp_pool.example.name}", + "volume_name": "${azurerm_netapp_volume.example.name}", + "compiletime_identity": "azurerm_netapp_snapshot.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT83 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT83 new file mode 100644 index 0000000..37a45d4 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT83 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/policy-definition/variables.tf", + "/examples/policy-definition/main.tf" + ], + "timestamp": 1642943279851, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/policy-definition/variables.tf", + "/examples/policy-definition/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT83", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_policy_definition" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT83", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_policy_definition", + "name": "example", + "properties": { + "name": "${var.prefix}-policy", + "policy_type": "Custom", + "mode": "All", + "display_name": "${var.prefix}-policy", + "policy_rule": { + "if": { + "not": { + "field": "location", + "in": "[parameters('allowedLocations')]" + } + }, + "then": { + "effect": "audit" + } + }, + "parameters": { + "allowedLocations": { + "type": "Array", + "metadata": { + "description": "The list of allowed locations for resources.", + "displayName": "Allowed locations", + "strongType": "location" + } + } + }, + "compiletime_identity": "azurerm_policy_definition.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT84 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT84 new file mode 100644 index 0000000..34fb1bb --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT84 @@ -0,0 +1,224 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/private-endpoint/application-gateway/variables.tf", + "/examples/private-endpoint/application-gateway/main.tf" + ], + "timestamp": 1642943279855, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/application-gateway/variables.tf", + "/examples/private-endpoint/application-gateway/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT84", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_application_gateway", + "azurerm_public_ip" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT84", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "locals": [ + { + "private_link_configuration_name": "private_link", + "private_frontend_ip_configuration_name": "private" + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "gateway", + "properties": { + "name": "gateway", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "enforce_private_link_service_network_policies": true, + "compiletime_identity": "azurerm_subnet.gateway" + } + }, + { + "type": "azurerm_subnet", + "name": "endpoint", + "properties": { + "name": "endpoint", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "enforce_private_link_endpoint_network_policies": true, + "compiletime_identity": "azurerm_subnet.endpoint" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-ip", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "sku": "Standard", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_application_gateway", + "name": "example", + "properties": { + "name": "${var.prefix}-gateway", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": [ + { + "name": "Standard_v2", + "tier": "Standard_v2", + "capacity": 2 + } + ], + "gateway_ip_configuration": [ + { + "name": "gateway", + "subnet_id": "${azurerm_subnet.gateway.id}" + } + ], + "frontend_port": [ + { + "name": "frontend", + "port": 80 + } + ], + "frontend_ip_configuration": [ + { + "name": "public", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + }, + { + "name": "${local.private_frontend_ip_configuration_name}", + "subnet_id": "${azurerm_subnet.gateway.id}", + "private_ip_address_allocation": "Static", + "private_ip_address": "10.0.1.10", + "private_link_configuration_name": "${local.private_link_configuration_name}" + } + ], + "private_link_configuration": [ + { + "name": "${local.private_link_configuration_name}", + "ip_configuration": [ + { + "name": "primary", + "subnet_id": "${azurerm_subnet.gateway.id}", + "private_ip_address_allocation": "Dynamic", + "primary": true + } + ] + } + ], + "backend_address_pool": [ + { + "name": "backend" + } + ], + "backend_http_settings": [ + { + "name": "settings", + "cookie_based_affinity": "Disabled", + "port": 80, + "protocol": "Http", + "request_timeout": 1 + } + ], + "http_listener": [ + { + "name": "listener", + "frontend_ip_configuration_name": "private", + "frontend_port_name": "frontend", + "protocol": "Http" + } + ], + "request_routing_rule": [ + { + "name": "rule", + "rule_type": "Basic", + "http_listener_name": "listener", + "backend_address_pool_name": "backend", + "backend_http_settings_name": "settings" + } + ], + "compiletime_identity": "azurerm_application_gateway.example" + } + }, + { + "type": "azurerm_private_endpoint", + "name": "example", + "properties": { + "name": "${var.prefix}-pe", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "subnet_id": "${azurerm_subnet.endpoint.id}", + "private_service_connection": [ + { + "name": "tfex-appgateway-connection", + "is_manual_connection": false, + "private_connection_resource_id": "${azurerm_application_gateway.example.id}", + "subresource_names": [ + "${local.private_frontend_ip_configuration_name}" + ] + } + ], + "compiletime_identity": "azurerm_private_endpoint.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT85 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT85 new file mode 100644 index 0000000..c65a28b --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT85 @@ -0,0 +1,139 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/private-endpoint/cosmos-db/variables.tf", + "/examples/private-endpoint/cosmos-db/main.tf" + ], + "timestamp": 1642943279858, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/cosmos-db/variables.tf", + "/examples/private-endpoint/cosmos-db/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT85", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_cosmosdb_account" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT85", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "endpoint", + "properties": { + "name": "endpoint", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "enforce_private_link_endpoint_network_policies": true, + "compiletime_identity": "azurerm_subnet.endpoint" + } + }, + { + "type": "azurerm_cosmosdb_account", + "name": "example", + "properties": { + "name": "${var.prefix}-cosmosdb-example", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "offer_type": "Standard", + "kind": "MongoDB", + "enable_automatic_failover": false, + "is_virtual_network_filter_enabled": true, + "ip_range_filter": "0.0.0.0,104.42.195.92,40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26", + "capabilities": [ + { + "name": "EnableMongo" + } + ], + "consistency_policy": [ + { + "consistency_level": "BoundedStaleness", + "max_interval_in_seconds": 310, + "max_staleness_prefix": 101000 + } + ], + "geo_location": [ + { + "prefix": "${var.prefix}-cosmos-db-customid", + "location": "${azurerm_resource_group.example.location}", + "failover_priority": 0 + } + ], + "compiletime_identity": "azurerm_cosmosdb_account.example" + } + }, + { + "type": "azurerm_private_endpoint", + "name": "example", + "properties": { + "name": "${var.prefix}-pe", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "subnet_id": "${azurerm_subnet.endpoint.id}", + "private_service_connection": [ + { + "name": "tfex-cosmosdb-connection", + "is_manual_connection": false, + "private_connection_resource_id": "${azurerm_cosmosdb_account.example.id}", + "subresource_names": [ + "MongoDB" + ] + } + ], + "compiletime_identity": "azurerm_private_endpoint.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT86 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT86 new file mode 100644 index 0000000..d47c51c --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT86 @@ -0,0 +1,408 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/private-endpoint/databricks/managed-services/variables.tf", + "/examples/private-endpoint/databricks/managed-services/main.tf" + ], + "timestamp": 1642943279863, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/databricks/managed-services/variables.tf", + "/examples/private-endpoint/databricks/managed-services/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT86", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_private_dns_zone", + "azurerm_key_vault", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_key_vault_key", + "azurerm_databricks_workspace", + "azurerm_key_vault_access_policy", + "azurerm_private_dns_cname_record", + "azurerm_databricks_workspace_customer_managed_key", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT86", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_client_config": { + "current": { + "compiletime_identity": "data.azurerm_client_config.current" + } + }, + "azurerm_databricks_workspace_private_endpoint_connection": { + "example": { + "workspace_id": "${azurerm_databricks_workspace.example.id}", + "private_endpoint_id": "${azurerm_private_endpoint.databricks.id}", + "compiletime_identity": "data.azurerm_databricks_workspace_private_endpoint_connection.example" + } + } + }, + "output": [ + { + "databricks_workspace_private_endpoint_connection_workspace_id": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.workspace_id}" + } + }, + { + "databricks_workspace_private_endpoint_connection_private_endpoint_id": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.private_endpoint_id}" + } + }, + { + "databricks_workspace_private_endpoint_connection_name": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].name}" + } + }, + { + "databricks_workspace_private_endpoint_connection_workspace_private_endpoint_id": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].workspace_private_endpoint_id}" + } + }, + { + "databricks_workspace_private_endpoint_connection_status": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].status}" + } + }, + { + "databricks_workspace_private_endpoint_connection_description": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].description}" + } + }, + { + "databricks_workspace_private_endpoint_connection_action_required": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].action_required}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-databricks-private-endpoint-ms-dbfscmk", + "location": "eastus2", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet-databricks", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "public", + "properties": { + "name": "${var.prefix}-sn-public", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "delegation": [ + { + "name": "databricks-del-pub-${var.prefix}", + "service_delegation": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ], + "name": "Microsoft.Databricks/workspaces" + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.public" + } + }, + { + "type": "azurerm_subnet", + "name": "private", + "properties": { + "name": "${var.prefix}-sn-private", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "databricks-del-pri-${var.prefix}", + "service_delegation": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ], + "name": "Microsoft.Databricks/workspaces" + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.private" + } + }, + { + "type": "azurerm_subnet", + "name": "endpoint", + "properties": { + "name": "${var.prefix}-sn-private-endpoint", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.3.0/24" + ], + "enforce_private_link_endpoint_network_policies": true, + "compiletime_identity": "azurerm_subnet.endpoint" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "private", + "properties": { + "subnet_id": "${azurerm_subnet.private.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.private" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "public", + "properties": { + "subnet_id": "${azurerm_subnet.public.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.public" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-nsg-databricks", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_databricks_workspace", + "name": "example", + "properties": { + "name": "${var.prefix}-DBW", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "premium", + "managed_resource_group_name": "${var.prefix}-DBW-managed-private-endpoint-ms-dbfscmk", + "customer_managed_key_enabled": true, + "managed_services_cmk_key_vault_key_id": "${azurerm_key_vault_key.example.id}", + "public_network_access_enabled": false, + "network_security_group_rules_required": "NoAzureDatabricksRules", + "custom_parameters": [ + { + "no_public_ip": true, + "public_subnet_name": "${azurerm_subnet.public.name}", + "private_subnet_name": "${azurerm_subnet.private.name}", + "virtual_network_id": "${azurerm_virtual_network.example.id}", + "public_subnet_network_security_group_association_id": "${azurerm_subnet_network_security_group_association.public.id}", + "private_subnet_network_security_group_association_id": "${azurerm_subnet_network_security_group_association.private.id}" + } + ], + "tags": { + "Environment": "Production", + "Pricing": "Premium" + }, + "compiletime_identity": "azurerm_databricks_workspace.example" + } + }, + { + "type": "azurerm_databricks_workspace_customer_managed_key", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_key_vault_access_policy.databricks}" + ], + "workspace_id": "${azurerm_databricks_workspace.example.id}", + "key_vault_key_id": "${azurerm_key_vault_key.example.id}", + "compiletime_identity": "azurerm_databricks_workspace_customer_managed_key.example" + } + }, + { + "type": "azurerm_private_endpoint", + "name": "databricks", + "properties": { + "name": "${var.prefix}-pe-databricks", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "subnet_id": "${azurerm_subnet.endpoint.id}", + "private_service_connection": [ + { + "name": "${var.prefix}-psc", + "is_manual_connection": false, + "private_connection_resource_id": "${azurerm_databricks_workspace.example.id}", + "subresource_names": [ + "databricks_ui_api" + ] + } + ], + "compiletime_identity": "azurerm_private_endpoint.databricks" + } + }, + { + "type": "azurerm_private_dns_zone", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_private_endpoint.databricks}" + ], + "name": "privatelink.azuredatabricks.net", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_private_dns_zone.example" + } + }, + { + "type": "azurerm_private_dns_cname_record", + "name": "example", + "properties": { + "name": "${azurerm_databricks_workspace.example.workspace_url}", + "zone_name": "${azurerm_private_dns_zone.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ttl": 300, + "record": "eastus2-c2.azuredatabricks.net", + "compiletime_identity": "azurerm_private_dns_cname_record.example" + } + }, + { + "type": "azurerm_key_vault", + "name": "example", + "properties": { + "name": "${var.prefix}-keyvault", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "tenant_id": "${data.azurerm_client_config.current.tenant_id}", + "sku_name": "premium", + "soft_delete_retention_days": 7, + "compiletime_identity": "azurerm_key_vault.example" + } + }, + { + "type": "azurerm_key_vault_key", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_key_vault_access_policy.terraform}" + ], + "name": "${var.prefix}-certificate", + "key_vault_id": "${azurerm_key_vault.example.id}", + "key_type": "RSA", + "key_size": 2048, + "key_opts": [ + "decrypt", + "encrypt", + "sign", + "unwrapKey", + "verify", + "wrapKey" + ], + "compiletime_identity": "azurerm_key_vault_key.example" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "terraform", + "properties": { + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_key_vault.example.tenant_id}", + "object_id": "${data.azurerm_client_config.current.object_id}", + "key_permissions": [ + "get", + "list", + "create", + "decrypt", + "encrypt", + "sign", + "unwrapKey", + "verify", + "wrapKey", + "delete", + "restore", + "recover", + "update", + "purge" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.terraform" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "databricks", + "properties": { + "depends_on": [ + "${azurerm_databricks_workspace.example}" + ], + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_databricks_workspace.example.storage_account_identity[0].tenant_id}", + "object_id": "${azurerm_databricks_workspace.example.storage_account_identity[0].principal_id}", + "key_permissions": [ + "get", + "unwrapKey", + "wrapKey" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.databricks" + } + }, + { + "type": "azurerm_key_vault_access_policy", + "name": "managed", + "properties": { + "key_vault_id": "${azurerm_key_vault.example.id}", + "tenant_id": "${azurerm_key_vault.example.tenant_id}", + "object_id": "See the README.md file for instructions on how to lookup the correct value to enter here", + "key_permissions": [ + "get", + "unwrapKey", + "wrapKey" + ], + "compiletime_identity": "azurerm_key_vault_access_policy.managed" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT87 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT87 new file mode 100644 index 0000000..50fced9 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT87 @@ -0,0 +1,291 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/private-endpoint/databricks/private-endpoint/variables.tf", + "/examples/private-endpoint/databricks/private-endpoint/main.tf" + ], + "timestamp": 1642943279868, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/databricks/private-endpoint/variables.tf", + "/examples/private-endpoint/databricks/private-endpoint/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT87", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_private_dns_zone", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_databricks_workspace", + "azurerm_private_dns_cname_record", + "azurerm_network_security_group", + "azurerm_subnet_network_security_group_association" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT87", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_databricks_workspace_private_endpoint_connection": { + "example": { + "workspace_id": "${azurerm_databricks_workspace.example.id}", + "private_endpoint_id": "${azurerm_private_endpoint.databricks.id}", + "compiletime_identity": "data.azurerm_databricks_workspace_private_endpoint_connection.example" + } + } + }, + "output": [ + { + "databricks_workspace_private_endpoint_connection_workspace_id": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.workspace_id}" + } + }, + { + "databricks_workspace_private_endpoint_connection_private_endpoint_id": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.private_endpoint_id}" + } + }, + { + "databricks_workspace_private_endpoint_connection_name": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].name}" + } + }, + { + "databricks_workspace_private_endpoint_connection_workspace_private_endpoint_id": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].workspace_private_endpoint_id}" + } + }, + { + "databricks_workspace_private_endpoint_connection_status": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].status}" + } + }, + { + "databricks_workspace_private_endpoint_connection_description": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].description}" + } + }, + { + "databricks_workspace_private_endpoint_connection_action_required": { + "value": "${data.azurerm_databricks_workspace_private_endpoint_connection.example.connections[0].action_required}" + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-databricks-private-endpoint", + "location": "eastus2", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet-databricks", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "public", + "properties": { + "name": "${var.prefix}-sn-public", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "delegation": [ + { + "name": "databricks-del-pub-${var.prefix}", + "service_delegation": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ], + "name": "Microsoft.Databricks/workspaces" + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.public" + } + }, + { + "type": "azurerm_subnet", + "name": "private", + "properties": { + "name": "${var.prefix}-sn-private", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "delegation": [ + { + "name": "databricks-del-pri-${var.prefix}", + "service_delegation": [ + { + "actions": [ + "Microsoft.Network/virtualNetworks/subnets/join/action", + "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", + "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" + ], + "name": "Microsoft.Databricks/workspaces" + } + ] + } + ], + "compiletime_identity": "azurerm_subnet.private" + } + }, + { + "type": "azurerm_subnet", + "name": "endpoint", + "properties": { + "name": "${var.prefix}-sn-private-endpoint", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.3.0/24" + ], + "enforce_private_link_endpoint_network_policies": true, + "compiletime_identity": "azurerm_subnet.endpoint" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "private", + "properties": { + "subnet_id": "${azurerm_subnet.private.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.private" + } + }, + { + "type": "azurerm_subnet_network_security_group_association", + "name": "public", + "properties": { + "subnet_id": "${azurerm_subnet.public.id}", + "network_security_group_id": "${azurerm_network_security_group.example.id}", + "compiletime_identity": "azurerm_subnet_network_security_group_association.public" + } + }, + { + "type": "azurerm_network_security_group", + "name": "example", + "properties": { + "name": "${var.prefix}-nsg-databricks", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_network_security_group.example" + } + }, + { + "type": "azurerm_databricks_workspace", + "name": "example", + "properties": { + "name": "${var.prefix}-DBW", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "premium", + "managed_resource_group_name": "${var.prefix}-DBW-managed-private-endpoint", + "public_network_access_enabled": false, + "network_security_group_rules_required": "NoAzureDatabricksRules", + "custom_parameters": [ + { + "no_public_ip": true, + "public_subnet_name": "${azurerm_subnet.public.name}", + "private_subnet_name": "${azurerm_subnet.private.name}", + "virtual_network_id": "${azurerm_virtual_network.example.id}", + "public_subnet_network_security_group_association_id": "${azurerm_subnet_network_security_group_association.public.id}", + "private_subnet_network_security_group_association_id": "${azurerm_subnet_network_security_group_association.private.id}" + } + ], + "tags": { + "Environment": "Production", + "Pricing": "Premium" + }, + "compiletime_identity": "azurerm_databricks_workspace.example" + } + }, + { + "type": "azurerm_private_endpoint", + "name": "databricks", + "properties": { + "name": "${var.prefix}-pe-databricks", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "subnet_id": "${azurerm_subnet.endpoint.id}", + "private_service_connection": [ + { + "name": "${var.prefix}-psc", + "is_manual_connection": false, + "private_connection_resource_id": "${azurerm_databricks_workspace.example.id}", + "subresource_names": [ + "databricks_ui_api" + ] + } + ], + "compiletime_identity": "azurerm_private_endpoint.databricks" + } + }, + { + "type": "azurerm_private_dns_zone", + "name": "example", + "properties": { + "depends_on": [ + "${azurerm_private_endpoint.databricks}" + ], + "name": "privatelink.azuredatabricks.net", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_private_dns_zone.example" + } + }, + { + "type": "azurerm_private_dns_cname_record", + "name": "example", + "properties": { + "name": "${azurerm_databricks_workspace.example.workspace_url}", + "zone_name": "${azurerm_private_dns_zone.example.name}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ttl": 300, + "record": "eastus2-c2.azuredatabricks.net", + "compiletime_identity": "azurerm_private_dns_cname_record.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT88 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT88 new file mode 100644 index 0000000..36a8f0e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT88 @@ -0,0 +1,124 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/private-endpoint/postgresql/variables.tf", + "/examples/private-endpoint/postgresql/main.tf" + ], + "timestamp": 1642943279871, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/postgresql/variables.tf", + "/examples/private-endpoint/postgresql/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT88", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_postgresql_server", + "azurerm_private_endpoint", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT88", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "endpoint", + "properties": { + "name": "endpoint", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "enforce_private_link_endpoint_network_policies": true, + "compiletime_identity": "azurerm_subnet.endpoint" + } + }, + { + "type": "azurerm_postgresql_server", + "name": "example", + "properties": { + "name": "${var.prefix}-postgresql", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "administrator_login": "psqladmin", + "administrator_login_password": "H@Sh1CoR3!", + "auto_grow_enabled": true, + "backup_retention_days": 7, + "geo_redundant_backup_enabled": false, + "sku_name": "GP_Gen5_2", + "ssl_enforcement_enabled": true, + "storage_mb": 51200, + "version": 11, + "compiletime_identity": "azurerm_postgresql_server.example" + } + }, + { + "type": "azurerm_private_endpoint", + "name": "example", + "properties": { + "name": "${var.prefix}-pe", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "subnet_id": "${azurerm_subnet.endpoint.id}", + "private_service_connection": [ + { + "name": "tfex-postgresql-connection", + "is_manual_connection": false, + "private_connection_resource_id": "${azurerm_postgresql_server.example.id}", + "subresource_names": [ + "postgresqlServer" + ] + } + ], + "compiletime_identity": "azurerm_private_endpoint.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT89 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT89 new file mode 100644 index 0000000..d0711d3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT89 @@ -0,0 +1,142 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/private-endpoint/private-dns-group/variables.tf", + "/examples/private-endpoint/private-dns-group/main.tf" + ], + "timestamp": 1642943279874, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/private-dns-group/variables.tf", + "/examples/private-endpoint/private-dns-group/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT89", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_postgresql_server", + "azurerm_private_endpoint", + "azurerm_private_dns_zone", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT89", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "endpoint", + "properties": { + "name": "endpoint", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "enforce_private_link_endpoint_network_policies": true, + "compiletime_identity": "azurerm_subnet.endpoint" + } + }, + { + "type": "azurerm_private_dns_zone", + "name": "example", + "properties": { + "name": "privatelink.postgres.database.azure.com", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_private_dns_zone.example" + } + }, + { + "type": "azurerm_postgresql_server", + "name": "example", + "properties": { + "name": "${var.prefix}-postgresql", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku_name": "GP_Gen5_4", + "storage_mb": 5120, + "backup_retention_days": 7, + "geo_redundant_backup_enabled": false, + "auto_grow_enabled": true, + "administrator_login": "psqladmin", + "administrator_login_password": "H@Sh1CoR3!", + "version": 9.5, + "ssl_enforcement_enabled": true, + "compiletime_identity": "azurerm_postgresql_server.example" + } + }, + { + "type": "azurerm_private_endpoint", + "name": "example", + "properties": { + "name": "${var.prefix}-pe", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "subnet_id": "${azurerm_subnet.endpoint.id}", + "private_dns_zone_group": [ + { + "name": "private-dns-zone-group", + "private_dns_zone_ids": [ + "${azurerm_private_dns_zone.example.id}" + ] + } + ], + "private_service_connection": [ + { + "name": "tfex-postgresql-connection", + "is_manual_connection": false, + "private_connection_resource_id": "${azurerm_postgresql_server.example.id}", + "subresource_names": [ + "postgresqlServer" + ] + } + ], + "compiletime_identity": "azurerm_private_endpoint.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT9 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT9 new file mode 100644 index 0000000..05b7f8e --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT9 @@ -0,0 +1,101 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/app-service/function-python/vars.tf", + "/examples/app-service/function-python/main.tf" + ], + "timestamp": 1642943279594, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/app-service/function-python/vars.tf", + "/examples/app-service/function-python/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT9", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_app_service_plan", + "azurerm_resource_group", + "azurerm_storage_account", + "azurerm_function_app" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT9", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "azure-functions-python-rg", + "location": "Central US", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "functionappstorage", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "LRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_app_service_plan", + "name": "example", + "properties": { + "name": "azure-functions-python-service-plan", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "kind": "FunctionApp", + "reserved": true, + "sku": [ + { + "tier": "Dynamic", + "size": "Y1" + } + ], + "compiletime_identity": "azurerm_app_service_plan.example" + } + }, + { + "type": "azurerm_function_app", + "name": "example", + "properties": { + "name": "python-test-functions", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "app_service_plan_id": "${azurerm_app_service_plan.example.id}", + "storage_account_name": "${azurerm_storage_account.example.name}", + "storage_account_access_key": "${azurerm_storage_account.example.primary_access_key}", + "os_type": "linux", + "version": "~3", + "compiletime_identity": "azurerm_function_app.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT90 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT90 new file mode 100644 index 0000000..8e9c378 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT90 @@ -0,0 +1,180 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/private-endpoint/private-link-service/variables.tf", + "/examples/private-endpoint/private-link-service/main.tf" + ], + "timestamp": 1642943279879, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/private-endpoint/private-link-service/variables.tf", + "/examples/private-endpoint/private-link-service/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT90", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_private_endpoint", + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_private_link_service", + "azurerm_public_ip", + "azurerm_lb" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT90", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "data": { + "azurerm_subscription": { + "current": { + "compiletime_identity": "data.azurerm_subscription.current" + } + } + }, + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}-vnet", + "address_space": [ + "10.0.0.0/16" + ], + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "compiletime_identity": "azurerm_virtual_network.example" + } + }, + { + "type": "azurerm_subnet", + "name": "service", + "properties": { + "name": "service", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "enforce_private_link_service_network_policies": true, + "compiletime_identity": "azurerm_subnet.service" + } + }, + { + "type": "azurerm_subnet", + "name": "endpoint", + "properties": { + "name": "endpoint", + "resource_group_name": "${azurerm_resource_group.example.name}", + "virtual_network_name": "${azurerm_virtual_network.example.name}", + "address_prefixes": [ + "10.0.2.0/24" + ], + "enforce_private_link_endpoint_network_policies": true, + "compiletime_identity": "azurerm_subnet.endpoint" + } + }, + { + "type": "azurerm_public_ip", + "name": "example", + "properties": { + "name": "${var.prefix}-pip", + "sku": "Standard", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "allocation_method": "Static", + "compiletime_identity": "azurerm_public_ip.example" + } + }, + { + "type": "azurerm_lb", + "name": "example", + "properties": { + "name": "${var.prefix}-lb", + "sku": "Standard", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "frontend_ip_configuration": [ + { + "name": "${azurerm_public_ip.example.name}", + "public_ip_address_id": "${azurerm_public_ip.example.id}" + } + ], + "compiletime_identity": "azurerm_lb.example" + } + }, + { + "type": "azurerm_private_link_service", + "name": "example", + "properties": { + "name": "${var.prefix}-pls", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "auto_approval_subscription_ids": [ + "${data.azurerm_subscription.current.subscription_id}" + ], + "visibility_subscription_ids": [ + "${data.azurerm_subscription.current.subscription_id}" + ], + "nat_ip_configuration": [ + { + "name": "${azurerm_public_ip.example.name}", + "subnet_id": "${azurerm_subnet.service.id}", + "primary": true + } + ], + "load_balancer_frontend_ip_configuration_ids": [ + "${azurerm_lb.example.frontend_ip_configuration[0].id}" + ], + "compiletime_identity": "azurerm_private_link_service.example" + } + }, + { + "type": "azurerm_private_endpoint", + "name": "example", + "properties": { + "name": "${var.prefix}-pe", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "subnet_id": "${azurerm_subnet.endpoint.id}", + "private_service_connection": [ + { + "name": "tfex-pls-connection", + "is_manual_connection": false, + "private_connection_resource_id": "${azurerm_private_link_service.example.id}" + } + ], + "compiletime_identity": "azurerm_private_endpoint.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT91 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT91 new file mode 100644 index 0000000..cf44f08 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT91 @@ -0,0 +1,2711 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/recovery-services/advanced-policy/variables.tf", + "/examples/recovery-services/advanced-policy/main.tf" + ], + "timestamp": 1642943279881, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/recovery-services/advanced-policy/variables.tf", + "/examples/recovery-services/advanced-policy/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT91", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_recovery_services_vault", + "azurerm_resource_group", + "azurerm_backup_policy_vm" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT91", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_recovery_services_vault", + "name": "example", + "properties": { + "name": "${var.prefix}-vault", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "compiletime_identity": "azurerm_recovery_services_vault.example" + } + }, + { + "type": "azurerm_backup_policy_vm", + "name": "example", + "properties": { + "name": "${var.prefix}-policy", + "resource_group_name": "${azurerm_resource_group.example.name}", + "recovery_vault_name": "${azurerm_recovery_services_vault.example.name}", + "timezone": "UTC", + "backup": [ + { + "frequency": "Weekly", + "time": "23:00", + "weekdays": [ + "Monday", + "Wednesday" + ] + } + ], + "retention_weekly": [ + [ + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weekdays": [ + "Monday", + "Wednesday" + ] + } + ] + ], + "retention_monthly": [ + [ + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + } + ] + ], + "retention_yearly": [ + [ + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + }, + { + "months": [ + "July" + ], + "weeks": [ + "First", + "Second" + ], + "weekdays": [ + "Monday", + "Wednesday" + ] + } + ] + ], + "compiletime_identity": "azurerm_backup_policy_vm.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT92 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT92 new file mode 100644 index 0000000..d1f75e3 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT92 @@ -0,0 +1,65 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/recovery-services/basic/variables.tf", + "/examples/recovery-services/basic/main.tf" + ], + "timestamp": 1642943279891, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/recovery-services/basic/variables.tf", + "/examples/recovery-services/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT92", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_recovery_services_vault", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT92", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_recovery_services_vault", + "name": "example", + "properties": { + "name": "${var.prefix}-vault", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "compiletime_identity": "azurerm_recovery_services_vault.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT93 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT93 new file mode 100644 index 0000000..6cefc01 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT93 @@ -0,0 +1,204 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/recovery-services/virtual-machine/variables.tf", + "/examples/recovery-services/virtual-machine/main.tf" + ], + "timestamp": 1642943279895, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/recovery-services/virtual-machine/variables.tf", + "/examples/recovery-services/virtual-machine/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT93", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_subnet", + "azurerm_virtual_network", + "azurerm_resource_group", + "azurerm_network_interface", + "azurerm_recovery_services_vault", + "azurerm_virtual_machine", + "azurerm_backup_policy_vm", + "azurerm_backup_protected_vm" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT93", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_virtual_network", + "name": "example", + "properties": { + "name": "${var.prefix}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${data.azurerm_resource_group.example.location}", + "address_space": [ + "10.0.0.0/16" + ], + "prefix": "${var.prefix}", + "compiletime_identity": "module.virtual-network" + } + }, + { + "type": "azurerm_subnet", + "name": "example", + "properties": { + "name": "internal", + "virtual_network_name": "${var.prefix}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "address_prefixes": [ + "10.0.1.0/24" + ], + "prefix": "${var.prefix}", + "compiletime_identity": "module.virtual-network" + } + }, + { + "type": "azurerm_network_interface", + "name": "example", + "properties": { + "name": "${var.prefix}", + "location": "${data.azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "ip_configuration": [ + { + "name": "example", + "subnet_id": "${module.virtual-network.subnet_id}", + "private_ip_address_allocation": "Dynamic" + } + ], + "prefix": "${var.prefix}", + "subnet_id": "${module.virtual-network.subnet_id}", + "compiletime_identity": "module.virtual-machine" + } + }, + { + "type": "azurerm_virtual_machine", + "name": "example", + "properties": { + "name": "${var.prefix}", + "location": "${data.azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "network_interface_ids": [ + "${azurerm_network_interface.example.id}" + ], + "vm_size": "Standard_DS1_v2", + "delete_os_disk_on_termination": true, + "storage_image_reference": [ + { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04-LTS", + "version": "latest" + } + ], + "storage_os_disk": [ + { + "name": "myosdisk1", + "caching": "ReadWrite", + "create_option": "FromImage", + "managed_disk_type": "Standard_LRS" + } + ], + "os_profile": [ + { + "computer_name": "hostname", + "admin_username": "testadmin", + "admin_password": "Password1234!" + } + ], + "os_profile_linux_config": [ + { + "disable_password_authentication": false + } + ], + "prefix": "${var.prefix}", + "subnet_id": "${module.virtual-network.subnet_id}", + "compiletime_identity": "module.virtual-machine" + } + }, + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_recovery_services_vault", + "name": "example", + "properties": { + "name": "${var.prefix}-vault", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "sku": "Standard", + "compiletime_identity": "azurerm_recovery_services_vault.example" + } + }, + { + "type": "azurerm_backup_policy_vm", + "name": "example", + "properties": { + "name": "tfex-policy-simple", + "resource_group_name": "${azurerm_resource_group.example.name}", + "recovery_vault_name": "${azurerm_recovery_services_vault.example.name}", + "backup": [ + { + "frequency": "Daily", + "time": "23:00" + } + ], + "retention_daily": [ + [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ] + ], + "compiletime_identity": "azurerm_backup_policy_vm.example" + } + }, + { + "type": "azurerm_backup_protected_vm", + "name": "example", + "properties": { + "resource_group_name": "${azurerm_resource_group.example.name}", + "recovery_vault_name": "${azurerm_recovery_services_vault.example.name}", + "source_vm_id": "${module.virtual-machine.id}", + "backup_policy_id": "${azurerm_backup_policy_vm.example.id}", + "compiletime_identity": "azurerm_backup_protected_vm.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT94 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT94 new file mode 100644 index 0000000..194f373 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT94 @@ -0,0 +1,68 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/redis-cache/basic/variables.tf", + "/examples/redis-cache/basic/main.tf" + ], + "timestamp": 1642943279900, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/redis-cache/basic/variables.tf", + "/examples/redis-cache/basic/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT94", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_redis_cache", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT94", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_redis_cache", + "name": "example", + "properties": { + "name": "${var.prefix}-redis", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "capacity": 0, + "family": "C", + "sku_name": "Basic", + "enable_non_ssl_port": false, + "compiletime_identity": "azurerm_redis_cache.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT95 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT95 new file mode 100644 index 0000000..7be1025 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT95 @@ -0,0 +1,89 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/redis-cache/premium-with-backup/variables.tf", + "/examples/redis-cache/premium-with-backup/main.tf" + ], + "timestamp": 1642943279904, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/redis-cache/premium-with-backup/variables.tf", + "/examples/redis-cache/premium-with-backup/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT95", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_redis_cache", + "azurerm_storage_account", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT95", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_storage_account", + "name": "example", + "properties": { + "name": "${var.prefix}sa", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "account_tier": "Standard", + "account_replication_type": "GRS", + "compiletime_identity": "azurerm_storage_account.example" + } + }, + { + "type": "azurerm_redis_cache", + "name": "example", + "properties": { + "name": "${var.prefix}-cache", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "capacity": 3, + "family": "P", + "sku_name": "Premium", + "enable_non_ssl_port": false, + "redis_configuration": [ + { + "rdb_backup_enabled": true, + "rdb_backup_frequency": 60, + "rdb_backup_max_snapshot_count": 1, + "rdb_storage_connection_string": "${azurerm_storage_account.example.primary_blob_connection_string}" + } + ], + "compiletime_identity": "azurerm_redis_cache.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT96 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT96 new file mode 100644 index 0000000..c6a1638 --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT96 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/redis-cache/premium-with-clustering/variables.tf", + "/examples/redis-cache/premium-with-clustering/main.tf" + ], + "timestamp": 1642943279908, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/redis-cache/premium-with-clustering/variables.tf", + "/examples/redis-cache/premium-with-clustering/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT96", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_redis_cache", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT96", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_redis_cache", + "name": "example", + "properties": { + "name": "${var.prefix}-cache", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "capacity": 1, + "family": "P", + "sku_name": "Premium", + "enable_non_ssl_port": false, + "shard_count": 3, + "redis_configuration": [ + { + "maxmemory_reserved": 2, + "maxmemory_delta": 2, + "maxmemory_policy": "allkeys-lru" + } + ], + "compiletime_identity": "azurerm_redis_cache.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT97 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT97 new file mode 100644 index 0000000..5e1178f --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT97 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/redis-cache/standard/variables.tf", + "/examples/redis-cache/standard/main.tf" + ], + "timestamp": 1642943279912, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/redis-cache/standard/variables.tf", + "/examples/redis-cache/standard/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT97", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_redis_cache", + "azurerm_resource_group" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT97", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_redis_cache", + "name": "example", + "properties": { + "name": "${var.prefix}-cache", + "location": "${azurerm_resource_group.example.location}", + "resource_group_name": "${azurerm_resource_group.example.name}", + "capacity": 2, + "family": "C", + "sku_name": "Standard", + "enable_non_ssl_port": false, + "minimum_tls_version": 1.2, + "redis_configuration": [ + {} + ], + "compiletime_identity": "azurerm_redis_cache.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT98 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT98 new file mode 100644 index 0000000..e90568d --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT98 @@ -0,0 +1,69 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/search/outputs.tf", + "/examples/search/variables.tf", + "/examples/search/main.tf" + ], + "timestamp": 1642943279914, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/search/outputs.tf", + "/examples/search/variables.tf", + "/examples/search/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT98", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_resource_group", + "azurerm_search_service" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT98", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_resource_group", + "name": "example", + "properties": { + "name": "${var.prefix}-resources", + "location": "${var.location}", + "compiletime_identity": "azurerm_resource_group.example" + } + }, + { + "type": "azurerm_search_service", + "name": "example", + "properties": { + "name": "${var.prefix}-search", + "resource_group_name": "${azurerm_resource_group.example.name}", + "location": "${azurerm_resource_group.example.location}", + "sku": "standard", + "replica_count": 1, + "partition_count": 1, + "compiletime_identity": "azurerm_search_service.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT99 b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT99 new file mode 100644 index 0000000..a333a3b --- /dev/null +++ b/validation/scenario-azure-terraform-hashicorp/snapshots/TRF_TEMPLATE_SNAPSHOT99 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "main", + "contentType": "json", + "source": "gitConnectorAzureTerraHashicorp", + "paths": [ + "/examples/security/securitycenter-pricing/main.tf" + ], + "timestamp": 1642943279918, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "TRF_TEMPLATE_SNAPSHOT", + "type": "terraform", + "collection": "terraformtemplate", + "paths": [ + "/examples/security/securitycenter-pricing/main.tf" + ], + "snapshotId": "TRF_TEMPLATE_SNAPSHOT99", + "status": "active", + "validate": true, + "resourceTypes": [ + "azurerm_security_center_subscription_pricing" + ] + }, + "snapshotId": "TRF_TEMPLATE_SNAPSHOT99", + "collection": "terraformtemplate", + "json": { + "provider": [ + { + "azurerm": { + "features": [ + {} + ] + } + } + ], + "resources": [ + { + "type": "azurerm_security_center_subscription_pricing", + "name": "example", + "properties": { + "tier": "Standard", + "resource_type": "VirtualMachines", + "compiletime_identity": "azurerm_security_center_subscription_pricing.example" + } + } + ] + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/master-snapshot_gen.json b/validation/scenario-google-kcc/master-snapshot_gen.json index 5ae082a..35ad0c0 100644 --- a/validation/scenario-google-kcc/master-snapshot_gen.json +++ b/validation/scenario-google-kcc/master-snapshot_gen.json @@ -16,7 +16,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT1", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesslevel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -27,7 +30,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT2", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesspolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -38,7 +44,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT3", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesspolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -49,7 +58,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT4", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesslevel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -60,7 +72,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT5", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesslevel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -71,7 +86,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT6", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanagerserviceperimeter" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -82,7 +100,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT7", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -93,7 +114,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT8", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -104,7 +128,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT9", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "artifactregistryrepository" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", @@ -115,5837 +142,9026 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT10", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" + "/samples/resources/bigquerydataset/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT11", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT12", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_2.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT13", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT14", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_0.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT15", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigqueryjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT16", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_2.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT17", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT18", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmscryptokey.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT19", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmscryptokey.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT20", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmscryptokey" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT21", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT22", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT23", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigqueryjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT24", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT25", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT26", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT27", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigqueryjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT28", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT29", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT30", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT31", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigqueryjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT32", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT33", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" + "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT34", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT35", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableappprofile" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" + "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT36", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT37", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableappprofile" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtablegcpolicy.yaml" + "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT38", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtablegcpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT39", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtablegcpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtabletable.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT40", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableinstance/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtabletable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT41", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtabletable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtabletable/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableinstance/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT42", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtabletable/bigtable_v1beta1_bigtabletable.yaml" + "/samples/resources/bigtabletable/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT43", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationattestor/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/bigtabletable/bigtable_v1beta1_bigtabletable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT44", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtabletable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationattestor/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationattestor/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT45", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/binaryauthorizationattestor/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT46", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT47", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/cluster-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT48", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/default-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT49", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/default-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT50", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/default-policy/serviceusage_v1beta1_service.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT51", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT52", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT53", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/namespace-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT54", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/serviceusage_v1beta1_service.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT55", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT56", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT57", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT58", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT59", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT60", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT61", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/sourcerepo_v1beta1_sourcereporepository.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT62", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-github-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT63", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT64", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/sourcerepo_v1beta1_sourcereporepository.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT65", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudidentitygroup/cloudidentity_v1beta1_cloudidentitygroup.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT66", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-http/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT67", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-oauth/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT68", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-oauth/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT69", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT70", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT71", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computeaddress.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT72", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computenetwork.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT73", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computeaddress.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT74", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudbuildtrigger" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/secretmanager_v1beta1_secretmanagersecret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT75", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secretmanagersecret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/secretmanager_v1beta1_secretmanagersecretversion.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT76", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secretmanagersecretversion" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendbucket/basic-backend-bucket/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/sourcerepo_v1beta1_sourcereporepository.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT77", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "sourcereporepository" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendbucket/basic-backend-bucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-github-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT78", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudbuildtrigger" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT79", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudbuildtrigger" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT80", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/sourcerepo_v1beta1_sourcereporepository.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT81", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "sourcereporepository" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/cloudidentitygroup/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT82", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitygroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/cloudidentitymembership/membership-with-expiration-date/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT83", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitygroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudidentitymembership/membership-with-expiration-date/cloudidentity_v1beta1_cloudidentitymembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT84", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitymembership" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetworkendpointgroup.yaml" + "/samples/resources/cloudidentitymembership/membership-with-manager-role/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT85", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitygroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/cloudidentitymembership/membership-with-manager-role/cloudidentity_v1beta1_cloudidentitymembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT86", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitymembership" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-http/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT87", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudschedulerjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-oauth/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT88", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudschedulerjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-oauth/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT89", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT90", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudschedulerjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT91", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_0.yaml" + "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT92", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_1.yaml" + "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT93", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computesnapshot.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT94", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/zonal-compute-disk/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT95", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/zonal-compute-disk/secret.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT96", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeexternalvpngateway/compute_v1beta1_computeexternalvpngateway.yaml" + "/samples/resources/computebackendbucket/basic-backend-bucket/compute_v1beta1_computebackendbucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT97", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendbucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computefirewall.yaml" + "/samples/resources/computebackendbucket/basic-backend-bucket/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT98", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/compute_v1beta1_computebackendbucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT99", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendbucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computefirewall.yaml" + "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT100", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT101", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT102", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT103", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computetargetgrpcproxy.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT104", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetworkendpointgroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT105", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetworkendpointgroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesecuritypolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT106", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesecuritypolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT107", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT108", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computetargethttpproxy.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT109", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT110", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT111", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT112", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT113", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computesnapshot.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT114", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesnapshot" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computetargetsslproxy.yaml" + "/samples/resources/computedisk/zonal-compute-disk/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT115", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_secret.yaml" + "/samples/resources/computedisk/zonal-compute-disk/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT116", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computeexternalvpngateway/compute_v1beta1_computeexternalvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT117", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeexternalvpngateway" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computefirewall.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT118", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewall" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT119", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computetargettcpproxy.yaml" + "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computefirewall.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT120", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewall" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT121", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computefirewallpolicy/compute_v1beta1_computefirewallpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT122", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewallpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computefirewallpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT123", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewallpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computefirewallpolicyrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT124", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewallpolicyrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computehealthcheck/global-health-check/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT125", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computehealthcheck/regional-health-check/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewallpolicyrule/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT126", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computehttphealthcheck/compute_v1beta1_computehttphealthcheck.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT127", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computehttpshealthcheck/compute_v1beta1_computehttpshealthcheck.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT128", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computetargetgrpcproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT129", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetgrpcproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT130", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeimage/image-from-url-raw/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT131", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_0.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT132", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_1.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT133", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computetargethttpproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT134", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargethttpproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT135", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT136", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT137", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/secret.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT138", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT139", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computetargetsslproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT140", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetsslproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT141", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT142", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT143", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT144", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computetargettcpproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT145", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargettcpproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT146", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT147", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/secret.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT148", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computetargetvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT149", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetvpngateway" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" + "/samples/resources/computehealthcheck/global-health-check/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT150", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/computehealthcheck/regional-health-check/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT151", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computehttphealthcheck/compute_v1beta1_computehttphealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT152", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehttphealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computehttpshealthcheck/compute_v1beta1_computehttpshealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT153", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehttpshealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT154", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computeimage.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT155", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeimage" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" + "/samples/resources/computeimage/image-from-url-raw/compute_v1beta1_computeimage.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT156", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeimage" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT157", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT158", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT159", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT160", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT161", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT162", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT163", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT164", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT165", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT166", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT167", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT168", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT169", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT170", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computeinterconnectattachment.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT171", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT172", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computerouter.yaml" + "/samples/resources/computeinstance/network-worker-instance/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT173", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetwork/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT174", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT175", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetworkendpointgroup.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT176", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT177", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_0.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT178", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_1.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT179", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_0.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT180", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_1.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT181", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroupmanager" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenodegroup/compute_v1beta1_computenodegroup.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT182", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenodegroup/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT183", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenodetemplate/flexible-node-template/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT184", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenodetemplate/typed-node-template/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT185", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeprojectmetadata/compute_v1beta1_computeprojectmetadata.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT186", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroupmanager" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computereservation/bulk-compute-reservation/compute_v1beta1_computereservation.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT187", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computereservation/specialized-compute-reservation/compute_v1beta1_computereservation.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT188", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeresourcepolicy/daily-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT189", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeresourcepolicy/hourly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT190", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeresourcepolicy/weekly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computeimage.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT191", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeimage" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeroute/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT192", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeroute/compute_v1beta1_computeroute.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT193", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouter/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT194", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouter/compute_v1beta1_computerouter.yaml" + "/samples/resources/computeinstancetemplate/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT195", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computeinterconnectattachment.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT196", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinterconnectattachment" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT197", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT198", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" + "/samples/resources/computenetwork/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT199", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT200", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetworkendpointgroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT201", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetworkendpointgroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computerouterinterface.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT202", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT203", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computevpntunnel.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT204", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/secret.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT205", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetworkpeering" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT206", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetworkpeering" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenodegroup/compute_v1beta1_computenodegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT207", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodegroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computenodegroup/compute_v1beta1_computenodetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT208", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenodetemplate/flexible-node-template/compute_v1beta1_computenodetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT209", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenodetemplate/typed-node-template/compute_v1beta1_computenodetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT210", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT211", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT212", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT213", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT214", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouter.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computepacketmirroring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT215", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computepacketmirroring" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT216", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeprojectmetadata/compute_v1beta1_computeprojectmetadata.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT217", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeprojectmetadata" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouter.yaml" + "/samples/resources/computereservation/bulk-compute-reservation/compute_v1beta1_computereservation.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT218", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computereservation" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouterinterface.yaml" + "/samples/resources/computereservation/specialized-compute-reservation/compute_v1beta1_computereservation.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT219", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computereservation" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouterpeer.yaml" + "/samples/resources/computeresourcepolicy/daily-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT220", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeresourcepolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesecuritypolicy/lockdown-security-policy-with-test/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/computeresourcepolicy/hourly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT221", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeresourcepolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesecuritypolicy/multirule-security-policy/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/computeresourcepolicy/weekly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT222", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeresourcepolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesharedvpchostproject/compute_v1beta1_computesharedvpchostproject.yaml" + "/samples/resources/computeroute/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT223", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpchostproject.yaml" + "/samples/resources/computeroute/compute_v1beta1_computeroute.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT224", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeroute" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpcserviceproject.yaml" + "/samples/resources/computerouter/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT225", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesharedvpcserviceproject/resourcemanager_v1beta1_project.yaml" + "/samples/resources/computerouter/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT226", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesnapshot/compute_v1beta1_computedisk.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT227", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesnapshot/compute_v1beta1_computesnapshot.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT228", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesnapshot/secret.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT229", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesslcertificate/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT230", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesslcertificate/secret.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT231", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesslpolicy/custom-tls-1-0-ssl-policy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT232", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesslpolicy/modern-tls-1-1-ssl-policy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computerouterinterface.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT233", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouterinterface" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesubnetwork/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computetargetvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT234", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetvpngateway" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesubnetwork/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computevpntunnel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT235", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computevpntunnel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouterinterface/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT236", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computetargetgrpcproxy.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT237", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT238", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouternat.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT239", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouternat" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT240", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computetargethttpproxy.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT241", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouternat.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT242", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouternat" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT243", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT244", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT245", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT246", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computetargethttpsproxy.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouternat.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT247", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouternat" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT248", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/secret.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT249", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouterinterface.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT250", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouterinterface" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouterpeer.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT251", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouterpeer" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computesecuritypolicy/lockdown-security-policy-with-test/compute_v1beta1_computesecuritypolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT252", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesecuritypolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computetargetinstance.yaml" + "/samples/resources/computesecuritypolicy/multirule-security-policy/compute_v1beta1_computesecuritypolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT253", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesecuritypolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computehttphealthcheck.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT254", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT255", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT256", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_2.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computeserviceattachment.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT257", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeserviceattachment" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_3.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT258", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT259", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT260", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeserviceattachment/resourcemanager_v1beta1_project_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT261", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_0.yaml" + "/samples/resources/computeserviceattachment/resourcemanager_v1beta1_project_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT262", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_1.yaml" + "/samples/resources/computesharedvpchostproject/compute_v1beta1_computesharedvpchostproject.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT263", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesharedvpchostproject" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpchostproject.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT264", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesharedvpchostproject" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpcserviceproject.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT265", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesharedvpcserviceproject" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computesharedvpcserviceproject/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT266", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computesnapshot/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT267", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computetargetsslproxy.yaml" + "/samples/resources/computesnapshot/compute_v1beta1_computesnapshot.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT268", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesnapshot" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/secret.yaml" + "/samples/resources/computesnapshot/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT269", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computesslcertificate/global-compute-ssl-certificate/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT270", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computesslcertificate/global-compute-ssl-certificate/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT271", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computetargettcpproxy.yaml" + "/samples/resources/computesslcertificate/regional-compute-ssl-certificate/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT272", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetvpngateway/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computesslcertificate/regional-compute-ssl-certificate/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT273", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetvpngateway/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computesslpolicy/custom-tls-1-0-ssl-policy/compute_v1beta1_computesslpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT274", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/computesslpolicy/modern-tls-1-1-ssl-policy/compute_v1beta1_computesslpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT275", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_0.yaml" + "/samples/resources/computesubnetwork/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT276", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_1.yaml" + "/samples/resources/computesubnetwork/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT277", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_2.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT278", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computetargetgrpcproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT279", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetgrpcproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT280", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT281", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT282", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computetargethttpproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT283", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargethttpproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT284", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpngateway/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT285", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpngateway/compute_v1beta1_computevpngateway.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT286", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT287", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT288", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computetargethttpsproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT289", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargethttpsproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT290", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargethttpsproxy/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT291", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT292", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computevpntunnel.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT293", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/secret.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT294", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containeranalysisnote/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computetargetinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT295", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/routes-based-container-cluster/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computehttphealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT296", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehttphealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT297", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT298", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT299", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_3.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT300", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containernodepool/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT301", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containernodepool/container_v1beta1_containernodepool.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT302", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT303", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT304", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetpool" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT305", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetpool" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT306", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT307", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubsubscription.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT308", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT309", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computetargetsslproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT310", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetsslproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/batch-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" + "/samples/resources/computetargetsslproxy/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT311", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/batch-dataflow-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT312", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT313", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computetargettcpproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT314", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargettcpproxy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" + "/samples/resources/computetargetvpngateway/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT315", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/computetargetvpngateway/compute_v1beta1_computetargetvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT316", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetvpngateway" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendbucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT317", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendbucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/datafusioninstance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT318", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/datafusioninstance/datafusion_v1beta1_datafusioninstance.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT319", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/datafusioninstance/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT320", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataprocautoscalingpolicy/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT321", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataproccluster/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT322", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataproccluster/dataproc_v1beta1_dataproccluster.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT323", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataproccluster/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT324", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT325", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocworkflowtemplate.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT326", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsmanagedzone/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computevpngateway/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT327", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsmanagedzone/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpngateway/compute_v1beta1_computevpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT328", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computevpngateway" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnspolicy/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT329", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnspolicy/dns_v1beta1_dnspolicy.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT330", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT331", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT332", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT333", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computetargetvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT334", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetvpngateway" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computevpntunnel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT335", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computevpntunnel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT336", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/configcontrollerinstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT337", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/configcontrollerinstance/configcontroller_v1beta1_configcontrollerinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT338", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "configcontrollerinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containeranalysisnote/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT339", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/autopilot-cluster/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT340", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/routes-based-container-cluster/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT341", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT342", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT343", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT344", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT345", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/basic-node-pool/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT346", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/basic-node-pool/container_v1beta1_containernodepool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT347", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containernodepool" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/compute_v1beta1_computenodegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT348", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodegroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/compute_v1beta1_computenodetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT349", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodetemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT350", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/container_v1beta1_containernodepool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT351", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containernodepool" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT352", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataflowflextemplatejob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/firestoreindex/firestore_v1beta1_firestoreindex.yaml" + "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT353", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/folder/folder-in-folder/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT354", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/folder/folder-in-org/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT355", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gameservicesrealm/gameservices_v1beta1_gameservicesrealm.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT356", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataflowflextemplatejob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubsubscription.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT357", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubsubscription" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT358", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT359", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataflowjob/batch-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT360", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataflowjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/container_v1beta1_containercluster.yaml" + "/samples/resources/dataflowjob/batch-dataflow-job/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT361", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT362", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT363", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT364", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataflowjob" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT365", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT366", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_2.yaml" + "/samples/resources/datafusioninstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT367", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_3.yaml" + "/samples/resources/datafusioninstance/datafusion_v1beta1_datafusioninstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT368", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "datafusioninstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/datafusioninstance/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT369", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataprocautoscalingpolicy/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT370", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataprocautoscalingpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataproccluster/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT371", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataprocautoscalingpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataproccluster/dataproc_v1beta1_dataproccluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT372", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataproccluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/container_v1beta1_containercluster.yaml" + "/samples/resources/dataproccluster/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT373", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT374", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataprocautoscalingpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeaturemembership.yaml" + "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocworkflowtemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT375", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataprocworkflowtemplate" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dnsmanagedzone/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT376", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsmanagedzone/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT377", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dnspolicy/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT378", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dnspolicy/dns_v1beta1_dnspolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT379", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnspolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_2.yaml" + "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT380", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubmembership/container_v1beta1_containercluster.yaml" + "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT381", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubmembership/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT382", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamauditconfig/iam_v1beta1_iamauditconfig.yaml" + "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT383", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamauditconfig/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT384", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/organization-role/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT385", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT386", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT387", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT388", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/project-role/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT389", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/iam_v1beta1_iampartialpolicy.yaml" + "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT390", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT391", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT392", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/iam_v1beta1_iampartialpolicy.yaml" + "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT393", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT394", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT395", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT396", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT397", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT398", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/iam_v1beta1_iampolicy.yaml" + "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT399", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT400", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT401", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/project-level-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/filestorebackup/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT402", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/filestorebackup/filestore_v1beta1_filestorebackup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT403", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "filestorebackup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/filestorebackup/filestore_v1beta1_filestoreinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT404", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "filestoreinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/filestoreinstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT405", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/filestoreinstance/filestore_v1beta1_filestoreinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT406", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "filestoreinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/firestoreindex/firestore_v1beta1_firestoreindex.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT407", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "firestoreindex" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/folder/folder-in-folder/resourcemanager_v1beta1_folder.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT408", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "folder" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/folder/folder-in-org/resourcemanager_v1beta1_folder.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT409", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "folder" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/kubernetes_service_account.yaml" + "/samples/resources/gameservicesrealm/gameservices_v1beta1_gameservicesrealm.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT410", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gameservicesrealm" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/gkehub_v1beta1_gkehubfeature.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT411", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeature" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT412", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT413", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT414", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT415", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubfeature.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT416", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeature" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubmembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT417", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubmembership" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT418", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT419", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT420", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT421", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_3.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT422", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/gkehub_v1beta1_gkehubfeature.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT423", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeature" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT424", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT425", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT426", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamserviceaccount/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeaturemembership/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT427", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeature.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT428", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeature" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccountkey.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeaturemembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT429", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeaturemembership" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iapbrand/iap_v1beta1_iapbrand.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubmembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT430", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubmembership" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapbrand.yaml" + "/samples/resources/gkehubfeaturemembership/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT431", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapidentityawareproxyclient.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT432", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformoauthidpconfig/identityplatform_v1beta1_identityplatformoauthidpconfig.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT433", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformoauthidpconfig/secret.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT434", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformtenant/identityplatform_v1beta1_identityplatformtenant.yaml" + "/samples/resources/gkehubmembership/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT435", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenant.yaml" + "/samples/resources/gkehubmembership/gkehub_v1beta1_gkehubmembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT436", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubmembership" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenantoauthidpconfig.yaml" + "/samples/resources/iamauditconfig/iam_v1beta1_iamauditconfig.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT437", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamauditconfig" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/secret.yaml" + "/samples/resources/iamauditconfig/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT438", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/kmscryptokey/kms_v1beta1_kmscryptokey.yaml" + "/samples/resources/iamcustomrole/organization-role/iam_v1beta1_iamcustomrole.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT439", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamcustomrole" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/kmscryptokey/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamcustomrole.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT440", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamcustomrole" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/kmskeyring/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT441", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogexclusion/billing-exclusion/logging_v1beta1_logginglogexclusion.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT442", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogexclusion/folder-exclusion/logging_v1beta1_logginglogexclusion.yaml" + "/samples/resources/iamcustomrole/project-role/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT443", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogexclusion/folder-exclusion/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/iampartialpolicy/project-level-policy/iam_v1beta1_iampartialpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT444", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampartialpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogexclusion/organization-exclusion/logging_v1beta1_logginglogexclusion.yaml" + "/samples/resources/iampartialpolicy/project-level-policy/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT445", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogexclusion/project-exclusion/logging_v1beta1_logginglogexclusion.yaml" + "/samples/resources/iampartialpolicy/project-level-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT446", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogexclusion/project-exclusion/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iampartialpolicy/pubsub-admin-policy/iam_v1beta1_iampartialpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT447", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampartialpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogsink/folder-sink/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/iampartialpolicy/pubsub-admin-policy/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT448", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogsink/folder-sink/logging_v1beta1_logginglogsink.yaml" + "/samples/resources/iampartialpolicy/pubsub-admin-policy/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT449", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogsink/folder-sink/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/iampolicy/external-project-level-policy/iam_v1beta1_iampolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT450", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogsink/organization-sink/logging_v1beta1_logginglogsink.yaml" + "/samples/resources/iampolicy/external-project-level-policy/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT451", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogsink/organization-sink/storage_v1beta1_storagebucket.yaml" + "/samples/resources/iampolicy/external-project-level-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT452", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogsink/project-sink/logging_v1beta1_logginglogsink.yaml" + "/samples/resources/iampolicy/kms-policy-with-condition/iam_v1beta1_iampolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT453", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogsink/project-sink/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/iampolicy/kms-policy-with-condition/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT454", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogsink/project-sink/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iampolicy/kms-policy-with-condition/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT455", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/memcacheinstance/compute_v1beta1_computeaddress.yaml" + "/samples/resources/iampolicy/project-level-policy/iam_v1beta1_iampolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT456", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/memcacheinstance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/iampolicy/project-level-policy/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT457", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/memcacheinstance/memcache_v1beta1_memcacheinstance.yaml" + "/samples/resources/iampolicy/project-level-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT458", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/memcacheinstance/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + "/samples/resources/iampolicy/pubsub-admin-policy/iam_v1beta1_iampolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT459", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringalertpolicy/instance-performance-alert-policy/monitoring_v1beta1_monitoringalertpolicy.yaml" + "/samples/resources/iampolicy/pubsub-admin-policy/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT460", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringalertpolicy/instance-performance-alert-policy/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicy/pubsub-admin-policy/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT461", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringalertpolicy.yaml" + "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iampolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT462", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_0.yaml" + "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT463", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_1.yaml" + "/samples/resources/iampolicy/workload-identity-policy/kubernetes_service_account.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT464", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "serviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringdashboard/monitoring_v1beta1_monitoringdashboard.yaml" + "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT465", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_0.yaml" + "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT466", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_1.yaml" + "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT467", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringmetricdescriptor/monitoring_v1beta1_monitoringmetricdescriptor.yaml" + "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT468", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT469", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/secret.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT470", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringnotificationchannel/disabled-email-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT471", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringnotificationchannel/sms-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamcustomrole.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT472", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamcustomrole" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networksecurityauthorizationpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT473", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networksecurityclienttlspolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT474", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networksecurityservertlspolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT475", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT476", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT477", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT478", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networkservices-v1beta1-networkservicesendpointpolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT479", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/osconfigguestpolicy/osconfig_v1beta1_osconfigguestpolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT480", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/project/project-in-folder/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamserviceaccount/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT481", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/project/project-in-org/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT482", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubsubscription.yaml" + "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccountkey.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT483", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccountkey" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + "/samples/resources/iamworkloadidentitypool/iam_v1beta1_iamworkloadidentitypool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT484", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypool" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/aws-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT485", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypool" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/pubsubtopic/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/aws-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypoolprovider.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT486", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypoolprovider" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/redisinstance/redis_v1beta1_redisinstance.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/oidc-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT487", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypool" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/oidc-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypoolprovider.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT488", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypoolprovider" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_resourcemanagerlien.yaml" + "/samples/resources/iapbrand/iap_v1beta1_iapbrand.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT489", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iapbrand" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapbrand.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT490", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iapbrand" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapidentityawareproxyclient.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT491", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iapidentityawareproxyclient" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-organization/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/identityplatformoauthidpconfig/identityplatform_v1beta1_identityplatformoauthidpconfig.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT492", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "identityplatformoauthidpconfig" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_project.yaml" + "/samples/resources/identityplatformoauthidpconfig/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT493", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/identityplatformtenant/identityplatform_v1beta1_identityplatformtenant.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT494", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "identityplatformtenant" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecret/automatic-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenant.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT495", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "identityplatformtenant" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecret/user-managed-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenantoauthidpconfig.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT496", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "identityplatformtenantoauthidpconfig" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecretversion/secret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT497", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/kmscryptokey/kms_v1beta1_kmscryptokey.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT498", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmscryptokey" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecretversion.yaml" + "/samples/resources/kmscryptokey/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT499", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/service/serviceusage_v1beta1_service.yaml" + "/samples/resources/kmskeyring/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT500", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_0.yaml" + "/samples/resources/logginglogexclusion/billing-exclusion/logging_v1beta1_logginglogexclusion.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT501", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogexclusion" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_1.yaml" + "/samples/resources/logginglogexclusion/folder-exclusion/logging_v1beta1_logginglogexclusion.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT502", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogexclusion" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/servicenetworkingconnection/compute_v1beta1_computenetwork.yaml" + "/samples/resources/logginglogexclusion/folder-exclusion/resourcemanager_v1beta1_folder.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT503", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "folder" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/servicenetworkingconnection/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + "/samples/resources/logginglogexclusion/organization-exclusion/logging_v1beta1_logginglogexclusion.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT504", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogexclusion" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sourcereporepository/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/logginglogexclusion/project-exclusion/logging_v1beta1_logginglogexclusion.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT505", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogexclusion" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sourcereporepository/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/logginglogexclusion/project-exclusion/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT506", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sourcereporepository/sourcerepo_v1beta1_sourcereporepository.yaml" + "/samples/resources/logginglogmetric/explicit-log-metric/logging_v1beta1_logginglogmetric.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT507", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogmetric" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/spannerdatabase/spanner_v1beta1_spannerdatabase.yaml" + "/samples/resources/logginglogmetric/exponential-log-metric/logging_v1beta1_logginglogmetric.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT508", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogmetric" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/spannerdatabase/spanner_v1beta1_spannerinstance.yaml" + "/samples/resources/logginglogmetric/int-log-metric/logging_v1beta1_logginglogmetric.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT509", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogmetric" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/spannerinstance/spanner_v1beta1_spannerinstance.yaml" + "/samples/resources/logginglogmetric/linear-log-metric/logging_v1beta1_logginglogmetric.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT510", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogmetric" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqldatabase/sql_v1beta1_sqldatabase.yaml" + "/samples/resources/logginglogsink/folder-sink/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT511", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqldatabase/sql_v1beta1_sqlinstance.yaml" + "/samples/resources/logginglogsink/folder-sink/logging_v1beta1_logginglogsink.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT512", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogsink" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/mysql-sql-instance/sql_v1beta1_sqlinstance.yaml" + "/samples/resources/logginglogsink/folder-sink/resourcemanager_v1beta1_folder.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT513", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "folder" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/mysql-sql-instance-high-availability/sql_v1beta1_sqlinstance.yaml" + "/samples/resources/logginglogsink/organization-sink/logging_v1beta1_logginglogsink.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT514", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogsink" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/mysql-sql-instance-with-replication/sql_v1beta1_sqlinstance_multiple_yaml_0.yaml" + "/samples/resources/logginglogsink/organization-sink/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT515", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/mysql-sql-instance-with-replication/sql_v1beta1_sqlinstance_multiple_yaml_1.yaml" + "/samples/resources/logginglogsink/project-sink/logging_v1beta1_logginglogsink.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT516", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogsink" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/postgres-sql-instance-high-availability/sql_v1beta1_sqlinstance.yaml" + "/samples/resources/logginglogsink/project-sink/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT517", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/private-ip-instance/compute_v1beta1_computeaddress.yaml" + "/samples/resources/logginglogsink/project-sink/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT518", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/private-ip-instance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/memcacheinstance/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT519", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/private-ip-instance/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + "/samples/resources/memcacheinstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT520", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlinstance/private-ip-instance/sql_v1beta1_sqlinstance.yaml" + "/samples/resources/memcacheinstance/memcache_v1beta1_memcacheinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT521", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "memcacheinstance" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlsslcert/sql_v1beta1_sqlinstance.yaml" + "/samples/resources/memcacheinstance/servicenetworking_v1beta1_servicenetworkingconnection.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT522", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "servicenetworkingconnection" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqlsslcert/sql_v1beta1_sqlsslcert.yaml" + "/samples/resources/monitoringalertpolicy/instance-performance-alert-policy/monitoring_v1beta1_monitoringalertpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT523", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringalertpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqluser/secret.yaml" + "/samples/resources/monitoringalertpolicy/instance-performance-alert-policy/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT524", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqluser/sql_v1beta1_sqlinstance.yaml" + "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringalertpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT525", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringalertpolicy" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqluser/sql_v1beta1_sqluser.yaml" + "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT526", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagebucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT527", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringdashboard/monitoring_v1beta1_monitoringdashboard.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT528", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringdashboard" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucketaccesscontrol.yaml" + "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT529", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringgroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT530", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringgroup" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagedefaultobjectaccesscontrol.yaml" + "/samples/resources/monitoringmetricdescriptor/monitoring_v1beta1_monitoringmetricdescriptor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT531", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringmetricdescriptor" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagenotification/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT532", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagenotification/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT533", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagenotification/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringnotificationchannel/disabled-email-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT534", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagenotification/storage_v1beta1_storagenotification.yaml" + "/samples/resources/monitoringnotificationchannel/sms-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT535", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_0.yaml" + "/samples/resources/monitoringservice/monitoring_v1beta1_monitoringservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT536", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_1.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-distribution-cut/monitoring_v1beta1_monitoringservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT537", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/storagetransfer_v1beta1_storagetransferjob.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-distribution-cut/monitoring_v1beta1_monitoringservicelevelobjective.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT538", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_0.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-good-total-ratio/monitoring_v1beta1_monitoringservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT539", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] }, { "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_1.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-good-total-ratio/monitoring_v1beta1_monitoringservicelevelobjective.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT540", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/request-based-gtr-total-service-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT541", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/request-based-gtr-total-service-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT542", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-good-bad-metric-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT543", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-good-bad-metric-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT544", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-distribution-cut/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT545", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-distribution-cut/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT546", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT547", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT548", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr-total-service-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT549", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr-total-service-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT550", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-mean-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT551", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-mean-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT552", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-sum-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT553", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-sum-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT554", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/http-uptime-check-config/monitoring_v1beta1_monitoringuptimecheckconfig.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT555", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringuptimecheckconfig" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/http-uptime-check-config/secret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT556", + "status": "active", + "validate": true, + "resourceTypes": [ + "secret" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/tcp-uptime-check-config/monitoring_v1beta1_monitoringgroup.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT557", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringgroup" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/tcp-uptime-check-config/monitoring_v1beta1_monitoringuptimecheckconfig.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT558", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringuptimecheckconfig" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityhub/networkconnectivity_v1beta1_networkconnectivityhub.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT559", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkconnectivityhub" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computeinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT560", + "status": "active", + "validate": true, + "resourceTypes": [ + "computeinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT561", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computesubnetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT562", + "status": "active", + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/networkconnectivity_v1beta1_networkconnectivityhub.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT563", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkconnectivityhub" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/networkconnectivity_v1beta1_networkconnectivityspoke.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT564", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkconnectivityspoke" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networksecurityauthorizationpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT565", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityauthorizationpolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networksecurityclienttlspolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT566", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityclienttlspolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networksecurityservertlspolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT567", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityservertlspolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT568", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityauthorizationpolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT569", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityclienttlspolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT570", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityservertlspolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networkservices-v1beta1-networkservicesendpointpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT571", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicesendpointpolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesgateway/networkservices_v1beta1_networkservicesgateway.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT572", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicesgateway" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesgrpcroute/compute_v1beta1_computebackendservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT573", + "status": "active", + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesgrpcroute/networkservices_v1beta1_networkservicesgrpcroute.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT574", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicesgrpcroute" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkserviceshttproute/compute_v1beta1_computebackendservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT575", + "status": "active", + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkserviceshttproute/networkservices_v1beta1_networkserviceshttproute.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT576", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkserviceshttproute" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesmesh/networkservices_v1beta1_networkservicesmesh.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT577", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicesmesh" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicestcproute/compute_v1beta1_computebackendservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT578", + "status": "active", + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicestcproute/networkservices_v1beta1_networkservicestcproute.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT579", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicestcproute" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/osconfigguestpolicy/osconfig_v1beta1_osconfigguestpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT580", + "status": "active", + "validate": true, + "resourceTypes": [ + "osconfigguestpolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/osconfigospolicyassignment/fixed-os-policy-assignment/osconfig_v1beta1_osconfigospolicyassignment.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT581", + "status": "active", + "validate": true, + "resourceTypes": [ + "osconfigospolicyassignment" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/osconfigospolicyassignment/percent-os-policy-assignment/osconfig_v1beta1_osconfigospolicyassignment.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT582", + "status": "active", + "validate": true, + "resourceTypes": [ + "osconfigospolicyassignment" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/privatecacapool/privateca_v1beta1_privatecacapool.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT583", + "status": "active", + "validate": true, + "resourceTypes": [ + "privatecacapool" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/privatecacertificatetemplate/privateca_v1beta1_privatecacertificatetemplate.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT584", + "status": "active", + "validate": true, + "resourceTypes": [ + "privatecacertificatetemplate" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/project/project-in-folder/resourcemanager_v1beta1_project.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT585", + "status": "active", + "validate": true, + "resourceTypes": [ + "project" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/project/project-in-org/resourcemanager_v1beta1_project.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT586", + "status": "active", + "validate": true, + "resourceTypes": [ + "project" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubsubscription.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT587", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubsubscription" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT588", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT589", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/pubsubtopic/pubsub_v1beta1_pubsubtopic.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT590", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/recaptchaenterprisekey/android-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT591", + "status": "active", + "validate": true, + "resourceTypes": [ + "recaptchaenterprisekey" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/recaptchaenterprisekey/challenge-based-web-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT592", + "status": "active", + "validate": true, + "resourceTypes": [ + "recaptchaenterprisekey" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/recaptchaenterprisekey/ios-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT593", + "status": "active", + "validate": true, + "resourceTypes": [ + "recaptchaenterprisekey" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/recaptchaenterprisekey/score-based-web-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT594", + "status": "active", + "validate": true, + "resourceTypes": [ + "recaptchaenterprisekey" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/redisinstance/redis_v1beta1_redisinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT595", + "status": "active", + "validate": true, + "resourceTypes": [ + "redisinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_project.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT596", + "status": "active", + "validate": true, + "resourceTypes": [ + "project" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_resourcemanagerlien.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT597", + "status": "active", + "validate": true, + "resourceTypes": [ + "resourcemanagerlien" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_folder.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT598", + "status": "active", + "validate": true, + "resourceTypes": [ + "folder" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT599", + "status": "active", + "validate": true, + "resourceTypes": [ + "resourcemanagerpolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-organization/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT600", + "status": "active", + "validate": true, + "resourceTypes": [ + "resourcemanagerpolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_project.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT601", + "status": "active", + "validate": true, + "resourceTypes": [ + "project" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT602", + "status": "active", + "validate": true, + "resourceTypes": [ + "resourcemanagerpolicy" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/runservice/run_v1beta1_runservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT603", + "status": "active", + "validate": true, + "resourceTypes": [ + "runservice" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecret/automatic-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT604", + "status": "active", + "validate": true, + "resourceTypes": [ + "secretmanagersecret" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecret/user-managed-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT605", + "status": "active", + "validate": true, + "resourceTypes": [ + "secretmanagersecret" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecretversion/secret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT606", + "status": "active", + "validate": true, + "resourceTypes": [ + "secret" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT607", + "status": "active", + "validate": true, + "resourceTypes": [ + "secretmanagersecret" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecretversion.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT608", + "status": "active", + "validate": true, + "resourceTypes": [ + "secretmanagersecretversion" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/service/serviceusage_v1beta1_service.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT609", + "status": "active", + "validate": true, + "resourceTypes": [ + "service" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT610", + "status": "active", + "validate": true, + "resourceTypes": [ + "computeaddress" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT611", + "status": "active", + "validate": true, + "resourceTypes": [ + "computeaddress" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT612", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/servicenetworkingconnection/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT613", + "status": "active", + "validate": true, + "resourceTypes": [ + "servicenetworkingconnection" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sourcereporepository/iam_v1beta1_iamserviceaccount.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT614", + "status": "active", + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sourcereporepository/pubsub_v1beta1_pubsubtopic.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT615", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sourcereporepository/sourcerepo_v1beta1_sourcereporepository.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT616", + "status": "active", + "validate": true, + "resourceTypes": [ + "sourcereporepository" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/spannerdatabase/spanner_v1beta1_spannerdatabase.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT617", + "status": "active", + "validate": true, + "resourceTypes": [ + "spannerdatabase" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/spannerdatabase/spanner_v1beta1_spannerinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT618", + "status": "active", + "validate": true, + "resourceTypes": [ + "spannerinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/spannerinstance/spanner_v1beta1_spannerinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT619", + "status": "active", + "validate": true, + "resourceTypes": [ + "spannerinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqldatabase/sql_v1beta1_sqldatabase.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT620", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqldatabase" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqldatabase/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT621", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT622", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-high-availability/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT623", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-with-replication/sql_v1beta1_sqlinstance_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT624", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-with-replication/sql_v1beta1_sqlinstance_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT625", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/postgres-sql-instance-high-availability/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT626", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/compute_v1beta1_computeaddress.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT627", + "status": "active", + "validate": true, + "resourceTypes": [ + "computeaddress" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT628", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT629", + "status": "active", + "validate": true, + "resourceTypes": [ + "servicenetworkingconnection" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT630", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlsslcert/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT631", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlsslcert/sql_v1beta1_sqlsslcert.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT632", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlsslcert" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqluser/secret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT633", + "status": "active", + "validate": true, + "resourceTypes": [ + "secret" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqluser/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT634", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqluser/sql_v1beta1_sqluser.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT635", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqluser" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagebucket/storage_v1beta1_storagebucket.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT636", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucket.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT637", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucketaccesscontrol.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT638", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucketaccesscontrol" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagebucket.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT639", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagedefaultobjectaccesscontrol.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT640", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagedefaultobjectaccesscontrol" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagenotification/iam_v1beta1_iampolicymember.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT641", + "status": "active", + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagenotification/pubsub_v1beta1_pubsubtopic.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT642", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagenotification/storage_v1beta1_storagebucket.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT643", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagenotification/storage_v1beta1_storagenotification.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT644", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagenotification" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT645", + "status": "active", + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT646", + "status": "active", + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/storagetransfer_v1beta1_storagetransferjob.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT647", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagetransferjob" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT648", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT649", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/cidr-connector/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT650", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/cidr-connector/vpcaccess_v1beta1_vpcaccessconnector.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT651", + "status": "active", + "validate": true, + "resourceTypes": [ + "vpcaccessconnector" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT652", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/compute_v1beta1_computesubnetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT653", + "status": "active", + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] + }, + { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/vpcaccess_v1beta1_vpcaccessconnector.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT654", + "status": "active", + "validate": true, + "resourceTypes": [ + "vpcaccessconnector" + ] } ], "testUser": "Shahin", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT1 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT1 index 4873591..622d495 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT1 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT1 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/accesscontextmanageraccesslevel/accesscontextmanager_v1beta1_accesscontextmanageraccesslevel.yaml" ], - "timestamp": 1628765138163, + "timestamp": 1642973301639, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT1", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesslevel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT1", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT10 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT10 index 4321e19..0a10028 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT10 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT10 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/bigquerydataset/bigquery_v1beta1_bigquerydataset.yaml" ], - "timestamp": 1628765138409, + "timestamp": 1642973301681, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT10", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT10", "collection": "kcctemplate", @@ -36,7 +39,21 @@ "defaultTableExpirationMs": 3600000, "description": "BigQuery Dataset Sample", "friendlyName": "bigquerydataset-sample", - "location": "US" + "location": "US", + "access": [ + { + "role": "OWNER", + "userByEmail": "bigquerydataset-dep@${PROJECT_ID?}.iam.gserviceaccount.com" + }, + { + "role": "WRITER", + "specialGroup": "projectWriters" + }, + { + "role": "READER", + "domain": "google.com" + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT100 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT100 index 954e5b7..451cb5d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT100 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT100 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computefirewall.yaml" + "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/storage_v1beta1_storagebucket.yaml" ], - "timestamp": 1628765140331, + "timestamp": 1642973302321, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computefirewall.yaml" + "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT100", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT100", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeFirewall", + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computefirewall-sample-deny" - }, - "spec": { - "deny": [ - { - "protocol": "icmp" - } - ], - "networkRef": { - "name": "computefirewall-dep-deny" - } + "name": "${PROJECT_ID?}-backendbucket-dep-cdn" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT101 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT101 index 3ea39a0..ebfb395 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT101 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT101 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765140349, + "timestamp": 1642973302324, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,63 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT101", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT101", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeBackendService", "metadata": { - "name": "computefirewall-dep-deny" + "name": "computebackendservice-sample-externalloadbalancing" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "description": "External backend service with cookie-based session affinity.", + "portName": "cookie-cloud", + "timeoutSec": 30, + "healthChecks": [ + { + "healthCheckRef": { + "name": "computebackendservice-dep-externalloadbalancing" + } + } + ], + "loadBalancingScheme": "EXTERNAL", + "location": "global", + "protocol": "HTTPS", + "affinityCookieTtlSec": 360, + "connectionDrainingTimeoutSec": 60, + "securityPolicyRef": { + "name": "computebackendservice-dep-externalloadbalancing" + }, + "sessionAffinity": "GENERATED_COOKIE", + "customRequestHeaders": [ + "Trailer: custom-trailer" + ], + "logConfig": { + "enable": true, + "sampleRate": 0.5 + }, + "backend": [ + { + "balancingMode": "RATE", + "capacityScaler": 1, + "description": "A network endpoint group serving this backend with all its available capacity, as calculated by number of simultaneous connections.", + "maxRatePerEndpoint": 10, + "group": { + "networkEndpointGroupRef": { + "name": "computebackendservice-dep-externalloadbalancing" + } + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT102 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT102 index 7d28a9f..8739b80 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT102 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT102 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765140371, + "timestamp": 1642973302329, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT102", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT102", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computeforwardingrule-dep-global-with-grpc-proxy" + "name": "computebackendservice-dep-externalloadbalancing" }, "spec": { - "location": "global", - "loadBalancingScheme": "INTERNAL_SELF_MANAGED", - "protocol": "GRPC" + "httpsHealthCheck": { + "port": 443 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT103 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT103 index f820fec..d0e2ca2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT103 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT103 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" ], - "timestamp": 1628765140389, + "timestamp": 1642973302332, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT103", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT103", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeInstanceGroup", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computeforwardingrule-sample-global-with-grpc-proxy" + "name": "computebackendservice-dep-externalloadbalancing" }, "spec": { - "description": "A global forwarding rule", - "target": { - "targetGRPCProxyRef": { - "name": "computeforwardingrule-dep-global-with-grpc-proxy" + "namedPort": [ + { + "name": "cookie-cloud", + "port": 8444 } - }, - "loadBalancingScheme": "INTERNAL_SELF_MANAGED", - "ipAddress": { - "ip": "0.0.0.0" - }, - "portRange": "80", - "ipProtocol": "TCP", - "location": "global" + ], + "zone": "us-central1-a", + "networkRef": { + "name": "computebackendservice-dep-externalloadbalancing" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT104 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT104 index cc46885..d025748 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT104 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT104 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computetargetgrpcproxy.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765140409, + "timestamp": 1642973302339, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computetargetgrpcproxy.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT104", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT104", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetGRPCProxy", + "kind": "ComputeNetwork", "metadata": { - "name": "computeforwardingrule-dep-global-with-grpc-proxy" + "name": "computebackendservice-dep-externalloadbalancing" }, "spec": { - "description": "A target gRPC proxy intended for load balancing gRPC traffic, referenced by global forwarding rules. References a URL map which specifies how traffic routes to gRPC backend services.", - "urlMapRef": { - "name": "computeforwardingrule-dep-global-with-grpc-proxy" - }, - "validateForProxyless": true + "routingMode": "GLOBAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT105 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT105 index f2be295..8eb8722 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT105 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT105 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetworkendpointgroup.yaml" ], - "timestamp": 1628765140429, + "timestamp": 1642973302343, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetworkendpointgroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT105", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetworkendpointgroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT105", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeURLMap", + "kind": "ComputeNetworkEndpointGroup", "metadata": { - "name": "computeforwardingrule-dep-global-with-grpc-proxy" + "name": "computebackendservice-dep-externalloadbalancing" }, "spec": { - "location": "global", - "defaultService": { - "backendServiceRef": { - "name": "computeforwardingrule-dep-global-with-grpc-proxy" - } - } + "networkRef": { + "name": "computebackendservice-dep-externalloadbalancing" + }, + "subnetworkRef": { + "name": "computebackendservice-dep-externalloadbalancing" + }, + "location": "us-west1-a" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT106 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT106 index 6a25749..dfd6d05 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT106 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT106 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesecuritypolicy.yaml" ], - "timestamp": 1628765140449, + "timestamp": 1642973302347, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesecuritypolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT106", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesecuritypolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT106", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeSecurityPolicy", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-http-proxy" + "name": "computebackendservice-dep-externalloadbalancing" }, "spec": { - "healthChecks": [ + "rule": [ { - "healthCheckRef": { - "name": "computeforwardingrule-dep-global-with-target-http-proxy" + "action": "deny(403)", + "priority": 2147483647, + "match": { + "versionedExpr": "SRC_IPS_V1", + "config": { + "srcIpRanges": [ + "*" + ] + } } } - ], - "location": "global" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT107 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT107 index d9c25c1..4f16090 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT107 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT107 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765140476, + "timestamp": 1642973302356, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT107", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT107", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeSubnetwork", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computeforwardingrule-sample-global-with-target-http-proxy" + "name": "computebackendservice-dep-externalloadbalancing" }, "spec": { - "description": "A global forwarding rule", - "target": { - "targetHTTPProxyRef": { - "name": "computeforwardingrule-dep-global-with-target-http-proxy" - } - }, - "portRange": "80", - "ipProtocol": "TCP", - "ipVersion": "IPV4", - "location": "global" + "ipCidrRange": "10.2.0.0/16", + "region": "us-west1", + "networkRef": { + "name": "computebackendservice-dep-externalloadbalancing" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT108 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT108 index 94a828f..97f3c4f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT108 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT108 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765140493, + "timestamp": 1642973302362, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,88 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT108", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT108", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeBackendService", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-http-proxy" + "name": "computebackendservice-sample-internalmanagedloadbalancing" }, "spec": { - "checkIntervalSec": 10, - "httpHealthCheck": { - "port": 80 + "description": "Internal managed backend service with Maglev session affinity.", + "localityLbPolicy": "MAGLEV", + "timeoutSec": 86400, + "consistentHash": { + "httpHeaderName": "Hash string" }, - "location": "global" + "healthChecks": [ + { + "healthCheckRef": { + "name": "computebackendservice-dep-internalmanagedloadbalancing" + } + } + ], + "loadBalancingScheme": "INTERNAL_MANAGED", + "location": "us-east1", + "protocol": "HTTP", + "connectionDrainingTimeoutSec": 10, + "sessionAffinity": "HEADER_FIELD", + "circuitBreakers": { + "connectTimeout": { + "nanos": 999999999, + "seconds": 0 + }, + "maxConnections": 1024, + "maxPendingRequests": 1024, + "maxRequests": 1024, + "maxRequestsPerConnection": 1, + "maxRetries": 3 + }, + "logConfig": { + "enable": false + }, + "outlierDetection": { + "consecutiveGatewayFailure": 5, + "enforcingConsecutiveErrors": 100, + "enforcingSuccessRate": 100, + "successRateMinimumHosts": 5, + "successRateRequestVolume": 100, + "baseEjectionTime": { + "nanos": 999999999, + "seconds": 29 + }, + "consecutiveErrors": 5, + "enforcingConsecutiveGatewayFailure": 0, + "interval": { + "nanos": 999999999, + "seconds": 9 + }, + "maxEjectionPercent": 10, + "successRateStdevFactor": 1900 + }, + "backend": [ + { + "balancingMode": "RATE", + "capacityScaler": 0.9, + "description": "An instance group serving this backend with 90% of its capacity, as calculated by requests per second.", + "maxRate": 10000, + "group": { + "instanceGroupRef": { + "name": "computebackendservice-dep-internalmanagedloadbalancing" + } + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT109 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT109 index dba500d..7747537 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT109 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT109 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computetargethttpproxy.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765140512, + "timestamp": 1642973302366, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computetargethttpproxy.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT109", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT109", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetHTTPProxy", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-http-proxy" + "name": "computebackendservice-dep-internalmanagedloadbalancing" }, "spec": { - "urlMapRef": { - "name": "computeforwardingrule-dep-global-with-target-http-proxy" + "httpHealthCheck": { + "port": 80 }, "location": "global" } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT11 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT11 index 5100eb5..72866c0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT11 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT11 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" + "/samples/resources/bigquerydataset/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765138448, + "timestamp": 1642973301686, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" + "/samples/resources/bigquerydataset/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT11", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT11", "collection": "kcctemplate", "json": { - "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryDataset", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "bigqueryjobdep1copy" - }, - "spec": { - "description": "Source BigQueryDataset 1", - "friendlyName": "bigqueryjob-dep1-copy" + "annotations": { + "cnrm.cloud.google.com/project-id": "${PROJECT_ID?}" + }, + "name": "bigquerydataset-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT110 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT110 index cfbf17f..4718733 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT110 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT110 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" ], - "timestamp": 1628765140531, + "timestamp": 1642973302372, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT110", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT110", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeURLMap", + "kind": "ComputeInstanceGroup", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-http-proxy" + "name": "computebackendservice-dep-internalmanagedloadbalancing" }, "spec": { - "defaultService": { - "backendServiceRef": { - "name": "computeforwardingrule-dep-global-with-target-http-proxy" - } - }, - "location": "global" + "zone": "us-east1-c", + "networkRef": { + "name": "computebackendservice-dep-internalmanagedloadbalancing" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT111 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT111 index 9f33861..346f988 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT111 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT111 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765140547, + "timestamp": 1642973302376, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT111", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT111", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeNetwork", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + "name": "computebackendservice-dep-internalmanagedloadbalancing" }, "spec": { - "healthChecks": [ - { - "healthCheckRef": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" - } - } - ], - "protocol": "TCP", - "location": "global" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT112 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT112 index aa5cc18..3b6876b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT112 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT112 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_0.yaml" ], - "timestamp": 1628765140569, + "timestamp": 1642973302380, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT112", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT112", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeDisk", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computeforwardingrule-sample-global-with-target-ssl-proxy" + "name": "computedisk-dep-regional" }, "spec": { - "description": "A global forwarding rule", - "target": { - "targetSSLProxyRef": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" - } - }, - "portRange": "995", - "ipProtocol": "TCP", - "ipVersion": "IPV4", - "location": "global" + "location": "us-west1-c" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT113 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT113 index 0fc5e20..6dce2d4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT113 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT113 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_1.yaml" ], - "timestamp": 1628765140593, + "timestamp": 1642973302409, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT113", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT113", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeDisk", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + "labels": { + "extra-gb": "100" + }, + "name": "computedisk-sample-regional" }, "spec": { - "checkIntervalSec": 10, - "sslHealthCheck": { - "port": 995 - }, - "location": "global" + "description": "A 600GB regional disk from a 500GB snapshot.", + "location": "us-central1", + "physicalBlockSizeBytes": 16384, + "replicaZones": [ + "us-central1-a", + "us-central1-f" + ], + "size": 600, + "snapshotRef": { + "name": "computedisk-dep-regional" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT114 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT114 index 2893e83..61e167f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT114 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT114 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computesnapshot.yaml" ], - "timestamp": 1628765140618, + "timestamp": 1642973302413, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,39 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computesnapshot.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT114", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesnapshot" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT114", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSSLCertificate", + "kind": "ComputeSnapshot", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + "name": "computedisk-dep-regional" }, "spec": { - "location": "global", - "description": "example compute SSL certificate", - "certificate": { - "valueFrom": { - "secretKeyRef": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy", - "key": "certificate" - } - } + "sourceDiskRef": { + "name": "computedisk-dep-regional" }, - "privateKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy", - "key": "privateKey" - } - } - } + "zone": "us-west1-c" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT115 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT115 index 957137c..e74467b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT115 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT115 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computetargetsslproxy.yaml" + "/samples/resources/computedisk/zonal-compute-disk/compute_v1beta1_computedisk.yaml" ], - "timestamp": 1628765140640, + "timestamp": 1642973302420, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,42 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computetargetsslproxy.yaml" + "/samples/resources/computedisk/zonal-compute-disk/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT115", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT115", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetSSLProxy", + "kind": "ComputeDisk", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + "name": "computedisk-sample-zonal", + "labels": { + "label-one": "value-one" + } }, "spec": { - "backendServiceRef": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" - }, - "sslCertificates": [ - { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + "description": "a sample encrypted, blank disk", + "diskEncryptionKey": { + "rawKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computedisk-dep-zonal", + "key": "sharedSecret" + } + } } - ] + }, + "physicalBlockSizeBytes": 4096, + "size": 1, + "type": "pd-ssd", + "location": "us-west1-c" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT116 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT116 index 6c549db..bf0ef07 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT116 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT116 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_secret.yaml" + "/samples/resources/computedisk/zonal-compute-disk/secret.yaml" ], - "timestamp": 1628765140668, + "timestamp": 1642973302437, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_secret.yaml" + "/samples/resources/computedisk/zonal-compute-disk/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT116", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT116", "collection": "kcctemplate", @@ -27,11 +30,10 @@ "apiVersion": "v1", "kind": "Secret", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + "name": "computedisk-dep-zonal" }, "stringData": { - "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", - "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" + "sharedSecret": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT117 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT117 index 642edcb..7999ea1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT117 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT117 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computeexternalvpngateway/compute_v1beta1_computeexternalvpngateway.yaml" ], - "timestamp": 1628765140685, + "timestamp": 1642973302442, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,35 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computeexternalvpngateway/compute_v1beta1_computeexternalvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT117", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeexternalvpngateway" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT117", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeExternalVPNGateway", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" + "name": "computeexternalvpngateway-sample", + "labels": { + "label-one": "value-one" + } }, "spec": { - "healthChecks": [ + "description": "an external vpn gateway", + "redundancyType": "SINGLE_IP_INTERNALLY_REDUNDANT", + "interface": [ { - "healthCheckRef": { - "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" - } + "id": 0, + "ipAddress": "8.8.8.8" } - ], - "protocol": "TCP", - "location": "global" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT118 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT118 index e33e95f..49c15f1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT118 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT118 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computefirewall.yaml" ], - "timestamp": 1628765140708, + "timestamp": 1642973302446, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,42 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computefirewall.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT118", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewall" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT118", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeFirewall", "metadata": { "labels": { "label-one": "value-one" }, - "name": "computeforwardingrule-sample-global-with-target-tcp-proxy" + "name": "computefirewall-sample-allow" }, "spec": { - "description": "A global forwarding rule", - "target": { - "targetTCPProxyRef": { - "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" + "allow": [ + { + "protocol": "tcp", + "ports": [ + "80", + "1000-2000" + ] } + ], + "networkRef": { + "name": "computefirewall-dep-allow" }, - "portRange": "110", - "ipProtocol": "TCP", - "ipVersion": "IPV4", - "location": "global" + "sourceTags": [ + "web" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT119 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT119 index 9de7cd3..5642c39 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT119 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT119 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765140728, + "timestamp": 1642973302450, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT119", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT119", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeNetwork", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" + "name": "computefirewall-dep-allow" }, "spec": { - "checkIntervalSec": 10, - "tcpHealthCheck": { - "port": 110 - }, - "location": "global" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT12 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT12 index dbcebf0..5621194 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT12 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT12 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" ], - "timestamp": 1628765138469, + "timestamp": 1642973301690, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT12", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT12", "collection": "kcctemplate", @@ -27,11 +30,11 @@ "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", "kind": "BigQueryDataset", "metadata": { - "name": "bigqueryjobdep2copy" + "name": "bigqueryjobdep1copy" }, "spec": { - "description": "Source BigQueryDataset 2", - "friendlyName": "bigqueryjob-dep2-copy" + "description": "Source BigQueryDataset 1", + "friendlyName": "bigqueryjob-dep1-copy" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT120 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT120 index 9a1d84c..ebd1075 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT120 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT120 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computetargettcpproxy.yaml" + "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computefirewall.yaml" ], - "timestamp": 1628765140750, + "timestamp": 1642973302454, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computetargettcpproxy.yaml" + "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computefirewall.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT120", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewall" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT120", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetTCPProxy", + "kind": "ComputeFirewall", "metadata": { - "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" + "labels": { + "label-one": "value-one" + }, + "name": "computefirewall-sample-deny" }, "spec": { - "backendServiceRef": { - "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" - } + "deny": [ + { + "protocol": "icmp" + } + ], + "networkRef": { + "name": "computefirewall-dep-deny" + }, + "sourceTags": [ + "web" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT121 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT121 index 19db243..a22b406 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT121 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT121 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765140769, + "timestamp": 1642973302458, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computefirewall/deny-rule-firewall/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT121", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT121", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeAddress", + "kind": "ComputeNetwork", "metadata": { - "name": "computeforwardingrule-dep-regional", - "labels": { - "label-one": "value-one" - } + "name": "computefirewall-dep-deny" }, "spec": { - "location": "us-central1" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT122 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT122 index 6e661cd..657d404 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT122 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT122 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computefirewallpolicy/compute_v1beta1_computefirewallpolicy.yaml" ], - "timestamp": 1628765140791, + "timestamp": 1642973302463, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeforwardingrule.yaml" + "/samples/resources/computefirewallpolicy/compute_v1beta1_computefirewallpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT122", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewallpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT122", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeFirewallPolicy", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computeforwardingrule-sample-regional" + "name": "firewallpolicy-sample-org" }, "spec": { - "description": "A regional forwarding rule", - "target": { - "targetVPNGatewayRef": { - "name": "computeforwardingrule-dep-regional" - } + "organizationRef": { + "external": "organizations/${ORG_ID?}" }, - "ipProtocol": "ESP", - "location": "us-central1", - "ipAddress": { - "addressRef": { - "name": "computeforwardingrule-dep-regional" - } - } + "shortName": "${PROJECT_ID?}-short", + "description": "A basic organization firewall policy" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT123 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT123 index 9999c3e..44ce28b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT123 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT123 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computefirewallpolicy.yaml" ], - "timestamp": 1628765140810, + "timestamp": 1642973302466, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computefirewallpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT123", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewallpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT123", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeFirewallPolicy", "metadata": { - "name": "computeforwardingrule-dep-regional" + "name": "firewallpolicyrule-dep" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "organizationRef": { + "external": "organizations/${ORG_ID?}" + }, + "shortName": "${PROJECT_ID?}-short", + "description": "A basic organization firewall policy" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT124 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT124 index 284a2ec..ccddedb 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT124 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT124 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computefirewallpolicyrule.yaml" ], - "timestamp": 1628765140826, + "timestamp": 1642973302472, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,53 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computefirewallpolicyrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT124", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computefirewallpolicyrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT124", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetVPNGateway", + "kind": "ComputeFirewallPolicyRule", "metadata": { - "name": "computeforwardingrule-dep-regional" + "name": "firewallpolicyrule-sample" }, "spec": { - "description": "a regional target vpn gateway", - "region": "us-central1", - "networkRef": { - "name": "computeforwardingrule-dep-regional" - } + "action": "deny", + "description": "A Firewall Policy Rule", + "direction": "INGRESS", + "disabled": false, + "enableLogging": false, + "firewallPolicyRef": { + "name": "firewallpolicyrule-dep" + }, + "match": { + "layer4Configs": [ + { + "ipProtocol": "tcp" + } + ], + "srcIPRanges": [ + "10.100.0.1/32" + ] + }, + "priority": 9000, + "targetResources": [ + { + "name": "firewallpolicyrule-dep" + } + ], + "targetServiceAccounts": [ + { + "name": "firewallpolicyrule-dep" + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT125 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT125 index 3d81916..4106df5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT125 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT125 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computehealthcheck/global-health-check/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765140836, + "timestamp": 1642973302477, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computehealthcheck/global-health-check/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewallpolicyrule/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT125", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT125", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeNetwork", "metadata": { - "name": "computehealthcheck-sample-global" + "name": "firewallpolicyrule-dep" }, "spec": { - "checkIntervalSec": 10, - "httpHealthCheck": { - "port": 80 - }, - "location": "global" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT126 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT126 index 05727c5..df30ab3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT126 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT126 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computehealthcheck/regional-health-check/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewallpolicyrule/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765140861, + "timestamp": 1642973302509, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computehealthcheck/regional-health-check/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computefirewallpolicyrule/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT126", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT126", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "computehealthcheck-sample-regional" - }, - "spec": { - "checkIntervalSec": 10, - "httpHealthCheck": { - "port": 80 + "annotations": { + "cnrm.cloud.google.com/project-id": "${PROJECT_ID?}" }, - "location": "us-central1" + "name": "firewallpolicyrule-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT127 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT127 index 7cca7c7..a3beaee 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT127 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT127 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computehttphealthcheck/compute_v1beta1_computehttphealthcheck.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765140883, + "timestamp": 1642973302517, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computehttphealthcheck/compute_v1beta1_computehttphealthcheck.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT127", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT127", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHTTPHealthCheck", + "kind": "ComputeBackendService", "metadata": { - "name": "computehttphealthcheck-sample" + "name": "computeforwardingrule-dep-global-with-grpc-proxy" }, "spec": { - "checkIntervalSec": 10, - "description": "example HTTP health check", - "healthyThreshold": 2, - "port": 80, - "requestPath": "/", - "timeoutSec": 5, - "unhealthyThreshold": 2 + "location": "global", + "loadBalancingScheme": "INTERNAL_SELF_MANAGED", + "protocol": "GRPC" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT128 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT128 index 2908247..9f761d7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT128 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT128 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computehttpshealthcheck/compute_v1beta1_computehttpshealthcheck.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeforwardingrule.yaml" ], - "timestamp": 1628765140910, + "timestamp": 1642973302524, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computehttpshealthcheck/compute_v1beta1_computehttpshealthcheck.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT128", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT128", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHTTPSHealthCheck", + "kind": "ComputeForwardingRule", "metadata": { - "name": "computehttpshealthcheck-sample" + "labels": { + "label-one": "value-one" + }, + "name": "computeforwardingrule-sample-global-with-grpc-proxy" }, "spec": { - "checkIntervalSec": 10, - "description": "example HTTPS health check", - "healthyThreshold": 2, - "port": 80, - "requestPath": "/", - "timeoutSec": 5, - "unhealthyThreshold": 2 + "description": "A global forwarding rule", + "target": { + "targetGRPCProxyRef": { + "name": "computeforwardingrule-dep-global-with-grpc-proxy" + } + }, + "loadBalancingScheme": "INTERNAL_SELF_MANAGED", + "ipAddress": { + "ip": "0.0.0.0" + }, + "portRange": "80", + "ipProtocol": "TCP", + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT129 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT129 index 0593481..85ac7a6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT129 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT129 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computetargetgrpcproxy.yaml" ], - "timestamp": 1628765140930, + "timestamp": 1642973302528, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computetargetgrpcproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT129", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetgrpcproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT129", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeTargetGRPCProxy", "metadata": { - "name": "computeimage-dep-fromexistingdisk" + "name": "computeforwardingrule-dep-global-with-grpc-proxy" }, "spec": { - "location": "us-central1-a" + "description": "A target gRPC proxy intended for load balancing gRPC traffic, referenced by global forwarding rules. References a URL map which specifies how traffic routes to gRPC backend services.", + "urlMapRef": { + "name": "computeforwardingrule-dep-global-with-grpc-proxy" + }, + "validateForProxyless": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT13 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT13 index 3a6e27d..d8a8c95 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT13 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT13 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_2.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" ], - "timestamp": 1628765138486, + "timestamp": 1642973301698, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_2.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT13", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT13", "collection": "kcctemplate", @@ -27,11 +30,11 @@ "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", "kind": "BigQueryDataset", "metadata": { - "name": "bigqueryjobdep3copy" + "name": "bigqueryjobdep2copy" }, "spec": { - "description": "Destination BigQueryDataset", - "friendlyName": "bigqueryjob-dep3-copy" + "description": "Source BigQueryDataset 2", + "friendlyName": "bigqueryjob-dep2-copy" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT130 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT130 index 9e72139..5c807a5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT130 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT130 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeurlmap.yaml" ], - "timestamp": 1628765140954, + "timestamp": 1642973302534, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-grpc-proxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT130", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT130", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeImage", + "kind": "ComputeURLMap", "metadata": { - "name": "computeimage-sample-fromexistingdisk" + "name": "computeforwardingrule-dep-global-with-grpc-proxy" }, "spec": { - "description": "A sample image created from an empty disk resource", - "diskRef": { - "name": "computeimage-dep-fromexistingdisk" + "location": "global", + "defaultService": { + "backendServiceRef": { + "name": "computeforwardingrule-dep-global-with-grpc-proxy" + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT131 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT131 index b82fab1..20ff73f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT131 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT131 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeimage/image-from-url-raw/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765140976, + "timestamp": 1642973302547, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeimage/image-from-url-raw/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT131", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT131", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeImage", + "kind": "ComputeBackendService", "metadata": { - "name": "computeimage-sample-fromurlraw", - "labels": { - "image-type": "stemcell" - } + "name": "computeforwardingrule-dep-global-with-target-http-proxy" }, "spec": { - "description": "A sample image created from URL to a raw TAR disk image", - "family": "ubuntu-custom", - "licenses": [ - "https://compute.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx" + "healthChecks": [ + { + "healthCheckRef": { + "name": "computeforwardingrule-dep-global-with-target-http-proxy" + } + } ], - "rawDisk": { - "source": "https://storage.googleapis.com/bosh-gce-raw-stemcells/bosh-stemcell-97.98-google-kvm-ubuntu-xenial-go_agent-raw-1557960142.tar.gz", - "containerType": "TAR", - "sha1": "819b7e9c17423f4539f09687eaa13687afa2fe32" - } + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT132 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT132 index abf2e8b..59986c1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT132 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT132 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_0.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeforwardingrule.yaml" ], - "timestamp": 1628765141012, + "timestamp": 1642973302553, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_0.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT132", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT132", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeForwardingRule", "metadata": { - "name": "computeinstance-dep1-cloudmachine" + "labels": { + "label-one": "value-one" + }, + "name": "computeforwardingrule-sample-global-with-target-http-proxy" }, "spec": { - "description": "a sample encrypted, blank disk", - "diskEncryptionKey": { - "rawKey": { - "valueFrom": { - "secretKeyRef": { - "key": "diskEncryptionKey", - "name": "computeinstance-dep-cloudmachine" - } - } + "description": "A global forwarding rule", + "target": { + "targetHTTPProxyRef": { + "name": "computeforwardingrule-dep-global-with-target-http-proxy" } }, - "location": "us-west1-a", - "physicalBlockSizeBytes": 4096, - "size": 1, - "type": "pd-ssd" + "portRange": "80", + "ipProtocol": "TCP", + "ipVersion": "IPV4", + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT133 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT133 index a3f15ba..cd550c7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT133 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT133 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_1.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765141024, + "timestamp": 1642973302565, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_1.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT133", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT133", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computeinstance-dep2-cloudmachine" + "name": "computeforwardingrule-dep-global-with-target-http-proxy" }, "spec": { - "location": "us-west1-a", - "size": 1, - "type": "pd-ssd" + "checkIntervalSec": 10, + "httpHealthCheck": { + "port": 80 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT134 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT134 index 6944b8f..c92038a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT134 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT134 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computetargethttpproxy.yaml" ], - "timestamp": 1628765141054, + "timestamp": 1642973302572, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,86 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computetargethttpproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT134", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargethttpproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT134", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeTargetHTTPProxy", "metadata": { - "annotations": { - "cnrm.cloud.google.com/allow-stopping-for-update": "true" - }, - "name": "computeinstance-sample-cloudmachine", - "labels": { - "created-from": "image", - "network-type": "subnetwork" - } + "name": "computeforwardingrule-dep-global-with-target-http-proxy" }, "spec": { - "machineType": "n1-standard-1", - "zone": "us-west1-a", - "bootDisk": { - "initializeParams": { - "size": 24, - "type": "pd-ssd", - "sourceImageRef": { - "external": "debian-cloud/debian-9" - } - } + "urlMapRef": { + "name": "computeforwardingrule-dep-global-with-target-http-proxy" }, - "networkInterface": [ - { - "subnetworkRef": { - "name": "computeinstance-dep-cloudmachine" - }, - "aliasIpRange": [ - { - "ipCidrRange": "/24", - "subnetworkRangeName": "cloudrange" - } - ] - } - ], - "attachedDisk": [ - { - "sourceDiskRef": { - "name": "computeinstance-dep1-cloudmachine" - }, - "mode": "READ_ONLY", - "deviceName": "proxycontroldisk", - "diskEncryptionKeyRaw": { - "valueFrom": { - "secretKeyRef": { - "name": "computeinstance-dep-cloudmachine", - "key": "diskEncryptionKey" - } - } - } - }, - { - "sourceDiskRef": { - "name": "computeinstance-dep2-cloudmachine" - }, - "mode": "READ_WRITE", - "deviceName": "persistentdisk" - } - ], - "minCpuPlatform": "Intel Skylake", - "serviceAccount": { - "serviceAccountRef": { - "name": "inst-dep-cloudmachine" - }, - "scopes": [ - "compute-rw", - "logging-write" - ] - } + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT135 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT135 index 6e86a6d..2845e38 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT135 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT135 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeurlmap.yaml" ], - "timestamp": 1628765141068, + "timestamp": 1642973302576, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-http-proxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT135", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT135", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeURLMap", "metadata": { - "name": "computeinstance-dep-cloudmachine" + "name": "computeforwardingrule-dep-global-with-target-http-proxy" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "defaultService": { + "backendServiceRef": { + "name": "computeforwardingrule-dep-global-with-target-http-proxy" + } + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT136 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT136 index e72cf91..d9ea6e8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT136 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT136 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765141092, + "timestamp": 1642973302580, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT136", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT136", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeBackendService", "metadata": { - "name": "computeinstance-dep-cloudmachine" + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" }, "spec": { - "networkRef": { - "name": "computeinstance-dep-cloudmachine" - }, - "ipCidrRange": "10.2.0.0/16", - "region": "us-west1", - "secondaryIpRange": [ + "healthChecks": [ { - "rangeName": "cloudrange", - "ipCidrRange": "10.3.16.0/20" + "healthCheckRef": { + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + } } - ] + ], + "protocol": "TCP", + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT137 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT137 index 2c36dc4..6a8e8fe 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT137 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT137 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computeforwardingrule.yaml" ], - "timestamp": 1628765141105, + "timestamp": 1642973302586, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT137", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT137", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeForwardingRule", "metadata": { - "name": "inst-dep-cloudmachine" + "labels": { + "label-one": "value-one" + }, + "name": "computeforwardingrule-sample-global-with-target-ssl-proxy" + }, + "spec": { + "description": "A global forwarding rule", + "target": { + "targetSSLProxyRef": { + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + } + }, + "portRange": "995", + "ipProtocol": "TCP", + "ipVersion": "IPV4", + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT138 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT138 index d87ec49..7a00866 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT138 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT138 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/secret.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765141120, + "timestamp": 1642973302590, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/cloud-machine-instance/secret.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT138", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT138", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computeinstance-dep-cloudmachine" + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" }, - "stringData": { - "diskEncryptionKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" + "spec": { + "checkIntervalSec": 10, + "sslHealthCheck": { + "port": 995 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT139 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT139 index 321367b..3e21880 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT139 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT139 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computesslcertificate.yaml" ], - "timestamp": 1628765141137, + "timestamp": 1642973302594, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,42 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT139", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT139", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeSSLCertificate", "metadata": { - "name": "computeinstance-dep-fromtemplate" + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" }, "spec": { - "physicalBlockSizeBytes": 4096, - "size": 1, - "type": "pd-ssd", - "location": "us-west1-c" + "location": "global", + "description": "example compute SSL certificate", + "certificate": { + "valueFrom": { + "secretKeyRef": { + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy", + "key": "certificate" + } + } + }, + "privateKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy", + "key": "privateKey" + } + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT14 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT14 index 4f1ccbc..a50c6c3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT14 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT14 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_2.yaml" ], - "timestamp": 1628765138513, + "timestamp": 1642973301702, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,51 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT14", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT14", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryJob", + "kind": "BigQueryDataset", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "bigqueryjob-sample-copy" + "name": "bigqueryjobdep3copy" }, "spec": { - "location": "US", - "jobTimeoutMs": "600000", - "copy": { - "sourceTables": [ - { - "tableRef": { - "name": "bigqueryjobdep1copy" - } - }, - { - "tableRef": { - "name": "bigqueryjobdep2copy" - } - } - ], - "destinationTable": { - "tableRef": { - "name": "bigqueryjobdep3copy" - } - }, - "destinationEncryptionConfiguration": { - "kmsKeyRef": { - "name": "bigqueryjob-dep-copy" - } - }, - "writeDisposition": "WRITE_APPEND" - } + "description": "Destination BigQueryDataset", + "friendlyName": "bigqueryjob-dep3-copy" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT140 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT140 index 3d9cb81..9013b08 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT140 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT140 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computetargetsslproxy.yaml" ], - "timestamp": 1628765141163, + "timestamp": 1642973302623, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_computetargetsslproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT140", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetsslproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT140", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeTargetSSLProxy", "metadata": { - "annotations": { - "cnrm.cloud.google.com/allow-stopping-for-update": "false" - }, - "name": "computeinstance-sample-fromtemplate", - "labels": { - "created-from": "template", - "override-type": "largermachine" - } + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" }, "spec": { - "machineType": "n1-standard-2", - "instanceTemplateRef": { - "name": "computeinstance-dep-fromtemplate" + "backendServiceRef": { + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" }, - "zone": "us-west1-c" + "sslCertificates": [ + { + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT141 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT141 index d57bc6e..7064c80 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT141 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT141 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_secret.yaml" ], - "timestamp": 1628765141184, + "timestamp": 1642973302626, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-ssl-proxy/compute_v1beta1_secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT141", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT141", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceTemplate", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "name": "computeinstance-dep-fromtemplate" + "name": "computeforwardingrule-dep-global-with-target-ssl-proxy" }, - "spec": { - "machineType": "n1-standard-1", - "region": "us-west1", - "disk": [ - { - "sourceDiskRef": { - "name": "computeinstance-dep-fromtemplate" - }, - "boot": true - } - ], - "networkInterface": [ - { - "networkRef": { - "name": "computeinstance-dep-fromtemplate" - } - } - ] + "stringData": { + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT142 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT142 index d79f55b..88b9de0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT142 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT142 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765141199, + "timestamp": 1642973302630, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT142", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT142", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeBackendService", "metadata": { - "name": "computeinstance-dep-fromtemplate" + "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": true + "healthChecks": [ + { + "healthCheckRef": { + "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" + } + } + ], + "protocol": "TCP", + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT143 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT143 index aed4edb..d1a698b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT143 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT143 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computeforwardingrule.yaml" ], - "timestamp": 1628765141213, + "timestamp": 1642973302633, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT143", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT143", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeAddress", + "kind": "ComputeForwardingRule", "metadata": { - "name": "computeinstance-dep-networkworker" + "labels": { + "label-one": "value-one" + }, + "name": "computeforwardingrule-sample-global-with-target-tcp-proxy" }, "spec": { - "description": "a sample external address", - "location": "us-west2" + "description": "A global forwarding rule", + "target": { + "targetTCPProxyRef": { + "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" + } + }, + "portRange": "110", + "ipProtocol": "TCP", + "ipVersion": "IPV4", + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT144 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT144 index 466b931..34a4ffc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT144 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT144 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765141234, + "timestamp": 1642973302637, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT144", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT144", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computeinstance-dep-networkworker" + "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" }, "spec": { - "description": "a sample encrypted, blank disk", - "physicalBlockSizeBytes": 4096, - "size": 1, - "type": "pd-ssd", - "location": "us-west2-a", - "diskEncryptionKey": { - "rawKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computeinstance-dep-networkworker", - "key": "diskEncryptionKey" - } - } - } - } + "checkIntervalSec": 10, + "tcpHealthCheck": { + "port": 110 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT145 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT145 index 0d8d436..97d37e4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT145 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT145 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computetargettcpproxy.yaml" ], - "timestamp": 1628765141265, + "timestamp": 1642973302641, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,78 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computeforwardingrule/global-forwarding-rule-with-target-tcp-proxy/compute_v1beta1_computetargettcpproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT145", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargettcpproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT145", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeTargetTCPProxy", "metadata": { - "annotations": { - "cnrm.cloud.google.com/allow-stopping-for-update": "false" - }, - "name": "computeinstance-sample-networkworker", - "labels": { - "created-from": "disk", - "network-type": "global" - } + "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" }, "spec": { - "machineType": "n1-standard-1", - "zone": "us-west2-a", - "bootDisk": { - "sourceDiskRef": { - "name": "computeinstance-dep-networkworker" - }, - "autoDelete": false, - "deviceName": "proxycontroldisk", - "mode": "READ_ONLY", - "diskEncryptionKeyRaw": { - "valueFrom": { - "secretKeyRef": { - "name": "computeinstance-dep-networkworker", - "key": "diskEncryptionKey" - } - } - } - }, - "networkInterface": [ - { - "networkRef": { - "name": "computeinstance-dep-networkworker" - }, - "subnetworkRef": { - "name": "computeinstance-dep-networkworker" - }, - "networkIp": "10.2.0.4", - "accessConfig": [ - { - "natIpRef": { - "name": "computeinstance-dep-networkworker" - } - } - ] - } - ], - "scratchDisk": [ - { - "interface": "SCSI" - }, - { - "interface": "NVME" - } - ], - "scheduling": { - "preemptible": true, - "automaticRestart": false, - "onHostMaintenance": "TERMINATE" - }, - "canIpForward": true + "backendServiceRef": { + "name": "computeforwardingrule-dep-global-with-target-tcp-proxy" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT146 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT146 index 50ae5da..881525e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT146 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT146 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeaddress.yaml" ], - "timestamp": 1628765141284, + "timestamp": 1642973302646, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT146", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT146", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeAddress", "metadata": { - "name": "computeinstance-dep-networkworker" + "name": "computeforwardingrule-dep-regional", + "labels": { + "label-one": "value-one" + } }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "location": "us-central1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT147 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT147 index 9860385..1ddeb8f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT147 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT147 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeforwardingrule.yaml" ], - "timestamp": 1628765141306, + "timestamp": 1642973302650, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT147", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT147", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeForwardingRule", "metadata": { - "name": "computeinstance-dep-networkworker" + "labels": { + "label-one": "value-one" + }, + "name": "computeforwardingrule-sample-regional" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-west2", - "description": "a sample subnetwork", - "privateIpGoogleAccess": false, - "networkRef": { - "name": "computeinstance-dep-networkworker" + "description": "A regional forwarding rule", + "target": { + "targetVPNGatewayRef": { + "name": "computeforwardingrule-dep-regional" + } }, - "logConfig": { - "aggregationInterval": "INTERVAL_10_MIN", - "flowSampling": 0.5, - "metadata": "INCLUDE_ALL_METADATA" + "ipProtocol": "ESP", + "location": "us-central1", + "ipAddress": { + "addressRef": { + "name": "computeforwardingrule-dep-regional" + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT148 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT148 index f1ece43..a950954 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT148 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT148 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/secret.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765141320, + "timestamp": 1642973302655, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstance/network-worker-instance/secret.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT148", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT148", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "name": "computeinstance-dep-networkworker" + "name": "computeforwardingrule-dep-regional" }, - "stringData": { - "diskEncryptionKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" + "spec": { + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT149 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT149 index d708006..34be5b5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT149 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT149 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computetargetvpngateway.yaml" ], - "timestamp": 1628765141355, + "timestamp": 1642973302660, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" + "/samples/resources/computeforwardingrule/regional-forwarding-rule/compute_v1beta1_computetargetvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT149", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetvpngateway" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT149", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeTargetVPNGateway", "metadata": { - "name": "computeinstancegroup-dep1" + "name": "computeforwardingrule-dep-regional" }, "spec": { - "instanceTemplateRef": { - "name": "computeinstancegroup-dep" - }, - "zone": "us-central1-a" + "description": "a regional target vpn gateway", + "region": "us-central1", + "networkRef": { + "name": "computeforwardingrule-dep-regional" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT15 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT15 index 3294f52..4d5a923 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT15 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT15 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_0.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], - "timestamp": 1628765138561, + "timestamp": 1642973301706, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,54 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_0.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT15", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigqueryjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT15", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryTable", + "kind": "BigQueryJob", "metadata": { - "name": "bigqueryjobdep1copy" + "labels": { + "label-one": "value-one" + }, + "name": "bigqueryjob-sample-copy" }, "spec": { - "datasetRef": { - "name": "bigqueryjobdep1copy" - }, - "description": "Source BigQueryTable 1", - "friendlyName": "bigqueryjob-dep1-copy", - "schema": "[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n" + "location": "US", + "jobTimeoutMs": "600000", + "copy": { + "sourceTables": [ + { + "tableRef": { + "name": "bigqueryjobdep1copy" + } + }, + { + "tableRef": { + "name": "bigqueryjobdep2copy" + } + } + ], + "destinationTable": { + "tableRef": { + "name": "bigqueryjobdep3copy" + } + }, + "destinationEncryptionConfiguration": { + "kmsKeyRef": { + "name": "bigqueryjob-dep-copy" + } + }, + "writeDisposition": "WRITE_APPEND" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT150 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT150 index 1c2edd7..66bd391 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT150 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT150 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" + "/samples/resources/computehealthcheck/global-health-check/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765141367, + "timestamp": 1642973302670, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" + "/samples/resources/computehealthcheck/global-health-check/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT150", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT150", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computeinstancegroup-dep2" + "name": "computehealthcheck-sample-global" }, "spec": { - "instanceTemplateRef": { - "name": "computeinstancegroup-dep" + "checkIntervalSec": 10, + "httpHealthCheck": { + "port": 80 }, - "zone": "us-central1-a" + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT151 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT151 index 2fe72ad..75d35b3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT151 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT151 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/computehealthcheck/regional-health-check/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765141392, + "timestamp": 1642973302674, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,41 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/computehealthcheck/regional-health-check/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT151", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT151", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceGroup", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computeinstancegroup-sample" + "name": "computehealthcheck-sample-regional" }, "spec": { - "description": "Compute instance group with two specified instances and named http and https ports.", - "instances": [ - { - "name": "computeinstancegroup-dep1" - }, - { - "name": "computeinstancegroup-dep2" - } - ], - "namedPort": [ - { - "name": "http", - "port": 8080 - }, - { - "name": "https", - "port": 8443 - } - ], - "zone": "us-central1-a" + "checkIntervalSec": 10, + "httpHealthCheck": { + "port": 80 + }, + "location": "us-central1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT152 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT152 index b8ee183..50aabbc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT152 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT152 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computehttphealthcheck/compute_v1beta1_computehttphealthcheck.yaml" ], - "timestamp": 1628765141421, + "timestamp": 1642973302695, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computehttphealthcheck/compute_v1beta1_computehttphealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT152", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehttphealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT152", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceTemplate", + "kind": "ComputeHTTPHealthCheck", "metadata": { - "name": "computeinstancegroup-dep" + "name": "computehttphealthcheck-sample" }, "spec": { - "machineType": "n1-standard-1", - "disk": [ - { - "sourceImageRef": { - "external": "debian-cloud/debian-9" - }, - "boot": true - } - ], - "networkInterface": [ - { - "networkRef": { - "name": "computeinstancegroup-dep" - }, - "subnetworkRef": { - "name": "computeinstancegroup-dep" - } - } - ] + "checkIntervalSec": 10, + "description": "example HTTP health check", + "healthyThreshold": 2, + "port": 80, + "requestPath": "/", + "timeoutSec": 5, + "unhealthyThreshold": 2 } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT153 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT153 index 03685ef..41558f8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT153 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT153 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computehttpshealthcheck/compute_v1beta1_computehttpshealthcheck.yaml" ], - "timestamp": 1628765141446, + "timestamp": 1642973302710, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computehttpshealthcheck/compute_v1beta1_computehttpshealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT153", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehttpshealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT153", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeHTTPSHealthCheck", "metadata": { - "name": "computeinstancegroup-dep" + "name": "computehttpshealthcheck-sample" }, "spec": { - "autoCreateSubnetworks": false + "checkIntervalSec": 10, + "description": "example HTTPS health check", + "healthyThreshold": 2, + "port": 80, + "requestPath": "/", + "timeoutSec": 5, + "unhealthyThreshold": 2 } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT154 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT154 index 3282a4f..bc3ba23 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT154 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT154 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computedisk.yaml" ], - "timestamp": 1628765141471, + "timestamp": 1642973302719, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroup/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT154", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT154", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeDisk", "metadata": { - "name": "computeinstancegroup-dep" + "name": "computeimage-dep-fromexistingdisk" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-central1", - "networkRef": { - "name": "computeinstancegroup-dep" - } + "location": "us-central1-a" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT155 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT155 index 880b9f9..7b6e67c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT155 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT155 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computeimage.yaml" ], - "timestamp": 1628765141488, + "timestamp": 1642973302728, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computeimage/image-from-existing-disk/compute_v1beta1_computeimage.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT155", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeimage" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT155", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeImage", "metadata": { - "name": "computeinstancegroupmanager-dep-regional" + "name": "computeimage-sample-fromexistingdisk" }, "spec": { - "httpHealthCheck": { - "port": 80 - }, - "location": "global" + "description": "A sample image created from an empty disk resource", + "diskRef": { + "name": "computeimage-dep-fromexistingdisk" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT156 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT156 index 718ef6d..b8b2552 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT156 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT156 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" + "/samples/resources/computeimage/image-from-url-raw/compute_v1beta1_computeimage.yaml" ], - "timestamp": 1628765141507, + "timestamp": 1642973302732, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,44 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" + "/samples/resources/computeimage/image-from-url-raw/compute_v1beta1_computeimage.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT156", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeimage" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT156", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceGroupManager", + "kind": "ComputeImage", "metadata": { - "name": "computeinstancegroupmanager-sample-regional" + "name": "computeimage-sample-fromurlraw", + "labels": { + "image-type": "stemcell" + } }, "spec": { - "location": "us-central1", - "baseInstanceName": "app", - "autoHealingPolicies": [ - { - "healthCheckRef": { - "name": "computeinstancegroupmanager-dep-regional" - }, - "initialDelaySec": 300 - } + "description": "A sample image created from URL to a raw TAR disk image", + "family": "ubuntu-custom", + "licenses": [ + "https://compute.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx" ], - "targetSize": 3, - "instanceTemplateRef": { - "name": "computeinstancegroupmanager-dep-regional" - }, - "updatePolicy": { - "instanceRedistributionType": "PROACTIVE", - "minimalAction": "RESTART", - "maxSurge": { - "fixed": 3 - }, - "maxUnavailable": { - "fixed": 3 - } + "rawDisk": { + "source": "https://storage.googleapis.com/bosh-gce-raw-stemcells/bosh-stemcell-97.98-google-kvm-ubuntu-xenial-go_agent-raw-1557960142.tar.gz", + "containerType": "TAR", + "sha1": "819b7e9c17423f4539f09687eaa13687afa2fe32" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT157 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT157 index d147944..1261c14 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT157 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT157 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_0.yaml" ], - "timestamp": 1628765141528, + "timestamp": 1642973302739, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT157", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT157", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceTemplate", + "kind": "ComputeDisk", "metadata": { - "name": "computeinstancegroupmanager-dep-regional" + "name": "computeinstance-dep1-cloudmachine" }, "spec": { - "machineType": "n1-standard-1", - "disk": [ - { - "sourceImageRef": { - "external": "debian-cloud/debian-9" - }, - "boot": true - } - ], - "networkInterface": [ - { - "networkRef": { - "name": "computeinstancegroupmanager-dep-regional" - }, - "subnetworkRef": { - "name": "computeinstancegroupmanager-dep-regional" + "description": "a sample encrypted, blank disk", + "diskEncryptionKey": { + "rawKey": { + "valueFrom": { + "secretKeyRef": { + "key": "diskEncryptionKey", + "name": "computeinstance-dep-cloudmachine" + } } } - ] + }, + "location": "us-west1-a", + "physicalBlockSizeBytes": 4096, + "size": 1, + "type": "pd-ssd" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT158 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT158 index 081ac1c..2e94921 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT158 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT158 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_1.yaml" ], - "timestamp": 1628765141553, + "timestamp": 1642973302745, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computedisk_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT158", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT158", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeDisk", "metadata": { - "name": "computeinstancegroupmanager-dep-regional" + "name": "computeinstance-dep2-cloudmachine" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "location": "us-west1-a", + "size": 1, + "type": "pd-ssd" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT159 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT159 index 6bf55fa..526ac32 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT159 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT159 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computeinstance.yaml" ], - "timestamp": 1628765141571, + "timestamp": 1642973302749, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,88 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT159", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT159", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeInstance", "metadata": { - "name": "computeinstancegroupmanager-dep-regional" + "annotations": { + "cnrm.cloud.google.com/allow-stopping-for-update": "true" + }, + "name": "computeinstance-sample-cloudmachine", + "labels": { + "created-from": "image", + "network-type": "subnetwork" + } }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-central1", - "privateIpGoogleAccess": false, - "networkRef": { - "name": "computeinstancegroupmanager-dep-regional" + "machineType": "n1-standard-1", + "zone": "us-west1-a", + "bootDisk": { + "initializeParams": { + "size": 24, + "type": "pd-ssd", + "sourceImageRef": { + "external": "debian-cloud/debian-9" + } + } + }, + "networkInterface": [ + { + "subnetworkRef": { + "name": "computeinstance-dep-cloudmachine" + }, + "aliasIpRange": [ + { + "ipCidrRange": "/24", + "subnetworkRangeName": "cloudrange" + } + ] + } + ], + "attachedDisk": [ + { + "sourceDiskRef": { + "name": "computeinstance-dep1-cloudmachine" + }, + "mode": "READ_ONLY", + "deviceName": "proxycontroldisk", + "diskEncryptionKeyRaw": { + "valueFrom": { + "secretKeyRef": { + "name": "computeinstance-dep-cloudmachine", + "key": "diskEncryptionKey" + } + } + } + }, + { + "sourceDiskRef": { + "name": "computeinstance-dep2-cloudmachine" + }, + "mode": "READ_WRITE", + "deviceName": "persistentdisk" + } + ], + "minCpuPlatform": "Intel Skylake", + "serviceAccount": { + "serviceAccountRef": { + "name": "inst-dep-cloudmachine" + }, + "scopes": [ + "compute-rw", + "logging-write" + ] } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT16 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT16 index fae26a2..ff10dcf 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT16 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT16 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_0.yaml" ], - "timestamp": 1628765138580, + "timestamp": 1642973301710, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT16", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT16", "collection": "kcctemplate", @@ -27,14 +30,14 @@ "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", "kind": "BigQueryTable", "metadata": { - "name": "bigqueryjobdep2copy" + "name": "bigqueryjobdep1copy" }, "spec": { "datasetRef": { - "name": "bigqueryjobdep2copy" + "name": "bigqueryjobdep1copy" }, - "description": "Source BigQueryTable 2", - "friendlyName": "bigqueryjob-dep2-copy", + "description": "Source BigQueryTable 1", + "friendlyName": "bigqueryjob-dep1-copy", "schema": "[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n" } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT160 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT160 index 54b8587..05ec162 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT160 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT160 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765141588, + "timestamp": 1642973302754, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT160", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT160", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeNetwork", "metadata": { - "name": "computeinstancegroupmanager-dep-zonal" + "name": "computeinstance-dep-cloudmachine" }, "spec": { - "httpHealthCheck": { - "port": 80 - }, - "location": "global" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT161 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT161 index b9066a3..6ec17c6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT161 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT161 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765141617, + "timestamp": 1642973302758, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,44 +15,35 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT161", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT161", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceGroupManager", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computeinstancegroupmanager-sample-zonal" + "name": "computeinstance-dep-cloudmachine" }, "spec": { - "location": "us-central1-a", - "baseInstanceName": "app", - "autoHealingPolicies": [ - { - "healthCheckRef": { - "name": "computeinstancegroupmanager-dep-zonal" - }, - "initialDelaySec": 300 - } - ], - "targetSize": 3, - "instanceTemplateRef": { - "name": "computeinstancegroupmanager-dep-zonal" + "networkRef": { + "name": "computeinstance-dep-cloudmachine" }, - "updatePolicy": { - "minimalAction": "RESTART", - "maxSurge": { - "fixed": 3 - }, - "maxUnavailable": { - "fixed": 3 + "ipCidrRange": "10.2.0.0/16", + "region": "us-west1", + "secondaryIpRange": [ + { + "rangeName": "cloudrange", + "ipCidrRange": "10.3.16.0/20" } - } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT162 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT162 index 7950284..64d1e01 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT162 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT162 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765141636, + "timestamp": 1642973302768, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT162", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT162", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceTemplate", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "computeinstancegroupmanager-dep-zonal" - }, - "spec": { - "machineType": "n1-standard-1", - "disk": [ - { - "sourceImageRef": { - "external": "debian-cloud/debian-9" - }, - "boot": true - } - ], - "networkInterface": [ - { - "networkRef": { - "name": "computeinstancegroupmanager-dep-zonal" - }, - "subnetworkRef": { - "name": "computeinstancegroupmanager-dep-zonal" - } - } - ] + "name": "inst-dep-cloudmachine" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT163 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT163 index cd0332e..27f5d56 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT163 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT163 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/secret.yaml" ], - "timestamp": 1628765141655, + "timestamp": 1642973302774, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/cloud-machine-instance/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT163", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT163", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "name": "computeinstancegroupmanager-dep-zonal" + "name": "computeinstance-dep-cloudmachine" }, - "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "stringData": { + "diskEncryptionKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT164 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT164 index da70a39..ff909a5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT164 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT164 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computedisk.yaml" ], - "timestamp": 1628765141676, + "timestamp": 1642973302785, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT164", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT164", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeDisk", "metadata": { - "name": "computeinstancegroupmanager-dep-zonal" + "name": "computeinstance-dep-fromtemplate" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-central1", - "privateIpGoogleAccess": false, - "networkRef": { - "name": "computeinstancegroupmanager-dep-zonal" - } + "physicalBlockSizeBytes": 4096, + "size": 1, + "type": "pd-ssd", + "location": "us-west1-c" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT165 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT165 index 04e45cf..6ddbb4e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT165 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT165 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstance.yaml" ], - "timestamp": 1628765141696, + "timestamp": 1642973302790, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT165", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT165", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeInstance", "metadata": { - "name": "instancetemplate-dep" + "annotations": { + "cnrm.cloud.google.com/allow-stopping-for-update": "false" + }, + "name": "computeinstance-sample-fromtemplate", + "labels": { + "created-from": "template", + "override-type": "largermachine" + } }, "spec": { - "description": "a sample encrypted, blank disk", - "physicalBlockSizeBytes": 4096, - "size": 1, - "type": "pd-ssd", - "location": "us-west1-c" + "machineType": "n1-standard-2", + "instanceTemplateRef": { + "name": "computeinstance-dep-fromtemplate" + }, + "zone": "us-west1-c" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT166 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT166 index d014c95..ad35a92 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT166 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT166 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstancetemplate.yaml" ], - "timestamp": 1628765141719, + "timestamp": 1642973302804, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computeimage.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT166", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT166", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeImage", + "kind": "ComputeInstanceTemplate", "metadata": { - "name": "instancetemplate-dep" + "name": "computeinstance-dep-fromtemplate" }, "spec": { - "description": "A sample image created from an empty disk resource", - "diskRef": { - "name": "instancetemplate-dep" - } + "machineType": "n1-standard-1", + "region": "us-west1", + "disk": [ + { + "sourceDiskRef": { + "name": "computeinstance-dep-fromtemplate" + }, + "boot": true + } + ], + "networkInterface": [ + { + "networkRef": { + "name": "computeinstance-dep-fromtemplate" + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT167 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT167 index 65cbb7a..921b8b3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT167 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT167 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765141756, + "timestamp": 1642973302808, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,100 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeinstance/instance-from-template/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT167", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT167", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceTemplate", + "kind": "ComputeNetwork", "metadata": { - "name": "instancetemplate-sample", - "labels": { - "env": "dev" - } + "name": "computeinstance-dep-fromtemplate" }, "spec": { - "description": "a sample instance template", - "tags": [ - "foo", - "bar" - ], - "instanceDescription": "a sample instance created from the sample instance template", - "machineType": "n1-standard-1", - "region": "us-west1", - "disk": [ - { - "sourceDiskRef": { - "name": "instancetemplate-dep" - }, - "autoDelete": false, - "boot": true - }, - { - "sourceImageRef": { - "name": "instancetemplate-dep" - }, - "autoDelete": true, - "boot": false, - "diskName": "sample-attached-disk", - "deviceName": "attachment", - "interface": "SCSI", - "diskType": "pd-ssd", - "diskSizeGb": 10, - "type": "PERSISTENT" - } - ], - "networkInterface": [ - { - "networkRef": { - "name": "instancetemplate-dep" - }, - "subnetworkRef": { - "name": "instancetemplate-dep" - }, - "networkIp": "10.2.0.1", - "aliasIpRange": [ - { - "ipCidrRange": "/16", - "subnetworkRangeName": "sub-range" - } - ] - } - ], - "canIpForward": false, - "scheduling": { - "automaticRestart": true, - "onHostMaintenance": "MIGRATE", - "preemptible": false - }, - "metadataStartupScript": "echo hi > /test.txt", - "serviceAccount": { - "serviceAccountRef": { - "name": "instancetemplate-dep" - }, - "scopes": [ - "userinfo-email", - "compute-ro", - "storage-ro" - ] - }, - "guestAccelerator": [ - { - "type": "nvidia-tesla-k80", - "count": 1 - } - ], - "minCpuPlatform": "Intel Skylake", - "shieldedInstanceConfig": { - "enableSecureBoot": false, - "enableVtpm": true, - "enableIntegrityMonitoring": true - } + "routingMode": "REGIONAL", + "autoCreateSubnetworks": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT168 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT168 index e690427..b01cff1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT168 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT168 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeaddress.yaml" ], - "timestamp": 1628765141774, + "timestamp": 1642973302813, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT168", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT168", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeAddress", "metadata": { - "name": "instancetemplate-dep" + "name": "computeinstance-dep-networkworker" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "description": "a sample external address", + "location": "us-west2" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT169 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT169 index 13da1b4..c950f12 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT169 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT169 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computedisk.yaml" ], - "timestamp": 1628765141798, + "timestamp": 1642973302818, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT169", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT169", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeDisk", "metadata": { - "name": "instancetemplate-dep" + "name": "computeinstance-dep-networkworker" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-west1", - "description": "a sample subnetwork", - "privateIpGoogleAccess": false, - "networkRef": { - "name": "instancetemplate-dep" - }, - "logConfig": { - "aggregationInterval": "INTERVAL_10_MIN", - "flowSampling": 0.5, - "metadata": "INCLUDE_ALL_METADATA" + "description": "a sample encrypted, blank disk", + "physicalBlockSizeBytes": 4096, + "size": 1, + "type": "pd-ssd", + "location": "us-west2-a", + "diskEncryptionKey": { + "rawKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computeinstance-dep-networkworker", + "key": "diskEncryptionKey" + } + } + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT17 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT17 index 62ced01..5f61798 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT17 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT17 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_2.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_1.yaml" ], - "timestamp": 1628765138602, + "timestamp": 1642973301735, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_2.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT17", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT17", "collection": "kcctemplate", @@ -27,19 +30,14 @@ "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", "kind": "BigQueryTable", "metadata": { - "name": "bigqueryjobdep3copy" + "name": "bigqueryjobdep2copy" }, "spec": { "datasetRef": { - "name": "bigqueryjobdep3copy" + "name": "bigqueryjobdep2copy" }, - "description": "Destination BigQueryTable", - "encryptionConfiguration": { - "kmsKeyRef": { - "name": "bigqueryjob-dep-copy" - } - }, - "friendlyName": "bigqueryjob-dep3-copy", + "description": "Source BigQueryTable 2", + "friendlyName": "bigqueryjob-dep2-copy", "schema": "[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n" } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT170 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT170 index 398e1bd..82b501f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT170 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT170 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinstancetemplate/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeinstance.yaml" ], - "timestamp": 1628765141821, + "timestamp": 1642973302823, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,81 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinstancetemplate/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT170", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT170", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeInstance", "metadata": { - "name": "instancetemplate-dep" + "annotations": { + "cnrm.cloud.google.com/allow-stopping-for-update": "false" + }, + "name": "computeinstance-sample-networkworker", + "labels": { + "created-from": "disk", + "network-type": "global" + } }, "spec": { - "displayName": "a sample Service Account" + "machineType": "n1-standard-1", + "zone": "us-west2-a", + "bootDisk": { + "sourceDiskRef": { + "name": "computeinstance-dep-networkworker" + }, + "autoDelete": false, + "deviceName": "proxycontroldisk", + "mode": "READ_ONLY", + "diskEncryptionKeyRaw": { + "valueFrom": { + "secretKeyRef": { + "name": "computeinstance-dep-networkworker", + "key": "diskEncryptionKey" + } + } + } + }, + "networkInterface": [ + { + "networkRef": { + "name": "computeinstance-dep-networkworker" + }, + "subnetworkRef": { + "name": "computeinstance-dep-networkworker" + }, + "networkIp": "10.2.0.4", + "accessConfig": [ + { + "natIpRef": { + "name": "computeinstance-dep-networkworker" + } + } + ] + } + ], + "scratchDisk": [ + { + "interface": "SCSI" + }, + { + "interface": "NVME" + } + ], + "scheduling": { + "preemptible": true, + "automaticRestart": false, + "onHostMaintenance": "TERMINATE" + }, + "canIpForward": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT171 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT171 index 0b9d95f..cd3f9a9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT171 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT171 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computeinterconnectattachment.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765141841, + "timestamp": 1642973302827, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computeinterconnectattachment.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT171", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT171", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInterconnectAttachment", + "kind": "ComputeNetwork", "metadata": { - "name": "computeinterconnectattachment-sample" + "name": "computeinstance-dep-networkworker" }, "spec": { - "description": "example interconnect attachment description", - "interconnect": "https://www.googleapis.com/compute/v1/projects/my-project/global/interconnects/my-interconnect", - "adminEnabled": true, - "bandwidth": "BPS_50M", - "type": "DEDICATED", - "candidateSubnets": [ - "169.254.0.0/16" - ], - "region": "us-west1", - "vlanTag8021q": 1024, - "routerRef": { - "name": "computeinterconnectattachment-dep" - } + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT172 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT172 index fcb19b9..93cd315 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT172 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT172 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765141856, + "timestamp": 1642973302835, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstance/network-worker-instance/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT172", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT172", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeSubnetwork", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computeinterconnectattachment-dep" + "name": "computeinstance-dep-networkworker" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "ipCidrRange": "10.2.0.0/16", + "region": "us-west2", + "description": "a sample subnetwork", + "privateIpGoogleAccess": false, + "networkRef": { + "name": "computeinstance-dep-networkworker" + }, + "logConfig": { + "aggregationInterval": "INTERVAL_10_MIN", + "flowSampling": 0.5, + "metadata": "INCLUDE_ALL_METADATA" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT173 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT173 index eca9e49..5613415 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT173 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT173 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computerouter.yaml" + "/samples/resources/computeinstance/network-worker-instance/secret.yaml" ], - "timestamp": 1628765141871, + "timestamp": 1642973302840, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeinterconnectattachment/compute_v1beta1_computerouter.yaml" + "/samples/resources/computeinstance/network-worker-instance/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT173", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT173", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouter", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "name": "computeinterconnectattachment-dep" + "name": "computeinstance-dep-networkworker" }, - "spec": { - "networkRef": { - "name": "computeinterconnectattachment-dep" - }, - "description": "example router description", - "region": "us-west1" + "stringData": { + "diskEncryptionKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT174 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT174 index deaccf7..958a477 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT174 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT174 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenetwork/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" ], - "timestamp": 1628765141888, + "timestamp": 1642973302844, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetwork/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT174", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT174", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeInstance", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computenetwork-sample" + "name": "computeinstancegroup-dep1" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": true + "instanceTemplateRef": { + "name": "computeinstancegroup-dep" + }, + "zone": "us-central1-a" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT175 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT175 index 8eef48e..300b515 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT175 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT175 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" ], - "timestamp": 1628765141911, + "timestamp": 1642973302847, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT175", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT175", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeInstance", "metadata": { - "name": "computenetworkendpointgroup-dep" + "name": "computeinstancegroup-dep2" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "instanceTemplateRef": { + "name": "computeinstancegroup-dep" + }, + "zone": "us-central1-a" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT176 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT176 index e718811..425cf6e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT176 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT176 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetworkendpointgroup.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancegroup.yaml" ], - "timestamp": 1628765141929, + "timestamp": 1642973302852, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,44 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetworkendpointgroup.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT176", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT176", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetworkEndpointGroup", + "kind": "ComputeInstanceGroup", "metadata": { - "name": "computenetworkendpointgroup-sample" + "name": "computeinstancegroup-sample" }, "spec": { - "networkRef": { - "name": "computenetworkendpointgroup-dep" - }, - "subnetworkRef": { - "name": "computenetworkendpointgroup-dep" - }, - "location": "us-west1-a", - "defaultPort": 90, - "description": "A network endpoint group living in a specific us-west1 subnetwork, whose member endpoints will serve on port number 90 by default." + "description": "Compute instance group with two specified instances and named http and https ports.", + "instances": [ + { + "name": "computeinstancegroup-dep1" + }, + { + "name": "computeinstancegroup-dep2" + } + ], + "namedPort": [ + { + "name": "http", + "port": 8080 + }, + { + "name": "https", + "port": 8443 + } + ], + "zone": "us-central1-a" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT177 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT177 index aee7d33..fbcb8a7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT177 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT177 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancetemplate.yaml" ], - "timestamp": 1628765141951, + "timestamp": 1642973302856, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT177", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT177", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeInstanceTemplate", "metadata": { - "name": "computenetworkendpointgroup-dep" + "name": "computeinstancegroup-dep" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-west1", - "networkRef": { - "name": "computenetworkendpointgroup-dep" - } + "machineType": "n1-standard-1", + "disk": [ + { + "sourceImageRef": { + "external": "debian-cloud/debian-9" + }, + "boot": true + } + ], + "networkInterface": [ + { + "networkRef": { + "name": "computeinstancegroup-dep" + }, + "subnetworkRef": { + "name": "computeinstancegroup-dep" + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT178 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT178 index 93fa031..0b4796e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT178 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT178 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_0.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765141985, + "timestamp": 1642973302861, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_0.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT178", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT178", "collection": "kcctemplate", @@ -27,11 +30,10 @@ "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", "kind": "ComputeNetwork", "metadata": { - "name": "computenetworkpeering-dep1" + "name": "computeinstancegroup-dep" }, "spec": { - "autoCreateSubnetworks": false, - "routingMode": "REGIONAL" + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT179 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT179 index 67b3da3..9a1eea9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT179 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT179 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_1.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765142001, + "timestamp": 1642973302864, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_1.yaml" + "/samples/resources/computeinstancegroup/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT179", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT179", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computenetworkpeering-dep2" + "name": "computeinstancegroup-dep" }, "spec": { - "autoCreateSubnetworks": false, - "routingMode": "REGIONAL" + "ipCidrRange": "10.2.0.0/16", + "region": "us-central1", + "networkRef": { + "name": "computeinstancegroup-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT18 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT18 index 7b8be7d..3015ed7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT18 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT18 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_2.yaml" ], - "timestamp": 1628765138622, + "timestamp": 1642973301739, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,35 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/bigquery_v1beta1_bigquerytable_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT18", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT18", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", + "kind": "BigQueryTable", "metadata": { - "name": "bigqueryjob-dep-copy" + "name": "bigqueryjobdep3copy" }, "spec": { - "member": "serviceAccount:bq-${PROJECT_NUMBER?}@bigquery-encryption.iam.gserviceaccount.com", - "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter", - "resourceRef": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", - "external": "projects/${PROJECT_ID?}" - } + "datasetRef": { + "name": "bigqueryjobdep3copy" + }, + "description": "Destination BigQueryTable", + "encryptionConfiguration": { + "kmsKeyRef": { + "name": "bigqueryjob-dep-copy" + } + }, + "friendlyName": "bigqueryjob-dep3-copy", + "schema": "[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT180 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT180 index c436e28..b5bc2c3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT180 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT180 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_0.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765142047, + "timestamp": 1642973302868, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_0.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT180", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT180", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetworkPeering", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computenetworkpeering-sample1" + "name": "computeinstancegroupmanager-dep-regional" }, "spec": { - "exportCustomRoutes": false, - "importCustomRoutes": false, - "networkRef": { - "name": "computenetworkpeering-dep1" + "httpHealthCheck": { + "port": 80 }, - "peerNetworkRef": { - "name": "computenetworkpeering-dep2" - } + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT181 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT181 index 5d2ebe4..a11bd3c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT181 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT181 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_1.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" ], - "timestamp": 1628765142064, + "timestamp": 1642973302872, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,50 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_1.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT181", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroupmanager" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT181", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetworkPeering", + "kind": "ComputeInstanceGroupManager", "metadata": { - "name": "computenetworkpeering-sample2" + "name": "computeinstancegroupmanager-sample-regional" }, "spec": { - "exportCustomRoutes": false, - "importCustomRoutes": false, - "networkRef": { - "name": "computenetworkpeering-dep2" + "projectRef": { + "external": "projects/${PROJECT_ID?}" }, - "peerNetworkRef": { - "name": "computenetworkpeering-dep1" + "location": "us-central1", + "baseInstanceName": "app", + "autoHealingPolicies": [ + { + "healthCheckRef": { + "name": "computeinstancegroupmanager-dep-regional" + }, + "initialDelaySec": 300 + } + ], + "targetSize": 3, + "instanceTemplateRef": { + "name": "computeinstancegroupmanager-dep-regional" + }, + "updatePolicy": { + "instanceRedistributionType": "PROACTIVE", + "minimalAction": "RESTART", + "maxSurge": { + "fixed": 3 + }, + "maxUnavailable": { + "fixed": 3 + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT182 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT182 index 2b72a2a..9756657 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT182 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT182 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenodegroup/compute_v1beta1_computenodegroup.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" ], - "timestamp": 1628765142077, + "timestamp": 1642973302875, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenodegroup/compute_v1beta1_computenodegroup.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT182", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT182", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNodeGroup", + "kind": "ComputeInstanceTemplate", "metadata": { - "name": "computenodegroup-sample" + "name": "computeinstancegroupmanager-dep-regional" }, "spec": { - "description": "A single sole-tenant node in the us-central1-b zone.", - "size": 1, - "nodeTemplateRef": { - "name": "computenodegroup-dep" - }, - "zone": "us-central1-b" + "machineType": "n1-standard-1", + "disk": [ + { + "sourceImageRef": { + "external": "debian-cloud/debian-9" + }, + "boot": true + } + ], + "networkInterface": [ + { + "networkRef": { + "name": "computeinstancegroupmanager-dep-regional" + }, + "subnetworkRef": { + "name": "computeinstancegroupmanager-dep-regional" + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT183 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT183 index 0568c6e..0c5e036 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT183 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT183 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenodegroup/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765142103, + "timestamp": 1642973302879, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenodegroup/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT183", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT183", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNodeTemplate", + "kind": "ComputeNetwork", "metadata": { - "name": "computenodegroup-dep" + "name": "computeinstancegroupmanager-dep-regional" }, "spec": { - "region": "us-central1", - "nodeType": "n1-node-96-624" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT184 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT184 index cd8ba45..d4d9807 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT184 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT184 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenodetemplate/flexible-node-template/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765142132, + "timestamp": 1642973302883, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenodetemplate/flexible-node-template/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/regional-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT184", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT184", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNodeTemplate", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computenodetemplate-sample-flexible", - "labels": { - "memory_guarantee": "false", - "desired_workload": "high-cpu" - } + "name": "computeinstancegroupmanager-dep-regional" }, "spec": { - "description": "Node template for sole tenant nodes running in us-central1, with 96vCPUs and any amount of memory on any machine type.", + "ipCidrRange": "10.2.0.0/16", "region": "us-central1", - "nodeTypeFlexibility": { - "cpus": "96", - "memory": "any" + "privateIpGoogleAccess": false, + "networkRef": { + "name": "computeinstancegroupmanager-dep-regional" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT185 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT185 index 613e0cb..bfdffc4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT185 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT185 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computenodetemplate/typed-node-template/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765142159, + "timestamp": 1642973302886, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computenodetemplate/typed-node-template/compute_v1beta1_computenodetemplate.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT185", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT185", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNodeTemplate", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computenodetemplate-sample-template", - "labels": { - "memory_guarantee": "true", - "desired_workload": "sustained" - } + "name": "computeinstancegroupmanager-dep-zonal" }, "spec": { - "description": "Node template for sole tenant nodes running in us-central1, with 96vCPUs and 624GB of memory, on n1 machines.", - "region": "us-central1", - "nodeType": "n1-node-96-624" + "httpHealthCheck": { + "port": 80 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT186 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT186 index 28b6da2..6c6a39f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT186 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT186 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeprojectmetadata/compute_v1beta1_computeprojectmetadata.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" ], - "timestamp": 1628765142187, + "timestamp": 1642973302890, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,49 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeprojectmetadata/compute_v1beta1_computeprojectmetadata.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancegroupmanager.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT186", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancegroupmanager" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT186", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeProjectMetadata", + "kind": "ComputeInstanceGroupManager", "metadata": { - "name": "computeprojectmetadata-sample" + "name": "computeinstancegroupmanager-sample-zonal" }, "spec": { - "metadata": { - "baz": "bat", - "foo": "bar" + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "us-central1-a", + "baseInstanceName": "app", + "autoHealingPolicies": [ + { + "healthCheckRef": { + "name": "computeinstancegroupmanager-dep-zonal" + }, + "initialDelaySec": 300 + } + ], + "targetSize": 3, + "instanceTemplateRef": { + "name": "computeinstancegroupmanager-dep-zonal" + }, + "updatePolicy": { + "minimalAction": "RESTART", + "maxSurge": { + "fixed": 3 + }, + "maxUnavailable": { + "fixed": 3 + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT187 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT187 index 194387a..0282fa7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT187 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT187 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computereservation/bulk-compute-reservation/compute_v1beta1_computereservation.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" ], - "timestamp": 1628765142209, + "timestamp": 1642973302893, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computereservation/bulk-compute-reservation/compute_v1beta1_computereservation.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT187", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT187", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeReservation", + "kind": "ComputeInstanceTemplate", "metadata": { - "name": "computereservation-sample-bulk" + "name": "computeinstancegroupmanager-dep-zonal" }, "spec": { - "description": "Reservation for 2 basic machines which will become generally available for VM instances to consume.", - "zone": "us-central1-a", - "specificReservation": { - "count": 2, - "instanceProperties": { - "machineType": "n1-standard-1", - "minCpuPlatform": "Intel Sandy Bridge" + "machineType": "n1-standard-1", + "disk": [ + { + "sourceImageRef": { + "external": "debian-cloud/debian-9" + }, + "boot": true } - } + ], + "networkInterface": [ + { + "networkRef": { + "name": "computeinstancegroupmanager-dep-zonal" + }, + "subnetworkRef": { + "name": "computeinstancegroupmanager-dep-zonal" + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT188 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT188 index 30ff18b..cc4eecc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT188 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT188 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computereservation/specialized-compute-reservation/compute_v1beta1_computereservation.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765142226, + "timestamp": 1642973302898, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,43 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computereservation/specialized-compute-reservation/compute_v1beta1_computereservation.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT188", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT188", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeReservation", + "kind": "ComputeNetwork", "metadata": { - "name": "computereservation-sample-specialized" + "name": "computeinstancegroupmanager-dep-zonal" }, "spec": { - "description": "Reservation for a single tricked out machine that can only be consumed by a VM instance that references this reservation.", - "zone": "us-central1-a", - "specificReservationRequired": true, - "specificReservation": { - "count": 1, - "instanceProperties": { - "machineType": "n1-highmem-8", - "minCpuPlatform": "Intel Skylake", - "guestAccelerators": [ - { - "acceleratorCount": 1, - "acceleratorType": "nvidia-tesla-v100" - } - ], - "localSsds": [ - { - "interface": "NVME", - "diskSizeGb": 375 - } - ] - } - } + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT189 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT189 index b5545d1..c4accfe 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT189 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT189 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeresourcepolicy/daily-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765142245, + "timestamp": 1642973302900, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,43 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeresourcepolicy/daily-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancegroupmanager/zonal-compute-instance-group-manager/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT189", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT189", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeResourcePolicy", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computeresourcepolicy-sample-dailyschedule" + "name": "computeinstancegroupmanager-dep-zonal" }, "spec": { + "ipCidrRange": "10.2.0.0/16", "region": "us-central1", - "snapshotSchedulePolicy": { - "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "00:00" - } - }, - "retentionPolicy": { - "maxRetentionDays": 8, - "onSourceDiskDelete": "KEEP_AUTO_SNAPSHOTS" - }, - "snapshotProperties": { - "storageLocations": [ - "us-central1" - ], - "guestFlush": true, - "labels": { - "autodeleted": "false", - "interval": "daily" - } - } + "privateIpGoogleAccess": false, + "networkRef": { + "name": "computeinstancegroupmanager-dep-zonal" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT19 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT19 index 720f220..b65ea57 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT19 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT19 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmscryptokey.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/iam_v1beta1_iampolicymember.yaml" ], - "timestamp": 1628765138640, + "timestamp": 1642973301744, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmscryptokey.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT19", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT19", "collection": "kcctemplate", "json": { - "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSCryptoKey", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", "metadata": { "name": "bigqueryjob-dep-copy" }, "spec": { - "keyRingRef": { - "name": "bigqueryjob-dep-copy" + "member": "serviceAccount:bq-${PROJECT_NUMBER?}@bigquery-encryption.iam.gserviceaccount.com", + "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter", + "resourceRef": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", + "external": "projects/${PROJECT_ID?}" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT190 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT190 index c96535e..c9d095e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT190 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT190 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeresourcepolicy/hourly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computedisk.yaml" ], - "timestamp": 1628765142270, + "timestamp": 1642973302904, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeresourcepolicy/hourly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT190", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT190", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeResourcePolicy", + "kind": "ComputeDisk", "metadata": { - "name": "computeresourcepolicy-sample-hourlyschedule" + "name": "instancetemplate-dep" }, "spec": { - "region": "us-central1", - "snapshotSchedulePolicy": { - "schedule": { - "hourlySchedule": { - "hoursInCycle": 4, - "startTime": "13:00" - } - }, - "retentionPolicy": { - "maxRetentionDays": 2, - "onSourceDiskDelete": "APPLY_RETENTION_POLICY" - }, - "snapshotProperties": { - "labels": { - "autodeleted": "true", - "interval": "hourly" - } - } - } + "description": "a sample encrypted, blank disk", + "physicalBlockSizeBytes": 4096, + "size": 1, + "type": "pd-ssd", + "location": "us-west1-c" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT191 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT191 index 2a931cc..d25188c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT191 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT191 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeresourcepolicy/weekly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computeimage.yaml" ], - "timestamp": 1628765142291, + "timestamp": 1642973302908, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,54 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeresourcepolicy/weekly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computeimage.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT191", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeimage" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT191", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeResourcePolicy", + "kind": "ComputeImage", "metadata": { - "name": "computeresourcepolicy-sample-weeklyschedule" + "name": "instancetemplate-dep" }, "spec": { - "region": "us-central1", - "snapshotSchedulePolicy": { - "schedule": { - "weeklySchedule": { - "dayOfWeeks": [ - { - "startTime": "08:00", - "day": "MONDAY" - }, - { - "startTime": "15:00", - "day": "WEDNESDAY" - }, - { - "startTime": "23:00", - "day": "FRIDAY" - } - ] - } - }, - "retentionPolicy": { - "maxRetentionDays": 12 - }, - "snapshotProperties": { - "storageLocations": [ - "us" - ], - "guestFlush": false, - "labels": { - "autodeleted": "false", - "interval": "weekly" - } - } + "description": "A sample image created from an empty disk resource", + "diskRef": { + "name": "instancetemplate-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT192 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT192 index 28349ec..7a384a4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT192 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT192 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeroute/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computeinstancetemplate.yaml" ], - "timestamp": 1628765142309, + "timestamp": 1642973302912, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,103 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeroute/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT192", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT192", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeInstanceTemplate", "metadata": { - "name": "computeroute-dep", - "annotations": { - "cnrm.cloud.google.com/deletion-policy": "abandon" + "name": "instancetemplate-sample", + "labels": { + "env": "dev" } }, "spec": { - "description": "Default network for the project" + "description": "a sample instance template", + "tags": [ + "foo", + "bar" + ], + "instanceDescription": "a sample instance created from the sample instance template", + "machineType": "n1-standard-1", + "region": "us-west1", + "disk": [ + { + "sourceDiskRef": { + "name": "instancetemplate-dep" + }, + "autoDelete": false, + "boot": true + }, + { + "sourceImageRef": { + "name": "instancetemplate-dep" + }, + "autoDelete": true, + "boot": false, + "diskName": "sample-attached-disk", + "deviceName": "attachment", + "interface": "SCSI", + "diskType": "pd-ssd", + "diskSizeGb": 10, + "type": "PERSISTENT" + } + ], + "networkInterface": [ + { + "networkRef": { + "name": "instancetemplate-dep" + }, + "subnetworkRef": { + "name": "instancetemplate-dep" + }, + "networkIp": "10.2.0.1", + "aliasIpRange": [ + { + "ipCidrRange": "/16", + "subnetworkRangeName": "sub-range" + } + ] + } + ], + "canIpForward": false, + "scheduling": { + "automaticRestart": true, + "onHostMaintenance": "MIGRATE", + "preemptible": false + }, + "metadataStartupScript": "echo hi > /test.txt", + "serviceAccount": { + "serviceAccountRef": { + "name": "instancetemplate-dep" + }, + "scopes": [ + "userinfo-email", + "compute-ro", + "storage-ro" + ] + }, + "guestAccelerator": [ + { + "type": "nvidia-tesla-k80", + "count": 1 + } + ], + "minCpuPlatform": "Intel Skylake", + "shieldedInstanceConfig": { + "enableSecureBoot": false, + "enableVtpm": true, + "enableIntegrityMonitoring": true + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT193 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT193 index a8c7fd5..c55ae3f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT193 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT193 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeroute/compute_v1beta1_computeroute.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765142332, + "timestamp": 1642973302916, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeroute/compute_v1beta1_computeroute.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT193", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT193", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRoute", + "kind": "ComputeNetwork", "metadata": { - "name": "computeroute-sample" + "name": "instancetemplate-dep" }, "spec": { - "description": "A sample compute route", - "destRange": "0.0.0.0/0", - "networkRef": { - "name": "computeroute-dep" - }, - "priority": 100, - "nextHopIp": "10.132.1.5" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT194 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT194 index 04904ed..b45239a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT194 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT194 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouter/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765142351, + "timestamp": 1642973302919, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouter/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeinstancetemplate/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT194", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT194", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeSubnetwork", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computerouter-dep" + "name": "instancetemplate-dep" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "ipCidrRange": "10.2.0.0/16", + "region": "us-west1", + "description": "a sample subnetwork", + "privateIpGoogleAccess": false, + "networkRef": { + "name": "instancetemplate-dep" + }, + "logConfig": { + "aggregationInterval": "INTERVAL_10_MIN", + "flowSampling": 0.5, + "metadata": "INCLUDE_ALL_METADATA" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT195 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT195 index 80e621d..8cd952d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT195 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT195 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouter/compute_v1beta1_computerouter.yaml" + "/samples/resources/computeinstancetemplate/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765142373, + "timestamp": 1642973302924, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouter/compute_v1beta1_computerouter.yaml" + "/samples/resources/computeinstancetemplate/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT195", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT195", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouter", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "computerouter-sample" + "name": "instancetemplate-dep" }, "spec": { - "networkRef": { - "name": "computerouter-dep" - }, - "description": "example router description", - "region": "us-west1", - "bgp": { - "asn": 64514, - "advertiseMode": "CUSTOM", - "advertisedGroups": [ - "ALL_SUBNETS" - ], - "advertisedIpRanges": [ - { - "range": "1.2.3.4" - } - ] - } + "displayName": "a sample Service Account" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT196 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT196 index c3d292d..1ee39b5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT196 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT196 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computeinterconnectattachment.yaml" ], - "timestamp": 1628765142389, + "timestamp": 1642973302927, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computeinterconnectattachment.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT196", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinterconnectattachment" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT196", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeAddress", + "kind": "ComputeInterconnectAttachment", "metadata": { - "name": "computerouterinterface-dep", - "labels": { - "label-one": "value-one" - } + "name": "computeinterconnectattachment-sample" }, "spec": { - "location": "us-central1", - "description": "a test regional address" + "description": "example interconnect attachment description", + "interconnect": "https://www.googleapis.com/compute/v1/projects/my-project/global/interconnects/my-interconnect", + "adminEnabled": true, + "bandwidth": "BPS_50M", + "type": "DEDICATED", + "candidateSubnets": [ + "169.254.0.0/16" + ], + "region": "us-west1", + "vlanTag8021q": 1024, + "routerRef": { + "name": "computeinterconnectattachment-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT197 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT197 index d830d0a..dacaed8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT197 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT197 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765142431, + "timestamp": 1642973302931, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT197", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT197", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeNetwork", "metadata": { "labels": { "label-one": "value-one" }, - "name": "computerouterinterface-dep1" + "name": "computeinterconnectattachment-dep" }, "spec": { - "description": "A regional forwarding rule", - "ipAddress": { - "addressRef": { - "name": "computerouterinterface-dep" - } - }, - "ipProtocol": "ESP", - "location": "us-central1", - "target": { - "targetVPNGatewayRef": { - "name": "computerouterinterface-dep" - } - } + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT198 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT198 index f41c55d..9190530 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT198 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT198 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computerouter.yaml" ], - "timestamp": 1628765142450, + "timestamp": 1642973302934, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" + "/samples/resources/computeinterconnectattachment/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT198", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT198", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeRouter", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computerouterinterface-dep2" + "name": "computeinterconnectattachment-dep" }, "spec": { - "description": "A regional forwarding rule", - "ipAddress": { - "addressRef": { - "name": "computerouterinterface-dep" - } + "networkRef": { + "name": "computeinterconnectattachment-dep" }, - "ipProtocol": "UDP", - "location": "us-central1", - "portRange": "500", - "target": { - "targetVPNGatewayRef": { - "name": "computerouterinterface-dep" - } - } + "description": "example router description", + "region": "us-west1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT199 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT199 index 8273518..1b0e7cc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT199 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT199 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" + "/samples/resources/computenetwork/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765142470, + "timestamp": 1642973302939, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" + "/samples/resources/computenetwork/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT199", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT199", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeNetwork", "metadata": { "labels": { "label-one": "value-one" }, - "name": "computerouterinterface-dep3" + "name": "computenetwork-sample" }, "spec": { - "description": "A regional forwarding rule", - "ipAddress": { - "addressRef": { - "name": "computerouterinterface-dep" - } - }, - "ipProtocol": "UDP", - "location": "us-central1", - "portRange": "4500", - "target": { - "targetVPNGatewayRef": { - "name": "computerouterinterface-dep" - } - } + "routingMode": "REGIONAL", + "autoCreateSubnetworks": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT2 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT2 index 86ce331..5004592 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT2 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT2 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/accesscontextmanageraccesslevel/accesscontextmanager_v1beta1_accesscontextmanageraccesspolicy.yaml" ], - "timestamp": 1628765138181, + "timestamp": 1642973301643, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT2", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesspolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT2", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT20 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT20 index f3d36d6..3c22a27 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT20 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT20 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmscryptokey.yaml" ], - "timestamp": 1628765138663, + "timestamp": 1642973301751, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmscryptokey.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT20", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmscryptokey" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT20", "collection": "kcctemplate", "json": { "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSKeyRing", + "kind": "KMSCryptoKey", "metadata": { "name": "bigqueryjob-dep-copy" }, "spec": { - "location": "global" + "keyRingRef": { + "name": "bigqueryjob-dep-copy" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT200 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT200 index 1d8d1d2..28f6bc7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT200 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT200 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765142489, + "timestamp": 1642973302942, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT200", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT200", "collection": "kcctemplate", @@ -27,10 +30,7 @@ "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", "kind": "ComputeNetwork", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computerouterinterface-dep" + "name": "computenetworkendpointgroup-dep" }, "spec": { "routingMode": "REGIONAL", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT201 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT201 index ba8a444..64af070 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT201 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT201 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetworkendpointgroup.yaml" ], - "timestamp": 1628765142511, + "timestamp": 1642973302946, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computenetworkendpointgroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT201", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetworkendpointgroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT201", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouter", + "kind": "ComputeNetworkEndpointGroup", "metadata": { - "name": "computerouterinterface-dep" + "name": "computenetworkendpointgroup-sample" }, "spec": { "networkRef": { - "name": "computerouterinterface-dep" + "name": "computenetworkendpointgroup-dep" }, - "description": "example router description", - "region": "us-central1", - "bgp": { - "asn": 64514, - "advertiseMode": "CUSTOM", - "advertisedGroups": [ - "ALL_SUBNETS" - ], - "advertisedIpRanges": [ - { - "range": "1.2.3.4" - } - ] - } + "subnetworkRef": { + "name": "computenetworkendpointgroup-dep" + }, + "location": "us-west1-a", + "defaultPort": 90, + "description": "A network endpoint group living in a specific us-west1 subnetwork, whose member endpoints will serve on port number 90 by default." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT202 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT202 index ab94276..3feb1d9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT202 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT202 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computerouterinterface.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765142539, + "timestamp": 1642973302949, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computerouterinterface.yaml" + "/samples/resources/computenetworkendpointgroup/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT202", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT202", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouterInterface", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computerouterinterface-sample" + "name": "computenetworkendpointgroup-dep" }, "spec": { - "routerRef": { - "name": "computerouterinterface-dep" - }, - "region": "us-central1", - "ipRange": "169.254.1.1/30", - "vpnTunnelRef": { - "name": "computerouterinterface-dep" + "ipCidrRange": "10.2.0.0/16", + "region": "us-west1", + "networkRef": { + "name": "computenetworkendpointgroup-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT203 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT203 index f8316c5..eb0a0f1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT203 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT203 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_0.yaml" ], - "timestamp": 1628765142566, + "timestamp": 1642973302954, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT203", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT203", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetVPNGateway", + "kind": "ComputeNetwork", "metadata": { - "name": "computerouterinterface-dep" + "name": "computenetworkpeering-dep1" }, "spec": { - "description": "a test target vpn gateway", - "region": "us-central1", - "networkRef": { - "name": "computerouterinterface-dep" - } + "autoCreateSubnetworks": false, + "routingMode": "REGIONAL" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT204 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT204 index 9fd1469..34f874f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT204 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT204 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computevpntunnel.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_1.yaml" ], - "timestamp": 1628765142589, + "timestamp": 1642973302958, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/compute_v1beta1_computevpntunnel.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetwork_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT204", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT204", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeVPNTunnel", + "kind": "ComputeNetwork", "metadata": { - "name": "computerouterinterface-dep", - "labels": { - "foo": "bar" - } + "name": "computenetworkpeering-dep2" }, "spec": { - "peerIp": "15.0.0.120", - "region": "us-central1", - "sharedSecret": { - "valueFrom": { - "secretKeyRef": { - "name": "computerouterinterface-dep", - "key": "sharedSecret" - } - } - }, - "targetVPNGatewayRef": { - "name": "computerouterinterface-dep" - }, - "localTrafficSelector": [ - "192.168.0.0/16" - ] + "autoCreateSubnetworks": false, + "routingMode": "REGIONAL" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT205 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT205 index 403524b..4961cd6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT205 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT205 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterinterface/secret.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_0.yaml" ], - "timestamp": 1628765142607, + "timestamp": 1642973302962, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterinterface/secret.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT205", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetworkpeering" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT205", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetworkPeering", "metadata": { - "name": "computerouterinterface-dep" + "name": "computenetworkpeering-sample1" }, - "stringData": { - "sharedSecret": "a secret message" + "spec": { + "exportCustomRoutes": false, + "importCustomRoutes": false, + "networkRef": { + "name": "computenetworkpeering-dep1" + }, + "peerNetworkRef": { + "name": "computenetworkpeering-dep2" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT206 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT206 index 47dcddd..1225324 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT206 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT206 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_1.yaml" ], - "timestamp": 1628765142626, + "timestamp": 1642973302966, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenetworkpeering/compute_v1beta1_computenetworkpeering_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT206", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetworkpeering" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT206", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeNetworkPeering", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computerouternat-dep-forallsubnets" + "name": "computenetworkpeering-sample2" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "exportCustomRoutes": false, + "importCustomRoutes": false, + "networkRef": { + "name": "computenetworkpeering-dep2" + }, + "peerNetworkRef": { + "name": "computenetworkpeering-dep1" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT207 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT207 index 0ca32a3..a5d991c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT207 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT207 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenodegroup/compute_v1beta1_computenodegroup.yaml" ], - "timestamp": 1628765142649, + "timestamp": 1642973302970, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenodegroup/compute_v1beta1_computenodegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT207", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodegroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT207", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouter", + "kind": "ComputeNodeGroup", "metadata": { - "name": "computerouternat-dep-forallsubnets" + "name": "computenodegroup-sample" }, "spec": { - "description": "example router description", - "region": "us-west1", - "networkRef": { - "name": "computerouternat-dep-forallsubnets" - } + "description": "A single sole-tenant node in the us-central1-b zone.", + "size": 1, + "nodeTemplateRef": { + "name": "computenodegroup-dep" + }, + "zone": "us-central1-b" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT208 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT208 index b476b99..b5cb7ca 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT208 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT208 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computenodegroup/compute_v1beta1_computenodetemplate.yaml" ], - "timestamp": 1628765142663, + "timestamp": 1642973302974, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computenodegroup/compute_v1beta1_computenodetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT208", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT208", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouterNAT", + "kind": "ComputeNodeTemplate", "metadata": { - "name": "computerouternat-sample-forallsubnets" + "name": "computenodegroup-dep" }, "spec": { - "region": "us-west1", - "routerRef": { - "name": "computerouternat-dep-forallsubnets" - }, - "natIpAllocateOption": "AUTO_ONLY", - "sourceSubnetworkIpRangesToNat": "ALL_SUBNETWORKS_ALL_IP_RANGES" + "region": "us-central1", + "nodeType": "n1-node-96-624" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT209 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT209 index ae028f7..aa9c74c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT209 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT209 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenodetemplate/flexible-node-template/compute_v1beta1_computenodetemplate.yaml" ], - "timestamp": 1628765142682, + "timestamp": 1642973302978, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computenodetemplate/flexible-node-template/compute_v1beta1_computenodetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT209", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT209", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeNodeTemplate", "metadata": { + "name": "computenodetemplate-sample-flexible", "labels": { - "label-one": "value-one" - }, - "name": "computerouternat-dep-forlistofsubnets" + "memory_guarantee": "false", + "desired_workload": "high-cpu" + } }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "description": "Node template for sole tenant nodes running in us-central1, with 96vCPUs and any amount of memory on any machine type.", + "region": "us-central1", + "nodeTypeFlexibility": { + "cpus": "96", + "memory": "any" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT21 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT21 index 2ef0cd9..1291d03 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT21 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT21 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmskeyring.yaml" ], - "timestamp": 1628765138679, + "timestamp": 1642973301754, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/copy-bigquery-job/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT21", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT21", "collection": "kcctemplate", "json": { - "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryDataset", + "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", + "kind": "KMSKeyRing", "metadata": { - "name": "bigqueryjobdepextract" + "name": "bigqueryjob-dep-copy" }, "spec": { - "friendlyName": "bigqueryjob-dep-extract" + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT210 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT210 index 465138c..aad3dc4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT210 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT210 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenodetemplate/typed-node-template/compute_v1beta1_computenodetemplate.yaml" ], - "timestamp": 1628765142700, + "timestamp": 1642973302983, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouter.yaml" + "/samples/resources/computenodetemplate/typed-node-template/compute_v1beta1_computenodetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT210", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT210", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouter", + "kind": "ComputeNodeTemplate", "metadata": { - "name": "computerouternat-dep-forlistofsubnets" + "name": "computenodetemplate-sample-template", + "labels": { + "memory_guarantee": "true", + "desired_workload": "sustained" + } }, "spec": { - "description": "example router description", - "region": "us-west1", - "networkRef": { - "name": "computerouternat-dep-forlistofsubnets" - } + "description": "Node template for sole tenant nodes running in us-central1, with 96vCPUs and 624GB of memory, on n1 machines.", + "region": "us-central1", + "nodeType": "n1-node-96-624" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT211 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT211 index 86588ff..37f511c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT211 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT211 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765142719, + "timestamp": 1642973302986, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT211", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT211", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouterNAT", + "kind": "ComputeBackendService", "metadata": { - "name": "computerouternat-sample-forlistofsubnets" + "name": "computepacketmirroring-dep" }, "spec": { - "region": "us-west1", - "natIpAllocateOption": "AUTO_ONLY", - "routerRef": { - "name": "computerouternat-dep-forlistofsubnets" - }, - "sourceSubnetworkIpRangesToNat": "LIST_OF_SUBNETWORKS", - "subnetwork": [ - { - "subnetworkRef": { - "name": "computerouternat-dep-forlistofsubnets" - }, - "sourceIpRangesToNat": [ - "ALL_IP_RANGES" - ] - } - ] + "location": "us-west2", + "loadBalancingScheme": "INTERNAL" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT212 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT212 index 858e3be..e21d4ff 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT212 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT212 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computeforwardingrule.yaml" ], - "timestamp": 1628765142740, + "timestamp": 1642973302992, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT212", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT212", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeForwardingRule", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computerouternat-dep-forlistofsubnets" + "name": "computepacketmirroring-dep" }, "spec": { - "description": "My subnet", - "ipCidrRange": "10.1.0.0/16", - "region": "us-west1", + "location": "us-west2", "networkRef": { - "name": "computerouternat-dep-forlistofsubnets" - } + "name": "computepacketmirroring-dep" + }, + "subnetworkRef": { + "name": "computepacketmirroring-dep" + }, + "description": "A test mirror collector forwarding rule with internal load balancing scheme", + "loadBalancingScheme": "INTERNAL", + "backendServiceRef": { + "name": "computepacketmirroring-dep" + }, + "networkTier": "PREMIUM", + "allPorts": true, + "isMirroringCollector": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT213 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT213 index 1ac10da..8a185f7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT213 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT213 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computeinstance.yaml" ], - "timestamp": 1628765142758, + "timestamp": 1642973302995, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,47 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT213", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT213", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeAddress", + "kind": "ComputeInstance", "metadata": { - "name": "computerouternat-dep-withmanualnatips" + "annotations": { + "cnrm.cloud.google.com/allow-stopping-for-update": "true" + }, + "name": "computepacketmirroring-dep" }, "spec": { - "location": "us-west1" + "zone": "us-west2-a", + "machineType": "zones/us-west2-a/machineTypes/e2-medium", + "bootDisk": { + "autoDelete": true, + "initializeParams": { + "sourceImageRef": { + "external": "projects/debian-cloud/global/images/debian-10-buster-v20210817" + } + } + }, + "networkInterface": [ + { + "networkRef": { + "name": "computepacketmirroring-dep" + }, + "subnetworkRef": { + "name": "computepacketmirroring-dep" + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT214 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT214 index 9999589..0579884 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT214 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT214 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765142776, + "timestamp": 1642973302999, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT214", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT214", "collection": "kcctemplate", @@ -27,13 +30,9 @@ "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", "kind": "ComputeNetwork", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computerouternat-dep-withmanualnatips" + "name": "computepacketmirroring-dep" }, "spec": { - "routingMode": "REGIONAL", "autoCreateSubnetworks": false } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT215 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT215 index 22cd771..c48782e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT215 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT215 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouter.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computepacketmirroring.yaml" ], - "timestamp": 1628765142802, + "timestamp": 1642973303003, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,69 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouter.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computepacketmirroring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT215", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computepacketmirroring" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT215", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouter", + "kind": "ComputePacketMirroring", "metadata": { - "name": "computerouternat-dep-withmanualnatips" + "name": "computepacketmirroring-sample" }, "spec": { - "description": "example router description", - "region": "us-west1", - "networkRef": { - "name": "computerouternat-dep-withmanualnatips" - } + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "us-west2", + "description": "A sample packet mirroring", + "network": { + "urlRef": { + "name": "computepacketmirroring-dep" + } + }, + "priority": 1000, + "collectorIlb": { + "urlRef": { + "name": "computepacketmirroring-dep" + } + }, + "mirroredResources": { + "subnetworks": [ + { + "urlRef": { + "name": "computepacketmirroring-dep" + } + } + ], + "instances": [ + { + "urlRef": { + "name": "computepacketmirroring-dep" + } + } + ], + "tags": [ + "tag-one" + ] + }, + "filter": { + "cidrRanges": [ + "192.168.0.0/23" + ], + "ipProtocols": [ + "tcp" + ], + "direction": "BOTH" + }, + "enable": "TRUE" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT216 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT216 index 0287546..3dde943 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT216 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT216 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765142819, + "timestamp": 1642973303007, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouternat.yaml" + "/samples/resources/computepacketmirroring/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT216", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT216", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouterNAT", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computerouternat-sample-withmanualnatips" + "name": "computepacketmirroring-dep" }, "spec": { - "region": "us-west1", - "routerRef": { - "name": "computerouternat-dep-withmanualnatips" + "networkRef": { + "name": "computepacketmirroring-dep" }, - "natIpAllocateOption": "MANUAL_ONLY", - "natIps": [ - { - "name": "computerouternat-dep-withmanualnatips" - } - ], - "sourceSubnetworkIpRangesToNat": "ALL_SUBNETWORKS_ALL_IP_RANGES" + "ipCidrRange": "10.168.0.0/20", + "region": "us-west2" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT217 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT217 index 0fb4373..4cde9d6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT217 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT217 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeprojectmetadata/compute_v1beta1_computeprojectmetadata.yaml" ], - "timestamp": 1628765142844, + "timestamp": 1642973303012, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeprojectmetadata/compute_v1beta1_computeprojectmetadata.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT217", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeprojectmetadata" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT217", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeProjectMetadata", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computerouterpeer-dep" + "name": "computeprojectmetadata-sample" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "metadata": { + "baz": "bat", + "foo": "bar" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT218 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT218 index e593afc..8ba8222 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT218 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT218 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouter.yaml" + "/samples/resources/computereservation/bulk-compute-reservation/compute_v1beta1_computereservation.yaml" ], - "timestamp": 1628765142872, + "timestamp": 1642973303016, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouter.yaml" + "/samples/resources/computereservation/bulk-compute-reservation/compute_v1beta1_computereservation.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT218", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computereservation" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT218", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouter", + "kind": "ComputeReservation", "metadata": { - "name": "computerouterpeer-dep" + "name": "computereservation-sample-bulk" }, "spec": { - "networkRef": { - "name": "computerouterpeer-dep" - }, - "description": "example router description", - "region": "us-central1", - "bgp": { - "asn": 64514, - "advertiseMode": "CUSTOM", - "advertisedGroups": [ - "ALL_SUBNETS" - ], - "advertisedIpRanges": [ - { - "range": "1.2.3.4" - } - ] + "description": "Reservation for 2 basic machines which will become generally available for VM instances to consume.", + "zone": "us-central1-a", + "specificReservation": { + "count": 2, + "instanceProperties": { + "machineType": "n1-standard-1", + "minCpuPlatform": "Intel Sandy Bridge" + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT219 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT219 index 6e34edf..5a7ff71 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT219 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT219 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouterinterface.yaml" + "/samples/resources/computereservation/specialized-compute-reservation/compute_v1beta1_computereservation.yaml" ], - "timestamp": 1628765142889, + "timestamp": 1642973303019, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,46 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouterinterface.yaml" + "/samples/resources/computereservation/specialized-compute-reservation/compute_v1beta1_computereservation.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT219", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computereservation" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT219", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouterInterface", + "kind": "ComputeReservation", "metadata": { - "name": "computerouterpeer-dep" + "name": "computereservation-sample-specialized" }, "spec": { - "routerRef": { - "name": "computerouterpeer-dep" - }, - "region": "us-central1", - "ipRange": "169.254.0.1/30" + "description": "Reservation for a single tricked out machine that can only be consumed by a VM instance that references this reservation.", + "zone": "us-central1-a", + "specificReservationRequired": true, + "specificReservation": { + "count": 1, + "instanceProperties": { + "machineType": "n1-highmem-8", + "minCpuPlatform": "Intel Skylake", + "guestAccelerators": [ + { + "acceleratorCount": 1, + "acceleratorType": "nvidia-tesla-v100" + } + ], + "localSsds": [ + { + "interface": "NVME", + "diskSizeGb": 375 + } + ] + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT22 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT22 index 06189af..972a025 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT22 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT22 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" ], - "timestamp": 1628765138701, + "timestamp": 1642973301757, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT22", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT22", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryJob", + "kind": "BigQueryDataset", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "bigqueryjob-sample-extract" + "name": "bigqueryjobdepextract" }, "spec": { - "location": "US", - "jobTimeoutMs": "600000", - "extract": { - "sourceTable": { - "tableRef": { - "name": "bigqueryjobdepextract" - } - }, - "destinationUris": [ - "gs://${PROJECT_ID?}-bigqueryjob-dep-extract/extract" - ], - "destinationFormat": "CSV", - "compression": "GZIP", - "printHeader": true, - "fieldDelimiter": "," - } + "friendlyName": "bigqueryjob-dep-extract" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT220 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT220 index 3952e06..c070afd 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT220 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT220 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouterpeer.yaml" + "/samples/resources/computeresourcepolicy/daily-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], - "timestamp": 1628765142917, + "timestamp": 1642973303023, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,46 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computerouterpeer/compute_v1beta1_computerouterpeer.yaml" + "/samples/resources/computeresourcepolicy/daily-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT220", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeresourcepolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT220", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeRouterPeer", + "kind": "ComputeResourcePolicy", "metadata": { - "name": "computerouterpeer-sample" + "name": "computeresourcepolicy-sample-dailyschedule" }, "spec": { "region": "us-central1", - "peerIpAddress": "169.254.0.2", - "peerAsn": 65513, - "advertisedRoutePriority": 1, - "routerRef": { - "name": "computerouterpeer-dep" - }, - "routerInterfaceRef": { - "name": "computerouterpeer-dep" + "snapshotSchedulePolicy": { + "schedule": { + "dailySchedule": { + "daysInCycle": 1, + "startTime": "00:00" + } + }, + "retentionPolicy": { + "maxRetentionDays": 8, + "onSourceDiskDelete": "KEEP_AUTO_SNAPSHOTS" + }, + "snapshotProperties": { + "storageLocations": [ + "us-central1" + ], + "guestFlush": true, + "labels": { + "autodeleted": "false", + "interval": "daily" + } + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT221 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT221 index 2dddc35..f24c0a1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT221 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT221 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesecuritypolicy/lockdown-security-policy-with-test/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/computeresourcepolicy/hourly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], - "timestamp": 1628765142956, + "timestamp": 1642973303025, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,53 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesecuritypolicy/lockdown-security-policy-with-test/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/computeresourcepolicy/hourly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT221", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeresourcepolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT221", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSecurityPolicy", + "kind": "ComputeResourcePolicy", "metadata": { - "name": "computesecuritypolicy-sample-lockdownwithtest" + "name": "computeresourcepolicy-sample-hourlyschedule" }, "spec": { - "description": "A policy designed to completely lock down network access while testing the effect of opening ports over a few select ranges.", - "rule": [ - { - "action": "deny(403)", - "priority": 2147483647, - "match": { - "versionedExpr": "SRC_IPS_V1", - "config": { - "srcIpRanges": [ - "*" - ] - } - }, - "description": "Rule matching all IPs with priority 2147483647, set to deny." + "region": "us-central1", + "snapshotSchedulePolicy": { + "schedule": { + "hourlySchedule": { + "hoursInCycle": 4, + "startTime": "13:00" + } }, - { - "action": "allow", - "preview": true, - "priority": 1000000000, - "match": { - "versionedExpr": "SRC_IPS_V1", - "config": { - "srcIpRanges": [ - "16.0.0.0/4", - "115.128.0.0/9", - "62.48.212.0/24" - ] - } - }, - "description": "Tests opening listed IP ranges. Logs sent to Stackdriver." + "retentionPolicy": { + "maxRetentionDays": 2, + "onSourceDiskDelete": "APPLY_RETENTION_POLICY" + }, + "snapshotProperties": { + "labels": { + "autodeleted": "true", + "interval": "hourly" + } } - ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT222 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT222 index 0e968e7..17dbded 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT222 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT222 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesecuritypolicy/multirule-security-policy/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/computeresourcepolicy/weekly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], - "timestamp": 1628765142992, + "timestamp": 1642973303029, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,79 +15,58 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesecuritypolicy/multirule-security-policy/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/computeresourcepolicy/weekly-resource-policy-schedule/compute_v1alpha3_computeresourcepolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT222", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeresourcepolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT222", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSecurityPolicy", + "kind": "ComputeResourcePolicy", "metadata": { - "name": "computesecuritypolicy-sample-multirule" + "name": "computeresourcepolicy-sample-weeklyschedule" }, "spec": { - "description": "A generally permissive policy that locks out a large block of untrusted IPs, except for some allowed trusted IP ranges within them, and never allows IPs from a denylist.", - "rule": [ - { - "action": "allow", - "priority": 2147483647, - "match": { - "versionedExpr": "SRC_IPS_V1", - "config": { - "srcIpRanges": [ - "*" - ] - } - }, - "description": "This rule must be included in any rule array. Action can change." + "region": "us-central1", + "snapshotSchedulePolicy": { + "schedule": { + "weeklySchedule": { + "dayOfWeeks": [ + { + "startTime": "08:00", + "day": "MONDAY" + }, + { + "startTime": "15:00", + "day": "WEDNESDAY" + }, + { + "startTime": "23:00", + "day": "FRIDAY" + } + ] + } }, - { - "action": "deny(502)", - "priority": 111111111, - "match": { - "versionedExpr": "SRC_IPS_V1", - "config": { - "srcIpRanges": [ - "60.0.0.0/6" - ] - } - }, - "description": "Untrusted range. Block IPs and return 502." + "retentionPolicy": { + "maxRetentionDays": 12 }, - { - "action": "allow", - "priority": 555, - "match": { - "versionedExpr": "SRC_IPS_V1", - "config": { - "srcIpRanges": [ - "63.0.0.0/8", - "61.128.0.0/10" - ] - } - }, - "description": "Even though they're in an untrusted block, these ranges are OK." - }, - { - "action": "deny(403)", - "priority": 0, - "match": { - "versionedExpr": "SRC_IPS_V1", - "config": { - "srcIpRanges": [ - "145.4.56.4/30", - "63.63.63.63/32", - "4.5.4.0/24" - ] - } - }, - "description": "Never allow these denylisted IP ranges." + "snapshotProperties": { + "storageLocations": [ + "us" + ], + "guestFlush": false, + "labels": { + "autodeleted": "false", + "interval": "weekly" + } } - ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT223 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT223 index e2269e2..f1ab03e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT223 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT223 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesharedvpchostproject/compute_v1beta1_computesharedvpchostproject.yaml" + "/samples/resources/computeroute/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765143021, + "timestamp": 1642973303033, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesharedvpchostproject/compute_v1beta1_computesharedvpchostproject.yaml" + "/samples/resources/computeroute/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT223", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT223", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSharedVPCHostProject", + "kind": "ComputeNetwork", "metadata": { + "name": "computeroute-dep", "annotations": { - "cnrm.cloud.google.com/project-id": "${HOST_PROJECT_ID?}" - }, - "name": "computesharedvpchostproject-sample" + "cnrm.cloud.google.com/deletion-policy": "abandon" + } + }, + "spec": { + "description": "Default network for the project" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT224 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT224 index fb5a26e..b3f197c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT224 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT224 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpchostproject.yaml" + "/samples/resources/computeroute/compute_v1beta1_computeroute.yaml" ], - "timestamp": 1628765143052, + "timestamp": 1642973303038, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpchostproject.yaml" + "/samples/resources/computeroute/compute_v1beta1_computeroute.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT224", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeroute" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT224", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSharedVPCHostProject", + "kind": "ComputeRoute", "metadata": { - "annotations": { - "cnrm.cloud.google.com/project-id": "${HOST_PROJECT_ID?}" + "name": "computeroute-sample" + }, + "spec": { + "description": "A sample compute route", + "destRange": "0.0.0.0/0", + "networkRef": { + "name": "computeroute-dep" }, - "name": "computesharedvpchostproject-sample" + "priority": 100, + "nextHopIp": "10.132.1.5" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT225 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT225 index f6a4a78..ad80883 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT225 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT225 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpcserviceproject.yaml" + "/samples/resources/computerouter/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765143078, + "timestamp": 1642973303042, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpcserviceproject.yaml" + "/samples/resources/computerouter/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT225", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT225", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSharedVPCServiceProject", + "kind": "ComputeNetwork", "metadata": { - "annotations": { - "cnrm.cloud.google.com/project-id": "${HOST_PROJECT_ID?}" + "labels": { + "label-one": "value-one" }, - "name": "computesharedvpcserviceproject-sample" + "name": "computerouter-dep" }, "spec": { - "projectRef": { - "name": "sharedvpc-service-project-dep" - } + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT226 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT226 index 66e36dc..bc0f67b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT226 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT226 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesharedvpcserviceproject/resourcemanager_v1beta1_project.yaml" + "/samples/resources/computerouter/compute_v1beta1_computerouter.yaml" ], - "timestamp": 1628765143113, + "timestamp": 1642973303046, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesharedvpcserviceproject/resourcemanager_v1beta1_project.yaml" + "/samples/resources/computerouter/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT226", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT226", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeRouter", "metadata": { - "annotations": { - "cnrm.cloud.google.com/folder-id": "${FOLDER_ID?}" - }, - "labels": { - "label-one": "value-one" - }, - "name": "sharedvpc-service-project-dep" + "name": "computerouter-sample" }, "spec": { - "name": "Config Connector Sample", - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" + "networkRef": { + "name": "computerouter-dep" + }, + "description": "example router description", + "region": "us-west1", + "bgp": { + "asn": 64514, + "advertiseMode": "CUSTOM", + "advertisedGroups": [ + "ALL_SUBNETS" + ], + "advertisedIpRanges": [ + { + "range": "1.2.3.4" + } + ] } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT227 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT227 index a7011d9..c369a4b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT227 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT227 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesnapshot/compute_v1beta1_computedisk.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeaddress.yaml" ], - "timestamp": 1628765143143, + "timestamp": 1642973303050, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesnapshot/compute_v1beta1_computedisk.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT227", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT227", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeAddress", "metadata": { - "name": "computesnapshot-dep" + "name": "computerouterinterface-dep", + "labels": { + "label-one": "value-one" + } }, "spec": { - "location": "us-west1-c", - "diskEncryptionKey": { - "rawKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computesnapshot-dep", - "key": "sourceDiskEncryptionKey" - } - } - } - } + "location": "us-central1", + "description": "a test regional address" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT228 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT228 index 0780bed..67a6e8c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT228 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT228 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesnapshot/compute_v1beta1_computesnapshot.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" ], - "timestamp": 1628765143182, + "timestamp": 1642973303054, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,47 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesnapshot/compute_v1beta1_computesnapshot.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT228", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT228", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSnapshot", + "kind": "ComputeForwardingRule", "metadata": { - "name": "computesnapshot-sample", "labels": { "label-one": "value-one" - } + }, + "name": "computerouterinterface-dep1" }, "spec": { - "description": "ComputeSnapshot Sample", - "zone": "us-west1-c", - "sourceDiskRef": { - "name": "computesnapshot-dep" - }, - "snapshotEncryptionKey": { - "rawKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computesnapshot-dep", - "key": "snapshotEncryptionKey" - } - } + "description": "A regional forwarding rule", + "ipAddress": { + "addressRef": { + "name": "computerouterinterface-dep" } }, - "sourceDiskEncryptionKey": { - "rawKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computesnapshot-dep", - "key": "sourceDiskEncryptionKey" - } - } + "ipProtocol": "ESP", + "location": "us-central1", + "target": { + "targetVPNGatewayRef": { + "name": "computerouterinterface-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT229 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT229 index 029d3b6..908e425 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT229 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT229 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesnapshot/secret.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" ], - "timestamp": 1628765143210, + "timestamp": 1642973303060, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesnapshot/secret.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT229", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT229", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeForwardingRule", "metadata": { - "name": "computesnapshot-dep" + "labels": { + "label-one": "value-one" + }, + "name": "computerouterinterface-dep2" }, - "stringData": { - "snapshotEncryptionKey": "a2NjIGlzIGF3ZXNvbWUgeW91IHNob3VsZCB0cnkgaXQ=", - "sourceDiskEncryptionKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" + "spec": { + "description": "A regional forwarding rule", + "ipAddress": { + "addressRef": { + "name": "computerouterinterface-dep" + } + }, + "ipProtocol": "UDP", + "location": "us-central1", + "portRange": "500", + "target": { + "targetVPNGatewayRef": { + "name": "computerouterinterface-dep" + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT23 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT23 index 6e4418d..e9c940a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT23 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT23 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], - "timestamp": 1628765138718, + "timestamp": 1642973301767, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT23", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigqueryjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT23", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryTable", + "kind": "BigQueryJob", "metadata": { - "name": "bigqueryjobdepextract" + "labels": { + "label-one": "value-one" + }, + "name": "bigqueryjob-sample-extract" }, "spec": { - "friendlyName": "bigqueryjob-dep-extract", - "datasetRef": { - "name": "bigqueryjobdepextract" - }, - "schema": "[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]" + "location": "US", + "jobTimeoutMs": "600000", + "extract": { + "sourceTable": { + "tableRef": { + "name": "bigqueryjobdepextract" + } + }, + "destinationUris": [ + "gs://${PROJECT_ID?}-bigqueryjob-dep-extract/extract" + ], + "destinationFormat": "CSV", + "compression": "GZIP", + "printHeader": true, + "fieldDelimiter": "," + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT230 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT230 index 9cf94e7..c6fa280 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT230 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT230 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesslcertificate/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" ], - "timestamp": 1628765143240, + "timestamp": 1642973303064, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesslcertificate/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT230", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT230", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSSLCertificate", + "kind": "ComputeForwardingRule", "metadata": { - "name": "computesslcertificate-sample" + "labels": { + "label-one": "value-one" + }, + "name": "computerouterinterface-dep3" }, "spec": { - "location": "global", - "description": "example compute SSL certificate", - "certificate": { - "valueFrom": { - "secretKeyRef": { - "name": "computesslcertificate-dep", - "key": "certificate" - } + "description": "A regional forwarding rule", + "ipAddress": { + "addressRef": { + "name": "computerouterinterface-dep" } }, - "privateKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computesslcertificate-dep", - "key": "privateKey" - } + "ipProtocol": "UDP", + "location": "us-central1", + "portRange": "4500", + "target": { + "targetVPNGatewayRef": { + "name": "computerouterinterface-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT231 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT231 index 68980ce..d17cd21 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT231 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT231 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesslcertificate/secret.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765143272, + "timestamp": 1642973303071, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesslcertificate/secret.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT231", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT231", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "name": "computesslcertificate-dep" + "labels": { + "label-one": "value-one" + }, + "name": "computerouterinterface-dep" }, - "stringData": { - "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", - "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" + "spec": { + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT232 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT232 index 97fea72..93f39ee 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT232 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT232 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesslpolicy/custom-tls-1-0-ssl-policy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computerouter.yaml" ], - "timestamp": 1628765143302, + "timestamp": 1642973303075, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesslpolicy/custom-tls-1-0-ssl-policy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT232", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT232", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSSLPolicy", + "kind": "ComputeRouter", "metadata": { - "name": "computesslpolicy-sample-customtls10" + "name": "computerouterinterface-dep" }, "spec": { - "description": "An SSL Policy with a CUSTOM encryption profile, supporting a custom set of ciphers for TLS 1.0 and up.", - "profile": "CUSTOM", - "customFeatures": [ - "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", - "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", - "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", - "TLS_RSA_WITH_AES_256_GCM_SHA384", - "TLS_RSA_WITH_AES_256_CBC_SHA" - ] + "networkRef": { + "name": "computerouterinterface-dep" + }, + "description": "example router description", + "region": "us-central1", + "bgp": { + "asn": 64514, + "advertiseMode": "CUSTOM", + "advertisedGroups": [ + "ALL_SUBNETS" + ], + "advertisedIpRanges": [ + { + "range": "1.2.3.4" + } + ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT233 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT233 index 9e4bcdb..1d9339c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT233 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT233 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesslpolicy/modern-tls-1-1-ssl-policy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computerouterinterface.yaml" ], - "timestamp": 1628765143339, + "timestamp": 1642973303078, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesslpolicy/modern-tls-1-1-ssl-policy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computerouterinterface.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT233", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouterinterface" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT233", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSSLPolicy", + "kind": "ComputeRouterInterface", "metadata": { - "name": "computesslpolicy-sample-moderntls11" + "name": "computerouterinterface-sample" }, "spec": { - "description": "An SSL Policy with a MODERN encryption profile, supporting several modern methods of encryption for TLS 1.1 and up.", - "minTlsVersion": "TLS_1_1", - "profile": "MODERN" + "routerRef": { + "name": "computerouterinterface-dep" + }, + "region": "us-central1", + "ipRange": "169.254.1.1/30", + "vpnTunnelRef": { + "name": "computerouterinterface-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT234 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT234 index c45ef72..d4ba2d5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT234 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT234 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesubnetwork/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computetargetvpngateway.yaml" ], - "timestamp": 1628765143387, + "timestamp": 1642973303084, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesubnetwork/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computetargetvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT234", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetvpngateway" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT234", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeTargetVPNGateway", "metadata": { - "name": "computesubnetwork-dep" + "name": "computerouterinterface-dep" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "description": "a test target vpn gateway", + "region": "us-central1", + "networkRef": { + "name": "computerouterinterface-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT235 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT235 index 968d989..4943a61 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT235 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT235 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computesubnetwork/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computevpntunnel.yaml" ], - "timestamp": 1628765143416, + "timestamp": 1642973303087, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computesubnetwork/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computerouterinterface/compute_v1beta1_computevpntunnel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT235", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computevpntunnel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT235", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeVPNTunnel", "metadata": { + "name": "computerouterinterface-dep", "labels": { - "label-one": "value-one" - }, - "name": "computesubnetwork-sample" + "foo": "bar" + } }, "spec": { - "ipCidrRange": "10.2.0.0/16", + "peerIp": "15.0.0.120", "region": "us-central1", - "description": "My subnet", - "privateIpGoogleAccess": false, - "networkRef": { - "name": "computesubnetwork-dep" + "sharedSecret": { + "valueFrom": { + "secretKeyRef": { + "name": "computerouterinterface-dep", + "key": "sharedSecret" + } + } }, - "logConfig": { - "aggregationInterval": "INTERVAL_10_MIN", - "flowSampling": 0.5, - "metadata": "INCLUDE_ALL_METADATA" - } + "targetVPNGatewayRef": { + "name": "computerouterinterface-dep" + }, + "localTrafficSelector": [ + "192.168.0.0/16" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT236 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT236 index aa67209..8230112 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT236 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT236 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouterinterface/secret.yaml" ], - "timestamp": 1628765143436, + "timestamp": 1642973303091, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouterinterface/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT236", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT236", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "name": "computetargetgrpcproxy-dep" + "name": "computerouterinterface-dep" }, - "spec": { - "location": "global", - "loadBalancingScheme": "INTERNAL_SELF_MANAGED", - "protocol": "GRPC" + "stringData": { + "sharedSecret": "a secret message" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT237 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT237 index 8087db9..e01a691 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT237 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT237 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computetargetgrpcproxy.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765143470, + "timestamp": 1642973303094, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computetargetgrpcproxy.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT237", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT237", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetGRPCProxy", + "kind": "ComputeNetwork", "metadata": { - "name": "computetargetgrpcproxy-sample" + "labels": { + "label-one": "value-one" + }, + "name": "computerouternat-dep-forallsubnets" }, "spec": { - "description": "A target gRPC proxy intended for load balancing gRPC traffic, referenced by global forwarding rules. References a URL map which specifies how traffic routes to gRPC backend services.", - "urlMapRef": { - "name": "computetargetgrpcproxy-dep" - }, - "validateForProxyless": true + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT238 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT238 index c69f850..db4f28a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT238 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT238 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouter.yaml" ], - "timestamp": 1628765143508, + "timestamp": 1642973303098, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT238", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT238", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeURLMap", + "kind": "ComputeRouter", "metadata": { - "name": "computetargetgrpcproxy-dep" + "name": "computerouternat-dep-forallsubnets" }, "spec": { - "location": "global", - "defaultService": { - "backendServiceRef": { - "name": "computetargetgrpcproxy-dep" - } + "description": "example router description", + "region": "us-west1", + "networkRef": { + "name": "computerouternat-dep-forallsubnets" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT239 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT239 index 184d971..af16dc0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT239 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT239 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouternat.yaml" ], - "timestamp": 1628765143539, + "timestamp": 1642973303102, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouternat/router-nat-for-all-subnets/compute_v1beta1_computerouternat.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT239", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouternat" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT239", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeRouterNAT", "metadata": { - "name": "computetargethttpproxy-dep" + "name": "computerouternat-sample-forallsubnets" }, "spec": { - "healthChecks": [ - { - "healthCheckRef": { - "name": "computetargethttpproxy-dep" - } - } - ], - "location": "global" + "region": "us-west1", + "routerRef": { + "name": "computerouternat-dep-forallsubnets" + }, + "natIpAllocateOption": "AUTO_ONLY", + "sourceSubnetworkIpRangesToNat": "ALL_SUBNETWORKS_ALL_IP_RANGES" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT24 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT24 index d6c05c1..f3a034d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT24 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT24 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], - "timestamp": 1628765138733, + "timestamp": 1642973301778, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/extract-bigquery-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT24", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT24", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", + "kind": "BigQueryTable", "metadata": { - "annotations": { - "cnrm.cloud.google.com/force-destroy": "true" + "name": "bigqueryjobdepextract" + }, + "spec": { + "friendlyName": "bigqueryjob-dep-extract", + "datasetRef": { + "name": "bigqueryjobdepextract" }, - "name": "${PROJECT_ID?}-bigqueryjob-dep-extract" + "schema": "[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT240 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT240 index bb5902a..eab09fb 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT240 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT240 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765143568, + "timestamp": 1642973303106, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT240", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT240", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeNetwork", "metadata": { - "name": "computetargethttpproxy-dep" + "labels": { + "label-one": "value-one" + }, + "name": "computerouternat-dep-forlistofsubnets" }, "spec": { - "checkIntervalSec": 10, - "httpHealthCheck": { - "port": 80 - }, - "location": "global" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT241 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT241 index 8433cc5..33551c8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT241 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT241 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computetargethttpproxy.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouter.yaml" ], - "timestamp": 1628765143596, + "timestamp": 1642973303110, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computetargethttpproxy.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT241", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT241", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetHTTPProxy", + "kind": "ComputeRouter", "metadata": { - "name": "computetargethttpproxy-sample" + "name": "computerouternat-dep-forlistofsubnets" }, "spec": { - "description": "A sample proxy", - "urlMapRef": { - "name": "computetargethttpproxy-dep" - }, - "location": "global" + "description": "example router description", + "region": "us-west1", + "networkRef": { + "name": "computerouternat-dep-forlistofsubnets" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT242 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT242 index 1477510..d262ba4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT242 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT242 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouternat.yaml" ], - "timestamp": 1628765143635, + "timestamp": 1642973303113, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computerouternat.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT242", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouternat" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT242", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeURLMap", + "kind": "ComputeRouterNAT", "metadata": { - "name": "computetargethttpproxy-dep" + "name": "computerouternat-sample-forlistofsubnets" }, "spec": { - "defaultService": { - "backendServiceRef": { - "name": "computetargethttpproxy-dep" - } + "region": "us-west1", + "natIpAllocateOption": "AUTO_ONLY", + "routerRef": { + "name": "computerouternat-dep-forlistofsubnets" }, - "location": "global" + "sourceSubnetworkIpRangesToNat": "LIST_OF_SUBNETWORKS", + "subnetwork": [ + { + "subnetworkRef": { + "name": "computerouternat-dep-forlistofsubnets" + }, + "sourceIpRangesToNat": [ + "ALL_IP_RANGES" + ] + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT243 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT243 index 71916c9..3ff8d33 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT243 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT243 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765143656, + "timestamp": 1642973303117, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computerouternat/router-nat-for-list-of-subnets/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT243", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT243", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computetargethttpsproxy-dep" + "labels": { + "label-one": "value-one" + }, + "name": "computerouternat-dep-forlistofsubnets" }, "spec": { - "healthChecks": [ - { - "healthCheckRef": { - "name": "computetargethttpsproxy-dep" - } - } - ], - "location": "global" + "description": "My subnet", + "ipCidrRange": "10.1.0.0/16", + "region": "us-west1", + "networkRef": { + "name": "computerouternat-dep-forlistofsubnets" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT244 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT244 index bdf90d6..63b849d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT244 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT244 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computeaddress.yaml" ], - "timestamp": 1628765143683, + "timestamp": 1642973303120, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT244", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT244", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeAddress", "metadata": { - "name": "computetargethttpsproxy-dep" + "name": "computerouternat-dep-withmanualnatips" }, "spec": { - "checkIntervalSec": 10, - "httpHealthCheck": { - "port": 80 - }, - "location": "global" + "location": "us-west1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT245 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT245 index efd993c..1d8b49f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT245 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT245 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765143701, + "timestamp": 1642973303124, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT245", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT245", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSSLCertificate", + "kind": "ComputeNetwork", "metadata": { - "name": "computetargethttpsproxy-dep" + "labels": { + "label-one": "value-one" + }, + "name": "computerouternat-dep-withmanualnatips" }, "spec": { - "location": "global", - "certificate": { - "valueFrom": { - "secretKeyRef": { - "name": "computetargethttpsproxy-dep", - "key": "certificate" - } - } - }, - "privateKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computetargethttpsproxy-dep", - "key": "privateKey" - } - } - } + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT246 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT246 index 6090be5..0d7623a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT246 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT246 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouter.yaml" ], - "timestamp": 1628765143715, + "timestamp": 1642973303126, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT246", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT246", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSSLPolicy", + "kind": "ComputeRouter", "metadata": { - "name": "computetargethttpsproxy-dep" + "name": "computerouternat-dep-withmanualnatips" + }, + "spec": { + "description": "example router description", + "region": "us-west1", + "networkRef": { + "name": "computerouternat-dep-withmanualnatips" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT247 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT247 index abe0451..4599e72 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT247 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT247 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computetargethttpsproxy.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouternat.yaml" ], - "timestamp": 1628765143749, + "timestamp": 1642973303130, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,35 +15,35 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computetargethttpsproxy.yaml" + "/samples/resources/computerouternat/router-nat-with-manual-nat-ips/compute_v1beta1_computerouternat.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT247", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouternat" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT247", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetHTTPSProxy", + "kind": "ComputeRouterNAT", "metadata": { - "name": "computetargethttpsproxy-sample" + "name": "computerouternat-sample-withmanualnatips" }, "spec": { - "description": "A sample proxy", - "urlMapRef": { - "name": "computetargethttpsproxy-dep" + "region": "us-west1", + "routerRef": { + "name": "computerouternat-dep-withmanualnatips" }, - "sslCertificates": [ + "natIpAllocateOption": "MANUAL_ONLY", + "natIps": [ { - "name": "computetargethttpsproxy-dep" + "name": "computerouternat-dep-withmanualnatips" } ], - "sslPolicyRef": { - "name": "computetargethttpsproxy-dep" - }, - "quicOverride": "ENABLE", - "location": "global" + "sourceSubnetworkIpRangesToNat": "ALL_SUBNETWORKS_ALL_IP_RANGES" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT248 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT248 index 914a1b3..a9cdf0b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT248 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT248 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765143777, + "timestamp": 1642973303135, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT248", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT248", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeURLMap", + "kind": "ComputeNetwork", "metadata": { - "name": "computetargethttpsproxy-dep" + "labels": { + "label-one": "value-one" + }, + "name": "computerouterpeer-dep" }, "spec": { - "defaultService": { - "backendServiceRef": { - "name": "computetargethttpsproxy-dep" - } - }, - "location": "global" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT249 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT249 index 99184ce..0e63b58 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT249 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT249 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargethttpsproxy/secret.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouter.yaml" ], - "timestamp": 1628765143805, + "timestamp": 1642973303139, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargethttpsproxy/secret.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouter.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT249", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouter" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT249", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeRouter", "metadata": { - "name": "computetargethttpsproxy-dep" + "name": "computerouterpeer-dep" }, - "stringData": { - "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", - "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" + "spec": { + "networkRef": { + "name": "computerouterpeer-dep" + }, + "description": "example router description", + "region": "us-central1", + "bgp": { + "asn": 64514, + "advertiseMode": "CUSTOM", + "advertisedGroups": [ + "ALL_SUBNETS" + ], + "advertisedIpRanges": [ + { + "range": "1.2.3.4" + } + ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT25 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT25 index 787aee0..527670a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT25 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT25 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/storage_v1beta1_storagebucket.yaml" ], - "timestamp": 1628765138751, + "timestamp": 1642973301783, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/extract-bigquery-job/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT25", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT25", "collection": "kcctemplate", "json": { - "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryDataset", + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", "metadata": { - "name": "bigqueryjobdepload" - }, - "spec": { - "friendlyName": "bigqueryjob-dep-load" + "annotations": { + "cnrm.cloud.google.com/force-destroy": "true" + }, + "name": "${PROJECT_ID?}-bigqueryjob-dep-extract" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT250 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT250 index 4372837..fc5c358 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT250 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT250 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouterinterface.yaml" ], - "timestamp": 1628765143840, + "timestamp": 1642973303142, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computeinstance.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouterinterface.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT250", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouterinterface" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT250", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeRouterInterface", "metadata": { - "name": "computetargetinstance-dep" + "name": "computerouterpeer-dep" }, "spec": { - "machineType": "n1-standard-1", - "zone": "us-central1-a", - "bootDisk": { - "initializeParams": { - "sourceImageRef": { - "external": "debian-cloud/debian-9" - } - } + "routerRef": { + "name": "computerouterpeer-dep" }, - "networkInterface": [ - { - "networkRef": { - "name": "computetargetinstance-dep" - }, - "subnetworkRef": { - "name": "computetargetinstance-dep" - } - } - ] + "region": "us-central1", + "ipRange": "169.254.0.1/30" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT251 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT251 index 4010e3b..3c40be7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT251 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT251 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouterpeer.yaml" ], - "timestamp": 1628765143856, + "timestamp": 1642973303144, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computerouterpeer/compute_v1beta1_computerouterpeer.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT251", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computerouterpeer" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT251", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeRouterPeer", "metadata": { - "name": "computetargetinstance-dep" + "name": "computerouterpeer-sample" }, "spec": { - "autoCreateSubnetworks": false + "region": "us-central1", + "peerIpAddress": "169.254.0.2", + "peerAsn": 65513, + "ipAddress": { + "external": "169.254.0.1" + }, + "advertisedRoutePriority": 1, + "routerRef": { + "name": "computerouterpeer-dep" + }, + "routerInterfaceRef": { + "name": "computerouterpeer-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT252 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT252 index eb62f57..2faf94a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT252 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT252 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computesecuritypolicy/lockdown-security-policy-with-test/compute_v1beta1_computesecuritypolicy.yaml" ], - "timestamp": 1628765143875, + "timestamp": 1642973303148, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,56 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computesecuritypolicy/lockdown-security-policy-with-test/compute_v1beta1_computesecuritypolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT252", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesecuritypolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT252", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeSecurityPolicy", "metadata": { - "name": "computetargetinstance-dep" + "name": "computesecuritypolicy-sample-lockdownwithtest" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-central1", - "networkRef": { - "name": "computetargetinstance-dep" - } + "description": "A policy designed to completely lock down network access while testing the effect of opening ports over a few select ranges.", + "rule": [ + { + "action": "deny(403)", + "priority": 2147483647, + "match": { + "versionedExpr": "SRC_IPS_V1", + "config": { + "srcIpRanges": [ + "*" + ] + } + }, + "description": "Rule matching all IPs with priority 2147483647, set to deny." + }, + { + "action": "allow", + "preview": true, + "priority": 1000000000, + "match": { + "versionedExpr": "SRC_IPS_V1", + "config": { + "srcIpRanges": [ + "16.0.0.0/4", + "115.128.0.0/9", + "62.48.212.0/24" + ] + } + }, + "description": "Tests opening listed IP ranges. Logs sent to Stackdriver." + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT253 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT253 index 5007019..3376bf3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT253 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT253 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computetargetinstance.yaml" + "/samples/resources/computesecuritypolicy/multirule-security-policy/compute_v1beta1_computesecuritypolicy.yaml" ], - "timestamp": 1628765143896, + "timestamp": 1642973303151, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,82 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetinstance/compute_v1beta1_computetargetinstance.yaml" + "/samples/resources/computesecuritypolicy/multirule-security-policy/compute_v1beta1_computesecuritypolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT253", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesecuritypolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT253", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetInstance", + "kind": "ComputeSecurityPolicy", "metadata": { - "name": "computetargetinstance-sample" + "name": "computesecuritypolicy-sample-multirule" }, "spec": { - "description": "Target instance, containing a VM instance which will have no NAT applied to it and can be used for protocol forwarding.", - "zone": "us-central1-a", - "instanceRef": { - "name": "computetargetinstance-dep" - } + "description": "A generally permissive policy that locks out a large block of untrusted IPs, except for some allowed trusted IP ranges within them, and never allows IPs from a denylist.", + "rule": [ + { + "action": "allow", + "priority": 2147483647, + "match": { + "versionedExpr": "SRC_IPS_V1", + "config": { + "srcIpRanges": [ + "*" + ] + } + }, + "description": "This rule must be included in any rule array. Action can change." + }, + { + "action": "deny(502)", + "priority": 111111111, + "match": { + "versionedExpr": "SRC_IPS_V1", + "config": { + "srcIpRanges": [ + "60.0.0.0/6" + ] + } + }, + "description": "Untrusted range. Block IPs and return 502." + }, + { + "action": "allow", + "priority": 555, + "match": { + "versionedExpr": "SRC_IPS_V1", + "config": { + "srcIpRanges": [ + "63.0.0.0/8", + "61.128.0.0/10" + ] + } + }, + "description": "Even though they're in an untrusted block, these ranges are OK." + }, + { + "action": "deny(403)", + "priority": 0, + "match": { + "versionedExpr": "SRC_IPS_V1", + "config": { + "srcIpRanges": [ + "145.4.56.4/30", + "63.63.63.63/32", + "4.5.4.0/24" + ] + } + }, + "description": "Never allow these denylisted IP ranges." + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT254 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT254 index e5f5fa9..d0494f8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT254 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT254 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computehttphealthcheck.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765143921, + "timestamp": 1642973303155, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computehttphealthcheck.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT254", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT254", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHTTPHealthCheck", + "kind": "ComputeBackendService", "metadata": { - "name": "computetargetpool-dep" + "name": "computeserviceattachment-dep" + }, + "spec": { + "location": "us-west2", + "networkRef": { + "name": "computeserviceattachment-dep" + }, + "loadBalancingScheme": "INTERNAL" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT255 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT255 index 96e9357..d14180f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT255 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT255 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computeforwardingrule.yaml" ], - "timestamp": 1628765143957, + "timestamp": 1642973303158, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computeforwardingrule.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT255", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT255", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeForwardingRule", "metadata": { - "name": "computetargetpool-dep1" + "name": "computeserviceattachment-dep" }, "spec": { - "instanceTemplateRef": { - "name": "computetargetpool-dep" + "location": "us-west2", + "networkRef": { + "name": "computeserviceattachment-dep" }, - "zone": "us-central1-a" + "subnetworkRef": { + "name": "computeserviceattachment-dep3" + }, + "description": "A test forwarding rule with internal load balancing scheme", + "loadBalancingScheme": "INTERNAL", + "backendServiceRef": { + "name": "computeserviceattachment-dep" + }, + "networkTier": "PREMIUM", + "allPorts": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT256 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT256 index 97c1a8e..37c29a8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT256 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT256 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765143983, + "timestamp": 1642973303162, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT256", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT256", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeNetwork", "metadata": { - "name": "computetargetpool-dep2" + "name": "computeserviceattachment-dep" }, "spec": { - "instanceTemplateRef": { - "name": "computetargetpool-dep" - }, - "zone": "us-central1-b" + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT257 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT257 index 56d379f..68de5c6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT257 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT257 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_2.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computeserviceattachment.yaml" ], - "timestamp": 1628765144005, + "timestamp": 1642973303167, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,52 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_2.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computeserviceattachment.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT257", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeserviceattachment" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT257", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeServiceAttachment", "metadata": { - "name": "computetargetpool-dep3" + "name": "computeserviceattachment-sample" }, "spec": { - "instanceTemplateRef": { - "name": "computetargetpool-dep" + "projectRef": { + "external": "projects/${PROJECT_ID?}" }, - "zone": "us-central1-b" + "location": "us-west2", + "description": "A sample service attachment", + "targetServiceRef": { + "name": "computeserviceattachment-dep" + }, + "connectionPreference": "ACCEPT_MANUAL", + "natSubnets": [ + { + "name": "computeserviceattachment-dep1" + } + ], + "enableProxyProtocol": false, + "consumerRejectLists": [ + { + "name": "computeserviceattachment-dep1" + } + ], + "consumerAcceptLists": [ + { + "projectRef": { + "name": "computeserviceattachment-dep2" + }, + "connectionLimit": 2 + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT258 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT258 index 1bd1df1..ac101bf 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT258 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT258 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_3.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_0.yaml" ], - "timestamp": 1628765144026, + "timestamp": 1642973303170, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_3.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT258", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT258", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstance", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computetargetpool-dep4" + "name": "computeserviceattachment-dep1" }, "spec": { - "instanceTemplateRef": { - "name": "computetargetpool-dep" + "ipCidrRange": "10.2.0.0/16", + "networkRef": { + "name": "computeserviceattachment-dep" }, - "zone": "us-central1-f" + "purpose": "PRIVATE_SERVICE_CONNECT", + "region": "us-west2" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT259 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT259 index 25e6b04..81556ba 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT259 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT259 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_1.yaml" ], - "timestamp": 1628765144051, + "timestamp": 1642973303173, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computeinstancetemplate.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT259", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT259", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceTemplate", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computetargetpool-dep" + "name": "computeserviceattachment-dep2" }, "spec": { - "machineType": "n1-standard-1", - "disk": [ - { - "sourceImageRef": { - "external": "debian-cloud/debian-9" - }, - "boot": true - } - ], - "networkInterface": [ - { - "networkRef": { - "name": "computetargetpool-dep" - }, - "subnetworkRef": { - "name": "computetargetpool-dep" - } - } - ] + "ipCidrRange": "10.3.0.0/16", + "networkRef": { + "name": "computeserviceattachment-dep" + }, + "purpose": "PRIVATE_SERVICE_CONNECT", + "region": "us-west2" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT26 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT26 index 0eeaafe..669a2a2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT26 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT26 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" ], - "timestamp": 1628765138777, + "timestamp": 1642973301792, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,51 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT26", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT26", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryJob", + "kind": "BigQueryDataset", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "bigqueryjob-sample-load" + "name": "bigqueryjobdepload" }, "spec": { - "location": "US", - "jobTimeoutMs": "600000", - "load": { - "sourceUris": [ - "gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv" - ], - "destinationTable": { - "tableRef": { - "name": "bigqueryjobdepload" - } - }, - "sourceFormat": "CSV", - "encoding": "UTF-8", - "fieldDelimiter": ",", - "quote": "\"", - "allowQuotedNewlines": false, - "maxBadRecords": 0, - "allowJaggedRows": false, - "ignoreUnknownValues": false, - "skipLeadingRows": 1, - "autodetect": true, - "writeDisposition": "WRITE_APPEND", - "schemaUpdateOptions": [ - "ALLOW_FIELD_ADDITION", - "ALLOW_FIELD_RELAXATION" - ] - } + "friendlyName": "bigqueryjob-dep-load" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT260 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT260 index 9fe48a5..381936e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT260 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT260 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_2.yaml" ], - "timestamp": 1628765144070, + "timestamp": 1642973303176, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeserviceattachment/compute_v1beta1_computesubnetwork_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT260", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT260", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computetargetpool-dep" + "name": "computeserviceattachment-dep3" }, "spec": { - "autoCreateSubnetworks": false + "ipCidrRange": "10.4.0.0/16", + "networkRef": { + "name": "computeserviceattachment-dep" + }, + "purpose": "PRIVATE", + "region": "us-west2" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT261 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT261 index f6da16c..9197273 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT261 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT261 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeserviceattachment/resourcemanager_v1beta1_project_multiple_yaml_0.yaml" ], - "timestamp": 1628765144085, + "timestamp": 1642973303179, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computeserviceattachment/resourcemanager_v1beta1_project_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT261", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT261", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "computetargetpool-dep" + "name": "computeserviceattachment-dep1" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-central1", - "networkRef": { - "name": "computetargetpool-dep" + "name": "computeserviceattachment-dep1", + "organizationRef": { + "external": "${ORG_ID?}" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT262 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT262 index 03f1b07..e9d3a7d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT262 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT262 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_0.yaml" + "/samples/resources/computeserviceattachment/resourcemanager_v1beta1_project_multiple_yaml_1.yaml" ], - "timestamp": 1628765144131, + "timestamp": 1642973303182, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_0.yaml" + "/samples/resources/computeserviceattachment/resourcemanager_v1beta1_project_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT262", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT262", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetPool", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "computetargetpool-dep" + "name": "computeserviceattachment-dep2" }, "spec": { - "instances": [ - { - "name": "computetargetpool-dep3" - }, - { - "name": "computetargetpool-dep4" - } - ], - "region": "us-central1" + "name": "computeserviceattachment-dep2", + "organizationRef": { + "external": "${ORG_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT263 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT263 index 428dd05..5ec3ecc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT263 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT263 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_1.yaml" + "/samples/resources/computesharedvpchostproject/compute_v1beta1_computesharedvpchostproject.yaml" ], - "timestamp": 1628765144147, + "timestamp": 1642973303186, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,43 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_1.yaml" + "/samples/resources/computesharedvpchostproject/compute_v1beta1_computesharedvpchostproject.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT263", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesharedvpchostproject" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT263", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetPool", + "kind": "ComputeSharedVPCHostProject", "metadata": { - "name": "computetargetpool-sample" - }, - "spec": { - "backupTargetPoolRef": { - "name": "computetargetpool-dep" + "annotations": { + "cnrm.cloud.google.com/project-id": "${HOST_PROJECT_ID?}" }, - "description": "A pool of compute instances to use as a backend to a load balancer, with health check and backup pool. A hash of requester's IP is used to determine session affinity to instances.", - "failoverRatio": 0.5, - "healthChecks": [ - { - "httpHealthCheckRef": { - "name": "computetargetpool-dep" - } - } - ], - "instances": [ - { - "name": "computetargetpool-dep1" - }, - { - "name": "computetargetpool-dep2" - } - ], - "region": "us-central1", - "sessionAffinity": "CLIENT_IP" + "name": "computesharedvpchostproject-sample" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT264 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT264 index cc98cc9..0d3d7cd 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT264 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT264 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpchostproject.yaml" ], - "timestamp": 1628765144171, + "timestamp": 1642973303191, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpchostproject.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT264", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesharedvpchostproject" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT264", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeSharedVPCHostProject", "metadata": { - "name": "computetargetsslproxy-dep" - }, - "spec": { - "healthChecks": [ - { - "healthCheckRef": { - "name": "computetargetsslproxy-dep" - } - } - ], - "location": "global", - "protocol": "SSL" + "annotations": { + "cnrm.cloud.google.com/project-id": "${HOST_PROJECT_ID?}" + }, + "name": "computesharedvpchostproject-sample" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT265 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT265 index 5bc9945..2d6929b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT265 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT265 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpcserviceproject.yaml" ], - "timestamp": 1628765144183, + "timestamp": 1642973303195, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computesharedvpcserviceproject/compute_v1beta1_computesharedvpcserviceproject.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT265", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesharedvpcserviceproject" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT265", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeSharedVPCServiceProject", "metadata": { - "name": "computetargetsslproxy-dep" + "annotations": { + "cnrm.cloud.google.com/project-id": "${HOST_PROJECT_ID?}" + }, + "name": "computesharedvpcserviceproject-sample" }, "spec": { - "checkIntervalSec": 10, - "httpHealthCheck": { - "port": 80 - }, - "location": "global" + "projectRef": { + "name": "sharedvpc-service-project-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT266 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT266 index 71516c4..a61cfbd 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT266 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT266 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computesharedvpcserviceproject/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765144214, + "timestamp": 1642973303198, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslcertificate.yaml" + "/samples/resources/computesharedvpcserviceproject/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT266", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT266", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSSLCertificate", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "computetargetsslproxy-dep" + "annotations": { + "cnrm.cloud.google.com/folder-id": "${FOLDER_ID?}" + }, + "labels": { + "label-one": "value-one" + }, + "name": "sharedvpc-service-project-dep" }, "spec": { - "location": "global", - "certificate": { - "valueFrom": { - "secretKeyRef": { - "name": "computetargetsslproxy-dep", - "key": "certificate" - } - } - }, - "privateKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computetargetsslproxy-dep", - "key": "privateKey" - } - } + "name": "Config Connector Sample", + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT267 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT267 index 0a51574..d8aec34 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT267 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT267 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computesnapshot/compute_v1beta1_computedisk.yaml" ], - "timestamp": 1628765144239, + "timestamp": 1642973303202, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,35 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslpolicy.yaml" + "/samples/resources/computesnapshot/compute_v1beta1_computedisk.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT267", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computedisk" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT267", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSSLPolicy", + "kind": "ComputeDisk", "metadata": { - "name": "computetargetsslproxy-dep" + "name": "computesnapshot-dep" + }, + "spec": { + "location": "us-west1-c", + "diskEncryptionKey": { + "rawKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computesnapshot-dep", + "key": "sourceDiskEncryptionKey" + } + } + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT268 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT268 index 0b9760b..65ed0fa 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT268 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT268 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computetargetsslproxy.yaml" + "/samples/resources/computesnapshot/compute_v1beta1_computesnapshot.yaml" ], - "timestamp": 1628765144257, + "timestamp": 1642973303206, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,51 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/compute_v1beta1_computetargetsslproxy.yaml" + "/samples/resources/computesnapshot/compute_v1beta1_computesnapshot.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT268", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesnapshot" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT268", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetSSLProxy", + "kind": "ComputeSnapshot", "metadata": { - "name": "computetargetsslproxy-sample" + "name": "computesnapshot-sample", + "labels": { + "label-one": "value-one" + } }, "spec": { - "description": "A sample SSL proxy configured with a default SSL policy.", - "backendServiceRef": { - "name": "computetargetsslproxy-dep" + "description": "ComputeSnapshot Sample", + "zone": "us-west1-c", + "sourceDiskRef": { + "name": "computesnapshot-dep" + }, + "snapshotEncryptionKey": { + "rawKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computesnapshot-dep", + "key": "snapshotEncryptionKey" + } + } + } }, - "sslCertificates": [ - { - "name": "computetargetsslproxy-dep" + "sourceDiskEncryptionKey": { + "rawKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computesnapshot-dep", + "key": "sourceDiskEncryptionKey" + } + } } - ], - "sslPolicyRef": { - "name": "computetargetsslproxy-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT269 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT269 index f00c928..57a3882 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT269 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT269 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetsslproxy/secret.yaml" + "/samples/resources/computesnapshot/secret.yaml" ], - "timestamp": 1628765144286, + "timestamp": 1642973303212, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetsslproxy/secret.yaml" + "/samples/resources/computesnapshot/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT269", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT269", "collection": "kcctemplate", @@ -27,11 +30,11 @@ "apiVersion": "v1", "kind": "Secret", "metadata": { - "name": "computetargetsslproxy-dep" + "name": "computesnapshot-dep" }, "stringData": { - "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", - "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" + "snapshotEncryptionKey": "a2NjIGlzIGF3ZXNvbWUgeW91IHNob3VsZCB0cnkgaXQ=", + "sourceDiskEncryptionKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT27 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT27 index 498ea3a..c9a8379 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT27 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT27 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], - "timestamp": 1628765138796, + "timestamp": 1642973301797, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,53 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT27", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigqueryjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT27", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryTable", + "kind": "BigQueryJob", "metadata": { - "name": "bigqueryjobdepload" + "labels": { + "label-one": "value-one" + }, + "name": "bigqueryjob-sample-load" }, "spec": { - "friendlyName": "bigqueryjob-dep-load", - "datasetRef": { - "name": "bigqueryjobdepload" + "location": "US", + "jobTimeoutMs": "600000", + "load": { + "sourceUris": [ + "gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv" + ], + "destinationTable": { + "tableRef": { + "name": "bigqueryjobdepload" + } + }, + "sourceFormat": "CSV", + "encoding": "UTF-8", + "fieldDelimiter": ",", + "quote": "\"", + "allowQuotedNewlines": false, + "maxBadRecords": 0, + "allowJaggedRows": false, + "ignoreUnknownValues": false, + "skipLeadingRows": 1, + "autodetect": true, + "writeDisposition": "WRITE_APPEND", + "schemaUpdateOptions": [ + "ALLOW_FIELD_ADDITION", + "ALLOW_FIELD_RELAXATION" + ] } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT270 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT270 index 7810946..139837b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT270 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT270 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computesslcertificate/global-compute-ssl-certificate/compute_v1beta1_computesslcertificate.yaml" ], - "timestamp": 1628765144306, + "timestamp": 1642973303216, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,42 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computesslcertificate/global-compute-ssl-certificate/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT270", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT270", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeSSLCertificate", "metadata": { - "name": "computetargettcpproxy-dep" + "name": "computesslcertificate-sample" }, "spec": { - "healthChecks": [ - { - "healthCheckRef": { - "name": "computetargettcpproxy-dep" + "location": "global", + "description": "example compute SSL certificate", + "certificate": { + "valueFrom": { + "secretKeyRef": { + "name": "computesslcertificate-dep", + "key": "certificate" } } - ], - "location": "global", - "protocol": "TCP" + }, + "privateKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computesslcertificate-dep", + "key": "privateKey" + } + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT271 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT271 index 42bf5c4..928118b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT271 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT271 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computesslcertificate/global-compute-ssl-certificate/secret.yaml" ], - "timestamp": 1628765144341, + "timestamp": 1642973303223, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computesslcertificate/global-compute-ssl-certificate/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT271", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT271", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "name": "computetargettcpproxy-dep" + "name": "computesslcertificate-dep" }, - "spec": { - "checkIntervalSec": 10, - "tcpHealthCheck": { - "port": 443 - }, - "location": "global" + "stringData": { + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT272 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT272 index 58643d1..ad1b5a1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT272 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT272 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computetargettcpproxy.yaml" + "/samples/resources/computesslcertificate/regional-compute-ssl-certificate/compute_v1beta1_computesslcertificate.yaml" ], - "timestamp": 1628765144375, + "timestamp": 1642973303227, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargettcpproxy/compute_v1beta1_computetargettcpproxy.yaml" + "/samples/resources/computesslcertificate/regional-compute-ssl-certificate/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT272", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT272", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetTCPProxy", + "kind": "ComputeSSLCertificate", "metadata": { - "name": "computetargettcpproxy-sample" + "name": "computesslcertificate-sample" }, "spec": { - "description": "A sample TCP proxy.", - "backendServiceRef": { - "name": "computetargettcpproxy-dep" + "location": "us-central1", + "description": "example compute SSL certificate", + "certificate": { + "valueFrom": { + "secretKeyRef": { + "name": "computesslcertificate-dep", + "key": "certificate" + } + } + }, + "privateKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computesslcertificate-dep", + "key": "privateKey" + } + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT273 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT273 index e7e05bb..5d0d758 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT273 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT273 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetvpngateway/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computesslcertificate/regional-compute-ssl-certificate/secret.yaml" ], - "timestamp": 1628765144399, + "timestamp": 1642973303231, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetvpngateway/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computesslcertificate/regional-compute-ssl-certificate/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT273", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT273", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "name": "computetargetvpngateway-dep" + "name": "computesslcertificate-dep" }, - "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "stringData": { + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT274 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT274 index 34a45cf..033c983 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT274 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT274 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computetargetvpngateway/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computesslpolicy/custom-tls-1-0-ssl-policy/compute_v1beta1_computesslpolicy.yaml" ], - "timestamp": 1628765144422, + "timestamp": 1642973303234, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computetargetvpngateway/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computesslpolicy/custom-tls-1-0-ssl-policy/compute_v1beta1_computesslpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT274", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT274", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetVPNGateway", + "kind": "ComputeSSLPolicy", "metadata": { - "name": "computetargetvpngateway-sample" + "name": "computesslpolicy-sample-customtls10" }, "spec": { - "description": "a test target vpn gateway", - "region": "us-central1", - "networkRef": { - "name": "computetargetvpngateway-dep" - } + "description": "An SSL Policy with a CUSTOM encryption profile, supporting a custom set of ciphers for TLS 1.0 and up.", + "profile": "CUSTOM", + "customFeatures": [ + "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", + "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", + "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", + "TLS_RSA_WITH_AES_256_GCM_SHA384", + "TLS_RSA_WITH_AES_256_CBC_SHA" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT275 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT275 index 9de3e66..38483ff 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT275 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT275 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/computesslpolicy/modern-tls-1-1-ssl-policy/compute_v1beta1_computesslpolicy.yaml" ], - "timestamp": 1628765144444, + "timestamp": 1642973303237, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/computesslpolicy/modern-tls-1-1-ssl-policy/compute_v1beta1_computesslpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT275", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT275", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendBucket", + "kind": "ComputeSSLPolicy", "metadata": { - "name": "computeurlmap-dep" + "name": "computesslpolicy-sample-moderntls11" }, "spec": { - "bucketRef": { - "name": "${PROJECT_ID?}-computeurl-dep" - } + "description": "An SSL Policy with a MODERN encryption profile, supporting several modern methods of encryption for TLS 1.1 and up.", + "minTlsVersion": "TLS_1_1", + "profile": "MODERN" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT276 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT276 index a9f42b9..8ae4a7b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT276 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT276 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_0.yaml" + "/samples/resources/computesubnetwork/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765144484, + "timestamp": 1642973303243, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_0.yaml" + "/samples/resources/computesubnetwork/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT276", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT276", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeNetwork", "metadata": { - "name": "computeurlmap-dep1" + "name": "computesubnetwork-dep" }, "spec": { - "healthChecks": [ - { - "healthCheckRef": { - "name": "computeurlmap-dep" - } - } - ], - "location": "global" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT277 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT277 index 4177781..b207de5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT277 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT277 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_1.yaml" + "/samples/resources/computesubnetwork/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765144502, + "timestamp": 1642973303246, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_1.yaml" + "/samples/resources/computesubnetwork/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT277", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT277", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computeurlmap-dep2" + "labels": { + "label-one": "value-one" + }, + "name": "computesubnetwork-sample" }, "spec": { - "healthChecks": [ - { - "healthCheckRef": { - "name": "computeurlmap-dep" - } - } - ], - "location": "global" + "ipCidrRange": "10.2.0.0/16", + "region": "us-central1", + "description": "My subnet", + "privateIpGoogleAccess": false, + "networkRef": { + "name": "computesubnetwork-dep" + }, + "logConfig": { + "aggregationInterval": "INTERVAL_10_MIN", + "flowSampling": 0.5, + "metadata": "INCLUDE_ALL_METADATA" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT278 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT278 index 26b1667..3e90df0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT278 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT278 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_2.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765144522, + "timestamp": 1642973303250, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_2.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT278", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT278", "collection": "kcctemplate", @@ -27,17 +30,12 @@ "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", "kind": "ComputeBackendService", "metadata": { - "name": "computeurlmap-dep3" + "name": "computetargetgrpcproxy-dep" }, "spec": { - "healthChecks": [ - { - "healthCheckRef": { - "name": "computeurlmap-dep" - } - } - ], - "location": "global" + "location": "global", + "loadBalancingScheme": "INTERNAL_SELF_MANAGED", + "protocol": "GRPC" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT279 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT279 index 56eabc8..376fa3d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT279 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT279 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computetargetgrpcproxy.yaml" ], - "timestamp": 1628765144541, + "timestamp": 1642973303254, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computetargetgrpcproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT279", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetgrpcproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT279", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeTargetGRPCProxy", "metadata": { - "name": "computeurlmap-dep" + "name": "computetargetgrpcproxy-sample" }, "spec": { - "checkIntervalSec": 10, - "httpHealthCheck": { - "port": 80 + "description": "A target gRPC proxy intended for load balancing gRPC traffic, referenced by global forwarding rules. References a URL map which specifies how traffic routes to gRPC backend services.", + "urlMapRef": { + "name": "computetargetgrpcproxy-dep" }, - "location": "global" + "validateForProxyless": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT28 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT28 index 7c41c2a..dc52c6c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT28 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT28 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], - "timestamp": 1628765138838, + "timestamp": 1642973301801, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" + "/samples/resources/bigqueryjob/load-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT28", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT28", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryDataset", + "kind": "BigQueryTable", "metadata": { - "name": "bigqueryjobdep1query" + "name": "bigqueryjobdepload" }, "spec": { - "description": "Default Source BigQueryDataset", - "friendlyName": "bigqueryjob-dep1-query" + "friendlyName": "bigqueryjob-dep-load", + "datasetRef": { + "name": "bigqueryjobdepload" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT280 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT280 index 308df8b..8798830 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT280 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT280 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computeurlmap.yaml" ], - "timestamp": 1628765144566, + "timestamp": 1642973303258, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computetargetgrpcproxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT280", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT280", "collection": "kcctemplate", @@ -27,55 +30,15 @@ "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", "kind": "ComputeURLMap", "metadata": { - "name": "computeurlmap-sample" + "name": "computetargetgrpcproxy-dep" }, "spec": { "location": "global", "defaultService": { "backendServiceRef": { - "name": "computeurlmap-dep1" + "name": "computetargetgrpcproxy-dep" } - }, - "pathMatcher": [ - { - "name": "allpaths", - "defaultService": { - "backendServiceRef": { - "name": "computeurlmap-dep2" - } - }, - "pathRule": [ - { - "paths": [ - "/home" - ], - "service": { - "backendServiceRef": { - "name": "computeurlmap-dep3" - } - } - }, - { - "paths": [ - "/foo" - ], - "service": { - "backendBucketRef": { - "name": "computeurlmap-dep" - } - } - } - ] - } - ], - "hostRule": [ - { - "hosts": [ - "example.com" - ], - "pathMatcher": "allpaths" - } - ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT281 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT281 index f3f23af..c8929a3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT281 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT281 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765144586, + "timestamp": 1642973303265, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/global-compute-url-map/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT281", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT281", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", "metadata": { - "name": "${PROJECT_ID?}-computeurl-dep" + "name": "computetargethttpproxy-dep" + }, + "spec": { + "healthChecks": [ + { + "healthCheckRef": { + "name": "computetargethttpproxy-dep" + } + } + ], + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT282 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT282 index de07253..ec758f9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT282 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT282 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765144630, + "timestamp": 1642973303269, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT282", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT282", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computeurlmap-dep" + "name": "computetargethttpproxy-dep" }, "spec": { - "location": "us-central1", - "healthChecks": [ - { - "healthCheckRef": { - "name": "computeurlmap-dep" - } - } - ], - "protocol": "HTTP", - "timeoutSec": 10, - "loadBalancingScheme": "INTERNAL_MANAGED" + "checkIntervalSec": 10, + "httpHealthCheck": { + "port": 80 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT283 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT283 index 5b72da2..5dcc02a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT283 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT283 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computetargethttpproxy.yaml" ], - "timestamp": 1628765144660, + "timestamp": 1642973303273, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computetargethttpproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT283", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargethttpproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT283", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "kind": "ComputeTargetHTTPProxy", "metadata": { - "name": "computeurlmap-dep" + "name": "computetargethttpproxy-sample" }, "spec": { - "checkIntervalSec": 10, - "httpHealthCheck": { - "port": 80 + "description": "A sample proxy", + "urlMapRef": { + "name": "computetargethttpproxy-dep" }, - "location": "us-central1" + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT284 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT284 index 503efb0..355b115 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT284 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT284 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computeurlmap.yaml" ], - "timestamp": 1628765144722, + "timestamp": 1642973303276, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computeurlmap.yaml" + "/samples/resources/computetargethttpproxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT284", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT284", "collection": "kcctemplate", @@ -27,137 +30,15 @@ "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", "kind": "ComputeURLMap", "metadata": { - "name": "computeurlmap-sample" + "name": "computetargethttpproxy-dep" }, "spec": { - "description": "Regional ComputeURLMap L7 Ilb Path", - "location": "us-central1", "defaultService": { "backendServiceRef": { - "name": "computeurlmap-dep" + "name": "computetargethttpproxy-dep" } }, - "hostRule": [ - { - "hosts": [ - "mysite.com" - ], - "pathMatcher": "allpaths" - } - ], - "pathMatcher": [ - { - "name": "allpaths", - "defaultService": { - "backendServiceRef": { - "name": "computeurlmap-dep" - } - }, - "pathRule": [ - { - "paths": [ - "/home" - ], - "routeAction": { - "corsPolicy": { - "allowCredentials": true, - "allowHeaders": [ - "Allowed content" - ], - "allowMethods": [ - "GET" - ], - "allowOrigins": [ - "Allowed origin" - ], - "exposeHeaders": [ - "Exposed header" - ], - "maxAge": 30, - "disabled": false - }, - "faultInjectionPolicy": { - "abort": { - "httpStatus": 234, - "percentage": 5.6 - }, - "delay": { - "fixedDelay": { - "seconds": "0", - "nanos": 50000 - }, - "percentage": 7.8 - } - }, - "requestMirrorPolicy": { - "backendServiceRef": { - "name": "computeurlmap-dep" - } - }, - "retryPolicy": { - "numRetries": 4, - "retryTimeout": { - "seconds": "30" - }, - "retryConditions": [ - "5xx", - "deadline-exceeded" - ] - }, - "timeout": { - "seconds": "20", - "nanos": 750000000 - }, - "urlRewrite": { - "hostRewrite": "A replacement header", - "pathPrefixRewrite": "A replacement path" - }, - "weightedBackendServices": [ - { - "backendServiceRef": { - "name": "computeurlmap-dep" - }, - "weight": 400, - "headerAction": { - "requestHeadersToRemove": [ - "RemoveMe" - ], - "requestHeadersToAdd": [ - { - "headerName": "AddMe", - "headerValue": "MyValue", - "replace": true - } - ], - "responseHeadersToRemove": [ - "RemoveMe" - ], - "responseHeadersToAdd": [ - { - "headerName": "AddMe", - "headerValue": "MyValue", - "replace": false - } - ] - } - } - ] - } - } - ] - } - ], - "test": [ - { - "service": { - "backendServiceRef": { - "name": "computeurlmap-dep" - } - }, - "host": "hi.com", - "path": "/home" - } - ] + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT285 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT285 index ada691f..79e15f1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT285 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT285 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpngateway/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765144753, + "timestamp": 1642973303280, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpngateway/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT285", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT285", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeBackendService", "metadata": { - "name": "computevpngateway-dep" + "name": "computetargethttpsproxy-dep" }, "spec": { - "autoCreateSubnetworks": false + "healthChecks": [ + { + "healthCheckRef": { + "name": "computetargethttpsproxy-dep" + } + } + ], + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT286 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT286 index 38c53f3..579c20c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT286 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT286 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpngateway/compute_v1beta1_computevpngateway.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765144783, + "timestamp": 1642973303283, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpngateway/compute_v1beta1_computevpngateway.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT286", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT286", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeVPNGateway", + "kind": "ComputeHealthCheck", "metadata": { - "name": "computevpngateway-sample" + "name": "computetargethttpsproxy-dep" }, "spec": { - "description": "Compute VPN Gateway Sample", - "region": "us-central1", - "networkRef": { - "name": "computevpngateway-dep" - } + "checkIntervalSec": 10, + "httpHealthCheck": { + "port": 80 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT287 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT287 index dc46d1a..7988fe1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT287 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT287 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslcertificate.yaml" ], - "timestamp": 1628765144803, + "timestamp": 1642973303287, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeaddress.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT287", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT287", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeAddress", + "kind": "ComputeSSLCertificate", "metadata": { - "name": "computevpntunnel-dep", - "labels": { - "label-one": "value-one" - } + "name": "computetargethttpsproxy-dep" }, "spec": { - "location": "us-central1", - "description": "a test regional address" + "location": "global", + "certificate": { + "valueFrom": { + "secretKeyRef": { + "name": "computetargethttpsproxy-dep", + "key": "certificate" + } + } + }, + "privateKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computetargethttpsproxy-dep", + "key": "privateKey" + } + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT288 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT288 index aa2d61c..4a76fb6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT288 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT288 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslpolicy.yaml" ], - "timestamp": 1628765144855, + "timestamp": 1642973303291, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computesslpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT288", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT288", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeSSLPolicy", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computevpntunnel-dep1" - }, - "spec": { - "description": "A regional forwarding rule", - "ipAddress": { - "addressRef": { - "name": "computevpntunnel-dep" - } - }, - "ipProtocol": "ESP", - "location": "us-central1", - "target": { - "targetVPNGatewayRef": { - "name": "computevpntunnel-dep" - } - } + "name": "computetargethttpsproxy-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT289 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT289 index ae7b51d..31b0ffc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT289 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT289 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computetargethttpsproxy.yaml" ], - "timestamp": 1628765144877, + "timestamp": 1642973303295, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computetargethttpsproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT289", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargethttpsproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT289", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeTargetHTTPSProxy", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computevpntunnel-dep2" + "name": "computetargethttpsproxy-sample" }, "spec": { - "description": "A regional forwarding rule", - "ipAddress": { - "addressRef": { - "name": "computevpntunnel-dep" - } + "description": "A sample proxy", + "urlMapRef": { + "name": "computetargethttpsproxy-dep" }, - "ipProtocol": "UDP", - "location": "us-central1", - "portRange": "500", - "target": { - "targetVPNGatewayRef": { - "name": "computevpntunnel-dep" + "sslCertificates": [ + { + "name": "computetargethttpsproxy-dep" } - } + ], + "sslPolicyRef": { + "name": "computetargethttpsproxy-dep" + }, + "quicOverride": "ENABLE", + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT29 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT29 index b9d4dfb..8686869 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT29 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT29 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" ], - "timestamp": 1628765138850, + "timestamp": 1642973301809, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT29", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT29", "collection": "kcctemplate", @@ -27,11 +30,11 @@ "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", "kind": "BigQueryDataset", "metadata": { - "name": "bigqueryjobdep2query" + "name": "bigqueryjobdep1query" }, "spec": { - "description": "Destination BigQueryDataset", - "friendlyName": "bigqueryjob-dep2-query" + "description": "Default Source BigQueryDataset", + "friendlyName": "bigqueryjob-dep1-query" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT290 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT290 index 66d369e..4611601 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT290 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT290 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computeurlmap.yaml" ], - "timestamp": 1628765144905, + "timestamp": 1642973303298, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" + "/samples/resources/computetargethttpsproxy/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT290", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT290", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeForwardingRule", + "kind": "ComputeURLMap", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computevpntunnel-dep3" + "name": "computetargethttpsproxy-dep" }, "spec": { - "description": "A regional forwarding rule", - "ipAddress": { - "addressRef": { - "name": "computevpntunnel-dep" + "defaultService": { + "backendServiceRef": { + "name": "computetargethttpsproxy-dep" } }, - "ipProtocol": "UDP", - "location": "us-central1", - "portRange": "4500", - "target": { - "targetVPNGatewayRef": { - "name": "computevpntunnel-dep" - } - } + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT291 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT291 index 9072940..528eb55 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT291 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT291 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargethttpsproxy/secret.yaml" ], - "timestamp": 1628765144922, + "timestamp": 1642973303302, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargethttpsproxy/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT291", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT291", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "name": "computevpntunnel-dep" + "name": "computetargethttpsproxy-dep" }, - "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "stringData": { + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT292 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT292 index ef74051..6bfe58f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT292 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT292 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computeinstance.yaml" ], - "timestamp": 1628765144946, + "timestamp": 1642973303306, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computetargetvpngateway.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computeinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT292", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT292", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeTargetVPNGateway", + "kind": "ComputeInstance", "metadata": { - "name": "computevpntunnel-dep" + "name": "computetargetinstance-dep" }, "spec": { - "description": "a test target vpn gateway", - "region": "us-central1", - "networkRef": { - "name": "computevpntunnel-dep" - } + "machineType": "n1-standard-1", + "zone": "us-central1-a", + "bootDisk": { + "initializeParams": { + "sourceImageRef": { + "external": "debian-cloud/debian-9" + } + } + }, + "networkInterface": [ + { + "networkRef": { + "name": "computetargetinstance-dep" + }, + "subnetworkRef": { + "name": "computetargetinstance-dep" + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT293 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT293 index fafa834..6496813 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT293 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT293 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computevpntunnel.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765144976, + "timestamp": 1642973303309, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/compute_v1beta1_computevpntunnel.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT293", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT293", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeVPNTunnel", + "kind": "ComputeNetwork", "metadata": { - "name": "computevpntunnel-sample", - "labels": { - "foo": "bar" - } + "name": "computetargetinstance-dep" }, "spec": { - "peerIp": "15.0.0.120", - "region": "us-central1", - "sharedSecret": { - "valueFrom": { - "secretKeyRef": { - "name": "computevpntunnel-dep", - "key": "sharedSecret" - } - } - }, - "targetVPNGatewayRef": { - "name": "computevpntunnel-dep" - }, - "localTrafficSelector": [ - "192.168.0.0/16" - ] + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT294 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT294 index dd5fea8..6fd3677 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT294 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT294 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computevpntunnel/secret.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765144998, + "timestamp": 1642973303314, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computevpntunnel/secret.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT294", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT294", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computevpntunnel-dep" + "name": "computetargetinstance-dep" }, - "stringData": { - "sharedSecret": "a secret message" + "spec": { + "ipCidrRange": "10.2.0.0/16", + "region": "us-central1", + "networkRef": { + "name": "computetargetinstance-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT295 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT295 index f142d22..fe6c95d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT295 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT295 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/containeranalysisnote/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computetargetinstance.yaml" ], - "timestamp": 1628765145026, + "timestamp": 1642973303322, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containeranalysisnote/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/computetargetinstance/compute_v1beta1_computetargetinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT295", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT295", "collection": "kcctemplate", "json": { - "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerAnalysisNote", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeTargetInstance", "metadata": { - "name": "containeranalysisnote-sample" + "name": "computetargetinstance-sample" }, "spec": { - "shortDescription": "short description", - "longDescription": "long description", - "relatedUrl": [ - { - "url": "some.url", - "label": "test" - }, - { - "url": "google.com", - "label": "google" - } - ], - "attestation": { - "hint": { - "humanReadableName": "Attestor Note" - } + "description": "Target instance, containing a VM instance which will have no NAT applied to it and can be used for protocol forwarding.", + "zone": "us-central1-a", + "instanceRef": { + "name": "computetargetinstance-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT296 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT296 index abe5ac3..1b4c372 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT296 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT296 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/containercluster/routes-based-container-cluster/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computehttphealthcheck.yaml" ], - "timestamp": 1628765145050, + "timestamp": 1642973303327, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,55 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/routes-based-container-cluster/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computehttphealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT296", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehttphealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT296", "collection": "kcctemplate", "json": { - "apiVersion": "container.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerCluster", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeHTTPHealthCheck", "metadata": { - "labels": { - "availability": "dev", - "target-audience": "development" - }, - "name": "containercluster-sample-routesbased" - }, - "spec": { - "description": "A routes-based cluster confined to one zone configured for development.", - "location": "us-central1-a", - "initialNodeCount": 1, - "clusterTelemetry": { - "type": "SYSTEM_ONLY" - }, - "networkingMode": "ROUTES", - "clusterIpv4Cidr": "10.96.0.0/14", - "masterAuthorizedNetworksConfig": { - "cidrBlocks": [ - { - "displayName": "Trusted external network", - "cidrBlock": "10.2.0.0/16" - } - ] - }, - "addonsConfig": { - "gcePersistentDiskCsiDriverConfig": { - "enabled": true - }, - "kalmConfig": { - "enabled": true - }, - "horizontalPodAutoscaling": { - "disabled": true - }, - "httpLoadBalancing": { - "disabled": true - } - } + "name": "computetargetpool-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT297 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT297 index f3d9761..04c38b9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT297 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT297 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" ], - "timestamp": 1628765145072, + "timestamp": 1642973303329, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT297", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT297", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeInstance", "metadata": { - "name": "containercluster-dep-vpcnative" + "name": "computetargetpool-dep1" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "instanceTemplateRef": { + "name": "computetargetpool-dep" + }, + "zone": "us-central1-a" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT298 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT298 index c6f1c1b..5a20334 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT298 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT298 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" ], - "timestamp": 1628765145094, + "timestamp": 1642973303335, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT298", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT298", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "kind": "ComputeInstance", "metadata": { - "name": "containercluster-dep-vpcnative" + "name": "computetargetpool-dep2" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-central1", - "networkRef": { - "name": "containercluster-dep-vpcnative" + "instanceTemplateRef": { + "name": "computetargetpool-dep" }, - "secondaryIpRange": [ - { - "rangeName": "servicesrange", - "ipCidrRange": "10.3.0.0/16" - }, - { - "rangeName": "clusterrange", - "ipCidrRange": "10.4.0.0/16" - } - ] + "zone": "us-central1-b" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT299 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT299 index 700afce..80dbefe 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT299 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT299 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_2.yaml" ], - "timestamp": 1628765145138, + "timestamp": 1642973303339, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,104 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT299", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT299", "collection": "kcctemplate", "json": { - "apiVersion": "container.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerCluster", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeInstance", "metadata": { - "labels": { - "availability": "high", - "target-audience": "production" - }, - "name": "containercluster-sample-vpcnative" + "name": "computetargetpool-dep3" }, "spec": { - "description": "A large regional VPC-native cluster set up with special networking considerations.", - "location": "us-central1", - "initialNodeCount": 1, - "defaultMaxPodsPerNode": 16, - "nodeLocations": [ - "us-central1-a", - "us-central1-b", - "us-central1-c", - "us-central1-f" - ], - "workloadIdentityConfig": { - "identityNamespace": "${PROJECT_ID?}.svc.id.goog" - }, - "networkingMode": "VPC_NATIVE", - "networkRef": { - "name": "containercluster-dep-vpcnative" - }, - "subnetworkRef": { - "name": "containercluster-dep-vpcnative" - }, - "ipAllocationPolicy": { - "servicesSecondaryRangeName": "servicesrange", - "clusterSecondaryRangeName": "clusterrange" - }, - "clusterAutoscaling": { - "enabled": true, - "autoscalingProfile": "BALANCED", - "resourceLimits": [ - { - "resourceType": "cpu", - "maximum": 100, - "minimum": 10 - }, - { - "resourceType": "memory", - "maximum": 1000, - "minimum": 100 - } - ] - }, - "maintenancePolicy": { - "dailyMaintenanceWindow": { - "startTime": "00:00" - } - }, - "releaseChannel": { - "channel": "STABLE" - }, - "notificationConfig": { - "pubsub": { - "enabled": true, - "topicRef": { - "name": "containercluster-dep-vpcnative" - } - } - }, - "enableBinaryAuthorization": true, - "enableIntranodeVisibility": true, - "enableShieldedNodes": true, - "addonsConfig": { - "networkPolicyConfig": { - "disabled": false - }, - "dnsCacheConfig": { - "enabled": true - }, - "configConnectorConfig": { - "enabled": true - } - }, - "networkPolicy": { - "enabled": true - }, - "podSecurityPolicyConfig": { - "enabled": true + "instanceTemplateRef": { + "name": "computetargetpool-dep" }, - "verticalPodAutoscaling": { - "enabled": true - } + "zone": "us-central1-b" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT3 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT3 index cd7896d..ea4bf12 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT3 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT3 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/accesscontextmanageraccesspolicy/accesscontextmanager_v1beta1_accesscontextmanageraccesspolicy.yaml" ], - "timestamp": 1628765138207, + "timestamp": 1642973301647, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT3", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesspolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT3", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT30 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT30 index d17f689..8c81788 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT30 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT30 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" ], - "timestamp": 1628765138886, + "timestamp": 1642973301814, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,53 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerydataset_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT30", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT30", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryJob", + "kind": "BigQueryDataset", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "bigqueryjob-sample-query" + "name": "bigqueryjobdep2query" }, "spec": { - "location": "US", - "jobTimeoutMs": "600000", - "query": { - "query": "SELECT state FROM [lookerdata:cdc.project_tycho_reports]", - "useLegacySql": true, - "defaultDataset": { - "datasetRef": { - "name": "bigqueryjobdep1query" - } - }, - "destinationTable": { - "tableRef": { - "name": "bigqueryjobdepquery" - } - }, - "allowLargeResults": true, - "flattenResults": true, - "useQueryCache": true, - "priority": "INTERACTIVE", - "writeDisposition": "WRITE_APPEND", - "schemaUpdateOptions": [ - "ALLOW_FIELD_ADDITION", - "ALLOW_FIELD_RELAXATION" - ], - "scriptOptions": { - "statementTimeoutMs": "300000", - "keyResultStatement": "LAST" - } - } + "description": "Destination BigQueryDataset", + "friendlyName": "bigqueryjob-dep2-query" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT300 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT300 index 4ce5c66..5f4d4be 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT300 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT300 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_3.yaml" ], - "timestamp": 1628765145151, + "timestamp": 1642973303345, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containercluster/vpc-native-container-cluster/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstance_multiple_yaml_3.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT300", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT300", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeInstance", "metadata": { - "name": "containercluster-dep-vpcnative" + "name": "computetargetpool-dep4" + }, + "spec": { + "instanceTemplateRef": { + "name": "computetargetpool-dep" + }, + "zone": "us-central1-f" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT301 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT301 index 6a23223..fd9391c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT301 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT301 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/containernodepool/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstancetemplate.yaml" ], - "timestamp": 1628765145174, + "timestamp": 1642973303350, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containernodepool/container_v1beta1_containercluster.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computeinstancetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT301", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeinstancetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT301", "collection": "kcctemplate", "json": { - "apiVersion": "container.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerCluster", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeInstanceTemplate", "metadata": { - "annotations": { - "cnrm.cloud.google.com/remove-default-node-pool": "true" - }, - "name": "containernodepool-dep" + "name": "computetargetpool-dep" }, "spec": { - "location": "us-east1-c", - "initialNodeCount": 1 + "machineType": "n1-standard-1", + "disk": [ + { + "sourceImageRef": { + "external": "debian-cloud/debian-9" + }, + "boot": true + } + ], + "networkInterface": [ + { + "networkRef": { + "name": "computetargetpool-dep" + }, + "subnetworkRef": { + "name": "computetargetpool-dep" + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT302 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT302 index 5b5ef04..871f0e3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT302 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT302 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/containernodepool/container_v1beta1_containernodepool.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765145209, + "timestamp": 1642973303354, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,60 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/containernodepool/container_v1beta1_containernodepool.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT302", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT302", "collection": "kcctemplate", "json": { - "apiVersion": "container.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerNodePool", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "containernodepool-sample" + "name": "computetargetpool-dep" }, "spec": { - "location": "us-east1-c", - "autoscaling": { - "minNodeCount": 1, - "maxNodeCount": 3 - }, - "nodeConfig": { - "machineType": "n1-standard-1", - "diskSizeGb": 100, - "diskType": "pd-standard", - "tags": [ - "tagone", - "tagtwo" - ], - "preemptible": false, - "minCpuPlatform": "Intel Haswell", - "oauthScopes": [ - "https://www.googleapis.com/auth/logging.write", - "https://www.googleapis.com/auth/monitoring" - ], - "guestAccelerator": [ - { - "type": "nvidia-tesla-k80", - "count": 1 - } - ], - "metadata": { - "disable-legacy-endpoints": "true" - } - }, - "management": { - "autoRepair": true, - "autoUpgrade": true - }, - "clusterRef": { - "name": "containernodepool-dep" - } + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT303 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT303 index 23e8411..a4e6785 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT303 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT303 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765145238, + "timestamp": 1642973303357, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT303", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT303", "collection": "kcctemplate", "json": { - "apiVersion": "dataflow.cnrm.cloud.google.com/v1beta1", - "kind": "DataflowFlexTemplateJob", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeSubnetwork", "metadata": { - "annotations": { - "cnrm.cloud.google.com/on-delete": "cancel" - }, - "name": "dataflowflextemplatejob-sample-batch" + "name": "computetargetpool-dep" }, "spec": { + "ipCidrRange": "10.2.0.0/16", "region": "us-central1", - "containerSpecGcsPath": "gs://dataflow-templates/2020-08-31-00_RC00/flex/File_Format_Conversion", - "parameters": { - "inputFileFormat": "csv", - "outputFileFormat": "avro", - "inputFileSpec": "gs://config-connector-samples/dataflowflextemplate/numbertest.csv", - "outputBucket": "gs://${PROJECT_ID?}-dataflowflextemplatejob-dep-batch", - "schema": "gs://config-connector-samples/dataflowflextemplate/numbers.avsc" + "networkRef": { + "name": "computetargetpool-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT304 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT304 index db5dc6d..10c99c5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT304 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT304 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_0.yaml" ], - "timestamp": 1628765145261, + "timestamp": 1642973303361, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT304", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetpool" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT304", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeTargetPool", "metadata": { - "name": "${PROJECT_ID?}-dataflowflextemplatejob-dep-batch" + "name": "computetargetpool-dep" + }, + "spec": { + "instances": [ + { + "name": "computetargetpool-dep3" + }, + { + "name": "computetargetpool-dep4" + } + ], + "region": "us-central1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT305 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT305 index 0022f64..6618eb8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT305 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT305 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_1.yaml" ], - "timestamp": 1628765145278, + "timestamp": 1642973303364, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,46 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/computetargetpool/compute_v1beta1_computetargetpool_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT305", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetpool" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT305", "collection": "kcctemplate", "json": { - "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryDataset", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeTargetPool", "metadata": { - "name": "dataflowflextemplatejobdepstreaming" + "name": "computetargetpool-sample" + }, + "spec": { + "backupTargetPoolRef": { + "name": "computetargetpool-dep" + }, + "description": "A pool of compute instances to use as a backend to a load balancer, with health check and backup pool. A hash of requester's IP is used to determine session affinity to instances.", + "failoverRatio": 0.5, + "healthChecks": [ + { + "httpHealthCheckRef": { + "name": "computetargetpool-dep" + } + } + ], + "instances": [ + { + "name": "computetargetpool-dep1" + }, + { + "name": "computetargetpool-dep2" + } + ], + "region": "us-central1", + "sessionAffinity": "CLIENT_IP" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT306 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT306 index b9707c1..1638445 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT306 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT306 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765145305, + "timestamp": 1642973303372, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT306", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT306", "collection": "kcctemplate", "json": { - "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryTable", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", "metadata": { - "name": "dataflowflextemplatejobdepstreaming" + "name": "computetargetsslproxy-dep" }, "spec": { - "datasetRef": { - "name": "dataflowflextemplatejobdepstreaming" - } + "healthChecks": [ + { + "healthCheckRef": { + "name": "computetargetsslproxy-dep" + } + } + ], + "location": "global", + "protocol": "SSL" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT307 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT307 index 1b5edac..23dec0e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT307 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT307 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765145339, + "timestamp": 1642973303376, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT307", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT307", "collection": "kcctemplate", "json": { - "apiVersion": "dataflow.cnrm.cloud.google.com/v1beta1", - "kind": "DataflowFlexTemplateJob", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeHealthCheck", "metadata": { - "annotations": { - "cnrm.cloud.google.com/on-delete": "drain" - }, - "name": "dataflowflextemplatejob-sample-streaming" + "name": "computetargetsslproxy-dep" }, "spec": { - "region": "us-central1", - "containerSpecGcsPath": "gs://dataflow-templates/2020-08-31-00_RC00/flex/PubSub_Avro_to_BigQuery", - "parameters": { - "schemaPath": "gs://config-connector-samples/dataflowflextemplate/numbers.avsc", - "inputSubscription": "projects/${PROJECT_ID?}/subscriptions/dataflowflextemplatejob-dep-streaming", - "outputTopic": "projects/${PROJECT_ID?}/topics/dataflowflextemplatejob-dep1-streaming", - "outputTableSpec": "${PROJECT_ID?}:dataflowflextemplatejobdepstreaming.dataflowflextemplatejobdepstreaming", - "createDisposition": "CREATE_NEVER" - } + "checkIntervalSec": 10, + "httpHealthCheck": { + "port": 80 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT308 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT308 index bcaa0fa..0b2168d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT308 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT308 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubsubscription.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslcertificate.yaml" ], - "timestamp": 1628765145357, + "timestamp": 1642973303379, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubsubscription.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslcertificate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT308", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslcertificate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT308", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubSubscription", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeSSLCertificate", "metadata": { - "name": "dataflowflextemplatejob-dep-streaming" + "name": "computetargetsslproxy-dep" }, "spec": { - "topicRef": { - "name": "dataflowflextemplatejob-dep0-streaming" + "location": "global", + "certificate": { + "valueFrom": { + "secretKeyRef": { + "name": "computetargetsslproxy-dep", + "key": "certificate" + } + } + }, + "privateKey": { + "valueFrom": { + "secretKeyRef": { + "name": "computetargetsslproxy-dep", + "key": "privateKey" + } + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT309 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT309 index ed50344..f8c6af9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT309 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT309 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslpolicy.yaml" ], - "timestamp": 1628765145382, + "timestamp": 1642973303382, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computesslpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT309", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesslpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT309", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeSSLPolicy", "metadata": { - "name": "dataflowflextemplatejob-dep0-streaming" + "name": "computetargetsslproxy-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT31 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT31 index f13439b..1bd224b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT31 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT31 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], - "timestamp": 1628765138911, + "timestamp": 1642973301820, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,55 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigqueryjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT31", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigqueryjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT31", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryTable", + "kind": "BigQueryJob", "metadata": { - "name": "bigqueryjobdepquery" + "labels": { + "label-one": "value-one" + }, + "name": "bigqueryjob-sample-query" }, "spec": { - "friendlyName": "bigqueryjob-dep-query", - "description": "Destination BigQueryTable", - "datasetRef": { - "name": "bigqueryjobdep2query" + "location": "US", + "jobTimeoutMs": "600000", + "query": { + "query": "SELECT state FROM [lookerdata:cdc.project_tycho_reports]", + "useLegacySql": true, + "defaultDataset": { + "datasetRef": { + "name": "bigqueryjobdep1query" + } + }, + "destinationTable": { + "tableRef": { + "name": "bigqueryjobdepquery" + } + }, + "allowLargeResults": true, + "flattenResults": true, + "useQueryCache": true, + "priority": "INTERACTIVE", + "writeDisposition": "WRITE_APPEND", + "schemaUpdateOptions": [ + "ALLOW_FIELD_ADDITION", + "ALLOW_FIELD_RELAXATION" + ], + "scriptOptions": { + "statementTimeoutMs": "300000", + "keyResultStatement": "LAST" + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT310 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT310 index b16a10d..e1405d1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT310 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT310 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computetargetsslproxy.yaml" ], - "timestamp": 1628765145395, + "timestamp": 1642973303386, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + "/samples/resources/computetargetsslproxy/compute_v1beta1_computetargetsslproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT310", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetsslproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT310", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeTargetSSLProxy", "metadata": { - "name": "dataflowflextemplatejob-dep1-streaming" + "name": "computetargetsslproxy-sample" + }, + "spec": { + "description": "A sample SSL proxy configured with a default SSL policy.", + "backendServiceRef": { + "name": "computetargetsslproxy-dep" + }, + "sslCertificates": [ + { + "name": "computetargetsslproxy-dep" + } + ], + "sslPolicyRef": { + "name": "computetargetsslproxy-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT311 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT311 index 300bbb1..0c71c99 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT311 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT311 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowjob/batch-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" + "/samples/resources/computetargetsslproxy/secret.yaml" ], - "timestamp": 1628765145429, + "timestamp": 1642973303391, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/batch-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" + "/samples/resources/computetargetsslproxy/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT311", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT311", "collection": "kcctemplate", "json": { - "apiVersion": "dataflow.cnrm.cloud.google.com/v1beta1", - "kind": "DataflowJob", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "annotations": { - "cnrm.cloud.google.com/on-delete": "cancel" - }, - "labels": { - "label-one": "value-one" - }, - "name": "dataflowjob-sample-batch" + "name": "computetargetsslproxy-dep" }, - "spec": { - "tempGcsLocation": "gs://${PROJECT_ID?}-dataflowjob-dep-batch/tmp", - "templateGcsPath": "gs://dataflow-templates/2020-02-03-01_RC00/Word_Count", - "parameters": { - "inputFile": "gs://dataflow-samples/shakespeare/various.txt", - "output": "gs://${PROJECT_ID?}-dataflowjob-dep-batch/output" - }, - "zone": "us-central1-a", - "machineType": "n1-standard-1", - "maxWorkers": 3, - "ipConfiguration": "WORKER_IP_PUBLIC" + "stringData": { + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDJTCCAg0CFHdD3ZGYMCmF3O4PvMwsP5i8d/V0MA0GCSqGSIb3DQEBCwUAME8x\nCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJXQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk\nZ2l0cyBQdHkgTHRkMRAwDgYDVQQDDAdFeGFtcGxlMB4XDTE5MDkyOTIyMjgyOVoX\nDTIwMDkyODIyMjgyOVowTzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAldBMSEwHwYD\nVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEDAOBgNVBAMMB0V4YW1wbGUw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWLvOZIail12i6NXIqOspV\ncorkuS1Nl0ayrl0VuKHCvheun/s7lLLgEfifzRueYlSUtdGg4atWIwEKsbIE+AF9\nuUTzkq/t6zHxFAAWgVZ6/hW696jqcZX3yU+LCuHPLSN0ruqD6ZygnYDVciDmYwxe\n601xNfOOYRlm6dGRx6uTxGDZtfu8zsaNI0UxTugTp2x5cKB66SbgdlIJvc2Hb54a\n7qOsb9CIf+rrK2xUdJUj4ueUEIMxjnY2u/Dc71SgfBVn+yFfN9MHNdcTWPXEUClE\nFxd/MB3dGn7hVavXyvy3NT4tWhBgYBphfEUudDFej5MmVq56JOEQ2UtaQ+Imscud\nAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAMYTQyjVlo6TCYoyK6akjPX7vRiwCCAh\njqsEu3bZqwUreOhZgRAyEXrq68dtXwTbwdisQmnhpBeBQuX4WWeas9TiycZ13TA1\nZ+h518D9OVXjrNs7oE3QNFeTom807IW16YydlrZMLKO8mQg6/BXfSHbLwuQHSIYS\nJD+uOfnkr08ORBbLGgBKKpy7ngflIkdSrQPmCYmYlvoy+goMAEVi0K3Y1wVzAF4k\nO4v8f7GXkNarsFT1QM82JboVV5uwX+uDmi858WKDHYGv2Ypv6yy93vdV0Xt/IBj3\n95/RDisBzcL7Ynpl34AAr5MLm7yCSsPrAmgevX4BOtcVc4rSXj5rcoE=\n-----END CERTIFICATE-----\n", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1i7zmSGopddoujVyKjrKVXKK5LktTZdGsq5dFbihwr4Xrp/7\nO5Sy4BH4n80bnmJUlLXRoOGrViMBCrGyBPgBfblE85Kv7esx8RQAFoFWev4Vuveo\n6nGV98lPiwrhzy0jdK7qg+mcoJ2A1XIg5mMMXutNcTXzjmEZZunRkcerk8Rg2bX7\nvM7GjSNFMU7oE6dseXCgeukm4HZSCb3Nh2+eGu6jrG/QiH/q6ytsVHSVI+LnlBCD\nMY52Nrvw3O9UoHwVZ/shXzfTBzXXE1j1xFApRBcXfzAd3Rp+4VWr18r8tzU+LVoQ\nYGAaYXxFLnQxXo+TJlaueiThENlLWkPiJrHLnQIDAQABAoIBAQDMo/WZlQBG3Cay\n64fV83AI7jTozkkLvoMNC+3iaBMeN3P3I+HuDmhOEL2lKVq/HKJFp+bPuW50EWPY\nbOlzN+Zs0kygEMJJJxQDjCF9XzxarVPj3OcmgTpRkqWOaupPgYhD3zAws080YuiK\nh84Jcg+KzXWjunGn0vxrSPI0QDueJR2i03tEDBAtMZ0pvAsJ0gmXRdzGOc2uRzDm\nfbS3y/JIufClO28OzjJ5AJkbc9XgRDeCDOFY2D375bCg2boPYmP7Iw0HVU3RQhcr\nt+US27VQBRJF4cQ2CCyr0ZbdaPn41v+/A/qxF6ZPguyy+KoyQjCqK8iFArRQ48hJ\ncR2pFx4hAoGBAP2uXIJAdAemrOunv2CWlUHI2iHj/kJ1AXRMpiT+eF0US9E6tipE\nmL63HkUhiAs2nJnPi3RDxP+kAO2Z3anqjm1KCeGj+IYYZMavnkC8EVybv9lDwORy\ne2O1bfRc/tGa341KmvXLbp8oVMIYIvKz2cZmHGJ4V4DTq8dTvmqoE4/VAoGBANgk\nKWY5MJToZJJ5bV0mc2stmGt/IAZZPlKjVmKOjDyzqHRLAhsmbMyUhhgZtyj0dzSW\nILEeaEJknYRrOB48D6IqkB8VnFJyHUG8l+Za41adqRQNid0S5n50/+eYbjZpYCrA\nSGmC2dhPZvRD6tOyEEJF5PZMvqxDcNRilc627HipAoGBAKzqrSQbyvtsIXKAZXLx\nMcwlnIp9XlLubo9Xr+iHjIPl0chMvN8S4wscxwVYVeNO1nABiI03pJCcugU7XFz2\nBR952EJ2AnFlL0w/aR+3Eh6OC7eM927Amlrc0JZAzXESoE8vC3F/uWfDlgK3cRr+\nfPM/pxl37i1iGzVDYAhTiQIBAoGAPW25nmXumsOZoc+E945wCywAP7z3mxZOEip9\n6LDexnnBDJws0w6OqW4k1kCov6kLIBTy4aPkucniwrm+T0l+n/Y807jOntfz3LT+\n7ucx6XIRlbNrVTuD6rjR6j52RFyaikvvyJz50PJwLkgHO3dGC6/VrPKO1mKsdJA4\nR3HRr1ECgYEAobNQbQSLrSWZ1cozJbmNgRqqvxDNSEDi8LpXukOAw4pz1km7o3ob\nhCy1ksfFzsp5glYqwZd/Bahk64u3mII+rKoYwYLrH2l2aFDmMbdTfQUycpQZyi3+\nVtGS1PFoKx9fSFDNHhR5ZhfasQcuKHYfeFfO2/DoOxQkNCI1y4I2huo=\n-----END RSA PRIVATE KEY-----\n" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT312 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT312 index 2076b59..cf40cca 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT312 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT312 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowjob/batch-dataflow-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765145455, + "timestamp": 1642973303395, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/batch-dataflow-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT312", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT312", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", "metadata": { - "annotations": { - "cnrm.cloud.google.com/force-destroy": "true" - }, - "name": "${PROJECT_ID?}-dataflowjob-dep-batch" + "name": "computetargettcpproxy-dep" + }, + "spec": { + "healthChecks": [ + { + "healthCheckRef": { + "name": "computetargettcpproxy-dep" + } + } + ], + "location": "global", + "protocol": "TCP" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT313 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT313 index ecd9f8d..d2ea2cc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT313 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT313 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765145471, + "timestamp": 1642973303399, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT313", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT313", "collection": "kcctemplate", "json": { - "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryDataset", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeHealthCheck", "metadata": { - "name": "dataflowjobdepstreaming" + "name": "computetargettcpproxy-dep" + }, + "spec": { + "checkIntervalSec": 10, + "tcpHealthCheck": { + "port": 443 + }, + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT314 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT314 index d15835f..62e7dae 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT314 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT314 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computetargettcpproxy.yaml" ], - "timestamp": 1628765145492, + "timestamp": 1642973303408, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/computetargettcpproxy/compute_v1beta1_computetargettcpproxy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT314", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargettcpproxy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT314", "collection": "kcctemplate", "json": { - "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryTable", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeTargetTCPProxy", "metadata": { - "name": "dataflowjobdepstreaming" + "name": "computetargettcpproxy-sample" }, "spec": { - "datasetRef": { - "name": "dataflowjobdepstreaming" + "description": "A sample TCP proxy.", + "backendServiceRef": { + "name": "computetargettcpproxy-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT315 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT315 index 6cf49f8..e6e5813 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT315 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT315 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" + "/samples/resources/computetargetvpngateway/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765145519, + "timestamp": 1642973303412, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" + "/samples/resources/computetargetvpngateway/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT315", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT315", "collection": "kcctemplate", "json": { - "apiVersion": "dataflow.cnrm.cloud.google.com/v1beta1", - "kind": "DataflowJob", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "annotations": { - "cnrm.cloud.google.com/on-delete": "cancel" - }, - "labels": { - "label-one": "value-one" - }, - "name": "dataflowjob-sample-streaming" + "name": "computetargetvpngateway-dep" }, "spec": { - "tempGcsLocation": "gs://${PROJECT_ID?}-dataflowjob-dep-streaming/tmp", - "templateGcsPath": "gs://dataflow-templates/2020-02-03-01_RC00/PubSub_to_BigQuery", - "parameters": { - "inputTopic": "projects/${PROJECT_ID?}/topics/dataflowjob-dep-streaming", - "outputTableSpec": "${PROJECT_ID?}:dataflowjobdepstreaming.dataflowjobdepstreaming" - }, - "zone": "us-central1-a", - "machineType": "n1-standard-1", - "maxWorkers": 3, - "ipConfiguration": "WORKER_IP_PUBLIC" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT316 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT316 index 50168fb..08fa829 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT316 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT316 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/computetargetvpngateway/compute_v1beta1_computetargetvpngateway.yaml" ], - "timestamp": 1628765145541, + "timestamp": 1642973303416, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/computetargetvpngateway/compute_v1beta1_computetargetvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT316", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetvpngateway" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT316", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeTargetVPNGateway", "metadata": { - "name": "dataflowjob-dep-streaming" + "name": "computetargetvpngateway-sample" + }, + "spec": { + "description": "a test target vpn gateway", + "region": "us-central1", + "networkRef": { + "name": "computetargetvpngateway-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT317 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT317 index cd75105..5b8d0e5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT317 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT317 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendbucket.yaml" ], - "timestamp": 1628765145564, + "timestamp": 1642973303428, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataflowjob/streaming-dataflow-job/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendbucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT317", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendbucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT317", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendBucket", "metadata": { - "annotations": { - "cnrm.cloud.google.com/force-destroy": "true" - }, - "name": "${PROJECT_ID?}-dataflowjob-dep-streaming" + "name": "computeurlmap-dep" + }, + "spec": { + "bucketRef": { + "name": "${PROJECT_ID?}-computeurl-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT318 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT318 index 194422f..59f5c2d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT318 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT318 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/datafusioninstance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_0.yaml" ], - "timestamp": 1628765145578, + "timestamp": 1642973303433, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/datafusioninstance/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT318", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT318", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeBackendService", "metadata": { - "name": "datafusioninstance-dep" + "name": "computeurlmap-dep1" }, "spec": { - "routingMode": "GLOBAL", - "autoCreateSubnetworks": false + "healthChecks": [ + { + "healthCheckRef": { + "name": "computeurlmap-dep" + } + } + ], + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT319 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT319 index 3fcf953..1df224a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT319 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT319 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/datafusioninstance/datafusion_v1beta1_datafusioninstance.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_1.yaml" ], - "timestamp": 1628765145613, + "timestamp": 1642973303457, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/datafusioninstance/datafusion_v1beta1_datafusioninstance.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT319", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT319", "collection": "kcctemplate", "json": { - "apiVersion": "datafusion.cnrm.cloud.google.com/v1beta1", - "kind": "DataFusionInstance", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "datafusioninstance-sample" + "name": "computeurlmap-dep2" }, "spec": { - "description": "A sample DataFusion instance.", - "displayName": "Sample DataFusion Instance", - "location": "us-central1", - "type": "BASIC", - "enableStackdriverMonitoring": true, - "enableStackdriverLogging": true, - "privateInstance": true, - "networkConfig": { - "networkRef": { - "name": "datafusioninstance-dep" - }, - "ipAllocation": "10.89.48.0/22" - }, - "dataprocServiceAccountRef": { - "name": "datafusioninstance-dep" - } + "healthChecks": [ + { + "healthCheckRef": { + "name": "computeurlmap-dep" + } + } + ], + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT32 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT32 index 25ddb73..3365808 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT32 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT32 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], - "timestamp": 1628765138928, + "timestamp": 1642973301824, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerydataset.yaml" + "/samples/resources/bigqueryjob/query-bigquery-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT32", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT32", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryDataset", + "kind": "BigQueryTable", "metadata": { - "name": "bigquerytabledep" + "name": "bigqueryjobdepquery" }, "spec": { - "friendlyName": "bigquerytable-dep" + "friendlyName": "bigqueryjob-dep-query", + "description": "Destination BigQueryTable", + "datasetRef": { + "name": "bigqueryjobdep2query" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT320 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT320 index 9f8a34c..3316661 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT320 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT320 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/datafusioninstance/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_2.yaml" ], - "timestamp": 1628765145648, + "timestamp": 1642973303461, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/datafusioninstance/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computebackendservice_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT320", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT320", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", "metadata": { - "name": "datafusioninstance-dep" + "name": "computeurlmap-dep3" }, "spec": { - "displayName": "DataFusionInstance Service Account" + "healthChecks": [ + { + "healthCheckRef": { + "name": "computeurlmap-dep" + } + } + ], + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT321 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT321 index 5481fb1..2bb1c94 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT321 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT321 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataprocautoscalingpolicy/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765145686, + "timestamp": 1642973303465, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,35 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataprocautoscalingpolicy/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT321", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT321", "collection": "kcctemplate", "json": { - "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", - "kind": "DataprocAutoscalingPolicy", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeHealthCheck", "metadata": { - "name": "dataprocautoscalingpolicy-sample" + "name": "computeurlmap-dep" }, "spec": { - "location": "us-central1", - "workerConfig": { - "maxInstances": 2 + "checkIntervalSec": 10, + "httpHealthCheck": { + "port": 80 }, - "secondaryWorkerConfig": { - "maxInstances": 2 - }, - "basicAlgorithm": { - "yarnConfig": { - "gracefulDecommissionTimeout": "60s", - "scaleDownFactor": 0.5, - "scaleUpFactor": 0.5 - } - } + "location": "global" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT322 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT322 index 26c7661..0dbdb2b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT322 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT322 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataproccluster/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computeurlmap.yaml" ], - "timestamp": 1628765145718, + "timestamp": 1642973303470, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,70 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataproccluster/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT322", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT322", "collection": "kcctemplate", "json": { - "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", - "kind": "DataprocAutoscalingPolicy", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeURLMap", "metadata": { - "annotations": null, - "name": "dataproccluster-dep" + "name": "computeurlmap-sample" }, "spec": { - "location": "us-central1", - "workerConfig": { - "maxInstances": 5 - }, - "secondaryWorkerConfig": { - "maxInstances": 2 + "location": "global", + "defaultService": { + "backendServiceRef": { + "name": "computeurlmap-dep1" + } }, - "basicAlgorithm": { - "yarnConfig": { - "gracefulDecommissionTimeout": "30s", - "scaleDownFactor": 0.5, - "scaleUpFactor": 0.5 + "pathMatcher": [ + { + "name": "allpaths", + "defaultService": { + "backendServiceRef": { + "name": "computeurlmap-dep2" + } + }, + "pathRule": [ + { + "paths": [ + "/home" + ], + "service": { + "backendServiceRef": { + "name": "computeurlmap-dep3" + } + } + }, + { + "paths": [ + "/foo" + ], + "service": { + "backendBucketRef": { + "name": "computeurlmap-dep" + } + } + } + ] + } + ], + "hostRule": [ + { + "hosts": [ + "example.com" + ], + "pathMatcher": "allpaths" } - } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT323 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT323 index 32ae2e0..acd84d2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT323 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT323 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataproccluster/dataproc_v1beta1_dataproccluster.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/storage_v1beta1_storagebucket.yaml" ], - "timestamp": 1628765145750, + "timestamp": 1642973303479, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,69 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataproccluster/dataproc_v1beta1_dataproccluster.yaml" + "/samples/resources/computeurlmap/global-compute-url-map/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT323", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT323", "collection": "kcctemplate", "json": { - "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", - "kind": "DataprocCluster", + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", "metadata": { - "annotations": { - "cnrm.cloud.google.com/management-conflict-prevention-policy": "none" - }, - "name": "dataproccluster-sample", - "labels": { - "label-one": "value-one" - } - }, - "spec": { - "location": "us-central1", - "config": { - "autoscalingConfig": { - "policyRef": { - "name": "dataproccluster-dep" - } - }, - "stagingBucketRef": { - "name": "dataproccluster-dep-staging" - }, - "masterConfig": { - "diskConfig": { - "bootDiskSizeGb": 30, - "bootDiskType": "pd-standard" - }, - "machineType": "n2-standard-2", - "numInstances": 1 - }, - "workerConfig": { - "numInstances": 2, - "machineType": "n2-standard-2", - "diskConfig": { - "bootDiskSizeGb": 30, - "numLocalSsds": 1 - } - }, - "softwareConfig": { - "imageVersion": "2.0.2-debian10" - }, - "gceClusterConfig": { - "tags": [ - "foo", - "bar" - ] - }, - "initializationActions": [ - { - "executableFile": "gs://dataproc-initialization-actions/stackdriver/stackdriver.sh", - "executionTimeout": "500s" - } - ] - } + "name": "${PROJECT_ID?}-computeurl-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT324 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT324 index dc3622f..fdceec5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT324 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT324 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataproccluster/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computebackendservice.yaml" ], - "timestamp": 1628765145771, + "timestamp": 1642973303518, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,35 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataproccluster/storage_v1beta1_storagebucket.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computebackendservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT324", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT324", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", "metadata": { - "annotations": { - "cnrm.cloud.google.com/force-destroy": "true" - }, - "labels": { - "label-one": "value-one" - }, - "name": "dataproccluster-dep-staging" + "name": "computeurlmap-dep" }, "spec": { - "resourceID": "${PROJECT_ID?}-dataproccluster-dep-staging", - "bucketPolicyOnly": true + "location": "us-central1", + "healthChecks": [ + { + "healthCheckRef": { + "name": "computeurlmap-dep" + } + } + ], + "protocol": "HTTP", + "timeoutSec": 10, + "loadBalancingScheme": "INTERNAL_MANAGED" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT325 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT325 index e4ef190..ff2a2d2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT325 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT325 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computehealthcheck.yaml" ], - "timestamp": 1628765145789, + "timestamp": 1642973303524, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,35 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computehealthcheck.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT325", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computehealthcheck" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT325", "collection": "kcctemplate", "json": { - "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", - "kind": "DataprocAutoscalingPolicy", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeHealthCheck", "metadata": { - "name": "dataprocworkflowtemplate-dep" + "name": "computeurlmap-dep" }, "spec": { - "location": "us-central1", - "workerConfig": { - "maxInstances": 5 + "checkIntervalSec": 10, + "httpHealthCheck": { + "port": 80 }, - "secondaryWorkerConfig": { - "maxInstances": 2 - }, - "basicAlgorithm": { - "yarnConfig": { - "gracefulDecommissionTimeout": "30s", - "scaleDownFactor": 0.5, - "scaleUpFactor": 1 - } - } + "location": "us-central1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT326 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT326 index dc63950..665c3ed 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT326 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT326 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocworkflowtemplate.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computeurlmap.yaml" ], - "timestamp": 1628765145822, + "timestamp": 1642973303529, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,77 +15,150 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocworkflowtemplate.yaml" + "/samples/resources/computeurlmap/regional-compute-url-map-l7-ilb-path/compute_v1beta1_computeurlmap.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT326", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeurlmap" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT326", "collection": "kcctemplate", "json": { - "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", - "kind": "DataprocWorkflowTemplate", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeURLMap", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "dataprocworkflowtemplate-sample" + "name": "computeurlmap-sample" }, "spec": { + "description": "Regional ComputeURLMap L7 Ilb Path", "location": "us-central1", - "placement": { - "managedCluster": { - "clusterName": "test-cluster", - "config": { - "autoscalingConfig": { - "policyRef": { - "name": "dataprocworkflowtemplate-dep" - } - }, - "masterConfig": { - "diskConfig": { - "bootDiskSizeGb": 30, - "bootDiskType": "pd-standard" - }, - "machineType": "n2-standard-8", - "numInstances": 1 - }, - "workerConfig": { - "numInstances": 2, - "machineType": "n2-standard-8", - "diskConfig": { - "bootDiskSizeGb": 30, - "numLocalSsds": 1 - } - }, - "softwareConfig": { - "imageVersion": "2.0.2-debian10" - }, - "gceClusterConfig": { - "tags": [ - "foo", - "bar" - ] - } - } + "defaultService": { + "backendServiceRef": { + "name": "computeurlmap-dep" } }, - "jobs": [ + "hostRule": [ { - "stepId": "someJob", - "sparkJob": { - "mainClass": "SomeClass" - } - }, - { - "stepId": "otherJob", - "prerequisiteStepIds": [ - "someJob" + "hosts": [ + "mysite.com" ], - "prestoJob": { - "queryFileUri": "someUri" - } + "pathMatcher": "allpaths" + } + ], + "pathMatcher": [ + { + "name": "allpaths", + "defaultService": { + "backendServiceRef": { + "name": "computeurlmap-dep" + } + }, + "pathRule": [ + { + "paths": [ + "/home" + ], + "routeAction": { + "corsPolicy": { + "allowCredentials": true, + "allowHeaders": [ + "Allowed content" + ], + "allowMethods": [ + "GET" + ], + "allowOrigins": [ + "Allowed origin" + ], + "exposeHeaders": [ + "Exposed header" + ], + "maxAge": 30, + "disabled": false + }, + "faultInjectionPolicy": { + "abort": { + "httpStatus": 234, + "percentage": 5.6 + }, + "delay": { + "fixedDelay": { + "seconds": "0", + "nanos": 50000 + }, + "percentage": 7.8 + } + }, + "requestMirrorPolicy": { + "backendServiceRef": { + "name": "computeurlmap-dep" + } + }, + "retryPolicy": { + "numRetries": 4, + "retryTimeout": { + "seconds": "30" + }, + "retryConditions": [ + "5xx", + "deadline-exceeded" + ] + }, + "timeout": { + "seconds": "20", + "nanos": 750000000 + }, + "urlRewrite": { + "hostRewrite": "A replacement header", + "pathPrefixRewrite": "A replacement path" + }, + "weightedBackendServices": [ + { + "backendServiceRef": { + "name": "computeurlmap-dep" + }, + "weight": 400, + "headerAction": { + "requestHeadersToRemove": [ + "RemoveMe" + ], + "requestHeadersToAdd": [ + { + "headerName": "AddMe", + "headerValue": "MyValue", + "replace": true + } + ], + "responseHeadersToRemove": [ + "RemoveMe" + ], + "responseHeadersToAdd": [ + { + "headerName": "AddMe", + "headerValue": "MyValue", + "replace": false + } + ] + } + } + ] + } + } + ] + } + ], + "test": [ + { + "service": { + "backendServiceRef": { + "name": "computeurlmap-dep" + } + }, + "host": "hi.com", + "path": "/home" } ] } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT327 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT327 index 5bb4530..39f1d1b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT327 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT327 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsmanagedzone/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computevpngateway/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765145855, + "timestamp": 1642973303535, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsmanagedzone/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computevpngateway/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT327", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT327", "collection": "kcctemplate", @@ -27,7 +30,7 @@ "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", "kind": "ComputeNetwork", "metadata": { - "name": "dnsmanagedzone-dep" + "name": "computevpngateway-dep" }, "spec": { "autoCreateSubnetworks": false diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT328 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT328 index 489bd7e..d827622 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT328 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT328 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsmanagedzone/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpngateway/compute_v1beta1_computevpngateway.yaml" ], - "timestamp": 1628765145890, + "timestamp": 1642973303542, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,35 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsmanagedzone/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpngateway/compute_v1beta1_computevpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT328", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computevpngateway" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT328", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeVPNGateway", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "dnsmanagedzone-sample" + "name": "computevpngateway-sample" }, "spec": { - "description": "Example DNS zone", - "dnsName": "cnrm-dns-example.com.", - "visibility": "private", - "privateVisibilityConfig": { - "networks": [ - { - "networkRef": { - "name": "dnsmanagedzone-dep" - } - } - ] + "description": "Compute VPN Gateway Sample", + "region": "us-central1", + "networkRef": { + "name": "computevpngateway-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT329 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT329 index c19623f..51fe3a9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT329 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT329 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnspolicy/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeaddress.yaml" ], - "timestamp": 1628765145917, + "timestamp": 1642973303548, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnspolicy/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT329", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT329", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeAddress", "metadata": { - "name": "dnspolicy-dep" + "name": "computevpntunnel-dep", + "labels": { + "label-one": "value-one" + } }, "spec": { - "autoCreateSubnetworks": false + "location": "us-central1", + "description": "a test regional address" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT33 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT33 index e2ac02d..12a2f18 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT33 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT33 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerydataset.yaml" ], - "timestamp": 1628765138956, + "timestamp": 1642973301827, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,41 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerytable.yaml" + "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT33", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT33", "collection": "kcctemplate", "json": { "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", - "kind": "BigQueryTable", + "kind": "BigQueryDataset", "metadata": { - "name": "bigquerytablesample", - "labels": { - "data-source": "external", - "schema-type": "auto-junk" - } + "name": "bigquerytabledep" }, "spec": { - "description": "BigQuery Sample Table", - "datasetRef": { - "name": "bigquerytabledep" - }, - "friendlyName": "bigquerytable-sample", - "externalDataConfiguration": { - "autodetect": true, - "compression": "NONE", - "ignoreUnknownValues": false, - "maxBadRecords": 10, - "sourceFormat": "CSV", - "sourceUris": [ - "gs://gcp-public-data-landsat/LC08/01/044/034/LC08_L1GT_044034_20130330_20170310_01_T2/LC08_L1GT_044034_20130330_20170310_01_T2_ANG.txt", - "gs://gcp-public-data-landsat/LC08/01/044/034/LC08_L1GT_044034_20130330_20180201_01_T2/LC08_L1GT_044034_20130330_20180201_01_T2_ANG.txt" - ] - } + "friendlyName": "bigquerytable-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT330 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT330 index be044b7..1ed51ac 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT330 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT330 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnspolicy/dns_v1beta1_dnspolicy.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" ], - "timestamp": 1628765145948, + "timestamp": 1642973303593, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnspolicy/dns_v1beta1_dnspolicy.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT330", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT330", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSPolicy", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeForwardingRule", "metadata": { - "name": "dnspolicy-sample" + "labels": { + "label-one": "value-one" + }, + "name": "computevpntunnel-dep1" }, "spec": { - "alternativeNameServerConfig": { - "targetNameServers": [ - { - "ipv4Address": "104.132.166.92" - } - ] + "description": "A regional forwarding rule", + "ipAddress": { + "addressRef": { + "name": "computevpntunnel-dep" + } }, - "description": "Example DNS policy", - "enableInboundForwarding": true, - "enableLogging": true, - "networks": [ - { - "networkRef": { - "name": "dnspolicy-dep" - } + "ipProtocol": "ESP", + "location": "us-central1", + "target": { + "targetVPNGatewayRef": { + "name": "computevpntunnel-dep" } - ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT331 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT331 index f5c3e73..a3dd3a4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT331 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT331 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" ], - "timestamp": 1628765145970, + "timestamp": 1642973303608, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT331", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT331", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeForwardingRule", "metadata": { - "name": "dnsrecordset-dep-a" + "labels": { + "label-one": "value-one" + }, + "name": "computevpntunnel-dep2" }, "spec": { - "dnsName": "example.com." + "description": "A regional forwarding rule", + "ipAddress": { + "addressRef": { + "name": "computevpntunnel-dep" + } + }, + "ipProtocol": "UDP", + "location": "us-central1", + "portRange": "500", + "target": { + "targetVPNGatewayRef": { + "name": "computevpntunnel-dep" + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT332 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT332 index d7e7070..8feafbe 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT332 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT332 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" ], - "timestamp": 1628765145996, + "timestamp": 1642973303612, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computeforwardingrule_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT332", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeforwardingrule" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT332", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeForwardingRule", "metadata": { - "name": "dnsrecordset-sample-a" + "labels": { + "label-one": "value-one" + }, + "name": "computevpntunnel-dep3" }, "spec": { - "name": "www.example.com.", - "type": "A", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-a" + "description": "A regional forwarding rule", + "ipAddress": { + "addressRef": { + "name": "computevpntunnel-dep" + } }, - "rrdatas": [ - "8.8.8.8" - ] + "ipProtocol": "UDP", + "location": "us-central1", + "portRange": "4500", + "target": { + "targetVPNGatewayRef": { + "name": "computevpntunnel-dep" + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT333 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT333 index f3a8e47..643cac5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT333 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT333 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765146013, + "timestamp": 1642973303621, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT333", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT333", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "name": "dnsrecordset-dep-aaaa" + "name": "computevpntunnel-dep" }, "spec": { - "dnsName": "example.com." + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT334 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT334 index 607fbff..9fdca0a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT334 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT334 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computetargetvpngateway.yaml" ], - "timestamp": 1628765146055, + "timestamp": 1642973303626, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computetargetvpngateway.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT334", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computetargetvpngateway" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT334", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeTargetVPNGateway", "metadata": { - "name": "dnsrecordset-sample-aaaa" + "name": "computevpntunnel-dep" }, "spec": { - "name": "www.example.com.", - "type": "AAAA", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-aaaa" - }, - "rrdatas": [ - "8888:8888:8888:8888::" - ] + "description": "a test target vpn gateway", + "region": "us-central1", + "networkRef": { + "name": "computevpntunnel-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT335 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT335 index 135d81b..16c43a3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT335 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT335 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computevpntunnel.yaml" ], - "timestamp": 1628765146073, + "timestamp": 1642973303644, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/computevpntunnel/compute_v1beta1_computevpntunnel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT335", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computevpntunnel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT335", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeVPNTunnel", "metadata": { - "name": "dnsrecordset-dep-cname" + "name": "computevpntunnel-sample", + "labels": { + "foo": "bar" + } }, "spec": { - "dnsName": "example.com." + "peerIp": "15.0.0.120", + "region": "us-central1", + "sharedSecret": { + "valueFrom": { + "secretKeyRef": { + "name": "computevpntunnel-dep", + "key": "sharedSecret" + } + } + }, + "targetVPNGatewayRef": { + "name": "computevpntunnel-dep" + }, + "localTrafficSelector": [ + "192.168.0.0/16" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT336 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT336 index 46ece5a..7b13733 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT336 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT336 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/secret.yaml" ], - "timestamp": 1628765146092, + "timestamp": 1642973303655, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/computevpntunnel/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT336", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT336", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "name": "dnsrecordset-sample-cname" + "name": "computevpntunnel-dep" }, - "spec": { - "name": "*.example.com.", - "type": "CNAME", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-cname" - }, - "rrdatas": [ - ".www.example.com." - ] + "stringData": { + "sharedSecret": "a secret message" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT337 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT337 index 6229d95..fa493ae 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT337 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT337 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/configcontrollerinstance/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765146120, + "timestamp": 1642973303659, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/configcontrollerinstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT337", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT337", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "name": "dnsrecordset-dep-mx" + "name": "configcontrollerinstance-dep" }, "spec": { - "dnsName": "example.com." + "routingMode": "REGIONAL", + "autoCreateSubnetworks": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT338 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT338 index 81b449b..6c64441 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT338 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT338 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/configcontrollerinstance/configcontroller_v1beta1_configcontrollerinstance.yaml" ], - "timestamp": 1628765146149, + "timestamp": 1642973303707, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/configcontrollerinstance/configcontroller_v1beta1_configcontrollerinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT338", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "configcontrollerinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT338", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "configcontroller.cnrm.cloud.google.com/v1beta1", + "kind": "ConfigControllerInstance", "metadata": { - "name": "dnsrecordset-sample-mx" + "labels": { + "label-one": "value-one" + }, + "name": "ccinstance-sample" }, "spec": { - "name": "mail.example.com.", - "type": "MX", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-mx" + "projectRef": { + "external": "projects/${PROJECT_ID?}" }, - "rrdatas": [ - "5 gmr-stmp-in.l.google.com.", - "10 alt1.gmr-stmp-in.l.google.com.", - "10 alt2.gmr-stmp-in.l.google.com.", - "10 alt3.gmr-stmp-in.l.google.com.", - "10 alt4.gmr-stmp-in.l.google.com." - ] + "location": "us-central1", + "managementConfig": { + "standardManagementConfig": { + "networkRef": { + "name": "configcontrollerinstance-dep" + }, + "masterIPv4CidrBlock": "172.16.123.64/28", + "clusterCidrBlock": "/20", + "servicesCidrBlock": "/24" + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT339 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT339 index 98f985c..13dc1b7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT339 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT339 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containeranalysisnote/containeranalysis_v1beta1_containeranalysisnote.yaml" ], - "timestamp": 1628765146171, + "timestamp": 1642973303713, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containeranalysisnote/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT339", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT339", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerAnalysisNote", "metadata": { - "name": "dnsrecordset-dep-ns" + "name": "containeranalysisnote-sample" }, "spec": { - "dnsName": "example.com." + "shortDescription": "short description", + "longDescription": "long description", + "relatedUrl": [ + { + "url": "some.url", + "label": "test" + }, + { + "url": "google.com", + "label": "google" + } + ], + "attestation": { + "hint": { + "humanReadableName": "Attestor Note" + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT34 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT34 index 33fd741..f7e6d99 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT34 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT34 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" + "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerytable.yaml" ], - "timestamp": 1628765138977, + "timestamp": 1642973301831, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,44 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" + "/samples/resources/bigquerytable/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT34", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT34", "collection": "kcctemplate", "json": { - "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableAppProfile", + "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", + "kind": "BigQueryTable", "metadata": { - "name": "bigtableappprofile-sample-multicluster", - "annotations": { - "cnrm.cloud.google.com/ignore-warnings": "true" + "name": "bigquerytablesample", + "labels": { + "data-source": "external", + "schema-type": "auto-junk" } }, "spec": { - "description": "Automatically routes requests to the nearest available cluster in an instance.", - "instanceRef": { - "name": "bigtableappprofile-dep-multi" + "description": "BigQuery Sample Table", + "datasetRef": { + "name": "bigquerytabledep" }, - "multiClusterRoutingUseAny": true + "friendlyName": "bigquerytable-sample", + "externalDataConfiguration": { + "autodetect": true, + "compression": "NONE", + "ignoreUnknownValues": false, + "maxBadRecords": 10, + "sourceFormat": "CSV", + "sourceUris": [ + "gs://gcp-public-data-landsat/LC08/01/044/034/LC08_L1GT_044034_20130330_20170310_01_T2/LC08_L1GT_044034_20130330_20170310_01_T2_ANG.txt", + "gs://gcp-public-data-landsat/LC08/01/044/034/LC08_L1GT_044034_20130330_20180201_01_T2/LC08_L1GT_044034_20130330_20180201_01_T2_ANG.txt" + ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT340 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT340 index b19d716..c5aeade 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT340 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT340 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/autopilot-cluster/container_v1beta1_containercluster.yaml" ], - "timestamp": 1628765146202, + "timestamp": 1642973303734, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/autopilot-cluster/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT340", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT340", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerCluster", "metadata": { - "name": "dnsrecordset-sample-ns" + "name": "containercluster-sample-autopilot" }, "spec": { - "name": "example.com.", - "type": "NS", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-ns" - }, - "rrdatas": [ - "ns-cloud-a1.googledomains.com.", - "ns-cloud-a2.googledomains.com.", - "ns-cloud-a3.googledomains.com.", - "ns-cloud-a4.googledomains.com." - ] + "description": "An autopilot cluster.", + "enableAutopilot": true, + "location": "us-west1", + "releaseChannel": { + "channel": "REGULAR" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT341 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT341 index 7c47386..dfe7f2e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT341 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT341 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/routes-based-container-cluster/container_v1beta1_containercluster.yaml" ], - "timestamp": 1628765146219, + "timestamp": 1642973303770, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,69 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/routes-based-container-cluster/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT341", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT341", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerCluster", "metadata": { - "name": "dnsrecordset-dep-srv" + "labels": { + "availability": "dev", + "target-audience": "development" + }, + "name": "containercluster-sample-routesbased" }, "spec": { - "dnsName": "example.com." + "description": "A routes-based cluster confined to one zone configured for development.", + "location": "us-central1-a", + "initialNodeCount": 1, + "networkingMode": "ROUTES", + "clusterIpv4Cidr": "10.96.0.0/14", + "masterAuthorizedNetworksConfig": { + "cidrBlocks": [ + { + "displayName": "Trusted external network", + "cidrBlock": "10.2.0.0/16" + } + ] + }, + "addonsConfig": { + "gcePersistentDiskCsiDriverConfig": { + "enabled": true + }, + "kalmConfig": { + "enabled": true + }, + "horizontalPodAutoscaling": { + "disabled": true + }, + "httpLoadBalancing": { + "disabled": true + } + }, + "loggingConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS", + "WORKLOADS" + ] + }, + "monitoringConfig": { + "enableComponents": [ + "SYSTEM_COMPONENTS" + ] + }, + "workloadIdentityConfig": { + "workloadPool": "${PROJECT_ID?}.svc.id.goog" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT342 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT342 index 89ac3d6..00818c5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT342 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT342 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765146249, + "timestamp": 1642973303774, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT342", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT342", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "name": "dnsrecordset-sample-srv" + "name": "containercluster-dep-vpcnative" }, "spec": { - "name": "_example._tcp.example.com.", - "type": "SRV", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-srv" - }, - "rrdatas": [ - "0 0 9 tcpserver.cnrm-dns-example.com." - ] + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT343 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT343 index 1e6b8e7..3e92e95 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT343 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT343 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765146267, + "timestamp": 1642973303781, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT343", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT343", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeSubnetwork", "metadata": { - "name": "dnsrecordset-dep-txt" + "name": "containercluster-dep-vpcnative" }, "spec": { - "dnsName": "example.com." + "ipCidrRange": "10.2.0.0/16", + "region": "us-central1", + "networkRef": { + "name": "containercluster-dep-vpcnative" + }, + "secondaryIpRange": [ + { + "rangeName": "servicesrange", + "ipCidrRange": "10.3.0.0/16" + }, + { + "rangeName": "clusterrange", + "ipCidrRange": "10.4.0.0/16" + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT344 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT344 index b8d6141..d513d0a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT344 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT344 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/container_v1beta1_containercluster.yaml" ], - "timestamp": 1628765146288, + "timestamp": 1642973303786, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,107 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT344", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT344", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerCluster", "metadata": { - "name": "dnsrecordset-sample-txt" + "labels": { + "availability": "high", + "target-audience": "production" + }, + "name": "containercluster-sample-vpcnative" }, "spec": { - "name": "example.com.", - "type": "TXT", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-txt" - }, - "rrdatas": [ - "\"This is a sample DNS text record string\"", - "Text records are normally split on spaces", - "To prevent this, \"quote your text like this\"" - ] + "description": "A large regional VPC-native cluster set up with special networking considerations.", + "location": "us-central1", + "initialNodeCount": 1, + "defaultMaxPodsPerNode": 16, + "nodeLocations": [ + "us-central1-a", + "us-central1-b", + "us-central1-c", + "us-central1-f" + ], + "workloadIdentityConfig": { + "workloadPool": "${PROJECT_ID?}.svc.id.goog" + }, + "networkingMode": "VPC_NATIVE", + "networkRef": { + "name": "containercluster-dep-vpcnative" + }, + "subnetworkRef": { + "name": "containercluster-dep-vpcnative" + }, + "ipAllocationPolicy": { + "servicesSecondaryRangeName": "servicesrange", + "clusterSecondaryRangeName": "clusterrange" + }, + "clusterAutoscaling": { + "enabled": true, + "autoscalingProfile": "BALANCED", + "resourceLimits": [ + { + "resourceType": "cpu", + "maximum": 100, + "minimum": 10 + }, + { + "resourceType": "memory", + "maximum": 1000, + "minimum": 100 + } + ] + }, + "maintenancePolicy": { + "dailyMaintenanceWindow": { + "startTime": "00:00" + } + }, + "releaseChannel": { + "channel": "STABLE" + }, + "notificationConfig": { + "pubsub": { + "enabled": true, + "topicRef": { + "name": "containercluster-dep-vpcnative" + } + } + }, + "enableBinaryAuthorization": true, + "enableIntranodeVisibility": true, + "enableShieldedNodes": true, + "addonsConfig": { + "networkPolicyConfig": { + "disabled": false + }, + "dnsCacheConfig": { + "enabled": true + }, + "configConnectorConfig": { + "enabled": true + } + }, + "networkPolicy": { + "enabled": true + }, + "podSecurityPolicyConfig": { + "enabled": true + }, + "verticalPodAutoscaling": { + "enabled": true + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT345 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT345 index 98a8656..2aa8304 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT345 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT345 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/pubsub_v1beta1_pubsubtopic.yaml" ], - "timestamp": 1628765146315, + "timestamp": 1642973303790, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containercluster/vpc-native-container-cluster/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT345", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT345", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", "metadata": { - "name": "dnsrecordset-dep-dnssecdnskey" - }, - "spec": { - "dnsName": "secure.example.com.", - "dnssecConfig": { - "state": "transfer" - } + "name": "containercluster-dep-vpcnative" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT346 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT346 index fb2d596..40981da 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT346 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT346 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/basic-node-pool/container_v1beta1_containercluster.yaml" ], - "timestamp": 1628765146334, + "timestamp": 1642973303793, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/basic-node-pool/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT346", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT346", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerCluster", "metadata": { - "name": "dnsrecordset-sample-dnssecdnskey" + "annotations": { + "cnrm.cloud.google.com/remove-default-node-pool": "true" + }, + "name": "containernodepool-dep-basic" }, "spec": { - "name": "secure.example.com.", - "type": "DNSKEY", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-dnssecdnskey" - }, - "rrdatas": [ - "256 3 8 AwEAAcAPhPM4CQHqg6hZ49y2P3IdKZuF44QNCc50vjATD7W+je4va6djY5JpnNP0pIohKNYiCFap/b4Y9jjJGSOkOfkfBR8neI7X5LisMEGUjwRcrG8J9UYP1S1unTNqRcWyDYFH2q3KnIO08zImh5DiFt8yfCdKoqZUN1dup5hy0UWz" - ] + "location": "us-east1-c", + "initialNodeCount": 1 } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT347 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT347 index 3ef15ae..110ebbc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT347 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT347 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/basic-node-pool/container_v1beta1_containernodepool.yaml" ], - "timestamp": 1628765146359, + "timestamp": 1642973303796, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,62 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/basic-node-pool/container_v1beta1_containernodepool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT347", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containernodepool" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT347", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerNodePool", "metadata": { - "name": "dnsrecordset-dep-dnssecds" + "labels": { + "label-one": "value-one" + }, + "name": "containernodepool-sample-basic" }, "spec": { - "dnsName": "secure.example.com.", - "dnssecConfig": { - "state": "on" + "location": "us-east1-c", + "autoscaling": { + "minNodeCount": 1, + "maxNodeCount": 3 + }, + "nodeConfig": { + "machineType": "n1-standard-1", + "diskSizeGb": 100, + "diskType": "pd-standard", + "tags": [ + "tagone", + "tagtwo" + ], + "preemptible": false, + "minCpuPlatform": "Intel Haswell", + "oauthScopes": [ + "https://www.googleapis.com/auth/logging.write", + "https://www.googleapis.com/auth/monitoring" + ], + "guestAccelerator": [ + { + "type": "nvidia-tesla-k80", + "count": 1 + } + ], + "metadata": { + "disable-legacy-endpoints": "true" + } + }, + "management": { + "autoRepair": true, + "autoUpgrade": true + }, + "clusterRef": { + "name": "containernodepool-dep-basic" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT348 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT348 index f546c15..3af314f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT348 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT348 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/compute_v1beta1_computenodegroup.yaml" ], - "timestamp": 1628765146375, + "timestamp": 1642973303800, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/compute_v1beta1_computenodegroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT348", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodegroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT348", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNodeGroup", "metadata": { - "name": "dnsrecordset-sample-dnssecds" + "name": "containernodepool-dep-soletenancy" }, "spec": { - "name": "host.secure.example.com.", - "type": "DS", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-dnssecds" + "description": "A single sole-tenant node in the us-central1-b zone.", + "size": 1, + "nodeTemplateRef": { + "name": "containernodepool-dep-soletenancy" }, - "rrdatas": [ - "31523 5 1 c8761ba5defc26ac7b78e076d7c47fa9f86b9fba" - ] + "zone": "us-central1-b" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT349 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT349 index 79d8859..df54fd1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT349 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT349 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/compute_v1beta1_computenodetemplate.yaml" ], - "timestamp": 1628765146392, + "timestamp": 1642973303804, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/compute_v1beta1_computenodetemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT349", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenodetemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT349", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNodeTemplate", "metadata": { - "name": "dnsrecordset-dep-dnssecipsecvpnkey" + "name": "containernodepool-dep-soletenancy" }, "spec": { - "dnsName": "secure.example.com.", - "dnssecConfig": { - "state": "on" - } + "region": "us-central1", + "nodeType": "n1-node-96-624" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT35 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT35 index e0f2a1a..8c11b8c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT35 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT35 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" ], - "timestamp": 1628765138998, + "timestamp": 1642973301833, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT35", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableappprofile" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT35", "collection": "kcctemplate", "json": { "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableInstance", + "kind": "BigtableAppProfile", "metadata": { - "name": "bigtableappprofile-dep-multi" + "name": "bigtableappprofile-sample-multicluster", + "annotations": { + "cnrm.cloud.google.com/ignore-warnings": "true" + } }, "spec": { - "displayName": "BigtableSample", - "cluster": [ - { - "clusterId": "bigtableappprofile-dep1-multi", - "zone": "us-central1-a", - "numNodes": 3 - }, - { - "clusterId": "bigtableappprofile-dep2-multi", - "zone": "us-west1-a", - "numNodes": 3 - } - ] + "description": "Automatically routes requests to the nearest available cluster in an instance.", + "instanceRef": { + "name": "bigtableappprofile-dep-multi" + }, + "multiClusterRoutingUseAny": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT350 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT350 index 060e594..495138c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT350 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT350 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/container_v1beta1_containercluster.yaml" ], - "timestamp": 1628765146416, + "timestamp": 1642973303807, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT350", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT350", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerCluster", "metadata": { - "name": "dnsrecordset-sample-dnssecipsecvpnkey" + "annotations": { + "cnrm.cloud.google.com/remove-default-node-pool": "true" + }, + "name": "containernodepool-dep-soletenancy" }, "spec": { - "name": "service.secure.example.com.", - "type": "IPSECKEY", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-dnssecipsecvpnkey" - }, - "rrdatas": [ - "10 1 2 192.0.2.3 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==" - ] + "description": "A cluster using the Compute Engine sole-tenant node.", + "location": "us-central1-b", + "initialNodeCount": 1 } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT351 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT351 index 02e070e..5815184 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT351 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT351 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/container_v1beta1_containernodepool.yaml" ], - "timestamp": 1628765146435, + "timestamp": 1642973303810, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsmanagedzone.yaml" + "/samples/resources/containernodepool/sole-tenant-node-pool/container_v1beta1_containernodepool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT351", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containernodepool" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT351", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSManagedZone", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerNodePool", "metadata": { - "name": "dnsrecordset-dep-dnssecsshfp" + "name": "containernodepool-sample-soletenancy" }, "spec": { - "dnsName": "secure.example.com.", - "dnssecConfig": { - "state": "on" + "location": "us-central1-b", + "autoscaling": { + "minNodeCount": 1, + "maxNodeCount": 3 + }, + "nodeConfig": { + "machineType": "n1-standard-2", + "nodeGroupRef": { + "name": "containernodepool-dep-soletenancy" + } + }, + "clusterRef": { + "name": "containernodepool-dep-soletenancy" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT352 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT352 index c6fc334..3fba780 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT352 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT352 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" ], - "timestamp": 1628765146463, + "timestamp": 1642973303813, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsrecordset.yaml" + "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT352", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataflowflextemplatejob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT352", "collection": "kcctemplate", "json": { - "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", - "kind": "DNSRecordSet", + "apiVersion": "dataflow.cnrm.cloud.google.com/v1beta1", + "kind": "DataflowFlexTemplateJob", "metadata": { - "name": "dnsrecordset-sample-dnssecsshfp" + "annotations": { + "cnrm.cloud.google.com/on-delete": "cancel" + }, + "name": "dataflowflextemplatejob-sample-batch" }, "spec": { - "name": "host.secure.example.com.", - "type": "SSHFP", - "ttl": 300, - "managedZoneRef": { - "name": "dnsrecordset-dep-dnssecsshfp" - }, - "rrdatas": [ - "2 1 123456789abcdef67890123456789abcdef67890" - ] + "region": "us-central1", + "containerSpecGcsPath": "gs://dataflow-templates/2020-08-31-00_RC00/flex/File_Format_Conversion", + "parameters": { + "inputFileFormat": "csv", + "outputFileFormat": "avro", + "inputFileSpec": "gs://config-connector-samples/dataflowflextemplate/numbertest.csv", + "outputBucket": "gs://${PROJECT_ID?}-dataflowflextemplatejob-dep-batch", + "schema": "gs://config-connector-samples/dataflowflextemplate/numbers.avsc" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT353 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT353 index 2445f61..bc5ca45 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT353 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT353 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/firestoreindex/firestore_v1beta1_firestoreindex.yaml" + "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/storage_v1beta1_storagebucket.yaml" ], - "timestamp": 1628765146488, + "timestamp": 1642973303817, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/firestoreindex/firestore_v1beta1_firestoreindex.yaml" + "/samples/resources/dataflowflextemplatejob/batch-dataflow-flex-template-job/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT353", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT353", "collection": "kcctemplate", "json": { - "apiVersion": "firestore.cnrm.cloud.google.com/v1beta1", - "kind": "FirestoreIndex", + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", "metadata": { - "name": "firestoreindex-sample" - }, - "spec": { - "collection": "sample-collection", - "fields": [ - { - "fieldPath": "field1", - "order": "ASCENDING" - }, - { - "fieldPath": "field2", - "order": "DESCENDING" - } - ], - "queryScope": "COLLECTION" + "name": "${PROJECT_ID?}-dataflowflextemplatejob-dep-batch" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT354 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT354 index 84481a8..2da903f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT354 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT354 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/folder/folder-in-folder/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerydataset.yaml" ], - "timestamp": 1628765146507, + "timestamp": 1642973303826, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/folder/folder-in-folder/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT354", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT354", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Folder", + "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", + "kind": "BigQueryDataset", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "folder-sample-in-folder" - }, - "spec": { - "displayName": "Config Connector Sample", - "folderRef": { - "external": "${FOLDER_ID?}" - } + "name": "dataflowflextemplatejobdepstreaming" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT355 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT355 index 4753e36..fcc6295 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT355 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT355 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/folder/folder-in-org/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerytable.yaml" ], - "timestamp": 1628765146535, + "timestamp": 1642973303837, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/folder/folder-in-org/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT355", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT355", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Folder", + "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", + "kind": "BigQueryTable", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "folder-sample-in-org" + "name": "dataflowflextemplatejobdepstreaming" }, "spec": { - "displayName": "Config Connector Sample", - "organizationRef": { - "external": "${ORG_ID?}" + "datasetRef": { + "name": "dataflowflextemplatejobdepstreaming" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT356 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT356 index 2d4d575..eeb0dad 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT356 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT356 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gameservicesrealm/gameservices_v1beta1_gameservicesrealm.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" ], - "timestamp": 1628765146560, + "timestamp": 1642973303841, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gameservicesrealm/gameservices_v1beta1_gameservicesrealm.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/dataflow_v1beta1_dataflowflextemplatejob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT356", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataflowflextemplatejob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT356", "collection": "kcctemplate", "json": { - "apiVersion": "gameservices.cnrm.cloud.google.com/v1beta1", - "kind": "GameServicesRealm", + "apiVersion": "dataflow.cnrm.cloud.google.com/v1beta1", + "kind": "DataflowFlexTemplateJob", "metadata": { - "labels": { - "label-one": "value-one" + "annotations": { + "cnrm.cloud.google.com/on-delete": "drain" }, - "name": "realm-sample" + "name": "dataflowflextemplatejob-sample-streaming" }, "spec": { - "timeZone": "EST", - "location": "us-east1" + "region": "us-central1", + "containerSpecGcsPath": "gs://dataflow-templates/2020-08-31-00_RC00/flex/PubSub_Avro_to_BigQuery", + "parameters": { + "schemaPath": "gs://config-connector-samples/dataflowflextemplate/numbers.avsc", + "inputSubscription": "projects/${PROJECT_ID?}/subscriptions/dataflowflextemplatejob-dep-streaming", + "outputTopic": "projects/${PROJECT_ID?}/topics/dataflowflextemplatejob-dep1-streaming", + "outputTableSpec": "${PROJECT_ID?}:dataflowflextemplatejobdepstreaming.dataflowflextemplatejobdepstreaming", + "createDisposition": "CREATE_NEVER" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT357 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT357 index 0342f14..18c6977 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT357 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT357 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubsubscription.yaml" ], - "timestamp": 1628765146579, + "timestamp": 1642973303847, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubsubscription.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT357", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubsubscription" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT357", "collection": "kcctemplate", "json": { - "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", - "kind": "GKEHubFeature", + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubSubscription", "metadata": { - "name": "gkehubfeature-sample-acmfeature", - "labels": { - "label-one": "value-one" - } + "name": "dataflowflextemplatejob-dep-streaming" }, "spec": { - "projectRef": { - "name": "gkehubfeature-dep-acmfeature" - }, - "location": "global", - "resourceID": "configmanagement" + "topicRef": { + "name": "dataflowflextemplatejob-dep0-streaming" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT358 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT358 index 68aab22..88656f5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT358 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT358 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" ], - "timestamp": 1628765146599, + "timestamp": 1642973303852, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT358", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT358", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", "metadata": { - "annotations": { - "cnrm.cloud.google.com/auto-create-network": "false" - }, - "name": "gkehubfeature-dep-acmfeature" - }, - "spec": { - "name": "Config Connector Sample", - "organizationRef": { - "external": "${ORG_ID?}" - }, - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" - } + "name": "dataflowflextemplatejob-dep0-streaming" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT359 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT359 index a5955ce..052e659 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT359 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT359 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" ], - "timestamp": 1628765146633, + "timestamp": 1642973303857, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataflowflextemplatejob/streaming-dataflow-flex-template-job/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT359", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT359", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", "metadata": { - "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false" - }, - "name": "gkehubfeature-dep-acmfeature-1" - }, - "spec": { - "projectRef": { - "name": "gkehubfeature-dep-acmfeature" - }, - "resourceID": "gkehub.googleapis.com" + "name": "dataflowflextemplatejob-dep1-streaming" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT36 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT36 index 9c7fa95..280ae55 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT36 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT36 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" + "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" ], - "timestamp": 1628765139019, + "timestamp": 1642973301838, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" + "/samples/resources/bigtableappprofile/multicluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT36", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT36", "collection": "kcctemplate", "json": { "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableAppProfile", + "kind": "BigtableInstance", "metadata": { - "name": "bigtableappprofile-sample-singlecluster" + "name": "bigtableappprofile-dep-multi" }, "spec": { - "description": "Routes all requests to a single cluster. If that cluster becomes unavailable, you must manually fail over to another cluster.", - "instanceRef": { - "name": "bigtableappprofile-dep-single" - }, - "singleClusterRouting": { - "allowTransactionalWrites": true, - "clusterId": "bigtableappprofile-dep1-single" - } + "displayName": "BigtableSample", + "cluster": [ + { + "clusterId": "bigtableappprofile-dep1-multi", + "zone": "us-central1-a", + "numNodes": 3 + }, + { + "clusterId": "bigtableappprofile-dep2-multi", + "zone": "us-west1-a", + "numNodes": 3 + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT360 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT360 index 8112e93..108a1ee 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT360 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT360 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataflowjob/batch-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" ], - "timestamp": 1628765146652, + "timestamp": 1642973303861, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataflowjob/batch-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT360", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataflowjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT360", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "dataflow.cnrm.cloud.google.com/v1beta1", + "kind": "DataflowJob", "metadata": { "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false" + "cnrm.cloud.google.com/on-delete": "cancel" }, - "name": "gkehubfeature-dep-acmfeature-2" + "labels": { + "label-one": "value-one" + }, + "name": "dataflowjob-sample-batch" }, "spec": { - "projectRef": { - "name": "gkehubfeature-dep-acmfeature" + "tempGcsLocation": "gs://${PROJECT_ID?}-dataflowjob-dep-batch/tmp", + "templateGcsPath": "gs://dataflow-templates/2020-02-03-01_RC00/Word_Count", + "parameters": { + "inputFile": "gs://dataflow-samples/shakespeare/various.txt", + "output": "gs://${PROJECT_ID?}-dataflowjob-dep-batch/output" }, - "resourceID": "anthosconfigmanagement.googleapis.com" + "zone": "us-central1-a", + "machineType": "n1-standard-1", + "maxWorkers": 3, + "ipConfiguration": "WORKER_IP_PUBLIC" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT361 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT361 index de73b86..e64a288 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT361 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT361 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/container_v1beta1_containercluster.yaml" + "/samples/resources/dataflowjob/batch-dataflow-job/storage_v1beta1_storagebucket.yaml" ], - "timestamp": 1628765146673, + "timestamp": 1642973303864, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/container_v1beta1_containercluster.yaml" + "/samples/resources/dataflowjob/batch-dataflow-job/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT361", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT361", "collection": "kcctemplate", "json": { - "apiVersion": "container.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerCluster", + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", "metadata": { "annotations": { - "cnrm.cloud.google.com/project-id": "gkehubfeature-dep-mcifeature" + "cnrm.cloud.google.com/force-destroy": "true" }, - "name": "gkehubfeature-dep-mcifeature" - }, - "spec": { - "location": "us-central1-a", - "initialNodeCount": 1, - "workloadIdentityConfig": { - "identityNamespace": "gkehubfeature-dep-mcifeature.svc.id.goog" - } + "name": "${PROJECT_ID?}-dataflowjob-dep-batch" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT362 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT362 index 1da4c22..f40a4fc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT362 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT362 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerydataset.yaml" ], - "timestamp": 1628765146698, + "timestamp": 1642973303867, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerydataset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT362", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerydataset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT362", "collection": "kcctemplate", "json": { - "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", - "kind": "GKEHubFeature", + "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", + "kind": "BigQueryDataset", "metadata": { - "name": "gkehubfeature-sample-mcifeature", - "labels": { - "label-one": "value-one" - } - }, - "spec": { - "projectRef": { - "name": "gkehubfeature-dep-mcifeature" - }, - "location": "global", - "resourceID": "multiclusteringress", - "spec": { - "multiclusteringress": { - "configMembershipRef": { - "name": "gkehubfeature-dep-mcifeature" - } - } - } + "name": "dataflowjobdepstreaming" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT363 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT363 index 56e5353..6279eee 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT363 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT363 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerytable.yaml" ], - "timestamp": 1628765146720, + "timestamp": 1642973303871, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,35 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/bigquery_v1beta1_bigquerytable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT363", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigquerytable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT363", "collection": "kcctemplate", "json": { - "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", - "kind": "GKEHubMembership", + "apiVersion": "bigquery.cnrm.cloud.google.com/v1beta1", + "kind": "BigQueryTable", "metadata": { - "annotations": { - "cnrm.cloud.google.com/project-id": "gkehubfeature-dep-mcifeature" - }, - "name": "gkehubfeature-dep-mcifeature" + "name": "dataflowjobdepstreaming" }, "spec": { - "location": "global", - "authority": { - "issuer": "https://container.googleapis.com/v1/projects/gkehubfeature-dep-mcifeature/locations/us-central1-a/clusters/gkehubfeature-dep-mcifeature" - }, - "description": "A sample GKE Hub membership", - "endpoint": { - "gkeCluster": { - "resourceRef": { - "name": "gkehubfeature-dep-mcifeature" - } - } + "datasetRef": { + "name": "dataflowjobdepstreaming" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT364 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT364 index b633060..5088748 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT364 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT364 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" ], - "timestamp": 1628765146742, + "timestamp": 1642973303876, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/dataflow_v1beta1_dataflowjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT364", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataflowjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT364", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "dataflow.cnrm.cloud.google.com/v1beta1", + "kind": "DataflowJob", "metadata": { - "name": "gkehubfeature-dep-mcifeature" + "annotations": { + "cnrm.cloud.google.com/on-delete": "cancel" + }, + "labels": { + "label-one": "value-one" + }, + "name": "dataflowjob-sample-streaming" }, "spec": { - "name": "Config Connector Sample", - "organizationRef": { - "external": "${ORG_ID?}" + "tempGcsLocation": "gs://${PROJECT_ID?}-dataflowjob-dep-streaming/tmp", + "templateGcsPath": "gs://dataflow-templates/2020-02-03-01_RC00/PubSub_to_BigQuery", + "parameters": { + "inputTopic": "projects/${PROJECT_ID?}/topics/dataflowjob-dep-streaming", + "outputTableSpec": "${PROJECT_ID?}:dataflowjobdepstreaming.dataflowjobdepstreaming" }, - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" - } + "zone": "us-central1-a", + "machineType": "n1-standard-1", + "maxWorkers": 3, + "ipConfiguration": "WORKER_IP_PUBLIC" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT365 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT365 index b233ff9..12de715 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT365 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT365 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/pubsub_v1beta1_pubsubtopic.yaml" ], - "timestamp": 1628765146781, + "timestamp": 1642973303880, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT365", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT365", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", "metadata": { - "annotations": { - "cnrm.cloud.google.com/deletion-policy": "abandon" - }, - "name": "gkehubfeature-dep-mcifeature-1" - }, - "spec": { - "projectRef": { - "name": "gkehubfeature-dep-mcifeature" - }, - "resourceID": "container.googleapis.com" + "name": "dataflowjob-dep-streaming" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT366 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT366 index 347bac3..a14b090 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT366 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT366 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/storage_v1beta1_storagebucket.yaml" ], - "timestamp": 1628765146803, + "timestamp": 1642973303884, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataflowjob/streaming-dataflow-job/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT366", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT366", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", "metadata": { "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false" + "cnrm.cloud.google.com/force-destroy": "true" }, - "name": "gkehubfeature-dep-mcifeature-2" - }, - "spec": { - "projectRef": { - "name": "gkehubfeature-dep-mcifeature" - }, - "resourceID": "gkehub.googleapis.com" + "name": "${PROJECT_ID?}-dataflowjob-dep-streaming" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT367 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT367 index c2df42b..c1eef5f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT367 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT367 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_2.yaml" + "/samples/resources/datafusioninstance/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765146823, + "timestamp": 1642973303887, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_2.yaml" + "/samples/resources/datafusioninstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT367", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT367", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false" - }, - "name": "gkehubfeature-dep-mcifeature-3" + "name": "datafusioninstance-dep" }, "spec": { - "projectRef": { - "name": "gkehubfeature-dep-mcifeature" - }, - "resourceID": "multiclusteringress.googleapis.com" + "routingMode": "GLOBAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT368 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT368 index 5fe2fd4..d2bb298 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT368 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT368 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_3.yaml" + "/samples/resources/datafusioninstance/datafusion_v1beta1_datafusioninstance.yaml" ], - "timestamp": 1628765146841, + "timestamp": 1642973303890, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_3.yaml" + "/samples/resources/datafusioninstance/datafusion_v1beta1_datafusioninstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT368", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "datafusioninstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT368", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "datafusion.cnrm.cloud.google.com/v1beta1", + "kind": "DataFusionInstance", "metadata": { - "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false" + "labels": { + "label-one": "value-one" }, - "name": "gkehubfeature-dep-mcifeature-4" + "name": "datafusioninstance-sample" }, "spec": { - "projectRef": { - "name": "gkehubfeature-dep-mcifeature" + "description": "A sample DataFusion instance.", + "displayName": "Sample DataFusion Instance", + "location": "us-central1", + "type": "BASIC", + "enableStackdriverMonitoring": true, + "enableStackdriverLogging": true, + "privateInstance": true, + "networkConfig": { + "networkRef": { + "name": "datafusioninstance-dep" + }, + "ipAllocation": "10.89.48.0/22" }, - "resourceID": "multiclusterservicediscovery.googleapis.com" + "dataprocServiceAccountRef": { + "name": "datafusioninstance-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT369 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT369 index 022cf0b..f2c6686 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT369 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT369 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/datafusioninstance/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765146860, + "timestamp": 1642973303892, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/datafusioninstance/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT369", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT369", "collection": "kcctemplate", "json": { - "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", - "kind": "GKEHubFeature", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "gkehubfeature-sample-mcsdfeature" + "name": "datafusioninstance-dep" }, "spec": { - "projectRef": { - "name": "gkehubfeature-dep-mcsdfeature" - }, - "location": "global", - "resourceID": "multiclusterservicediscovery" + "displayName": "DataFusionInstance Service Account" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT37 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT37 index deb6ec4..2d49d44 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT37 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT37 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" ], - "timestamp": 1628765139037, + "timestamp": 1642973301842, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,35 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableappprofile.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT37", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableappprofile" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT37", "collection": "kcctemplate", "json": { "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableInstance", + "kind": "BigtableAppProfile", "metadata": { - "name": "bigtableappprofile-dep-single" + "name": "bigtableappprofile-sample-singlecluster" }, "spec": { - "displayName": "BigtableSample", - "instanceType": "PRODUCTION", - "cluster": [ - { - "clusterId": "bigtableappprofile-dep1-single", - "zone": "us-central1-a", - "numNodes": 3 - }, - { - "clusterId": "bigtableappprofile-dep2-single", - "zone": "us-west1-a", - "numNodes": 3 - } - ] + "description": "Routes all requests to a single cluster. If that cluster becomes unavailable, you must manually fail over to another cluster.", + "instanceRef": { + "name": "bigtableappprofile-dep-single" + }, + "singleClusterRouting": { + "allowTransactionalWrites": true, + "clusterId": "bigtableappprofile-dep1-single" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT370 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT370 index 2bfd471..32e6ae8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT370 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT370 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataprocautoscalingpolicy/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], - "timestamp": 1628765146900, + "timestamp": 1642973303895, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dataprocautoscalingpolicy/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT370", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataprocautoscalingpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT370", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", + "kind": "DataprocAutoscalingPolicy", "metadata": { - "annotations": { - "cnrm.cloud.google.com/auto-create-network": "false" - }, - "name": "gkehubfeature-dep-mcsdfeature" + "name": "dataprocautoscalingpolicy-sample" }, "spec": { - "name": "Config Connector Sample", - "organizationRef": { - "external": "${ORG_ID?}" + "location": "us-central1", + "workerConfig": { + "maxInstances": 2 + }, + "secondaryWorkerConfig": { + "maxInstances": 2 }, - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" + "basicAlgorithm": { + "yarnConfig": { + "gracefulDecommissionTimeout": "60s", + "scaleDownFactor": 0.5, + "scaleUpFactor": 0.5 + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT371 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT371 index f746628..a3fbe3e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT371 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT371 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataproccluster/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], - "timestamp": 1628765146950, + "timestamp": 1642973303897, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dataproccluster/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT371", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataprocautoscalingpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT371", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", + "kind": "DataprocAutoscalingPolicy", "metadata": { - "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false" - }, - "name": "gkehubfeature-dep-mcsdfeature-1" + "annotations": null, + "name": "dataproccluster-dep" }, "spec": { - "projectRef": { - "name": "gkehubfeature-dep-mcsdfeature" + "location": "us-central1", + "workerConfig": { + "maxInstances": 5 + }, + "secondaryWorkerConfig": { + "maxInstances": 2 }, - "resourceID": "gkehub.googleapis.com" + "basicAlgorithm": { + "yarnConfig": { + "gracefulDecommissionTimeout": "30s", + "scaleDownFactor": 0.5, + "scaleUpFactor": 0.5 + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT372 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT372 index ab98cd9..db192a8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT372 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT372 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataproccluster/dataproc_v1beta1_dataproccluster.yaml" ], - "timestamp": 1628765146974, + "timestamp": 1642973303901, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,72 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dataproccluster/dataproc_v1beta1_dataproccluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT372", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataproccluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT372", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", + "kind": "DataprocCluster", "metadata": { "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false" + "cnrm.cloud.google.com/management-conflict-prevention-policy": "none" }, - "name": "gkehubfeature-dep-mcsdfeature-2" + "name": "dataproccluster-sample", + "labels": { + "label-one": "value-one" + } }, "spec": { - "projectRef": { - "name": "gkehubfeature-dep-mcsdfeature" - }, - "resourceID": "multiclusterservicediscovery.googleapis.com" + "location": "us-central1", + "config": { + "autoscalingConfig": { + "policyRef": { + "name": "dataproccluster-dep" + } + }, + "stagingBucketRef": { + "name": "dataproccluster-dep-staging" + }, + "masterConfig": { + "diskConfig": { + "bootDiskSizeGb": 30, + "bootDiskType": "pd-standard" + }, + "machineType": "n2-standard-2", + "numInstances": 1 + }, + "workerConfig": { + "numInstances": 2, + "machineType": "n2-standard-2", + "diskConfig": { + "bootDiskSizeGb": 30, + "numLocalSsds": 1 + } + }, + "softwareConfig": { + "imageVersion": "2.0.27-debian10" + }, + "gceClusterConfig": { + "tags": [ + "foo", + "bar" + ] + }, + "initializationActions": [ + { + "executableFile": "gs://dataproc-initialization-actions/stackdriver/stackdriver.sh", + "executionTimeout": "500s" + } + ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT373 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT373 index 7378a0b..5c7dbdb 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT373 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT373 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeaturemembership/container_v1beta1_containercluster.yaml" + "/samples/resources/dataproccluster/storage_v1beta1_storagebucket.yaml" ], - "timestamp": 1628765147003, + "timestamp": 1642973303906, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/container_v1beta1_containercluster.yaml" + "/samples/resources/dataproccluster/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT373", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT373", "collection": "kcctemplate", "json": { - "apiVersion": "container.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerCluster", + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", "metadata": { "annotations": { - "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" + "cnrm.cloud.google.com/force-destroy": "true" }, - "name": "gkehubfeaturemembership-dep" + "labels": { + "label-one": "value-one" + }, + "name": "dataproccluster-dep-staging" }, "spec": { - "location": "us-central1-a", - "initialNodeCount": 1, - "workloadIdentityConfig": { - "identityNamespace": "gkehubfeaturemembership-dep.svc.id.goog" - } + "resourceID": "${PROJECT_ID?}-dataproccluster-dep-staging", + "bucketPolicyOnly": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT374 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT374 index 7dd682d..7c3e404 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT374 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT374 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], - "timestamp": 1628765147032, + "timestamp": 1642973303910, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeature.yaml" + "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocautoscalingpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT374", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataprocautoscalingpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT374", "collection": "kcctemplate", "json": { - "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", - "kind": "GKEHubFeature", + "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", + "kind": "DataprocAutoscalingPolicy", "metadata": { - "name": "gkehubfeaturemembership-dep" + "name": "dataprocworkflowtemplate-dep" }, "spec": { - "projectRef": { - "name": "gkehubfeaturemembership-dep" + "location": "us-central1", + "workerConfig": { + "maxInstances": 5 }, - "location": "global", - "resourceID": "configmanagement" + "secondaryWorkerConfig": { + "maxInstances": 2 + }, + "basicAlgorithm": { + "yarnConfig": { + "gracefulDecommissionTimeout": "30s", + "scaleDownFactor": 0.5, + "scaleUpFactor": 1 + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT375 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT375 index 31b98ba..3049f7c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT375 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT375 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeaturemembership.yaml" + "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocworkflowtemplate.yaml" ], - "timestamp": 1628765147073, + "timestamp": 1642973303913, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,62 +15,82 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeaturemembership.yaml" + "/samples/resources/dataprocworkflowtemplate/dataproc_v1beta1_dataprocworkflowtemplate.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT375", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dataprocworkflowtemplate" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT375", "collection": "kcctemplate", "json": { - "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", - "kind": "GKEHubFeatureMembership", + "apiVersion": "dataproc.cnrm.cloud.google.com/v1beta1", + "kind": "DataprocWorkflowTemplate", "metadata": { - "name": "gkehubfeaturemembership-sample" + "labels": { + "label-one": "value-one" + }, + "name": "dataprocworkflowtemplate-sample" }, "spec": { - "projectRef": { - "name": "gkehubfeaturemembership-dep" - }, - "location": "global", - "membershipRef": { - "name": "gkehubfeaturemembership-dep" - }, - "featureRef": { - "name": "gkehubfeaturemembership-dep" + "location": "us-central1", + "placement": { + "managedCluster": { + "clusterName": "test-cluster", + "config": { + "autoscalingConfig": { + "policyRef": { + "name": "dataprocworkflowtemplate-dep" + } + }, + "masterConfig": { + "diskConfig": { + "bootDiskSizeGb": 30, + "bootDiskType": "pd-standard" + }, + "machineType": "n2-standard-8", + "numInstances": 1 + }, + "workerConfig": { + "numInstances": 2, + "machineType": "n2-standard-8", + "diskConfig": { + "bootDiskSizeGb": 30, + "numLocalSsds": 1 + } + }, + "softwareConfig": { + "imageVersion": "2.0.27-debian10" + }, + "gceClusterConfig": { + "tags": [ + "foo", + "bar" + ] + } + } + } }, - "configmanagement": { - "version": "1.6.2", - "configSync": { - "sourceFormat": "unstructured", - "git": { - "syncRepo": "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit", - "syncBranch": "master", - "policyDir": "config-connector", - "syncWaitSecs": "20", - "syncRev": "HEAD" + "jobs": [ + { + "stepId": "someJob", + "sparkJob": { + "mainClass": "SomeClass" } }, - "policyController": { - "enabled": true, - "exemtableNamespaces": [ - "test-namespace" + { + "stepId": "otherJob", + "prerequisiteStepIds": [ + "someJob" ], - "referentialRulesEnabled": true, - "logDeniesEnabled": true, - "templateLibraryInstalled": true, - "auditIntervalSeconds": "20" - }, - "binauthz": { - "enabled": true - }, - "hierarchicalController": { - "enabled": true, - "enablePodTreeLabels": true, - "enableHierarchicalResourceQuota": true + "prestoJob": { + "queryFileUri": "someUri" + } } - } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT376 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT376 index 5161079..ab87780 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT376 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT376 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dnsmanagedzone/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765147100, + "timestamp": 1642973303918, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dnsmanagedzone/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT376", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT376", "collection": "kcctemplate", "json": { - "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", - "kind": "GKEHubMembership", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "annotations": { - "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" - }, - "name": "gkehubfeaturemembership-dep" + "name": "dnsmanagedzone-dep" }, "spec": { - "location": "global", - "authority": { - "issuer": "https://container.googleapis.com/v1/projects/gkehubfeaturemembership-dep/locations/us-central1-a/clusters/gkehubfeaturemembership-dep" - }, - "description": "A sample GKE Hub membership", - "endpoint": { - "gkeCluster": { - "resourceRef": { - "name": "gkehubfeaturemembership-dep" - } - } - } + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT377 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT377 index 90a6462..63e1842 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT377 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT377 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeaturemembership/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsmanagedzone/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147128, + "timestamp": 1642973303922, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsmanagedzone/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT377", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT377", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "name": "gkehubfeaturemembership-dep" + "labels": { + "label-one": "value-one" + }, + "name": "dnsmanagedzone-sample" }, "spec": { - "name": "Config Connector Sample", - "organizationRef": { - "external": "${ORG_ID?}" - }, - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" + "description": "Example DNS zone", + "dnsName": "cnrm-dns-example.com.", + "visibility": "private", + "privateVisibilityConfig": { + "networks": [ + { + "networkRef": { + "name": "dnsmanagedzone-dep" + } + } + ] } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT378 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT378 index 965e914..70148d3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT378 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT378 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dnspolicy/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765147193, + "timestamp": 1642973303926, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_0.yaml" + "/samples/resources/dnspolicy/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT378", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT378", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false", - "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" - }, - "name": "gkehubfeaturemembership-dep-1" + "name": "dnspolicy-dep" }, "spec": { - "resourceID": "container.googleapis.com" + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT379 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT379 index 39e5b10..c6e26e8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT379 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT379 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dnspolicy/dns_v1beta1_dnspolicy.yaml" ], - "timestamp": 1628765147219, + "timestamp": 1642973303935, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_1.yaml" + "/samples/resources/dnspolicy/dns_v1beta1_dnspolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT379", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnspolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT379", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSPolicy", "metadata": { - "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false", - "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" - }, - "name": "gkehubfeaturemembership-dep-2" + "name": "dnspolicy-sample" }, "spec": { - "resourceID": "gkehub.googleapis.com" + "alternativeNameServerConfig": { + "targetNameServers": [ + { + "ipv4Address": "104.132.166.92" + } + ] + }, + "description": "Example DNS policy", + "enableInboundForwarding": true, + "enableLogging": true, + "networks": [ + { + "networkRef": { + "name": "dnspolicy-dep" + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT38 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT38 index e2cb71d..558d07c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT38 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT38 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtablegcpolicy.yaml" + "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" ], - "timestamp": 1628765139057, + "timestamp": 1642973301845, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtablegcpolicy.yaml" + "/samples/resources/bigtableappprofile/single-cluster-bigtable-app-profile/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT38", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT38", "collection": "kcctemplate", "json": { "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableGCPolicy", + "kind": "BigtableInstance", "metadata": { - "name": "bigtablegcpolicy-sample" + "name": "bigtableappprofile-dep-single" }, "spec": { - "tableRef": { - "name": "bigtablegcpolicy-dep" - }, - "columnFamily": "family1", - "instanceRef": { - "name": "bigtablegcpolicy-dep" - }, - "mode": "INTERSECTION", - "maxAge": [ + "displayName": "BigtableSample", + "instanceType": "PRODUCTION", + "cluster": [ { - "duration": "24h" - } - ], - "maxVersion": [ + "clusterId": "bigtableappprofile-dep1-single", + "zone": "us-central1-a", + "numNodes": 3 + }, { - "number": 10 + "clusterId": "bigtableappprofile-dep2-single", + "zone": "us-west1-a", + "numNodes": 3 } ] } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT380 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT380 index f4da4f3..03c5e33 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT380 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT380 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_2.yaml" + "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147250, + "timestamp": 1642973303939, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_2.yaml" + "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT380", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT380", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "annotations": { - "cnrm.cloud.google.com/disable-dependent-services": "false", - "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" - }, - "name": "gkehubfeaturemembership-dep-3" + "name": "dnsrecordset-dep-a" }, "spec": { - "resourceID": "anthosconfigmanagement.googleapis.com" + "dnsName": "example.com." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT381 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT381 index 7722ece..c2f10e0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT381 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT381 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubmembership/container_v1beta1_containercluster.yaml" + "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147278, + "timestamp": 1642973303944, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubmembership/container_v1beta1_containercluster.yaml" + "/samples/resources/dnsrecordset/dns-a-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT381", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT381", "collection": "kcctemplate", "json": { - "apiVersion": "container.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerCluster", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "name": "gkehubmembership-dep" + "name": "dnsrecordset-sample-a" }, "spec": { - "location": "us-central1-a", - "initialNodeCount": 1, - "workloadIdentityConfig": { - "identityNamespace": "${PROJECT_ID?}.svc.id.goog" - } + "name": "www.example.com.", + "type": "A", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-a" + }, + "rrdatas": [ + "8.8.8.8" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT382 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT382 index 383f82c..4f4569b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT382 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT382 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/gkehubmembership/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147298, + "timestamp": 1642973303947, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/gkehubmembership/gkehub_v1beta1_gkehubmembership.yaml" + "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT382", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT382", "collection": "kcctemplate", "json": { - "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", - "kind": "GKEHubMembership", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "gkehubmembership-sample" + "name": "dnsrecordset-dep-aaaa" }, "spec": { - "location": "global", - "authority": { - "issuer": "https://container.googleapis.com/v1/projects/${PROJECT_ID?}/locations/us-central1-a/clusters/gkehubmembership-dep" - }, - "description": "A sample GKE Hub membership", - "endpoint": { - "gkeCluster": { - "resourceRef": { - "name": "gkehubmembership-dep" - } - } - } + "dnsName": "example.com." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT383 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT383 index 22a17f8..e3544ec 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT383 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT383 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamauditconfig/iam_v1beta1_iamauditconfig.yaml" + "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147325, + "timestamp": 1642973303952, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamauditconfig/iam_v1beta1_iamauditconfig.yaml" + "/samples/resources/dnsrecordset/dns-aaaa-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT383", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT383", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMAuditConfig", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "name": "iamauditconfig-sample" + "name": "dnsrecordset-sample-aaaa" }, "spec": { - "service": "allServices", - "auditLogConfigs": [ - { - "logType": "DATA_WRITE" - }, - { - "logType": "DATA_READ", - "exemptedMembers": [ - "serviceAccount:iamauditconfig-dep@${PROJECT_ID?}.iam.gserviceaccount.com" - ] - } - ], - "resourceRef": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", - "external": "projects/${PROJECT_ID?}" - } + "name": "www.example.com.", + "type": "AAAA", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-aaaa" + }, + "rrdatas": [ + "8888:8888:8888:8888::" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT384 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT384 index 50008c6..73366d8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT384 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT384 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamauditconfig/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147357, + "timestamp": 1642973303955, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamauditconfig/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT384", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT384", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "name": "iamauditconfig-dep" + "name": "dnsrecordset-dep-cname" + }, + "spec": { + "dnsName": "example.com." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT385 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT385 index dadf34d..71404a2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT385 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT385 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamcustomrole/organization-role/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147379, + "timestamp": 1642973303959, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/organization-role/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/dnsrecordset/dns-cname-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT385", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT385", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMCustomRole", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "annotations": { - "cnrm.cloud.google.com/organization-id": "${ORG_ID?}" - }, - "name": "iamcustomrolesampleorganization" + "name": "dnsrecordset-sample-cname" }, "spec": { - "title": "Example Organization-Level Custom Role Created by Config Connector", - "description": "This role only contains two permissions - publish and update", - "permissions": [ - "pubsub.topics.publish", - "pubsub.topics.update" - ], - "stage": "GA" + "name": "*.example.com.", + "type": "CNAME", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-cname" + }, + "rrdatas": [ + ".www.example.com." + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT386 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT386 index 0fa9ae8..3451101 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT386 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT386 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147409, + "timestamp": 1642973303963, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT386", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT386", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMCustomRole", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "annotations": { - "cnrm.cloud.google.com/project-id": "${PROJECT_ID?}" - }, - "name": "iamcustomrolesampleproject" + "name": "dnsrecordset-dep-mx" }, "spec": { - "title": "Example Project-Level Custom Role", - "description": "This role only contains two permissions - publish and update", - "permissions": [ - "pubsub.topics.publish", - "pubsub.topics.update" - ], - "stage": "GA" + "dnsName": "example.com." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT387 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT387 index de79da0..78f21f7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT387 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT387 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147428, + "timestamp": 1642973303970, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/dnsrecordset/dns-mx-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT387", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT387", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "name": "iampolicymember-sample-projectrole" + "name": "dnsrecordset-sample-mx" }, "spec": { - "member": "serviceAccount:iamcustomrole-dep-project@${PROJECT_ID?}.iam.gserviceaccount.com", - "role": "projects/${PROJECT_ID?}/roles/iamcustomrolesampleproject", - "resourceRef": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", - "name": "iamcustomrole-dep-project" - } + "name": "mail.example.com.", + "type": "MX", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-mx" + }, + "rrdatas": [ + "5 gmr-stmp-in.l.google.com.", + "10 alt1.gmr-stmp-in.l.google.com.", + "10 alt2.gmr-stmp-in.l.google.com.", + "10 alt3.gmr-stmp-in.l.google.com.", + "10 alt4.gmr-stmp-in.l.google.com." + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT388 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT388 index cc42403..a1306eb 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT388 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT388 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147447, + "timestamp": 1642973303974, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT388", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT388", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "name": "iamcustomrole-dep-project" + "name": "dnsrecordset-dep-ns" + }, + "spec": { + "dnsName": "example.com." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT389 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT389 index dc5ad0a..9310a9a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT389 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT389 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamcustomrole/project-role/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147472, + "timestamp": 1642973303977, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamcustomrole/project-role/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/dnsrecordset/dns-ns-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT389", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT389", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "name": "iamcustomrole-dep-project" + "name": "dnsrecordset-sample-ns" + }, + "spec": { + "name": "example.com.", + "type": "NS", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-ns" + }, + "rrdatas": [ + "ns-cloud-a1.googledomains.com.", + "ns-cloud-a2.googledomains.com.", + "ns-cloud-a3.googledomains.com.", + "ns-cloud-a4.googledomains.com." + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT39 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT39 index 57830ba..304b44c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT39 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT39 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtablegcpolicy.yaml" ], - "timestamp": 1628765139077, + "timestamp": 1642973301849, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtablegcpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT39", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtablegcpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT39", "collection": "kcctemplate", "json": { "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableInstance", + "kind": "BigtableGCPolicy", "metadata": { - "name": "bigtablegcpolicy-dep" + "name": "bigtablegcpolicy-sample" }, "spec": { - "displayName": "BigtableSample", - "cluster": [ + "tableRef": { + "name": "bigtablegcpolicy-dep" + }, + "columnFamily": "family1", + "instanceRef": { + "name": "bigtablegcpolicy-dep" + }, + "mode": "INTERSECTION", + "maxAge": [ { - "clusterId": "cluster", - "zone": "us-central1-a", - "numNodes": 3 + "duration": "24h" + } + ], + "maxVersion": [ + { + "number": 10 } ] } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT390 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT390 index f2bad43..dd0544a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT390 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT390 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/iam_v1beta1_iampartialpolicy.yaml" + "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147505, + "timestamp": 1642973303981, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/iam_v1beta1_iampartialpolicy.yaml" + "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT390", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT390", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPartialPolicy", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "name": "iampartialpolicy-sample-project" + "name": "dnsrecordset-dep-srv" }, "spec": { - "resourceRef": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", - "name": "iampartialpolicy-dep-project" - }, - "bindings": [ - { - "role": "roles/storage.admin", - "members": [ - { - "member": "serviceAccount:iampartialpolicy-dep-project@iampartialpolicy-dep-project.iam.gserviceaccount.com" - } - ] - } - ] + "dnsName": "example.com." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT391 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT391 index fc7c798..0c198bf 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT391 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT391 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147521, + "timestamp": 1642973303984, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dns-srv-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT391", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT391", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "annotations": { - "cnrm.cloud.google.com/project-id": "iampartialpolicy-dep-project" + "name": "dnsrecordset-sample-srv" + }, + "spec": { + "name": "_example._tcp.example.com.", + "type": "SRV", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-srv" }, - "name": "iampartialpolicy-dep-project" + "rrdatas": [ + "0 0 9 tcpserver.cnrm-dns-example.com." + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT392 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT392 index 7c0ad3f..5997ebf 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT392 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT392 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147551, + "timestamp": 1642973304024, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT392", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT392", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "annotations": { - "cnrm.cloud.google.com/auto-create-network": "false" - }, - "name": "iampartialpolicy-dep-project" + "name": "dnsrecordset-dep-txt" }, "spec": { - "name": "Config Connector Sample", - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" - }, - "organizationRef": { - "external": "${ORG_ID?}" - } + "dnsName": "example.com." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT393 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT393 index 5aa0e1f..31aeb0d 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT393 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT393 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/iam_v1beta1_iampartialpolicy.yaml" + "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147573, + "timestamp": 1642973304030, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,35 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/iam_v1beta1_iampartialpolicy.yaml" + "/samples/resources/dnsrecordset/dns-txt-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT393", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT393", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPartialPolicy", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "name": "iampartialpolicy-sample-pubsubadmin" + "name": "dnsrecordset-sample-txt" }, "spec": { - "resourceRef": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", - "name": "iampartialpolicy-dep-pubsubadmin" + "name": "example.com.", + "type": "TXT", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-txt" }, - "bindings": [ - { - "role": "roles/editor", - "members": [ - { - "member": "serviceAccount:partialpolicy-dep-pubsubadmin@${PROJECT_ID?}.iam.gserviceaccount.com" - } - ] - } + "rrdatas": [ + "\"This is a sample DNS text record string\"", + "Text records are normally split on spaces", + "To prevent this, \"quote your text like this\"" ] } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT394 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT394 index 4d24325..d47b860 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT394 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT394 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147597, + "timestamp": 1642973304035, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT394", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT394", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "name": "partialpolicy-dep-pubsubadmin" + "name": "dnsrecordset-dep-dnssecdnskey" + }, + "spec": { + "dnsName": "secure.example.com.", + "dnssecConfig": { + "state": "transfer" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT395 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT395 index ea6bc52..6d69500 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT395 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT395 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147615, + "timestamp": 1642973304040, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampartialpolicy/pubsub-admin-policy/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/dnsrecordset/dnssec-dnskey-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT395", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT395", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "name": "iampartialpolicy-dep-pubsubadmin" + "name": "dnsrecordset-sample-dnssecdnskey" + }, + "spec": { + "name": "secure.example.com.", + "type": "DNSKEY", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-dnssecdnskey" + }, + "rrdatas": [ + "256 3 8 AwEAAcAPhPM4CQHqg6hZ49y2P3IdKZuF44QNCc50vjATD7W+je4va6djY5JpnNP0pIohKNYiCFap/b4Y9jjJGSOkOfkfBR8neI7X5LisMEGUjwRcrG8J9UYP1S1unTNqRcWyDYFH2q3KnIO08zImh5DiFt8yfCdKoqZUN1dup5hy0UWz" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT396 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT396 index 0cda54a..2d6ce74 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT396 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT396 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147650, + "timestamp": 1642973304045, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT396", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT396", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicy", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "name": "iampolicy-sample-external-project" + "name": "dnsrecordset-dep-dnssecds" }, "spec": { - "resourceRef": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", - "external": "projects/iampolicy-dep-external-project" - }, - "bindings": [ - { - "members": [ - "serviceAccount:${GSA_EMAIL?}" - ], - "role": "roles/owner" - }, - { - "members": [ - "serviceAccount:iampolicy-dep-external-project@iampolicy-dep-external-project.iam.gserviceaccount.com" - ], - "role": "roles/storage.admin" - } - ] + "dnsName": "secure.example.com.", + "dnssecConfig": { + "state": "on" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT397 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT397 index 883f34b..e9d7a5b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT397 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT397 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147677, + "timestamp": 1642973304049, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-ds-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT397", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT397", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "annotations": { - "cnrm.cloud.google.com/project-id": "iampolicy-dep-external-project" + "name": "dnsrecordset-sample-dnssecds" + }, + "spec": { + "name": "host.secure.example.com.", + "type": "DS", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-dnssecds" }, - "name": "iampolicy-dep-external-project" + "rrdatas": [ + "31523 5 1 c8761ba5defc26ac7b78e076d7c47fa9f86b9fba" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT398 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT398 index bf5c918..38d6209 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT398 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT398 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147701, + "timestamp": 1642973304053, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/external-project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT398", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT398", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "annotations": { - "cnrm.cloud.google.com/organization-id": "${ORG_ID?}", - "cnrm.cloud.google.com/auto-create-network": "false" - }, - "name": "iampolicy-dep-external-project" + "name": "dnsrecordset-dep-dnssecipsecvpnkey" }, "spec": { - "name": "Config Connector Sample", - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" + "dnsName": "secure.example.com.", + "dnssecConfig": { + "state": "on" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT399 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT399 index 22fbc9a..067b4c2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT399 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT399 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/iam_v1beta1_iampolicy.yaml" + "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147726, + "timestamp": 1642973304057, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,41 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/iam_v1beta1_iampolicy.yaml" + "/samples/resources/dnsrecordset/dnssec-ipsecvpnkey-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT399", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT399", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicy", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "iampolicy-sample-condition" + "name": "dnsrecordset-sample-dnssecipsecvpnkey" }, "spec": { - "resourceRef": { - "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSKeyRing", - "name": "iampolicy-dep-condition" + "name": "service.secure.example.com.", + "type": "IPSECKEY", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-dnssecipsecvpnkey" }, - "bindings": [ - { - "role": "roles/cloudkms.admin", - "condition": { - "title": "expires_after_2019_12_31", - "description": "Expires at midnight of 2019-12-31", - "expression": "request.time < timestamp(\"2020-01-01T00:00:00Z\")" - }, - "members": [ - "serviceAccount:iampolicy-dep-condition@${PROJECT_ID?}.iam.gserviceaccount.com" - ] - } + "rrdatas": [ + "10 1 2 192.0.2.3 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==" ] } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT4 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT4 index 533b366..6bca86b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT4 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT4 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/accesscontextmanagerserviceperimeter/accesscontextmanager_v1beta1_accesscontextmanageraccesslevel_multiple_yaml_0.yaml" ], - "timestamp": 1628765138254, + "timestamp": 1642973301651, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT4", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesslevel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT4", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT40 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT40 index 5b1d03b..6b149fc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT40 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT40 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtabletable.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtableinstance.yaml" ], - "timestamp": 1628765139100, + "timestamp": 1642973301854, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtabletable.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT40", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT40", "collection": "kcctemplate", "json": { "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableTable", + "kind": "BigtableInstance", "metadata": { "name": "bigtablegcpolicy-dep" }, "spec": { - "columnFamily": [ + "displayName": "BigtableSample", + "cluster": [ { - "family": "family1" - }, - { - "family": "family2" + "clusterId": "cluster", + "zone": "us-central1-a", + "numNodes": 3 } - ], - "instanceRef": { - "name": "bigtablegcpolicy-dep" - }, - "splitKeys": [ - "a" ] } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT400 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT400 index 2b95298..92678e2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT400 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT400 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], - "timestamp": 1628765147749, + "timestamp": 1642973304060, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsmanagedzone.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT400", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsmanagedzone" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT400", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSManagedZone", "metadata": { - "name": "iampolicy-dep-condition" + "name": "dnsrecordset-dep-dnssecsshfp" + }, + "spec": { + "dnsName": "secure.example.com.", + "dnssecConfig": { + "state": "on" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT401 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT401 index b7220cf..500a88e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT401 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT401 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsrecordset.yaml" ], - "timestamp": 1628765147763, + "timestamp": 1642973304064, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/kms-policy-with-condition/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/dnsrecordset/dnssec-sshfp-record-set/dns_v1beta1_dnsrecordset.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT401", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "dnsrecordset" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT401", "collection": "kcctemplate", "json": { - "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSKeyRing", + "apiVersion": "dns.cnrm.cloud.google.com/v1beta1", + "kind": "DNSRecordSet", "metadata": { - "name": "iampolicy-dep-condition" + "name": "dnsrecordset-sample-dnssecsshfp" }, "spec": { - "location": "us-central1" + "name": "host.secure.example.com.", + "type": "SSHFP", + "ttl": 300, + "managedZoneRef": { + "name": "dnsrecordset-dep-dnssecsshfp" + }, + "rrdatas": [ + "2 1 123456789abcdef67890123456789abcdef67890" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT402 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT402 index bd837f1..7a1776e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT402 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT402 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/project-level-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/filestorebackup/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765147783, + "timestamp": 1642973304069, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,64 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/project-level-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/filestorebackup/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT402", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT402", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicy", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "name": "iampolicy-sample-project" + "name": "filestorebackup-dep" }, "spec": { - "resourceRef": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", - "name": "iampolicy-dep-project" - }, - "bindings": [ - { - "members": [ - "serviceAccount:${GSA_EMAIL?}" - ], - "role": "roles/owner" - }, - { - "members": [ - "serviceAccount:iampolicy-dep-project@iampolicy-dep-project.iam.gserviceaccount.com" - ], - "role": "roles/storage.admin" - } - ], - "auditConfigs": [ - { - "service": "allServices", - "auditLogConfigs": [ - { - "logType": "DATA_WRITE" - }, - { - "logType": "DATA_READ", - "exemptedMembers": [ - "serviceAccount:iampolicy-dep-project@iampolicy-dep-project.iam.gserviceaccount.com" - ] - } - ] - }, - { - "service": "compute.googleapis.com", - "auditLogConfigs": [ - { - "logType": "ADMIN_READ" - } - ] - } - ] + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT403 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT403 index 523de1e..eb04695 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT403 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT403 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/filestorebackup/filestore_v1beta1_filestorebackup.yaml" ], - "timestamp": 1628765147802, + "timestamp": 1642973304073, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/project-level-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/filestorebackup/filestore_v1beta1_filestorebackup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT403", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "filestorebackup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT403", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "filestore.cnrm.cloud.google.com/v1beta1", + "kind": "FilestoreBackup", "metadata": { - "annotations": { - "cnrm.cloud.google.com/project-id": "iampolicy-dep-project" + "name": "filestorebackup-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" }, - "name": "iampolicy-dep-project" + "description": "A sample backup", + "location": "us-central1", + "sourceFileShare": "my_share", + "sourceInstanceRef": { + "name": "filestorebackup-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT404 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT404 index 15c8753..2b19cd2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT404 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT404 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/filestorebackup/filestore_v1beta1_filestoreinstance.yaml" ], - "timestamp": 1628765147824, + "timestamp": 1642973304078, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,47 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/project-level-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/filestorebackup/filestore_v1beta1_filestoreinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT404", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "filestoreinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT404", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "filestore.cnrm.cloud.google.com/v1beta1", + "kind": "FilestoreInstance", "metadata": { - "annotations": { - "cnrm.cloud.google.com/organization-id": "${ORG_ID?}", - "cnrm.cloud.google.com/auto-create-network": "false" - }, - "name": "iampolicy-dep-project" + "name": "filestorebackup-dep" }, "spec": { - "name": "Config Connector Sample", - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" - } + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "description": "Sample FilestoreInstance dependency for FilestoreBackup", + "fileShares": [ + { + "capacityGb": 4800, + "name": "my_share" + } + ], + "location": "us-central1-c", + "networks": [ + { + "modes": [ + "MODE_IPV4" + ], + "networkRef": { + "name": "filestorebackup-dep" + }, + "reservedIPRange": "10.0.0.0/29" + } + ], + "tier": "PREMIUM" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT405 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT405 index 65b3032..aa409a2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT405 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT405 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/filestoreinstance/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765147857, + "timestamp": 1642973304082, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,37 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/filestoreinstance/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT405", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT405", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicy", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "iampolicy-sample-pubsubadmin" + "name": "filestoreinstance-dep" }, "spec": { - "resourceRef": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", - "name": "iampolicy-dep-pubsubadmin" - }, - "bindings": [ - { - "role": "roles/editor", - "members": [ - "serviceAccount:iampolicy-dep-pubsubadmin@${PROJECT_ID?}.iam.gserviceaccount.com" - ] - } - ] + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT406 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT406 index 5dfd17d..fa3257f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT406 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT406 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/filestoreinstance/filestore_v1beta1_filestoreinstance.yaml" ], - "timestamp": 1628765147883, + "timestamp": 1642973304086, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,58 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/filestoreinstance/filestore_v1beta1_filestoreinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT406", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "filestoreinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT406", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "filestore.cnrm.cloud.google.com/v1beta1", + "kind": "FilestoreInstance", "metadata": { - "name": "iampolicy-dep-pubsubadmin" + "name": "filestoreinstance-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "description": "A sample filestore instance", + "fileShares": [ + { + "capacityGb": 4800, + "name": "my_share", + "nfsExportOptions": [ + { + "accessMode": "READ_WRITE", + "anonGid": 65534, + "anonUid": 65534, + "ipRanges": [ + "172.217.14.238" + ], + "squashMode": "ROOT_SQUASH" + } + ] + } + ], + "location": "us-central1-c", + "networks": [ + { + "networkRef": { + "name": "filestoreinstance-dep" + }, + "modes": [ + "MODE_IPV4" + ], + "reservedIPRange": "10.0.0.0/29" + } + ], + "tier": "PREMIUM" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT407 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT407 index 875795b..f3d791f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT407 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT407 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/firestoreindex/firestore_v1beta1_firestoreindex.yaml" ], - "timestamp": 1628765147902, + "timestamp": 1642973304090, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/pubsub-admin-policy/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/firestoreindex/firestore_v1beta1_firestoreindex.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT407", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "firestoreindex" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT407", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "firestore.cnrm.cloud.google.com/v1beta1", + "kind": "FirestoreIndex", "metadata": { - "name": "iampolicy-dep-pubsubadmin" + "name": "firestoreindex-sample" + }, + "spec": { + "collection": "sample-collection", + "fields": [ + { + "fieldPath": "field1", + "order": "ASCENDING" + }, + { + "fieldPath": "field2", + "order": "DESCENDING" + } + ], + "queryScope": "COLLECTION" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT408 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT408 index 0bf07d2..a7a5c95 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT408 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT408 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/folder/folder-in-folder/resourcemanager_v1beta1_folder.yaml" ], - "timestamp": 1628765147916, + "timestamp": 1642973304095, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iampolicy.yaml" + "/samples/resources/folder/folder-in-folder/resourcemanager_v1beta1_folder.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT408", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "folder" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT408", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicy", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Folder", "metadata": { - "name": "iampolicy-sample-workloadidentity" + "labels": { + "label-one": "value-one" + }, + "name": "folder-sample-in-folder" }, "spec": { - "resourceRef": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", - "name": "iampolicy-dep-workloadidentity" - }, - "bindings": [ - { - "role": "roles/iam.workloadIdentityUser", - "members": [ - "serviceAccount:${PROJECT_ID?}.svc.id.goog[default/iampolicy-dep-workloadidentity]" - ] - } - ] + "displayName": "Config Connector Sample", + "folderRef": { + "external": "${FOLDER_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT409 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT409 index 074ac8d..62b508a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT409 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT409 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/folder/folder-in-org/resourcemanager_v1beta1_folder.yaml" ], - "timestamp": 1628765147944, + "timestamp": 1642973304098, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/folder/folder-in-org/resourcemanager_v1beta1_folder.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT409", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "folder" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT409", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Folder", "metadata": { - "name": "iampolicy-dep-workloadidentity" + "labels": { + "label-one": "value-one" + }, + "name": "folder-sample-in-org" }, "spec": { - "displayName": "Example Service Account" + "displayName": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT41 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT41 index 9401e27..170c259 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT41 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT41 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtableinstance/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtabletable.yaml" ], - "timestamp": 1628765139116, + "timestamp": 1642973301861, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,37 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtableinstance/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtablegcpolicy/bigtable_v1beta1_bigtabletable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT41", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtabletable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT41", "collection": "kcctemplate", "json": { "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableInstance", + "kind": "BigtableTable", "metadata": { - "name": "bigtableinstance-sample" + "name": "bigtablegcpolicy-dep" }, "spec": { - "displayName": "BigtableSample", - "cluster": [ + "columnFamily": [ { - "clusterId": "bigtableinstance-dep1", - "zone": "us-central1-a", - "numNodes": 3 + "family": "family1" }, { - "clusterId": "bigtableinstance-dep2", - "zone": "us-west1-a", - "numNodes": 3 + "family": "family2" } + ], + "instanceRef": { + "name": "bigtablegcpolicy-dep" + }, + "splitKeys": [ + "a" ] } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT410 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT410 index b773fc4..bab3b3c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT410 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT410 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/kubernetes_service_account.yaml" + "/samples/resources/gameservicesrealm/gameservices_v1beta1_gameservicesrealm.yaml" ], - "timestamp": 1628765147972, + "timestamp": 1642973304102, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicy/workload-identity-policy/kubernetes_service_account.yaml" + "/samples/resources/gameservicesrealm/gameservices_v1beta1_gameservicesrealm.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT410", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gameservicesrealm" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT410", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "ServiceAccount", + "apiVersion": "gameservices.cnrm.cloud.google.com/v1beta1", + "kind": "GameServicesRealm", "metadata": { - "name": "iampolicy-dep-workloadidentity", - "annotations": { - "iam.gke.io/gcp-service-account": "iampolicy-dep-workloadidentity@${PROJECT_ID?}.iam.gserviceaccount.com" - } + "labels": { + "label-one": "value-one" + }, + "name": "realm-sample" + }, + "spec": { + "timeZone": "EST", + "location": "us-east1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT411 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT411 index a3a82a6..9bb0100 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT411 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT411 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/gkehub_v1beta1_gkehubfeature.yaml" ], - "timestamp": 1628765148000, + "timestamp": 1642973304106, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/gkehub_v1beta1_gkehubfeature.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT411", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeature" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT411", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", + "kind": "GKEHubFeature", "metadata": { - "name": "iampolicymember-sample-orglevel" + "name": "gkehubfeature-sample-acmfeature", + "labels": { + "label-one": "value-one" + } }, "spec": { - "member": "serviceAccount:iampolicymember-dep-orglevel@${PROJECT_ID?}.iam.gserviceaccount.com", - "role": "roles/storage.admin", - "resourceRef": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Organization", - "external": "${ORG_ID?}" - } + "projectRef": { + "name": "gkehubfeature-dep-acmfeature" + }, + "location": "global", + "resourceID": "configmanagement" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT412 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT412 index a07651c..8e20ce1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT412 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT412 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765148020, + "timestamp": 1642973304110, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT412", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT412", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "iampolicymember-dep-orglevel" + "annotations": { + "cnrm.cloud.google.com/auto-create-network": "false" + }, + "name": "gkehubfeature-dep-acmfeature" + }, + "spec": { + "name": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT413 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT413 index 4186725..fe39d48 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT413 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT413 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], - "timestamp": 1628765148037, + "timestamp": 1642973304113, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT413", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT413", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iampolicymember-sample-projectlevel" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "gkehubfeature-dep-acmfeature-1" }, "spec": { - "member": "serviceAccount:iampolicymember-dep-projectlevel@${PROJECT_ID?}.iam.gserviceaccount.com", - "role": "roles/storage.admin", - "resourceRef": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", - "external": "projects/${PROJECT_ID?}" - } + "projectRef": { + "name": "gkehubfeature-dep-acmfeature" + }, + "resourceID": "gkehub.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT414 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT414 index 70d2dce..1c324f6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT414 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT414 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], - "timestamp": 1628765148051, + "timestamp": 1642973304117, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/anthos-config-management-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT414", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT414", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iampolicymember-dep-projectlevel" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "gkehubfeature-dep-acmfeature-2" + }, + "spec": { + "projectRef": { + "name": "gkehubfeature-dep-acmfeature" + }, + "resourceID": "anthosconfigmanagement.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT415 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT415 index 804f0a7..7ca6be3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT415 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT415 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/container_v1beta1_containercluster.yaml" ], - "timestamp": 1628765148068, + "timestamp": 1642973304121, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT415", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT415", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerCluster", "metadata": { - "name": "iampolicymember-sample-condition" + "annotations": { + "cnrm.cloud.google.com/project-id": "gkehubfeature-dep-mcifeature" + }, + "name": "gkehubfeature-dep-mcifeature" }, "spec": { - "member": "serviceAccount:iampolicymember-dep-condition@${PROJECT_ID?}.iam.gserviceaccount.com", - "role": "roles/cloudkms.admin", - "condition": { - "title": "expires_after_2019_12_31", - "description": "Expires at midnight of 2019-12-31", - "expression": "request.time < timestamp(\"2020-01-01T00:00:00Z\")" - }, - "resourceRef": { - "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSKeyRing", - "name": "iampolicymember-dep-condition" + "location": "us-central1-a", + "initialNodeCount": 1, + "workloadIdentityConfig": { + "workloadPool": "gkehubfeature-dep-mcifeature.svc.id.goog" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT416 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT416 index 3e907fa..c499e72 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT416 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT416 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubfeature.yaml" ], - "timestamp": 1628765148085, + "timestamp": 1642973304125, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubfeature.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT416", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeature" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT416", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", + "kind": "GKEHubFeature", "metadata": { - "name": "iampolicymember-dep-condition" + "name": "gkehubfeature-sample-mcifeature", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "projectRef": { + "name": "gkehubfeature-dep-mcifeature" + }, + "location": "global", + "resourceID": "multiclusteringress", + "spec": { + "multiclusteringress": { + "configMembershipRef": { + "name": "gkehubfeature-dep-mcifeature" + } + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT417 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT417 index a98335b..c115b7b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT417 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT417 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubmembership.yaml" ], - "timestamp": 1628765148103, + "timestamp": 1642973304129, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/kms-policy-member-with-condition/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/gkehub_v1beta1_gkehubmembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT417", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubmembership" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT417", "collection": "kcctemplate", "json": { - "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSKeyRing", + "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", + "kind": "GKEHubMembership", "metadata": { - "name": "iampolicymember-dep-condition" + "annotations": { + "cnrm.cloud.google.com/project-id": "gkehubfeature-dep-mcifeature" + }, + "name": "gkehubfeature-dep-mcifeature" }, "spec": { - "location": "us-central1" + "location": "global", + "authority": { + "issuer": "https://container.googleapis.com/v1/projects/gkehubfeature-dep-mcifeature/locations/us-central1-a/clusters/gkehubfeature-dep-mcifeature" + }, + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceRef": { + "name": "gkehubfeature-dep-mcifeature" + } + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT418 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT418 index e8e6580..39d2545 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT418 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT418 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765148118, + "timestamp": 1642973304133, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamcustomrole.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT418", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT418", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMCustomRole", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "annotations": { - "cnrm.cloud.google.com/organization-id": "${ORG_ID?}" - }, - "name": "iampolicymemberdeporgrole" + "name": "gkehubfeature-dep-mcifeature" }, "spec": { - "title": "Example Organization-Level Custom Role", - "description": "This role only contains two permissions - publish and update", - "permissions": [ - "pubsub.topics.publish", - "pubsub.topics.update" - ], - "stage": "GA" + "name": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT419 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT419 index cc8f10e..3b95b51 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT419 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT419 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], - "timestamp": 1628765148146, + "timestamp": 1642973304137, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT419", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT419", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iampolicymember-sample-orgrole" + "annotations": { + "cnrm.cloud.google.com/deletion-policy": "abandon" + }, + "name": "gkehubfeature-dep-mcifeature-1" }, "spec": { - "member": "serviceAccount:iampolicymember-dep-orgrole@${PROJECT_ID?}.iam.gserviceaccount.com", - "role": "organizations/${ORG_ID?}/roles/iampolicymemberdeporgrole", - "resourceRef": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", - "external": "projects/${PROJECT_ID?}" - } + "projectRef": { + "name": "gkehubfeature-dep-mcifeature" + }, + "resourceID": "container.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT42 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT42 index e2c1b3f..efb7e4e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT42 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT42 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtabletable/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableinstance/bigtable_v1beta1_bigtableinstance.yaml" ], - "timestamp": 1628765139140, + "timestamp": 1642973301864, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtabletable/bigtable_v1beta1_bigtableinstance.yaml" + "/samples/resources/bigtableinstance/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT42", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT42", "collection": "kcctemplate", @@ -27,18 +30,18 @@ "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", "kind": "BigtableInstance", "metadata": { - "name": "bigtabletable-dep" + "name": "bigtableinstance-sample" }, "spec": { "displayName": "BigtableSample", "cluster": [ { - "clusterId": "cluster1", + "clusterId": "bigtableinstance-dep1", "zone": "us-central1-a", "numNodes": 3 }, { - "clusterId": "cluster2", + "clusterId": "bigtableinstance-dep2", "zone": "us-west1-a", "numNodes": 3 } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT420 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT420 index ab721f7..81205f6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT420 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT420 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], - "timestamp": 1628765148171, + "timestamp": 1642973304141, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT420", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT420", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iampolicymember-dep-orgrole" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "gkehubfeature-dep-mcifeature-2" + }, + "spec": { + "projectRef": { + "name": "gkehubfeature-dep-mcifeature" + }, + "resourceID": "gkehub.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT421 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT421 index 0842932..0f96ff8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT421 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT421 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_2.yaml" ], - "timestamp": 1628765148195, + "timestamp": 1642973304146, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT421", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT421", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iampolicymember-sample-memberref" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "gkehubfeature-dep-mcifeature-3" }, "spec": { - "memberFrom": { - "serviceAccountRef": { - "name": "iampolicymember-dep-memberref" - } + "projectRef": { + "name": "gkehubfeature-dep-mcifeature" }, - "role": "roles/editor", - "resourceRef": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", - "name": "iampolicymember-dep-memberref" - } + "resourceID": "multiclusteringress.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT422 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT422 index 0fa0d5e..40939c7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT422 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT422 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_3.yaml" ], - "timestamp": 1628765148237, + "timestamp": 1642973304149, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-ingress-feature/serviceusage_v1beta1_service_multiple_yaml_3.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT422", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT422", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iampolicymember-dep-memberref" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "gkehubfeature-dep-mcifeature-4" + }, + "spec": { + "projectRef": { + "name": "gkehubfeature-dep-mcifeature" + }, + "resourceID": "multiclusterservicediscovery.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT423 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT423 index eebbadb..53bb4fe 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT423 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT423 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/gkehub_v1beta1_gkehubfeature.yaml" ], - "timestamp": 1628765148264, + "timestamp": 1642973304154, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/policy-member-with-member-reference/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/gkehub_v1beta1_gkehubfeature.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT423", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeature" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT423", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", + "kind": "GKEHubFeature", "metadata": { - "name": "iampolicymember-dep-memberref" + "name": "gkehubfeature-sample-mcsdfeature" + }, + "spec": { + "projectRef": { + "name": "gkehubfeature-dep-mcsdfeature" + }, + "location": "global", + "resourceID": "multiclusterservicediscovery" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT424 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT424 index 26bad27..441db6c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT424 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT424 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765148284, + "timestamp": 1642973304158, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT424", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT424", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "iampolicymember-sample-pubsubadmin" + "annotations": { + "cnrm.cloud.google.com/auto-create-network": "false" + }, + "name": "gkehubfeature-dep-mcsdfeature" }, "spec": { - "member": "serviceAccount:iampolicymember-dep-pubsub@${PROJECT_ID?}.iam.gserviceaccount.com", - "role": "roles/editor", - "resourceRef": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", - "name": "iampolicymember-dep-pubsubadmin" + "name": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT425 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT425 index 3c501c8..7d4b3b1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT425 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT425 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], - "timestamp": 1628765148310, + "timestamp": 1642973304161, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT425", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT425", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iampolicymember-dep-pubsub" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "gkehubfeature-dep-mcsdfeature-1" + }, + "spec": { + "projectRef": { + "name": "gkehubfeature-dep-mcsdfeature" + }, + "resourceID": "gkehub.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT426 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT426 index 06becf6..6d0ea52 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT426 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT426 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], - "timestamp": 1628765148330, + "timestamp": 1642973304166, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iampolicymember/pubsub-admin-policy-member/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/gkehubfeature/multi-cluster-service-discovery-feature/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT426", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT426", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iampolicymember-dep-pubsubadmin" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "gkehubfeature-dep-mcsdfeature-2" + }, + "spec": { + "projectRef": { + "name": "gkehubfeature-dep-mcsdfeature" + }, + "resourceID": "multiclusterservicediscovery.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT427 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT427 index dbee406..9b13936 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT427 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT427 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamserviceaccount/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeaturemembership/container_v1beta1_containercluster.yaml" ], - "timestamp": 1628765148349, + "timestamp": 1642973304170, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamserviceaccount/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeaturemembership/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT427", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT427", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerCluster", "metadata": { - "labels": { - "label-one": "value-one" + "annotations": { + "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" }, - "name": "iamserviceaccount-sample" + "name": "gkehubfeaturemembership-dep" }, "spec": { - "displayName": "Example Service Account" + "location": "us-central1-a", + "initialNodeCount": 1, + "workloadIdentityConfig": { + "workloadPool": "gkehubfeaturemembership-dep.svc.id.goog" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT428 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT428 index 1af4956..bcdaebb 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT428 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT428 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeature.yaml" ], - "timestamp": 1628765148368, + "timestamp": 1642973304174, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeature.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT428", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeature" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT428", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", + "kind": "GKEHubFeature", "metadata": { - "name": "iamserviceaccountkey-dep" + "name": "gkehubfeaturemembership-dep" + }, + "spec": { + "projectRef": { + "name": "gkehubfeaturemembership-dep" + }, + "location": "global", + "resourceID": "configmanagement" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT429 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT429 index f7aea9c..44b25a1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT429 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT429 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccountkey.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeaturemembership.yaml" ], - "timestamp": 1628765148391, + "timestamp": 1642973304178, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,63 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccountkey.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubfeaturemembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT429", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubfeaturemembership" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT429", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccountKey", + "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", + "kind": "GKEHubFeatureMembership", "metadata": { - "name": "iamserviceaccountkey-sample", - "labels": { - "label-one": "value-one" - } + "name": "gkehubfeaturemembership-sample" }, "spec": { - "publicKeyType": "TYPE_X509_PEM_FILE", - "keyAlgorithm": "KEY_ALG_RSA_2048", - "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE", - "serviceAccountRef": { - "name": "iamserviceaccountkey-dep" + "projectRef": { + "name": "gkehubfeaturemembership-dep" + }, + "location": "global", + "membershipRef": { + "name": "gkehubfeaturemembership-dep" + }, + "featureRef": { + "name": "gkehubfeaturemembership-dep" + }, + "configmanagement": { + "configSync": { + "sourceFormat": "unstructured", + "git": { + "syncRepo": "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit", + "syncBranch": "master", + "policyDir": "config-connector", + "syncWaitSecs": "20", + "syncRev": "HEAD" + } + }, + "policyController": { + "enabled": true, + "exemptableNamespaces": [ + "test-namespace" + ], + "referentialRulesEnabled": true, + "logDeniesEnabled": true, + "templateLibraryInstalled": true, + "auditIntervalSeconds": "20" + }, + "binauthz": { + "enabled": true + }, + "hierarchyController": { + "enabled": true, + "enablePodTreeLabels": true, + "enableHierarchicalResourceQuota": true + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT43 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT43 index b1629e9..ddec873 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT43 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT43 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/bigtabletable/bigtable_v1beta1_bigtabletable.yaml" + "/samples/resources/bigtabletable/bigtable_v1beta1_bigtableinstance.yaml" ], - "timestamp": 1628765139159, + "timestamp": 1642973301867, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/bigtabletable/bigtable_v1beta1_bigtabletable.yaml" + "/samples/resources/bigtabletable/bigtable_v1beta1_bigtableinstance.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT43", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtableinstance" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT43", "collection": "kcctemplate", "json": { "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", - "kind": "BigtableTable", + "kind": "BigtableInstance", "metadata": { - "name": "bigtabletable-sample" + "name": "bigtabletable-dep" }, "spec": { - "columnFamily": [ + "displayName": "BigtableSample", + "cluster": [ { - "family": "family1" + "clusterId": "cluster1", + "zone": "us-central1-a", + "numNodes": 3 }, { - "family": "family2" + "clusterId": "cluster2", + "zone": "us-west1-a", + "numNodes": 3 } - ], - "instanceRef": { - "name": "bigtabletable-dep" - }, - "splitKeys": [ - "a" ] } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT430 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT430 index 103509d..4f8e428 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT430 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT430 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iapbrand/iap_v1beta1_iapbrand.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubmembership.yaml" ], - "timestamp": 1628765148423, + "timestamp": 1642973304182, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,39 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iapbrand/iap_v1beta1_iapbrand.yaml" + "/samples/resources/gkehubfeaturemembership/gkehub_v1beta1_gkehubmembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT430", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubmembership" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT430", "collection": "kcctemplate", "json": { - "apiVersion": "iap.cnrm.cloud.google.com/v1beta1", - "kind": "IAPBrand", + "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", + "kind": "GKEHubMembership", "metadata": { - "name": "iapbrand-sample" + "annotations": { + "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" + }, + "name": "gkehubfeaturemembership-dep" }, "spec": { - "applicationTitle": "test brand", - "supportEmail": "support@example.com" + "location": "global", + "authority": { + "issuer": "https://container.googleapis.com/v1/projects/gkehubfeaturemembership-dep/locations/us-central1-a/clusters/gkehubfeaturemembership-dep" + }, + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceRef": { + "name": "gkehubfeaturemembership-dep" + } + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT431 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT431 index b6f1910..89aa874 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT431 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT431 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapbrand.yaml" + "/samples/resources/gkehubfeaturemembership/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765148453, + "timestamp": 1642973304186, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapbrand.yaml" + "/samples/resources/gkehubfeaturemembership/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT431", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT431", "collection": "kcctemplate", "json": { - "apiVersion": "iap.cnrm.cloud.google.com/v1beta1", - "kind": "IAPBrand", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "iapidentityawareproxyclient-dep" + "name": "gkehubfeaturemembership-dep" }, "spec": { - "applicationTitle": "test brand", - "supportEmail": "support@example.com" + "name": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT432 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT432 index a0ffd5a..7e5037e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT432 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT432 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapidentityawareproxyclient.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], - "timestamp": 1628765148492, + "timestamp": 1642973304190, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapidentityawareproxyclient.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT432", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT432", "collection": "kcctemplate", "json": { - "apiVersion": "iap.cnrm.cloud.google.com/v1beta1", - "kind": "IAPIdentityAwareProxyClient", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "iapidentityawareproxyclient-sample" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false", + "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" + }, + "name": "gkehubfeaturemembership-dep-1" }, "spec": { - "displayName": "Test Client", - "brandRef": { - "name": "iapidentityawareproxyclient-dep" - } + "resourceID": "container.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT433 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT433 index 04a8c25..c73ce53 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT433 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT433 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/identityplatformoauthidpconfig/identityplatform_v1beta1_identityplatformoauthidpconfig.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], - "timestamp": 1628765148536, + "timestamp": 1642973304194, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformoauthidpconfig/identityplatform_v1beta1_identityplatformoauthidpconfig.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT433", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT433", "collection": "kcctemplate", "json": { - "apiVersion": "identityplatform.cnrm.cloud.google.com/v1beta1", - "kind": "IdentityPlatformOAuthIDPConfig", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "identityplatformoauthidpconfig-sample" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false", + "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" + }, + "name": "gkehubfeaturemembership-dep-2" }, "spec": { - "resourceID": "oidc.project-oauth-idp-config-sample", - "displayName": "sample oauth idp config", - "clientId": "client-id", - "issuer": "issuer", - "enabled": true, - "clientSecret": { - "valueFrom": { - "secretKeyRef": { - "key": "clientSecret", - "name": "identityplatformoauthidpconfig-dep" - } - } - } + "resourceID": "gkehub.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT434 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT434 index 56975e4..d8f7f68 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT434 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT434 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/identityplatformoauthidpconfig/secret.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_2.yaml" ], - "timestamp": 1628765148567, + "timestamp": 1642973304197, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformoauthidpconfig/secret.yaml" + "/samples/resources/gkehubfeaturemembership/serviceusage_v1beta1_service_multiple_yaml_2.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT434", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT434", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "identityplatformoauthidpconfig-dep" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false", + "cnrm.cloud.google.com/project-id": "gkehubfeaturemembership-dep" + }, + "name": "gkehubfeaturemembership-dep-3" }, - "stringData": { - "clientSecret": "secret" + "spec": { + "resourceID": "anthosconfigmanagement.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT435 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT435 index 0114749..aa5808f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT435 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT435 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/identityplatformtenant/identityplatform_v1beta1_identityplatformtenant.yaml" + "/samples/resources/gkehubmembership/container_v1beta1_containercluster.yaml" ], - "timestamp": 1628765148602, + "timestamp": 1642973304201, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformtenant/identityplatform_v1beta1_identityplatformtenant.yaml" + "/samples/resources/gkehubmembership/container_v1beta1_containercluster.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT435", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containercluster" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT435", "collection": "kcctemplate", "json": { - "apiVersion": "identityplatform.cnrm.cloud.google.com/v1beta1", - "kind": "IdentityPlatformTenant", + "apiVersion": "container.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerCluster", "metadata": { - "name": "identityplatformtenant-sample" + "name": "gkehubmembership-dep" }, "spec": { - "displayName": "sample-tenant", - "allowPasswordSignup": true, - "enableAnonymousUser": false, - "mfaConfig": { - "state": "ENABLED" - }, - "testPhoneNumbers": { - "+12345678901": "123451", - "+16505550000": "123450" + "location": "us-central1-a", + "initialNodeCount": 1, + "workloadIdentityConfig": { + "workloadPool": "${PROJECT_ID?}.svc.id.goog" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT436 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT436 index eb41abb..3b70f25 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT436 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT436 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenant.yaml" + "/samples/resources/gkehubmembership/gkehub_v1beta1_gkehubmembership.yaml" ], - "timestamp": 1628765148636, + "timestamp": 1642973304205, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenant.yaml" + "/samples/resources/gkehubmembership/gkehub_v1beta1_gkehubmembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT436", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "gkehubmembership" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT436", "collection": "kcctemplate", "json": { - "apiVersion": "identityplatform.cnrm.cloud.google.com/v1beta1", - "kind": "IdentityPlatformTenant", + "apiVersion": "gkehub.cnrm.cloud.google.com/v1beta1", + "kind": "GKEHubMembership", "metadata": { - "name": "identityplatformtenantoauthidpconfig-dep" + "labels": { + "label-one": "value-one" + }, + "name": "gkehubmembership-sample" }, "spec": { - "displayName": "test-tenant", - "allowPasswordSignup": true, - "enableAnonymousUser": false, - "mfaConfig": { - "state": "ENABLED" + "location": "global", + "authority": { + "issuer": "https://container.googleapis.com/v1/projects/${PROJECT_ID?}/locations/us-central1-a/clusters/gkehubmembership-dep" }, - "testPhoneNumbers": { - "+12345678901": "123451", - "+16505550000": "123450" + "description": "A sample GKE Hub membership", + "endpoint": { + "gkeCluster": { + "resourceRef": { + "name": "gkehubmembership-dep" + } + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT437 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT437 index 87347c7..f9b6e52 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT437 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT437 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenantoauthidpconfig.yaml" + "/samples/resources/iamauditconfig/iam_v1beta1_iamauditconfig.yaml" ], - "timestamp": 1628765148673, + "timestamp": 1642973304208, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,39 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenantoauthidpconfig.yaml" + "/samples/resources/iamauditconfig/iam_v1beta1_iamauditconfig.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT437", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamauditconfig" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT437", "collection": "kcctemplate", "json": { - "apiVersion": "identityplatform.cnrm.cloud.google.com/v1beta1", - "kind": "IdentityPlatformTenantOAuthIDPConfig", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMAuditConfig", "metadata": { - "labels": { - "foo": "bar" - }, - "name": "identityplatformtenantoauthidpconfig-sample" + "name": "iamauditconfig-sample" }, "spec": { - "resourceID": "oidc.tenant-oauth-idp-config-sample", - "tenantRef": { - "name": "identityplatformtenantoauthidpconfig-dep" - }, - "displayName": "sample tenant oauth idp config", - "clientId": "client-id", - "issuer": "issuer", - "enabled": true, - "clientSecret": { - "valueFrom": { - "secretKeyRef": { - "key": "clientSecret", - "name": "identityplatformtenantoauthidpconfig-dep" - } + "service": "allServices", + "auditLogConfigs": [ + { + "logType": "DATA_WRITE" + }, + { + "logType": "DATA_READ", + "exemptedMembers": [ + "serviceAccount:iamauditconfig-dep@${PROJECT_ID?}.iam.gserviceaccount.com" + ] } + ], + "resourceRef": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", + "external": "projects/${PROJECT_ID?}" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT438 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT438 index 146616e..4d9cf61 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT438 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT438 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/secret.yaml" + "/samples/resources/iamauditconfig/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765148707, + "timestamp": 1642973304212, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/identityplatformtenantoauthidpconfig/secret.yaml" + "/samples/resources/iamauditconfig/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT438", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT438", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "identityplatformtenantoauthidpconfig-dep" - }, - "stringData": { - "clientSecret": "secret1" + "name": "iamauditconfig-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT439 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT439 index d1960a6..6129cb2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT439 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT439 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/kmscryptokey/kms_v1beta1_kmscryptokey.yaml" + "/samples/resources/iamcustomrole/organization-role/iam_v1beta1_iamcustomrole.yaml" ], - "timestamp": 1628765148738, + "timestamp": 1642973304215, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/kmscryptokey/kms_v1beta1_kmscryptokey.yaml" + "/samples/resources/iamcustomrole/organization-role/iam_v1beta1_iamcustomrole.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT439", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamcustomrole" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT439", "collection": "kcctemplate", "json": { - "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSCryptoKey", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMCustomRole", "metadata": { - "labels": { - "key-one": "value-one" + "annotations": { + "cnrm.cloud.google.com/organization-id": "${ORG_ID?}" }, - "name": "kmscryptokey-sample" + "name": "iamcustomrolesampleorganization" }, "spec": { - "keyRingRef": { - "name": "kmscryptokey-dep" - }, - "purpose": "ASYMMETRIC_SIGN", - "versionTemplate": { - "algorithm": "EC_SIGN_P384_SHA384", - "protectionLevel": "SOFTWARE" - } + "title": "Example Organization-Level Custom Role Created by Config Connector", + "description": "This role only contains two permissions - publish and update", + "permissions": [ + "pubsub.topics.publish", + "pubsub.topics.update" + ], + "stage": "GA" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT44 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT44 index 6a91101..b07e311 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT44 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT44 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationattestor/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/bigtabletable/bigtable_v1beta1_bigtabletable.yaml" ], - "timestamp": 1628765139182, + "timestamp": 1642973301872, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,38 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationattestor/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/bigtabletable/bigtable_v1beta1_bigtabletable.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT44", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "bigtabletable" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT44", "collection": "kcctemplate", "json": { - "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", - "kind": "BinaryAuthorizationAttestor", + "apiVersion": "bigtable.cnrm.cloud.google.com/v1beta1", + "kind": "BigtableTable", "metadata": { - "name": "binaryauthorizationattestor-sample" + "name": "bigtabletable-sample" }, "spec": { - "description": "A sample binary authorization attestor.", - "userOwnedDrydockNote": { - "noteRef": { - "name": "binaryauthorizationattestor-dep" + "columnFamily": [ + { + "family": "family1" }, - "publicKeys": [ - { - "comment": "A sample key", - "pkixPublicKey": { - "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8qErzp1izKNonCWqj5KSqdz6g2Tf\nZWvtX3I6huRWGD0pIMieOOUdFD/hbMH6xYx0ml2vVkUqFJzeSmQt8pbtnw==\n-----END PUBLIC KEY-----\n", - "signatureAlgorithm": "ECDSA_P256_SHA256" - } - } - ] - } + { + "family": "family2" + } + ], + "instanceRef": { + "name": "bigtabletable-dep" + }, + "splitKeys": [ + "a" + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT440 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT440 index 0525ae5..8001164 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT440 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT440 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/kmscryptokey/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamcustomrole.yaml" ], - "timestamp": 1628765148765, + "timestamp": 1642973304219, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/kmscryptokey/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamcustomrole.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT440", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamcustomrole" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT440", "collection": "kcctemplate", "json": { - "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSKeyRing", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMCustomRole", "metadata": { - "name": "kmscryptokey-dep" + "annotations": { + "cnrm.cloud.google.com/project-id": "${PROJECT_ID?}" + }, + "name": "iamcustomrolesampleproject" }, "spec": { - "location": "us-central1" + "title": "Example Project-Level Custom Role", + "description": "This role only contains two permissions - publish and update", + "permissions": [ + "pubsub.topics.publish", + "pubsub.topics.update" + ], + "stage": "GA" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT441 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT441 index 5037759..b14f4d2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT441 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT441 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/kmskeyring/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iampolicymember.yaml" ], - "timestamp": 1628765148784, + "timestamp": 1642973304223, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/kmskeyring/kms_v1beta1_kmskeyring.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT441", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT441", "collection": "kcctemplate", "json": { - "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", - "kind": "KMSKeyRing", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", "metadata": { - "name": "kmskeyring-sample" + "name": "iampolicymember-sample-projectrole" }, "spec": { - "location": "us-central1" + "member": "serviceAccount:iamcustomrole-dep-project@${PROJECT_ID?}.iam.gserviceaccount.com", + "role": "projects/${PROJECT_ID?}/roles/iamcustomrolesampleproject", + "resourceRef": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "name": "iamcustomrole-dep-project" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT442 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT442 index e9f809f..36eceed 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT442 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT442 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/logginglogexclusion/billing-exclusion/logging_v1beta1_logginglogexclusion.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765148813, + "timestamp": 1642973304228, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/logginglogexclusion/billing-exclusion/logging_v1beta1_logginglogexclusion.yaml" + "/samples/resources/iamcustomrole/project-role/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT442", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT442", "collection": "kcctemplate", "json": { - "apiVersion": "logging.cnrm.cloud.google.com/v1beta1", - "kind": "LoggingLogExclusion", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "logginglogexclusion-sample-billing" - }, - "spec": { - "billingAccountRef": { - "external": "billingAccounts/${BILLING_ACCOUNT_ID?}" - }, - "description": "A billing log exclusion", - "filter": "resource.type=gcs_bucket severity=\"500\" AND metric.label.response_code<\"600\" AND metric.type=\"appengine.googleapis.com/http/server/response_count\" AND resource.type=\"gae_app\"", - "aggregations": [ - { - "alignmentPeriod": "300s", - "perSeriesAligner": "ALIGN_DELTA", - "crossSeriesReducer": "REDUCE_SUM", - "groupByFields": [ - "project", - "resource.label.module_id", - "resource.label.version_id" - ] - } - ], - "denominatorFilter": "metric.type=\"appengine.googleapis.com/http/server/response_count\" AND resource.type=\"gae_app\"", - "denominatorAggregations": [ - { - "alignmentPeriod": "300s", - "perSeriesAligner": "ALIGN_DELTA", - "crossSeriesReducer": "REDUCE_SUM", - "groupByFields": [ - "project", - "resource.label.module_id", - "resource.label.version_id" - ] - } - ], - "comparison": "COMPARISON_GT", - "thresholdValue": 0.5, - "duration": "0s", - "trigger": { - "count": 1 - } - } + "role": "roles/iam.workloadIdentityUser", + "members": [ + "serviceAccount:${PROJECT_ID?}.svc.id.goog[default/iampolicy-dep-workloadidentity]" + ] } - ], - "documentation": { - "content": "This sample is a synthesis of policy samples found at https://cloud.google.com/monitoring/alerts/policies-in-json. It is meant to give an idea of what is possible rather than be a completely realistic alerting policy in and of itself.\n\nCombiner OR\nOR combiner policies will trigger an incident when any of their conditions are met. They should be considered the default for most purposes.\n\nUptime-check conditions\nThe first three conditions in this policy involve an uptime check with the ID 'uptime-check-for-google-cloud-site'.\n\nThe first condition, \"Failure of uptime check_id uptime-check-for-google-cloud-site\", tests if the uptime check fails.\nThe second condition, \"SSL Certificate for google-cloud-site expiring soon\", tests if the SSL certificate on the Google Cloud site will expire in under 15 days.\n\nMetric-absence condition\nThe third condition in this policy, \"Uptime check running\" tests if the aforementioned uptime check is not written to for a period of approximately an hour.\nNote that unlike all the conditions so far, the condition used here is conditionAbsent, because the test is for the lack of a metric.\n\nMetric ratio\nThe fourth and last condition in this policy, \"Ratio of HTTP 500s error-response counts to all HTTP response counts\", tests that 5XX error codes do not make up more than half of all HTTP responses. It targets a different set of metrics through appengine.\n\nAll together, this policy would monitor for a situation where any of the above conditions threatened the health of the website." - } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT463 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT463 index 624b2bb..0589fcd 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT463 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT463 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_0.yaml" + "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149330, + "timestamp": 1642973304315, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_0.yaml" + "/samples/resources/iampolicy/workload-identity-policy/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT463", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT463", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringNotificationChannel", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "monitoringalertpolicy-dep1-networkconnectivity" + "name": "iampolicy-dep-workloadidentity" }, "spec": { - "labels": { - "number": "12025550196" - }, - "type": "sms" + "displayName": "Example Service Account" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT464 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT464 index cb9272f..2e1a580 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT464 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT464 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_1.yaml" + "/samples/resources/iampolicy/workload-identity-policy/kubernetes_service_account.yaml" ], - "timestamp": 1628765149353, + "timestamp": 1642973304319, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_1.yaml" + "/samples/resources/iampolicy/workload-identity-policy/kubernetes_service_account.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT464", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "serviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT464", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringNotificationChannel", + "apiVersion": "v1", + "kind": "ServiceAccount", "metadata": { - "name": "monitoringalertpolicy-dep2-networkconnectivity" - }, - "spec": { - "labels": { - "email_address": "dev@example.com" - }, - "type": "email" + "name": "iampolicy-dep-workloadidentity", + "annotations": { + "iam.gke.io/gcp-service-account": "iampolicy-dep-workloadidentity@${PROJECT_ID?}.iam.gserviceaccount.com" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT465 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT465 index 78dc7d3..8d75f24 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT465 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT465 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringdashboard/monitoring_v1beta1_monitoringdashboard.yaml" + "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iampolicymember.yaml" ], - "timestamp": 1628765149395, + "timestamp": 1642973304323, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,84 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringdashboard/monitoring_v1beta1_monitoringdashboard.yaml" + "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT465", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT465", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringDashboard", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", "metadata": { - "name": "monitoringdashboard-sample" + "name": "iampolicymember-sample-orglevel" }, "spec": { - "displayName": "monitoringdashboard-sample", - "columnLayout": { - "columns": [ - { - "weight": 2, - "widgets": [ - { - "title": "Widget 1", - "xyChart": { - "dataSets": [ - { - "timeSeriesQuery": { - "timeSeriesFilter": { - "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"", - "aggregation": { - "perSeriesAligner": "ALIGN_RATE" - } - }, - "unitOverride": "1" - }, - "plotType": "LINE" - } - ], - "timeshiftDuration": "0s", - "yAxis": { - "label": "y1Axis", - "scale": "LINEAR" - } - } - }, - { - "text": { - "content": "Widget 2", - "format": "MARKDOWN" - } - }, - { - "title": "Widget 3", - "xyChart": { - "dataSets": [ - { - "timeSeriesQuery": { - "timeSeriesFilter": { - "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"", - "aggregation": { - "perSeriesAligner": "ALIGN_RATE" - } - }, - "unitOverride": "1" - }, - "plotType": "STACKED_BAR" - } - ], - "timeshiftDuration": "0s", - "yAxis": { - "label": "y1Axis", - "scale": "LINEAR" - } - } - } - ] - } - ] + "member": "serviceAccount:iampolicymember-dep-orglevel@${PROJECT_ID?}.iam.gserviceaccount.com", + "role": "roles/storage.admin", + "resourceRef": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Organization", + "external": "${ORG_ID?}" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT466 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT466 index 9807e36..8e662b6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT466 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT466 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_0.yaml" + "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149437, + "timestamp": 1642973304326, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_0.yaml" + "/samples/resources/iampolicymember/external-organization-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT466", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT466", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringGroup", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "monitoringgroup-sample" - }, - "spec": { - "displayName": "MonitoringSubGroup", - "filter": "resource.metadata.name=has_substring(\"test\")", - "parentRef": { - "name": "monitoringgroup-dep" - } + "name": "iampolicymember-dep-orglevel" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT467 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT467 index 061dd10..2297540 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT467 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT467 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_1.yaml" + "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iampolicymember.yaml" ], - "timestamp": 1628765149460, + "timestamp": 1642973304332, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_1.yaml" + "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT467", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT467", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringGroup", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", "metadata": { - "name": "monitoringgroup-dep" + "name": "iampolicymember-sample-projectlevel" }, "spec": { - "displayName": "MonitoringGroup", - "filter": "resource.metadata.region=europe-west2" + "member": "serviceAccount:iampolicymember-dep-projectlevel@${PROJECT_ID?}.iam.gserviceaccount.com", + "role": "roles/storage.admin", + "resourceRef": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", + "external": "projects/${PROJECT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT468 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT468 index 081eeb3..9a6ba52 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT468 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT468 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringmetricdescriptor/monitoring_v1beta1_monitoringmetricdescriptor.yaml" + "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149488, + "timestamp": 1642973304336, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,44 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringmetricdescriptor/monitoring_v1beta1_monitoringmetricdescriptor.yaml" + "/samples/resources/iampolicymember/external-project-level-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT468", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT468", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringMetricDescriptor", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "monitoringmetricdescriptor-sample" - }, - "spec": { - "labels": [ - { - "key": "system_stable", - "valueType": "BOOL", - "description": "True if the estimation system is stable." - }, - { - "key": "condition_summary", - "valueType": "STRING", - "description": "A description of the condition the market system is in." - } - ], - "launchStage": "BETA", - "metadata": { - "ingestDelay": "1000s", - "samplePeriod": "100s" - }, - "metricKind": "GAUGE", - "type": "custom.googleapis.com/market/measurements/volume", - "unit": "{USD}/h", - "valueType": "DISTRIBUTION", - "description": "Tracks a combination of estimates of trade volume for a given resource, in $USD per hour.", - "displayName": "Trading Volume Estimate" + "name": "iampolicymember-dep-projectlevel" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT469 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT469 index df516b0..9ce3fb4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT469 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT469 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iampolicymember.yaml" ], - "timestamp": 1628765149534, + "timestamp": 1642973304340, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,35 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT469", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT469", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringNotificationChannel", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", "metadata": { - "labels": { - "response-priority": "all", - "target-user": "automation" - }, - "name": "monitoringnotificationchannel-sample-basicauth-webhook" + "name": "iampolicymember-sample-condition" }, "spec": { - "type": "webhook_basicauth", - "labels": { - "url": "http://hooks.example.com/notifications", - "username": "admin" + "member": "serviceAccount:iampolicymember-dep-condition@${PROJECT_ID?}.iam.gserviceaccount.com", + "role": "roles/cloudkms.admin", + "condition": { + "title": "expires_after_2019_12_31", + "description": "Expires at midnight of 2019-12-31", + "expression": "request.time < timestamp(\"2020-01-01T00:00:00Z\")" }, - "description": "Sends notifications to indicated webhook URL using HTTP-standard basic authentication. Should be used in conjunction with SSL/TLS to reduce the risk of attackers snooping the credentials.", - "sensitiveLabels": { - "password": { - "valueFrom": { - "secretKeyRef": { - "key": "password", - "name": "monitoringnotificationchannel-dep-basicauthwebhook" - } - } - } + "resourceRef": { + "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", + "kind": "KMSKeyRing", + "name": "iampolicymember-dep-condition" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT47 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT47 index 7402b6f..2916387 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT47 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT47 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], - "timestamp": 1628765139237, + "timestamp": 1642973301890, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,48 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT47", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT47", "collection": "kcctemplate", "json": { "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", - "kind": "BinaryAuthorizationPolicy", + "kind": "BinaryAuthorizationAttestor", "metadata": { - "name": "binaryauthorizationpolicy-sample-cluster" + "name": "binaryauthorizationpolicy-dep-cluster" }, "spec": { - "admissionWhitelistPatterns": [ - { - "namePattern": "gcr.io/*" - } - ], - "clusterAdmissionRules": { - "us-west1-a.test-cluster": { - "evaluationMode": "REQUIRE_ATTESTATION", - "requireAttestationsBy": [ - { - "name": "binaryauthorizationpolicy-dep-cluster" - } - ], - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" - } + "projectRef": { + "name": "binauthzpolicy-dep-cluster" }, - "defaultAdmissionRule": { - "evaluationMode": "REQUIRE_ATTESTATION", - "requireAttestationsBy": [ - { - "name": "binaryauthorizationpolicy-dep-cluster" - } - ], - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" - }, - "description": "A sample Binary Authorization policy with a cluster admission rule", - "globalPolicyEvaluationMode": "DISABLE" + "description": "A sample binary authorization attestor.", + "userOwnedDrydockNote": { + "noteRef": { + "name": "binaryauthorizationpolicy-dep-cluster" + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT470 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT470 index a92fea2..3a0854c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT470 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT470 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/secret.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149563, + "timestamp": 1642973304343, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/secret.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT470", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT470", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "monitoringnotificationchannel-dep-basicauthwebhook" - }, - "data": { - "password": "cGFzc3dvcmQK" + "name": "iampolicymember-dep-condition" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT471 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT471 index 1501bcd..9d8ca0e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT471 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT471 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringnotificationchannel/disabled-email-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/kms_v1beta1_kmskeyring.yaml" ], - "timestamp": 1628765149588, + "timestamp": 1642973304346, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringnotificationchannel/disabled-email-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/kms-policy-member-with-condition/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT471", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT471", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringNotificationChannel", + "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", + "kind": "KMSKeyRing", "metadata": { - "labels": { - "response-priority": "longterm", - "target-user": "dev" - }, - "name": "monitoringnotificationchannel-sample-disabled-email" + "name": "iampolicymember-dep-condition" }, "spec": { - "type": "email", - "labels": { - "email_address": "dev@example.com" - }, - "description": "A disabled channel that would send notifications via email if enabled.", - "enabled": false + "location": "us-central1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT472 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT472 index 7ca64a0..5c6a5f2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT472 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT472 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/monitoringnotificationchannel/sms-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamcustomrole.yaml" ], - "timestamp": 1628765149611, + "timestamp": 1642973304350, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/monitoringnotificationchannel/sms-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamcustomrole.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT472", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamcustomrole" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT472", "collection": "kcctemplate", "json": { - "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", - "kind": "MonitoringNotificationChannel", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMCustomRole", "metadata": { - "labels": { - "response-priority": "intervention", - "target-user": "on-call" + "annotations": { + "cnrm.cloud.google.com/organization-id": "${ORG_ID?}" }, - "name": "monitoringnotificationchannel-sample-sms" + "name": "iampolicymemberdeporgrole" }, "spec": { - "type": "sms", - "labels": { - "number": "12025550196" - }, - "description": "A channel that sends notifications via Short Message Service (SMS).", - "enabled": true + "title": "Example Organization-Level Custom Role", + "description": "This role only contains two permissions - publish and update", + "permissions": [ + "pubsub.topics.publish", + "pubsub.topics.update" + ], + "stage": "GA" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT473 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT473 index 1076e1b..732c2a9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT473 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT473 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/networksecurityauthorizationpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iampolicymember.yaml" ], - "timestamp": 1628765149644, + "timestamp": 1642973304354, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,79 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networksecurityauthorizationpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT473", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT473", "collection": "kcctemplate", "json": { - "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", - "kind": "NetworkSecurityAuthorizationPolicy", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", "metadata": { - "labels": { - "key-one": "value-one" - }, - "name": "networksecurityauthorizationpolicy-sample" + "name": "iampolicymember-sample-orgrole" }, "spec": { - "location": "global", - "action": "ALLOW", - "description": "Test Authorization Policy", - "rules": [ - { - "sources": [ - { - "ipBlocks": [ - "1.2.3.4" - ], - "principals": [ - "*" - ] - } - ], - "destinations": [ - { - "hosts": [ - "demo-service" - ], - "ports": [ - 8080 - ], - "methods": [ - "POST" - ] - } - ] - }, - { - "sources": [ - { - "ipBlocks": [ - "1.2.3.5" - ], - "principals": [ - "*" - ] - } - ], - "destinations": [ - { - "hosts": [ - "test-service" - ], - "ports": [ - 8081 - ], - "methods": [ - "GET" - ] - } - ] - } - ] + "member": "serviceAccount:iampolicymember-dep-orgrole@${PROJECT_ID?}.iam.gserviceaccount.com", + "role": "organizations/${ORG_ID?}/roles/iampolicymemberdeporgrole", + "resourceRef": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", + "external": "projects/${PROJECT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT474 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT474 index 1064018..ab0c33e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT474 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT474 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/networksecurityclienttlspolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149662, + "timestamp": 1642973304360, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,39 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networksecurityclienttlspolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + "/samples/resources/iampolicymember/org-level-iam-custom-role-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT474", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT474", "collection": "kcctemplate", "json": { - "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", - "kind": "NetworkSecurityClientTLSPolicy", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "networksecurityclienttlspolicy-sample", - "labels": { - "label-one": "value-one" - } - }, - "spec": { - "description": "Sample global client TLS policy", - "location": "global", - "sni": "example.com", - "clientCertificate": { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe" - } - }, - "serverValidationCa": [ - { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe" - } - } - ] + "name": "iampolicymember-dep-orgrole" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT475 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT475 index 31e3be6..b8e87dd 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT475 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT475 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/networksecurityservertlspolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iampolicymember.yaml" ], - "timestamp": 1628765149688, + "timestamp": 1642973304364, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networksecurityservertlspolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT475", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT475", "collection": "kcctemplate", "json": { - "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", - "kind": "NetworkSecurityServerTLSPolicy", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", "metadata": { - "name": "networksecurityservertlspolicy-sample", - "labels": { - "label-one": "value-one" - } + "name": "iampolicymember-sample-memberref" }, "spec": { - "description": "Sample global server TLS policy", - "location": "global", - "allowOpen": true, - "serverCertificate": { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe" + "memberFrom": { + "serviceAccountRef": { + "name": "iampolicymember-dep-memberref" } }, - "mtlsPolicy": { - "clientValidationCa": [ - { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe" - } - } - ] + "role": "roles/editor", + "resourceRef": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "name": "iampolicymember-dep-memberref" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT476 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT476 index 2a885ce..4b096fc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT476 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT476 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149721, + "timestamp": 1642973304368, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,79 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT476", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT476", "collection": "kcctemplate", "json": { - "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", - "kind": "NetworkSecurityAuthorizationPolicy", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "labels": { - "key-one": "value-one" - }, - "name": "networksecurityauthorizationpolicy-sample" - }, - "spec": { - "location": "global", - "action": "ALLOW", - "description": "Test Authorization Policy", - "rules": [ - { - "sources": [ - { - "ipBlocks": [ - "1.2.3.4" - ], - "principals": [ - "*" - ] - } - ], - "destinations": [ - { - "hosts": [ - "demo-service" - ], - "ports": [ - 8080 - ], - "methods": [ - "POST" - ] - } - ] - }, - { - "sources": [ - { - "ipBlocks": [ - "1.2.3.5" - ], - "principals": [ - "*" - ] - } - ], - "destinations": [ - { - "hosts": [ - "test-service" - ], - "ports": [ - 8081 - ], - "methods": [ - "GET" - ] - } - ] - } - ] + "name": "iampolicymember-dep-memberref" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT477 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT477 index a1d1ec5..f027ed0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT477 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT477 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/pubsub_v1beta1_pubsubtopic.yaml" ], - "timestamp": 1628765149761, + "timestamp": 1642973304371, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,39 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + "/samples/resources/iampolicymember/policy-member-with-member-reference/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT477", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT477", "collection": "kcctemplate", "json": { - "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", - "kind": "NetworkSecurityClientTLSPolicy", + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", "metadata": { - "name": "networksecurityclienttlspolicy-sample", - "labels": { - "label-one": "value-one" - } - }, - "spec": { - "description": "Sample global client TLS policy", - "location": "global", - "sni": "example.com", - "clientCertificate": { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe" - } - }, - "serverValidationCa": [ - { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe" - } - } - ] + "name": "iampolicymember-dep-memberref" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT478 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT478 index 5831690..05b7dbe 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT478 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT478 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iampolicymember.yaml" ], - "timestamp": 1628765149787, + "timestamp": 1642973304376, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iampolicymember.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT478", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT478", "collection": "kcctemplate", "json": { - "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", - "kind": "NetworkSecurityServerTLSPolicy", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", "metadata": { - "name": "networksecurityservertlspolicy-sample", - "labels": { - "label-one": "value-one" - } + "name": "iampolicymember-sample-pubsubadmin" }, "spec": { - "description": "Sample global server TLS policy", - "location": "global", - "allowOpen": true, - "serverCertificate": { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe" - } - }, - "mtlsPolicy": { - "clientValidationCa": [ - { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe" - } - } - ] + "member": "serviceAccount:iampolicymember-dep-pubsub@${PROJECT_ID?}.iam.gserviceaccount.com", + "role": "roles/editor", + "resourceRef": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "name": "iampolicymember-dep-pubsubadmin" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT479 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT479 index 10825b2..790ba87 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT479 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT479 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networkservices-v1beta1-networkservicesendpointpolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149814, + "timestamp": 1642973304381, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,52 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/networkservicesendpointpolicy/networkservices-v1beta1-networkservicesendpointpolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT479", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT479", "collection": "kcctemplate", "json": { - "apiVersion": "networkservices.cnrm.cloud.google.com/v1beta1", - "kind": "NetworkServicesEndpointPolicy", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "labels": { - "key-one": "value-one" - }, - "name": "networkservicesendpointpolicy-sample" - }, - "spec": { - "location": "global", - "type": "SIDECAR_PROXY", - "authorizationPolicyRef": { - "name": "networksecurityauthorizationpolicy-sample" - }, - "endpointMatcher": { - "metadataLabelMatcher": { - "metadataLabelMatchCriteria": "MATCH_ANY", - "metadataLabels": [ - { - "labelName": "filter-test", - "labelValue": "true" - } - ] - } - }, - "trafficPortSelector": { - "ports": [ - "6767" - ] - }, - "description": "A sample endpoint policy", - "serverTlsPolicyRef": { - "name": "networksecurityservertlspolicy-sample" - }, - "clientTlsPolicyRef": { - "name": "networksecurityclienttlspolicy-sample" - } + "name": "iampolicymember-dep-pubsub" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT48 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT48 index cf72cd7..10d7bee 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT48 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT48 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/cluster-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], - "timestamp": 1628765139258, + "timestamp": 1642973301900, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,54 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/cluster-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT48", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT48", "collection": "kcctemplate", "json": { - "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerAnalysisNote", + "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", + "kind": "BinaryAuthorizationPolicy", "metadata": { - "name": "binaryauthorizationpolicy-dep-cluster" + "name": "binaryauthorizationpolicy-sample-cluster" }, "spec": { - "package": { - "name": "test-package" - } + "projectRef": { + "name": "binauthzpolicy-dep-cluster" + }, + "admissionWhitelistPatterns": [ + { + "namePattern": "gcr.io/*" + } + ], + "clusterAdmissionRules": { + "us-west1-a.test-cluster": { + "evaluationMode": "REQUIRE_ATTESTATION", + "requireAttestationsBy": [ + { + "name": "binaryauthorizationpolicy-dep-cluster" + } + ], + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + } + }, + "defaultAdmissionRule": { + "evaluationMode": "REQUIRE_ATTESTATION", + "requireAttestationsBy": [ + { + "name": "binaryauthorizationpolicy-dep-cluster" + } + ], + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + }, + "description": "A sample Binary Authorization policy with a cluster admission rule", + "globalPolicyEvaluationMode": "DISABLE" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT480 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT480 index 9ee59f7..1ab1ee3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT480 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT480 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/osconfigguestpolicy/osconfig_v1beta1_osconfigguestpolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/pubsub_v1beta1_pubsubtopic.yaml" ], - "timestamp": 1628765149910, + "timestamp": 1642973304384, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,188 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/osconfigguestpolicy/osconfig_v1beta1_osconfigguestpolicy.yaml" + "/samples/resources/iampolicymember/pubsub-admin-policy-member/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT480", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT480", "collection": "kcctemplate", "json": { - "apiVersion": "osconfig.cnrm.cloud.google.com/v1beta1", - "kind": "OSConfigGuestPolicy", + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", "metadata": { - "name": "osconfigguestpolicy-sample" - }, - "spec": { - "description": "An example OSConfigGuestPolicy for installing a web application on assigned instances.", - "assignment": { - "groupLabels": [ - { - "labels": { - "env": "prod", - "app": "web" - } - }, - { - "labels": { - "env": "staging", - "app": "web" - } - } - ], - "instanceNamePrefixes": [ - "webappprod-", - "webappstaging-" - ], - "osTypes": [ - { - "osArchitecture": "x86_64", - "osShortName": "debian", - "osVersion": "10" - }, - { - "osArchitecture": "x86_64", - "osShortName": "windows", - "osVersion": "10.0.14393" - } - ] - }, - "packageRepositories": [ - { - "apt": { - "archiveType": "DEB", - "distribution": "aiy-debian-buster", - "components": [ - "main" - ], - "uri": "https://packages.cloud.google.com/apt", - "gpgKey": "https://packages.cloud.google.com/apt/dists/aiy-debian-buster/Release.gpg" - } - }, - { - "yum": { - "id": "liamtest", - "displayName": "Liam Test", - "baseUrl": "https://packages.cloud.google.com/yum/repos/liamtest", - "gpgKeys": [ - "https://packages.cloud.google.com/yum/doc/yum-key.gpg", - "https://packages.cloud.google.com/yum/doc/rpm-pkg-key.gpg" - ] - } - } - ], - "packages": [ - { - "desiredState": "INSTALLED", - "manager": "APT", - "name": "add-apt-key" - }, - { - "desiredState": "REMOVED", - "manager": "YUM", - "name": "ssl" - }, - { - "desiredState": "UPDATED", - "manager": "ANY", - "name": "ansible-doc" - } - ], - "recipes": [ - { - "name": "latest-ansible", - "version": "1.0.0.1", - "artifacts": [ - { - "id": "ansible", - "remote": { - "uri": "https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz" - }, - "allowInsecure": true - } - ], - "desiredState": "INSTALLED", - "installSteps": [ - { - "fileCopy": { - "artifactId": "ansible", - "destination": "/installbackups/ansible", - "overwrite": true, - "permissions": "555" - } - }, - { - "archiveExtraction": { - "destination": "/var/ansible/", - "type": "TAR_GZIP", - "artifactId": "ansible" - } - } - ] - }, - { - "name": "prod-web-app", - "version": "2.5.27", - "artifacts": [ - { - "id": "web-app", - "allowInsecure": false, - "gcs": { - "generation": 1829485032948520, - "object": "latest/prod", - "bucketRef": { - "external": "https://storage.googleapis.com/storage/v1/b/webapp" - } - } - } - ], - "desiredState": "UPDATED", - "installSteps": [ - { - "fileCopy": { - "overwrite": false, - "permissions": "777", - "artifactId": "web-app", - "destination": "/installbackups/prod" - } - }, - { - "fileExec": { - "localPath": "/installbackups/prod", - "allowedExitCodes": [ - 0 - ], - "args": [ - "prodcompile" - ] - } - } - ], - "updateSteps": [ - { - "fileCopy": { - "permissions": "755", - "artifactId": "web-app", - "destination": "/installbackups/prod" - } - }, - { - "fileExec": { - "localPath": "/installbackups/prod", - "allowedExitCodes": [ - 0, - 4 - ], - "args": [ - "updatecompile" - ] - } - } - ] - } - ] + "name": "iampolicymember-dep-pubsubadmin" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT481 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT481 index 479edd2..7d533d7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT481 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT481 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/project/project-in-folder/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamserviceaccount/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149951, + "timestamp": 1642973304388, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/project/project-in-folder/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamserviceaccount/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT481", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT481", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "annotations": { - "cnrm.cloud.google.com/auto-create-network": "false" - }, "labels": { "label-one": "value-one" }, - "name": "project-sample-in-folder" + "name": "iamserviceaccount-sample" }, "spec": { - "name": "Config Connector Sample", - "folderRef": { - "external": "${FOLDER_ID?}" - }, - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" - } + "displayName": "Example Service Account" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT482 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT482 index 4c6bc59..46d3b94 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT482 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT482 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/project/project-in-org/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765149989, + "timestamp": 1642973304392, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/project/project-in-org/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT482", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT482", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "annotations": { - "cnrm.cloud.google.com/auto-create-network": "false" - }, - "labels": { - "label-one": "value-one" - }, - "name": "project-sample-in-org" - }, - "spec": { - "name": "Config Connector Sample", - "organizationRef": { - "external": "${ORG_ID?}" - }, - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" - } + "name": "iamserviceaccountkey-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT483 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT483 index 95885d8..457c2d8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT483 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT483 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubsubscription.yaml" + "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccountkey.yaml" ], - "timestamp": 1628765150033, + "timestamp": 1642973304396, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubsubscription.yaml" + "/samples/resources/iamserviceaccountkey/iam_v1beta1_iamserviceaccountkey.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT483", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccountkey" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT483", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubSubscription", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccountKey", "metadata": { + "name": "iamserviceaccountkey-sample", "labels": { "label-one": "value-one" - }, - "name": "pubsubsubscription-sample" + } }, "spec": { - "ackDeadlineSeconds": 15, - "messageRetentionDuration": "86400s", - "retainAckedMessages": false, - "topicRef": { - "name": "pubsubsubscription-dep" - }, - "deadLetterPolicy": { - "deadLetterTopicRef": { - "name": "pubsubsubscription-dep2" - } + "publicKeyType": "TYPE_X509_PEM_FILE", + "keyAlgorithm": "KEY_ALG_RSA_2048", + "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE", + "serviceAccountRef": { + "name": "iamserviceaccountkey-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT484 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT484 index 82151d8..2afacbb 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT484 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT484 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + "/samples/resources/iamworkloadidentitypool/iam_v1beta1_iamworkloadidentitypool.yaml" ], - "timestamp": 1628765150081, + "timestamp": 1642973304400, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + "/samples/resources/iamworkloadidentitypool/iam_v1beta1_iamworkloadidentitypool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT484", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypool" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT484", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMWorkloadIdentityPool", "metadata": { - "name": "pubsubsubscription-dep" + "name": "iamwip-sample" + }, + "spec": { + "location": "global", + "displayName": "sample-pool", + "description": "A sample workload identity pool using a newly created project", + "disabled": false, + "projectRef": { + "external": "projects/${PROJECT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT485 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT485 index e8717e2..e5ce73e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT485 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT485 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/aws-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypool.yaml" ], - "timestamp": 1628765150123, + "timestamp": 1642973304405, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/aws-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT485", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypool" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT485", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMWorkloadIdentityPool", "metadata": { - "name": "pubsubsubscription-dep2" + "name": "iamwipp-dep-aws" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "displayName": "sample-pool", + "description": "A sample workload identity pool using a newly created project", + "disabled": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT486 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT486 index 7d66cb6..0c107ff 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT486 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT486 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/pubsubtopic/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/aws-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypoolprovider.yaml" ], - "timestamp": 1628765150150, + "timestamp": 1642973304409, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,44 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/pubsubtopic/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/aws-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypoolprovider.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT486", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypoolprovider" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT486", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMWorkloadIdentityPoolProvider", "metadata": { - "labels": { - "label-one": "value-one" + "name": "iamwipp-sample-aws" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" }, - "name": "pubsubtopic-sample" + "location": "global", + "workloadIdentityPoolRef": { + "name": "iamwipp-dep-aws" + }, + "displayName": "sample-provider", + "description": "A sample workload identity pool provider using aws", + "disabled": false, + "attributeMapping": { + "google.subject": "true" + }, + "attributeCondition": "true", + "aws": { + "accountId": "999999999999", + "stsUri": [ + "https://sts.amazonaws.com/sample-sts" + ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT487 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT487 index f898d88..c72a707 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT487 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT487 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/redisinstance/redis_v1beta1_redisinstance.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/oidc-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypool.yaml" ], - "timestamp": 1628765150204, + "timestamp": 1642973304412, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/redisinstance/redis_v1beta1_redisinstance.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/oidc-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypool.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT487", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypool" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT487", "collection": "kcctemplate", "json": { - "apiVersion": "redis.cnrm.cloud.google.com/v1beta1", - "kind": "RedisInstance", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMWorkloadIdentityPool", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "redisinstance-sample" + "name": "iamwipp-dep-oidc" }, "spec": { - "displayName": "Sample Redis Instance", - "region": "us-central1", - "tier": "BASIC", - "memorySizeGb": 16 + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "displayName": "sample-pool", + "description": "A sample workload identity pool using a newly created project", + "disabled": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT488 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT488 index c43193c..cfc7210 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT488 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT488 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/oidc-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypoolprovider.yaml" ], - "timestamp": 1628765150239, + "timestamp": 1642973304415, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_project.yaml" + "/samples/resources/iamworkloadidentitypoolprovider/oidc-workload-identity-pool-provider/iam_v1beta1_iamworkloadidentitypoolprovider.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT488", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamworkloadidentitypoolprovider" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT488", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMWorkloadIdentityPoolProvider", "metadata": { - "annotations": { - "cnrm.cloud.google.com/organization-id": "${ORG_ID?}", - "cnrm.cloud.google.com/auto-create-network": "false" - }, - "name": "resourcemanagerlien-dep" + "name": "iamwipp-sample-oidc" }, "spec": { - "name": "ResourceManagerLien dependency" + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "workloadIdentityPoolRef": { + "name": "iamwipp-dep-oidc" + }, + "attributeMapping": { + "google.subject": "true" + }, + "oidc": { + "issuerUri": "https://example.com/", + "allowedAudiences": [ + "sample-audience" + ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT489 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT489 index 03c0b32..a787773 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT489 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT489 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_resourcemanagerlien.yaml" + "/samples/resources/iapbrand/iap_v1beta1_iapbrand.yaml" ], - "timestamp": 1628765150272, + "timestamp": 1642973304420, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_resourcemanagerlien.yaml" + "/samples/resources/iapbrand/iap_v1beta1_iapbrand.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT489", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iapbrand" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT489", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "ResourceManagerLien", + "apiVersion": "iap.cnrm.cloud.google.com/v1beta1", + "kind": "IAPBrand", "metadata": { - "name": "resourcemanagerlien-sample" + "name": "iapbrand-sample" }, "spec": { - "origin": "project-deletion-prohibited", - "reason": "This project is protected from deletion, for reasons which can be explained in this field.", - "parent": { - "projectRef": { - "name": "resourcemanagerlien-dep" - } - }, - "restrictions": [ - "resourcemanager.projects.delete" - ] + "applicationTitle": "test brand", + "supportEmail": "support@example.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT49 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT49 index 30ca778..404ce05 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT49 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT49 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/default-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], - "timestamp": 1628765139280, + "timestamp": 1642973301908, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,46 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/default-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT49", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT49", "collection": "kcctemplate", "json": { - "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", - "kind": "BinaryAuthorizationPolicy", + "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerAnalysisNote", "metadata": { - "name": "binaryauthorizationpolicy-sample-default" + "name": "binaryauthorizationpolicy-dep-cluster" }, "spec": { "projectRef": { - "name": "binauthpolicy-dep-default" + "name": "binauthzpolicy-dep-cluster" }, - "admissionWhitelistPatterns": [ - { - "namePattern": "gcr.io/google_containers/*" - }, - { - "namePattern": "gcr.io/google-containers/*" - }, - { - "namePattern": "k8s.gcr.io/*" - }, - { - "namePattern": "gke.gcr.io/*" - }, - { - "namePattern": "gcr.io/stackdriver-agents/*" - } - ], - "defaultAdmissionRule": { - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG", - "evaluationMode": "ALWAYS_ALLOW" - }, - "globalPolicyEvaluationMode": "ENABLE" + "package": { + "name": "test-package" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT490 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT490 index 2de09ee..43aa091 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT490 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT490 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapbrand.yaml" ], - "timestamp": 1628765150301, + "timestamp": 1642973304437, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_folder.yaml" + "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapbrand.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT490", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iapbrand" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT490", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Folder", + "apiVersion": "iap.cnrm.cloud.google.com/v1beta1", + "kind": "IAPBrand", "metadata": { - "annotations": { - "cnrm.cloud.google.com/organization-id": "${ORG_ID?}" - }, - "name": "resourcemanagerpolicy-dep-folder" + "name": "iapidentityawareproxyclient-dep" }, "spec": { - "displayName": "Org Policy Sample" + "applicationTitle": "test brand", + "supportEmail": "support@example.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT491 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT491 index 6471b0a..e26b2d3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT491 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT491 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapidentityawareproxyclient.yaml" ], - "timestamp": 1628765150339, + "timestamp": 1642973304443, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/iapidentityawareproxyclient/iap_v1beta1_iapidentityawareproxyclient.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT491", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iapidentityawareproxyclient" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT491", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "ResourceManagerPolicy", + "apiVersion": "iap.cnrm.cloud.google.com/v1beta1", + "kind": "IAPIdentityAwareProxyClient", "metadata": { - "name": "resourcemanagerpolicy-sample-folder" + "name": "iapidentityawareproxyclient-sample" }, "spec": { - "folderRef": { - "name": "resourcemanagerpolicy-dep-folder" - }, - "constraint": "constraints/compute.disableSerialPortAccess", - "booleanPolicy": { - "enforced": true + "displayName": "Test Client", + "brandRef": { + "name": "iapidentityawareproxyclient-dep" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT492 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT492 index e0a2187..c5cffb4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT492 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT492 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-organization/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/identityplatformoauthidpconfig/identityplatform_v1beta1_identityplatformoauthidpconfig.yaml" ], - "timestamp": 1628765150370, + "timestamp": 1642973304446, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-organization/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/identityplatformoauthidpconfig/identityplatform_v1beta1_identityplatformoauthidpconfig.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT492", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "identityplatformoauthidpconfig" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT492", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "ResourceManagerPolicy", + "apiVersion": "identityplatform.cnrm.cloud.google.com/v1beta1", + "kind": "IdentityPlatformOAuthIDPConfig", "metadata": { - "name": "resourcemanagerpolicy-sample-org" + "name": "identityplatformoauthidpconfig-sample" }, "spec": { - "organizationRef": { - "external": "${ORG_ID?}" - }, - "constraint": "constraints/compute.disableSerialPortAccess", - "booleanPolicy": { - "enforced": true + "resourceID": "oidc.project-oauth-idp-config-sample", + "displayName": "sample oauth idp config", + "clientId": "client-id", + "issuer": "issuer", + "enabled": true, + "clientSecret": { + "valueFrom": { + "secretKeyRef": { + "key": "clientSecret", + "name": "identityplatformoauthidpconfig-dep" + } + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT493 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT493 index b0a0737..e1e9d09 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT493 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT493 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_project.yaml" + "/samples/resources/identityplatformoauthidpconfig/secret.yaml" ], - "timestamp": 1628765150392, + "timestamp": 1642973304449, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_project.yaml" + "/samples/resources/identityplatformoauthidpconfig/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT493", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT493", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "Project", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "annotations": { - "cnrm.cloud.google.com/organization-id": "${ORG_ID?}" - }, - "name": "resourcemanagerpolicy-dep-project" + "name": "identityplatformoauthidpconfig-dep" }, - "spec": { - "name": "Org Policy Sample", - "billingAccountRef": { - "external": "${BILLING_ACCOUNT_ID?}" - } + "stringData": { + "clientSecret": "secret" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT494 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT494 index a4f6c18..ec8c6c6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT494 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT494 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/identityplatformtenant/identityplatform_v1beta1_identityplatformtenant.yaml" ], - "timestamp": 1628765150413, + "timestamp": 1642973304453, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + "/samples/resources/identityplatformtenant/identityplatform_v1beta1_identityplatformtenant.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT494", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "identityplatformtenant" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT494", "collection": "kcctemplate", "json": { - "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", - "kind": "ResourceManagerPolicy", + "apiVersion": "identityplatform.cnrm.cloud.google.com/v1beta1", + "kind": "IdentityPlatformTenant", "metadata": { - "name": "resourcemanagerpolicy-sample-project" + "name": "identityplatformtenant-sample" }, "spec": { - "projectRef": { - "name": "resourcemanagerpolicy-dep-project" + "displayName": "sample-tenant", + "allowPasswordSignup": true, + "enableAnonymousUser": false, + "mfaConfig": { + "state": "ENABLED" }, - "constraint": "constraints/compute.disableSerialPortAccess", - "booleanPolicy": { - "enforced": true + "testPhoneNumbers": { + "+12345678901": "123451", + "+16505550000": "123450" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT495 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT495 index 91faa1d..5e34969 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT495 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT495 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/secretmanagersecret/automatic-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenant.yaml" ], - "timestamp": 1628765150433, + "timestamp": 1642973304457, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecret/automatic-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenant.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT495", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "identityplatformtenant" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT495", "collection": "kcctemplate", "json": { - "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", - "kind": "SecretManagerSecret", + "apiVersion": "identityplatform.cnrm.cloud.google.com/v1beta1", + "kind": "IdentityPlatformTenant", "metadata": { - "name": "secretmanagersecret-sample-automatic", - "labels": { - "replication-type": "automatic" - } + "name": "identityplatformtenantoauthidpconfig-dep" }, "spec": { - "replication": { - "automatic": true + "displayName": "test-tenant", + "allowPasswordSignup": true, + "enableAnonymousUser": false, + "mfaConfig": { + "state": "ENABLED" + }, + "testPhoneNumbers": { + "+12345678901": "123451", + "+16505550000": "123450" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT496 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT496 index 280c642..44063a7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT496 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT496 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/secretmanagersecret/user-managed-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenantoauthidpconfig.yaml" ], - "timestamp": 1628765150459, + "timestamp": 1642973304461, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,34 +15,41 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecret/user-managed-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/identityplatform_v1beta1_identityplatformtenantoauthidpconfig.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT496", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "identityplatformtenantoauthidpconfig" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT496", "collection": "kcctemplate", "json": { - "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", - "kind": "SecretManagerSecret", + "apiVersion": "identityplatform.cnrm.cloud.google.com/v1beta1", + "kind": "IdentityPlatformTenantOAuthIDPConfig", "metadata": { - "name": "secretmanagersecret-sample-usermanaged", "labels": { - "replication-type": "user-managed" - } + "foo": "bar" + }, + "name": "identityplatformtenantoauthidpconfig-sample" }, "spec": { - "replication": { - "userManaged": { - "replicas": [ - { - "location": "us-central1" - }, - { - "location": "us-east1" - } - ] + "resourceID": "oidc.tenant-oauth-idp-config-sample", + "tenantRef": { + "name": "identityplatformtenantoauthidpconfig-dep" + }, + "displayName": "sample tenant oauth idp config", + "clientId": "client-id", + "issuer": "issuer", + "enabled": true, + "clientSecret": { + "valueFrom": { + "secretKeyRef": { + "key": "clientSecret", + "name": "identityplatformtenantoauthidpconfig-dep" + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT497 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT497 index 7bee16c..22861a7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT497 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT497 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/secretmanagersecretversion/secret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/secret.yaml" ], - "timestamp": 1628765150473, + "timestamp": 1642973304464, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecretversion/secret.yaml" + "/samples/resources/identityplatformtenantoauthidpconfig/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT497", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT497", "collection": "kcctemplate", @@ -27,10 +30,10 @@ "apiVersion": "v1", "kind": "Secret", "metadata": { - "name": "secretmanagersecretversion-dep" + "name": "identityplatformtenantoauthidpconfig-dep" }, - "data": { - "secretData": "SSBhbHdheXMgbG92ZWQgc3BhcnJpbmcgd2l0aCBnaWFudCBjYW5keSBzd29yZHMsIGJ1dCBJIGhhZCBubyBpZGVhIHRoYXQgd2FzIG15IHN1cGVyIHNlY3JldCBpbmZvcm1hdGlvbiE=" + "stringData": { + "clientSecret": "secret1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT498 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT498 index 51f4301..bc799f8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT498 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT498 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/kmscryptokey/kms_v1beta1_kmscryptokey.yaml" ], - "timestamp": 1628765150488, + "timestamp": 1642973304468, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecret.yaml" + "/samples/resources/kmscryptokey/kms_v1beta1_kmscryptokey.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT498", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmscryptokey" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT498", "collection": "kcctemplate", "json": { - "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", - "kind": "SecretManagerSecret", + "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", + "kind": "KMSCryptoKey", "metadata": { - "name": "secretmanagersecretversion-dep" + "labels": { + "key-one": "value-one" + }, + "name": "kmscryptokey-sample" }, "spec": { - "replication": { - "automatic": true - } + "keyRingRef": { + "name": "kmscryptokey-dep" + }, + "purpose": "ASYMMETRIC_SIGN", + "versionTemplate": { + "algorithm": "EC_SIGN_P384_SHA384", + "protectionLevel": "SOFTWARE" + }, + "importOnly": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT499 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT499 index 04114d6..0695978 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT499 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT499 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecretversion.yaml" + "/samples/resources/kmscryptokey/kms_v1beta1_kmskeyring.yaml" ], - "timestamp": 1628765150510, + "timestamp": 1642973304471, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecretversion.yaml" + "/samples/resources/kmscryptokey/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT499", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT499", "collection": "kcctemplate", "json": { - "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", - "kind": "SecretManagerSecretVersion", + "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", + "kind": "KMSKeyRing", "metadata": { - "name": "secretmanagersecretversion-sample" + "name": "kmscryptokey-dep" }, "spec": { - "enabled": true, - "secretData": { - "valueFrom": { - "secretKeyRef": { - "key": "secretData", - "name": "secretmanagersecretversion-dep" - } - } - }, - "secretRef": { - "name": "secretmanagersecretversion-dep" - } + "location": "us-central1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT5 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT5 index 3890338..be7d8b3 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT5 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT5 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/accesscontextmanagerserviceperimeter/accesscontextmanager_v1beta1_accesscontextmanageraccesslevel_multiple_yaml_1.yaml" ], - "timestamp": 1628765138278, + "timestamp": 1642973301658, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT5", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanageraccesslevel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT5", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT50 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT50 index ce8024d..e595ba4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT50 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT50 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/default-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765139296, + "timestamp": 1642973301916, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/default-policy/resourcemanager_v1beta1_project.yaml" + "/samples/resources/binaryauthorizationpolicy/cluster-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT50", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT50", "collection": "kcctemplate", @@ -27,15 +30,12 @@ "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", "kind": "Project", "metadata": { - "annotations": { - "cnrm.cloud.google.com/auto-create-network": "false" - }, - "name": "binauthpolicy-dep-default" + "name": "binauthzpolicy-dep-cluster" }, "spec": { "name": "Config Connector Sample", - "folderRef": { - "external": "${FOLDER_ID?}" + "organizationRef": { + "external": "${ORG_ID?}" }, "billingAccountRef": { "external": "${BILLING_ACCOUNT_ID?}" diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT500 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT500 index 75a5726..fa20ca4 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT500 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT500 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/service/serviceusage_v1beta1_service.yaml" + "/samples/resources/kmskeyring/kms_v1beta1_kmskeyring.yaml" ], - "timestamp": 1628765150532, + "timestamp": 1642973304475, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/service/serviceusage_v1beta1_service.yaml" + "/samples/resources/kmskeyring/kms_v1beta1_kmskeyring.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT500", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "kmskeyring" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT500", "collection": "kcctemplate", "json": { - "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", - "kind": "Service", + "apiVersion": "kms.cnrm.cloud.google.com/v1beta1", + "kind": "KMSKeyRing", "metadata": { - "annotations": { - "cnrm.cloud.google.com/deletion-policy": "abandon", - "cnrm.cloud.google.com/disable-dependent-services": "false" - }, - "name": "pubsub.googleapis.com" + "name": "kmskeyring-sample" + }, + "spec": { + "location": "us-central1" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT501 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT501 index 33f6ca1..a46d515 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT501 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT501 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_0.yaml" + "/samples/resources/logginglogexclusion/billing-exclusion/logging_v1beta1_logginglogexclusion.yaml" ], - "timestamp": 1628765150576, + "timestamp": 1642973304479, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_0.yaml" + "/samples/resources/logginglogexclusion/billing-exclusion/logging_v1beta1_logginglogexclusion.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT501", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "logginglogexclusion" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT501", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeAddress", + "apiVersion": "logging.cnrm.cloud.google.com/v1beta1", + "kind": "LoggingLogExclusion", "metadata": { - "name": "servicenetworkingconnection-dep1" + "name": "logginglogexclusion-sample-billing" }, "spec": { - "addressType": "INTERNAL", - "location": "global", - "networkRef": { - "name": "servicenetworkingconnection-dep" + "billingAccountRef": { + "external": "billingAccounts/${BILLING_ACCOUNT_ID?}" }, - "prefixLength": 16, - "purpose": "VPC_PEERING" + "description": "A billing log exclusion", + "filter": "resource.type=gcs_bucket severity=\"500\" AND metric.label.response_code<\"600\" AND metric.type=\"appengine.googleapis.com/http/server/response_count\" AND resource.type=\"gae_app\"", + "aggregations": [ + { + "alignmentPeriod": "300s", + "perSeriesAligner": "ALIGN_DELTA", + "crossSeriesReducer": "REDUCE_SUM", + "groupByFields": [ + "project", + "resource.label.module_id", + "resource.label.version_id" + ] + } + ], + "denominatorFilter": "metric.type=\"appengine.googleapis.com/http/server/response_count\" AND resource.type=\"gae_app\"", + "denominatorAggregations": [ + { + "alignmentPeriod": "300s", + "perSeriesAligner": "ALIGN_DELTA", + "crossSeriesReducer": "REDUCE_SUM", + "groupByFields": [ + "project", + "resource.label.module_id", + "resource.label.version_id" + ] + } + ], + "comparison": "COMPARISON_GT", + "thresholdValue": 0.5, + "duration": "0s", + "trigger": { + "count": 1 + } + } + } + ], + "documentation": { + "content": "This sample is a synthesis of policy samples found at https://cloud.google.com/monitoring/alerts/policies-in-json. It is meant to give an idea of what is possible rather than be a completely realistic alerting policy in and of itself.\n\nCombiner OR\nOR combiner policies will trigger an incident when any of their conditions are met. They should be considered the default for most purposes.\n\nUptime-check conditions\nThe first three conditions in this policy involve an uptime check with the ID 'uptime-check-for-google-cloud-site'.\n\nThe first condition, \"Failure of uptime check_id uptime-check-for-google-cloud-site\", tests if the uptime check fails.\nThe second condition, \"SSL Certificate for google-cloud-site expiring soon\", tests if the SSL certificate on the Google Cloud site will expire in under 15 days.\n\nMetric-absence condition\nThe third condition in this policy, \"Uptime check running\" tests if the aforementioned uptime check is not written to for a period of approximately an hour.\nNote that unlike all the conditions so far, the condition used here is conditionAbsent, because the test is for the lack of a metric.\n\nMetric ratio\nThe fourth and last condition in this policy, \"Ratio of HTTP 500s error-response counts to all HTTP response counts\", tests that 5XX error codes do not make up more than half of all HTTP responses. It targets a different set of metrics through appengine.\n\nAll together, this policy would monitor for a situation where any of the above conditions threatened the health of the website." } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT526 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT526 index b925734..40e1532 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT526 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT526 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/sqluser/sql_v1beta1_sqluser.yaml" + "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_0.yaml" ], - "timestamp": 1628765151278, + "timestamp": 1642973304579, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/sqluser/sql_v1beta1_sqluser.yaml" + "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT526", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT526", "collection": "kcctemplate", "json": { - "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", - "kind": "SQLUser", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringNotificationChannel", "metadata": { - "name": "sqluser-sample" + "name": "monitoringalertpolicy-dep1-networkconnectivity" }, "spec": { - "instanceRef": { - "name": "sqluser-dep" + "labels": { + "number": "12025550196" }, - "host": "%", - "password": { - "valueFrom": { - "secretKeyRef": { - "name": "sqluser-dep", - "key": "password" - } - } - } + "type": "sms" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT527 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT527 index c03035b..7a30cbf 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT527 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT527 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagebucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_1.yaml" ], - "timestamp": 1628765151307, + "timestamp": 1642973304582, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,57 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagebucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringalertpolicy/network-connectivity-alert-policy/monitoring_v1beta1_monitoringnotificationchannel_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT527", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT527", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringNotificationChannel", "metadata": { - "annotations": { - "cnrm.cloud.google.com/force-destroy": "false" - }, - "labels": { - "label-one": "value-one" - }, - "name": "${PROJECT_ID?}-sample" + "name": "monitoringalertpolicy-dep2-networkconnectivity" }, "spec": { - "bucketPolicyOnly": true, - "lifecycleRule": [ - { - "action": { - "type": "Delete" - }, - "condition": { - "age": 7 - } - } - ], - "versioning": { - "enabled": true + "labels": { + "email_address": "dev@example.com" }, - "cors": [ - { - "origin": [ - "http://example.appspot.com" - ], - "responseHeader": [ - "Content-Type" - ], - "method": [ - "GET", - "HEAD", - "DELETE" - ], - "maxAgeSeconds": 3600 - } - ] + "type": "email" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT528 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT528 index 52286cb..7b99a3a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT528 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT528 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringdashboard/monitoring_v1beta1_monitoringdashboard.yaml" ], - "timestamp": 1628765151343, + "timestamp": 1642973304586, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,91 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringdashboard/monitoring_v1beta1_monitoringdashboard.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT528", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringdashboard" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT528", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringDashboard", "metadata": { - "name": "${PROJECT_ID?}-bucketaccesscontrol-dep" + "name": "monitoringdashboard-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "monitoringdashboard-sample", + "columnLayout": { + "columns": [ + { + "weight": 2, + "widgets": [ + { + "title": "Widget 1", + "xyChart": { + "dataSets": [ + { + "timeSeriesQuery": { + "timeSeriesFilter": { + "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"", + "aggregation": { + "perSeriesAligner": "ALIGN_RATE" + } + }, + "unitOverride": "1" + }, + "plotType": "LINE" + } + ], + "timeshiftDuration": "0s", + "yAxis": { + "label": "y1Axis", + "scale": "LINEAR" + } + } + }, + { + "text": { + "content": "Widget 2", + "format": "MARKDOWN" + } + }, + { + "title": "Widget 3", + "xyChart": { + "dataSets": [ + { + "timeSeriesQuery": { + "timeSeriesFilter": { + "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"", + "aggregation": { + "perSeriesAligner": "ALIGN_RATE" + } + }, + "unitOverride": "1" + }, + "plotType": "STACKED_BAR" + } + ], + "timeshiftDuration": "0s", + "yAxis": { + "label": "y1Axis", + "scale": "LINEAR" + } + } + } + ] + } + ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT529 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT529 index bdaf496..548ecce 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT529 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT529 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucketaccesscontrol.yaml" + "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_0.yaml" ], - "timestamp": 1628765151373, + "timestamp": 1642973304590, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucketaccesscontrol.yaml" + "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT529", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringgroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT529", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucketAccessControl", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringGroup", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "storagebucketaccesscontrol-sample" + "name": "monitoringgroup-sample" }, "spec": { - "bucketRef": { - "name": "${PROJECT_ID?}-bucketaccesscontrol-dep" - }, - "entity": "allAuthenticatedUsers", - "role": "READER" + "displayName": "MonitoringSubGroup", + "filter": "resource.metadata.name=has_substring(\"test\")", + "parentRef": { + "name": "monitoringgroup-dep" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT53 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT53 index eeca460..d0116fe 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT53 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT53 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], - "timestamp": 1628765139356, + "timestamp": 1642973301933, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,11 +15,14 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT53", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT53", "collection": "kcctemplate", @@ -27,36 +30,34 @@ "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", "kind": "BinaryAuthorizationPolicy", "metadata": { - "name": "binaryauthorizationpolicy-sample-namespace" + "name": "binaryauthorizationpolicy-sample-default" }, "spec": { + "projectRef": { + "name": "binauthpolicy-dep-default" + }, "admissionWhitelistPatterns": [ { - "namePattern": "gcr.io/*" + "namePattern": "gcr.io/google_containers/*" + }, + { + "namePattern": "gcr.io/google-containers/*" + }, + { + "namePattern": "k8s.gcr.io/*" + }, + { + "namePattern": "gke.gcr.io/*" + }, + { + "namePattern": "gcr.io/stackdriver-agents/*" } ], - "kubernetesNamespaceAdmissionRules": { - "test-namespace": { - "evaluationMode": "REQUIRE_ATTESTATION", - "requireAttestationsBy": [ - { - "name": "binaryauthorizationpolicy-dep-namespace" - } - ], - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" - } - }, "defaultAdmissionRule": { - "evaluationMode": "REQUIRE_ATTESTATION", - "requireAttestationsBy": [ - { - "name": "binaryauthorizationpolicy-dep-namespace" - } - ], - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG", + "evaluationMode": "ALWAYS_ALLOW" }, - "description": "A sample Binary Authorization policy", - "globalPolicyEvaluationMode": "DISABLE" + "globalPolicyEvaluationMode": "ENABLE" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT530 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT530 index 246a867..dc4f862 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT530 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT530 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_1.yaml" ], - "timestamp": 1628765151392, + "timestamp": 1642973304594, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringgroup/monitoring_v1beta1_monitoringgroup_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT530", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringgroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT530", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringGroup", "metadata": { - "name": "${PROJECT_ID?}-objectaccesscontrol-dep" + "name": "monitoringgroup-dep" + }, + "spec": { + "displayName": "MonitoringGroup", + "filter": "resource.metadata.region=europe-west2" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT531 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT531 index e3d0807..f3d4d2c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT531 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT531 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagedefaultobjectaccesscontrol.yaml" + "/samples/resources/monitoringmetricdescriptor/monitoring_v1beta1_monitoringmetricdescriptor.yaml" ], - "timestamp": 1628765151415, + "timestamp": 1642973304599, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,29 +15,50 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagedefaultobjectaccesscontrol.yaml" + "/samples/resources/monitoringmetricdescriptor/monitoring_v1beta1_monitoringmetricdescriptor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT531", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringmetricdescriptor" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT531", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageDefaultObjectAccessControl", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringMetricDescriptor", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "storagedefaultobjectaccesscontrol-sample" + "name": "monitoringmetricdescriptor-sample" }, "spec": { - "bucketRef": { - "name": "${PROJECT_ID?}-objectaccesscontrol-dep" + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "labels": [ + { + "key": "system_stable", + "valueType": "BOOL", + "description": "True if the estimation system is stable." + }, + { + "key": "condition_summary", + "valueType": "STRING", + "description": "A description of the condition the market system is in." + } + ], + "launchStage": "BETA", + "metadata": { + "ingestDelay": "1000s", + "samplePeriod": "100s" }, - "entity": "allAuthenticatedUsers", - "role": "READER" + "metricKind": "GAUGE", + "type": "custom.googleapis.com/market/measurements/volume", + "unit": "{USD}/h", + "valueType": "DISTRIBUTION", + "description": "Tracks a combination of estimates of trade volume for a given resource, in $USD per hour.", + "displayName": "Trading Volume Estimate" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT532 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT532 index 3b1490d..0115a4b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT532 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT532 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagenotification/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], - "timestamp": 1628765151434, + "timestamp": 1642973304602, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagenotification/iam_v1beta1_iampolicymember.yaml" + "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT532", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT532", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringNotificationChannel", "metadata": { - "name": "storagenotification-dep" + "labels": { + "response-priority": "all", + "target-user": "automation" + }, + "name": "monitoringnotificationchannel-sample-basicauth-webhook" }, "spec": { - "member": "serviceAccount:service-${PROJECT_NUMBER?}@gs-project-accounts.iam.gserviceaccount.com", - "role": "roles/pubsub.publisher", - "resourceRef": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", - "name": "storagenotification-dep" + "type": "webhook_basicauth", + "labels": { + "url": "http://hooks.example.com/notifications", + "username": "admin" + }, + "description": "Sends notifications to indicated webhook URL using HTTP-standard basic authentication. Should be used in conjunction with SSL/TLS to reduce the risk of attackers snooping the credentials.", + "sensitiveLabels": { + "password": { + "valueFrom": { + "secretKeyRef": { + "key": "password", + "name": "monitoringnotificationchannel-dep-basicauthwebhook" + } + } + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT533 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT533 index da256a0..183d595 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT533 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT533 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagenotification/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/secret.yaml" ], - "timestamp": 1628765151461, + "timestamp": 1642973304613, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagenotification/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/monitoringnotificationchannel/basicauth-webhook-monitoring-notification-channel/secret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT533", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT533", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "v1", + "kind": "Secret", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "storagenotification-dep" + "name": "monitoringnotificationchannel-dep-basicauthwebhook" + }, + "data": { + "password": "cGFzc3dvcmQK" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT534 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT534 index 42d15b0..c614da9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT534 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT534 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagenotification/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringnotificationchannel/disabled-email-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], - "timestamp": 1628765151472, + "timestamp": 1642973304617, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagenotification/storage_v1beta1_storagebucket.yaml" + "/samples/resources/monitoringnotificationchannel/disabled-email-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT534", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT534", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringNotificationChannel", "metadata": { - "name": "${PROJECT_ID?}-storagenotification-dep" + "labels": { + "response-priority": "longterm", + "target-user": "dev" + }, + "name": "monitoringnotificationchannel-sample-disabled-email" + }, + "spec": { + "type": "email", + "labels": { + "email_address": "dev@example.com" + }, + "description": "A disabled channel that would send notifications via email if enabled.", + "enabled": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT535 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT535 index 4ef444a..6fa7071 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT535 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT535 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagenotification/storage_v1beta1_storagenotification.yaml" + "/samples/resources/monitoringnotificationchannel/sms-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], - "timestamp": 1628765151493, + "timestamp": 1642973304621, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagenotification/storage_v1beta1_storagenotification.yaml" + "/samples/resources/monitoringnotificationchannel/sms-monitoring-notification-channel/monitoring_v1beta1_monitoringnotificationchannel.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT535", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringnotificationchannel" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT535", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageNotification", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringNotificationChannel", "metadata": { - "name": "storagenotification-sample" + "labels": { + "response-priority": "intervention", + "target-user": "on-call" + }, + "name": "monitoringnotificationchannel-sample-sms" }, "spec": { - "bucketRef": { - "name": "${PROJECT_ID?}-storagenotification-dep" - }, - "payloadFormat": "JSON_API_V1", - "topicRef": { - "name": "storagenotification-dep" + "type": "sms", + "labels": { + "number": "12025550196" }, - "eventTypes": [ - "OBJECT_ARCHIVE" - ] + "description": "A channel that sends notifications via Short Message Service (SMS).", + "enabled": true } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT536 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT536 index 1941e4d..37e1fc7 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT536 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT536 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_0.yaml" + "/samples/resources/monitoringservice/monitoring_v1beta1_monitoringservice.yaml" ], - "timestamp": 1628765151522, + "timestamp": 1642973304625, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_0.yaml" + "/samples/resources/monitoringservice/monitoring_v1beta1_monitoringservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT536", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT536", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", "metadata": { - "name": "storagetransferjob-dep1" + "name": "monitoringservice-sample", + "labels": { + "test1": "value1" + } }, "spec": { - "member": "serviceAccount:project-${PROJECT_NUMBER?}@storage-transfer-service.iam.gserviceaccount.com", - "resourceRef": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", - "name": "${PROJECT_ID?}-storagetransferjob-dep1" + "projectRef": { + "external": "projects/${PROJECT_ID?}" }, - "role": "roles/storage.admin" + "displayName": "A basic monitoring service.", + "telemetry": { + "resourceName": "//storage.googleapis.com/buckets/bucket-id1" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT537 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT537 index ffdb453..7e549b9 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT537 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT537 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_1.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-distribution-cut/monitoring_v1beta1_monitoringservice.yaml" ], - "timestamp": 1628765151542, + "timestamp": 1642973304630, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_1.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-distribution-cut/monitoring_v1beta1_monitoringservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT537", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT537", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMPolicyMember", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", "metadata": { - "name": "storagetransferjob-dep2" + "name": "monitoringservicelevelobjective-dep-requestbaseddistributioncut" }, "spec": { - "member": "serviceAccount:project-${PROJECT_NUMBER?}@storage-transfer-service.iam.gserviceaccount.com", - "resourceRef": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", - "name": "${PROJECT_ID?}-storagetransferjob-dep2" + "projectRef": { + "external": "projects/${PROJECT_ID?}" }, - "role": "roles/storage.admin" + "displayName": "A basic monitoring service." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT538 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT538 index 8e938e0..c8f3224 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT538 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT538 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagetransferjob/storagetransfer_v1beta1_storagetransferjob.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-distribution-cut/monitoring_v1beta1_monitoringservicelevelobjective.yaml" ], - "timestamp": 1628765151574, + "timestamp": 1642973304638, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,59 +15,45 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/storagetransfer_v1beta1_storagetransferjob.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-distribution-cut/monitoring_v1beta1_monitoringservicelevelobjective.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT538", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT538", "collection": "kcctemplate", "json": { - "apiVersion": "storagetransfer.cnrm.cloud.google.com/v1beta1", - "kind": "StorageTransferJob", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", "metadata": { - "name": "storagetransferjob-sample" + "name": "monitoringservicelevelobjective-sample-requestbaseddistributioncut", + "labels": { + "test1": "value1" + } }, "spec": { - "description": "Sample storage transfer job", - "schedule": { - "startTimeOfDay": { - "seconds": 0, - "hours": 0, - "minutes": 0, - "nanos": 0 - }, - "scheduleEndDate": { - "day": 31, - "month": 12, - "year": 9999 - }, - "scheduleStartDate": { - "day": 28, - "month": 1, - "year": 2020 - } + "projectRef": { + "external": "projects/${PROJECT_ID?}" }, - "status": "ENABLED", - "transferSpec": { - "gcsDataSink": { - "bucketRef": { - "name": "${PROJECT_ID?}-storagetransferjob-dep1" - } - }, - "gcsDataSource": { - "bucketRef": { - "name": "${PROJECT_ID?}-storagetransferjob-dep2" + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-requestbaseddistributioncut" + }, + "displayName": "A request based distribution cut filter", + "goal": 0.9, + "rollingPeriod": "86400s", + "serviceLevelIndicator": { + "requestBased": { + "distributionCut": { + "distributionFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_latencies\" \n resource.type=\"api\" ", + "range": { + "min": 50, + "max": 100 + } } - }, - "objectConditions": { - "maxTimeElapsedSinceLastModification": "5s", - "minTimeElapsedSinceLastModification": "2s" - }, - "transferOptions": { - "deleteObjectsUniqueInSink": false, - "overwriteObjectsAlreadyExistingInSink": true } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT539 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT539 index 2faa5cf..578f147 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT539 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT539 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_0.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-good-total-ratio/monitoring_v1beta1_monitoringservice.yaml" ], - "timestamp": 1628765151600, + "timestamp": 1642973304661, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_0.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-good-total-ratio/monitoring_v1beta1_monitoringservice.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT539", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT539", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", "metadata": { - "name": "${PROJECT_ID?}-storagetransferjob-dep1" + "name": "monitoringservicelevelobjective-dep-requestbasedgoodtotalratio" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A basic monitoring service." } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT54 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT54 index a120fe3..65a71d1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT54 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT54 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/namespace-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765139372, + "timestamp": 1642973301941, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/namespace-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT54", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT54", "collection": "kcctemplate", "json": { - "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerAnalysisNote", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "binaryauthorizationpolicy-dep-namespace" + "annotations": { + "cnrm.cloud.google.com/auto-create-network": "false" + }, + "name": "binauthpolicy-dep-default" }, "spec": { - "package": { - "name": "test-package" + "name": "Config Connector Sample", + "folderRef": { + "external": "${FOLDER_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT540 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT540 index 472c4bf..be94ff1 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT540 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT540 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_1.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-good-total-ratio/monitoring_v1beta1_monitoringservicelevelobjective.yaml" ], - "timestamp": 1628765151614, + "timestamp": 1642973304666, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,44 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_1.yaml" + "/samples/resources/monitoringservicelevelobjective/request-based-good-total-ratio/monitoring_v1beta1_monitoringservicelevelobjective.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT540", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT540", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", "metadata": { - "name": "${PROJECT_ID?}-storagetransferjob-dep2" + "name": "monitoringservicelevelobjective-sample-requestbasedgoodtotalratio", + "labels": { + "test1": "value1" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-requestbasedgoodtotalratio" + }, + "displayName": "A request based good total ratio filter", + "goal": 0.9, + "rollingPeriod": "86400s", + "serviceLevelIndicator": { + "requestBased": { + "goodTotalRatio": { + "goodServiceFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_count\" \n resource.type=\"api\" ", + "badServiceFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_count\" \n resource.type=\"api\" " + } + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT541 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT541 new file mode 100644 index 0000000..349045b --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT541 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/request-based-gtr-total-service-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "timestamp": 1642973304671, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/request-based-gtr-total-service-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT541", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT541", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", + "metadata": { + "name": "monitoringservicelevelobjective-dep-requestbasedgtrtotalservicefilter" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A basic monitoring service." + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT542 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT542 new file mode 100644 index 0000000..0920292 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT542 @@ -0,0 +1,58 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/request-based-gtr-total-service-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "timestamp": 1642973304675, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/request-based-gtr-total-service-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT542", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT542", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", + "metadata": { + "name": "monitoringservicelevelobjective-sample-requestbasedgtrtotalservicefilter", + "labels": { + "test1": "value1" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-requestbasedgtrtotalservicefilter" + }, + "displayName": "A request based good total ratio total service filter", + "goal": 0.9, + "rollingPeriod": "86400s", + "serviceLevelIndicator": { + "requestBased": { + "goodTotalRatio": { + "goodServiceFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_count\" \n resource.type=\"api\" ", + "totalServiceFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_count\" \n resource.type=\"api\" " + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT543 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT543 new file mode 100644 index 0000000..91261b8 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT543 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-good-bad-metric-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "timestamp": 1642973304680, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-good-bad-metric-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT543", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT543", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", + "metadata": { + "name": "monitoringservicelevelobjective-dep-windowgoodbadmetric" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A basic monitoring service." + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT544 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT544 new file mode 100644 index 0000000..7cebf35 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT544 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-good-bad-metric-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "timestamp": 1642973304693, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-good-bad-metric-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT544", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT544", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", + "metadata": { + "name": "monitoringservicelevelobjective-sample-windowgoodbadmetric", + "labels": { + "test1": "value1" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-windowgoodbadmetric" + }, + "displayName": "A window based good bad metric slo", + "goal": 0.9, + "calendarPeriod": "DAY", + "serviceLevelIndicator": { + "windowsBased": { + "windowPeriod": "60s", + "goodBadMetricFilter": "metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\" \n resource.type=\"uptime_url\"" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT545 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT545 new file mode 100644 index 0000000..91e17e0 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT545 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-distribution-cut/monitoring_v1beta1_monitoringservice.yaml" + ], + "timestamp": 1642973304697, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-distribution-cut/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT545", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT545", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", + "metadata": { + "name": "monitoringservicelevelobjective-dep-windowbasedgtrdistributioncut" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A basic monitoring service." + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT546 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT546 new file mode 100644 index 0000000..08fa556 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT546 @@ -0,0 +1,67 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-distribution-cut/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "timestamp": 1642973304702, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-distribution-cut/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT546", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT546", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", + "metadata": { + "name": "monitoringservicelevelobjective-sample-windowbasedgtrdistributioncut", + "labels": { + "test1": "value1" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-windowbasedgtrdistributioncut" + }, + "displayName": "A window based good total ratio distribution cut filter", + "goal": 0.9, + "calendarPeriod": "DAY", + "serviceLevelIndicator": { + "windowsBased": { + "windowPeriod": "60s", + "goodTotalRatioThreshold": { + "threshold": 0.9, + "performance": { + "distributionCut": { + "distributionFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_latencies\" resource.type=\"api\" ", + "range": { + "min": 50, + "max": 100 + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT547 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT547 new file mode 100644 index 0000000..b327f95 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT547 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr/monitoring_v1beta1_monitoringservice.yaml" + ], + "timestamp": 1642973304706, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT547", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT547", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", + "metadata": { + "name": "monitoringservicelevelobjective-dep-windowbasedgtrperformancegtr" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A basic monitoring service." + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT548 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT548 new file mode 100644 index 0000000..112b521 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT548 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "timestamp": 1642973304709, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT548", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT548", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", + "metadata": { + "name": "monitoringservicelevelobjective-sample-windowbasedgtrperformancegtr", + "labels": { + "test1": "value1" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-windowbasedgtrperformancegtr" + }, + "displayName": "A window based good total ratio performance filter", + "goal": 0.9, + "calendarPeriod": "DAY", + "serviceLevelIndicator": { + "windowsBased": { + "windowPeriod": "60s", + "goodTotalRatioThreshold": { + "threshold": 0.9, + "performance": { + "goodTotalRatio": { + "goodServiceFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_count\" \n resource.type=\"api\" ", + "badServiceFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_count\" \n resource.type=\"api\" " + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT549 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT549 new file mode 100644 index 0000000..be81211 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT549 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr-total-service-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "timestamp": 1642973304715, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr-total-service-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT549", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT549", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", + "metadata": { + "name": "monitoringservicelevelobjective-dep-windowbasedgtrperformancegtrtotalservicefilter" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A basic monitoring service." + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT55 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT55 index dc449a5..406e3fb 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT55 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT55 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/serviceusage_v1beta1_service.yaml" ], - "timestamp": 1628765139390, + "timestamp": 1642973301946, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,27 +15,28 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/binaryauthorizationpolicy/default-policy/serviceusage_v1beta1_service.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT55", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT55", "collection": "kcctemplate", "json": { - "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", - "kind": "BinaryAuthorizationAttestor", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "binaryauthorizationpolicy-dep-serviceaccount" + "annotations": { + "cnrm.cloud.google.com/project-id": "binauthpolicy-dep-default" + }, + "name": "binaryauthorizationpolicy-dep-default" }, "spec": { - "description": "A sample binary authorization attestor.", - "userOwnedDrydockNote": { - "noteRef": { - "name": "binaryauthorizationpolicy-dep-serviceaccount" - } - } + "resourceID": "binaryauthorization.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT550 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT550 new file mode 100644 index 0000000..0dad6b9 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT550 @@ -0,0 +1,64 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr-total-service-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "timestamp": 1642973304720, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-gtr-performance-gtr-total-service-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT550", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT550", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", + "metadata": { + "name": "monitoringservicelevelobjective-sample-windowbasedgtrperformancegtrtotalservicefilter", + "labels": { + "test1": "value1" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-windowbasedgtrperformancegtrtotalservicefilter" + }, + "displayName": "A window based good total ratio performance filter", + "goal": 0.9, + "calendarPeriod": "DAY", + "serviceLevelIndicator": { + "windowsBased": { + "windowPeriod": "60s", + "goodTotalRatioThreshold": { + "threshold": 0.9, + "performance": { + "goodTotalRatio": { + "goodServiceFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_count\" \n resource.type=\"api\" ", + "totalServiceFilter": "metric.type=\"serviceruntime.googleapis.com/api/request_count\" \n resource.type=\"api\" " + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT551 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT551 new file mode 100644 index 0000000..0a0eb17 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT551 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-mean-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "timestamp": 1642973304725, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-mean-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT551", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT551", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", + "metadata": { + "name": "monitoringservicelevelobjective-dep-windowbasedmetricmeanfilter" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A basic monitoring service." + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT552 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT552 new file mode 100644 index 0000000..9d38efe --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT552 @@ -0,0 +1,62 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-mean-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "timestamp": 1642973304729, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-mean-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT552", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT552", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", + "metadata": { + "name": "monitoringservicelevelobjective-sample-windowbasedmetricmeanfilter", + "labels": { + "test1": "value1" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-windowbasedmetricmeanfilter" + }, + "displayName": "A window based metric mean filter", + "goal": 0.9, + "rollingPeriod": "86400s", + "serviceLevelIndicator": { + "windowsBased": { + "windowPeriod": "60s", + "metricMeanInRange": { + "timeSeries": "resource.type=\"gce_instance\" \nmetric.type=\"compute.googleapis.com/instance/cpu/usage_time\"", + "range": { + "min": 50, + "max": 100 + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT553 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT553 new file mode 100644 index 0000000..44ef8e3 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT553 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-sum-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "timestamp": 1642973304734, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-sum-filter/monitoring_v1beta1_monitoringservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT553", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT553", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringService", + "metadata": { + "name": "monitoringservicelevelobjective-dep-windowbasedmetricsum" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A basic monitoring service." + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT554 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT554 new file mode 100644 index 0000000..d5b2e75 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT554 @@ -0,0 +1,62 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-sum-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "timestamp": 1642973304739, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringservicelevelobjective/window-based-metric-sum-filter/monitoring_v1beta1_monitoringservicelevelobjective.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT554", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringservicelevelobjective" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT554", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringServiceLevelObjective", + "metadata": { + "name": "monitoringservicelevelobjective-sample-windowbasedmetricsum", + "labels": { + "test1": "value1" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "serviceRef": { + "external": "monitoringservicelevelobjective-dep-windowbasedmetricsum" + }, + "displayName": "A window based metric sum filter", + "goal": 0.9, + "rollingPeriod": "86400s", + "serviceLevelIndicator": { + "windowsBased": { + "windowPeriod": "60s", + "metricSumInRange": { + "timeSeries": "resource.type=\"gce_instance\" \nmetric.type=\"compute.googleapis.com/instance/cpu/usage_time\"", + "range": { + "min": 50, + "max": 100 + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT555 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT555 new file mode 100644 index 0000000..900112b --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT555 @@ -0,0 +1,84 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/http-uptime-check-config/monitoring_v1beta1_monitoringuptimecheckconfig.yaml" + ], + "timestamp": 1642973304744, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/http-uptime-check-config/monitoring_v1beta1_monitoringuptimecheckconfig.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT555", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringuptimecheckconfig" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT555", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringUptimeCheckConfig", + "metadata": { + "name": "monitoringuptimecheckconfig-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A sample http uptime check config", + "period": "60s", + "timeout": "30s", + "contentMatchers": [ + { + "content": ".*", + "matcher": "MATCHES_REGEX" + } + ], + "selectedRegions": [ + "USA" + ], + "monitoredResource": { + "type": "uptime_url", + "filterLabels": { + "host": "192.168.1.1", + "project_id": "${PROJECT_ID?}" + } + }, + "httpCheck": { + "requestMethod": "POST", + "useSsl": true, + "path": "/main", + "port": 80, + "authInfo": { + "username": "test", + "password": { + "valueFrom": { + "secretKeyRef": { + "name": "monitoringuptimecheckconfig-dep", + "key": "password" + } + } + } + }, + "maskHeaders": true, + "headers": { + "header-one": "value-one" + }, + "contentType": "URL_ENCODED", + "validateSsl": false, + "body": "c3RyaW5nCg==" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT556 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT556 new file mode 100644 index 0000000..943210e --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT556 @@ -0,0 +1,39 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/http-uptime-check-config/secret.yaml" + ], + "timestamp": 1642973304767, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/http-uptime-check-config/secret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT556", + "status": "active", + "validate": true, + "resourceTypes": [ + "secret" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT556", + "collection": "kcctemplate", + "json": { + "apiVersion": "v1", + "kind": "Secret", + "metadata": { + "name": "monitoringuptimecheckconfig-dep" + }, + "data": { + "password": "cGFzc3dvcmQ=" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT557 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT557 new file mode 100644 index 0000000..009222a --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT557 @@ -0,0 +1,43 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/tcp-uptime-check-config/monitoring_v1beta1_monitoringgroup.yaml" + ], + "timestamp": 1642973304773, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/tcp-uptime-check-config/monitoring_v1beta1_monitoringgroup.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT557", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringgroup" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT557", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringGroup", + "metadata": { + "name": "monitoringuptimecheckconfig-dep" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "filter": "resource.metadata.region=europe-west2", + "displayName": "A sample monitoring group" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT558 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT558 new file mode 100644 index 0000000..fc34056 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT558 @@ -0,0 +1,52 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/tcp-uptime-check-config/monitoring_v1beta1_monitoringuptimecheckconfig.yaml" + ], + "timestamp": 1642973304779, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/monitoringuptimecheckconfig/tcp-uptime-check-config/monitoring_v1beta1_monitoringuptimecheckconfig.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT558", + "status": "active", + "validate": true, + "resourceTypes": [ + "monitoringuptimecheckconfig" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT558", + "collection": "kcctemplate", + "json": { + "apiVersion": "monitoring.cnrm.cloud.google.com/v1beta1", + "kind": "MonitoringUptimeCheckConfig", + "metadata": { + "name": "monitoringuptimecheckconfig-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "A sample TCP uptime check config", + "timeout": "30s", + "resourceGroup": { + "groupRef": { + "name": "monitoringuptimecheckconfig-dep" + }, + "resourceType": "INSTANCE" + }, + "tcpCheck": { + "port": 80 + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT559 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT559 new file mode 100644 index 0000000..ff0dd68 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT559 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkconnectivityhub/networkconnectivity_v1beta1_networkconnectivityhub.yaml" + ], + "timestamp": 1642973304785, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityhub/networkconnectivity_v1beta1_networkconnectivityhub.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT559", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkconnectivityhub" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT559", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkconnectivity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkConnectivityHub", + "metadata": { + "name": "networkconnectivityhub-sample", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "description": "A sample hub" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT56 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT56 index 4d0ac94..a2eb36b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT56 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT56 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], - "timestamp": 1628765139413, + "timestamp": 1642973301958, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,48 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT56", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT56", "collection": "kcctemplate", "json": { "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", - "kind": "BinaryAuthorizationPolicy", + "kind": "BinaryAuthorizationAttestor", "metadata": { - "name": "binaryauthorizationpolicy-sample-serviceaccount" + "name": "binaryauthorizationpolicy-dep-namespace" }, "spec": { - "admissionWhitelistPatterns": [ - { - "namePattern": "gcr.io/*" - } - ], - "kubernetesServiceAccountAdmissionRules": { - "test-namespace:default": { - "evaluationMode": "REQUIRE_ATTESTATION", - "requireAttestationsBy": [ - { - "name": "binaryauthorizationpolicy-dep-serviceaccount" - } - ], - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" - } + "projectRef": { + "name": "binauthzpolicy-dep-namespace" }, - "defaultAdmissionRule": { - "evaluationMode": "REQUIRE_ATTESTATION", - "requireAttestationsBy": [ - { - "name": "binaryauthorizationpolicy-dep-serviceaccount" - } - ], - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" - }, - "description": "A sample Binary Authorization policy", - "globalPolicyEvaluationMode": "DISABLE" + "description": "A sample binary authorization attestor.", + "userOwnedDrydockNote": { + "noteRef": { + "name": "binaryauthorizationpolicy-dep-namespace" + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT560 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT560 new file mode 100644 index 0000000..bb9fb51 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT560 @@ -0,0 +1,68 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computeinstance.yaml" + ], + "timestamp": 1642973304791, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computeinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT560", + "status": "active", + "validate": true, + "resourceTypes": [ + "computeinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT560", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeInstance", + "metadata": { + "annotations": { + "cnrm.cloud.google.com/allow-stopping-for-update": "true" + }, + "name": "networkconnectivityspoke-dep", + "labels": { + "created-from": "image", + "network-type": "subnetwork" + } + }, + "spec": { + "machineType": "n1-standard-1", + "zone": "us-central1-a", + "bootDisk": { + "initializeParams": { + "sourceImageRef": { + "external": "debian-cloud/debian-9" + } + } + }, + "networkInterface": [ + { + "subnetworkRef": { + "name": "networkconnectivityspoke-dep" + }, + "networkIp": "10.0.0.2", + "accessConfigs": [ + { + "networkTier": "PREMIUM" + } + ] + } + ], + "canIpForward": true + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT561 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT561 new file mode 100644 index 0000000..c51d95c --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT561 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computenetwork.yaml" + ], + "timestamp": 1642973304796, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT561", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT561", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "networkconnectivityspoke-dep" + }, + "spec": { + "autoCreateSubnetworks": false + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT562 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT562 new file mode 100644 index 0000000..6c30697 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT562 @@ -0,0 +1,46 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computesubnetwork.yaml" + ], + "timestamp": 1642973304802, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/compute_v1beta1_computesubnetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT562", + "status": "active", + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT562", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeSubnetwork", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "networkconnectivityspoke-dep" + }, + "spec": { + "ipCidrRange": "10.0.0.0/28", + "region": "us-central1", + "networkRef": { + "name": "networkconnectivityspoke-dep" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT563 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT563 new file mode 100644 index 0000000..7f13fb8 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT563 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkconnectivityspoke/networkconnectivity_v1beta1_networkconnectivityhub.yaml" + ], + "timestamp": 1642973304807, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/networkconnectivity_v1beta1_networkconnectivityhub.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT563", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkconnectivityhub" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT563", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkconnectivity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkConnectivityHub", + "metadata": { + "name": "networkconnectivityspoke-dep", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "description": "A sample hub" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT564 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT564 new file mode 100644 index 0000000..b2a5bb3 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT564 @@ -0,0 +1,57 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkconnectivityspoke/networkconnectivity_v1beta1_networkconnectivityspoke.yaml" + ], + "timestamp": 1642973304811, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkconnectivityspoke/networkconnectivity_v1beta1_networkconnectivityspoke.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT564", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkconnectivityspoke" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT564", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkconnectivity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkConnectivitySpoke", + "metadata": { + "name": "networkconnectivityspoke-sample", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "location": "us-central1", + "description": "A sample spoke with a linked router appliance instance", + "hubRef": { + "name": "networkconnectivityspoke-dep" + }, + "linkedRouterApplianceInstances": { + "instances": [ + { + "virtualMachineRef": { + "name": "networkconnectivityspoke-dep" + }, + "ipAddress": "10.0.0.2" + } + ], + "siteToSiteDataTransfer": true + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT565 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT565 new file mode 100644 index 0000000..1f1e31e --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT565 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networksecurityauthorizationpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + ], + "timestamp": 1642973304816, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networksecurityauthorizationpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT565", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityauthorizationpolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT565", + "collection": "kcctemplate", + "json": { + "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkSecurityAuthorizationPolicy", + "metadata": { + "labels": { + "key-one": "value-one" + }, + "name": "networksecurityauthorizationpolicy-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "action": "ALLOW", + "description": "Test Authorization Policy", + "rules": [ + { + "sources": [ + { + "ipBlocks": [ + "1.2.3.4" + ], + "principals": [ + "*" + ] + } + ], + "destinations": [ + { + "hosts": [ + "demo-service" + ], + "ports": [ + 8080 + ], + "methods": [ + "POST" + ] + } + ] + }, + { + "sources": [ + { + "ipBlocks": [ + "1.2.3.5" + ], + "principals": [ + "*" + ] + } + ], + "destinations": [ + { + "hosts": [ + "test-service" + ], + "ports": [ + 8081 + ], + "methods": [ + "GET" + ] + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT566 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT566 new file mode 100644 index 0000000..ae535b2 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT566 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networksecurityclienttlspolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + ], + "timestamp": 1642973304822, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networksecurityclienttlspolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT566", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityclienttlspolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT566", + "collection": "kcctemplate", + "json": { + "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkSecurityClientTLSPolicy", + "metadata": { + "name": "networksecurityclienttlspolicy-sample", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "description": "Sample global client TLS policy", + "location": "global", + "sni": "example.com", + "clientCertificate": { + "certificateProviderInstance": { + "pluginInstance": "google_cloud_private_spiffe" + } + }, + "serverValidationCa": [ + { + "certificateProviderInstance": { + "pluginInstance": "google_cloud_private_spiffe" + } + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT567 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT567 new file mode 100644 index 0000000..669214e --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT567 @@ -0,0 +1,58 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networksecurityservertlspolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + ], + "timestamp": 1642973304827, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networksecurityservertlspolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT567", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityservertlspolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT567", + "collection": "kcctemplate", + "json": { + "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkSecurityServerTLSPolicy", + "metadata": { + "name": "networksecurityservertlspolicy-sample", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "description": "Sample global server TLS policy", + "location": "global", + "allowOpen": true, + "serverCertificate": { + "certificateProviderInstance": { + "pluginInstance": "google_cloud_private_spiffe" + } + }, + "mtlsPolicy": { + "clientValidationCa": [ + { + "certificateProviderInstance": { + "pluginInstance": "google_cloud_private_spiffe" + } + } + ] + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT568 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT568 new file mode 100644 index 0000000..57bf75f --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT568 @@ -0,0 +1,99 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + ], + "timestamp": 1642973304832, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityauthorizationpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT568", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityauthorizationpolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT568", + "collection": "kcctemplate", + "json": { + "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkSecurityAuthorizationPolicy", + "metadata": { + "labels": { + "key-one": "value-one" + }, + "name": "networksecurityauthorizationpolicy-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "action": "ALLOW", + "description": "Test Authorization Policy", + "rules": [ + { + "sources": [ + { + "ipBlocks": [ + "1.2.3.4" + ], + "principals": [ + "*" + ] + } + ], + "destinations": [ + { + "hosts": [ + "demo-service" + ], + "ports": [ + 8080 + ], + "methods": [ + "POST" + ] + } + ] + }, + { + "sources": [ + { + "ipBlocks": [ + "1.2.3.5" + ], + "principals": [ + "*" + ] + } + ], + "destinations": [ + { + "hosts": [ + "test-service" + ], + "ports": [ + 8081 + ], + "methods": [ + "GET" + ] + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT569 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT569 new file mode 100644 index 0000000..b3e1a4a --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT569 @@ -0,0 +1,56 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + ], + "timestamp": 1642973304836, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityclienttlspolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT569", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityclienttlspolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT569", + "collection": "kcctemplate", + "json": { + "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkSecurityClientTLSPolicy", + "metadata": { + "name": "networksecurityclienttlspolicy-sample", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "description": "Sample global client TLS policy", + "location": "global", + "sni": "example.com", + "clientCertificate": { + "certificateProviderInstance": { + "pluginInstance": "google_cloud_private_spiffe" + } + }, + "serverValidationCa": [ + { + "certificateProviderInstance": { + "pluginInstance": "google_cloud_private_spiffe" + } + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT57 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT57 index 118c128..8d37474 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT57 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT57 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], - "timestamp": 1628765139426, + "timestamp": 1642973301963, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,54 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-account-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT57", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT57", "collection": "kcctemplate", "json": { - "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerAnalysisNote", + "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", + "kind": "BinaryAuthorizationPolicy", "metadata": { - "name": "binaryauthorizationpolicy-dep-serviceaccount" + "name": "binaryauthorizationpolicy-sample-namespace" }, "spec": { - "package": { - "name": "test-package" - } + "projectRef": { + "name": "binauthzpolicy-dep-namespace" + }, + "admissionWhitelistPatterns": [ + { + "namePattern": "gcr.io/*" + } + ], + "kubernetesNamespaceAdmissionRules": { + "test-namespace": { + "evaluationMode": "REQUIRE_ATTESTATION", + "requireAttestationsBy": [ + { + "name": "binaryauthorizationpolicy-dep-namespace" + } + ], + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + } + }, + "defaultAdmissionRule": { + "evaluationMode": "REQUIRE_ATTESTATION", + "requireAttestationsBy": [ + { + "name": "binaryauthorizationpolicy-dep-namespace" + } + ], + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + }, + "description": "A sample Binary Authorization policy", + "globalPolicyEvaluationMode": "DISABLE" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT570 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT570 new file mode 100644 index 0000000..8bfcffd --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT570 @@ -0,0 +1,58 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + ], + "timestamp": 1642973304841, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networksecurity_v1beta1_networksecurityservertlspolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT570", + "status": "active", + "validate": true, + "resourceTypes": [ + "networksecurityservertlspolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT570", + "collection": "kcctemplate", + "json": { + "apiVersion": "networksecurity.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkSecurityServerTLSPolicy", + "metadata": { + "name": "networksecurityservertlspolicy-sample", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "description": "Sample global server TLS policy", + "location": "global", + "allowOpen": true, + "serverCertificate": { + "certificateProviderInstance": { + "pluginInstance": "google_cloud_private_spiffe" + } + }, + "mtlsPolicy": { + "clientValidationCa": [ + { + "certificateProviderInstance": { + "pluginInstance": "google_cloud_private_spiffe" + } + } + ] + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT571 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT571 new file mode 100644 index 0000000..f6cd3b0 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT571 @@ -0,0 +1,72 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networkservices-v1beta1-networkservicesendpointpolicy.yaml" + ], + "timestamp": 1642973304852, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesendpointpolicy/networkservices-v1beta1-networkservicesendpointpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT571", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicesendpointpolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT571", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkservices.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkServicesEndpointPolicy", + "metadata": { + "labels": { + "key-one": "value-one" + }, + "name": "networkservicesendpointpolicy-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "type": "SIDECAR_PROXY", + "authorizationPolicyRef": { + "name": "networksecurityauthorizationpolicy-sample" + }, + "endpointMatcher": { + "metadataLabelMatcher": { + "metadataLabelMatchCriteria": "MATCH_ANY", + "metadataLabels": [ + { + "labelName": "filter-test", + "labelValue": "true" + } + ] + } + }, + "trafficPortSelector": { + "ports": [ + "6767" + ] + }, + "description": "A sample endpoint policy", + "serverTlsPolicyRef": { + "name": "networksecurityservertlspolicy-sample" + }, + "clientTlsPolicyRef": { + "name": "networksecurityclienttlspolicy-sample" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT572 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT572 new file mode 100644 index 0000000..e4e6ac4 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT572 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicesgateway/networkservices_v1beta1_networkservicesgateway.yaml" + ], + "timestamp": 1642973304856, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesgateway/networkservices_v1beta1_networkservicesgateway.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT572", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicesgateway" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT572", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkservices.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkServicesGateway", + "metadata": { + "labels": { + "key-one": "value-one" + }, + "name": "networkservicesgateway-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "type": "OPEN_MESH", + "ports": [ + 80, + 443 + ], + "location": "global", + "scope": "foo-scope" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT573 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT573 new file mode 100644 index 0000000..93a0399 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT573 @@ -0,0 +1,41 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicesgrpcroute/compute_v1beta1_computebackendservice.yaml" + ], + "timestamp": 1642973304861, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesgrpcroute/compute_v1beta1_computebackendservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT573", + "status": "active", + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT573", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", + "metadata": { + "name": "networkservicesgrpcroute-dep" + }, + "spec": { + "loadBalancingScheme": "INTERNAL_SELF_MANAGED", + "location": "global", + "protocol": "GRPC" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT574 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT574 new file mode 100644 index 0000000..d07a241 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT574 @@ -0,0 +1,141 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicesgrpcroute/networkservices_v1beta1_networkservicesgrpcroute.yaml" + ], + "timestamp": 1642973304866, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesgrpcroute/networkservices_v1beta1_networkservicesgrpcroute.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT574", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicesgrpcroute" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT574", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkservices.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkServicesGRPCRoute", + "metadata": { + "labels": { + "key-one": "value-one" + }, + "name": "networkservicesgrpcroute-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "hostnames": [ + "baz.bar" + ], + "meshes": [], + "rules": [ + { + "matches": [ + { + "method": { + "grpcService": "helloworld.Greeter", + "grpcMethod": "SayHello" + } + } + ], + "headers": [ + { + "key": "foo", + "value": "bar" + } + ], + "action": { + "destinations": [ + { + "serviceRef": { + "name": "networkservicesgrpcroute-dep" + } + } + ], + "faultInjectionPolicy": { + "abort": { + "httpStatus": 501, + "percentage": 1 + }, + "delay": { + "fixedDelay": "10s", + "percentage": 2 + } + }, + "requestHeaderModifier": { + "add": { + "foo1": "bar1", + "baz1": "qux1" + }, + "set": { + "foo2": "bar2", + "baz2": "qux2" + }, + "remove": [ + "foo3", + "bar3" + ] + }, + "requestMirrorPolicy": { + "destination": { + "serviceRef": { + "name": "networkservicesgrpcroute-dep" + } + } + }, + "responseHeaderModifier": { + "add": { + "foo1": "bar1", + "baz1": "qux1" + }, + "set": { + "foo2": "bar2", + "baz2": "qux2" + }, + "remove": [ + "foo3", + "bar3" + ] + }, + "retryPolicy": { + "numRetries": 3, + "perTryTimeout": "5s", + "retryConditions": [ + "refused-stream", + "cancelled" + ] + }, + "timeout": "30s" + } + }, + { + "action": { + "destinations": [ + { + "serviceRef": { + "name": "networkservicesgrpcroute-dep" + } + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT575 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT575 new file mode 100644 index 0000000..172dc81 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT575 @@ -0,0 +1,40 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkserviceshttproute/compute_v1beta1_computebackendservice.yaml" + ], + "timestamp": 1642973304870, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkserviceshttproute/compute_v1beta1_computebackendservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT575", + "status": "active", + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT575", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", + "metadata": { + "name": "networkserviceshttproute-dep" + }, + "spec": { + "loadBalancingScheme": "INTERNAL_SELF_MANAGED", + "location": "global" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT576 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT576 new file mode 100644 index 0000000..9ae358f --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT576 @@ -0,0 +1,138 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkserviceshttproute/networkservices_v1beta1_networkserviceshttproute.yaml" + ], + "timestamp": 1642973304875, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkserviceshttproute/networkservices_v1beta1_networkserviceshttproute.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT576", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkserviceshttproute" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT576", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkservices.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkServicesHTTPRoute", + "metadata": { + "labels": { + "key-one": "value-one" + }, + "name": "networkserviceshttproute-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "hostnames": [ + "foo.bar" + ], + "meshes": [], + "rules": [ + { + "matches": [ + { + "fullPathMatch": "/foo/bar", + "headers": [ + { + "header": "foo-header", + "prefixMatch": "bar-value" + } + ] + } + ], + "action": { + "destinations": [ + { + "serviceRef": { + "name": "networkserviceshttproute-dep" + } + } + ], + "faultInjectionPolicy": { + "abort": { + "httpStatus": 501, + "percentage": 1 + }, + "delay": { + "fixedDelay": "10s", + "percentage": 2 + } + }, + "requestHeaderModifier": { + "add": { + "foo1": "bar1", + "baz1": "qux1" + }, + "set": { + "foo2": "bar2", + "baz2": "qux2" + }, + "remove": [ + "foo3", + "bar3" + ] + }, + "requestMirrorPolicy": { + "destination": { + "serviceRef": { + "name": "networkserviceshttproute-dep" + } + } + }, + "responseHeaderModifier": { + "add": { + "foo1": "bar1", + "baz1": "qux1" + }, + "set": { + "foo2": "bar2", + "baz2": "qux2" + }, + "remove": [ + "foo3", + "bar3" + ] + }, + "retryPolicy": { + "numRetries": 3, + "perTryTimeout": "5s", + "retryConditions": [ + "refused-stream", + "cancelled" + ] + }, + "timeout": "30s" + } + }, + { + "action": { + "destinations": [ + { + "serviceRef": { + "name": "networkserviceshttproute-dep" + } + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT577 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT577 new file mode 100644 index 0000000..dd7b13a --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT577 @@ -0,0 +1,47 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicesmesh/networkservices_v1beta1_networkservicesmesh.yaml" + ], + "timestamp": 1642973304880, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicesmesh/networkservices_v1beta1_networkservicesmesh.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT577", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicesmesh" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT577", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkservices.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkServicesMesh", + "metadata": { + "labels": { + "key-one": "value-one" + }, + "name": "networkservicesmesh-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "type": "PROXYLESS_GRPC", + "scope": "foo-scope", + "location": "global" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT578 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT578 new file mode 100644 index 0000000..6ecdc04 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT578 @@ -0,0 +1,41 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicestcproute/compute_v1beta1_computebackendservice.yaml" + ], + "timestamp": 1642973304884, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicestcproute/compute_v1beta1_computebackendservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT578", + "status": "active", + "validate": true, + "resourceTypes": [ + "computebackendservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT578", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeBackendService", + "metadata": { + "name": "networkservicestcproute-dep" + }, + "spec": { + "loadBalancingScheme": "INTERNAL_SELF_MANAGED", + "location": "global", + "protocol": "TCP" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT579 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT579 new file mode 100644 index 0000000..c845d4f --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT579 @@ -0,0 +1,76 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/networkservicestcproute/networkservices_v1beta1_networkservicestcproute.yaml" + ], + "timestamp": 1642973304896, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/networkservicestcproute/networkservices_v1beta1_networkservicestcproute.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT579", + "status": "active", + "validate": true, + "resourceTypes": [ + "networkservicestcproute" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT579", + "collection": "kcctemplate", + "json": { + "apiVersion": "networkservices.cnrm.cloud.google.com/v1beta1", + "kind": "NetworkServicesTCPRoute", + "metadata": { + "labels": { + "key-one": "value-one" + }, + "name": "networkservicestcproute-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "global", + "meshes": [], + "rules": [ + { + "matches": [ + { + "address": "10.0.0.1/32", + "port": "7777" + } + ], + "action": { + "destinations": [ + { + "serviceRef": { + "name": "networkservicestcproute-dep" + } + } + ] + } + }, + { + "action": { + "destinations": [ + { + "serviceRef": { + "name": "networkservicestcproute-dep" + } + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT58 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT58 index 6d2a6ef..6e98120 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT58 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT58 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], - "timestamp": 1628765139439, + "timestamp": 1642973301968, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,26 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT58", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT58", "collection": "kcctemplate", "json": { - "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", - "kind": "BinaryAuthorizationAttestor", + "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerAnalysisNote", "metadata": { - "name": "binaryauthorizationpolicy-dep-serviceidentity" + "name": "binaryauthorizationpolicy-dep-namespace" }, "spec": { - "description": "A sample binary authorization attestor.", - "userOwnedDrydockNote": { - "noteRef": { - "name": "binaryauthorizationpolicy-dep-serviceidentity" - } + "projectRef": { + "name": "binauthzpolicy-dep-namespace" + }, + "package": { + "name": "test-package" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT580 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT580 new file mode 100644 index 0000000..ed70399 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT580 @@ -0,0 +1,205 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/osconfigguestpolicy/osconfig_v1beta1_osconfigguestpolicy.yaml" + ], + "timestamp": 1642973304901, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/osconfigguestpolicy/osconfig_v1beta1_osconfigguestpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT580", + "status": "active", + "validate": true, + "resourceTypes": [ + "osconfigguestpolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT580", + "collection": "kcctemplate", + "json": { + "apiVersion": "osconfig.cnrm.cloud.google.com/v1beta1", + "kind": "OSConfigGuestPolicy", + "metadata": { + "name": "osconfigguestpolicy-sample" + }, + "spec": { + "description": "An example OSConfigGuestPolicy for installing a web application on assigned instances.", + "assignment": { + "groupLabels": [ + { + "labels": { + "env": "prod", + "app": "web" + } + }, + { + "labels": { + "env": "staging", + "app": "web" + } + } + ], + "instanceNamePrefixes": [ + "webappprod-", + "webappstaging-" + ], + "osTypes": [ + { + "osArchitecture": "x86_64", + "osShortName": "debian", + "osVersion": "10" + }, + { + "osArchitecture": "x86_64", + "osShortName": "windows", + "osVersion": "10.0.14393" + } + ] + }, + "packageRepositories": [ + { + "apt": { + "archiveType": "DEB", + "distribution": "aiy-debian-buster", + "components": [ + "main" + ], + "uri": "https://packages.cloud.google.com/apt", + "gpgKey": "https://packages.cloud.google.com/apt/dists/aiy-debian-buster/Release.gpg" + } + }, + { + "yum": { + "id": "liamtest", + "displayName": "Liam Test", + "baseUrl": "https://packages.cloud.google.com/yum/repos/liamtest", + "gpgKeys": [ + "https://packages.cloud.google.com/yum/doc/yum-key.gpg", + "https://packages.cloud.google.com/yum/doc/rpm-pkg-key.gpg" + ] + } + } + ], + "packages": [ + { + "desiredState": "INSTALLED", + "manager": "APT", + "name": "add-apt-key" + }, + { + "desiredState": "REMOVED", + "manager": "YUM", + "name": "ssl" + }, + { + "desiredState": "UPDATED", + "manager": "ANY", + "name": "ansible-doc" + } + ], + "recipes": [ + { + "name": "latest-ansible", + "version": "1.0.0.1", + "artifacts": [ + { + "id": "ansible", + "remote": { + "uri": "https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz" + }, + "allowInsecure": true + } + ], + "desiredState": "INSTALLED", + "installSteps": [ + { + "fileCopy": { + "artifactId": "ansible", + "destination": "/installbackups/ansible", + "overwrite": true, + "permissions": "555" + } + }, + { + "archiveExtraction": { + "destination": "/var/ansible/", + "type": "TAR_GZIP", + "artifactId": "ansible" + } + } + ] + }, + { + "name": "prod-web-app", + "version": "2.5.27", + "artifacts": [ + { + "id": "web-app", + "allowInsecure": false, + "gcs": { + "generation": 1829485032948520, + "object": "latest/prod", + "bucketRef": { + "external": "https://storage.googleapis.com/storage/v1/b/webapp" + } + } + } + ], + "desiredState": "UPDATED", + "installSteps": [ + { + "fileCopy": { + "overwrite": false, + "permissions": "777", + "artifactId": "web-app", + "destination": "/installbackups/prod" + } + }, + { + "fileExec": { + "localPath": "/installbackups/prod", + "allowedExitCodes": [ + 0 + ], + "args": [ + "prodcompile" + ] + } + } + ], + "updateSteps": [ + { + "fileCopy": { + "permissions": "755", + "artifactId": "web-app", + "destination": "/installbackups/prod" + } + }, + { + "fileExec": { + "localPath": "/installbackups/prod", + "allowedExitCodes": [ + 0, + 4 + ], + "args": [ + "updatecompile" + ] + } + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT581 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT581 new file mode 100644 index 0000000..0d58ea0 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT581 @@ -0,0 +1,282 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/osconfigospolicyassignment/fixed-os-policy-assignment/osconfig_v1beta1_osconfigospolicyassignment.yaml" + ], + "timestamp": 1642973304908, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/osconfigospolicyassignment/fixed-os-policy-assignment/osconfig_v1beta1_osconfigospolicyassignment.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT581", + "status": "active", + "validate": true, + "resourceTypes": [ + "osconfigospolicyassignment" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT581", + "collection": "kcctemplate", + "json": { + "apiVersion": "osconfig.cnrm.cloud.google.com/v1beta1", + "kind": "OSConfigOSPolicyAssignment", + "metadata": { + "name": "osconfigospolicyassignment-sample-fixedospolicyassignment" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "us-west2-a", + "description": "A test os policy assignment", + "osPolicies": [ + { + "id": "policy", + "description": "A test os policy", + "mode": "VALIDATION", + "resourceGroups": [ + { + "inventoryFilters": [ + { + "osShortName": "centos", + "osVersion": "8.*" + } + ], + "resources": [ + { + "id": "apt", + "pkg": { + "desiredState": "INSTALLED", + "apt": { + "name": "bazel" + } + } + }, + { + "id": "deb1", + "pkg": { + "desiredState": "INSTALLED", + "deb": { + "source": { + "localPath": "$HOME/package.deb" + } + } + } + }, + { + "id": "deb2", + "pkg": { + "desiredState": "INSTALLED", + "deb": { + "pullDeps": true, + "source": { + "allowInsecure": true, + "remote": { + "uri": "ftp.us.debian.org/debian/package.deb", + "sha256Checksum": "3bbfd1043cd7afdb78cf9afec36c0c5370d2fea98166537b4e67f3816f256025" + } + } + } + } + }, + { + "id": "deb3", + "pkg": { + "desiredState": "INSTALLED", + "deb": { + "pullDeps": true, + "source": { + "gcs": { + "bucket": "test-bucket", + "object": "test-object", + "generation": 1 + } + } + } + } + }, + { + "id": "yum", + "pkg": { + "desiredState": "INSTALLED", + "yum": { + "name": "gstreamer-plugins-base-devel.x86_64" + } + } + }, + { + "id": "zypper", + "pkg": { + "desiredState": "INSTALLED", + "zypper": { + "name": "gcc" + } + } + }, + { + "id": "rpm1", + "pkg": { + "desiredState": "INSTALLED", + "rpm": { + "pullDeps": true, + "source": { + "localPath": "$HOME/package.rpm" + } + } + } + }, + { + "id": "rpm2", + "pkg": { + "desiredState": "INSTALLED", + "rpm": { + "source": { + "allowInsecure": true, + "remote": { + "uri": "https://mirror.jaleco.com/centos/8.3.2011/BaseOS/x86_64/os/Packages/efi-filesystem-3-2.el8.noarch.rpm", + "sha256Checksum": "3bbfd1043cd7afdb78cf9afec36c0c5370d2fea98166537b4e67f3816f256025" + } + } + } + } + }, + { + "id": "rpm3", + "pkg": { + "desiredState": "INSTALLED", + "rpm": { + "source": { + "gcs": { + "bucket": "test-bucket", + "object": "test-object", + "generation": 1 + } + } + } + } + } + ] + }, + { + "resources": [ + { + "id": "apt-to-deb", + "pkg": { + "desiredState": "INSTALLED", + "apt": { + "name": "bazel" + } + } + }, + { + "id": "deb-local-path-to-gcs", + "pkg": { + "desiredState": "INSTALLED", + "deb": { + "source": { + "localPath": "$HOME/package.deb" + } + } + } + }, + { + "id": "googet", + "pkg": { + "desiredState": "INSTALLED", + "googet": { + "name": "gcc" + } + } + }, + { + "id": "msi1", + "pkg": { + "desiredState": "INSTALLED", + "msi": { + "source": { + "localPath": "$HOME/package.msi" + }, + "properties": [ + "REBOOT=ReallySuppress" + ] + } + } + }, + { + "id": "msi2", + "pkg": { + "desiredState": "INSTALLED", + "msi": { + "source": { + "allowInsecure": true, + "remote": { + "uri": "https://remote.uri.com/package.msi", + "sha256Checksum": "3bbfd1043cd7afdb78cf9afec36c0c5370d2fea98166537b4e67f3816f256025" + }, + "sha256Checksum": "3bbfd1043cd7afdb78cf9afec36c0c5370d2fea98166537b4e67f3816f256025" + } + } + } + }, + { + "id": "msi3", + "pkg": { + "desiredState": "INSTALLED", + "msi": { + "source": { + "gcs": { + "bucket": "test-bucket", + "object": "test-object", + "generation": 1 + } + } + } + } + } + ] + } + ], + "allowNoResourceGroupMatch": false + } + ], + "instanceFilter": { + "all": false, + "inclusionLabels": [ + { + "labels": { + "label-one": "value-one" + } + } + ], + "exclusionLabels": [ + { + "labels": { + "label-two": "value-two" + } + } + ], + "inventories": [ + { + "osShortName": "centos", + "osVersion": "8.*" + } + ] + }, + "rollout": { + "disruptionBudget": { + "fixed": 1 + }, + "minWaitDuration": "3.5s" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT582 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT582 new file mode 100644 index 0000000..e93720c --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT582 @@ -0,0 +1,266 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/osconfigospolicyassignment/percent-os-policy-assignment/osconfig_v1beta1_osconfigospolicyassignment.yaml" + ], + "timestamp": 1642973304914, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/osconfigospolicyassignment/percent-os-policy-assignment/osconfig_v1beta1_osconfigospolicyassignment.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT582", + "status": "active", + "validate": true, + "resourceTypes": [ + "osconfigospolicyassignment" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT582", + "collection": "kcctemplate", + "json": { + "apiVersion": "osconfig.cnrm.cloud.google.com/v1beta1", + "kind": "OSConfigOSPolicyAssignment", + "metadata": { + "name": "osconfigospolicyassignment-sample-percentospolicyassignment" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "us-west2-a", + "description": "A test os policy assignment", + "osPolicies": [ + { + "id": "policy", + "mode": "VALIDATION", + "resourceGroups": [ + { + "resources": [ + { + "id": "apt-to-yum", + "repository": { + "apt": { + "archiveType": "DEB", + "uri": "https://atl.mirrors.clouvider.net/debian", + "distribution": "debian", + "components": [ + "doc" + ], + "gpgKey": ".gnupg/pubring.kbx" + } + } + }, + { + "id": "yum", + "repository": { + "yum": { + "id": "yum", + "displayName": "yum", + "baseUrl": "http://centos.s.uw.edu/centos/", + "gpgKeys": [ + "RPM-GPG-KEY-CentOS-7" + ] + } + } + }, + { + "id": "zypper", + "repository": { + "zypper": { + "id": "zypper", + "displayName": "zypper", + "baseUrl": "http://mirror.dal10.us.leaseweb.net/opensuse", + "gpgKeys": [ + "sample-key-uri" + ] + } + } + }, + { + "id": "goo", + "repository": { + "goo": { + "name": "goo", + "url": "https://foo.com/googet/bar" + } + } + }, + { + "id": "exec1", + "exec": { + "validate": { + "args": [ + "arg1" + ], + "interpreter": "SHELL", + "outputFilePath": "$HOME/out", + "file": { + "localPath": "$HOME/script.sh" + } + }, + "enforce": { + "args": [ + "arg1" + ], + "interpreter": "SHELL", + "outputFilePath": "$HOME/out", + "file": { + "allowInsecure": true, + "remote": { + "uri": "https://www.example.com/script.sh", + "sha256Checksum": "c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063" + } + } + } + } + }, + { + "id": "exec2", + "exec": { + "validate": { + "args": [ + "arg1" + ], + "interpreter": "SHELL", + "outputFilePath": "$HOME/out", + "file": { + "allowInsecure": true, + "remote": { + "uri": "https://www.example.com/script.sh", + "sha256Checksum": "c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063" + } + } + }, + "enforce": { + "args": [ + "arg1" + ], + "interpreter": "SHELL", + "outputFilePath": "$HOME/out", + "file": { + "localPath": "$HOME/script.sh" + } + } + } + }, + { + "id": "exec3", + "exec": { + "validate": { + "interpreter": "SHELL", + "outputFilePath": "$HOME/out", + "file": { + "allowInsecure": true, + "gcs": { + "bucket": "test-bucket", + "object": "test-object", + "generation": 1 + } + } + }, + "enforce": { + "interpreter": "SHELL", + "outputFilePath": "$HOME/out", + "script": "pwd" + } + } + }, + { + "id": "exec4", + "exec": { + "validate": { + "interpreter": "SHELL", + "outputFilePath": "$HOME/out", + "script": "pwd" + }, + "enforce": { + "interpreter": "SHELL", + "outputFilePath": "$HOME/out", + "file": { + "allowInsecure": true, + "gcs": { + "bucket": "test-bucket", + "object": "test-object", + "generation": 1 + } + } + } + } + }, + { + "id": "file1", + "file": { + "path": "$HOME/file", + "state": "PRESENT", + "file": { + "localPath": "$HOME/file" + } + } + } + ] + }, + { + "resources": [ + { + "id": "file2", + "file": { + "path": "$HOME/file", + "state": "PRESENT", + "permissions": "755", + "file": { + "allowInsecure": true, + "remote": { + "uri": "https://www.example.com/file", + "sha256Checksum": "c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063" + } + } + } + }, + { + "id": "file3", + "file": { + "path": "$HOME/file", + "state": "PRESENT", + "file": { + "gcs": { + "bucket": "test-bucket", + "object": "test-object", + "generation": 1 + } + } + } + }, + { + "id": "file4", + "file": { + "path": "$HOME/file", + "state": "PRESENT", + "content": "sample-content" + } + } + ] + } + ] + } + ], + "instanceFilter": { + "all": true + }, + "rollout": { + "disruptionBudget": { + "percent": 1 + }, + "minWaitDuration": "3.5s" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT583 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT583 new file mode 100644 index 0000000..49b117c --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT583 @@ -0,0 +1,147 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/privatecacapool/privateca_v1beta1_privatecacapool.yaml" + ], + "timestamp": 1642973304919, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/privatecacapool/privateca_v1beta1_privatecacapool.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT583", + "status": "active", + "validate": true, + "resourceTypes": [ + "privatecacapool" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT583", + "collection": "kcctemplate", + "json": { + "apiVersion": "privateca.cnrm.cloud.google.com/v1beta1", + "kind": "PrivateCACAPool", + "metadata": { + "labels": { + "label-two": "value-two" + }, + "name": "privatecacapool-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "us-central1", + "tier": "ENTERPRISE", + "issuancePolicy": { + "allowedKeyTypes": [ + { + "rsa": { + "minModulusSize": 64, + "maxModulusSize": 128 + } + }, + { + "ellipticCurve": { + "signatureAlgorithm": "ECDSA_P384" + } + } + ], + "maximumLifetime": "43200s", + "allowedIssuanceModes": { + "allowCsrBasedIssuance": true, + "allowConfigBasedIssuance": false + }, + "baselineValues": { + "keyUsage": { + "baseKeyUsage": { + "digitalSignature": false, + "contentCommitment": false, + "keyEncipherment": false, + "dataEncipherment": false, + "keyAgreement": false, + "certSign": false, + "crlSign": false, + "encipherOnly": false, + "decipherOnly": false + }, + "extendedKeyUsage": { + "serverAuth": false, + "clientAuth": false, + "codeSigning": false, + "emailProtection": false, + "timeStamping": false, + "ocspSigning": false + }, + "unknownExtendedKeyUsages": [ + { + "objectIdPath": [ + 1, + 7 + ] + } + ] + }, + "caOptions": { + "isCa": false, + "maxIssuerPathLength": 7 + }, + "policyIds": [ + { + "objectIdPath": [ + 1, + 7 + ] + } + ], + "aiaOcspServers": [ + "string" + ], + "additionalExtensions": [ + { + "objectId": { + "objectIdPath": [ + 1, + 7 + ] + }, + "critical": false, + "value": "c3RyaW5nCg==" + } + ] + }, + "identityConstraints": { + "celExpression": { + "title": "Sample expression", + "description": "Always false", + "expression": "false", + "location": "devops.ca_pool.json" + }, + "allowSubjectPassthrough": false, + "allowSubjectAltNamesPassthrough": false + }, + "passthroughExtensions": { + "knownExtensions": [ + "BASE_KEY_USAGE" + ], + "additionalExtensions": [ + { + "objectIdPath": [ + 1, + 7 + ] + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT584 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT584 new file mode 100644 index 0000000..0da7a7d --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT584 @@ -0,0 +1,127 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/privatecacertificatetemplate/privateca_v1beta1_privatecacertificatetemplate.yaml" + ], + "timestamp": 1642973304926, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/privatecacertificatetemplate/privateca_v1beta1_privatecacertificatetemplate.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT584", + "status": "active", + "validate": true, + "resourceTypes": [ + "privatecacertificatetemplate" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT584", + "collection": "kcctemplate", + "json": { + "apiVersion": "privateca.cnrm.cloud.google.com/v1beta1", + "kind": "PrivateCACertificateTemplate", + "metadata": { + "labels": { + "label-two": "value-two" + }, + "name": "privatecacertificatetemplate-sample" + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "location": "us-central1", + "predefinedValues": { + "keyUsage": { + "baseKeyUsage": { + "digitalSignature": true, + "contentCommitment": true, + "keyEncipherment": true, + "dataEncipherment": true, + "keyAgreement": true, + "certSign": false, + "crlSign": false, + "encipherOnly": true, + "decipherOnly": true + }, + "extendedKeyUsage": { + "serverAuth": true, + "clientAuth": true, + "codeSigning": true, + "emailProtection": true, + "timeStamping": true, + "ocspSigning": true + }, + "unknownExtendedKeyUsages": [ + { + "objectIdPath": [ + 1, + 6 + ] + } + ] + }, + "caOptions": { + "isCa": false, + "maxIssuerPathLength": 6 + }, + "policyIds": [ + { + "objectIdPath": [ + 1, + 6 + ] + } + ], + "aiaOcspServers": [ + "string" + ], + "additionalExtensions": [ + { + "objectId": { + "objectIdPath": [ + 1, + 6 + ] + }, + "critical": true, + "value": "c3RyaW5nCg==" + } + ] + }, + "identityConstraints": { + "celExpression": { + "title": "Sample expression", + "description": "Always true", + "expression": "true", + "location": "any.file.anywhere" + }, + "allowSubjectPassthrough": true, + "allowSubjectAltNamesPassthrough": true + }, + "passthroughExtensions": { + "knownExtensions": [ + "EXTENDED_KEY_USAGE" + ], + "additionalExtensions": [ + { + "objectIdPath": [ + 1, + 6 + ] + } + ] + }, + "description": "An basic sample certificate template" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT585 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT585 new file mode 100644 index 0000000..f606909 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT585 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/project/project-in-folder/resourcemanager_v1beta1_project.yaml" + ], + "timestamp": 1642973304939, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/project/project-in-folder/resourcemanager_v1beta1_project.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT585", + "status": "active", + "validate": true, + "resourceTypes": [ + "project" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT585", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", + "metadata": { + "annotations": { + "cnrm.cloud.google.com/auto-create-network": "false" + }, + "labels": { + "label-one": "value-one" + }, + "name": "project-sample-in-folder" + }, + "spec": { + "name": "Config Connector Sample", + "folderRef": { + "external": "${FOLDER_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT586 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT586 new file mode 100644 index 0000000..c5fa6b6 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT586 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/project/project-in-org/resourcemanager_v1beta1_project.yaml" + ], + "timestamp": 1642973304943, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/project/project-in-org/resourcemanager_v1beta1_project.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT586", + "status": "active", + "validate": true, + "resourceTypes": [ + "project" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT586", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", + "metadata": { + "annotations": { + "cnrm.cloud.google.com/auto-create-network": "false" + }, + "labels": { + "label-one": "value-one" + }, + "name": "project-sample-in-org" + }, + "spec": { + "name": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT587 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT587 new file mode 100644 index 0000000..4bcadff --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT587 @@ -0,0 +1,52 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubsubscription.yaml" + ], + "timestamp": 1642973304948, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubsubscription.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT587", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubsubscription" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT587", + "collection": "kcctemplate", + "json": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubSubscription", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "pubsubsubscription-sample" + }, + "spec": { + "ackDeadlineSeconds": 15, + "messageRetentionDuration": "86400s", + "retainAckedMessages": false, + "topicRef": { + "name": "pubsubsubscription-dep" + }, + "deadLetterPolicy": { + "deadLetterTopicRef": { + "name": "pubsubsubscription-dep2" + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT588 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT588 new file mode 100644 index 0000000..02ef041 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT588 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + ], + "timestamp": 1642973304952, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT588", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT588", + "collection": "kcctemplate", + "json": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "metadata": { + "name": "pubsubsubscription-dep" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT589 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT589 new file mode 100644 index 0000000..b627623 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT589 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + ], + "timestamp": 1642973304956, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/pubsubsubscription/pubsub_v1beta1_pubsubtopic_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT589", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT589", + "collection": "kcctemplate", + "json": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "metadata": { + "name": "pubsubsubscription-dep2" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT59 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT59 index 902fb4f..87d186f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT59 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT59 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765139477, + "timestamp": 1642973301978, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,48 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT59", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT59", "collection": "kcctemplate", "json": { - "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", - "kind": "BinaryAuthorizationPolicy", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "binaryauthorizationpolicy-sample-serviceidentity" + "name": "binauthzpolicy-dep-namespace" }, "spec": { - "admissionWhitelistPatterns": [ - { - "namePattern": "gcr.io/*" - } - ], - "istioServiceIdentityAdmissionRules": { - "spiffe://example.com/ns/test-ns/sa/default": { - "evaluationMode": "REQUIRE_ATTESTATION", - "requireAttestationsBy": [ - { - "name": "binaryauthorizationpolicy-dep-serviceidentity" - } - ], - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" - } + "name": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" }, - "defaultAdmissionRule": { - "evaluationMode": "REQUIRE_ATTESTATION", - "requireAttestationsBy": [ - { - "name": "binaryauthorizationpolicy-dep-serviceidentity" - } - ], - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" - }, - "description": "A sample Binary Authorization policy", - "globalPolicyEvaluationMode": "DISABLE" + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT590 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT590 new file mode 100644 index 0000000..a6ce5a6 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT590 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/pubsubtopic/pubsub_v1beta1_pubsubtopic.yaml" + ], + "timestamp": 1642973304960, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/pubsubtopic/pubsub_v1beta1_pubsubtopic.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT590", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT590", + "collection": "kcctemplate", + "json": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "pubsubtopic-sample" + }, + "spec": { + "resourceID": "pubsubtopic-sample" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT591 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT591 new file mode 100644 index 0000000..61ef581 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT591 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/recaptchaenterprisekey/android-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "timestamp": 1642973304964, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/recaptchaenterprisekey/android-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT591", + "status": "active", + "validate": true, + "resourceTypes": [ + "recaptchaenterprisekey" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT591", + "collection": "kcctemplate", + "json": { + "apiVersion": "recaptchaenterprise.cnrm.cloud.google.com/v1beta1", + "kind": "RecaptchaEnterpriseKey", + "metadata": { + "name": "recaptchaenterprisekey-sample-android", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "display-name-one", + "androidSettings": { + "allowAllPackageNames": true + }, + "testingOptions": { + "testingScore": 0.8 + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT592 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT592 new file mode 100644 index 0000000..30d0f43 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT592 @@ -0,0 +1,54 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/recaptchaenterprisekey/challenge-based-web-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "timestamp": 1642973304969, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/recaptchaenterprisekey/challenge-based-web-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT592", + "status": "active", + "validate": true, + "resourceTypes": [ + "recaptchaenterprisekey" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT592", + "collection": "kcctemplate", + "json": { + "apiVersion": "recaptchaenterprise.cnrm.cloud.google.com/v1beta1", + "kind": "RecaptchaEnterpriseKey", + "metadata": { + "name": "recaptchaenterprisekey-sample-challengebasedweb", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "display-name-one", + "webSettings": { + "allowAllDomains": true, + "integrationType": "CHECKBOX", + "challengeSecurityPreference": "USABILITY" + }, + "testingOptions": { + "testingScore": 0.5, + "testingChallenge": "NOCAPTCHA" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT593 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT593 new file mode 100644 index 0000000..a5fd440 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT593 @@ -0,0 +1,51 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/recaptchaenterprisekey/ios-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "timestamp": 1642973304973, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/recaptchaenterprisekey/ios-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT593", + "status": "active", + "validate": true, + "resourceTypes": [ + "recaptchaenterprisekey" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT593", + "collection": "kcctemplate", + "json": { + "apiVersion": "recaptchaenterprise.cnrm.cloud.google.com/v1beta1", + "kind": "RecaptchaEnterpriseKey", + "metadata": { + "name": "recaptchaenterprisekey-sample-ios", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "display-name-one", + "iosSettings": { + "allowAllBundleIds": true + }, + "testingOptions": { + "testingScore": 1 + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT594 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT594 new file mode 100644 index 0000000..103dbdd --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT594 @@ -0,0 +1,53 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/recaptchaenterprisekey/score-based-web-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "timestamp": 1642973304979, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/recaptchaenterprisekey/score-based-web-recaptcha-enterprise-key/recaptchaenterprise_v1beta1_recaptchaenterprisekey.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT594", + "status": "active", + "validate": true, + "resourceTypes": [ + "recaptchaenterprisekey" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT594", + "collection": "kcctemplate", + "json": { + "apiVersion": "recaptchaenterprise.cnrm.cloud.google.com/v1beta1", + "kind": "RecaptchaEnterpriseKey", + "metadata": { + "name": "recaptchaenterprisekey-sample-scorebasedweb", + "labels": { + "label-one": "value-one" + } + }, + "spec": { + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "displayName": "display-name-one", + "webSettings": { + "allowAllDomains": true, + "allowAmpTraffic": false, + "integrationType": "SCORE" + }, + "testingOptions": { + "testingScore": 0.5 + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT595 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT595 new file mode 100644 index 0000000..85a17ce --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT595 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/redisinstance/redis_v1beta1_redisinstance.yaml" + ], + "timestamp": 1642973304983, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/redisinstance/redis_v1beta1_redisinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT595", + "status": "active", + "validate": true, + "resourceTypes": [ + "redisinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT595", + "collection": "kcctemplate", + "json": { + "apiVersion": "redis.cnrm.cloud.google.com/v1beta1", + "kind": "RedisInstance", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "redisinstance-sample" + }, + "spec": { + "displayName": "Sample Redis Instance", + "region": "us-central1", + "tier": "BASIC", + "memorySizeGb": 16 + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT596 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT596 new file mode 100644 index 0000000..0057848 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT596 @@ -0,0 +1,43 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_project.yaml" + ], + "timestamp": 1642973304987, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_project.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT596", + "status": "active", + "validate": true, + "resourceTypes": [ + "project" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT596", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", + "metadata": { + "annotations": { + "cnrm.cloud.google.com/organization-id": "${ORG_ID?}", + "cnrm.cloud.google.com/auto-create-network": "false" + }, + "name": "resourcemanagerlien-dep" + }, + "spec": { + "name": "ResourceManagerLien dependency" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT597 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT597 new file mode 100644 index 0000000..486687e --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT597 @@ -0,0 +1,48 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_resourcemanagerlien.yaml" + ], + "timestamp": 1642973304991, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerlien/resourcemanager_v1beta1_resourcemanagerlien.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT597", + "status": "active", + "validate": true, + "resourceTypes": [ + "resourcemanagerlien" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT597", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "ResourceManagerLien", + "metadata": { + "name": "resourcemanagerlien-sample" + }, + "spec": { + "origin": "project-deletion-prohibited", + "reason": "This project is protected from deletion, for reasons which can be explained in this field.", + "parent": { + "projectRef": { + "name": "resourcemanagerlien-dep" + } + }, + "restrictions": [ + "resourcemanager.projects.delete" + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT598 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT598 new file mode 100644 index 0000000..5e3d686 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT598 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_folder.yaml" + ], + "timestamp": 1642973304995, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_folder.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT598", + "status": "active", + "validate": true, + "resourceTypes": [ + "folder" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT598", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Folder", + "metadata": { + "annotations": { + "cnrm.cloud.google.com/organization-id": "${ORG_ID?}" + }, + "name": "resourcemanagerpolicy-dep-folder" + }, + "spec": { + "displayName": "Org Policy Sample" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT599 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT599 new file mode 100644 index 0000000..9a5d4d4 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT599 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "timestamp": 1642973304999, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-folder/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT599", + "status": "active", + "validate": true, + "resourceTypes": [ + "resourcemanagerpolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT599", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "ResourceManagerPolicy", + "metadata": { + "name": "resourcemanagerpolicy-sample-folder" + }, + "spec": { + "folderRef": { + "name": "resourcemanagerpolicy-dep-folder" + }, + "constraint": "constraints/compute.disableSerialPortAccess", + "booleanPolicy": { + "enforced": true + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT6 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT6 index a6ae04d..99ab148 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT6 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT6 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/accesscontextmanagerserviceperimeter/accesscontextmanager_v1beta1_accesscontextmanagerserviceperimeter.yaml" ], - "timestamp": 1628765138320, + "timestamp": 1642973301662, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT6", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "accesscontextmanagerserviceperimeter" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT6", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT60 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT60 index d2f317f..dcef3e6 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT60 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT60 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], - "timestamp": 1628765139504, + "timestamp": 1642973301982, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,24 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/binaryauthorizationpolicy/service-identity-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT60", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT60", "collection": "kcctemplate", "json": { - "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", - "kind": "ContainerAnalysisNote", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "binaryauthorizationpolicy-dep-serviceidentity" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "binaryauthorizationpolicy-dep1-namespace" }, "spec": { - "package": { - "name": "test-package" - } + "projectRef": { + "name": "binauthzpolicy-dep-namespace" + }, + "resourceID": "containeranalysis.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT600 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT600 new file mode 100644 index 0000000..4780d14 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT600 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-organization/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "timestamp": 1642973305003, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-organization/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT600", + "status": "active", + "validate": true, + "resourceTypes": [ + "resourcemanagerpolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT600", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "ResourceManagerPolicy", + "metadata": { + "name": "resourcemanagerpolicy-sample-org" + }, + "spec": { + "organizationRef": { + "external": "${ORG_ID?}" + }, + "constraint": "constraints/compute.disableSerialPortAccess", + "booleanPolicy": { + "enforced": true + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT601 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT601 new file mode 100644 index 0000000..0c14496 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT601 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_project.yaml" + ], + "timestamp": 1642973305007, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_project.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT601", + "status": "active", + "validate": true, + "resourceTypes": [ + "project" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT601", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", + "metadata": { + "annotations": { + "cnrm.cloud.google.com/organization-id": "${ORG_ID?}" + }, + "name": "resourcemanagerpolicy-dep-project" + }, + "spec": { + "name": "Org Policy Sample", + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT602 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT602 new file mode 100644 index 0000000..5080e91 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT602 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "timestamp": 1642973305011, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/resourcemanagerpolicy/organization-policy-for-project/resourcemanager_v1beta1_resourcemanagerpolicy.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT602", + "status": "active", + "validate": true, + "resourceTypes": [ + "resourcemanagerpolicy" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT602", + "collection": "kcctemplate", + "json": { + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "ResourceManagerPolicy", + "metadata": { + "name": "resourcemanagerpolicy-sample-project" + }, + "spec": { + "projectRef": { + "name": "resourcemanagerpolicy-dep-project" + }, + "constraint": "constraints/compute.disableSerialPortAccess", + "booleanPolicy": { + "enforced": true + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT603 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT603 new file mode 100644 index 0000000..b05b459 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT603 @@ -0,0 +1,66 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/runservice/run_v1beta1_runservice.yaml" + ], + "timestamp": 1642973305016, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/runservice/run_v1beta1_runservice.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT603", + "status": "active", + "validate": true, + "resourceTypes": [ + "runservice" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT603", + "collection": "kcctemplate", + "json": { + "apiVersion": "run.cnrm.cloud.google.com/v1beta1", + "kind": "RunService", + "metadata": { + "name": "runservice-sample" + }, + "spec": { + "ingress": "INGRESS_TRAFFIC_ALL", + "launchStage": "GA", + "location": "us-central1", + "projectRef": { + "external": "projects/${PROJECT_ID?}" + }, + "template": { + "containers": [ + { + "env": [ + { + "name": "FOO", + "value": "bar]" + } + ], + "image": "gcr.io/cloudrun/hello" + } + ], + "scaling": { + "maxInstanceCount": 2 + } + }, + "traffic": [ + { + "percent": 100, + "type": "TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST" + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT604 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT604 new file mode 100644 index 0000000..6758cf5 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT604 @@ -0,0 +1,44 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/secretmanagersecret/automatic-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "timestamp": 1642973305019, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecret/automatic-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT604", + "status": "active", + "validate": true, + "resourceTypes": [ + "secretmanagersecret" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT604", + "collection": "kcctemplate", + "json": { + "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", + "kind": "SecretManagerSecret", + "metadata": { + "name": "secretmanagersecret-sample-automatic", + "labels": { + "replication-type": "automatic" + } + }, + "spec": { + "replication": { + "automatic": true + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT605 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT605 new file mode 100644 index 0000000..3da85f2 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT605 @@ -0,0 +1,53 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/secretmanagersecret/user-managed-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "timestamp": 1642973305023, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecret/user-managed-secret-replication/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT605", + "status": "active", + "validate": true, + "resourceTypes": [ + "secretmanagersecret" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT605", + "collection": "kcctemplate", + "json": { + "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", + "kind": "SecretManagerSecret", + "metadata": { + "name": "secretmanagersecret-sample-usermanaged", + "labels": { + "replication-type": "user-managed" + } + }, + "spec": { + "replication": { + "userManaged": { + "replicas": [ + { + "location": "us-central1" + }, + { + "location": "us-east1" + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT606 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT606 new file mode 100644 index 0000000..af2bf56 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT606 @@ -0,0 +1,39 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/secretmanagersecretversion/secret.yaml" + ], + "timestamp": 1642973305028, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecretversion/secret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT606", + "status": "active", + "validate": true, + "resourceTypes": [ + "secret" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT606", + "collection": "kcctemplate", + "json": { + "apiVersion": "v1", + "kind": "Secret", + "metadata": { + "name": "secretmanagersecretversion-dep" + }, + "data": { + "secretData": "SSBhbHdheXMgbG92ZWQgc3BhcnJpbmcgd2l0aCBnaWFudCBjYW5keSBzd29yZHMsIGJ1dCBJIGhhZCBubyBpZGVhIHRoYXQgd2FzIG15IHN1cGVyIHNlY3JldCBpbmZvcm1hdGlvbiE=" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT607 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT607 new file mode 100644 index 0000000..0ceafbf --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT607 @@ -0,0 +1,41 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "timestamp": 1642973305032, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT607", + "status": "active", + "validate": true, + "resourceTypes": [ + "secretmanagersecret" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT607", + "collection": "kcctemplate", + "json": { + "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", + "kind": "SecretManagerSecret", + "metadata": { + "name": "secretmanagersecretversion-dep" + }, + "spec": { + "replication": { + "automatic": true + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT608 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT608 new file mode 100644 index 0000000..56ab5e8 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT608 @@ -0,0 +1,50 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecretversion.yaml" + ], + "timestamp": 1642973305036, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/secretmanagersecretversion/secretmanager_v1beta1_secretmanagersecretversion.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT608", + "status": "active", + "validate": true, + "resourceTypes": [ + "secretmanagersecretversion" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT608", + "collection": "kcctemplate", + "json": { + "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", + "kind": "SecretManagerSecretVersion", + "metadata": { + "name": "secretmanagersecretversion-sample" + }, + "spec": { + "enabled": true, + "secretData": { + "valueFrom": { + "secretKeyRef": { + "key": "secretData", + "name": "secretmanagersecretversion-dep" + } + } + }, + "secretRef": { + "name": "secretmanagersecretversion-dep" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT609 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT609 new file mode 100644 index 0000000..48ea54f --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT609 @@ -0,0 +1,40 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/service/serviceusage_v1beta1_service.yaml" + ], + "timestamp": 1642973305040, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/service/serviceusage_v1beta1_service.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT609", + "status": "active", + "validate": true, + "resourceTypes": [ + "service" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT609", + "collection": "kcctemplate", + "json": { + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", + "metadata": { + "annotations": { + "cnrm.cloud.google.com/deletion-policy": "abandon", + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "pubsub.googleapis.com" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT61 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT61 index 5538962..5ca7f19 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT61 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT61 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], - "timestamp": 1628765139538, + "timestamp": 1642973301993, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,91 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/namespace-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT61", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT61", "collection": "kcctemplate", "json": { - "apiVersion": "cloudbuild.cnrm.cloud.google.com/v1beta1", - "kind": "CloudBuildTrigger", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "cloudbuildtrigger-sample-cloudsourcerepo" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "binaryauthorizationpolicy-dep2-namespace" }, "spec": { - "description": "Cloud Build Trigger for building the master branch of the referenced Cloud Source Repository.", - "disabled": false, - "triggerTemplate": { - "repoRef": { - "name": "cloudbuildtrigger-dep-cloudsourcerepo" - }, - "dir": "team-a/service-b", - "branchName": "master" - }, - "ignoredFiles": [ - "**/*.md" - ], - "includedFiles": [ - "src/**" - ], - "substitutions": { - "_SERVICE_NAME": "service-name" + "projectRef": { + "name": "binauthzpolicy-dep-namespace" }, - "build": { - "images": [ - "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:$COMMIT_SHA" - ], - "tags": [ - "team-a", - "service-b" - ], - "timeout": "1800s", - "step": [ - { - "id": "download_zip", - "name": "gcr.io/cloud-builders/gsutil", - "args": [ - "cp", - "gs://mybucket/remotefile.zip", - "localfile.zip" - ], - "timeout": "300s" - }, - { - "id": "build_package", - "name": "gcr.io/cloud-builders/go", - "args": [ - "build", - "my_package" - ], - "dir": "directory", - "env": [ - "ENV1=one", - "ENV2=two" - ], - "secretEnv": [ - "SECRET_ENV1" - ], - "timeout": "300s" - }, - { - "id": "build_docker_image", - "name": "gcr.io/cloud-builders/docker", - "args": [ - "build", - "-t", - "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:$COMMIT_SHA", - "-f", - "Dockerfile", - "." - ], - "timeout": "300s" - } - ] - } + "resourceID": "binaryauthorization.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT610 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT610 new file mode 100644 index 0000000..4560f4d --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT610 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_0.yaml" + ], + "timestamp": 1642973305044, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT610", + "status": "active", + "validate": true, + "resourceTypes": [ + "computeaddress" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT610", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeAddress", + "metadata": { + "name": "servicenetworkingconnection-dep1" + }, + "spec": { + "addressType": "INTERNAL", + "location": "global", + "networkRef": { + "name": "servicenetworkingconnection-dep" + }, + "prefixLength": 16, + "purpose": "VPC_PEERING" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT611 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT611 new file mode 100644 index 0000000..6698fd4 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT611 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_1.yaml" + ], + "timestamp": 1642973305047, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computeaddress_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT611", + "status": "active", + "validate": true, + "resourceTypes": [ + "computeaddress" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT611", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeAddress", + "metadata": { + "name": "servicenetworkingconnection-dep2" + }, + "spec": { + "addressType": "INTERNAL", + "location": "global", + "networkRef": { + "name": "servicenetworkingconnection-dep" + }, + "prefixLength": 24, + "purpose": "VPC_PEERING" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT612 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT612 new file mode 100644 index 0000000..09730a7 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT612 @@ -0,0 +1,39 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computenetwork.yaml" + ], + "timestamp": 1642973305051, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/servicenetworkingconnection/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT612", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT612", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", + "metadata": { + "name": "servicenetworkingconnection-dep" + }, + "spec": { + "autoCreateSubnetworks": false + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT613 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT613 new file mode 100644 index 0000000..38b462e --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT613 @@ -0,0 +1,50 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/servicenetworkingconnection/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + ], + "timestamp": 1642973305055, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/servicenetworkingconnection/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT613", + "status": "active", + "validate": true, + "resourceTypes": [ + "servicenetworkingconnection" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT613", + "collection": "kcctemplate", + "json": { + "apiVersion": "servicenetworking.cnrm.cloud.google.com/v1beta1", + "kind": "ServiceNetworkingConnection", + "metadata": { + "name": "servicenetworkingconnection-sample" + }, + "spec": { + "networkRef": { + "name": "servicenetworkingconnection-dep" + }, + "reservedPeeringRanges": [ + { + "name": "servicenetworkingconnection-dep1" + }, + { + "name": "servicenetworkingconnection-dep2" + } + ], + "service": "servicenetworking.googleapis.com" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT614 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT614 new file mode 100644 index 0000000..b40e29e --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT614 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sourcereporepository/iam_v1beta1_iamserviceaccount.yaml" + ], + "timestamp": 1642973305060, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sourcereporepository/iam_v1beta1_iamserviceaccount.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT614", + "status": "active", + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT614", + "collection": "kcctemplate", + "json": { + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", + "metadata": { + "name": "sourcereporepository-dep" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT615 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT615 new file mode 100644 index 0000000..947b149 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT615 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sourcereporepository/pubsub_v1beta1_pubsubtopic.yaml" + ], + "timestamp": 1642973305064, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sourcereporepository/pubsub_v1beta1_pubsubtopic.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT615", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT615", + "collection": "kcctemplate", + "json": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "metadata": { + "name": "sourcereporepository-dep" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT616 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT616 new file mode 100644 index 0000000..2dbd74d --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT616 @@ -0,0 +1,49 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sourcereporepository/sourcerepo_v1beta1_sourcereporepository.yaml" + ], + "timestamp": 1642973305067, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sourcereporepository/sourcerepo_v1beta1_sourcereporepository.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT616", + "status": "active", + "validate": true, + "resourceTypes": [ + "sourcereporepository" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT616", + "collection": "kcctemplate", + "json": { + "apiVersion": "sourcerepo.cnrm.cloud.google.com/v1beta1", + "kind": "SourceRepoRepository", + "metadata": { + "name": "sourcereporepository-sample" + }, + "spec": { + "pubsubConfigs": [ + { + "topicRef": { + "name": "sourcereporepository-dep" + }, + "serviceAccountRef": { + "name": "sourcereporepository-dep" + }, + "messageFormat": "JSON" + } + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT617 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT617 new file mode 100644 index 0000000..16cc2a5 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT617 @@ -0,0 +1,44 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/spannerdatabase/spanner_v1beta1_spannerdatabase.yaml" + ], + "timestamp": 1642973305071, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/spannerdatabase/spanner_v1beta1_spannerdatabase.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT617", + "status": "active", + "validate": true, + "resourceTypes": [ + "spannerdatabase" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT617", + "collection": "kcctemplate", + "json": { + "apiVersion": "spanner.cnrm.cloud.google.com/v1beta1", + "kind": "SpannerDatabase", + "metadata": { + "name": "spannerdatabase-sample" + }, + "spec": { + "instanceRef": { + "name": "spannerdatabase-dep" + }, + "ddl": [ + "CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)" + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT618 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT618 new file mode 100644 index 0000000..a0d2efc --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT618 @@ -0,0 +1,40 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/spannerdatabase/spanner_v1beta1_spannerinstance.yaml" + ], + "timestamp": 1642973305074, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/spannerdatabase/spanner_v1beta1_spannerinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT618", + "status": "active", + "validate": true, + "resourceTypes": [ + "spannerinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT618", + "collection": "kcctemplate", + "json": { + "apiVersion": "spanner.cnrm.cloud.google.com/v1beta1", + "kind": "SpannerInstance", + "metadata": { + "name": "spannerdatabase-dep" + }, + "spec": { + "config": "regional-us-west1", + "displayName": "Spanner Database Dependency" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT619 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT619 new file mode 100644 index 0000000..3f4f901 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT619 @@ -0,0 +1,44 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/spannerinstance/spanner_v1beta1_spannerinstance.yaml" + ], + "timestamp": 1642973305078, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/spannerinstance/spanner_v1beta1_spannerinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT619", + "status": "active", + "validate": true, + "resourceTypes": [ + "spannerinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT619", + "collection": "kcctemplate", + "json": { + "apiVersion": "spanner.cnrm.cloud.google.com/v1beta1", + "kind": "SpannerInstance", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "spannerinstance-sample" + }, + "spec": { + "config": "regional-us-west1", + "displayName": "Spanner Instance Sample", + "numNodes": 2 + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT62 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT62 index 7e7a2d0..1eda91a 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT62 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT62 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/sourcerepo_v1beta1_sourcereporepository.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], - "timestamp": 1628765139557, + "timestamp": 1642973302000, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/sourcerepo_v1beta1_sourcereporepository.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT62", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT62", "collection": "kcctemplate", "json": { - "apiVersion": "sourcerepo.cnrm.cloud.google.com/v1beta1", - "kind": "SourceRepoRepository", + "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", + "kind": "BinaryAuthorizationAttestor", "metadata": { - "name": "cloudbuildtrigger-dep-cloudsourcerepo" + "name": "binaryauthorizationpolicy-dep-serviceaccount" + }, + "spec": { + "projectRef": { + "name": "binauthzpolicy-dep-sa" + }, + "description": "A sample binary authorization attestor.", + "userOwnedDrydockNote": { + "noteRef": { + "name": "binaryauthorizationpolicy-dep-serviceaccount" + } + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT620 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT620 new file mode 100644 index 0000000..3a7daf8 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT620 @@ -0,0 +1,46 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqldatabase/sql_v1beta1_sqldatabase.yaml" + ], + "timestamp": 1642973305081, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqldatabase/sql_v1beta1_sqldatabase.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT620", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqldatabase" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT620", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLDatabase", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "sqldatabase-sample" + }, + "spec": { + "charset": "utf8mb4", + "collation": "utf8mb4_bin", + "instanceRef": { + "name": "sqldatabase-dep" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT621 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT621 new file mode 100644 index 0000000..209d096 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT621 @@ -0,0 +1,43 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqldatabase/sql_v1beta1_sqlinstance.yaml" + ], + "timestamp": 1642973305085, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqldatabase/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT621", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT621", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "name": "sqldatabase-dep" + }, + "spec": { + "region": "us-central1", + "databaseVersion": "MYSQL_5_7", + "settings": { + "tier": "db-n1-standard-1" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT622 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT622 new file mode 100644 index 0000000..fa90b12 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT622 @@ -0,0 +1,43 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance/sql_v1beta1_sqlinstance.yaml" + ], + "timestamp": 1642973305089, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT622", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT622", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "name": "sqlinstance-sample-mysql" + }, + "spec": { + "databaseVersion": "MYSQL_5_7", + "region": "us-central1", + "settings": { + "tier": "db-f1-micro" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT623 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT623 new file mode 100644 index 0000000..613620c --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT623 @@ -0,0 +1,50 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-high-availability/sql_v1beta1_sqlinstance.yaml" + ], + "timestamp": 1642973305093, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-high-availability/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT623", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT623", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "name": "sqlinstance-sample-mysqlhighavailability" + }, + "spec": { + "databaseVersion": "MYSQL_5_7", + "region": "us-central1", + "settings": { + "tier": "db-g1-small", + "diskSize": 25, + "diskType": "PD_SSD", + "availabilityType": "REGIONAL", + "backupConfiguration": { + "binaryLogEnabled": true, + "enabled": true + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT624 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT624 new file mode 100644 index 0000000..805d2b7 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT624 @@ -0,0 +1,54 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-with-replication/sql_v1beta1_sqlinstance_multiple_yaml_0.yaml" + ], + "timestamp": 1642973305097, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-with-replication/sql_v1beta1_sqlinstance_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT624", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT624", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "name": "sqlinstance-sample1-mysqlwithreplication" + }, + "spec": { + "databaseVersion": "MYSQL_5_7", + "region": "us-central1", + "settings": { + "backupConfiguration": { + "binaryLogEnabled": true, + "enabled": true, + "startTime": "18:00" + }, + "ipConfiguration": { + "requireSsl": true + }, + "locationPreference": { + "zone": "us-central1-b" + }, + "tier": "db-f1-micro" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT625 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT625 new file mode 100644 index 0000000..c1faeed --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT625 @@ -0,0 +1,55 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-with-replication/sql_v1beta1_sqlinstance_multiple_yaml_1.yaml" + ], + "timestamp": 1642973305101, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/mysql-sql-instance-with-replication/sql_v1beta1_sqlinstance_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT625", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT625", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "name": "sqlinstance-sample2-mysqlwithreplication" + }, + "spec": { + "databaseVersion": "MYSQL_5_7", + "masterInstanceRef": { + "name": "sqlinstance-sample1-mysqlwithreplication" + }, + "region": "us-central1", + "replicaConfiguration": { + "connectRetryInterval": 30 + }, + "settings": { + "ipConfiguration": { + "requireSsl": true + }, + "locationPreference": { + "zone": "us-central1-c" + }, + "tier": "db-f1-micro" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT626 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT626 new file mode 100644 index 0000000..3e411d5 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT626 @@ -0,0 +1,44 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/postgres-sql-instance-high-availability/sql_v1beta1_sqlinstance.yaml" + ], + "timestamp": 1642973305104, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/postgres-sql-instance-high-availability/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT626", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT626", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "name": "sqlinstance-sample-postgreshighavailability" + }, + "spec": { + "databaseVersion": "POSTGRES_9_6", + "region": "us-central1", + "settings": { + "tier": "db-custom-1-3840", + "availabilityType": "REGIONAL" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT627 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT627 new file mode 100644 index 0000000..18f274a --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT627 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/compute_v1beta1_computeaddress.yaml" + ], + "timestamp": 1642973305108, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/compute_v1beta1_computeaddress.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT627", + "status": "active", + "validate": true, + "resourceTypes": [ + "computeaddress" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT627", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeAddress", + "metadata": { + "name": "sqlinstance-dep-private-ip" + }, + "spec": { + "addressType": "INTERNAL", + "location": "global", + "purpose": "VPC_PEERING", + "prefixLength": 16, + "networkRef": { + "name": "sqlinstance-dep-private-ip" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT628 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT628 new file mode 100644 index 0000000..dff0319 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT628 @@ -0,0 +1,39 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/compute_v1beta1_computenetwork.yaml" + ], + "timestamp": 1642973305112, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT628", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT628", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", + "metadata": { + "name": "sqlinstance-dep-private-ip" + }, + "spec": { + "autoCreateSubnetworks": false + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT629 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT629 new file mode 100644 index 0000000..e543818 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT629 @@ -0,0 +1,47 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + ], + "timestamp": 1642973305115, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/servicenetworking_v1beta1_servicenetworkingconnection.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT629", + "status": "active", + "validate": true, + "resourceTypes": [ + "servicenetworkingconnection" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT629", + "collection": "kcctemplate", + "json": { + "apiVersion": "servicenetworking.cnrm.cloud.google.com/v1beta1", + "kind": "ServiceNetworkingConnection", + "metadata": { + "name": "sqlinstance-dep-private-ip" + }, + "spec": { + "networkRef": { + "name": "sqlinstance-dep-private-ip" + }, + "reservedPeeringRanges": [ + { + "name": "sqlinstance-dep-private-ip" + } + ], + "service": "servicenetworking.googleapis.com" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT63 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT63 index d8ecaa0..a9fcbd8 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT63 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT63 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-github-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], - "timestamp": 1628765139590, + "timestamp": 1642973302009, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,91 +15,54 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-for-github-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT63", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT63", "collection": "kcctemplate", "json": { - "apiVersion": "cloudbuild.cnrm.cloud.google.com/v1beta1", - "kind": "CloudBuildTrigger", + "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", + "kind": "BinaryAuthorizationPolicy", "metadata": { - "name": "cloudbuildtrigger-sample-github" + "name": "binaryauthorizationpolicy-sample-serviceaccount" }, "spec": { - "description": "Cloud Build Trigger for building the master branch of the GitHub repository at github.com/owner_name/repo_name", - "disabled": false, - "github": { - "owner": "owner_name", - "name": "repo_name", - "push": { - "branch": "master" - } + "projectRef": { + "name": "binauthzpolicy-dep-sa" }, - "ignoredFiles": [ - "**/*.md" - ], - "includedFiles": [ - "src/**" + "admissionWhitelistPatterns": [ + { + "namePattern": "gcr.io/*" + } ], - "substitutions": { - "_SERVICE_NAME": "service-name" + "kubernetesServiceAccountAdmissionRules": { + "test-namespace:default": { + "evaluationMode": "REQUIRE_ATTESTATION", + "requireAttestationsBy": [ + { + "name": "binaryauthorizationpolicy-dep-serviceaccount" + } + ], + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + } }, - "build": { - "images": [ - "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:$COMMIT_SHA" - ], - "tags": [ - "team-a", - "service-b" - ], - "timeout": "1800s", - "step": [ - { - "id": "download_zip", - "name": "gcr.io/cloud-builders/gsutil", - "args": [ - "cp", - "gs://mybucket/remotefile.zip", - "localfile.zip" - ], - "timeout": "300s" - }, - { - "id": "build_package", - "name": "gcr.io/cloud-builders/go", - "args": [ - "build", - "my_package" - ], - "dir": "directory", - "env": [ - "ENV1=one", - "ENV2=two" - ], - "secretEnv": [ - "SECRET_ENV1" - ], - "timeout": "300s" - }, + "defaultAdmissionRule": { + "evaluationMode": "REQUIRE_ATTESTATION", + "requireAttestationsBy": [ { - "id": "build_docker_image", - "name": "gcr.io/cloud-builders/docker", - "args": [ - "build", - "-t", - "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:$COMMIT_SHA", - "-f", - "Dockerfile", - "." - ], - "timeout": "300s" + "name": "binaryauthorizationpolicy-dep-serviceaccount" } - ] - } + ], + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + }, + "description": "A sample Binary Authorization policy", + "globalPolicyEvaluationMode": "DISABLE" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT630 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT630 new file mode 100644 index 0000000..d46acfc --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT630 @@ -0,0 +1,49 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/sql_v1beta1_sqlinstance.yaml" + ], + "timestamp": 1642973305119, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlinstance/private-ip-instance/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT630", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT630", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "name": "sqlinstance-sample-private-ip" + }, + "spec": { + "databaseVersion": "MYSQL_5_7", + "region": "us-central1", + "settings": { + "tier": "db-f1-micro", + "ipConfiguration": { + "ipv4Enabled": false, + "privateNetworkRef": { + "name": "sqlinstance-dep-private-ip" + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT631 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT631 new file mode 100644 index 0000000..e3132c7 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT631 @@ -0,0 +1,43 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlsslcert/sql_v1beta1_sqlinstance.yaml" + ], + "timestamp": 1642973305126, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlsslcert/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT631", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT631", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "name": "sqlsslcert-dep" + }, + "spec": { + "databaseVersion": "MYSQL_5_7", + "region": "us-central1", + "settings": { + "tier": "db-f1-micro" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT632 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT632 new file mode 100644 index 0000000..96d9ea2 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT632 @@ -0,0 +1,42 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqlsslcert/sql_v1beta1_sqlsslcert.yaml" + ], + "timestamp": 1642973305129, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqlsslcert/sql_v1beta1_sqlsslcert.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT632", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlsslcert" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT632", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLSSLCert", + "metadata": { + "name": "sqlsslcert-sample" + }, + "spec": { + "instanceRef": { + "name": "sqlsslcert-dep" + }, + "commonName": "client-name" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT633 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT633 new file mode 100644 index 0000000..a0eed62 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT633 @@ -0,0 +1,39 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqluser/secret.yaml" + ], + "timestamp": 1642973305132, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqluser/secret.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT633", + "status": "active", + "validate": true, + "resourceTypes": [ + "secret" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT633", + "collection": "kcctemplate", + "json": { + "apiVersion": "v1", + "kind": "Secret", + "metadata": { + "name": "sqluser-dep" + }, + "data": { + "password": "cGFzc3dvcmQ=" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT634 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT634 new file mode 100644 index 0000000..92324be --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT634 @@ -0,0 +1,46 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqluser/sql_v1beta1_sqlinstance.yaml" + ], + "timestamp": 1642973305135, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqluser/sql_v1beta1_sqlinstance.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT634", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqlinstance" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT634", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLInstance", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "sqluser-dep" + }, + "spec": { + "region": "us-central1", + "databaseVersion": "MYSQL_5_7", + "settings": { + "tier": "db-n1-standard-1" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT635 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT635 new file mode 100644 index 0000000..c2ce11c --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT635 @@ -0,0 +1,50 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/sqluser/sql_v1beta1_sqluser.yaml" + ], + "timestamp": 1642973305139, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/sqluser/sql_v1beta1_sqluser.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT635", + "status": "active", + "validate": true, + "resourceTypes": [ + "sqluser" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT635", + "collection": "kcctemplate", + "json": { + "apiVersion": "sql.cnrm.cloud.google.com/v1beta1", + "kind": "SQLUser", + "metadata": { + "name": "sqluser-sample" + }, + "spec": { + "instanceRef": { + "name": "sqluser-dep" + }, + "host": "%", + "password": { + "valueFrom": { + "secretKeyRef": { + "name": "sqluser-dep", + "key": "password" + } + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT636 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT636 new file mode 100644 index 0000000..716009f --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT636 @@ -0,0 +1,74 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagebucket/storage_v1beta1_storagebucket.yaml" + ], + "timestamp": 1642973305143, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagebucket/storage_v1beta1_storagebucket.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT636", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT636", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", + "metadata": { + "annotations": { + "cnrm.cloud.google.com/force-destroy": "false" + }, + "labels": { + "label-one": "value-one" + }, + "name": "${PROJECT_ID?}-sample" + }, + "spec": { + "lifecycleRule": [ + { + "action": { + "type": "Delete" + }, + "condition": { + "age": 7 + } + } + ], + "versioning": { + "enabled": true + }, + "cors": [ + { + "origin": [ + "http://example.appspot.com" + ], + "responseHeader": [ + "Content-Type" + ], + "method": [ + "GET", + "HEAD", + "DELETE" + ], + "maxAgeSeconds": 3600 + } + ], + "uniformBucketLevelAccess": true + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT637 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT637 new file mode 100644 index 0000000..b753b4b --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT637 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucket.yaml" + ], + "timestamp": 1642973305147, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucket.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT637", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT637", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", + "metadata": { + "name": "${PROJECT_ID?}-bucketaccesscontrol-dep" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT638 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT638 new file mode 100644 index 0000000..88dd40b --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT638 @@ -0,0 +1,46 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucketaccesscontrol.yaml" + ], + "timestamp": 1642973305151, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagebucketaccesscontrol/storage_v1beta1_storagebucketaccesscontrol.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT638", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucketaccesscontrol" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT638", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucketAccessControl", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "storagebucketaccesscontrol-sample" + }, + "spec": { + "bucketRef": { + "name": "${PROJECT_ID?}-bucketaccesscontrol-dep" + }, + "entity": "allAuthenticatedUsers", + "role": "READER" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT639 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT639 new file mode 100644 index 0000000..2069486 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT639 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagebucket.yaml" + ], + "timestamp": 1642973305154, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagebucket.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT639", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT639", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", + "metadata": { + "name": "${PROJECT_ID?}-objectaccesscontrol-dep" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT64 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT64 index d5f3a6a..0f68dca 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT64 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT64 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], - "timestamp": 1628765139608, + "timestamp": 1642973302015, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,40 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/cloudbuild_v1beta1_cloudbuildtrigger.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT64", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT64", "collection": "kcctemplate", "json": { - "apiVersion": "cloudbuild.cnrm.cloud.google.com/v1beta1", - "kind": "CloudBuildTrigger", + "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerAnalysisNote", "metadata": { - "name": "cloudbuildtrigger-sample-withtemplatefile" + "name": "binaryauthorizationpolicy-dep-serviceaccount" }, "spec": { - "description": "Cloud Build Trigger with a build template file. Builds the master branch of the referenced Cloud Source Repository.", - "disabled": false, - "triggerTemplate": { - "repoRef": { - "name": "cloudbuildtrigger-dep-withtemplatefile" - }, - "dir": "team-a/service-b", - "branchName": "master" + "projectRef": { + "name": "binauthzpolicy-dep-sa" }, - "ignoredFiles": [ - "**/*.md" - ], - "includedFiles": [ - "src/**" - ], - "substitutions": { - "_SERVICE_NAME": "service-name" - }, - "filename": "cloudbuild.yaml" + "package": { + "name": "test-package" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT640 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT640 new file mode 100644 index 0000000..de5426b --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT640 @@ -0,0 +1,46 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagedefaultobjectaccesscontrol.yaml" + ], + "timestamp": 1642973305160, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagedefaultobjectaccesscontrol/storage_v1beta1_storagedefaultobjectaccesscontrol.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT640", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagedefaultobjectaccesscontrol" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT640", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageDefaultObjectAccessControl", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "storagedefaultobjectaccesscontrol-sample" + }, + "spec": { + "bucketRef": { + "name": "${PROJECT_ID?}-objectaccesscontrol-dep" + }, + "entity": "allAuthenticatedUsers", + "role": "READER" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT641 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT641 new file mode 100644 index 0000000..ce0a639 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT641 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagenotification/iam_v1beta1_iampolicymember.yaml" + ], + "timestamp": 1642973305164, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagenotification/iam_v1beta1_iampolicymember.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT641", + "status": "active", + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT641", + "collection": "kcctemplate", + "json": { + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", + "metadata": { + "name": "storagenotification-dep" + }, + "spec": { + "member": "serviceAccount:service-${PROJECT_NUMBER?}@gs-project-accounts.iam.gserviceaccount.com", + "role": "roles/pubsub.publisher", + "resourceRef": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "name": "storagenotification-dep" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT642 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT642 new file mode 100644 index 0000000..4000fca --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT642 @@ -0,0 +1,39 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagenotification/pubsub_v1beta1_pubsubtopic.yaml" + ], + "timestamp": 1642973305167, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagenotification/pubsub_v1beta1_pubsubtopic.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT642", + "status": "active", + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT642", + "collection": "kcctemplate", + "json": { + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", + "metadata": { + "labels": { + "label-one": "value-one" + }, + "name": "storagenotification-dep" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT643 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT643 new file mode 100644 index 0000000..d832dc8 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT643 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagenotification/storage_v1beta1_storagebucket.yaml" + ], + "timestamp": 1642973305172, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagenotification/storage_v1beta1_storagebucket.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT643", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT643", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", + "metadata": { + "name": "${PROJECT_ID?}-storagenotification-dep" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT644 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT644 new file mode 100644 index 0000000..3fc9e32 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT644 @@ -0,0 +1,48 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagenotification/storage_v1beta1_storagenotification.yaml" + ], + "timestamp": 1642973305175, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagenotification/storage_v1beta1_storagenotification.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT644", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagenotification" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT644", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageNotification", + "metadata": { + "name": "storagenotification-sample" + }, + "spec": { + "bucketRef": { + "name": "${PROJECT_ID?}-storagenotification-dep" + }, + "payloadFormat": "JSON_API_V1", + "topicRef": { + "name": "storagenotification-dep" + }, + "eventTypes": [ + "OBJECT_ARCHIVE" + ] + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT645 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT645 new file mode 100644 index 0000000..f4ce4e3 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT645 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_0.yaml" + ], + "timestamp": 1642973305180, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT645", + "status": "active", + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT645", + "collection": "kcctemplate", + "json": { + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", + "metadata": { + "name": "storagetransferjob-dep1" + }, + "spec": { + "member": "serviceAccount:project-${PROJECT_NUMBER?}@storage-transfer-service.iam.gserviceaccount.com", + "resourceRef": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", + "name": "${PROJECT_ID?}-storagetransferjob-dep1" + }, + "role": "roles/storage.admin" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT646 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT646 new file mode 100644 index 0000000..1f7c0d6 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT646 @@ -0,0 +1,45 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_1.yaml" + ], + "timestamp": 1642973305184, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/iam_v1beta1_iampolicymember_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT646", + "status": "active", + "validate": true, + "resourceTypes": [ + "iampolicymember" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT646", + "collection": "kcctemplate", + "json": { + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMPolicyMember", + "metadata": { + "name": "storagetransferjob-dep2" + }, + "spec": { + "member": "serviceAccount:project-${PROJECT_NUMBER?}@storage-transfer-service.iam.gserviceaccount.com", + "resourceRef": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", + "name": "${PROJECT_ID?}-storagetransferjob-dep2" + }, + "role": "roles/storage.admin" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT647 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT647 new file mode 100644 index 0000000..118c2cf --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT647 @@ -0,0 +1,78 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagetransferjob/storagetransfer_v1beta1_storagetransferjob.yaml" + ], + "timestamp": 1642973305188, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/storagetransfer_v1beta1_storagetransferjob.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT647", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagetransferjob" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT647", + "collection": "kcctemplate", + "json": { + "apiVersion": "storagetransfer.cnrm.cloud.google.com/v1beta1", + "kind": "StorageTransferJob", + "metadata": { + "name": "storagetransferjob-sample" + }, + "spec": { + "description": "Sample storage transfer job", + "schedule": { + "startTimeOfDay": { + "seconds": 0, + "hours": 0, + "minutes": 0, + "nanos": 0 + }, + "scheduleEndDate": { + "day": 31, + "month": 12, + "year": 9999 + }, + "scheduleStartDate": { + "day": 28, + "month": 1, + "year": 2020 + } + }, + "status": "ENABLED", + "transferSpec": { + "gcsDataSink": { + "bucketRef": { + "name": "${PROJECT_ID?}-storagetransferjob-dep1" + } + }, + "gcsDataSource": { + "bucketRef": { + "name": "${PROJECT_ID?}-storagetransferjob-dep2" + } + }, + "objectConditions": { + "maxTimeElapsedSinceLastModification": "5s", + "minTimeElapsedSinceLastModification": "2s" + }, + "transferOptions": { + "deleteObjectsUniqueInSink": false, + "overwriteObjectsAlreadyExistingInSink": true + } + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT648 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT648 new file mode 100644 index 0000000..fca951b --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT648 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_0.yaml" + ], + "timestamp": 1642973305192, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_0.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT648", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT648", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", + "metadata": { + "name": "${PROJECT_ID?}-storagetransferjob-dep1" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT649 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT649 new file mode 100644 index 0000000..131ccbd --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT649 @@ -0,0 +1,36 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_1.yaml" + ], + "timestamp": 1642973305196, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/storagetransferjob/storage_v1beta1_storagebucket_multiple_yaml_1.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT649", + "status": "active", + "validate": true, + "resourceTypes": [ + "storagebucket" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT649", + "collection": "kcctemplate", + "json": { + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", + "metadata": { + "name": "${PROJECT_ID?}-storagetransferjob-dep2" + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT65 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT65 index c9cd0a6..592d136 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT65 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT65 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/sourcerepo_v1beta1_sourcereporepository.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765139627, + "timestamp": 1642973302026, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/sourcerepo_v1beta1_sourcereporepository.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT65", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT65", "collection": "kcctemplate", "json": { - "apiVersion": "sourcerepo.cnrm.cloud.google.com/v1beta1", - "kind": "SourceRepoRepository", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "cloudbuildtrigger-dep-withtemplatefile" + "name": "binauthzpolicy-dep-sa" + }, + "spec": { + "name": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT650 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT650 new file mode 100644 index 0000000..a17e9f2 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT650 @@ -0,0 +1,39 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/vpcaccessconnector/cidr-connector/compute_v1beta1_computenetwork.yaml" + ], + "timestamp": 1642973305200, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/cidr-connector/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT650", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT650", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", + "metadata": { + "name": "vpcaccessconnector-dep-cidrconnector" + }, + "spec": { + "autoCreateSubnetworks": false + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT651 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT651 new file mode 100644 index 0000000..9b29bd5 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT651 @@ -0,0 +1,48 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/vpcaccessconnector/cidr-connector/vpcaccess_v1beta1_vpcaccessconnector.yaml" + ], + "timestamp": 1642973305204, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/cidr-connector/vpcaccess_v1beta1_vpcaccessconnector.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT651", + "status": "active", + "validate": true, + "resourceTypes": [ + "vpcaccessconnector" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT651", + "collection": "kcctemplate", + "json": { + "apiVersion": "vpcaccess.cnrm.cloud.google.com/v1beta1", + "kind": "VPCAccessConnector", + "metadata": { + "name": "vpcaccessconnector-sample-cidrconnector" + }, + "spec": { + "location": "us-central1", + "networkRef": { + "name": "vpcaccessconnector-dep-cidrconnector" + }, + "ipCidrRange": "10.132.0.0/28", + "minThroughput": 300, + "maxThroughput": 400, + "projectRef": { + "external": "projects/${PROJECT_ID?}" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT652 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT652 new file mode 100644 index 0000000..fdade3e --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT652 @@ -0,0 +1,39 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/compute_v1beta1_computenetwork.yaml" + ], + "timestamp": 1642973305207, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/compute_v1beta1_computenetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT652", + "status": "active", + "validate": true, + "resourceTypes": [ + "computenetwork" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT652", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeNetwork", + "metadata": { + "name": "vpcaccessconnector-dep-subnetconnector" + }, + "spec": { + "autoCreateSubnetworks": false + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT653 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT653 new file mode 100644 index 0000000..5e96d3b --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT653 @@ -0,0 +1,43 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/compute_v1beta1_computesubnetwork.yaml" + ], + "timestamp": 1642973305212, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/compute_v1beta1_computesubnetwork.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT653", + "status": "active", + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT653", + "collection": "kcctemplate", + "json": { + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeSubnetwork", + "metadata": { + "name": "vpcaccessconnector-dep-subnetconnector" + }, + "spec": { + "ipCidrRange": "10.2.0.0/28", + "region": "us-west2", + "networkRef": { + "name": "vpcaccessconnector-dep-subnetconnector" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT654 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT654 new file mode 100644 index 0000000..e6352d5 --- /dev/null +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT654 @@ -0,0 +1,53 @@ +{ + "structure": "filesystem", + "error": null, + "reference": "master", + "contentType": "json", + "source": "gitConnectorGoogleKcc", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/vpcaccess_v1beta1_vpcaccessconnector.yaml" + ], + "timestamp": 1642973305215, + "queryuser": null, + "checksum": "99914b932bd37a50b983c5e7c90ae93b", + "node": { + "masterSnapshotId": "KCC_TEMPLATE_SNAPSHOT", + "type": "kcc", + "collection": "kcctemplate", + "paths": [ + "/samples/resources/vpcaccessconnector/subnet-connector/vpcaccess_v1beta1_vpcaccessconnector.yaml" + ], + "snapshotId": "KCC_TEMPLATE_SNAPSHOT654", + "status": "active", + "validate": true, + "resourceTypes": [ + "vpcaccessconnector" + ] + }, + "snapshotId": "KCC_TEMPLATE_SNAPSHOT654", + "collection": "kcctemplate", + "json": { + "apiVersion": "vpcaccess.cnrm.cloud.google.com/v1beta1", + "kind": "VPCAccessConnector", + "metadata": { + "name": "vpcaccessconnector-sample-subnetconnector" + }, + "spec": { + "location": "us-central1", + "machineType": "e2-micro", + "minInstances": 2, + "maxInstances": 3, + "subnet": { + "nameRef": { + "name": "vpcaccessconnector-dep-subnetconnector" + }, + "projectRef": { + "external": "projects/${PROJECT_ID?}" + } + }, + "projectRef": { + "external": "projects/${PROJECT_ID?}" + } + } + } +} \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT66 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT66 index 44ce76c..4166a71 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT66 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT66 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudidentitygroup/cloudidentity_v1beta1_cloudidentitygroup.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], - "timestamp": 1628765139648, + "timestamp": 1642973302033, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudidentitygroup/cloudidentity_v1beta1_cloudidentitygroup.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT66", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT66", "collection": "kcctemplate", "json": { - "apiVersion": "cloudidentity.cnrm.cloud.google.com/v1beta1", - "kind": "CloudIdentityGroup", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "cloudidentitygroup-sample" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "binaryauthorizationpolicy-dep1-serviceaccount" }, "spec": { - "displayName": "Cloud Identity Group Name", - "description": "This is a test CloudIdentityGroup. It should be modified before use as a sample.", - "groupKey": { - "id": "example.com" + "projectRef": { + "name": "binauthzpolicy-dep-sa" }, - "parent": "customers/C00qzcxfe", - "labels": { - "cloudidentity.googleapis.com/groups.discussion_forum": "" - } + "resourceID": "containeranalysis.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT67 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT67 index 964667b..e91f445 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT67 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT67 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-http/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], - "timestamp": 1628765139670, + "timestamp": 1642973302038, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,41 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-http/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-account-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT67", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT67", "collection": "kcctemplate", "json": { - "apiVersion": "cloudscheduler.cnrm.cloud.google.com/v1beta1", - "kind": "CloudSchedulerJob", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "cloudscheduler-sample-http" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "binaryauthorizationpolicy-dep2-serviceaccount" }, "spec": { - "description": "scheduler-http-target-job", - "schedule": "*/5 * * * *", - "location": "us-west2", - "timeZone": "EST", - "attemptDeadline": "600s", - "retryConfig": { - "retryCount": 3, - "maxRetryDuration": "60s", - "maxDoublings": 2 + "projectRef": { + "name": "binauthzpolicy-dep-sa" }, - "httpTarget": { - "headers": { - "app": "test", - "Content-Type": "application/octet-stream", - "User-Agent": "Google-Cloud-Scheduler" - }, - "httpMethod": "POST", - "uri": "https://example.com/ping", - "body": "eyJmb28iOiJiYXIifQo=" - } + "resourceID": "binaryauthorization.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT68 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT68 index 9aee195..5398c59 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT68 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT68 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-oauth/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], - "timestamp": 1628765139689, + "timestamp": 1642973302063, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,38 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-oauth/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationattestor.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT68", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationattestor" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT68", "collection": "kcctemplate", "json": { - "apiVersion": "cloudscheduler.cnrm.cloud.google.com/v1beta1", - "kind": "CloudSchedulerJob", + "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", + "kind": "BinaryAuthorizationAttestor", "metadata": { - "name": "cloudscheduler-sample-oauth" + "name": "binaryauthorizationpolicy-dep-serviceidentity" }, "spec": { - "description": "scheduler-http-target-job", - "schedule": "*/5 * * * *", - "location": "us-west2", - "timeZone": "America/New_York", - "attemptDeadline": "600s", - "retryConfig": { - "retryCount": 3, - "maxRetryDuration": "60s", - "maxDoublings": 2 + "projectRef": { + "name": "binauthzpolicy-dep-si" }, - "httpTarget": { - "httpMethod": "GET", - "uri": "https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs", - "oauthToken": { - "serviceAccountRef": { - "name": "cloudscheduler-oauth-dep" - } + "description": "A sample binary authorization attestor.", + "userOwnedDrydockNote": { + "noteRef": { + "name": "binaryauthorizationpolicy-dep-serviceidentity" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT69 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT69 index 60bbc04..8d4d028 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT69 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT69 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-oauth/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], - "timestamp": 1628765139703, + "timestamp": 1642973302072, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,54 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-oauth/iam_v1beta1_iamserviceaccount.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/binaryauthorization_v1beta1_binaryauthorizationpolicy.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT69", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "binaryauthorizationpolicy" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT69", "collection": "kcctemplate", "json": { - "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", - "kind": "IAMServiceAccount", + "apiVersion": "binaryauthorization.cnrm.cloud.google.com/v1beta1", + "kind": "BinaryAuthorizationPolicy", "metadata": { - "name": "cloudscheduler-oauth-dep" + "name": "binaryauthorizationpolicy-sample-serviceidentity" }, "spec": { - "displayName": "Example Service Account" + "projectRef": { + "name": "binauthzpolicy-dep-si" + }, + "admissionWhitelistPatterns": [ + { + "namePattern": "gcr.io/*" + } + ], + "istioServiceIdentityAdmissionRules": { + "spiffe://example.com/ns/test-ns/sa/default": { + "evaluationMode": "REQUIRE_ATTESTATION", + "requireAttestationsBy": [ + { + "name": "binaryauthorizationpolicy-dep-serviceidentity" + } + ], + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + } + }, + "defaultAdmissionRule": { + "evaluationMode": "REQUIRE_ATTESTATION", + "requireAttestationsBy": [ + { + "name": "binaryauthorizationpolicy-dep-serviceidentity" + } + ], + "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" + }, + "description": "A sample Binary Authorization policy", + "globalPolicyEvaluationMode": "DISABLE" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT7 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT7 index 748b860..59282a5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT7 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT7 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/accesscontextmanagerserviceperimeter/iam_v1beta1_iamserviceaccount_multiple_yaml_0.yaml" ], - "timestamp": 1628765138357, + "timestamp": 1642973301667, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT7", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT7", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT70 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT70 index 91f868e..eef86fe 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT70 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT70 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], - "timestamp": 1628765139725, + "timestamp": 1642973302081, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/cloudscheduler_v1beta1_cloudschedulerjob.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/containeranalysis_v1beta1_containeranalysisnote.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT70", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "containeranalysisnote" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT70", "collection": "kcctemplate", "json": { - "apiVersion": "cloudscheduler.cnrm.cloud.google.com/v1beta1", - "kind": "CloudSchedulerJob", + "apiVersion": "containeranalysis.cnrm.cloud.google.com/v1beta1", + "kind": "ContainerAnalysisNote", "metadata": { - "name": "cloudscheduler-sample-pubsub" + "name": "binaryauthorizationpolicy-dep-serviceidentity" }, "spec": { - "description": "scheduler-pubsub-target-job", - "schedule": "*/2 * * * *", - "location": "us-west2", - "pubsubTarget": { - "data": "dGVzdCBtZXNzYWdlCg==", - "topicRef": { - "name": "cloudscheduler-sample-pubsub-dep" - } + "projectRef": { + "name": "binauthzpolicy-dep-si" }, - "timeZone": "EST" + "package": { + "name": "test-package" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT71 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT71 index 57a4b7f..45adcec 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT71 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT71 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/resourcemanager_v1beta1_project.yaml" ], - "timestamp": 1628765139745, + "timestamp": 1642973302089, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/pubsub_v1beta1_pubsubtopic.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/resourcemanager_v1beta1_project.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT71", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "project" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT71", "collection": "kcctemplate", "json": { - "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", - "kind": "PubSubTopic", + "apiVersion": "resourcemanager.cnrm.cloud.google.com/v1beta1", + "kind": "Project", "metadata": { - "name": "cloudscheduler-sample-pubsub-dep" + "name": "binauthzpolicy-dep-si" + }, + "spec": { + "name": "Config Connector Sample", + "organizationRef": { + "external": "${ORG_ID?}" + }, + "billingAccountRef": { + "external": "${BILLING_ACCOUNT_ID?}" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT72 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT72 index 3f8a285..30a19f2 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT72 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT72 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computeaddress.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], - "timestamp": 1628765139773, + "timestamp": 1642973302093, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computeaddress.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/serviceusage_v1beta1_service_multiple_yaml_0.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT72", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT72", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeAddress", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "computeaddress-sample-global", - "labels": { - "label-one": "value-one" - } + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "binaryauthorizationpolicy-dep1-serviceidentity" }, "spec": { - "addressType": "INTERNAL", - "description": "a test global address", - "location": "global", - "ipVersion": "IPV4", - "purpose": "VPC_PEERING", - "prefixLength": 16, - "networkRef": { - "name": "computeaddress-dep-global" - } + "projectRef": { + "name": "binauthzpolicy-dep-si" + }, + "resourceID": "containeranalysis.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT73 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT73 index 93b3041..06e5047 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT73 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT73 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computenetwork.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], - "timestamp": 1628765139787, + "timestamp": 1642973302099, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computenetwork.yaml" + "/samples/resources/binaryauthorizationpolicy/service-identity-policy/serviceusage_v1beta1_service_multiple_yaml_1.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT73", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "service" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT73", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "apiVersion": "serviceusage.cnrm.cloud.google.com/v1beta1", + "kind": "Service", "metadata": { - "name": "computeaddress-dep-global" + "annotations": { + "cnrm.cloud.google.com/disable-dependent-services": "false" + }, + "name": "binaryauthorizationpolicy-dep2-serviceidentity" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "projectRef": { + "name": "binauthzpolicy-dep-si" + }, + "resourceID": "binaryauthorization.googleapis.com" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT74 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT74 index ee234f3..68d4879 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT74 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT74 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computeaddress.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], - "timestamp": 1628765139806, + "timestamp": 1642973302107, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,103 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computeaddress.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT74", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudbuildtrigger" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT74", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeAddress", + "apiVersion": "cloudbuild.cnrm.cloud.google.com/v1beta1", + "kind": "CloudBuildTrigger", "metadata": { - "name": "computeaddress-sample-regional", - "labels": { - "label-one": "value-one" - } + "name": "cloudbuildtrigger-sample-cloudsourcerepo" }, "spec": { - "addressType": "INTERNAL", - "description": "a test regional address", - "location": "us-central1", - "ipVersion": "IPV6", - "subnetworkRef": { - "name": "computeaddress-dep-regional" + "description": "Cloud Build Trigger for building the master branch of the referenced Cloud Source Repository.", + "disabled": false, + "triggerTemplate": { + "repoRef": { + "name": "cloudbuildtrigger-dep-cloudsourcerepo" + }, + "dir": "team-a/service-b", + "branchName": "master" + }, + "ignoredFiles": [ + "**/*.md" + ], + "includedFiles": [ + "src/**" + ], + "substitutions": { + "_SERVICE_NAME": "service-name" + }, + "build": { + "images": [ + "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:$COMMIT_SHA" + ], + "tags": [ + "team-a", + "service-b" + ], + "timeout": "1800s", + "step": [ + { + "id": "download_zip", + "name": "gcr.io/cloud-builders/gsutil", + "args": [ + "cp", + "gs://mybucket/remotefile.zip", + "localfile.zip" + ], + "timeout": "300s" + }, + { + "id": "build_package", + "name": "gcr.io/cloud-builders/go", + "args": [ + "build", + "my_package" + ], + "dir": "directory", + "env": [ + "ENV1=one", + "ENV2=two" + ], + "secretEnv": [ + "SECRET_ENV1" + ], + "timeout": "300s" + }, + { + "id": "build_docker_image", + "name": "gcr.io/cloud-builders/docker", + "args": [ + "build", + "-t", + "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:$COMMIT_SHA", + "-f", + "Dockerfile", + "." + ], + "timeout": "300s" + } + ], + "availableSecrets": { + "secretManager": [ + { + "env": "SECRET1", + "versionRef": { + "name": "cloudbuildtrigger-dep-cloudsourcerepo" + } + } + ] + } } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT75 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT75 index 89e2260..62dc9cc 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT75 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT75 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/secretmanager_v1beta1_secretmanagersecret.yaml" ], - "timestamp": 1628765139828, + "timestamp": 1642973302111, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,27 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/secretmanager_v1beta1_secretmanagersecret.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT75", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secretmanagersecret" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT75", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", + "kind": "SecretManagerSecret", "metadata": { - "name": "computeaddress-dep-regional" + "name": "cloudbuildtrigger-dep-cloudsourcerepo" }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "replication": { + "automatic": true + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT76 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT76 index 4ebc13e..7bb9ea0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT76 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT76 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/secretmanager_v1beta1_secretmanagersecretversion.yaml" ], - "timestamp": 1628765139853, + "timestamp": 1642973302115, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,30 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/secretmanager_v1beta1_secretmanagersecretversion.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT76", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "secretmanagersecretversion" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT76", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "apiVersion": "secretmanager.cnrm.cloud.google.com/v1beta1", + "kind": "SecretManagerSecretVersion", "metadata": { - "name": "computeaddress-dep-regional" + "name": "cloudbuildtrigger-dep-cloudsourcerepo" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-central1", - "networkRef": { - "name": "computeaddress-dep-regional" + "enabled": true, + "secretData": { + "value": "c2VjcmV0MQ==" + }, + "secretRef": { + "name": "cloudbuildtrigger-dep-cloudsourcerepo" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT77 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT77 index 49dfd69..f0eba5f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT77 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT77 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendbucket/basic-backend-bucket/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/sourcerepo_v1beta1_sourcereporepository.yaml" ], - "timestamp": 1628765139869, + "timestamp": 1642973302126, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendbucket/basic-backend-bucket/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-cloud-source-repo/sourcerepo_v1beta1_sourcereporepository.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT77", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "sourcereporepository" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT77", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendBucket", + "apiVersion": "sourcerepo.cnrm.cloud.google.com/v1beta1", + "kind": "SourceRepoRepository", "metadata": { - "name": "computebackendbucket-sample-basic", - "labels": { - "label-one": "value-one" - } - }, - "spec": { - "bucketRef": { - "name": "${PROJECT_ID?}-backendbucket-dep-basic" - }, - "description": "contains a reference to a bucket for use with HTTP(S) load-balancing" + "name": "cloudbuildtrigger-dep-cloudsourcerepo" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT78 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT78 index 9ff6b27..9329863 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT78 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT78 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendbucket/basic-backend-bucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-github-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], - "timestamp": 1628765139883, + "timestamp": 1642973302131, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,94 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendbucket/basic-backend-bucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-for-github-repo/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT78", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudbuildtrigger" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT78", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "cloudbuild.cnrm.cloud.google.com/v1beta1", + "kind": "CloudBuildTrigger", "metadata": { - "name": "${PROJECT_ID?}-backendbucket-dep-basic" + "name": "cloudbuildtrigger-sample-github" + }, + "spec": { + "description": "Cloud Build Trigger for building the master branch of the GitHub repository at github.com/owner_name/repo_name", + "disabled": false, + "github": { + "owner": "owner_name", + "name": "repo_name", + "push": { + "branch": "master" + } + }, + "ignoredFiles": [ + "**/*.md" + ], + "includedFiles": [ + "src/**" + ], + "substitutions": { + "_SERVICE_NAME": "service-name" + }, + "build": { + "images": [ + "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:$COMMIT_SHA" + ], + "tags": [ + "team-a", + "service-b" + ], + "timeout": "1800s", + "step": [ + { + "id": "download_zip", + "name": "gcr.io/cloud-builders/gsutil", + "args": [ + "cp", + "gs://mybucket/remotefile.zip", + "localfile.zip" + ], + "timeout": "300s" + }, + { + "id": "build_package", + "name": "gcr.io/cloud-builders/go", + "args": [ + "build", + "my_package" + ], + "dir": "directory", + "env": [ + "ENV1=one", + "ENV2=two" + ], + "secretEnv": [ + "SECRET_ENV1" + ], + "timeout": "300s" + }, + { + "id": "build_docker_image", + "name": "gcr.io/cloud-builders/docker", + "args": [ + "build", + "-t", + "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:$COMMIT_SHA", + "-f", + "Dockerfile", + "." + ], + "timeout": "300s" + } + ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT79 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT79 index b549886..9068164 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT79 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT79 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], - "timestamp": 1628765139904, + "timestamp": 1642973302137, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,31 +15,45 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/compute_v1beta1_computebackendbucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/cloudbuild_v1beta1_cloudbuildtrigger.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT79", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudbuildtrigger" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT79", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendBucket", + "apiVersion": "cloudbuild.cnrm.cloud.google.com/v1beta1", + "kind": "CloudBuildTrigger", "metadata": { - "name": "computebackendbucket-sample-cdnenabled", - "labels": { - "label-one": "value-one" - } + "name": "cloudbuildtrigger-sample-withtemplatefile" }, "spec": { - "bucketRef": { - "name": "${PROJECT_ID?}-backendbucket-dep-cdn" + "description": "Cloud Build Trigger with a build template file. Builds the master branch of the referenced Cloud Source Repository.", + "disabled": false, + "triggerTemplate": { + "repoRef": { + "name": "cloudbuildtrigger-dep-withtemplatefile" + }, + "dir": "team-a/service-b", + "branchName": "master" + }, + "ignoredFiles": [ + "**/*.md" + ], + "includedFiles": [ + "src/**" + ], + "substitutions": { + "_SERVICE_NAME": "service-name" }, - "description": "contains a reference to a bucket for use with HTTP(S) load-balancing and integrated CDN, caching on endpoints for only 1/10th the default time", - "enableCdn": true, - "cdnPolicy": { - "signedUrlCacheMaxAgeSec": 360 + "filename": "cloudbuild.yaml", + "serviceAccountRef": { + "name": "cbt-dep-withtemplatefile" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT8 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT8 index 6dbc6a5..b5d87c5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT8 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT8 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/accesscontextmanagerserviceperimeter/iam_v1beta1_iamserviceaccount_multiple_yaml_1.yaml" ], - "timestamp": 1628765138368, + "timestamp": 1642973301673, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT8", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT8", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT80 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT80 index 21c8edf..4a186bd 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT80 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT80 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765139920, + "timestamp": 1642973302146, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,19 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/storage_v1beta1_storagebucket.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT80", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT80", "collection": "kcctemplate", "json": { - "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", - "kind": "StorageBucket", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "${PROJECT_ID?}-backendbucket-dep-cdn" + "name": "cbt-dep-withtemplatefile" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT81 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT81 index 4239bed..135416c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT81 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT81 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/sourcerepo_v1beta1_sourcereporepository.yaml" ], - "timestamp": 1628765139953, + "timestamp": 1642973302150, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,60 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/cloudbuildtrigger/build-trigger-with-template-file/sourcerepo_v1beta1_sourcereporepository.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT81", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "sourcereporepository" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT81", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "apiVersion": "sourcerepo.cnrm.cloud.google.com/v1beta1", + "kind": "SourceRepoRepository", "metadata": { - "name": "computebackendservice-sample-externalloadbalancing" - }, - "spec": { - "description": "External backend service with cookie-based session affinity.", - "portName": "cookie-cloud", - "timeoutSec": 30, - "healthChecks": [ - { - "healthCheckRef": { - "name": "computebackendservice-dep-externalloadbalancing" - } - } - ], - "loadBalancingScheme": "EXTERNAL", - "location": "global", - "protocol": "HTTPS", - "affinityCookieTtlSec": 360, - "connectionDrainingTimeoutSec": 60, - "securityPolicyRef": { - "name": "computebackendservice-dep-externalloadbalancing" - }, - "sessionAffinity": "GENERATED_COOKIE", - "customRequestHeaders": [ - "Trailer: custom-trailer" - ], - "logConfig": { - "enable": true, - "sampleRate": 0.5 - }, - "backend": [ - { - "balancingMode": "RATE", - "capacityScaler": 1, - "description": "A network endpoint group serving this backend with all its available capacity, as calculated by number of simultaneous connections.", - "maxRatePerEndpoint": 10, - "group": { - "networkEndpointGroupRef": { - "name": "computebackendservice-dep-externalloadbalancing" - } - } - } - ] + "name": "cloudbuildtrigger-dep-withtemplatefile" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT82 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT82 index e0449af..3067c59 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT82 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT82 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/cloudidentitygroup/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], - "timestamp": 1628765139968, + "timestamp": 1642973302158, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/cloudidentitygroup/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT82", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitygroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT82", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "apiVersion": "cloudidentity.cnrm.cloud.google.com/v1beta1", + "kind": "CloudIdentityGroup", "metadata": { - "name": "computebackendservice-dep-externalloadbalancing" + "name": "cloudidentitygroup-sample" }, "spec": { - "httpsHealthCheck": { - "port": 443 + "displayName": "Cloud Identity Group Name", + "description": "This is a test CloudIdentityGroup. It should be modified before use as a sample.", + "groupKey": { + "id": "example.com" }, - "location": "global" + "parent": "customers/C00qzcxfe", + "labels": { + "cloudidentity.googleapis.com/groups.discussion_forum": "" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT83 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT83 index 4d11a95..f1fe83e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT83 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT83 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/cloudidentitymembership/membership-with-expiration-date/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], - "timestamp": 1628765139989, + "timestamp": 1642973302163, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,30 +15,32 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/cloudidentitymembership/membership-with-expiration-date/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT83", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitygroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT83", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceGroup", + "apiVersion": "cloudidentity.cnrm.cloud.google.com/v1beta1", + "kind": "CloudIdentityGroup", "metadata": { - "name": "computebackendservice-dep-externalloadbalancing" + "name": "cloudidentitymembership-dep-expirationdate" }, "spec": { - "namedPort": [ - { - "name": "cookie-cloud", - "port": 8444 - } - ], - "zone": "us-central1-a", - "networkRef": { - "name": "computebackendservice-dep-externalloadbalancing" + "displayName": "Cloud Identity Group Name", + "description": "This is a test CloudIdentityGroup. It should be modified before use as a sample.", + "groupKey": { + "id": "example.com" + }, + "parent": "customers/C00qzcxfe", + "labels": { + "cloudidentity.googleapis.com/groups.discussion_forum": "" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT84 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT84 index f20c3e7..be4009e 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT84 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT84 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudidentitymembership/membership-with-expiration-date/cloudidentity_v1beta1_cloudidentitymembership.yaml" ], - "timestamp": 1628765140008, + "timestamp": 1642973302171, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,40 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudidentitymembership/membership-with-expiration-date/cloudidentity_v1beta1_cloudidentitymembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT84", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitymembership" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT84", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "apiVersion": "cloudidentity.cnrm.cloud.google.com/v1beta1", + "kind": "CloudIdentityMembership", "metadata": { - "name": "computebackendservice-dep-externalloadbalancing" + "name": "cloudidentitymembership-sample-expirationdate" }, "spec": { - "routingMode": "GLOBAL", - "autoCreateSubnetworks": false + "groupRef": { + "name": "cloudidentitymembership-dep-expirationdate" + }, + "preferredMemberKey": { + "id": "test-member@example.com" + }, + "roles": [ + { + "name": "MEMBER", + "expiryDetail": { + "expireTime": { + "$date": 7976070083000 + } + } + } + ] } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT85 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT85 index d59a9f4..4c7bea0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT85 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT85 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetworkendpointgroup.yaml" + "/samples/resources/cloudidentitymembership/membership-with-manager-role/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], - "timestamp": 1628765140029, + "timestamp": 1642973302181, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,28 +15,33 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computenetworkendpointgroup.yaml" + "/samples/resources/cloudidentitymembership/membership-with-manager-role/cloudidentity_v1beta1_cloudidentitygroup.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT85", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitygroup" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT85", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetworkEndpointGroup", + "apiVersion": "cloudidentity.cnrm.cloud.google.com/v1beta1", + "kind": "CloudIdentityGroup", "metadata": { - "name": "computebackendservice-dep-externalloadbalancing" + "name": "cloudidentitymembership-dep-managerrole" }, "spec": { - "networkRef": { - "name": "computebackendservice-dep-externalloadbalancing" + "displayName": "Cloud Identity Group Name", + "description": "This is a test CloudIdentityGroup. It should be modified before use as a sample.", + "groupKey": { + "id": "example.com" }, - "subnetworkRef": { - "name": "computebackendservice-dep-externalloadbalancing" - }, - "location": "us-west1-a" + "parent": "customers/C00qzcxfe", + "labels": { + "cloudidentity.googleapis.com/groups.discussion_forum": "" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT86 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT86 index 1e85f48..08538f5 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT86 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT86 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/cloudidentitymembership/membership-with-manager-role/cloudidentity_v1beta1_cloudidentitymembership.yaml" ], - "timestamp": 1628765140049, + "timestamp": 1642973302188, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,33 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesecuritypolicy.yaml" + "/samples/resources/cloudidentitymembership/membership-with-manager-role/cloudidentity_v1beta1_cloudidentitymembership.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT86", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudidentitymembership" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT86", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSecurityPolicy", + "apiVersion": "cloudidentity.cnrm.cloud.google.com/v1beta1", + "kind": "CloudIdentityMembership", "metadata": { - "name": "computebackendservice-dep-externalloadbalancing" + "name": "cloudidentitymembership-sample-managerrole" }, "spec": { - "rule": [ + "groupRef": { + "name": "cloudidentitymembership-dep-managerrole" + }, + "preferredMemberKey": { + "id": "test-member@example.com" + }, + "roles": [ { - "action": "deny(403)", - "priority": 2147483647, - "match": { - "versionedExpr": "SRC_IPS_V1", - "config": { - "srcIpRanges": [ - "*" - ] - } - } + "name": "MEMBER" + }, + { + "name": "MANAGER" } ] } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT87 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT87 index 0184943..046aa94 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT87 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT87 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-http/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], - "timestamp": 1628765140068, + "timestamp": 1642973302192, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/external-load-balancing-backend-service/compute_v1beta1_computesubnetwork.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-http/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT87", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudschedulerjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT87", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSubnetwork", + "apiVersion": "cloudscheduler.cnrm.cloud.google.com/v1beta1", + "kind": "CloudSchedulerJob", "metadata": { - "name": "computebackendservice-dep-externalloadbalancing" + "name": "cloudscheduler-sample-http" }, "spec": { - "ipCidrRange": "10.2.0.0/16", - "region": "us-west1", - "networkRef": { - "name": "computebackendservice-dep-externalloadbalancing" + "description": "scheduler-http-target-job", + "schedule": "*/5 * * * *", + "location": "us-west2", + "timeZone": "EST", + "attemptDeadline": "600s", + "retryConfig": { + "retryCount": 3, + "maxRetryDuration": "60s", + "maxDoublings": 2 + }, + "httpTarget": { + "headers": { + "app": "test", + "Content-Type": "application/octet-stream", + "User-Agent": "Google-Cloud-Scheduler" + }, + "httpMethod": "POST", + "uri": "https://example.com/ping", + "body": "eyJmb28iOiJiYXIifQo=" } } } diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT88 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT88 index 0ba4f3e..778e584 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT88 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT88 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-oauth/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], - "timestamp": 1628765140096, + "timestamp": 1642973302195, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,85 +15,43 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computebackendservice.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-oauth/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT88", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudschedulerjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT88", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeBackendService", + "apiVersion": "cloudscheduler.cnrm.cloud.google.com/v1beta1", + "kind": "CloudSchedulerJob", "metadata": { - "name": "computebackendservice-sample-internalmanagedloadbalancing" + "name": "cloudscheduler-sample-oauth" }, "spec": { - "description": "Internal managed backend service with Maglev session affinity.", - "localityLbPolicy": "MAGLEV", - "timeoutSec": 86400, - "consistentHash": { - "httpHeaderName": "Hash string" + "description": "scheduler-http-target-job", + "schedule": "*/5 * * * *", + "location": "us-west2", + "timeZone": "America/New_York", + "attemptDeadline": "600s", + "retryConfig": { + "retryCount": 3, + "maxRetryDuration": "60s", + "maxDoublings": 2 }, - "healthChecks": [ - { - "healthCheckRef": { - "name": "computebackendservice-dep-internalmanagedloadbalancing" + "httpTarget": { + "httpMethod": "GET", + "uri": "https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs", + "oauthToken": { + "serviceAccountRef": { + "name": "cloudscheduler-oauth-dep" } } - ], - "loadBalancingScheme": "INTERNAL_MANAGED", - "location": "us-east1", - "protocol": "HTTP", - "connectionDrainingTimeoutSec": 10, - "sessionAffinity": "HEADER_FIELD", - "circuitBreakers": { - "connectTimeout": { - "nanos": 999999999, - "seconds": 0 - }, - "maxConnections": 1024, - "maxPendingRequests": 1024, - "maxRequests": 1024, - "maxRequestsPerConnection": 1, - "maxRetries": 3 - }, - "logConfig": { - "enable": false - }, - "outlierDetection": { - "consecutiveGatewayFailure": 5, - "enforcingConsecutiveErrors": 100, - "enforcingSuccessRate": 100, - "successRateMinimumHosts": 5, - "successRateRequestVolume": 100, - "baseEjectionTime": { - "nanos": 999999999, - "seconds": 29 - }, - "consecutiveErrors": 5, - "enforcingConsecutiveGatewayFailure": 0, - "interval": { - "nanos": 999999999, - "seconds": 9 - }, - "maxEjectionPercent": 10, - "successRateStdevFactor": 1900 - }, - "backend": [ - { - "balancingMode": "RATE", - "capacityScaler": 0.9, - "description": "An instance group serving this backend with 90% of its capacity, as calculated by requests per second.", - "maxRate": 10000, - "group": { - "instanceGroupRef": { - "name": "computebackendservice-dep-internalmanagedloadbalancing" - } - } - } - ] + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT89 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT89 index af9d797..0f4a666 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT89 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT89 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-oauth/iam_v1beta1_iamserviceaccount.yaml" ], - "timestamp": 1628765140118, + "timestamp": 1642973302208, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,25 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computehealthcheck.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-oauth/iam_v1beta1_iamserviceaccount.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT89", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "iamserviceaccount" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT89", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeHealthCheck", + "apiVersion": "iam.cnrm.cloud.google.com/v1beta1", + "kind": "IAMServiceAccount", "metadata": { - "name": "computebackendservice-dep-internalmanagedloadbalancing" + "name": "cloudscheduler-oauth-dep" }, "spec": { - "httpHealthCheck": { - "port": 80 - }, - "location": "global" + "displayName": "Example Service Account" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT9 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT9 index d5b1975..812e58f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT9 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT9 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ "/samples/resources/artifactregistryrepository/artifactregistry_v1beta1_artifactregistryrepository.yaml" ], - "timestamp": 1628765138391, + "timestamp": 1642973301677, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -19,7 +19,10 @@ ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT9", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "artifactregistryrepository" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT9", "collection": "kcctemplate", diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT90 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT90 index 2df0ffc..05151b0 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT90 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT90 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], - "timestamp": 1628765140140, + "timestamp": 1642973302213, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computeinstancegroup.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/cloudscheduler_v1beta1_cloudschedulerjob.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT90", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "cloudschedulerjob" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT90", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeInstanceGroup", + "apiVersion": "cloudscheduler.cnrm.cloud.google.com/v1beta1", + "kind": "CloudSchedulerJob", "metadata": { - "name": "computebackendservice-dep-internalmanagedloadbalancing" + "name": "cloudscheduler-sample-pubsub" }, "spec": { - "zone": "us-east1-c", - "networkRef": { - "name": "computebackendservice-dep-internalmanagedloadbalancing" - } + "description": "scheduler-pubsub-target-job", + "schedule": "*/2 * * * *", + "location": "us-west2", + "pubsubTarget": { + "data": "dGVzdCBtZXNzYWdlCg==", + "topicRef": { + "name": "cloudscheduler-sample-pubsub-dep" + } + }, + "timeZone": "EST" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT91 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT91 index e64c660..3c5d633 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT91 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT91 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/pubsub_v1beta1_pubsubtopic.yaml" ], - "timestamp": 1628765140155, + "timestamp": 1642973302220, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computebackendservice/internal-managed-load-balancing-backend-service/compute_v1beta1_computenetwork.yaml" + "/samples/resources/cloudschedulerjob/scheduler-job-pubsub/pubsub_v1beta1_pubsubtopic.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT91", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "pubsubtopic" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT91", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "apiVersion": "pubsub.cnrm.cloud.google.com/v1beta1", + "kind": "PubSubTopic", "metadata": { - "name": "computebackendservice-dep-internalmanagedloadbalancing" - }, - "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "name": "cloudscheduler-sample-pubsub-dep" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT92 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT92 index 94115fd..af4f16b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT92 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT92 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_0.yaml" + "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computeaddress.yaml" ], - "timestamp": 1628765140183, + "timestamp": 1642973302257, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,36 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_0.yaml" + "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT92", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT92", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeAddress", "metadata": { - "name": "computedisk-dep-regional" + "name": "computeaddress-sample-global", + "labels": { + "label-one": "value-one" + } }, "spec": { - "location": "us-west1-c" + "addressType": "INTERNAL", + "description": "a test global address", + "location": "global", + "ipVersion": "IPV4", + "purpose": "VPC_PEERING", + "prefixLength": 16, + "networkRef": { + "name": "computeaddress-dep-global" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT93 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT93 index 1d9dc1c..89fdc25 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT93 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT93 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_1.yaml" + "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765140204, + "timestamp": 1642973302271, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,35 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computedisk_multiple_yaml_1.yaml" + "/samples/resources/computeaddress/global-compute-address/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT93", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT93", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeNetwork", "metadata": { - "labels": { - "extra-gb": "100" - }, - "name": "computedisk-sample-regional" + "name": "computeaddress-dep-global" }, "spec": { - "description": "A 600GB regional disk from a 500GB snapshot.", - "location": "us-central1", - "physicalBlockSizeBytes": 16384, - "replicaZones": [ - "us-central1-a", - "us-central1-f" - ], - "size": 600, - "snapshotRef": { - "name": "computedisk-dep-regional" - } + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT94 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT94 index af4ad9e..e71b790 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT94 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT94 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computesnapshot.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computeaddress.yaml" ], - "timestamp": 1628765140219, + "timestamp": 1642973302277, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,25 +15,34 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/regional-compute-disk/compute_v1beta1_computesnapshot.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computeaddress.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT94", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computeaddress" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT94", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeSnapshot", + "kind": "ComputeAddress", "metadata": { - "name": "computedisk-dep-regional" + "name": "computeaddress-sample-regional", + "labels": { + "label-one": "value-one" + } }, "spec": { - "sourceDiskRef": { - "name": "computedisk-dep-regional" - }, - "zone": "us-west1-c" + "addressType": "INTERNAL", + "description": "a test regional address", + "location": "us-central1", + "ipVersion": "IPV6", + "subnetworkRef": { + "name": "computeaddress-dep-regional" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT95 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT95 index f410437..a5e5975 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT95 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT95 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computedisk/zonal-compute-disk/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computenetwork.yaml" ], - "timestamp": 1628765140239, + "timestamp": 1642973302282, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,39 +15,26 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/zonal-compute-disk/compute_v1beta1_computedisk.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computenetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT95", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computenetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT95", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeDisk", + "kind": "ComputeNetwork", "metadata": { - "name": "computedisk-sample-zonal", - "labels": { - "label-one": "value-one" - } + "name": "computeaddress-dep-regional" }, "spec": { - "description": "a sample encrypted, blank disk", - "diskEncryptionKey": { - "rawKey": { - "valueFrom": { - "secretKeyRef": { - "name": "computedisk-dep-zonal", - "key": "sharedSecret" - } - } - } - }, - "physicalBlockSizeBytes": 4096, - "size": 1, - "type": "pd-ssd", - "location": "us-west1-c" + "routingMode": "REGIONAL", + "autoCreateSubnetworks": false } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT96 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT96 index a2bfd69..ad6b28c 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT96 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT96 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computedisk/zonal-compute-disk/secret.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computesubnetwork.yaml" ], - "timestamp": 1628765140253, + "timestamp": 1642973302288, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,22 +15,29 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computedisk/zonal-compute-disk/secret.yaml" + "/samples/resources/computeaddress/regional-compute-address/compute_v1beta1_computesubnetwork.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT96", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computesubnetwork" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT96", "collection": "kcctemplate", "json": { - "apiVersion": "v1", - "kind": "Secret", + "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", + "kind": "ComputeSubnetwork", "metadata": { - "name": "computedisk-dep-zonal" + "name": "computeaddress-dep-regional" }, - "stringData": { - "sharedSecret": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" + "spec": { + "ipCidrRange": "10.2.0.0/16", + "region": "us-central1", + "networkRef": { + "name": "computeaddress-dep-regional" + } } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT97 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT97 index 2407e24..db37aae 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT97 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT97 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computeexternalvpngateway/compute_v1beta1_computeexternalvpngateway.yaml" + "/samples/resources/computebackendbucket/basic-backend-bucket/compute_v1beta1_computebackendbucket.yaml" ], - "timestamp": 1628765140276, + "timestamp": 1642973302299, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,32 +15,31 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computeexternalvpngateway/compute_v1beta1_computeexternalvpngateway.yaml" + "/samples/resources/computebackendbucket/basic-backend-bucket/compute_v1beta1_computebackendbucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT97", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendbucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT97", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeExternalVPNGateway", + "kind": "ComputeBackendBucket", "metadata": { - "name": "computeexternalvpngateway-sample", + "name": "computebackendbucket-sample-basic", "labels": { "label-one": "value-one" } }, "spec": { - "description": "an external vpn gateway", - "redundancyType": "SINGLE_IP_INTERNALLY_REDUNDANT", - "interface": [ - { - "id": 0, - "ipAddress": "8.8.8.8" - } - ] + "bucketRef": { + "name": "${PROJECT_ID?}-backendbucket-dep-basic" + }, + "description": "contains a reference to a bucket for use with HTTP(S) load-balancing" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT98 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT98 index 72917d1..672ac9f 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT98 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT98 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computefirewall.yaml" + "/samples/resources/computebackendbucket/basic-backend-bucket/storage_v1beta1_storagebucket.yaml" ], - "timestamp": 1628765140293, + "timestamp": 1642973302307, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,36 +15,22 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computefirewall.yaml" + "/samples/resources/computebackendbucket/basic-backend-bucket/storage_v1beta1_storagebucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT98", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "storagebucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT98", "collection": "kcctemplate", "json": { - "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeFirewall", + "apiVersion": "storage.cnrm.cloud.google.com/v1beta1", + "kind": "StorageBucket", "metadata": { - "labels": { - "label-one": "value-one" - }, - "name": "computefirewall-sample-allow" - }, - "spec": { - "allow": [ - { - "protocol": "tcp", - "ports": [ - "80", - "1000-2000" - ] - } - ], - "networkRef": { - "name": "computefirewall-dep-allow" - } + "name": "${PROJECT_ID?}-backendbucket-dep-basic" } } } \ No newline at end of file diff --git a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT99 b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT99 index 451d893..edae32b 100644 --- a/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT99 +++ b/validation/scenario-google-kcc/snapshots/KCC_TEMPLATE_SNAPSHOT99 @@ -2,12 +2,12 @@ "structure": "filesystem", "error": null, "reference": "master", - "contentType": "yaml", + "contentType": "json", "source": "gitConnectorGoogleKcc", "paths": [ - "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/compute_v1beta1_computebackendbucket.yaml" ], - "timestamp": 1628765140314, + "timestamp": 1642973302315, "queryuser": null, "checksum": "99914b932bd37a50b983c5e7c90ae93b", "node": { @@ -15,23 +15,35 @@ "type": "kcc", "collection": "kcctemplate", "paths": [ - "/samples/resources/computefirewall/allow-rule-firewall/compute_v1beta1_computenetwork.yaml" + "/samples/resources/computebackendbucket/cdn-enabled-backend-bucket/compute_v1beta1_computebackendbucket.yaml" ], "snapshotId": "KCC_TEMPLATE_SNAPSHOT99", "status": "active", - "validate": true + "validate": true, + "resourceTypes": [ + "computebackendbucket" + ] }, "snapshotId": "KCC_TEMPLATE_SNAPSHOT99", "collection": "kcctemplate", "json": { "apiVersion": "compute.cnrm.cloud.google.com/v1beta1", - "kind": "ComputeNetwork", + "kind": "ComputeBackendBucket", "metadata": { - "name": "computefirewall-dep-allow" + "name": "computebackendbucket-sample-cdnenabled", + "labels": { + "label-one": "value-one" + } }, "spec": { - "routingMode": "REGIONAL", - "autoCreateSubnetworks": false + "bucketRef": { + "name": "${PROJECT_ID?}-backendbucket-dep-cdn" + }, + "description": "contains a reference to a bucket for use with HTTP(S) load-balancing and integrated CDN, caching on endpoints for only 1/10th the default time", + "enableCdn": true, + "cdnPolicy": { + "signedUrlCacheMaxAgeSec": 360 + } } } } \ No newline at end of file